@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;600;700&family=Noto+Serif+KR:wght@500;700;900&display=swap');
:root{--bg:#111816;--panel:#18221f;--line:#344238;--gold:#d6bd82;--muted:#96a598;--ink:#eee9da;--green:#9bba95;--red:#d6796b}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px 'Noto Sans KR',sans-serif}button,input,select{font:inherit}button{cursor:pointer;background:#26342c;color:var(--ink);border:1px solid #4a5a48;padding:10px 14px;border-radius:3px;transition:.15s}button:hover{background:#354936;border-color:var(--gold)}button:disabled{opacity:.38;cursor:not-allowed}button.primary{background:var(--gold);color:#24291f;border-color:var(--gold);font-weight:700}button.danger{border-color:#875146;color:#efab9d}button.small{padding:6px 9px;font-size:12px}input,select{background:#111a16;border:1px solid #55604c;color:var(--ink);padding:11px;width:100%;border-radius:3px}h1,h2,h3,p{margin:0}h1,h2,.serif{font-family:'Noto Serif KR',serif}header{height:86px;display:flex;align-items:center;justify-content:space-between;padding:0 32px;border-bottom:1px solid var(--line);background:#141d18}.brand{display:flex;gap:15px;align-items:center}.seal{height:45px;width:45px;border:1px solid var(--gold);display:grid;place-items:center;color:var(--gold);transform:rotate(45deg)}.seal span{transform:rotate(-45deg);font:25px Georgia}.brand h1{font-size:23px;letter-spacing:4px}.overline{font-size:10px;letter-spacing:3px;color:var(--gold);margin-bottom:4px}.sub{font-size:12px;color:var(--muted)}.clock{display:flex;gap:8px;align-items:center}.clock button.active{color:#171c14;background:var(--gold)}.stats{display:grid;grid-template-columns:repeat(5,1fr);border-bottom:1px solid var(--line);padding:17px 32px;gap:20px}.stat{border-right:1px solid var(--line)}.stat:last-child{border:0}.stat strong{display:block;font-size:23px;color:var(--gold);font-weight:500}.stat span{font-size:11px;color:var(--muted)}.layout{display:grid;grid-template-columns:190px minmax(0,1fr);min-height:calc(100vh - 165px)}nav{padding:28px 18px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:8px}nav button{text-align:left;border:0;background:transparent;padding:14px 16px;color:#abb6a8}nav button.active{color:var(--gold);background:#273329;box-shadow:inset 2px 0 var(--gold)}nav .navfoot{margin-top:auto;padding:30px 10px 0;font-size:11px;color:var(--muted);line-height:1.9}main{padding:27px 30px;max-width:1680px;width:100%;margin:auto}.heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:23px;gap:15px}.heading h2{font-size:25px;font-weight:500;margin-bottom:6px}.tag{font-size:11px;letter-spacing:1px;border:1px solid #57664c;color:var(--gold);padding:5px 9px;display:inline-block}.overview{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:22px}.map{background:radial-gradient(ellipse at 50% 25%,#2e3c2c,#17211b 80%);border:1px solid #48543e;position:relative;padding:23px;overflow:hidden;min-height:530px}.map:before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 39px,#8d9a7610 40px),repeating-linear-gradient(90deg,transparent 0 39px,#8d9a7610 40px);pointer-events:none}.map-title{display:flex;justify-content:space-between;position:relative;margin-bottom:27px}.floor{display:grid;grid-template-columns:46px repeat(3,minmax(0,1fr));gap:13px;align-items:center;margin-bottom:24px;position:relative}.floor-label{color:var(--gold);font:23px Georgia}.room{min-height:117px;text-align:left;position:relative;padding:15px 12px;border:1px solid #697859;background:#283a2ce8;display:flex;flex-direction:column;gap:6px;box-shadow:0 7px 0 #0b120f60}.room:after{content:'';position:absolute;bottom:-18px;left:50%;height:16px;width:1px;background:#58684b}.room.red{background:#3a2926e8;border-color:#815047}.room.black{background:#272c2ce8;border-color:#626663}.room.violet{background:#302a3de8;border-color:#6e5b83}.room.neutral{background:#34362be8;border-color:#78755a}.room.selected{outline:2px solid var(--gold);outline-offset:3px}.room .room-icon{position:absolute;right:12px;top:14px;font:23px Georgia;opacity:.4}.room strong{font-size:13px;font-weight:500}.room small{font-size:10px;color:#b6bbaa}.room .owner{font-size:10px;color:var(--gold)}.room .dots{display:flex;gap:4px;margin-top:3px}.dots i{display:block;width:4px;height:7px;background:#c6cfab;animation:walk 2.3s infinite alternate}.dots i:nth-child(2n){animation-delay:.7s}.paused .dots i{animation-play-state:paused}@keyframes walk{to{transform:translateX(13px);opacity:.35}}.map-legend{display:flex;gap:15px;flex-wrap:wrap;font-size:10px;color:#b5bda9;margin-top:20px}.map-legend i{width:7px;height:7px;display:inline-block;margin-right:5px}.panel{background:var(--panel);border:1px solid var(--line);padding:20px}.panel h3{font-size:16px;font-weight:500;margin-bottom:13px}.panel p{font-size:12px;color:#b1bbaa;line-height:1.9}.stack{display:flex;flex-direction:column;gap:17px}.row{display:flex;justify-content:space-between;gap:12px;align-items:center}.divider{height:1px;background:var(--line);margin:17px 0}.kv{display:flex;justify-content:space-between;font-size:12px;margin:12px 0;color:#b0bba9}.kv b{color:var(--ink);font-weight:500}.actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.actions button{flex:1;font-size:12px}.progress{height:5px;background:#0f1712;margin:11px 0;overflow:hidden}.progress i{display:block;height:100%;background:var(--gold)}.logs{margin-top:22px;border:1px solid var(--line);padding:18px 21px}.logs h3{font-size:13px;font-weight:500;margin-bottom:12px}.log{display:flex;gap:17px;padding:9px 0;border-top:1px solid #29352d;font-size:12px;color:#b8c2b2}.log time{color:#80917d;min-width:46px}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.portrait{width:66px;height:80px;background:radial-gradient(ellipse at 50% 30%,#65745b,#25352b);border:1px solid #5d6c50;display:grid;place-items:center;font:33px 'Noto Serif KR',serif;color:var(--gold);position:relative;flex-shrink:0}.portrait:after{content:'';position:absolute;inset:5px;border:1px solid #c5bc812b}.person-head{display:flex;gap:15px;align-items:center;margin-bottom:18px}.person-head h3{margin:5px 0;font-family:'Noto Serif KR',serif}.pill{font-size:10px;color:var(--gold)}.trait{font-size:11px;color:#bac7ae;line-height:1.8;background:#111c15;padding:12px;margin:12px 0;min-height:57px}.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;text-align:center}.metric-grid strong{display:block;font-size:20px;font-weight:500}.metric-grid small{font-size:10px;color:var(--muted)}.wide{grid-column:1/-1}.empty{padding:40px;text-align:center;color:var(--muted)}.veil{position:fixed;inset:0;z-index:10;background:#060b09d9;backdrop-filter:blur(6px);display:grid;place-items:center;padding:20px}.veil[hidden]{display:none}.dialog{max-width:590px;width:100%;max-height:90vh;overflow:auto;background:#1d2921;border:1px solid #8a895f;padding:35px;box-shadow:0 30px 120px #000}.dialog h2{font-size:27px;color:var(--gold);margin:10px 0 14px}.dialog p{color:#b9c4b0;font-size:13px;line-height:1.9;margin-bottom:18px}.dialog label{display:block;margin:17px 0 7px;color:#bdc8b5;font-size:12px}.dialog .choices{display:grid;gap:9px}.dialog .choices button{text-align:left;line-height:1.8}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:var(--gold);color:#1c261a;padding:13px 25px;border-radius:3px;z-index:30;display:none;max-width:90vw}.faction-banner{height:4px;background:var(--gold);margin:-20px -20px 20px}.war{border-color:#9e6551}.hint{border-left:2px solid var(--gold);padding-left:12px;color:#bac5b1;line-height:1.8;font-size:12px;margin:14px 0}.toolbar{display:flex;gap:8px;flex-wrap:wrap}.danger-text{color:#e3a08d!important}.section-space{margin-top:22px}@media(min-width:1500px){.map{min-height:580px}.room{min-height:130px}.floor{margin-bottom:30px}}@media(max-width:1100px){.overview{grid-template-columns:1fr}.stack{display:grid;grid-template-columns:1fr 1fr}.cards{grid-template-columns:repeat(2,1fr)}.layout{grid-template-columns:155px 1fr}main{padding:22px 20px}.stats{padding:16px 20px}}@media(max-width:700px){header{height:auto;padding:16px;align-items:flex-start;gap:15px;flex-wrap:wrap}.brand h1{font-size:19px}.clock{margin-left:auto}.stats{gap:8px;padding:12px}.stat strong{font-size:18px}.stat span{font-size:9px}.layout{display:block}nav{position:sticky;top:0;z-index:3;flex-direction:row;overflow:auto;background:#141d18;padding:7px;border-right:0;border-bottom:1px solid var(--line)}nav button{white-space:nowrap;padding:11px;font-size:12px}nav .navfoot{display:none}main{padding:20px 12px}.heading h2{font-size:21px}.heading{align-items:flex-start}.map{padding:15px 10px;min-height:490px}.floor{grid-template-columns:26px repeat(3,minmax(0,1fr));gap:7px;margin-bottom:24px}.floor-label{font-size:17px}.room{padding:11px 7px;min-height:112px}.room strong{font-size:11px}.room small{font-size:9px}.room-icon{display:none}.stack,.cards{grid-template-columns:1fr}.dialog{padding:23px}.map-title{font-size:11px}.tag{font-size:9px}.stats .stat:last-child{display:none}.stats{grid-template-columns:repeat(4,1fr)}}
.atrium-banner{position:relative;margin:-23px -23px 24px;padding:45px 23px 22px;min-height:180px;background:linear-gradient(0deg,#101b17 0%,#101b1730 100%),url('assets/atrium.png') center 51% / cover;border-bottom:1px solid #887344;display:flex;flex-direction:column;gap:8px}.atrium-banner .overline{color:#f1d49c}.atrium-banner strong{font-size:24px;font-weight:600;color:#fff1cd;text-shadow:0 2px 8px #000}.atrium-banner>span:last-child{font-size:11px;color:#dedac8}.setup-art{height:170px;margin:-35px -35px 25px;background:linear-gradient(0deg,#1d2921,transparent 65%),url('assets/atrium.png') center 48% / cover}.room{min-height:125px;overflow:visible}.room .room-icon{opacity:.8;width:39px;height:39px;top:34px;right:10px;color:var(--gold)}.room-icon svg{width:100%;height:100%}.room strong{padding-right:37px}.room.red .room-icon{color:#f4a48b}.room.black .room-icon{color:#ccdbdf}.room.neutral .room-icon{color:#e2c994}.room.you .room-icon{color:#b6d4ab}.room.you{background:linear-gradient(130deg,#294131,#182b20)}.room.red{background:linear-gradient(130deg,#4a302b,#302020)}.room.black{background:linear-gradient(130deg,#303b40,#1e272b)}.room.neutral{background:linear-gradient(130deg,#454333,#2e3026)}.portrait{width:76px;height:96px;overflow:hidden}.portrait svg{width:100%;height:100%}.portrait.canon-icon{background:radial-gradient(circle,#645536,#26382c);padding:10px}.shade-card{border-color:#776184;background:linear-gradient(145deg,#2f263b,#1d2424)}.shade-mark{width:65px;height:65px;color:#cda9e5;float:right;margin:0 0 8px 12px}.shade-mark svg,.event-art svg{height:100%;width:100%}.event-art{height:100px;color:#c3a1dd;margin-bottom:16px;background:radial-gradient(ellipse,#79599555,transparent 70%);animation:shimmer 4s ease-in-out infinite alternate}.shade-event .overline,.shade-event h2{color:#d4b7e7}.shade-event .choices button{border-color:#73617d;background:#30273a}.audio-label{display:flex;justify-content:space-between;color:var(--muted);font-size:12px;margin:17px 0 8px}input[type=range]{padding:0;accent-color:var(--gold);cursor:pointer;height:20px;border:0}.room.selected{box-shadow:0 0 25px #d6bd8224}.room:hover .room-icon{transform:translateY(-3px);transition:.2s}@keyframes shimmer{to{opacity:.6}}@media(max-width:700px){.atrium-banner{margin:-15px -10px 20px;padding:35px 15px 19px;min-height:150px}.atrium-banner strong{font-size:18px}.room .room-icon{display:block;position:static;width:29px;height:29px;order:-1;opacity:.9}.room strong{padding-right:0}.room{min-height:145px}.setup-art{margin:-23px -23px 20px}.clock{flex-wrap:wrap}.event-art{height:75px}}
.floor-switch{display:flex;gap:7px;flex-wrap:wrap;margin:0 0 20px}.floor-switch button{flex:1;min-width:55px;padding:12px 8px}.floor-switch small{display:block;font-size:10px;opacity:.65;margin-top:5px}.floor-switch .active{border-color:var(--gold);color:var(--gold);background:#393825}.gold-floor{color:#e2c67d}.district-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:18px}.district-grid .room{min-height:156px;position:relative;text-align:left;display:flex;flex-direction:column;gap:9px}.staff-label{font-size:10px;opacity:.7;line-height:1.5}.floor-below{background:linear-gradient(150deg,#192729,#131a20)}.fifth-map{background:linear-gradient(140deg,#3e3421,#191b18)}.fifth-map .atrium-banner{border-color:#ad9253}.salon{padding:24px;border-bottom:1px solid #786944}.salon-stats{display:flex;gap:24px;margin:20px 0}.salon-stats b{display:block;font-size:24px;color:#d6bf85}.material-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:20px 0}.material-grid span{padding:10px;background:#ffffff05;font-size:12px}.material-grid b{float:right;color:var(--gold)}.npc-inline{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0}.season-banner{margin-bottom:20px;background:linear-gradient(110deg,#333c2a,#161e1c)}.gold-panel{border-color:#8d7950}.danger-text{color:#ef9b88}nav{min-width:185px}.room strong{line-height:1.45}.room-icon{width:28px;height:28px}.room-icon svg{width:28px;height:28px}.canon-icon svg{width:36px;height:36px}.actions{flex-wrap:wrap}
@media(max-width:1100px){.district-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.overview{grid-template-columns:1fr}.stack{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}}@media(max-width:650px){.district-grid{padding:10px;gap:7px}.district-grid .room{min-height:150px}.stack{display:block}.stack .panel{margin-top:12px}.salon{padding:16px}.salon-stats{gap:14px}.floor-switch button{flex-basis:18%}.stats{overflow-x:auto}.stat{min-width:115px}.room strong{font-size:13px}}
.sovereign-strip{display:flex;justify-content:space-between;gap:12px;align-items:center;background:#24352d;border:1px solid #64744a;padding:12px 18px;margin-bottom:20px;font-size:12px}.sovereign-strip b{color:var(--gold)}.sovereign-hero{background:radial-gradient(ellipse at top right,#5a4b28,#1b2821 66%);margin-bottom:22px}.landmark{border-color:#9c864f;background:linear-gradient(120deg,#333226,#1b2821)}.landmark h3{margin-top:12px}.buff-values{color:#e1ca88!important;font-weight:600}.landmark-star{color:#edc56e;font-size:12px}.command-icon{font-size:28px;color:#ddc583;display:block;margin-bottom:12px}.strain i{background:#bc7757}.active-edict{background:#ffffff07;border-left:2px solid #d5b26d;padding:10px;margin-top:10px}.active-edict small{display:block;margin-top:5px;color:#c4baa3}.giant-transmission{padding:14px;border-top:3px solid #a3a9b6}.giant-transmission.red{border-color:#cb6758}.giant-transmission blockquote{font-family:serif;font-size:23px;line-height:1.7;margin:20px 0;padding:12px 18px;border-left:2px solid #988960;color:#e8d2a2}.waveform{font-size:32px;letter-spacing:6px;color:#b6c7d0;margin-top:12px;animation:signal 2s ease-in-out infinite}.red .waveform{color:#d18472}.special-alert{margin:16px 0;border:1px solid #9297b8;background:#242a36}.special-event.warden{border-top:3px solid #829fe0}.special-event.thread{border-top:3px solid #92afa5}.special-event{padding-top:18px}input[type=checkbox]{width:auto;margin-right:9px}.choices button{text-align:left;line-height:1.6}@keyframes signal{50%{opacity:.45;letter-spacing:7px}}@media(prefers-reduced-motion:reduce){.waveform{animation:none}}@media(max-width:650px){.sovereign-strip{flex-direction:column;align-items:stretch}.giant-transmission{padding:0}.giant-transmission blockquote{font-size:19px}.waveform{letter-spacing:2px}}
.court-race{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0}.court-race span{flex:1;min-width:110px;padding:12px;border:1px solid #9d8550;background:#ffffff05;font-size:12px}.court-race b{display:block;font-size:23px;color:#e0c586;margin-top:7px}.mannequin-card{border-color:#945e56;background:linear-gradient(135deg,#302622,#172421)}.danger-strip{border-color:#bc7361;background:#352923}.ending-screen{max-width:920px;margin:0 auto;padding:65px 35px;min-height:100vh;background:radial-gradient(ellipse at top,#3f3c29,transparent 65%)}.ending-seal{font-size:70px;text-align:center;margin-bottom:25px}.ending-screen h1{font-size:38px;line-height:1.5;margin:18px 0 30px}.ending-story{font-family:serif;font-size:20px;line-height:2.1;color:#ded6bf}.ending-screen .overline{text-align:center}.ending-screen .actions{margin-top:30px}.room.outsider_ash{border-color:#9aafc4}.room.outsider_glass{border-color:#79c8c2}.room.outsider_thorn{border-color:#c3a0c6}@media(max-width:650px){.ending-screen{padding:30px 18px}.ending-screen h1{font-size:27px}.ending-story{font-size:18px}.court-race span{min-width:90px}}
.manager-label{font-size:11px;color:#b9d49a;padding:4px 0}.person-head+ p{min-height:42px}.court-race+button{margin-right:8px}
/* Persistent context for decisions and battles. */
.battle-tray{position:sticky;bottom:0;z-index:20;background:#192820f5;border-top:1px solid var(--gold);box-shadow:0 -5px 24px #0007;padding:12px 20px;backdrop-filter:blur(12px)}
.battle-tray .row{flex-wrap:wrap;gap:8px}.battle-pills{display:flex;gap:8px;overflow-x:auto;padding-top:8px}.battle-pills button{white-space:nowrap;flex-shrink:0}.prayer-panel{border-left:3px solid var(--gold);margin-bottom:20px}.prayer-panel blockquote{font-family:Georgia,serif;font-size:18px;line-height:1.7;color:#ded5b9}.panel label{display:block;margin:8px 0}.panel details{margin-top:12px}.war .actions{flex-wrap:wrap}.war .actions button{min-width:85px}@media(max-width:700px){.battle-tray{padding:10px}.prayer-panel blockquote{font-size:16px;margin:12px 0}}
.invasion-alert{position:sticky;bottom:0;z-index:25;background:#4c291e;border:1px solid #e9b664;color:#fff4d9;padding:12px 20px;display:flex;gap:20px;align-items:center;justify-content:center;flex-wrap:wrap}
/* Dense desktop control room, preserving readable text and mobile tap targets. */
.connection-panel{position:relative;margin:10px 12px;padding:10px;border:1px solid #72bab0;background:#142d29;display:grid;gap:7px;font-size:12px}.connection-panel>span{color:#b1cdc7;font-size:11px}.connection-chips{display:flex;flex-wrap:wrap;gap:5px}.connection-chips button{padding:6px 8px;font-size:12px;border-color:#74bdb0}.connection-chips small{display:block;color:#b6c3b7}.connection-chips .floor-link{border-style:dashed;color:#f3d591}.district-grid .room.connected{border:2px solid #71d8c1}.district-grid .room.unconnected{opacity:.65}.district-grid .room.selected{opacity:1}.room:after{display:none}.logistics-panel{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:10px}.logistics-panel span,.logistics-panel small{font-size:12px;color:#c1cbbb}.requirement-list{padding:0;list-style:none;font-size:12px}.requirement-list li{display:flex;justify-content:space-between;padding:4px 0}.ready{color:#a9dca5}.missing{color:#d9b88e}
.compact-ui header{height:56px;padding:0 18px}.compact-ui .brand h1{font-size:18px;letter-spacing:2px}.compact-ui .seal{width:30px;height:30px}.compact-ui .seal span{font-size:20px}.compact-ui .stats{padding:8px 18px;gap:12px}.compact-ui .stat strong{font-size:20px}.compact-ui .layout{grid-template-columns:158px minmax(0,1fr)}.compact-ui nav{padding:12px 8px;gap:3px}.compact-ui nav button{padding:9px 8px;font-size:12px}.compact-ui nav .navfoot{padding:12px 5px}.compact-ui main{padding:14px 16px;max-width:1900px;margin:0 auto}.compact-ui .heading{margin-bottom:12px}.compact-ui .heading h2{font-size:21px}.compact-ui .panel{padding:12px}.compact-ui .panel h3{font-size:14px;margin-bottom:8px}.compact-ui .panel p{line-height:1.6}.compact-ui .overview{grid-template-columns:minmax(0,1fr) 285px;gap:12px}.compact-ui .map{min-height:0;padding:0}.compact-ui .atrium-banner{padding:12px;min-height:0}.compact-ui .atrium-banner strong{font-size:18px}.compact-ui .district-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:12px}.compact-ui .district-grid .room{min-height:100px;padding:9px 8px;gap:4px;box-shadow:none}.compact-ui .staff-label,.compact-ui .manager-label{font-size:10px}.compact-ui .room-icon{right:7px;top:8px;font-size:19px}.compact-ui .cards{gap:10px}.compact-ui .stack{gap:10px}.compact-ui .actions{margin-top:10px;gap:5px}.compact-ui button{padding:7px 10px}.compact-ui .kv{margin:8px 0}.compact-ui .floor-switch{margin-bottom:10px;gap:5px}.compact-ui .floor-switch button{padding:7px 9px}.compact-ui .sovereign-strip{padding:7px 10px;margin-bottom:8px}.compact-ui .court-race{margin:10px 0;gap:6px}.compact-ui .court-race span{padding:8px}.compact-ui .court-race b{font-size:18px;margin-top:3px}.compact-ui .battle-tray{padding:7px 12px}.compact-ui .section-space{margin-top:14px}.compact-ui .panel[aria-label="전쟁 경보"]{margin-bottom:8px}.compact-ui .panel[aria-label="전쟁 경보"] .sub{font-size:11px;line-height:1.4}.compact-ui .logs{padding:10px;margin-top:12px}.compact-ui .log{padding:6px 0}
@media(min-width:1550px){.compact-ui .district-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media(max-width:1100px){.compact-ui .overview{grid-template-columns:minmax(0,1fr) 260px}.compact-ui .district-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:850px){.compact-ui .layout{grid-template-columns:1fr}.compact-ui nav{flex-direction:row;overflow-x:auto;position:static}.compact-ui nav button{white-space:nowrap;flex-shrink:0;min-height:40px}.compact-ui nav .navfoot{display:none}.compact-ui .overview{grid-template-columns:1fr}.compact-ui .stack{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.compact-ui header{height:auto;min-height:65px;flex-wrap:wrap;gap:10px;padding:12px}.compact-ui .brand h1{font-size:17px}.compact-ui .cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:550px){.compact-ui main{padding:10px}.compact-ui .district-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.compact-ui .stack,.compact-ui .cards{grid-template-columns:1fr}.compact-ui button{min-height:40px}.compact-ui .stats{overflow-x:auto;display:flex}.compact-ui .stat{min-width:115px}.compact-ui .clock{gap:5px}.compact-ui .district-grid .room{min-height:105px}}
.compact-ui .atrium-banner{margin:0;padding:10px 12px;gap:3px;min-height:60px}.compact-ui .floor-switch small{display:inline;margin:0 0 0 7px}.compact-ui .connection-panel{margin:8px 10px;padding:8px}.compact-ui .connection-panel>span{font-size:10px}.compact-ui .connection-chips small{display:inline;margin-left:5px}.compact-ui .heading .overline{display:none}.compact-ui .district-grid{padding:10px}.compact-ui .room.unconnected{opacity:.8}
@media(min-width:1000px){.compact-ui main:has(>.overview){display:grid;grid-template-columns:1fr 1fr;gap:8px;align-content:start;align-items:start}.compact-ui main:has(>.overview)>*{grid-column:1 / -1;margin-bottom:0}.compact-ui main:has(>.overview)>.logistics-panel{grid-column:1;padding:10px;min-height:90px}.compact-ui main:has(>.overview)>.panel[aria-label="전쟁 경보"]{grid-column:2;padding:10px;min-height:90px}.compact-ui main:has(>.overview)>.sovereign-strip{grid-column:auto;min-height:40px;padding:6px 9px;font-size:11px}.compact-ui main:has(>.overview)>.heading{margin:0}.compact-ui main:has(>.overview)>.heading p{display:none}.compact-ui main:has(>.overview)>.heading h2{font-size:19px;margin:2px 0}.compact-ui main:has(>.overview)>.floor-switch{margin:0}}

/* Supplied branding: compact during play, full artwork at the entrance. */
.brand .brand-logo{width:52px;height:52px;object-fit:contain;flex:none}.compact-ui .brand .brand-logo{width:44px;height:44px}.setup-art{height:220px;display:flex;justify-content:center;align-items:center;background:radial-gradient(ellipse at center,#6c4a2438,transparent 72%),#101713}.setup-logo{display:block;width:auto;max-width:100%;height:210px;object-fit:contain}@media(max-width:700px){.brand .brand-logo{width:42px;height:42px}.setup-art{height:190px}.setup-logo{height:180px}}

.floor-bonus-list>div,.clerks-table>div,.arrival-list>div{display:grid;grid-template-columns:1fr 2fr 1fr;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid #ffffff15}.floor-bonus-list,.clerks-table,.arrival-list{font-size:12px}.clerks-table{max-height:320px;overflow:auto}.panel details{margin-top:12px}.panel summary{cursor:pointer;color:var(--gold);padding:8px 0}@media(max-width:700px){.floor-bonus-list>div,.clerks-table>div,.arrival-list>div{grid-template-columns:1fr 1fr}.floor-bonus-list span{grid-column:1/-1;grid-row:2}}
/* v0.13: independent map/log and inspection heights, ownership colors preserved */
.district-grid .room.connected{outline:2px solid #71d8c1;outline-offset:1px;border-width:1px}.district-grid .room.unconnected{opacity:1}.map-column{min-width:0;align-self:start}.overview{align-items:start}.map-column .map{min-height:0}.map-column .logs{max-height:330px;overflow:auto;margin-top:10px}.inspection-stack{min-width:0;max-height:none;overflow:visible;padding-right:0}.assignment-list{display:grid;gap:8px;max-height:330px;overflow:auto}.assignment-list button{text-align:left;line-height:1.7}.scroll-cards{max-height:620px;overflow:auto;overscroll-behavior:contain;align-items:start}.escalator{color:#f5d994;font-size:13px;align-self:flex-end}.floor-bonus-list small{display:block;color:#cddabb;max-width:350px}.dialog blockquote{margin:18px 0;padding:16px;border-left:2px solid var(--gold);line-height:1.9}.room.outsider_vert{background:#223c29}.room.outsider_glass{background:#243448}.room.outsider_jaune{background:#403b24}.room.outsider_blanc{background:#3e4540}.room.outsider_ash{background:#34383c}.room.outsider_violet{background:#372b47}.room.outsider_rose{background:#442d39}.room.outsider_thorn{background:#3e3027}.room.outsider_orange{background:#463323}@media(max-width:850px){.map-column .logs{max-height:220px}.scroll-cards{max-height:65vh}}
.order-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}.order-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}.order-fields label{margin:6px 0}.order-fields input{margin-top:5px}.orders-list{display:grid;gap:8px;max-height:480px;overflow:auto;margin-top:12px}.report-scroll{max-height:260px;overflow:auto}.report-scroll p{padding:7px 0;border-bottom:1px solid var(--line)}@media(max-width:500px){.order-fields{grid-template-columns:1fr}}

.case-choices{display:grid;gap:10px;margin:16px 0}.case-choices button{text-align:left;white-space:normal;padding:14px}.case-choices span{display:block;font-size:12px;line-height:1.6;margin-top:6px;color:var(--muted)}

.empire-tabs{display:flex;gap:7px;flex-wrap:wrap;margin:12px 0}.empire-body{max-height:72vh;overflow:auto;padding:4px 7px 12px 0;scrollbar-width:thin}.empire-roster{display:grid;gap:8px;max-height:50vh;overflow:auto}.empire-roster details{border:1px solid var(--line);padding:10px;border-radius:8px}.empire-body .row{gap:10px;flex-wrap:wrap;margin:8px 0}.empire-body select{width:auto;max-width:100%}.empire-body input{max-width:240px}.empire-body .cards{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.empire-body details{margin:8px 0}.empire-body summary{cursor:pointer;padding:8px 0}.empire-hub{border-color:#aa8b4b}@media(max-width:700px){.empire-tabs button{flex:1 1 28%;padding:9px 5px}.empire-body{max-height:70vh}}

.map-priority-log{margin-bottom:12px}.map-priority-log .logs{margin-top:0;max-height:190px;overflow:auto;scrollbar-width:thin}.map-priority-log .logs>.row{position:sticky;top:0;background:var(--panel,#17201b);z-index:1;padding:6px 0}

/* Noir ownership remains black even when selected or connected. */
.room.black,.district-grid .room.black{background:#101012;border-color:#b49a5c;color:#f1cf79}
.room.black strong,.room.black small,.room.black .sub,.room.black .manager-label,.room.black .staff-label{color:#f1cf79}
.sworn-card{border:1px solid #d3ad57;background:linear-gradient(135deg,#322b1b,#181d1b 65%);box-shadow:inset 3px 0 #d3ad57}
.sworn-card .portrait{border:1px solid #d3ad57;background:#151514}.sworn-card .pill{color:#ffe1a0;border-color:#b99850}.sworn-card h3{color:#f0d28f}.sworn-insignia{font-size:28px;color:#e7c369;margin-bottom:6px}

.league-panel{border-color:#ba8960;background:#30251e;margin-bottom:12px}.league-panel h3{color:#f1ce98}

.league-watch{margin-bottom:10px;padding:9px 12px;border:1px solid var(--line)}.league-watch summary{color:#d2b887;cursor:pointer}

/* Live updates explicitly restore reading positions; browser anchoring must not fight them. */
#app{overflow-anchor:none}

/* Language controls stay compact; translated labels wrap without clipping. */
.language-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px;align-items:center}
.language-tabs button{min-width:74px;white-space:nowrap;font-family:inherit}
.language-tabs button[aria-pressed="true"]{border-color:var(--gold);color:var(--gold);background:#32291d}
html[lang="en"] button,html[lang="ja"] button{overflow-wrap:anywhere;line-height:1.4}
html[lang="en"] .room strong,html[lang="ja"] .room strong{white-space:normal;line-height:1.35}
html[lang="en"] .stat>span,html[lang="ja"] .stat>span{white-space:normal}
html[lang="ja"] body{font-family:"Noto Sans JP","Yu Gothic","Hiragino Kaku Gothic ProN",sans-serif}
.dialog>.language-tabs{position:relative;z-index:2}
.dialog>.language-tabs+.setup-art{margin-top:0}

.tutorial-choice{display:flex;align-items:center;gap:10px;margin-top:22px;padding:14px;border:1px solid var(--gold);cursor:pointer}.tutorial-choice input{width:20px;height:20px;margin:0;accent-color:#c6a869}.tutorial-panel{border:1px solid var(--gold);margin-bottom:16px;background:#242c24}.tutorial-top{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.tutorial-top span{font-size:12px;color:var(--muted)}

.achievement-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin:16px 0}.achievement-card{border:1px solid var(--rank);border-left-width:4px;padding:12px;background:#151719;border-radius:6px}.achievement-card h3,.achievement-card small{color:var(--rank)}.achievement-card p{font-size:12px;overflow-wrap:anywhere}.achievement-filters button{border-color:var(--rank);color:var(--rank)}.achievement-filters button[aria-pressed="true"]{box-shadow:inset 0 -3px var(--rank)}.ego-gifts{border-left:2px solid #d8b665;padding-left:10px;color:#e9d49c}.ego-gifts p{margin:6px 0}
/* Keep guide text readable in both spacious and compact dashboards. */
#app .tutorial-panel{font-size:18px;line-height:1.8;padding:22px;overflow-wrap:anywhere}
#app .tutorial-panel p{font-size:18px;line-height:1.85;color:#f0f2e9}
#app .tutorial-panel h3{font-size:24px;line-height:1.4;margin:14px 0 10px}
#app .tutorial-panel h2{font-size:22px;line-height:1.4}
#app .tutorial-panel .tutorial-top{font-size:17px;line-height:1.6}
#app .tutorial-panel .tutorial-top span{font-size:15px;color:#d2dacb}
#app .tutorial-panel button{font-size:16px;line-height:1.5;min-height:44px;padding:10px 16px;white-space:normal}
#app .tutorial-panel .floor-bonus-list{font-size:16px;line-height:1.7}
#app .tutorial-panel .floor-bonus-list small{font-size:15px;line-height:1.7}
#app .tutorial-panel .actions{gap:10px;flex-wrap:wrap;margin-top:18px}
.tutorial-choice{font-size:18px;line-height:1.6}
@media(max-width:600px){#app .tutorial-panel{padding:16px}#app .tutorial-panel h3{font-size:22px}#app .tutorial-panel .actions button{flex:1 1 140px}}
