:root{--ink:#14161a;--paper:#f4f3ef;--muted:#8a8d93;--red:#e5352b;--p1:#2f7ec4;--p2:#e8853a;--font:ui-sans-serif, system-ui, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;font-family:var(--font);color:var(--ink);-webkit-font-smoothing:antialiased;background:#23252a;overflow:hidden}#game{display:block;position:fixed;inset:0}#ui{pointer-events:none;position:fixed;inset:0}#ui>*{pointer-events:auto}#hud{pointer-events:none;position:fixed;inset:0}.prompt{letter-spacing:.09em;color:#fff;text-shadow:0 1px 3px #000000bf;opacity:0;font-size:15px;font-weight:700;transition:opacity .12s;position:absolute;bottom:16%;left:50%;transform:translate(-50%)}.prompt.on{opacity:1}.prompt .key{text-align:center;border:2px solid #fff;border-radius:4px;min-width:22px;margin-right:8px;padding:2px 6px;display:inline-block}.toast{letter-spacing:.22em;color:#fff;text-shadow:0 1px 3px #000000b3;opacity:0;font-size:13px;font-weight:700;transition:opacity .2s;position:absolute;top:11%;left:50%;transform:translate(-50%)}.toast.on{opacity:1}#rules{flex-direction:column;align-items:flex-end;gap:6px;display:flex;position:absolute;bottom:16px;right:18px}.rule-chip{letter-spacing:.14em;color:#fff;background:#14161ab8;border-radius:3px;padding:3px 8px;font-size:10px;font-weight:700}#partner{letter-spacing:.12em;color:#fff;text-shadow:0 1px 3px #000000b3;font-size:11px;font-weight:700;position:absolute;bottom:16px;left:18px}#partner .dot{background:var(--p2);border-radius:50%;width:8px;height:8px;margin-right:7px;display:inline-block}#partner.offline .dot{background:var(--muted)}#netstat{letter-spacing:.08em;color:#ffffffbf;text-shadow:0 1px 2px #0009;font-size:10px;position:absolute;top:14px;right:18px}.ping-marker{border:3px solid var(--p2);border-radius:50%;width:26px;height:26px;margin:-13px 0 0 -13px;animation:1.6s ease-out forwards pingpulse;position:absolute}@keyframes pingpulse{0%{opacity:1;transform:scale(.4)}70%{opacity:.8;transform:scale(1.5)}to{opacity:0;transform:scale(2.1)}}.screen{background:var(--paper);flex-direction:column;justify-content:center;padding:0 clamp(28px,9vw,140px);display:flex;position:fixed;inset:0}.screen[hidden]{display:none}.title{letter-spacing:-.035em;margin-bottom:6px;font-size:clamp(44px,9vw,104px);font-weight:800;line-height:.95}.title .dot{color:var(--red)}.subtitle{letter-spacing:.26em;color:var(--muted);text-transform:uppercase;margin-bottom:44px;font-size:13px}.menu{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.menu button{font:inherit;letter-spacing:.02em;color:var(--ink);cursor:pointer;text-align:left;background:0 0;border:none;padding:7px 0;font-size:clamp(19px,2.4vw,25px);font-weight:700;position:relative}.menu button:before{content:"";background:var(--red);transform-origin:0;width:11px;height:3px;transition:transform .12s;position:absolute;top:50%;left:-22px;transform:translateY(-50%)scaleX(0)}.menu button:hover:before,.menu button:focus-visible:before{transform:translateY(-50%)scaleX(1)}.menu button:disabled{color:var(--muted);cursor:default}.menu button:disabled:before{display:none}.back{margin-top:34px;letter-spacing:.16em!important;color:var(--muted)!important;font-size:13px!important}.row{align-items:center;gap:10px;margin:10px 0;display:flex}.field{font:inherit;letter-spacing:.3em;text-transform:uppercase;border:2px solid var(--ink);color:var(--ink);background:0 0;border-radius:4px;width:220px;padding:10px 14px;font-size:22px;font-weight:700}.hint{letter-spacing:.1em;color:var(--muted);margin-top:8px;font-size:12px}.error{color:var(--red);margin-top:12px;font-size:13px;font-weight:600}.code{letter-spacing:.22em;margin:4px 0 2px;font-size:clamp(40px,7vw,74px);font-weight:800}.slots{flex-direction:column;gap:10px;margin:26px 0 30px;display:flex}.slot{letter-spacing:.1em;align-items:center;gap:14px;font-size:17px;font-weight:700;display:flex}.slot .chip{border-radius:3px;width:14px;height:14px}.slot.p1 .chip{background:var(--p1)}.slot.p2 .chip{background:var(--p2)}.slot .state{letter-spacing:.18em;color:var(--muted);margin-left:auto;font-size:12px}.slot .state.ready{color:var(--ink)}.slot.empty{color:var(--muted)}.slot.empty .chip{background:#d6d5d0}.stats{gap:clamp(24px,5vw,70px);margin:30px 0 38px;display:flex}.stat .k{letter-spacing:.2em;color:var(--muted);font-size:11px}.stat .v{letter-spacing:-.02em;font-size:clamp(26px,3.6vw,40px);font-weight:800}.stat .v.found{color:var(--red)}.settings{grid-template-columns:230px 1fr 60px;align-items:center;gap:12px 18px;max-width:720px;display:grid}.settings label{letter-spacing:.1em;font-size:13px;font-weight:600}.settings input[type=range]{width:100%;accent-color:var(--red)}.settings .val{color:var(--muted);text-align:right;font-size:13px}.settings input[type=checkbox]{width:17px;height:17px;accent-color:var(--red);justify-self:start}.keymap{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px;max-width:760px;display:grid}.keymap button{font:inherit;letter-spacing:.08em;cursor:pointer;background:0 0;border:1.5px solid #ddd;border-radius:4px;justify-content:space-between;gap:10px;padding:7px 10px;font-size:12px;display:flex}.keymap button:hover{border-color:var(--ink)}.keymap button.listening{border-color:var(--red);color:var(--red)}.keymap .k{color:var(--muted);font-weight:700}#pause{background:#f4f3eff7}#loading{background:var(--paper);letter-spacing:.3em;color:var(--muted);justify-content:center;align-items:center;font-size:12px;display:flex;position:fixed;inset:0}.credits{letter-spacing:.2em;color:var(--muted);font-size:10px;position:absolute;bottom:34px;left:clamp(28px,9vw,140px)}.credits a{color:var(--ink);border-bottom:1px solid #d5d4cf;text-decoration:none}
