:root{color-scheme:dark;--bg:#090d16;--panel:#101622;--border:#2a3248;--text:#dce3f5;--muted:#8c99b6;--gold:#edc38d;--blue:#a6badf;--red:#e48791;font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;min-width:360px;background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.38}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--gold);outline-offset:4px}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.svg-library{position:absolute;width:0;height:0;overflow:hidden}.ambient{position:fixed;inset:0;z-index:-1;background:radial-gradient(ellipse at 27% 30%,#2a22312b,transparent 55%),radial-gradient(ellipse at 80% 0,#1d2c482e,transparent 50%);pointer-events:none}
.site-header{height:110px;padding:22px 32px;display:flex;align-items:center;justify-content:space-between;gap:24px;max-width:1920px;margin:auto}.brand{display:flex;align-items:center;gap:14px;text-decoration:none;color:#bfcbed}.brand-wolf{width:58px;height:65px;fill:#acbadc;stroke:#101625;stroke-width:2}.brand h1{margin:0;font-size:32px;letter-spacing:5px;font-weight:650;line-height:1.2}.brand p{margin:8px 0 0;font-size:12px;letter-spacing:2px;color:var(--muted)}.header-right{display:flex;align-items:center;gap:12px}.tagline{font-size:12px;line-height:1.8;text-align:right;margin:0 18px 0 0;color:#96a6c8;letter-spacing:.7px}.tagline span{display:block;color:#687b9f;font-size:11px}.icon-button{display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(145deg,#1e2539,#101622);border:1px solid #343f5c;border-radius:11px;color:#b3bfe3;width:44px;height:44px;transition:background .2s,border-color .2s}.icon-button:hover:not(:disabled){background:#2b344d;border-color:#667699}.icon-button svg{width:22px;height:22px}.text-button{border:0;background:transparent;color:#9facce;display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:6px 0}.text-button:hover{color:var(--gold)}.text-button svg{width:15px;height:15px}
.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 370px;gap:22px;max-width:1920px;margin:auto;padding:0 26px}.council{min-width:0}.room-toolbar{height:38px;padding:0 6px;display:flex;align-items:center;justify-content:space-between;color:#aab6cd;font-size:12px}.room-info,.room-tools{display:flex;align-items:center;gap:12px}.tiny-star{font-size:18px;color:var(--gold)}.divider{width:1px;height:12px;background:var(--border)}#board-label{color:#7e8ba8}.view-badge{display:flex;gap:6px;align-items:center;font-size:11px;color:#8092b8}.view-badge svg{width:15px}.room-tools{gap:18px}.room-stage{position:relative;height:calc(100vh - 276px);min-height:510px;max-height:920px;isolation:isolate;overflow:hidden;border-radius:14px;border:1px solid #30334166;background:#14151c}.room-art{position:absolute;inset:0;background:url('/static/assets/tavern.png') 50% 55%/cover;z-index:-3;filter:brightness(.82);transition:filter .4s}.room-vignette{position:absolute;inset:0;z-index:-2;background:linear-gradient(180deg,#090d162b,transparent 35%,#090d1640 78%,#090d16e6),radial-gradient(ellipse at 50% 50%,transparent 35%,#090d1673);pointer-events:none}.brighter .room-art{filter:brightness(1.1)}
.seats{position:absolute;inset:0}.player-seat{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);width:clamp(103px,10.5vw,164px);padding:0;border:0;background:transparent;color:var(--text);text-align:center;z-index:2;transition:filter .25s,opacity .25s}.player-seat:focus-visible{border-radius:12px}.portrait{width:100%;aspect-ratio:1.125;background-image:url('/static/assets/portraits.png');background-size:400% 300%;background-position:var(--px) var(--py);border-radius:48% 48% 18% 18%;box-shadow:0 4px 20px #0005;mask-image:linear-gradient(#000 65%,#000b 84%,transparent 100%);transition:filter .25s,transform .25s}.player-seat:hover .portrait{filter:brightness(1.15);transform:translateY(-3px)}.seat-name{position:relative;display:flex;align-items:center;gap:7px;background:linear-gradient(100deg,#0d1221ee,#111827ee,#0b101bdb);border:1px solid #52617c;border-radius:20px;padding:5px 10px 5px 5px;margin:-23px -3px 0;box-shadow:0 4px 9px #0008;max-width:calc(100% + 6px)}.seat-number{width:23px;height:23px;border:1px solid #9aa9ce;border-radius:50%;font-size:15px;display:grid;place-items:center;flex-shrink:0;color:#e0e7ff}.seat-nickname{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;letter-spacing:.3px;font-weight:600}.role-tag{position:relative;display:inline-block;padding:3px 12px;border-radius:0 0 6px 6px;background:#243452;border:1px solid #526d9b;border-top:0;font-size:11px;color:#bdd2f6;box-shadow:0 2px 8px #0006;letter-spacing:1px}.role-tag.werewolf{background:#4d242e;color:#f2a6af;border-color:#884455}.role-tag.seer{background:#35274e;color:#cab4ee;border-color:#685186}.role-tag.witch{background:#193d37;color:#a7d7c7;border-color:#3f6e64}.role-tag.hunter{background:#47351e;color:#e5c38c;border-color:#8e6b3b}.role-tag.waiting{background:#19202e;color:#9aa7bd;border-color:#434e63}.player-seat.dead{filter:grayscale(1);opacity:.4}.player-seat.dead::after{content:'已出局';position:absolute;top:28%;left:50%;transform:translateX(-50%) rotate(-10deg);padding:5px 12px;background:#090d16c9;border:1px solid #9a94a0;font-size:13px;white-space:nowrap}.seat-status{position:absolute;bottom:calc(100% - 3px);left:50%;transform:translateX(-50%);background:#121a2bea;color:#b6c6e7;box-shadow:0 3px 10px #0004;border:1px solid #697a9f;border-radius:13px 13px 13px 2px;padding:5px 10px;font-size:11px;white-space:nowrap;display:none;max-width:190px;overflow:hidden;text-overflow:ellipsis}.player-seat.thinking .seat-status,.player-seat.speaking .seat-status{display:block}.player-seat.thinking .seat-status::before{content:'✦ ';animation:pulse 1.5s infinite}.player-seat.speaking .seat-status{background:#ffe1ad;color:#563313;border-color:#dd9d4c;box-shadow:0 0 18px #eab16270}.player-seat.speaking .seat-name{border-color:#e4b46d}
.table-inscription{position:absolute;left:50%;top:53%;transform:translate(-50%,-50%);width:42%;text-align:center;color:#ffddb0;text-shadow:0 2px 8px #000;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:10px}.table-inscription>span:not(.inscription-line){font-family:Georgia,"Songti SC","SimSun",serif;font-size:clamp(18px,2.1vw,30px);letter-spacing:4px}.table-inscription small{font-size:10px;color:#dac6b0;letter-spacing:1px;line-height:1.7}.inscription-line{width:78px;height:1px;background:linear-gradient(90deg,transparent,#c4a17c,transparent)}.room-caption{position:absolute;bottom:15px;left:22px;right:22px;display:flex;align-items:center;gap:7px;color:#a3aabd;font-size:10px}.live-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#b89b71;box-shadow:0 0 8px #b89b7180}.caption-hint{margin-left:auto;color:#77839c}.dust{position:absolute;width:3px;height:3px;border-radius:50%;background:#e8bf78;box-shadow:60px 140px #d1a15c,160px 30px #bba66d,400px 350px #be9b5666,190px 260px #f3c87944,560px 120px #c3aa6f,600px 400px #d1a15c55;opacity:.25;left:10%;top:12%;pointer-events:none;animation:drift 12s linear infinite}.dust-two{left:25%;top:25%;animation-delay:-5s;animation-duration:18s}
.game-footer{display:grid;grid-template-columns:1.15fr 1fr;gap:14px;padding-top:16px}.phase-card,.control-card{border:1px solid #303952;border-radius:12px;background:linear-gradient(120deg,#111828dd,#0e131e);min-height:94px}.phase-card{display:flex;align-items:center;gap:18px;padding:15px 20px}.phase-moon{filter:drop-shadow(0 0 13px #698ac960);color:#f2cc97}.phase-moon svg{width:46px;height:46px;fill:currentColor;stroke-width:0}.phase-card h2{font-size:19px;letter-spacing:1px;margin:0 0 7px}.phase-card p{font-size:11px;color:#9ba8c2;line-height:1.6;margin:0}.control-card{padding:13px 15px}.control-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px;font-size:10px;color:var(--muted);gap:8px}.control-buttons{display:flex;gap:8px}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 19px;font-size:12px;border:1px solid #38435e;border-radius:8px;background:#202a40;color:#c4d0e9;min-height:38px}.button.gold{background:linear-gradient(120deg,#e9c691,#cfa56f);color:#32281c;border-color:#edc893;font-weight:600;box-shadow:0 2px 15px #c5903c13}.button.gold:hover:not(:disabled){background:#f5d6a6}.button svg{width:15px;height:15px}#primary-action{flex:1}.icon-button.small{width:38px;height:38px;border-radius:8px}.icon-button.small svg{width:17px;height:17px}.stop:hover:not(:disabled){color:#e6a1a7;border-color:#96545e}#connection-status{display:flex;align-items:center;gap:5px;white-space:nowrap}#connection-status i{width:5px;height:5px;border-radius:50%;background:#718097}#connection-status.online i{background:#8ec5a7;box-shadow:0 0 6px #8ec5a755}
.journal{position:relative;border:1px solid #303950;border-radius:14px;background:linear-gradient(155deg,#121927e8,#0c111beb 45%,#0c121deb);height:calc(100vh - 128px);min-height:658px;max-height:1068px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 15px 50px #0002}.journal-heading{padding:20px 19px 17px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #26314a;gap:10px;background:linear-gradient(110deg,#1b243533,transparent)}.journal-heading h2{font-size:20px;letter-spacing:2px;margin:0;display:flex;align-items:center;gap:11px;white-space:nowrap}.journal-heading h2 svg{color:#aebee2;width:22px;height:22px}select{border:1px solid #354059;background:#151d2d;color:#b7c4de;border-radius:7px;font-size:11px;padding:7px 10px;max-width:100%}.journal-heading select{width:105px}.journal-subhead{padding:10px 20px;display:flex;align-items:center;justify-content:space-between;color:#7786a3;font-size:10px;border-bottom:1px solid #1e283a}.journal-subhead .text-button{font-size:10px;padding:0}.event-feed{flex:1;overflow:auto;min-height:0;padding:3px 18px 12px;scrollbar-width:thin;scrollbar-color:#35405a transparent}.event-row{display:grid;grid-template-columns:37px 26px minmax(0,1fr);gap:9px;padding:16px 0;border-bottom:1px solid #222c3e7a;animation:appear .3s ease}.event-time{font-family:ui-monospace,monospace;font-size:10px;color:#6e7d9d;padding-top:5px}.event-icon{width:25px;height:25px;display:grid;place-items:center;border-radius:6px;background:#253554;color:#9bbde9}.event-icon svg{width:14px;height:14px}.event-row.phase .event-icon,.event-row.public .event-icon{background:#403121;color:#efd3a3}.event-row.vote .event-icon{background:#322749;color:#bdb0df}.event-row.error .event-icon,.event-row.violation .event-icon{background:#472631;color:#eda6b1}.event-row.private .event-icon{background:#28392f;color:#9dc8b1}.event-title{font-size:12px;line-height:1.65;font-weight:600;color:#bdcee9;margin:0 0 4px}.event-body{font-size:12px;line-height:1.95;color:#96a4be;margin:0;overflow-wrap:anywhere;white-space:pre-wrap}.event-row.phase .event-title,.event-row.public .event-title{color:#dfc49f}.event-row.error .event-title,.event-row.violation .event-title{color:#dc9aa7}.event-details{font-size:11px;line-height:1.8;color:#93a1be}.event-details summary{cursor:pointer;color:#9ba8c7}.event-details pre{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;max-height:280px;overflow:auto}.journal-footer{text-align:center;padding:10px 12px 15px;background:linear-gradient(0deg,#0c121d,transparent);color:#778cb1}.journal-footer>span{font-size:18px;color:#536584}.journal-footer p{font-size:10px;letter-spacing:2px;margin:4px}.feed-empty{text-align:center;display:flex;min-height:310px;height:100%;align-items:center;justify-content:center;flex-direction:column;color:#7b8aa8;padding:30px 10px}.feed-empty>svg{width:36px;height:36px;color:#53617e;margin-bottom:20px}.feed-empty h3{font-size:14px;color:#aab8d5;margin:0 0 12px;font-weight:500}.feed-empty p{font-size:11px;line-height:2.1;max-width:230px;margin:0}.feed-empty button{margin-top:20px}.new-events{position:absolute;bottom:72px;left:50%;transform:translateX(-50%);border:1px solid #667698;border-radius:20px;background:#293652;color:#d9e6ff;font-size:11px;padding:8px 16px;white-space:nowrap;box-shadow:0 4px 16px #0006}.page-footer{display:flex;justify-content:space-between;max-width:1920px;margin:auto;padding:14px 32px;font-size:9px;color:#56647e;letter-spacing:1px}.page-footer span:last-child{letter-spacing:2px;font-family:Georgia,serif}
dialog{color:var(--text);padding:0;background:#101622;border:1px solid #3b455f;border-radius:16px;box-shadow:0 30px 100px #0008;width:min(760px,calc(100vw - 36px));max-height:88vh}dialog::backdrop{background:#020611bd;backdrop-filter:blur(7px)}.dialog-heading{padding:24px 26px 20px;display:flex;align-items:flex-start;justify-content:space-between;gap:20px;border-bottom:1px solid #283248}.eyebrow{font-family:ui-monospace,monospace;letter-spacing:3px;font-size:9px;color:#aa916e}.dialog-heading h2{font-size:22px;letter-spacing:2px;margin:8px 0}.dialog-heading p{font-size:12px;line-height:1.7;color:var(--muted);margin:0}.dialog-heading .icon-button{width:34px;height:34px;flex-shrink:0}.roster-options{display:flex;align-items:center;gap:16px;padding:20px 26px 10px}.roster-options label{display:flex;align-items:center;gap:9px;font-size:12px;white-space:nowrap}.composition{font-size:11px;color:#9ca9c0;line-height:1.8}.roster-options>.text-button{margin-left:auto;white-space:nowrap}.roster-summary{display:flex;justify-content:space-between;align-items:center;padding:12px 26px;font-size:12px;color:#d2bc99}.roster-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:0 26px 18px;max-height:42vh;overflow:auto}.roster-player{border:1px solid #2b3549;border-radius:9px;background:#151d2c;color:#cad4e8;padding:12px;display:flex;align-items:center;gap:10px;text-align:left;cursor:pointer}.roster-player.selected{border-color:#a78c62;background:#2b29276e}.roster-player input{accent-color:#d6b482;flex-shrink:0}.roster-player strong{font-size:12px;font-weight:500;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roster-player small{display:block;font-size:10px;color:#7d8da9;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roster-player>div{min-width:0}.dialog-footer{padding:18px 26px;display:flex;justify-content:space-between;align-items:center;gap:16px;background:#0c121d;border-top:1px solid #283248}.dialog-footer>span{font-size:11px;color:#8593ad}.form-error{color:#e8a0aa;font-size:12px;line-height:1.7;margin:0;padding:0 26px 14px}.form-error:empty{display:none}.detail-dialog{width:min(600px,calc(100vw - 36px))}.detail-content{padding:20px 26px;max-height:65vh;overflow:auto}.archive-item{border-left:2px solid #43506c;background:#151d2b;margin-bottom:12px;padding:12px 15px;border-radius:0 7px 7px 0}.archive-item small{font-size:10px;color:#8393b0}.archive-item p{font-size:12px;line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0 0}.archive-item pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px;line-height:1.7;color:#aab8d3}.archive-item summary{font-size:11px;color:#b8c9ed;cursor:pointer;margin-top:8px}.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);z-index:1000;padding:13px 23px;border-radius:10px;border:1px solid #746143;background:#252321;box-shadow:0 10px 40px #0008;color:#ecd2ac;font-size:13px;max-width:90vw}.toast.error{border-color:#814957;background:#281b25;color:#e5a2ad}body.modal-open{overflow:hidden}[hidden]{display:none!important}.seats.count-12 .player-seat{width:clamp(88px,8.3vw,136px)}.seats.count-12 .seat-nickname{font-size:11px}.seats.count-12 .seat-name{padding-top:3px;padding-bottom:3px}.seats.count-12 .seat-number{width:20px;height:20px;font-size:12px}.seats.count-12 .role-tag{font-size:10px}.seats.count-6 .player-seat{width:clamp(125px,12vw,185px)}
@keyframes pulse{50%{opacity:.35}}@keyframes drift{to{transform:translate(18px,-65px)}}@keyframes appear{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1700px){.game-layout{grid-template-columns:minmax(0,1fr) 430px;gap:28px}.site-header{height:124px}.room-stage{height:calc(100vh - 290px)}.journal{height:calc(100vh - 142px)}.event-body{font-size:13px}.event-row{padding:19px 0}.player-seat{width:170px}}
@media(max-width:1150px){.game-layout{grid-template-columns:minmax(0,1fr) 310px;gap:14px;padding:0 18px}.site-header{padding:20px 24px}.room-stage{min-height:490px}.player-seat{width:112px}.seat-nickname{font-size:11px}.seat-name{gap:4px;padding-right:6px}.phase-card{padding:12px;gap:11px}.phase-card h2{font-size:16px}.phase-moon svg{width:34px;height:34px}.game-footer{grid-template-columns:1fr 1fr;gap:9px}.journal-heading{padding:18px 14px}.journal-heading h2{font-size:17px;gap:7px}.event-feed{padding-left:13px;padding-right:13px}.event-row{grid-template-columns:31px 23px minmax(0,1fr);gap:7px}.caption-hint{display:none}.control-card{padding:12px}.tagline{font-size:11px;margin-right:5px}.seats.count-12 .player-seat{width:90px}}
@media(max-width:900px){.game-layout{grid-template-columns:1fr;gap:20px;padding:0 18px}.site-header{height:96px;padding:18px 22px}.brand h1{font-size:27px}.brand-wolf{width:47px;height:52px}.brand p{font-size:10px;letter-spacing:1px}.tagline{display:none}.room-stage{height:620px;min-height:0}.player-seat{width:145px}.seat-nickname{font-size:12px}.journal{height:540px;min-height:0;max-height:none}.game-footer{grid-template-columns:1fr 1fr}.seats.count-12 .player-seat{width:115px}.seats.count-6 .player-seat{width:165px}.page-footer{padding:18px 22px}.room-caption{font-size:11px}.caption-hint{display:block}}
@media(max-width:560px){.site-header{height:88px;padding:14px 16px;gap:12px}.brand{gap:9px}.brand-wolf{width:38px;height:46px}.brand h1{font-size:23px;letter-spacing:3px}.brand p{font-size:8px;letter-spacing:1px}.header-right{gap:7px}.header-right .icon-button{width:36px;height:36px;border-radius:9px}.header-right .icon-button svg{width:19px;height:19px}.game-layout{padding:0 10px;gap:16px}.room-toolbar{font-size:10px;padding:0 5px}.room-info{gap:7px}.room-tools{gap:9px}.view-badge{display:none}.room-stage{height:480px;border-radius:10px}.room-art{background-position:center;background-size:auto 100%}.player-seat{width:92px}.portrait{border-radius:45% 45% 16% 16%}.seat-name{padding:3px;gap:4px;margin-top:-18px}.seat-number{width:19px;height:19px;font-size:12px}.seat-nickname{font-size:10px}.role-tag{font-size:9px;padding:2px 8px}.seat-status{font-size:9px;padding:4px 7px}.table-inscription>span:not(.inscription-line){font-size:17px;letter-spacing:2px}.table-inscription small{font-size:8px;letter-spacing:0}.table-inscription{width:42%;gap:8px}.room-caption{font-size:9px;left:12px;right:12px;bottom:11px}.caption-hint{font-size:8px}.game-footer{grid-template-columns:1fr;padding-top:10px;gap:9px}.phase-card{min-height:70px;padding:12px 16px;gap:15px}.phase-card h2{font-size:16px;margin-bottom:4px}.phase-card p{font-size:10px}.phase-moon svg{width:36px;height:36px}.control-card{min-height:87px;padding:12px 16px}.journal{height:490px;border-radius:10px}.journal-heading{padding:17px}.journal-heading h2{font-size:18px}.event-feed{padding:0 16px}.event-row{grid-template-columns:35px 26px minmax(0,1fr);gap:9px}.event-body{font-size:12px}.page-footer{padding:15px 14px;font-size:8px}.page-footer span:last-child{display:none}.roster-options{padding:16px;flex-wrap:wrap;gap:10px}.roster-options .composition{order:3;flex-basis:100%}.dialog-heading{padding:20px 17px}.dialog-heading h2{font-size:20px}.dialog-heading p{font-size:11px}.roster-summary{padding:10px 17px}.roster-list{grid-template-columns:repeat(2,minmax(0,1fr));padding:0 17px 17px;gap:8px}.roster-player{padding:10px 7px;gap:5px}.dialog-footer{padding:15px 17px}.dialog-footer>span{max-width:130px;line-height:1.7}.detail-content{padding:17px}.seats.count-12 .player-seat{width:76px}.seats.count-12 .seat-nickname{font-size:9px}.seats.count-12 .role-tag{font-size:8px}.seats.count-12 .seat-number{width:17px;height:17px;font-size:10px}.seats.count-6 .player-seat{width:112px}}
@media(min-width:901px) and (max-width:1699px){.room-stage{height:calc(100vh - 297px);min-height:415px}.journal{height:calc(100vh - 149px);min-height:563px}}
@media(min-width:901px) and (max-height:780px){.player-seat{width:104px}.seats.count-12 .player-seat{width:86px}.seats.count-6 .player-seat{width:110px}.seat-nickname{font-size:11px}.seat-status{font-size:10px}}
@media(max-width:560px){.player-seat{left:clamp(51px,var(--x),calc(100% - 51px))}.seats.count-6 .player-seat{left:clamp(62px,var(--x),calc(100% - 62px))}.seats.count-12 .player-seat{left:clamp(43px,var(--x),calc(100% - 43px))}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.seats.count-12 .player-seat{width:clamp(76px,7vw,112px)}
@media(min-width:901px) and (max-height:780px){.seats.count-12 .player-seat{width:78px}}
@media(max-width:560px){.seats.count-12 .player-seat{width:62px}.seats.count-12 .seat-name{gap:3px}.seats.count-12 .seat-nickname{font-size:8px}.seats.count-12 .role-tag{font-size:8px;padding:2px 5px}.seats.count-12 .seat-status{font-size:8px}}

/* 对白由服务端推进；气泡独立于席位按钮，暂停时可以一直阅读。 */
.room-stage.has-dialogue .table-inscription{opacity:0;transition:opacity .2s}
.player-seat.speaking{z-index:7}
.player-seat.speaking::before{content:'';position:absolute;inset:-7px -8px -6px;border:1px solid #ecc782;border-radius:24px 24px 13px 13px;background:linear-gradient(180deg,#e4b65f0d,#e4b65f17);box-shadow:0 0 0 3px #e3b97013,0 0 27px #eac77945;pointer-events:none;z-index:-1}
.player-seat.speaking .portrait{filter:brightness(1.13);transform:translateY(-2px)}
.player-seat.speaking .seat-name{border-color:#f2cd8a;box-shadow:0 0 0 1px #bd8a44,0 5px 17px #0008}
.player-seat.speaking .seat-number{border-color:#eed09c;color:#ffe3b1}
.player-seat.speaking .seat-status{display:none}
.player-seat.wolf-speaking::before{border-color:#cb7582;background:linear-gradient(180deg,#9c334913,#9c334930);box-shadow:0 0 0 3px #9c33491c,0 0 27px #c356694d}
.player-seat.wolf-speaking .seat-name{border-color:#d77d8c;box-shadow:0 0 0 1px #793644,0 5px 17px #0008}
.player-seat.wolf-speaking .seat-number{border-color:#ce8591;color:#f5c0ca}
.seat-dialogue{--dialogue-border:#b99662;--dialogue-background:#f3dfbd;--dialogue-text-height:180px;position:absolute;z-index:12;width:300px;max-width:calc(100% - 20px);padding:13px 15px 10px;border:1px solid var(--dialogue-border);border-radius:13px;background:linear-gradient(135deg,#fff1d8,var(--dialogue-background));color:#4a3825;box-shadow:0 13px 35px #0007,0 1px 0 #fff6 inset;text-align:left;isolation:isolate}
.seat-dialogue::before{content:'';position:absolute;z-index:-1;width:12px;height:12px;background:var(--dialogue-background);border:1px solid var(--dialogue-border);transform:rotate(45deg);pointer-events:none}
.seat-dialogue[data-side=right]::before{left:-7px;top:calc(var(--tail-y,50%) - 6px);border-top:0;border-right:0}
.seat-dialogue[data-side=left]::before{right:-7px;top:calc(var(--tail-y,50%) - 6px);border-bottom:0;border-left:0}
.seat-dialogue[data-side=bottom]::before{top:-7px;left:calc(var(--tail-x,50%) - 6px);border-bottom:0;border-right:0}
.seat-dialogue[data-side=top]::before{bottom:-7px;left:calc(var(--tail-x,50%) - 6px);border-top:0;border-left:0}
.dialogue-heading{display:flex;align-items:center;gap:7px;min-width:0;color:#674a28;margin-bottom:5px}
.dialogue-heading svg{width:16px;height:16px;flex-shrink:0;stroke-width:1.7}
.dialogue-speaker{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:700;line-height:1.65}
.dialogue-channel{color:#967749;font-size:9px;line-height:1.7;letter-spacing:.2px;border-bottom:1px solid #ae8a503d;padding-bottom:8px;margin-bottom:8px;overflow-wrap:anywhere}
.dialogue-text{font-size:12px;line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere;max-height:var(--dialogue-text-height);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#b89a6e #c7a56c18;padding-right:4px;outline-offset:2px}
.dialogue-text:focus-visible{outline:1px solid #9a773e;border-radius:3px}
.dialogue-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;border-top:1px solid #ae8a5030;margin-top:9px;padding-top:7px;min-width:0}
.dialogue-hold{font-size:9px;color:#967a53;line-height:1.6}
.dialogue-archive{border:0;background:transparent;color:#805b2d;font-size:10px;white-space:nowrap;padding:3px 0 3px 5px;min-height:24px;flex-shrink:0;cursor:pointer}
.dialogue-archive:hover{color:#422e17;text-decoration:underline}
.seat-dialogue.is-paused .dialogue-hold{color:#866037;font-weight:600}
.dialogue-wolves{--dialogue-border:#945365;--dialogue-background:#321b27;background:linear-gradient(135deg,#412332,#271823);color:#efc8d0;box-shadow:0 13px 35px #0009,0 0 20px #812b452a}
.dialogue-wolves .dialogue-heading{color:#f1bdc8}
.dialogue-wolves .dialogue-channel{color:#c991a3;border-color:#9d57674a}
.dialogue-wolves .dialogue-text{scrollbar-color:#955767 #542c3b;}
.dialogue-wolves .dialogue-text:focus-visible{outline-color:#cd8a9b}
.dialogue-wolves .dialogue-footer{border-color:#9d576740}
.dialogue-wolves .dialogue-hold{color:#b58494}
.dialogue-wolves .dialogue-archive{color:#e6afbd}
.dialogue-wolves .dialogue-archive:hover{color:#ffe2ea}
.dialogue-wolves.is-paused .dialogue-hold{color:#e2a8b9}
.event-row.wolf_chat .event-icon{background:#462637;color:#dba2b2}
.event-row.wolf_chat .event-title{color:#d2a0b0}
.event-row.wolf_chat .event-body{color:#b397a8}
.event-private-label{font-size:9px;line-height:1.7;color:#926d81;margin-top:7px}
.archive-item.wolf-chat{border-color:#915164;background:#271c2a}
.archive-item.wolf-chat small{color:#c79aab}
@media(max-width:560px){.seat-dialogue{padding:10px 11px 8px;border-radius:10px}.dialogue-speaker{font-size:11px}.dialogue-channel{font-size:8px;padding-bottom:6px;margin-bottom:6px}.dialogue-text{font-size:11px;line-height:1.85}.dialogue-footer{gap:5px;padding-top:5px;margin-top:7px}.dialogue-hold{font-size:8px}.dialogue-archive{font-size:9px}.player-seat.speaking::before{inset:-4px -4px -4px;border-radius:18px 18px 10px 10px}}
