:root { --ink:#1a2430; --muted:#6e7580; --paper:#f2f0e9; --surface:#fffdf8; --line:#d9d5ca; --night:#17293a; --night2:#29485a; --moon:#ebc76e; --blood:#a34747; --pine:#3d7165; --shadow:0 18px 45px rgba(20,34,43,.12); }
* { box-sizing:border-box; } body { margin:0; min-width:320px; min-height:100vh; background:var(--paper); color:var(--ink); font-family:"Noto Sans SC","PingFang SC",sans-serif; } button,input,select { font:inherit; } button { cursor:pointer; } button:disabled { cursor:not-allowed; } h1,h2,p { margin-top:0; }
.brand { display:flex; align-items:center; gap:10px; color:inherit; font-family:"Noto Serif SC","Songti SC",serif; font-weight:600; letter-spacing:2px; }.brand-mark { width:32px; height:32px; display:grid; place-items:center; border:1px solid var(--moon); color:var(--moon); font-size:18px; }.primary-btn,.outline-btn,.small-btn,.copy-btn { min-height:42px; border:1px solid var(--line); padding:0 15px; font-size:13px; }.primary-btn { color:#fffaf1; background:var(--blood); border-color:var(--blood); box-shadow:0 5px 12px rgba(163,71,71,.22); }.primary-btn span { padding-left:12px; font-size:17px; }.primary-btn:hover { background:#8d3738; }.outline-btn,.small-btn,.copy-btn { background:var(--surface); color:var(--ink); }.outline-btn:hover,.small-btn:hover,.copy-btn:hover { background:#eeeadd; }.form-error { min-height:18px; margin:12px 0 0; color:var(--blood); font-size:12px; }
.player-card.profile-card { cursor:pointer; }.share-actions { display:flex; gap:8px; justify-content:flex-end; }.share-note { margin:0 0 14px; color:var(--muted); font-size:12px; line-height:1.6; }.profile-public { display:flex !important; align-items:center; gap:7px; margin:12px 0; color:var(--ink) !important; font-size:12px !important; }.profile-public input { width:auto !important; height:auto !important; margin:0 !important; }
.head-actions { display:flex; align-items:center; gap:11px; }.sound-toggle { width:30px; height:30px; padding:0; border:1px solid rgba(255,255,255,.35); color:var(--moon); background:transparent; font-size:17px; }.sound-toggle:hover { color:#fffdf7; border-color:var(--moon); }
.rule-options { display:grid; gap:8px; margin:15px 0; padding:11px; border:1px solid var(--line); background:#f2eee4; }.rule-options label { color:#5d625f; font-size:11px; }.rule-options input { margin-right:6px; accent-color:var(--blood); }.vote-progress { padding:10px 0; color:#e5d0a0; border-top:1px solid rgba(226,205,151,.23); font-size:12px; }.history-list { max-height:180px; margin:13px 0; overflow:auto; border-top:1px solid rgba(226,205,151,.23); border-bottom:1px solid rgba(226,205,151,.23); }.history-list p { margin:0; padding:8px 0; color:#d3d0c8; border-bottom:1px solid rgba(226,205,151,.12); font-size:11px; line-height:1.5; }

.welcome { min-height:100vh; color:#f8f6ee; background:radial-gradient(circle at 74% 25%, rgba(235,199,110,.22) 0 52px, transparent 53px),linear-gradient(135deg,#142334,#284858 64%,#1b343e); }.welcome-head { max-width:1120px; margin:auto; padding:29px 24px; display:flex; align-items:center; justify-content:space-between; }.online-dot { color:#d5e4db; font-size:12px; }.online-dot::before { content:""; display:inline-block; width:7px; height:7px; margin-right:7px; border-radius:50%; background:#70b99e; }.welcome-content { max-width:1120px; min-height:calc(100vh - 90px); margin:auto; padding:48px 24px 76px; display:grid; grid-template-columns:1.1fr .9fr; align-items:center; gap:70px; }.eyebrow { margin-bottom:12px; color:#e6c76f; font-size:12px; letter-spacing:2px; }.welcome-copy h1 { margin-bottom:22px; font-family:"Noto Serif SC","Songti SC",serif; font-size:clamp(40px,5.4vw,70px); line-height:1.16; letter-spacing:3px; }.welcome-copy>p:not(.eyebrow) { max-width:485px; margin-bottom:30px; color:#d8dfdd; font-size:15px; line-height:1.9; }.rule-line { display:flex; flex-wrap:wrap; gap:18px; color:#e4d7b7; font-size:12px; }.rule-line span::before { content:""; display:inline-block; width:5px; height:5px; margin-right:7px; border-radius:50%; background:var(--moon); }.entry-stack { display:grid; gap:13px; }.entry-panel { padding:26px; border:1px solid rgba(255,255,255,.2); background:rgba(255,253,248,.98); color:var(--ink); box-shadow:var(--shadow); }.entry-panel h2 { margin-bottom:5px; font-family:"Noto Serif SC","Songti SC",serif; font-size:22px; }.entry-panel>p { margin-bottom:20px; color:var(--muted); font-size:12px; }.entry-panel label { display:block; margin-bottom:15px; color:var(--muted); font-size:12px; }.entry-panel input,.witch-controls select { display:block; width:100%; height:42px; margin-top:6px; padding:0 11px; border:1px solid var(--line); border-radius:0; outline:none; background:#fffefa; color:var(--ink); }.entry-panel input:focus,.witch-controls select:focus { border-color:var(--pine); box-shadow:0 0 0 2px rgba(61,113,101,.12); }.entry-panel .primary-btn { width:100%; }.join-panel { padding:20px 26px; background:rgba(255,253,248,.9); }.join-panel h2 { font-size:18px; }.join-fields { display:grid; grid-template-columns: .75fr 1.25fr; gap:9px; }.join-panel .outline-btn { width:100%; }.join-panel label { margin-bottom:13px; }

.lobby,.game { min-height:100vh; }.game-topbar { min-height:68px; padding:0 max(20px,calc((100vw - 1180px)/2)); display:flex; align-items:center; justify-content:space-between; color:#fffdf7; background:var(--night); }.leave { border:0; color:#d3d9d6; background:transparent; font-size:12px; }.leave:hover { color:#fff; }.lobby { background:linear-gradient(180deg,#e7e5dc 0,#f2f0e9 350px); }.lobby-main { max-width:1080px; margin:auto; padding:36px 24px 64px; }.room-code { display:flex; align-items:center; gap:16px; padding:21px 24px; color:#faf7ec; background:var(--night2); box-shadow:var(--shadow); }.room-code p { margin:0; color:#cbd5d1; font-size:12px; }.room-code strong { font-family:monospace; color:var(--moon); font-size:28px; letter-spacing:5px; }.room-code small { margin-left:auto; color:#cfdbd6; font-size:11px; }.copy-btn { border-color:rgba(255,255,255,.35); color:#fffdf7; background:transparent; }.lobby-columns { display:grid; grid-template-columns:1.05fr .95fr; gap:20px; margin-top:20px; align-items:start; }.panel { padding:25px; border:1px solid var(--line); background:var(--surface); box-shadow:var(--shadow); }.panel-title { display:flex; gap:12px; justify-content:space-between; align-items:flex-start; margin-bottom:18px; }.panel-title h2 { margin:0 0 5px; font-family:"Noto Serif SC","Songti SC",serif; font-size:22px; }.panel-title p { margin:0; color:var(--muted); font-size:12px; }.small-btn { min-height:32px; padding:0 10px; font-size:12px; }.player-list { display:grid; }.lobby-player { display:grid; grid-template-columns:30px 1fr auto auto; align-items:center; min-height:48px; border-bottom:1px solid #ece8de; font-size:14px; }.seat-no { color:var(--muted); font-family:"Noto Serif SC",serif; font-size:12px; }.lobby-player em { padding:3px 6px; color:#6e5269; border:1px solid #decdda; background:#f7edf3; font-size:10px; font-style:normal; }.lobby-player:not(:has(em)) em { color:var(--pine); }.lobby-player small { margin-left:8px; color:var(--muted); font-size:10px; }.role-row { display:grid; grid-template-columns:36px 1fr 90px; align-items:center; min-height:55px; border-bottom:1px solid #ece8de; }.role-glyph { display:grid; place-items:center; width:30px; height:30px; border-radius:50%; color:#fff; background:#778087; font-size:14px; }.role-glyph.wolf { background:var(--blood); }.role-glyph.seer { background:#4c6f9f; }.role-glyph.witch { background:#805e8d; }.role-glyph.guard { background:var(--pine); }.role-glyph.hunter { background:#936a3d; }.role-name { font-size:14px; }.stepper { display:grid; grid-template-columns:28px 28px 28px; justify-content:end; align-items:center; }.stepper button { width:28px; height:28px; padding:0; border:1px solid var(--line); background:var(--surface); font-size:17px; }.stepper b { text-align:center; font-size:13px; font-weight:500; }.role-total { margin:16px 0; color:var(--muted); font-size:12px; }.role-panel>.primary-btn { width:100%; }.waiting-box { padding:13px; color:#666a67; background:#eeece4; font-size:12px; text-align:center; }

.game { position:relative; isolation:isolate; overflow:hidden; background:#071017 url("https://images.unsplash.com/photo-1473448912268-2022ce9509d8?auto=format&fit=crop&w=1800&q=85") center/cover fixed; }.game::before { content:""; position:absolute; inset:0; z-index:-1; background:radial-gradient(ellipse at 50% 35%,rgba(33,62,70,.18),rgba(2,7,11,.82) 74%),linear-gradient(90deg,rgba(2,8,13,.7),rgba(2,8,13,.16) 53%,rgba(2,8,13,.75)); }.game::after { content:""; position:absolute; z-index:-1; left:-10%; right:-10%; bottom:0; height:34%; opacity:.4; background:radial-gradient(ellipse at 50% 100%,rgba(183,201,188,.35),transparent 64%); filter:blur(18px); }.game .game-topbar { background:rgba(4,12,18,.88); border-bottom:1px solid rgba(235,199,110,.24); }.phase-head { display:flex; align-items:baseline; gap:8px; color:#b8c7c4; font-size:12px; }.phase-head strong { color:var(--moon); font-family:"Noto Serif SC",serif; font-size:17px; font-weight:500; }.game-main { position:relative; z-index:1; display:grid; grid-template-columns:minmax(0,1fr) 310px; max-width:1320px; min-height:calc(100vh - 68px); margin:auto; }.table-wrap { display:grid; place-items:center; padding:20px; }.table-scene { position:relative; width:min(100%,940px); min-height:680px; aspect-ratio:1.18/1; }.forest-mist { position:absolute; inset:5% 0 0; pointer-events:none; background:radial-gradient(ellipse at 50% 84%,rgba(195,212,203,.22),transparent 47%),radial-gradient(ellipse at 18% 40%,rgba(111,137,126,.18),transparent 34%); filter:blur(9px); }.round-table { position:absolute; inset:18% 15%; border:13px solid #27160f; border-radius:50%; background:radial-gradient(circle at 33% 27%,rgba(190,126,61,.19),transparent 16%),repeating-radial-gradient(ellipse at center,rgba(152,90,42,.18) 0 2px,rgba(55,28,17,.25) 3px 7px),radial-gradient(circle,#5b321d 0%,#321b13 68%,#130c0b 100%); box-shadow:inset 0 0 0 3px rgba(240,184,94,.16),inset 0 0 55px rgba(0,0,0,.75),0 0 0 2px rgba(0,0,0,.7),0 26px 55px rgba(0,0,0,.68); }.round-table::before { content:""; position:absolute; inset:-22px; border:1px solid rgba(235,199,110,.23); border-radius:50%; box-shadow:0 0 26px rgba(236,170,70,.08); }.round-table::after { content:""; position:absolute; inset:21%; border:1px solid rgba(240,196,106,.2); border-radius:50%; }.table-center { position:absolute; inset:21%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; color:#f8eee0; text-align:center; text-shadow:0 2px 6px #000; }.table-moon { color:var(--moon); font-size:42px; line-height:1; text-shadow:0 0 18px rgba(235,199,110,.42); }.table-center p { margin:0; color:#d1b97e; font-size:11px; letter-spacing:2px; }.table-center strong { font-family:"Noto Serif SC",serif; font-size:24px; letter-spacing:2px; }.table-center small { max-width:150px; color:#dacbb4; font-size:10px; line-height:1.6; }.player-grid { position:absolute; inset:0; }.player-card { position:absolute; top:var(--seat-y); left:clamp(74px,var(--seat-x),calc(100% - 74px)); width:clamp(106px,12vw,142px); min-height:88px; padding:11px 12px; transform:translate(-50%,-50%); border:1px solid rgba(229,202,135,.43); border-radius:2px; color:#f5ecdc; background:linear-gradient(135deg,rgba(28,23,22,.95),rgba(13,18,20,.94)); box-shadow:0 9px 18px rgba(0,0,0,.48),inset 0 0 17px rgba(143,55,40,.12); text-align:left; transition:transform .18s ease,box-shadow .18s ease; }.player-card.selectable:hover { z-index:2; outline:1px solid var(--moon); outline-offset:2px; background:linear-gradient(135deg,#3c2521,#162327); box-shadow:0 0 22px rgba(236,184,90,.42); transform:translate(-50%,-50%) scale(1.04); }.player-card.dead { color:#998e83; border-color:rgba(103,72,66,.5); background:linear-gradient(135deg,rgba(24,20,20,.9),rgba(15,17,19,.9)); filter:grayscale(.8); }.player-card>span { color:#c6ad79; font:11px "Noto Serif SC",serif; }.player-card i { position:absolute; top:12px; right:12px; width:7px; height:7px; border-radius:50%; background:#9cceae; box-shadow:0 0 9px rgba(115,204,168,.7); }.player-card.dead i { background:#9d4141; box-shadow:0 0 8px rgba(191,64,64,.65); }.player-card strong { display:block; margin-top:11px; overflow:hidden; color:#fff8e8; font-family:"Noto Serif SC","Songti SC",serif; font-size:15px; text-overflow:ellipsis; white-space:nowrap; }.player-card small { display:block; margin-top:5px; color:#b5aaa0; font-size:10px; }.side-stack { margin:20px 0 20px 0; padding:25px 21px; border:1px solid rgba(225,197,131,.27); background:rgba(9,16,20,.86); box-shadow:-12px 0 40px rgba(0,0,0,.28); backdrop-filter:blur(7px); }.my-role { border-color:rgba(214,176,99,.45); background:rgba(80,55,29,.38); }.my-role small,.my-role p { color:#cfbf9c; }.my-role strong { color:#fff3d9; }.phase-kicker { color:#d8b96f; }.action-panel h2 { color:#fff3db; }.instruction { color:#d3d0c8; }.choose-hint,.submitted { color:#ead9a7; border-left-color:var(--moon); background:rgba(108,77,25,.34); }.submitted { color:#b7ded0; border-left-color:#77ad9b; background:rgba(43,87,72,.32); }.waiting-visual { color:#c0c5bf; }.timer { border-color:rgba(226,205,151,.23); }.timer span { color:#bcbcb3; }.witch-controls label { color:#d8d2c6; }.witch-controls .toggle-line { background:rgba(236,218,172,.12); }.witch-controls select { border-color:rgba(229,202,135,.38); background:#172025; color:#fff6e5; }.reveal-card { border-color:#c4a552; background:rgba(100,76,27,.38); }.reveal-card span,.reveal-card small { color:#e4d4a6; }.reveal-card strong { color:#fff2d4; }
@media (max-width:820px) { .welcome-content { grid-template-columns:1fr; gap:35px; padding-top:24px; }.welcome-copy h1 { font-size:48px; }.lobby-columns,.game-main { grid-template-columns:1fr; }.room-code { flex-wrap:wrap; }.room-code small { width:100%; margin-left:0; }.side-stack { border-top:1px solid var(--line); border-left:0; }.game-main { min-height:auto; }.player-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }.table-wrap { padding:24px 18px; } }
@media (max-width:480px) { .welcome-head { padding:22px 20px; }.welcome-content { padding:24px 20px 50px; }.welcome-copy h1 { font-size:39px; }.entry-panel { padding:22px; }.join-panel { padding:18px 22px; }.join-fields { grid-template-columns:1fr; gap:0; }.lobby-main { padding:20px 14px 40px; }.room-code { padding:19px; gap:11px; }.room-code strong { font-size:24px; }.panel { padding:20px; }.player-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }.player-card { min-height:108px; padding:12px; }.player-card strong { margin-top:12px; font-size:15px; }.game-topbar { padding:0 15px; }.game-topbar .brand { font-size:14px; }.phase-head { display:none; } }
@media (max-width:820px) { .game { background-attachment:scroll; }.table-wrap { padding:10px 10px 18px; }.table-scene { min-height:620px; }.round-table { inset:20% 14%; }.player-card { width:clamp(88px,18vw,118px); min-height:78px; }.side-stack { margin:0; }.game-main { grid-template-columns:1fr; } }
@media (max-width:480px) { .table-scene { min-height:525px; }.round-table { inset:23% 15%; border-width:9px; }.round-table::before { inset:-15px; }.table-center { inset:17%; }.table-moon { font-size:31px; }.table-center strong { font-size:18px; }.table-center small { max-width:105px; font-size:9px; }.player-card { width:72px; min-height:64px; padding:8px; }.player-card i { top:8px; right:8px; width:6px; height:6px; }.player-card strong { margin-top:8px; font-size:12px; }.player-card small { margin-top:3px; font-size:8px; }.player-card>span { font-size:9px; } }

/* Configurable roles, account tools, replay, and moderation. */
.icon-btn { width:30px; height:30px; padding:0; border:1px solid rgba(255,255,255,.35); color:var(--moon); background:transparent; font-size:16px; }.icon-btn:hover { border-color:var(--moon); color:#fff; }.role-glyph.cupid { background:#a95470; }.role-glyph.white_wolf_king { background:#6b3037; }.role-glyph.wolf_beauty { background:#874d76; }.custom-options { display:grid; grid-template-columns:1fr auto; gap:9px; align-items:end; margin:12px 0; padding:11px; border:1px solid var(--line); background:#f2eee4; }.custom-options label { display:grid; gap:5px; color:#5d625f; font-size:11px; }.custom-options select,.profile-dialog input,.profile-dialog select { min-height:32px; border:1px solid var(--line); background:#fffdfa; color:var(--ink); }.custom-options div { display:flex; gap:5px; }.player-tools { display:flex; gap:4px; margin-left:7px; }.player-tools button { width:23px; height:23px; padding:0; border:1px solid #d9d2c5; color:#76544e; background:#fffaf4; font-size:12px; }.profile-dialog p,.replay-dialog p { color:var(--muted); font-size:12px; line-height:1.6; }.profile-dialog label { display:grid; gap:5px; margin:11px 0; color:var(--muted); font-size:12px; }.profile-dialog .primary-btn { width:100%; }.replay-dialog { max-width:480px; }.replay-dialog #replay-line { min-height:92px; padding:15px; border:1px solid var(--line); background:#f5f0e5; }.replay-dialog #replay-line p { margin-bottom:5px; }.replay-dialog #replay-line strong { font-family:"Noto Serif SC",serif; font-size:16px; }.replay-controls { display:flex; justify-content:center; gap:8px; margin:13px 0; }.replay-controls button { min-width:70px; min-height:34px; border:1px solid var(--line); background:var(--surface); }.cupid-controls { padding:11px; color:#eed4dd; border:1px solid rgba(222,160,183,.38); background:rgba(109,47,76,.22); }.cupid-controls p { margin-bottom:10px; font-size:12px; }.quick-actions { display:flex; flex-wrap:wrap; gap:7px; margin:12px 0; }.voice-toggle.on { color:#9bd7be; border-color:#9bd7be; }
@media (max-width:480px) { .head-actions { gap:5px; }.icon-btn { width:27px; height:27px; }.custom-options { grid-template-columns:1fr; } }

/* Teaching, anonymous tables, quick speech, and public replay. */
.player-name-btn { min-width:0; overflow:hidden; padding:0; border:0; color:inherit; background:transparent; font:inherit; text-align:left; text-overflow:ellipsis; white-space:nowrap; }.player-name-btn:hover { color:var(--pine); text-decoration:underline; }.lobby-start-actions { display:grid; grid-template-columns:1fr 1fr; gap:8px; }.tutorial-tip { margin:10px 0; padding:9px 10px; border-left:3px solid #78ad9a; color:#cce5d5; background:rgba(40,81,67,.4); font-size:12px; line-height:1.55; }.quick-chat { display:flex; flex-wrap:wrap; gap:5px; margin:5px 0 10px; }.quick-chat .small-btn { min-height:27px; padding:0 7px; color:#e7d7b3; border-color:rgba(229,202,135,.3); background:rgba(67,58,41,.45); font-size:10px; }.rulebook-dialog,.player-profile { max-height:min(80vh,700px); overflow:auto; text-align:left; }.rulebook-dialog h2,.player-profile h2 { text-align:center; }.rulebook-roles { margin:13px 0; border-top:1px solid var(--line); }.rulebook-roles p { display:grid; gap:4px; margin:0; padding:10px 0; border-bottom:1px solid var(--line); color:var(--muted); font-size:12px; line-height:1.55; }.rulebook-roles b { color:var(--ink); }.player-profile small { color:var(--muted); }.confirm-dialog>div { display:flex; justify-content:center; gap:8px; }.confirm-dialog p { color:var(--muted); line-height:1.6; }.vote-matrix { max-height:170px; overflow:auto; margin:8px 0 15px; border:1px solid var(--line); text-align:left; }.vote-matrix p { margin:0; padding:9px; border-bottom:1px solid var(--line); color:var(--muted); font-size:11px; line-height:1.6; }.vote-matrix b { display:block; color:var(--ink); }.replay-dialog label { margin:12px 0; }.replay-dialog .outline-btn { margin-bottom:8px; }
@media (max-width:480px) { .lobby-start-actions { grid-template-columns:1fr; } }

/* Extended room controls and the no-host turn flow. */
.spectator-check { color:var(--muted); font-size:12px; }.spectator-check input { display:inline; width:auto; height:auto; margin:0 6px 0 0; }
.preset-list { display:flex; flex-wrap:wrap; gap:7px; margin:0 0 12px; }.preset-btn { min-height:30px; padding:0 9px; border:1px solid var(--line); color:var(--muted); background:#f7f4ec; font-size:11px; }.preset-btn.active { color:#fffaf1; border-color:var(--night2); background:var(--night2); }.seat-kick { width:24px; height:24px; margin-left:8px; border:1px solid #dec4c2; color:var(--blood); background:#fff7f4; font-size:16px; line-height:1; }.stat-strip { display:flex; justify-content:space-between; margin-top:18px; padding:11px 0 0; border-top:1px solid #ece8de; color:var(--muted); font-size:11px; }.stat-strip b { color:var(--night2); font-weight:600; }
.player-card.speaking { outline:1px solid #d7a94e; outline-offset:3px; box-shadow:0 0 26px rgba(235,199,110,.46); }.role-hidden { opacity:.8; }.table-deck { display:grid; gap:4px; place-items:center; width:82px; height:106px; margin:14px auto 0; border:1px solid rgba(235,199,110,.78); color:#f8e5bc; background:linear-gradient(135deg,#6f2228,#201319); box-shadow:4px 5px 0 #170e10,8px 10px 0 #2d1b1e,0 0 24px rgba(224,177,83,.46); font-family:"Noto Serif SC",serif; transform:rotate(-3deg); }.table-deck:hover { transform:rotate(0) translateY(-4px); }.table-deck span { font-size:27px; }.draw-role-btn { display:grid; gap:7px; width:100%; min-height:94px; border:1px solid rgba(235,199,110,.5); color:#f8e5bc; background:linear-gradient(120deg,rgba(103,37,40,.72),rgba(30,19,22,.88)); font-family:"Noto Serif SC",serif; }.draw-role-btn span { font-size:27px; }.speech-form textarea { width:100%; min-height:82px; margin:8px 0; padding:9px; resize:vertical; border:1px solid rgba(229,202,135,.38); color:#fff6e5; background:#172025; }.speech-form>div { display:flex; justify-content:flex-end; gap:8px; }.discussion-log { max-height:180px; margin:12px 0; overflow:auto; border-top:1px solid rgba(226,205,151,.2); border-bottom:1px solid rgba(226,205,151,.2); }.discussion-log p { margin:0; padding:8px 0; color:#d3d0c8; border-bottom:1px solid rgba(226,205,151,.1); font-size:11px; line-height:1.55; }.discussion-log b { display:block; margin-bottom:2px; color:#e5c77d; font-weight:500; }.phase-overlay { position:fixed; inset:0; z-index:10; display:grid; place-items:center; color:#f8e8be; background:rgba(1,5,8,.68); font:32px "Noto Serif SC",serif; letter-spacing:3px; animation:phaseFade .85s ease forwards; pointer-events:none; }.share-modal { position:fixed; inset:0; z-index:20; display:grid; place-items:center; padding:20px; background:rgba(7,14,19,.7); }.share-dialog { position:relative; width:min(390px,100%); padding:28px; color:var(--ink); background:#fffdf8; box-shadow:var(--shadow); text-align:center; }.share-dialog h2 { font-family:"Noto Serif SC",serif; }.share-dialog img { width:190px; height:190px; margin:8px auto 16px; image-rendering:auto; }.share-dialog label { display:block; text-align:left; color:var(--muted); font-size:11px; }.share-dialog input { width:100%; height:38px; margin:5px 0 14px; padding:0 8px; border:1px solid var(--line); color:var(--ink); background:#f7f5ee; font-size:11px; }.modal-close { position:absolute; top:8px; right:10px; border:0; color:var(--muted); background:transparent; font-size:23px; }@keyframes phaseFade { from { opacity:0; } 25% { opacity:1; } to { opacity:0; } }
.round-table::before,.round-table::after { pointer-events:none; }
.role-glyph.idiot { background:#8291a6; }.role-glyph.knight { background:#6f717d; }.role-glyph.gravekeeper { background:#58605e; }.preset-btn.active,.small-btn.active { color:#fffaf1; border-color:var(--night2); background:var(--night2); }.lobby-player em.offline { color:#8d7f79; border-color:#ded5ca; background:#f3f0ea; }.time-settings { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin:14px 0; }.time-settings label { color:var(--muted); font-size:11px; }.time-settings input { width:100%; height:32px; margin-top:5px; padding:0 7px; border:1px solid var(--line); background:#fffefa; }.player-card.sheriff { border-color:#e8c965; box-shadow:0 0 23px rgba(235,199,110,.42); }.player-card.offline { opacity:.62; }.player-card.offline i { background:#8b746c; box-shadow:none; }.sheriff-form { display:grid; gap:9px; }.sheriff-form label,.sheriff-form input { color:#ded5c5; font-size:12px; }.sheriff-form input:not([type="checkbox"]) { width:100%; height:38px; padding:0 9px; border:1px solid rgba(229,202,135,.38); color:#fff6e5; background:#172025; }.quick-actions { display:flex; flex-wrap:wrap; gap:8px; margin:10px 0; }.quick-actions .small-btn { color:#f7ead1; border-color:rgba(229,202,135,.42); background:rgba(55,65,65,.55); }.quick-actions .danger { color:#ffd1cc; border-color:rgba(191,76,70,.6); background:rgba(111,36,38,.52); }.chat-panel { margin-top:14px; padding-top:12px; border-top:1px solid rgba(226,205,151,.23); }.chat-panel h3 { margin:0 0 8px; color:#e5c77d; font:14px "Noto Serif SC",serif; }.chat-list { max-height:150px; overflow:auto; }.chat-list p { margin:0; padding:6px 0; color:#d8d5cd; border-bottom:1px solid rgba(226,205,151,.1); font-size:11px; line-height:1.45; }.chat-list b { display:block; color:#d3b46d; font-weight:500; }.chat-list .empty-chat { color:#919a96; }.chat-compose { display:grid; grid-template-columns:1fr 36px; gap:6px; margin-top:9px; }.chat-compose input { min-width:0; height:34px; padding:0 8px; border:1px solid rgba(229,202,135,.38); color:#fff6e5; background:#172025; font-size:12px; }.chat-compose button { border:1px solid rgba(229,202,135,.48); color:#f8e5bc; background:#563328; font-size:16px; }.vote-report { display:grid; gap:4px; margin:12px 0; padding:10px 0; border-top:1px solid rgba(226,205,151,.23); border-bottom:1px solid rgba(226,205,151,.23); color:#c9c6be; font-size:11px; }.vote-report b { color:#e5c77d; font-weight:500; }.vote-report span { display:block; }
.voice-toggle,.display-toggle { width:30px; height:30px; padding:0; border:1px solid rgba(255,255,255,.35); color:#c8c5bd; background:transparent; font-size:15px; }.voice-toggle.on { color:#9edbbd; border-color:#9edbbd; }.ready-box { display:grid; gap:9px; margin-top:15px; }.ready-box .primary-btn,.ready-box .outline-btn { width:100%; }.ready-box small { color:var(--muted); font-size:11px; }.ai-setting { display:block; margin:11px 0; color:var(--muted); font-size:11px; }.ai-setting select { width:100%; height:34px; margin-top:5px; border:1px solid var(--line); background:#fffefa; }.balance-warnings { margin:10px 0; padding:9px; color:#904843; border-left:3px solid #b45c55; background:#fbefeb; font-size:11px; line-height:1.6; }.home-community { display:grid; grid-template-columns:1fr 1fr; gap:10px; }.home-community>div { padding:14px; border:1px solid rgba(255,255,255,.22); background:rgba(9,22,30,.28); }.home-community h2 { margin:0 0 9px; color:#f7e9bd; font:15px "Noto Serif SC",serif; }.home-community p { margin:5px 0; color:#e2dfd4; font-size:11px; }.public-room { display:flex; width:100%; justify-content:space-between; margin:4px 0; padding:7px; border:1px solid rgba(255,255,255,.2); color:#fff5dc; background:rgba(8,16,23,.42); font-size:11px; }.public-room span { color:#c8d1ca; }.display-dialog { display:grid; gap:12px; text-align:left; }.display-dialog h2 { text-align:center; }.display-dialog label { color:var(--ink); font-size:13px; }.display-dialog select { width:100%; height:37px; margin-top:5px; border:1px solid var(--line); background:#fffefa; }
.ready-state { margin-left:7px; color:#548174 !important; font-size:10px !important; }
.room-tools { display:grid; grid-template-columns:1fr auto auto; gap:7px; align-items:end; margin:12px 0; padding:10px; border:1px solid var(--line); background:#f2eee4; }.room-tools label { display:grid; gap:4px; color:var(--muted); font-size:10px; }.room-tools input { min-width:0; height:30px; padding:0 6px; border:1px solid var(--line); background:#fffefa; font:10px monospace; }.room-tools label:last-of-type { grid-column:1 / span 2; }.room-tools .small-btn { min-height:30px; white-space:nowrap; }.relationship-map { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px; margin:8px 0 12px; }.relation-node { display:grid; gap:2px; margin:0 !important; padding:8px; border:1px solid var(--line); background:#f5f0e5; font-size:11px !important; }.relation-node b { color:var(--ink); }.relation-node span { color:var(--muted); }.relation-node.lover { border-color:#b66a85; background:#fbf0f3; }.relation-node i { color:#a34f70; font-size:10px; font-style:normal; }.lover-link { margin:8px 0 14px; color:#a34f70 !important; font-size:11px !important; }
body[data-theme="castle"] .game { background-image:url("https://images.unsplash.com/photo-1518709594023-6eab9bab7b23?auto=format&fit=crop&w=1800&q=85"); } body[data-theme="village"] .game { background-image:url("https://images.unsplash.com/photo-1448375240586-882707db888b?auto=format&fit=crop&w=1800&q=85"); } body[data-theme="cyber"] .game { background-image:linear-gradient(135deg,#10101b,#1d1332 48%,#082d37); } body.high-contrast { --ink:#000; --muted:#263545; --paper:#fff; --surface:#fff; --line:#202020; } body.high-contrast .game::before { background:rgba(0,0,0,.84); } body.large-text { font-size:118%; } body.reduce-motion *,body.reduce-motion *::before,body.reduce-motion *::after { animation:none !important; transition:none !important; } body.text-only .game { background:#111 !important; } body.text-only .forest-mist,body.text-only .round-table::before,body.text-only .round-table::after { display:none; } body.text-only .round-table { background:#242424; box-shadow:none; }
@media (max-width:600px) { .home-community { grid-template-columns:1fr; }.time-settings,.room-tools,.relationship-map { grid-template-columns:1fr; }.room-tools label:last-of-type { grid-column:auto; } }
