/* EmptyCore motion layer. Hand-written, NOT generated by _build/build.py (safe across rebuilds). */
:root{--ease-shuttle:cubic-bezier(.22,.9,.28,1);--copper:#3A5280;--trace:#2B4170}
/* ===== Shuttle: page enter / leave + section reveals (all pages) ===== */
html.js body main{animation:shuttle-in .55s var(--ease-shuttle) both}
html.js body.leaving main{animation:shuttle-out .22s ease-in both}
@keyframes shuttle-in{from{opacity:0;transform:translateX(36px)}to{opacity:1;transform:none}}
@keyframes shuttle-out{to{opacity:0;transform:translateX(-36px)}}
/* signal line that "shuttles" across under the header on every page load */
header.site::after{content:"";position:absolute;left:0;bottom:-1px;height:2px;width:22%;background:linear-gradient(90deg,transparent,var(--orange),transparent);opacity:0}
html.js header.site::after{animation:shuttle-line 1.1s var(--ease-shuttle) .1s 1 both}
html.js body.leaving header.site::after{animation:shuttle-line .3s linear both}
@keyframes shuttle-line{0%{left:-22%;opacity:1}100%{left:100%;opacity:0}}
/* hero copy shuttles in from the left, lines staggered */
html.js .hero .wrap>*,html.js .hero .hero-text>*{animation:rise-l .7s var(--ease-shuttle) both}
html.js .hero .wrap>*:nth-child(2),html.js .hero .hero-text>*:nth-child(2){animation-delay:.08s}
html.js .hero .wrap>*:nth-child(3),html.js .hero .hero-text>*:nth-child(3){animation-delay:.16s}
html.js .hero .wrap>*:nth-child(4),html.js .hero .hero-text>*:nth-child(4){animation-delay:.24s}
@keyframes rise-l{from{opacity:0;transform:translateX(-28px)}to{opacity:1;transform:none}}
/* scroll reveals: alternate left / right */
html.js .rv{opacity:0;transform:translateX(var(--rx,-28px));transition:opacity .6s var(--ease-shuttle),transform .6s var(--ease-shuttle);transition-delay:var(--rd,0s)}
html.js .rv.rv-r{--rx:28px}
html.js .rv.in{opacity:1;transform:none}
/* headings get a copper "trace" that draws under the eyebrow */
.eyebrow{position:relative}
html.js .rv .eyebrow::after,html.js .rv.eyebrow::after{content:"";position:absolute;left:0;bottom:-3px;height:2px;width:0;background:var(--orange);border-radius:2px;transition:width .8s var(--ease-shuttle) .2s}
html.js .rv.in .eyebrow::after,html.js .rv.in.eyebrow::after{width:36px}
/* cards: hover lifts with a tiny status LED */
.card,details.course{transition:transform .25s var(--ease-shuttle),box-shadow .25s,border-color .25s}
.card:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(15,23,42,.10);border-color:#D5DCE7}
.card{position:relative}
.card::after{content:"";position:absolute;top:14px;right:14px;width:7px;height:7px;border-radius:50%;background:#CBD5E1;transition:background .25s,box-shadow .25s}
.card:hover::after{background:var(--orange);box-shadow:0 0 0 4px rgba(242,107,29,.18),0 0 12px rgba(242,107,29,.8)}
.cta-band::after,.ohm-card::after,.pm-panel::after,.map-teaser::after{display:none}
details.course[open]{box-shadow:0 10px 26px rgba(15,23,42,.08)}
details.course .body{animation:none}
details.course[open] .body{animation:rise-l .45s var(--ease-shuttle) both}
.btn{transition:background .2s,color .2s,transform .2s,box-shadow .2s}
.btn:hover{transform:translateY(-1px)}
.btn-primary:hover{box-shadow:0 6px 18px rgba(242,107,29,.35)}

/* ===== HOME: circuit hero ===== */
.home-hero{position:relative;overflow:hidden;background:
 radial-gradient(circle at 1px 1px,rgba(255,255,255,.07) 1px,transparent 0) 0 0/22px 22px,var(--navy)}
.hero-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:24px 40px;align-items:center}
.hero-grid .stats{grid-column:1/-1}
.hero-art{position:relative;will-change:transform}
.art-hint{font-size:.8rem;color:#9FB0CC!important;text-align:center;margin:4px 0 0}
@media(max-width:860px){.hero-grid{grid-template-columns:1fr}.hero-art{max-width:460px;margin:0 auto;width:100%}}
svg.circuit{width:100%;height:auto;display:block;overflow:visible}
.circuit .pcb{fill:#21365E;stroke:#3A5280;stroke-width:2}
.circuit .usb{fill:#8FA3C4}.circuit .hdr{fill:#0F172A;stroke:#4A6390}
.circuit .chip{fill:#0F172A;stroke:#4A6390;cursor:pointer;transition:stroke .2s}
.circuit .chip:hover,.circuit .chip:focus-visible{stroke:var(--orange);outline:none}
.circuit .pin{fill:#B9C4D6}.circuit .dot1{fill:#4A6390}
.circuit .chiplbl{fill:#6B7FA6;font:700 11px ui-monospace,monospace;text-anchor:middle;letter-spacing:.1em;pointer-events:none}.circuit .chiplbl.s{font-size:9px}
.circuit .xtal{fill:#B9C4D6}
.circuit .trace{fill:none;stroke:var(--trace);stroke-width:3;stroke-linejoin:round}
.circuit .pulse{fill:none;stroke:#FFB98A;stroke-width:3;stroke-linecap:round;stroke-dasharray:7 93;stroke-dashoffset:100;filter:drop-shadow(0 0 3px #F26B1D);animation:pulse-run 4.2s linear infinite;animation-delay:var(--d)}
@keyframes pulse-run{from{stroke-dashoffset:100}to{stroke-dashoffset:0}}
.circuit .hit{fill:none;stroke:transparent;stroke-width:14;cursor:pointer}
.circuit .via{fill:#0F172A;stroke:#C58B5C;stroke-width:1.6}
.circuit .pad{fill:#C58B5C}.circuit .padhole{fill:#0F172A}
.circuit .res rect{fill:#D9C39A}.circuit .res .b1{fill:#B45309}.circuit .res .b2{fill:#F26B1D}.circuit .res .b3{fill:#7C2D12}
.circuit .led{cursor:pointer;outline:none}
.circuit .lens{transition:fill .15s}
.circuit .glow{opacity:0;transition:opacity .15s}
.circuit .shine{fill:#fff;opacity:.5;pointer-events:none}
.c-or{fill:#F26B1D}.c-gr{fill:#22C55E}.c-am{fill:#FACC15}
.circuit .lens.c-or{fill:#7A3510}.circuit .lens.c-gr{fill:#14532D}.circuit .lens.c-am{fill:#6B5A0A}
.circuit .led.blink .glow{animation:led-blink var(--t,3s) steps(1) infinite;animation-delay:var(--d,0s)}
.circuit .led.blink .lens{animation:lens-blink var(--t,3s) steps(1) infinite;animation-delay:var(--d,0s)}
@keyframes led-blink{0%,70%{opacity:0}71%,100%{opacity:.55}}
@keyframes lens-blink{0%,70%{filter:none}71%,100%{filter:brightness(2.6) saturate(1.3)}}
.circuit .led.steady .glow{opacity:.5}.circuit .led.steady .lens{filter:brightness(2.4)}
.circuit .led:hover .glow,.circuit .led:focus-visible .glow,.circuit .led.lit .glow{opacity:.85!important;animation:none}
.circuit .led:hover .lens,.circuit .led:focus-visible .lens,.circuit .led.lit .lens{filter:brightness(3) saturate(1.4)!important;animation:none}
.circuit .spark{fill:#FFE3CF;filter:drop-shadow(0 0 4px #F26B1D) drop-shadow(0 0 8px #F26B1D)}
.home-hero.paused *{animation-play-state:paused!important}
/* stats like a 7-segment readout */
.stats b{font-variant-numeric:tabular-nums}

/* ===== HOME: Ohm's-law mini lab ===== */
.ohm-card{padding:14px}
.ohm-svg{width:100%;height:auto;display:block}
.ohm-svg .wire{fill:none;stroke:#1B2A4A;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.ohm-svg .flow{fill:none;stroke:#F26B1D;stroke-width:4;stroke-linecap:round;stroke-dasharray:2 6;opacity:0;transition:opacity .3s}
.ohm.on .ohm-svg .flow{opacity:1;animation:flow var(--flow,1.4s) linear infinite}
@keyframes flow{from{stroke-dashoffset:0}to{stroke-dashoffset:-8}}
.ohm-svg text{font:600 13px Inter,system-ui,sans-serif;fill:#475569}
.ohm-svg .batt line{stroke:#1B2A4A;stroke-width:4}.ohm-svg .batt .neg{stroke-width:7}
.ohm-svg .sw circle{fill:#fff;stroke:#1B2A4A;stroke-width:3}
.ohm-svg #ohm-lever{stroke:#1B2A4A;stroke-width:4;stroke-linecap:round;transform-origin:150px 50px;transition:transform .25s var(--ease-shuttle)}
.ohm.on #ohm-lever{transform:rotate(28deg)}
.ohm-svg .resz polyline{fill:none;stroke:#1B2A4A;stroke-width:4;stroke-linejoin:round}
.ohm-led polygon{fill:#FCA5A5;stroke:#7F1D1D;stroke-width:3;transition:fill .2s}
.ohm-led line{stroke:#7F1D1D;stroke-width:3}
.ohm-led .glow{fill:#EF4444;opacity:0;transition:opacity .25s;filter:blur(6px)}
.ohm-led .ray{stroke:#EF4444;opacity:0;transition:opacity .25s}
.ohm.on .ohm-led .glow{opacity:var(--b,.6)}.ohm.on .ohm-led .ray{opacity:var(--b,.6)}
.ohm.on .ohm-led polygon{fill:#EF4444}
.ohm.burnt .ohm-led polygon{fill:#44403C}.ohm.burnt .ohm-led .glow,.ohm.burnt .ohm-led .ray{opacity:0!important}
.ohm.burnt .ohm-led{animation:smoke .5s ease-out}
@keyframes smoke{0%,40%{filter:brightness(3)}100%{filter:none}}
.ohm-ctl{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px;margin:18px 0 8px}
.ohm-ctl label{font-weight:600}.ohm-ctl input[type=range]{width:200px;accent-color:#F26B1D}
.ohm-out{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#0F172A;color:#7CFFB2;padding:10px 14px;border-radius:10px;font-size:.92rem;min-height:2.6em}
.ohm-out.warn{color:#FFB98A}

/* ===== Path-map teaser (paths.html) ===== */
.map-teaser{display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between;margin-bottom:24px;background:linear-gradient(120deg,#fff 0%,#FFF5EE 100%)}

/* ===== Career path map ===== */
.pm-hero{background:radial-gradient(circle at 1px 1px,rgba(255,255,255,.07) 1px,transparent 0) 0 0/22px 22px,var(--navy)}
.pm-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.pm-chip{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 14px;font:inherit;font-size:.9rem;font-weight:600;cursor:pointer;transition:background .2s,border-color .2s,transform .15s}
.pm-chip i{width:10px;height:10px;border-radius:50%;display:inline-block;box-shadow:0 0 0 2px #fff,0 0 0 3px #E2E8F0}
.pm-chip:hover{transform:translateY(-1px)}
.pm-chip[aria-pressed=true]{background:var(--navy);color:#fff;border-color:var(--navy)}
.pm-chip[aria-pressed=true] i{box-shadow:0 0 0 2px var(--navy),0 0 10px currentColor}
.pm-stage{background:#0E1A33;border-radius:var(--r);padding:12px;position:relative;
 background-image:radial-gradient(circle at 1px 1px,rgba(255,255,255,.06) 1px,transparent 0);background-size:20px 20px}
.pm-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:10px}
.pm-scroll:focus-visible{outline:3px solid var(--orange)}
svg.pmap{display:block;width:100%;min-width:820px;height:auto}
.pm-hint{display:none;color:#9FB0CC!important;margin:6px 4px 0}
@media(max-width:860px){.pm-hint{display:block}}
.pmap .edge{fill:none;stroke:#2B4170;stroke-width:3;transition:stroke .3s,opacity .3s,stroke-width .3s}
.pmap .edge.locked{stroke:#475569;stroke-dasharray:6 6;opacity:.6}
.pmap.has-sel .edge:not(.on):not(.locked){opacity:.25}
.pmap .edge.on{stroke:var(--c);stroke-width:4;filter:drop-shadow(0 0 4px var(--c))}
.pmap .flowline{fill:none;stroke:#fff;stroke-width:2.5;stroke-linecap:round;stroke-dasharray:3 11;opacity:.9;animation:flow-dash .8s linear infinite;pointer-events:none}
@keyframes flow-dash{to{stroke-dashoffset:-14}}
.pmap .electron{fill:#fff;pointer-events:none}
.pmap .node{cursor:pointer;outline:none;transition:opacity .3s}
.pmap .node .body{fill:#16264A;stroke:#3A5280;stroke-width:1.5;transition:fill .3s,stroke .3s}
.pmap .node .pin{fill:#C58B5C}
.pmap .node .ind{fill:#334155;transition:fill .3s,filter .3s}
.pmap .node text.c{font:700 12px ui-monospace,SFMono-Regular,Menlo,monospace;fill:#FFB98A}
.pmap .node text.n{font:600 12px Inter,system-ui,sans-serif;fill:#E2E8F0}
.pmap .node:hover .body,.pmap .node:focus-visible .body{stroke:#fff}
.pmap .node:focus-visible .body{stroke-width:3}
.pmap.has-sel .node:not(.on){opacity:.35}
.pmap .node.on .body{stroke:var(--c);fill:#1C2F59}
.pmap .node.on .ind{fill:var(--c);filter:drop-shadow(0 0 4px var(--c))}
.pmap .node.hot .body{fill:#2A3F6E}
.pmap .node.sel .body{stroke:#fff;stroke-width:3}
.pmap .node.locked .body{fill:#1E293B;stroke:#475569;stroke-dasharray:4 4}
.pmap .node.locked text.c{fill:#94A3B8}.pmap .node.locked text.n{fill:#94A3B8}
.pmap .node.zap .body{animation:zap .5s ease-out}
@keyframes zap{0%{fill:#FFE3CF}100%{fill:#1C2F59}}
.pm-legend{display:flex;flex-wrap:wrap;gap:8px 20px;color:#C8D0DD;margin:10px 4px 2px}
.pm-legend i{display:inline-block;width:26px;height:0;vertical-align:middle;margin-right:8px;border-top:3px solid #F26B1D}
.pm-legend .lg-lock{border-top:3px dashed #64748B}
.pm-legend .lg-led{width:9px;height:9px;border:0;border-radius:50%;background:#22C55E;box-shadow:0 0 8px #22C55E}
.pm-panel{margin-top:20px;border-top:4px solid var(--c,#1B2A4A)}
.pm-panel .route{display:flex;flex-wrap:wrap;gap:6px;list-style:none;padding:0;margin:10px 0 14px}
.pm-panel .route li{background:var(--soft);border-radius:8px;padding:4px 9px;font-size:.88rem;animation:rise-l .4s var(--ease-shuttle) both;animation-delay:calc(var(--i)*60ms)}
.pm-panel .route li+li::before{content:"→ ";color:var(--muted)}
.pm-text{margin-top:18px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:0 18px}
.pm-text summary{cursor:pointer;padding:14px 0;font-weight:600}.pm-text li{margin-bottom:8px}

/* ===== Reduced motion: no movement, static states only ===== */
@media (prefers-reduced-motion: reduce){
 *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
 html.js .rv{opacity:1;transform:none}
 html.js .rv .eyebrow::after{width:36px}
 .circuit .pulse,.pmap .flowline,.pmap .electron,.circuit .spark{display:none}
 .circuit .led.blink .glow{opacity:.35}
 .ohm.on .ohm-svg .flow{stroke-dasharray:none;opacity:.8}
 .card:hover{transform:none}
}
@media(max-width:700px){.pm-chips{flex-wrap:nowrap;overflow-x:auto;padding-bottom:6px;margin-right:-20px;scrollbar-width:none}.pm-chip{flex:0 0 auto}}

/* ===== Course finder (find-your-course.html) ===== */
.wz-hero{background:radial-gradient(circle at 1px 1px,rgba(255,255,255,.07) 1px,transparent 0) 0 0/22px 22px,var(--navy)}
.wz{padding:26px;border-top:4px solid var(--orange);overflow:hidden}
.wz::after{display:none}
.wz:hover{transform:none}
.wz-top{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.wz-leds{display:flex;gap:8px;align-items:center;position:relative}
.wz-leds::before{content:"";position:absolute;left:4px;right:4px;top:50%;height:2px;background:#CBD5E1;z-index:0}
.wz-led{width:14px;height:14px;border-radius:50%;background:#E2E8F0;border:2px solid #94A3B8;position:relative;z-index:1;transition:background .25s,box-shadow .25s,border-color .25s}
.wz-led.on{background:var(--orange);border-color:#C2410C;box-shadow:0 0 0 3px rgba(242,107,29,.18),0 0 10px rgba(242,107,29,.8)}
.wz.done .wz-led{background:#22C55E;border-color:#15803D;box-shadow:0 0 10px rgba(34,197,94,.8);animation:wz-flash .9s steps(2) 2}
@keyframes wz-flash{50%{background:#E2E8F0;box-shadow:none}}
.wz-q h2,.wz-res h2{margin:0 0 6px;outline:none}
.wz-opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;margin-top:16px}
.wz-opt{display:flex;align-items:center;gap:12px;text-align:left;border:1.5px solid var(--line);background:var(--bg);border-radius:12px;padding:14px 16px;font:inherit;font-weight:600;cursor:pointer;color:var(--ink);transition:border-color .2s,background .2s,transform .15s}
.wz-opt i{flex:0 0 12px;height:12px;border-radius:50%;background:#CBD5E1;transition:background .2s,box-shadow .2s}
.wz-opt:hover,.wz-opt:focus-visible{border-color:var(--orange);background:#FFF7F1}
.wz-opt:hover i,.wz-opt:focus-visible i{background:#FDBA8C}
.wz-opt[aria-pressed=true],.wz-opt.pick{border-color:var(--orange);background:#FFF1E8}
.wz-opt[aria-pressed=true] i,.wz-opt.pick i{background:var(--orange);box-shadow:0 0 10px var(--orange)}
.wz-opt:active{transform:scale(.98)}
.wz-nav{display:flex;gap:10px;margin-top:18px}
.wz-in{animation:wz-in .4s var(--ease-shuttle) both}.wz-in-b{animation:wz-in-b .4s var(--ease-shuttle) both}
@keyframes wz-in{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:none}}
@keyframes wz-in-b{from{opacity:0;transform:translateX(-40px)}to{opacity:1;transform:none}}
.wz-res{border-left:4px solid var(--c);padding-left:18px}
.wz-res .route{display:flex;flex-wrap:wrap;gap:6px;list-style:none;padding:0;margin:12px 0 16px}
.wz-res .route li{background:var(--soft);border-radius:8px;padding:5px 10px;font-size:.88rem;animation:rise-l .4s var(--ease-shuttle) both;animation-delay:calc(var(--i)*80ms + .15s)}
.wz-res .route li+li::before{content:"→ ";color:var(--muted)}
.wz-res .route li.first{background:#FFF1E8;outline:2px solid var(--orange)}
.wz-first{background:var(--bg);border-radius:12px;padding:14px 16px;margin-bottom:14px}
.wz-first h3{margin:0 0 4px}.wz-first .fees{margin-bottom:0}
.wz-bundle{margin-bottom:10px}
.wz-why h4{margin:14px 0 8px}
.wz-all{margin-top:24px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:0 18px}
.wz-all summary{cursor:pointer;padding:14px 0;font-weight:600}
@media(max-width:600px){.wz{padding:18px}.wz-opts{grid-template-columns:1fr}.wz-res{padding-left:12px}}
/* Q2 multi-select checkboxes */
.wz-multi{border:0;padding:0;margin:16px 0 0}
.wz-check{position:relative}
.wz-check input{position:absolute;opacity:0;width:1px;height:1px}
.wz-check i{border-radius:4px}
.wz-check input:checked~i{background:var(--orange);box-shadow:0 0 10px var(--orange)}
.wz-check input:checked~i::after{content:"";display:block;width:4px;height:7px;margin:1px 0 0 4px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.wz-check:has(input:checked){border-color:var(--orange);background:#FFF1E8}
.wz-check:has(input:focus-visible){outline:3px solid var(--orange);outline-offset:2px}
.wz-go{display:flex;align-items:center;gap:12px;margin-top:16px}
.wz-go .btn[disabled]{opacity:.45;cursor:not-allowed}
.wz-also{margin-top:6px}.wz-also h4{margin:12px 0 6px}.wz-also ul{margin:0;padding-left:18px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
