:root{--bg: #07080a;--glass: rgba(13, 15, 19, .74);--glass-strong: rgba(10, 12, 15, .9);--line: rgba(255, 255, 255, .09);--line-strong: rgba(255, 255, 255, .18);--text: #eeece6;--muted: #9097a0;--tan: #e4cd9e;--tan-deep: #b99a5d;--cyan: #7fd3ff;--green: #6fd39a;--radius: 16px;--font: "Segoe UI Variable Text", "Segoe UI", Inter, system-ui, -apple-system, sans-serif;--font-display: "Segoe UI Variable Display", "Segoe UI", Inter, system-ui, sans-serif;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:var(--font);font-size:13px;-webkit-font-smoothing:antialiased}#scene{position:fixed;inset:0;width:100%;height:100%;display:block;outline:none;touch-action:none}button{font:inherit;color:inherit}.muted{color:var(--muted)}.is-hidden,[hidden]{display:none!important}img:not([src]),img[src=""]{visibility:hidden}#loader{position:fixed;inset:0;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 40%,#171a20,#050608 70%);z-index:50;transition:opacity .8s ease,visibility .8s}#loader.done{opacity:0;visibility:hidden}.loader-inner{width:min(420px,86vw);text-align:center}.loader-kicker{letter-spacing:.28em;text-transform:uppercase;font-size:11px;color:var(--muted);margin-top:26px}.loader-title{font-family:var(--font-display);font-weight:200;font-size:64px;letter-spacing:.02em;margin:4px 0 26px}.loader-bar{height:3px;background:#ffffff14;border-radius:3px;overflow:hidden}#loaderFill{height:100%;width:0;background:linear-gradient(90deg,var(--tan-deep),var(--tan));transition:width .25s ease}.loader-text{margin-top:14px;color:var(--muted);font-size:12px;min-height:1.2em}.loader-bricks{display:flex;gap:6px;justify-content:center;height:34px;align-items:flex-end}.loader-bricks span{width:26px;height:14px;border-radius:3px;background:var(--tan);position:relative;animation:brickDrop 1.4s ease-in-out infinite}.loader-bricks span:before,.loader-bricks span:after{content:"";position:absolute;top:-4px;width:8px;height:4px;border-radius:2px 2px 0 0;background:inherit}.loader-bricks span:before{left:3px}.loader-bricks span:after{right:3px}.loader-bricks span:nth-child(2){animation-delay:.15s;background:#a0a5a9}.loader-bricks span:nth-child(3){animation-delay:.3s;background:#6c6e68}.loader-bricks span:nth-child(4){animation-delay:.45s;background:#f3f3ef}@keyframes brickDrop{0%,to{transform:translateY(0)}40%{transform:translateY(-16px)}60%{transform:translateY(0) scaleY(.9)}}#ui{position:fixed;inset:0;pointer-events:none;z-index:10}#ui>*{pointer-events:auto}#ui.ui-off>*:not(#timeline):not(#toast){opacity:0;pointer-events:none}#ui>*{transition:opacity .35s ease,transform .35s ease}#topbar{position:absolute;top:0;left:0;right:0;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:calc(16px + env(safe-area-inset-top,0px)) 18px 0;pointer-events:none}#topbar>*{pointer-events:auto}.brand{text-shadow:0 2px 14px rgba(0,0,0,.6);padding-left:4px}.brand-kicker{font-size:10.5px;letter-spacing:.3em;text-transform:uppercase;color:#ffffffb8}.brand-kicker sup{font-size:7px}.brand-title{font-family:var(--font-display);font-weight:200;font-size:38px;line-height:1.05;letter-spacing:.01em}.brand-sub{font-size:11.5px;color:#ffffff9e;margin-top:2px}.toolbar{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;max-width:72vw}.tool-group{display:flex;gap:2px;padding:4px;background:var(--glass);border:1px solid var(--line);border-radius:12px;backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3)}.tool-btn{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border:0;border-radius:8px;background:transparent;color:#ffffffc7;cursor:pointer;white-space:nowrap;font-size:12px;transition:background .2s,color .2s}.tool-btn:hover{background:#ffffff14;color:#fff}.tool-btn.active{background:#e4cd9e2e;color:var(--tan);box-shadow:inset 0 0 0 1px #e4cd9e59}.tool-btn .ico{font-size:14px;width:16px;text-align:center}.tool-range{display:inline-flex;align-items:center;gap:8px;padding:0 10px;color:#ffffffc7;font-size:12px}.tool-range input{width:84px;accent-color:var(--tan)}.panel{position:absolute;top:112px;bottom:124px;width:312px;display:flex;flex-direction:column;background:var(--glass);border:1px solid var(--line);border-radius:var(--radius);backdrop-filter:blur(18px) saturate(1.35);-webkit-backdrop-filter:blur(18px) saturate(1.35);box-shadow:0 20px 60px #00000059;overflow:hidden}#inventoryPanel{left:16px}#stepPanel{right:16px;width:340px;overflow-y:auto}.panel.collapsed#inventoryPanel{transform:translate(calc(-100% - 24px))}.panel.collapsed#stepPanel{transform:translate(calc(100% + 24px))}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;padding:14px 14px 8px 16px}.panel-kicker{font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}.panel-title{font-family:var(--font-display);font-size:19px;font-weight:300;margin-top:2px}.icon-btn{width:28px;height:28px;border-radius:8px;border:1px solid var(--line);background:#ffffff0a;cursor:pointer;font-size:16px;line-height:1}.icon-btn:hover{background:#ffffff1a}.reopen{position:absolute;top:112px;width:30px;height:64px;border-radius:10px;border:1px solid var(--line);background:var(--glass);backdrop-filter:blur(12px);cursor:pointer;font-size:16px;color:var(--tan)}#reopenInventory{left:10px}#reopenStep{right:10px}.inv-summary{display:flex;align-items:center;gap:12px;padding:4px 16px 10px}.inv-ring{position:relative;width:52px;height:52px}.inv-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.ring-bg{fill:none;stroke:#ffffff14;stroke-width:3}.ring-fg{fill:none;stroke:var(--tan);stroke-width:3;stroke-linecap:round;stroke-dasharray:97.4;stroke-dashoffset:97.4;transition:stroke-dashoffset .3s}.inv-ring span{position:absolute;inset:0;display:grid;place-items:center;font-size:11px;font-weight:600}.inv-big{font-family:var(--font-display);font-size:24px;font-weight:300}.inv-big small{font-size:13px;color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:5px;padding:0 14px 10px}.chip{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 9px;border-radius:20px;border:1px solid var(--line);background:#ffffff08;cursor:pointer;font-size:11px;color:#fffc}.chip i{width:10px;height:10px;border-radius:50%;box-shadow:inset 0 0 0 1px #ffffff40}.chip.active{border-color:#e4cd9e8c;background:#e4cd9e1f;color:var(--tan)}.inv-list{flex:1;overflow-y:auto;padding:0 8px 10px;scrollbar-width:thin}.inv-row{display:grid;grid-template-columns:46px 1fr auto;gap:10px;align-items:center;padding:6px 8px;border-radius:10px;cursor:pointer;position:relative;transition:background .2s}.inv-row:hover{background:#ffffff0f}.inv-row.pinned{background:#7fd3ff1a;box-shadow:inset 0 0 0 1px #7fd3ff59}.inv-row.flying{background:#e4cd9e1f}.inv-row.flying:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:3px;background:var(--tan)}.inv-row.complete .inv-count{color:var(--green)}.inv-row img{width:46px;height:46px;object-fit:contain}.inv-name{font-size:12.5px;line-height:1.25}.inv-id{font-size:10.5px;color:var(--muted);margin-top:2px;font-variant-numeric:tabular-nums}.inv-count{font-variant-numeric:tabular-nums;font-size:12px;text-align:right}.inv-count small{color:var(--muted)}.inv-bar{grid-column:2 / 4;height:2px;background:#ffffff12;border-radius:2px;overflow:hidden;margin-top:-2px}.inv-bar div{height:100%;width:0;background:var(--tan);transition:width .25s}.step-title{font-family:var(--font-display);font-weight:200;font-size:44px;line-height:1;margin-top:2px;font-variant-numeric:tabular-nums}.step-title small{font-size:16px;color:var(--muted);font-weight:300}.step-progress{height:2px;margin:4px 16px 12px;background:#ffffff14;border-radius:2px;overflow:hidden}#stepProgress{height:100%;width:0;background:linear-gradient(90deg,var(--tan-deep),var(--tan))}.callout{margin:0 14px 12px;border:1.5px solid rgba(255,255,255,.85);border-radius:14px;padding:10px 10px 8px;background:#0000008c}.callout-label{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}.callout-grid{display:flex;flex-wrap:wrap;gap:6px 10px;min-height:70px;align-items:flex-end}.callout-item{display:flex;flex-direction:column;align-items:center;min-width:58px;position:relative;transition:opacity .3s,transform .3s}.callout-item img{width:58px;height:58px;object-fit:contain;filter:drop-shadow(0 4px 8px rgba(0,0,0,.5))}.callout-item .qty{font-weight:700;font-size:13px;margin-top:-2px}.callout-item .qty small{font-weight:400;color:var(--muted);font-size:11px}.callout-item.done{opacity:.38}.callout-item.active{transform:translateY(-3px)}.callout-item.active img{filter:drop-shadow(0 0 10px rgba(228,205,158,.9))}.callout-item.active .qty{color:var(--tan)}.callout-sub{font-size:11px;color:var(--cyan);margin-top:6px}.piece-card,.selected-card{margin:0 14px 12px;padding:10px;border-radius:12px;border:1px solid var(--line);background:#ffffff08;display:grid;grid-template-columns:76px 1fr;gap:12px;align-items:center}.piece-card img,.selected-card img{width:76px;height:76px;object-fit:contain}.piece-state{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--tan)}.piece-state.flying{color:var(--tan)}.piece-state.stage{color:var(--cyan)}.piece-state.placed{color:var(--green)}.piece-name{font-size:14px;margin-top:3px;line-height:1.25}.piece-meta{font-size:11px;color:var(--muted);margin-top:4px;line-height:1.5;font-variant-numeric:tabular-nums}.piece-color{display:flex;align-items:center;gap:6px;font-size:11px;margin-top:4px;color:#fffc}.piece-color i{width:11px;height:11px;border-radius:3px;box-shadow:inset 0 0 0 1px #ffffff4d}.selected-card{display:block;border-color:#7fd3ff59;background:#7fd3ff0f}.selected-head{display:flex;justify-content:space-between;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--cyan);margin-bottom:6px}.selected-body{display:grid;grid-template-columns:76px 1fr;gap:12px;align-items:center}.link-btn{border:0;background:none;cursor:pointer;color:var(--muted)}.link-btn:hover{color:#fff}.pill-btn{margin-top:8px;height:26px;padding:0 12px;border-radius:14px;cursor:pointer;font-size:11.5px;border:1px solid rgba(127,211,255,.45);background:#7fd3ff1f;color:var(--cyan)}.pill-btn:hover{background:#7fd3ff38}.manual{margin:0 14px 14px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#000}.manual summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;padding:9px 12px;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:#fffc;background:#ffffff0a}.manual summary::-webkit-details-marker{display:none}.manual img{display:block;width:100%;height:auto;cursor:zoom-in}.manual-ref{display:grid;gap:4px;padding:14px 12px 16px;font-size:12px;line-height:1.5;color:var(--muted)}.manual-ref b{font-family:var(--font-display);font-size:20px;font-weight:300;color:var(--text)}.manual.zoom img{cursor:zoom-out}#timeline{position:absolute;left:16px;right:16px;bottom:calc(14px + env(safe-area-inset-bottom,0px));padding:10px 16px 12px;background:var(--glass);border:1px solid var(--line);border-radius:var(--radius);backdrop-filter:blur(18px) saturate(1.35);-webkit-backdrop-filter:blur(18px) saturate(1.35);box-shadow:0 20px 60px #00000059}.tl-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.tl-buttons{display:flex;gap:3px;align-items:center}.tl-btn{width:34px;height:30px;border:0;border-radius:8px;background:transparent;cursor:pointer;color:#ffffffd1;font-size:13px;transition:background .2s}.tl-btn:hover{background:#ffffff17;color:#fff}#btnPrevPiece{transform:scaleX(1)}.tl-play{width:42px;height:36px;border-radius:12px;font-size:15px;background:var(--tan);color:#1b1710;margin:0 4px}.tl-play:hover{background:#f0dcb0;color:#1b1710}.tl-status{flex:1;text-align:center;font-size:12.5px;color:#ffffffdb;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tl-status b{color:var(--tan);font-weight:600}.tl-right{display:flex;align-items:center;gap:14px}.tl-speed{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:11.5px}.tl-speed select{background:#ffffff0f;color:var(--text);border:1px solid var(--line);border-radius:8px;height:26px;padding:0 6px;font:inherit}.tl-time{font-variant-numeric:tabular-nums;color:var(--muted);font-size:12px;min-width:88px;text-align:right}.scrubber{position:relative;height:30px;margin-top:8px;cursor:pointer;outline:none}.scrub-phases{position:absolute;left:0;right:0;top:0;height:12px}.scrub-phase{position:absolute;top:0;height:12px;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:#ffffff73;white-space:nowrap;overflow:hidden;border-left:1px solid rgba(255,255,255,.14);padding-left:5px;line-height:12px}.scrub-track{position:absolute;left:0;right:0;top:17px;height:6px;border-radius:6px;background:#ffffff14;overflow:hidden}.scrub-fill{height:100%;width:0;background:linear-gradient(90deg,#8f7a4f,var(--tan))}.scrub-ticks{position:absolute;left:0;right:0;top:15px;height:10px;pointer-events:none}.scrub-ticks i{position:absolute;top:0;width:1px;height:10px;background:#ffffff38}.scrub-ticks i.major{background:#ffffff73}.scrub-thumb{position:absolute;top:12px;width:16px;height:16px;margin-left:-8px;border-radius:50%;background:#fff;box-shadow:0 0 0 4px #e4cd9e59,0 4px 10px #00000080;pointer-events:none}.scrub-hover{position:absolute;bottom:36px;transform:translate(-50%);padding:5px 9px;border-radius:8px;background:var(--glass-strong);border:1px solid var(--line);font-size:11.5px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s}.scrubber:hover .scrub-hover{opacity:1}#tooltip{position:absolute;pointer-events:none;padding:8px 10px;border-radius:10px;background:var(--glass-strong);border:1px solid var(--line-strong);font-size:12px;line-height:1.45;opacity:0;transform:translate(14px,14px);transition:opacity .12s;max-width:260px;z-index:30}#tooltip.show{opacity:1}#tooltip b{font-weight:600}#tooltip .tt-meta{color:var(--muted);font-size:11px}.fact{position:absolute;left:50%;top:110px;transform:translate(-50%,-12px);opacity:0;max-width:min(520px,60vw);padding:12px 16px;border-radius:14px;pointer-events:none;background:var(--glass-strong);border:1px solid rgba(228,205,158,.3);box-shadow:0 16px 40px #0006}.fact.show{opacity:1;transform:translate(-50%)}.fact-title{font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--tan);margin-bottom:4px}.fact-text{font-size:13px;line-height:1.5;color:#ffffffe6}#toast{position:absolute;left:50%;bottom:140px;transform:translate(-50%,20px);opacity:0;padding:14px 22px;border-radius:16px;text-align:center;pointer-events:none;background:var(--glass-strong);border:1px solid rgba(228,205,158,.45);box-shadow:0 20px 50px #00000080}#toast.show{opacity:1;transform:translate(-50%)}#toast .t-big{font-family:var(--font-display);font-size:26px;font-weight:300;color:var(--tan)}#toast .t-small{color:var(--muted);font-size:12px;margin-top:2px}.modal{position:absolute;inset:0;display:grid;place-items:center;background:#00000073;z-index:40}.modal-card{width:min(560px,92vw);max-height:86vh;overflow:auto;padding:18px 20px;border-radius:18px;background:var(--glass-strong);border:1px solid var(--line-strong);backdrop-filter:blur(20px)}.modal-head{display:flex;justify-content:space-between;font-family:var(--font-display);font-size:20px;font-weight:300;margin-bottom:12px}.help-grid{display:grid;grid-template-columns:140px 1fr;gap:7px 12px;align-items:center}.help-sub{margin:16px 0 8px;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--tan)}kbd{display:inline-block;padding:3px 7px;border-radius:6px;font:11px/1.3 var(--font);border:1px solid var(--line-strong);background:#ffffff0f;justify-self:start}.help-note{margin-top:16px;font-size:11px;color:var(--muted);line-height:1.5}@media(max-width:1180px){.tool-btn .lbl{display:none}.panel{width:280px}#stepPanel{width:300px}}@media(max-width:820px){#topbar{flex-direction:column;align-items:stretch;gap:8px;padding:calc(10px + env(safe-area-inset-top,0px)) 16px 0}.brand-title{font-size:26px}.brand-sub{display:none}.toolbar{max-width:none;flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}.tool-group{flex:none}.panel,#stepPanel{top:auto;left:16px;right:16px;width:auto;bottom:calc(112px + env(safe-area-inset-bottom,0px));height:36vh}.reopen{top:auto;bottom:calc(112px + env(safe-area-inset-bottom,0px));height:44px}#reopenInventory{left:16px}#reopenStep{right:16px}#timeline{padding:8px 12px 10px}.tl-btn{width:30px}#btnStart,#btnEnd,.tl-speed,.tl-status{display:none}.tl-time{min-width:0}.fact{top:128px;max-width:calc(100vw - 32px)}}#picker{position:fixed;inset:0;z-index:45;overflow-y:auto;padding:calc(40px + env(safe-area-inset-top,0px)) 16px calc(40px + env(safe-area-inset-bottom,0px));background:radial-gradient(ellipse at 50% 30%,#1a1d24,#050608 72%)}.picker-inner{width:min(980px,100%);margin:0 auto;text-align:center}.picker-title{font-family:var(--font-display);font-weight:200;font-size:clamp(36px,7vw,56px);margin:8px 0 10px;text-wrap:balance}.picker-sub{color:var(--muted);margin:0 auto 30px;max-width:52ch;line-height:1.55}.picker-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,320px));justify-content:center;gap:16px;text-align:left}.set-card{display:grid;grid-template-rows:auto 1fr;padding:0;overflow:hidden;cursor:pointer;text-align:left;border:1px solid var(--line);border-radius:16px;background:var(--glass);color:inherit;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.set-card:hover,.set-card:focus-visible{transform:translateY(-3px);border-color:var(--line-strong);box-shadow:0 18px 40px #00000073;outline:none}.set-cover{aspect-ratio:16 / 10;max-width:100%;background:linear-gradient(135deg,#15181e,#0a0b0e) center 68% / cover no-repeat;border-bottom:3px solid var(--accent, var(--tan))}.set-body{display:grid;gap:4px;padding:14px 16px 16px}.set-num{font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}.set-name{font-family:var(--font-display);font-size:24px;font-weight:300}.set-facts{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.picker-foot{margin:36px auto 0;max-width:70ch;font-size:11.5px;line-height:1.7;color:var(--muted);text-wrap:balance}.picker-foot a{color:inherit;text-decoration:underline;text-decoration-color:#ffffff40;text-underline-offset:2px}.picker-foot a:hover{color:var(--text, #f3ecdf)}@media(prefers-reduced-motion:reduce){.set-card{transition:none}}
