.hand-mini-card{flex:none;width:72px;height:96px}.hand-card-selected{outline:3px solid var(--danger);outline-offset:-3px}
.suspect-mention{text-underline-offset:2px;cursor:help;font-weight:600;-webkit-text-decoration:underline dotted #5a3a1d99;text-decoration:underline dotted #5a3a1d99;display:inline;position:relative}.suspect-mention:hover,.suspect-mention:focus-visible{color:var(--danger);outline:none}.suspect-mention-popover{z-index:60;background:var(--panel-bg);border:1px solid var(--panel-border);pointer-events:none;border-radius:6px;padding:6px;display:inline-block;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 6px 18px #00000073}.suspect-mention-popover-top{bottom:calc(100% + 6px)}.suspect-mention-popover-bottom{top:calc(100% + 6px)}
.action-log li{flex-direction:column;align-items:stretch;gap:2px;padding:6px 0;display:flex}.log-entry-header{align-items:center;gap:6px;display:flex}.log-entry-text{padding-left:28px;line-height:1.35}.action-log{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border:1px solid var(--panel-border);background:#e4c698b8;border-radius:8px;max-height:100vh;padding:12px;overflow:auto;box-shadow:1px 4px 8px #00000073}.action-log ol{margin:8px 0 0;padding:0;font-size:13px;list-style:none}.action-log li{border-bottom:1px dashed #5a3a1d40;padding:4px 6px}.log-role{margin-right:4px;font-weight:700}.log-mafia .log-role{color:#8b2727}.log-inspector .log-role{color:#2a5d3a}.log-system .log-role{color:#5a3a1d;font-style:italic}
.side-panel{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border:1px solid var(--panel-border);background:#e4c698b8;border-radius:8px;flex-direction:column;gap:12px;min-width:280px;padding:12px;display:flex;box-shadow:1px 4px 8px #00000073}.side-panel-mafia .panel-header{background:#6c2222}.panel-header{background:linear-gradient(180deg, var(--accent), var(--accent-dark));color:#fff;text-align:center;border:1px solid var(--accent-dark);text-shadow:0 1px 2px #0009;border-radius:4px;justify-content:center;align-items:center;padding:8px 12px;font-weight:700;display:flex}.panel-body{flex-direction:column;gap:12px;display:flex}.panel-footer{text-align:center;border:1px solid var(--panel-border);background:#ffffff73;border-radius:6px;margin-top:4px;padding:10px 16px;font-size:15px;font-weight:600}.identity-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.identity-slot{border:1px solid var(--panel-border);background:linear-gradient(#ffffff8c,#ffffff4d);border-radius:10px;flex-direction:column;justify-content:flex-start;align-items:center;gap:10px;min-height:140px;padding:10px 8px 14px;display:flex;position:relative;box-shadow:inset 0 0 0 1px #ffffff59}.identity-slot-label{letter-spacing:.02em;color:#4a3018;font-size:13px;font-style:italic}.identity-empty{border:1px dashed var(--panel-border);text-align:center;color:#5a3a1d;background:#ffffff59;border-radius:5px;place-items:center;width:72px;height:96px;font-style:italic;display:grid}.section-title{text-align:center;font-size:13px;font-style:italic}.hand-row,.action-buttons{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.end-move-btn{align-self:stretch;margin-top:8px;padding:12px 20px;font-size:16px;animation:1.4s ease-in-out infinite end-move-pulse}.end-move-btn:hover:not(:disabled){background:linear-gradient(180deg, var(--brand-primary), var(--brand-shadow))}.board-end-move-btn{align-self:center;width:fit-content}@keyframes end-move-pulse{0%,to{box-shadow:0 0 #b47b4699}50%{box-shadow:0 0 0 6px #b47b4600}}.phase-prompt{border:1px dashed var(--panel-border);background:#ffffff8c;border-radius:6px;padding:10px;font-size:14px}.phase-prompt>.app-btn{width:fit-content;margin-left:auto;margin-right:auto;display:flex}.phase-prompt-alert{border-color:var(--danger);background:linear-gradient(#f4d2c2,#e7b09a);border-style:solid}.reveal-candidates{letter-spacing:.04em;margin-top:4px;font-weight:700;display:inline-block}.phase-prompt-title{margin-bottom:6px;font-weight:700}.phase-prompt-text{margin:6px 0;font-size:13px}.phase-prompt-hint{color:#5a3a1d;font-size:12px;font-style:italic}.action-hints{flex-direction:column;gap:4px;margin:6px 0;padding:0;font-size:13px;line-height:1.4;list-style:none;display:flex}.action-hints li{background:#ffffff59;border-radius:4px;padding:4px 6px}@media (max-width:991px){.side-panel,.replay-role-panel{min-width:0!important}}@media (max-width:565px){.identity-slot-label{font-size:11px}}
.board-turn-timer{border:1px solid color-mix(in srgb, #eeca7ea3 calc((1 - var(--urgent-blend,0)) * 100%), #ff402dad);background:#1a0c06c7;border-radius:14px;width:min(100%,190px);min-width:min(100%,180px);padding:3px;box-shadow:0 3px 10px #00000070,inset 0 1px #fff1c733}.board-turn-timer-track{background:linear-gradient(#26130afa,#120805fa);border-radius:10px;justify-content:flex-end;align-items:center;height:16px;display:flex;position:relative;overflow:hidden;box-shadow:inset 0 1px 5px #000000ad,inset 0 -1px #ffffff14}.board-turn-timer-fill-wrap{border-radius:inherit;position:absolute;top:0;bottom:0;left:0;overflow:hidden}.board-turn-timer-fill{border-radius:inherit;background:linear-gradient(90deg,#81111e 0%,#b51f31 72%,#dc5a58 100%);position:absolute;inset:0;box-shadow:inset 0 1px #ffffff2e,0 0 9px #c61f2b70}.board-turn-timer-fill-urgent{opacity:var(--urgent-blend,0);background:linear-gradient(90deg,#a80d18 0%,#f42a1d 68%,#fb7461 100%);box-shadow:inset 0 1px #fff3,0 0 12px #ff241480}.board-turn-timer-label{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.board-turn-timer-value{z-index:2;text-align:right;color:#f4d38d;text-shadow:0 1px 2px #000000d9;min-width:24px;padding-right:7px;font-family:Georgia,serif;font-size:15px;font-weight:700;line-height:1;position:relative}.board-turn-timer-urgent{animation:1.6s ease-in-out .4s infinite board-turn-timer-pulse}@keyframes board-turn-timer-pulse{0%,to{box-shadow:0 0 #ff402d3d,0 3px 10px #00000070}50%{box-shadow:0 0 0 4px #ff402d00,0 3px 10px #00000070}}
.game-view{grid-template-columns:minmax(0,2fr) minmax(320px,1fr) minmax(280px,.8fr);gap:16px;height:100vh;padding:16px;display:grid}@media (max-width:1200px){.game-view{flex-wrap:wrap;gap:16px;height:auto;display:flex}.game-view .board-area{flex:100%;min-width:0}.game-view .side-panel,.game-view .replay-role-panel,.game-view .action-log{flex:1 1 0;min-width:0}.game-view .action-log{contain:size;min-height:200px;overflow-y:auto;height:auto!important;max-height:none!important}}@media (max-width:565px){.game-view{grid-template-columns:1fr;display:grid}.game-view .action-log{contain:none;height:350px!important;max-height:350px!important}}@media (max-width:767px){.game-view{padding:6px}}@media (max-width:1201px){body{height:auto;min-height:auto;padding:6px 6px 15px}}.board-area{flex-direction:column;justify-content:center;align-items:center;gap:0;display:flex}.board-turn-timer-slot{justify-content:center;align-items:flex-start;gap:12px;width:100%;min-height:30px;display:flex;position:relative}.board-turn-role-badge{flex-shrink:0;width:fit-content}.panel-header.board-turn-role-badge{color:#f4d38d;letter-spacing:.02em;text-shadow:0 1px 2px #000000d9;background:linear-gradient(#3a2212 0%,#1f1008 100%);border:1px solid #eeca7e9e;border-radius:10px;padding:5px 14px;font-family:Georgia,serif;font-size:14px;box-shadow:0 3px 10px #0000006b,inset 0 1px #fff1c729}
.spy-reveals-block{text-align:left;flex-direction:column;align-items:stretch;gap:8px;display:flex}.spy-reveals-header{justify-content:center;align-items:center;gap:10px;font-size:15px;display:flex}.spy-reveals-icon{object-fit:contain;flex-shrink:0;width:36px;height:36px}.spy-reveals-table{border-collapse:collapse;width:100%;font-size:14px}.spy-reveals-table td{border-top:1px dashed #00000026;padding:4px 6px}.spy-reveals-name{color:#2a1d12;font-weight:600}.spy-reveals-count{text-align:right;width:2.5em;color:var(--brand-primary);font-weight:700}.spy-reveals-row-current .spy-reveals-name{color:var(--brand-primary)}.spy-reveals-team-row .spy-reveals-name,.spy-reveals-team-row-current .spy-reveals-name{text-transform:uppercase;letter-spacing:.04em;color:#5a3a1d;text-align:center;font-size:12px;font-weight:700}.spy-reveals-team-row-current .spy-reveals-name{color:var(--brand-primary)}.spy-reveals-team-row td,.spy-reveals-team-row-current td{background:#5a3a1d0f;border-top:none}.spy-reveals-teams{flex-direction:column;gap:5px;display:flex}.spy-reveals-team-card{border:1px solid var(--panel-border);border-radius:8px;overflow:hidden}.spy-reveals-team-card-current{border-color:var(--brand-primary)}.spy-reveals-team-card tr:first-child td{border-top:none}.spy-reveals-team-card .spy-reveals-table{margin:0}.spy-reveals-goal-table{margin-top:4px}.spy-reveals-player-name{padding-left:14px;font-weight:600}.spy-reveals-player-name .suspect-mention{font-weight:600}.spy-reveals-goal-row .spy-reveals-name{color:#5a3a1d;font-style:italic}.spy-reveals-goal-row .spy-reveals-count{color:#2a1d12}
.game-over-screen{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.game-over-card{background:var(--panel-bg,#f4ead8);text-align:center;border:2px solid #5a3a1d59;border-radius:12px;max-width:420px;padding:32px}.game-over-meta{opacity:.75;font-size:14px}
.fbi-counters-footer{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 10px;display:flex}.fbi-counters-sep{opacity:.55}.fbi-counters-table{border-collapse:collapse;width:100%;font-size:13px}.fbi-counters-table td{padding:3px 4px}.fbi-counters-name{color:#2a1d12;font-weight:600}.fbi-counters-count{text-align:right;color:var(--brand-primary);font-weight:700}.fbi-own-team{gap:5px;display:grid}.fbi-own-team-slot{flex-direction:column;align-items:center;gap:4px;display:flex}.fbi-own-team .hand-row{grid-auto-columns:max-content;grid-auto-flow:column;justify-content:center;justify-items:center;gap:5px;display:grid}.fbi-own-team-role{color:#5a3a1d;font-size:11px;font-style:italic}.fbi-retired-block{text-align:left}.fbi-retired-title{margin-bottom:4px;font-weight:700}
