@charset "UTF-8";
:root{color-scheme:light;--paper:#f6f3e9;--card:#fffdf6;--ink:#243b32;--muted:#737e70;--forest:#365b46;--forest-dark:#254734;--sage:#93a789;--light-square:#ebe6cb;--dark-square:#78936f;--line:#dddccd;--amber:#c59950;--danger:#a44738;--shadow:0 12px 36px #263b3210;font-family:"Aptos","Segoe UI",system-ui,sans-serif;font-synthesis:none;font-size:15px;background:var(--paper);color:var(--ink)}
*{box-sizing:border-box}body{margin:0;min-width:280px;background:radial-gradient(ellipse at 90% 0,#e6eadc88,transparent 46%),var(--paper);line-height:1.5}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.52}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--amber);outline-offset:3px}button,input{touch-action:manipulation}button{color:inherit}h1,h2,h3,p{margin:0}h1,h2{font-family:Georgia,"Times New Roman",serif;font-weight:400;letter-spacing:-.045em}h3{font-size:1rem;font-weight:650;letter-spacing:-.02em}h2{font-size:1.9rem;line-height:1.18}h1{font-size:clamp(3.5rem,7vw,5.25rem);line-height:1.04}h1 em{font-weight:400;color:var(--forest)}[hidden]{display:none!important}.app-shell{max-width:1120px;margin:auto;padding:0 34px;padding-left:max(34px,env(safe-area-inset-left));padding-right:max(34px,env(safe-area-inset-right))}.site-header{min-height:104px;display:flex;align-items:center;gap:20px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;margin-right:auto}.brand-mark{font-family:Georgia,serif;display:grid;place-items:center;width:44px;height:48px;background:var(--forest);color:var(--paper);border-radius:12px 12px 3px 3px;font-size:37px;line-height:1;padding-bottom:4px}.brand-overline{display:block;font-size:.62rem;font-weight:750;letter-spacing:.24em;color:var(--muted);line-height:1.6}.brand-name{display:block;font-size:1.12rem;letter-spacing:-.035em;font-weight:650;line-height:1.35}.club-tag{font-size:.75rem;border:1px solid var(--line);border-radius:999px;padding:7px 12px;color:var(--muted)}.identity{max-width:180px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:.85rem}.identity::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--sage);margin-right:8px}.eyebrow{font-size:.65rem;font-weight:750;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:14px}.hero-copy{font-size:1rem;line-height:1.65;color:var(--muted);margin-top:20px}.quiet-label{font-size:.73rem;color:var(--muted)}.site-footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);margin-top:48px;padding:22px 0 max(24px,env(safe-area-inset-bottom));font-size:.72rem;color:var(--muted)}.button{display:inline-flex;justify-content:center;align-items:center;gap:12px;border-radius:11px;min-height:46px;border:1px solid transparent;padding:11px 17px;font-weight:600;font-size:.85rem;transition:background .15s,transform .15s}.button:not(:disabled):active{transform:translateY(1px)}.primary{background:var(--forest);color:#fffdf6}.primary:not(:disabled):hover{background:var(--forest-dark)}.secondary{background:transparent;border-color:var(--line);color:var(--ink)}.secondary:not(:disabled):hover{background:#e9eadf}.text-button{display:inline-flex;justify-content:center;align-items:center;gap:7px;background:none;border:0;padding:8px 0;font-size:.8rem;font-weight:600;color:var(--forest);min-height:38px}.text-button:hover{text-decoration:underline;text-underline-offset:3px}.icon-button{display:grid;place-items:center;width:38px;height:38px;background:transparent;border:1px solid var(--line);border-radius:50%;font-size:1.25rem;line-height:1}.full{width:100%}.button-pair{display:flex;gap:8px}.button-pair>.button{flex:1}.danger-text{color:var(--danger)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.connection,.notice{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;border-radius:10px;font-size:.8rem;margin-top:16px;background:#f1e2c7;color:#6c501f}.notice{background:#f1e3dc;color:#863e30}.connection .text-button{padding:0;min-height:28px;color:inherit}.loading-view{min-height:65vh;display:grid;place-content:center;text-align:center;gap:12px;color:var(--muted);font-size:.9rem}.loading-rook{font-size:52px;color:var(--sage);animation:breath 1.6s ease-in-out infinite}@keyframes breath{50%{opacity:.35;transform:translateY(-3px)}}

/* Arrival and lobby */
.locked-view{display:grid;grid-template-columns:1fr 1fr;gap:55px;align-items:center;min-height:650px;padding:56px 0}.locked-copy h1{font-size:6rem}.entry-note{display:flex;gap:13px;align-items:flex-start;padding:20px 0;margin-top:25px;margin-bottom:12px;border-top:1px solid var(--line);max-width:365px}.entry-note strong{font-size:.93rem;display:block}.entry-note p{font-size:.82rem;line-height:1.65;color:var(--muted);margin-top:5px}.entry-icon{display:grid;place-items:center;min-width:34px;height:34px;background:#e2e8d6;border-radius:9px;color:var(--forest);font-size:1.25rem}.illustration-wrap{transform:rotate(-5deg);padding:20px;background:#e5e7d7;border:1px solid #d4d9c8;border-radius:18px;box-shadow:14px 24px 0 -10px #d6ddca,0 24px 35px #253f3120}.illustration-label{display:flex;justify-content:space-between;gap:10px;font-size:.59rem;font-weight:700;letter-spacing:.13em;color:#667761;padding-bottom:12px}.illustration-label span{font-size:.62rem;font-weight:400;letter-spacing:0}.illustration-board{display:grid;grid-template-columns:repeat(8,1fr);aspect-ratio:1;border-radius:4px;overflow:hidden;border:5px solid var(--forest-dark)}.illustration-square{aspect-ratio:1;display:grid;place-items:center;min-width:0}.illustration-square.light{background:var(--light-square)}.illustration-square.dark{background:var(--dark-square)}.illustration-square svg{width:90%;height:90%}.board-note{display:block;text-align:center;font-family:Georgia,serif;font-style:italic;font-size:.86rem;padding-top:14px;color:#65745d}.lobby-hero{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:46px 0 38px}.lobby-hero h1{font-size:4.65rem}.lobby-hero .hero-copy{font-size:.93rem;margin-top:16px}.hero-piece{width:160px;height:160px;background:repeating-conic-gradient(#d9dfc8 0% 25%,#e9ecd9 0% 50%) 50%/56px 56px;display:grid;place-items:center;border-radius:50%;transform:rotate(-9deg);margin-right:38px;box-shadow:13px 11px 0 #eeeada}.hero-piece svg{width:118px;height:118px;filter:drop-shadow(4px 6px 0 #35533e22)}.lobby-grid{display:grid;grid-template-columns:minmax(0,1fr) 315px;gap:36px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.section-heading .eyebrow{margin-bottom:7px}.section-heading h2{font-size:1.65rem}.count-badge{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;min-width:26px;height:25px;border-radius:8px;background:#e6eadb;font-family:"Segoe UI",sans-serif;font-size:.73rem;font-weight:600;letter-spacing:0;margin-left:5px}.tables-list{display:grid;gap:11px}.table-card{display:flex;align-items:center;gap:14px;padding:17px 18px;border:1px solid var(--line);background:var(--card);border-radius:13px;transition:border-color .15s}.table-card:hover{border-color:#a5b597}.table-avatar{display:grid;place-items:center;width:43px;height:43px;flex-shrink:0;background:#e6ecdb;border-radius:12px;font-family:Georgia,serif;font-size:1.2rem;color:var(--forest)}.table-info{min-width:0;flex:1}.table-host{font-size:.91rem;display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.table-meta{display:block;font-size:.71rem;color:var(--muted);margin-top:4px}.table-card .button{min-height:36px;padding:7px 13px;font-size:.76rem}.empty-tables{border:1px dashed #c7cdb8;border-radius:14px;min-height:227px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:25px;background:#eef0e4aa}.empty-symbol{font-size:42px;line-height:1;color:#8ca282;margin-bottom:16px}.empty-tables h3{font-family:Georgia,serif;font-size:1.35rem;font-weight:400}.empty-tables p{font-size:.79rem;line-height:1.7;color:var(--muted);max-width:250px;margin-top:8px}.lobby-sidebar{display:grid;align-content:start;gap:17px}.create-card{background:var(--forest);color:var(--paper);border-radius:17px;padding:25px}.create-card h2{font-size:1.75rem;margin-top:10px}.create-card p{font-size:.8rem;color:#d7e0cb;line-height:1.65;margin-top:12px}.create-card .primary{background:var(--paper);color:var(--forest);width:100%;justify-content:space-between;margin-top:22px}.create-card .primary:hover{background:white}.create-card .card-footnote{font-size:.63rem;text-align:center;margin-top:12px;color:#c3d1b5}.small-board-icon{font-size:31px;line-height:1;color:#d2dec1}.join-card{padding:20px 22px;border:1px solid var(--line);border-radius:14px}.join-card p{font-size:.76rem;color:var(--muted);margin-top:6px}.join-form{display:flex;gap:8px;margin-top:15px}.join-form input{width:100%;min-width:0;border:1px solid var(--line);border-radius:9px;background:var(--card);color:var(--ink);padding:9px 11px;font-size:.79rem;text-transform:uppercase}.join-form .button{min-height:41px;padding:9px 12px;font-size:.78rem}.resume-card{display:flex;align-items:center;gap:17px;background:#e5ead8;border:1px solid #cbd6ba;border-radius:13px;margin-bottom:29px;padding:18px 20px}.resume-card>div{flex:1;min-width:0}.resume-card strong{display:block;font-size:.97rem}.resume-card p{font-size:.78rem;color:var(--muted);margin-top:4px}.resume-symbol{font-size:29px;color:var(--forest)}.history-section{margin-top:38px}.history-section .section-heading{padding-bottom:15px;border-bottom:1px solid var(--line);margin-bottom:0}.history-list{display:grid}.history-row{display:flex;align-items:center;gap:15px;width:100%;text-align:left;padding:15px 0;background:none;border:0;border-bottom:1px solid #e5e5d8}.history-row:hover .history-opponent{text-decoration:underline;text-underline-offset:3px}.history-result{min-width:47px;padding:5px 7px;border-radius:7px;background:#e6eadb;font-size:.74rem;text-align:center;color:var(--forest)}.history-result.lost{background:#efe3da;color:#97604b}.history-info{flex:1;min-width:0}.history-opponent{display:block;font-size:.85rem;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.history-meta{font-size:.7rem;color:var(--muted)}.history-arrow{color:var(--muted)}.history-empty{padding:22px 0;font-size:.81rem;color:var(--muted)}

/* Table */
.game-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:26px 0 23px}.game-heading h1{font-size:1.8rem}.preset-badge{font-size:.8rem;border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-variant-numeric:tabular-nums}.game-layout{display:grid;grid-template-columns:minmax(0,610px) minmax(245px,1fr);gap:31px;align-items:start}.play-area{min-width:0}.player-card{display:flex;align-items:center;gap:12px;padding:11px 3px 14px;min-width:0}.player-card.self{padding:14px 3px 11px}.player-avatar{display:grid;place-items:center;width:39px;height:39px;flex-shrink:0;border-radius:50%;background:#e1e6d5;color:var(--forest);font-size:.86rem;font-weight:600}.player-avatar.black-side{background:var(--forest);color:var(--paper)}.player-info{flex:1;min-width:0;line-height:1.3}.player-info strong{font-size:.9rem;font-weight:650;display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;margin-top:3px}.player-caption{display:block;font-size:.62rem;color:var(--muted);text-transform:uppercase;letter-spacing:.1em}.clock{font-family:"Aptos","Segoe UI",sans-serif;font-variant-numeric:tabular-nums;font-weight:600;letter-spacing:-.04em;font-size:1.65rem;line-height:1;min-width:98px;text-align:center;flex-shrink:0;background:#e7e8dd;padding:12px 15px;border-radius:10px;transition:background .2s,color .2s}.clock.running{background:var(--forest);color:var(--paper)}.clock.low{background:#f1d9c8;color:#8a3528}.clock.running.low{background:#9e4b39;color:#fff8ed}.board-frame{padding:9px;background:var(--forest-dark);border-radius:12px;box-shadow:0 6px 0 #193629,0 12px 26px #233b3220}.chessboard{display:grid;grid-template-columns:repeat(8,1fr);aspect-ratio:1;border-radius:4px;overflow:hidden;touch-action:manipulation;isolation:isolate}.square{position:relative;display:flex;align-items:center;justify-content:center;border:0;border-radius:0;padding:0;min-width:0;min-height:0;width:100%;aspect-ratio:1;cursor:pointer;overflow:hidden}.square.light{background:var(--light-square)}.square.dark{background:var(--dark-square)}.square:disabled{cursor:default;opacity:1}.square:focus-visible{outline:3px solid #f4cc64;outline-offset:-3px;z-index:2}.square.last-move.light{background:#dccd85}.square.last-move.dark{background:#a7ac69}.square.selected{background:#b9bd6e!important;box-shadow:inset 0 0 0 3px #3a5537}.square.in-check{background:#bd725d!important}.square.legal::after{content:"";position:absolute;width:24%;height:24%;border-radius:50%;background:#28483545;pointer-events:none}.square.legal.has-piece::after{width:88%;height:88%;background:transparent;border:5px solid #28483560}.piece{position:relative;width:92%;height:92%;z-index:1;pointer-events:none;filter:drop-shadow(0 2px 1px #132c2025)}.coordinate{position:absolute;font-size:clamp(.47rem,1vw,.68rem);line-height:1;font-weight:700;z-index:3;pointer-events:none}.coordinate.file{bottom:3px;right:4px}.coordinate.rank{top:3px;left:4px}.light .coordinate{color:#59704d}.dark .coordinate{color:#eee8ca}.board-tools{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:2px 3px}.board-tools .text-button{font-size:.73rem}.board-tools .quiet-label{font-size:.67rem}.game-sidebar{display:grid;gap:17px;padding-top:11px}.game-status-card{border-radius:14px;padding:21px;background:#e9ecde;border:1px solid #dce2ce}.game-status-card .eyebrow{margin-bottom:9px;font-size:.6rem}.game-status-card h2{font-size:1.7rem}.game-status-card>p:not(.eyebrow){font-size:.8rem;color:var(--muted);line-height:1.65;margin-top:10px}.game-status-card.your-turn{background:#e2e9d5;border-color:#b8caa1}.game-status-card.your-turn .eyebrow{color:#45653c}.game-status-card.finished{background:#f0e6cf;border-color:#e2cf9f}.invite-box{border-top:1px solid #cdd7bf;margin-top:17px;padding-top:14px}.invite-box>span{font-size:.66rem;color:var(--muted)}.invite-box>div{display:flex;justify-content:space-between;align-items:center;gap:8px}.invite-box strong{font-size:1.15rem;letter-spacing:.15em;font-variant-numeric:tabular-nums;word-break:break-all}.invite-box .text-button{font-size:.69rem}.moves-card{padding:19px;border:1px solid var(--line);background:#fffdf680;border-radius:13px;min-width:0}.moves-card .section-heading{margin-bottom:14px}.moves-card h3{font-size:.88rem}.moves-list{max-height:268px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.moves-empty{font-size:.76rem;color:var(--muted);padding:13px 0 20px;line-height:1.7}.move-row{display:grid;grid-template-columns:30px 1fr 1fr;padding:7px 9px;border-radius:6px;font-size:.84rem;font-variant-numeric:tabular-nums;gap:6px}.move-row:nth-child(odd){background:#eaeddf}.move-number{font-size:.73rem;color:var(--muted)}.move-san{font-weight:600;letter-spacing:.015em}.move-san.latest{color:var(--forest);text-decoration:underline;text-decoration-color:var(--amber);text-underline-offset:4px}.game-actions{display:grid;grid-template-columns:1fr;gap:2px}.game-actions .button{font-size:.78rem}.game-actions .text-button{font-size:.74rem}.fair-play-note{font-size:.67rem;color:var(--muted);line-height:1.75}.draw-banner{margin-top:17px;border-top:1px solid #ccd4c0;padding-top:15px}.draw-banner p{font-size:.78rem;line-height:1.6;margin-bottom:11px}.draw-banner .button{min-height:36px;padding:8px;font-size:.73rem}#claim-draw{font-size:.74rem;margin-top:12px;width:100%}

/* Dialogs */
.modal{border:1px solid #dfdfcd;border-radius:20px;background:var(--paper);color:var(--ink);width:min(420px,calc(100vw - 32px));max-height:calc(100dvh - 40px);overflow:auto;padding:28px;box-shadow:0 30px 100px #132c2035}.modal::backdrop{background:#172c245e;backdrop-filter:blur(3px)}.modal-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:16px}.modal-heading .eyebrow{margin-bottom:0}.modal-heading .icon-button{width:30px;height:30px}.modal h2{font-size:2rem}.modal-copy{font-size:.84rem;color:var(--muted);line-height:1.65;margin:13px 0 23px}.modal fieldset{border:0;padding:0;margin:0 0 21px;min-width:0}.modal legend{font-size:.73rem;font-weight:650;margin-bottom:10px}.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.choice{display:block;cursor:pointer;position:relative}.choice input{position:absolute;opacity:0;width:1px;height:1px}.choice>span{display:block;border:1px solid var(--line);border-radius:11px;padding:13px 14px;background:#fffdf680}.choice input:checked+span{border-color:#79956b;background:#e5ecd8;box-shadow:inset 0 0 0 1px #79956b}.choice input:focus-visible+span{outline:3px solid var(--amber);outline-offset:2px}.choice strong{display:block;font-size:.88rem}.choice-grid strong{font-size:1.6rem;font-weight:550;letter-spacing:-.04em}.choice small{display:block;font-size:.7rem;color:var(--muted);margin-top:6px;line-height:1.6}.choice-stack{display:grid;gap:8px}.choice-stack small{margin-top:2px}.promotion-options{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}.promotion-choice{display:flex;flex-direction:column;align-items:center;background:#e1e7d2;border:1px solid #c6d1b4;border-radius:11px;padding:8px 4px;color:var(--forest);font-size:.65rem;font-weight:600}.promotion-choice:hover{background:#d0dfb7}.promotion-choice svg{width:100%;height:auto;aspect-ratio:1;margin-bottom:5px}.no-script{text-align:center;padding:25px;color:var(--danger)}

@media(max-width:850px){.app-shell{padding-left:max(22px,env(safe-area-inset-left));padding-right:max(22px,env(safe-area-inset-right))}.lobby-grid{gap:22px;grid-template-columns:minmax(0,1fr) 280px}.game-layout{grid-template-columns:minmax(0,1fr) 235px;gap:20px}.game-sidebar{gap:13px}.game-status-card,.moves-card{padding:17px}.clock{min-width:85px;font-size:1.5rem;padding:11px}.locked-view{gap:35px;min-height:590px}.locked-copy h1{font-size:4.7rem}.illustration-wrap{padding:14px}.hero-piece{margin-right:15px;width:140px;height:140px}.hero-piece svg{width:103px;height:103px}.board-tools .quiet-label{max-width:150px;text-align:right}}
@media(max-width:650px){.app-shell{padding-left:max(19px,env(safe-area-inset-left));padding-right:max(19px,env(safe-area-inset-right))}.site-header{min-height:83px;gap:12px}.brand-mark{width:37px;height:41px;font-size:31px;border-radius:9px 9px 3px 3px}.brand{gap:9px}.brand-overline{font-size:.56rem}.brand-name{font-size:.99rem}.club-tag{font-size:.61rem;padding:6px 9px}.identity{font-size:.72rem;max-width:105px}.identity:not([hidden])~.club-tag{display:none}.lobby-hero{padding:33px 0 29px;gap:5px}.lobby-hero h1{font-size:3.75rem}.lobby-hero .eyebrow{font-size:.59rem;letter-spacing:.13em;margin-bottom:10px}.lobby-hero .hero-copy{font-size:.83rem;margin-top:13px}.hero-piece{width:99px;height:99px;flex-shrink:0;margin-right:4px;background-size:36px 36px;box-shadow:8px 8px 0 #eeeada}.hero-piece svg{width:76px;height:76px}.lobby-grid{display:flex;flex-direction:column;gap:23px}.lobby-sidebar{display:grid;grid-template-columns:1fr;gap:14px}.create-card{padding:22px}.create-card h2{font-size:1.7rem}.create-card .small-board-icon{float:right;font-size:48px;opacity:.75}.create-card p{max-width:240px}.create-card .primary{margin-top:18px}.create-card .card-footnote{max-width:none}.tables-list{gap:9px}.section-heading{margin-bottom:15px}.section-heading h2{font-size:1.55rem}.table-card{padding:14px;gap:12px}.table-avatar{width:38px;height:38px}.table-host{font-size:.86rem}.table-meta{font-size:.65rem}.empty-tables{min-height:175px;padding:22px}.empty-symbol{font-size:33px;margin-bottom:10px}.empty-tables h3{font-size:1.2rem}.empty-tables p{font-size:.75rem;margin-top:7px}.resume-card{padding:15px;gap:10px;margin-bottom:24px}.resume-card strong{font-size:.87rem}.resume-card p{font-size:.69rem}.resume-card .button{font-size:.72rem;padding:9px 12px;min-height:39px}.history-section{margin-top:29px}.site-footer{margin-top:31px;font-size:.64rem;gap:15px;padding-top:19px}.locked-view{grid-template-columns:1fr;gap:35px;padding:36px 0 16px;min-height:0}.locked-copy h1{font-size:4.8rem}.locked-copy h1 br{display:none}.locked-copy .hero-copy{font-size:.9rem}.entry-note{margin-top:22px;margin-bottom:6px;max-width:none}.locked-copy>.quiet-label{font-size:.65rem}.illustration-wrap{width:82%;max-width:365px;margin:0 auto 14px;transform:rotate(-4deg)}.illustration-label{font-size:.51rem}.illustration-label span{font-size:.55rem}.board-note{font-size:.75rem}.game-heading{margin:18px 0 12px;gap:8px}.game-heading h1{font-size:1.5rem}.game-heading .text-button{font-size:.76rem}.preset-badge{font-size:.74rem;padding:4px 10px}.game-layout{display:flex;flex-direction:column;gap:14px}.play-area{width:100%}.board-frame{padding:7px;border-radius:9px;box-shadow:0 4px 0 #193629,0 10px 24px #233b3217}.chessboard{border-radius:3px}.player-card{padding:8px 1px 11px;gap:10px}.player-card.self{padding:12px 1px 8px}.player-avatar{width:35px;height:35px;font-size:.76rem}.player-info strong{font-size:.84rem}.player-caption{font-size:.57rem}.clock{min-width:91px;font-size:1.6rem;border-radius:9px;padding:10px 12px}.coordinate{font-size:.55rem}.board-tools{gap:6px;padding:0}.board-tools .quiet-label{max-width:none;font-size:.6rem}.board-tools .text-button{font-size:.7rem}.game-sidebar{padding-top:0;width:100%;gap:13px}.game-status-card{padding:18px}.game-status-card h2{font-size:1.65rem}.game-status-card .eyebrow{margin-bottom:7px}.game-status-card>p:not(.eyebrow){margin-top:7px;font-size:.78rem}.moves-list{max-height:185px}.moves-card{padding:17px}.moves-empty{padding:5px 0 9px}.game-actions{grid-template-columns:1fr 1fr;gap:9px;align-items:center}.game-actions #cancel-table{grid-column:1/-1}.fair-play-note{font-size:.66rem}.modal{padding:23px;border-radius:17px}.modal h2{font-size:1.85rem}.modal-copy{font-size:.8rem}.promotion-options{gap:6px}}
@media(max-width:360px){.app-shell{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}.club-tag{display:none}.lobby-hero h1{font-size:3.2rem}.hero-piece{width:77px;height:77px;margin-right:2px}.hero-piece svg{width:64px;height:64px}.lobby-hero .hero-copy{font-size:.76rem}.locked-copy h1{font-size:4rem}.clock{min-width:79px;font-size:1.38rem;padding:10px}.player-info strong{font-size:.78rem}.board-tools .quiet-label{font-size:.54rem}.table-card{padding:12px;gap:9px}.table-card .button{padding:7px 10px}.table-meta{font-size:.61rem}.modal{padding:20px}.choice>span{padding:11px}.site-footer{font-size:.58rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Invitation tokens use both cases; never visually rewrite a copied code. */
.join-form input{text-transform:none}

/* Telegram fullscreen reserves both device and native-control safe areas.
   max() avoids counting the same device inset twice; content insets are extra.
   Zero SDK insets preserve the existing desktop / 390px / 320px layout. */
:root {
  --chess-gutter: 34px;
  --chess-safe-top: calc(max(env(safe-area-inset-top, 0px), var(--tg-safe-area-inset-top, 0px)) + var(--tg-content-safe-area-inset-top, 0px));
  --chess-safe-bottom: calc(max(env(safe-area-inset-bottom, 0px), var(--tg-safe-area-inset-bottom, 0px)) + var(--tg-content-safe-area-inset-bottom, 0px));
  --chess-safe-left: calc(max(env(safe-area-inset-left, 0px), var(--tg-safe-area-inset-left, 0px)) + var(--tg-content-safe-area-inset-left, 0px));
  --chess-safe-right: calc(max(env(safe-area-inset-right, 0px), var(--tg-safe-area-inset-right, 0px)) + var(--tg-content-safe-area-inset-right, 0px));
}
.app-shell {
  padding-top: var(--chess-safe-top);
  padding-left: max(var(--chess-gutter), var(--chess-safe-left));
  padding-right: max(var(--chess-gutter), var(--chess-safe-right));
}
.site-footer { padding-bottom: max(24px, var(--chess-safe-bottom)); }
.modal {
  top: var(--chess-safe-top);
  bottom: var(--chess-safe-bottom);
  left: var(--chess-safe-left);
  right: var(--chess-safe-right);
  width: min(420px, calc(100vw - 32px - var(--chess-safe-left) - var(--chess-safe-right)));
  max-height: calc(100dvh - 40px - var(--chess-safe-top) - var(--chess-safe-bottom));
}
@media(max-width:850px) { :root { --chess-gutter: 22px; } }
@media(max-width:650px) { :root { --chess-gutter: 19px; } }
@media(max-width:360px) { :root { --chess-gutter: 12px; } }
