:root{color-scheme:dark;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#090c0e;color:#f2eee7;--bg: #090c0e;--surface: #141719;--surface-strong: #1b1f22;--border: #30363a;--text: #f2eee7;--muted: #a9a39a;--red: #e13d3f;--amber: #d99a25;--green: #62b96a;--danger: #ff5c5c;--radius: 8px;--shadow: 0 18px 50px rgb(0 0 0 / .4)}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--bg)}button,input,select{font:inherit}body{min-width:320px}.screen{min-height:100vh;display:grid;align-items:center;justify-items:start;padding:max(18px,env(safe-area-inset-top)) 18px max(24px,env(safe-area-inset-bottom));background:radial-gradient(circle at 50% -10%,rgb(225 61 63 / .12),transparent 22rem),linear-gradient(180deg,#0d1113 0%,var(--bg) 42%,#060809 100%)}.screen-home{text-align:left}.screen-form,.screen>.panel{width:min(100%,calc(100vw - 36px),342px)}.screen-form{display:grid;gap:14px}.screen-topbar{min-height:52px;display:grid;grid-template-columns:52px 1fr 52px;align-items:center;gap:8px}.screen-topbar h1{grid-column:2;margin:0;color:var(--red);font-size:1.35rem;font-weight:750;line-height:1.1;text-align:center}.screen-join .screen-topbar h1{color:var(--amber)}.screen-topbar .icon-button:last-child{grid-column:3}.panel{width:100%;border:1px solid var(--border);border-radius:var(--radius);background:linear-gradient(180deg,rgb(255 255 255 / .025),transparent),var(--surface);padding:16px;box-shadow:var(--shadow)}.brand-block{display:grid;gap:18px;padding:18px 0 12px}.brand-mark{width:76px;height:76px;display:grid;place-items:center;border:2px solid var(--red);color:var(--red);background:#e13d3f1f;clip-path:polygon(50% 0,92% 24%,92% 76%,50% 100%,8% 76%,8% 24%)}.brand-block h1{margin:0;color:var(--red);font-size:clamp(3rem,17vw,4.35rem);font-weight:850;line-height:.95}.brand-block p{margin:0;max-width:18rem;color:var(--muted);font-size:1.02rem;line-height:1.45}.app-kicker{margin:0;color:var(--amber);font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:0}.action-stack{display:grid;gap:14px;margin-top:22px}.button,.copy-button,.copy-inline,.icon-button{min-height:48px;border-radius:var(--radius);border:1px solid transparent;font:inherit;font-weight:750;line-height:1.1;cursor:pointer;transition:border-color .16s ease,filter .16s ease,transform .16s ease}.button{width:100%;display:inline-flex;align-items:center;justify-content:center;gap:12px;padding:16px 18px;color:var(--text);font-size:1.05rem}.button-primary,.button-danger{border-color:#7f2526;background:linear-gradient(180deg,#e13d3fb8,#661416eb)}.button-secondary{border-color:#8a651c;background:linear-gradient(180deg,#d99a25db,#74460deb);color:#120f09}.button:disabled{cursor:not-allowed;filter:grayscale(.45) brightness(.68);color:#f2eee79e}.copy-button:disabled,.copy-inline:disabled{cursor:not-allowed;filter:grayscale(.35) brightness(.78)}.button:not(:disabled):active,.copy-button:not(:disabled):active,.copy-inline:not(:disabled):active,.icon-button:active{transform:translateY(1px)}.button:focus-visible,.copy-button:focus-visible,.copy-inline:focus-visible,.icon-button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--amber);outline-offset:2px}.player-count,.screen-note,.field-help{margin:14px 0 0;color:var(--muted);font-size:.92rem;line-height:1.35;text-align:center}.field{display:grid;gap:10px;color:var(--text);font-size:1rem;font-weight:650}.field+.field{margin-top:16px}.input-frame,.select-frame,.code-entry{min-height:58px;display:flex;align-items:center;gap:10px;border:1px solid var(--border);border-radius:var(--radius);background:#0d1012;padding:0 12px;color:var(--muted)}input,select{min-width:0;width:100%;min-height:52px;border:0;background:transparent;color:var(--text);font-size:1rem;outline:none}select{cursor:pointer}input::placeholder{color:#a9a39ab8}.code-entry input,.code-preview strong,.room-code-card strong{color:var(--red);font-variant-numeric:tabular-nums;font-weight:850;letter-spacing:.12em}.code-entry input{font-size:1.6rem}.icon-button{width:48px;display:inline-grid;place-items:center;border-color:transparent;background:transparent;color:var(--text);padding:0}.icon-button-bordered{border-color:var(--border);background:var(--surface-strong)}.code-preview{display:grid;grid-template-columns:1fr 48px;gap:8px 12px;align-items:center}.code-preview span{grid-column:1 / -1;color:var(--muted);font-size:.95rem}.code-preview strong{min-height:58px;display:flex;align-items:center;border:1px solid var(--border);border-radius:var(--radius);background:#0d1012;padding:0 16px;font-size:1.65rem}.copy-button,.copy-inline{display:inline-flex;align-items:center;justify-content:center;gap:9px;color:var(--text);border-color:var(--border);background:var(--surface-strong);padding:0 14px}.copy-button{width:100%;margin-top:12px}.copy-inline{min-width:128px}.copy-status{margin:12px 0 0;color:var(--amber);font-size:.92rem;font-weight:700}.copy-status-error{color:var(--danger)}.form-error{margin:0;border:1px solid #7f2526;border-radius:var(--radius);background:#e13d3f24;color:var(--danger);padding:12px 14px;font-weight:700}.info-row,.status-line,.panel-heading,.room-code-card{display:flex;align-items:center;gap:10px}.info-row{margin:0;color:var(--muted);line-height:1.4}.room-code-card{justify-content:space-between}.room-code-card div{display:grid;gap:8px}.room-code-card span,.panel-heading{color:var(--muted)}.room-code-card strong{font-size:1.75rem}.panel-heading{justify-content:space-between;margin-bottom:12px}.panel-heading span{display:inline-flex;align-items:center;gap:8px;color:var(--text);font-weight:750}.panel-heading strong{font-variant-numeric:tabular-nums}.player-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}.player-row{min-height:54px;display:grid;grid-template-columns:38px 1fr auto;align-items:center;gap:10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-strong);padding:8px 10px}.player-avatar{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:#2b2f31;color:var(--text);font-weight:800}.player-name{display:grid;gap:2px;color:var(--text);font-weight:650}.player-name small{color:var(--muted);font-size:.75rem;font-weight:600}.ready-status{color:var(--green);font-size:.88rem;font-weight:750}.status-line{min-height:34px;color:var(--text)}.status-line+.status-line{margin-top:8px}.status-line strong{margin-left:auto;color:var(--red);font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.empty-state{display:grid;gap:14px;text-align:center}.empty-state h1{margin:0;color:var(--red);font-size:1.6rem}.empty-state p{margin:0;color:var(--muted);line-height:1.45}.game-screen{align-items:start;justify-items:center;padding-inline:10px}.game-shell{width:min(100%,560px);display:grid;gap:10px}.game-header,.phase-band{border:1px solid rgb(48 54 58 / .85);background:linear-gradient(180deg,rgb(255 255 255 / .035),transparent),#101416;box-shadow:0 14px 36px #00000052}.game-header{min-height:66px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;border-radius:var(--radius) var(--radius) 0 0;padding:10px 12px}.game-header h1{margin:0;color:var(--text);font-size:1.45rem;line-height:1;text-align:center}.game-header strong{display:block;margin-top:3px;color:var(--text);font-variant-numeric:tabular-nums}.game-timer-band{justify-self:end;display:inline-flex;align-items:center;gap:6px;color:var(--red);font-weight:800;font-variant-numeric:tabular-nums}.timer{min-width:54px;text-align:right}.timer-empty{color:var(--muted)}.phase-band{min-height:48px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;border-top:0;border-radius:0 0 var(--radius) var(--radius);padding:0 12px;color:var(--muted);font-weight:700}.phase-band strong{min-width:150px;display:inline-flex;justify-content:center;border-inline:1px solid rgb(127 37 38 / .45);background:linear-gradient(90deg,#7f25262e,#e13d3f57,#7f25262e);color:#ff6668;padding:14px 18px}.phase-band span:last-child{justify-self:end}.game-action-error,.turn-card{border:1px solid rgb(127 37 38 / .7);border-radius:var(--radius);background:linear-gradient(180deg,#e13d3f29,#7f25261c),#141719;box-shadow:0 14px 30px #00000047}.game-action-error{padding:12px 14px;color:#ff7779;font-weight:800;line-height:1.35}.turn-card{display:grid;gap:8px;padding:12px 14px}.turn-card div{display:flex;align-items:center;justify-content:space-between;gap:12px}.turn-card span{color:var(--muted);font-size:.78rem;font-weight:800;text-transform:uppercase}.turn-card strong{color:var(--text);font-size:1rem;line-height:1.25;text-align:right}.turn-card p{margin:0;color:var(--amber);font-size:.92rem;font-weight:650;line-height:1.4}.game-context-grid{display:grid;grid-template-columns:1fr;gap:10px}.danger-heading span,.expelled-heading span{color:var(--red)}.bunker-heading span,.self-heading span,.vote-heading span{color:var(--amber)}.survivor-heading span,.survivor-hero{color:var(--green)}.game-section-title{margin:0 0 8px;color:var(--text);font-size:1.12rem;line-height:1.2}.game-copy,.resource-line,.vote-note{margin:0;color:var(--muted);font-size:.94rem;line-height:1.45}.resource-line,.vote-note{color:var(--amber);font-weight:650}.trait-list,.vote-target-list,.game-player-grid,.vote-result-list,.final-player-list{display:grid;gap:8px;margin:0}.trait-row{min-height:62px;display:grid;grid-template-columns:26px minmax(0,1fr) minmax(108px,auto);align-items:center;gap:10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-strong);padding:9px 10px}.trait-row svg{color:var(--muted)}.trait-row dt,.revealed-traits dt{color:var(--muted);font-size:.76rem;font-weight:700}.trait-row dd,.revealed-traits dd{margin:1px 0 0;color:var(--text);font-weight:720}.trait-row small{display:block;margin-top:2px;color:var(--amber);font-size:.74rem;font-weight:650}.trait-reveal-button,.vote-target-button{min-height:46px;border:1px solid #8a651c;border-radius:var(--radius);background:#d99a251f;color:var(--amber);font:inherit;font-size:.92rem;font-weight:800;cursor:pointer}.trait-reveal-button:active,.vote-target-button:active{transform:translateY(1px)}.trait-reveal-button:disabled,.vote-target-button:disabled{border-color:#485054e6;background:#4850542e;color:var(--muted);cursor:not-allowed;transform:none}.vote-target-list{margin-top:12px}.vote-target-button{display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px;padding:10px 12px;text-align:left}.vote-target-button span{color:var(--text);font-weight:750}.game-player-card,.vote-result-row{min-height:64px;display:grid;grid-template-columns:38px minmax(0,1fr);align-items:center;gap:10px;border:1px solid var(--border);border-radius:var(--radius);background:#111619;padding:9px 10px}.game-player-card-expelled,.expelled-row{border-color:#7f2526;background:linear-gradient(90deg,rgb(225 61 63 / .1),transparent 58%),#161312}.game-player-main{min-width:0;display:grid;gap:5px}.game-player-main>strong,.vote-result-row strong{color:var(--text);font-size:1rem}.revealed-traits{display:flex;flex-wrap:wrap;gap:6px 12px;margin:0}.game-muted{color:var(--muted);font-size:.88rem;line-height:1.3}.result-hero{display:grid;grid-template-columns:52px 1fr;gap:12px;align-items:center;border:1px solid #7f2526;border-radius:var(--radius);background:#e13d3f1a;padding:16px;color:var(--red)}.result-hero h2{margin:0 0 6px;color:currentColor;font-size:1.45rem}.result-hero p,.tie-marker{margin:0;color:var(--text);line-height:1.4}.tie-marker{display:flex;align-items:center;gap:8px;margin-top:12px;border:1px solid #8a651c;border-radius:var(--radius);background:#d99a251f;color:var(--amber);padding:11px 12px;font-weight:750}.vote-result-row{grid-template-columns:minmax(0,1fr) auto}.vote-result-row>span{min-width:36px;color:var(--amber);font-size:1.35rem;font-weight:850;text-align:right;font-variant-numeric:tabular-nums}.survivor-hero{border-color:#62b96a8c;background:#62b96a1a}.final-context-title{margin-top:16px}@media(min-width:720px){.screen{padding:32px;justify-items:center}.screen-form,.screen>.panel{width:min(100%,calc(100vw - 64px),430px)}.game-shell{width:min(100%,920px)}.game-context-grid{grid-template-columns:1fr 1fr}.game-player-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
