:root{--ink:#1d3a5f;--ink-soft:#4a6585;--paper:#fff;--paper-2:#eef7ff;--sky:#3d9bff;--sun:#ffd23f;--sun-ink:#5a4100;--leaf:#4caf3a;--danger:#e2483d;--shadow:0 6px 0 #1d3a5f40;--radius:18px;--font:"Fredoka", "Trebuchet MS", system-ui, sans-serif}*{box-sizing:border-box}html,body{height:100%;color:var(--ink);font:16px/1.4 var(--font);background:#cdeeff;margin:0;overflow:hidden}#view{width:100%;height:100%;display:block;position:fixed;inset:0}[hidden]{display:none!important}button{font:inherit;cursor:pointer}input{font:inherit}:focus-visible{outline:3px solid var(--sun);outline-offset:2px}.overlay{background:#3d9bff2e;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.card{background:var(--paper);border:3px solid var(--ink);border-radius:var(--radius);width:min(420px,100%);box-shadow:var(--shadow);gap:14px;padding:28px;display:grid}.card.small{text-align:center;width:min(340px,100%)}h1,.brand{letter-spacing:-.01em;margin:0;font-weight:700}h1{font-size:40px;line-height:1}h1 span,.brand span{color:var(--sky)}h2{margin:0;font-size:26px}.sub{color:var(--ink-soft);margin:0}.field{gap:6px;font-weight:600;display:grid}.card input{border:3px solid var(--ink);background:var(--paper-2);width:100%;color:var(--ink);border-radius:12px;padding:10px 14px}.card button{border:3px solid var(--ink);background:var(--paper);color:var(--ink);box-shadow:0 4px 0 var(--ink);border-radius:12px;padding:11px 18px;font-weight:600;transition:transform 60ms,box-shadow 60ms}.card button:active{box-shadow:0 1px 0 var(--ink);transform:translateY(3px)}.card button.primary{background:var(--sun);color:var(--sun-ink)}.card button:disabled{opacity:.6;cursor:default}.join{grid-template-columns:1fr auto;gap:10px;display:grid}#code{text-transform:uppercase;letter-spacing:.3em;text-align:center;font-weight:700}.error{min-height:1.4em;color:var(--danger);margin:0;font-weight:600}#hud{pointer-events:none;position:fixed;inset:0}#hud>*{pointer-events:auto}.panel,#hud-top,#hud-stats .stat,#players{border:3px solid var(--ink);box-shadow:var(--shadow);background:#ffffffeb;border-radius:14px}#hud-top{gap:2px;padding:10px 16px;display:grid;position:absolute;top:16px;left:16px}.brand{font-size:22px}.world b{letter-spacing:.15em}button.link{color:var(--sky);background:0 0;border:0;padding:0 0 0 6px;font-weight:600;text-decoration:underline}#hud-stats{gap:10px;display:flex;position:absolute;top:16px;right:16px}#hud-stats .stat{text-align:right;min-width:110px;padding:8px 16px;display:grid}#hud-stats .stat span{color:var(--ink-soft);font-size:13px}#hud-stats .stat b{font-variant-numeric:tabular-nums;font-size:24px}#players{gap:4px;min-width:180px;margin:0;padding:8px 14px;list-style:none;display:grid;position:absolute;top:110px;left:16px}#players li{align-items:center;gap:8px;font-weight:500;display:flex}#players i{border:2px solid var(--ink);border-radius:50%;flex:none;width:12px;height:12px}#players small{color:var(--ink-soft)}#chat-log{pointer-events:none;gap:4px;width:min(440px,100% - 32px);display:grid;position:absolute;bottom:64px;left:16px}#chat-log p{color:#fff;overflow-wrap:anywhere;background:#1d3a5fb8;border-radius:10px;width:fit-content;max-width:100%;margin:0;padding:4px 10px;transition:opacity .6s}#chat-log p.old{opacity:0}#chat-log.open p.old{opacity:1}#chat-input{border:3px solid var(--ink);background:var(--paper);width:min(440px,100% - 32px);color:var(--ink);box-shadow:var(--shadow);border-radius:12px;padding:10px 14px;position:absolute;bottom:16px;left:16px}#hint{color:var(--ink);text-shadow:0 1px #fff;font-weight:500;position:absolute;bottom:22px;left:16px}kbd{border:2px solid var(--ink);background:var(--paper);font:600 13px/1.5 var(--font);border-radius:6px;padding:0 6px;display:inline-block}#toast{background:var(--ink);color:#fff;opacity:0;pointer-events:none;border-radius:12px;padding:8px 16px;font-weight:600;transition:opacity .2s;position:absolute;top:20px;left:50%;transform:translate(-50%)}#toast.show{opacity:1}.code-text{letter-spacing:.15em;color:var(--sky)}.slider{text-align:left;justify-content:space-between;font-weight:600;display:flex}#sens{width:100%;accent-color:var(--sky)}.keys{text-align:left;grid-template-columns:1fr 1fr;gap:6px 12px;margin:0;padding:0;font-size:15px;list-style:none;display:grid}.card button.link{box-shadow:none;color:var(--sky);border:0;padding:0;text-decoration:underline}#cross{border:2px solid var(--ink);pointer-events:none;background:#fff;border-radius:50%;width:8px;height:8px;margin:-4px 0 0 -4px;position:absolute;top:50%;left:50%}@media (prefers-reduced-motion:reduce){*{transition:none!important}}
