:root{--color-bg:#0b0d16;--color-bg-deep:#060810;--color-panel:#141a2c;--color-panel-border:#2a3352;--color-text:#e9e4d8;--color-text-muted:#a9a698;--color-gold:#c9a740;--color-gold-bright:#e6c96a;--color-navy:#1b2440;--color-danger:#e08484;--color-success:#8fc98f;--color-warning:#d9b96a;--font-heading:"Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", "BIZ UDMincho", serif;--font-body:"Hiragino Kaku Gothic ProN", "Yu Gothic", "Noto Sans JP", system-ui, sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:radial-gradient(ellipse at 50% -20%, #1a2340 0%, transparent 55%), linear-gradient(180deg, var(--color-bg) 0%, var(--color-bg-deep) 100%);color:var(--color-text);font-family:var(--font-body);background-attachment:fixed;min-height:100vh;font-size:16px;line-height:1.7}#root{min-height:100vh}.page{max-width:640px;margin:0 auto;padding:32px 20px 64px}.center-page{flex-direction:column;justify-content:center;align-items:center;min-height:70vh;display:flex}.panel{background:var(--color-panel);border:1px solid var(--color-panel-border);border-radius:10px;margin:16px 0;padding:24px;box-shadow:0 8px 24px #00000073}.panel-heading{font-family:var(--font-heading);color:var(--color-gold-bright);letter-spacing:.06em;margin:0 0 12px;font-size:1.15rem;font-weight:600}.field-label{color:var(--color-text-muted);margin-bottom:6px;font-size:.9rem;display:block}.text-input{width:100%;color:var(--color-text);background:var(--color-bg-deep);border:1px solid var(--color-panel-border);border-radius:8px;outline:none;padding:12px 14px;font-size:1rem}.text-input:focus-visible{border-color:var(--color-gold);box-shadow:0 0 0 2px #c9a74040}.button{width:100%;font-size:1rem;font-family:var(--font-body);cursor:pointer;border:1px solid #0000;border-radius:8px;margin-top:14px;padding:12px 18px;transition:background-color .15s,border-color .15s,opacity .15s;display:inline-block}.button:disabled{cursor:not-allowed;opacity:.45}.button-primary{background:linear-gradient(180deg, var(--color-gold-bright), var(--color-gold));border-color:var(--color-gold);color:#221a05;letter-spacing:.05em;font-weight:700}.button-primary:hover:not(:disabled){background:linear-gradient(180deg, #f0d67d, var(--color-gold-bright))}.button-secondary{background:var(--color-navy);border-color:var(--color-panel-border);color:var(--color-text)}.button-secondary:hover:not(:disabled){border-color:var(--color-gold)}.button-ghost{border-color:var(--color-panel-border);color:var(--color-text-muted);background:0 0}.button-ghost:hover:not(:disabled){color:var(--color-text);border-color:var(--color-gold)}.button-small{width:auto;margin-top:0;padding:6px 14px;font-size:.85rem}.form-error{color:var(--color-danger);margin:10px 0 0;font-size:.9rem}.loading-text{color:var(--color-text-muted);letter-spacing:.1em;font-size:1.05rem}.home-hero{text-align:center;padding:40px 0 8px}.home-crest{color:var(--color-gold);letter-spacing:.5em;margin:0 0 4px;font-size:1.6rem}.home-title{font-family:var(--font-heading);color:var(--color-gold-bright);letter-spacing:.18em;text-shadow:0 2px 12px #c9a74040;margin:0;font-size:clamp(2.2rem,8vw,3.2rem);font-weight:700}.home-subtitle{font-family:var(--font-heading);color:var(--color-text-muted);letter-spacing:.35em;text-transform:uppercase;margin:6px 0 20px;font-size:.95rem}.home-tagline{color:var(--color-text);max-width:460px;margin:0 auto 16px;font-size:.98rem}.home-players-badge{border:1px solid var(--color-gold);color:var(--color-gold-bright);letter-spacing:.08em;border-radius:999px;padding:4px 18px;font-size:.85rem;display:inline-block}.home-form{margin-top:24px}.howto-list{color:var(--color-text);margin:0;padding-left:1.2em;font-size:.95rem}.howto-list li{margin-bottom:6px}.home-footer{text-align:center;color:var(--color-text-muted);margin-top:28px;font-size:.85rem}.lobby-header{text-align:center;padding-top:8px}.lobby-title{font-family:var(--font-heading);color:var(--color-gold-bright);letter-spacing:.16em;margin:0;font-size:clamp(1.6rem,6vw,2.2rem)}.lobby-subtitle{color:var(--color-text-muted);letter-spacing:.12em;margin:4px 0 8px;font-size:.9rem}.lobby-room-panel{flex-wrap:wrap;align-items:center;gap:16px 24px;display:flex}.invite-block{flex:220px}.invite-block .button{margin-top:0}.invite-hint{color:var(--color-text-muted);margin:8px 0 0;font-size:.8rem}.player-count{color:var(--color-text);border-top:1px solid var(--color-panel-border);flex-basis:100%;margin:0;padding-top:12px}.player-count strong{color:var(--color-gold-bright);font-size:1.2rem}.player-count-min{color:var(--color-text-muted);margin-left:8px;font-size:.85rem}.player-list{margin:0;padding:0;list-style:none}.player-row{border:1px solid var(--color-panel-border);background:#0b0d1680;border-radius:8px;align-items:center;gap:12px;margin-bottom:8px;padding:10px 12px;display:flex}.player-row-disconnected{opacity:.75;border-style:dashed}.player-row-empty{opacity:.5;border-style:dashed}.player-order{border:1px solid var(--color-panel-border);width:26px;height:26px;color:var(--color-text-muted);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:.8rem;display:inline-flex}.player-name{overflow-wrap:anywhere;flex:auto;font-size:1rem}.player-you{color:var(--color-gold-bright);margin-left:6px;font-size:.85rem}.player-empty-label{color:var(--color-text-muted);font-size:.9rem}.badge{border:1px solid;border-radius:999px;flex:none;padding:2px 10px;font-size:.78rem}.badge-host{color:var(--color-gold-bright);border-color:var(--color-gold);background:#c9a7401f}.badge-online{color:var(--color-success);border-color:var(--color-success);background:#8fc98f1a}.badge-offline{color:var(--color-warning);border-color:var(--color-warning);background:#d9b96a1a}.notice-banner{border:1px solid var(--color-gold);background:#c9a7401a;border-radius:8px;align-items:center;gap:12px;margin:16px 0;padding:12px 16px;display:flex}.notice-banner p{flex:auto;margin:0;font-size:.95rem}.connection-warning{color:var(--color-warning);border:1px dashed var(--color-warning);text-align:center;border-radius:8px;padding:10px 14px;font-size:.9rem}.lobby-actions{text-align:center;margin-top:20px}.start-hint{color:var(--color-text-muted);margin:8px 0 20px;font-size:.85rem}.join-panel{width:100%;max-width:420px}.join-room-info{color:var(--color-text-muted);margin:0 0 16px;font-size:.92rem}.game-screen{max-width:1120px;margin:0 auto;padding:16px 20px 24px}.game-header{text-align:center;padding:4px 0 8px}.game-title{font-family:var(--font-heading);color:var(--color-gold-bright);letter-spacing:.16em;margin:0;font-size:clamp(1.3rem,4vw,1.7rem)}.game-subtitle{color:var(--color-text-muted);letter-spacing:.12em;margin:2px 0 0;font-size:.8rem}.game-layout{grid-template-columns:minmax(0,1fr) 280px;align-items:start;gap:0 20px;display:grid}@media (width>=1400px){.game-screen{max-width:1720px;padding-top:8px;padding-bottom:12px}.game-layout{grid-template-columns:260px minmax(760px,1040px) 300px;justify-content:center;gap:0 20px}.game-main{grid-area:1/2}.game-side{grid-area:1/1;position:sticky;top:16px}.game-layout .game-rules-side{grid-area:1/3;max-height:calc(100vh - 190px)}.game-screen.rules-pinned .rules-fab{display:none}.game-header{padding:0 0 4px}.game-main>.panel,.game-primary,.game-primary>.panel{margin-top:8px;margin-bottom:8px}.game-primary{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:10px;display:grid}.game-primary>.panel{margin:0}.status-panel{padding:10px 16px}.status-turn{margin-bottom:6px;padding-bottom:6px}.status-row{margin-bottom:2px;font-size:.84rem}.players-panel{padding:10px 12px}.players-panel .panel-heading{margin-bottom:7px}.players-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px}.opponent-card{gap:4px;padding:8px}.opponent-header{gap:5px}.opponent-name{font-size:.9rem}.opponent-badges{gap:4px}.game-action-dock,.self-panel{padding:12px 14px}.action-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.action-button{padding:7px 9px}.action-heading{margin-bottom:6px}.action-group-label{margin:7px 0 4px}.self-meta{margin:6px 0 8px}.self-cards-block{margin-bottom:8px}.self-card-notes{margin-top:5px}.self-task{padding-top:6px}}@media (width>=1700px){.players-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.action-grid.action-grid-basic{grid-template-columns:repeat(3,minmax(0,1fr))}.action-grid.action-grid-role{grid-template-columns:repeat(4,minmax(0,1fr))}.action-grid-role .action-button-title{font-size:.9rem}.action-grid-role .action-button-role{width:fit-content;margin:2px 0 0;display:block}}.game-rules-side{min-width:0;max-height:calc(100vh - 40px);padding:16px 18px;position:sticky;top:16px;overflow-y:auto}@media (width<=1399px){.game-rules-side{display:none}}.game-main,.game-side{min-width:0}.status-panel{padding:16px 20px}.status-turn{border-bottom:1px solid var(--color-panel-border);align-items:baseline;gap:12px;margin:0 0 10px;padding-bottom:10px;display:flex}.status-turn-name{font-family:var(--font-heading);color:var(--color-gold-bright);letter-spacing:.08em;font-size:1.3rem}.deck-count{color:var(--color-text-muted);align-items:baseline;gap:4px;margin-left:auto;font-size:.82rem;display:inline-flex}.deck-count strong{color:var(--color-text);font-size:1.05rem}.status-label{color:var(--color-text-muted);margin-right:8px;font-size:.8rem;display:inline-block}.status-list{margin:0}.status-row{gap:10px;margin-bottom:4px;font-size:.9rem;display:flex}.status-row dt{color:var(--color-text-muted);flex:0 0 7.5em}.status-row dd{flex:auto;margin:0}.players-panel{padding:16px 20px}.players-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.opponent-card{border:1px solid var(--color-panel-border);background:#0b0d1680;border-radius:8px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.opponent-card-turn{border-color:var(--color-gold);box-shadow:0 0 0 1px var(--color-gold) inset}.opponent-card-eliminated{opacity:.6}.opponent-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.opponent-name{overflow-wrap:anywhere;font-size:1rem;font-weight:700}.response-complete{border:1px solid var(--color-success);width:25px;height:25px;color:var(--color-success);background:#8fc98f29;border-radius:50%;justify-content:center;align-items:center;margin-left:auto;font-weight:800;display:inline-flex;box-shadow:0 0 10px #8fc98f29}.opponent-badges{flex-wrap:wrap;gap:6px;display:flex}.badge-turn{color:#221a05;background:var(--color-gold-bright);border-color:var(--color-gold);font-weight:700}.badge-eliminated{color:var(--color-danger);border-color:var(--color-danger);background:#e084841a}.opponent-influence{flex-direction:column;gap:4px;display:flex}.opponent-cards{flex-wrap:wrap;gap:6px;display:flex}.influence-display{align-items:center;gap:3px;display:inline-flex}.influence-display .status-label{margin-right:5px}.influence-tokens{gap:6px;display:inline-flex}.influence-token{border-radius:50%;justify-content:center;align-items:center;width:23px;height:23px;font-size:.72rem;line-height:1;display:inline-flex}.influence-token-active{color:#221a05;border:1px solid var(--color-gold-bright);background:radial-gradient(circle at 35% 30%, #f0d67d, var(--color-gold));box-shadow:0 0 8px #e6c96a47}.influence-token-lost{color:var(--color-text-muted);border:1px dashed var(--color-panel-border);opacity:.55;background:#0b0d16a6}.coin-badge{align-items:center;gap:6px;display:inline-flex}.coin-badge-image{object-fit:contain;width:20px;height:20px}.coin-badge-mark{color:var(--color-gold-bright);font-size:1.05rem;line-height:1}.coin-badge-count{font-family:var(--font-heading);color:var(--color-gold-bright);font-size:1.15rem;font-weight:700}.coin-badge-unit{color:var(--color-text-muted);font-size:.78rem}.role-card{border:1px solid var(--color-gold);color:var(--color-text);background:linear-gradient(165deg,#1c2440 0%,#10152a 70%);border-radius:8px;flex-direction:column;flex:none;justify-content:center;align-items:center;gap:4px;display:inline-flex;position:relative;overflow:hidden}.role-card-medium{width:96px;height:134px}.role-card-small{width:58px;height:82px}.role-card-image{object-fit:contain;width:calc(100% - 8px);height:calc(100% - 26px);position:absolute;inset:4px 4px 22px}.role-card-small .role-card-image{width:calc(100% - 4px);height:calc(100% - 18px);inset:2px 2px 16px}.role-card-symbol{font-size:1.9rem;line-height:1}.role-card-small .role-card-symbol{font-size:1.15rem}.role-card-name{font-family:var(--font-heading);letter-spacing:.12em;text-align:center;background:#060810b3;border-top:1px solid #c9a74066;width:100%;padding:2px 0;font-size:.85rem;position:absolute;bottom:0}.role-card-small .role-card-name{letter-spacing:.06em;font-size:.68rem}.role-card-revealed{filter:grayscale(.5);opacity:.75;border-style:dashed}.role-card-ribbon{color:var(--color-danger);border:1px solid var(--color-danger);white-space:nowrap;background:#060810cc;border-radius:4px;padding:0 4px;font-size:.62rem;position:absolute;top:6px;left:50%;transform:translate(-50%)}.role-card-selectable{cursor:pointer;font:inherit;padding:0;transition:transform .12s,box-shadow .12s}.role-card-selectable:hover{transform:translateY(-3px)}.role-card-selected{border:2px solid var(--color-gold-bright);transform:translateY(-3px);box-shadow:0 0 0 3px #e6c96a59}.role-card-check{background:var(--color-gold-bright);color:#221a05;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;font-size:.8rem;font-weight:700;display:inline-flex;position:absolute;top:4px;right:6px}.card-back{border-color:var(--color-panel-border);background:repeating-linear-gradient(45deg,#141a2c 0 8px,#10152a 8px 16px),linear-gradient(#141a2c,#0b0d16)}.card-back-crest{color:#c9a7408c;font-size:1.2rem}.self-panel{padding:16px 20px}.self-panel-turn{border-color:var(--color-gold);box-shadow:0 0 0 1px var(--color-gold) inset, 0 8px 24px #00000073}.self-header{justify-content:space-between;align-items:center;gap:10px;display:flex}.self-name{margin:0}.self-badges{gap:6px;display:flex}.self-meta{align-items:center;gap:20px;margin:8px 0 12px;display:flex}.self-cards-block{margin-bottom:12px}.self-cards{flex-wrap:wrap;gap:10px;margin-top:6px;display:flex}.self-cards-empty{color:var(--color-text-muted);margin:4px 0;font-size:.85rem}.self-task{border-top:1px solid var(--color-panel-border);margin:0;padding-top:10px;font-size:.9rem}.game-action-dock{padding:16px 20px}.action-heading{font-family:var(--font-heading);color:var(--color-gold-bright);letter-spacing:.06em;margin:0 0 10px;font-size:1.05rem}.action-group-label{color:var(--color-text-muted);margin:12px 0 6px;font-size:.8rem}.action-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;display:grid}.action-button,.button-danger,.button-block{text-align:left;flex-direction:column;align-items:flex-start;gap:2px;margin-top:0;display:flex}.action-button{background:var(--color-navy);border-color:var(--color-panel-border);color:var(--color-text);padding:10px 14px}.action-button:hover:not(:disabled){border-color:var(--color-gold)}.action-button-title{font-size:.98rem;font-weight:700}.action-button-role{color:var(--color-gold-bright);border:1px solid var(--color-gold);border-radius:999px;margin-left:8px;padding:0 8px;font-size:.75rem;font-weight:400}.action-button-desc{color:var(--color-text-muted);font-size:.76rem;font-weight:400}.button-danger{border:1px solid var(--color-danger);color:#f2c9c9;background:linear-gradient(#4a1d22,#35141a);width:100%;padding:12px 14px}.button-danger:hover:not(:disabled){background:linear-gradient(#5a2329,#421a20)}.button-danger .action-button-desc{color:#d9a3a3}.button-block{background:var(--color-navy);border:1px solid var(--color-gold);color:var(--color-text);width:100%;padding:12px 14px}.button-block:hover:not(:disabled){background:#232e52}.reaction-buttons{gap:10px;display:grid}.reaction-note{color:var(--color-text-muted);margin:0 0 12px;font-size:.85rem}.reaction-note-danger{color:var(--color-danger);border:1px dashed var(--color-danger);background:#e0848412;border-radius:8px;padding:8px 12px}.waiting-note{color:var(--color-text-muted);text-align:center;letter-spacing:.06em;margin:4px 0}.select-cards{flex-wrap:wrap;gap:12px;margin:8px 0;display:flex}.select-hint{margin:6px 0 10px;font-size:.88rem}.eliminated-note{color:var(--color-text-muted);margin:6px 0;font-size:.92rem}.result-panel{text-align:center;padding:8px 0}.result-caption{color:var(--color-text-muted);letter-spacing:.3em;margin:0;font-size:.85rem}.result-winner{font-family:var(--font-heading);color:var(--color-gold-bright);letter-spacing:.18em;text-shadow:0 2px 12px #c9a74040;margin:4px 0 8px;font-size:2.2rem}.result-message{margin:0 0 8px}.result-waiting{color:var(--color-text-muted);border:1px dashed var(--color-panel-border);border-radius:8px;margin:14px 0 0;padding:10px 14px}.log-panel{scroll-behavior:smooth;max-height:70vh;padding:16px 20px;overflow-y:auto}.log-header{z-index:1;background:var(--color-panel);border-bottom:1px solid var(--color-panel-border);justify-content:space-between;align-items:center;gap:8px;margin:-4px 0 10px;padding:4px 0 8px;display:flex;position:sticky;top:-16px}.log-header .panel-heading{margin:0}.log-follow-button{border:1px solid var(--color-gold);color:var(--color-gold-bright);cursor:pointer;background:#c9a7401a;border-radius:999px;padding:3px 8px;font-size:.68rem}.log-list{color:var(--color-text);margin:0;padding:0;font-size:.85rem;list-style:none}.log-entry{overflow-wrap:anywhere;border-left:2px solid #0000;border-radius:5px;grid-template-columns:22px minmax(0,1fr);align-items:start;gap:6px;margin-bottom:5px;padding:5px 6px;display:grid}.log-entry-self{border-left-color:var(--color-gold-bright);background:#c9a7401c}.log-entry-icon{width:20px;height:20px;color:var(--color-gold-bright);background:#c9a7401a;border-radius:50%;justify-content:center;align-items:center;font-size:.72rem;font-weight:700;display:inline-flex}.log-empty{color:var(--color-text-muted);margin:0;font-size:.85rem}.player-avatar{border:1px solid var(--color-panel-border);background:var(--color-bg-deep);border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.player-avatar-small{width:28px;height:28px}.player-avatar-medium{width:38px;height:38px}.player-avatar-large{border-width:2px;border-color:var(--color-gold);width:60px;height:60px}.player-avatar-image{object-fit:cover;width:100%;height:100%}.player-avatar-fallback{font-family:var(--font-heading);color:var(--color-gold-bright);font-size:.9em}.player-avatar-dimmed{filter:grayscale();opacity:.55}.opponent-header .player-avatar{margin-right:2px}.self-name{align-items:center;gap:10px;display:flex}.event-banner-layer{z-index:35;pointer-events:none;justify-content:center;display:flex;position:fixed;top:64px;left:0;right:0}.turn-notice-layer{z-index:45;pointer-events:none;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.turn-notice{border:1px solid var(--color-gold-bright);pointer-events:auto;background:#0a0c16f5;border-radius:14px;justify-items:center;gap:5px;min-width:min(360px,100vw - 32px);padding:22px 44px 20px;animation:.25s ease-out vcTurnNoticeIn;display:grid;position:relative;box-shadow:0 18px 54px #000000c2,0 0 34px #e6c96a47}.turn-notice-symbol{color:var(--color-gold-bright);font-size:1.3rem}.turn-notice strong{font-family:var(--font-heading);color:var(--color-gold-bright);letter-spacing:.1em;font-size:1.4rem}.turn-notice>span:last-of-type{color:var(--color-text-muted);font-size:.88rem}.turn-notice-close{color:var(--color-text-muted);cursor:pointer;background:0 0;border:0;font-size:1.25rem;position:absolute;top:6px;right:8px}@keyframes vcTurnNoticeIn{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.event-banner{border:1px solid var(--color-gold);background:#0a0c16f0;border-radius:14px;align-items:center;gap:18px;padding:14px 28px;animation:.35s ease-out vcBannerIn;display:flex;box-shadow:0 12px 40px #000000b3,inset 0 0 0 1px #c9a74033}.event-tone-danger{border-color:var(--color-danger);box-shadow:0 12px 40px #000000b3,0 0 24px #e0848440}.event-tone-success{border-color:var(--color-gold-bright);box-shadow:0 12px 40px #000000b3,0 0 28px #e6c96a59}.event-tone-block{border-color:var(--color-success)}.event-tone-fail{border-color:var(--color-panel-border);filter:saturate(.8)}.event-tone-winner{border-width:2px;border-color:var(--color-gold-bright);background:linear-gradient(#28220cf5,#0a0c16f5);box-shadow:0 12px 48px #000c,0 0 42px #e6c96a73}.event-player{flex-direction:column;align-items:center;gap:4px;display:flex}.event-player-name{color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;max-width:84px;font-size:.78rem;overflow:hidden}.event-art{flex-direction:column;align-items:center;gap:2px;display:flex}.event-art-image{object-fit:contain;filter:drop-shadow(0 4px 10px #0009);width:74px;height:74px}.event-art-coin{width:56px;height:56px}.event-art-symbol{color:var(--color-gold-bright);text-shadow:0 2px 12px #c9a74080;font-size:2.6rem;line-height:1}.event-tone-danger .event-art-symbol{color:var(--color-danger);text-shadow:0 2px 12px #e0848480}.event-art-label{font-family:var(--font-heading);color:var(--color-gold-bright);letter-spacing:.1em;font-size:.75rem}.event-text{flex-direction:column;gap:2px;min-width:130px;display:flex}.event-text strong{font-family:var(--font-heading);color:var(--color-gold-bright);letter-spacing:.08em;font-size:1.15rem}.event-tone-danger .event-text strong{color:var(--color-danger)}.event-tone-fail .event-text strong{color:var(--color-text-muted)}.event-text small{color:var(--color-text-muted);font-size:.8rem}.event-anim-rise{animation:.5s ease-out vcRise}.event-anim-strike{animation:.9s ease-in-out vcStrike}.event-anim-hit{animation:.9s ease-in-out vcHit}.event-anim-glow{animation:1.4s ease-in-out infinite vcGlow}.event-anim-bluff{filter:grayscale(.8);animation:.55s ease-in-out vcShake}.event-anim-fail{filter:grayscale(.8)brightness(.8);animation:.55s ease-in-out vcShake}.event-anim-guard{animation:1s ease-out vcGuard}.event-anim-fall{animation:.9s ease-in forwards vcFall}@keyframes vcBannerIn{0%{opacity:0;transform:translateY(-14px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes vcRise{0%{opacity:0;transform:translateY(10px)scale(.85)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes vcStrike{0%{transform:translate(-16px)rotate(-8deg)}45%{transform:translate(-6px)rotate(-4deg)}65%{transform:translate(14px)rotate(6deg)scale(1.08)}to{transform:translate(0)rotate(0)scale(1)}}@keyframes vcHit{0%,55%{transform:translate(0)}65%{transform:translate(7px)}75%{transform:translate(-5px)}85%{transform:translate(3px)}to{transform:translate(0)}}@keyframes vcGlow{0%,to{filter:drop-shadow(0 0 6px #e6c96a59)}50%{filter:drop-shadow(0 0 18px #e6c96acc)}}@keyframes vcShake{0%,to{transform:translate(0)}20%{transform:translate(-7px)rotate(-3deg)}40%{transform:translate(6px)rotate(2deg)}60%{transform:translate(-4px)}80%{transform:translate(3px)}}@keyframes vcGuard{0%{filter:drop-shadow(0 0 #8fc98f00);transform:scale(.7)}55%{filter:drop-shadow(0 0 16px #8fc98fb3);transform:scale(1.12)}to{filter:drop-shadow(0 0 8px #8fc98f66);transform:scale(1)}}@keyframes vcFall{0%{opacity:1;transform:translateY(-6px)}to{opacity:.55;filter:grayscale();transform:translateY(6px)}}@media (prefers-reduced-motion:reduce){.turn-notice,.event-banner,.event-anim-rise,.event-anim-strike,.event-anim-hit,.event-anim-glow,.event-anim-bluff,.event-anim-fail,.event-anim-guard,.event-anim-fall{animation:none}}.rule-table{border-collapse:collapse;table-layout:fixed;width:100%;font-size:.8rem}.rule-table th,.rule-table td{border:1px solid var(--color-panel-border);text-align:left;vertical-align:middle;overflow-wrap:break-word;padding:5px 6px}.rule-table th{color:var(--color-gold-bright);background:#c9a7401f;font-weight:600}.rule-col-action{width:21%}.rule-col-challenge{width:11%}.rule-col-block{width:27%}.rule-table-action{font-weight:700}.rule-table-action .role-chip{margin-top:3px}.rule-action-name{display:block}.rule-table-center{text-align:center}.rule-table-blockers{flex-wrap:wrap;align-items:center;gap:3px;display:flex}.rule-table-blockers small{color:var(--color-text-muted)}.role-chip{border:1px solid var(--color-panel-border);white-space:nowrap;background:#0b0d1699;border-radius:999px;align-items:center;gap:4px;padding:1px 8px 1px 2px;display:inline-flex}.role-chip-image{object-fit:contain;width:22px;height:22px}.rule-table .role-chip{border-radius:6px;flex-direction:column;gap:1px;padding:2px 4px;font-size:.7rem;line-height:1.2}.rule-table .role-chip-image{width:20px;height:20px}.modal-header-buttons{gap:8px;display:flex}@media (width<=1399px){.rules-pin-button{display:none}}.rules-fab{z-index:40;font-size:.9rem;font-family:var(--font-body);letter-spacing:.08em;color:#221a05;background:linear-gradient(180deg, var(--color-gold-bright), var(--color-gold));border:1px solid var(--color-gold);cursor:pointer;border-radius:999px;padding:8px 18px;font-weight:700;position:fixed;top:12px;right:12px;box-shadow:0 4px 14px #00000080}.rules-fab:hover{background:linear-gradient(180deg, #f0d67d, var(--color-gold-bright))}.modal-overlay{z-index:50;background:#04050abf;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--color-panel);border:1px solid var(--color-gold);border-radius:12px;width:100%;max-width:640px;max-height:85vh;padding:20px 22px;overflow-y:auto;box-shadow:0 16px 48px #000000b3}.modal-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;display:flex}.modal-title{margin:0}.rules-focus-note{color:var(--color-gold-bright);border:1px solid var(--color-gold);background:#c9a7401a;border-radius:8px;margin:0 0 12px;padding:8px 12px;font-size:.9rem}.rule-section{border:1px solid var(--color-panel-border);background:#0b0d1680;border-radius:8px;margin-bottom:10px;padding:12px 16px}.rule-section-focus{border-color:var(--color-gold);box-shadow:0 0 0 1px var(--color-gold) inset}.rule-section-title{font-family:var(--font-heading);color:var(--color-gold-bright);letter-spacing:.08em;align-items:center;gap:10px;margin:0 0 8px;font-size:1rem;display:flex}.rule-focus-badge{font-size:.68rem}.rule-items{margin:0;padding-left:1.3em;font-size:.9rem}.rule-items li{margin-bottom:4px}.game-error-banner{border:1px solid var(--color-danger);background:#e084841a;border-radius:8px;align-items:center;gap:12px;max-width:1080px;margin:8px auto;padding:10px 14px;display:flex}.game-error-banner p{color:var(--color-danger);flex:auto;margin:0;font-size:.92rem}.self-card-notes{color:var(--color-text-muted);margin:8px 0 0;padding:0;font-size:.8rem;list-style:none}.self-card-notes strong{color:var(--color-gold-bright);font-weight:600}.dev-preview-page{min-height:100vh}.dev-controls{z-index:20;border-bottom:1px solid var(--color-gold);background:#060810f2;padding:8px 16px;position:sticky;top:0}.dev-controls-title{color:var(--color-gold-bright);letter-spacing:.08em;margin:0 0 6px;font-size:.78rem}.dev-controls-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.dev-select{max-width:340px;color:var(--color-text);background:var(--color-bg-deep);border:1px solid var(--color-panel-border);border-radius:8px;flex:220px;padding:8px 10px;font-size:.9rem}.dev-host-toggle{color:var(--color-text-muted);align-items:center;gap:6px;font-size:.85rem;display:inline-flex}.dev-message{color:var(--color-warning);margin:6px 0 0;font-size:.82rem}@media (width<=820px){.game-layout{grid-template-columns:1fr}.game-screen{padding:10px 12px 16px}.players-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.game-action-dock{z-index:10;border-color:var(--color-gold);max-height:60vh;position:sticky;bottom:8px;overflow-y:auto;box-shadow:0 -6px 24px #0009}.action-grid{grid-template-columns:1fr 1fr}.log-panel{max-height:none}.rules-fab{padding:10px 18px}.game-error-banner{margin:8px 0}}@media (width<=480px){.page{padding:20px 14px 48px}.panel{padding:18px 16px}.lobby-room-panel{flex-direction:column;align-items:stretch}.home-hero{padding-top:24px}}
