:root{
  --night:#0B1220; --night-2:#121C30; --night-3:#1A2742;
  --paper:#EEF0EA; --paper-2:#E3E7DE; --ink:#101827; --muted:#56606F;
  --orange:#D4561B; --orange-l:#F06A2A; --orange-d:#B04512;
  --cyan:#35B0F5; --teak:#B9824A; --sand:#F3D9B1;
  --line-d:rgba(255,255,255,.13); --line-l:rgba(16,24,39,.14); --grid:rgba(53,120,190,.10);
  --display:"Unbounded","Trebuchet MS",system-ui,sans-serif;
  --body:"Instrument Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",Consolas,monospace;
  --ease:cubic-bezier(.2,.8,.2,1);
  --gutter:clamp(18px,4vw,56px);
  --navh:72px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:var(--body);background:var(--night);color:#fff;line-height:1.6;font-size:17px;overflow-x:hidden}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
h1,h2,h3{font-family:var(--display);font-weight:700;line-height:1.04;letter-spacing:-.025em}
.wrap{max-width:1320px;margin:0 auto;padding-inline:var(--gutter)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
:focus-visible{outline:3px solid var(--cyan);outline-offset:3px;border-radius:6px}
.mono{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.6em;min-height:52px;padding:0 26px;border-radius:14px;font-weight:700;font-size:16px;border:1.5px solid transparent;cursor:pointer;transition:transform .35s var(--ease),background-color .25s,color .25s,border-color .25s}
.btn:hover{transform:translateY(-3px)}
.btn:active{transform:translateY(0) scale(.98)}
.btn-primary{background:var(--orange);color:#fff;box-shadow:0 14px 30px -14px rgba(212,86,27,.8)}
.btn-primary:hover{background:var(--orange-l)}
.btn-ghost{border-color:rgba(255,255,255,.4);color:#fff}
.btn-ghost:hover{border-color:#fff;background:rgba(255,255,255,.08)}
.btn-ink{background:var(--ink);color:#fff}
.btn-ink:hover{background:var(--night-3)}
.btn-line{border-color:var(--line-l);color:var(--ink)}
.btn-line:hover{border-color:var(--ink)}
.btn .arr{transition:transform .3s var(--ease)}
.btn:hover .arr{transform:translateX(4px)}

/* nav */
.nav{position:fixed;inset:0 0 auto;z-index:60;height:var(--navh);transition:background-color .4s,border-color .4s,backdrop-filter .4s;border-bottom:1px solid transparent}
.nav.solid{background:rgba(11,18,32,.84);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-color:var(--line-d)}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;height:100%;gap:24px}
.nav .logo img{height:38px;width:auto}
.nav ul{display:flex;gap:6px;list-style:none;font-size:15px;font-weight:600}
.nav ul a{display:block;padding:10px 14px;border-radius:10px;opacity:.82;transition:opacity .2s,background-color .2s}
.nav ul a:hover{opacity:1;background:rgba(255,255,255,.08)}
.nav .btn{min-height:44px;padding:0 18px;font-size:15px}
.burger{display:none;width:48px;height:48px;border-radius:12px;border:1px solid var(--line-d);background:rgba(11,18,32,.5);color:#fff;cursor:pointer}
.burger span{display:block;width:20px;height:2px;background:#fff;margin:5px auto;transition:transform .3s var(--ease),opacity .2s}
.burger[aria-expanded=true] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.burger[aria-expanded=true] span:nth-child(2){opacity:0}
.burger[aria-expanded=true] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* ---------- scroll film ---------- */
.film{position:relative;height:820vh;background:#05070c}
.film-sticky{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;background:#05070c url(../film/poster.webp) center/cover no-repeat}
#filmCanvas,#filmGL{position:absolute;inset:0;width:100%;height:100%;display:block}
#filmGL{pointer-events:none}
.film-veil{position:absolute;inset:0;background:#05070c;opacity:.12;pointer-events:none}
.film-vignette{position:absolute;inset:0;pointer-events:none;background:
  linear-gradient(90deg,rgba(5,7,12,.72) 0%,rgba(5,7,12,.3) 38%,transparent 62%),
  linear-gradient(0deg,rgba(5,7,12,.6) 0%,transparent 34%),
  linear-gradient(180deg,rgba(5,7,12,.55) 0%,transparent 18%)}
.film-grain{position:absolute;inset:-50%;pointer-events:none;opacity:.06;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 1s steps(4) infinite}
@keyframes grain{25%{transform:translate(-3%,2%)}50%{transform:translate(2%,-3%)}75%{transform:translate(-2%,-1%)}}
/* viewfinder frame */
.vf{position:absolute;inset:calc(var(--navh) + 14px) var(--gutter) 64px;pointer-events:none}
.vf i{position:absolute;width:26px;height:26px;border:1.5px solid rgba(255,255,255,.55)}
.vf i:nth-child(1){left:0;top:0;border-right:0;border-bottom:0}
.vf i:nth-child(2){right:0;top:0;border-left:0;border-bottom:0}
.vf i:nth-child(3){left:0;bottom:0;border-right:0;border-top:0}
.vf i:nth-child(4){right:0;bottom:0;border-left:0;border-top:0}
.vf .cross{position:absolute;left:50%;top:50%;width:18px;height:18px;transform:translate(-50%,-50%);opacity:.45}
.vf .cross::before,.vf .cross::after{content:"";position:absolute;background:#fff}
.vf .cross::before{left:50%;top:0;bottom:0;width:1px}
.vf .cross::after{top:50%;left:0;right:0;height:1px}
.vf .meta{position:absolute;top:10px;left:40px;color:rgba(255,255,255,.75);display:flex;gap:22px}
.vf .meta b{color:#fff;font-weight:700}
.rec{display:inline-flex;align-items:center;gap:8px}
.rec::before{content:"";width:8px;height:8px;border-radius:50%;background:#ff4d4d;animation:blink 1.4s steps(2,jump-none) infinite}
@keyframes blink{50%{opacity:.2}}
.film-load{position:absolute;left:0;right:0;top:var(--navh);height:2px;background:rgba(255,255,255,.08);transition:opacity .8s;z-index:2}
.film-load i{display:block;height:100%;background:linear-gradient(90deg,var(--cyan),var(--orange));transform-origin:left;transform:scaleX(0)}
.film-load.done{opacity:0}
.film-cards{position:absolute;inset:0;pointer-events:none}
.film-card{position:absolute;left:calc(var(--gutter) + 40px);bottom:clamp(110px,17vh,190px);max-width:min(760px,82vw);pointer-events:auto;will-change:transform,opacity}
.js .film-card{visibility:hidden}
.js .film-card:first-child{opacity:1;visibility:visible}
.film-card .k{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--sand);margin-bottom:20px}
.film-card .k em{white-space:nowrap;font-style:normal;color:var(--orange-l);font-weight:700}
.film-card .k::after{content:"";width:46px;height:1px;background:currentColor;opacity:.6}
.film-card h2{font-size:clamp(2.2rem,5.4vw,5.2rem);line-height:1;color:#fff;text-shadow:0 4px 40px rgba(0,0,0,.45)}
.film-card p{margin-top:18px;font-size:clamp(1.05rem,1.4vw,1.28rem);color:rgba(255,255,255,.84);max-width:31em}
.film-card.cool .k{color:#9fe3ff}
.film-more{display:inline-flex;align-items:center;gap:8px;margin-top:20px;min-height:44px;font-weight:700;color:#fff;border-bottom:1px solid rgba(255,255,255,.45);transition:transform .3s var(--ease),border-color .2s}
.film-more:hover{transform:translateX(4px);border-color:#fff}
.film-card.intro{left:0;right:0;top:0;bottom:0;margin:0;max-width:none;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;padding:0 calc(var(--gutter) + 40px) clamp(120px,18vh,200px)}
.film-card.intro .lockup{display:flex;align-items:center;gap:18px;margin-bottom:28px}
.film-card.intro .lockup img{width:clamp(110px,11vw,150px);height:auto}
.film-card.intro .lockup span{color:rgba(255,255,255,.7);border-left:1px solid rgba(255,255,255,.3);padding-left:18px}
.film-card.intro h1{font-size:clamp(2.6rem,7.6vw,7.4rem);line-height:.94;text-shadow:0 4px 40px rgba(0,0,0,.45)}
.film-card.intro h1 em{font-style:normal;color:var(--orange-l)}
.film-card.intro p{margin-top:22px}
.film-card.end{left:0;right:0;top:0;bottom:0;margin:0 auto;max-width:none;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;text-align:center;padding:0 var(--gutter) clamp(84px,13vh,140px)}
.film-card.end h2{max-width:13em;font-size:clamp(2.2rem,5vw,4.8rem)}
.film-card.end p{margin-inline:auto}
.film-cta{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;margin-top:32px}
.film-hud{position:absolute;right:calc(var(--gutter) + 14px);top:50%;transform:translateY(-50%);display:flex;gap:16px}
.film-track{position:absolute;right:3px;top:6px;bottom:6px;width:1px;background:rgba(255,255,255,.18)}
.film-track i{position:absolute;inset:0;background:var(--orange);transform-origin:top;transform:scaleY(0)}
.film-ticks{list-style:none;display:flex;flex-direction:column;gap:6px}
.film-ticks button{display:flex;align-items:center;justify-content:flex-end;gap:12px;min-height:32px;background:none;border:0;color:#fff;cursor:pointer;font:500 11px var(--mono);letter-spacing:.12em;text-transform:uppercase;padding:0}
.film-ticks button::after{content:"";width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.35);transition:transform .3s var(--ease),background-color .3s}
.film-ticks span{opacity:0;transform:translateX(6px);transition:opacity .3s,transform .3s var(--ease)}
.film-ticks button:hover span,.film-ticks button:focus-visible span,.film-ticks .on span{opacity:1;transform:none}
.film-ticks .past button::after{background:var(--sand)}
.film-ticks .on button::after{background:var(--orange-l);transform:scale(1.6)}
.film-bar{position:absolute;left:var(--gutter);right:var(--gutter);bottom:22px;display:flex;justify-content:space-between;align-items:center;color:rgba(255,255,255,.65);font-variant-numeric:tabular-nums;pointer-events:none}
.film-bar b{color:#fff}
.film-hint{display:flex;align-items:center;gap:10px;transition:opacity .4s}
.film-hint i{width:1px;height:28px;background:linear-gradient(#fff,transparent);animation:hint 1.8s var(--ease) infinite}
@keyframes hint{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
.film.moved .film-hint{opacity:0}
.film-skip{position:absolute;right:calc(var(--gutter) + 40px);top:calc(var(--navh) + 22px);color:rgba(255,255,255,.75);padding:10px 14px;border:1px solid rgba(255,255,255,.28);border-radius:10px;transition:transform .3s var(--ease),border-color .2s,color .2s;z-index:3}
.film-skip:hover{transform:translateY(-2px);border-color:#fff;color:#fff}
html:not(.js) .film{height:100vh}
html:not(.js) .film-card:not(:first-child){display:none}

/* ---------- shared section bits ---------- */
section{position:relative;scroll-margin-top:var(--navh)}
.sec{padding-block:clamp(72px,10vw,140px)}
.paper{background:var(--paper);color:var(--ink);
  background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px),
  linear-gradient(rgba(53,120,190,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(53,120,190,.05) 1px,transparent 1px);
  background-size:120px 120px,120px 120px,24px 24px,24px 24px}
.head{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:24px 64px;align-items:end}
.label{display:flex;align-items:center;gap:12px;color:var(--orange);margin-bottom:22px}
.label::before{content:"";width:10px;height:10px;border:2px solid currentColor;transform:rotate(45deg)}
.dark .label{color:var(--orange-l)}
.sec h2{font-size:clamp(2.1rem,4.6vw,4.2rem)}
.lead{font-size:clamp(1.05rem,1.3vw,1.2rem);color:var(--muted);max-width:34em}
.dark .lead{color:rgba(255,255,255,.72)}
.dark{background:var(--night);color:#fff}

/* stats strip */
.ticker{background:var(--orange);color:#fff;overflow:hidden;border-block:1px solid rgba(0,0,0,.1)}
.ticker .wrap{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.tick{padding:26px 0;display:flex;align-items:baseline;gap:14px;border-right:1px solid rgba(255,255,255,.22)}
.tick:last-child{border-right:0}
.tick b{font:800 clamp(2rem,3.6vw,3.2rem)/1 var(--display);letter-spacing:-.03em}
.tick span{font:500 12px/1.35 var(--mono);letter-spacing:.06em;text-transform:uppercase;opacity:.92}

/* storyboard */
.board{margin-top:clamp(40px,6vw,72px);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;counter-reset:shot}
.shot{position:relative;background:#fff;border:1px solid var(--line-l);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:14px;box-shadow:0 18px 36px -28px rgba(16,24,39,.45);transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.shot:hover{transform:translateY(-6px);box-shadow:0 28px 46px -28px rgba(16,24,39,.55)}
.shot .pair{display:grid;grid-template-columns:1fr 1fr;gap:6px;position:relative}
.shot .pair img{border-radius:10px;aspect-ratio:16/9;object-fit:cover;width:100%;background:var(--paper-2)}
.shot .pair::after{content:"\2192";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:28px;height:28px;border-radius:50%;background:var(--orange);color:#fff;display:grid;place-items:center;font:700 14px/1 var(--body);box-shadow:0 0 0 4px #fff}
.shot .meta{display:flex;justify-content:space-between;color:var(--muted)}
.shot .meta b{color:var(--orange)}
.shot h3{font-size:1.15rem;letter-spacing:-.01em}
.shot p{font-size:15px;color:var(--muted);line-height:1.5}
.shot .camline{margin-top:auto;padding-top:12px;border-top:1px dashed var(--line-l);color:var(--ink)}
.dim{position:relative;margin-top:30px;height:22px;color:var(--muted)}
.dim::before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:currentColor;opacity:.5}
.dim::after{content:"";position:absolute;inset:0;border-inline:1px solid currentColor;opacity:.5}
.dim span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:var(--paper);padding:0 14px;white-space:nowrap}

/* tracks / courses */
.tracks{margin-top:clamp(40px,6vw,72px);display:grid;gap:22px}
.track{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.6fr);border:1px solid var(--line-d);border-radius:26px;overflow:hidden;background:linear-gradient(160deg,var(--night-2),var(--night))}
.track .side{position:relative;min-height:340px;overflow:hidden}
.track .side img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.track:hover .side img{transform:scale(1.04)}
.track .side::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(11,18,32,.85),rgba(11,18,32,.1) 60%)}
.track .side .cap{position:absolute;left:24px;right:24px;bottom:22px;z-index:2}
.track .side .cap b{display:block;font:800 clamp(1.7rem,3vw,2.6rem)/1 var(--display);letter-spacing:-.03em}
.track .side .cap span{color:var(--sand)}
.list{list-style:none}
.course{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:6px 22px;align-items:center;padding:24px clamp(20px,3vw,36px);border-bottom:1px solid var(--line-d);transition:background-color .3s}
.course:last-child{border-bottom:0}
.course:hover{background:rgba(255,255,255,.04)}
.course .n{color:rgba(255,255,255,.45)}
.course h3{font-size:clamp(1.2rem,2vw,1.55rem);letter-spacing:-.015em}
.course p{grid-column:2;font-size:15px;color:rgba(255,255,255,.68);line-height:1.5}
.course .tag{grid-column:3;grid-row:1/3;justify-self:end;text-align:right;color:var(--sand);display:flex;flex-direction:column;align-items:flex-end;gap:10px}
.course .go{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border-radius:12px;border:1px solid var(--line-d);color:#fff;font:700 14px var(--body);text-transform:none;letter-spacing:0;transition:background-color .2s,border-color .2s,transform .3s var(--ease)}
.course .go:hover{background:var(--orange);border-color:var(--orange);transform:translateY(-2px)}
.chips{grid-column:2;display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.chips li{list-style:none;font-size:12.5px;font-weight:600;padding:4px 10px;border-radius:8px;background:rgba(255,255,255,.07);color:rgba(255,255,255,.85)}

/* software + facts */
.kit{margin-top:22px;display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:22px}
.box{border:1px solid var(--line-d);border-radius:22px;padding:clamp(20px,3vw,32px)}
.box h3{font-size:1.15rem;margin-bottom:16px}
.sw{display:flex;flex-wrap:wrap;gap:8px}
.sw li{list-style:none;font:700 13px var(--mono);padding:8px 12px;border-radius:10px;border:1px solid rgba(185,130,74,.45);color:#F0C58A}
.facts{list-style:none;display:grid;gap:12px}
.facts li{display:flex;justify-content:space-between;gap:16px;padding-bottom:12px;border-bottom:1px dashed var(--line-d);font-size:15px;color:rgba(255,255,255,.75)}
.facts li:last-child{border-bottom:0;padding-bottom:0}
.facts b{color:#fff;text-align:right}

/* student work rail */
.rail{margin-top:clamp(40px,5vw,64px);overflow:hidden;mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.rail-row{display:flex;gap:16px;width:max-content;animation:rail 120s linear infinite}
/* both rows drift right to left; the second a little slower, for depth */
.rail-row.rev{animation-duration:150s;margin-top:16px}
.rail:hover .rail-row{animation-play-state:paused}
@keyframes rail{to{transform:translateX(-50%)}}
.rail{--tw:clamp(170px,17vw,240px)}
.rail button{position:relative;flex:none;width:var(--tw);border:0;padding:0;background:none;border-radius:14px;overflow:hidden;cursor:zoom-in;transition:transform .4s var(--ease),box-shadow .4s;box-shadow:0 18px 30px -22px rgba(16,24,39,.6)}
.rail button:hover{transform:translateY(-6px) rotate(-1deg)}
.rail img{width:100%;aspect-ratio:760/1075;object-fit:cover}
.rail .land{width:calc(var(--tw)*2)}
.rail .land img{aspect-ratio:1131/800}
.rail .play{position:absolute;inset:0;display:grid;place-items:center;background:linear-gradient(transparent 55%,rgba(11,18,32,.45))}
.rail .play::before{content:"";width:54px;height:54px;border-radius:50%;background:var(--orange) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M9 6.5v11l9-5.5z'/%3E%3C/svg%3E") center/60% no-repeat;box-shadow:0 10px 24px -8px rgba(0,0,0,.6);transition:transform .3s var(--ease)}
.rail .vid:hover .play::before{transform:scale(1.12)}
dialog{border:0;background:transparent;max-width:min(92vw,960px);max-height:92vh;margin:auto;color:#fff}
dialog::backdrop{background:rgba(4,8,16,.9)}
dialog img{max-height:84vh;width:auto;margin:auto;border-radius:14px}
dialog video{display:block;max-height:84vh;max-width:100%;margin:auto;border-radius:14px;background:#000}
dialog video[hidden],dialog img[hidden]{display:none}
dialog form{display:flex;justify-content:flex-end;margin-bottom:10px}
dialog button{min-width:48px;min-height:48px;border-radius:12px;border:1px solid var(--line-d);background:rgba(255,255,255,.1);color:#fff;font-size:22px;cursor:pointer}

/* why + stories */
.why{display:grid;grid-template-columns:repeat(3,1fr);margin-top:clamp(40px,5vw,64px);border:1px solid var(--line-l);border-radius:24px;overflow:hidden;background:rgba(255,255,255,.55)}
.why li{list-style:none;padding:28px 28px 32px;border-right:1px solid var(--line-l);border-bottom:1px solid var(--line-l)}
.why li:nth-child(3n){border-right:0}
.why li:nth-last-child(-n+3){border-bottom:0}
.why i{font-style:normal;color:var(--orange)}
.why b{display:block;font:700 1.2rem/1.2 var(--display);letter-spacing:-.015em;margin:12px 0 8px}
.why span{color:var(--muted);font-size:15.5px}
.stories{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:22px}
.story{background:#fff;border:1px solid var(--line-l);border-radius:22px;padding:24px;display:flex;flex-direction:column;gap:18px}
.story blockquote{font-size:1rem;line-height:1.55}
.story blockquote::before{content:"\201C";display:block;font:800 44px/.6 var(--display);color:var(--orange);margin-bottom:8px}
.story footer{display:flex;gap:12px;align-items:center;margin-top:auto}
.story img{width:48px;height:48px;border-radius:12px;object-fit:cover}
.story b{display:block;line-height:1.25;font-size:15px}
.story small{color:var(--muted);font-size:13px;line-height:1.3;display:block}

/* faq */
.faq{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:clamp(24px,6vw,96px);align-items:start}
details{border-bottom:1px solid var(--line-l)}
details:first-of-type{border-top:1px solid var(--line-l)}
summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:20px;min-height:70px;font:600 1.15rem/1.3 var(--body)}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";font:500 26px/1 var(--mono);color:var(--orange);transition:transform .3s var(--ease);flex:none}
details[open] summary::after{transform:rotate(45deg)}
details p{padding:0 0 24px;color:var(--muted);max-width:38em}

/* orbit / contact */
.orbit{position:relative;overflow:hidden;background:#04060b}
.orbit .bg{position:absolute;inset:0;background:url(../images/frames/KF7-orbit.webp) 70% 50%/cover no-repeat;opacity:.55}
.orbit::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(4,6,11,.96) 0%,rgba(4,6,11,.72) 45%,rgba(4,6,11,.2) 100%)}
.orbit .wrap{position:relative;z-index:2}
.orbit h2{font-size:clamp(2.4rem,6vw,5.4rem);max-width:11em}
.orbit .cta{display:flex;flex-wrap:wrap;gap:14px;margin-top:34px}
.campus{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:clamp(48px,7vw,96px);max-width:900px}
.cam{padding:26px;border-radius:22px;border:1px solid var(--line-d);background:rgba(11,18,32,.6);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.cam .mono{color:var(--sand)}
.cam h3{font-size:1.5rem;margin:10px 0}
.cam address{font-style:normal;color:rgba(255,255,255,.72);margin-bottom:18px;font-size:15px}
.cam .btn{min-height:44px;font-size:15px;padding:0 16px}

footer.site{background:var(--night);padding:60px 0 32px;font-size:15px;color:rgba(255,255,255,.7);border-top:1px solid var(--line-d)}
.fgrid{display:grid;grid-template-columns:1.4fr 1fr 1.2fr 1fr;gap:36px}
.fgrid img{height:42px;width:auto;margin-bottom:16px}
.fgrid h4{color:#fff;margin-bottom:14px}
.fgrid li{list-style:none;margin-bottom:8px}
.fgrid a{transition:color .2s}.fgrid a:hover{color:#fff}
.legal{margin-top:44px;padding-top:22px;border-top:1px solid var(--line-d);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}

/* reveal */
.js .rv{opacity:0;transform:translate3d(0,26px,0)}
.js .rv.in{opacity:1;transform:none;transition:transform .9s var(--ease),opacity .9s var(--ease);transition-delay:var(--d,0s)}

@media (max-width:1080px){
  .nav ul{position:fixed;top:var(--navh);left:0;right:0;flex-direction:column;gap:0;background:rgba(11,18,32,.97);padding:10px var(--gutter) 24px;border-bottom:1px solid var(--line-d);transform:translateY(-12px);opacity:0;visibility:hidden;transition:transform .35s var(--ease),opacity .25s,visibility .35s}
  .nav.open ul{transform:none;opacity:1;visibility:visible}
  .nav ul a{padding:14px 4px;font-size:18px;border-bottom:1px solid var(--line-d);border-radius:0}
  .burger{display:block}
  .nav .wrap>.btn{margin-left:auto}
  .board{grid-template-columns:repeat(2,minmax(0,1fr))}
  .track{grid-template-columns:1fr}
  .track .side{min-height:260px}
  .stories{grid-template-columns:repeat(2,1fr)}
  .fgrid{grid-template-columns:1fr 1fr}
}
@media (max-width:760px){
  :root{--navh:64px}
  body{font-size:16px}
  .film{height:700vh}
  .film-hud,.vf .meta span:not(:first-child),.vf .cross{display:none}
  .vf{inset:calc(var(--navh) + 10px) 12px 56px}
  .film-card,.film-card.intro{left:var(--gutter);padding-left:0}
  .film-card.intro{left:0;padding:0 var(--gutter) 108px}
  .film-card{bottom:96px;max-width:calc(100vw - 2*var(--gutter))}
  .film-vignette{background:linear-gradient(0deg,rgba(5,7,12,.92) 0%,rgba(5,7,12,.45) 45%,transparent 72%),linear-gradient(180deg,rgba(5,7,12,.6) 0%,transparent 22%)}
  .film-bar .tc{display:none}
  .film-skip{top:calc(var(--navh) + 18px);right:calc(var(--gutter) + 22px);padding:8px 12px}
  .film-card .k::after{display:none}
  .nav .wrap>.btn{display:none}
  .head{grid-template-columns:1fr}
  .ticker .wrap{grid-template-columns:1fr 1fr;gap:0}
  .tick{padding:18px 0;flex-direction:column;gap:6px;border-right:0}
  .tick:nth-child(odd){border-right:1px solid rgba(255,255,255,.22);padding-right:16px}
  .tick:nth-child(even){padding-left:16px}
  .board{grid-template-columns:1fr}
  .dim{height:auto}.dim::before,.dim::after{display:none}.dim span{position:static;transform:none;display:block;white-space:normal;text-align:center;background:none;padding:0}
  .course{grid-template-columns:auto minmax(0,1fr)}
  .course .tag{grid-column:2;grid-row:auto;justify-self:start;align-items:flex-start;text-align:left;flex-direction:row;flex-wrap:wrap;margin-top:8px}
  .kit{grid-template-columns:1fr}
  .why{grid-template-columns:1fr}
  .why li{border-right:0!important;border-bottom:1px solid var(--line-l)!important}
  .why li:last-child{border-bottom:0!important}
  .stories{grid-template-columns:1fr}
  .faq{grid-template-columns:1fr}
  .campus{grid-template-columns:1fr}
  .orbit::after{background:linear-gradient(0deg,rgba(4,6,11,.96) 20%,rgba(4,6,11,.6) 100%)}
  .fgrid{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){
  .film-grain,.film-hint i,.rec::before{animation:none}
  /* the student work rail keeps its slow drift: the site owner wants it moving */
  .js .rv{opacity:1;transform:none}
}
/* course links (home) */
.clink{background:linear-gradient(currentColor,currentColor) 0 100%/0 1.5px no-repeat;transition:background-size .4s var(--ease),color .2s}
.clink:hover{background-size:100% 1.5px;color:var(--sand)}
.gos{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.course .go.ghost{background:none}
.course .go.ghost:hover{background:rgba(255,255,255,.1);border-color:#fff}
@media (max-width:760px){.gos{justify-content:flex-start}}

/* ---------- course pipeline component ---------- */
.pipe-x{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:clamp(16px,2.4vw,28px);align-items:stretch}
.px-media{position:relative;display:block;border-radius:22px;overflow:hidden;background:#05070c;aspect-ratio:16/9;box-shadow:0 40px 80px -40px rgba(0,0,0,.85);isolation:isolate}
.px-media video,.px-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.px-media img{opacity:0;transform:scale(1.04);transition:opacity .8s var(--ease),transform 3.2s linear}
.px-media img.on{opacity:1;transform:scale(1)}
.px-media::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(5,7,12,.5),transparent 35%),linear-gradient(180deg,rgba(5,7,12,.35),transparent 25%);pointer-events:none}
.px-media .vf{inset:12px;z-index:2}
.px-media .vf .meta{top:6px;left:34px}
.px-media .px-now{color:#fff;font-weight:700}
a.px-media{transition:transform .5s var(--ease)}
a.px-media:hover{transform:translateY(-4px)}
.px-steps{list-style:none;display:grid;gap:8px;align-content:center;counter-reset:none}
.px-steps button{position:relative;width:100%;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:14px;align-items:center;text-align:left;padding:13px 16px;border-radius:14px;border:1px solid var(--line-d);background:rgba(255,255,255,.03);color:#fff;cursor:pointer;overflow:hidden;font:inherit;transition:background-color .3s,border-color .3s,transform .3s var(--ease)}
.px-steps button:hover{border-color:rgba(255,255,255,.35);transform:translateX(3px)}
.px-steps .mono{grid-row:span 2;color:rgba(255,255,255,.5);font-size:12px}
.px-steps b{font:700 1rem/1.25 var(--display);letter-spacing:-.01em}
.px-steps small{font-size:13.5px;color:rgba(255,255,255,.62);line-height:1.35}
.px-steps i{position:absolute;left:0;bottom:0;height:2px;width:100%;background:var(--orange-l);transform-origin:left;transform:scaleX(var(--p,0))}
.px-steps .past{border-color:rgba(243,217,177,.22)}
.px-steps .past .mono{color:var(--sand)}
.px-steps .on{background:rgba(212,86,27,.16);border-color:rgba(240,106,42,.65)}
.px-steps .on .mono{color:var(--orange-l)}
.pipe-x.compact .px-steps{grid-template-columns:1fr 1fr;align-content:start;gap:6px}
.pipe-x.compact .px-steps button{padding:10px 12px}
.pipe-x.compact .px-steps small{display:none}
.pipe-x.compact .px-steps b{font-size:.92rem}

/* ---------- home course explorer ---------- */
.ctabs{display:flex;gap:8px;margin-top:clamp(36px,5vw,56px);overflow-x:auto;scrollbar-width:none;padding-bottom:2px;scroll-snap-type:x proximity}
.ctabs::-webkit-scrollbar{display:none}
.ctabs [role=tab]{flex:1 0 auto;min-width:150px;scroll-snap-align:start;display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:14px 18px;border-radius:14px;border:1px solid var(--line-d);background:rgba(255,255,255,.03);color:#fff;cursor:pointer;font:inherit;text-align:left;transition:background-color .25s,border-color .25s,transform .3s var(--ease)}
.ctabs [role=tab]:hover{border-color:rgba(255,255,255,.4);transform:translateY(-2px)}
.ctabs [role=tab] .mono{color:rgba(255,255,255,.55);font-size:11px}
.ctabs [role=tab] b{font:700 1rem/1.2 var(--display);white-space:nowrap}
.ctabs [aria-selected=true]{background:var(--orange);border-color:var(--orange)}
.ctabs [aria-selected=true] .mono{color:rgba(255,255,255,.85)}
.cpanels{margin-top:14px;border:1px solid var(--line-d);border-radius:26px;padding:clamp(14px,2vw,22px);background:linear-gradient(160deg,var(--night-2),var(--night))}
.cpanel{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(0,1fr);gap:clamp(18px,3vw,40px);align-items:center}
.cpanel[hidden]{display:none}
.cpanel .pipe-x{grid-template-columns:1fr;gap:12px}
.cp-info{padding:clamp(4px,1vw,12px) clamp(4px,1.5vw,18px) clamp(4px,1vw,12px) 0}
.cp-info .c-badge{display:inline-flex;padding:7px 12px;border-radius:10px;border:1px solid rgba(240,106,42,.5);color:var(--orange-l);margin-bottom:16px}
.cp-info h3{font-size:clamp(1.6rem,2.6vw,2.4rem);line-height:1.05}
.cp-info h3 em{font-style:normal;color:var(--orange-l)}
.cp-info h3 a{transition:color .2s}
.cp-info h3 a:hover{color:var(--sand)}
.cp-facts{margin-top:12px;color:var(--sand)}
.cp-info p:not(.cp-facts){margin-top:14px;color:rgba(255,255,255,.75);font-size:16px}
.cp-cta{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}

@media (max-width:1080px){
  .cpanel{grid-template-columns:1fr}
  .cp-info{padding:4px}
}
@media (max-width:760px){
  .pipe-x{grid-template-columns:1fr}
  .px-steps{grid-template-columns:1fr 1fr;gap:6px}
  .px-steps button{padding:10px 12px}
  .px-steps small{display:none}
  .px-steps b{font-size:.9rem}
  .ctabs [role=tab]{min-width:132px;padding:12px 14px}
  .cpanels{padding:10px;border-radius:20px}
}
.pipe-x{align-items:start}
.px-media{width:100%}
.px-media img.contain{object-fit:contain;padding:14px 0}
.px-media:has(img.contain){background:radial-gradient(120% 90% at 50% 40%,#1c2a45,#05070c)}

/* ---------- hero text transitions (driven by --in / --out from film.js) ---------- */
.film-card .w{display:inline-block;overflow:hidden;vertical-align:top;padding:.06em .03em .14em;margin:-.06em -.03em -.14em}
.film-card .wi{display:inline-block;will-change:transform,opacity;
  --k:clamp(0,calc(var(--in,1) * (1 + var(--n,6) * .13) - var(--i,0) * .13),1);
  --q:clamp(0,calc(var(--out,0) * (1 + var(--n,6) * .09) - var(--i,0) * .09),1);
  transform:translate3d(0,calc((1 - var(--k)) * 108% - var(--q) * 108%),0) rotate(calc((1 - var(--k)) * 4deg));
  opacity:calc(var(--k) - var(--q))}
.film-card .fx{will-change:transform,opacity;
  --k:clamp(0,calc(var(--in,1) * 1.7 - var(--d,0) * .17),1);
  --q:clamp(0,calc(var(--out,0) * 1.5 - (4 - var(--d,0)) * .09),1);
  opacity:calc(var(--k) - var(--q));
  transform:translate3d(0,calc((1 - var(--k)) * 26px - var(--q) * 18px),0)}
.film-card .k.fx::after{transform-origin:left;transform:scaleX(var(--k))}

/* software logos in the hero */
.tools-row{margin-top:22px}
.tools-row>.mono{display:block;color:rgba(255,255,255,.62);margin-bottom:10px}
.tools-row ul{display:flex;flex-wrap:wrap;gap:8px;list-style:none}
.tools-row li{position:relative;display:flex;align-items:center;gap:9px;padding:6px 13px 6px 6px;border-radius:12px;background:rgba(11,18,32,.5);border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);font:600 13px/1 var(--body);color:#fff;
  --t:clamp(0,calc(var(--in,1) * 2.4 - .6 - var(--j,0) * .08),1);
  opacity:var(--t);transform:translate3d(0,calc((1 - var(--t)) * 14px),0) scale(calc(.86 + var(--t) * .14));
  transition:border-color .25s,background-color .25s}
.tools-row li:hover{border-color:rgba(255,255,255,.45);background:rgba(11,18,32,.75)}
.tools-row img{width:26px;height:26px;object-fit:contain;flex:none}
.tools-row.full li{padding:7px}
.tools-row.full li span{position:absolute;left:50%;bottom:calc(100% + 8px);padding:6px 9px;border-radius:8px;background:#fff;color:var(--ink);white-space:nowrap;font-size:12px;
  opacity:0;transform:translate3d(-50%,4px,0);pointer-events:none;transition:opacity .2s,transform .25s var(--ease)}
.tools-row.full li:hover span{opacity:1;transform:translate3d(-50%,0,0)}
.film-card.end .tools-row ul{justify-content:center}
@media (max-width:760px){
  .tools-row{margin-top:16px}
  .tools-row ul{gap:6px}
  .tools-row li{padding:5px 10px 5px 5px;font-size:12px}
  .tools-row img{width:22px;height:22px}
  .tools-row.full li{padding:6px}
}
@media (prefers-reduced-motion:reduce){.film-card .wi,.film-card .fx,.tools-row li{transform:none}}

/* hero video (Admin > Website editor > hero): replaces the frame film behind the same words */
.film-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
