:root{--ground:#1d2d3d;--panel:#182636e6;--panel-solid:#1d2d3d;--line:#ffffff29;--ink:#f4f7fb;--dim:#b9c6d6;--accent:#dac281;--accent-ink:#1d2d3d;--good:#7be0a4;--bad:#ff9d8a;--radius:14px;font-family:IBM Plex Sans,system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}html,body{background:var(--ground);height:100%;color:var(--ink);overscroll-behavior:none;margin:0;overflow:hidden}#app{position:fixed;inset:0}canvas#scene{touch-action:none;outline:none;width:100%;height:100%;display:block;position:absolute;inset:0}[hidden]{display:none!important}h1,h2,h3{margin:0;font-family:Chakra Petch,IBM Plex Sans,sans-serif}p{margin:0}button{font:inherit;color:inherit;cursor:pointer;border:1px solid var(--line);background:var(--panel);-webkit-tap-highlight-color:transparent;border-radius:12px;justify-content:center;align-items:center;gap:6px;min-height:44px;padding:8px 12px;display:inline-flex}button:hover{border-color:#fff6}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--accent);outline-offset:2px}button:disabled{opacity:.45;cursor:not-allowed}button.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:700}svg{flex:none}.hud{pointer-events:none;-webkit-user-select:none;user-select:none;flex-direction:column;font-size:15px;line-height:1.35;display:flex;position:absolute;inset:0}.hud>*{pointer-events:auto}.topbar{margin:calc(8px + env(safe-area-inset-top)) 8px 0;pointer-events:none;flex-wrap:wrap;align-items:stretch;gap:6px;display:flex}.topbar>*{pointer-events:auto}.chip{background:var(--panel);border:1px solid var(--line);border-radius:12px;align-items:center;gap:6px;min-height:40px;padding:5px 10px;display:flex}.chip-label{color:var(--dim);text-transform:uppercase;letter-spacing:.4px;font-size:12px}.chip b{font-variant-numeric:tabular-nums}.chip.bad{border-color:var(--bad)}.chip.bad b:after{content:" (short)";color:var(--bad);font-weight:600}.chip[data-key=save].bad b:after{content:""}.icon-btn{min-width:44px;padding:8px 10px}.icon-btn.close{position:absolute;top:10px;right:10px}.icon-btn.close .lbl{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.mid{flex:1;justify-content:space-between;align-items:flex-start;gap:8px;min-height:0;padding:8px;display:flex;pointer-events:none!important}.col{flex-direction:column;gap:8px;min-width:0;max-height:100%;display:flex;pointer-events:none!important}.col>*{pointer-events:auto}.col.right{flex:none;align-items:flex-end}.col.left{flex:0 auto}.mode{background:var(--panel);border:2px solid var(--accent);border-radius:16px;flex:none;gap:4px;padding:4px;display:flex}.mode-btn{background:0 0;border:0;border-radius:12px;min-width:96px;min-height:48px;font-family:Chakra Petch,sans-serif;font-size:18px;font-weight:700}.grant{background:var(--good);color:#10301f;border-color:var(--good);font-weight:700}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);max-width:min(330px,100vw - 16px);padding:12px 14px;position:relative}.panel h3{color:var(--accent);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px;font-size:15px}.objectives{max-height:40vh;overflow:auto}.objective{margin-bottom:8px}.objective p{color:var(--ink);margin:2px 0}.small{color:var(--dim);font-size:13px}.alert-title{margin-top:6px;color:var(--bad)!important}.alert{margin-bottom:4px;font-size:13.5px}.info{width:330px;max-height:48vh;padding-right:14px;overflow:auto}.info h3{padding-right:48px}.info dl{grid-template-columns:auto 1fr;gap:3px 12px;margin:8px 0;display:grid}.info dt{color:var(--dim)}.info dd{margin:0;font-weight:600}.info dd.ok:before{content:"OK: ";color:var(--good)}.info dd.bad{color:var(--bad)}.info dd.bad:before{content:"Problem: "}.problem{border-left:4px solid var(--bad);background:#ff9d8a1a;border-radius:0 10px 10px 0;margin:8px 0;padding:6px 10px}.btn-row{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.big{min-height:48px;padding:10px 16px;font-weight:600}.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.ghost{background:#ffffff0f}.bad.big{border-color:var(--bad);color:var(--bad)}.activity{border-color:var(--accent)}.activity p{margin-bottom:6px}.activity .progress{margin-bottom:8px;font-size:17px;display:block}.dock{padding:6px 8px calc(8px + env(safe-area-inset-bottom));pointer-events:none;flex-direction:column;gap:6px;display:flex;position:absolute;bottom:0;left:0;right:0}.dock>*{pointer-events:auto}.dock>.hint,.dock>.legend{pointer-events:none}.hint,.legend{background:var(--panel);border:1px solid var(--line);text-align:center;border-radius:12px;align-self:center;max-width:min(720px,100%);padding:7px 12px}.hint.bad{border-color:var(--bad);color:#ffe1da}.hint.bad:before{content:"Cannot build: ";color:var(--bad);font-weight:700}.legend{color:var(--dim);font-size:13px}.confirm{align-self:center;gap:8px;display:flex}.bar{flex-wrap:wrap;gap:6px 18px;display:flex;pointer-events:none!important}.bar>*{pointer-events:auto}.tools,.tabs{flex-wrap:wrap;gap:6px;display:flex}.tool{min-width:44px}.tab{min-width:84px;font-weight:600}.items{scrollbar-width:thin;gap:8px;padding-bottom:2px;display:flex;overflow-x:auto}.item{text-align:left;flex:none;grid-template-rows:auto auto 1fr;grid-template-columns:52px 1fr;align-items:start;column-gap:8px;width:150px;min-height:104px;padding:8px;display:grid}.item img{background:#ffffff14;border-radius:8px;grid-row:1/span 2;width:52px;height:52px}.item-name{font-weight:700;line-height:1.15}.item-cost{color:var(--accent);font-size:13px}.item-facts{color:var(--dim);grid-column:1/-1;font-size:12px;line-height:1.25}.item.on .item-cost,.item.on .item-facts{color:var(--accent-ink)}.item.short{opacity:.6}.item.locked{opacity:.55;border-style:dashed}.item.locked img{filter:grayscale()}.item.locked .item-cost{color:var(--dim);font-weight:700}.explore{pointer-events:none;position:absolute;inset:0}.explore>*{pointer-events:auto;position:absolute}.prompt{left:50%;bottom:calc(96px + env(safe-area-inset-bottom));background:var(--accent);color:var(--accent-ink);border-color:var(--accent);max-width:90vw;min-height:52px;padding:10px 22px;font-size:17px;font-weight:700;transform:translate(-50%)}.prompt:before{content:"E";border:2px solid;border-radius:6px;padding:0 7px;font-family:Chakra Petch,sans-serif}body.touch .prompt:before{content:"Tap"}.emotes{left:50%;bottom:calc(40px + env(safe-area-inset-bottom));gap:6px;display:flex;transform:translate(-50%)}.emote{min-width:68px}.keys{left:50%;bottom:calc(8px + env(safe-area-inset-bottom));color:var(--ink);white-space:nowrap;background:#182636bf;border-radius:10px;padding:4px 10px;font-size:12.5px;transform:translate(-50%)}.stuck{font-size:13px}.stick,.pad,body.touch .keys{display:none}body.touch .stick{left:calc(22px + env(safe-area-inset-left));bottom:calc(96px + env(safe-area-inset-bottom));touch-action:none;background:#1826368c;border:2px solid #ffffff59;border-radius:50%;width:132px;height:132px;display:block}.knob{pointer-events:none;background:#ffffffd9;border-radius:50%;width:56px;height:56px;margin:-28px;position:absolute;top:50%;left:50%}body.touch .pad{right:calc(18px + env(safe-area-inset-right));bottom:calc(96px + env(safe-area-inset-bottom));flex-direction:column;gap:10px;display:flex}.round{background:#182636bf;border:2px solid #fff6;border-radius:50%;width:76px;height:76px;font-weight:700}.round.jump{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.dialog{left:50%;bottom:calc(160px + env(safe-area-inset-bottom));color:#26323f;border:3px solid var(--accent);pointer-events:none;background:#fffdf5;border-radius:16px;width:min(520px,100vw - 24px);padding:12px 16px;position:absolute;transform:translate(-50%)}.dialog b{margin-bottom:2px;font-family:Chakra Petch,sans-serif;display:block}.dialog p{font-size:16.5px}.toasts{top:calc(112px + env(safe-area-inset-top));pointer-events:none;flex-direction:column;align-items:center;gap:6px;width:min(520px,100vw - 24px);display:flex;position:absolute;left:50%;transform:translate(-50%)}.toast{background:var(--panel-solid);border:1px solid var(--line);border-left:5px solid var(--dim);text-align:center;border-radius:12px;padding:8px 14px}.toast.good{border-left-color:var(--good)}.toast.bad{border-left-color:var(--bad)}.modal{z-index:10;background:#0a121c99;justify-content:center;align-items:center;padding:12px;display:flex;position:absolute;inset:0}.card{background:var(--panel-solid);border:1px solid var(--line);border-radius:20px;flex-direction:column;gap:10px;width:min(480px,100%);max-height:calc(100% - 8px);padding:22px;display:flex;position:relative;overflow:auto}.card h1{color:var(--accent);font-size:34px}.card h3{color:var(--accent);text-transform:uppercase;letter-spacing:.5px;margin-top:8px;font-size:14px}.lead{font-size:19px;font-weight:600}.row{justify-content:space-between;align-items:center;gap:12px;min-height:44px;display:flex}.row input[type=range]{width:50%;min-height:32px;accent-color:var(--accent)}.row input[type=checkbox]{width:26px;height:26px;accent-color:var(--accent)}.row select{font:inherit;min-height:44px;color:var(--ink);border:1px solid var(--line);background:#2a3d52;border-radius:10px;padding:6px 10px}.danger{flex-direction:column;gap:8px;margin-top:6px;display:flex}.lobby{border:1px solid var(--line);background:#ffffff0a;border-radius:14px;flex-direction:column;gap:8px;padding:12px;display:flex}.lobby h3{margin-top:0}.lobby .note{border-left:4px solid var(--accent);padding:4px 10px}.lobby input[type=text]{font:inherit;min-width:0;min-height:48px;color:var(--ink);border:1px solid var(--line);text-transform:uppercase;letter-spacing:2px;background:#2a3d52;border-radius:10px;flex:1;padding:6px 12px}.lobby .code{letter-spacing:4px;text-align:center;color:var(--accent);-webkit-user-select:all;user-select:all;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:28px}.members{flex-direction:column;gap:6px;display:flex}.member{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:4px 10px;padding-top:6px;display:flex}.member>span:first-child{flex:140px;font-weight:600}.member .mini,.lobby .row .mini{margin:0}.says{left:50%;bottom:calc(154px + env(safe-area-inset-bottom));flex-wrap:wrap;justify-content:center;gap:6px;width:min(640px,96vw);display:flex;transform:translate(-50%)}.say{padding:4px 10px;font-size:13px}.hud .explore .prompt{z-index:2}.about{border:1px solid var(--line);border-radius:14px;justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.about-text{flex-direction:column;gap:2px;display:flex}.about-links{margin-top:4px;font-size:13px}.about-links a{color:var(--accent);padding:12px 6px;display:inline-block}.about .mark{color:var(--dim);letter-spacing:1px;margin-top:4px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12px}.fps{z-index:20;background:#0009;border-radius:6px;padding:2px 6px;font:12px ui-monospace,monospace;position:absolute;bottom:8px;left:8px}@media (max-width:760px){.hud{font-size:14px}.topbar{gap:4px}.chip{gap:4px;min-height:34px;padding:3px 7px}.chip-label{display:none}.chip svg{width:16px;height:16px}.mode-btn{min-width:78px;font-size:16px}.mid{padding:6px}.objectives,.activity{max-height:30vh;padding:8px 10px;font-size:13px}.info{width:min(300px,60vw);max-height:34vh}.item{width:132px;min-height:96px}.tool .lbl{font-size:12px}.toasts{top:calc(150px + env(safe-area-inset-top))}}.panel-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.mini{background:#ffffff0f;min-width:56px;min-height:44px;margin:-6px -6px 0 0;padding:4px 10px;font-size:13px}@media (max-height:520px){.hud{font-size:13px}.topbar{scrollbar-width:none;margin-top:calc(4px + env(safe-area-inset-top));flex-wrap:nowrap;gap:4px;overflow-x:auto}.chip{flex:none;min-height:32px;padding:2px 8px}.chip-label{display:none}.topbar .icon-btn{flex:none}.mid{padding:4px 8px}.mode-btn{min-width:76px;min-height:44px;font-size:15px}.objectives,.activity{max-width:270px;max-height:38vh;padding:6px 10px;font-size:12.5px}.info{width:270px;max-height:40vh;font-size:12.5px}.dock{gap:4px;padding-top:2px}.bar{scrollbar-width:none;flex-wrap:nowrap;overflow-x:auto}.tools,.tabs{flex-wrap:nowrap;flex:none}.tool,.tab{flex:none}.item{grid-template-rows:auto auto;grid-template-columns:36px auto;width:auto;min-height:52px;padding:6px 10px}.item img{width:36px;height:36px}.item-facts{display:none}.hint,.legend{padding:4px 10px;font-size:12.5px}.prompt{bottom:calc(62px + env(safe-area-inset-bottom));min-height:46px;font-size:15px}.emotes{bottom:calc(8px + env(safe-area-inset-bottom))}body.touch .stick{bottom:calc(16px + env(safe-area-inset-bottom));width:120px;height:120px}body.touch .pad{bottom:calc(16px + env(safe-area-inset-bottom));flex-direction:row}.round{width:68px;height:68px}.dialog{bottom:calc(116px + env(safe-area-inset-bottom))}.toasts{top:calc(44px + env(safe-area-inset-top))}}@media (max-width:760px){.emote{min-width:60px}.tab{flex:auto;min-width:0}.toasts{top:auto;bottom:calc(260px + env(safe-area-inset-bottom))}}@media (prefers-reduced-motion:no-preference){.toast{animation:.2s ease-out pop}@keyframes pop{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}}
