:root{color-scheme:light dark;--peach: #e8566f;--peach-soft: rgba(232, 86, 111, .14);--sky: #2f9fe6;--sky-soft: rgba(47, 159, 230, .16);--mustard: #e9b23a;--mustard-soft: rgba(233, 178, 58, .18);--bg: #f6f3ee;--card: #ffffff;--card-2: #f1ece4;--text: #22252d;--muted: #6f7380;--border: #e4ded4;--primary: var(--peach);--primary-text: #ffffff;--accent: var(--sky);--gold: var(--mustard);--danger: #d1343f;--success: #1f9d55;--radius-l: 16px;--radius: 12px;--radius-s: 8px;--shadow-1: 0 1px 2px rgba(34, 37, 45, .06), 0 4px 12px rgba(34, 37, 45, .06);--shadow-2: 0 8px 24px rgba(34, 37, 45, .18);--sea-1: #bfe3f7;--sea-2: #8ecdee;--land: #f3ead6;--coast: #d6c7a4;--river: #74bde6;--rail-bed: #4b5563;--rail-tie: #ffffff;--badge-bg: #ffffff;--badge-ink: #3b3f4a;font-family:system-ui,-apple-system,Segoe UI,Roboto,PingFang SC,Microsoft YaHei,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-variant-numeric:tabular-nums}@media(prefers-color-scheme:dark){:root{--bg: #12141a;--card: #1b1e26;--card-2: #232733;--text: #e8e6e1;--muted: #9a9ea9;--border: #2b2f3a;--shadow-1: 0 1px 2px rgba(0, 0, 0, .4), 0 4px 12px rgba(0, 0, 0, .3);--shadow-2: 0 8px 24px rgba(0, 0, 0, .5);--sea-1: #10263d;--sea-2: #173a5a;--land: #2a2d33;--coast: #4a4e58;--river: #3b7fb3;--rail-bed: #cbd5e1;--rail-tie: #1b1e26;--badge-bg: #2a2e39;--badge-ink: #e8e6e1}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;overscroll-behavior:none}.app{max-width:520px;margin:0 auto;padding:8px 12px 0;padding:calc(8px + env(safe-area-inset-top)) calc(12px + env(safe-area-inset-right)) env(safe-area-inset-bottom) calc(12px + env(safe-area-inset-left));min-height:100vh;min-height:100dvh;height:100vh;height:100dvh;display:flex;flex-direction:column;gap:8px;overflow:hidden}.brand{display:flex;align-items:center;justify-content:space-between;min-height:44px;flex:none}.brand h1{margin:0;font-size:24px;font-weight:800;letter-spacing:1px}.brand small{color:var(--muted);font-size:12px}button.link{background:none;border:0;color:var(--muted);font-size:12px;font-weight:500;padding:6px 0;min-height:0;text-decoration:underline dotted;text-underline-offset:3px;max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.server-setup code{font-size:.95em;overflow-wrap:anywhere}.hint.ok{color:var(--success);font-weight:600}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-l);padding:16px;box-shadow:var(--shadow-1);display:flex;flex-direction:column;gap:12px}.card h2{margin:0;font-size:16px}label.field,div.field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}.brand-actions{display:flex;align-items:center;gap:8px}.settings-dialog{max-width:420px;margin:12vh auto 0;width:min(420px,calc(100% - 32px))}.settings-dialog h3.settings-section{margin:16px 0 6px;font-size:13px;color:var(--muted);font-weight:600}.settings-dialog .server-line{margin:0 0 10px;word-break:break-all}.settings-toggles{display:flex;flex-wrap:wrap;gap:12px 20px;margin:8px 0 4px}.settings-toggles .toggle{display:inline-flex;align-items:center;gap:8px;font-size:15px;color:var(--text);min-height:44px;cursor:pointer;-webkit-user-select:none;user-select:none}.update-banner{position:fixed;bottom:calc(env(safe-area-inset-bottom,0px) + 64px);left:50%;transform:translate(-50%);width:min(720px,calc(100% - 24px));max-width:496px;z-index:45;padding:8px 12px;border-radius:var(--radius, 12px);background:color-mix(in srgb,var(--peach, #e85d4c) 12%,var(--card, #fff));border:1px solid var(--border);box-shadow:var(--shadow-2, 0 8px 24px rgba(0, 0, 0, .12));display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center}.update-banner a{font-weight:700}.account-gate{max-width:420px;margin:8vh auto 0;width:min(420px,calc(100% - 32px))}.account-gate .account-actions{gap:10px;margin-top:8px}.settings-toggles .toggle input{width:18px;height:18px;accent-color:var(--peach)}.avatar-picker{display:flex;flex-wrap:nowrap;gap:8px;overflow-x:auto;padding:2px 2px 6px;scrollbar-width:none}.avatar-picker::-webkit-scrollbar{display:none}.avatar-option{width:44px;height:44px;min-height:0;padding:0;border-radius:50%;background:var(--bg);border:2px solid var(--border);font-size:24px;line-height:1;display:grid;place-items:center;box-shadow:none}.avatar-option.picked{border-color:var(--peach);background:var(--peach-soft);box-shadow:0 0 0 3px var(--peach-soft);transform:scale(1.08)}.player-avatar{font-size:20px;line-height:1}input,select{font:inherit;font-size:16px;min-height:44px;padding:10px 14px;border-radius:10px;border:1px solid var(--border);background:var(--bg);color:var(--text);outline:none}input:focus,select:focus{border-color:var(--primary)}input.code{font-size:22px;letter-spacing:6px;text-transform:uppercase;text-align:center;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}button{font:inherit;font-weight:600;min-height:44px;padding:10px 16px;border-radius:10px;border:1px solid transparent;background:var(--primary);color:var(--primary-text);cursor:pointer;touch-action:manipulation}button:disabled{opacity:.5;cursor:not-allowed}button.secondary{background:transparent;color:var(--text);border-color:var(--border)}button.danger{background:transparent;color:var(--danger);border-color:var(--danger)}button.small{min-height:40px;padding:6px 12px;font-size:13px}button.icon-button{width:40px;min-height:40px;padding:0;border-radius:50%;background:transparent;color:var(--text);border-color:var(--border);font-size:20px;line-height:1}button.icon-button:disabled{opacity:.8}button.icon-button.spinning{animation:icon-spin .8s linear infinite}@keyframes icon-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){button.icon-button.spinning{animation:none;opacity:.5}}.row{display:flex;gap:8px;align-items:center}.row>*{flex:1}.row>.fixed{flex:0 0 auto}.badge{font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--border);color:var(--muted)}.badge.host{color:#8a5a0b;border-color:var(--gold)}.badge.bot{color:var(--sky);border-color:var(--sky)}@media(prefers-color-scheme:dark){.badge.host{color:#e6b53c}}.badge.ready{color:var(--success);border-color:var(--success)}.badge.offline{color:var(--danger);border-color:var(--danger)}.hint{color:var(--muted);font-size:13px;margin:0}.error{color:var(--danger);font-size:13px;margin:0}.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translate(-50%);background:#22252d;color:#f6f3ee;padding:10px 16px;border-radius:999px;font-size:14px;box-shadow:var(--shadow-2);max-width:calc(100vw - 32px)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:grid;place-items:center;color:#fff;font-size:16px;text-align:center;padding:calc(24px + env(safe-area-inset-top)) calc(24px + env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) calc(24px + env(safe-area-inset-left))}.overlay>div>.hint{color:#fffc}.overlay .dialog{width:min(100%,380px);color:var(--text);text-align:left;box-shadow:var(--shadow-2)}.overlay .dialog h2{font-size:18px}.playing{text-align:center;padding:32px 16px}.playing .big{font-size:48px}.badge.turn{color:var(--primary);border-color:var(--primary)}.hint.center{text-align:center}.result h2{text-align:center;font-size:22px}.leaderboard-top,.leaderboard-full{list-style:none;margin:0;padding:0}.leaderboard-top li,.leaderboard-full li{display:flex;align-items:center;gap:8px;padding:7px 2px}.leaderboard-top li+li,.leaderboard-full li+li{border-top:1px solid var(--border)}.leaderboard-top .rank,.leaderboard-full .rank{width:26px;text-align:center;font-size:15px}.leaderboard-top .face,.leaderboard-full .face{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--badge-bg);font-size:14px}.leaderboard-top .name,.leaderboard-full .name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.leaderboard-top .id{color:var(--muted);font-size:12px}.leaderboard-top .score,.leaderboard-full .score{text-align:right;font-variant-numeric:tabular-nums}.leaderboard-full{max-height:60vh;overflow-y:auto}.section-nav{display:flex;gap:6px;margin-left:auto}@media(max-width:400px){.brand h1{font-size:18px;letter-spacing:.5px}.section-nav{gap:4px}.section-nav button{padding:4px 8px;font-size:12px}}.section-nav button{min-height:0;padding:5px 12px;border-radius:999px;border:1px solid var(--border);background:none;color:var(--muted);font-size:13px}.section-nav button.on{background:var(--primary);border-color:var(--primary);color:var(--primary-text)}.post-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.post-card{width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--card);color:var(--text);text-align:left;cursor:pointer}.post-card:active{transform:scale(.99)}.post-title{font-size:16px;font-weight:700}.post-excerpt{color:var(--muted);font-size:14px;line-height:1.5}.post-meta{color:var(--muted);font-size:12px}.back.link{margin-bottom:8px}.post-detail .post-body{margin-top:12px;line-height:1.8;font-size:15px}.post-detail .post-body p{margin:0 0 12px}.tabs-app{padding-bottom:0;gap:0}.tabs-app>.brand{padding:8px 12px}.tab-content{flex:1;min-height:0;display:flex;flex-direction:column;animation:tab-in .18s ease}.tab-content[hidden]{display:none}@keyframes tab-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.tab-content{animation:none}}.tab-page{flex:1;min-height:0;display:flex;flex-direction:column}.page-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:4px 4px 12px}.tab-bar{flex:none;display:flex;border-top:1px solid var(--border);background:var(--card);padding:4px 8px calc(4px + env(safe-area-inset-bottom));gap:4px}.tab-bar .tab{flex:1;min-height:52px;padding:4px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:0;border-radius:12px;background:none;color:var(--muted);font-weight:600;font-size:12px}.tab-bar .tab-icon{font-size:20px;line-height:1;filter:grayscale(1) opacity(.7);transition:transform .15s ease,filter .15s ease}.tab-bar .tab.on{color:var(--primary)}.tab-bar .tab.on .tab-icon{filter:none;transform:translateY(-1px)}.section-head{display:flex;align-items:center;gap:8px}.section-head h2{flex:1;margin:0;font-size:16px}.section-head .hint.fixed{flex:none}.lobby-banner{flex-direction:row;align-items:center;gap:12px;background:linear-gradient(135deg,var(--peach-soft),var(--card));border-color:color-mix(in srgb,var(--peach) 30%,var(--border))}.lobby-banner .banner-copy{flex:1;min-width:0}.lobby-banner .banner-actions{display:flex;flex-direction:column;gap:8px;min-width:96px}.lobby-banner h2{font-size:20px}.lobby-banner .hint{margin:4px 0 0}.hot-games{display:grid;gap:8px}.hot-game{display:flex;align-items:center;gap:12px;min-height:68px;padding:10px 12px;text-align:left;background:var(--bg);border:1px solid var(--border);color:var(--text)}.hot-game:hover{border-color:var(--primary)}.hot-icon{flex:0 0 auto;width:44px;height:44px;display:grid;place-items:center;border-radius:12px;background:var(--card);border:1px solid var(--border);font-size:24px}.hot-copy{flex:1;min-width:0;display:grid;gap:2px}.hot-copy small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hot-cta{flex:0 0 auto;color:var(--primary);font-size:13px;font-weight:700}.search-card{gap:10px}input.search{min-height:40px;padding:8px 12px;font-size:15px}.game-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.game-card{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--card-2)}.game-card-body{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;padding:0;border:0;background:none;color:var(--text);text-align:left;cursor:pointer}.game-actions{display:flex;gap:6px}.game-actions .game-play{flex:1}.game-icon{width:52px;height:52px;display:grid;place-items:center;border-radius:14px;background:var(--card);border:1px solid var(--border);font-size:28px}.game-copy{display:grid;gap:3px}.game-copy strong{font-size:15px;color:var(--text)}.game-copy small{color:var(--muted)}.game-copy .game-blurb{overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.game-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}.game-play{align-self:stretch}.join-form{display:flex;gap:8px}.join-form input.code{flex:1;min-width:0}.profile-card{gap:12px}.profile-head{display:flex;align-items:center;gap:12px}.avatar-bubble.big{width:56px;height:56px;font-size:30px}.profile-who{flex:1;min-width:0;display:grid;gap:2px}.profile-who strong{font-size:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-stats{display:flex;gap:8px}.profile-stats .stat{flex:1;display:grid;gap:2px;text-align:center;padding:10px 8px;border:1px solid var(--border);border-radius:10px;background:var(--bg)}.profile-stats .stat strong{font-size:18px}button.logout{align-self:center;min-width:160px}.server-line{word-break:break-all}.account-server-row{display:flex;align-items:center;gap:8px;justify-content:center;padding-top:4px}.empty-state{display:flex;flex-direction:column;align-items:center;gap:6px;padding:24px 16px;text-align:center}.empty-icon{font-size:40px;line-height:1}.empty-title{margin:0;font-weight:700}.empty-action{margin-top:6px}.skeleton-row{width:100%;height:16px;border-radius:8px;background:var(--card-2);animation:skeleton-pulse 1.2s ease-in-out infinite}.skeleton-row.short{width:60%}@keyframes skeleton-pulse{0%,to{opacity:.55}50%{opacity:1}}button:not(:disabled):active{transform:scale(.97)}@media(prefers-reduced-motion:reduce){button:not(:disabled):active{transform:none}.skeleton-row{animation:none;opacity:.7}}.toast{animation:toast-in .22s ease}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.solo-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.solo-card{width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--card);color:var(--text);text-align:left}.solo-card:active{transform:scale(.98)}.solo-card .solo-icon{font-size:26px;margin-bottom:4px}.solo-card strong{font-size:14px;color:var(--text)}.solo-card small{color:var(--muted);font-size:12px;line-height:1.4}.solo-app{display:flex;flex-direction:column;gap:10px;padding:0 0 14px}.solo-head{display:flex;align-items:center;gap:10px;padding:10px 14px 0}.solo-head h1{font-size:18px;margin:0}.solo-head .back{margin:0}.solo-stage{padding:0 14px;display:flex;flex-direction:column;gap:12px}.solo-hud{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.solo-hud .segmented{margin-left:auto}.solo-stat{display:flex;flex-direction:column;align-items:flex-start;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:6px 12px}.solo-stat small{color:var(--muted);font-size:11px}.solo-stat strong{font-size:18px}.solo-banner{padding:12px;border-radius:var(--radius);background:var(--accent-soft, var(--card));border:1px solid var(--accent, var(--border));color:var(--accent, var(--text));font-weight:600;text-align:center}.game2048{display:flex;flex-direction:column;gap:12px;align-items:stretch}.board2048{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:8px;max-width:420px;width:100%;align-self:center;aspect-ratio:1;touch-action:none}.board2048 .tile{display:grid;place-items:center;border-radius:8px;font-weight:700;font-size:clamp(16px,5vw,26px);background:color-mix(in srgb,var(--foreground) 8%,transparent);color:var(--foreground)}.tile.t2{background:#e2e8f0;color:#334155}.tile.t4{background:#dbeafe;color:#1e40af}.tile.t8{background:#bae6fd;color:#075985}.tile.t16{background:#a7f3d0;color:#065f46}.tile.t32{background:#bbf7d0;color:#166534}.tile.t64{background:#fde68a;color:#92400e}.tile.t128{background:#fcd34d;color:#78350f}.tile.t256{background:#fbbf24;color:#78350f}.tile.t512{background:#fb923c;color:#7c2d12}.tile.t1024{background:#f87171;color:#7f1d1d}.tile.t2048{background:#f472b6;color:#831843}.tile.big{background:#94a3b8;color:#0f172a}.mines{display:flex;flex-direction:column;gap:12px}.mine-grid{display:grid;gap:1px;background:var(--border);border:1px solid var(--border);border-radius:6px;overflow:hidden;align-self:center;width:100%;max-width:560px}.mine-cell{aspect-ratio:1;min-width:0;padding:0;background:var(--card);border:none;border-radius:0;font-size:clamp(11px,2.6vw,16px);font-weight:700;color:var(--text);display:grid;place-items:center}.mine-cell.open{background:color-mix(in srgb,var(--foreground) 6%,transparent)}.mine-cell.mine-hit{background:#fecaca}.mine-cell[data-n="1"]{color:#2563eb}.mine-cell[data-n="2"]{color:#16a34a}.mine-cell[data-n="3"]{color:#dc2626}.mine-cell[data-n="4"]{color:#7c3aed}.mine-cell[data-n="5"]{color:#b45309}.mine-cell[data-n="6"]{color:#0d9488}.mine-cell[data-n="7"]{color:#111827}.mine-cell[data-n="8"]{color:#6b7280}.guess-game{display:flex;flex-direction:column;gap:12px}.guess-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:40vh;overflow-y:auto}.guess-list li{padding:8px 12px;border-radius:8px;background:var(--card);border:1px solid var(--border);font-variant-numeric:tabular-nums}.guess-list li.up{border-left:4px solid #fb923c}.guess-list li.down{border-left:4px solid #60a5fa}.guess-list li.hit{border-left:4px solid #34d399;font-weight:700}.guess-form{display:flex;gap:8px}.guess-form input{flex:1;font-size:18px;text-align:center}.memory-game{display:flex;flex-direction:column;gap:12px}.memory-grid{display:grid;gap:8px;align-self:center;width:100%;max-width:420px}.memory-grid.cols-6{grid-template-columns:repeat(6,1fr)}.memory-grid.cols-4{grid-template-columns:repeat(4,1fr)}.memory-card{aspect-ratio:1;padding:0;display:grid;place-items:center;background:var(--card);border:1px solid var(--border);border-radius:10px;font-size:clamp(18px,6vw,30px)}.memory-card.up{background:var(--accent-soft, #dbeafe);border-color:var(--accent, #60a5fa)}.memory-card.gone{opacity:.25;pointer-events:none}.dice-tool{display:flex;flex-direction:column;gap:14px}.dice-presets{display:flex;gap:6px;flex-wrap:wrap}.die-add{min-height:0;padding:6px 10px;border-radius:8px;border:1px dashed var(--border);background:none;color:var(--muted);font-size:13px}.dice-table{display:flex;flex-direction:column;gap:10px}.die-row{display:flex;align-items:center;gap:12px}.die-faces{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:8px 14px;min-height:0;color:var(--text)}.die-faces small{color:var(--muted)}.die-body{display:grid;place-items:center;min-width:44px;min-height:44px;border-radius:10px;background:var(--accent, #f472b6);color:#fff;font-size:20px;font-weight:700;font-variant-numeric:tabular-nums}.die-body.spin{animation:die-shake .35s linear infinite}@keyframes die-shake{0%{transform:rotate(0) scale(1)}50%{transform:rotate(180deg) scale(1.15)}to{transform:rotate(360deg) scale(1)}}.dice-total{display:flex;align-items:baseline;gap:8px;justify-content:center}.dice-total strong{font-size:40px;font-variant-numeric:tabular-nums}.dice-total small{color:var(--muted)}.coin-tool{display:flex;flex-direction:column;gap:14px;align-items:center}.coin{width:130px;height:130px;border-radius:50%;border:4px solid #d97706;background:radial-gradient(circle at 35% 35%,#fde68a,#f59e0b);color:#78350f;font-size:44px;font-weight:700;display:grid;place-items:center}.coin.spinning{animation:coin-flip .6s ease-in-out}@keyframes coin-flip{0%{transform:rotateY(0)}to{transform:rotateY(1080deg)}}.coin-stats{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.coin-bar{width:100%;max-width:360px;height:10px;border-radius:5px;background:#fecaca;overflow:hidden}.coin-bar span{display:block;height:100%;background:#34d399;transition:width .4s}.sudoku-game{display:flex;flex-direction:column;gap:12px}.sudoku-grid{display:grid;grid-template-columns:repeat(9,1fr);gap:1px;background:var(--border);border:2px solid var(--border);border-radius:6px;overflow:hidden;align-self:center;width:100%;max-width:420px;aspect-ratio:1}.sudoku-cell{min-width:0;padding:0;text-align:center;font-size:clamp(14px,4.6vw,24px);background:var(--card);border:none;border-radius:0;color:var(--text)}.sudoku-cell.given{font-weight:700}.sudoku-cell.wrong{color:#dc2626}.puzzle15-game{display:flex;flex-direction:column;gap:12px}.puzzle15-grid{display:grid;gap:6px;align-self:center;width:100%;max-width:360px;aspect-ratio:1}.puzzle15-grid.cols-3{grid-template-columns:repeat(3,1fr)}.puzzle15-grid.cols-4{grid-template-columns:repeat(4,1fr)}.puzzle15-tile{aspect-ratio:1;padding:0;font-size:clamp(18px,6vw,30px);font-weight:700;background:var(--card);border:1px solid var(--border);border-radius:10px;color:var(--text)}.puzzle15-tile.hole{background:transparent;border-color:transparent}.peg-game{display:flex;flex-direction:column;gap:12px}.peg-board{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;align-self:center;width:100%;max-width:340px;aspect-ratio:1}.peg-none{visibility:hidden}.peg-cell{aspect-ratio:1;padding:0;border-radius:50%;border:1px solid var(--border);background:var(--card);position:relative}.peg-cell.sel{outline:2px solid var(--accent)}.peg-cell.target:after{content:"";position:absolute;top:30%;right:30%;bottom:30%;left:30%;border-radius:50%;background:color-mix(in srgb,var(--accent) 35%,transparent)}.peg-peg{position:absolute;top:18%;right:18%;bottom:18%;left:18%;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fca5a5,#dc2626)}.snake-game{display:flex;flex-direction:column;gap:12px}.snake-board{display:grid;gap:1px;background:var(--border);border:1px solid var(--border);border-radius:6px;overflow:hidden;align-self:center;width:100%;max-width:400px;aspect-ratio:1}.snake-cell{background:var(--card)}.snake-cell.snake{background:#22c55e}.snake-cell.food{background:#ef4444;border-radius:40%}.tetris-game{display:flex;flex-direction:column;gap:12px}.tetris-board{display:grid;gap:1px;background:var(--border);border:1px solid var(--border);border-radius:6px;overflow:hidden;align-self:center;width:100%;max-width:260px;aspect-ratio:1 / 2}.tetris-cell{background:var(--card)}.tetris-controls{display:flex;gap:8px;justify-content:center}.breakout-game{display:flex;flex-direction:column;gap:12px}.breakout-board{position:relative;width:100%;max-width:420px;aspect-ratio:4 / 3;align-self:center;background:var(--card);border:1px solid var(--border);border-radius:8px;overflow:hidden;touch-action:none}.breakout-brick{position:absolute;background:#f59e0b;border:1px solid #b45309;border-radius:3px;box-sizing:border-box}.breakout-brick.gone{display:none}.breakout-ball{position:absolute;width:2.4%;aspect-ratio:1;border-radius:50%;background:#ef4444;transform:translate(-50%,-50%)}.breakout-paddle{position:absolute;bottom:3%;height:2.2%;background:#3b82f6;border-radius:4px}.wheel-tool{display:flex;flex-direction:column;gap:14px;align-items:center}.wheel-wrap{position:relative;width:min(72vw,300px);aspect-ratio:1}.wheel{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:6px solid var(--card);box-shadow:0 2px 12px #0003;transition:transform 4s cubic-bezier(.15,.9,.25,1)}.wheel-label{position:absolute;left:50%;top:50%;transform-origin:0 0;font-size:12px;font-weight:700;white-space:nowrap;max-width:60px;overflow:hidden;text-overflow:ellipsis;pointer-events:none}.wheel-pointer{position:absolute;top:-10px;left:50%;transform:translate(-50%);font-size:26px;color:var(--accent, #f472b6);z-index:2}.wheel-edit{width:100%;max-width:420px;display:flex;flex-direction:column;gap:8px}.wheel-history{list-style:none;margin:0;padding:0;width:100%;max-width:420px;display:flex;flex-direction:column;gap:4px}.wheel-history li{padding:6px 10px;background:var(--card);border:1px solid var(--border);border-radius:8px;font-size:13px;color:var(--muted)}.code-banner{display:flex;align-items:center;justify-content:space-between;gap:12px}.code-banner .code-value{font-size:32px;font-weight:700;letter-spacing:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.players{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.player{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:10px}.player.offline{opacity:.55}.player .seat{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--bg);font-size:12px;color:var(--muted)}.player .name{flex:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.save-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.save-list li{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--border);border-radius:10px}.save-list .info{flex:1;min-width:0;display:grid;gap:2px}.save-list .title{font-weight:600}.save-list .title code{font-size:1.05em;letter-spacing:.08em}.save-list small{color:var(--muted);overflow-wrap:anywhere}.save-list button{flex:none}.rooms .row h2{flex:1}.room-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.room-list li{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--card-2);box-shadow:var(--shadow-1)}.room-list .avatars{flex:0 0 auto;display:flex;padding-left:6px}.room-list .mini-avatar{width:30px;height:30px;margin-left:-6px;display:grid;place-items:center;border-radius:50%;background:var(--bg);border:2px solid var(--card);font-size:15px;line-height:1}.room-list .mini-avatar.more{font-size:10px;font-weight:700;color:var(--muted);background:var(--card-2);border-color:var(--card)}.room-list li.lobby{background:var(--card);border-color:color-mix(in srgb,var(--success) 45%,var(--border))}.room-list .info{flex:1;min-width:0;display:grid;gap:2px}.room-list .title{font-weight:700;display:flex;align-items:center;gap:8px}.room-list small{color:var(--muted);overflow-wrap:anywhere}.room-list small code{font-size:1.05em;letter-spacing:.08em;color:var(--text)}.room-list .names{color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room-list button{flex:none}.avatar-bubble{flex:0 0 auto;width:40px;height:40px;display:grid;place-items:center;border-radius:50%;background:var(--bg);border:2px solid var(--border);font-size:22px;line-height:1}.profile-dialog{width:min(100%,380px)}.segmented{display:flex;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--card-2)}.segmented button{flex:1;min-height:40px;padding:6px 4px;border:0;border-radius:0;background:transparent;color:var(--text);font-size:14px}.segmented button+button{border-left:1px solid var(--border)}.segmented button.on{background:var(--primary);color:var(--primary-text)}.segmented button:disabled{opacity:1;cursor:default;color:var(--muted)}.segmented button.on:disabled{color:var(--primary-text);opacity:.85}.rules-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.rules-picker>.hint{margin:0}.room-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-bottom:4px}.room-scroll.lock{overflow-y:hidden}.room-dock{flex:none;display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid var(--border);border-radius:20px;background:var(--card);box-shadow:var(--shadow-1)}.room-dock .hint{margin:0}.room-dock .leave{align-self:center;max-width:none;min-height:32px}.emoji-corner{position:relative;display:flex;align-items:center;margin-left:auto}.emoji-rail{position:absolute;top:calc(100% + 6px);right:0;display:flex;flex-direction:column;align-items:center;gap:4px;z-index:30;padding:6px 4px;border-radius:var(--radius);background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow-2);max-height:60vh;overflow-y:auto}.emoji-toggle{min-width:0;width:40px;height:40px;padding:0;display:grid;place-items:center;background:none;border:1px solid var(--border);border-radius:50%;font-size:18px;color:var(--text)}.emoji-btn{min-width:0;width:36px;height:36px;padding:0;display:grid;place-items:center;background:none;border:0;border-radius:10px;font-size:18px;color:var(--text)}.emoji-btn:active{transform:scale(.88)}.emoji-bubbles{position:fixed;right:8px;top:calc(env(safe-area-inset-top,0px) + 56px);display:flex;flex-direction:column;align-items:flex-end;gap:6px;z-index:31;pointer-events:none}.emoji-bubble{display:flex;align-items:center;gap:6px;padding:6px 12px 6px 6px;border-radius:999px;background:var(--card);border:1px solid var(--border);font-size:14px;animation:bubble-in .22s ease}.emoji-bubble .bubble-face{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--badge-bg);font-size:12px}.emoji-bubble .bubble-name{color:var(--muted);max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.emoji-bubble .bubble-emoji{font-size:18px}@keyframes bubble-in{0%{opacity:0;transform:translate(14px)}to{opacity:1;transform:none}}.badge.watch{background:var(--sky-soft);color:var(--text);margin-left:8px}@media(orientation:landscape)and (max-height:520px){.room-dock{flex-direction:row;align-items:center;flex-wrap:wrap;padding:8px 10px}.room-dock button{flex:none;white-space:nowrap}.room-dock .hint{flex-basis:100%}}.gomoku-board{width:100%;max-width:520px;aspect-ratio:1;display:block;margin:0 auto;touch-action:manipulation;-webkit-user-select:none;user-select:none}.board-bg{fill:#e8c48a}@media(prefers-color-scheme:dark){.board-bg{fill:#b8945e}}.grid-line line{stroke:#6b4e2a;stroke-width:1.2}.star{fill:#6b4e2a}.hit{fill:transparent;cursor:pointer}.interactive .hit:hover{fill:var(--peach-soft)}.stone{stroke-width:1}.stone.black{fill:#1a1a1a;stroke:#000}.stone.white{fill:#fafafa;stroke:#777}.stone.win{stroke:#f59e0b;stroke-width:4}.last-marker{fill:#ef4444}.game-header{gap:8px}.seats{display:flex;align-items:center;gap:8px}.seats .vs{color:var(--muted);font-size:12px}.seat-card{flex:1;display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;min-width:0}.seat-card.active{border-color:var(--primary);box-shadow:0 0 0 2px var(--peach-soft)}.seat-card.offline{opacity:.6}.seat-card .name{flex:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stone-dot{width:16px;height:16px;border-radius:50%;flex:0 0 auto}.stone-dot.black{background:#1a1a1a}.stone-dot.white{background:#fafafa;border:1px solid #777}.gomoku-board{flex-shrink:0}.app.wide{max-width:none;height:100dvh;min-height:0;padding:0;gap:0;overflow:hidden}.app.wide>.brand,.app.wide .room-banner{display:none}.app.wide>.update-banner{display:none}.momo{position:relative;flex:1;min-height:0;overflow:hidden}.momo>.momo-map{position:absolute;top:0;right:0;bottom:0;left:0;height:auto;aspect-ratio:auto;border:0;border-radius:0;box-shadow:none}.hud{position:absolute;left:0;right:0;display:flex;gap:8px;pointer-events:none;padding-left:calc(8px + env(safe-area-inset-left));padding-right:calc(8px + env(safe-area-inset-right))}.hud>*{pointer-events:auto}.hud-top{top:0;padding-top:calc(8px + env(safe-area-inset-top));align-items:flex-start;flex-wrap:wrap}.hud-bottom{bottom:0;padding-bottom:calc(8px + env(safe-area-inset-bottom));flex-direction:column;align-items:center;gap:6px}.chip{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:6px 12px;border-radius:999px;background:color-mix(in srgb,var(--card) 88%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:var(--shadow-1);font-size:13px;line-height:1.3;max-width:100%}.chip .sep{width:1px;height:14px;background:var(--border)}.chip small{color:var(--muted)}.chip .debt{color:var(--danger)}.time-chip{border-radius:14px;padding-bottom:8px}.time-chip strong{font-size:14px}.event-chip{background:color-mix(in srgb,var(--mustard) 28%,var(--card));max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.calendar{flex:1 1 100%;display:grid;grid-template-columns:repeat(12,1fr);gap:2px}.calendar .seg{height:4px;border-radius:2px;background:var(--card-2)}.calendar .seg.done{background:var(--sky-soft)}.calendar .seg.now{background:var(--primary)}.hud-players{margin-left:auto;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px;max-width:min(62%,720px)}.pchip{display:flex;align-items:center;gap:6px;min-height:0;padding:3px 10px 3px 4px;border-radius:999px;border:2px solid transparent;background:color-mix(in srgb,var(--card) 88%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:var(--shadow-1);color:var(--text);font-weight:500;text-align:left}.pchip .avatar{width:30px;height:30px;font-size:14px;border-width:1.5px}.pchip-text{display:flex;flex-direction:column;line-height:1.15}.pchip .name{font-size:12px;max-width:7em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pchip .money{font-size:12px;font-weight:700}.pchip .money.debt{color:var(--danger)}.pchip.offline{opacity:.6}.pchip.active{border-color:var(--seat-color, var(--primary));animation:momo-card-breathe 1.4s ease-in-out infinite alternate}@keyframes momo-card-breathe{0%{box-shadow:0 0 0 2px color-mix(in srgb,var(--seat-color, var(--primary)) 18%,transparent)}to{box-shadow:0 0 0 5px color-mix(in srgb,var(--seat-color, var(--primary)) 36%,transparent)}}.icon-btn{width:40px;height:40px;min-height:0;padding:0;border-radius:50%;background:color-mix(in srgb,var(--card) 88%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--text);box-shadow:var(--shadow-1);font-size:18px;display:grid;place-items:center}.ticker{min-height:0;padding:4px 12px;border-radius:999px;background:color-mix(in srgb,var(--text) 72%,transparent);color:var(--bg);font-size:12px;font-weight:500;max-width:min(100%,560px);text-align:left}.ticker p{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ticker p:not(:last-child){display:none}@media(min-width:900px)and (min-height:600px){.ticker{border-radius:12px;padding:6px 12px}.ticker p:not(:last-child){display:block;opacity:.7}}.dock{width:min(100%,560px);max-height:52dvh;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:8px 12px 10px;border-radius:var(--radius-l);background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:var(--shadow-2);border:1px solid var(--border)}.dock.mine{border-color:color-mix(in srgb,var(--primary) 50%,var(--border))}.dock-status{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;color:var(--muted)}.dock-status .status.attention{color:var(--primary);font-weight:700}.dock-actions{display:flex;gap:8px;align-items:stretch}.dock-actions .big-action{flex:1;font-size:18px;padding:12px 16px}.dock-actions>button small{display:block;font-size:11px;font-weight:500;opacity:.85}.dice{display:flex;gap:4px}.die{width:24px;height:24px;border-radius:6px;display:grid;place-items:center;background:var(--card);border:2px solid var(--text);color:var(--text);font-weight:700;font-size:13px}.dock.playing{border-color:color-mix(in srgb,var(--sky) 50%,var(--border))}.dock.playing .dock-status{min-height:36px}.dock.playing .status{flex:1;color:var(--text);font-weight:600}.dock.playing .skip{padding:4px 10px;min-height:30px}.dice{align-items:center}.dice .total{margin-left:4px;font-size:14px;color:var(--text)}.dice.rolling .die{width:30px;height:30px;font-size:16px;border-color:var(--sky);animation:momo-tumble .36s linear infinite}.dice.settled .die{width:30px;height:30px;font-size:16px;border-color:var(--peach);animation:momo-die-pop .32s cubic-bezier(.2,1.6,.4,1) both}@keyframes momo-tumble{0%{transform:rotate(-12deg) translateY(-2px)}50%{transform:rotate(10deg) translateY(2px)}to{transform:rotate(-12deg) translateY(-2px)}}@keyframes momo-die-pop{0%{transform:scale(1.5)}to{transform:scale(1)}}.card-play{position:absolute;left:50%;top:38%;z-index:6;pointer-events:none;perspective:700px;transform:translate(-50%,-50%);animation:momo-card-away 1.3s ease-in both}.card-play .card-face{width:min(78vw,250px);padding:14px 18px 16px;border-radius:16px;background:linear-gradient(160deg,color-mix(in srgb,var(--mustard) 35%,var(--card)),var(--card) 55%);border:2px solid color-mix(in srgb,var(--mustard) 70%,var(--text));box-shadow:var(--shadow-2);display:flex;flex-direction:column;gap:4px;text-align:center;color:var(--text);transform-origin:center;animation:momo-card-flip .55s cubic-bezier(.2,1.2,.4,1) both}.card-play.mine .card-face{background:linear-gradient(160deg,color-mix(in srgb,var(--primary) 28%,var(--card)),var(--card) 55%);border-color:color-mix(in srgb,var(--primary) 70%,var(--text))}.card-play .kicker{font-size:11px;color:var(--muted)}.card-play strong{font-size:20px}.card-play p{margin:0;font-size:12.5px;line-height:1.4}.card-play em{font-style:normal;font-weight:700;font-size:13px;color:var(--primary)}@keyframes momo-card-flip{0%{transform:rotateY(90deg) scale(.7);opacity:0}to{transform:none;opacity:1}}@keyframes momo-card-away{0%,72%{transform:translate(-50%,-50%) scale(1);opacity:1}to{transform:translate(-50%,-140%) scale(.35);opacity:0}}.banner{position:absolute;left:50%;top:19%;transform:translate(-50%,-50%);z-index:5;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:4px;max-width:min(92%,520px);padding:12px 22px;border-radius:var(--radius-l);background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:var(--shadow-2);border:2px solid var(--border);text-align:center;animation:momo-banner .45s cubic-bezier(.2,1.3,.4,1) both}.banner strong{font-size:18px;line-height:1.3}.banner.turn{top:auto;bottom:30%;padding:6px 16px;border-color:var(--sky);background:color-mix(in srgb,var(--sky) 14%,var(--card));animation:momo-toast 1.1s ease both}.banner.turn strong{font-size:15px}.banner.ward{border-color:var(--mustard);background:color-mix(in srgb,var(--mustard) 16%,var(--card))}.banner.market{border-color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,var(--card));animation:momo-banner .45s cubic-bezier(.2,1.3,.4,1) both,momo-market-flash .5s ease-in-out .3s 3 alternate}@keyframes momo-market-flash{0%{box-shadow:var(--shadow-2)}to{box-shadow:var(--shadow-2),0 0 0 6px color-mix(in srgb,var(--danger) 30%,transparent)}}@keyframes momo-toast{0%{transform:translate(-50%,-30%);opacity:0}18%,80%{transform:translate(-50%,-50%);opacity:1}to{transform:translate(-50%,-70%);opacity:0}}@keyframes momo-banner{0%{transform:translate(-50%,-50%) scale(.7);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}@media(orientation:landscape)and (max-height:520px){.banner{left:32%;top:24%;max-width:46%;padding:8px 16px}.banner strong{font-size:16px}.banner.turn{left:30%;bottom:14%;max-width:44%}}.turn-timer{position:absolute;left:50%;top:calc(6px + env(safe-area-inset-top));transform:translate(-50%);z-index:6;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:2px;--tone: var(--seat-color, var(--primary))}.turn-timer .ring{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--tone) calc(var(--frac, 1) * 360deg),color-mix(in srgb,var(--tone) 18%,transparent) 0);box-shadow:var(--shadow-2),0 0 0 2px color-mix(in srgb,var(--card) 85%,transparent);transition:background .25s linear}.turn-timer .ring strong{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--card) 94%,transparent);color:var(--tone);font-size:22px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1}.turn-timer small{padding:1px 8px;border-radius:999px;background:color-mix(in srgb,var(--card) 88%,transparent);box-shadow:var(--shadow-1);font-size:11px;font-weight:700;color:var(--tone);white-space:nowrap}.turn-timer.mine .ring{box-shadow:var(--shadow-2),0 0 0 3px var(--tone)}.turn-timer.warn{--tone: var(--mustard, #d9a21b)}.turn-timer.urgent{--tone: var(--danger)}.turn-timer.urgent .ring{animation:momo-timer-beat .5s ease-in-out infinite alternate}.turn-timer.urgent small{background:var(--danger);color:#fff}@keyframes momo-timer-beat{0%{transform:scale(1)}to{transform:scale(1.14);box-shadow:var(--shadow-2),0 0 0 6px color-mix(in srgb,var(--danger) 35%,transparent)}}@media(orientation:portrait)and (max-width:640px){.hud-bottom{padding-left:0;padding-right:0;padding-bottom:0}.hud-bottom .dock{width:100%;max-width:none;border-radius:18px 18px 0 0;border-left:0;border-right:0;border-bottom:0;padding-bottom:calc(12px + env(safe-area-inset-bottom))}.dock-actions{flex-direction:column}.dock-actions .side-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.turn-timer{top:calc(70px + env(safe-area-inset-top))}}@media(orientation:landscape)and (max-height:520px){.turn-timer{left:47%;top:calc(4px + env(safe-area-inset-top))}.turn-timer .ring{width:50px;height:50px}.turn-timer .ring strong{width:40px;height:40px;font-size:19px}}.clock-field select{margin-top:4px}.clock-field .hint{display:block;margin-top:4px;font-weight:400}.momo.shake{animation:momo-shake .45s cubic-bezier(.36,.07,.19,.97) both}@keyframes momo-shake{10%,90%{transform:translate(-2px,1px)}20%,80%{transform:translate(4px,-2px)}30%,50%,70%{transform:translate(-4px,2px)}40%,60%{transform:translate(4px,-1px)}}.scene{position:absolute;top:0;right:0;bottom:0;left:0;z-index:15;display:flex;align-items:center;justify-content:center;padding:16px;padding-top:calc(16px + env(safe-area-inset-top));padding-bottom:calc(16px + env(safe-area-inset-bottom));background:#1418286b;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);cursor:pointer;animation:momo-scrim .25s ease both}@keyframes momo-scrim{0%{opacity:0}}.scene-card{position:relative;width:min(100%,460px);max-height:100%;overflow-y:auto;display:flex;flex-direction:column;align-items:center;gap:8px;padding:22px 22px 16px;border-radius:var(--radius-l);background:var(--card);border:2px solid var(--border);box-shadow:var(--shadow-2);text-align:center;animation:momo-scene-in .4s cubic-bezier(.2,1.3,.4,1) both}@keyframes momo-scene-in{0%{transform:translateY(24px) scale(.92);opacity:0}}.scene-card h2{margin:0;font-size:22px;line-height:1.25}.scene-kicker{font-size:12px;letter-spacing:1px;color:var(--muted)}.scene-detail{margin:0;font-size:15px;line-height:1.45}.scene-detail.muted{color:var(--muted)}.scene-skip{margin-top:8px;font-size:11px;color:var(--muted);opacity:.8}.scene-emoji{font-size:64px;line-height:1;filter:drop-shadow(0 6px 10px rgba(0,0,0,.22));animation:momo-emoji-pop .6s cubic-bezier(.2,1.6,.4,1) both}@keyframes momo-emoji-pop{0%{transform:scale(.2) rotate(-20deg);opacity:0}60%{transform:scale(1.15) rotate(6deg);opacity:1}}.scene-who{margin:0;display:inline-flex;align-items:center;gap:8px;font-weight:600}.scene-who .avatar{width:28px;height:28px;font-size:13px}.scene.bonbi{align-items:flex-end;background:#3c1e6e61}.scene.bonbi .scene-card{border-color:#6b4fbb;background:color-mix(in srgb,#6b4fbb 10%,var(--card));animation-name:momo-scene-up}.scene.bonbi.form-king .scene-card{border-color:#3b1f73;background:color-mix(in srgb,#3b1f73 22%,var(--card))}.scene.bonbi.form-mini .scene-card{border-color:var(--sky);background:color-mix(in srgb,var(--sky) 10%,var(--card))}.scene.bonbi .scene-emoji{animation:momo-emoji-pop .6s cubic-bezier(.2,1.6,.4,1) both,momo-wobble 1.2s ease-in-out .6s infinite}@keyframes momo-scene-up{0%{transform:translateY(60%);opacity:0}}@keyframes momo-wobble{0%,to{transform:rotate(-6deg)}50%{transform:rotate(6deg)}}.scene.monthEvent .scene-card{padding:0;background:transparent;border:0;box-shadow:none;animation:none;perspective:900px}.scene.monthEvent .scene-skip{color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.5);opacity:.9}.flip{position:relative;width:100%;transform-style:preserve-3d;animation:momo-flip .8s cubic-bezier(.3,.9,.3,1) both}.flip-back,.flip-front{box-sizing:border-box;width:100%;border-radius:var(--radius-l);border:2px solid var(--mustard);background:color-mix(in srgb,var(--mustard) 14%,var(--card));box-shadow:var(--shadow-2);backface-visibility:hidden;-webkit-backface-visibility:hidden}.flip-back{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:72px;background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--mustard) 30%,var(--card)) 0,color-mix(in srgb,var(--mustard) 30%,var(--card)) 10px,color-mix(in srgb,var(--mustard) 16%,var(--card)) 10px,color-mix(in srgb,var(--mustard) 16%,var(--card)) 20px)}.flip-front{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;padding:22px 20px;transform:rotateY(180deg)}@keyframes momo-flip{0%{transform:rotateY(0) scale(.9)}to{transform:rotateY(180deg) scale(1)}}.scene-deltas{list-style:none;margin:6px 0 0;padding:0;width:100%;display:flex;flex-direction:column;gap:4px}.scene-deltas li{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:10px;background:color-mix(in srgb,var(--card) 70%,transparent);font-size:14px;animation:momo-row-in .4s ease .7s both}.scene-deltas .avatar{width:26px;height:26px;font-size:12px}.scene-deltas .name{flex:1;text-align:left}.scene-deltas li.gain strong{color:var(--sky)}.scene-deltas li.loss strong{color:var(--peach)}.scene.settlement .scene-card,.scene.gameOver .scene-card{width:min(100%,520px);padding-top:18px}.scene.settlement .scene-card{border-color:var(--sky)}.scene.gameOver .scene-card{border-color:var(--gold);background:color-mix(in srgb,var(--mustard) 8%,var(--card))}.scene-board{list-style:none;margin:6px 0 0;padding:0;width:100%;display:flex;flex-direction:column;gap:6px}.scene-board li{position:relative;display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:12px;border:1px solid var(--border);background:var(--card);overflow:hidden;isolation:isolate;animation:momo-row-in .4s ease both;animation-delay:calc(.25s + var(--i, 0) * .3s)}.scene-board li.champion{border-color:var(--gold);background:var(--mustard-soft)}.scene-board .rank{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--bg);font-size:13px;font-weight:700;flex:0 0 auto}.scene-board .avatar{width:30px;height:30px;font-size:13px}.scene-board .name{flex:1;text-align:left;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scene-board .figures{display:flex;flex-direction:column;align-items:flex-end;font-variant-numeric:tabular-nums;line-height:1.2}.scene-board .figures small{color:var(--muted);font-size:11px}.scene-board .bar{position:absolute;left:0;top:0;bottom:0;width:var(--w, 0%);z-index:-1;background:color-mix(in srgb,var(--seat-color, var(--sky)) 18%,transparent);transform-origin:left center;animation:momo-bar .7s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(.45s + var(--i, 0) * .3s)}@keyframes momo-bar{0%{transform:scaleX(0)}}@keyframes momo-row-in{0%{transform:translate(-14px);opacity:0}}.scene-board.reveal li{animation-delay:calc(.2s + var(--i, 0) * .5s)}.scene-board.reveal li.champion{animation:momo-champion .6s cubic-bezier(.2,1.4,.4,1) both;animation-delay:calc(.2s + var(--i, 0) * .5s)}@keyframes momo-champion{0%{transform:scale(.6);opacity:0}}.scene.arrive .scene-card{border-color:var(--peach);background:color-mix(in srgb,var(--peach) 10%,var(--card));overflow:visible}.scene-bonus{margin:0;font-size:18px;font-weight:800;color:var(--peach)}.confetti{position:absolute;left:50%;top:40%;width:10px;height:14px;border-radius:2px;background:var(--color, var(--peach));pointer-events:none;opacity:0;animation:momo-confetti 1.4s cubic-bezier(.1,.8,.3,1) both;animation-delay:var(--delay, 0ms)}@keyframes momo-confetti{0%{transform:translate(-50%,-50%) scale(.4);opacity:1}70%{opacity:1}to{transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy) + 80px)) rotate(var(--spin)) scale(1);opacity:0}}.scene.stuck.hospital{--vehicle: #e8566f}.scene.stuck.prison{--vehicle: #3b4a6b}.scene.stuck .scene-card{overflow:hidden;border-color:var(--vehicle);background:color-mix(in srgb,var(--vehicle) 8%,var(--card))}.vehicle{position:relative;width:min(100%,300px);height:84px;margin:0 auto 2px;overflow:hidden;border-bottom:3px dashed color-mix(in srgb,var(--vehicle) 50%,var(--border))}.vehicle .car{position:absolute;left:-20%;bottom:2px;font-size:56px;line-height:1;filter:drop-shadow(0 6px 8px rgba(0,0,0,.25));animation:momo-vehicle 1.8s cubic-bezier(.45,0,.3,1) both}.vehicle .passenger{position:absolute;left:58%;bottom:30px;animation:momo-passenger 1.8s ease-in-out both}.vehicle .passenger .avatar{width:34px;height:34px;font-size:16px;box-shadow:0 0 0 3px var(--seat-color)}.vehicle .siren{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 100%,color-mix(in srgb,var(--vehicle) 35%,transparent),transparent 70%);animation:momo-siren .3s steps(2) infinite}@keyframes momo-vehicle{0%{transform:translate(0)}38%,58%{transform:translate(260%)}to{transform:translate(640%)}}@keyframes momo-passenger{0%,36%{transform:translateY(0);opacity:1}48%{transform:translateY(-30px) scale(.9);opacity:1}58%{transform:translateY(-4px) scale(.6);opacity:0}to{opacity:0}}@keyframes momo-siren{to{opacity:.35}}.scene.lottery .scene-card{border-color:var(--gold);background:color-mix(in srgb,var(--gold) 12%,var(--card));overflow:hidden}.drum{position:relative;width:132px;height:132px;margin:0 auto 6px;border-radius:50%;border:5px solid color-mix(in srgb,var(--gold) 70%,var(--border));background:radial-gradient(circle at 35% 30%,#fffaf0,color-mix(in srgb,var(--gold) 30%,var(--card)) 70%);box-shadow:inset 0 -10px 18px #0000001f;animation:momo-drum 1.1s ease-in-out both}.drum .chip-ball{position:absolute;left:50%;top:50%;width:22px;height:22px;margin:-11px 0 0 -11px;border-radius:50%;background:hsl(calc(var(--i) * 60) 80% 62%);box-shadow:inset -3px -3px #00000026;animation:momo-chip 1.1s ease-in-out both;animation-delay:calc(var(--i) * -.18s)}.drum .ball{position:absolute;left:50%;top:50%;width:64px;height:64px;margin:-32px 0 0 -32px;border-radius:50%;display:grid;place-items:center;font-size:30px;font-weight:900;font-variant-numeric:tabular-nums;color:#3a2a00;background:radial-gradient(circle at 35% 30%,#fff6d6,var(--gold) 75%);box-shadow:0 8px 18px #00000040,inset -4px -6px #0000001f;animation:momo-ball .6s cubic-bezier(.34,1.56,.64,1) 1.05s both}.scene.lottery h2{animation:momo-pop .4s ease-out 1.2s both}.scene.lottery .scene-deltas.winners,.scene.lottery .scene-detail{animation:momo-fade-up .4s ease-out 1.45s both}@keyframes momo-drum{0%,to{transform:rotate(0)}25%{transform:rotate(-14deg)}75%{transform:rotate(14deg)}}@keyframes momo-chip{0%{transform:translate(-36px,24px);opacity:1}25%{transform:translate(10px,-34px) scale(.9)}50%{transform:translate(38px,18px)}75%{transform:translate(-6px,36px) scale(1.1)}92%,to{transform:translate(-30px,-10px);opacity:0}}@keyframes momo-ball{0%{transform:translateY(-90px) scale(.3);opacity:0}60%{transform:translateY(6px) scale(1.08);opacity:1}to{transform:translateY(0) scale(1);opacity:1}}@keyframes momo-pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}@keyframes momo-fade-up{0%{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}@media(orientation:landscape)and (max-height:520px){.scene{padding:8px}.scene-card{padding:12px 18px 10px;gap:4px}.vehicle{height:64px}.vehicle .car{font-size:44px}.drum{width:92px;height:92px;margin-bottom:2px}.drum .ball{width:48px;height:48px;margin:-24px 0 0 -24px;font-size:24px}.scene-card h2{font-size:18px}.scene-emoji{font-size:44px}.scene.bonbi{align-items:center}.scene-board li{padding:5px 10px;gap:8px}.scene-board .avatar{width:24px;height:24px;font-size:11px}.scene-board .figures small{display:none}.flip-front{padding:12px 16px 20px}.scene-detail{font-size:13px}}.hand{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;scrollbar-width:thin}.card-btn{flex:0 0 auto;min-width:120px;max-width:180px;min-height:0;padding:6px 10px;display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;background:var(--card-2);color:var(--text);border:1px solid var(--border);border-radius:var(--radius)}.card-btn strong{font-size:13px}.card-btn small{color:var(--muted);font-weight:400;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.card-btn.passive{border-style:dashed}.card-btn:disabled{opacity:.55}.options{display:flex;flex-wrap:wrap;gap:6px}.options>button{flex:1 1 160px}.endpoints{display:flex;flex-direction:column;gap:8px}.endpoints .go-suggested{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:0;padding:10px 14px;text-align:left}.endpoints .go-suggested small{font-weight:400;font-size:11px;opacity:.85}.endpoint-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-auto-rows:max-content;gap:6px;max-height:34vh;overflow-y:auto;overscroll-behavior:contain}.endpoint{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:0;padding:7px 10px;border:1.5px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);text-align:left;font-size:13px}.endpoint:hover,.endpoint:focus-visible{border-color:var(--primary);background:color-mix(in srgb,var(--primary) 8%,var(--bg))}.endpoint.suggested{border-color:var(--text)}.endpoint strong{display:flex;align-items:center;gap:6px}.endpoint strong em{font-style:normal;font-size:10px;padding:1px 6px;border-radius:999px;background:var(--text);color:#fff}.endpoint small{font-size:11px;color:var(--muted)}.endpoint.good small{color:var(--success)}.endpoint.bad small{color:var(--danger)}.dock-status .clock{font-variant-numeric:tabular-nums;font-weight:700;padding:2px 8px;border-radius:999px;background:color-mix(in srgb,var(--primary) 12%,transparent);color:var(--primary)}.dock-status .clock.urgent{background:color-mix(in srgb,var(--danger) 16%,transparent);color:var(--danger);animation:momo-clock-pulse .6s ease-in-out infinite alternate}@keyframes momo-clock-pulse{0%{transform:scale(1)}to{transform:scale(1.12)}}.pchip{position:relative;overflow:hidden}.pchip .turn-clock{position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(to right,var(--seat-color, var(--primary)) calc(var(--frac, 1) * 100%),transparent 0);transition:background .25s linear}.pchip .turn-clock.urgent{background:linear-gradient(to right,var(--danger) calc(var(--frac, 1) * 100%),transparent 0)}.target-picker{display:flex;flex-direction:column;gap:6px}.target-picker>button{display:flex;align-items:center;gap:8px;text-align:left}.target-picker>button small{color:var(--muted);font-weight:400;margin-left:auto}.target-picker .dot{width:12px;height:12px;border-radius:50%;flex:0 0 auto}.shop{display:flex;flex-direction:column;gap:8px}.properties{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.properties li label,.properties li>button{width:100%;display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;cursor:pointer;text-align:left}.properties li.owned label{opacity:.6;cursor:default}.properties input[type=checkbox]{width:18px;height:18px;min-height:0;padding:0;margin:0}.properties .pname{flex:1;display:flex;flex-direction:column;font-weight:600}.properties .pname small{color:var(--muted);font-weight:400;font-size:11px}.properties .price{font-weight:700;font-variant-numeric:tabular-nums}.properties .price s{color:var(--muted);font-weight:400;margin-right:4px}.deed .deed-head{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--mustard) 12%,var(--card))}.deed .deed-head .pname{flex:1;display:flex;flex-direction:column;font-weight:700;font-size:15px}.deed .deed-head .pname small{color:var(--muted);font-weight:400;font-size:11px}.deed .deed-head .price{font-weight:800;font-size:16px;font-variant-numeric:tabular-nums}.side-actions{display:flex;gap:6px;flex:0 0 auto}.side-actions>button{min-width:0;padding:8px 10px;font-size:13px;line-height:1.15}.side-actions>button small{display:block;font-size:10px;font-weight:500;opacity:.8;white-space:nowrap}.stocks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.stocks .stock>button,.stocks .stock.static{width:100%;display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;text-align:left;background:var(--card)}.market .stocks .stock>button{min-height:0;padding:5px 10px}.stocks .stock.on>button{border-color:var(--accent);box-shadow:0 0 0 2px var(--sky-soft)}.stocks .stock.on>button{border-bottom-left-radius:0;border-bottom-right-radius:0}.stocks .stock .order{border-top:0;border-top-left-radius:0;border-top-right-radius:0}.stocks .pname{flex:1;min-width:0;display:flex;flex-direction:column;font-weight:600}.stocks .pname small{color:var(--muted);font-weight:400;font-size:11px}.stocks .pname .holders{display:flex;flex-wrap:wrap;gap:2px 8px;font-weight:600}.stocks .facts{display:flex;flex-direction:column;align-items:flex-end;flex:0 0 auto;font-variant-numeric:tabular-nums;text-align:right}.stocks .facts .price{font-weight:800;font-size:15px}.stocks .facts small{font-size:11px;font-weight:700;color:var(--muted)}.stocks .facts small.up,.codex .facts small.up{color:var(--danger)}.stocks .facts small.down,.codex .facts small.down{color:var(--success)}.sparkline{flex:0 0 72px;width:72px;height:28px;overflow:visible}.sparkline polyline{fill:none;stroke:var(--danger);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.sparkline circle{fill:var(--danger)}.sparkline.down polyline{stroke:var(--success)}.sparkline.down circle{fill:var(--success)}.market .order{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--accent);border-radius:10px;background:color-mix(in srgb,var(--sky) 10%,var(--card))}.market .order>button:not(.secondary){min-height:38px;padding:6px 12px}.market .order .segmented{flex:0 0 auto}.market .order .segmented button{min-height:34px;padding:4px 14px}.market .order>button:not(.secondary){flex:1 1 100%}.market .order .error{flex:1 1 100%;margin:0}.stepper{display:flex;align-items:center;gap:6px;flex:1 1 auto}.stepper strong{min-width:48px;text-align:center;font-variant-numeric:tabular-nums}.stepper>button{min-height:34px;min-width:34px;padding:4px 10px;font-size:18px;line-height:1}.stepper>button.small{font-size:13px}.codex-list.tickets .pname{flex:0 0 auto;font-weight:700;white-space:nowrap}.codex-list.tickets .facts{flex:1 1 auto;text-align:right}.sheet-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#00000073;display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:560px;max-height:80dvh;overflow-y:auto;border-radius:var(--radius-l) var(--radius-l) 0 0;padding:14px 16px calc(16px + env(safe-area-inset-bottom));box-shadow:var(--shadow-2)}@media(min-width:900px)and (min-height:600px){.sheet-scrim{align-items:center}.sheet{border-radius:var(--radius-l);padding-bottom:16px;max-height:70dvh}}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.sheet .room-code{font-size:1.1em;letter-spacing:.1em;color:var(--text)}.log-sheet .log{display:flex;flex-direction:column;gap:4px;font-size:13px}.log-sheet .log p{margin:0}.leave-confirm{display:grid;gap:8px}.codex-sheet{max-height:88dvh;display:flex;flex-direction:column}.codex-sheet .codex{display:flex;flex-direction:column;gap:10px;min-height:0;flex:1}.codex-tabs{flex:0 0 auto}.codex-tabs button{min-height:36px;font-size:13px}.codex-body{display:flex;flex-direction:column;gap:12px;min-height:0;overflow-y:auto;overscroll-behavior:contain;font-size:13px}.codex-body>.hint{margin:0}.codex-group{display:flex;flex-direction:column;gap:6px;padding:10px;border:1px solid var(--border);border-radius:12px;background:var(--card-2)}.codex-group .group-head{display:flex;align-items:center;gap:8px}.codex-group .group-head .dot{width:10px;height:10px;border-radius:50%;background:var(--seat-color, var(--primary));flex:0 0 auto}.codex-group .group-head strong{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.codex-group .group-head .total{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums;text-align:right}.codex-group .hint{margin:0;font-size:12px}.codex-group .stats{margin:0;display:grid;grid-template-columns:auto 1fr auto 1fr;gap:4px 10px;font-size:13px}.codex-group .stats dt{color:var(--muted)}.codex-group .stats dd{margin:0;font-weight:700;font-variant-numeric:tabular-nums}.codex-group .stats dd.debt{color:var(--danger)}.codex .properties li .lot-static{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:var(--card)}.codex .properties li>button{background:var(--card)}.codex .facts{display:flex;flex-direction:column;align-items:flex-end;flex:0 0 auto;font-weight:700;font-variant-numeric:tabular-nums;text-align:right}.codex .facts small{color:var(--muted);font-weight:400;font-size:11px}.codex-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.codex-list li{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:var(--card-2)}.codex-list li.passive{border-style:dashed}.codex-list li.taken{background:var(--mustard-soft)}.codex-list .pname{flex:1;min-width:0;display:flex;flex-direction:column;font-weight:600}.codex-list .pname small{color:var(--muted);font-weight:400;font-size:11px}.rent-table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}.rent-table th,.rent-table td{padding:4px 6px;text-align:right;border-bottom:1px solid var(--border)}.rent-table th:first-child,.rent-table td:first-child{text-align:left}.rent-table th{color:var(--muted);font-weight:500}.rule-notes{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:4px;font-size:12px;line-height:1.45}.replay-bar{gap:8px;padding-bottom:8px}.replay-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px 10px;font-size:13px}.replay-transport{display:flex;align-items:center;gap:4px}.replay-transport button{min-height:34px;min-width:34px;padding:0 8px;font-size:14px}.replay-transport .play{min-width:44px;font-size:18px;padding:0 10px}.replay-pos{flex:0 0 auto;min-width:6em;display:flex;flex-direction:column;line-height:1.2;font-weight:700;font-variant-numeric:tabular-nums}.replay-pos small{color:var(--muted);font-weight:400;font-size:11px}.replay-speed{flex:0 0 auto}.replay-speed button{min-height:30px;min-width:36px;padding:0 8px;font-size:12px}.replay-perspective{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:12px}.replay-perspective select{min-height:30px;padding:2px 24px 2px 8px;font-size:13px}.replay-seek{width:100%;margin:0;accent-color:var(--primary);min-height:0;height:22px}@media(max-height:500px){.replay-bar{padding-top:6px;padding-bottom:6px}.replay-seek{height:16px}}@media(max-height:500px){.codex-sheet{max-height:96dvh;padding-top:8px;gap:8px}.codex-sheet .sheet-head h2{font-size:16px;margin:0}.codex-sheet .codex{gap:6px}.codex-tabs button{min-height:30px}.codex-group{padding:8px;gap:4px}.codex .properties li label,.codex .properties li>button,.codex .properties li .lot-static,.codex-list li{padding:5px 10px}}.hud-corner{display:flex;flex-direction:column;gap:6px}@media(min-width:600px){.hud-corner{flex-direction:row}}.player-detail{display:flex;flex-direction:column;gap:10px}.player-detail .who{flex:1;min-width:0;display:flex;flex-direction:column}.player-detail .who .name{font-weight:700}.player-detail .who small{color:var(--muted);font-size:11px}.player-detail .stats{margin:0;display:grid;grid-template-columns:auto 1fr auto 1fr;gap:4px 10px;font-size:13px}.player-detail .stats dt{color:var(--muted)}.player-detail .stats dd{margin:0;font-weight:700;font-variant-numeric:tabular-nums}.player-detail .stats dd.debt{color:var(--danger)}.player-detail .heroes{margin:0;display:flex;flex-wrap:wrap;gap:4px;font-size:12px}.hero-badge{padding:1px 6px;border-radius:999px;background:var(--mustard-soft);color:#8a5a0b;font-weight:600}@media(prefers-color-scheme:dark){.hero-badge{color:#f3cd6a}}.avatar{position:relative;width:36px;height:36px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;color:#fff;font-weight:800;font-size:16px;box-shadow:inset 0 -3px #0000002e,var(--shadow-1);border:2px solid #fff}.avatar.zodiac{font-size:22px;line-height:1}.pchip .avatar.zodiac,.ranking .avatar.zodiac,.scene-board .avatar.zodiac,.scene-who .avatar.zodiac,.scene-deltas .avatar.zodiac{font-size:19px}.avatar .bot-chip{position:absolute;right:-6px;bottom:-4px;font-size:8px;line-height:1;padding:2px 3px;border-radius:4px;background:var(--text);color:var(--card);letter-spacing:.5px}.overlay .dialog.result{width:min(100%,440px);max-height:86dvh;overflow-y:auto}.ranking{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.ranking li{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:10px}.ranking li.winner{border-color:var(--gold);background:var(--mustard-soft)}.ranking .rank{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--bg);font-size:12px;font-weight:700}.ranking .avatar{width:32px;height:32px;font-size:14px}.ranking .name{flex:1;font-weight:600}.ranking .assets{display:flex;flex-direction:column;align-items:flex-end;font-weight:700;font-variant-numeric:tabular-nums}.ranking .assets small{color:var(--muted);font-weight:400;font-size:11px}@media(orientation:landscape)and (max-height:520px){.chip,.pchip{font-size:12px}.pchip .avatar{width:26px;height:26px;font-size:12px}.pchip-text .money{display:none}.hud-bottom{left:auto;top:calc(56px + env(safe-area-inset-top));width:min(48%,420px);align-items:stretch;justify-content:flex-end}.ticker{max-width:100%}.dock{width:100%;max-height:none;min-height:0;flex:0 1 auto;padding:6px 10px 8px}.dock-actions .big-action{font-size:16px;padding:8px 14px}.endpoints .go-suggested{padding:7px 12px;font-size:15px}.endpoint-list{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));max-height:44vh;gap:4px}.endpoint{padding:5px 8px;font-size:12px}.sheet{max-width:640px}}@media(prefers-reduced-motion:reduce){.card-play,.card-play .card-face,.pchip.active,.dice.rolling .die,.dice.settled .die,.banner,.banner.turn,.banner.market,.turn-timer.urgent .ring,.momo.shake,.scene,.scene-card,.scene-emoji,.scene-deltas li,.scene-board li,.scene-board .bar,.confetti{animation:none}.flip{animation:none;transform:rotateY(180deg)}.drum,.drum .ball,.scene.lottery h2,.scene.lottery .scene-deltas.winners,.scene.lottery .scene-detail{animation:none}.drum .chip-ball{display:none}}.uno-table{display:flex;flex-direction:column;align-items:center;gap:12px}.uno-piles{display:flex;gap:24px;align-items:center}.uno-pile{display:flex;flex-direction:column;align-items:center;gap:4px;font-size:12px;color:var(--muted)}.uno-card{display:grid;place-items:center;width:58px;height:84px;border-radius:10px;border:2px solid rgba(0,0,0,.25);box-shadow:0 2px 4px #00000040;font-size:22px;font-weight:700;color:#fff;cursor:default;-webkit-user-select:none;user-select:none}.uno-card.red{background:var(--uno-red, #d64545)}.uno-card.yellow{background:var(--uno-yellow, #e8b52a);color:#4a3400}.uno-card.green{background:var(--uno-green, #3f9e4d)}.uno-card.blue{background:var(--uno-blue, #3b6fd0)}.uno-card.wild{background:#1c1c22;border-color:#444}.uno-card.wild-face{color:#fff;font-size:26px}.uno-card.back{background:repeating-linear-gradient(45deg,#2b2b33,#2b2b33 6px,#383843 6px,#383843 12px);border-color:#555}.uno-fan{list-style:none;display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin:0;padding:0}.uno-fan button.uno-card{cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}.uno-fan button.uno-card.playable:hover{transform:translateY(-6px);box-shadow:0 6px 12px #0000004d}.uno-fan button.uno-card:disabled{opacity:.55;cursor:default;transform:none}.uno-hand{min-height:96px;display:flex;align-items:center;justify-content:center}.uno-color-wheel{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;padding:8px}.uno-color{height:64px;border-radius:var(--radius);border:0;font-size:16px;font-weight:700;color:#fff}.uno-color.red{background:var(--uno-red, #d64545)}.uno-color.yellow{background:var(--uno-yellow, #e8b52a);color:#3a2a00}.uno-color.green{background:var(--uno-green, #3f9e4d)}.uno-color.blue{background:var(--uno-blue, #3b6fd0)}.uno-header .seats{flex-wrap:wrap}.reversi-screen{display:flex;flex-direction:column;gap:12px;align-items:stretch}.reversi-seats{display:flex;gap:8px}.reversi-seats .seat-card{flex:1;display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius)}.reversi-seats .seat-card.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.reversi-seats .count{margin-left:auto;font-weight:700;font-variant-numeric:tabular-nums}.reversi-board-wrap{align-self:center;width:100%;max-width:420px}.reversi-board{display:grid;grid-template-columns:repeat(8,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:8px;overflow:hidden;aspect-ratio:1}.reversi-cell{aspect-ratio:1;min-width:0;padding:0;background:#14532d;border:none;border-radius:0;display:grid;place-items:center}.reversi-cell.legal:after{content:"";width:26%;height:26%;border-radius:50%;background:#ffffff59}.reversi-disc{width:84%;height:84%;border-radius:50%;box-shadow:0 2px 4px #0000004d}.reversi-disc.last:after{content:"";display:block;width:100%;height:100%;border-radius:50%;border:3px solid var(--accent, #2f9fe6)}.reversi-disc.black{background:radial-gradient(circle at 35% 35%,#4b5563,#111827)}.reversi-disc.white{background:radial-gradient(circle at 35% 35%,#fff,#d1d5db)}.reversi-footer{display:flex;flex-direction:column;gap:10px;align-items:center}.confirm-row{display:flex;gap:8px;align-items:center;font-size:14px}.reversi-board-wrap{flex-shrink:0}.jq-screen{display:flex;flex-direction:column;gap:6px;align-items:stretch;flex:1;min-height:0}.jq-seats{display:flex;gap:6px;flex:none}.jq-seats .seat-card{flex:1;display:flex;align-items:center;gap:6px;padding:5px 8px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius)}.jq-seats .seat-card.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.jq-seats .jq-count{margin-left:auto;color:var(--muted);font-size:11px}.jq-board-wrap{flex:1;min-height:0;align-self:center;width:100%;max-width:320px;display:flex}@media(orientation:landscape){.jq-board-wrap{max-width:240px}@media(max-height:500px){.jq-screen{height:auto}.jq-board-wrap{flex:none}.jq-board{flex:none;aspect-ratio:5 / 13;height:auto}}}.jq-board{flex:1;display:grid;grid-template-rows:repeat(13,1fr);gap:1px;background:#3f2d20;border:1px solid #3f2d20;border-radius:8px;overflow:hidden;padding:1px}.jq-cell{min-width:0;min-height:0;padding:0;position:relative;display:grid;place-items:center;background:#d9c39a;border:none;border-radius:3px}.jq-cell.rail{background:#c8b185}.jq-cell.camp{background:#d6c29a}.jq-cell.camp:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,transparent 44%,rgba(122,92,60,.55) 44% 56%,transparent 56%),linear-gradient(45deg,transparent 44%,rgba(122,92,60,.55) 44% 56%,transparent 56%);opacity:.6;pointer-events:none}.jq-cell.hq{background:#cdb98d}.jq-cell.frontline{background:#8a9a6b}.jq-cell.mountain{background:#6b7a52}.jq-camp-mark,.jq-hq-mark,.jq-mountain-mark,.jq-frontline-mark{position:absolute;top:1px;right:3px;font-size:8px;color:#7a5c3c;opacity:.85;pointer-events:none}.jq-cell.mountain .jq-mountain-mark,.jq-cell.frontline .jq-frontline-mark{color:#eef2e2}.jq-cell.dest:after{content:"";width:10px;height:10px;border-radius:50%;background:#2f9fe68c;position:absolute}.jq-cell.sel{background:#bfdbfe}.jq-piece{width:86%;height:86%;border-radius:7px;display:grid;place-items:center;font-size:clamp(10px,3vw,14px);font-weight:700;border:1px solid currentColor;background:#fdf6e3;position:relative}.jq-cell.red .jq-piece{color:#b91c1c}.jq-cell.black .jq-piece{color:#111827}.jq-cell.hidden .jq-piece{background:#8d6e4a;color:#f5e6c8;border-color:#6d5338}.jq-cell.hidden .jq-piece.back{background:repeating-linear-gradient(45deg,#8d6e4a 0,#8d6e4a 4px,#7a5c3c 4px,#7a5c3c 8px);border:1px solid #6d5338;border-radius:6px}.jq-lock{position:absolute;bottom:-2px;right:-2px;font-size:10px}.jq-footer{display:flex;flex-direction:column;gap:4px;align-items:center;flex:none}.jq-footer .hint{font-size:12px;margin:0}@media(prefers-color-scheme:dark){.jq-board{background:#241a12;border-color:#241a12}.jq-cell{background:#6b5434}.jq-cell.rail{background:#5d4a2e}.jq-cell.camp{background:#665233}.jq-cell.hq{background:#5f4d30}.jq-cell.frontline{background:#46522f}.jq-cell.mountain{background:#38431f}.jq-cell.sel{background:#2f4a6e}.jq-camp-mark,.jq-hq-mark{color:#c8b185}.jq-cell.mountain .jq-mountain-mark,.jq-cell.frontline .jq-frontline-mark{color:#c8d3a8}.jq-piece{background:#e8dfc8}.jq-cell.hidden .jq-piece{background:#4a3a28;color:#d8c9a8;border-color:#33281b}.jq-cell.hidden .jq-piece.back{background:repeating-linear-gradient(45deg,#4a3a28 0,#4a3a28 4px,#3d2f20 4px,#3d2f20 8px);border-color:#33281b}}.jq-rules{margin:0;display:grid;gap:10px}.jq-rules dt{font-weight:700;color:var(--accent)}.jq-rules dd{margin:2px 0 0;color:var(--text);font-size:14px;line-height:1.6}.llk-screen{display:flex;flex-direction:column;gap:10px;align-items:stretch}.llk-seats{display:flex;gap:6px;flex-wrap:wrap}.llk-seat{display:flex;align-items:center;gap:6px;padding:5px 10px;background:var(--card);border:1px solid var(--border);border-radius:999px;font-size:13px}.llk-seat.active{border-color:var(--seat-color);box-shadow:0 0 0 1px var(--seat-color)}.llk-seat.offline .name{color:var(--muted)}.llk-dot{width:12px;height:12px;border-radius:50%;background:var(--seat-color)}.llk-score{font-variant-numeric:tabular-nums}.llk-board-wrap{position:relative;align-self:center;width:100%;max-width:440px}.llk-board{display:grid;gap:3px}.llk-cell{aspect-ratio:1;min-width:0;padding:0;font-size:clamp(14px,4.4vw,26px);display:grid;place-items:center;background:var(--card);border:1px solid var(--border);border-radius:8px}.llk-cell.gone{background:transparent;border-color:transparent}.llk-cell.picked{outline:2px solid var(--accent);outline-offset:-2px}.llk-lines{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.llk-footer{display:flex;flex-direction:column;gap:8px;align-items:center}.llk-board-wrap{flex-shrink:0}.tiaoqi-screen{display:flex;flex-direction:column;gap:10px;align-items:stretch}.tiaoqi-seats{display:flex;gap:6px;flex-wrap:wrap}.tiaoqi-seat{display:flex;align-items:center;gap:6px;padding:5px 10px;background:var(--card);border:1px solid var(--border);border-radius:999px;font-size:13px}.tiaoqi-seat.active{border-color:var(--seat-color);box-shadow:0 0 0 1px var(--seat-color)}.tiaoqi-seat.offline .name{color:var(--muted)}.tiaoqi-dot{width:12px;height:12px;border-radius:50%;background:var(--seat-color)}.tiaoqi-progress{font-weight:700;font-variant-numeric:tabular-nums}.tiaoqi-board-wrap{align-self:center;width:100%;max-width:370px}.tiaoqi-board{width:100%;height:auto;display:block;touch-action:manipulation}.tiaoqi-hole{fill:color-mix(in srgb,var(--foreground) 14%,transparent)}.tiaoqi-target circle{fill:none;stroke:var(--accent);stroke-width:1.6;stroke-dasharray:3 2}.tiaoqi-target-hole{fill:none;stroke:var(--accent);stroke-width:2;cursor:pointer}.tiaoqi-piece{cursor:pointer}.tiaoqi-selected{fill:none;stroke:#fff;stroke-width:2}.tiaoqi-footer{display:flex;flex-direction:column;gap:8px;align-items:center}.tiaoqi-hop{fill:none;stroke:var(--accent, #2f9fe6);stroke-width:3;stroke-linejoin:round;stroke-linecap:round;opacity:.8;pointer-events:none}.tiaoqi-board-wrap{flex-shrink:0}.xq-screen{display:flex;flex-direction:column;gap:10px;align-items:stretch}.xq-seats{display:flex;gap:8px}.xq-seats .seat-card{flex:1;display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius)}.xq-seats .seat-card.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.stone-dot.red{background:#dc2626}.stone-dot.black{background:#1f2937}.xq-board-wrap{align-self:center;width:100%;max-width:340px}.xq-board{display:grid;gap:1px;background:var(--border);border:1px solid var(--border);border-radius:6px;overflow:hidden;aspect-ratio:9 / 10}.xq-cell{aspect-ratio:1;min-width:0;padding:0;display:grid;place-items:center;background:#f3e5c3;border:none;border-radius:0}@media(prefers-color-scheme:dark){.xq-cell{background:#5c4a2e}.xq-cell.river{background:#53422a}.xq-cell.sel{background:#2f4a6e}.xq-piece.red{color:#fca5a5;background:#3a2626}.xq-piece.black{color:#e5e7eb;background:#2b2f3a}}.xq-cell.river{background:#eadfc4;color:var(--muted);font-size:9px}.xq-cell.sel{background:#bfdbfe}.xq-cell.target:after{content:"";position:absolute;width:26%;height:26%;border-radius:50%;background:#2563eb66}.xq-cell.target{position:relative}.xq-piece{width:82%;height:82%;border-radius:50%;display:grid;place-items:center;font-size:clamp(12px,3.4vw,20px);font-weight:700;border:1px solid currentColor}.xq-piece.red{color:#b91c1c;background:#fff7ed}.xq-piece.black{color:#111827;background:#f9fafb}.xq-footer{display:flex;flex-direction:column;gap:8px;align-items:center}.xq-board-wrap{flex-shrink:0}.momo-map{--safe-left: .12;--safe-top: .16;--safe-right: .88;--safe-bottom: .62;--fit-left: 0;--fit-top: .1;--fit-right: 1;--fit-bottom: .78;position:relative;aspect-ratio:var(--map-ratio, 1000 / 800);border:1px solid var(--border);border-radius:var(--radius-l);overflow:hidden;background:var(--sea-1);box-shadow:var(--shadow-1)}.momo-map svg{position:absolute;top:0;right:0;bottom:0;left:0;display:block;width:100%;height:100%;touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab}.momo-map svg:active{cursor:grabbing}.momo-map .building .level-tag{font-size:9px;font-weight:800;text-anchor:middle;fill:#1c140c;stroke:#fff8ee;stroke-width:2.4;paint-order:stroke;pointer-events:none}.momo-map .sea-top{stop-color:var(--sea-1)}.momo-map .sea-bottom{stop-color:var(--sea-2)}.momo-map .land{fill:var(--land);stroke:var(--coast);stroke-width:2.5;stroke-linejoin:round}.momo-map .river{fill:none;stroke:var(--river);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;opacity:.9}.momo-map .rails .bed{stroke:var(--rail-bed);stroke-width:calc(6 * var(--rail, 1));stroke-linecap:round}.momo-map .rails .tie{stroke:var(--rail-tie);stroke-width:calc(2.6 * var(--rail, 1));stroke-dasharray:calc(6 * var(--rail, 1)) calc(6 * var(--rail, 1));stroke-linecap:butt}.momo-map .city use{color:var(--badge-ink);pointer-events:none}.momo-map .city .mark-shadow{fill:#0000002e}.momo-map .city .mark-disc{fill:var(--badge-bg);stroke:var(--badge-ink);stroke-width:1.4}.momo-map .city.owned .mark-disc{stroke:var(--owner, var(--badge-ink));stroke-width:2}.momo-map .city.dest .mark-disc{stroke:var(--peach);stroke-width:2}.momo-map .label{font-size:11px;font-weight:700;text-anchor:middle;fill:var(--badge-ink);stroke:var(--land);stroke-width:3;paint-order:stroke;pointer-events:none}.momo-map .filler-mark{font-size:8px;font-weight:800;text-anchor:middle;fill:#fff;pointer-events:none}.momo-map .filler-label{font-size:8px;text-anchor:middle;fill:var(--badge-ink);stroke:var(--land);stroke-width:2;paint-order:stroke;pointer-events:none}.momo-map .streets .street{stroke-width:calc(28 * var(--rail, 1));stroke-linecap:round;opacity:.35;pointer-events:none}.momo-map .streets .street-label{font-size:9px;font-weight:700;text-anchor:middle;dominant-baseline:middle;stroke:var(--land);stroke-width:2.5;paint-order:stroke;opacity:.95;pointer-events:none}.momo-map .stop-house .plinth{fill:#00000029}.momo-map .stop-house .wall{fill:#fff;stroke:var(--badge-ink);stroke-width:1.3}.momo-map .stop-house.hospital .roof{fill:#e8566f;stroke:var(--badge-ink);stroke-width:1;stroke-linejoin:round}.momo-map .stop-house .cross{fill:#e8566f}.momo-map .stop-house.prison .wall{fill:#8c96a8}.momo-map .stop-house.prison .roof{fill:#3b4a6b;stroke:var(--badge-ink);stroke-width:1}.momo-map .stop-house .window{fill:#1f2a44}.momo-map .stop-house .bar{stroke:#d7dce6;stroke-width:1}.momo-map .stop-house .door{fill:#3b4a6b}.momo-map .stop-house.lottery .wall{fill:#fff4d6}.momo-map .stop-house.lottery .awning{fill:#e8566f;stroke:var(--badge-ink);stroke-width:1;stroke-linejoin:round}.momo-map .stop-house.lottery .stripe{fill:#fff;opacity:.9}.momo-map .stop-house.lottery .window{fill:#2b3a5c}.momo-map .stop-house.lottery .ball{fill:var(--mustard);stroke:#fff;stroke-width:.6}.momo-map .stop-house.lottery .counter{fill:#c98a3a}.momo-map .card-mark .plinth{fill:#00000024}.momo-map .card-mark .paper{fill:#fff;stroke:var(--badge-ink);stroke-width:1.2}.momo-map .card-mark .face{stroke:none}.momo-map .stop-label{font-weight:700}.momo-map .hero-mark{fill:var(--mustard);stroke:var(--badge-bg);stroke-width:1.5;pointer-events:none}.momo-map .hero-star{font-size:7px;text-anchor:middle;fill:#fff;pointer-events:none}.momo-map .dest-label{font-size:12px;font-weight:800;text-anchor:start;fill:var(--peach);stroke:var(--land);stroke-width:3;paint-order:stroke;pointer-events:none}.momo-map .dest-ring{fill:var(--peach-soft);stroke:var(--peach);stroke-width:2.5;stroke-dasharray:6 4;animation:momo-spin 12s linear infinite;transform-box:fill-box;transform-origin:center;pointer-events:none}@keyframes momo-spin{to{transform:rotate(360deg)}}.momo-map .dest-flag .pole{stroke:var(--badge-ink);stroke-width:2;stroke-linecap:round}.momo-map .dest-flag .cloth{fill:var(--peach);stroke:#fff;stroke-width:1.2;stroke-linejoin:round}.momo-map .tile .lip{fill:color-mix(in srgb,var(--coast) 70%,var(--badge-ink) 20%);stroke:none}.momo-map .tile .top{fill:color-mix(in srgb,var(--coast) 55%,var(--land));stroke:var(--badge-ink);stroke-width:1.2;stroke-dasharray:3 2.2;stroke-linejoin:round}.momo-map .tile.lot.owned .lip{fill:color-mix(in srgb,var(--owner, var(--coast)) 55%,#000 20%)}.momo-map .tile.lot.owned .top{fill:color-mix(in srgb,var(--owner, var(--coast)) 55%,var(--land));stroke:var(--owner, var(--badge-ink));stroke-width:1.8;stroke-dasharray:none}.momo-map .tile.stop .top{fill:color-mix(in srgb,var(--coast) 40%,#e8e4da);stroke-dasharray:none;stroke-width:1.4}.momo-map .tile .band{opacity:.95;pointer-events:none}.momo-map .building .face,.momo-map .building .roof{stroke:#1c140c;stroke-width:1.4;stroke-linejoin:round;paint-order:stroke}.momo-map .building .floors{fill:none;stroke:#ffffffd9;stroke-width:.8;stroke-linecap:round;pointer-events:none}.momo-map .crown{font-size:11px;text-anchor:middle;pointer-events:none}.momo-map .town-crown{font-size:8px}.momo-map .option{cursor:pointer}.momo-map .tap{fill:transparent}.momo-map .option-ring{fill:var(--sky-soft);stroke:var(--sky);stroke-width:3;animation:momo-pulse 1s ease-in-out infinite alternate;pointer-events:none}@keyframes momo-pulse{0%{stroke-width:2;opacity:.6}to{stroke-width:5;opacity:1}}.momo-map .option-ring.suggested{fill:color-mix(in srgb,var(--sky) 35%,#fff);stroke:var(--text);stroke-width:4}.momo-map .routes{pointer-events:none}.momo-map .route{fill:none;stroke:var(--route, var(--sky));stroke-width:7;stroke-linecap:round;stroke-linejoin:round;opacity:.35}.momo-map .route.emphasis{opacity:.95;stroke-width:8;stroke-dasharray:14 10;animation:momo-march .8s linear infinite}@keyframes momo-march{to{stroke-dashoffset:-24}}.momo-map .tokens{pointer-events:none}.momo-map .token .hull{stroke:#fff;stroke-width:2;stroke-linejoin:round}.momo-map .token.me .hull{stroke-width:3}.momo-map .token .wheel{fill:#2d2a32;stroke:#fff;stroke-width:1.2}.momo-map .token .window{fill:#fff7ee;stroke:#00000040;stroke-width:.8}.momo-map .token .stripe{fill:#ffffffbf}.momo-map .token .lamp{fill:var(--mustard);stroke:#fff;stroke-width:.6}.momo-map .token text.rider{font-size:11px;fill:var(--badge-ink)}.momo-map .token text.rider.zodiac{font-size:11.5px}.momo-map .token .halo{fill:none;stroke-width:3;opacity:.7;animation:momo-breathe 1.4s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:center}@keyframes momo-breathe{0%{transform:scale(.9);opacity:.35}to{transform:scale(1.15);opacity:.9}}.momo-map .token text{font-size:13px;font-weight:800;fill:#fff;text-anchor:middle;pointer-events:none}.momo-map .token text.bonbi{font-size:15px;text-anchor:start}.momo-map .token text.stuck-mark{font-size:13px;text-anchor:end;pointer-events:none}.momo-map .token{transform-box:view-box;transform-origin:0 0;transition:opacity .2s ease}.momo-map .token.moving{transition:transform .22s cubic-bezier(.3,.6,.4,1),opacity .2s ease}.momo-map .token.obscured{opacity:.28;pointer-events:none}.momo-map .lot-buildings{pointer-events:none}.momo-map .token .shadow{fill:#00000038;opacity:0;transition:opacity .15s}.momo-map .token .lift{transform-box:fill-box;transform-origin:center;transition:transform .15s}.momo-map .token.moving .shadow{opacity:1}.momo-map .token.moving .lift{transform:translateY(-7px) scale(1.08)}.momo-map .token.moving .halo{animation:none;opacity:.25}.momo-map .token.moving .chassis{animation:momo-chug .22s ease-in-out infinite alternate}@keyframes momo-chug{0%{translate:0 -.8px}to{translate:0 .8px}}.momo-map .pulse .ring{fill:none;stroke:var(--sky);stroke-width:4;transform-box:fill-box;transform-origin:center;animation:momo-pulse-out .55s ease-out forwards;pointer-events:none}.momo-map .pulse.card .ring{stroke:var(--mustard)}.momo-map .pulse.city .ring{stroke:var(--badge-ink)}.momo-map .pulse.arrive .ring{stroke:var(--peach);stroke-width:6;animation-duration:.9s}.momo-map .pulse.arrive .ring.late{stroke:var(--mustard);animation-delay:.25s}@keyframes momo-pulse-out{0%{transform:scale(.6);opacity:.9}to{transform:scale(2.2);opacity:0}}.momo-map .floats{pointer-events:none}.momo-map .float{animation:momo-float 1.1s ease-out forwards}.momo-map .float text{font-size:15px;font-weight:800;text-anchor:middle;fill:var(--text);stroke:var(--card);stroke-width:3.5;paint-order:stroke;stroke-linejoin:round}.momo-map .float.gain text{fill:#1f9d55}.momo-map .float.loss text{fill:var(--peach)}@keyframes momo-float{0%{transform:translateY(8px);opacity:0}15%{transform:translateY(0);opacity:1}70%{opacity:1}to{transform:translateY(-26px);opacity:0}}.momo-map .tile.claiming .top{transform-box:fill-box;transform-origin:center;animation:momo-tile-in .55s cubic-bezier(.2,1.4,.4,1) both}@keyframes momo-tile-in{0%{transform:scale(.2);opacity:0}to{transform:none;opacity:1}}.momo-map .building.constructing .drop-in{transform-box:fill-box;transform-origin:bottom center;animation:momo-drop-in 2.4s cubic-bezier(.2,.7,.2,1) both}.momo-map .building.constructing .base{transform-box:fill-box;transform-origin:bottom center;animation:momo-impact 2.4s ease-out both}@keyframes momo-drop-in{0%{transform:translateY(-150px) scale(1.45);opacity:0}18%{opacity:1}62%{transform:translateY(0) scale(1)}74%{transform:scaleY(.72) scaleX(1.18)}86%{transform:scaleY(1.12) scaleX(.94)}to{transform:none;opacity:1}}@keyframes momo-impact{0%,52%{transform:none}64%{transform:scaleY(.82) scaleX(1.1)}to{transform:none}}.momo-map .building.collapsing{transform-box:fill-box;transform-origin:bottom center;animation:momo-collapse 1s ease-in both}@keyframes momo-collapse{0%{transform:none}14%{transform:rotate(-4deg)}28%{transform:rotate(4deg)}42%{transform:rotate(-2.5deg)}55%{transform:rotate(0) scaleY(1.02);opacity:1}to{transform:scaleY(.03) scaleX(1.25);opacity:.5}}.momo-map .building.hopping{transform-box:fill-box;transform-origin:bottom center;animation:momo-hop .6s cubic-bezier(.3,1.3,.5,1) both}@keyframes momo-hop{0%{transform:none}35%{transform:translateY(-6px) scaleY(1.06)}70%{transform:translateY(0) scaleY(.92) scaleX(1.05)}to{transform:none}}.momo-map .lot-fx,.momo-map .coins{pointer-events:none}.momo-map .lotfx .ring{fill:none;stroke:var(--owner);stroke-width:2.5;transform-box:fill-box;transform-origin:center;animation:momo-claim-ring .9s ease-out both}@keyframes momo-claim-ring{0%{transform:scale(.25);opacity:.95}to{transform:scale(2.4);opacity:0}}.momo-map .lotfx .drop{animation:momo-flag-drop .7s cubic-bezier(.3,1.5,.5,1) both;animation-delay:.1s}.momo-map .lotfx.transfer .drop{animation-delay:.3s}.momo-map .lotfx .claim-flag .pole{stroke:var(--badge-ink);stroke-width:.9;stroke-linecap:round}.momo-map .lotfx .claim-flag .cloth{stroke:var(--badge-ink);stroke-width:.5;stroke-linejoin:round}@keyframes momo-flag-drop{0%{transform:translateY(-26px);opacity:0}to{transform:none;opacity:1}}.momo-map .lotfx .scaffold{fill:color-mix(in srgb,var(--owner, var(--badge-ink)) 22%,transparent);stroke:var(--owner, var(--badge-ink));stroke-width:2.4;stroke-dasharray:4 2.4;opacity:.95;animation:momo-scaffold 2.4s ease-in both}@keyframes momo-scaffold{0%,55%{opacity:.95}to{opacity:0}}.momo-map .lotfx .dust{fill:color-mix(in srgb,var(--badge-ink) 45%,var(--land));opacity:0;animation:momo-dust .85s ease-out both}@keyframes momo-dust{0%{transform:translate(0) scale(.35);opacity:.95}to{transform:translate(var(--dx),var(--dy)) scale(2.4);opacity:0}}.momo-map .lotfx.build .ring{stroke-width:3.2}.momo-map .lotfx .debris{stroke:var(--badge-ink);stroke-width:.4;opacity:0;animation:momo-debris .75s cubic-bezier(.3,0,.8,.4) both}@keyframes momo-debris{0%{transform:translateY(-4px) rotate(0);opacity:1}to{transform:translate(var(--dx),var(--dy)) rotate(var(--rot));opacity:0}}.momo-map .lotfx .crown-drop{font-size:11px;text-anchor:middle;transform-box:fill-box;transform-origin:center;animation:momo-crown-drop .8s cubic-bezier(.3,1.5,.5,1) both}.momo-map .lotfx .crown-drop.town-crown{font-size:8px}@keyframes momo-crown-drop{0%{transform:translateY(-30px) scale(1.8);opacity:0}to{transform:none;opacity:1}}.momo-map .lotfx .star{font-size:7px;text-anchor:middle;fill:var(--mustard);stroke:var(--badge-ink);stroke-width:.3;paint-order:stroke;opacity:0;animation:momo-star .7s ease-out both}@keyframes momo-star{0%{transform:translate(0) scale(.3);opacity:0}30%{opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(1);opacity:0}}.momo-map .coin{opacity:0;animation:momo-coin .62s ease-in both}.momo-map .coin .face{fill:var(--mustard);stroke:var(--badge-ink);stroke-width:.8}.momo-map .coin .rim{fill:none;stroke:#ffffffbf;stroke-width:.9}@keyframes momo-coin{0%{transform:translate(0) scale(.6);opacity:0}12%{opacity:1;transform:translate(calc(var(--dx) * .12),calc(var(--dy) * .12 - 18px)) scale(1)}50%{transform:translate(calc(var(--dx) * .5),calc(var(--dy) * .5 - 40px)) scale(1.1)}88%{opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(.7);opacity:0}}.momo-map .token.receiving .lift{animation:momo-receive .5s ease-out both;animation-delay:.55s}@keyframes momo-receive{0%,to{translate:0 0}45%{translate:0 -6px}75%{translate:0 1px}}.map-tools{position:absolute;right:calc(8px + env(safe-area-inset-right));top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:6px}@media(orientation:landscape)and (max-height:520px){.map-tools{right:auto;left:calc(8px + env(safe-area-inset-left));top:auto;bottom:calc(8px + env(safe-area-inset-bottom));transform:none;flex-direction:row}.momo-map{--safe-left: .14;--safe-top: .2;--safe-right: .5;--safe-bottom: .82;--fit-top: .13;--fit-bottom: .9}}.map-tools button{width:44px;height:44px;min-height:0;padding:0;border-radius:50%;background:color-mix(in srgb,var(--card) 88%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:var(--shadow-1);font-size:12px}@media(prefers-reduced-motion:reduce){.momo-map .world.glide,.momo-map .token,.momo-map .token .lift,.momo-map .token .shadow{transition:none}.momo-map .float{animation-duration:.5s}.momo-map .dest-ring,.momo-map .token .halo,.momo-map .token.moving .chassis,.momo-map .option-ring,.momo-map .tile.claiming .top,.momo-map .building.constructing .drop-in,.momo-map .building.constructing .base,.momo-map .building.hopping,.momo-map .lotfx .drop,.momo-map .lotfx .crown-drop,.momo-map .token.receiving .lift{animation:none}.momo-map .building.collapsing,.momo-map .lotfx .ring,.momo-map .lotfx .scaffold,.momo-map .lotfx .dust,.momo-map .lotfx .debris,.momo-map .lotfx .star,.momo-map .coin{animation-duration:.3s;animation-delay:0s}}
