@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(../media/barlow-vietnamese-400-normal.1_93s38fqzg86.woff2)format("woff2"),url(../media/barlow-vietnamese-400-normal.2xb42gyyni94-.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:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(../media/barlow-latin-ext-400-normal.31m49fiemkz4b.woff2)format("woff2"),url(../media/barlow-latin-ext-400-normal.22si0i621lsac.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:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(../media/barlow-latin-400-normal.2g-m-43w4inzo.woff2)format("woff2"),url(../media/barlow-latin-400-normal.0crhl7392v5q0.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:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(../media/barlow-vietnamese-500-normal.2m9bp83hy5_hx.woff2)format("woff2"),url(../media/barlow-vietnamese-500-normal.3_-pq67p-ey1z.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:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(../media/barlow-latin-ext-500-normal.1wrr54q_45yqh.woff2)format("woff2"),url(../media/barlow-latin-ext-500-normal.0nd7oyn5tiea-.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:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(../media/barlow-latin-500-normal.1e42q6h-am56h.woff2)format("woff2"),url(../media/barlow-latin-500-normal.0mgplsqvrpi8w.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:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(../media/barlow-vietnamese-600-normal.2icz6ahtm-_en.woff2)format("woff2"),url(../media/barlow-vietnamese-600-normal.1jygz385khx39.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:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(../media/barlow-latin-ext-600-normal.2tf_3wil7nebp.woff2)format("woff2"),url(../media/barlow-latin-ext-600-normal.0gw-fbepbmfxp.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:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(../media/barlow-latin-600-normal.20ymm9zt6h9oi.woff2)format("woff2"),url(../media/barlow-latin-600-normal.3fzrhzm2e5-pj.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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(../media/barlow-condensed-vietnamese-500-normal.3y1q1jhianted.woff2)format("woff2"),url(../media/barlow-condensed-vietnamese-500-normal.1k2wvuoe3zywi.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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(../media/barlow-condensed-latin-ext-500-normal.24wyemoa7l12j.woff2)format("woff2"),url(../media/barlow-condensed-latin-ext-500-normal.2e_826kf2bv_r.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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(../media/barlow-condensed-latin-500-normal.3wun_rgcl0ums.woff2)format("woff2"),url(../media/barlow-condensed-latin-500-normal.28rq7sis4b5t1.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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(../media/barlow-condensed-vietnamese-600-normal.43ud19ilw2-pl.woff2)format("woff2"),url(../media/barlow-condensed-vietnamese-600-normal.0csyzgbq6oph-.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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(../media/barlow-condensed-latin-ext-600-normal.0_w6c_5g3mtxc.woff2)format("woff2"),url(../media/barlow-condensed-latin-ext-600-normal.40rgster27fo6.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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(../media/barlow-condensed-latin-600-normal.289y3avl9x-vx.woff2)format("woff2"),url(../media/barlow-condensed-latin-600-normal.0gvkp1c3flf_w.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{--bg:#1e2421;--surface:#262e2a;--surface-2:#2e3833;--line:#3a4640;--text:#ece6d8;--muted:#a5ada8;--brass:#d4a73c;--brass-ink:#241d0b;--best:#79b38a;--inaccuracy:#8eb4d6;--mistake:#e3a644;--blunder:#d9604a;--sq-light:#e6d7bc;--sq-dark:#9c7a54;--font-ui:"Barlow", system-ui, sans-serif;--font-display:"Barlow Condensed", "Barlow", system-ui, sans-serif;--radius:10px}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);margin:0}body{font-family:var(--font-ui);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.5}a{color:inherit}button,input{font:inherit}:focus-visible{outline:2px solid var(--brass);outline-offset:2px}.num{font-variant-numeric:tabular-nums}.shell{grid-template-columns:208px 1fr;min-height:100vh;display:grid}.rail{border-right:1px solid var(--line);flex-direction:column;gap:4px;height:100vh;padding:24px 16px;display:flex;position:sticky;top:0}.brand{font-family:var(--font-display);letter-spacing:.01em;align-items:center;gap:10px;margin:0 8px 24px;font-size:1.5rem;font-weight:600;display:flex}.brand img{width:28px;height:28px}.rail a.nav{color:var(--muted);border-radius:8px;padding:8px 12px;text-decoration:none}.rail a.nav:hover{color:var(--text);background:var(--surface)}.rail a.nav[aria-current=page]{color:var(--text);background:var(--surface-2);box-shadow:inset 3px 0 0 var(--brass)}.rail .soon{color:#6f7a74;padding:8px 12px;font-size:.95rem}.rail form{margin-top:auto}.linkish{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:8px 12px}.linkish:hover{color:var(--text)}main.content{width:100%;max-width:1240px;padding:32px clamp(16px,4vw,48px) 64px}@media (max-width:820px){.shell{grid-template-columns:1fr}.rail{z-index:5;border-right:0;border-bottom:1px solid var(--line);background:var(--bg);flex-direction:row;align-items:center;height:auto;padding:10px 12px;position:sticky;top:0;overflow-x:auto}.brand{margin:0 8px 0 0;font-size:1.25rem}.brand span,.rail .soon{display:none}.rail form{margin:0 0 0 auto}main.content{padding-top:20px}}h1,h2,h3{font-family:var(--font-display);margin:0;font-weight:600;line-height:1.1}h1{font-size:clamp(2rem,4vw,2.75rem)}h2{margin-bottom:12px;font-size:1.5rem}h3{font-size:1.15rem}.muted{color:var(--muted)}.small{font-size:.875rem}.btn{border:1px solid var(--line);background:var(--surface);color:var(--text);cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:8px 14px;text-decoration:none;display:inline-flex}.btn:hover{border-color:var(--muted)}.btn.primary{background:var(--brass);color:var(--brass-ink);border-color:var(--brass);font-weight:600}.btn.primary:hover{filter:brightness(1.06)}.btn:disabled{opacity:.6;cursor:default}.verdict{border-bottom:1px solid var(--line);margin-bottom:32px;padding:8px 0 32px}.verdict .lead{font-family:var(--font-display);max-width:22ch;font-size:clamp(2rem,4.6vw,3.4rem);font-weight:600;line-height:1.02}.verdict .lead em{color:var(--brass);font-style:normal}.verdict p{max-width:62ch;color:var(--muted);margin:14px 0 0}.motif-bars{gap:10px;max-width:640px;margin-top:24px;display:grid}.motif-bar{grid-template-columns:1fr 64px;align-items:center;gap:12px;display:grid}.motif-bar .track{background:var(--surface);border-radius:6px;height:34px;position:relative;overflow:hidden}.motif-bar .fill{background:color-mix(in srgb, var(--blunder) 38%, var(--surface));position:absolute;inset:0 auto 0 0}.motif-bar:first-child .fill{background:color-mix(in srgb, var(--brass) 55%, var(--surface))}.motif-bar .name{white-space:nowrap;padding:0 12px;line-height:34px;position:relative}.motif-bar .count{font-family:var(--font-display);text-align:right;font-size:1.15rem}.stats{border:1px solid var(--line);border-radius:var(--radius);grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:0;margin-bottom:40px;display:grid}.stat{border-right:1px solid var(--line);padding:16px 20px}.stat:last-child{border-right:0}.stat .v{font-family:var(--font-display);font-size:2.4rem;font-weight:600;line-height:1}.stat .l{color:var(--muted);margin-top:6px;font-size:.9rem}@media (max-width:820px){.stat{border-right:0;border-bottom:1px solid var(--line)}.stat:last-child{border-bottom:0}}.syncbar{flex-wrap:wrap;align-items:center;gap:12px 20px;margin-bottom:16px;display:flex}.games{border-collapse:collapse;width:100%}.games th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:8px 10px;font-size:.875rem;font-weight:500}.games td{border-bottom:1px solid var(--line);vertical-align:middle;padding:12px 10px}.games tr.row:hover td{background:var(--surface)}.games a.open{font-weight:500;text-decoration:none}.side{vertical-align:-1px;border:1px solid var(--muted);border-radius:3px;width:12px;height:12px;margin-right:8px;display:inline-block}.side.white{background:#efe9dc}.side.black{background:#111}.res{font-weight:600}.res.win{color:var(--best)}.res.loss{color:var(--blunder)}.res.draw{color:var(--muted)}.counts{font-variant-numeric:tabular-nums;gap:10px;display:inline-flex}.counts .b{color:var(--blunder)}.counts .m{color:var(--mistake)}.counts .i{color:var(--inaccuracy)}.tag{background:var(--surface-2);color:var(--text);border-radius:999px;margin:2px 4px 2px 0;padding:2px 8px;font-size:.8rem;display:inline-block}.bot{color:var(--muted);margin-left:6px;font-size:.8rem}@media (max-width:820px){.games .hide-sm{display:none}}.empty{border:1px dashed var(--line);border-radius:var(--radius);max-width:640px;padding:28px}.review{grid-template-columns:minmax(280px,600px) minmax(300px,1fr);align-items:start;gap:28px;display:grid}@media (max-width:980px){.review{grid-template-columns:1fr}}.board-wrap{grid-template-columns:18px 1fr;gap:8px;display:grid}.evalbar{background:#2b2b2b;border-radius:4px;position:relative;overflow:hidden}.evalbar .white-part{background:#efe9dc;transition:height .25s;position:absolute;bottom:0;left:0;right:0}.evalbar.flipped .white-part{top:0;bottom:auto}@media (prefers-reduced-motion:reduce){.evalbar .white-part{transition:none}}.board{aspect-ratio:1;width:100%;position:relative}.board .cg-wrap{width:100%;height:100%}.board-controls{justify-content:center;gap:8px;margin-top:12px;display:flex}.board-controls .btn{justify-content:center;min-width:48px}.players{justify-content:space-between;padding:6px 0 6px 26px;font-size:.95rem;display:flex}.panel{background:var(--surface);border-radius:var(--radius);padding:18px 20px}.panel+.panel{margin-top:16px}.moment .cls{font-family:var(--font-display);font-size:1.8rem;font-weight:600;line-height:1}.moment .cls.blunder{color:var(--blunder)}.moment .cls.mistake{color:var(--mistake)}.moment .cls.inaccuracy{color:var(--inaccuracy)}.moment .cls.best,.moment .cls.good{color:var(--best)}.moment dl{grid-template-columns:max-content 1fr;gap:6px 16px;margin:14px 0 0;display:grid}.moment dt{color:var(--muted)}.moment dd{margin:0}.line{font-weight:500}.source{color:var(--muted);margin-top:12px;font-size:.8rem}.movelist{font-variant-numeric:tabular-nums;grid-template-columns:40px 1fr 1fr;max-height:340px;display:grid;overflow-y:auto}.movelist .no{color:var(--muted);padding:4px 0}.movelist button{text-align:left;color:var(--text);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:space-between;gap:6px;padding:4px 8px;display:flex}.movelist button:hover{background:var(--surface-2)}.movelist button[aria-current=true]{background:var(--brass);color:var(--brass-ink)}.movelist .mk{font-weight:600}.mk.blunder{color:var(--blunder)}.mk.mistake{color:var(--mistake)}.mk.inaccuracy{color:var(--inaccuracy)}.movelist button[aria-current=true] .mk{color:var(--brass-ink)}.errors-nav{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.login{place-items:center;min-height:100vh;padding:24px;display:grid}.login form{gap:14px;width:min(360px,100%);display:grid}.login input{background:var(--surface);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:10px 12px}.login .error{color:var(--blunder)}.board cg-board{background-color:var(--sq-light);background-image:repeating-conic-gradient(var(--sq-dark) 0 25%, var(--sq-light) 0 50%);background-position:0 0;background-size:25% 25%;border-radius:4px}cg-board square.last-move{background-color:#d4a73c6b}cg-board square.check{background:radial-gradient(#d9604ae6 0%,#d9604a00 70%)}.cg-wrap coords{font-family:var(--font-ui);font-weight:600}.cg-wrap coords.ranks coord:nth-child(odd),.cg-wrap coords.files coord:nth-child(2n){color:var(--sq-light)}.cg-wrap coords.ranks coord:nth-child(2n),.cg-wrap coords.files coord:nth-child(odd){color:var(--sq-dark)}.training .players{padding-left:0}.board-solo{max-width:600px}.prompt{font-family:var(--font-display);margin:0 0 8px;font-size:1.5rem;font-weight:500;line-height:1.2}.concept{border-left:3px solid var(--brass);margin:16px 0;padding:2px 0 2px 14px}.concept h3{margin-bottom:4px;font-size:1.1rem}.concept p{color:var(--text);max-width:60ch;margin:0}.error{color:var(--blunder)}
