@font-face{font-family:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bricolage-grotesque-vietnamese-400-normal-B7Iv8-Rg.woff2)format("woff2"),url(/assets/bricolage-grotesque-vietnamese-400-normal-Sle7MYWg.woff)format("woff");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;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bricolage-grotesque-latin-ext-400-normal-D42HmrHD.woff2)format("woff2"),url(/assets/bricolage-grotesque-latin-ext-400-normal-BH175q6o.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:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bricolage-grotesque-latin-400-normal-A6LyuA6R.woff2)format("woff2"),url(/assets/bricolage-grotesque-latin-400-normal-D89K-qEP.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:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/bricolage-grotesque-vietnamese-600-normal-Ipewt4hn.woff2)format("woff2"),url(/assets/bricolage-grotesque-vietnamese-600-normal-BppAn7jL.woff)format("woff");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;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/bricolage-grotesque-latin-ext-600-normal-CN5JKkBm.woff2)format("woff2"),url(/assets/bricolage-grotesque-latin-ext-600-normal-DF26P3Q7.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:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/bricolage-grotesque-latin-600-normal-nxTgbNFE.woff2)format("woff2"),url(/assets/bricolage-grotesque-latin-600-normal-Bw0J83-2.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:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/bricolage-grotesque-vietnamese-800-normal-RJtJa6zl.woff2)format("woff2"),url(/assets/bricolage-grotesque-vietnamese-800-normal-DJ4hCX8l.woff)format("woff");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;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/bricolage-grotesque-latin-ext-800-normal-BimIDUhy.woff2)format("woff2"),url(/assets/bricolage-grotesque-latin-ext-800-normal-CkoBqIJM.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:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/bricolage-grotesque-latin-800-normal-J50vIsBe.woff2)format("woff2"),url(/assets/bricolage-grotesque-latin-800-normal-Br4b-5gk.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:Big Shoulders Display;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/big-shoulders-display-vietnamese-600-normal-DFOHoAUN.woff2)format("woff2"),url(/assets/big-shoulders-display-vietnamese-600-normal-CBD8Wfz0.woff)format("woff");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:Big Shoulders Display;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/big-shoulders-display-latin-ext-600-normal-D59XNmBM.woff2)format("woff2"),url(/assets/big-shoulders-display-latin-ext-600-normal-BQAez9cc.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:Big Shoulders Display;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/big-shoulders-display-latin-600-normal-DBjJvcBA.woff2)format("woff2"),url(/assets/big-shoulders-display-latin-600-normal-DVaYP2lT.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:Big Shoulders Display;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/big-shoulders-display-vietnamese-800-normal-TfqTMNKp.woff2)format("woff2"),url(/assets/big-shoulders-display-vietnamese-800-normal-zHzF0To4.woff)format("woff");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:Big Shoulders Display;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/big-shoulders-display-latin-ext-800-normal-fpv_pHPA.woff2)format("woff2"),url(/assets/big-shoulders-display-latin-ext-800-normal-BQnXNQRw.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:Big Shoulders Display;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/big-shoulders-display-latin-800-normal-DDUD9Xuh.woff2)format("woff2"),url(/assets/big-shoulders-display-latin-800-normal-CI0lhnTM.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{--walnut:#2b1e17;--walnut-2:#3a2a20;--walnut-3:#4a3628;--line:#5a4334;--maple:#ebd3a8;--maple-dim:#bfa582;--muted:#9c8670;--brass:#c9a24a;--brass-hi:#e4c470;--flag:#d4493b;--felt:#2e7a70;--good:#5dae6e;--display:"Big Shoulders Display", "Bricolage Grotesque", system-ui, sans-serif;--ui:"Bricolage Grotesque", system-ui, -apple-system, "Segoe UI", sans-serif;--r-sm:6px;--r-md:10px;--rail:208px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--walnut);color:var(--maple);font-family:var(--ui);-webkit-font-smoothing:antialiased;background-image:radial-gradient(1200px 600px at 70% -10%,#c9a24a14,#0000 60%);margin:0;font-size:15px;line-height:1.45}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}button:disabled{cursor:not-allowed;opacity:.5}:focus-visible{outline:2px solid var(--brass-hi);outline-offset:2px;border-radius:4px}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:800}p{margin:0}input,textarea{font:inherit;color:var(--maple);background:var(--walnut);border:1px solid var(--line);border-radius:var(--r-sm);padding:8px 10px}input::placeholder,textarea::placeholder{color:var(--muted)}.icon{flex:none;display:inline-flex}.icon svg{width:100%;height:100%}.big-num{font-family:var(--display);font-variant-numeric:tabular-nums;font-size:34px;font-weight:800;line-height:1}.fine{color:var(--muted);font-size:13px}.credit{color:var(--muted);margin-top:16px;font-size:12px}.muted{color:var(--muted)}.up{color:var(--good);font-weight:700}.down{color:var(--flag);font-weight:700}.mt{margin-top:22px}.link{color:var(--brass-hi);text-decoration:underline}.empty-note{color:var(--maple-dim);padding:14px 0}.center-note{justify-items:start;gap:14px;padding:40px;display:grid}.loading-inline{color:var(--muted);padding:40px}.shell{grid-template-columns:var(--rail) 1fr;min-height:100%;display:grid}.rail{border-right:1px solid var(--line);background:#241912;flex-direction:column;gap:6px;height:100dvh;padding:14px 10px;display:flex;position:sticky;top:0}.brand{text-align:left;align-items:center;gap:10px;padding:4px 8px 14px;display:flex}.brand img{width:34px;height:34px}.brand span{font-family:var(--display);text-transform:uppercase;letter-spacing:.02em;color:var(--brass-hi);font-size:20px;font-weight:800;line-height:.95}.rail nav{gap:2px;display:grid}.rail-btn{border-radius:var(--r-sm);color:var(--maple-dim);text-align:left;align-items:center;gap:12px;padding:9px 10px;font-weight:600;display:flex;position:relative}.rail-btn:hover{background:var(--walnut-2);color:var(--maple)}.rail-btn.on{background:var(--walnut-3);color:var(--maple);box-shadow:inset 3px 0 0 var(--brass)}.dot-count{background:var(--flag);color:#fff;text-align:center;border-radius:99px;min-width:20px;margin-left:auto;padding:1px 6px;font-size:12px}.rail-foot{gap:4px;margin-top:auto;display:grid}.rail-me{border-radius:var(--r-sm);text-align:left;align-items:center;gap:10px;padding:8px;display:flex}.rail-me:hover,.rail-me.on{background:var(--walnut-2)}.rail-me-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.net-dot{background:var(--muted);border-radius:50%;flex:none;width:8px;height:8px}.net-dot.online{background:var(--good)}.net-dot.connecting{background:var(--brass)}.stage{min-width:0;padding:20px 26px 40px}.splash{text-align:center;place-content:center;justify-items:center;gap:10px;height:100%;padding:20px;display:grid}.splash h1{font-family:var(--display);text-transform:uppercase;color:var(--brass-hi);font-size:44px}.splash .err{color:var(--flag);max-width:46ch}.screen-head{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:18px;display:flex}.screen-head h1{font-family:var(--display);text-transform:uppercase;letter-spacing:.01em;font-size:34px;line-height:1}.screen-head p{color:var(--maple-dim);margin-top:4px}.sh-text{flex:1;min-width:200px}.sh-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.btn{border-radius:var(--r-sm);background:var(--walnut-3);border:1px solid var(--line);justify-content:center;align-items:center;gap:8px;padding:9px 16px;font-weight:600;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--maple-dim)}.btn.primary{background:var(--brass);color:#20160f;border-color:var(--brass-hi);box-shadow:0 2px #8c6e2a}.btn.primary:hover:not(:disabled){background:var(--brass-hi)}.btn.ghost{background:0 0}.btn.danger{color:#f0a097}.btn.small{padding:5px 11px;font-size:13px}.btn.big{width:100%;margin-top:16px;padding:13px 22px;font-size:17px}.icon-btn{border-radius:var(--r-sm);width:38px;height:38px;color:var(--maple-dim);place-items:center;display:inline-grid}.icon-btn:hover{background:var(--walnut-3);color:var(--maple)}.seg{border:1px solid var(--line);border-radius:var(--r-sm);background:#231811;flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex}.seg button{color:var(--maple-dim);border-radius:4px;padding:6px 12px;font-size:14px;font-weight:600}.seg button.on{background:var(--walnut-3);color:var(--maple);box-shadow:inset 0 -2px 0 var(--brass)}.seg.small button{padding:4px 10px;font-size:13px}.check{cursor:pointer;align-items:center;gap:10px;padding:7px 0;display:flex}.check input{width:18px;height:18px;accent-color:var(--brass)}.field-label{color:var(--muted);margin:16px 0 6px;font-size:13px;font-weight:600;display:block}.pill{background:var(--walnut-3);border-radius:99px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-block}.pill.ok{background:var(--felt)}.search{width:100%}.filters{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.filters .search{max-width:260px}.panel{background:var(--walnut-2);border:1px solid var(--line);border-radius:var(--r-md);padding:18px}.panel h2{margin-bottom:10px;font-size:18px}.board{aspect-ratio:1;-webkit-user-select:none;user-select:none;touch-action:none;width:100%;box-shadow:0 0 0 6px #1e140e, 0 0 0 7px var(--line), 0 18px 40px #00000073;border-radius:3px;position:relative;overflow:hidden}.board-squares,.board-arrows{width:100%;height:100%;position:absolute;inset:0}.board-arrows{pointer-events:none;z-index:15}.sq-last{fill:#e4c4706b}.sq-selected{fill:#2e7a708c}.sq-hover{fill:none;stroke:#ffffffa6;stroke-width:.06px}.coords text{font-family:var(--ui);pointer-events:none;font-size:.19px;font-weight:800}.piece{z-index:5;pointer-events:none;will-change:transform;width:12.5%;height:12.5%;transition:transform .16s cubic-bezier(.3,.6,.3,1);position:absolute;top:0;left:0}.piece.grab{cursor:grab}.piece.dragging{filter:drop-shadow(0 8px 10px #00000073);transform-origin:50%;scale:1.08}.target{z-index:6;pointer-events:none;place-items:center;width:12.5%;height:12.5%;display:grid;position:absolute}.target:after{content:"";background:#20160f52;border-radius:50%;width:30%;height:30%}.target.capture:after{box-sizing:border-box;background:0 0;border:5px solid #20160f52;width:92%;height:92%}.badge{z-index:16;color:#fff;pointer-events:none;border:2px solid #ffffffd9;border-radius:50%;place-items:center;width:5%;min-width:22px;height:5%;min-height:22px;font-size:12px;font-weight:800;display:grid;position:absolute;transform:translate(-60%,-40%);box-shadow:0 2px 6px #00000080}.promo{z-index:30;background:#140d0999;place-items:center;display:grid;position:absolute;inset:0}.promo-card{background:var(--walnut-2);border:1px solid var(--brass);border-radius:var(--r-md);grid-template-columns:repeat(4,1fr);gap:8px;width:70%;padding:12px;display:grid}.promo-card button{background:var(--maple);border-radius:var(--r-sm);aspect-ratio:1;padding:6px}.promo-card button:hover{background:var(--brass-hi)}.promo-card img{width:100%;height:100%}.promo-card .promo-cancel{aspect-ratio:auto;color:var(--maple-dim);background:0 0;grid-column:1/-1;padding:4px}.game-layout{grid-template-columns:minmax(0,1fr) minmax(260px,340px);align-items:start;gap:26px;max-width:1180px;margin:0 auto;display:grid}.board-col{justify-self:center;gap:10px;width:min(100%,100dvh - 150px,760px);display:grid}.board-col.solo{width:min(100%,100dvh - 140px,720px)}.board-col.small{width:min(100%,360px)}.board-wrap{gap:12px;display:flex;position:relative}.board-wrap .board{flex:1}.side-col{align-content:start;gap:12px;min-width:0;display:grid}.opening-banner{background:var(--walnut-2);border:1px solid var(--line);border-radius:var(--r-sm);flex-wrap:wrap;align-items:center;gap:8px;padding:9px 12px;font-size:14px;font-weight:600;display:flex}.eco{font-family:var(--display);color:var(--brass-hi);font-weight:800}.tc-chip{color:var(--muted);margin-left:auto;font-size:13px}.plate{align-items:center;gap:12px;min-height:52px;display:flex;position:relative}.avatar{object-fit:cover;background:var(--walnut-3);border-radius:8px;flex:none}.avatar.initials{color:var(--walnut);background:var(--maple-dim);place-items:center;font-weight:800;display:inline-grid}.bot-avatar{background:radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--tone) 70%, white), var(--tone));border:2px solid #00000040;place-items:center;display:inline-grid}.bot-avatar img{filter:drop-shadow(0 2px 2px #00000059);width:72%;height:72%}.plate-who{flex:1;min-width:0}.plate-name{white-space:nowrap;text-overflow:ellipsis;align-items:baseline;gap:8px;font-weight:700;display:flex;overflow:hidden}.plate-rating{color:var(--muted);font-size:13px;font-weight:600}.plate-sub{min-height:20px;color:var(--muted);font-size:13px}.captured{align-items:center;display:inline-flex}.captured img{width:18px;height:18px;margin-right:-6px}.captured .diff{color:var(--maple-dim);margin-left:10px;font-size:13px;font-weight:700}.clock{background:linear-gradient(#1c130d,#2a1d15);border:2px solid #6e5636;border-radius:8px;justify-content:flex-end;align-items:center;gap:10px;min-width:130px;padding:6px 14px 6px 10px;display:flex;position:relative;box-shadow:inset 0 2px 6px #0009,0 1px #ffffff0d}.clock-face{font-family:var(--display);font-variant-numeric:tabular-nums;color:var(--maple-dim);letter-spacing:.02em;font-size:30px;font-weight:800;line-height:1}.plunger{background:#3b2b1e;border:1px solid #6e5636;border-radius:50%;width:10px;height:10px;margin-right:auto}.clock.running{border-color:var(--brass);background:linear-gradient(#2a1d10,#3a2914)}.clock.running .clock-face{color:#fff1d2}.clock.running .plunger{background:var(--brass-hi);box-shadow:0 0 10px var(--brass-hi)}.clock.low .clock-face{color:#ffb3a8}.clock.low.running{border-color:var(--flag);animation:1s steps(2,end) infinite lowpulse}.clock.flagged{border-color:var(--flag);background:#4a1712}.clock.flagged .plunger{background:var(--flag);box-shadow:0 0 8px var(--flag)}@keyframes lowpulse{50%{box-shadow:0 0 0 3px #d4493b59,inset 0 2px 6px #0009}}.plate.is-active .plate-name{color:#fff1d2}.bubble{background:var(--maple);color:var(--walnut);z-index:25;border-radius:2px 12px 12px;max-width:260px;margin-top:2px;padding:6px 12px;font-size:13px;font-weight:600;animation:.2s ease-out pop;position:absolute;top:100%;left:56px;box-shadow:0 6px 16px #00000059}.plate:last-child .bubble{border-radius:12px 12px 12px 2px;margin-top:0;margin-bottom:2px;top:auto;bottom:100%}.bubble.emote{padding:4px 10px;font-size:22px}@keyframes pop{0%{opacity:0;transform:scale(.8)}}.thinking{gap:4px;margin-right:8px;display:inline-flex}.thinking i{background:var(--maple-dim);border-radius:50%;width:6px;height:6px;animation:1s infinite blink}.thinking i:nth-child(2){animation-delay:.15s}.thinking i:nth-child(3){animation-delay:.3s}@keyframes blink{50%{opacity:.2}}.scoresheet{color:#2b1e17;border-radius:var(--r-sm);background:#f1e2c4 repeating-linear-gradient(#f1e2c4 0 29px,#dcc79f 29px 30px);max-height:280px;padding:6px 0;overflow:auto;box-shadow:inset 0 0 0 1px #cbb48b}.ss-row{grid-template-columns:38px 1fr 1fr;align-items:center;height:30px;display:grid}.ss-num{text-align:right;color:#8a6f4e;font-family:var(--display);border-right:1px solid #c79a8f;justify-content:end;align-items:center;height:100%;padding-right:10px;font-weight:800;display:grid}.mv{text-align:left;border-radius:4px;align-items:center;gap:4px;margin:0 4px;padding:3px 10px;font-weight:600;display:flex}.mv:hover:not(.empty){background:#2b1e1714}.mv.current{color:var(--maple);background:#2b1e17}.mv-cls{font-size:11px;font-weight:800}.scoresheet .empty-note{color:#8a6f4e;padding:6px 14px}.navbtns{background:var(--walnut-2);border:1px solid var(--line);border-radius:var(--r-sm);justify-content:space-between;align-items:center;padding:2px 6px;display:flex}.game-actions{gap:8px;display:grid}.game-actions.row{justify-content:space-between;margin-top:14px;display:flex}.emote-row{flex-wrap:wrap;gap:4px;display:flex}.emote-btn{background:var(--walnut-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:4px 9px;font-size:18px}.emote-btn:hover{border-color:var(--brass)}.evalbar{width:22px;box-shadow:0 0 0 1px var(--line);background:#1a120c;border-radius:3px;flex-direction:column-reverse;flex:none;display:flex;position:relative;overflow:hidden}.evalbar.flipped{flex-direction:column}.eval-white{background:#f3e6cc;transition:height .35s}.eval-label{text-align:center;font-size:10px;font-weight:800;position:absolute;left:0;right:0}.eval-label.w{color:var(--walnut);bottom:4px}.eval-label.b{color:var(--maple);top:4px}.evalbar.flipped .eval-label.w{top:4px;bottom:auto}.evalbar.flipped .eval-label.b{top:auto;bottom:4px}.evalgraph{border-radius:var(--r-sm);cursor:pointer;width:100%;height:90px;box-shadow:0 0 0 1px var(--line);margin:0 0 18px;display:block}.eg-bg{fill:#1a120c}.eg-area{fill:#f3e6cc}.eg-mid{stroke:var(--muted);stroke-width:.3px;stroke-dasharray:1 1;vector-effect:non-scaling-stroke}.eg-cursor{stroke:var(--brass);stroke-width:2px;vector-effect:non-scaling-stroke}.modal-back{z-index:100;background:#0f0a07a6;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--walnut-2);border:1px solid var(--brass);border-radius:var(--r-md);width:min(420px,100%);animation:.18s ease-out pop;box-shadow:0 30px 60px #00000080}.modal-head{justify-content:space-between;align-items:center;padding:16px 18px 0;display:flex}.modal-head h2{font-family:var(--display);text-transform:uppercase;color:var(--brass-hi);font-size:32px}.modal-body{gap:10px;padding:10px 18px 6px;display:grid}.modal-actions{gap:10px;padding:14px 18px 18px;display:flex}.modal-actions .btn{flex:1}.end-reason{font-size:17px}.end-rating b{font-family:var(--display);font-size:24px}.bot-quote{border-left:3px solid var(--brass);background:var(--walnut);color:var(--maple-dim);margin:0;padding:10px 14px;font-style:italic}.toaster{z-index:200;gap:8px;display:grid;position:fixed;bottom:18px;right:18px}.toast{background:var(--maple);color:var(--walnut);border-radius:var(--r-sm);max-width:340px;padding:10px 16px;font-weight:600;animation:.2s ease-out pop;box-shadow:0 10px 24px #0006}.toast.brass{background:var(--brass-hi)}.toast.bad{background:#f0a097}.toast.good{background:#a9d8a6}.table-hero{background:radial-gradient(at 50% 120%,#3e6b5c 0%,#2b5246 45%,#1f3a32 100%);border:1px solid #1a2e28;border-radius:14px;margin-bottom:22px;padding:26px 26px 22px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 6px #4a3628,inset 0 0 0 7px #6e5636,0 20px 40px #00000059}.th-head h1{font-family:var(--display);text-transform:uppercase;color:#f6ebd3;font-size:46px;line-height:.95}.th-head p{color:#cfe1d7;max-width:60ch;margin-top:6px}.seats{flex-wrap:wrap;gap:14px;margin-top:22px;display:flex}.seat{text-align:center;border-radius:var(--r-md);background:#141e1a73;border:1px solid #ffffff14;justify-items:center;gap:6px;width:120px;padding:12px 8px;display:grid}.seat>span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:14px;font-weight:700;overflow:hidden}.seat small{color:#b8cfc4;font-size:12px}.seat.me{border-color:var(--brass)}.seat.empty{color:#cfe1d7;border-style:dashed;border-color:#ffffff40}.seat.empty:hover{background:#141e1ab3}.seat .plus{border:1px dashed #ffffff59;border-radius:8px;place-items:center;width:56px;height:56px;display:grid}.home-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;display:grid}.tile{text-align:left;background:var(--walnut-2);border:1px solid var(--line);border-radius:var(--r-md);align-content:start;gap:6px;padding:16px;display:grid}button.tile:hover{border-color:var(--maple-dim)}.tile h2{font-size:19px}.tile-sub{color:var(--maple-dim);font-size:14px}.tile-daily{grid-column:span 2;grid-template-columns:180px 1fr;align-items:center;gap:16px}.tile-board .board{box-shadow:0 0 0 3px #1e140e}.tile-text{justify-items:start;gap:8px;display:grid}.stats-tile{grid-template-columns:1fr 1fr;gap:14px}.stats-tile small{color:var(--muted);margin-top:4px;font-size:12px;display:block}.tile-rush{background:linear-gradient(160deg, var(--walnut-2), #4a2a1a)}.side-chip{border-radius:4px;justify-self:start;padding:2px 9px;font-size:12px;font-weight:800;display:inline-block}.side-chip.w{color:var(--walnut);background:#f3e6cc}.side-chip.b{color:var(--maple);border:1px solid var(--line);background:#120c08}.bots-layout{grid-template-columns:minmax(0,1fr) minmax(280px,380px);align-items:start;gap:20px;display:grid}.bot-list{gap:6px;display:grid}.bot-row{border-radius:var(--r-md);background:var(--walnut-2);border:1px solid var(--line);text-align:left;align-items:center;gap:14px;padding:8px 14px 8px 8px;display:flex}.bot-row:hover{border-color:var(--maple-dim)}.bot-row.on{border-color:var(--brass);background:var(--walnut-3)}.bot-row-name{flex:1;font-weight:700;display:grid}.bot-row-name small{color:var(--muted);font-weight:600}.bot-row-rating{font-family:var(--display);color:var(--brass-hi);font-size:24px;font-weight:800}.win-tick{color:var(--good);font-weight:800}.bot-detail{background:var(--walnut-2);border:1px solid var(--line);border-top:6px solid var(--tone);border-radius:var(--r-md);text-align:center;justify-items:center;padding:22px;display:grid;position:sticky;top:16px}.bot-detail h2{font-family:var(--display);text-transform:uppercase;margin-top:12px;font-size:34px}.bot-rating{font-family:var(--display);color:var(--brass-hi);font-size:22px;font-weight:800}.bot-blurb{color:var(--maple-dim);margin:8px 0}.bot-detail blockquote{color:var(--maple-dim);margin:4px 0 6px;font-style:italic}.bot-detail .field-label{justify-self:start}.bot-detail .seg{width:100%}.bot-detail .seg button{flex:1}.live-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:18px;display:grid}.tc-grid{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.tc-btn{text-align:center;border-radius:var(--r-sm);background:var(--walnut);border:1px solid var(--line);padding:9px 6px;display:grid}.tc-btn b{font-family:var(--display);font-size:20px}.tc-btn small{color:var(--muted);font-size:12px}.tc-btn.on{border-color:var(--brass);background:var(--walnut-3);box-shadow:inset 0 -2px 0 var(--brass)}.challenge-row{border-top:1px solid var(--line);align-items:center;gap:10px;padding:10px 0;display:flex}.challenge-row span{flex:1}.panel.incoming{border-color:var(--brass);margin-bottom:18px}.member-list{gap:6px;display:grid}.member{border-radius:var(--r-sm);background:var(--walnut);border:1px solid #0000;align-items:center;gap:12px;padding:8px;display:flex}.member.on{border-color:var(--brass)}.member-name{flex:1;font-weight:700;display:grid}.member-name small{color:var(--muted);font-size:12px;font-weight:600}.live-game-row{border-radius:var(--r-sm);background:var(--walnut);text-align:left;justify-content:space-between;width:100%;margin-bottom:6px;padding:10px 12px;display:flex}.live-game-row i{color:var(--muted);font-style:normal}.live-game-row small{color:var(--muted)}.mode-row{grid-template-columns:1.6fr repeat(4,1fr);gap:12px;margin-bottom:26px;display:grid}.mode-card{text-align:left;border-radius:var(--r-md);background:var(--walnut-2);border:1px solid var(--line);align-content:start;gap:6px;padding:16px;display:grid;position:relative}.mode-card:hover{border-color:var(--maple-dim)}.mode-card h2{font-size:18px}.mode-card p{color:var(--maple-dim);font-size:14px}.mode-card.main{background:linear-gradient(150deg, #3c3020, var(--walnut-2));border-color:#6e5636}.mode-num{font-family:var(--display);color:var(--brass-hi);font-size:40px;font-weight:800;position:absolute;top:12px;right:16px}.theme-section{margin-bottom:22px}.theme-section h2{margin-bottom:10px;font-size:18px}.theme-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;display:grid}.theme-btn{text-align:left;border-radius:var(--r-sm);background:var(--walnut-2);border:1px solid var(--line);gap:2px;padding:11px 12px;display:grid;position:relative}.theme-btn:hover{border-color:var(--brass)}.theme-btn small{color:var(--muted);padding-right:36px;font-size:12px}.theme-btn .count{color:var(--muted);font-size:12px;position:absolute;top:10px;right:10px}.trainer-layout,.lesson-layout{grid-template-columns:minmax(0,1fr) minmax(260px,340px);align-items:start;gap:26px;max-width:1180px;margin:0 auto;display:grid}.status-card{background:var(--walnut-2);border:1px solid var(--line);border-left:5px solid var(--maple-dim);border-radius:var(--r-sm);justify-items:start;gap:6px;padding:14px 16px;display:grid}.status-card h2{font-size:20px}.status-card.play,.status-card.reply{border-left-color:var(--brass)}.status-card.wrong{border-left-color:var(--flag)}.status-card.solved{border-left-color:var(--good)}.status-card.showing,.status-card.shown{border-left-color:#6c9bd2}.puzzle-meta{gap:8px;display:grid}.theme-tags{flex-wrap:wrap;gap:6px;display:flex}.rush-score{background:var(--walnut-2);border:1px solid var(--line);border-radius:var(--r-sm);align-items:flex-end;gap:22px;padding:14px 16px;display:flex}.rush-score small{color:var(--muted);margin-top:4px;font-size:12px;display:block}.big-num.low{color:var(--flag)}.strikes{grid-template-columns:repeat(3,auto);column-gap:6px;display:grid}.strikes small{grid-column:1/-1}.strikes .x{color:var(--walnut-3);font-size:24px;font-weight:800}.strikes .x.on{color:var(--flag)}.rush-marks{flex-wrap:wrap;gap:4px;display:flex}.rush-marks span{border-radius:4px;place-items:center;width:24px;height:24px;font-size:13px;font-weight:800;display:grid}.rush-marks .ok{background:var(--felt)}.rush-marks .bad{background:#7a2b22}.rush-cover{aspect-ratio:1;text-align:center;background:var(--walnut-2);border:1px dashed var(--line);border-radius:var(--r-md);color:var(--brass-hi);place-content:center;justify-items:center;gap:12px;padding:20px;display:grid}.rush-cover h2{font-family:var(--display);text-transform:uppercase;color:var(--maple);font-size:40px}.rush-cover .btn.big{width:auto;min-width:200px}.to-move{font-weight:700}.race-board h2{margin:6px 0;font-size:16px}.race-row{border-radius:var(--r-sm);align-items:center;gap:10px;padding:6px 8px;display:flex}.race-row.me{background:var(--walnut-3)}.race-row .pos{width:18px;color:var(--muted);font-weight:800}.race-row .nm{flex:1}.race-row b{font-family:var(--display);font-size:22px}.race-row .sx{color:var(--flag);width:30px}.gambit-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.gambit-card{text-align:left;border-radius:var(--r-md);background:var(--walnut-2);border:1px solid var(--line);align-content:start;gap:8px;padding:14px 16px;display:grid}.gambit-card:hover{border-color:var(--brass)}.gambit-card.side-w{box-shadow:inset 4px 0 #f3e6cc}.gambit-card.side-b{box-shadow:inset 4px 0 #0f0a07}.gc-top{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.gambit-card h3{font-size:19px}.gc-moves{font-family:var(--display);color:var(--brass-hi);letter-spacing:.01em;font-size:16px;font-weight:600}.gc-tag{color:var(--maple-dim);font-size:14px}.gc-foot{color:var(--muted);justify-content:space-between;font-size:12px;display:flex}.sound-chip{background:var(--walnut-3);border-radius:4px;padding:2px 8px;font-size:12px;font-weight:700}.s-sound{background:#2e5a3e}.s-playable{background:#3f4e2a}.s-dubious{background:#5c4220}.s-unsound{background:#5e2620}.done-chip{color:var(--good);font-size:13px;font-weight:700}.lesson-tagline{color:var(--maple-dim);max-width:70ch;margin:-8px 0 14px;font-size:18px}.lesson>.seg{margin-bottom:18px}.lesson-foot{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:10px;margin-top:22px;padding-top:18px;display:flex}.coach-card{background:var(--walnut-2);border:1px solid var(--line);border-left:5px solid var(--brass);border-radius:var(--r-sm);align-content:start;justify-items:start;gap:6px;min-height:96px;padding:14px 16px;display:grid}.coach-card h3{font-family:var(--display);align-items:center;gap:8px;font-size:24px;display:flex}.coach-card .score{color:var(--muted);font-size:18px}.variations{background:var(--walnut-2);border-radius:var(--r-sm);gap:6px;padding:12px 14px;font-size:14px;display:grid}.variations h3{font-size:15px}.about{gap:18px;max-width:760px;display:grid}.about h3{margin-bottom:6px;font-size:18px}.about ul{gap:6px;margin:0;padding-left:20px;display:grid}.facts{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.facts div{background:var(--walnut-2);border-radius:var(--r-sm);padding:10px 12px;display:grid}.facts small{color:var(--muted);font-size:12px}.facts b{font-size:17px}.moves-line{font-family:var(--display);color:var(--brass-hi);font-size:17px;font-weight:600}.trap-picker{gap:8px;margin-bottom:14px;padding-bottom:10px;display:flex;overflow-x:auto}.trap-chip{text-align:left;border-radius:var(--r-sm);background:var(--walnut-2);border:1px solid var(--line);flex:none;padding:8px 12px;font-size:14px;font-weight:700;display:grid}.trap-chip small{color:var(--muted);font-size:12px;font-weight:600}.trap-chip.on{border-color:var(--brass);background:var(--walnut-3)}.trap-chip.solved{color:#bfe3bc}.explorer-layout{grid-template-columns:260px minmax(0,1fr) minmax(240px,320px);align-items:start;gap:20px;display:grid}.explorer-layout .board-col.solo{width:min(100%,100dvh - 160px,600px)}.ex-list{gap:8px;display:grid}.search-wrap{position:relative}.search-wrap .icon{color:var(--muted);position:absolute;top:10px;left:10px}.search-wrap input{padding-left:34px}.ex-results{gap:2px;max-height:calc(100dvh - 210px);display:grid;overflow:auto}.ex-row{text-align:left;border-radius:4px;gap:8px;padding:7px 8px;font-size:14px;display:flex}.ex-row:hover{background:var(--walnut-2)}.ex-row.on{background:var(--walnut-3)}.next-moves{gap:4px;display:grid}.next-moves h3{margin-bottom:4px;font-size:15px}.next-move{text-align:left;background:var(--walnut-2);border-radius:4px;grid-template-columns:52px 1fr auto;gap:8px;padding:6px 8px;font-size:13px;display:grid}.next-move b{font-family:var(--display);color:var(--brass-hi);font-size:17px}.next-move small{color:var(--muted)}.review-summary{grid-template-columns:1fr 1fr 1.6fr;gap:12px;margin-bottom:14px;display:grid}.acc-card{border-radius:var(--r-md);align-content:center;gap:4px;padding:14px 16px;display:grid}.acc-card.w{color:var(--walnut);background:#f1e2c4}.acc-card.b{border:1px solid var(--line);background:#140d09}.acc-card .big-num{font-size:48px}.acc-card small{opacity:.75;font-size:13px}.class-table{border-collapse:collapse;background:var(--walnut-2);border-radius:var(--r-md);width:100%;font-size:13px;overflow:hidden}.class-table td{padding:3px 10px}.class-table .n{text-align:center;width:40px;font-weight:800;font-family:var(--display);font-size:16px}.cls-dot{color:#fff;border-radius:50%;place-items:center;min-width:20px;height:20px;padding:0 3px;font-size:10px;font-weight:800;display:inline-grid}.key-moments{gap:4px;display:grid}.key-moments h3{font-size:15px}.km{text-align:left;background:var(--walnut-2);border-radius:4px;align-items:center;gap:8px;padding:6px 8px;font-size:13px;display:flex}.progress{background:var(--walnut-2);border:1px solid var(--line);border-radius:99px;max-width:520px;height:14px;margin:30px 0 10px;overflow:hidden}.progress div{background:linear-gradient(90deg, var(--brass), var(--brass-hi));height:100%;transition:width .2s}.game-history{gap:4px;display:grid}.hist-row{text-align:left;border-radius:var(--r-sm);background:var(--walnut-2);grid-template-columns:30px 1fr;column-gap:10px;padding:8px 10px;display:grid}.hist-row small{color:var(--muted);grid-column:2;font-size:12px}.hist-row i{color:var(--muted);font-style:normal}.res{font-weight:800;font-family:var(--display);border-radius:4px;grid-row:span 2;place-items:center;font-size:18px;display:grid}.res.win{background:var(--felt)}.res.loss{background:#7a2b22}.res.draw{background:var(--walnut-3)}.engine-panel{background:var(--walnut-2);border:1px solid var(--line);border-radius:var(--r-sm);gap:4px;padding:8px 12px;display:grid}.pv-line{text-align:left;border-top:1px solid var(--line);grid-template-columns:54px 1fr;gap:8px;padding:4px 0;font-size:13px;display:grid}.pv-line b{font-family:var(--display);font-size:17px}.pv-line b.pos{color:#f3e6cc}.pv-line b.neg{color:var(--muted)}.pv-line span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.import{gap:8px;display:grid}.import .row{gap:8px;display:flex}.profile-head{align-items:center;gap:18px;margin-bottom:20px;display:flex}.profile-head h2{font-family:var(--display);text-transform:uppercase;font-size:36px}.rating-row{grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:20px;display:grid}.rating-cell{background:var(--walnut-2);border:1px solid var(--line);border-radius:var(--r-md);gap:4px;padding:14px;display:grid}.rating-cell small{color:var(--muted);font-size:13px}.profile-cols{grid-template-columns:1.2fr 1fr;align-items:start;gap:16px;display:grid}.wld{font-family:var(--display);gap:14px;margin-bottom:6px;font-size:28px;font-weight:800;display:flex}.wld .w{color:var(--good)}.wld .l{color:var(--flag)}.wld .d{color:var(--maple-dim)}.ach-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.ach{border-radius:var(--r-sm);background:var(--walnut);border:1px dashed var(--line);opacity:.55;padding:10px 12px;display:grid}.ach small{color:var(--muted);font-size:12px}.ach.got{opacity:1;border:1px solid var(--brass);background:linear-gradient(150deg, #3c3020, var(--walnut))}.lb{gap:6px;max-width:640px;margin:0;padding:0;list-style:none;display:grid}.lb li{background:var(--walnut-2);border-radius:var(--r-sm);align-items:center;gap:12px;padding:8px 14px;display:flex}.lb li.me{box-shadow:inset 0 0 0 1px var(--brass)}.lb .pos{width:28px;font-family:var(--display);color:var(--muted);font-size:22px;font-weight:800}.lb li:first-child .pos{color:var(--brass-hi)}.lb .nm{flex:1;font-weight:700;display:grid}.lb .nm small{color:var(--muted);font-size:12px;font-weight:600}.lb .big-num{font-size:26px}.settings-layout{grid-template-columns:360px 1fr;align-items:start;gap:28px;display:grid}.settings h2{margin:18px 0 10px;font-size:18px}.settings-layout>div>h2:first-child{margin-top:0}.swatches{flex-wrap:wrap;gap:8px;display:flex}.swatch{border-radius:var(--r-sm);background:var(--walnut-2);border:1px solid var(--line);align-items:center;gap:8px;padding:6px 12px 6px 6px;font-size:14px;font-weight:600;display:flex}.swatch span{border-radius:4px;width:28px;height:28px}.swatch.piece img{width:28px;height:28px;margin-right:-6px}.swatch.on{border-color:var(--brass);box-shadow:inset 0 -2px 0 var(--brass)}@media (width<=1100px){.mode-row{grid-template-columns:repeat(2,1fr)}.mode-card.main{grid-column:span 2}.explorer-layout{grid-template-columns:1fr}.ex-results{max-height:240px}.review-summary{grid-template-columns:1fr 1fr}.class-table{grid-column:span 2}.rating-row{grid-template-columns:repeat(3,1fr)}}@media (width<=900px){.game-layout,.trainer-layout,.lesson-layout,.bots-layout,.live-layout,.profile-cols,.settings-layout{grid-template-columns:1fr}.board-col,.board-col.solo{width:min(100%,640px);margin:0 auto}.bot-detail{position:static}.scoresheet{max-height:180px}}@media (width<=720px){:root{--rail:0px}.shell{padding-bottom:calc(64px + env(safe-area-inset-bottom) + var(--discord-safe-area-inset-bottom,0px));grid-template-columns:1fr}.rail{height:auto;padding:6px 4px calc(6px + env(safe-area-inset-bottom) + var(--discord-safe-area-inset-bottom,0px));border-right:0;border-top:1px solid var(--line);z-index:50;flex-direction:row;position:fixed;inset:auto 0 0}.brand,.rail-foot .rail-btn,.rail-me-name{display:none}.rail nav{flex:1;justify-content:space-around;display:flex}.rail-btn{flex-direction:column;gap:2px;padding:6px 4px;font-size:10px}.rail-btn.on{box-shadow:inset 0 -3px 0 var(--brass)}.rail-btn:nth-child(6){display:none}.rail-foot{margin:0}.stage{padding:12px 12px 24px}.screen-head h1{font-size:28px}.th-head h1{font-size:34px}.table-hero{padding:18px}.seat{width:96px}.tile-daily{grid-column:auto;grid-template-columns:120px 1fr}.clock{min-width:104px}.clock-face{font-size:24px}.tc-grid,.rating-row{grid-template-columns:repeat(2,1fr)}.ach-grid{grid-template-columns:1fr}.toaster{bottom:80px;left:12px;right:12px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.lesson-layout .board-col.solo{width:min(100%,100dvh - 250px,720px)}.traps-screen .lesson-layout .board-col.solo{width:min(100%,100dvh - 230px,720px)}.review .board-col{width:min(100%,100dvh - 120px,680px)}.btn.armed{background:var(--flag);color:#fff;border-color:var(--flag)}.guest-name{flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px;display:flex}.guest-name input{width:180px;padding:5px 8px}html,body{overscroll-behavior:none}body{-webkit-tap-highlight-color:transparent}button,a,.board{touch-action:manipulation}.board{-webkit-touch-callout:none;-webkit-user-select:none}.appbar{border-radius:var(--r-md);background:var(--walnut-2);border:1px solid var(--brass);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;margin-bottom:16px;padding:12px 16px;display:flex}.appbar-text{min-width:220px;color:var(--maple-dim);flex:1;font-size:14px}.appbar-text b{color:var(--maple)}.appbar-actions{flex-wrap:wrap;gap:8px;display:flex}.steps{color:var(--maple-dim);gap:10px;margin:0;padding-left:22px;display:grid}.steps b{color:var(--maple)}.share-glyph{background:var(--walnut-3);min-width:22px;height:22px;color:var(--maple);border-radius:5px;place-items:center;padding:0 4px;font-size:13px;display:inline-grid}.profile-actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px;display:flex}.profile-actions .fine{max-width:40ch}@media (display-mode:standalone){.rail{padding-top:max(14px, env(safe-area-inset-top))}}@media (width<=720px){.stage{padding-top:max(12px, env(safe-area-inset-top));padding-left:max(12px, env(safe-area-inset-left));padding-right:max(12px, env(safe-area-inset-right))}.appbar{padding:12px}.appbar-actions{width:100%}.appbar-actions .btn{flex:1}.plate .bubble{max-width:52%;box-shadow:none;border-radius:12px;margin:0 0 0 auto;padding:5px 10px;font-size:12px;animation:none;position:static}.plate:last-child .bubble{border-radius:12px}}
