:root{--paper:#f9e6cf;--paper-2:#f6ca9f;--ink:#1c121c;--bark:#5d2c28;--sage:#5ac54f;--sage-2:#33984b;--amber:#ffc825;--blush:#f389f5;--sky:#0098dc;--night:#0e071b;--mono:ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace}html,body{background:var(--night);height:100%;margin:0;overflow:hidden}#game{position:fixed;inset:0}#game canvas{display:block}#ui{pointer-events:none;font-family:var(--mono);color:var(--ink);-webkit-font-smoothing:none;font-size:14px;line-height:1.4;position:fixed;inset:0}#ui *{box-sizing:border-box}#ui [hidden]{display:none!important}#ui :focus-visible{outline:2px solid var(--amber);outline-offset:2px}h1,h2{letter-spacing:0;margin:0;font-weight:700}h1{font-size:26px}h2{font-size:16px}p{margin:0}small{font-size:12px}.muted{color:#8a4836}.board{background:var(--paper);border:3px solid var(--bark);box-shadow:inset 0 0 0 2px #8a4836, 4px 4px 0 var(--night);pointer-events:auto;padding:10px 12px}.btn{font:inherit;color:var(--ink);background:var(--paper);border:2px solid var(--ink);box-shadow:2px 2px 0 var(--bark);cursor:pointer;pointer-events:auto;padding:6px 12px;font-weight:700}.btn:hover{background:var(--paper-2)}.btn:active{box-shadow:none;transform:translate(2px,2px)}.btn:disabled{opacity:.45;cursor:default;box-shadow:2px 2px 0 var(--bark);transform:none}.btn.primary{background:var(--sage);color:#fff}.btn.primary:hover{background:var(--sage-2)}.btn.small{padding:3px 8px;font-size:12px}.btn.ghost{box-shadow:none;background:0 0;border-color:#0000}.btn.ghost:hover{border-color:var(--ink)}.hud{gap:6px;width:240px;display:grid;position:absolute;top:16px;left:16px}.hud-row{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.hud-name{text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:700;overflow:hidden}.chip{border:2px solid var(--ink);background:var(--paper-2);padding:1px 6px;font-size:12px}.bar{border:2px solid var(--ink);background:var(--paper-2);height:16px;position:relative}.bar-fill{width:0;height:100%;transition:width .2s steps(6,end)}.hp .bar-fill{background:#ea323c}.hp.low .bar-fill{background:#ffa214}.xp .bar-fill,.land .bar-fill{background:var(--sky)}.land.settled .bar-fill{background:var(--sage)}.bar-text{color:var(--ink);justify-content:center;align-items:center;font-size:11px;font-weight:700;display:flex;position:absolute;inset:0}.hud-tokens{font-weight:700}.topright{justify-items:end;gap:6px;display:grid;position:absolute;top:16px;right:16px}.chip-board{padding:4px 10px;font-weight:700}.conn{color:#c7cfdd;font-size:12px}.conn.connected:before{content:"● ";color:var(--sage)}.conn.disconnected:before{content:"○ ";color:var(--amber)}.flags{flex-wrap:wrap;justify-content:flex-end;gap:4px;max-width:320px;display:flex}.menu{gap:6px;display:flex}.pill{border:2px solid var(--ink);background:var(--amber);color:var(--ink);white-space:nowrap;padding:1px 8px;font-size:12px}.pill.soft{background:var(--paper-2)}.pill.flag{background:var(--sky)}.pill.flag.demon_lord{background:var(--blush)}.pill.buff.speed{background:var(--sky)}.pill.buff.regen{background:var(--sage);color:#fff}.pill.buff.xp{background:var(--amber)}.buffs{gap:6px;display:flex;position:absolute;bottom:16px;left:16px}.hint{color:#c7cfdd;text-shadow:1px 1px 0 var(--bark);white-space:nowrap;font-size:12px;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.toasts{justify-items:center;gap:6px;display:grid;position:absolute;top:72px;left:50%;transform:translate(-50%)}.toast{background:var(--paper);border:2px solid var(--ink);box-shadow:3px 3px 0 var(--bark);opacity:0;padding:6px 12px;font-weight:700;transition:opacity .12s,transform .12s;transform:translateY(6px)}.toast.show{opacity:1;transform:none}.toast.reward{border-color:var(--sage-2)}.toast.levelup{background:var(--amber)}.toast.warn,.toast.error{background:var(--blush)}.panel{gap:10px;max-height:calc(100vh - 120px);display:grid;overflow:auto}.panel.dialogue{width:min(720px,100vw - 32px);position:absolute;bottom:40px;left:50%;transform:translate(-50%)}.panel.side{width:min(360px,100vw - 32px);position:absolute;top:140px;right:16px}.panel.plot{width:min(380px,100vw - 32px);max-height:calc(100vh - 180px);position:absolute;top:140px;right:16px}.catalog{gap:6px;display:grid}.catalog .row.active{outline:2px solid var(--amber);outline-offset:2px}.title-edit{gap:6px;display:flex}.title-edit input{font:inherit;border:2px solid var(--ink);flex:1;min-width:0;padding:4px 8px}.panel-head{align-items:center;gap:12px;display:flex}.panel-head h2{flex:1}.panel-head .btn{margin-left:auto}.dialogue-head .who{flex:1;gap:2px;display:grid}.portrait{width:48px;height:72px;image-rendering:pixelated;border:2px solid var(--ink);background:var(--sage);flex:none}.mood{color:#8a4836;font-size:12px}.mood.angry{color:#c42430}.mood.festive{color:#edab50}.tabs{border-bottom:2px solid var(--ink);gap:4px;display:flex}.tab{font:inherit;background:var(--paper-2);color:var(--ink);border:2px solid var(--ink);cursor:pointer;pointer-events:auto;border-bottom:none;padding:4px 12px;font-weight:700}.tab.active{background:var(--ink);color:var(--paper)}.panel-body{gap:8px;display:grid}.speech{max-width:60ch;padding:4px 2px;font-size:16px}.row{border-bottom:2px dotted var(--paper-2);grid-template-columns:auto 1fr auto;align-items:center;gap:8px 10px;padding:6px 0;display:grid}.row small{grid-column:1/-1}.row .grow{font-weight:700}.row.quest.complete .grow:before{content:"✓ ";color:var(--sage-2)}.icon{border:2px solid var(--ink);background:var(--paper-2);width:14px;height:14px;display:inline-block}.icon.coffee{background:#5d2c28}.icon.tea{background:#99e65f}.icon.beer{background:var(--amber)}.icon.pretzel{background:#bf6f4a}.icon.sandwich{background:#f68187}.icon.bread{background:#e69c69}.icon.bun{background:#bf6f4a}.icon.cake{background:#ffc825}.icon.apple{background:#ea323c}.icon.stew{background:#8a4836}.icon.nuts{background:#edab50}.icon.hat{background:#f6ca9f}.icon.fish{background:#0098dc}.icon.sword{background:#b4b4b4}.icon.spear{background:#8a4836}.icon.axe{background:#5d5d5d}.icon.shield{background:#bf6f4a}.icon.helm{background:#92a1b9}.icon.armour{background:#657392}.bar.lord{margin-top:2px}.hud .tracker{color:#c42430;margin-top:4px;font-size:11px;font-weight:700;line-height:14px}.hud .tracker.epic{color:#ed7614}.panel.travel{gap:8px;width:280px;display:grid;position:absolute;top:96px;left:50%;transform:translate(-50%)}.bar.lord .bar-text{text-align:left;white-space:nowrap;text-overflow:ellipsis;padding:0 4px;line-height:12px;display:block;overflow:hidden}.bar.lord[data-tone=calm] .bar-fill{background:var(--sage-2,#5ac54f)}.bar.lord[data-tone=reign] .bar-fill{background:#c42430}.bar.lord[data-tone=fight] .bar-fill{background:#ea323c}.bar.lord[data-tone=after] .bar-fill{background:#858585}.letters .letter-row{cursor:pointer}.letters pre{white-space:pre-wrap;font:inherit;margin:0}.letters .date{color:#8a4836;font-size:12px}.house .mode{flex-wrap:wrap;gap:6px;display:flex}.house .mode .btn.active{background:var(--amber)}.house .guest-add{gap:6px;display:flex}.house .guest-add input{font:inherit;border:2px solid var(--ink);background:#fff;flex:1;padding:6px 8px}.events{flex-wrap:wrap;justify-content:flex-end;gap:6px;max-width:360px;display:flex}.events[hidden]{display:none}.pill.event{background:var(--paper);border:2px solid var(--ink);box-shadow:3px 3px 0 var(--bark);padding:4px 8px;font-weight:700}.pill.event.festival{background:var(--amber)}.panel.minigame{gap:10px;width:260px;display:grid;position:absolute;bottom:48px;left:16px}.minigame .card{border:2px solid var(--ink);background:var(--paper-2);gap:6px;padding:8px;display:grid}.minigame .card h3{margin:0;font-size:15px}.minigame .card.bite{outline:3px solid var(--amber);animation:.3s steps(2,end) infinite bite}@keyframes bite{0%{outline-color:var(--amber)}to{outline-color:#0000}}.slideshow{z-index:50;pointer-events:auto;background:#0e071bd9;place-content:center;gap:12px;display:grid;position:absolute;inset:0}.slideshow canvas{width:min(90vw,640px);image-rendering:pixelated;border:3px solid var(--ink);box-shadow:8px 8px 0 var(--bark)}.slideshow .caption{max-width:640px;color:var(--paper);text-align:center;margin:0;font-size:18px}.slideshow .controls{justify-content:center;gap:8px;display:flex}.death{pointer-events:auto;background:#0e071bb3;place-items:center;display:grid;position:absolute;inset:0}.death-card{text-align:left;gap:10px;width:min(420px,100vw - 32px);display:grid}.login{pointer-events:auto;background:radial-gradient(ellipse at 50% 40%, #1e6f50 0%, var(--night) 70%);place-items:center;display:grid;position:absolute;inset:0}.login-card{background:var(--paper);border:2px solid var(--ink);width:min(400px,100vw - 32px);box-shadow:inset 0 0 0 2px var(--paper-2), 6px 6px 0 var(--bark);gap:12px;padding:20px;display:grid}.login-sub{color:#8a4836}.login-credit{color:#92a1b9;margin-top:12px;font-size:11px}.login-form{gap:8px;display:grid}.login-form input{font:inherit;border:2px solid var(--ink);background:#fff;padding:8px 10px}.login-details summary{cursor:pointer;font-weight:700}.login-details .login-form{margin-top:8px}.login-error{color:#c42430;font-weight:700}.login-error.ok{color:#33984b}.login-details.forgot{margin-top:8px}.landing{z-index:2;font-family:var(--mono);color:var(--paper);background:radial-gradient(ellipse at 50% 20%, #1e6f50 0%, var(--night) 60%) fixed, var(--night);font-size:15px;line-height:1.6;position:fixed;inset:0;overflow-y:auto}.landing[hidden]{display:none}.landing *{box-sizing:border-box}.landing :focus-visible{outline:2px solid var(--amber);outline-offset:2px}.landing-hero{text-align:center;place-content:center;justify-items:center;gap:12px;min-height:100vh;padding:32px 16px;display:grid}.landing-hero h1{color:var(--amber);text-shadow:3px 3px 0 var(--bark);font-size:44px}.landing-tagline{color:var(--paper-2);font-size:16px}.landing-hero .login-card{text-align:left;color:var(--ink);margin-top:8px}.landing-hero .login-card h2{font-size:20px}.landing-section{gap:10px;max-width:720px;margin:0 auto;padding:24px 16px;display:grid}.landing-section h2{color:var(--amber);font-size:20px}.landing-section h3{color:var(--paper-2);margin:10px 0 0;font-size:15px}.landing-section ol{gap:6px;margin:0;padding-left:22px;display:grid}.landing-more{color:var(--paper-2);margin-top:12px;font-size:13px}.landing-more:hover{color:var(--amber)}.landing-footer{color:#92a1b9;max-width:720px;margin:0 auto;padding:32px 16px 48px;font-size:12px}.landing-footer a{color:var(--paper-2)}@media (max-width:720px){.hud{width:180px}.hint{display:none}.panel.side{top:auto;bottom:16px}}@media (prefers-reduced-motion:reduce){.toast,.bar-fill,.btn{transition:none}}.wardrobe{z-index:30;width:min(360px,100vw - 32px);max-height:calc(100vh - 32px);position:absolute;top:50%;left:50%;overflow:auto;transform:translate(-50%,-50%)}.wardrobe-backdrop{z-index:29;pointer-events:auto;background:#0e071b8c;position:absolute;inset:0}.wardrobe-preview{border:2px solid var(--bark);background:#1a1932;justify-content:center;align-items:flex-end;min-height:168px;display:flex}.wardrobe-preview canvas{image-rendering:pixelated}.wardrobe-row{flex-wrap:nowrap;align-items:center;gap:6px;display:flex}.wardrobe-row .btn{flex:none;width:auto;padding:4px 10px}.wardrobe-row .grow{flex:auto}.wardrobe-value{text-align:center;min-width:120px;font-weight:700}.panel.account{gap:8px;width:320px;display:grid;position:absolute;top:96px;left:50%;transform:translate(-50%)}.panel.account .account-form{gap:8px;display:grid}.window-seat{background:var(--night);z-index:40;pointer-events:auto;grid-template-rows:1fr auto;display:grid;position:absolute;inset:0}.window-seat .ws-frame{place-items:center;min-height:0;display:grid;position:relative;overflow:hidden}.window-seat canvas{aspect-ratio:16/9;width:min(100vw,177.778vh - 99.5556px);height:auto;image-rendering:pixelated;cursor:pointer}.window-seat .ws-clock{background:var(--ink);color:var(--paper);border:2px solid var(--bark);padding:4px 8px;position:absolute;top:12px;left:16px}.window-seat .ws-bar{background:var(--ink);border-top:3px solid var(--bark);flex-wrap:wrap;align-items:center;gap:8px;padding:8px 16px;display:flex}.window-seat .ws-status{color:var(--paper-2);margin:0 auto 0 0}.window-seat .btn.ghost{color:var(--paper);border-color:var(--bark)}.window-seat .btn.ghost:hover{border-color:var(--paper-2)}
