@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-ext-wght-normal-DCwSJGxG.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-wght-normal-D_ZTVpCC.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root,:root[data-theme=dark]{color-scheme:dark;--bg: #15161b;--bg-grad: radial-gradient(1100px 620px at 50% -12%, #20222c 0%, #15161b 58%);--surface: #1e2027;--surface-2: #262932;--color-tone-1: #eceef2;--color-tone-2: #9aa0aa;--color-text: var(--color-tone-1);--color-correct: #5aa564;--color-present: #c6a94e;--color-absent: #3a3d45;--tile-border-empty: #34373f;--tile-border-filled: #5a5e68;--key-bg: #565a64;--key-text: #eceef2;--key-absent: #34373c;--accent: #5aa564;--accent-soft: rgba(90, 165, 100, .16);--accent-text: #ffffff;--modal-bg: #1c1e25;--divider: #2a2d35;--hover: rgba(255, 255, 255, .07);--shadow: 0 12px 34px rgba(0, 0, 0, .46);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .32);--radius-sm: 7px;--radius: 11px;--radius-lg: 18px}:root[data-theme=light]{color-scheme:light;--bg: #fbfbf9;--bg-grad: radial-gradient(1100px 620px at 50% -12%, #ffffff 0%, #f3f3ef 70%);--surface: #ffffff;--surface-2: #f1f1ee;--color-tone-1: #1b1c1f;--color-tone-2: #6b7078;--color-text: var(--color-tone-1);--color-correct: #6aaa64;--color-present: #cbb44b;--color-absent: #8b8f96;--tile-border-empty: #d6d8dc;--tile-border-filled: #9aa0a8;--key-bg: #d7d9dd;--key-text: #1b1c1f;--key-absent: #8b8f96;--accent: #6aaa64;--accent-soft: rgba(106, 170, 100, .18);--accent-text: #ffffff;--modal-bg: #ffffff;--divider: #e6e7e9;--hover: rgba(0, 0, 0, .05);--shadow: 0 12px 34px rgba(0, 0, 0, .12);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .08);--radius-sm: 7px;--radius: 11px;--radius-lg: 18px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);background-image:var(--bg-grad);background-attachment:fixed;color:var(--color-text);font-family:Figtree Variable,Figtree,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overscroll-behavior:none;touch-action:manipulation}@keyframes pop{0%{transform:scale(.86)}55%{transform:scale(1.07)}to{transform:scale(1)}}@keyframes shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-4px)}40%,60%{transform:translate(4px)}}@keyframes flip-in{0%{transform:rotateX(0);border-color:var(--tile-border-filled)}45%{transform:rotateX(-86deg);background:transparent;border-color:var(--tile-border-filled);color:var(--color-tone-1)}55%{transform:rotateX(-90deg);background:var(--rc);border-color:var(--rc);color:#fff}to{transform:rotateX(0);background:var(--rc);border-color:var(--rc);color:#fff}}@keyframes bounce{0%,20%{transform:translateY(0)}40%{transform:translateY(-26px)}50%{transform:translateY(5px)}60%{transform:translateY(-13px)}80%{transform:translateY(2px)}to{transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes modal-in{0%{opacity:0;transform:translateY(14px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.tile--pop{animation:pop .11s ease-in-out}.row--shake{animation:shake .6s}.tile--flip{animation:flip-in .56s ease both}.tile--bounce{animation:bounce .8s ease}@media (prefers-reduced-motion: reduce){.tile--pop,.row--shake,.tile--flip,.tile--bounce,.toast,.modal,.modal-backdrop{animation:none!important}.tile--correct,.tile--present,.tile--absent{background:var(--rc);border-color:var(--rc);color:#fff}}.app{display:flex;flex-direction:column;height:100%;max-width:484px;margin:0 auto;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom);overflow:hidden}.header{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;padding:8px 12px 6px}.header__left{grid-column:1;display:flex;gap:4px}.header__title{grid-column:2;display:flex;flex-direction:column;align-items:center;gap:4px;line-height:1.05}.header__eyebrow{font-size:.62rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--color-tone-2)}.header__level{font-size:1.28rem;font-weight:800;letter-spacing:.01em}.header__actions{grid-column:3;display:flex;justify-content:flex-end;gap:2px}.icon-btn{background:none;border:none;color:var(--color-tone-2);cursor:pointer;padding:8px;border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;line-height:0;transition:background .15s ease,color .15s ease,transform .1s ease}.icon-btn:hover{background:var(--hover);color:var(--color-tone-1)}.icon-btn:active{transform:scale(.92)}.mode-picker{display:flex;gap:6px;justify-content:center;padding:2px 10px 8px}.mode-tab{background:var(--surface);border:1px solid var(--divider);color:var(--color-tone-2);border-radius:999px;padding:5px 16px;font-family:inherit;font-size:.78rem;font-weight:700;cursor:pointer;transition:all .16s ease}.mode-tab:hover{color:var(--color-tone-1)}.mode-tab--active{background:var(--accent);color:var(--accent-text);border-color:var(--accent);box-shadow:var(--shadow-sm)}.board-wrap{flex:1 1 0;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:8px}.board{display:grid;grid-auto-rows:var(--tile-size, 58px);gap:var(--gap, 6px)}.row{display:grid;grid-template-columns:repeat(var(--cols, 5),var(--tile-size, 58px));gap:var(--gap, 6px)}.tile{width:var(--tile-size, 58px);height:var(--tile-size, 58px);display:flex;align-items:center;justify-content:center;font-size:calc(var(--tile-size, 58px) * .46);font-weight:800;text-transform:uppercase;color:var(--color-tone-1);border:2px solid var(--tile-border-empty);border-radius:var(--radius-sm);-webkit-user-select:none;user-select:none;transition:border-color .1s ease,background .05s ease}.tile--filled{border-color:var(--tile-border-filled)}.tile--correct{--rc: var(--color-correct)}.tile--present{--rc: var(--color-present)}.tile--absent{--rc: var(--color-absent)}.tile--correct:not(.tile--flip),.tile--present:not(.tile--flip),.tile--absent:not(.tile--flip){background:var(--rc);border-color:var(--rc);color:#fff}.keyboard{margin:4px 6px max(8px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:clamp(5px,1vh,8px);flex:0 0 auto}.keyboard__row{display:flex;justify-content:center;gap:clamp(4px,1.2vw,6px)}.key{flex:1;min-width:0;height:clamp(46px,7.2vh,58px);border:none;border-radius:var(--radius-sm);background:var(--key-bg);color:var(--key-text);font-family:inherit;font-weight:700;font-size:clamp(.78rem,2.4vw,.95rem);text-transform:uppercase;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .06s ease,filter .12s ease,background .15s ease}.key:hover{filter:brightness(1.08)}.key:active{transform:scale(.94)}.key--wide{flex:1.5}.key--spacer{flex:.5}.key--correct{background:var(--color-correct);color:#fff}.key--present{background:var(--color-present);color:#fff}.key--absent{background:var(--key-absent);color:#fff}.toast-stack{position:fixed;top:64px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;z-index:30;pointer-events:none}.toast{background:var(--color-tone-1);color:var(--bg);padding:11px 18px;border-radius:var(--radius);font-weight:700;font-size:.9rem;box-shadow:var(--shadow);animation:toast-in .18s ease}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:40;padding:16px;animation:fade-in .16s ease}.modal{background:var(--modal-bg);border:1px solid var(--divider);border-radius:var(--radius-lg);padding:26px 24px;width:min(94%,372px);text-align:center;box-shadow:var(--shadow);animation:modal-in .22s cubic-bezier(.2,.9,.3,1.2)}.modal h2{margin:0 0 8px;font-size:1.5rem}.modal__answer{font-size:1.5rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase;margin:14px 0;color:var(--color-correct)}.btn{background:var(--accent);color:var(--accent-text);border:none;border-radius:var(--radius);padding:13px 20px;font-family:inherit;font-weight:700;font-size:1rem;cursor:pointer;width:100%;margin-top:8px;transition:filter .12s ease,transform .08s ease}.btn:hover{filter:brightness(1.06)}.btn:active{transform:scale(.98)}.btn--secondary{background:var(--surface-2);color:var(--color-tone-1)}.credit{margin:16px 0 0;font-size:.72rem;color:var(--color-tone-2)}.credit a{color:var(--accent);text-decoration:none;font-weight:700}.credit a:hover{text-decoration:underline}.share-grid{font-family:Figtree Variable,monospace;white-space:pre;background:var(--surface);padding:14px;border-radius:var(--radius);margin:14px 0;line-height:1.15;font-size:1.05rem}.center-screen{display:flex;flex:1;align-items:center;justify-content:center;flex-direction:column;gap:12px;text-align:center;padding:24px}.stats{display:flex;justify-content:space-around;margin:18px 0}.stat{text-align:center}.stat__num{font-size:1.9rem;font-weight:800}.stat__label{font-size:.68rem;color:var(--color-tone-2);text-transform:uppercase;letter-spacing:.04em}.spectators{display:flex;gap:12px;overflow-x:auto;padding:6px 12px 8px;flex:0 0 auto;max-height:108px;scrollbar-width:none}.spectators::-webkit-scrollbar{display:none}.spectator{flex:0 0 auto;text-align:center}.spectator--offline{opacity:.45}.spectator__name{font-size:.68rem;max-width:72px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:4px;color:var(--color-tone-2)}.mini-board{display:grid;grid-template-rows:repeat(6,1fr);gap:2px}.mini-row{display:grid;grid-template-columns:repeat(var(--cols, 5),1fr);gap:2px}.mini-tile{width:11px;height:11px;border:1px solid var(--tile-border-empty);border-radius:2px}.mini--correct{background:var(--color-correct);border-color:var(--color-correct)}.mini--present{background:var(--color-present);border-color:var(--color-present)}.mini--absent{background:var(--color-absent);border-color:var(--color-absent)}@media (min-width: 860px){.spectators{position:fixed;z-index:5;top:92px;bottom:88px;left:max(14px,calc(50% - 404px));width:150px;max-height:none;flex-direction:column;flex-wrap:nowrap;overflow-x:hidden;overflow-y:auto;gap:16px;padding:14px 12px;background:var(--surface);border:1px solid var(--divider);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.spectators:before{content:"Players";font-size:.62rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--color-tone-2)}.spectator{width:100%}.spectator__name{max-width:100%}.mini-tile{width:15px;height:15px}}.round-banner{display:flex;align-items:center;justify-content:center;gap:12px;padding:6px 8px;font-size:.85rem;flex:0 0 auto}.round-banner .btn{width:auto;margin:0;padding:9px 18px}.dist{display:flex;flex-direction:column;gap:5px;margin-bottom:18px}.dist__row{display:flex;align-items:center;gap:8px}.dist__label{width:12px;font-weight:700;font-size:.85rem}.dist__bar{background:var(--color-tone-2);color:#fff;text-align:right;padding:2px 7px;border-radius:var(--radius-sm);font-size:.8rem;font-weight:700;min-width:22px}.dist__bar--current{background:var(--color-correct)}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;padding:12px 0;border-bottom:1px solid var(--divider)}.switch{position:relative;display:inline-block;width:44px;height:24px;flex:0 0 auto}.switch input{opacity:0;width:0;height:0}.switch__slider{position:absolute;cursor:pointer;top:0;right:0;bottom:0;left:0;background:var(--color-tone-2);border-radius:24px;transition:.2s}.switch__slider:before{content:"";position:absolute;height:18px;width:18px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:.2s}.switch input:checked+.switch__slider{background:var(--accent)}.switch input:checked+.switch__slider:before{transform:translate(20px)}
