: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}.room-code-block{flex-direction:column;display:flex}.room-code{font-family:var(--font-heading);color:var(--color-gold-bright);letter-spacing:.3em;font-size:2rem;font-weight:700;line-height:1.2}.room-code-inline{color:var(--color-gold-bright);letter-spacing:.2em}.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:1080px;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-room-code{color:var(--color-gold);letter-spacing:.1em;margin-left:12px}.game-layout{grid-template-columns:minmax(0,1fr) 280px;align-items:start;gap:0 20px;display:grid}.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}.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}.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}.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:cover;width:100%;height:100%;position:absolute;inset:0}.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{max-height:70vh;padding:16px 20px;overflow-y:auto}.log-list{color:var(--color-text);margin:0;padding-left:1.4em;font-size:.85rem}.log-entry{overflow-wrap:anywhere;margin-bottom:6px}.log-empty{color:var(--color-text-muted);margin:0;font-size:.85rem}.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}.room-code-block{align-items:center}.home-hero{padding-top:24px}}
