:root{--font-sans:system-ui, -apple-system, "Segoe UI", "Noto Sans", Roboto, sans-serif;--font-serif:Georgia, "Noto Serif", "Times New Roman", serif;--ink-0:#15171b;--ink-1:#1d2026;--ink-2:#262a31;--ink-3:#323741;--ink-line:#3e4450;--paper:#efe2c4;--paper-2:#f6eedb;--text:#ece4d2;--text-dim:#aaa293;--text-faint:#7d776c;--jade:#23a37f;--jade-2:#1f8a70;--jade-soft:#23a37f29;--vermilion:#e0533d;--vermilion-soft:#e0533d29;--gold:#d8a93b;--seal-bg:#f6eedb;--focus:#f0c75e;--radius:8px;--t-panel:.12s}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}input[type=range],input[type=checkbox],input[type=radio]{accent-color:var(--jade)}body{background:var(--ink-0);color:var(--text);font-family:var(--font-sans);font-size:14px;line-height:1.4}h1,h2,h3,h4{font-family:var(--font-serif);letter-spacing:.01em;margin:0;font-weight:700}button{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.btn{background:var(--ink-3);border:1px solid var(--ink-line);cursor:pointer;transition:background var(--t-panel), border-color var(--t-panel);text-align:left;border-radius:6px;padding:6px 12px}.btn:hover:not(:disabled){background:#3b414d;border-color:#59606e}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--jade-2);border-color:var(--jade);color:#fff;font-weight:600}.btn.primary:hover:not(:disabled){background:var(--jade)}.btn.danger{border-color:var(--vermilion);color:#fff;background:#8c2f22}.btn.small{padding:3px 8px;font-size:12px}.btn.wide{width:100%}.row{align-items:center;gap:8px;display:flex}.row.wrap{flex-wrap:wrap}.grow{flex:1}.dim{color:var(--text-dim)}.faint{color:var(--text-faint)}.warn{color:var(--vermilion)}.good{color:var(--jade)}.num{font-variant-numeric:tabular-nums}.title-screen{background:radial-gradient(ellipse at 50% 30%, #2a2622 0%, var(--ink-0) 70%);place-items:center;min-height:100%;padding:24px 16px;display:grid}.title-card{background:var(--ink-1);border:1px solid var(--ink-line);border-radius:14px;width:min(880px,100%);overflow:hidden;box-shadow:0 30px 80px #00000080}.title-art{height:220px;position:relative;overflow:hidden}.title-art canvas{width:100%;height:100%;display:block}.title-art .title-text{color:#2a211b;position:absolute;bottom:20px;left:28px}.title-art h1{font-size:46px}.title-art p{font-family:var(--font-serif);max-width:560px;margin:4px 0 0;font-size:16px;font-style:italic}.title-body{gap:18px;padding:20px 28px 26px;display:grid}.house-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px;display:grid}.house-btn{border:2px solid var(--ink-line);background:var(--ink-2);cursor:pointer;text-align:left;border-radius:8px;align-items:center;gap:10px;padding:10px;display:flex}.house-btn[aria-pressed=true]{border-color:var(--jade);background:var(--jade-soft)}.house-btn .swatch{background:var(--paper-2);border-radius:6px;place-items:center;width:38px;height:38px;display:grid}.campaign{grid-template:"head head head"56px"left map right"1fr"left feed right"150px/270px 1fr 300px;min-width:1024px;height:100vh;min-height:640px;display:grid}@media (width<=1023px){.campaign{height:auto;overflow:auto}}.head{background:linear-gradient(180deg, #23262d, var(--ink-1));border-bottom:1px solid var(--ink-line);grid-area:head;align-items:center;gap:16px;padding:0 14px;display:flex}.head .house{font-family:var(--font-serif);align-items:center;gap:8px;font-size:17px;font-weight:700;display:flex}.head .date{font-family:var(--font-serif);color:var(--text-dim)}.head .res{gap:14px;margin-left:8px;display:flex}.res-item{flex-direction:column;line-height:1.1;display:flex}.res-item b{font-variant-numeric:tabular-nums}.res-item span{color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em;font-size:11px}.panel{background:var(--ink-1);border-color:var(--ink-line);overflow:auto}.left{border-right:1px solid var(--ink-line);flex-direction:column;grid-area:left;gap:12px;padding:12px;display:flex}.right{border-left:1px solid var(--ink-line);flex-direction:column;grid-area:right;gap:10px;padding:12px;display:flex}.map-wrap{background:#cdb98f;grid-area:map;position:relative;overflow:hidden}.map-host{position:absolute;inset:0}.map-host canvas{display:block}.feed{border-top:1px solid var(--ink-line);background:var(--ink-1);grid-area:feed;padding:8px 12px;font-size:13px;overflow:auto}.feed li{padding:1px 0;list-style:none}.feed ul{margin:0;padding:0}.feed .month{color:var(--gold);font-family:var(--font-serif);margin-top:4px}.map-legend{border:1px solid var(--ink-line);background:#15171bcc;border-radius:8px;gap:12px;padding:6px 10px;font-size:12px;display:flex;position:absolute;bottom:10px;left:10px}.city-list{gap:2px;display:grid}.city-list button{cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:5px;align-items:center;gap:6px;padding:3px 6px;display:flex}.city-list button[aria-current=true]{background:var(--jade-soft);border-color:var(--jade-2)}.city-list button:hover{background:var(--ink-2)}.status-dot{place-items:center;width:16px;font-size:11px;display:inline-grid}.card{background:var(--ink-2);border:1px solid var(--ink-line);border-radius:var(--radius);padding:10px}.card h3{align-items:center;gap:6px;font-size:16px;display:flex}.stat-grid{grid-template-columns:1fr auto;gap:1px 10px;margin-top:6px;font-size:13px;display:grid}.stat-grid dt{color:var(--text-dim)}.stat-grid dd{text-align:right;font-variant-numeric:tabular-nums;margin:0}.meter{background:var(--ink-0);border-radius:3px;grid-column:1/-1;height:5px;margin:2px 0 4px;overflow:hidden}.meter i{background:var(--jade-2);height:100%;display:block}.meter.low i{background:var(--vermilion)}.officer{border-radius:6px;align-items:center;gap:8px;padding:5px;display:flex}.officer .meta{color:var(--text-dim);font-size:12px}.officer .why{color:var(--vermilion);font-size:12px}.officer.unavail{opacity:.75}.cmd-group h4{text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);font-size:12px;font-family:var(--font-sans);margin:4px 0}.cmd-group .cmds{grid-template-columns:1fr 1fr;gap:4px;display:grid}.cmd-group .btn{padding:5px 8px;font-size:13px}.reason{color:var(--text-faint);font-size:11px;display:block}.overlay{z-index:50;animation:fade var(--t-panel) ease-out;background:#0607099e;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.dialog{background:var(--ink-1);border:1px solid var(--ink-line);width:min(640px,100%);max-height:calc(100vh - 32px);animation:rise var(--t-panel) ease-out;border-radius:12px;overflow:auto;box-shadow:0 24px 60px #0000008c}.dialog.wide{width:min(900px,100%)}.dialog header{border-bottom:1px solid var(--ink-line);padding:14px 18px 8px}.dialog header p{color:var(--text-dim);margin:4px 0 0;font-size:13px}.dialog .body{gap:14px;padding:14px 18px;display:grid}.dialog footer{border-top:1px solid var(--ink-line);justify-content:flex-end;gap:8px;padding:10px 18px 14px;display:flex}.reduced .overlay,.reduced .dialog{animation:none}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{opacity:.6;transform:translateY(8px)}to{opacity:1;transform:none}}.field{gap:4px;display:grid}.field label{font-size:13px;font-weight:600}.field input[type=text],.field input[type=number],.field select,.field input:not([type]){background:var(--ink-0);border:1px solid var(--ink-line);color:var(--text);font:inherit;border-radius:6px;width:100%;padding:6px 8px}.field .hint{color:var(--text-faint);font-size:12px}.field .err{color:var(--vermilion);font-size:12px}.picker{border:1px solid var(--ink-line);background:var(--ink-0);border-radius:8px;gap:3px;max-height:260px;padding:4px;display:grid;overflow:auto}.picker [role=option]{cursor:pointer;border:1px solid #0000;border-radius:6px;align-items:center;gap:8px;padding:5px 7px;display:flex}.picker [role=option][aria-selected=true]{background:var(--jade-soft);border-color:var(--jade-2)}.picker [role=option][aria-disabled=true]{cursor:not-allowed;opacity:.6}.picker [role=option].focused{outline:2px solid var(--focus)}.check{border:2px solid var(--ink-line);border-radius:4px;flex:none;place-items:center;width:18px;height:18px;font-size:12px;display:grid}[aria-selected=true] .check{background:var(--jade-2);border-color:var(--jade);color:#fff}.preview{background:var(--ink-2);border:1px solid var(--ink-line);border-radius:8px;padding:8px 10px;font-size:13px}.preview table{border-collapse:collapse;width:100%}.preview td{font-variant-numeric:tabular-nums;padding:1px 4px}.preview td:last-child{text-align:right}.error-box{background:var(--vermilion-soft);border:1px solid var(--vermilion);color:#ffd8d0;border-radius:8px;padding:8px 10px}.chance{color:var(--gold);font-size:15px;font-weight:700}.tabs{flex-wrap:wrap;gap:4px;display:flex}.tabs button[aria-selected=true]{background:var(--jade-2);border-color:var(--jade);color:#fff}table.data{border-collapse:collapse;width:100%;font-size:13px}table.data th{text-align:left;color:var(--text-faint);border-bottom:1px solid var(--ink-line);padding:3px 4px;font-weight:600}table.data td{font-variant-numeric:tabular-nums;border-bottom:1px solid #2b2f37;padding:3px 4px}.battle{grid-template:"head head"56px"bfield side"1fr"log side"140px/1fr 320px;min-width:1024px;height:100vh;min-height:640px;display:grid}.battle .bfield{background:#2b2520;grid-area:bfield;position:relative}.battle .side{border-left:1px solid var(--ink-line);background:var(--ink-1);flex-direction:column;grid-area:side;gap:10px;padding:12px;display:flex;overflow:auto}.battle .blog{border-top:1px solid var(--ink-line);background:var(--ink-1);grid-area:log;padding:8px 12px;font-size:13px;overflow:auto}.legend-swatch{vertical-align:-2px;border-radius:3px;width:14px;height:14px;margin-right:4px;display:inline-block}.toast{background:var(--ink-2);border:1px solid var(--vermilion);z-index:80;border-radius:8px;max-width:90vw;padding:8px 14px;position:fixed;bottom:18px;left:50%;transform:translate(-50%)}.end-screen{place-items:center;min-height:100%;padding:20px;display:grid}.campaign>*,.battle>*{min-width:0;min-height:0}.battle .bfield{background:#cdb98f}.right{background:var(--ink-1);overflow:auto}html,body{overflow:hidden}@media (width<=1023px),(height<=639px){html,body{overflow:auto}}.md{font-size:14px;line-height:1.55}.md .md-h1{margin:4px 0 8px;font-size:22px}.md .md-h2{color:var(--gold);margin:16px 0 6px;font-size:17px}.md p{margin:6px 0}.md ul,.md ol{margin:6px 0;padding-left:22px}.md li{margin:3px 0}.md table{margin:8px 0}
