*{box-sizing:border-box}button,input{font:inherit}:root{--bg-deep:#04060d;--bg-mid:#0a1224;--pcb-base-1:#0d3030;--pcb-base-2:#062626;--pcb-base-3:#03191b;--pcb-edge:#b4dcdc38;--line:#d6e2dc8c;--line-faint:#d6e2dc38;--line-shine:#ffffff38;--lamp-fill-1:#1a3838;--lamp-fill-2:#061514;--lamp-stroke:#dcf0eb8c;--lamp-text:#e8f0ea;--silk:#e8f6e8d1;--silk-faint:#e8f6e86b;--component:#e8f6e88c;--component-fill:#1432328c;--green:#4ade80;--green-soft:#86efac;--green-glow:#4ade808c;--amber:#fb923c;--amber-soft:#fdba74;--amber-glow:#fb923c99;--serif:"Cormorant Garamond", "Georgia", "Times New Roman", serif;--sans:"Inter", -apple-system, "Segoe UI", Roboto, sans-serif}html,body,#root{min-height:100vh;margin:0;padding:0}body{background-color:var(--bg-deep);color:var(--lamp-text);font-family:var(--sans);letter-spacing:.02em;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-weight:300;position:relative;overflow-x:hidden}body:before{content:"";pointer-events:none;z-index:0;background:radial-gradient(75% 55% at 50% -10%,#28828238,#0000 60%),radial-gradient(60% 60% at 50% 110%,#284c982e,#0000 60%),radial-gradient(50% 40%,#4882dc0d,#0000 70%);position:fixed;inset:0}body:after{content:"";pointer-events:none;z-index:0;background-image:radial-gradient(circle,#a0c8c812 1px,#0000 1.2px),radial-gradient(circle,#a0c8c80a 1px,#0000 1.2px);background-position:0 0,18px 18px;background-size:36px 36px,36px 36px;position:fixed;inset:0;-webkit-mask-image:radial-gradient(80% 70%,#000 30%,#0000 90%);mask-image:radial-gradient(80% 70%,#000 30%,#0000 90%)}#root{z-index:1;justify-content:center;align-items:center;display:flex;position:relative}.app{flex-direction:column;align-items:center;width:100%;max-width:100vw;padding:clamp(1.5rem,5vh,3.5rem) 0;display:flex}.board-stage{isolation:isolate;width:min(92vw,460px,61.4286vh);position:relative}.board-shadow{filter:blur(14px);z-index:0;pointer-events:none;background:radial-gradient(#0000008c 0%,#0000 70%);width:86%;height:38px;transition:opacity .18s,transform .18s;position:absolute;bottom:-28px;left:50%;transform:translate(-50%)}.board{--pcb-radius:clamp(14px, 3.4vw, 26px);--hole-size:clamp(8px, 1.6vw, 13px);--hole-offset:calc(var(--pcb-radius) - var(--hole-size) / 2);aspect-ratio:100/140;background:radial-gradient(ellipse 100% 60% at 50% -8%, #8cdcdc29, transparent 60%), radial-gradient(ellipse 90% 50% at 50% 110%, #0000008c, transparent 60%), radial-gradient(ellipse 50% 70% at 100% 30%, #00505066, transparent 60%), linear-gradient(165deg, var(--pcb-base-1) 0%, var(--pcb-base-2) 55%, var(--pcb-base-3) 100%);border-radius:var(--pcb-radius);border:1px solid var(--pcb-edge);z-index:1;width:100%;transition:transform .12s ease-out,box-shadow .12s ease-out;position:relative;box-shadow:0 36px 70px -22px #000000d1,0 8px 20px -4px #00000080,inset 0 1px #ffffff12,inset 0 -1px #0000008c,inset 0 0 0 1px #ffffff05}.board-surface{border-radius:inherit;pointer-events:none;mix-blend-mode:overlay;opacity:.7;background:repeating-linear-gradient(45deg,#ffffff04 0 1px,#0000 1px 5px),repeating-linear-gradient(-45deg,#00000012 0 1px,#0000 1px 7px),radial-gradient(60% 40% at 30% 70%,#8cdcdc0a,#0000 60%);position:absolute;inset:0}.board-sheen{border-radius:inherit;pointer-events:none;opacity:.75;background:linear-gradient(115deg,#0000 0%,#ffffff0a 38%,#ffffff16 50%,#ffffff05 62%,#0000 100%);position:absolute;inset:0}.board-mask{border-radius:inherit;pointer-events:none;background:radial-gradient(110% 90%,#0000 55%,#00000059 100%);position:absolute;inset:0}.board.pressing{transform:translateY(2px);box-shadow:0 20px 32px -14px #000000d1,0 4px 10px -2px #0000008c,inset 0 1px #ffffff0f,inset 0 -1px #0000008c}.board-stage:has(.board.pressing) .board-shadow{opacity:.7;transform:translate(-50%)scale(.94,.85)}.silkscreen{font-family:var(--sans);letter-spacing:.5em;color:var(--silk);text-shadow:0 0 1px #ffffff1f;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:3;text-transform:uppercase;font-weight:500;position:absolute}.silkscreen-title{letter-spacing:.42em;white-space:nowrap;font-size:clamp(.7rem,1.7vw,.95rem);top:1.6%;left:50%;transform:translate(-50%)}.silkscreen-brand{letter-spacing:.36em;color:var(--silk-faint);font-size:clamp(.4rem,.85vw,.52rem);bottom:1.6%;left:50%;transform:translate(-50%)}.mounting-hole{width:var(--hole-size);height:var(--hole-size);z-index:3;background:radial-gradient(circle at 35% 30%,#0a1010 0%,#02050a 80%);border-radius:50%;position:absolute;box-shadow:inset 0 1px 2px #000000d9,inset 0 -1px 1px #ffffff0a,0 0 0 1px #a0c8c838,0 0 0 2px #0006}.hole-tl{top:var(--hole-offset);left:var(--hole-offset)}.hole-tr{top:var(--hole-offset);right:var(--hole-offset)}.hole-bl{bottom:var(--hole-offset);left:var(--hole-offset)}.hole-br{bottom:var(--hole-offset);right:var(--hole-offset)}.board-lines{pointer-events:none;z-index:2;filter:drop-shadow(0 1px #0000008c);width:100%;height:100%;position:absolute;inset:0}.line{stroke:var(--line);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;fill:none}.line-highlight{stroke:var(--line-shine);stroke-width:.7px;stroke-linecap:round;fill:none;opacity:.85;transform:translateY(-.5px)}.line-active{stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;fill:none;stroke-dasharray:1 2;animation:.24s ease-out trace-sweep}.line-active.green{stroke:var(--green);filter:drop-shadow(0 0 4px var(--green-glow))}.line-active.amber{stroke:var(--amber);filter:drop-shadow(0 0 4px var(--amber-glow))}@keyframes trace-sweep{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}.antenna{fill:#d2e6e2d9;stroke:#d2e6e2e6;stroke-width:.4px;filter:drop-shadow(0 0 #0000);transition:filter .18s}.antenna .antenna-stem{stroke-width:.6px}.antenna.live{filter:drop-shadow(0 0 2.5px #86efacb3)}.antenna-base{fill:#a0c8c899}.vias circle{fill:#000000a6;stroke:#b4dcdc59;stroke-width:.3px}.component rect,.component circle,.component line{fill:var(--component-fill);stroke:var(--component);stroke-width:.35px;stroke-linecap:round}.component circle{fill:var(--component-fill)}.component-battery line{fill:none;stroke-width:.4px}.component-ic line{fill:none;stroke-width:.3px;stroke:var(--component)}.component-pin-mark,.speaker-dot{fill:var(--component);stroke:none}.component-speaker .speaker-wave{fill:none;stroke:var(--green-soft);stroke-width:.4px;opacity:0}.component-speaker.live .speaker-dot{fill:var(--green-soft);filter:drop-shadow(0 0 1.2px #86efacd9)}.component-speaker.live .wave-1{animation:1.1s ease-out infinite speaker-ripple}.component-speaker.live .wave-2{animation:1.1s ease-out .36s infinite speaker-ripple}.component-speaker.live .wave-3{animation:1.1s ease-out .72s infinite speaker-ripple}@keyframes speaker-ripple{0%{r:3.6;opacity:.78;stroke-width:.55px}60%{opacity:.32}to{r:13;opacity:0;stroke-width:.18px}}.component-label{fill:var(--silk-faint);font-family:var(--sans);letter-spacing:.3px;font-size:2.4px;font-weight:500}.lamp-group{z-index:4;position:absolute;transform:translate(-50%,-50%)}.lamp{background:radial-gradient(circle at 32% 28%, #ffffff14 0%, transparent 55%), radial-gradient(circle at 50% 60%, var(--lamp-fill-1) 0%, var(--lamp-fill-2) 100%);border:1px solid var(--lamp-stroke);transition:background .2s,border-color .2s,box-shadow .2s;display:block;position:relative;box-shadow:inset 0 1px 1px #ffffff14,inset 0 -1px 1px #0000008c,0 1px 3px #0000008c,0 0 0 1px #00000040}.lamp-shine{border-radius:inherit;pointer-events:none;opacity:.85;position:absolute}.lamp.circle .lamp-shine{background:radial-gradient(at 35% 35%,#ffffff8c 0%,#0000 70%);border-radius:50%;width:38%;height:30%;top:12%;left:18%}.lamp.square-horizontal .lamp-shine,.lamp.square-vertical .lamp-shine{background:linear-gradient(#fff6 0%,#0000 100%);border-radius:1.5px;width:76%;height:28%;top:12%;left:12%}.lamp-ring{border-radius:inherit;pointer-events:none;opacity:0;box-sizing:border-box;position:absolute;inset:0}.lamp.circle{border-radius:50%;width:clamp(20px,5.6vw,28px);height:clamp(20px,5.6vw,28px)}.lamp.square-horizontal{border-radius:2.5px;width:clamp(28px,7vw,38px);height:clamp(13px,3vw,18px)}.lamp.square-vertical{border-radius:2.5px;width:clamp(13px,3vw,18px);height:clamp(28px,7vw,38px)}.lamp.circle.active{background:radial-gradient(circle at 32% 28%, #fff9 0%, transparent 50%), radial-gradient(circle at 50% 60%, var(--green-soft) 0%, var(--green) 70%);box-shadow:0 0 14px var(--green-glow), 0 0 32px #4ade8073, inset 0 0 8px #ffffff73;border-color:#4ade80f2;animation:.28s cubic-bezier(.34,1.56,.64,1) lamp-pop}.lamp.square-horizontal.active,.lamp.square-vertical.active{background:radial-gradient(circle at 32% 28%, #fff9 0%, transparent 50%), radial-gradient(circle at 50% 60%, var(--amber-soft) 0%, var(--amber) 70%);box-shadow:0 0 14px var(--amber-glow), 0 0 32px #fb923c80, inset 0 0 8px #ffffff73;border-color:#fb923cf2;animation:.28s cubic-bezier(.34,1.56,.64,1) lamp-pop}.lamp.active .lamp-shine{opacity:1}.lamp.active .lamp-ring{opacity:1;border:1.5px solid var(--green);border-radius:inherit;animation:.62s ease-out lamp-ring}.lamp.square-horizontal.active .lamp-ring,.lamp.square-vertical.active .lamp-ring{border-color:var(--amber)}@keyframes lamp-pop{0%{transform:scale(.7)}60%{transform:scale(1.18)}to{transform:scale(1)}}@keyframes lamp-ring{0%{opacity:.85;transform:scale(.7)}80%{opacity:0;transform:scale(1.85)}to{opacity:0;transform:scale(1.85)}}.lamp-label{font-family:var(--sans);letter-spacing:.04em;color:var(--silk);white-space:nowrap;pointer-events:none;text-shadow:0 0 2px #000000d9,0 0 4px #000000a6;font-size:clamp(.55rem,1.5vw,.78rem);font-weight:600;transition:color .22s,text-shadow .22s;position:absolute}.lamp-label.above,.lamp-label.below{left:50%;transform:translate(-50%)}.lamp-label.below{margin-top:4px;top:100%}.lamp-label.above{margin-bottom:4px;bottom:100%}.lamp-label.left,.lamp-label.right{top:50%;transform:translateY(-50%)}.lamp-label.left{margin-right:5px;right:100%}.lamp-label.right{margin-left:5px;left:100%}.lamp-group.is-active .lamp-label{color:#fefce8}.lamp-group:has(.lamp.circle.active) .lamp-label{color:var(--green-soft);text-shadow:0 0 4px var(--green-glow), 0 0 8px #4ade8066, 0 0 2px #0009}:is(.lamp-group:has(.lamp.square-horizontal.active) .lamp-label,.lamp-group:has(.lamp.square-vertical.active) .lamp-label){color:var(--amber-soft);text-shadow:0 0 4px var(--amber-glow), 0 0 8px #fb923c66, 0 0 2px #0009}.press-key{appearance:none;color:#dcf0e6e6;width:clamp(58px,14vw,84px);height:clamp(58px,14vw,84px);font-family:var(--sans);letter-spacing:.18em;text-transform:uppercase;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:none;z-index:5;background:radial-gradient(circle at 35% 22%,#ffffff5c 0%,#0000 42%),radial-gradient(circle at 50% 70%,#3c645f8c,#143230f5),linear-gradient(#50787366,#14282899);border:1.5px solid #bedcd780;border-radius:50%;outline:none;font-size:clamp(.5rem,1.3vw,.62rem);font-weight:500;transition:transform .11s,box-shadow .22s,border-color .22s,background .22s;position:absolute;top:85.7%;left:50%;transform:translate(-50%,-50%);box-shadow:0 6px 14px #000000b3,0 0 0 1px #0006,inset 0 1px #ffffff38,inset 0 -2px 5px #0000008c}.press-key:before{content:"";pointer-events:none;background:radial-gradient(circle at 50% 105%,#ffffff14,#0000 55%);border-radius:50%;position:absolute;inset:6%;box-shadow:inset 0 0 0 1px #ffffff0f,inset 0 1px #ffffff1a}.press-key-text{z-index:1;place-items:center;display:inline-grid;position:relative}.press-key-label{white-space:nowrap;grid-area:1/1;transition:opacity .22s,transform .22s}.press-key-label.brand{letter-spacing:.1em;background:linear-gradient(135deg,#fb923c 0%,#fde68a 50%,#4ade80 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:.78em}.press-key-label.hidden{opacity:0;transform:translateY(3px)}.press-key:hover{border-color:#bedcd7bf}.press-key:focus-visible{border-color:#bedcd7eb;box-shadow:0 0 0 3px #4ade8052,0 6px 14px #000000b3,inset 0 1px #ffffff38}.press-key.pressing{color:#f5fff5f2;background:radial-gradient(circle at 35% 22%,#ffffff6b 0%,#0000 42%),radial-gradient(circle at 50% 60%,#4ade808c,#0f3c28f5);border-color:#4ade80f2;transform:translate(-50%,calc(2px - 50%));box-shadow:0 0 32px #4ade808c,0 1px 3px #0009,inset 0 0 18px #4ade8052,inset 0 1px #ffffff2e}.echo-layer{pointer-events:none;z-index:6;position:absolute;inset:0;overflow:visible}.letter-echo{font-family:var(--sans);letter-spacing:.04em;white-space:nowrap;pointer-events:none;-webkit-user-select:none;user-select:none;will-change:transform, opacity;font-size:clamp(.95rem,2.8vw,1.4rem);font-weight:700;animation:1.1s cubic-bezier(.22,.65,.3,1) forwards letter-echo;position:absolute;transform:translate(-50%,-50%)scale(1)}.letter-echo.tone-green{color:var(--green-soft);text-shadow:0 0 6px var(--green-glow), 0 0 16px #4ade8066, 0 0 2px #0009}.letter-echo.tone-amber{color:var(--amber-soft);text-shadow:0 0 6px var(--amber-glow), 0 0 16px #fb923c66, 0 0 2px #0009}@keyframes letter-echo{0%{opacity:0;transform:translate(-50%,-50%)scale(1)}16%{opacity:1;transform:translate(-50%,-50%)scale(1.45)}to{opacity:0;transform:translate(calc(-50% + var(--echo-tx,0px)), calc(-50% + var(--echo-ty,0px))) scale(2.8)}}@media (width<=480px){.app{padding:1.4rem 0}.silkscreen-title{letter-spacing:.3em}.silkscreen-brand{letter-spacing:.22em}.press-key{letter-spacing:.14em;font-size:.55rem}.lamp-label{font-size:.55rem}}@media (width<=360px){.lamp-label{font-size:.5rem}}body{transition:filter .52s cubic-bezier(.4,0,.2,1)}body:has(.app.boot-init){filter:brightness(.32)saturate(.55)}body:has(.app.boot-board){filter:brightness(.82)saturate(.88)}.board-stage{perspective:1200px;perspective-origin:50% 35%}.app.boot-init .board{opacity:0;transform:translateY(34px)rotateX(8deg)}.app.boot-init .board-shadow{opacity:0}.app.boot-board .board,.app.boot-silk .board,.app.boot-trace .board,.app.boot-ready .board{animation:.66s cubic-bezier(.2,.8,.2,1) both board-rise}.app.boot-board .board-shadow,.app.boot-silk .board-shadow,.app.boot-trace .board-shadow,.app.boot-ready .board-shadow{animation:.66s ease-out 80ms both board-shadow-fade}@keyframes board-rise{0%{opacity:0;transform:translateY(34px)rotateX(8deg)}60%{opacity:1}to{opacity:1;transform:translateY(0)rotateX(0)}}@keyframes board-shadow-fade{0%{opacity:0}to{opacity:1}}.app.boot-init .silkscreen,.app.boot-board .silkscreen,.app.boot-init .mounting-hole,.app.boot-board .mounting-hole,.app.boot-init .vias,.app.boot-board .vias,.app.boot-init .component,.app.boot-board .component{opacity:0}.app.boot-silk .silkscreen,.app.boot-trace .silkscreen,.app.boot-ready .silkscreen,.app.boot-silk .mounting-hole,.app.boot-trace .mounting-hole,.app.boot-ready .mounting-hole,.app.boot-silk .vias,.app.boot-trace .vias,.app.boot-ready .vias,.app.boot-silk .component,.app.boot-trace .component,.app.boot-ready .component{animation:.46s ease-out both silk-print}.app.boot-silk .silkscreen-brand,.app.boot-trace .silkscreen-brand,.app.boot-ready .silkscreen-brand{animation-delay:.12s}@keyframes silk-print{0%{opacity:0;filter:blur(1.4px)}to{opacity:1;filter:blur()}}.app.boot-init .line,.app.boot-init .line-highlight,.app.boot-board .line,.app.boot-board .line-highlight,.app.boot-silk .line,.app.boot-silk .line-highlight{opacity:0;stroke-dasharray:1;stroke-dashoffset:1px}.app.boot-trace .line,.app.boot-ready .line{stroke-dasharray:1;stroke-dashoffset:1px;opacity:0;animation:.36s ease-out forwards power-on-sweep;animation-delay:var(--trace-delay,0s)}.app.boot-trace .line-highlight,.app.boot-ready .line-highlight{stroke-dasharray:1;stroke-dashoffset:1px;opacity:0;animation:.36s ease-out forwards power-on-sweep;animation-delay:calc(var(--trace-delay,0s) + 80ms)}@keyframes power-on-sweep{0%{stroke-dashoffset:1px;opacity:0}18%{opacity:1}to{stroke-dashoffset:0;opacity:1}}.app.boot-trace .antenna{animation:.76s ease-out antenna-power-flash}@keyframes antenna-power-flash{0%{filter:drop-shadow(0 0 #4ade8000)}18%{filter:drop-shadow(0 0 7px #4ade80f2)}55%{filter:drop-shadow(0 0 3px #4ade8073)}to{filter:drop-shadow(0 0 #4ade8000)}}.app.boot-init .lamp-group,.app.boot-board .lamp-group,.app.boot-silk .lamp-group{opacity:0;transform:translate(-50%,-50%)scale(.6)}.app.boot-trace .lamp-group,.app.boot-ready .lamp-group{animation:.38s cubic-bezier(.34,1.45,.64,1) both lamp-power-in;animation-delay:calc(var(--lamp-delay,0s) + .22s)}@keyframes lamp-power-in{0%{opacity:0;transform:translate(-50%,-50%)scale(.6)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}.app.boot-init .press-key,.app.boot-board .press-key,.app.boot-silk .press-key,.app.boot-trace .press-key{opacity:0;pointer-events:none;cursor:default;transform:translate(-50%,-50%)scale(.4)}.app.boot-ready .press-key{animation:.54s cubic-bezier(.34,1.56,.64,1) both button-spring}@keyframes button-spring{0%{opacity:0;transform:translate(-50%,-50%)scale(.4)}60%{opacity:1;transform:translate(-50%,-50%)scale(1.06)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@media (prefers-reduced-motion:reduce){.line-active,.lamp.active,.lamp.active .lamp-ring,.component-speaker.live .speaker-wave{animation:none!important}.board{transition:none}body{filter:none!important}.app .board,.app .board-shadow,.app .silkscreen,.app .mounting-hole,.app .vias,.app .component,.app .line,.app .line-highlight,.app .lamp-group,.app .press-key,.app .antenna{stroke-dasharray:none;stroke-dashoffset:0;transform:none;opacity:1!important;animation:none!important}.app .lamp-group,.app .press-key{transform:translate(-50%,-50%)}.letter-echo{animation:1.1s ease-out forwards letter-echo-rm!important}}@keyframes letter-echo-rm{0%{opacity:0;transform:translate(-50%,-50%)scale(1.4)}20%{opacity:1;transform:translate(-50%,-50%)scale(1.6)}80%{opacity:1;transform:translate(-50%,-50%)scale(1.6)}to{opacity:0;transform:translate(-50%,-50%)scale(1.6)}}
