:root{color:#19212a;background:#eef2f6;font-family:Inter,Noto Sans JP,system-ui,sans-serif;line-height:1.5}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button{border:1px solid #b8c2ce;background:#fff;color:#17202a;border-radius:6px;padding:8px 12px;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}button.primary{background:#1f6feb;border-color:#1f6feb;color:#fff}button.danger{background:#b42318;border-color:#b42318;color:#fff}input,textarea,select{width:100%;border:1px solid #b8c2ce;border-radius:6px;padding:9px 10px;background:#fff;color:#101820}textarea{resize:vertical}.app{min-height:100vh;min-height:100dvh;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.topbar{display:flex;justify-content:space-between;align-items:center;padding:4px 24px;background:#17202a;color:#fff}.topbar h1,.topbar p{margin:0}.topbar h1{font-size:16px}.topbar p{color:#b8c2ce;font-size:13px}.session,.row,.sectionTitle,.actions,.targetPanel{display:flex;gap:8px;align-items:center}.session span{border:1px solid #3d4b5a;border-radius:999px;padding:4px 10px;font-size:12px}.session button{padding:4px 10px;font-size:12px}.identityBadge{font-weight:600}.notice{display:block;width:calc(100% - 48px);margin:12px 24px 0;border-color:#cf6b2c;background:#fff4ea;color:#7a3510;text-align:left}.modalOverlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f141c8c;display:flex;align-items:center;justify-content:center;padding:24px;z-index:100}.modalCard{background:#fff;border-radius:10px;padding:20px;max-width:420px;width:100%;max-height:85vh;overflow:auto;box-shadow:0 12px 32px #0f141c40}.modalCard h3{margin:0 0 10px;font-size:18px}.modalCard dl{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;margin:10px 0}.modalCard dt{color:#647386;font-size:13px}.modalCard dd{margin:0;font-size:13px}.modalCard .row{margin-top:16px;justify-content:flex-end}.lobby{display:block;padding:24px}.authPanel,.roomList,.entryPanel{background:#fff;border:1px solid #d6dde6;border-radius:8px;padding:18px}.authPanel{max-width:480px;margin:0 auto}.entryPanel{max-width:480px;margin:40px auto;text-align:center}.entryPanel h2{margin:0 0 4px;font-size:20px}.entryLead{color:#647386;margin:0 0 20px}.entryChoices{display:flex;flex-direction:column;gap:12px}.entryChoice{padding:18px;font-size:16px;font-weight:600;border-radius:10px}.entryLinks{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:20px;padding-top:16px;border-top:1px solid #d6dde6}.joinSettings{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid #d6dde6}.authPanel{display:flex;flex-direction:column;gap:12px;align-self:start}.formGrid{display:grid;grid-template-columns:minmax(80px,120px) 1fr;gap:10px}.authPanel h2,.roomList h2,.playersPane h3{margin:0;font-size:18px}label{display:grid;gap:6px;font-size:13px;color:#3e4b59}.sectionTitle{justify-content:space-between;margin-bottom:12px}.rooms{display:flex;flex-direction:column;gap:10px}.roomFilters{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr));gap:8px;margin-bottom:12px}.roomCard{display:flex;align-items:center;flex-wrap:wrap;gap:10px 20px;border:1px solid #d6dde6;border-radius:8px;padding:14px 16px;background:#fbfcfe}.roomCardBody{flex:1 1 480px;min-width:0}.roomCardActions{flex:0 0 auto;margin-left:auto}.roomCardHead{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.roomCard dl{display:flex;flex-wrap:wrap;gap:3px 8px;margin:8px 0 0}.roomCard dt{font-weight:600;color:#3e4b59}.roomCard dt:after{content:":"}.roomCard dd{margin:0 10px 0 0}.roomCard span,.roomCard dd,.roomCard dt,.empty{color:#647386}.rmBadge{display:inline-flex;max-width:100%;border:1px solid #c8d6e5;border-radius:999px;background:#f2f7fc;color:#2b567f;font-size:12px;padding:2px 8px;overflow-wrap:anywhere}.roomRmName,.roomRolePreset{color:#253242;font-weight:700}.experienceBadge{display:inline-flex;align-items:center;border-radius:4px;color:#fff!important;font-size:10px;font-weight:700;line-height:1.4;margin-left:5px;padding:1px 5px;white-space:nowrap}.experienceBadge.new,.experienceBadge.rookie{background:#78818c}.experienceBadge.beginner{background:#318b70}.experienceBadge.intermediate{background:#2874a6}.experienceBadge.advanced{background:#9b3f65}.identityWarning{display:inline-flex;border-radius:4px;color:#fff!important;font-size:10px;font-weight:700;line-height:1.4;margin-left:4px;padding:1px 5px;white-space:nowrap}.identityWarning.noTrip{background:#c24332}.identityWarning.sharedTrip{background:#a36a16}.roomRoleCounts{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}.roomRoleCount{display:inline-flex;border:1px solid #d6dde6;border-radius:999px;background:#fff;color:#46586c;font-size:12px;line-height:1.4;padding:2px 7px;white-space:nowrap}.roomComment,.roomRule{margin:10px 0 0;overflow-wrap:anywhere}.otherRoomsPanel{border:1px solid #bcd6c7;border-radius:8px;background:#f5fbf7;padding:12px}.rollCallPanel{border:1px solid #e0bd78;border-radius:8px;background:#fffaf0;padding:12px}.rollCallPanel.complete{border-color:#76b68b;background:#f1faf4}.rollCallPanel h3{margin:0}.rollCallPanel ul{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:6px;list-style:none;margin:10px 0;padding:0}.rollCallPanel li{display:flex;justify-content:space-between;gap:8px;border:1px solid #d7dde5;border-radius:6px;background:#fff;padding:7px 9px}.rollCallPanel li.confirmed{border-color:#76b68b;color:#27623a}.rollCallPanel li.pending span{color:#9a6518}.rmReadinessPanel{background:#fff;border:1px solid #d6dde6;border-radius:8px;padding:12px}.rmReadinessPanel h3{margin:0}.rmReadinessPanel ul{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;list-style:none;margin:0 0 8px;padding:0}.rmReadinessPanel li{display:grid;gap:3px;border:1px solid #d6dde6;border-radius:7px;padding:8px 10px}.rmReadinessPanel li.ready{border-color:#76b68b;background:#f1faf4;color:#27623a}.rmReadinessPanel li.attention{border-color:#d9ae68;background:#fff9ed;color:#855617}.rmReadinessPanel small{color:#647386}.warningText{color:#9a4f24}.successText{color:#27623a;font-weight:700}.otherRoomsPanel h3{margin:0}.otherRoomsPanel ol,.rmHistory ul,.playerStatsDetails ul{display:grid;gap:5px;list-style:none;margin:8px 0 0;padding:0}.otherRoomsPanel li,.rmHistory li,.playerStatsDetails li{display:grid;gap:2px;border-bottom:1px solid #dfe5eb;padding:5px 0}.otherRoomsPanel li.current{border-left:3px solid #318b70;padding-left:8px}.otherRoomsPanel li>div{display:flex;justify-content:space-between;gap:8px}.rmHistory{cursor:pointer}.rmHistory summary,.playerStatsDetails summary{cursor:pointer}.playerStatsDetails{color:#536476;font-size:11px;margin-top:5px}.playerStatsDetails dl{grid-template-columns:auto 1fr;margin:7px 0}.playerStatsDetails>strong{color:#35475a;display:block;margin-top:7px}.roleStatsTable{display:grid;gap:3px;margin-top:5px}.roleStatsTable>div{display:flex;justify-content:space-between;gap:8px;border-bottom:1px solid #eef2f6;padding:3px 0}.roomComment{color:#253242;font-size:14px}.roomRule{color:#647386;font-size:12px;white-space:pre-wrap}dl{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;margin:12px 0;font-size:13px}dd{margin:0}.gameShell{display:grid;grid-template-rows:auto 1fr auto;min-height:calc(100vh - 73px);padding:16px;gap:12px}.statusBand{display:grid;grid-template-columns:1fr auto minmax(140px,auto);gap:12px;align-items:center;background:#fff;border:1px solid #d6dde6;border-radius:8px;padding:12px}.statusBand h2,.statusBand p{margin:0}.statusBand p{color:#647386;font-size:13px}.statusBand .roomMeta{max-width:720px;overflow-wrap:anywhere}.bgmControl{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px;color:#4b5969;font-size:12px}.bgmControl button{min-height:32px;padding:4px 10px}.bgmControl small{color:#9b4b13}.timer{min-width:92px;font-variant-numeric:tabular-nums;font-size:24px;font-weight:800;text-align:center}.roleBox{display:grid;gap:2px;border-left:1px solid #d6dde6;padding-left:12px}.roleBox span{color:#647386;font-size:12px}.roomGrid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:12px;min-height:0}.chatPane,.playersPane,.controlDock,.moderationPanel,.settingsPanel{background:#fff;border:1px solid #d6dde6;border-radius:8px}.chatPane{display:grid;grid-template-rows:auto minmax(360px,1fr);min-width:0;min-height:0}.chatList{overflow:auto;padding:12px}.chatComposer{display:grid;grid-template-columns:120px minmax(0,1fr) auto auto;align-items:start;gap:8px;border-bottom:1px solid #d6dde6;padding:10px}.chatComposer select,.chatComposer .composerModeToggle,.chatComposer>button:last-child{align-self:center}.chatComposer textarea{resize:vertical;min-height:66px}.message{display:grid;grid-template-columns:52px minmax(90px,150px) minmax(0,1fr);gap:8px;padding:7px 4px;border-bottom:1px solid #eef2f6;overflow-wrap:anywhere}.message>span{white-space:pre-wrap}.message.compact{grid-template-columns:48px minmax(70px,110px) minmax(0,1fr);padding:4px 0;font-size:12px}.message.noTime{grid-template-columns:minmax(90px,150px) minmax(0,1fr)}.message.compact.noTime{grid-template-columns:minmax(70px,110px) minmax(0,1fr)}.message time{color:#7c8998;font-variant-numeric:tabular-nums}.message.system{color:#6a4213;background:#fff9ed}.message.wolf{color:#8b1f2d}.message.dead{color:#59616b}.playersPane{padding:12px;overflow:auto;display:flex;flex-direction:column;gap:12px}.sidebarActions{display:flex;flex-wrap:wrap;gap:6px}.sidebarActions button{padding:6px 10px;font-size:12px}.playersTable{width:100%;border-collapse:collapse;font-size:12px}.playersTable th{text-align:left;color:#647386;font-weight:600;border-bottom:1px solid #d6dde6;padding:4px 6px}.playersTable td{border-bottom:1px solid #eef2f6;padding:6px;vertical-align:top}.playersTable tr.dead td{opacity:.62}.playersTable td:first-child{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.playersTable .playerStats{flex-basis:100%;color:#4f6072;margin-top:2px}.roleSummary{display:flex;flex-wrap:wrap;align-items:center;gap:4px;font-size:12px;color:#3e4b59;border-top:1px solid #d6dde6;padding-top:10px}.sidebarSettings{border-top:1px solid #d6dde6;padding-top:10px;display:flex;flex-direction:column;gap:6px}.sidebarSettings .settingsOption{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px;font-size:12px}.controlDock{display:grid;grid-template-columns:minmax(260px,1fr) auto minmax(260px,1fr);gap:12px;padding:12px;align-items:start}.systemLog{max-height:126px;overflow:auto}.actions,.targetPanel{flex-wrap:wrap}.targetPanel{justify-content:flex-end}.moderationPanel{display:grid;gap:10px;padding:12px}.moderationPanel h3{margin:0;font-size:16px}.moderationList{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}.moderationAlert{border:1px solid #d6dde6;border-radius:8px;background:#fbfcfe;padding:10px}.moderationAlert.warning{border-color:#d89a64;background:#fff8f0}.moderationAlert>div:first-child{display:flex;justify-content:space-between;gap:8px}.moderationAlert span,.moderationAlert time{color:#647386;font-size:12px}.moderationAlert p{margin:8px 0;overflow-wrap:anywhere}.moderationAudit{margin:14px 0}.moderationAudit h3{margin:0 0 10px;font-size:16px}.moderationAuditList{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}.moderationAudit dl{margin:8px 0 0}.settingsPanel{display:grid;gap:10px;padding:12px}.settingsPanel h3{margin:0;font-size:16px}.roleCountGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;padding:10px;border:1px solid var(--line);border-radius:10px}.roleCountGrid label{display:grid;grid-template-columns:1fr 52px;align-items:center;gap:6px}.checkboxLabel{display:flex;align-items:center;align-self:end;min-height:40px}.checkboxLabel input{width:auto}.logPage,.replayPage,.helpPage{margin:24px;background:#fff;border:1px solid #d6dde6;border-radius:8px;padding:18px}.logPage h2,.logPage p,.replayPage h2,.replayPage p,.helpPage h2,.helpPage p{margin:0}.helpSection{border-top:1px solid #d6dde6;margin-top:18px;padding-top:18px}.helpSection h3{margin:0 0 12px;font-size:16px}.helpGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}.helpGrid.compact{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.settingsOption{display:flex;flex-direction:row;align-items:center;gap:8px;font-size:14px;color:#17202a}.settingsOption input{width:auto}.settingsHint{color:#647386;font-size:13px;margin:10px 0 0}.helpCard{border:1px solid #d6dde6;border-radius:8px;background:#fbfcfe;padding:14px}.helpCard>div{display:flex;justify-content:space-between;gap:10px}.helpCard span,.helpDefinition dd{color:#647386}.helpCard p{color:#253242;font-size:14px;margin-top:8px}.helpDefinition{grid-template-columns:minmax(90px,auto) 1fr;margin:0}.logSummary{margin:14px 0}.logSearch{display:grid;grid-template-columns:minmax(180px,1fr) minmax(140px,180px) auto auto;gap:8px;align-items:end;border:1px solid #d6dde6;border-radius:8px;background:#fbfcfe;margin:14px 0;padding:12px}.logSearch span{color:#647386;font-variant-numeric:tabular-nums;padding-bottom:9px}.logStats{border:1px solid #d6dde6;border-radius:8px;background:#fbfcfe;margin:14px 0;padding:12px}.logStats>div:first-child{display:flex;justify-content:space-between;gap:12px;margin-bottom:10px}.logStats h3{margin:0;font-size:16px}.logStats span,.logStats dd{color:#647386}.logStatsGrid{display:grid;grid-template-columns:minmax(180px,260px) minmax(0,1fr);gap:12px}.logStatsGrid dl{margin:8px 0 0}.logStatsGrid ol{display:grid;gap:6px;list-style:none;margin:8px 0 0;padding:0}.logStatsGrid li{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid #eef2f6;padding-bottom:5px}.logCards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin-top:14px}.logCard{border:1px solid #d6dde6;border-radius:8px;background:#fbfcfe;padding:14px}.logCard>div:first-child{display:flex;justify-content:space-between;gap:12px}.logCard span,.logCard dd{color:#647386}.logCard p{color:#253242;font-size:14px;margin:8px 0 0;overflow-wrap:anywhere}.logCard button{width:100%}.logCard .row button{width:auto;flex:1}.resultSummary{margin:14px 0}.resultSummary h3{margin:0 0 10px;font-size:16px}.resultGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}.resultCard{border:1px solid #d6dde6;border-radius:8px;background:#fbfcfe;padding:12px}.resultCard.win{border-color:#78b38c}.resultCard.lose{border-color:#d2a1a1}.resultCard>div{display:flex;justify-content:space-between;gap:10px}.resultCard span{border-radius:999px;background:#eef2f6;padding:2px 8px;font-size:12px}.resultCard.win span{background:#e8f5ed;color:#1f6a39}.resultCard.lose span{background:#fff0f0;color:#8a2d2d}.resultCard dl{margin:10px 0 0}.logList{max-height:calc(100vh - 230px);border:1px solid #d6dde6;border-radius:8px}.replayControls{display:grid;grid-template-columns:repeat(5,auto) minmax(78px,auto) minmax(160px,1fr);gap:8px;align-items:center;border:1px solid #d6dde6;border-radius:8px;background:#fbfcfe;margin:14px 0;padding:12px}.replayControls span{color:#647386;font-variant-numeric:tabular-nums;text-align:center}.replayStage{display:grid;grid-template-columns:280px minmax(0,1fr);gap:12px}.replayRoster,.replayTranscript{border:1px solid #d6dde6;border-radius:8px;background:#fbfcfe;min-width:0}.replayRoster{padding:12px}.replayRoster h3{margin:0 0 10px;font-size:16px}.replayRoster ul{display:grid;gap:8px;list-style:none;margin:0;padding:0}.replayRoster li{border:1px solid #d6dde6;border-radius:8px;background:#fff;display:grid;gap:3px;padding:9px 10px}.replayRoster li.win{border-color:#78b38c}.replayRoster li.lose{border-color:#d2a1a1}.replayRoster span{color:#647386;font-size:12px}.replayTranscript{display:grid;grid-template-rows:auto minmax(360px,1fr);overflow:hidden}.replayCurrent{border-bottom:1px solid #d6dde6;background:#fff;display:grid;gap:6px;min-height:116px;padding:16px}.replayCurrent time{color:#647386;font-size:12px}.replayCurrent strong{font-size:18px}.replayCurrent p{overflow-wrap:anywhere}@media(max-width:860px){button,input,select,textarea{min-height:44px}input,select,textarea{font-size:16px}.roomGrid,.controlDock,.statusBand,.replayControls,.replayStage,.chatComposer,.formGrid,.joinSettings,.roomFilters{grid-template-columns:1fr}.roomCardActions{margin-left:0;width:100%}.logSearch,.logStatsGrid{grid-template-columns:1fr}.topbar{align-items:flex-start;gap:10px;flex-direction:column}}
