@charset "UTF-8";:root{--bg: #f4f2ee;--panel: #ffffff;--ink: #23211d;--ink-soft: #6b675f;--line: #dcd8d0;--accent: #3e8e6d;--accent-strong: #e8b04b;--danger: #c04b3a;--sq-light: #e8e2d6;--sq-dark: #a08e75;--radius: 8px}@media(prefers-color-scheme:dark){:root{--bg: #1c1b19;--panel: #26241f;--ink: #ece8e1;--ink-soft: #9b968c;--line: #3a372f;--sq-light: #b9a98f;--sq-dark: #6f6046}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.45 system-ui,-apple-system,Segoe UI,sans-serif}.app-shell main{max-width:1200px;margin:0 auto;padding:16px}.navbar{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;background:var(--panel);border-bottom:1px solid var(--line)}.navbar .brand{font-size:20px;font-weight:700;text-decoration:none;color:var(--ink)}.navbar .brand .brand-n{color:var(--accent)}.navbar .nav-links{display:flex;align-items:center;gap:14px}.navbar .nav-links a{color:var(--ink-soft);text-decoration:none}.navbar .nav-links a:hover{color:var(--ink)}.navbar .nav-links .nav-user{font-weight:600}.btn{border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:var(--radius);padding:8px 18px;font-size:15px;cursor:pointer;transition:transform .05s,background .15s}.btn:hover:not(:disabled){background:color-mix(in srgb,var(--panel) 85%,var(--accent))}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:default}.btn-primary,.btn-roll{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover:not(:disabled),.btn-roll:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 85%,black)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-ghost{background:transparent}.btn-small{padding:4px 10px;font-size:13px}.banner{border-radius:var(--radius);padding:10px 12px;margin-bottom:10px;font-size:14px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.banner.banner-error{background:color-mix(in srgb,var(--danger) 12%,var(--panel));border:1px solid var(--danger)}.banner.banner-info{background:var(--panel);border:1px solid var(--line);color:var(--ink-soft)}.banner.banner-action{background:color-mix(in srgb,var(--accent) 10%,var(--panel));border:1px solid var(--accent)}.banner .share-link{display:block;width:100%;font-size:12px;overflow-wrap:anywhere}.auth-card{max-width:380px;margin:48px auto;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:24px}.auth-card h2{margin-top:0}.auth-card label{display:block;margin-bottom:12px;font-size:13px;color:var(--ink-soft)}.auth-card label input{display:block;width:100%;margin-top:4px;padding:8px 10px;font-size:15px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--ink)}.auth-card .btn{width:100%;margin-top:6px}.auth-card .auth-alt{font-size:13px;color:var(--ink-soft)}.auth-card .auth-alt a{color:var(--accent)}.invite-sub{color:var(--ink-soft);font-size:14px;margin:0 0 16px}.invite-sub strong{color:var(--ink)}.invite-note{color:var(--ink-soft);font-size:12.5px;margin:8px 0 0}.guest-divider{display:flex;align-items:center;gap:10px;margin:16px 0 12px;color:var(--ink-soft);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.guest-divider:before,.guest-divider:after{content:"";flex:1;height:1px;background:var(--line)}.share-invite .share-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.share-invite .share-actions a.btn{text-decoration:none;display:inline-flex;align-items:center}.share-invite .share-link-input{width:100%;margin-top:10px;padding:8px 10px;font-size:12px;font-family:ui-monospace,monospace;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--ink-soft)}.share-invite.compact .share-actions .btn-primary{background:transparent;color:var(--ink);border-color:var(--line)}.share-invite.compact .share-actions .btn-primary:hover:not(:disabled){background:color-mix(in srgb,var(--panel) 85%,var(--accent))}.waiting-panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin-bottom:12px}.waiting-panel .waiting-title{font-weight:600;margin-bottom:10px}.home-actions{margin-bottom:18px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}.new-game-modal{display:flex;gap:10px;align-items:end;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px}.new-game-modal label{font-size:13px;color:var(--ink-soft)}.new-game-modal label select{display:block;margin-top:4px;padding:7px;border-radius:6px;border:1px solid var(--line);background:var(--bg);color:var(--ink)}.game-list{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;margin-bottom:16px}.game-list h3{margin:4px 0 10px;font-size:14px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}.game-list .empty{color:var(--ink-soft);font-size:14px;padding:6px 0 10px}.game-row{display:flex;align-items:center;gap:12px;padding:8px 0;border-top:1px solid var(--line)}.game-row .cell{color:var(--ink-soft);font-size:14px}.game-row .cell.name{color:var(--ink);flex:1;min-width:0}.game-row .cell.rank{width:42px}.game-row .cell.rating{font-weight:600;color:var(--ink)}.game-row .cell em{color:var(--ink-soft);font-style:normal}.game-row .cell .winner{font-weight:700}.game-row .btn{margin-left:auto;flex-shrink:0}.game-row .cell.name+.cell~.btn{margin-left:0}.game-page{display:grid;grid-template-columns:minmax(0,640px) minmax(280px,360px);gap:18px;justify-content:center}.game-main{min-width:0}.board-wrap,.board-placeholder{margin:10px 0}.board-placeholder{aspect-ratio:1;background:var(--panel);border-radius:6px}.player-bar{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}.player-bar.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.player-bar.winner{border-color:var(--accent-strong)}.player-bar .player-avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-weight:700;background:var(--sq-dark);color:#fff}.player-bar .player-avatar[data-color=white]{background:var(--sq-light);color:var(--ink)}.player-bar .player-meta{display:flex;flex-direction:column;min-width:0}.player-bar .player-meta .player-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-bar .player-meta .player-rating{font-size:12px;color:var(--ink-soft)}.player-bar .player-clock{margin-left:auto;font:600 20px/1 ui-monospace,Cascadia Mono,monospace;padding:6px 10px;border-radius:6px;background:var(--bg)}.player-bar .player-clock.ticking{color:var(--accent)}.player-bar .player-clock.low{color:var(--danger);animation:blink 1s steps(2) infinite}@keyframes blink{50%{opacity:.4}}.graveyard{margin-top:8px;font-size:18px;color:var(--ink-soft)}.graveyard .graveyard-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.graveyard .graveyard-label{font-size:12px;text-transform:uppercase;letter-spacing:.05em}.graveyard .graveyard-score{font-size:13px;font-weight:600;color:var(--ink)}.dice-well{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin-bottom:12px}.dice-well .dice-row{display:flex;gap:12px;justify-content:center;min-height:64px;align-items:center}.dice-well .dice-empty{color:var(--ink-soft)}.dice-well .die{width:56px;height:56px;border-radius:10px;display:grid;place-items:center;font-size:36px;background:var(--bg);border:1px solid var(--line);box-shadow:0 2px 6px #0000002e}.dice-well .dice-badges{display:flex;gap:8px;justify-content:center;margin:10px 0 0;flex-wrap:wrap}.dice-well .dice-badges .badge{font-size:12px;font-weight:700;padding:3px 10px;border-radius:999px}.dice-well .dice-badges .badge-wild{background:var(--accent-strong);color:#3a2c07}.dice-well .dice-badges .badge-double{background:var(--accent);color:#fff}.dice-well .dice-badges .badge-check{background:var(--danger);color:#fff}.dice-well .dice-actions{display:flex;gap:10px;justify-content:center;margin-top:12px}.dice-well .dice-actions .btn{min-width:110px}.game-controls{display:flex;gap:10px;margin-bottom:12px;flex-wrap:wrap}.game-controls .confirm-resign{display:inline-flex;gap:6px;align-items:center;font-size:14px}.gameover-panel{background:var(--panel);border:1px solid var(--accent-strong);border-radius:var(--radius);padding:16px;margin-bottom:12px;text-align:center}.gameover-panel .gameover-verdict{font-size:22px;font-weight:700}.gameover-panel .gameover-reason{color:var(--ink-soft);margin:4px 0 12px}.gameover-panel .gameover-actions{display:flex;gap:8px;justify-content:center;align-items:center;flex-wrap:wrap}.chat{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);display:flex;flex-direction:column;margin-bottom:12px}.chat .chat-title{padding:8px 12px;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);border-bottom:1px solid var(--line)}.chat .chat-box{height:180px;overflow-y:auto;padding:8px 12px;font-size:14px}.chat .chat-box .chat-line{margin-bottom:4px;overflow-wrap:anywhere}.chat .chat-box .chat-line .chat-from{font-weight:600;color:var(--accent)}.chat .chat-form{display:flex;border-top:1px solid var(--line)}.chat .chat-form input{flex:1;border:0;background:transparent;padding:10px 12px;color:var(--ink);font-size:14px;outline:none}.chat .chat-form .btn{border:0;border-left:1px solid var(--line);border-radius:0 0 var(--radius) 0}.pgn-panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:8px 12px;font-size:13px;color:var(--ink-soft)}.pgn-panel .pgn-text{font-family:ui-monospace,monospace;margin-top:6px;overflow-wrap:anywhere}.leaderboard h2{margin:6px 0 14px}@media(max-width:900px){.game-page{grid-template-columns:minmax(0,1fr)}}.odds-panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;margin-bottom:12px}.odds-panel .odds-title{font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft);margin-bottom:10px}.odds-panel .odds-escape{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:8px 10px;margin-bottom:10px;border-radius:6px;background:color-mix(in srgb,var(--danger) 12%,var(--panel));border:1px solid var(--danger)}.odds-panel .odds-escape .odds-escape-label{font-size:12px}.odds-panel .odds-escape .odds-escape-value{font:700 18px/1 ui-monospace,monospace;font-variant-numeric:tabular-nums}.odds-panel .odds-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.odds-panel .odds-cell{display:flex;flex-direction:column;gap:2px;background:var(--bg);border-radius:6px;padding:7px 9px}.odds-panel .odds-k{font-size:11px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.05em}.odds-panel .odds-v{font:700 16px/1 ui-monospace,monospace;font-variant-numeric:tabular-nums}.odds-panel .odds-v.small{font-size:12px;font-weight:600}.odds-panel .odds-v.warn{color:var(--danger)}.odds-panel .odds-v.gold{color:var(--accent-strong)}.odds-panel .odds-pieces{margin-top:10px;display:grid;gap:5px}.odds-panel .odds-piece{display:grid;grid-template-columns:58px 1fr 46px;gap:8px;align-items:center}.odds-panel .odds-bar{background:var(--bg);border-radius:3px;height:7px;overflow:hidden}.odds-panel .odds-bar i{display:block;height:100%;background:var(--accent)}.odds-toggle{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-soft)}.odds-toggle input{accent-color:var(--accent)}.replay .replay-controls{display:flex;align-items:center;gap:6px;margin:10px 0 6px;flex-wrap:wrap}.replay .replay-controls .replay-counter{margin-left:auto;font:12px/1 ui-monospace,monospace;color:var(--ink-soft);font-variant-numeric:tabular-nums}.replay .replay-scrub{width:100%;accent-color:var(--accent)}.replay .replay-list{max-height:190px;overflow-y:auto;margin-top:10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}.replay .replay-step{display:grid;grid-template-columns:34px 1fr auto;gap:8px;align-items:center;width:100%;text-align:left;background:none;border:0;cursor:pointer;padding:5px 10px;color:var(--ink);font-size:13px;border-bottom:1px solid var(--line)}.replay .replay-step:last-child{border-bottom:0}.replay .replay-step:hover{background:var(--bg)}.replay .replay-step.on{background:color-mix(in srgb,var(--accent) 16%,var(--panel))}.replay .replay-step.roll .step-label{color:var(--ink-soft);letter-spacing:.14em}.replay .replay-step.nlm .step-label,.replay .replay-step.pass .step-label{color:var(--ink-soft);font-style:italic}.replay .replay-step .step-n,.replay .replay-step .step-time{font:11px/1 ui-monospace,monospace;color:var(--ink-soft)}.export-panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;margin-top:10px}.export-panel summary{cursor:pointer;font-size:13px;color:var(--ink-soft)}.export-panel .export-row{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}.export-panel .export-row .export-label{flex:1;font-size:13px}.export-panel .export-row .export-label em{color:var(--ink-soft);font-style:normal;font-size:12px}.export-panel .export-text{width:100%;height:96px;margin-top:10px;font:11px/1.5 ui-monospace,monospace;background:var(--bg);color:var(--ink-soft);border:1px solid var(--line);border-radius:6px;padding:8px;resize:vertical}.rules-page{max-width:780px;margin:0 auto}.rules-page h1{font-size:30px;margin:0 0 10px}.rules-page h2{font-size:22px;margin:34px 0 10px;padding-top:18px;border-top:1px solid var(--line)}.rules-page h3{font-size:16px;margin:22px 0 8px}.rules-page p{color:var(--ink-soft)}.rules-page .rules-lede{font-size:17px;color:var(--ink)}.rules-page .rules-lede strong{font-weight:600}.rules-page .rules-head{margin-bottom:8px}.rules-page .rules-head .btn{margin-top:10px;text-decoration:none;display:inline-block}.rules-page .rules-toc{display:flex;gap:14px;flex-wrap:wrap;padding:12px 0;font-size:13px}.rules-page .rules-toc a{color:var(--accent);text-decoration:none}.rules-page .rules-pieces{display:grid;gap:10px}.rules-page .rules-piece{display:flex;gap:12px;align-items:start}.rules-page .rules-piece b{display:block}.rules-page .rules-piece span{color:var(--ink-soft);font-size:14px}.rules-page .rp{flex-shrink:0}.rules-page .rules-list{color:var(--ink-soft);padding-left:18px}.rules-page .rules-list li{margin-bottom:8px}.rules-page .rnr-delta{color:var(--accent-strong);font-weight:600}.rules-page .rules-note{font-size:13.5px}.rules-page .face-map{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0}.rules-page .face{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:8px 12px;display:flex;flex-direction:column;align-items:center;gap:2px}.rules-page .face .face-n{font:11px/1 ui-monospace,monospace;color:var(--ink-soft)}.rules-page .rules-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}.rules-page .rules-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px}.rules-page .rules-card b{display:block;margin-bottom:4px}.rules-page .rules-card p{margin:0;font-size:13.5px}.rules-page .rules-card.wild{border-color:var(--accent-strong)}.rules-page .rules-card.double{border-color:var(--accent)}.rules-page .rules-highlight{background:color-mix(in srgb,var(--accent) 10%,var(--panel));border:1px solid var(--accent);border-radius:var(--radius);padding:14px;margin:12px 0}.rules-page .rules-highlight b{font-size:16px}.rules-page .rules-highlight p{margin:6px 0 0}.rules-page .rules-table{width:100%;border-collapse:collapse;font-size:14px}.rules-page .rules-table td{padding:8px 10px;border-bottom:1px solid var(--line);color:var(--ink-soft)}.rules-page .rules-table td:first-child{width:170px;color:var(--ink)}.rules-page .rules-foot{display:flex;gap:10px;margin-top:30px;flex-wrap:wrap}.rules-page .rules-foot .btn{text-decoration:none}.learn-page{max-width:1040px;margin:0 auto}.learn-page .learn-progress{display:flex;align-items:center;gap:7px;margin-bottom:16px}.learn-page .learn-progress .learn-dot{width:11px;height:11px;border-radius:50%;border:1px solid var(--line);background:var(--panel);cursor:pointer;padding:0}.learn-page .learn-progress .learn-dot.past{background:color-mix(in srgb,var(--accent) 55%,var(--panel))}.learn-page .learn-progress .learn-dot.on{background:var(--accent);border-color:var(--accent);transform:scale(1.25)}.learn-page .learn-progress .learn-count{margin-left:auto;font:12px/1 ui-monospace,monospace;color:var(--ink-soft)}.learn-page .learn-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,380px);gap:20px}.learn-page .learn-dice{display:flex;gap:10px;justify-content:center;margin-top:12px;min-height:46px;align-items:center}.learn-page .learn-dice .learn-die{width:42px;height:42px;display:grid;place-items:center;font-size:26px;background:var(--panel);border:1px solid var(--line);border-radius:8px}.learn-page .learn-dice .learn-dice-empty{color:var(--ink-soft);font-size:13px}.learn-page .learn-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;align-self:start}.learn-page .learn-card h2{margin:0 0 8px;font-size:20px}.learn-page .learn-card p{color:var(--ink-soft);font-size:14.5px}.learn-page .learn-task{background:var(--bg);border-radius:6px;padding:10px 12px;font-size:14px;margin:12px 0}.learn-page .learn-task .learn-done{color:var(--accent);font-weight:600}.learn-page .learn-actions{display:flex;gap:8px;flex-wrap:wrap}.learn-page .learn-nav{display:flex;justify-content:space-between;margin-top:16px;padding-top:14px;border-top:1px solid var(--line);gap:8px}.learn-page .learn-nav .btn{text-decoration:none}.learn-page .learn-foot{margin:12px 0 0;font-size:13px}.learn-page .learn-foot a{color:var(--accent)}.presence-dot{width:8px;height:8px;border-radius:50%;display:inline-block;background:var(--accent);flex-shrink:0}.presence-dot.away{background:var(--ink-soft)}.presence-away-note{font-size:12px;color:var(--ink-soft);font-style:italic}@media(max-width:900px){.learn-page .learn-body{grid-template-columns:minmax(0,1fr)}}.new-game-modal{flex-wrap:wrap;row-gap:10px}.new-game-modal .vs-divider{color:var(--ink-soft);font-size:12px;text-transform:uppercase;letter-spacing:.08em;align-self:center}.metrics-page{max-width:900px;margin:0 auto}.metrics-page h1{margin:0 0 6px;font-size:28px}.metrics-page h2{font-size:17px;margin:0 0 6px}.metrics-page .metrics-lede,.metrics-page .metrics-note,.metrics-page .metrics-foot{color:var(--ink-soft);font-size:13.5px}.metrics-page .metrics-foot{margin-top:26px;font-size:12px}.metrics-page .headline{margin:22px 0}.metrics-page .bignum{background:var(--panel);border:2px solid var(--line);border-radius:var(--radius);padding:26px;text-align:center}.metrics-page .bignum.good{border-color:var(--accent)}.metrics-page .bignum.warn{border-color:var(--accent-strong)}.metrics-page .bignum.bad{border-color:var(--danger)}.metrics-page .bignum .bignum-label{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft)}.metrics-page .bignum .bignum-value{display:block;font:700 64px/1.1 ui-monospace,monospace;font-variant-numeric:tabular-nums;margin:6px 0}.metrics-page .bignum .bignum-value em{font-size:30px;font-style:normal;color:var(--ink-soft)}.metrics-page .bignum .bignum-hint{display:block;font-size:13px;color:var(--ink-soft);line-height:1.5}.metrics-page .bignum.good .bignum-value{color:var(--accent)}.metrics-page .bignum.warn .bignum-value{color:var(--accent-strong)}.metrics-page .bignum.bad .bignum-value{color:var(--danger)}.metrics-page .stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-bottom:26px}.metrics-page .stat{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;display:flex;flex-direction:column;gap:2px}.metrics-page .stat .stat-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}.metrics-page .stat .stat-value{font:700 24px/1.1 ui-monospace,monospace;font-variant-numeric:tabular-nums}.metrics-page .stat .stat-value em{font-size:14px;font-style:normal;color:var(--ink-soft)}.metrics-page .stat .stat-hint{font-size:11.5px;color:var(--ink-soft)}.metrics-page .metrics-block{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;margin-bottom:16px}.metrics-page .outcome-bars{display:grid;gap:7px;margin-top:12px}.metrics-page .outcome{display:grid;grid-template-columns:118px 1fr 92px;gap:10px;align-items:center;font-size:13px}.metrics-page .outcome .outcome-name{color:var(--ink-soft)}.metrics-page .outcome .outcome-bar{background:var(--bg);border-radius:3px;height:14px;overflow:hidden}.metrics-page .outcome .outcome-bar i{display:block;height:100%;background:var(--accent)}.metrics-page .outcome .outcome-bar i[data-reason=autoCheckmate]{background:var(--accent-strong)}.metrics-page .outcome .outcome-bar i[data-reason=timeout]{background:var(--danger)}.metrics-page .outcome .outcome-pct{font:600 12px/1 ui-monospace,monospace;font-variant-numeric:tabular-nums}.metrics-page .outcome .outcome-pct em{color:var(--ink-soft);font-style:normal}.metrics-page .daily-table-wrap{overflow-x:auto}.metrics-page .daily-table{width:100%;border-collapse:collapse;font-size:13px;margin-top:10px}.metrics-page .daily-table th{text-align:left;font:600 10px/1.4 ui-monospace,monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);padding:6px 8px}.metrics-page .daily-table td{padding:6px 8px;border-top:1px solid var(--line);font-variant-numeric:tabular-nums}.firstrun{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px;margin-bottom:18px}.firstrun .firstrun-head h2{margin:0 0 4px;font-size:19px}.firstrun .firstrun-head p{margin:0 0 16px;color:var(--ink-soft);font-size:14px}.firstrun .firstrun-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}.firstrun .firstrun-card{display:flex;flex-direction:column;gap:3px;text-align:left;cursor:pointer;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);padding:14px;color:var(--ink);transition:border-color .15s,transform .05s}.firstrun .firstrun-card:hover{border-color:var(--accent)}.firstrun .firstrun-card:active{transform:translateY(1px)}.firstrun .firstrun-card.primary{background:var(--accent);border-color:var(--accent);color:#fff}.firstrun .firstrun-card.primary .fr-sub{color:#ffffffd9}.firstrun .firstrun-card.primary:hover{background:color-mix(in srgb,var(--accent) 85%,black)}.firstrun .firstrun-card .fr-title{font-weight:600;font-size:15px}.firstrun .firstrun-card .fr-sub{font-size:12.5px;color:var(--ink-soft)}.firstrun .firstrun-levels{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:14px;font-size:13px;color:var(--ink-soft)}.install-prompt{position:fixed;left:12px;right:12px;bottom:12px;z-index:50;display:flex;align-items:center;gap:12px;max-width:520px;margin:0 auto;background:var(--panel);border:1px solid var(--accent);border-radius:var(--radius);padding:12px 14px;box-shadow:0 8px 30px #0000004d}.install-prompt .install-icon{border-radius:9px;flex-shrink:0}.install-prompt .install-copy{display:flex;flex-direction:column;gap:2px;font-size:13px;min-width:0}.install-prompt .install-copy b{font-size:13.5px}.install-prompt .install-copy span{color:var(--ink-soft)}.install-prompt .install-actions{margin-left:auto;display:flex;gap:6px;flex-shrink:0}@media(max-width:520px){.install-prompt{flex-wrap:wrap}.install-prompt .install-actions{margin-left:0;width:100%}}.legal-page{max-width:740px;margin:0 auto}.legal-page h1{font-size:28px;margin:0 0 6px}.legal-page h2{font-size:19px;margin:30px 0 8px;padding-top:16px;border-top:1px solid var(--line)}.legal-page h3{font-size:15px;margin:18px 0 6px}.legal-page p,.legal-page li{color:var(--ink-soft);font-size:14.5px}.legal-page li{margin-bottom:6px}.legal-page a{color:var(--accent)}.legal-page .legal-updated{font-size:12.5px;color:var(--ink-soft)}.legal-page .legal-summary{background:color-mix(in srgb,var(--accent) 9%,var(--panel));border:1px solid var(--accent);border-radius:var(--radius);padding:16px 18px;margin:18px 0}.legal-page .legal-summary h2{border:0;padding:0;margin:0 0 8px;font-size:16px}.legal-page .legal-summary p,.legal-page .legal-summary li{color:var(--ink)}.legal-page .legal-toc{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;padding:10px 0}.legal-page .legal-toc a{text-decoration:none}.legal-page table{width:100%;border-collapse:collapse;font-size:14px;margin:10px 0}.legal-page table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);padding:6px 8px}.legal-page table td{padding:7px 8px;border-top:1px solid var(--line);color:var(--ink-soft)}.site-footer{border-top:1px solid var(--line);margin-top:40px;padding:18px 0;display:flex;gap:16px;flex-wrap:wrap;justify-content:center;font-size:12.5px;color:var(--ink-soft)}.site-footer a{color:var(--ink-soft);text-decoration:none}.site-footer a:hover{color:var(--accent)}.legal-address{font-style:normal;background:var(--panel);border-left:3px solid var(--accent);padding:12px 16px;margin:12px 0;font-size:14px;line-height:1.7;color:var(--ink-soft)}.legal-address a{color:var(--accent)}.settings-page{max-width:820px;margin:0 auto}.settings-page h1{margin:0 0 4px;font-size:26px}.settings-page h2{font-size:13px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);margin:0 0 10px}.settings-page .settings-lede{color:var(--ink-soft);margin:0 0 20px;font-size:14px}.settings-page .settings-note{color:var(--ink-soft);font-size:13px;margin:10px 0 0}.settings-page .settings-block{background:var(--panel);border:1px solid var(--line);padding:16px 18px;margin-bottom:14px}.settings-page .settings-preview{display:flex;gap:20px;align-items:center;flex-wrap:wrap;background:var(--panel);border:1px solid var(--line);padding:18px;margin-bottom:14px}.settings-page .mini-board{display:grid;grid-template-columns:repeat(4,46px);grid-template-rows:repeat(4,46px);flex-shrink:0}.settings-page .mini-board div{display:grid;place-items:center}.settings-page .mini-board .l{background:var(--l)}.settings-page .mini-board .d{background:var(--d)}.settings-page .mini-board img{width:80%;height:80%;object-fit:contain}.settings-page .colorway-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px}.settings-page .colorway{display:flex;flex-direction:column;align-items:center;gap:3px;background:var(--bg);border:1px solid var(--line);padding:8px 4px;cursor:pointer;color:var(--ink-soft);font-size:11px}.settings-page .colorway:hover{border-color:var(--accent)}.settings-page .colorway.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--bg));color:var(--ink)}.settings-page .finish-row{display:flex;gap:10px;flex-wrap:wrap}.settings-page .finish{display:flex;flex-direction:column;gap:6px;align-items:flex-start;background:var(--bg);border:1px solid var(--line);padding:10px 14px;cursor:pointer;color:var(--ink)}.settings-page .finish.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--bg))}.settings-page .finish .piece-row{display:flex;gap:2px}.settings-page .finish .finish-label{font-size:13px;font-weight:600}.settings-page .finish .finish-label em{display:block;font-style:normal;font-size:11px;color:var(--ink-soft)}.settings-page .board-grid{display:flex;gap:10px;flex-wrap:wrap}.settings-page .board-swatch{display:flex;flex-direction:column;align-items:center;gap:5px;background:var(--bg);border:1px solid var(--line);padding:8px 12px;cursor:pointer;color:var(--ink-soft);font-size:12px}.settings-page .board-swatch.on{border-color:var(--accent);color:var(--ink)}.settings-page .board-swatch .bs-tiles{display:grid;grid-template-columns:16px 16px;grid-template-rows:16px 16px}.settings-page .board-swatch .bs-tiles i{display:block}.settings-page .settings-actions{display:flex;gap:10px;margin-top:18px}.settings-page .settings-actions .btn{text-decoration:none}.movelist{background:var(--panel);border:1px solid var(--line);margin-bottom:12px}.movelist .movelist-head{padding:8px 12px;border-bottom:1px solid var(--line);font-size:11px;text-transform:uppercase;letter-spacing:.11em;color:var(--ink-soft)}.movelist .movelist-box{max-height:240px;overflow-y:auto;scroll-behavior:smooth}.movelist .mv-none{padding:14px 12px;color:var(--ink-soft);font-size:13px}.movelist .mv-row{display:grid;grid-template-columns:30px 1fr 1fr;gap:6px;align-items:start;padding:5px 10px;border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent)}.movelist .mv-row:last-child{border-bottom:0}.movelist .mv-row:nth-child(odd){background:color-mix(in srgb,var(--bg) 45%,transparent)}.movelist .mv-n{font:600 11px/1.6 ui-monospace,monospace;color:var(--ink-soft);font-variant-numeric:tabular-nums}.movelist .mv-half{display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-width:0}.movelist .mv-empty{color:var(--ink-soft)}.movelist .mv-roll{display:inline-flex;gap:1px;padding:1px 3px;background:var(--bg);border:1px solid var(--line)}.movelist .mv-roll img{width:15px;height:15px;object-fit:contain}.movelist .mv-san{font:600 13px/1.4 ui-monospace,monospace;color:var(--ink)}.movelist .mv-san.pass,.movelist .mv-san.nlm{color:var(--ink-soft);font-style:italic;font-weight:400}.movelist .mv-time{font:10px/1 ui-monospace,monospace;color:var(--ink-soft);opacity:.7}.board-wrap [data-square]{position:relative;transition:background-color .12s ease}.board-wrap [data-movable=true]:before{content:"";position:absolute;top:4%;right:4%;bottom:4%;left:4%;border:2px solid var(--accent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 35%,transparent),0 0 10px color-mix(in srgb,var(--accent) 45%,transparent);pointer-events:none;animation:rnr-unlock 2.4s ease-in-out infinite}@keyframes rnr-unlock{0%,to{opacity:.55}50%{opacity:1}}.board-wrap [data-selected=true]{background-color:color-mix(in srgb,var(--accent-strong) 32%,transparent)!important}.board-wrap [data-selected=true]:before{border-color:var(--accent-strong);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent-strong) 45%,transparent);opacity:1;animation:none}.board-wrap [data-target=true]:after{content:"";position:absolute;left:50%;top:50%;width:30%;height:30%;transform:translate(-50%,-50%);border-radius:50%;background:color-mix(in srgb,var(--accent) 70%,transparent);box-shadow:0 0 8px color-mix(in srgb,var(--accent) 55%,transparent);pointer-events:none}.board-wrap [data-capture=true]:after{width:86%;height:86%;border-radius:0;background:transparent;border:3px solid var(--danger);box-shadow:inset 0 0 12px color-mix(in srgb,var(--danger) 45%,transparent),0 0 8px color-mix(in srgb,var(--danger) 40%,transparent)}.board-wrap [data-movable=true]:hover{background-color:color-mix(in srgb,var(--accent) 18%,transparent)!important}.board-wrap [data-target=true]:hover{background-color:color-mix(in srgb,var(--accent) 22%,transparent)!important}.board-wrap [data-capture=true]:hover{background-color:color-mix(in srgb,var(--danger) 22%,transparent)!important}@media(prefers-reduced-motion:reduce){.board-wrap [data-movable=true]:before{animation:none;opacity:.9}}:root{--bg: #0b0f14;--panel: #151d27;--panel-2: #1b2531;--line: #263341;--ink: #e6eef7;--ink-soft: #93a3b5;--accent: #00d6c4;--accent-strong: #ffc93c;--danger: #e0574b;--sq-light: #33404f;--sq-dark: #1d2733;--radius: 6px}@media(prefers-color-scheme:light){:root{--bg: #0b0f14;--panel: #151d27;--ink: #e6eef7;--ink-soft: #93a3b5;--line: #263341;--sq-light: #33404f;--sq-dark: #1d2733}}body{background:radial-gradient(ellipse 90% 55% at 50% -10%,rgba(0,214,196,.07),transparent 70%),var(--bg);background-attachment:fixed}.btn{clip-path:polygon(7px 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%,0 7px);border-radius:0;font-weight:600;letter-spacing:.03em}.btn-primary,.btn-roll{background:linear-gradient(100deg,var(--accent),#00a99b);border-color:transparent;color:#04181a;font-weight:700}.navbar{background:linear-gradient(180deg,var(--panel-2),var(--panel));border-bottom:1px solid var(--accent);box-shadow:0 1px #00d6c42e,0 6px 20px #00000059}.navbar .brand{letter-spacing:-.02em}.navbar .brand-n{color:var(--accent)}.navbar .nav-links a{font-size:13px;text-transform:uppercase;letter-spacing:.08em;font-weight:600}.player-bar,.dice-well,.game-list,.odds-panel,.waiting-panel,.firstrun{border-left:2px solid var(--line);border-radius:0}.player-bar.active{border-left-color:var(--accent)}.player-bar.winner{border-left-color:var(--accent-strong)}.dice-well{border-left-color:var(--accent)}.player-clock{font-family:ui-monospace,Cascadia Mono,monospace;letter-spacing:.02em;border-radius:0;clip-path:polygon(6px 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%,0 6px)}.player-clock.ticking{color:var(--accent)}.player-clock.low{color:var(--danger)}.player-avatar{border-radius:0;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%)}.die{border-radius:3px;background:linear-gradient(160deg,var(--panel-2),var(--bg));border:1px solid var(--accent);box-shadow:0 0 12px #00d6c438;clip-path:polygon(10% 0,100% 0,100% 90%,90% 100%,0 100%,0 10%)}.die img{width:78%;height:78%;object-fit:contain}.badge{border-radius:0;clip-path:polygon(5px 0,100% 0,100% calc(100% - 5px),calc(100% - 5px) 100%,0 100%,0 5px);letter-spacing:.07em}.game-row{border-top:1px solid var(--line)}.game-row:hover{background:color-mix(in srgb,var(--accent) 6%,transparent)}.banner{border-radius:0;border-left-width:2px}.gameover-panel{border-radius:0;border-left:3px solid var(--accent-strong);background:linear-gradient(100deg,color-mix(in srgb,var(--accent-strong) 8%,var(--panel)),var(--panel))}.learn-die{border-radius:3px;border-color:var(--accent);background:linear-gradient(160deg,var(--panel-2),var(--bg))}.learn-die img{width:76%;height:76%;object-fit:contain}.install-prompt,.firstrun-card,.colorway,.board-swatch{border-radius:0}.game-list h3,.odds-title,.chat-title,.waiting-title{text-transform:uppercase;letter-spacing:.11em;font-size:11px;color:var(--ink-soft)}
