/* Self-hosted fonts so the game looks the same on every device. Licenses sit next to each file in app/assets/fonts. */
/* Chess glyphs only (DejaVu Sans subset); listed first in every stack, unicode-range keeps it to the pieces. */
@font-face{font-family:"Plymico Chess";src:url("/assets/chess-pieces-354e3a67.woff2") format("woff2");unicode-range:U+2654-265F;font-display:block}
/* Inter (body text) and Gelasio (heading fallback where Georgia is missing, e.g. Android and Linux; same metrics), Latin subsets. */
@font-face{font-family:Inter;src:url("/assets/inter-193264b7.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:Gelasio;src:url("/assets/gelasio-34f69289.woff2") format("woff2");font-weight:400 700;font-style:normal;font-display:swap}
:root{--paper:#f7f7f2;--ink:#28372b;--muted:#7b8277;--olive:#486440;--line:#e4e7dc;--light-square:#e5e9d8;--dark-square:#7e956f;--radius:16px}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Plymico Chess",Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:14px;line-height:1.6}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #cba456;outline-offset:4px}h1,h2,h3,p{margin-top:0}h1{font-family:"Plymico Chess",Georgia,Gelasio,serif;font-size:clamp(30px,3vw,43px);line-height:1.16;font-weight:500;letter-spacing:-1.5px;margin-bottom:12px}h2{font-size:21px;line-height:1.3;font-weight:600;letter-spacing:-.5px}h3{font-size:17px;line-height:1.4;margin-bottom:10px}small{font-size:12px}input:not([type=checkbox]):not([type=radio]):not([type=submit]),select{width:100%;border:1px solid #dfe3d7;background:#fbfcf8;border-radius:8px;padding:12px 14px;color:var(--ink);min-height:47px}input[type=checkbox],input[type=radio]{accent-color:var(--olive)}.button{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:13px 22px;min-height:46px;border:1px solid transparent;border-radius:8px;font-weight:600;font-size:13px;transition:background .18s,transform .18s;white-space:nowrap}.button:hover{transform:translateY(-1px)}.primary{background:var(--olive);color:#fff}.primary:hover{background:#36502f}.secondary{background:#fff;border-color:var(--line);color:var(--ink)}.secondary:hover{background:#eef0e6}.small{padding:9px 16px;min-height:38px;font-size:12px}.text-button{border:0;background:none;padding:8px 0;color:var(--muted);font-size:12px}.text-button:hover{color:var(--ink)}.danger{color:#9f574c}.muted{color:var(--muted)}.eyebrow{display:block;font-size:10px;letter-spacing:2px;font-weight:700;color:#89957d;margin-bottom:14px}.heading-dot{color:#7e956f}.subtle-link{font-size:12px;color:#556d49;font-weight:600}.back-link{display:inline-block;color:var(--muted);font-size:12px;margin-bottom:26px}.sidebar{position:fixed;inset:0 auto 0 0;width:238px;background:#f0f2e9;border-right:1px solid var(--line);padding:32px 25px;display:flex;flex-direction:column;z-index:5}.brand{display:flex;align-items:center;gap:9px;font-size:25px;font-family:"Plymico Chess",Georgia,Gelasio,serif;font-weight:600;letter-spacing:-.7px;line-height:1.2}.brand-mark{font-family:"Plymico Chess",Georgia,Gelasio,serif;font-size:37px;line-height:1}.brand-dot{color:#7e956f}.sidebar-caption{font-size:8px;letter-spacing:1.7px;color:#88917f;margin:14px 0 41px 4px}.sidebar nav{display:flex;flex-direction:column;gap:5px}.nav-link{display:flex;gap:13px;align-items:center;padding:12px 15px;border-radius:8px;font-size:13px;color:#7b8374}.nav-link span{font-size:20px;width:22px;text-align:center;line-height:1}.nav-link.active{background:#e1e7d6;color:var(--olive);font-weight:600}.nav-link:hover{background:#e7ebdd}.sidebar-note{margin:50px 10px 30px;border-top:1px solid #dde2d2;padding-top:26px;position:relative}.sidebar-note>span:first-child{font-size:8px;letter-spacing:2px;color:#8b947e}.sidebar-note p{font-family:"Plymico Chess",Georgia,Gelasio,serif;font-size:21px;line-height:1.35;color:#69765e;margin:13px 0}.note-piece{font-size:72px;color:#d0d8c1;display:block;line-height:1}.sidebar-bottom{margin-top:auto;border-top:1px solid #dde2d2;padding-top:20px}.avatar{display:inline-flex;align-items:center;justify-content:center;background:#e8ecdf;color:#53674b;width:37px;height:37px;border-radius:50%;font-size:11px;font-weight:700;flex-shrink:0}.avatar.own{background:#d3dfc7}.user-chip{display:flex;gap:10px;align-items:center}.user-chip strong{font-size:12px}.user-chip small{display:block;color:#8b9482;font-size:9px}.user-chip>span:last-child{margin-left:auto;color:#8b9482}.signout{margin-left:47px;font-size:10px}.app-shell{margin-left:238px}.topbar{height:83px;padding:0 44px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;background:#fafbf7}.topbar-label{font-size:11px;color:#929989}.topbar-actions{display:flex;gap:23px;align-items:center}.notification-link{font-size:23px;position:relative;display:flex;align-items:center;gap:4px}.notification-count{font-size:9px;background:#e1e7d6;border-radius:10px;padding:1px 5px;color:var(--olive)}.content{padding:39px 44px 50px;max-width:1500px;margin:auto;min-height:calc(100vh - 140px)}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:34px}.page-heading p{margin-bottom:0;font-size:12px}.page-heading .eyebrow{margin-bottom:10px}.decorative-piece{font-size:70px;line-height:1;color:#d4ddc7;padding:0 15px}.stats-row{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:12px;background:#fcfdf9;margin-bottom:36px;padding:23px 0}.stat{padding:0 28px;display:grid;grid-template-columns:1fr auto;gap:2px}.stat:not(:last-child){border-right:1px solid var(--line)}.stat-label{font-size:9px;letter-spacing:1.5px;color:#86917b;align-self:center}.stat strong{font-family:"Plymico Chess",Georgia,Gelasio,serif;font-weight:400;font-size:34px;line-height:1.2}.stat small{font-size:10px;color:#919989;grid-column:1 / -1}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 18px}.section-heading h2,.section-heading h3{margin:0}.count{font-family:"Plymico Chess",Inter,sans-serif;font-size:11px;color:#84917a;background:#edf0e5;border-radius:50%;padding:3px 7px;vertical-align:middle;margin-left:6px}.games-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:21px}.game-card{display:block;background:#fff;border:1px solid var(--line);border-radius:12px;padding:17px 17px 12px;transition:box-shadow .2s,transform .2s}.game-card:hover{transform:translateY(-3px);box-shadow:0 8px 30px #2638240d}.game-card-head{display:flex;align-items:center;gap:9px;margin-bottom:16px}.game-card-head strong{font-size:12px;display:block}.game-card-head small{font-size:9px;color:#8b9284;display:block}.game-card-head .avatar{width:31px;height:31px;font-size:9px}.badge{font-size:9px;display:inline-block;border:1px solid #e5e7df;border-radius:20px;padding:4px 9px;color:#868f7c;background:#f9faf6;white-space:nowrap}.game-card-head .badge{margin-left:auto;font-size:8px}.badge.green{background:#edf3e6;border-color:#dfebd4;color:#64824c}.mini-board{display:grid;grid-template-columns:repeat(8,1fr);border-radius:5px;overflow:hidden;aspect-ratio:1}.mini-board span{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-family:"Plymico Chess",Georgia,Gelasio,serif;font-size:clamp(18px,2.3vw,39px);line-height:1}.light{background:var(--light-square)}.dark{background:var(--dark-square)}.white-piece{color:#fffdf5;text-shadow:0 1px 1px #273326,1px 0 #273326,-1px 0 #273326,0 -1px #273326}.black-piece{color:#28362a;text-shadow:0 1px #f5f4e960}.game-card-foot{display:flex;justify-content:space-between;font-size:9px;color:#8a9380;border-top:1px solid #eff1e9;margin-top:13px;padding-top:11px}.panel{background:#fff;border:1px solid var(--line);border-radius:12px;padding:24px}.invitations{margin-bottom:32px}.invitation-row{display:flex;align-items:center;gap:12px;padding:14px 0;border-top:1px solid var(--line)}.invitation-row small{display:block;color:var(--muted)}.invitation-row .button{margin-left:auto}.empty-board{text-align:center;border:1px dashed #ccd5bf;border-radius:14px;padding:36px 24px 42px;background:linear-gradient(110deg,#f2f5eb,#fcfcf6)}.empty-piece{display:block;font-size:56px;color:#9aad85;line-height:1.3;margin-bottom:12px}.empty-board h2{font-family:"Plymico Chess",Georgia,Gelasio,serif;font-size:29px;font-weight:400;margin-bottom:12px}.empty-board p{color:#8a9380;font-size:12px;margin-bottom:23px}.empty-board .eyebrow{font-size:8px}.news-heading{margin-top:42px}.news-heading .eyebrow{margin-bottom:7px;font-size:8px}.news-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:21px}.news-card{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}.news-image{height:140px;background:var(--section-card,#e5ead9);position:relative;overflow:hidden}.news-art{position:absolute;inset:0;width:100%;height:100%;display:block}.news-image img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.news-category{position:absolute;bottom:12px;left:15px;border-radius:5px;padding:3px 9px;background:var(--section-label,#ffffffeb);color:var(--section-label-text,inherit);font-size:8px;font-weight:600;letter-spacing:.5px}.news-body{padding:18px}.news-body small{font-size:9px;color:#88937b}.news-body h3{font-family:"Plymico Chess",Georgia,Gelasio,serif;font-size:20px;font-weight:400;margin:7px 0 9px}.news-body p{font-size:11px;color:#8b9380;line-height:1.7}.news-body .subtle-link{font-size:10px}.news-empty{display:flex;align-items:center;gap:25px;background:#f1f4e9}.news-empty-piece{font-size:48px;color:#a2b28f}.news-empty h3{margin-bottom:4px}.news-empty p{margin:0;font-size:12px}.footer{border-top:1px solid var(--line);padding:19px 44px;display:flex;justify-content:space-between;font-size:9px;color:#9aa38f}.flash{border:1px solid #d7e4c8;background:#eef5e6;color:#486440;border-radius:9px;padding:13px 18px;margin-bottom:22px;font-size:12px}.flash.alert{background:#fcf0ea;border-color:#efd5c7;color:#995c46}.flash p{margin:3px 0}.two-column{display:grid;grid-template-columns:1.15fr 1fr;gap:35px;align-items:start;max-width:1050px}.form-panel{padding:30px}.stack-form{display:flex;flex-direction:column;gap:9px;margin-top:23px}.stack-form>label{font-size:12px;font-weight:600;margin-top:9px}.stack-form small{font-size:10px;color:#8d9585}.stack-form .button{margin-top:20px}.label-row{display:flex;justify-content:space-between;align-items:center;margin-top:13px}.label-row label{font-size:12px;font-weight:600}.label-row a{font-size:10px;color:var(--olive)}.challenge-aside{text-align:center;padding:45px 20px}.large-knight{font-size:100px;color:#98ac85;line-height:1.3}.challenge-aside h2{font-family:"Plymico Chess",Georgia,Gelasio,serif;font-size:32px;font-weight:400}.challenge-aside p{font-size:12px;color:#8b947f}.fine-print{font-size:10px;color:#929c87;margin:20px 0}.invitation-detail{text-align:center;max-width:650px;margin:auto;padding:35px}.invitation-detail h2{font-family:"Plymico Chess",Georgia,Gelasio,serif;font-size:30px;font-weight:400}.copy-field{display:flex;gap:8px;margin:22px 0}.copy-field input{font-size:11px!important}.action-row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.action-row form{margin:0}.tabs{display:flex;gap:5px;border-bottom:1px solid var(--line);margin-bottom:25px}.tabs a{padding:11px 17px;font-size:12px;color:#8c9681;border-bottom:2px solid transparent}.tabs a.selected{border-bottom-color:var(--olive);color:var(--olive);font-weight:600}.filter-bar{display:flex;justify-content:space-between;gap:20px}.leaderboard-row{display:grid;grid-template-columns:80px 1fr 90px;align-items:center;padding:21px 12px;border-bottom:1px solid #edf0e6}.leaderboard-row:last-child{border-bottom:0}.table-head{font-size:9px;letter-spacing:1.6px;color:#8e987f;padding-top:3px}.leaderboard-row>span:last-child,.score{text-align:right}.leader-player{display:flex;align-items:center;gap:13px}.rank{font-family:"Plymico Chess",Georgia,Gelasio,serif;font-size:24px;color:#98a18c}.score{font-size:20px;font-weight:500}.is-you{background:#f4f7ef;border-radius:8px}.empty-state{text-align:center;padding:35px}.empty-state p{font-size:12px}.notification-row{display:flex;align-items:center;gap:17px;padding:20px 6px;border-bottom:1px solid var(--line)}.notification-row:last-child{border-bottom:0}.notification-row small{display:block;color:var(--muted);margin-top:5px}.notification-row>span:last-child{margin-left:auto;color:#8b997d}.notification-dot{width:7px;height:7px;background:#d6ddcc;border-radius:50%}.unread .notification-dot{background:var(--olive)}.theme-options{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:10px 0}.theme-option{font-size:10px;display:flex;flex-direction:column;gap:5px;align-items:center;cursor:pointer}.theme-swatch{width:100%;height:45px;border-radius:6px;background:repeating-conic-gradient(#e5e9d8 0% 25%,#7e956f 0% 50%) 50% / 24px 24px}.swatch-walnut{background:repeating-conic-gradient(#ecdcc2 0% 25%,#a87955 0% 50%) 50% / 24px 24px}.swatch-midnight{background:repeating-conic-gradient(#cbd0d8 0% 25%,#545e73 0% 50%) 50% / 24px 24px}.swatch-ocean{background:repeating-conic-gradient(#d9e9e7 0% 25%,#6e999b 0% 50%) 50% / 24px 24px}.checkbox-label{display:flex;gap:12px;align-items:flex-start;margin-top:17px!important}.checkbox-label input{margin-top:5px}.checkbox-label small{display:block;font-weight:400;margin-top:2px}.profile-card{text-align:center;padding:40px 25px}.avatar.large{width:80px;height:80px;font-size:27px;margin-bottom:20px}.profile-card h2{font-family:"Plymico Chess",Georgia,Gelasio,serif;font-size:30px}.profile-stats{display:flex;gap:50px;justify-content:center;padding:25px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:27px}.profile-stats strong{font-family:"Plymico Chess",Georgia,Gelasio,serif;font-size:29px;font-weight:400;display:block}.profile-stats span{font-size:10px;color:var(--muted)}.auth-shell{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.auth-art{background:#e9eedf;padding:45px 60px;display:flex;flex-direction:column;justify-content:space-between;min-height:100vh;overflow:hidden}.auth-art h1{font-size:clamp(40px,4.5vw,66px);margin-top:25px}.auth-art p{font-size:13px;color:#7e8e6f}.auth-art>small{color:#8f9d81;font-size:10px}.auth-chess{display:flex;align-items:flex-end;font-family:"Plymico Chess",sans-serif;font-size:150px;color:#9db18a;line-height:1;padding:30px 20px}.auth-chess span{display:inline-block;margin-left:-.06em;color:#49643e;transform:rotate(-12deg);transform-origin:50% 100%}.auth-form{max-width:465px;width:100%;align-self:center;justify-self:center;padding:45px}.auth-form h1{font-size:38px}.auth-form>.muted{font-size:12px}.form-foot{font-size:11px;color:#8c9581;display:block;margin-top:25px}.form-foot a{color:var(--olive);font-weight:600}.compact{margin-bottom:22px}.play-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(260px,1fr);gap:30px;max-width:1100px}.player-strip{display:flex;align-items:center;gap:10px;padding:12px 0}.player-strip strong{font-size:12px}.player-strip>.muted{margin-left:auto;font-size:10px}.board-frame{border-radius:9px;overflow:hidden;box-shadow:0 4px 24px #283b2412;border:6px solid #fff}.chess-board{display:grid;grid-template-columns:repeat(8,1fr);aspect-ratio:1}.square{aspect-ratio:1;border:0;padding:0;position:relative;display:flex;align-items:center;justify-content:center;min-width:0}.piece{font-family:"Plymico Chess",Georgia,Gelasio,serif;font-size:clamp(28px,4.7vw,66px);line-height:1;user-select:none;z-index:1}.coordinate{position:absolute;bottom:3px;left:4px;font-size:8px;line-height:1;text-shadow:none;opacity:.65;color:#324229}.dark .coordinate{color:#f5f7ee}.square.selected{box-shadow:inset 0 0 0 4px #d7c67d;background:#b8bd7a}.square.legal:after{content:"";position:absolute;z-index:2;pointer-events:none;width:21%;height:21%;background:#233d2760;border-radius:50%}.square.legal:has(.piece:not(:empty)):after{width:89%;height:89%;border:4px solid #27432b70;background:none}.square.last-move{background:#c7cc91}.dark.last-move{background:#a4b16d}.board-tools{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}.captured{font-size:16px;letter-spacing:-3px;color:#54634a}/* Top of the panel lines up with the board frame: the opponent strip above the board is 12px + 37px avatar + 12px. */
.game-panel{padding-top:61px;display:flex;flex-direction:column;gap:18px}.game-panel .panel{padding:23px}.turn-panel h2{font-family:"Plymico Chess",Georgia,Gelasio,serif;font-size:28px;font-weight:400}.turn-panel p{font-size:12px}.turn-panel .eyebrow{font-size:8px}.deadline{font-size:10px;color:#90997e;margin-bottom:18px}.selected-move{font-size:11px;color:#8a947c;border-top:1px solid var(--line);padding:14px 0}.move-form .button{width:100%}.turn-panel>.text-button{display:block;margin:auto}.history-panel .section-heading{margin-bottom:15px}.history-panel h3{font-size:13px}.history-panel .muted{font-size:9px}.move-history{max-height:240px;overflow:auto}.move-pair{display:grid;grid-template-columns:30px 1fr 1fr;border-radius:4px;padding:5px 8px}.move-pair:nth-child(odd){background:#f5f7f0}.move-number{font-size:10px;color:#8f9883}.history-move{border:0;text-align:left;background:none;padding:3px 8px;color:#4b5f42;font-size:11px}.history-move.current{background:#e0e9d4;border-radius:4px}.replay-controls{display:flex;align-items:center;gap:3px;border-top:1px solid var(--line);margin-top:13px;padding-top:13px}.replay-controls button{border:1px solid var(--line);background:#fafbf7;border-radius:4px;padding:3px 7px}.replay-controls span{font-size:9px;color:#8c9880;margin-left:auto}.game-panel>form{text-align:center}.promotion-dialog{border:1px solid var(--line);border-radius:16px;padding:27px;box-shadow:0 20px 80px #16231740;max-width:90vw}.promotion-dialog::backdrop{background:#17251866}.promotion-choices{display:flex;gap:12px}.promotion-choices button{font-size:54px;background:#edf2e5;border:1px solid var(--line);border-radius:8px;padding:6px 12px}.theme-walnut{--light-square:#ecdcc2;--dark-square:#a87955}.theme-midnight{--light-square:#cbd0d8;--dark-square:#545e73}.theme-ocean{--light-square:#d9e9e7;--dark-square:#6e999b}.pieces-minimal .piece,.pieces-minimal .mini-board span{font-family:"Plymico Chess",Inter,sans-serif;font-weight:400;text-shadow:none}.pieces-minimal .white-piece{color:#fffef4;filter:drop-shadow(0 0 1px #253429)}
/* Solid and Letters piece styles draw each piece from data-piece over a hidden glyph. */
.pieces-solid .piece,.pieces-solid .mini-board span{font-family:"Plymico Chess",sans-serif}
.pieces-solid .white-piece .piece,.pieces-solid .mini-board .white-piece,.pieces-letters .piece,.pieces-letters .mini-board span{position:relative;color:transparent;text-shadow:none;filter:none}
.pieces-solid .white-piece .piece::before,.pieces-solid .mini-board .white-piece::before{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fffdf5;text-shadow:0 1.5px #273326,1.5px 0 #273326,-1.5px 0 #273326,0 -1.5px #273326,1px 1px #273326,-1px -1px #273326,1px -1px #273326,-1px 1px #273326}
.pieces-solid [data-piece="K"] .piece::before,.pieces-solid .mini-board [data-piece="K"]::before{content:"♚"}
.pieces-solid [data-piece="Q"] .piece::before,.pieces-solid .mini-board [data-piece="Q"]::before{content:"♛"}
.pieces-solid [data-piece="R"] .piece::before,.pieces-solid .mini-board [data-piece="R"]::before{content:"♜"}
.pieces-solid [data-piece="B"] .piece::before,.pieces-solid .mini-board [data-piece="B"]::before{content:"♝"}
.pieces-solid [data-piece="N"] .piece::before,.pieces-solid .mini-board [data-piece="N"]::before{content:"♞"}
.pieces-solid [data-piece="P"] .piece::before,.pieces-solid .mini-board [data-piece="P"]::before{content:"♟"}
.pieces-letters .piece:not(:empty)::before,.pieces-letters .mini-board span[data-piece]:not([data-piece=""])::before{position:absolute;left:50%;top:50%;width:1.55em;height:1.55em;transform:translate(-50%,-50%);border-radius:50%;display:flex;align-items:center;justify-content:center;font:700 .5em/1 Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;letter-spacing:0}
.pieces-letters .white-piece .piece::before,.pieces-letters .mini-board .white-piece::before{background:#fffdf5;color:#28362a;box-shadow:inset 0 0 0 .08em #28362a}
.pieces-letters .black-piece .piece::before,.pieces-letters .mini-board .black-piece::before{background:#28362a;color:#fffdf5}
.pieces-letters [data-piece="K"] .piece::before,.pieces-letters .mini-board [data-piece="K"]::before,.pieces-letters [data-piece="k"] .piece::before,.pieces-letters .mini-board [data-piece="k"]::before{content:"K"}
.pieces-letters [data-piece="Q"] .piece::before,.pieces-letters .mini-board [data-piece="Q"]::before,.pieces-letters [data-piece="q"] .piece::before,.pieces-letters .mini-board [data-piece="q"]::before{content:"Q"}
.pieces-letters [data-piece="R"] .piece::before,.pieces-letters .mini-board [data-piece="R"]::before,.pieces-letters [data-piece="r"] .piece::before,.pieces-letters .mini-board [data-piece="r"]::before{content:"R"}
.pieces-letters [data-piece="B"] .piece::before,.pieces-letters .mini-board [data-piece="B"]::before,.pieces-letters [data-piece="b"] .piece::before,.pieces-letters .mini-board [data-piece="b"]::before{content:"B"}
.pieces-letters [data-piece="N"] .piece::before,.pieces-letters .mini-board [data-piece="N"]::before,.pieces-letters [data-piece="n"] .piece::before,.pieces-letters .mini-board [data-piece="n"]::before{content:"N"}
.pieces-letters [data-piece="P"] .piece::before,.pieces-letters .mini-board [data-piece="P"]::before,.pieces-letters [data-piece="p"] .piece::before,.pieces-letters .mini-board [data-piece="p"]::before{content:"P"}

@media(min-width:1600px){.mini-board span{font-size:40px}}@media(max-width:1200px){.sidebar{width:205px;padding:28px 18px}.app-shell{margin-left:205px}.topbar{padding:0 28px}.content{padding:30px 28px}.games-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.mini-board span{font-size:32px}.play-layout{gap:20px;grid-template-columns:minmax(0,1fr) 280px}.piece{font-size:clamp(25px,4vw,54px)}.news-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.news-grid>.news-card:nth-child(3){display:none}.topbar-label{font-size:10px}}@media(max-width:900px){.sidebar{width:175px;padding:25px 14px}.app-shell{margin-left:175px}.brand{font-size:22px}.brand-mark{font-size:31px}.sidebar-caption{font-size:7px;letter-spacing:1px}.nav-link{font-size:11px;padding:11px 9px;gap:8px}.topbar-label{display:none}.topbar{justify-content:flex-end;height:70px}.stats-row{padding:17px 0}.stat{padding:0 17px}.stat small{font-size:8px}.stat strong{font-size:29px}.play-layout{grid-template-columns:1fr}.board-column{max-width:580px;width:100%}.piece{font-size:clamp(32px,6vw,64px)}.game-panel{display:grid;grid-template-columns:1fr 1fr;padding-top:12px}.game-panel>form,.game-panel>p{grid-column:1/-1}.two-column{grid-template-columns:1fr}.challenge-aside{display:none}.auth-art{padding:35px}.auth-form{padding:35px}.filter-bar{flex-direction:column;gap:0}}@media(max-width:650px){.sidebar{position:static;width:auto;flex-direction:row;align-items:center;padding:14px 18px;border-right:0;border-bottom:1px solid var(--line);flex-wrap:wrap;gap:13px}.sidebar .brand{font-size:24px}.sidebar-caption,.sidebar-note,.sidebar-bottom{display:none}.sidebar nav{width:100%;flex-direction:row;overflow-x:auto;gap:3px;padding-top:2px}.nav-link{font-size:10px;padding:8px;gap:5px;white-space:nowrap}.nav-link span{font-size:17px;width:16px}.app-shell{margin-left:0}.topbar{height:57px;padding:0 18px}.topbar-actions{width:100%;justify-content:space-between}.content{padding:27px 18px 36px}.page-heading{margin-bottom:24px}.page-heading h1{font-size:31px}.page-heading p{font-size:11px}.decorative-piece{display:none}.page-heading>.button{padding:9px 12px;font-size:10px}.stats-row{margin-bottom:28px}.stat{padding:0 12px;grid-template-columns:1fr}.stat-label{font-size:8px;letter-spacing:.8px}.stat strong{font-size:30px;margin:8px 0 2px}.stat small{font-size:8px;line-height:1.5}.games-grid{gap:12px}.game-card{padding:10px}.game-card-head{gap:6px;flex-wrap:wrap;margin-bottom:10px}.game-card-head .avatar{width:25px;height:25px;font-size:8px}.game-card-head strong{font-size:10px}.game-card-head small{font-size:8px}.game-card-head .badge{margin-left:0}.mini-board span{font-size:clamp(16px,4.3vw,27px)}.game-card-foot{font-size:8px}.game-card-foot>span:last-child{display:none}.section-heading h2{font-size:18px}.news-grid{grid-template-columns:1fr}.news-grid>.news-card:nth-child(3){display:block}.news-image{height:180px}.news-body h3{font-size:23px}.news-body p{font-size:12px}.footer{padding:17px 18px;font-size:8px}.empty-board{padding:28px 18px}.auth-shell{display:block}.auth-art{min-height:auto;padding:24px;background:#e9eedf}.auth-art>div,.auth-art>small{display:none}.auth-form{padding:30px 24px;max-width:430px;margin:auto}.auth-form h1{font-size:34px}.form-panel{padding:23px}.invitation-row{gap:8px;flex-wrap:wrap}.invitation-row .button{font-size:10px}.invitation-detail{padding:25px 17px}.copy-field{flex-direction:column}.leaderboard-row{grid-template-columns:44px 1fr 55px;padding:16px 4px}.leader-player{gap:8px}.leader-player strong{font-size:12px}.table-head{font-size:8px}.tabs a{font-size:11px;padding:10px 13px}.play-layout{gap:9px}.game-panel{display:flex}.piece{font-size:clamp(33px,9vw,63px)}.coordinate{font-size:7px}.board-tools{flex-wrap:wrap}.board-tools .subtle-link{font-size:10px}.player-strip{padding:10px 0}.promotion-choices{gap:6px}.promotion-choices button{font-size:45px;padding:4px 10px}.news-empty{padding:20px;gap:15px}.news-empty p{font-size:11px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}



#chess-world .news-grid > .news-card:nth-child(3) {display:block;}





.news-group {margin-bottom:2.5rem;}
.news-group-heading {display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-top:1.2rem;border-top:1px solid var(--line);margin-bottom:1rem;}
.news-group-heading h2 {font-family:"Plymico Chess",Georgia,Gelasio,serif;font-size:25px;font-weight:400;margin:0 0 .4rem;}
.news-group-heading p {font-size:12px;margin:0;}
.news-group-count {flex-shrink:0;font-size:11px;color:#536448;padding:.4rem .6rem;background:#edf2e5;border-radius:999px;}




/* Image-less cards: each section gets its own piece and tint. */
 
 
 
@media(max-width:650px){.news-group-heading h2{font-size:23px}.news-group-heading p{font-size:11px}}

#chess-world .news-grid {grid-template-columns:repeat(3,minmax(0,1fr));}
@media(max-width:1200px){#chess-world .news-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:650px){#chess-world .news-grid{grid-template-columns:1fr;}}
.news-shelf-actions {display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.5rem;}
.news-shelf-actions .fine-print {margin:0;}
.news-new {display:inline-block;margin-right:.5rem;padding:.1rem .45rem;border-radius:999px;background:var(--olive);color:#fff;font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;vertical-align:middle;}
.game-actions {display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 24px;grid-column:1/-1;}
.game-actions form {margin:0;}
.game-actions .text-button {display:inline-block;margin:0;}
.game-actions-note {grid-column:1/-1;text-align:center;margin-top:-10px;}

/* About & help */
textarea {width:100%;border:1px solid #dfe3d7;background:#fbfcf8;border-radius:8px;padding:12px 14px;color:var(--ink);font:inherit;resize:vertical;}
textarea:focus-visible {outline:3px solid #cba456;outline-offset:4px;}
.about-story {max-width:1050px;padding:32px;background:linear-gradient(110deg,#f2f5eb,#fcfcf6);}
.about-story h2 {font-family:"Plymico Chess",Georgia,Gelasio,serif;font-size:29px;font-weight:400;margin-bottom:16px;}
.about-story-body {columns:2 320px;column-gap:35px;}
.about-story-body p {font-size:13px;color:#5f6b56;break-inside:avoid;}
.about-story-body p:last-child {font-family:"Plymico Chess",Georgia,Gelasio,serif;font-size:17px;color:var(--olive);margin-bottom:0;}
.about-heading {margin-top:42px;}
.about-grid {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:21px;max-width:1050px;}
.about-card h3 {display:flex;align-items:center;gap:9px;}
.about-card h3 span {font-size:22px;color:#98ac85;line-height:1;}
.about-card p {font-size:12px;color:#7b8374;margin:0;}
.about-columns {display:grid;grid-template-columns:1fr 1fr;gap:21px;align-items:stretch;max-width:1050px;margin-top:42px;}
.about-faq details {border-top:1px solid var(--line);padding:13px 0;}
.about-faq details:last-child {padding-bottom:0;}
.about-faq summary {cursor:pointer;font-weight:600;font-size:13px;}
.about-faq details p {font-size:12px;color:#7b8374;margin:8px 0 0;}
.form-panel > .muted {font-size:12px;margin-bottom:0;}
.about-columns .form-panel {padding:24px;}
@media(max-width:1200px){.about-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:900px){.about-columns{grid-template-columns:1fr;}}
@media(max-width:650px){.about-grid{grid-template-columns:1fr;gap:12px;}.about-story{padding:23px;}.about-story h2{font-size:25px;}.about-columns{margin-top:28px;}}
.public-header {display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 44px;border-bottom:1px solid var(--line);background:#fafbf7;}
.public-actions {display:flex;align-items:center;gap:20px;}
.public-page .content {max-width:1138px;}
.about-signin {margin:23px 0 0;}
@media(max-width:650px){.public-header{padding:14px 18px;}.public-header .brand{font-size:22px;}.public-actions{gap:12px;}}
