@font-face{font-family:GameUI;src:local("Segoe UI");font-display:swap}
[hidden]{display:none!important}
:root{--ink:#283b3d;--paper:#fff3d6;--muted:#6b7465;--gold:#eaba59;--teal:#226b70;--line:#a78346;--shadow:0 5px 0 #253b3b66,0 12px 28px #071c2b30}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden;background:#102c37;color:var(--ink);font-family:GameUI,"Segoe UI",system-ui,sans-serif;font-size:14px}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.5}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #3cb5b8;outline-offset:3px}button{touch-action:manipulation}svg.icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}#game{width:100%;height:100%;display:block;outline:none}#entrance{position:fixed;inset:0;z-index:20;overflow:auto;display:grid;place-items:center;background:radial-gradient(ellipse at 20% 15%,#367477 0,transparent 55%),radial-gradient(ellipse at 100% 90%,#77634166,transparent 55%),linear-gradient(145deg,#163b49,#0b2533);padding:36px 24px}#entrance:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.11;background-image:linear-gradient(#a6dcc244 1px,transparent 1px),linear-gradient(90deg,#a6dcc244 1px,transparent 1px);background-size:64px 64px;mask-image:linear-gradient(#000,transparent)}
.welcome{position:relative;width:min(1060px,100%);text-align:center}.welcome-logo{display:block;width:min(720px,94%);height:auto;margin:0 auto 24px;filter:drop-shadow(0 15px 18px #001b2977)}.eyebrow{color:#f0cc80;text-transform:uppercase;letter-spacing:.20em;font-size:11px;font-weight:800}.welcome h1{color:#fff2d8;font-size:clamp(25px,3vw,37px);line-height:1.12;margin:10px 0 14px;text-shadow:0 3px 0 #001b2966;letter-spacing:-.025em}.welcome .intro{max-width:580px;margin:0 auto 24px;color:#cedfd6;line-height:1.65;font-size:16px}.welcome .play{min-width:250px;padding:17px 28px;font-size:17px}.welcome .features{display:flex;justify-content:center;gap:32px;margin:30px auto;color:#d5e4d9}.features span{display:flex;align-items:center;gap:9px;font-weight:600;font-size:13px}.features .icon{color:#edc66e}.welcome details{color:#cfddd5;margin:20px auto;max-width:610px;text-align:left}.welcome summary{text-align:center;cursor:pointer;font-size:13px;color:#eac677}.welcome details p{font-size:13px;line-height:1.75;background:#0b223988;padding:16px 22px;border-radius:12px}.welcome footer{font-size:11px;color:#97b4b2;line-height:1.8}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.loading{display:none;max-width:380px;margin:24px auto;color:#e5e6ce}progress{width:100%;height:10px;accent-color:var(--gold);border-radius:10px}#status{font-size:13px}#error{display:none;max-width:580px;margin:18px auto;padding:16px;color:#ffe1bd;background:#672a27;border-radius:12px;white-space:pre-wrap}
.gold-button,.teal-button,.soft-button,.tool{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:750;border-radius:9px;border:1px solid #9b7133;box-shadow:inset 0 1px 0 #fff8,0 3px 0 #73542f;transition:transform .12s,filter .12s;min-height:38px;padding:8px 13px;color:#3b321e;background:linear-gradient(#f9da87,#e8b449)}.gold-button:hover,.teal-button:hover,.soft-button:hover,.tool:hover{filter:brightness(1.08);transform:translateY(-1px)}.gold-button:active,.teal-button:active,.soft-button:active,.tool:active{transform:translateY(2px);box-shadow:inset 0 1px 0 #fff4,0 1px 0 #73542f}.teal-button{background:linear-gradient(#3f8a8c,#22666f);border-color:#164e59;color:#fff2cf;box-shadow:inset 0 1px 0 #a6ddd888,0 3px 0 #153e4c}.soft-button{background:linear-gradient(#fff7e4,#e6d6b5);color:#46514a;border-color:#b8a67f;box-shadow:inset 0 1px 0 white,0 2px 0 #b6a17b}.soft-button:disabled:hover{transform:none;filter:none}
#hud{position:fixed;inset:0;pointer-events:none;z-index:5;font-variant-numeric:tabular-nums}#hud[hidden],#restore[hidden]{display:none}#hud button,#hud input,#hud select,#hud .panel{pointer-events:auto}.bar{position:absolute;top:12px;display:flex;align-items:center;gap:8px}.brand-bar{left:12px;gap:12px;padding:5px 12px 5px 8px;border:1px solid #ac8752;border-bottom:3px solid #776447;background:linear-gradient(120deg,#fff0cd,#e7dcc2);box-shadow:var(--shadow);border-radius:13px;min-height:52px}.brand-bar img{width:106px;height:43px;object-fit:contain}.live-info{border-left:1px solid #b0a17d;padding-left:12px;font-size:11px;color:#697766;line-height:1.7}.live-info strong{font-size:13px;color:#2d4b4e}.live-dot{display:inline-block;background:#3b9c7c;width:6px;height:6px;border-radius:50%;margin-right:5px;box-shadow:0 0 0 3px #3b9c7c18}.tools{right:12px;padding:6px;gap:6px;background:#173f4ae8;border:1px solid #788e7c;border-bottom:3px solid #102b37;border-radius:12px;box-shadow:var(--shadow)}.tool{min-height:36px;background:linear-gradient(#f5ead0,#dac9a8);box-shadow:inset 0 1px 0 #fff9,0 2px 0 #756a50;border-color:#b7a47b;color:#365356;padding:7px 10px;font-size:12px}.tool.icon-only{width:36px;padding:7px}.tool[aria-pressed=true]{background:linear-gradient(#4a9894,#23686e);color:#fff2cb;border-color:#80c7b7;box-shadow:inset 0 1px 0 #bbf0d666,0 2px 0 #123d49}.tool.primary{background:linear-gradient(#ffdb7d,#e5ae45);color:#40331b}.tool kbd{font-size:10px;opacity:.6;font-weight:500}.status-chip{position:absolute;bottom:14px;left:14px;max-width:calc(100vw - 60px);display:flex;align-items:center;gap:8px;padding:6px 8px;background:#173c49ed;color:#e8eedb;border:1px solid #90aaa0;border-radius:11px;box-shadow:0 4px 12px #07233044;font-size:12px}.status-chip button{border:0;background:none;color:inherit;padding:5px;display:flex;align-items:center;gap:8px}.status-chip .status-main{font-weight:650}.status-chip small{font-size:11px;color:#b0c7be}.status-chip .icon{width:17px;height:17px}.close{border:0;background:#d6c7aa;color:#6c6655;display:grid;place-items:center;border-radius:7px;width:29px;height:29px;padding:6px;flex-shrink:0}.close:hover{background:#c8b48b;color:#3b423c}.close .icon{width:16px;height:16px}.status-chip .close{background:#ffffff12;color:#b6cbc2;width:24px;height:24px}.panel{position:absolute;top:80px;right:14px;bottom:72px;width:min(410px,calc(100vw - 28px));background:linear-gradient(120deg,#fff4d9,#f0e6ce);border:2px solid #aa8956;border-bottom:5px solid #766144;border-radius:15px;box-shadow:0 16px 48px #03172266,inset 0 1px 0 #fff;display:flex;flex-direction:column;overflow:hidden}.panel[hidden]{display:none}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:17px 18px 13px;border-bottom:1px solid #cbbb95;background:linear-gradient(#f4e5bf,#e6d4ad)}.panel-head h2{margin:0;display:flex;align-items:center;gap:9px;color:#354e4b;font-size:17px;letter-spacing:-.02em}.panel-head .icon{color:#907234}.panel-body{padding:16px 18px;overflow:auto;scrollbar-width:thin;scrollbar-color:#ae9364 #eadfc7}.panel p{line-height:1.55;color:#68715f}.section-label{text-transform:uppercase;letter-spacing:.13em;color:#8b7650;font-size:10px;font-weight:800}.search-wrap{padding:12px 16px 0;display:flex;gap:6px}.search-wrap input{min-width:0;flex:1;border:1px solid #c3ae82;background:#fff9e9;border-radius:8px;padding:9px 10px;color:var(--ink);font-size:13px}.search-wrap select{max-width:110px;border:1px solid #c3ae82;border-radius:8px;background:#f1e5ca;color:#5a6559;font-size:12px}.faction-detail{margin:12px 16px;padding:14px;background:#fff8e6;border:1px solid #d2bd90;border-radius:10px;box-shadow:0 2px 0 #c5b18c3d}.faction-detail h3{font-size:17px;margin:0 0 6px;display:flex;align-items:center;gap:8px}.faction-detail p{font-size:12px;margin:0 0 12px}.faction-detail .badge{font-size:10px;background:#e9d8b2;border-radius:4px;padding:3px 5px;color:#80694a;margin-left:auto;font-weight:600}.swatch{display:inline-block;flex-shrink:0;width:11px;height:15px;border-radius:2px 2px 5px 2px;border:1px solid #0002;box-shadow:inset 0 1px 0 #fff5}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:12px}.stat{border-radius:7px;background:#efe7d2;padding:8px}.stat strong{font-size:15px;display:block;color:#365450}.stat span{font-size:10px;color:#7e7f6b;display:flex;align-items:center;gap:3px}.stat .icon{width:12px;height:12px}.resource-row{display:flex;gap:13px;font-size:12px;color:#5f6956;margin-bottom:12px;flex-wrap:wrap}.resource-row span{display:flex;align-items:center;gap:4px}.resource-row .icon{width:16px;height:16px;color:#99783f}.aspirations{display:flex;gap:8px;font-size:10px;color:#8a7960;margin:9px 0 12px}.aspirations span{flex:1}.aspirations i{height:4px;display:block;border-radius:3px;background:#d7c9ab;margin-top:5px;overflow:hidden}.aspirations b{display:block;height:100%;background:#78a38e}.detail-actions{display:flex;gap:8px}.detail-actions button{flex:1;font-size:12px;min-height:34px}.roster-meta{padding:0 17px 8px;display:flex;align-items:center;justify-content:space-between;color:#8d8167;font-size:11px}.roster-meta label{display:flex;gap:5px;align-items:center;cursor:pointer}.roster-meta input{accent-color:#2c7d7c}.roster{flex:1;min-height:100px;overflow:auto;padding:0 8px 10px;scrollbar-width:thin;scrollbar-color:#b49d70 transparent}.faction-row{display:flex;align-items:center;gap:9px;border:1px solid transparent;background:none;width:100%;text-align:left;padding:9px 10px;border-radius:8px;min-height:48px;color:#4b5a50}.faction-row:hover{background:#e1d5b9}.faction-row.selected{background:#d9e5d5;border-color:#9cb99b}.faction-row.dead{opacity:.55}.faction-row .row-name{font-size:12px;font-weight:650;flex:1}.faction-row small{display:block;font-size:10px;font-weight:400;color:#8a836e;margin-top:3px}.faction-row .regions{font-size:11px;color:#63786b;font-weight:700}.empty{padding:24px 12px;text-align:center;font-size:13px;color:#8b8169}.controls{display:grid;grid-template-columns:130px 1fr;gap:12px 10px;font-size:12px;margin:14px 0 24px;color:#66705e}.controls kbd{display:inline-block;border:1px solid #c2b28f;border-bottom:2px solid #a89771;border-radius:5px;padding:3px 5px;color:#46594f;background:#fff9e8;font-family:inherit;font-size:11px}.controls dt,.controls dd{margin:0}.help-note{border-top:1px solid #cebd96;padding-top:14px;font-size:12px}.view-option{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #d5c6a4;padding:13px 0;font-size:13px;gap:12px}.view-option small{display:block;font-size:11px;color:#8b8167;line-height:1.5;margin-top:3px}.view-option input{accent-color:#287777;width:17px;height:17px}.dispatch-list{padding:0;margin:0;list-style:none}.dispatch-list li{padding:13px 0;border-bottom:1px solid #d6c6a4;color:#576653;line-height:1.5;font-size:12px;display:flex;gap:9px}.dispatch-list .icon{color:#aa8439;width:16px;height:16px;flex-shrink:0;margin-top:2px}.names{position:absolute;inset:0;pointer-events:none}.person-label{position:absolute;transform:translate(-50%,-100%);padding:4px 7px;background:#143b49d9;color:#fbefd2;font-size:11px;border:1px solid #b99d65aa;border-radius:6px;white-space:nowrap;box-shadow:0 2px 5px #0003}.person-label small{font-size:10px;color:#a9c9be;margin-left:5px}#restore{position:fixed;z-index:6;right:14px;top:14px;display:flex;gap:6px;align-items:center;border:1px solid #ba9a60;border-radius:8px;color:#e8cc8b;background:#193d49dd;padding:7px 10px;font-size:11px;cursor:pointer}#connecting{display:none;position:fixed;top:18px;left:18px;background:#163b49e8;border:1px solid #9a9b7d;color:#e7e6cc;border-radius:10px;padding:13px 18px;z-index:4;font-size:13px}
@media(max-width:1050px){.tool kbd{display:none}.tool .optional{display:none}.brand-bar img{width:89px;height:36px}.brand-bar{min-height:48px;gap:8px}.live-info{padding-left:8px}.tools{gap:5px}.tool{padding:7px 9px}.tool.icon-only{width:33px}.tool .icon{width:18px;height:18px}}@media(max-width:760px){.brand-bar .live-info{display:none}.brand-bar{padding:4px 7px}.brand-bar img{width:78px;height:34px}.tools{max-width:calc(100vw - 125px);gap:4px}.tool span,.tool kbd{display:none}.tool{width:31px;padding:6px}.tool.primary{width:auto;min-width:34px}.tool.icon-only{width:30px}.panel{top:74px;bottom:63px}.status-chip small{display:none}.welcome .features{gap:14px;flex-wrap:wrap}.welcome-logo{margin-bottom:14px}.welcome .intro{font-size:14px}.welcome h1{font-size:26px}.welcome footer{font-size:10px}#entrance{padding:24px 16px}.welcome .features{margin:22px auto}.faction-detail{padding:10px}.panel-head{padding:12px 15px}.stats-grid{gap:5px}.stat{padding:6px}}@media(max-height:720px){.faction-detail{margin:8px 16px;padding:10px}.faction-detail p{margin-bottom:8px}.aspirations{display:none}.stats-grid{margin-bottom:8px}.resource-row{margin-bottom:8px}.panel-head{padding-top:11px;padding-bottom:10px}.welcome-logo{width:min(560px,75%);margin-bottom:12px}.welcome .features{margin:20px auto}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.notice-toast{position:absolute;right:14px;bottom:14px;max-width:min(420px,calc(100vw - 28px));padding:12px 12px 12px 16px;border:1px solid #b99457;border-bottom:3px solid #746044;border-radius:11px;background:#fff0cc;color:#5a503b;box-shadow:var(--shadow);display:flex;align-items:center;gap:12px;font-size:13px;pointer-events:auto}
.panel-head h2,.welcome h1,.gold-button,.tool,.faction-detail h3{font-family:"Trebuchet MS",GameUI,"Segoe UI",system-ui,sans-serif}
 .crest{flex-shrink:0;vertical-align:middle;filter:drop-shadow(0 2px 1px #172a3940)}
 #crests-panel{width:min(660px,calc(100vw - 24px));right:12px;max-height:calc(100vh - 115px);overflow:auto}
 .crest-preview{display:flex;gap:20px;align-items:center;padding:12px;background:#e6d4aa;border:2px solid #b18e51;border-radius:12px;margin-bottom:12px}
 .crest-preview p{font-size:13px;line-height:1.4;max-width:360px}
 .crest-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:7px}
 .crest-grid button{display:flex;flex-direction:column;align-items:center;padding:5px 1px;background:#eadbb9;border:2px solid #c1a36b;border-radius:10px;box-shadow:0 2px #997946}
 .crest-grid button[aria-pressed=true]{background:#a5d9cf;border-color:#256e72}
 .crest-grid small{font-size:10px;color:#364650}
 .crest-pages{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:14px;font-size:12px}
 @media(max-width:600px){.crest-grid{grid-template-columns:repeat(5,1fr)}.crest-grid .crest{width:48px;height:48px}.crest-preview{gap:10px}}
 .person-heading{display:flex;gap:14px;align-items:center;margin-bottom:20px}.person-portrait{width:100px;height:117px;flex-shrink:0;filter:drop-shadow(0 3px 1px #172a3930)}.person-heading h3{font-size:21px;line-height:1.1;margin:8px 0}.person-heading p{font-size:12px;line-height:1.5}.person-faction{border:0;background:transparent;padding:0;color:#236e72;font-weight:700;text-align:left}.person-objective{font-size:16px;line-height:1.5;color:#304a50}.person-stage{display:flex;justify-content:space-between;font-size:12px;color:#66735f;margin-top:16px}.work-progress{height:9px;border-radius:5px;background:#d4c39c;margin:9px 0 12px;overflow:hidden}.work-progress b{display:block;height:100%;background:#328d89}.share-faction{width:100%;margin-top:10px}.share-url{width:100%;padding:12px;border:2px solid #bd9f65;background:#fff9e7;border-radius:8px;color:#36505c;font-size:12px;margin:8px 0 14px}.people-filters{display:flex;gap:8px}.people-filters select{min-width:0;width:50%;padding:9px 6px;border:1px solid #ba9d65;border-radius:7px;background:#fff7df;color:#435654}.retired-option{display:flex;gap:7px;align-items:center;font-size:11px;margin:13px 0}.people-list{display:flex;flex-direction:column;gap:6px}.person-row{display:flex;gap:10px;align-items:center;text-align:left;border:1px solid #c5ae7a;border-radius:9px;background:#f4e7c7;padding:8px;color:#344d52}.person-row:hover{background:#e0e8cc;border-color:#348e89}.person-row .person-portrait{width:35px;height:42px;filter:none}.person-row>span{min-width:0;flex:1}.person-row strong{font-size:13px}.person-row small{display:block;font-size:10px;line-height:1.5;margin-top:3px;color:#6b725f}.person-row .badge{flex:0;font-size:9px}.battle-list{display:flex;flex-direction:column;gap:9px}.battle-card{display:block;text-align:left;padding:12px;border:2px solid #ae8650;border-radius:9px;background:#ecd7aa;color:#3a4b4d;box-shadow:0 3px #a17d48}.battle-card strong{display:block;font-size:13px;line-height:1.5;margin:5px 0}.battle-card>span{font-size:11px;line-height:1.5}.battle-card b{float:right;color:#206c73}.battle-time{color:#93613c;text-transform:uppercase;letter-spacing:.04em}.dispatch-list time{display:block;font-size:10px;color:#976f3c;margin-bottom:4px;font-variant-numeric:tabular-nums}.dispatch-count{position:absolute;top:-4px;right:-3px;background:#b64d38;color:#fff5d7;font-size:10px;min-width:17px;height:17px;line-height:17px;border-radius:50%;box-shadow:0 1px 2px #0005}.tool{position:relative}.battle-alert{position:absolute;left:14px;bottom:74px;width:min(390px,calc(100vw - 28px));display:flex;align-items:start;gap:5px;padding:10px;border:2px solid #c69b51;border-radius:12px;background:#fbebccee;box-shadow:0 5px 18px #10263066;pointer-events:auto}.battle-alert-main{flex:1;border:0;background:transparent;text-align:left;color:#364b50;padding:4px}.battle-alert-main small,.battle-alert-main strong,.battle-alert-main span{display:block}.battle-alert-main strong{font-size:13px;line-height:1.5;margin:4px 0}.battle-alert-main span{font-size:11px;color:#26757a}.battle-alert-main small{font-size:10px;color:#976a3e}#people-panel .panel-body,#dispatch-panel .panel-body{padding-bottom:24px}
 .travel-view{position:absolute;inset:0;z-index:10;display:grid;place-content:center;justify-items:center;gap:22px;background:radial-gradient(ellipse at 40% 20%,#367477,#153b4a 75%);color:#fff0cd;pointer-events:none}.travel-view img{width:min(330px,70vw);height:auto;filter:drop-shadow(0 8px 6px #08283488)}.travel-view strong{font-size:16px;letter-spacing:.02em}

#test-world-label{position:fixed;z-index:30;left:14px;top:76px;padding:9px 13px;background:#ffe3a5;color:#614018;border:2px solid #b98a43;border-radius:9px;font-size:12px;font-weight:700;text-decoration:none;box-shadow:0 3px 8px #16313e44}
