:root{--bg:#f3f2ec;--surface:#fffdf7;--text:#1f1f1b;--muted:#5f5d57;--line:#ddd5c7;--accent:#0f766e;--accent-dark:#115e59;--danger:#c2410c}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 0 0,#faf8ef 0,transparent 45%),radial-gradient(circle at 100% 100%,#efe6d6 0,transparent 40%),var(--bg);color:var(--text);font-family:IBM Plex Sans,Avenir Next,Segoe UI,sans-serif}a{color:inherit}.text-link{color:var(--accent-dark);text-decoration:underline;text-underline-offset:2px}.text-link:hover{color:var(--accent)}.page-shell{max-width:1200px;margin:0 auto;padding:1rem;min-height:100vh;display:flex;flex-direction:column;gap:.7rem}.page-main{flex:1 1}.site-footer{margin-top:auto;border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:.55rem .8rem;display:flex;align-items:center;justify-content:space-between;gap:.75rem}.site-footer-copy{margin:0;color:var(--muted);font-size:.8rem}.site-footer-links{display:flex;align-items:center;gap:.75rem}.site-footer-link{font-size:.8rem;color:var(--muted);text-decoration:none;border-bottom:1px solid transparent}.site-footer-link:hover{color:var(--text);border-bottom-color:var(--line)}.legal-page{width:min(860px,100%);margin:0 auto;display:grid;grid-gap:.75rem;gap:.75rem}.legal-page h2,.legal-page p{margin:0}.topbar{display:grid;grid-template-columns:1fr auto 1fr;grid-gap:1rem;gap:1rem;padding:.6rem .85rem;background:var(--surface);border:1px solid var(--line);border-radius:12px}.brand,.topbar{align-items:center}.brand{display:flex;gap:.5rem}.brand-center{justify-self:center}.brand-logo{width:1.72rem;height:1.72rem;display:inline-block;object-fit:cover;border-radius:.35rem}.topbar h1{margin:0;font-size:1.2rem}.topbar-left{justify-self:start}.topbar-right{justify-self:end}.topbar-back{border:1px solid var(--line);background:#fff;border-radius:8px;padding:.35rem .62rem;text-decoration:none;color:var(--muted)}.topbar-spacer{display:inline-block;width:4.8rem;height:2rem}.topnav{display:flex;align-items:center;gap:.75rem}.topbar-help-btn{width:2rem;height:2rem;border-radius:999px;padding:0;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.topnav a,.topnav button{border:1px solid var(--line);background:#fff;color:var(--text);padding:.35rem .62rem;border-radius:8px;text-decoration:none;cursor:pointer}.topnav .topbar-player-trigger{border:0;background:transparent;padding:0;border-radius:10px}.topbar-player-trigger{cursor:pointer;text-align:left;font:inherit;color:inherit}.topbar-player-trigger:focus-visible{outline:2px solid #0891b2;outline-offset:2px}.topbar-player-trigger .player-card-meta{text-align:left}.avatar{width:2rem;height:2rem;border-radius:999px;border:1px solid #b7ab98;display:inline-flex;align-items:center;justify-content:center;background:#f6efe2;color:#433529;font-weight:700;overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.avatar-self{width:2.1rem;height:2.1rem}.player-card{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;grid-gap:.5rem;gap:.5rem;min-width:0}.player-card-avatar-only{grid-template-columns:auto;gap:0}.player-card-avatar-only .player-card-meta{display:none}.player-card-avatar-wrap{position:relative;display:inline-flex}.player-card-color-rook{position:absolute;right:-.08rem;bottom:-.08rem;display:inline-block;font-size:.92rem;line-height:1;background:transparent;border:0;border-radius:0;box-shadow:none;pointer-events:none}.player-card-avatar-only .player-card-color-rook{font-size:1.84rem;right:-.2rem;bottom:-.2rem}.player-card-color-rook-white{color:#fff;text-shadow:-1px -1px 0 #1f2937,1px -1px 0 #1f2937,-1px 1px 0 #1f2937,1px 1px 0 #1f2937}.player-card-color-rook-black{color:#111827;text-shadow:-1px -1px 0 #f8fafc,1px -1px 0 #f8fafc,-1px 1px 0 #f8fafc,1px 1px 0 #f8fafc}.player-card-right{grid-template-columns:minmax(0,1fr) auto}.player-card-right .player-card-avatar{grid-column:2}.player-card-right .player-card-meta{text-align:right}.player-card-meta{min-width:0}.player-card-name{font-weight:650;font-size:.95rem}.player-card-email,.player-card-name{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-card-email{color:var(--muted);font-size:.76rem}.player-card-sm{gap:.42rem}.player-card-sm .player-card-avatar{width:1.75rem;height:1.75rem}.player-card-sm .player-card-color-rook{font-size:.82rem;right:-.08rem;bottom:-.08rem}.player-card-sm.player-card-avatar-only .player-card-color-rook{font-size:1.64rem;right:-.18rem;bottom:-.18rem}.player-card-sm .player-card-name{font-size:.86rem}.player-card-sm .player-card-email{font-size:.72rem}.pvp-avatar{width:3rem;height:3rem}.player-card-sm .pvp-avatar{width:2.625rem;height:2.625rem}.topbar-player{max-width:240px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:1rem}.stack{display:grid;grid-gap:1rem;gap:1rem;margin-top:1rem}.game-view{margin-top:.45rem}.row{align-items:center;flex-wrap:wrap}.row,.tabs{display:flex;gap:.5rem}.tab{border:1px solid var(--line);background:#fff;padding:.45rem .8rem;border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;gap:.4rem}.tab.active{background:var(--accent);color:#fff;border-color:var(--accent)}.tab-badge{min-width:1.25rem;height:1.25rem;padding:0 .35rem;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;line-height:1;background:#ef4444;color:#fff}.tab-badge-loading{background:#64748b}button,input,select,textarea{font:inherit}input,select,textarea{border:1px solid var(--line);border-radius:8px;padding:.45rem .55rem;background:#fff}button.primary{background:var(--accent);border:1px solid var(--accent);color:#fff;border-radius:8px;padding:.45rem .75rem;cursor:pointer}button.primary:hover{background:var(--accent-dark)}.grid-2{display:grid;grid-gap:1rem;gap:1rem;grid-template-columns:1fr}@media (min-width:900px){.grid-2{grid-template-columns:1.1fr .9fr}}.game-list{list-style:none;padding:0;margin:0;display:grid;grid-gap:.5rem;gap:.5rem}.game-list li{padding:0}.game-card{display:grid;position:relative;grid-gap:.68rem;gap:.68rem;border:1px solid var(--line);border-radius:10px;padding:.75rem;background:#fff;text-decoration:none}.game-card:hover{border-color:#b8ad9d;box-shadow:0 6px 16px rgba(31,31,27,.08)}.game-card-top{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;grid-gap:.75rem;gap:.75rem}.game-card-players{display:flex;align-items:center;gap:.5rem;min-width:0}.game-card-conclusion-slot{justify-self:center;display:flex;justify-content:center;width:100%}.game-card-conclusion-slot-empty{width:100%;height:1px;visibility:hidden}.game-card-player{min-width:0}.game-card-state{justify-self:end;text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:.05rem}.game-card-moves{color:var(--muted);font-size:.74rem;white-space:nowrap}.game-card-status-wrap{display:grid;justify-items:end;grid-gap:.06rem;gap:.06rem}.game-card-status-top{display:inline-flex;align-items:center;justify-content:flex-end;gap:.35rem;flex-wrap:wrap}.game-card-status-row{display:flex;align-items:center;gap:.42rem}.game-card-vs{font-weight:700;text-transform:uppercase;letter-spacing:.04em}.game-card-status,.game-card-vs{color:var(--muted);flex:0 0 auto}.game-card-status{border:1px solid var(--line);border-radius:999px;padding:.18rem .5rem;font-size:.74rem}.game-card-status-active{background:#dcfce7;border-color:#86efac;color:#14532d}.game-card-status-finished{background:#e2e8f0;border-color:#94a3b8;color:#334155}.game-card-status-default{background:#fef3c7;border-color:#fcd34d;color:#78350f}.game-card-meta{display:flex;align-items:center;justify-content:flex-end;gap:.75rem;color:var(--muted);font-size:.84rem}.game-card-timestamp{font-size:.66rem;opacity:.82;white-space:nowrap;line-height:1.1}.game-card-conclusion{display:inline-flex;padding:.08rem .44rem;border-radius:999px;border:1px solid var(--line);font-size:.66rem;background:#f8fafc;color:#334155;width:-moz-fit-content;width:fit-content}.game-card-conclusion-winner{display:grid;justify-items:center;grid-gap:.22rem;gap:.22rem}.game-card-conclusion-winner-wrap{position:relative;display:inline-flex}.game-card-conclusion-winner-avatar{width:1.5rem;height:1.5rem}.game-card-conclusion-rook{position:absolute;right:-.07rem;bottom:-.07rem;display:inline-block;font-size:.72rem;line-height:1;pointer-events:none}.game-card-conclusion-rook-white{color:#fff;text-shadow:-1px -1px 0 #1f2937,1px -1px 0 #1f2937,-1px 1px 0 #1f2937,1px 1px 0 #1f2937}.game-card-conclusion-rook-black{color:#111827;text-shadow:-1px -1px 0 #f8fafc,1px -1px 0 #f8fafc,-1px 1px 0 #f8fafc,1px 1px 0 #f8fafc}.game-card-conclusion-label{font-size:.66rem;letter-spacing:.02em;color:#334155}.game-card-conclusion-win{color:#14532d;background:#dcfce7;border-color:#86efac}.game-card-conclusion-loss{color:#991b1b;background:#fee2e2;border-color:#fecaca}.game-list-main{width:min(980px,100%);margin:.85rem auto 0}.game-card-overflow{position:absolute;top:.45rem;right:.45rem;z-index:2}.game-list-head{justify-content:space-between}.new-game-open-btn{white-space:nowrap}.new-game-fab{position:fixed;right:1rem;bottom:1rem;z-index:1100;border-radius:999px;padding:.72rem 1rem;box-shadow:0 10px 20px rgba(17,24,39,.2);display:none}.new-game-fab-plus{display:inline-block;line-height:1}.new-game-fab-label{display:none}.new-game-modal{width:min(680px,calc(100vw - 2rem));max-height:min(88vh,760px);overflow:auto;margin:0;display:grid;grid-gap:.95rem;gap:.95rem}.new-game-head{justify-content:space-between;align-items:center;margin:0}.new-game-matchup{border:1px solid var(--line);border-radius:10px;background:#fff;padding:.75rem;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);grid-gap:.55rem;gap:.55rem;align-items:center}.new-game-side{min-width:0;display:grid;grid-gap:.28rem;gap:.28rem}.new-game-side-label{margin:0;font-size:.74rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:650}.new-game-preview-player{min-width:0}.new-game-vs{color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.04em}.new-game-fields{display:grid;grid-gap:.78rem;gap:.78rem}.new-game-field{display:grid;grid-gap:.35rem;gap:.35rem}.new-game-field>span{font-weight:600}.new-game-field input,.new-game-field select{width:100%}.new-game-suggestions{height:13.75rem;max-height:13.75rem;overflow:auto;border:1px solid var(--line);border-radius:10px;background:#fff;padding:.35rem}.new-game-suggestions .user-pick{min-height:4.25rem;display:flex;align-items:center}.new-game-actions{display:flex;align-items:flex-end;justify-content:space-between;gap:.7rem;flex-wrap:wrap}.new-game-field-inline{display:grid;grid-gap:.35rem;gap:.35rem;min-width:210px}.new-game-field-inline>span{font-weight:600}.new-game-field-inline select{width:100%}.new-game-close{border:1px solid var(--line);background:#fff;border-radius:8px;color:var(--muted);padding:.3rem .6rem;cursor:pointer}.user-pick{all:unset;display:block;width:100%;cursor:pointer;border:1px solid var(--line);border-radius:8px;padding:.55rem .6rem;background:#fff}.user-pick:hover{border-color:#b8ad9d}.muted{color:var(--muted);font-size:.92rem}.error{color:var(--danger)}.turn-banner{border:1px solid var(--line);border-radius:8px;padding:.55rem .75rem;font-weight:600}.turn-banner.my-turn{background:#dcfce7;border-color:#86efac;color:#14532d}.turn-banner.waiting-turn{background:#fef3c7;border-color:#fcd34d;color:#78350f}.turn-banner.spectator-turn{background:#eef2ff;border-color:#c7d2fe;color:#3730a3}.game-head{justify-content:center;gap:.72rem}.game-head,.game-head-player-slot{display:flex;align-items:center;min-width:0}.game-head-player-slot{gap:.35rem}.game-head-player-slot-white{justify-content:flex-end}.game-head-player-slot-black{justify-content:flex-start}.captured-row{min-height:1.05rem;display:flex;flex-wrap:wrap;align-items:center;gap:0}.captured-row-outside{min-width:5.5rem}.captured-row-white{justify-content:flex-end}.captured-row-black{justify-content:flex-start}.captured-piece{width:1.5rem;height:1.5rem;display:inline-flex;align-items:center;justify-content:center}.captured-piece+.captured-piece{margin-left:-.66rem}.captured-empty{color:var(--muted);font-size:.68rem}.game-head-vs{color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.04em}.game-head-player-card{min-width:0;max-width:280px}.game-head-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:flex-start;grid-gap:.75rem;gap:.75rem}.game-status-pill{margin:0;width:-moz-fit-content;width:fit-content;max-width:58%;align-self:flex-start}.game-status-actions{grid-column:3;display:flex;align-items:center;justify-content:flex-end;gap:.45rem}.game-status-actions .game-status-pill{padding:.32rem .56rem;line-height:1.2;font-size:.82rem}.game-actions-menu{position:relative}.overflow-btn{border:1px solid var(--line);background:#fff;color:var(--text);border-radius:8px;width:2rem;height:1.9rem;display:inline-flex;align-items:center;justify-content:center;font-size:1.1rem;line-height:1;cursor:pointer}.overflow-btn:hover{border-color:#b8ad9d;background:#f9f6ef}.overflow-menu{position:absolute;top:calc(100% + .35rem);right:0;z-index:8;min-width:11rem;border:1px solid var(--line);border-radius:10px;background:#fff;box-shadow:0 10px 24px rgba(15,23,42,.16);padding:.3rem;display:grid;grid-gap:.2rem;gap:.2rem}.overflow-menu-item{border:1px solid transparent;background:#fff;color:var(--text);border-radius:8px;padding:.44rem .52rem;text-align:left;cursor:pointer}.overflow-menu-item:hover{background:#f8f4ea}.overflow-menu-item-danger{color:#b91c1c}.overflow-menu-item-danger:hover{background:#fef2f2}.overflow-menu-item:disabled{opacity:.6;cursor:not-allowed}.game-head-row .game-head{grid-column:2}.resign-btn{border:1px solid #f59e0b;background:#fff7ed;color:#9a3412;border-radius:8px;padding:.32rem .56rem;line-height:1.2;font-size:.82rem;cursor:pointer;white-space:nowrap}.resign-btn:hover{background:#ffedd5}.resign-btn:disabled{opacity:.6;cursor:not-allowed}.game-panel{gap:.75rem}.game-main{display:grid;grid-template-columns:minmax(320px,auto) minmax(320px,1fr);grid-gap:.9rem;gap:.9rem;align-items:stretch}.game-board-pane{display:block}.game-chat-pane{display:block;min-height:0}.chat-panel{display:grid;grid-template-rows:auto minmax(0,1fr) auto;grid-gap:.7rem;gap:.7rem;height:100%;min-height:0}.mobile-switch{display:none;gap:.5rem}.mobile-switch-btn{border:1px solid var(--line);background:#fff;padding:.4rem .72rem;border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;gap:.45rem}.mobile-switch-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.game-result-banner{background:#e0f2fe;border:1px solid #7dd3fc;border-radius:8px;color:#0c4a6e;font-weight:700;padding:.6rem .8rem}.result-announcement-backdrop{animation:result-backdrop-fade .22s ease-out}.result-announcement-card{width:min(460px,calc(100vw - 2rem));border-radius:14px;background:#0f172a;color:#f8fafc;border:1px solid hsla(0,0%,100%,.4);box-shadow:0 20px 48px rgba(2,6,23,.35);padding:1rem 1.05rem;text-align:center;position:relative;overflow:hidden;animation:result-card-pop .56s cubic-bezier(.22,.9,.2,1);display:grid;grid-gap:.55rem;gap:.55rem;justify-items:center}.result-announcement-card.result-announcement-win{background:linear-gradient(130deg,#166534,#34d399,#0ea5e9)}.result-announcement-card.result-announcement-loss{background:linear-gradient(130deg,#1e3a8a,#334155,#0f172a)}.result-announcement-card.result-announcement-stalemate{background:linear-gradient(130deg,#b45309,#f59e0b,#1f2937)}.result-announcement-icon{display:inline-flex;align-items:center;justify-content:center;width:3.4rem;height:3.4rem;border-radius:999px;background:hsla(0,0%,100%,.18);border:1px solid hsla(0,0%,100%,.42);font-weight:800;letter-spacing:.06em;text-transform:uppercase;font-size:.68rem;color:#fff;animation:result-icon .62s cubic-bezier(.22,.9,.2,1)}.result-announcement-icon-win:before{content:"WIN"}.result-announcement-icon-loss:before{content:"LOSS"}.result-announcement-icon-stalemate:before{content:"DRAW"}.result-announcement-title{margin:0;font-size:1.3rem}.result-announcement-subtitle{margin:0;font-weight:700}.result-announcement-detail{margin:0;color:rgba(248,250,252,.9);max-width:35ch}.result-announcement-actions{width:100%;display:flex;justify-content:flex-end}.result-announcement-close{border:1px solid hsla(0,0%,100%,.6);background:hsla(0,0%,100%,.16);color:#fff;border-radius:10px;padding:.34rem .72rem;cursor:pointer}.result-announcement-close:hover{background:hsla(0,0%,100%,.25)}.result-announcement-winner{display:grid;justify-items:center;grid-gap:.32rem;gap:.32rem}.result-announcement-winner-wrap{position:relative;display:inline-flex}.result-announcement-winner-avatar{width:2rem;height:2rem}.result-announcement-winner-rook{position:absolute;right:-.08rem;bottom:-.08rem;display:inline-block;font-size:.92rem;line-height:1;pointer-events:none}.result-announcement-winner-rook-white{color:#fff;text-shadow:-1px -1px 0 #1f2937,1px -1px 0 #1f2937,-1px 1px 0 #1f2937,1px 1px 0 #1f2937}.result-announcement-winner-rook-black{color:#111827;text-shadow:-1px -1px 0 #f8fafc,1px -1px 0 #f8fafc,-1px 1px 0 #f8fafc,1px 1px 0 #f8fafc}.result-announcement-winner-label{font-size:.84rem;letter-spacing:.02em;color:rgba(248,250,252,.95)}.result-announcement-card .result-announcement-detail,.result-announcement-card .result-announcement-subtitle,.result-announcement-card .result-announcement-title{animation:result-text-reveal .36s ease-out;animation-fill-mode:both}.result-announcement-card .result-announcement-subtitle{animation-delay:60ms}.result-announcement-card .result-announcement-detail{animation-delay:.12s}.result-sparkles{pointer-events:none;position:absolute;inset:0;border-radius:14px;overflow:hidden}.result-sparkle{position:absolute;width:.55rem;height:.55rem;border-radius:999px;background:hsla(0,0%,100%,.88);opacity:0;animation:result-sparkle 1.8s ease-in-out infinite}.result-sparkle-a{top:28%;left:18%;animation-delay:0s}.result-sparkle-b{top:24%;right:20%;animation-delay:.22s}.result-sparkle-c{bottom:24%;left:44%;animation-delay:.42s}.toast-stack{position:fixed;top:1rem;right:1rem;z-index:1000;display:grid;grid-gap:.5rem;gap:.5rem;width:min(420px,calc(100vw - 2rem))}.toast{border-radius:10px;padding:.7rem .85rem;border:1px solid transparent;box-shadow:0 12px 28px rgba(0,0,0,.16);font-weight:600;animation:toast-pop .12s ease-out}.toast-warning{background:#fff7ed;border-color:#fdba74;color:#9a3412}.toast-error{background:#fef2f2;border-color:#fca5a5;color:#991b1b}.modal-backdrop{position:fixed;inset:0;z-index:1200;background:rgba(15,23,42,.38);display:grid;place-items:center;padding:1rem}.promotion-modal{width:min(440px,100%);border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:0 14px 36px rgba(15,23,42,.25);padding:1rem;display:grid;grid-gap:.8rem;gap:.8rem}.topbar-signout-modal{width:min(360px,calc(100vw - 2rem));display:grid;grid-gap:.7rem;gap:.7rem}.topbar-signout-actions{display:flex;justify-content:flex-end;align-items:center;gap:.5rem}.promotion-modal h3{margin:0;font-size:1.1rem}.help-modal{width:min(680px,calc(100vw - 2rem));max-height:min(88vh,760px);overflow:auto;margin:0;display:grid;grid-gap:.9rem;gap:.9rem}.help-head{display:flex;align-items:center;justify-content:space-between;gap:.65rem}.help-back-btn{border:1px solid var(--line);background:#fff;border-radius:8px;color:var(--muted);padding:.3rem .6rem;cursor:pointer}.help-body{display:grid;grid-gap:.7rem;gap:.7rem}.help-body h3,.help-body p{margin:0}.help-endpoint{padding:.55rem .7rem;border:1px dashed var(--line);border-radius:8px;background:#fff;font-size:.92rem}.help-endpoint code{font-size:.84rem}.help-actions{display:flex;flex-wrap:wrap;gap:.6rem}.help-steps{margin:0;padding-left:1.25rem;display:grid;grid-gap:.45rem;gap:.45rem}.help-support{padding-top:.2rem}.promotion-grid{display:grid;grid-gap:.55rem;gap:.55rem;grid-template-columns:repeat(2,minmax(0,1fr))}.promotion-option{border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--text);min-height:3rem;display:flex;align-items:center;justify-content:center;gap:.5rem;cursor:pointer}.promotion-option:hover{border-color:#9ca3af;background:#f9fafb}.piece-img-promotion{width:1.55rem;height:1.55rem}.promotion-cancel{border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--muted);padding:.45rem .75rem;justify-self:end;cursor:pointer}.resign-modal{width:min(420px,100%)}.resign-actions{display:flex;justify-content:flex-end;gap:.5rem}.history-modal{width:min(540px,100%)}.history-modal-head{display:flex;align-items:center;justify-content:space-between;gap:.65rem}.history-modal-head h3{margin:0}.history-list{margin:0;padding:0;list-style:none;display:grid;grid-gap:.32rem;gap:.32rem;max-height:min(52vh,420px);overflow:auto}.history-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-gap:.5rem;gap:.5rem;align-items:center;border:1px solid var(--line);border-radius:8px;background:#fff;padding:.4rem .52rem}.history-item-player{display:flex;align-items:center;gap:.32rem}.history-item-avatar{width:1.45rem;height:1.45rem}.history-item-piece{width:1.08rem;height:1.08rem;line-height:1;display:inline-flex;align-items:center;justify-content:center}.history-item-main{display:flex;align-items:baseline;gap:.4rem;min-width:0}.history-item-ply{color:var(--muted);font-size:.74rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.history-item-san{font-weight:650;font-size:.88rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-item-time{color:var(--muted);font-size:.72rem;text-align:right;white-space:nowrap}@keyframes toast-pop{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes result-backdrop-fade{0%{opacity:0}to{opacity:1}}@keyframes result-card-pop{0%{transform:scale(.85);opacity:0}65%{transform:scale(1.04);opacity:1}to{transform:scale(1)}}@keyframes result-icon{0%{transform:scale(.7) rotate(-10deg);opacity:0}60%{transform:scale(1.16) rotate(3deg);opacity:1}to{transform:scale(1) rotate(0);opacity:1}}@keyframes result-text-reveal{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes result-sparkle{0%,50%{transform:scale(.4);opacity:0}58%{opacity:.9}72%{transform:scale(1.25);opacity:.28}to{transform:translateY(-120%);opacity:0}}@media (prefers-reduced-motion:reduce){.result-announcement-backdrop,.result-announcement-card,.result-announcement-card .result-announcement-detail,.result-announcement-card .result-announcement-subtitle,.result-announcement-card .result-announcement-title,.result-announcement-icon,.result-sparkle{animation:none!important;transform:none!important}}.board{grid-template-columns:repeat(8,minmax(32px,64px));width:-moz-fit-content;width:fit-content;border:2px solid #5f4435}.board,.square{display:grid;position:relative}.square{width:min(64px,10vw);height:min(64px,10vw);border:0;margin:0;padding:0;place-items:center;font-size:clamp(1.2rem,3.2vw,2.1rem);cursor:pointer;line-height:0;-moz-appearance:none;appearance:none;-webkit-appearance:none}.coord{position:absolute;font-size:clamp(.52rem,1.55vw,.78rem);font-weight:700;line-height:1;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;z-index:1}.coord-rank{top:.18rem;left:.24rem}.coord-file{right:.2rem;bottom:.16rem}.coord-on-light{color:#b58863}.coord-on-dark{color:#f0d9b5}.piece-img{width:100%;height:100%;display:block;object-fit:contain;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.piece-img-anim,.piece-img-board{width:92%;height:92%}.square.light{background:#f0d9b5}.square.dark{background:#b58863}.square.selected{outline:3px solid #0891b2;outline-offset:-3px}.square.legal-move{box-shadow:inset 0 0 0 2px rgba(56,189,248,.45)}.square.legal-move:before{content:"";position:absolute;inset:6px;border:3px solid rgba(56,189,248,.66);border-radius:8px;background:rgba(56,189,248,.12);box-shadow:0 0 0 2px rgba(14,116,144,.16);pointer-events:none}.square.last-move{box-shadow:inset 0 0 0 2px rgba(250,204,21,.72)}.square.last-move:after{content:"";position:absolute;inset:8px;border:2px solid rgba(250,204,21,.58);border-radius:8px;box-shadow:0 0 0 1px rgba(17,24,39,.14);pointer-events:none;z-index:0}.square.last-move-recent:after{animation:last-move-pulse .82s ease-in-out 3}.square.illegal-move:after{content:"";position:absolute;inset:6px;border:3px solid rgba(239,68,68,.82);border-radius:8px;background:rgba(239,68,68,.14);box-shadow:0 0 0 2px rgba(127,29,29,.3);pointer-events:none}.square:disabled{cursor:default}.board-animation-layer{position:absolute;inset:0;pointer-events:none;z-index:3}.anim-piece{position:absolute;width:12.5%;height:12.5%;display:grid;place-items:center;font-size:clamp(1.2rem,3.2vw,2.1rem);line-height:1}.anim-piece-move{animation:piece-move .36s ease-out forwards}.anim-piece-captured{animation:piece-capture-fall .72s cubic-bezier(.2,.72,.28,1) forwards}.board-wrap{width:-moz-fit-content;width:fit-content;position:relative;max-width:100%}.board-overlay{position:absolute;inset:0;background:rgba(17,24,39,.42);color:#f8fafc;display:flex;align-items:center;justify-content:center;gap:.5rem;font-weight:600;font-size:.94rem;border-radius:2px}.loader-dot{width:.65rem;height:.65rem;border-radius:999px;background:#f8fafc;animation:pulse .9s ease-in-out infinite}.inline-loader{margin-left:.5rem;color:#0f766e}@keyframes pulse{0%,to{transform:scale(.8);opacity:.6}50%{transform:scale(1);opacity:1}}@keyframes last-move-pulse{0%{transform:scale(.84);opacity:.24}45%{transform:scale(1.06);opacity:.92}to{transform:scale(1);opacity:.4}}@keyframes piece-move{0%{transform:translate(0)}to{transform:translate(var(--tx),var(--ty))}}@keyframes piece-capture-fall{0%{transform:translate(0) rotate(0deg);opacity:1}to{transform:translate(42%,42%) rotate(14deg);opacity:0}}@media (prefers-reduced-motion:reduce){.anim-piece-captured,.anim-piece-move{animation-duration:1ms}}.chat-box{border:1px solid var(--line);border-radius:8px;background:#fff;max-height:none;height:100%;min-height:0;overflow:auto;padding:.75rem;display:flex;flex-direction:column;align-items:stretch;gap:.5rem}.chat-box>*{flex:0 0 auto}.chat-compose{margin-top:0}.chat-msg{display:flex;gap:.6rem;align-items:flex-end;border-bottom:1px dashed #e7e0d4;padding:.15rem 0 .5rem;width:100%}.chat-msg,.chat-msg-self{justify-content:flex-start}.chat-msg-other{justify-content:flex-end}.chat-player-avatar{width:2.1rem;height:2.1rem;flex:0 0 auto;align-self:flex-end}.chat-msg-content{min-width:0;max-width:min(82%,34rem);align-self:center;line-height:1.3}.chat-msg-self .chat-player-avatar{order:0}.chat-msg-self .chat-msg-content{order:1;text-align:left}.chat-msg-other .chat-player-avatar{order:1}.chat-msg-other .chat-msg-content{order:0;text-align:right}.chat-msg:last-child{border-bottom:0}.snapshot{width:min(560px,100%);border:1px solid var(--line);border-radius:10px;background:#fff}@media (max-width:900px){.site-footer{flex-direction:column;align-items:flex-start;gap:.35rem}.site-footer-links{gap:.55rem;flex-wrap:wrap}.game-list-head{align-items:flex-start}.topbar-player{max-width:-moz-fit-content;max-width:fit-content;grid-template-columns:auto;gap:0}.topbar-player .player-card-meta{display:none}.topnav{gap:.45rem}.new-game-open-btn{display:none}.new-game-fab{display:inline-flex;align-items:center;justify-content:center;width:3.5rem;height:3.5rem;border-radius:999px;padding:0;font-size:1.9rem;box-shadow:0 14px 30px rgba(15,23,42,.35)}.new-game-modal{width:min(680px,calc(100vw - 2rem));max-height:min(90vh,760px)}.help-actions{display:grid;grid-template-columns:1fr}.help-actions button{width:100%}.new-game-matchup{grid-template-columns:1fr;justify-items:stretch}.new-game-vs{justify-self:center}.new-game-actions{display:grid;grid-template-columns:1fr}.new-game-field-inline{min-width:0}.new-game-actions button.primary{width:100%}.game-head-row{grid-template-columns:1fr;align-items:stretch}.game-status-actions{grid-column:1;justify-self:stretch;justify-content:space-between;align-items:center}.game-status-pill{max-width:calc(100% - 3rem)}.game-head-row .game-head{grid-column:1}.mobile-switch{display:flex}.game-main{display:block}.game-board-pane,.game-chat-pane{display:none}.game-board-pane.is-active,.game-chat-pane.is-active{display:block}.chat-box{max-height:min(48vh,360px)}.chat-box,.chat-panel{height:auto}.chat-msg{gap:.35rem}.chat-msg-self{justify-content:flex-start}.chat-msg-self .chat-player-avatar{order:0}.chat-msg-self .chat-msg-content{order:1;text-align:left;max-width:min(86%,26rem)}.chat-msg-other{justify-content:flex-end}.chat-msg-other .chat-player-avatar{order:1}.chat-msg-other .chat-msg-content{order:0;text-align:right;max-width:min(86%,26rem)}.game-card-meta{flex-direction:column;align-items:flex-start;gap:.25rem}}