@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;flex-wrap:wrap;row-gap:4px;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;flex-wrap:wrap}.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}@media(max-width:640px){.navbar{padding:6px 10px}.navbar .brand{font-size:17px}.navbar .nav-links{width:100%;justify-content:flex-end;gap:12px;font-size:13px}.navbar .nav-links .btn{min-height:30px;padding:3px 10px}.navbar .nav-links .nav-user{display:none}}.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)}.claim-choice{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.claim-choice .btn{width:100%}.claim-kept-name{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:4px;padding:8px 10px;border:1px solid var(--line);border-radius:6px;background:var(--bg)}.claim-kept-name strong{color:var(--ink);font-size:15px}.claim-kept-name .btn{width:auto;margin:0}.field-hint{display:block;margin-top:4px;font-size:12px}.field-hint.field-hint-error{color:var(--danger)}.agree-check{display:flex!important;gap:8px;align-items:flex-start;font-size:13px}.agree-check input{margin-top:2px;width:auto!important;accent-color:var(--accent)}.agree-check a{color:var(--accent)}.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-channels{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.share-invite .share-channels a.btn,.share-invite .share-channels .btn{text-decoration:none;display:inline-flex;align-items:center}.share-invite .invite-ttl{display:inline-flex;gap:6px;align-items:center;font-size:12px;color:var(--ink-soft)}.share-invite .invite-ttl select{padding:5px;border-radius:6px;border:1px solid var(--line);background:var(--bg);color:var(--ink)}.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}.lobby-grid{display:grid;grid-template-columns:1fr 230px;gap:16px;align-items:start;margin-bottom:16px}.lobby-rail{display:flex;flex-direction:column;gap:10px;position:sticky;top:12px}.lobby-rail .btn{width:100%}.quick-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:14px}.quick-tile{display:flex;flex-direction:column;gap:4px;align-items:center;justify-content:center;padding:20px 8px;min-height:84px;cursor:pointer;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);color:var(--ink);font:inherit;transition:border-color .15s,transform .1s}.quick-tile:hover{border-color:var(--accent);transform:translateY(-1px)}.quick-tile .qt-time{font-size:24px;font-weight:800;letter-spacing:-.01em}.quick-tile .qt-time em{font-style:normal;font-size:13px;font-weight:600;color:var(--ink-soft);margin-left:2px}.quick-tile .qt-speed{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:var(--ink-soft)}.quick-tile.has-open{border-color:var(--accent)}.quick-tile.has-open .qt-speed{color:var(--accent);font-weight:700}.lobby-tabs{display:flex;gap:4px;margin:4px 0 10px;border-bottom:1px solid var(--line)}.lobby-tabs button{background:none;border:none;border-bottom:2px solid transparent;padding:8px 14px;cursor:pointer;font:inherit;font-size:13px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft)}.lobby-tabs button em{font-style:normal;color:var(--accent)}.lobby-tabs button.on{color:var(--ink);border-bottom-color:var(--accent)}@media(max-width:900px){.lobby-grid{grid-template-columns:1fr}.lobby-rail{position:static;order:-1;flex-direction:row}.lobby-rail .btn{width:auto;flex:1}.quick-grid{gap:8px}.quick-tile{min-height:72px;padding:14px 6px}.quick-tile .qt-time{font-size:20px}}.new-game-modal label{display:block;font-size:13px;color:var(--ink-soft);margin-bottom:10px}.new-game-modal label select{display:block;width:100%;margin-top:4px;padding:7px;border-radius:6px;border:1px solid var(--line);background:var(--bg);color:var(--ink)}.new-game-modal .btn{width:100%;margin-top:4px}.new-game-modal .vs-divider{text-align:center;color:var(--ink-soft);font-size:12px;text-transform:uppercase;letter-spacing:.08em;margin:12px 0 8px}.new-game-modal .variant-row{margin-bottom:10px}.players-page h2{margin-top:4px}.players-filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.players-filters .players-search{flex:1;min-width:180px;padding:8px 12px;font-size:14px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink)}.players-filters select{padding:8px;border-radius:6px;border:1px solid var(--line);background:var(--panel);color:var(--ink)}.players-filters .players-toggle{display:flex;gap:6px;align-items:center;font-size:13px;color:var(--ink-soft);cursor:pointer}.players-filters .players-toggle input{accent-color:var(--accent)}.players-list .game-row{display:grid;grid-template-columns:minmax(0,1fr) 64px 56px 84px 110px;gap:8px;align-items:center}.players-list .game-row .cell{width:auto!important;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.players-list .game-row .cell.name{text-align:left}.players-list .game-row .cell.friend-cell{display:flex;justify-content:flex-end}.players-list .players-head{border-top:none;font-size:11px;text-transform:uppercase;letter-spacing:.08em}.players-list .players-head .cell{color:var(--ink-soft)}@media(max-width:640px){.players-list .game-row{grid-template-columns:minmax(0,1fr) 52px 44px 96px}.players-list .game-row .cell:nth-child(4){display:none}.players-list .game-row .btn{padding:6px 8px;font-size:12px}}.friends-panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px}.friends-panel .friends-title{font-size:11px;text-transform:uppercase;letter-spacing:.11em;color:var(--ink-soft);margin-bottom:6px}.friend-row{display:flex;align-items:center;gap:8px;padding:5px 0;border-top:1px solid var(--line)}.friend-row:first-of-type{border-top:none}.friend-row .friend-name{flex:1;min-width:0;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.friend-row .friend-name em{color:var(--ink-soft);font-style:normal;font-size:12px}.friend-row .friend-actions{display:flex;gap:4px}.friend-row.pending .friend-name{color:var(--ink-soft)}.friend-hint{font-size:12px;color:var(--ink-soft)}.presence-dot{width:8px;height:8px;border-radius:50%;background:var(--line);flex:none}.presence-dot.on{background:var(--accent);box-shadow:0 0 6px var(--accent)}.gameover-friend{margin-top:10px}.player-link{color:var(--ink);text-decoration:none}.player-link:hover{color:var(--accent);text-decoration:underline}.profile-page{max-width:760px;margin:0 auto}.profile-page .profile-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}.profile-page .profile-head h2{margin:4px 0 2px}.profile-page .profile-sub{color:var(--ink-soft);margin:0 0 14px}.profile-page .profile-sub strong{color:var(--accent-strong)}.profile-page .profile-cards{margin-bottom:16px}.nav-links .nav-signup{padding:5px 12px;font-size:12.5px;text-decoration:none}.nav-mute{background:none;border:none;cursor:pointer;font-size:16px;padding:2px 4px;line-height:1;filter:grayscale(.2)}.nav-mute:hover{filter:none}.nav-icons .nav-ico{font-size:18px;line-height:1;display:inline-block;filter:grayscale(.25);transition:filter .15s,transform .1s}.nav-icons a:hover .nav-ico{filter:none;transform:translateY(-1px)}.admin-page{max-width:1000px;margin:0 auto}.admin-page h2{margin-top:4px}.admin-page select{padding:8px;border-radius:6px;border:1px solid var(--line);background:var(--panel);color:var(--ink);margin-bottom:10px}.admin-page .players-search{width:100%;max-width:380px;padding:8px 12px;font-size:14px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink);margin-bottom:10px}.admin-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.admin-cards .admin-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;display:grid;gap:4px}.admin-cards .admin-card em{font-style:normal;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft)}.admin-cards .admin-card strong{font-size:16px}.admin-table{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:4px 14px;margin-top:4px}.admin-table.mono{font-family:ui-monospace,monospace;font-size:12px}.admin-table.mono .cell.wide{flex:2;overflow-wrap:anywhere}.feedback-row{border-top:1px solid var(--line);padding:10px 0}.feedback-row:first-child{border-top:none}.feedback-row.resolved{opacity:.5}.feedback-row .feedback-head{display:flex;gap:12px;align-items:center;font-size:13px;color:var(--ink-soft)}.feedback-row .feedback-head strong{color:var(--accent-strong);text-transform:uppercase;font-size:11px;letter-spacing:.08em}.feedback-row p{margin:6px 0 2px;white-space:pre-wrap}.roles-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}@media(max-width:700px){.roles-grid{grid-template-columns:1fr}}.toggle-row{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}.role-pick{width:100%;background:none;border:none;cursor:pointer;font:inherit;color:var(--ink);text-align:left}.role-pick:hover{background:color-mix(in srgb,var(--accent) 6%,transparent)}.invite-pending{color:var(--accent)}.invite-used{color:#3ddc84}.invite-expired,.invite-revoked{color:var(--ink-soft)}.backstage-auth{border-color:var(--accent-strong)}.navbar-backstage{border-bottom-color:var(--accent-strong)!important}.navbar-backstage .brand-n{color:var(--accent-strong)}.auth-card textarea{display:block;width:100%;margin-top:4px;padding:8px 10px;font-size:14px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--ink);font-family:inherit;resize:vertical}.auth-card label select{display:block;width:100%;margin-top:4px;padding:8px;border-radius:6px;border:1px solid var(--line);background:var(--bg);color:var(--ink)}.settings-tabs{display:flex;gap:4px;margin:14px 0;border-bottom:1px solid var(--line);overflow-x:auto;-webkit-overflow-scrolling:touch}.settings-tabs button{background:none;border:none;border-bottom:2px solid transparent;padding:9px 16px;cursor:pointer;font:inherit;font-size:13px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft);white-space:nowrap}.settings-tabs button.on{color:var(--ink);border-bottom-color:var(--accent)}.die.blank{background:repeating-linear-gradient(45deg,var(--bg),var(--bg) 5px,var(--panel-2) 5px,var(--panel-2) 10px)!important;opacity:.7}.dice-ritual .ritual-card{min-width:min(480px,92vw)}.ritual-sub{color:var(--ink-soft);font-size:13px;margin:4px 0 10px}.ritual-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px}.ritual-col{border:1px solid var(--line);border-radius:var(--radius);padding:10px;display:grid;gap:8px;align-content:start}.ritual-col.turn{border-color:var(--accent);box-shadow:0 0 12px #00d6c426}.ritual-col .ritual-name{font-weight:700;font-size:13px}.ritual-die{display:grid;gap:4px;padding:6px 8px;border-radius:6px;background:var(--bg)}.ritual-die em{font-style:normal;font-size:12px;color:var(--ink-soft)}.ritual-die.declared{animation:callout-pop .45s cubic-bezier(.2,1.7,.4,1) both}.ritual-die.declared em{color:var(--accent-strong);font-weight:700}.ritual-waiting{color:var(--accent);font-size:12px;animation:callout-glow 1.2s ease-in-out infinite}.ritual-choices{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}.ritual-choices .ritual-prompt{font-size:13px;color:var(--ink-soft);flex-basis:100%}.dicebag-page{max-width:860px;margin:0 auto}.dicebag-page h2{margin-top:4px}.dicebag-page .dicebag-sub{color:var(--ink-soft);max-width:560px}.die-faces{display:inline-flex;gap:3px}.die-faces .die-face{width:26px;height:26px;display:grid;place-items:center;background:var(--bg);border:1px solid var(--line);border-radius:4px}.die-faces .die-face img{width:20px;height:20px;object-fit:contain}.die-faces .die-face.blank{background:repeating-linear-gradient(45deg,var(--bg),var(--bg) 4px,var(--panel-2) 4px,var(--panel-2) 8px)}.dicebag-loadout{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}.dicebag-loadout .loadout-slot{flex:1;min-width:170px;padding:10px 12px;display:grid;gap:6px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}.dicebag-loadout .loadout-slot .slot-label{font-size:10px;text-transform:uppercase;letter-spacing:.09em;color:var(--ink-soft)}.dicebag-loadout .loadout-slot em{color:var(--ink-soft);font-size:13px}.dicebag-loadout .loadout-slot.filled{border-color:var(--accent)}.dicebag-odds{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;margin-bottom:14px}.dicebag-odds .odds-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px 14px;font-size:13px}.dicebag-odds .odds-grid em{color:var(--ink-soft);font-style:normal;font-size:11.5px}.dicebag-actions{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px}.dicebag-bagtitle{font-size:14px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}.dicebag-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}.die-card{display:grid;gap:8px;text-align:left;padding:12px;cursor:pointer;font:inherit;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);color:var(--ink)}.die-card .die-card-head{display:flex;justify-content:space-between;align-items:baseline}.die-card .die-card-blurb{font-size:12px;color:var(--ink-soft)}.die-card .rarity-tag{font-size:10px;text-transform:uppercase;letter-spacing:.08em;font-style:normal}.die-card.rarity-common .rarity-tag{color:var(--ink-soft)}.die-card.rarity-uncommon .rarity-tag{color:var(--accent)}.die-card.rarity-rare .rarity-tag{color:#4f8ff7}.die-card.rarity-mythic .rarity-tag{color:var(--accent-strong)}.die-card:hover{border-color:var(--accent)}.die-card.picked{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.variant-row{flex-basis:100%;display:flex;gap:14px;align-items:center;flex-wrap:wrap;padding-top:10px;margin-top:4px;border-top:1px solid var(--line)}.variant-row .variant-title{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);font-weight:600}.variant-row .variant-check{display:flex;gap:6px;align-items:center;font-size:13px;color:var(--ink);cursor:pointer}.variant-row .variant-check input{accent-color:var(--accent)}.variant-tag{color:var(--accent-strong);font-style:normal;font-size:12px}.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;gap:16px;justify-content:center;align-items:stretch;grid-template-areas:"left main side";grid-template-columns:minmax(200px,280px) minmax(0,min(820px,100vh - 220px)) minmax(280px,350px);grid-template-columns:minmax(200px,280px) minmax(0,min(820px,100dvh - 220px)) minmax(280px,350px)}.game-left{grid-area:left;min-width:0;min-height:0;display:flex;flex-direction:column}.game-left .left-well{flex:1;min-height:120px;max-height:340px;margin-bottom:12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);display:grid;place-content:center;gap:4px;text-align:center}.game-left .left-well:has(.eval-graph){display:block;place-content:unset}.game-left .left-well .left-well-label{font-size:11px;text-transform:uppercase;letter-spacing:.11em;color:var(--ink-soft);font-weight:600}.game-left .left-well .left-well-hint{font-size:12px;color:color-mix(in srgb,var(--ink-soft) 55%,transparent)}.game-left .chat{flex:none;margin-bottom:0}.game-left .chat .chat-box{height:280px}.game-main{grid-area:main;min-width:0}.game-side{grid-area:side;min-width:0;min-height:0;display:flex;flex-direction:column}.game-side .dice-well{margin-bottom:12px}.game-side .side-tabs+.dice-well,.game-side .side-tabs~.dice-well{margin:12px 0 0}.game-side .dice-well.own .dice-row{gap:8px;min-height:56px}.game-side .dice-well.own .die{width:46px;height:46px}.game-side .dice-well.own .dice-actions .btn{min-width:96px}.side-tabs{flex:1;min-height:0;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}.side-tabs .side-tab-bar{display:flex;border-bottom:1px solid var(--line)}.side-tabs .side-tab-bar .side-tab{flex:1;background:transparent;border:0;cursor:pointer;padding:10px 8px;color:var(--ink-soft);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.11em;border-bottom:2px solid transparent}.side-tabs .side-tab-bar .side-tab.on{color:var(--ink);border-bottom-color:var(--accent)}.side-tabs .side-tab-content{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column}.side-tabs .side-tab-content .movelist{flex:1;min-height:0;display:flex;flex-direction:column;border:0;background:transparent;margin:0}.side-tabs .side-tab-content .movelist .movelist-head{display:none}.side-tabs .side-tab-content .movelist .movelist-box{max-height:none;flex:1}.side-tabs .side-tab-content .odds-panel{border:0;background:transparent;margin:0}.side-tabs .side-tab-content .empty{color:var(--ink-soft);font-size:14px;padding:14px}.side-complete{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.rolloff-banner{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:8px 12px;margin-bottom:10px;font-size:13px}.rolloff-banner .rolloff-label{text-transform:uppercase;letter-spacing:.08em;font-size:11px;color:var(--ink-soft)}.rolloff-banner .rolloff-die{width:30px;height:30px;display:grid;place-items:center;background:var(--bg);border:1px solid var(--line);border-radius:6px}.rolloff-banner .rolloff-die img{width:80%;height:80%;object-fit:contain}.rolloff-banner .rolloff-vs{color:var(--ink-soft);font-size:11px}.rolloff-banner .rolloff-ties{color:var(--ink-soft);font-style:italic}.rolloff-banner .rolloff-result{font-weight:700;margin-left:auto}@keyframes die-double-pulse{0%,to{box-shadow:0 0 8px color-mix(in srgb,var(--accent-strong) 30%,transparent)}50%{box-shadow:0 0 22px color-mix(in srgb,var(--accent-strong) 80%,transparent)}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#04080c99;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-items:center}.modal-card{position:relative;background:var(--panel);border:1px solid var(--accent);border-radius:var(--radius);padding:20px 24px;max-width:340px;width:calc(100% - 40px);box-shadow:0 12px 40px #00000080}.modal-card .modal-title{font-weight:700;font-size:16px;margin-bottom:6px}.modal-card p{color:var(--ink-soft);margin:0 0 14px}.modal-card .modal-actions{display:flex;gap:10px;justify-content:flex-end}.modal-card .modal-close{position:absolute;top:6px;right:10px;background:none;border:0;color:var(--ink-soft);font-size:22px;line-height:1;cursor:pointer}.modal-card .modal-close:hover{color:var(--ink)}.gameover-modal{text-align:center;max-width:380px}.gameover-modal .gameover-actions{justify-content:center}.replay-analysis{margin:10px 0;padding:10px 12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}.replay-analysis .analysis-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.replay-analysis .analysis-modes{display:flex;gap:4px}.replay-analysis .analysis-modes .side-tab{padding:6px 12px;border-bottom-width:2px}.replay-analysis .analysis-line{display:flex;gap:14px;align-items:baseline;flex-wrap:wrap;margin-top:8px}.replay-analysis .analysis-line .analysis-best{font-weight:700}.replay-analysis .analysis-line .analysis-score{font:700 14px/1 ui-monospace,monospace;color:var(--accent)}.replay-analysis .analysis-line .analysis-thinking{color:var(--ink-soft)}.replay-analysis .analysis-line .analysis-dicetrue{margin-left:auto;font-size:12px;color:var(--ink-soft);border:1px solid var(--line);border-radius:8px;padding:2px 8px}.replay-analysis .analysis-note{margin-top:6px;font-size:12px;color:var(--ink-soft);font-style:italic}.badge-chip{display:inline-flex;align-items:center;gap:4px;padding:4px 12px;border-radius:8px;font-size:13px;font-weight:700;border:1px solid var(--accent-strong);color:var(--accent-strong);background:color-mix(in srgb,var(--bg) 85%,transparent)}.badge-chip em{font-style:normal;color:var(--ink-soft);font-weight:600}.gameover-badges{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:0 0 12px}.badge-shelf{display:flex;gap:8px;flex-wrap:wrap;padding:4px 0 10px}.capture-fx{position:absolute;z-index:20;pointer-events:none}.capture-fx .capture-shard{position:absolute;width:25%;height:25%;background-repeat:no-repeat;will-change:transform,opacity}.dice3d-lastroll img.muted{opacity:.3;filter:grayscale(.8)}.under-board{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap;margin-top:8px}.under-board .game-controls{margin-bottom:0}.dice-captures{display:flex;gap:3px;align-items:center;justify-content:center;flex-wrap:wrap;margin-top:6px;min-height:26px}.dice-captures img{width:28px;height:28px;opacity:.9}.dice-captures img.fresh{filter:drop-shadow(0 0 6px var(--accent));transform:scale(1.25);animation:capture-pop .5s ease-out}.dice-captures .capture-score{font-size:12px;font-weight:700;color:var(--ink);margin-left:6px}@keyframes capture-pop{0%{transform:scale(2);opacity:0}to{transform:scale(1.25);opacity:1}}.game-meta{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;margin-bottom:12px;font-size:14px}.game-meta .game-meta-title{font-weight:600;margin-bottom:6px}.game-meta .game-meta-variant{display:inline-block;margin-bottom:6px;padding:2px 10px;font-size:11px;font-weight:700;letter-spacing:.05em;border:1px solid var(--accent-strong);color:var(--accent-strong);border-radius:8px}.game-meta .game-meta-players{color:var(--ink-soft);line-height:1.8}.game-meta .game-meta-players .dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:8px;background:var(--sq-dark);border:1px solid var(--line)}.game-meta .game-meta-players .dot[data-color=white]{background:var(--sq-light)}.board-wrap,.board-placeholder{margin:10px 0}.board-wrap{position:relative}.board-row{position:relative;display:flex;gap:10px;align-items:stretch}.board-row .board-wrap{flex:1;min-width:0}.dice-overlay,.roll-prompt,.mobile-actionbar,.opp-dice-strip{display:none}.eval-bar{position:relative;width:16px;margin:10px 0;flex-shrink:0;background:var(--sq-dark);border:1px solid var(--line);border-radius:4px;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end}.eval-bar .eval-fill{width:100%;transition:height .6s ease}.eval-bar .eval-fill.white{background:linear-gradient(180deg,#f2eee2,#cfc9b8)}.eval-bar .eval-fill.black{background:linear-gradient(180deg,#3a4048,#23272d)}.eval-bar .eval-label{position:absolute;left:50%;transform:translate(-50%);font:700 9px/1 ui-monospace,monospace;pointer-events:none}.eval-bar .eval-label.up{bottom:4px;color:var(--bg);mix-blend-mode:normal}.eval-bar .eval-label.down{top:4px;color:var(--ink)}.eval-graph{width:100%;height:100%;padding:12px 14px;display:flex;flex-direction:column;gap:8px;text-align:left}.eval-graph .eval-graph-head{display:flex;justify-content:space-between;align-items:baseline}.eval-graph .eval-graph-now{font:700 16px/1 ui-monospace,monospace}.eval-graph .eval-graph-now.up{color:var(--accent)}.eval-graph .eval-graph-now.down{color:var(--danger)}.eval-graph svg{flex:1;width:100%;min-height:0}.eval-graph .eval-graph-mid{stroke:var(--line);stroke-width:.5;stroke-dasharray:2 2}.eval-graph .eval-graph-line{fill:none;stroke:var(--accent);stroke-width:1.5;vector-effect:non-scaling-stroke;stroke-linejoin:round}.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;transition:opacity .25s ease,border-color .25s ease}.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 .dice-caption{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);text-align:center;margin-bottom:4px}.dice-well.active{border-color:var(--accent)}.dice-well.idle{opacity:.55}.dice-well.readonly{padding:8px 14px}.dice-well.readonly .dice-row{min-height:46px;gap:8px}.dice-well.readonly .die{width:40px;height:40px;font-size:26px}.dice-well.own{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"caption caption" "dice actions" "badges badges" "captures captures";gap:4px 16px;align-items:center}.dice-well.own .dice-captures{grid-area:captures;justify-content:flex-start}.dice-well.own .dice-caption{grid-area:caption;margin-bottom:0;text-align:left}.dice-well.own .dice-row{grid-area:dice;min-height:72px}.dice-well.own .dice3d-mount{grid-area:dice;min-width:0}.dice-well.own .dice-actions{grid-area:actions;align-self:center;display:flex;flex-direction:column;gap:8px;margin:0}.dice-well.own .dice-actions .btn{min-width:112px}.dice-well.own .dice-actions .btn-roll.auto-on{opacity:1;box-shadow:0 0 16px #00d6c48c}.dice-well.own .dice-actions .auto-toggle.on{border-color:var(--accent);color:var(--accent)}.dice-well.own .dice-badges{grid-area:badges;margin:2px 0 0}.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 .die.live{border-color:var(--accent);box-shadow:0 0 12px #00d6c44d}.dice-well .die.frozen{opacity:.45;filter:grayscale(.9);box-shadow:none}.dice-well .die.missing{border-color:var(--danger);box-shadow:inset 0 0 10px color-mix(in srgb,var(--danger) 30%,transparent)}.dice-well .die.missing img{opacity:.45;filter:grayscale(.7)}.dice-well .die.doubled{animation:die-double-pulse 1.6s ease-in-out infinite}.dice-well .dice-caption.dud{color:var(--danger)}.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:4px 14px;border-radius:8px;background:color-mix(in srgb,var(--bg) 85%,transparent);border:1px solid}.dice-well .dice-badges .badge-wild{border-color:var(--accent-strong);color:var(--accent-strong)}.dice-well .dice-badges .badge-double{border-color:var(--accent);color:var(--accent)}.dice-well .dice-badges .badge-check{border-color:var(--danger);color:var(--danger)}.dice-well .dice-badges .badge-wasted{border-color:var(--ink-soft);color:var(--ink-soft)}.dice-well .dice-actions{display:flex;gap:10px;justify-content:center;margin-top:12px}.dice-well .dice-actions .btn{min-width:110px}.dice-well-3d .dice3d-mount{position:relative;height:200px;overflow:hidden}.dice-well-3d .dice3d-mount canvas{display:block}.dice-well-3d .dice3d-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--ink-soft);pointer-events:none}.dice-well-3d .dice3d-lastroll{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;gap:8px;align-items:center;justify-content:center}.dice-well-3d .dice3d-lastroll .dice-caption{margin:0 6px 0 0}.dice-well-3d .dice3d-lastroll img{width:34px;height:34px;opacity:.55}.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{max-width:560px;margin:0 auto}.leaderboard h2{margin:6px 0 14px}.leaderboard .lb-list{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}.leaderboard .empty{color:var(--ink-soft);padding:14px 16px}.leaderboard .lb-row{display:flex;align-items:center;gap:14px;padding:10px 16px;border-top:1px solid var(--line)}.leaderboard .lb-row:first-child{border-top:0}.leaderboard .lb-row .lb-rank{width:34px;height:24px;display:grid;place-items:center;flex-shrink:0;font:700 12px/1 ui-monospace,Cascadia Mono,monospace;background:var(--bg);color:var(--ink-soft);clip-path:polygon(5px 0,100% 0,100% calc(100% - 5px),calc(100% - 5px) 100%,0 100%,0 5px)}.leaderboard .lb-row .lb-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.leaderboard .lb-row .lb-rating{font:600 16px/1 ui-monospace,Cascadia Mono,monospace}.leaderboard .lb-row.podium .lb-rank{color:var(--accent)}.leaderboard .lb-row.first .lb-rank{background:var(--accent-strong);color:#3a2c07}.leaderboard .lb-row.first .lb-rating{color:var(--accent-strong)}@media(max-width:1180px){.game-page{grid-template-areas:"main side" "left side";grid-template-columns:minmax(0,1fr) minmax(240px,320px)}.game-left .left-well{display:none}.game-left .chat .chat-box{height:240px}}@media(max-width:900px){html,body{overscroll-behavior-y:none}.app-shell main{padding:8px}.game-page{grid-template-areas:"main" "side" "left";grid-template-columns:minmax(0,1fr);gap:12px}.game-main.pinned{height:calc(100dvh - 110px);display:flex;flex-direction:column;gap:6px}.game-main.pinned .rolloff-banner{display:none}.game-main.pinned .board-row{flex:1;min-height:0;gap:0;align-items:center;justify-content:center}.game-main.pinned .board-wrap{flex:none;margin:0 auto;width:min(100%,100dvh - 340px)}.game-main.pinned .eval-bar{display:none}.game-main.pinned .under-board{justify-content:center;margin-top:0}.game-main.pinned .under-board .btn{min-height:34px}.game-main.pinned .player-bar{padding:4px 10px}.game-main.pinned .player-bar .player-avatar{width:28px;height:28px}.game-main.pinned .player-bar .player-clock{font-size:16px;padding:4px 8px}.ma-dice{display:flex;gap:6px;align-items:center}.ma-dice.pending :is(img,.ma-blank){opacity:0}.ma-dice img,.ma-dice .ma-blank{width:36px;height:36px;border-radius:6px;background:var(--bg);border:1px solid var(--line);padding:2px;transition:opacity .25s ease}.ma-dice img.live{border-color:var(--accent)}.ma-dice img.frozen{opacity:.4;filter:grayscale(.9)}.ma-dice img.missing{opacity:.5;border-color:var(--danger);filter:grayscale(.6)}.ma-dice .ma-blank{background:repeating-linear-gradient(45deg,var(--bg),var(--bg) 4px,var(--panel-2) 4px,var(--panel-2) 8px)}.ma-dice.stale img{opacity:.45;filter:grayscale(.5);border-color:var(--line)}.ma-dice.stale .last-tag{font-style:normal;font-size:11px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.06em}.opp-dice-strip{display:flex;justify-content:flex-end;align-items:center;gap:10px;padding:2px 4px;min-height:0}.opp-dice-strip .ma-dice img,.opp-dice-strip .ma-dice .ma-blank{width:28px;height:28px}.opp-dice-strip .dice-captures{margin:0;justify-content:flex-end}.opp-dice-strip .dice-captures img{width:24px;height:24px}.mobile-actionbar{display:flex;flex-direction:column;gap:4px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:8px 10px}.mobile-actionbar .ma-row{display:flex;align-items:center;gap:10px}.mobile-actionbar .ma-dice-slot{flex:1;display:flex;gap:8px;align-items:center;min-height:40px}.mobile-actionbar .ma-dice-slot .ma-hint{color:var(--ink-soft);font-size:13px}.mobile-actionbar .ma-actions{display:flex;gap:8px}.mobile-actionbar .ma-actions .btn-roll,.mobile-actionbar .ma-actions .btn-pass{min-width:76px}.mobile-actionbar .dice-captures{margin-top:2px;justify-content:flex-start;min-height:0}.mobile-actionbar .dice-captures img{width:24px;height:24px}.game-side .dice-well.own,.game-side .dice-well.readonly{display:none}.dice-overlay{display:grid;position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;place-items:center;pointer-events:none}.dice-overlay-veil{position:absolute;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--bg) 55%,transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:veil-in .2s ease-out}.dice-overlay-body{position:relative;display:grid;gap:12px;justify-items:center}.dice-overlay-dice{display:flex;gap:16px}.dice-overlay-dice.shake{animation:dice-shake .5s ease-out .35s}.dice-overlay-dice .die{width:84px;height:84px;display:grid;place-items:center;animation:odie-pop .5s cubic-bezier(.2,1.6,.4,1) backwards}.dice-overlay-dice .die:nth-child(2){animation-delay:.08s}.dice-overlay-dice .die:nth-child(3){animation-delay:.16s}.roll-prompt{display:grid;position:absolute;top:0;right:0;bottom:0;left:0;z-index:31;place-items:center}.roll-prompt-card{position:relative;display:grid;gap:10px;justify-items:center;background:var(--panel);border:1px solid var(--accent);border-radius:var(--radius);padding:18px 22px;max-width:300px;text-align:center}.roll-prompt-card p{color:var(--ink-soft);font-size:14px;margin:0}.roll-prompt-card .roll-prompt-title{font-weight:700;font-size:17px}.roll-prompt-card .roll-prompt-actions{display:flex;gap:12px}.roll-prompt-card .roll-prompt-actions .btn{min-width:96px}.roll-prompt-card.bare{background:transparent;border:0;padding:0}.roll-prompt-btn{min-width:190px;min-height:58px;font-size:21px;letter-spacing:.04em;box-shadow:0 0 24px color-mix(in srgb,var(--accent) 55%,transparent);animation:odie-pop .4s cubic-bezier(.2,1.6,.4,1) backwards}.game-left .chat .chat-box{height:220px}.side-tabs{flex:none}.side-tabs .side-tab-content{max-height:320px}.game-left .left-well{display:grid;max-height:180px;min-height:100px}.btn{min-height:42px}.btn.btn-small{min-height:38px}.side-tabs .side-tab-bar .side-tab{padding:12px 8px}.replay-controls .btn{min-width:46px}}@keyframes odie-pop{0%{transform:scale(.3) rotate(-35deg);opacity:0}}@keyframes veil-in{0%{opacity:0}}.roll-callout{text-align:center;font-weight:900;text-transform:uppercase;letter-spacing:.14em;font-size:20px;line-height:1.2;animation:callout-pop .5s cubic-bezier(.2,1.7,.4,1) both,callout-glow 1.1s ease-in-out .5s 3}.roll-callout.wild{color:var(--accent-strong)}.roll-callout.double{color:var(--accent)}.roll-callout.dud{color:var(--danger);animation:callout-pop .4s cubic-bezier(.2,1.7,.4,1) both}.roll-callout.big{font-size:34px;letter-spacing:.18em}@keyframes callout-pop{0%{transform:scale(.4);opacity:0}70%{transform:scale(1.14)}to{transform:scale(1);opacity:1}}@keyframes callout-glow{0%,to{text-shadow:0 0 6px currentColor}50%{text-shadow:0 0 16px currentColor,0 0 34px currentColor}}@keyframes dice-shake{10%{transform:translate(-6px,2px) rotate(-2deg)}30%{transform:translate(6px,-2px) rotate(2deg)}50%{transform:translate(-5px,-2px) rotate(-1deg)}70%{transform:translate(4px,2px) rotate(1deg)}90%{transform:translate(-2px,1px)}}.dice-well.callout-wild{border-color:var(--accent-strong);box-shadow:0 0 22px color-mix(in srgb,var(--accent-strong) 35%,transparent)}.dice-well.callout-double{box-shadow:0 0 22px color-mix(in srgb,var(--accent) 40%,transparent)}.dice-well.callout-dud{border-color:var(--danger)}@supports (padding: env(safe-area-inset-left)){body{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom)}.navbar{padding-top:env(safe-area-inset-top)}}.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:0 0 14px;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(--bg);border:1px solid var(--line);border-radius:8px;animation:learn-die-land .9s ease-out backwards}.learn-page .learn-dice .learn-die:nth-child(2){animation-delay:.09s}.learn-page .learn-dice .learn-die:nth-child(3){animation-delay:.18s}.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-opp{margin:-4px 0 12px;padding:0 12px;font-size:14px;font-style:italic;color:var(--ink-soft)}.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-nav .learn-nav-fwd{display:flex;gap:8px}.learn-page .learn-foot{margin:12px 0 0;font-size:13px}.learn-page .learn-foot a{color:var(--accent)}@keyframes learn-die-land{0%{transform:translateY(-16px);opacity:0}45%{transform:translateY(0);opacity:1}60%{box-shadow:0 0 22px #00d6c4d9;border-color:var(--accent, #00d6c4)}to{opacity:1;box-shadow:0 0 #00d6c400}}.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 14px;display:grid;gap:8px;justify-items: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)}.site-footer .footer-row{display:flex;gap:16px;flex-wrap:wrap;justify-content:center}.site-footer .footer-social a{color:var(--accent);font-weight:600}.site-footer .footer-legal{font-size:11.5px;opacity:.8}.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-check{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:14px;color:var(--ink);cursor:pointer}.settings-page .settings-check input{accent-color:var(--accent)}.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(--board-hl, var(--accent));box-shadow:inset 0 0 0 1px #060a0e8c,0 0 0 1px #060a0e73,0 0 10px color-mix(in srgb,var(--board-hl, 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(--board-hl2, var(--accent-strong)) 32%,transparent)!important}.board-wrap [data-selected=true]:before{border-color:var(--board-hl2, var(--accent-strong));box-shadow:inset 0 0 0 1px #060a0e8c,0 0 0 2px color-mix(in srgb,var(--board-hl2, 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(--board-hl, var(--accent)) 85%,transparent);box-shadow:0 0 0 2px #060a0e80,0 0 8px color-mix(in srgb,var(--board-hl, 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(--board-hl, var(--accent)) 18%,transparent)!important}.board-wrap [data-target=true]:hover{background-color:color-mix(in srgb,var(--board-hl, var(--accent)) 22%,transparent)!important}.board-wrap [data-capture=true]:hover{background-color:color-mix(in srgb,var(--danger) 22%,transparent)!important}.board-wrap [data-lastcapture=true]{background-color:color-mix(in srgb,var(--danger) 24%,transparent)!important}.board-wrap .threat-pip{position:absolute;top:4%;right:4%;width:17%;height:17%;border-radius:50%;pointer-events:none;z-index:5;background:radial-gradient(circle at 35% 35%,#ff8d84,var(--danger));box-shadow:0 0 0 1px #060a0e8c,0 0 8px color-mix(in srgb,var(--danger) 70%,transparent);animation:threat-pulse 1.4s ease-in-out infinite}@keyframes threat-pulse{0%,to{transform:scale(1);opacity:.85}50%{transform:scale(1.25);opacity:1}}@media(prefers-reduced-motion:reduce){.board-wrap .threat-pip{animation:none}}@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:#fff;text-shadow:0 1px 2px rgba(0,0,0,.35);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-radius:0}.player-bar.active{border-color:var(--accent)}.player-bar.winner{border-color:var(--accent-strong);box-shadow:0 0 0 1px var(--accent-strong)}.dice-well.active{border-color:var(--accent);box-shadow:0 0 14px #00d6c41f}.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(--line);clip-path:polygon(10% 0,100% 0,100% 90%,90% 100%,0 100%,0 10%)}.die img{width:78%;height:78%;object-fit:contain}.die.live{border-color:var(--accent);box-shadow:0 0 12px #00d6c438}:root.dice-invert .die{background:linear-gradient(160deg,#f6f2e7,#d9d3c2)}.badge{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;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)}
