:root{--ink:#0b1426;--ink-2:#121e35;--panel:#18263f;--line:#31435f;--text:#eef3fb;--muted:#a7b4c9;--gold:#ffc857;--gold-deep:#d9932a;--cyan:#5fe8ff;--danger:#ff9a80;--scale:1;color:var(--text);background:var(--ink);-webkit-tap-highlight-color:transparent;font-family:ui-rounded,SF Pro Rounded,Segoe UI,Roboto,system-ui,sans-serif}:root.large-text{--scale:1.18}*{box-sizing:border-box}html,body,#root{overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;height:100%;margin:0;overflow:hidden}body{background:radial-gradient(120% 70% at 50% 8%, #24375a 0%, transparent 62%), radial-gradient(90% 50% at 50% 100%, #1a2238 0%, transparent 70%), var(--ink)}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}button:focus-visible,input:focus-visible{outline-offset:2px;outline:3px solid #fff}h1,h2,p{margin:0}.app{position:fixed;inset:0}.stage{position:absolute;inset:0}.hud{z-index:1;max-width:560px;padding:max(10px, env(safe-area-inset-top)) 14px max(12px, env(safe-area-inset-bottom));pointer-events:none;flex-direction:column;align-items:center;gap:8px;margin:0 auto;display:flex;position:absolute;inset:0}.hud button{pointer-events:auto}.topbar{justify-content:space-between;align-items:center;gap:10px;width:100%;display:flex}.title{text-align:center;min-width:0}.title h1{font-size:calc(21px * var(--scale));letter-spacing:.01em;font-weight:750;line-height:1.1}.eyebrow{font-size:calc(11.5px * var(--scale));letter-spacing:.1em;text-transform:uppercase;color:var(--gold);font-weight:650;display:block}.iconbtn{border:1px solid var(--line);background:#18263fdb;border-radius:14px;flex:none;place-items:center;width:46px;height:46px;display:grid}.icon{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:22px;height:22px}.status{text-align:center;width:100%;min-height:2.5em;font-size:calc(15px * var(--scale));color:var(--text);justify-content:center;align-items:center;line-height:1.25;display:flex}.status-fail{color:var(--danger);font-weight:600}.board-slot{flex:1 1 0;width:100%;min-height:0}.inspect{z-index:2;text-align:left;border:1px solid var(--gold-deep);background:#101a2ef7;border-radius:14px;align-items:center;gap:12px;padding:12px;display:flex;position:absolute;bottom:196px;left:14px;right:14px;box-shadow:0 10px 30px #00000080}.inspect strong{font-size:calc(15px * var(--scale));display:block}.inspect span span{font-size:calc(13.5px * var(--scale));color:var(--muted);margin-top:2px;line-height:1.3;display:block}.tray{flex:none;justify-content:center;gap:10px;width:100%;display:flex}.part{border:2px solid var(--line);touch-action:none;background:linear-gradient(#1e2d49,#152238);border-radius:16px;flex:0 172px;align-items:center;gap:8px;min-width:0;height:62px;padding:7px 12px 7px 8px;display:flex;position:relative}.part-on{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset}.part:disabled{opacity:.45}.part canvas{pointer-events:none;flex:none}.part-name{font-size:calc(14px * var(--scale));text-overflow:ellipsis;font-weight:650;overflow:hidden}.count{font-size:calc(15px * var(--scale));color:var(--gold);margin-left:auto;font-weight:750}.controls{flex:none;grid-template-columns:1fr 1.7fr 1fr;gap:10px;width:100%;display:grid}.ctl{height:66px;font-size:calc(12.5px * var(--scale));border:1px solid var(--line);background:#18263fe6;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-weight:650;display:flex}.ctl:disabled{opacity:.4}.go{height:66px;font-size:calc(27px * var(--scale));letter-spacing:.06em;color:#2a1a02;background:linear-gradient(#ffe08f, var(--gold) 45%, #e8a02e);border:none;border-radius:18px;font-weight:850;box-shadow:0 5px #8a5a14,0 10px 22px #ffb43c47}.go:active{transform:translateY(3px);box-shadow:0 2px #8a5a14,0 5px 12px #ffb43c47}.go-stop{color:var(--text);background:linear-gradient(#3b4c6d,#26344f);box-shadow:0 5px #141d30}.sheet-wrap{z-index:3;padding:12px;padding-bottom:max(12px, env(safe-area-inset-bottom));background:#0509128c;justify-content:center;align-items:flex-end;display:flex;position:absolute;inset:0}.sheet-win{pointer-events:none;background:linear-gradient(#0000 40%,#050912a6)}.sheet-win .sheet{pointer-events:auto;animation:.3s cubic-bezier(.2,.9,.3,1.1) 1s backwards rise}.sheet{border:1px solid var(--line);border-top:2px solid var(--gold);background:var(--panel);border-radius:20px;width:100%;max-width:500px;max-height:88%;padding:18px;animation:.22s cubic-bezier(.2,.9,.3,1.1) rise;overflow-y:auto;box-shadow:0 20px 50px #0000008c}@keyframes rise{0%{opacity:0;transform:translateY(26px)}}.sheet h2{font-size:calc(23px * var(--scale));font-weight:800}.sheet>p{font-size:calc(14.5px * var(--scale));color:var(--muted);margin-top:8px;line-height:1.35}.sheet-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.marks{flex-wrap:wrap;gap:8px;display:flex}.mark{font-size:calc(13px * var(--scale));border:1px solid var(--line);color:var(--muted);border-radius:99px;align-items:center;gap:5px;padding:5px 11px;font-weight:650;display:inline-flex}.mark .icon{width:15px;height:15px}.mark-on{border-color:var(--gold);color:var(--gold)}.next{align-items:center;gap:14px;margin-top:14px;display:flex}.next strong{font-size:calc(18px * var(--scale))}.sheet-actions{grid-template-columns:1fr 1.4fr;gap:10px;margin-top:16px;display:grid}.primary,.ghost{min-height:54px;font-weight:750;font-size:calc(16px * var(--scale));border-radius:14px}.primary{color:#2a1a02;background:linear-gradient(#ffe08f, var(--gold) 50%, #e8a02e);border:none}.ghost{border:1px solid var(--line);background:0 0}.chapter{font-size:calc(15px * var(--scale));color:var(--gold);flex-direction:column;gap:2px;margin:18px 0 10px;font-weight:700;display:flex}.chapter small{font-size:calc(12.5px * var(--scale));color:var(--muted,#9fb0cf);font-weight:500}.levels{grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.level{width:100%;min-height:150px;font-size:calc(13.5px * var(--scale));border:1px solid var(--line);background:var(--ink-2);border-radius:14px;flex-direction:column;align-items:center;gap:5px;padding:10px 6px;font-weight:650;display:flex}.level:disabled{opacity:.5}.level:disabled canvas{filter:grayscale()brightness(.5)}.level-state{font-size:calc(12px * var(--scale));color:var(--gold);font-weight:600}.toggle{min-height:52px;font-size:calc(16px * var(--scale));border-bottom:1px solid var(--line);cursor:pointer;justify-content:space-between;align-items:center;display:flex}.toggle input{width:24px;height:24px;accent-color:var(--gold)}.fineprint{font-size:calc(13px * var(--scale))!important}.playtest{border-top:1px solid var(--line);margin-top:16px;padding-top:14px}.playtest h3{font-size:calc(16px * var(--scale));margin:0}.playtest textarea{resize:none;width:100%;color:inherit;border:1px solid var(--line);-webkit-user-select:text;user-select:text;-webkit-touch-callout:default;background:0 0;border-radius:8px;margin-top:8px;padding:8px;font:12px/1.4 ui-monospace,monospace;display:block}@media (max-height:620px){.status{min-height:2.4em;font-size:calc(13.5px * var(--scale))}.iconbtn{width:44px;height:44px}.part{height:54px}.ctl,.go{height:56px}.hud{gap:5px}}@media (orientation:landscape) and (max-height:560px){.hud{grid-template:"top board tray""status board tray"minmax(0,1fr)"status board controls"/1fr minmax(0,1.5fr) 1fr;align-items:stretch;column-gap:16px;max-width:none;display:grid}.topbar{grid-area:top}.status{grid-area:status;align-items:flex-start}.board-slot{grid-area:board}.tray{flex-direction:column;grid-area:tray;justify-content:center}.part{flex:none}.controls{grid-area:controls;grid-template-columns:1fr 1fr}.go{grid-area:1/1/auto/-1}.inspect{max-width:50%;bottom:12px;right:auto}}.reduced-motion .sheet,.reduced-motion .sheet-win .sheet{animation:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sheet:focus{outline:none}.parts-help{font-size:calc(13.5px * var(--scale));margin:10px 0 0}h3.parts-help{font-size:calc(15px * var(--scale))}dl.parts-help div{margin-top:6px}dl.parts-help dt{font-weight:700}dl.parts-help dd{color:var(--muted);margin:2px 0 0;line-height:1.3}
