:root{--bg:#07090f;--bg-raised:#0c101a;--ink:#eef2f6;--ink-dim:#8a94a6;--line:#eef2f61a;--accent:#6366f1;--accent-soft:#6366f124;--accent-line:#6366f16b;--accent-glow:#6366f180;--stress-0:#34d399;--stress-1:#fbbf24;--stress-2:#ef4444;--m-deck:#cbd5e1;--m-wood:#c08552;--m-cable:#9aa4b8;--display:"Bricolage Grotesque", sans-serif;--serif:"Instrument Serif", serif;--game:"Fredoka", sans-serif;--mono:"Martian Mono", monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:radial-gradient(120% 90% at 80% -10%, #6366f11f, transparent 55%), var(--bg);color:var(--ink);font-family:var(--game);-webkit-font-smoothing:antialiased;overscroll-behavior:none}::selection{background:var(--accent);color:var(--bg)}button{cursor:pointer;font-family:inherit}.shell{flex-direction:column;max-width:1040px;min-height:100%;margin:0 auto;padding:0 16px;display:flex}.topbar{justify-content:space-between;align-items:center;padding:16px 2px 10px;display:flex}.wordmark{font-family:var(--mono);letter-spacing:.04em;font-size:15px;font-weight:700}.wordmark span{color:var(--accent)}.hud-name{font-family:var(--mono);color:var(--ink-dim);letter-spacing:.06em;font-size:12px}.linkbtn{color:var(--ink-dim);font-family:var(--mono);letter-spacing:.06em;background:0 0;border:none;font-size:12px;text-decoration:none}.linkbtn:hover{color:var(--ink)}.footer{font-family:var(--mono);color:var(--ink-dim);margin-top:auto;padding:14px 2px 20px;font-size:11px}.menu{padding:18px 2px}.kicker{font-family:var(--mono);letter-spacing:.2em;color:var(--accent);margin-bottom:12px;font-size:12px}.title{font-family:var(--display);margin:0 0 8px;font-size:clamp(34px,9vw,58px);font-weight:700;line-height:1.02}.title em{font-family:var(--serif);color:var(--accent);font-style:italic}.lede{color:var(--ink-dim);max-width:40ch;margin:0 0 26px;font-size:16px}.level-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;display:grid}.level-card{text-align:left;background:var(--bg-raised);border:1px solid var(--line);color:var(--ink);border-radius:16px;flex-direction:column;gap:8px;padding:16px;transition:transform .15s,border-color .15s,box-shadow .15s;display:flex;position:relative}.level-card:hover:not(:disabled){border-color:var(--accent-line);box-shadow:0 10px 30px -16px var(--accent-glow);transform:translateY(-2px)}.level-card.locked{opacity:.45;cursor:not-allowed}.level-num{font-family:var(--mono);color:var(--accent);font-size:12px}.level-name{font-size:17px;font-weight:600}.level-stars i{color:var(--line);font-size:15px;font-style:normal}.level-stars i.on{color:var(--stress-1)}.level-lock{font-size:13px;position:absolute;top:14px;right:14px}.sandbox-btn{text-align:left;background:var(--accent-soft);border:1px solid var(--accent-line);width:100%;color:var(--ink);border-radius:16px;align-items:center;gap:14px;margin-top:14px;padding:16px 18px;transition:transform .15s,box-shadow .15s;display:flex}.sandbox-btn:hover{box-shadow:0 10px 30px -16px var(--accent-glow);transform:translateY(-2px)}.sandbox-icon{font-size:24px}.sandbox-btn b{font-size:17px;display:block}.sandbox-btn small{color:var(--ink-dim);font-size:13px}.play{flex-direction:column;gap:12px;padding-bottom:18px;display:flex}.canvas-wrap{aspect-ratio:28/16;border:1px solid var(--line);background:var(--bg);border-radius:16px;width:100%;position:relative;overflow:hidden}.canvas-wrap canvas{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.canvas-hint,.canvas-tag{font-family:var(--mono);border:1px solid var(--line);color:var(--ink-dim);text-align:center;background:#07090fc7;border-radius:999px;max-width:90%;padding:7px 14px;font-size:12px;position:absolute;left:50%;transform:translate(-50%)}.canvas-hint{bottom:14px}.canvas-hint.warn{color:var(--stress-1);border-color:#fbbf2466}.canvas-tag{color:var(--accent);border-color:var(--accent-line);top:14px}.budgetbar{background:var(--bg-raised);border:1px solid var(--line);border-radius:999px;height:26px;position:relative;overflow:hidden}.budgetbar-fill{opacity:.4;transition:width .2s,background .2s;position:absolute;inset:0 auto 0 0}.budgetbar-label{font-family:var(--mono);color:var(--ink);justify-content:center;align-items:center;font-size:12px;display:flex;position:absolute;inset:0}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.materials{flex-wrap:wrap;gap:8px;display:flex}.mat{background:var(--bg-raised);border:1px solid var(--line);color:var(--ink);border-radius:12px;align-items:center;gap:7px;padding:9px 13px;font-size:14px;font-weight:500;display:inline-flex}.mat .mat-swatch{border-radius:3px;width:14px;height:8px}.mat-deck .mat-swatch{background:var(--m-deck)}.mat-wood .mat-swatch{background:var(--m-wood)}.mat-cable .mat-swatch{background:var(--m-cable);height:4px}.mat.sel{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), 0 8px 22px -14px var(--accent-glow)}.mat-del.sel{border-color:var(--stress-2);box-shadow:0 0 0 1px var(--stress-2)}.tools{align-items:center;gap:8px;display:flex}.btn{border:1px solid var(--line);background:var(--bg-raised);color:var(--ink);border-radius:12px;padding:11px 18px;font-size:15px;font-weight:600}.btn-primary{background:var(--accent);color:var(--bg);border-color:var(--accent)}.btn-primary:disabled{background:var(--bg-raised);color:var(--ink-dim);border-color:var(--line);cursor:not-allowed}.btn-ghost:hover{border-color:var(--accent-line)}.btn-icon{border:1px solid var(--line);background:var(--bg-raised);width:42px;height:42px;color:var(--ink);border-radius:12px;font-size:18px}.btn-icon:disabled{opacity:.4;cursor:not-allowed}.test-toolbar{justify-content:center}.backdrop{z-index:20;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#07090fb8;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--bg-raised);border:1px solid var(--accent-line);text-align:center;width:100%;max-width:380px;box-shadow:0 30px 80px -30px var(--accent-glow);border-radius:22px;padding:28px}.modal h2{font-family:var(--display);margin:0 0 12px;font-size:26px}.modal-lose{border-color:#ef444466}.modal-stars{letter-spacing:6px;margin:4px 0 10px;font-size:34px}.modal-stars span{color:var(--line)}.modal-stars span.on{color:var(--stress-1)}.modal-sub{color:var(--ink-dim);font-family:var(--mono);margin:0 0 18px;font-size:13px}.modal-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.tut-list{text-align:left;color:var(--ink-dim);margin:0 0 20px;padding-left:20px;line-height:1.5}.tut-list li{margin-bottom:8px}@media (prefers-reduced-motion:reduce){*{transition:none!important}}
