.cg-wrap{box-sizing:content-box;display:block;position:relative}cg-container{width:100%;height:100%;display:block;position:absolute;top:0}cg-board{-webkit-user-select:none;user-select:none;background-size:cover;width:100%;height:100%;line-height:0;position:absolute;top:0;left:0}.cg-wrap.manipulable cg-board{cursor:pointer}cg-board square{pointer-events:none;width:12.5%;height:12.5%;position:absolute;top:0;left:0}cg-board square.move-dest{pointer-events:auto}cg-board square.last-move{will-change:transform}.cg-wrap piece{z-index:2;will-change:transform;pointer-events:none;background-size:cover;width:12.5%;height:12.5%;position:absolute;top:0;left:0}cg-board piece.dragging{cursor:move;z-index:11!important}piece.anim{z-index:8}piece.fading{z-index:1;opacity:.5}.cg-wrap piece.ghost{opacity:.3}.cg-wrap piece svg{pointer-events:none;z-index:2;opacity:.6;width:100%;height:100%;position:relative;top:0;left:0;overflow:hidden}.cg-wrap cg-auto-pieces,.cg-wrap .cg-shapes,.cg-wrap .cg-custom-svgs,.cg-wrap .cg-shapes-below,.cg-wrap .cg-custom-below{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;overflow:visible}.cg-wrap cg-auto-pieces{z-index:2}.cg-wrap cg-auto-pieces piece{opacity:.3}.cg-wrap .cg-shapes{opacity:.6;z-index:2;overflow:hidden}.cg-wrap .cg-shapes-below{z-index:1;overflow:hidden}.cg-wrap .cg-custom-below{z-index:1}.cg-wrap .cg-custom-svgs{z-index:9}.cg-wrap .cg-custom-svgs svg,.cg-wrap .cg-custom-below svg{overflow:visible}.cg-wrap coords{pointer-events:none;opacity:.8;font-family:sans-serif;font-size:9px;display:flex;position:absolute}.cg-wrap coords.ranks{flex-flow:column-reverse;width:12px;height:100%;top:-20px;left:4px}.cg-wrap coords.ranks.black{flex-flow:column}.cg-wrap coords.ranks.left{align-items:flex-end;left:-15px}.cg-wrap coords.files{text-transform:uppercase;text-align:center;flex-flow:row;width:100%;height:16px;bottom:-4px;left:24px}.cg-wrap coords.files.black{flex-flow:row-reverse}.cg-wrap coords coord{flex:auto}.cg-wrap coords.squares{text-transform:uppercase;text-align:right;flex-flow:column-reverse;width:12.5%;height:100%;bottom:0;left:0}.cg-wrap coords.squares.black{flex-flow:column}.cg-wrap coords.squares.left{text-align:left}.cg-wrap coords.squares coord{padding:6% 4%}.cg-wrap coords.squares.rank2{transform:translate(100%)}.cg-wrap coords.squares.rank3{transform:translate(200%)}.cg-wrap coords.squares.rank4{transform:translate(300%)}.cg-wrap coords.squares.rank5{transform:translate(400%)}.cg-wrap coords.squares.rank6{transform:translate(500%)}.cg-wrap coords.squares.rank7{transform:translate(600%)}.cg-wrap coords.squares.rank8{transform:translate(700%)}:root{--font-display:"Fredoka", "Nunito", system-ui, sans-serif;--font-body:"Nunito", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--r-card:22px;--r-input:16px;--r-avatar:14px;--r-pill:999px;--touch:44px;--bottom-nav-h:64px;--safe-bottom:env(safe-area-inset-bottom,0px)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;background:var(--bg)}body{background:var(--bg);min-width:320px;min-height:100dvh;color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;font-size:16px;font-weight:600;line-height:1.4;overflow-x:hidden}h1,h2,h3{font-family:var(--font-display);margin:0;font-weight:600;line-height:1.15}p{margin:0}a{color:inherit;text-decoration:none}img{max-width:100%}button,input{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}button:disabled{cursor:default}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.mono{font-family:var(--font-mono)}.muted{color:var(--muted)}.small{font-size:13px}.center{text-align:center}.hint{color:var(--muted);font-size:13px;font-weight:600}.logo{min-height:var(--touch);align-items:center;gap:6px;display:inline-flex}.logo-word{font-family:var(--font-display);letter-spacing:-.01em;color:var(--text);font-weight:700;line-height:1}.logo-tail{padding:var(--logo-tail-pad);border-radius:var(--r-pill);background:var(--logo-tail-bg);color:var(--logo-tail-fg)}.pawn-mark{flex:none}.avatar{object-fit:cover;background:var(--sq-light);box-shadow:0 0 0 2px var(--bg);flex:none;display:block}.avatar-placeholder{border-radius:var(--r-avatar);border:1px dashed var(--dashed);background:var(--card);flex:none;place-items:center;width:48px;height:48px;display:grid}.avatar-placeholder.small{width:40px;height:40px}.btn{border-radius:var(--r-pill);min-height:48px;font-family:var(--font-display);text-align:center;white-space:nowrap;justify-content:center;align-items:center;gap:8px;padding:0 22px;font-size:17px;font-weight:600;line-height:1;transition:transform .12s,background-color .15s,opacity .15s;display:inline-flex}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.45}.btn-primary{background:var(--primary);color:var(--on-primary)}.btn-danger{background:var(--warn);color:var(--on-primary)}.btn-primary:hover:not(:disabled){background:var(--primary-light)}.btn-danger:hover:not(:disabled){background:var(--warn-light)}.btn-alt{background:var(--btn-alt-bg);color:var(--btn-alt-fg)}.btn-secondary{background:var(--card);color:var(--text);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){border-color:var(--muted)}.btn-ghost{color:var(--muted);background:0 0}.btn-ghost:hover{color:var(--text)}.btn-dark{background:var(--bg);color:var(--text)}.btn-waiting,.btn-waiting:disabled{background:var(--border);color:var(--muted);opacity:1}.btn-block{width:100%;display:flex}.btn-large{min-height:56px;font-size:18px}.btn-small{min-height:var(--touch);padding:0 14px;font-size:14px}.icon-btn,.round-btn,.bell-btn{width:var(--touch);height:var(--touch);color:var(--text);border-radius:50%;flex:none;place-items:center;display:grid}.round-btn,.bell-btn{background:var(--card)}.bell-btn{position:relative}.bell-dot{background:var(--turn);width:11px;height:11px;box-shadow:0 0 0 2px var(--card);border-radius:50%;position:absolute;top:9px;right:10px}.chip{border-radius:var(--r-pill);background:var(--surface);border:1px solid var(--border);color:var(--muted);white-space:nowrap;align-items:center;padding:3px 9px;font-size:12px;font-weight:800;line-height:1.3;display:inline-flex}.chip-primary{background:var(--primary-soft);color:var(--on-primary-soft);border-color:#0000}.chip-warn{background:var(--warn-soft);color:var(--error-text);border-color:#0000}.chip-accent{background:var(--accent);color:var(--on-accent);border-color:#0000}.count-badge{border-radius:var(--r-pill);background:var(--turn);min-width:26px;height:26px;color:var(--on-turn);font-family:var(--font-body);place-items:center;padding:0 8px;font-size:14px;font-weight:800;display:inline-grid}.count-badge.muted-badge{background:var(--border);color:var(--muted)}.notice{border-radius:var(--r-input);padding:12px 14px;font-size:14px;font-weight:700}.notice-warn{background:var(--warn-soft);color:var(--on-warn-soft)}.notice-error{background:var(--card);border:2px solid var(--warn);color:var(--text)}.draw-notice{border-radius:var(--r-input);background:var(--warn-soft);color:var(--on-warn-soft);align-items:flex-start;gap:10px;padding:12px 14px;font-size:14px;font-weight:700;display:flex}.draw-notice svg{flex:none;margin-top:1px}.field-error{color:var(--error-text);font-size:14px;font-weight:700}.center-page{justify-content:center;align-items:center;min-height:100dvh;padding:24px 16px;display:flex}.auth-card{border-radius:var(--r-card);background:var(--card);flex-direction:column;gap:18px;width:100%;max-width:420px;padding:24px 20px;display:flex}.auth-head{flex-direction:column;align-items:center;gap:4px;display:flex}.start-hero{gap:6px}.start-name{font-size:34px;line-height:1.1}.tagline{color:var(--muted);text-align:center;text-wrap:balance;font-size:16px;font-weight:700}.auth-title{text-align:center;font-size:26px}.auth-form{flex-direction:column;gap:16px;display:flex}.tabs{border-radius:var(--r-pill);background:var(--surface);border:1px solid var(--border);grid-template-columns:1fr 1fr;gap:4px;padding:4px;display:grid}.tabs button{min-height:var(--touch);border-radius:var(--r-pill);font-family:var(--font-display);color:var(--muted);font-size:16px;font-weight:600}.tabs button.active{background:var(--primary);color:var(--on-primary)}.field{flex-direction:column;gap:6px;display:flex}.field-label{color:var(--muted);font-size:14px;font-weight:800;display:block}.text-input,.mono-field{border-radius:var(--r-input);border:2px solid var(--border);background:var(--surface);width:100%;height:52px;color:var(--text);outline:none;padding:0 16px;font-size:17px;font-weight:700}.text-input:focus,.mono-field:focus{border-color:var(--primary-ink)}.text-input::placeholder{color:var(--placeholder)}.mono-field{font-family:var(--font-mono);background:var(--bg);text-overflow:ellipsis;font-size:14px;font-weight:600}.text-input.invalid{border-color:var(--warn-light);background:var(--warn-soft)}.field-group{flex-direction:column;gap:6px;display:flex}.password-field{position:relative}.password-field .text-input{padding-right:56px}.password-toggle{width:var(--touch);height:var(--touch);border-radius:var(--r-input);color:var(--muted);place-items:center;display:grid;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.password-toggle:hover,.password-toggle[aria-pressed=true]{color:var(--text)}.password-feedback{flex-direction:column;gap:4px;display:flex}.password-feedback ul{color:var(--muted);margin:0;padding-left:20px;font-size:14px;font-weight:600}.login-feedback{color:var(--error-text);font-size:14px;font-weight:700}.form-success{color:var(--primary-ink);font-size:14px;font-weight:800}.link-btn{min-height:var(--touch);color:var(--muted);align-self:center;padding:0 12px;font-size:15px;font-weight:700;text-decoration:underline}.link-btn:hover{color:var(--text)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;opacity:0;pointer-events:none;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.avatar-picker{flex-direction:column;gap:8px;display:flex}.avatar-grid{grid-template-columns:repeat(6,minmax(0,64px));gap:8px;display:grid}@media (width<=399px){.avatar-grid{gap:4px}}.avatar-tile{aspect-ratio:1;width:100%;min-height:var(--touch);border-radius:var(--r-avatar);background:var(--sq-light);border:2px solid #0000;place-items:center;padding:4px;display:grid}.avatar-tile:nth-child(odd){transform:rotate(-2deg)}.avatar-tile:nth-child(2n){transform:rotate(2deg)}.avatar-tile img{width:100%;height:100%}.avatar-tile.selected{border-color:var(--primary-ink);box-shadow:0 0 0 2px var(--primary-ink)}.avatar-upload{border-radius:var(--r-avatar);border:1px dashed var(--dashed);background:var(--surface);min-height:64px;color:var(--text);font-family:var(--font-display);text-align:left;align-items:center;gap:12px;padding:8px 14px;font-size:15px;font-weight:600;display:flex}.avatar-upload.selected{border:2px solid var(--primary-ink)}.avatar-upload-preview{object-fit:cover;border-radius:12px;width:48px;height:48px;transform:rotate(-3deg)}.invite-hero{text-align:center;flex-direction:column;align-items:center;gap:12px;display:flex}.invite-hero h1{font-size:26px}.invite-hero .avatar{border-radius:26px!important}.error-card{text-align:center;align-items:center}.error-card h1{font-size:26px}.big-404{color:var(--primary-ink);font-size:48px;font-weight:800;line-height:1}.mobile-header{justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.mobile-header-right,.top-nav-right{align-items:center;gap:12px;display:flex}.top-nav{z-index:20;background:var(--surface);border-bottom:1px solid var(--border);display:none;position:sticky;top:0}.top-nav-inner{align-items:center;gap:32px;max-width:1400px;margin:0 auto;padding:10px 24px;display:flex}.top-nav-links{flex:1;gap:8px;display:flex}.top-nav-links a{min-height:var(--touch);border-radius:var(--r-pill);font-family:var(--font-display);color:var(--muted);align-items:center;padding:0 14px;font-size:17px;font-weight:600;display:inline-flex}.top-nav-links a:hover{color:var(--text)}.top-nav-links a.active{color:var(--text);background:var(--card)}.page.with-bottom-nav{padding-bottom:calc(var(--bottom-nav-h) + var(--safe-bottom))}.bottom-nav{z-index:20;height:calc(var(--bottom-nav-h) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:var(--surface);border-top:1px solid var(--border);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;display:grid;position:fixed;bottom:0;left:0;right:0}.bottom-nav a{color:var(--muted);font-family:var(--font-display);flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:13px;font-weight:600;display:flex}.bottom-nav a.active{color:var(--primary-ink)}.overview,.profile,.settings{width:100%;margin:0 auto;padding:0 16px 24px}.overview{max-width:1100px;padding-bottom:96px}.section{margin-top:20px}.section-title{align-items:center;gap:10px;margin-bottom:12px;font-size:21px;display:flex}.section-title.small{margin-bottom:4px;font-size:17px}.card-grid{gap:14px;display:grid}.empty-state{text-align:center;flex-direction:column;align-items:center;gap:10px;padding:56px 16px 24px;display:flex}.empty-state h2{font-size:24px}.empty-state p{color:var(--muted);max-width:320px}.empty-state .rules-link{align-self:center}.new-game-bar{left:16px;right:16px;bottom:calc(var(--bottom-nav-h) + var(--safe-bottom) + 12px);z-index:15;position:fixed}.new-game-bar .btn{max-width:560px;box-shadow:0 8px 24px var(--shadow);margin:0 auto}.game-card{border-radius:var(--r-card);background:var(--turn-card);border:2px solid #0000;min-width:0;padding:16px;position:relative}.game-card.flat{background:var(--surface);border:1px dashed var(--dashed);color:var(--muted)}.game-card.flat strong{color:var(--text-soft)}.game-card.urgent{border:2px solid var(--warn)}.game-card.compact{border-radius:18px;padding:12px}.game-card.current{border:2px solid var(--text)}.game-card.current.urgent{border-color:var(--warn)}.card-link{z-index:1;border-radius:inherit;position:absolute;inset:0}.card-action{z-index:2;flex:none;position:relative}.sticker{z-index:2;background:var(--accent);color:var(--on-accent);font-family:var(--font-display);box-shadow:0 3px 0 var(--shadow-sticker);pointer-events:none;border-radius:8px;padding:3px 10px;font-size:14px;font-weight:700;position:absolute;top:-11px;right:18px;transform:rotate(7deg)}.game-card-top{align-items:center;gap:12px;display:flex}.game-card-main{flex:1;min-width:0}.game-card-name{flex-wrap:wrap;align-items:center;gap:2px 8px;min-width:0;display:flex}.game-card-name strong{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:16px;font-weight:800;overflow:hidden}.game-card-sub{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.game-card-time{flex-direction:column;flex:none;align-items:flex-end;display:flex}.time-value{font-size:18px;font-weight:800;line-height:1.1}.urgent .time-value{color:var(--warn-text)}.time-unit{color:var(--muted);font-size:12px;font-weight:700}.compact .game-card-sub{font-size:12px}.compact .chip{display:none}.progress{border-radius:var(--r-pill);background:var(--border);height:8px;margin-top:12px;overflow:hidden}.progress-fill{border-radius:inherit;background:var(--text);height:100%;transition:width .5s linear}.flat .progress-fill{background:var(--fill-flat)}.urgent .progress-fill{background:var(--warn)}.progress.primary .progress-fill{background:var(--primary)}.urgent .progress.primary .progress-fill{background:var(--warn)}.compact .progress{height:6px;margin-top:10px}.finished-list{border-radius:var(--r-card);background:var(--surface);margin:0;padding:4px 0;list-style:none}.finished-row{align-items:center;gap:12px;min-height:64px;padding:8px 16px;display:flex}.finished-main{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.finished-name{text-overflow:ellipsis;white-space:nowrap;font-weight:800;overflow:hidden}.finished-result{color:var(--muted);font-size:13px;font-weight:800}.finished-result.win{color:var(--primary-ink)}.finished-result.draw{color:var(--draw-text)}.finished-meta{color:var(--muted);flex-direction:column;flex:none;align-items:flex-end;gap:4px;font-size:13px;font-weight:700;display:flex}.page-title{margin:8px 0 16px;font-size:26px}.load-more{margin-top:16px}.sheet-backdrop{z-index:50;background:var(--scrim);justify-content:center;align-items:flex-end;animation:.15s fade-in;display:flex;position:fixed;inset:0}.sheet{width:100%;max-width:520px;max-height:92dvh;padding:10px 20px calc(24px + var(--safe-bottom));border-radius:var(--r-card) var(--r-card) 0 0;background:var(--card);outline:none;flex-direction:column;gap:16px;animation:.22s slide-up;display:flex;overflow-y:auto}.sheet-handle{border-radius:var(--r-pill);background:var(--border);width:40px;height:5px;margin:0 auto}.sheet-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.sheet-head h2{font-size:24px}.sheet-head .icon-btn{background:var(--surface);color:var(--muted)}.sheet-text{color:var(--muted);font-weight:700}.level-picker{align-items:center;gap:8px;display:flex}.level-picker input[type=range]{min-width:0;height:var(--touch);accent-color:var(--primary);flex:1}.level-picker .icon-btn{background:var(--surface);border:1px solid var(--border);font-size:24px;font-weight:800}.level-picker .icon-btn:disabled{opacity:.45}.level-label{text-align:center;font-family:var(--font-display);font-size:20px;font-weight:700}.sheet-actions{flex-direction:column;gap:8px;display:flex}.invite-link{flex-direction:column;gap:10px;display:flex}.invite-link-actions{gap:10px;display:flex}.invite-link-actions .btn{flex:1}.invite-link>.chip{align-self:flex-start}.theme-picker{grid-template-columns:1fr 1fr;gap:10px;display:grid}.theme-option{border:2px solid var(--border);border-radius:var(--r-input);background:0 0;padding:4px}.theme-option[aria-checked=true]{border-color:var(--primary-ink);box-shadow:0 0 0 2px var(--primary-ink)}.theme-option:disabled{opacity:.45}.theme-option-face{background:var(--bg);min-height:64px;color:var(--text);border-radius:12px;justify-content:center;align-items:center;display:flex}.theme-option-face .logo{align-items:center;gap:8px;display:inline-flex}.promotion-grid{grid-template-columns:repeat(4,minmax(0,88px));justify-content:center;gap:12px;display:grid}.promotion-tile{aspect-ratio:1;border-radius:var(--r-avatar);background:var(--sq-light);border:2px solid #0000;min-height:64px;padding:6px}.promotion-tile:hover,.promotion-tile:focus-visible{border-color:var(--primary-ink)}.promotion-tile img{width:100%;height:100%}@keyframes slide-up{0%{opacity:0;transform:translateY(40px)}}@keyframes fade-in{0%{opacity:0}}.board-frame{background:var(--primary);border-radius:22px;width:100%;padding:7px}.board{aspect-ratio:1;border-radius:14px;width:100%;overflow:hidden}.board cg-board{background-color:var(--sq-light);background-image:conic-gradient(var(--sq-dark) 25%, var(--sq-light) 0 50%, var(--sq-dark) 0 75%, var(--sq-light) 0);background-size:25% 25%}.board cg-board square.hl-last-light{background-color:var(--last-light)}.board cg-board square.hl-last-dark{background-color:var(--last-dark)}.board cg-board square.hl-sel-light{background-color:var(--sel-light)}.board cg-board square.hl-sel-dark{background-color:var(--sel-dark)}.board cg-board square.move-dest{background-image:radial-gradient(var(--dest) 19%, transparent 20%)}.board cg-board square.move-dest.oc{background-image:radial-gradient(transparent 0%, transparent 77%, var(--dest) 78%)}.board cg-board square.move-dest:hover{background-color:var(--dest-hover)}.board cg-board square.check{background-image:radial-gradient(#ff1e00 0%,#e70000cc 30%,#a9000000 75%)}.cg-wrap piece.pawn.white{background-image:url(/pieces/horsey/wP.svg)}.cg-wrap piece.knight.white{background-image:url(/pieces/horsey/wN.svg)}.cg-wrap piece.bishop.white{background-image:url(/pieces/horsey/wB.svg)}.cg-wrap piece.rook.white{background-image:url(/pieces/horsey/wR.svg)}.cg-wrap piece.queen.white{background-image:url(/pieces/horsey/wQ.svg)}.cg-wrap piece.king.white{background-image:url(/pieces/horsey/wK.svg)}.cg-wrap piece.pawn.black{background-image:url(/pieces/horsey/bP.svg)}.cg-wrap piece.knight.black{background-image:url(/pieces/horsey/bN.svg)}.cg-wrap piece.bishop.black{background-image:url(/pieces/horsey/bB.svg)}.cg-wrap piece.rook.black{background-image:url(/pieces/horsey/bR.svg)}.cg-wrap piece.queen.black{background-image:url(/pieces/horsey/bQ.svg)}.cg-wrap piece.king.black{background-image:url(/pieces/horsey/bK.svg)}.cg-wrap coords{font-family:var(--font-mono);opacity:1;font-size:11px;font-weight:800;display:none}.cg-wrap coords.ranks{width:auto;top:2px;left:4px}.cg-wrap coords.ranks coord{transform:none}.cg-wrap coords.files{text-transform:none;height:auto;bottom:2px;left:0}.cg-wrap coords.files coord{text-align:right;flex:1 1 0;padding-right:4px}.orientation-white coords coord:nth-child(odd),.orientation-black coords coord:nth-child(2n){color:var(--sq-light)}.orientation-white coords coord:nth-child(2n),.orientation-black coords coord:nth-child(odd){color:var(--sq-dark)}.game-page{flex-direction:column;width:100%;max-width:560px;margin:0 auto;padding:0 16px;display:flex}.game-list{display:none}.game-center{flex-direction:column;min-width:0;display:flex}.game-topbar{align-items:center;gap:10px;padding:12px 0 4px;display:flex}.game-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:20px;overflow:hidden}.move-number{color:var(--muted);flex:none;font-size:13px;font-weight:600}.player-row{align-items:center;gap:12px;min-height:60px;padding:10px 2px;display:flex}.player-info{flex-direction:column;flex:1;min-width:0;display:flex}.player-info strong{text-overflow:ellipsis;white-space:nowrap;font-weight:800;overflow:hidden}.to-move-dot{border-radius:var(--r-pill);background:var(--turn-soft);color:var(--turn-text);flex:none;padding:3px 10px;font-size:12px;font-weight:800}.budget-meter{flex-wrap:wrap;align-items:center;gap:4px 8px;margin-top:4px;display:flex}.battery{border:2px solid var(--muted);border-radius:5px;flex:none;width:44px;height:14px;padding:2px;position:relative}.battery:after{content:"";background:var(--muted);border-radius:0 2px 2px 0;width:3px;height:6px;position:absolute;top:2px;right:-6px}.battery-fill{background:var(--primary);border-radius:2px;height:100%;transition:width .5s linear}.budget-minutes{margin-left:4px;font-size:12px;font-weight:700}.game-side{flex-direction:column;gap:12px;margin-top:8px;display:flex}.timer-card{border-radius:var(--r-card);background:var(--card);flex-direction:column;gap:8px;padding:16px 18px;display:flex}.timer-card.urgent{border:2px solid var(--warn)}.timer-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.timer-label{color:var(--muted);font-size:14px;font-weight:800}.timer-deadline{color:var(--muted);font-size:14px;font-weight:700}.timer-value{letter-spacing:-.01em;font-size:38px;font-weight:800;line-height:1.05}.timer-card.urgent .timer-value{color:var(--warn-text)}.timer-card .progress{margin-top:2px}.move-nav{flex-direction:column;order:1;gap:8px;min-width:0;display:flex}.game-side.replay .move-nav{order:-1}.nav-buttons{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.nav-btn{border-radius:var(--r-pill);background:var(--card);border:1px solid var(--border);min-height:48px;color:var(--text);place-items:center;display:grid}.nav-btn:disabled{opacity:.4}.nav-btn:active:not(:disabled){transform:scale(.97)}.move-list{display:none}.move-strip{overscroll-behavior-x:contain;border-radius:var(--r-card);background:var(--card);flex-wrap:nowrap;align-items:center;gap:2px;padding:4px 6px;display:flex;overflow-x:auto}.strip-pair{flex:none;align-items:center;gap:2px;display:inline-flex}.strip-num{color:var(--muted);font-family:var(--font-mono);padding-left:6px;font-size:13px;font-weight:700}.move-btn{min-width:var(--touch);min-height:var(--touch);color:var(--text);font-family:var(--font-mono);white-space:nowrap;background:0 0;border-radius:10px;padding:0 10px;font-size:15px;font-weight:600}.move-btn.sel{background:var(--primary-soft);color:var(--on-primary-soft)}.move-empty{padding:4px 2px}.rules-link{min-height:44px;color:var(--primary-ink);font-family:var(--font-display);align-self:flex-start;align-items:center;gap:8px;font-weight:600;display:inline-flex}.game-actions{z-index:10;padding:12px 16px calc(12px + var(--safe-bottom));background:linear-gradient(to top, var(--bg) 75%, transparent);align-items:center;gap:12px;margin:0 -16px;display:flex;position:sticky;bottom:0}.resign-btn{background:var(--card);border:1px solid var(--border);width:54px;height:54px;color:var(--text);border-radius:50%;flex:none;place-items:center;display:grid}.resign-btn:disabled{opacity:.4}.resign-label{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.send-btn{text-overflow:ellipsis;flex:1;min-width:0;min-height:54px;font-size:18px;overflow:hidden}.game-over{z-index:60;padding:24px 20px calc(24px + var(--safe-bottom));background:var(--primary);color:var(--on-primary);justify-content:center;align-items:center;animation:.25s fade-in;display:flex;position:fixed;inset:0;overflow-y:auto}.game-over-card{text-align:center;flex-direction:column;align-items:center;gap:16px;width:100%;max-width:420px;display:flex}.game-over-headline{font-family:var(--font-display);font-size:60px;font-weight:700;line-height:1}.game-over-result{font-size:19px;font-weight:800}.game-over-exit{color:var(--on-primary)}.game-over .rating-change,.game-over .rating-change.up,.game-over .rating-change.down,.game-over .rating-change.even{color:var(--on-primary);font-size:17px}.result-headline{font-size:22px;font-weight:800;line-height:1.2}.browse-notice{flex-wrap:wrap;align-items:center}.browse-notice span{flex:1;min-width:180px}.board-frame.board-small{background:var(--bg);border-radius:18px;width:min(280px,72vw);padding:6px}.card-action.icon-only{width:var(--touch);padding:0}.board-small .board{border-radius:12px}.info-page{flex-direction:column;gap:24px;width:100%;max-width:720px;margin:0 auto;padding:8px 16px 24px;display:flex}.info-page h1{font-size:28px}.info-section{flex-direction:column;gap:12px;scroll-margin-top:88px;display:flex}.info-section h2{font-size:21px}.info-card{border-radius:var(--r-card);background:var(--card);overflow-wrap:anywhere;flex-direction:column;gap:10px;padding:16px 18px;display:flex}.info-card h3{font-size:18px}.info-card p{color:var(--text-soft);font-weight:600}.tier-table{border-collapse:collapse;width:100%;font-weight:700}.tier-table th,.tier-table td{text-align:left;border-bottom:1px solid var(--border);padding:8px 10px}.tier-table th{color:var(--muted);font-size:13px}.info-list{gap:2px 0;margin:0;display:grid}.info-list dt{margin-top:8px;font-weight:800}.info-list dd{color:var(--text-soft);margin:0;font-weight:600}.level-bands{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.level-bands li{background:var(--primary-soft);color:var(--on-primary-soft);border-radius:999px;padding:6px 12px;font-size:14px;font-weight:700}.credit-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.credit{border-radius:var(--r-card);background:var(--card);overflow-wrap:anywhere;flex-direction:column;gap:2px;padding:12px 16px;display:flex}.credit-what{color:var(--muted);font-size:13px;font-weight:700}.credit-name{font-weight:800}.credit-by{color:var(--text-soft);font-weight:600}.credit-links{flex-wrap:wrap;align-items:center;column-gap:16px;display:flex}.credit-license{min-height:44px;color:var(--text-soft);align-items:center;font-weight:700;display:inline-flex}.info-link{min-height:44px;color:var(--primary-ink);align-items:center;font-weight:700;text-decoration:underline;display:inline-flex}.profile,.settings{flex-direction:column;gap:16px;max-width:560px;display:flex}.settings h1{padding:8px 0;font-size:28px}.profile-head{flex-direction:column;align-items:center;gap:10px;padding:8px 0;display:flex}.profile-head h1{font-size:28px}.card{border-radius:var(--r-card);background:var(--card);flex-direction:column;gap:12px;padding:18px;display:flex}.card-title{font-size:19px}.toggle-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.toggle-row>div{flex-direction:column;gap:4px;display:flex}.switch{width:56px;height:var(--touch);flex:none;position:relative}.switch:before{content:"";border-radius:var(--r-pill);background:var(--border);height:32px;transition:background-color .15s;position:absolute;top:6px;left:0;right:0}.switch.on:before{background:var(--primary)}.switch-knob{background:var(--text);border-radius:50%;width:24px;height:24px;transition:transform .15s;position:absolute;top:10px;left:4px}.switch.on .switch-knob{background:var(--on-primary);transform:translate(24px)}.switch:disabled{opacity:.5}.logout-btn{margin-top:8px}.spinner-wrap{place-items:center;padding:48px 0;display:grid}.spinner{border:4px solid var(--border);border-top-color:var(--primary-ink);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width>=1024px){.top-nav{display:block}.mobile-header,.bottom-nav,.new-game-bar{display:none}.page.with-bottom-nav{padding-bottom:0}.overview{padding:8px 24px 48px}.card-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}.profile,.settings{padding-top:24px}.sheet-backdrop{align-items:center}.sheet{border-radius:var(--r-card);padding:20px 28px 28px}.sheet-handle{display:none}.game-page{grid-template-columns:260px minmax(0,640px) 300px;justify-content:center;align-items:start;gap:24px;max-width:1400px;padding:24px;display:grid}.game-list{flex-direction:column;gap:12px;max-height:calc(100dvh - 112px);padding:12px 4px 4px;display:flex;position:sticky;top:88px;overflow-y:auto}.game-topbar{display:none}.game-center .player-row:first-child,.game-center .board-frame+.player-row{padding:8px 2px}.cg-wrap coords{display:flex}.board-small .cg-wrap coords{display:none}.game-side{margin-top:0;position:sticky;top:88px}.timer-value{font-size:46px}.move-nav,.game-side.replay .move-nav{order:0}.move-strip{display:none}.move-list{border-radius:var(--r-card);background:var(--card);max-height:260px;padding:8px 10px;display:block;overflow-y:auto}.move-list table{border-collapse:separate;border-spacing:0 2px;width:100%;font-family:var(--font-mono);font-size:14px;font-weight:600}.move-list th{text-align:left;color:var(--muted);font-family:var(--font-body);padding:4px 8px;font-size:12px;font-weight:800}.move-list td{padding:0}.move-list td:first-child{width:36px;padding:4px 8px}.move-list .move-btn{text-align:left;border-radius:8px;width:100%;min-width:0;min-height:0;padding:4px 8px;font-size:14px;display:block}.move-list .move-btn:hover:not(.sel){background:var(--surface)}.game-actions{background:0 0;flex-direction:column-reverse;align-items:stretch;gap:10px;margin:0;padding:0;position:static}.resign-btn{border-radius:var(--r-pill);width:100%;height:48px;font-family:var(--font-display);justify-content:center;align-items:center;gap:8px;font-size:17px;font-weight:600;display:flex}.resign-label{clip:auto;width:auto;height:auto;position:static}.send-btn{flex:none;width:100%}.game-over{background:var(--scrim-strong)}.game-over-card{border-radius:var(--r-card);background:var(--primary);max-width:460px;box-shadow:0 30px 80px var(--shadow);padding:36px 32px 32px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.rating-inline,.rating-value,.rating-rd,.rating-big,.rating-delta,.rank-games,.rank-record,.h2h-games,.h2h-record{font-variant-numeric:tabular-nums}.rating-inline{color:var(--muted);white-space:nowrap;font-weight:700}.rating-delta{font-size:15px;font-weight:800}.rating-delta.up,.rating-change.up{color:var(--primary-ink)}.rating-delta.down,.rating-change.down{color:var(--error-text)}.rating-delta.even,.rating-change.even{color:var(--muted)}.rating-change{text-align:center;font-variant-numeric:tabular-nums;font-weight:800}.result-card .rating-change{text-align:left;font-size:14px}.sheet-rating{text-align:center;color:var(--muted);font-variant-numeric:tabular-nums;font-weight:700}.rating-summary{text-align:center;flex-direction:column;align-items:center;gap:4px;display:flex}.rating-big{font-size:30px;font-weight:700;line-height:1.1}.rating-big .rating-rd{color:var(--muted);font-size:18px}.rating-rank{font-family:var(--font-display);font-size:18px;font-weight:700}.rating-record{font-size:14px}.ranking-hint{margin:-8px 0 16px}.rank-table{border-radius:var(--r-card);background:var(--surface);margin:0;padding:4px 0;list-style:none;overflow:hidden}.rank-head{display:none}.rank-row{grid-template-columns:28px 40px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:64px;padding:8px 12px;display:grid}.rank-pos{text-align:center;color:var(--muted);font-weight:800}.rank-name{flex-direction:column;gap:2px;min-width:0;display:flex}.rank-name strong,.rank-sub{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rank-sub{color:var(--muted);font-size:13px}.rank-rating{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.rank-rating .rating-value{font-weight:800}.rank-rating .rating-rd{color:var(--muted);font-size:13px}.rank-games,.rank-record{display:none}.rank-row.me{background:var(--primary-soft);color:var(--on-primary-soft)}.rank-row.me .rank-pos,.rank-row.me .rank-sub,.rank-row.me .rating-rd{color:inherit;opacity:.8}.player-head{text-align:center;align-items:center}.player-head h1{font-size:28px}.h2h-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.h2h-row{grid-template-columns:40px minmax(0,1fr) auto auto;align-items:center;gap:10px;min-height:56px;padding:6px 0;display:grid}.h2h-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:800;overflow:hidden}.h2h-games{text-align:right;min-width:2ch;color:var(--muted)}.h2h-record{text-align:right;min-width:7ch}@media (width>=1024px){.ranking-page{max-width:860px}.only-mobile{display:none}.rank-head,.rank-row{grid-template-columns:56px 40px minmax(0,1fr) 160px 90px 120px;gap:12px;padding:8px 20px}.rank-head{min-height:40px;color:var(--muted);align-items:center;font-size:13px;font-weight:800;display:grid}.rank-head .rank-pos,.rank-head .rank-games,.rank-head .rank-record{color:inherit}.rank-rating{flex-direction:row;justify-content:flex-end;align-items:baseline;gap:8px}.rank-head .rank-rating{justify-content:flex-end}.rank-games,.rank-record{text-align:right;display:block}}
