@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-vietnamese-wght-normal-BUzh504Q.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-ext-wght-normal-CcLUaPy7.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-wght-normal-DLoelf7F.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/atkinson-hyperlegible-latin-ext-400-normal-DRk46D-x.woff2)format("woff2"),url(/assets/atkinson-hyperlegible-latin-ext-400-normal-Bbz-b3yf.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/atkinson-hyperlegible-latin-400-normal-BrHNak5F.woff2)format("woff2"),url(/assets/atkinson-hyperlegible-latin-400-normal-BbWidj28.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/atkinson-hyperlegible-latin-ext-700-normal-BoVPHkS0.woff2)format("woff2"),url(/assets/atkinson-hyperlegible-latin-ext-700-normal-CKkU2Dpt.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/atkinson-hyperlegible-latin-700-normal-GZI4o3u0.woff2)format("woff2"),url(/assets/atkinson-hyperlegible-latin-700-normal-BK6Glc0m.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--pine:#1e3a2b;--pine-2:#2c5240;--pine-3:#e3eadf;--paper:#f7f2e6;--paper-2:#efe7d3;--card:#fffcf5;--ink:#1c2420;--muted:#5f6a62;--line:#ded4bd;--apricot:#e07b32;--apricot-2:#fbe7d6;--t-correct:#4c8a55;--t-present:#cfa12a;--t-absent:#858a80;--t-text:#fffdf7;--display:"Bricolage Grotesque Variable", "Bricolage Grotesque", system-ui, sans-serif;--body:"Atkinson Hyperlegible", system-ui, -apple-system, sans-serif;--r-s:6px;--r-m:12px;--r-l:18px;--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);--nav-h:64px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.cb{--t-correct:#e07b32;--t-present:#3f87c4}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font:400 17px/1.5 var(--body);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}#root{min-height:100%}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:3px solid var(--apricot);outline-offset:2px;border-radius:4px}a{color:var(--pine-2)}h1,h2,h3{font-family:var(--display);letter-spacing:-.01em;margin:0;line-height:1.1}h1{font-size:2rem;font-weight:700}h2{font-size:1.35rem;font-weight:650}h3{font-size:1.05rem;font-weight:650}p{margin:0}.muted{color:var(--muted)}.small{font-size:.875rem}.shell{max-width:640px;padding:calc(var(--safe-t) + 12px) 20px calc(var(--nav-h) + var(--safe-b) + 28px);margin:0 auto}.topbar{justify-content:space-between;align-items:center;min-height:48px;margin-bottom:18px;display:flex}.icon-btn{border:1px solid var(--line);background:var(--card);border-radius:50%;place-items:center;width:44px;height:44px;padding:0;display:grid}.icon-btn svg{width:20px;height:20px}.wordmark{color:var(--pine);align-items:center;gap:10px;text-decoration:none;display:flex}.wordmark-tiles{flex:none;width:38px;height:30px;position:relative}.wordmark-tiles span{width:24px;height:24px;font:800 15px/1 var(--display);color:var(--t-text);border-radius:5px;place-items:center;display:grid;position:absolute}.wordmark-tiles span:first-child{background:var(--pine);top:0;left:0}.wordmark-tiles span:last-child{background:var(--apricot);box-shadow:-2px -2px 0 var(--paper);top:6px;left:14px}.wordmark-text{font:760 1.35rem/1 var(--display);letter-spacing:-.03em;font-variation-settings:"wdth" 85}.tabbar{z-index:20;background:color-mix(in srgb, var(--card) 92%, transparent);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line);padding-bottom:var(--safe-b);position:fixed;bottom:0;left:0;right:0}.tabbar nav{max-width:640px;height:var(--nav-h);grid-template-columns:repeat(4,1fr);margin:0 auto;display:grid}.tab{color:var(--muted);background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:.75rem;display:flex;position:relative}.tab svg{width:24px;height:24px}.tab[aria-current=page]{color:var(--pine);font-weight:700}.tab .dot{background:var(--apricot);color:#fff;min-width:18px;height:18px;font:700 11px/18px var(--body);border-radius:9px;padding:0 5px;position:absolute;top:9px;left:calc(50% + 8px)}.btn{border-radius:var(--r-m);background:var(--pine);width:100%;min-height:56px;color:var(--paper);font:650 1.1rem/1.2 var(--display);letter-spacing:-.005em;border:0;justify-content:center;align-items:center;gap:10px;padding:14px 20px;text-decoration:none;transition:transform .12s,background .2s;display:flex}.btn:active{transform:scale(.985)}.btn:disabled{opacity:.5}.btn.secondary{background:var(--card);color:var(--pine);border:1.5px solid var(--pine)}.btn.quiet{color:var(--pine);background:0 0;min-height:48px;font-size:1rem}.btn.accent{background:var(--apricot);color:#fff}.field{gap:6px;display:grid}.field label{font-size:.9rem;font-weight:700}.input{border-radius:var(--r-m);border:1.5px solid var(--line);background:var(--card);width:100%;min-height:52px;padding:12px 14px;font-size:1.05rem}.input:focus{border-color:var(--pine);outline:none}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r-l);padding:18px}.stack{gap:16px;display:grid}.stack-l{gap:28px;display:grid}.row{align-items:center;gap:12px;display:flex}.spread{justify-content:space-between;align-items:center;gap:12px;display:flex}.error{color:#a23b1c;font-weight:700}.badge{background:var(--pine-3);color:var(--pine);border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:.8rem;font-weight:700;display:inline-flex}.badge.warn{background:var(--apricot-2);color:#8a4313}.dateline{font:600 1rem/1.2 var(--body);color:var(--muted);margin-bottom:4px}.today-title{letter-spacing:-.025em;font-size:2.25rem;font-weight:720}.duel{padding:0;overflow:hidden}.duel-head{grid-template-columns:1fr 1fr;display:grid}.duel-player{padding:16px 18px 12px}.duel-player+.duel-player{border-left:1px solid var(--line)}.duel-name{font:700 1.05rem/1.2 var(--display)}.duel-status{color:var(--muted);margin-top:2px;font-size:.9rem}.duel-status.done{color:var(--pine-2);font-weight:700}.duel-games{border-top:1px solid var(--line)}.duel-game{grid-template-columns:1fr auto 1fr;align-items:center;padding:10px 18px;display:grid}.duel-game+.duel-game{border-top:1px dashed var(--line)}.duel-game .gname{color:var(--muted);text-align:center;min-width:76px;font-size:.85rem}.slot{font:720 1.4rem/1 var(--display);color:var(--pine)}.slot.right{text-align:right}.slot.empty{color:var(--line)}.slot.dnf{color:#a23b1c;font-size:1rem}.seal{background:radial-gradient(circle at 35% 30%, #f0a065, var(--apricot) 55%, #b85e1f);color:#fff7ee;border-radius:50%;place-items:center;width:34px;height:34px;display:inline-grid;box-shadow:inset 0 0 0 3px #ffffff2e,0 1px 2px #50280a4d}.seal svg{width:15px;height:15px}.slot.right .seal{margin-left:auto}@keyframes unseal{0%{opacity:0;transform:rotateY(90deg)}to{opacity:1;transform:none}}.reveal{animation:.5s cubic-bezier(.2,.8,.2,1) both unseal;display:inline-block}.standing-strip{justify-content:center;align-items:baseline;gap:14px;display:flex}.standing-num{font:760 3rem/1 var(--display);color:var(--pine);font-variant-numeric:tabular-nums}.standing-dash{font:400 2rem/1 var(--display);color:var(--line)}.chat-peek{text-align:left;border:1px solid var(--line);align-items:center;gap:12px;width:100%;display:flex}.chat-peek .bubble-mini{flex:1;min-width:0}.chat-peek .bubble-mini p{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.play{background:var(--paper);z-index:30;padding:calc(var(--safe-t) + 8px) 0 calc(var(--safe-b) + 6px);flex-direction:column;display:flex;position:fixed;inset:0}.play-head{justify-content:space-between;align-items:center;width:100%;max-width:520px;margin:0 auto;padding:0 12px 6px;display:flex}.play-title{text-align:center}.play-title h2{font-size:1.3rem}.progress{justify-content:center;gap:6px;margin-top:6px;display:flex}.progress i{background:var(--line);border-radius:3px;width:26px;height:5px}.progress i.on{background:var(--pine)}.progress i.cur{background:var(--apricot)}.play-body{flex:1;justify-content:center;align-items:center;min-height:0;padding:4px 12px;display:flex}.board{aspect-ratio:5/6;grid-template-rows:repeat(6,1fr);gap:6px;width:min(330px,100%,83.3333dvh - 275px);display:grid}.board-row{grid-template-columns:repeat(5,1fr);gap:6px;display:grid}.board-row.shake{animation:.42s shake}@keyframes shake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-7px)}40%,60%{transform:translate(7px)}}.tile{border:2px solid var(--line);border-radius:var(--r-s);font:760 clamp(1.4rem, 7vw, 2rem)/1 var(--display);text-transform:uppercase;background:var(--card);color:var(--ink);-webkit-user-select:none;user-select:none;place-items:center;display:grid}.tile.filled{border-color:#b9ae94;animation:.1s pop}@keyframes pop{50%{transform:scale(1.08)}}.tile.correct,.tile.present,.tile.absent{color:var(--t-text);border-color:#0000}.tile.correct{background:var(--t-correct)}.tile.present{background:var(--t-present)}.tile.absent{background:var(--t-absent)}.tile.flip{animation:.25s both flip}@keyframes flip{0%{background:var(--card);color:var(--ink);border-color:#b9ae94;transform:rotateX(0)}49%{background:var(--card);color:var(--ink);border-color:#b9ae94;transform:rotateX(90deg)}50%{transform:rotateX(90deg)}to{transform:rotateX(0)}}.board-row.win .tile{animation:.5s both bounce}@keyframes bounce{40%{transform:translateY(-14px)}70%{transform:translateY(3px)}}.mini-board{gap:4px;width:100%;max-width:220px;display:grid}.mini-board .board-row{gap:4px}.mini-board .tile{aspect-ratio:1;border-width:1.5px;border-radius:4px;font-size:clamp(.8rem,3.6vw,1rem)}.mini-board .tile.blank{background:0 0;border-style:dashed}.keyboard{gap:7px;width:100%;max-width:520px;margin:0 auto;padding:6px 6px 4px;display:grid}.krow{justify-content:center;gap:5px;display:flex}.key{border-radius:var(--r-s);background:var(--paper-2);max-width:46px;height:56px;color:var(--ink);font:700 1.05rem/1 var(--body);text-transform:uppercase;touch-action:manipulation;border:0;flex:1;padding:0}.key.wide{flex:1.5;max-width:72px;font-size:.8rem}.key.wide svg{width:22px;height:22px}.key:active{filter:brightness(.92)}.key.correct{background:var(--t-correct);color:var(--t-text)}.key.present{background:var(--t-present);color:var(--t-text)}.key.absent{background:var(--t-absent);color:var(--t-text)}.toast{top:calc(var(--safe-t) + 70px);background:var(--ink);color:var(--paper);border-radius:var(--r-m);z-index:50;text-align:center;max-width:calc(100% - 40px);padding:10px 16px;font-weight:700;animation:.2s fade;position:fixed;left:50%;transform:translate(-50%)}@keyframes fade{0%{opacity:0;transform:translate(-50%,-6px)}}.sheet-backdrop{z-index:40;background:#141e1859;justify-content:center;align-items:flex-end;animation:.2s fadein;display:flex;position:fixed;inset:0}@keyframes fadein{0%{opacity:0}}.sheet{background:var(--paper);width:100%;max-width:560px;padding:22px 20px calc(var(--safe-b) + 22px);border-radius:22px 22px 0 0;max-height:90dvh;animation:.28s cubic-bezier(.2,.8,.2,1) up;overflow:auto}@keyframes up{0%{opacity:0;transform:translateY(40px)}}.result-card{text-align:center;gap:14px;padding:8px 0;display:grid}.result-card .big{font:760 3.2rem/1 var(--display);color:var(--pine)}.date-strip{padding:2px 2px 10px;scrollbar-width:none;gap:8px;margin:0 -20px;padding-inline:20px;display:flex;overflow-x:auto}.date-strip::-webkit-scrollbar{display:none}.date-chip{border-radius:var(--r-m);border:1px solid var(--line);background:var(--card);text-align:center;flex:none;min-width:58px;padding:8px 10px;line-height:1.15}.date-chip b{font:720 1.25rem/1.1 var(--display);display:block}.date-chip small{color:var(--muted);font-size:.75rem}.date-chip[aria-pressed=true]{background:var(--pine);color:var(--paper);border-color:var(--pine)}.date-chip[aria-pressed=true] small{color:var(--pine-3)}.date-chip .pip{background:0 0;border-radius:50%;width:6px;height:6px;margin:4px auto 0;display:block}.verdict{text-align:center;padding:22px 18px}.verdict h2{font-size:1.7rem}.score-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.score-table th,.score-table td{text-align:right;border-bottom:1px solid var(--line);padding:9px 6px}.score-table th:first-child,.score-table td:first-child{text-align:left}.score-table thead th{font:700 .95rem/1.2 var(--display)}.score-table tr.total td{border-bottom:0;font-weight:700}.score-table .win{color:var(--pine);font-weight:800}.dnf-tag{color:#a23b1c;font-weight:700}.compare{grid-template-columns:1fr 1fr;gap:14px;display:grid}@media (width>=720px){.shell.wide{max-width:960px}.compare{grid-template-columns:1fr 1fr}}.compare-col{align-content:start;justify-items:stretch;gap:8px;min-width:0;display:grid}.compare-col p{overflow-wrap:anywhere}.sealed-board{border:1.5px dashed var(--line);border-radius:var(--r-m);aspect-ratio:5/6;text-align:center;place-items:center;gap:8px;width:100%;max-width:200px;padding:12px;display:grid}.chat{height:calc(100dvh - var(--safe-t) - var(--nav-h) - var(--safe-b));padding-top:calc(var(--safe-t) + 12px);flex-direction:column;max-width:640px;margin:0 auto;display:flex}.chat-log{flex-direction:column;flex:1;gap:4px;padding:8px 16px 12px;display:flex;overflow-y:auto}.msg{background:var(--card);border:1px solid var(--line);word-wrap:break-word;white-space:pre-wrap;border-radius:16px;align-self:flex-start;max-width:80%;padding:9px 13px}.msg.mine{background:var(--pine);color:var(--paper);border-color:var(--pine);align-self:flex-end}.msg-meta{color:var(--muted);margin:10px 4px 2px;font-size:.75rem}.msg-meta.mine{text-align:right}.day-sep{color:var(--muted);align-self:center;margin:14px 0 4px;font-size:.78rem}.unread-sep{text-align:center;color:var(--apricot);border-top:1px solid var(--apricot-2);align-self:stretch;margin:8px 0;padding-top:4px;font-size:.78rem;font-weight:700}.composer{border-top:1px solid var(--line);background:var(--paper);align-items:flex-end;gap:8px;padding:8px 12px 10px;display:flex}.composer textarea{resize:none;border:1.5px solid var(--line);background:var(--card);border-radius:23px;flex:1;min-height:46px;max-height:120px;padding:11px 16px;font-size:16px}.composer textarea:focus{border-color:var(--pine);outline:none}.send{background:var(--pine);width:46px;height:46px;color:var(--paper);border:0;border-radius:50%;flex:none;place-items:center;display:grid}.send svg{width:20px;height:20px}.emoji-row{scrollbar-width:none;gap:4px;padding:0 12px;display:flex;overflow-x:auto}.emoji-row button{background:0 0;border:0;border-radius:8px;padding:4px 6px;font-size:1.35rem}.center-screen{min-height:100dvh;padding:calc(var(--safe-t) + 24px) 24px calc(var(--safe-b) + 24px);flex-direction:column;justify-content:center;max-width:440px;margin:0 auto;display:flex}.hero-tiles{gap:6px;margin-bottom:28px;display:flex}.hero-tiles span{width:46px;height:46px;font:800 1.5rem/1 var(--display);color:var(--t-text);text-transform:uppercase;border-radius:8px;place-items:center;animation:.6s both flip;display:grid}.code-input{position:relative}.code-input input{opacity:0;font-size:16px;position:absolute;inset:0}.code-cells{grid-template-columns:repeat(6,1fr);gap:8px;display:grid}.code-cells span{aspect-ratio:.9;border:2px solid var(--line);border-radius:var(--r-s);font:760 1.7rem/1 var(--display);background:var(--card);place-items:center;display:grid}.code-cells span.on{border-color:var(--pine)}.demo-banner{background:var(--apricot-2);color:#7a3b10;border-radius:var(--r-m);padding:10px 14px;font-size:.9rem;font-weight:700}.stat-grid{background:var(--line);border-radius:var(--r-m);border:1px solid var(--line);grid-template-columns:1fr 1fr;gap:1px;display:grid;overflow:hidden}.stat-grid>div{background:var(--card);padding:12px 14px}.stat-grid .v{font:720 1.5rem/1.1 var(--display);color:var(--pine);font-variant-numeric:tabular-nums}.stat-grid .k{color:var(--muted);font-size:.82rem}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation-duration:.01ms!important;animation-delay:0s!important}}.chat-peek svg{width:24px;height:24px;color:var(--pine);flex:none}.sealed-board .seal{width:40px;height:40px}.stack>*,.stack-l>*{min-width:0}.chat-peek{min-width:0;max-width:100%}.wordmark-tiles span:first-child{place-items:start;padding:3px 0 0 5px;font-size:13px}.tnum{font-variant-numeric:tabular-nums}.scoreboard{gap:12px;padding:24px 18px 16px;display:grid}.scoreboard-rows{border-top:1px solid var(--line);gap:8px;padding-top:12px;display:grid}.scoreboard-rows b{font:760 1.25rem/1 var(--display);color:var(--pine)}.seg{background:var(--paper-2);border-radius:999px;flex:none;padding:3px;display:inline-flex}.seg button{color:var(--muted);white-space:nowrap;background:0 0;border:0;border-radius:999px;padding:7px 12px;font-size:.85rem}.seg button[aria-pressed=true]{background:var(--card);color:var(--pine);font-weight:700;box-shadow:0 1px 2px #1e3a2b1f}.h2h{padding:0;overflow:hidden}.h2h-names{font:700 1rem/1.2 var(--display);background:var(--pine-3);color:var(--pine);grid-template-columns:1fr 1fr;padding:14px 16px 10px;display:grid}.h2h-names .right{text-align:right}.h2h-group{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-size:.8rem;font-family:var(--body);padding:16px 16px 6px}.h2h-row{border-top:1px solid var(--line);grid-template-columns:1fr minmax(0,1.3fr) 1fr;align-items:center;gap:8px;padding:9px 16px;display:grid}.h2h-label{text-align:center;color:var(--muted);font-size:.88rem;line-height:1.25}.h2h-v{font:650 1.1rem/1.15 var(--display);font-variant-numeric:tabular-nums;color:var(--muted);justify-items:start;display:grid}.h2h-v.right{text-align:right;justify-items:end}.h2h-v small{font:400 .72rem/1.2 var(--body);color:var(--muted)}.h2h-v.lead{color:var(--pine);font-weight:800}.h2h-v.lead>span{background:var(--pine-3);border-radius:6px;margin-inline:-7px;padding:1px 7px}.h2h-v.right.lead>span{margin-inline:-7px}.h2h-shared{border-top:1px solid var(--line);color:var(--muted);justify-content:center;align-items:baseline;gap:8px;padding:9px 16px;font-size:.88rem;display:flex}.h2h-shared b{font:760 1.1rem/1 var(--display);color:var(--ink)}
