:root{color-scheme:dark;--bg: #031018;--panel: rgba(8, 35, 45, .86);--panel-strong: rgba(11, 54, 68, .94);--line: rgba(112, 231, 236, .42);--line-dim: rgba(98, 171, 177, .22);--text: #d5fbff;--muted: #7eb9c0;--ok: #49ff5f;--warn: #ffbd43;--bad: #ff3d73;--accent: #37e7ff;--slot: #102a34;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden;background:radial-gradient(circle at 50% 18%,rgba(29,97,102,.22),transparent 34rem),linear-gradient(135deg,#020a11 0%,var(--bg) 46%,#06141c 100%);color:var(--text)}button{font:inherit}#game-root{position:fixed;top:0;right:0;bottom:0;left:0}#hud-root{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none}.hud{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:minmax(170px,19vw) 1fr minmax(170px,19vw);grid-template-rows:auto 1fr auto;gap:12px;padding:clamp(10px,1.6vw,18px)}.panel{border:1px solid var(--line);background:linear-gradient(180deg,var(--panel-strong),var(--panel));box-shadow:0 0 22px #2cdeff14,inset 0 0 22px #48e5ff0d}.topbar{grid-column:2;display:grid;grid-template-columns:1fr minmax(180px,28vw) 1fr;align-items:center;min-height:62px}.top-cell{height:100%;display:flex;align-items:center;justify-content:center;gap:10px;padding:9px 12px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:clamp(.68rem,1vw,.82rem)}.top-cell:last-child{justify-content:space-between;padding-inline:14px}.voltage-value{min-width:42px;text-align:center;color:var(--ok);font-size:clamp(1.45rem,2.4vw,2rem);font-weight:800;text-shadow:0 0 18px rgba(73,255,95,.7)}.voltage-value.is-logic{font-size:clamp(.95rem,1.7vw,1.35rem);letter-spacing:.08em}.meter{height:36px;display:flex;align-items:center;justify-content:center;gap:6px;border-inline:1px solid var(--line-dim)}.meter span{width:18px;height:26px;background:#49ff5f33;border:1px solid rgba(73,255,95,.34)}.meter span.is-on{background:var(--ok);box-shadow:0 0 16px #49ff5fcc}.side{grid-row:1 / 4;align-self:stretch;display:flex;flex-direction:column;min-height:0}.side.left{grid-column:1}.side.right{grid-column:3}.side-title{padding:14px 12px;border-bottom:1px solid var(--line);text-transform:uppercase;color:var(--text);font-size:.78rem;letter-spacing:.08em}.side-title-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.side-settings-btn{pointer-events:auto;min-height:28px;border:1px solid rgba(87,216,228,.35);background:#071920e6;color:var(--text);padding:4px 8px;cursor:pointer;text-transform:uppercase;letter-spacing:.06em;font-size:.62rem}.level-title{margin:10px 10px 0;padding:12px;border:1px solid var(--line-dim);color:var(--accent);font-weight:800}.inventory{display:grid;gap:10px;padding:12px 10px;overflow:auto}.inventory button,.controls button{pointer-events:auto;min-height:42px;border:1px solid rgba(87,216,228,.35);background:#071920e6;color:var(--text);display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;padding:8px 10px;cursor:pointer;transition:border-color .12s ease,color .12s ease,background .12s ease;position:relative}.inventory button:hover,.inventory button.is-selected,.controls button:hover{border-color:var(--accent);color:#fff;background:#13424ef5}.inventory button:disabled{opacity:.38;cursor:not-allowed}.chip-name{min-width:0;text-transform:uppercase;letter-spacing:.06em;font-size:.7rem;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inventory-hover-tooltip{position:absolute;left:0;top:0;width:220px;padding:10px 12px;border:1px solid rgba(87,216,228,.45);background:linear-gradient(180deg,#09242ef5,#061820f5);box-shadow:0 0 18px #37e7ff26,inset 0 0 16px #37e7ff14;color:var(--text);display:grid;gap:4px;text-align:left;opacity:1;visibility:visible;pointer-events:none;z-index:30}.inventory-hover-tooltip:before{content:"";position:absolute;left:-6px;top:50%;width:10px;height:10px;transform:translateY(-50%) rotate(45deg);background:#09242ef5;border-left:1px solid rgba(87,216,228,.45);border-bottom:1px solid rgba(87,216,228,.45)}.inventory-hover-tooltip strong{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--accent)}.inventory-hover-tooltip span{font-size:.72rem;color:var(--text);opacity:.9;line-height:1.3}.inventory-hover-tooltip em{font-style:normal;font-size:.68rem;color:var(--ok);opacity:.95}.inventory-hover-tooltip.is-hidden{opacity:0;visibility:hidden}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.item-visual{position:relative;width:92px;height:50px;display:inline-grid;place-items:center}.kind-icon{position:relative;width:80px;height:44px;border:2px solid rgba(112,231,236,.65);background:radial-gradient(circle at 50% 50%,rgba(73,255,95,.25),transparent 34%),linear-gradient(90deg,#163a36eb,#122b35eb);clip-path:polygon(14% 0,86% 0,100% 50%,86% 100%,14% 100%,0 50%);box-shadow:0 0 12px #49ff5f33,inset 0 0 16px #37e7ff2e}.kind-image{width:80px;height:46px;object-fit:contain;image-rendering:auto;filter:drop-shadow(0 0 6px rgba(73,255,95,.35))}.kind-icon:before,.kind-icon:after{content:"";position:absolute;left:12px;right:12px;top:50%;height:3px;background:#49ff5f;box-shadow:0 0 10px #49ff5fd1}.kind-icon:after{left:34px;right:auto;top:14px;width:12px;height:12px;border:2px solid rgba(216,255,222,.8);border-radius:50%;background:transparent}.kind-corner:before,.kind-splitter:before{left:22px;right:16px;top:23px;transform:rotate(-45deg);transform-origin:left center}.kind-splitter:after,.kind-junction:after{top:9px;left:37px;width:3px;height:24px;border:0;border-radius:0;background:#49ff5f}.kind-resistor,.kind-blocker{border-color:#ff3d7380;background:linear-gradient(90deg,#ff3d7333,#3c0c1c80)}.kind-resistor:after,.kind-blocker:after{border-radius:0;border:0;width:20px;height:2px;left:22px;top:16px;background:#ff3d73}.kind-amplifier,.kind-fuse{border-color:#49ff5f7a}.kind-amplifier:after{width:18px;height:18px;left:23px;top:8px;border-color:#d8ffdebf}.kind-andGate,.kind-orGate,.kind-notGate,.kind-xorGate{border-color:#d56dff80;background:linear-gradient(90deg,#d56dff24,#37e7ff14)}.count{min-width:28px;padding:4px 6px;border:1px solid var(--line);background:#90f4ff14;color:var(--ok);text-align:center;font-weight:800}.status{grid-column:2;grid-row:3;align-self:end;justify-self:center;min-width:min(760px,100%);padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px}.status-text{color:var(--muted);font-size:.86rem}.status-text.is-ok{color:var(--ok)}.status-text.is-warn{color:var(--warn)}.status-text.is-bad{color:var(--bad)}.controls{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.controls button{min-height:34px;grid-template-columns:1fr;text-transform:uppercase;letter-spacing:.06em;font-size:.72rem}.controls button:disabled{opacity:.35;cursor:not-allowed;border-color:#57d8e42e;color:#d5fbff80;background:#07192073}.toast{position:absolute;left:50%;top:18%;transform:translate(-50%);min-width:260px;padding:16px 20px;border:1px solid var(--ok);background:#051c16f0;color:var(--ok);text-align:center;text-transform:uppercase;letter-spacing:.1em;font-weight:900;opacity:0;pointer-events:none}.toast.is-visible{animation:toast-pop 1.3s ease both}.animation-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;pointer-events:none;opacity:0}.animation-overlay.is-active{animation:overlay-flash 1s ease both}.win-modal{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:radial-gradient(circle at 50% 42%,rgba(73,255,95,.14),transparent 45%),#020a10b8;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:12;pointer-events:auto}.win-modal.is-hidden{display:none}.confirm-modal{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#020a109e;z-index:14;pointer-events:auto}.confirm-modal.is-hidden{display:none}.confirm-card{width:min(500px,92vw);padding:24px 24px 20px;display:grid;gap:12px}.confirm-card h3{margin:0;color:var(--accent);text-transform:uppercase;letter-spacing:.1em}.confirm-card p{margin:0;color:var(--text);opacity:.9}.confirm-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.confirm-actions button{pointer-events:auto;min-height:36px;min-width:108px;border:1px solid rgba(87,216,228,.35);background:#071920e6;color:var(--text);padding:8px 12px;cursor:pointer;text-transform:uppercase;letter-spacing:.06em}.confirm-actions button.is-danger{border-color:#ffbd439e;color:#ffdca0;background:#2c1d07eb}.win-modal-card{position:relative;isolation:isolate;overflow:hidden;width:min(500px,92vw);padding:24px 24px 20px;display:grid;gap:12px;text-align:center;border:1px solid rgba(87,216,228,.7);background:linear-gradient(170deg,#0b2d3af2,#061820f2),linear-gradient(90deg,#37e7ff29,#49ff5f1f);box-shadow:0 0 46px #37e7ff33,0 0 18px #49ff5f33,inset 0 0 24px #37e7ff1f}.win-modal-card:before{content:"";position:absolute;top:8px;right:8px;bottom:8px;left:8px;border:1px solid rgba(112,231,236,.2);pointer-events:none}.win-modal-card:after{content:"";position:absolute;left:-40%;top:0;bottom:0;width:24%;background:linear-gradient(90deg,#37e7ff00,#37e7ff2e,#37e7ff00);transform:skew(-18deg);pointer-events:none;animation:win-sweep 2.6s ease-in-out infinite;z-index:-1}.win-badge{justify-self:center;padding:4px 10px;border:1px solid rgba(73,255,95,.44);background:#49ff5f1f;color:#b8ffbf;text-transform:uppercase;letter-spacing:.12em;font-size:.64rem;font-weight:700}.win-modal-card h3{margin:0;text-transform:uppercase;letter-spacing:.1em;color:var(--ok);font-size:clamp(1.1rem,2vw,1.45rem);text-shadow:0 0 20px rgba(73,255,95,.52)}.win-modal-card p{margin:0}.win-subtext{color:#d5fbffe0;font-size:.84rem;line-height:1.35}.win-time{justify-self:center;min-width:min(250px,84%);padding:10px 12px;border:1px solid rgba(87,216,228,.35);background:#04141bc7;color:var(--text);font-weight:700;letter-spacing:.08em;box-shadow:inset 0 0 14px #37e7ff1a}.win-actions{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}.win-actions button{pointer-events:auto;min-height:38px;min-width:108px;border:1px solid rgba(87,216,228,.35);background:#071920e6;color:var(--text);padding:8px 12px;cursor:pointer;text-transform:uppercase;letter-spacing:.06em;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease,background .12s ease}.win-actions button:hover,.win-actions button:focus-visible{transform:translateY(-1px);border-color:#70e7ecb8;box-shadow:0 0 14px #37e7ff3d;background:#103440f5}.win-actions button:focus-visible{outline:2px solid rgba(73,255,95,.45);outline-offset:1px}.win-actions .win-home{border-color:#ffbd4380;color:#ffd37f}.win-actions .win-home:hover,.win-actions .win-home:focus-visible{border-color:#ffbd43e0;box-shadow:0 0 14px #ffbd4340;background:#36230af0}.win-actions .win-next{border-color:#49ff5fa6;color:#c7ffcf;box-shadow:inset 0 0 10px #49ff5f1f}.win-actions .win-next:hover,.win-actions .win-next:focus-visible{border-color:#49ff5fe6;box-shadow:0 0 16px #49ff5f59,inset 0 0 12px #49ff5f2e;background:#0d331df5}.animation-core{width:min(420px,70vw);aspect-ratio:1;border:2px solid rgba(73,255,95,.74);background:radial-gradient(circle,rgba(73,255,95,.3),transparent 34%),conic-gradient(from 90deg,transparent,rgba(55,231,255,.32),transparent);clip-path:polygon(25% 5%,75% 5%,100% 50%,75% 95%,25% 95%,0 50%)}@keyframes toast-pop{0%{opacity:0;transform:translate(-50%,-10px) scale(.96)}14%,82%{opacity:1;transform:translate(-50%) scale(1)}to{opacity:0;transform:translate(-50%,-6px) scale(.98)}}@keyframes overlay-flash{0%,to{opacity:0}18%,72%{opacity:1}}@keyframes win-sweep{0%{left:-40%;opacity:0}18%,72%{opacity:1}to{left:116%;opacity:0}}@media (max-width: 860px){.hud{grid-template-columns:1fr;grid-template-rows:auto 1fr auto auto;padding:8px}.topbar{grid-column:1;grid-row:1;grid-template-columns:1fr 1.3fr 1fr;min-height:52px}.side{grid-row:auto;grid-column:1;max-height:118px}.side.left{grid-row:4}.side.right,.level-title,.side-title{display:none}.inventory{grid-auto-flow:column;grid-auto-columns:minmax(126px,1fr);overflow-x:auto;padding:8px}.status{grid-column:1;grid-row:3;min-width:0;width:100%;align-items:stretch;flex-direction:column}.controls{justify-content:stretch}.controls button{flex:1}.top-cell{padding:7px 6px}.inventory-hover-tooltip{width:min(220px,calc(100vw - 48px))}.inventory-hover-tooltip:before{left:22px;top:50%;transform:translateY(-50%) rotate(45deg);border-left:1px solid rgba(87,216,228,.45);border-bottom:1px solid rgba(87,216,228,.45)}.win-modal-card{width:min(420px,94vw);padding:20px 16px 16px;gap:10px}.win-actions button{flex:1;min-width:94px}.confirm-card{width:min(420px,94vw);padding:20px 16px 16px}.confirm-actions button{flex:1;min-width:90px}}.home-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;background:linear-gradient(180deg,#02090f9e,#02090fb8),var(--home-bg-image, none);background-size:cover;background-position:center;background-repeat:no-repeat}.home-title{font-size:clamp(2rem,6vw,4rem);letter-spacing:.2em;color:var(--accent);text-transform:uppercase}.home-tagline{color:var(--text);opacity:.7;animation:fadein 1.2s ease}.home-nav{display:flex;flex-direction:column;gap:12px;min-width:220px}.home-nav button,.overlay-card button,.level-select-header button{pointer-events:auto;min-height:48px;border:1px solid rgba(87,216,228,.35);background:#071920e6;color:var(--text);padding:10px 14px;cursor:pointer;text-transform:uppercase;letter-spacing:.06em;position:relative;overflow:hidden;transition:transform .14s ease,border-color .14s ease,box-shadow .18s ease,background .18s ease}.home-nav button:before{content:"";position:absolute;top:0;bottom:0;left:-45%;width:38%;background:linear-gradient(90deg,#37e7ff00,#49ff5f61,#37e7ff00);opacity:0;transform:skew(-20deg);pointer-events:none}.home-nav button:hover,.home-nav button:focus-visible{transform:translateY(-1px);border-color:#49ff5fbf;box-shadow:0 0 20px #49ff5f52,inset 0 0 18px #49ff5f24;background:#0a2834f2}.home-nav button:hover:before,.home-nav button:focus-visible:before{opacity:1;animation:home-current-flow 1.15s linear infinite}.home-nav button:focus-visible{outline:2px solid rgba(73,255,95,.65);outline-offset:2px}.home-version{color:var(--muted);font-size:.8rem}.boot-intro-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;background:#02070d}.boot-intro-overlay video{width:100vw;height:100vh;object-fit:cover}.settings-panel,.credits-panel{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;background:#031018e0}.settings-panel.is-hidden,.credits-panel.is-hidden{display:none}.overlay-card{width:min(480px,92vw);padding:20px;display:grid;gap:14px}.overlay-card h2{margin:0;color:var(--accent);text-transform:uppercase;letter-spacing:.08em}.toggle-row{display:flex;justify-content:space-between;align-items:center;color:var(--text)}.credits-list{margin:0;padding-left:20px;display:grid;gap:6px;color:var(--muted)}.level-select{position:fixed;top:0;right:0;bottom:0;left:0;overflow-y:auto;background:var(--bg);z-index:10}.level-select.is-hidden{display:none}.level-select-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid var(--line-dim)}.level-select-header h2{margin:0;text-transform:uppercase;letter-spacing:.08em;color:var(--accent)}.tier-group{padding:20px}.tier-label{text-transform:uppercase;letter-spacing:.1em;color:var(--accent);font-size:.82rem;margin-bottom:12px}.tier-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.level-card{border:1px solid var(--line);background:linear-gradient(180deg,var(--panel-strong),var(--panel));color:var(--text);padding:12px;display:flex;flex-direction:column;align-items:flex-start;gap:8px;cursor:pointer}.level-card.is-locked{opacity:.4;cursor:not-allowed}.level-number{font-size:.72rem;text-transform:uppercase;color:var(--muted)}.level-badge{visibility:hidden;color:var(--ok)}.level-card.is-complete .level-badge{visibility:visible}.level-stars{color:var(--warn);font-size:.72rem}@keyframes fadein{0%{opacity:0}to{opacity:.7}}@keyframes home-current-flow{0%{left:-45%}to{left:115%}}
