:root{--tg-bg: #14161c;--tg-text: #e9e9ee;--tg-hint: #8a8d96;--tg-link: #6ab3f3;--tg-button: #5b8def;--tg-button-text: #ffffff;--tg-secondary-bg: #1c1f29;--danger: #e0524b;--ok: #46b96a;--radius: 14px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--tg-bg);color:var(--tg-text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px;overscroll-behavior:none}.screen{display:flex;flex-direction:column;gap:16px;max-width:520px;margin:0 auto;padding:calc(12px + env(safe-area-inset-top)) 16px calc(16px + env(safe-area-inset-bottom));min-height:100%}.screen.center{justify-content:center;align-items:center;text-align:center}h1{font-size:28px;margin:0}h2{font-size:20px;margin:0}h3{font-size:15px;color:var(--tg-hint);margin:4px 0;text-transform:uppercase;letter-spacing:.04em}.hint{color:var(--tg-hint);font-size:14px;margin:4px 0}.hint.ok{color:var(--ok)}.error{color:var(--danger);font-size:14px}.error-banner{background:color-mix(in srgb,var(--danger) 22%,transparent);border:1px solid var(--danger);color:var(--tg-text);padding:8px 12px;border-radius:var(--radius);font-size:14px}.btn{display:block;width:100%;padding:14px;border:none;border-radius:var(--radius);background:var(--tg-secondary-bg);color:var(--tg-text);font-size:16px;font-weight:600;cursor:pointer}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45}.btn.primary{background:var(--tg-button);color:var(--tg-button-text)}.btn.ghost-btn{background:transparent;border:1px solid var(--tg-secondary-bg)}.btn-stack{display:flex;flex-direction:column;gap:10px}.ghost{background:none;border:none;color:var(--tg-hint);font-size:20px;cursor:pointer}.hero{text-align:center;padding:8px 0}.greet{color:var(--tg-hint);margin:4px 0 0}.join-row{display:flex;gap:8px}.join-row .btn{flex:1}.code-input{width:110px;text-align:center;font-size:20px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;padding:12px;border-radius:var(--radius);border:1px solid var(--tg-secondary-bg);background:var(--tg-secondary-bg);color:var(--tg-text)}.active-games{display:flex;flex-direction:column;gap:8px}.game-card{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:var(--radius);background:var(--tg-secondary-bg);border:none;color:var(--tg-text);cursor:pointer;text-align:left}.game-card .code{font-weight:700;font-family:monospace}.game-card .host{margin-left:auto;color:var(--tg-hint);font-size:13px}.stats-peek{margin-top:auto;text-align:center;color:var(--tg-hint);font-size:14px}.topbar{display:flex;align-items:center;gap:12px}.back{background:none;border:none;color:var(--tg-link);font-size:16px;cursor:pointer;padding:0}.tabs{display:flex;background:var(--tg-secondary-bg);border-radius:var(--radius);padding:4px;gap:4px}.tab{flex:1;padding:10px;border:none;border-radius:10px;background:transparent;color:var(--tg-hint);font-weight:600;cursor:pointer}.tab.active{background:var(--tg-button);color:var(--tg-button-text)}.steppers{display:flex;flex-direction:column;gap:8px}.stepper{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--tg-secondary-bg);border-radius:var(--radius)}.stepper-controls{display:flex;align-items:center;gap:14px}.stepper-controls button{width:36px;height:36px;border-radius:50%;border:none;background:var(--tg-bg);color:var(--tg-text);font-size:20px;cursor:pointer}.stepper-controls button:disabled{opacity:.3}.stepper-value{min-width:22px;text-align:center;font-weight:700;font-size:18px}.total-row{text-align:center;font-size:18px}.lb-list{display:flex;flex-direction:column;gap:6px}.lb-row{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--tg-secondary-bg);border-radius:var(--radius)}.rank{width:22px;text-align:center;font-weight:700;color:var(--tg-hint)}.lb-name{flex:1}.lb-val{font-weight:700}.game.night{background:#07080c}.game-header{display:flex;align-items:center;gap:10px}.game-header-mid{flex:1;text-align:center}.phase-label{font-weight:700}.phase-sub{font-size:12px;color:var(--tg-hint)}.game-header-right{display:flex;align-items:center;gap:8px}.timer{font-variant-numeric:tabular-nums;font-weight:700;background:var(--tg-secondary-bg);padding:4px 8px;border-radius:8px;min-width:32px;text-align:center}.timer.urgent{color:var(--danger)}.phase-body{display:flex;flex-direction:column;gap:12px;align-items:stretch}.lobby-code{text-align:center;font-size:18px}.lobby-code b{font-family:monospace;font-size:22px}.lobby-count{text-align:center;color:var(--tg-hint)}.banner{text-align:center;padding:32px 0}.banner-emoji{font-size:52px}.banner-text{margin-top:8px;font-size:18px}.role-reveal{align-items:center}.role-card{text-align:center;background:var(--tg-secondary-bg);padding:28px 36px;border-radius:20px}.role-emoji{font-size:64px}.role-title{font-size:24px;font-weight:700;margin:8px 0}.target-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:8px}.target{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 6px;border:2px solid transparent;border-radius:var(--radius);background:var(--tg-secondary-bg);color:var(--tg-text);cursor:pointer}.target.selected{border-color:var(--tg-button)}.target:disabled{opacity:.35}.target-name{font-size:13px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.avatar{width:40px;height:40px;border-radius:50%;background:var(--tg-button);color:var(--tg-button-text);display:flex;align-items:center;justify-content:center;font-weight:700;flex-shrink:0}.avatar.dead{background:#3a3d47;filter:grayscale(1)}.roster{display:flex;flex-direction:column;gap:6px;margin-top:8px}.player-row{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--tg-secondary-bg);border-radius:var(--radius)}.player-row.dead{opacity:.5}.player-main{flex:1;min-width:0}.player-name{font-weight:600}.offline{color:var(--tg-hint);margin-left:4px}.skull{margin-left:6px}.player-role{margin-top:2px}.role-badge{font-size:13px;color:var(--tg-hint);background:var(--tg-bg);padding:2px 8px;border-radius:8px}.role-badge.role-host{color:#f0c040}.winner-mark{font-size:18px}.mafia-panel,.night-summary{background:var(--tg-secondary-bg);border-radius:var(--radius);padding:12px}.sheriff-checks{display:flex;flex-direction:column;gap:4px}.check{padding:8px 12px;border-radius:10px;background:var(--tg-secondary-bg);font-size:14px}.check.mafia{border-left:3px solid var(--danger)}.check.civilian{border-left:3px solid var(--ok)}.game-over{align-items:center;text-align:center}.winner-banner{font-size:24px;font-weight:700;padding:24px 0}.nick-input{width:100%;max-width:280px;text-align:center;font-size:18px;padding:12px;border-radius:var(--radius);border:1px solid var(--tg-secondary-bg);background:var(--tg-secondary-bg);color:var(--tg-text)}.link-btn{background:none;border:none;color:var(--tg-link);font-size:13px;cursor:pointer;padding:0;text-decoration:underline}
