:root{--bg: #0b0e15;--panel: #111725ee;--line: #26324a;--text: #e2e9f4;--dim: #8a96ad;--amber: #ffc24a;--ember: #ff7a34;--cyan: #57d7e8;--green: #5bd08a;--red: #ff5a4a;--mono: ui-monospace, "SF Mono", Menlo, monospace;--sans: system-ui, -apple-system, "Segoe UI", sans-serif;--safe-b: max(12px, env(safe-area-inset-bottom))}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font:13px/1.35 var(--sans);overflow:hidden}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}#stage{position:fixed;inset:0}#gl{width:100%;height:100%;display:block;touch-action:none}#labels{position:absolute;inset:0;pointer-events:none}#hud{position:fixed;inset:0;pointer-events:none}#hud>*{pointer-events:auto}.topbar{position:absolute;left:16px;right:16px;top:14px;display:flex;gap:8px;align-items:center;pointer-events:none!important}.topbar>*{pointer-events:auto}.topbar .grow{flex:1;pointer-events:none}.badge,.flag,.wallet,.chip,.race-h,.dock button,.skip{background:var(--panel);border:1px solid var(--line);border-radius:8px}.badge{display:flex;gap:10px;align-items:center;padding:7px 11px}.badge b{letter-spacing:.12em;font-size:12px}.mark{width:25px;height:25px;margin:-4px 0 -4px -3px;image-rendering:pixelated;border-radius:4px}.loading:not(:empty):before{content:"";display:block;width:100px;height:100px;margin:0 auto 16px;background:url(assets/brand/logo-sm.png) center / 100%;image-rendering:pixelated;border-radius:12px}.badge .proto{color:#111;background:var(--amber);font:700 10px/1 var(--mono);padding:4px 6px;border-radius:4px;letter-spacing:.08em}.flag,.wallet{padding:7px 11px;font:12px var(--mono);white-space:nowrap}.wallet{cursor:default}.wallet.act{cursor:pointer;border-color:var(--amber);color:var(--amber)}.wallet.warn{border-color:var(--ember);color:var(--ember)}.flag:hover,.chip:hover,.race-h:hover,.dock button:hover{border-color:var(--amber)}.chips{position:absolute;left:16px;top:54px;display:flex;gap:6px;max-width:calc(100vw - 350px)}.chip{padding:5px 9px;font:11px var(--mono);white-space:nowrap}.chip .short,.wallet .short{display:none}.chip.gem{color:var(--cyan)}.chip.mine{color:var(--amber)}.chip.plots{color:var(--green)}.race{position:absolute;right:16px;top:54px;width:300px;display:flex;flex-direction:column;align-items:stretch}.race-h{padding:5px 9px;font:700 10px var(--mono);letter-spacing:.12em;color:var(--dim);text-align:right}.race-b{margin-top:6px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:8px 10px;font:11px var(--mono);max-height:50vh;overflow:auto}.race-b h4{margin:8px 0 2px;font:700 10px var(--mono);letter-spacing:.14em;color:var(--dim)}.race-b h4:first-child{margin-top:0}.race-b p{margin:0 0 4px;font:11px/1.35 var(--sans);color:var(--dim)}.race-b .r{display:flex;width:100%;justify-content:space-between;align-items:center;gap:8px;padding:3px 0;text-align:left}.race-b .r:hover{color:var(--amber)}.race-b .st{color:var(--dim)}.race-b .st.risk{color:var(--ember)}.race-b .st.ruins{color:var(--red)}.race-s{margin-top:6px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:4px 10px;font:11px var(--mono)}.race-s:has(+.race-b:not([hidden])){display:none}.race-s .r{display:flex;width:100%;justify-content:space-between;align-items:center;gap:8px;padding:3px 0;text-align:left}.race-s .r:hover{color:var(--amber)}.race-s .st{color:var(--dim);width:30px;text-align:right}.race-s .bar{flex:1}.race-s .r:first-child span:first-child{color:var(--amber)}.lamps i{display:inline-block;width:6px;height:6px;margin-left:2px;border-radius:50%;background:#333a48}.lamps i.on{background:var(--amber);box-shadow:0 0 6px var(--amber)}.lamps i.out{background:var(--red)}.bar{width:70px;height:5px;background:#222a3a;border-radius:3px;overflow:hidden}.bar i{display:block;height:100%;background:var(--green)}.banner{position:absolute;left:50%;top:18%;transform:translate(-50%);font:700 15px var(--mono);letter-spacing:.22em;color:var(--amber);text-shadow:0 0 18px #ffb45a88;opacity:0;transition:opacity .6s;pointer-events:none!important;white-space:nowrap}.banner.on{opacity:1}.slam{position:absolute;left:50%;top:40%;transform:translate(-50%,-50%) scale(1.6);text-align:center;opacity:0;transition:transform .25s cubic-bezier(.2,1.6,.4,1),opacity .2s;pointer-events:none!important;white-space:nowrap}.slam b{display:block;font:800 34px var(--mono);letter-spacing:.12em;color:#fff;text-shadow:0 0 30px var(--amber)}.slam small{display:block;margin-top:6px;font:14px var(--sans);color:var(--text);text-shadow:0 1px 8px #000}.slam.on{opacity:1;transform:translate(-50%,-50%) scale(1)}.slam.top{top:13%}.slam.top b{font-size:22px;letter-spacing:.08em}.banner,#labels,.topbar,.chips,.race,.toasts,.dock,.sheet{transition:opacity .4s}body.hush .banner,body.hush #labels{opacity:0!important}body.hush .topbar,body.hush .chips,body.hush .race,body.hush .toasts,body.hush .dock{opacity:.12}body.hush .topbar>*,body.hush .chips,body.hush .race,body.hush .toasts,body.hush .dock,body.hush .sheet{pointer-events:none!important}body.hush .sheet,body.hush .hover{opacity:0}.card{position:absolute;left:50%;top:20%;transform:translate(-50%);min-width:300px;max-width:min(420px,calc(100vw - 24px));background:var(--panel);border:1px solid var(--line);border-top:3px solid var(--amber);border-radius:10px;padding:12px 16px;text-align:center;animation:in .3s ease-out}.card b{display:block;font:800 20px var(--mono);letter-spacing:.12em}.card.rare{border-top-color:var(--cyan)}.card.rare b{color:var(--cyan)}.card.legendary b{color:var(--amber);text-shadow:0 0 18px #ffb45a88}.card.caption{border-top-color:var(--line);background:#0b0e15cc}.card .sub{margin-top:4px;color:var(--text)}.card .acts{display:flex;gap:12px;justify-content:center;align-items:center;margin-top:10px}.card .more-text{margin-top:8px;color:var(--dim);text-align:left}.sheet{position:absolute;left:50%;bottom:16px;transform:translate(-50%);width:min(440px,calc(100vw - 24px));background:var(--panel);border:1px solid var(--line);border-top:3px solid var(--amber);border-radius:10px;padding:10px 12px}.sheet.failed{border-top-color:var(--red)}.sheet.done{border-top-color:var(--green)}.sheet .row{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.sheet .title,.sheet .amt,.sheet .pill{font:700 13px var(--mono);letter-spacing:.05em}.sheet .title,.sheet .pill{color:var(--amber)}.sheet.failed .title{color:var(--red)}.sheet.done .pill{color:var(--green)}.sheet .dim,.sheet .max{color:var(--dim)}.sheet .usd{font:12px var(--mono);color:var(--text);white-space:nowrap}.sheet .note{margin-top:4px}.sheet .note.gem{color:var(--cyan)}.sheet .note.warn{color:var(--amber)}.sheet .note.bad{color:var(--red)}.sheet .acts{display:flex;gap:8px;align-items:center;margin-top:9px}.sheet .max{margin-top:6px;font-size:11px}button.dig{background:var(--amber);color:#111;font:800 13px var(--mono);letter-spacing:.08em;border-radius:7px;padding:0 18px;height:36px}button.dig:disabled{background:#2a3142;color:var(--dim);cursor:default}button.sec{background:#222a3a;font:700 12px var(--mono);border-radius:7px;padding:0 12px;height:36px}button.more,button.link{color:var(--dim);font:12px var(--mono);text-decoration:underline;text-underline-offset:3px}.sheet .more{margin-left:auto}.sheet .details{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;margin-top:9px;padding-top:8px;border-top:1px solid var(--line);font:11px var(--mono);max-height:34vh;overflow:auto}.sheet .details .k{color:var(--dim)}.sheet .details .v{text-align:left}.sheet .pill+.dim{margin-top:2px}.sheet .main>.sec{margin-top:8px}.pop{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(440px,calc(100vw - 24px));max-height:80vh;overflow:auto;background:var(--panel);border:1px solid var(--line);border-top:3px solid var(--amber);border-radius:10px;padding:12px 14px}.pop .head,.race-b .head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.pop .head b,.race-b .head b{font:700 12px var(--mono);letter-spacing:.12em;color:var(--amber)}.pop .x,.race-b .x{font-size:20px;line-height:1;width:32px;height:32px;color:var(--dim)}.race-b .head{display:none}.pop p{margin:0 0 8px}.pop .opt{display:flex;width:100%;gap:10px;align-items:baseline;padding:8px 6px;border-radius:6px;font:12px var(--mono);text-align:left}.pop .opt:hover:not(:disabled){background:#222a3a}.pop .opt:disabled{color:var(--dim);cursor:default}.pop .opt.on{color:var(--amber)}.pop .opt small{font:11px var(--sans);color:var(--dim)}.pop .acts{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}.pop.camp{left:16px;top:auto;bottom:16px;transform:none;width:320px}.pop .prog{display:flex;align-items:center;gap:8px;margin:2px 0 10px;font:11px var(--mono)}.pop .prog .bar{flex:1;height:7px}.pop .prog .st{margin-left:auto;color:var(--dim)}.pop .foot{color:var(--dim);font:11px var(--mono);margin-top:8px}.tipbox{position:absolute;inset:0;z-index:5;pointer-events:none!important}.tip{position:absolute;transform:translate(-50%,calc(-100% - 14px));max-width:280px;background:#1b2436f5;border:1px solid var(--amber);border-radius:9px;padding:8px 11px;pointer-events:auto;animation:in .25s ease-out;box-shadow:0 6px 24px #0008}.tip.below{transform:translate(-50%)}.tip.centre{left:50%;top:96px;transform:translate(-50%)}.tip.bad{border-color:var(--red)}.tip .row{display:flex;justify-content:space-between;gap:18px;margin-top:6px}.tip .row button{color:var(--amber);font:700 11px var(--mono);padding:4px 0}.tip .row button+button{color:var(--dim)}.hover{position:absolute;background:#0b0e15e6;border:1px solid var(--line);border-radius:6px;padding:4px 8px;font:12px var(--mono);pointer-events:none!important;white-space:nowrap}.hover.bad{border-color:#7a2f2a;color:#ffb0a8}.hover.gem{color:var(--cyan)}.ghost{position:absolute;left:0;top:0;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;border:2px solid #fff;background:#ffffff38;box-shadow:0 0 14px #fff8;pointer-events:none!important;opacity:0}.toasts{position:absolute;left:16px;bottom:16px;display:flex;flex-direction:column;gap:6px;max-width:360px;pointer-events:none!important}.toast{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--cyan);border-radius:7px;padding:7px 10px;animation:in .25s ease-out;pointer-events:auto}.toast button{margin-left:10px;color:var(--amber);font:700 11px var(--mono);text-decoration:underline;text-underline-offset:3px}.toast.good{border-left-color:var(--green)}.toast.warn{border-left-color:var(--amber)}.toast.bad{border-left-color:var(--red)}.toast.rare{border-left-color:var(--cyan);color:var(--cyan)}.toast.legendary{border-left-color:var(--amber);color:var(--amber)}@keyframes in{0%{transform:translateY(8px);opacity:0}}.card{animation-name:card-in}@keyframes card-in{0%{opacity:0}}.tip{animation-name:tip-in}@keyframes tip-in{0%{opacity:0}}.dock{position:absolute;right:16px;bottom:16px;display:flex;gap:6px}.dock button{width:36px;height:36px;font:700 14px var(--mono);color:var(--dim)}.dock .d-race{display:none}.skip{position:absolute;right:16px;bottom:62px;padding:8px 14px;font:700 12px var(--mono);color:var(--amber)}.perf{position:absolute;left:16px;top:92px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:6px 9px;font:11px/1.5 var(--mono);white-space:pre}.loading{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:var(--dim);font:12px var(--mono);letter-spacing:.14em}.fatal{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);max-width:520px;background:var(--panel);border:1px solid var(--red);border-radius:8px;padding:14px 16px;font:13px var(--mono)}.label{font:700 10px var(--mono);color:var(--text);background:#0b0e15cc;border:1px solid var(--line);border-radius:5px;padding:3px 6px;white-space:nowrap;transform:translateY(-8px)}.label[data-ex]{pointer-events:auto;cursor:help}.label.camp{pointer-events:auto;cursor:pointer}.label.camp.lead{color:#fff;border-color:var(--amber)}.label .p{color:var(--green)}.label.city{border-color:var(--amber);color:var(--amber)}.label.plot{color:var(--green);border-color:#2e5a44}@media(pointer:coarse){.flag,.wallet,.chip,.race-h{min-height:36px}.dock button,button.sec,.tip .row button,.pop .opt,button.more{min-height:44px}.dock button{width:48px;height:48px}}@media(max-width:700px){.topbar{left:10px;right:10px;top:10px;gap:6px}.badge{padding:6px 8px}.badge b{display:none}.flag,.wallet{padding:6px 8px;font-size:11px}.chips{left:0;right:0;top:50px;max-width:none;padding:0 10px;overflow-x:auto;scrollbar-width:none}.chip .long,.wallet .long{display:none}.chip .short,.wallet .short{display:inline}.badge .proto{white-space:nowrap;font-size:9px}.banner{font-size:10px;letter-spacing:.1em;top:90px;background:#0b0e15cc;border:1px solid var(--line);border-radius:6px;padding:4px 8px;text-shadow:none}.slam b{font-size:20px;white-space:normal}.slam{white-space:normal;width:92vw}.slam.top b{font-size:17px}.sheet{left:0;right:0;bottom:0;transform:none;width:auto;border-radius:14px 14px 0 0;border-left:0;border-right:0;border-bottom:0;padding:12px 14px var(--safe-b)}.sheet .acts{flex-wrap:wrap}.sheet button.dig{flex:1 0 100%;height:52px;font-size:16px}.sheet button.sec{background:none;padding:0;text-decoration:underline;text-underline-offset:3px;color:var(--dim);min-height:44px}.sheet button.more{min-height:44px}.race{position:static;width:auto}.race-s,.dock .d-flag{display:none}.pop.camp{left:0;bottom:0;width:auto}.race-h{display:none}.race-b{position:absolute;left:0;right:0;bottom:0;margin:0;max-height:60vh;border-radius:14px 14px 0 0;border-top:3px solid var(--amber);padding:12px 14px var(--safe-b);font-size:12px}.race-b .r{min-height:40px}.race-b .head{display:flex}.race-b .x,.pop .x{width:44px;height:44px}.pop{inset:auto 0 0;transform:none;width:auto;border-radius:14px 14px 0 0;padding-bottom:var(--safe-b)}.toasts{inset:122px 10px auto;max-width:none;align-items:center}.toasts .toast:nth-last-child(n+3){display:none}.dock{left:10px;right:10px;bottom:var(--safe-b)}.dock button{height:48px;width:48px}.dock .d-race{display:block;width:auto;padding:0 14px;margin-right:auto;font-size:12px;color:var(--text)}.skip{bottom:calc(var(--safe-b) + 58px);right:10px;min-height:44px}.tip{max-width:min(280px,calc(100vw - 20px))}}[hidden]{display:none!important}@media(max-width:700px){.sheet:not([hidden])~.dock,.pop:not([hidden])~.dock,.race:has(.race-b:not([hidden]))~.dock{display:none}}a.more,a.foot{display:block;color:var(--dim);font:12px var(--mono);text-decoration:underline;text-underline-offset:3px}a.foot{font:11px/1.35 var(--sans);margin-top:6px}a.more:hover,a.foot:hover{color:var(--amber)}.pop .acts button.more{margin-right:6px}.how{background:var(--panel);border:1px solid var(--amber);border-radius:8px;padding:7px 11px;font:700 12px var(--mono);color:var(--amber);white-space:nowrap}.how:hover{background:#2a2416}body.demo.hush .topbar,body.tour .topbar{opacity:1}body.demo.hush .topbar>:not(.badge),body.tour .topbar>:not(.badge){opacity:.12;pointer-events:none!important;transition:opacity .4s}.offer{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(400px,calc(100vw - 24px));display:flex;flex-direction:column;gap:10px;background:var(--panel);border:1px solid var(--line);border-top:3px solid var(--amber);border-radius:10px;padding:16px;text-align:center;z-index:6;animation:card-in .4s}.offer b{font:700 13px var(--mono);letter-spacing:.12em;color:var(--amber)}.offer p{margin:0}.offer .foot{color:var(--dim);font-size:11px}.offer button{height:44px}.tourlist>.dig{width:100%;margin-bottom:6px;height:44px}.tourlist .opt{flex-direction:column;align-items:flex-start;gap:1px;padding:6px}.tourlist .opt span{white-space:pre;color:var(--text)}.tourbox{position:absolute;left:50%;bottom:16px;transform:translate(-50%);width:min(520px,calc(100vw - 24px));background:var(--panel);border:1px solid var(--line);border-top:3px solid var(--cyan);border-radius:10px;padding:10px 12px;z-index:6}.t-head{display:flex;align-items:center;gap:10px}.tourbox>b,.t-head b{font:700 11px var(--mono);letter-spacing:.1em;color:var(--cyan);white-space:nowrap}.t-dots{display:flex;gap:4px}.t-out{margin-left:auto}.t-dots i{width:7px;height:7px;border-radius:50%;background:#333a48}.t-dots i.done{background:var(--dim)}.t-dots i.on{background:var(--cyan);box-shadow:0 0 6px var(--cyan)}.t-bar{height:3px;margin:7px 0 8px;background:#222a3a;border-radius:2px;overflow:hidden}.t-bar i{display:block;height:100%;background:var(--cyan);transition:width .4s}.t-say{margin:0 0 3px;font-size:15px;line-height:1.3}.t-act{display:flex;align-items:center;gap:10px;min-height:36px;margin-top:8px}.t-act:empty{display:none}.t-ask{margin-right:auto;color:var(--amber);font:700 13px var(--mono)}.t-nav{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;padding-top:7px;border-top:1px solid var(--line)}.t-play.on{color:var(--cyan)}.pulse,body[data-ask=dig] .sheet .dig,body[data-ask=camp] .label.camp.lead{animation:pulse 1s ease-in-out infinite}@keyframes pulse{50%{box-shadow:0 0 0 7px #ffc24a50}}.veil{position:absolute;inset:0;background:var(--bg);opacity:0;transition:opacity .2s;pointer-events:none!important}.veil.on{opacity:1}body.tour .chips,body.tour .race,body.tour .banner,body.tour .skip{display:none}@media(prefers-reduced-motion:reduce){.veil,.t-bar i{transition:none}.pulse,body[data-ask] .sheet .dig,body[data-ask] .label.camp.lead{animation:none;outline:2px solid var(--amber);outline-offset:2px}}@media(max-width:700px){body.demo .topbar{flex-wrap:wrap;row-gap:6px}body.demo .flag{order:5}body.demo .badge .proto{font-size:12px;padding:5px 7px}.how{padding:6px 8px;font-size:11px;min-height:36px}body.demo .chips{top:96px}body.demo .banner{top:136px}body.demo .toasts{top:168px}.tourbox{left:10px;right:10px;bottom:calc(var(--safe-b) + 58px);transform:none;width:auto}.t-say{font-size:14px}.t-act,.t-act button,.t-nav button{min-height:44px}body.tour-over .t-nav,body.tour-over .t-dots{display:none}}.dock .snd.off{text-decoration:line-through;opacity:.55}@media(max-width:700px){.dock .d-race{min-width:0;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}
