/* progshow_v1.1 · Programming Lab student apps showcase (programming-lab.html only). LOCAL concept, 2026-11-03.
   Built only from the site's own tokens: --font/--font-d, --ink/--muted/--line/--blue, --r-card/--r-pill, glass v1.1 --gl-*,
   .band/.wrap/.sec-head/.btn/.btn-primary and the existing orange .pp-btn-o (--pp-o #BF5508 / --pp-oh #A64508).
   Scoped under .ps-*. v1.1 (18:05): static screenshots only; try-it dialog and expander rules removed. Header, menus, Ted, footer untouched. Rollback = remove the css line, the .ps-top-link line + the #student-apps section. */
.ps-band .sec-head .ps-label,.ps-band .ps-label{display:inline-block;margin:0 0 10px;padding:4px 12px;border-radius:var(--r-pill,999px);background:var(--ink,#14204A);color:#fff;font:700 12px/1.5 var(--font,inherit);letter-spacing:.02em}
.ps-band .sec-head{margin-bottom:28px}
.ps-band .sec-head .ps-lede,.ps-band .ps-lede{margin:8px 0 0;color:#3E4866;font-size:17px;line-height:1.5}
.ps-band .sec-head .ps-fine,.ps-fine{margin:8px 0 0;max-width:62ch;color:var(--muted,#4A5578);font-size:12.5px;line-height:1.45}
.ps-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}
.ps-card{display:flex;flex-direction:column;border:2px solid var(--gl-line,#D6DCE8);border-radius:var(--r-card,22px);overflow:hidden;
  background-color:rgba(255,255,255,.66);background-image:var(--gl-sheen);
  -webkit-backdrop-filter:var(--gl-blur,none);backdrop-filter:var(--gl-blur,none);box-shadow:var(--gl-rim,none),var(--gl-drop,0 10px 26px rgba(20,32,74,.12));
  transition:box-shadow var(--t-fast,160ms) var(--ease,ease),transform var(--t-fast,160ms) var(--ease,ease)}
.ps-card:hover{box-shadow:var(--gl-rim,none),var(--gl-drop-h,0 16px 36px rgba(20,32,74,.19));transform:translateY(-2px)}
.ps-shot{position:relative;margin:0;aspect-ratio:11/7;background:#14204A;border-bottom:1px solid var(--gl-line,#D6DCE8)}
.ps-shot img{display:block;width:100%;height:100%;object-fit:cover}
.ps-kind{position:absolute;left:12px;top:12px;margin:0;padding:3px 10px;border-radius:var(--r-pill,999px);background:rgba(255,255,255,.92);color:var(--ink,#14204A);font:700 12px/1.5 var(--font,inherit)}
.ps-body{display:flex;flex-direction:column;gap:8px;padding:18px 20px 20px;flex:1}
.ps-body h3{margin:0;font:800 19px/1.25 var(--font-d,inherit);color:var(--ink,#14204A)}
.ps-desc{margin:0;color:#3E4866;font-size:15px;line-height:1.5}
/* call to action back to the format/price cards */
.ps-cta{margin:36px 0 0;padding:28px;border:2px solid var(--gl-line,#D6DCE8);border-radius:var(--r-card,22px);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 28px;
  background-color:rgba(255,255,255,.66);background-image:var(--gl-sheen);-webkit-backdrop-filter:var(--gl-blur,none);backdrop-filter:var(--gl-blur,none);box-shadow:var(--gl-rim,none),var(--gl-drop,none)}
.ps-cta h3{margin:0 0 4px;font:800 clamp(22px,2.4vw,28px)/1.2 var(--font-d,inherit);color:var(--ink,#14204A)}
.ps-cta p{margin:0;color:#3E4866;font-size:16px;line-height:1.5}
.ps-cta .pp-btn-o{min-height:48px;padding:12px 24px;font-size:16px;background:#BF5508;border-color:#BF5508;color:#fff}
.ps-cta .pp-btn-o:hover,.ps-cta .pp-btn-o:focus-visible{background:#A64508;border-color:#A64508}
.ps-band .btn:focus-visible,.ps-cta a:focus-visible{outline:3px solid var(--blue,#124A92);outline-offset:3px}
/* small jump link near the top of the page */
.ps-top-link{margin:6px 0 14px;font-size:15px;line-height:1.5}
.ps-top-link a{color:var(--blue,#124A92);font-weight:700;text-decoration:underline;text-underline-offset:3px}
.ps-top-link a:hover{text-decoration-thickness:2px}
.ps-top-link a:focus-visible{outline:3px solid var(--blue,#124A92);outline-offset:3px;border-radius:4px}
#student-apps{scroll-margin-top:84px}
@media (max-width:640px){
  .ps-grid{grid-template-columns:1fr;gap:18px}
  .ps-cta{padding:22px 18px}.ps-cta .pp-btn-o{width:100%}
}
@media (prefers-reduced-motion:reduce){.ps-card,.ps-card:hover{transition:none;transform:none}}

/* ===== progshow_v2.1 (2026-11-03 ~18:35 AEST, LOCAL): calm static showcase + CSS device mock-up hero on site navy. Own NextRising code.
   Site tokens only (--ink/--muted/--line, --font/--font-d, --gl-*, --r-card). No JS. Rollback: delete from here down. */
.ps-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:32px 56px;align-items:center;margin-bottom:48px}
.ps-hero .sec-head{margin-bottom:0}
.ps-band .sec-head .ps-lede{max-width:44ch}
/* device stage: site navy, soft glow, a laptop and one floating window */
.ps-stage{position:relative;aspect-ratio:16/11;border-radius:var(--r-card,22px);overflow:hidden;isolation:isolate;
  background:linear-gradient(160deg,#1B2A5E 0%,#14204A 55%,#0F1838 100%);box-shadow:var(--gl-drop,0 18px 40px rgba(20,32,74,.22))}
.ps-glow{position:absolute;inset:0;z-index:-1;background:radial-gradient(rgba(255,255,255,.13) 1px,transparent 1.6px) 0 0/22px 22px,radial-gradient(60% 55% at 42% 46%,rgba(77,186,229,.38),transparent 70%),radial-gradient(40% 40% at 80% 82%,rgba(245,126,32,.22),transparent 70%)}
.ps-laptop{position:absolute;left:8%;top:13%;width:70%}
.ps-lid{padding:2.2% 2.2% 3%;border-radius:14px 14px 6px 6px;background:#0B1230;border:1px solid rgba(255,255,255,.14);box-shadow:0 24px 50px -16px rgba(0,0,0,.55)}
.ps-screen{aspect-ratio:11/7;border-radius:6px;overflow:hidden;background:#0B1230}
.ps-screen img,.ps-phone-scr img{display:block;width:100%;height:100%;object-fit:cover}
.ps-deck{height:0;margin:0 -7%;border-top:14px solid #C8D0E0;border-left:22px solid transparent;border-right:22px solid transparent;border-radius:0 0 12px 12px;
  filter:drop-shadow(0 10px 14px rgba(0,0,0,.35))}
/* cards: four equal static cards, nothing cut off */
.ps-cards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}
.ps-cards .ps-card{height:100%}
.ps-cards .ps-shot{aspect-ratio:11/7}
.ps-cards .ps-body{gap:6px;padding:18px 20px 22px}
.ps-cards .ps-kind{position:static;padding:0;background:none;border-radius:0;color:var(--muted,#4A5578);font:600 13px/1.4 var(--font,inherit)}
.ps-cards h3{font-size:18px}
.ps-cards .ps-desc{font-size:15px}
.ps-band .ps-cta{margin-top:48px}
@media (max-width:1100px){.ps-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:860px){.ps-hero{grid-template-columns:minmax(0,1fr);margin-bottom:32px}.ps-stage{max-width:560px}}
@media (max-width:640px){.ps-cards{grid-template-columns:minmax(0,1fr);gap:20px}.ps-stage{aspect-ratio:4/3}.ps-laptop{left:6%;top:12%;width:76%}  .ps-deck{border-top-width:10px;border-left-width:14px;border-right-width:14px}.ps-band .ps-cta{margin-top:32px}}
/* own CSS (reference only: dot-grid-background idea): a faint dot grid behind the showcase, fading out at the edges */
.ps-band{position:relative;isolation:isolate}
.ps-band::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(rgba(20,32,74,.10) 1px,transparent 1.6px) 0 0/24px 24px;
  -webkit-mask-image:radial-gradient(70% 60% at 50% 30%,#000 30%,transparent 80%);mask-image:radial-gradient(70% 60% at 50% 30%,#000 30%,transparent 80%)}
/* phone, our own CSS */
.ps-phone{position:absolute;right:7%;bottom:9%;width:22%;aspect-ratio:9/19;padding:2.2%;border-radius:22px;background:#0B1230;border:1px solid rgba(255,255,255,.22);
  box-shadow:0 26px 48px -14px rgba(0,0,0,.6),inset 0 0 0 2px rgba(255,255,255,.06)}
.ps-phone-scr{width:100%;height:100%;border-radius:15px;overflow:hidden;background:#fff}
.ps-phone-scr img{object-position:0 0}
/* teaser slot: the game loop (copy pending review) */
.ps-teaser{margin:40px 0 0;display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:20px 40px;align-items:center;padding:26px 30px;
  border:1px solid var(--line,#D6DCE8);border-radius:var(--r-card,22px);background:#fff;box-shadow:var(--gl-rim,none),var(--gl-drop,none)}
.ps-teaser-k{margin:0 0 8px;color:var(--ink,#14204A);font:800 18px/1.3 var(--font-d,inherit)}
.ps-teaser-txt p:last-child{margin:0;color:#3E4866;font-size:16px;line-height:1.6;max-width:64ch}
.ps-loop{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;font:600 14px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.ps-loop-i{padding:9px 14px;border-radius:10px;background:#F3F5F9;border:1px solid var(--line,#D6DCE8);color:var(--ink,#14204A);animation:psTick 1.5s steps(1,end) infinite}
.ps-loop-i:nth-child(3){animation-delay:.5s}.ps-loop-i:nth-child(5){animation-delay:1s}
.ps-loop-a,.ps-loop-r{color:var(--muted,#4A5578);font-size:16px}
.ps-loop-r{margin-left:4px}
@keyframes psTick{0%{background:#14204A;color:#fff;border-color:#14204A}33.33%{background:#F3F5F9;color:#14204A;border-color:#D6DCE8}}
@media (prefers-reduced-motion:reduce){.ps-loop-i{animation:none}}
html.rm-user .ps-loop-i{animation:none}
@media (max-width:860px){.ps-teaser{grid-template-columns:minmax(0,1fr)}.ps-loop{justify-content:flex-start}}
@media (max-width:640px){.ps-teaser{margin-top:32px;padding:22px 18px}}
