:root{--ink:#202e25;--muted:#72796c;--paper:#f2eee3;--card:#fffdf7;--line:#ded8c9;--green:#36583b;--green-dark:#263d2c;--green-soft:#e5ecdf;--rust:#a85336;--gold:#c59b4c;--shadow:0 12px 34px #28352618;--dock-height:0px}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--paper);color:var(--ink);font:13px 'DM Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}button,input,textarea{font:inherit}button{cursor:pointer;color:inherit}button:disabled{cursor:not-allowed}button:focus-visible,textarea:focus-visible{outline:3px solid #b9a56a;outline-offset:3px}[hidden]{display:none!important}.icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}#unity-canvas{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none;outline:none}#interface{position:fixed;inset:0;pointer-events:none}#interface button,#interface .panel{pointer-events:auto}.topbar{position:absolute;inset:0 0 auto;height:56px;background:#faf7eff5;border-bottom:1px solid #d9d3c3;display:flex;align-items:center;justify-content:space-between;padding:0 24px;box-shadow:0 3px 18px #263d2c06;backdrop-filter:blur(14px);pointer-events:auto}.brand{display:flex;gap:10px;align-items:center}.brand-mark{width:33px;height:33px;background:var(--green);color:var(--card);display:grid;place-items:center;border-radius:10px}.brand-name{font-size:12px;font-weight:800;letter-spacing:.12em}.brand small{display:block;font-size:8px;color:var(--muted);letter-spacing:.14em;margin-top:3px}.top-actions{display:flex;align-items:center;gap:16px}.day{font:11px ui-monospace,monospace;color:var(--muted)}.day b{color:var(--ink);font-size:13px;margin-left:6px}.quiet,.secondary,.primary{border:1px solid transparent;border-radius:9px;min-height:38px;padding:9px 13px;font-size:12px;font-weight:650;transition:background .15s,transform .15s;display:inline-flex;gap:7px;align-items:center;justify-content:center}.quiet{background:#ece7da;color:#59624f}.secondary{background:var(--card);border-color:var(--line);color:var(--green-dark)}.primary{background:var(--green);color:var(--card);box-shadow:0 3px 8px #36583b20}.primary:hover{background:var(--green-dark)}.secondary:hover,.quiet:hover{background:var(--green-soft)}button:active{transform:translateY(1px)}button:disabled{opacity:.48;box-shadow:none}.resource-strip{position:absolute;top:72px;left:24px;right:354px;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.resource{display:flex;gap:9px;align-items:center;min-width:0;padding:11px 10px;background:#fffdf7f5;border:1px solid #e0dacb;border-radius:11px;box-shadow:0 5px 16px #263d2c08}.resource .icon{width:21px;height:21px;color:#7a805f}.resource .label{font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);display:block}.resource b{font:600 19px ui-monospace,monospace;display:block;margin-top:3px;white-space:nowrap;letter-spacing:-.05em}.resource small{color:var(--green);font-size:9px;font-weight:600;margin-left:4px;letter-spacing:0}.resource.warning b,.resource small.negative{color:var(--rust)}.resource.changed{animation:resource-change .35s}.settlement-title{position:absolute;top:156px;left:26px;max-width:calc(100% - 380px);background:#faf7efe8;border:1px solid #ded8c9b8;border-radius:12px;padding:12px 14px;box-shadow:0 4px 18px #263d2c0b;backdrop-filter:blur(10px)}.eyebrow{font:10px ui-monospace,monospace;letter-spacing:.13em;text-transform:uppercase;color:var(--rust)}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:'Playfair Display',Georgia,serif;letter-spacing:-.035em}h1{font-size:29px;margin:5px 0}h2{font-size:27px;line-height:1.15}h3{font-size:21px}.settlement-title p{font-size:11px;color:#4d5d40;margin:6px 0 10px}.threat{display:inline-flex;gap:7px;align-items:center;background:#faf3e6eb;border:1px solid #dfd4b9;border-radius:30px;padding:6px 10px;font-size:10px;font-weight:700;box-shadow:0 2px 10px #3b492510}.threat.urgent{background:#f4e2da;color:#923e27;border-color:#dfb9a4}.dot{height:6px;width:6px;background:var(--rust);border-radius:50%}.panel{background:#fffdf7f7;border:1px solid #e5dfd0;border-radius:16px;box-shadow:var(--shadow);backdrop-filter:blur(16px)}.town-panel{position:absolute;top:72px;right:24px;bottom:20px;width:306px;display:flex;flex-direction:column;padding:17px;gap:12px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.section-head p{font-size:10px;color:var(--muted);margin-top:6px}.small-pill{font:9px ui-monospace,monospace;padding:5px 7px;border:1px solid var(--line);border-radius:20px;white-space:nowrap;color:var(--muted)}.build-grid{display:grid;grid-template-columns:1fr;gap:7px;flex:1;min-height:0;overflow:auto}.build-card{position:relative;display:grid;grid-template-columns:32px 1fr;gap:10px;align-items:center;text-align:left;width:100%;padding:10px 11px;border:1px solid var(--line);border-radius:10px;background:var(--card);min-height:65px;transition:background .15s,border-color .15s,box-shadow .15s}.build-card:hover:enabled{background:#f2f5e9;border-color:#a2b28a;box-shadow:0 3px 10px #36583b0b}.build-symbol{height:31px;width:31px;border-radius:9px;background:#edf0e3;display:grid;place-items:center;color:var(--green)}.build-name{font-size:12px;font-weight:750;display:block;padding-right:24px}.build-benefit{display:block;font-size:10px;color:var(--muted);margin-top:4px}.build-cost{display:flex;align-items:center;gap:4px;font:9px ui-monospace,monospace;color:#837b63;margin-top:5px}.build-cost .icon{width:11px;height:11px}.build-count{position:absolute;top:10px;right:10px;font:10px ui-monospace,monospace;color:var(--muted);background:#f0eddf;padding:3px 6px;border-radius:5px}.town-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.town-actions button{font-size:11px}.trends{border-top:1px solid var(--line);padding-top:10px;display:flex;justify-content:space-between;font-size:9px;color:var(--muted);line-height:1.7}.trends b{color:var(--green);font-size:10px}.world-note{position:absolute;bottom:22px;left:25px;max-width:calc(100% - 380px);display:flex;gap:12px;align-items:center;font-size:10px;color:#3f523a;background:#faf7efeb;border:1px solid #e4ddc6;border-radius:9px;padding:9px 12px;box-shadow:0 3px 12px #263d2c08}.world-note .icon{height:14px;width:14px}.notice{position:absolute;left:24px;bottom:64px;max-width:480px;background:#fffdf7ef;border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:9px;padding:10px 13px;font-size:11px;line-height:1.5;color:#5b614f;box-shadow:0 4px 16px #263d2c09;pointer-events:none}.battle .resource-strip{display:none}.battle .settlement-title{top:75px;max-width:80%}.battle .settlement-title h1{font-size:25px}.battle .settlement-title p{display:none}.battle .world-note{display:none}.battle .notice{display:none}.battle-panel{position:absolute;bottom:20px;left:max(24px,calc((100% - 950px)/2));right:max(24px,calc((100% - 950px)/2));padding:13px 16px}.battle-summary{display:flex;gap:15px;align-items:center;margin-bottom:11px}.gate-block{flex:1;max-width:260px}.metric-label{font-size:8px;color:var(--muted);text-transform:uppercase;letter-spacing:.09em}.gate-caption{display:flex;justify-content:space-between;font-size:11px;font-weight:700;margin-bottom:6px}.meter{height:5px;background:#e3dfcf;border-radius:10px;overflow:hidden}.meter i{display:block;background:var(--green);height:100%;width:100%;transition:width .16s}.meter.critical i{background:var(--rust)}.battle-metric{min-width:58px}.battle-metric b{display:block;font:600 17px ui-monospace,monospace;margin-top:3px}.routes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.route{position:relative;text-align:left;padding:10px 12px;border-radius:10px;border:1px solid #ded8c9;background:#f5f1e5;min-height:68px}.route.selected{border-color:#799263;background:#e8eddd;box-shadow:inset 0 0 0 1px #799263}.route b{font-size:12px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.route small{display:block;font-size:10px;color:var(--muted);margin-top:6px}.route .danger{color:var(--rust);font-weight:650}.route .next{font:9px ui-monospace,monospace;color:#88816e;display:block;margin-top:4px}.battle-actions{display:flex;gap:8px;align-items:center;margin-top:10px}.battle-actions .primary{min-width:165px}.battle-actions .secondary{min-width:120px}.battle-actions .message{font-size:10px;color:var(--muted);flex:1;margin-left:7px;line-height:1.5}.modal-layer{position:fixed;inset:0;background:#20332966;backdrop-filter:blur(7px);display:grid;place-items:center;padding:20px;z-index:20;pointer-events:auto}.dialog{width:min(440px,100%);max-height:calc(100svh - 40px);overflow:auto;background:var(--paper);border:1px solid #d9d0bc;box-shadow:0 25px 100px #182a3250;border-radius:19px;padding:28px}.dialog .eyebrow{margin-bottom:9px}.dialog p{color:var(--muted);font-size:12px;line-height:1.65;margin:12px 0 19px}.dialog-head{display:flex;justify-content:space-between;align-items:start;gap:18px}.dialog-head .quiet{min-height:30px;padding:5px 8px}.dialog-actions{display:flex;gap:9px;margin-top:20px}.dialog-actions button{flex:1}.menu-options{display:grid;gap:8px;margin-top:18px}.menu-options button{justify-content:flex-start;padding:13px 14px}.menu-options .destructive{color:var(--rust)}.cities-dialog{width:min(810px,100%)}.city-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px;margin-top:20px}.city-card{display:flex;gap:13px;text-align:left;border:1px solid var(--line);border-radius:12px;background:var(--card);padding:14px;transition:border .15s,box-shadow .15s}.city-card:hover{border-color:#8a9b73;box-shadow:0 5px 16px #36583b0c}.city-art{align-self:stretch;min-height:84px;min-width:67px;background:linear-gradient(160deg,#dfd4a6,#9cab78);border-radius:9px;display:grid;place-items:center;color:#49633f;overflow:hidden}.city-art .icon{height:39px;width:39px;stroke-width:1.2}.city-art.wet{background:linear-gradient(160deg,#b3c9b1,#82aca4);color:#345f5c}.city-art.forest{background:linear-gradient(160deg,#c5d2aa,#7e9b6f)}.city-name{font:700 20px Georgia,serif;display:block}.city-tag{font:8px ui-monospace,monospace;text-transform:uppercase;letter-spacing:.07em;color:var(--rust);display:block;margin:5px 0}.city-card p{font-size:10px;line-height:1.55;margin:6px 0 8px}.city-supplies{display:flex;gap:12px;font:10px ui-monospace,monospace;color:#75816a}.city-supplies span{display:flex;gap:4px;align-items:center}.city-supplies .icon{width:12px;height:12px}.result-seal{height:60px;width:60px;display:grid;place-items:center;border:1px solid #becba8;background:var(--green-soft);color:var(--green);border-radius:50%;margin:0 auto 18px}.result-seal .icon{width:31px;height:31px}.outcome-dialog{text-align:center}.result-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:20px}.result-stats>div{background:var(--card);border:1px solid var(--line);padding:12px 5px;border-radius:9px}.result-stats b{font:600 21px ui-monospace,monospace;display:block}.result-stats small{display:block;font-size:9px;color:var(--muted);margin-top:5px}textarea{width:100%;border:1px solid #c9c5b4;border-radius:9px;padding:12px;background:var(--card);resize:vertical;min-height:180px;font:11px/1.6 ui-monospace,monospace;color:var(--ink)}.form-error{font-size:11px;line-height:1.5;color:var(--rust);margin-top:10px}#loading{position:fixed;inset:0;z-index:50;background:var(--paper);display:grid;place-content:center;text-align:center;gap:17px;color:var(--ink)}#loading>img{width:96px;height:96px;object-fit:cover;border-radius:50%;margin:0 auto -3px;box-shadow:0 4px 18px #243f3020}#loading .brand-mark{height:54px;width:54px;margin:auto;border-radius:16px}#loading h1{font-size:36px;margin:4px 0}#loading span{font-size:12px;color:var(--muted)}progress{width:250px;height:5px;accent-color:var(--green);border:0}#failure{position:fixed;z-index:60;left:50%;top:50%;transform:translate(-50%,-50%);max-width:440px;background:var(--card);border:1px solid var(--line);border-radius:15px;padding:25px;box-shadow:var(--shadow);font-size:13px;line-height:1.7}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@keyframes resource-change{50%{border-color:#a5b48e;background:#f1f5e7}}
@media(max-width:900px) and (orientation:landscape){.town-panel{width:265px;padding:12px;gap:8px}.resource-strip{right:300px;gap:5px}.resource{padding:8px 6px;gap:4px}.resource .icon{width:14px}.resource b{font-size:16px}.resource small{display:none}.build-card{min-height:57px;padding:8px;grid-template-columns:26px 1fr;gap:6px}.build-symbol{width:25px;height:25px}.build-benefit{font-size:9px}.build-cost{font-size:8px}.town-actions button{padding:8px;font-size:10px}.settlement-title{max-width:calc(100% - 310px)}.notice{max-width:400px}}
@media(orientation:portrait){.topbar{height:49px;padding:0 13px}.brand-mark{height:29px;width:29px;border-radius:8px}.brand-name{font-size:10px}.brand small{font-size:6px}.top-actions{gap:10px}.day{font-size:9px}.day b{font-size:11px}.top-actions .quiet{font-size:10px;min-height:30px;padding:6px 9px}.resource-strip{top:60px;left:11px;right:11px;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.resource{padding:7px 8px;gap:7px;border-radius:9px;min-height:47px}.resource .icon{width:18px;height:18px}.resource .label{font-size:7px}.resource b{font-size:15px;margin-top:2px}.resource small{font-size:8px;margin-left:2px}.settlement-title{left:15px;top:174px;max-width:90%}h1{font-size:22px}.settlement-title p{font-size:9px;margin:4px 0 7px}.eyebrow{font-size:8px}.threat{font-size:9px;padding:5px 8px}.town-panel{left:9px;right:9px;top:auto;bottom:calc(9px + env(safe-area-inset-bottom));width:auto;padding:12px;gap:9px;border-radius:14px}.section-head h3{font-size:19px}.section-head p{display:none}.small-pill{font-size:8px;padding:4px 6px}.build-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;overflow:visible;flex:none}.build-card{display:block;min-height:86px;padding:8px 7px}.build-symbol{position:absolute;left:7px;top:8px;width:21px;height:21px;border-radius:6px}.build-symbol .icon{width:16px;height:16px}.build-name{font-size:10px;padding:0 15px 0 25px;min-height:23px;display:flex;align-items:center}.build-benefit{font-size:9px;margin-top:7px;white-space:nowrap}.build-cost{font-size:8px;margin-top:6px;gap:3px}.build-count{font-size:8px;top:8px;right:6px;padding:2px 4px}.town-actions{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.town-actions button{font-size:10px;padding:8px 4px;min-height:35px;border-radius:7px}.town-actions .icon{display:none}.trends{padding-top:6px;font-size:8px;line-height:1.4}.trends b{font-size:9px}.world-note{bottom:calc(var(--dock-height) + 20px + env(safe-area-inset-bottom));left:12px;right:12px;max-width:none;padding:7px 9px;font-size:9px;justify-content:space-between;background:#faf7efdf}.notice{left:13px;right:13px;bottom:calc(var(--dock-height) + 55px + env(safe-area-inset-bottom));max-width:none;font-size:10px;padding:8px 10px;line-height:1.45}.battle .settlement-title{top:65px;left:15px}.battle .settlement-title h1{font-size:21px}.battle-panel{left:8px;right:8px;bottom:calc(9px + env(safe-area-inset-bottom));padding:11px;border-radius:13px}.battle-summary{gap:10px;margin-bottom:9px}.gate-block{max-width:none;min-width:78px}.gate-caption{font-size:10px}.metric-label{font-size:7px;letter-spacing:.02em}.battle-metric{min-width:34px}.battle-metric b{font-size:14px}.routes{gap:5px}.route{padding:8px 7px;min-height:73px;border-radius:8px}.route b{font-size:10px;white-space:normal;min-height:12px}.route small{font-size:9px;margin-top:5px}.route .next{font-size:8px}.battle-actions{gap:5px;margin-top:8px;flex-wrap:wrap}.battle-actions .primary,.battle-actions .secondary{min-width:0;flex:1;font-size:11px;padding:9px 5px;min-height:37px;border-radius:8px}.battle-actions #pause{flex:0 0 65px}.battle-actions .message{flex-basis:100%;font-size:9px;margin:3px 0 0;min-height:14px}.dialog{padding:23px 20px;border-radius:16px;max-height:calc(100svh - 24px)}.modal-layer{padding:12px}.dialog h2{font-size:27px}.city-grid{grid-template-columns:1fr;gap:9px}.city-card{padding:12px}.city-art{min-width:64px;min-height:83px}.city-card p{font-size:11px}.city-name{font-size:20px}.dialog p{font-size:12px}.dialog-actions button{min-height:43px}.result-stats b{font-size:20px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* Town management opens on demand so the settlement remains the main view. */
.resource-strip{right:24px;max-width:900px}.town-panel{top:145px;bottom:94px;width:340px;padding:16px;gap:12px;overflow:hidden}.drawer-heading{display:flex;justify-content:space-between;align-items:center;flex:none}.drawer-heading h3{font-size:25px;margin-top:3px}.drawer-heading .quiet{font-size:24px;line-height:1;padding:5px 9px;min-height:30px}.drawer-section{overflow:auto;min-height:0;padding-right:2px;scrollbar-width:thin}.section-copy{font-size:11px;line-height:1.6;color:var(--muted);margin:0 0 13px}.build-grid{flex:none}.build-card{min-height:67px}.town-actions{margin-top:12px;grid-template-columns:1fr 1fr}.town-actions button:last-child{grid-column:1/-1}.trends{margin-top:10px}.town-toolbar{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);display:flex;gap:4px;padding:7px;border-radius:16px;pointer-events:auto}.town-toolbar button{display:flex;align-items:center;gap:7px;justify-content:center;min-width:86px;padding:11px 12px;border:0;background:transparent;border-radius:10px;font-size:11px;font-weight:650;min-height:43px}.town-toolbar button.active{background:var(--green-soft);color:var(--green)}.town-toolbar .primary{background:var(--green);color:#fff;min-width:112px}.town-toolbar .icon{width:17px;height:17px}.world-note{bottom:92px}.notice{bottom:134px;max-width:395px}.battle #town-toolbar{display:none}.drawer-open .settlement-title{max-width:220px}.ledger{background:var(--card);border:1px solid var(--line);padding:12px;border-radius:10px;margin-bottom:10px;font-size:11px;line-height:1.6}.ledger strong{font-size:17px;color:var(--green)}.ledger h4{font:700 16px Georgia,serif;margin:0 0 7px}.ledger p{margin:7px 0;color:var(--muted);font-size:10px;line-height:1.6}.ledger button{min-height:33px;font-size:10px;padding:7px 9px}.ledger .primary{width:100%;margin-top:8px}.ledger .secondary{background:#f4f0e5}.ledger .cost{font:10px ui-monospace,monospace;margin:8px 0;color:var(--rust)}.ledger label{display:block;font-size:10px;font-weight:650;margin:12px 0 6px}.ledger input[type=range]{width:100%;accent-color:var(--green)}.ledger select{width:100%;padding:8px;border:1px solid var(--line);border-radius:7px;background:var(--paper);color:var(--ink);font:11px inherit}.ledger .subheading{font:8px ui-monospace,monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--rust);margin:13px 0 8px}.allocation{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:9px 0;border-bottom:1px solid #eee8dc}.allocation:last-child{border-bottom:0}.allocation>span{min-width:0}.allocation b{font-size:11px;display:block}.allocation small{display:block;font-size:9px;color:var(--muted);margin-top:3px;line-height:1.5}.stepper{display:flex;gap:7px;align-items:center;flex:none}.stepper button{border:1px solid var(--line);background:#f3efdf;border-radius:7px;width:29px;min-height:29px;font-size:17px;padding:0}.stepper output{width:21px;text-align:center;font:12px ui-monospace,monospace}.offer-card{padding:12px;background:var(--card);border:1px solid var(--line);border-radius:10px;margin-top:8px}.offer-card h4{margin:0;font-size:12px}.offer-card p{color:var(--muted);font-size:10px;line-height:1.5;margin:7px 0}.offer-card .offer-bottom{display:flex;align-items:center;justify-content:space-between;gap:6px}.offer-card small{font:9px ui-monospace,monospace;color:var(--muted)}.offer-card button{font-size:10px;padding:7px 12px;min-height:30px}.store-tabs{display:flex;gap:7px;margin-bottom:12px;position:sticky;top:0;background:var(--paper);padding-bottom:5px;z-index:2}.store-tabs button{flex:1;padding:8px;font-size:11px}.store-tabs .active{background:var(--green-soft);border-color:#8c9c79;color:var(--green)}.weapon-art{height:72px;border-radius:8px;background:linear-gradient(145deg,#e9e2c9,#ced6b9);display:flex;align-items:center;justify-content:center;margin-bottom:10px}.weapon-art svg{width:170px;height:60px;stroke:#576249;stroke-width:2.5;fill:none;stroke-linecap:round;stroke-linejoin:round}.progress-track{height:6px;background:#e1ddcf;border-radius:6px;margin:10px 0;overflow:hidden}.progress-track i{display:block;background:var(--green);height:100%;transition:width .3s}.field-buttons{display:flex;gap:5px;margin:7px 0}.field-buttons button{flex:1;min-width:0;padding:6px;font-size:9px}.field-buttons .chosen{background:var(--green-soft);border-color:#8a9c73}.policy-summary{padding:9px;border-radius:8px;background:#eee9d9;font-size:10px;line-height:1.7;margin:9px 0}.net-negative{color:var(--rust)!important}.battle-actions #join-fight{min-width:105px}.aiming #battle-panel{padding:9px 12px;max-width:700px;left:50%;right:auto;width:calc(100% - 26px);transform:translateX(-50%)}.aiming .battle-summary,.aiming .battle-actions #rally,.aiming .battle-actions #volley,.aiming .battle-actions .message,.aiming .route small,.aiming .route .next,.aiming .settlement-title{display:none}.aiming .route{min-height:32px;padding:8px}.aiming .battle-actions{justify-content:center}.aiming .battle-actions button{min-width:120px}.aiming .topbar{background:#faf7efe3}.aiming #unity-canvas{cursor:crosshair}#aim-hud{position:fixed;inset:0;pointer-events:none}#crosshair{position:absolute;left:50%;top:50%;width:20px;height:20px;transform:translate(-50%,-50%);filter:drop-shadow(0 1px 2px #0009)}#crosshair:before,#crosshair:after{content:'';position:absolute;background:#fff5d1}#crosshair:before{width:20px;height:2px;left:0;top:9px}#crosshair:after{width:2px;height:20px;left:9px;top:0}.aim-caption{position:absolute;left:20px;top:75px;color:#fff6da;text-shadow:0 1px 3px #263d2c;display:grid;gap:6px;max-width:280px}.aim-caption b{font:700 21px Georgia,serif}.aim-caption span{font-size:11px;line-height:1.5}.aim-caption small{font:10px ui-monospace,monospace}#heat-track{height:5px;border-radius:4px;background:#263d2c66;overflow:hidden}#heat-meter{display:block;height:100%;width:0;background:#e4a254;transition:width .1s}#fire-button{position:absolute;right:24px;top:52%;border-radius:50%;height:70px;width:70px;border:2px solid #fff2cb;pointer-events:auto;touch-action:none;background:#36583bcc;font-size:12px}.aiming.shot #crosshair{width:25px;height:25px}.drawer-section .quiet{padding:5px 0;font-size:10px;color:var(--green)}
@media(orientation:portrait){.resource-strip{max-width:none}.town-toolbar{bottom:calc(9px + env(safe-area-inset-bottom));left:9px;right:9px;transform:none;padding:5px;gap:1px;justify-content:space-between;border-radius:13px}.town-toolbar button{min-width:0;flex:1;flex-direction:column;gap:4px;padding:7px 3px;min-height:47px;font-size:9px;border-radius:8px}.town-toolbar button.primary{min-width:0;flex:1.15}.town-toolbar .icon{width:17px;height:17px}.town-panel{left:9px;right:9px;top:auto;bottom:calc(77px + env(safe-area-inset-bottom));max-height:57svh;width:auto;padding:13px;gap:10px;border-radius:14px}.drawer-heading h3{font-size:22px}.drawer-section{max-height:calc(57svh - 75px)}.build-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.build-card{min-height:90px}.build-name{font-size:11px}.build-benefit{font-size:10px}.build-cost{font-size:9px}.town-actions{grid-template-columns:repeat(3,minmax(0,1fr))}.town-actions button:last-child{grid-column:auto}.world-note{bottom:calc(78px + env(safe-area-inset-bottom));font-size:9px;padding:7px 9px}.notice{bottom:calc(114px + env(safe-area-inset-bottom));font-size:10px;max-width:none;max-height:44px;overflow:hidden}.drawer-open .world-note,.drawer-open .notice,.drawer-open .settlement-title{display:none}.battle-panel{bottom:calc(9px + env(safe-area-inset-bottom))}.battle-actions{flex-wrap:wrap}.battle-actions #join-fight{flex:1 1 55%;min-width:0}.battle-actions #pause{flex:1 1 30%}.aim-caption{left:15px;top:65px;max-width:200px}.aim-caption b{font-size:19px}.aim-caption span{font-size:10px}#fire-button{right:18px;height:61px;width:61px}.aiming #battle-panel{bottom:calc(9px + env(safe-area-inset-bottom));padding:8px}.aiming .route b{font-size:10px}.aiming .battle-actions #join-fight,.aiming .battle-actions #pause{flex:1;min-width:0}.aiming .battle-actions .message{display:none}.aiming .route{min-height:30px;padding:7px}.aiming .routes{gap:5px}}

.drawer-feedback{font-size:10px;line-height:1.5;color:var(--green);padding:7px 9px;background:#e8eddf;border-radius:8px;flex:none;max-height:48px;overflow:auto}.drawer-feedback:empty{display:none}@media(orientation:portrait){.drawer-section{max-height:calc(57svh - 112px)}}

.settler-prompt{position:fixed;top:155px;left:50%;transform:translateX(-50%);width:min(650px,calc(100vw - 32px));padding:16px;display:flex;align-items:center;gap:12px;z-index:8}.settler-prompt div{flex:1}.settler-prompt small{display:block;margin-top:5px;line-height:1.5}.build-benefit{white-space:normal}@media(max-width:700px){.settler-prompt{top:160px;flex-wrap:wrap}.settler-prompt div{flex-basis:100%}.settler-prompt button{flex:1}}

.resource-strip{max-width:1080px;grid-template-columns:repeat(7,minmax(0,1fr))}.morale-resource{border:1px solid #dedacb;text-align:left;display:flex;flex-direction:column;align-items:stretch;gap:4px;min-width:140px;cursor:pointer}.morale-resource .resource-label{font-size:8px;letter-spacing:.12em}.morale-resource b{font-size:15px}.morale-resource small{font-size:9px;color:#55664c}.morale-track{height:4px;background:#dedacb;border-radius:4px;overflow:hidden}.morale-track i{display:block;height:100%;background:#4d7754}.morale-resource.low{background:#fff0e5;border:2px solid #ab4b30}.morale-resource.low .morale-track i{background:#b74729}.unavailable{opacity:.65;cursor:help}.unavailable:hover{opacity:1}.build-card.unavailable .build-benefit{color:#9c432c;font-weight:600}.build-benefit{display:block;line-height:1.45}#world-banners{position:fixed;z-index:7;top:145px;left:50%;transform:translateX(-50%);width:min(520px,calc(100vw - 32px));display:grid;gap:8px;pointer-events:none}#world-banners>*{pointer-events:auto}.status-banner{padding:11px 14px;border-radius:12px;background:#f5edce;color:#473a23;border:1px solid #dac78d;font-size:11px;line-height:1.5;box-shadow:0 4px 20px #20271b12}.status-banner b,.status-banner span{display:block}.status-banner.warning{background:#fff0e3;border-color:#c5825b;color:#783d25}.settler-prompt{position:static;transform:none;width:100%;padding:12px;box-sizing:border-box}.settler-prompt small{font-size:10px}.action-feedback{position:fixed;z-index:60;bottom:108px;left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100vw - 38px);padding:13px 18px;border-radius:12px;background:#233e2f;color:#fff9e8;box-shadow:0 7px 30px #17251a33;font-size:12px;line-height:1.5;pointer-events:none}.campaign-dialog{width:min(1220px,96vw);max-width:1220px;padding:25px;max-height:94svh;overflow:auto}.campaign-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(280px,1fr);gap:23px;align-items:start}.campaign-dialog .dialog-head{align-items:start}.campaign-dialog h2{font-size:32px}.map-intro{margin:0 0 16px;color:#59604e;font-size:12px}.map-feedback{background:#e5ecdf;color:#35573d;font-size:12px;padding:10px 13px;border-radius:10px;margin-bottom:14px}.map-pane{min-width:0}.nigeria-map{display:block;width:100%;max-height:58svh;border-radius:18px;background:#d8e3df}.map-rivers{fill:none;stroke:#418fbe;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;opacity:.9}.map-geography-labels{fill:#3b5344;font:600 15px ui-sans-serif,system-ui;letter-spacing:2px;paint-order:stroke;stroke:#f9f0da99;stroke-width:4px}.map-marker{cursor:pointer;outline:none}.map-marker circle{fill:#93533a;stroke:#fff7df;stroke-width:4px;filter:drop-shadow(0 3px 3px #17251a55);transition:r .15s}.map-marker.owned circle{fill:#355d40}.map-marker.selected circle,.map-marker:focus circle{fill:#294b64;stroke:#ffe6a8;stroke-width:6px}.map-marker text{fill:#fff8e2;font:700 15px ui-sans-serif,system-ui;text-anchor:middle;pointer-events:none}.map-compass{fill:#3d5344;stroke:#3d5344;stroke-width:3}.map-compass text{stroke:none;font:600 17px Georgia,serif}.map-key{display:flex;flex-wrap:wrap;gap:12px;font-size:9px;color:#536348;margin:10px 0}.map-credit{font-size:9px!important;line-height:1.6!important;color:#777865!important}.map-credit a{color:#43634e}.region-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:10px}.region-choice{display:flex;gap:9px;padding:9px;align-items:center;text-align:left;border:1px solid #ded7c5;background:#f5f1e6;border-radius:10px;color:#243d2c;min-width:0}.region-choice.chosen{background:#e2e9d9;border-color:#6a855e}.region-choice b{display:block;font-size:11px}.region-choice small{display:block;font-size:9px;margin-top:3px;color:#707257}.map-number{height:24px;width:24px;flex:none;border-radius:50%;background:#dfdbc9;display:grid;place-items:center;font-size:10px}.owned-badge{font-size:8px;margin-left:auto;background:#d6e2cb;padding:4px;border-radius:5px}.map-details{padding:20px;background:#f3efe3;border:1px solid #ded9c9;border-radius:16px;position:sticky;top:0;min-width:0}.map-details h3{font:700 27px Georgia,serif;margin:10px 0}.map-details h4{font-size:15px;margin:17px 0 8px}.map-details p{font-size:12px;line-height:1.65;color:#57614d}.map-details .primary{width:100%;margin:10px 0}.map-details label{font-size:11px;font-weight:600;display:block;margin:12px 0 6px}.map-details input,.map-details select{width:100%;box-sizing:border-box;border:1px solid #ccc7b7;border-radius:8px;background:#fffcf3;padding:11px;font:inherit;color:#243d2c;min-width:0}.map-ledger{margin:13px 0;border-top:1px solid #ddd4bc;border-bottom:1px solid #ddd4bc;padding:8px 0}.map-ledger span{display:flex;justify-content:space-between;gap:10px;font-size:11px;padding:6px 0}.map-ledger b{font-size:11px;text-align:right}.map-hint{font-size:10px!important;color:#787454!important}.strength-dots{display:flex;gap:5px;align-items:center;margin:15px 0}.strength-dots i{width:12px;height:12px;border-radius:3px;background:#d8d1bc}.strength-dots i.filled{background:#a15a36}.strength-dots b{font-size:10px;margin-left:5px}.map-story,.convoy-form{margin-top:18px;padding-top:9px;border-top:1px solid #d9d0bb}.campaign-chronicle{font-size:11px;margin-top:20px}.campaign-chronicle p{font-size:10px}.convoy-ledger{font-size:11px;padding:15px;background:#eee8da;border-radius:12px}.convoy-ledger ul{list-style:none;padding:0}.convoy-ledger li{display:grid;gap:5px;padding:10px 0;border-top:1px solid #d9d0bb}.danger-copy{color:#a24028!important;font-weight:600}.campaign-dialog .eyebrow{font-size:10px}
@media(orientation:portrait){.resource-strip{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.morale-resource{grid-column:1/-1;min-width:0;display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center;min-height:35px;padding:7px 10px}.morale-resource .morale-track{grid-column:1/-1;grid-row:2}.morale-resource b{font-size:12px;text-align:center}.morale-resource small{text-align:right}.settlement-title{top:217px}.town-toolbar button{font-size:8px;padding:6px 2px}.town-toolbar .icon{width:15px;height:15px}#world-banners{top:215px;gap:6px;width:calc(100vw - 22px)}.status-banner{font-size:10px;padding:8px 10px}.status-banner span{font-size:9px}.settler-prompt{flex-wrap:wrap}.settler-prompt div{flex-basis:100%}.action-feedback{bottom:96px;font-size:11px;width:calc(100vw - 26px);box-sizing:border-box}.campaign-dialog{padding:16px;width:100%;max-height:100svh;border-radius:0}.campaign-dialog h2{font-size:27px}.campaign-layout{grid-template-columns:1fr;gap:14px}.nigeria-map{max-height:none;aspect-ratio:1000/826}.map-details{position:static;padding:16px}.map-intro{font-size:11px}.region-list{grid-template-columns:repeat(2,minmax(0,1fr))}.map-marker circle{stroke-width:5px}.map-key{font-size:8px;gap:8px}.map-credit{font-size:8px!important}.map-pane{display:flex;flex-direction:column}.region-list{order:3}.convoy-ledger{order:4}.map-details{order:1}.map-details p{font-size:12px}.map-details .eyebrow{font-size:9px}.campaign-dialog .dialog-head .quiet{font-size:25px;padding:4px 10px}}

.world-camera{position:fixed;right:24px;top:146px;padding:5px;display:flex;gap:3px;z-index:5}.world-camera button{background:#f4f0e3;color:#35533c;border:0;border-radius:7px;padding:7px 9px;font-size:10px;cursor:pointer}.battle .world-camera{display:none}@media(orientation:portrait){.world-camera{top:auto;bottom:158px;right:12px;padding:4px;gap:2px}.world-camera button{font-size:9px;padding:6px}.drawer-open .world-camera{display:none}}

@media(orientation:landscape) and (max-width:1050px){.resource-strip{gap:5px;left:15px;right:15px}.resource{padding:8px 6px;gap:5px}.morale-resource{min-width:0}.resource b{font-size:14px}.resource .icon{width:15px}}

.drawer-open .world-camera{display:none}

.founding-map{cursor:crosshair;touch-action:manipulation}.place-label{cursor:pointer;fill:#263b2e}.place-label text{font-weight:700;paint-order:stroke;stroke:#faf5e5;stroke-width:2px;stroke-linejoin:round}.founding-pin{fill:#b45131;stroke:#fff7e3;stroke-width:3;pointer-events:none}.founding-pin path{fill:none;stroke:#b45131;stroke-width:2}.place-label:hover text{fill:#ad492e}.region-list{max-height:330px;overflow:auto}.map-marker text{pointer-events:none}

#assault-controls{position:absolute;left:24px;bottom:calc(var(--dock-height, 200px) + 28px);pointer-events:auto;text-align:center;touch-action:none}#assault-controls button{width:52px;height:48px;padding:4px;margin:3px;font-size:25px;touch-action:none}body.assault .aim-caption{max-width:440px}body.assault #crosshair{border-color:#ffe3a0}@media(max-width:650px){#assault-controls{left:8px;bottom:calc(var(--dock-height, 200px) + 12px)}#assault-controls button{width:40px;height:40px;margin:1px}body.assault .aim-caption span{font-size:11px}}

body.assault.aiming .route .next{display:block;font-size:10px;margin-top:4px}body.assault .aim-caption{bottom:calc(var(--dock-height, 150px) + 90px)}body.assault #assault-controls [data-action="strikeWall"]{font-size:20px}

.resource-ledger{margin:16px 0;padding:16px;background:#fffdf4;border:1px solid #d8ccb3;border-radius:12px}.resource-ledger h4{margin:0 0 8px}.resource-ledger p{font-size:12px;line-height:1.5;margin:10px 0}.resource-ledger .region-choice{margin:8px 0}.resource-site rect{fill:#b48347;stroke:#fff5d9;stroke-width:1}.resource-site text{fill:#fffdf4;text-anchor:middle;font-weight:800}.resource-route{pointer-events:none}.resource-route path{animation:resource-travel 2s linear infinite}@keyframes resource-travel{to{stroke-dashoffset:-18}}@media(prefers-reduced-motion:reduce){.resource-route path{animation:none}}

.resource-party-notice{position:absolute;left:24px;bottom:calc(var(--dock-height, 65px) + 58px);max-width:340px;padding:12px 14px;font-size:12px;pointer-events:auto}.resource-party-notice b,.resource-party-notice span{display:block}.resource-party-notice span{font-size:11px;line-height:1.5;margin:6px 0}.drawer-open .resource-party-notice{display:none}@media(max-width:650px){.resource-party-notice{left:10px;max-width:260px;padding:9px;font-size:11px;bottom:calc(var(--dock-height, 65px) + 70px)}}

.auto-defence-notice{position:absolute;right:24px;top:155px;width:280px;padding:12px 14px;font-size:12px;pointer-events:auto}.auto-defence-notice b,.auto-defence-notice span{display:block}.auto-defence-notice span{font-size:11px;margin:7px 0}.drawer-open .auto-defence-notice{display:none}@media(max-width:650px){.auto-defence-notice{right:10px;top:170px;width:220px;padding:9px;font-size:11px}}

/* All dispatches use one temporary top toast and the on-demand notification centre. */
.notification-button{position:relative;gap:6px}.notification-button .icon{width:17px;height:17px}#notification-count{display:inline-grid;place-items:center;min-width:19px;height:19px;padding:0 4px;border-radius:20px;background:var(--rust);color:#fff;font:700 10px ui-monospace,monospace}.notification-button.needs-decision{box-shadow:inset 0 0 0 1px var(--gold)}
#notification-toast{position:fixed;z-index:19;top:64px;left:50%;transform:translateX(-50%);width:min(430px,calc(100vw - 24px));background:#fffdf7f7;border:1px solid var(--line);border-left:3px solid var(--green);border-radius:12px;box-shadow:0 6px 24px #20332928;display:flex;align-items:flex-start;pointer-events:auto;animation:dispatch-arrive .18s ease-out}#notification-toast.warning{border-left-color:var(--rust)}.toast-open{border:0;background:none;padding:12px 10px 12px 15px;flex:1;min-width:0;text-align:left}.toast-open strong{display:block;font-size:12px}.toast-open span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:4px;font-size:11px;line-height:1.5;color:#5a6455}.toast-dismiss{border:0;background:none;padding:8px 12px;font-size:22px;color:#697260;flex:none}
#notification-layer{position:fixed;inset:0;z-index:35;pointer-events:auto}.notification-backdrop{position:absolute;inset:0;background:#1c2d2226}.notification-centre{position:absolute;right:12px;top:64px;bottom:12px;width:min(390px,calc(100vw - 24px));overflow:auto;overscroll-behavior:contain;background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:0 16px 50px #182a3240;padding:18px;outline:none}.notification-centre>header{display:flex;justify-content:space-between;align-items:center;gap:12px;position:sticky;top:-18px;background:var(--paper);padding:8px 0 14px;z-index:1}.notification-centre h3{font-size:25px;margin-top:4px}.notification-centre h4{font:700 12px/1.5 'DM Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;letter-spacing:0;margin:0}.notification-centre p{font-size:12px;line-height:1.6;color:#596451;margin:6px 0 0;white-space:pre-line}.notification-centre .dispatch{border:1px solid var(--line);border-radius:11px;background:var(--card);padding:13px;margin-bottom:9px}.notification-centre .dispatch.important,.notification-centre .decision{border-left:3px solid var(--gold)}.dispatch>small{display:block;font:10px ui-monospace,monospace;color:var(--muted);margin-bottom:5px}.dispatch .secondary{font-size:11px;margin:10px 5px 0 0;min-height:34px;padding:7px 10px}.notification-history-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:18px 0 10px}.notification-history-heading>b,.dispatch-section-title{font-size:11px!important;text-transform:uppercase;letter-spacing:.07em!important;color:#596451}.dispatch-section-title{margin:4px 0 10px!important}.notification-history-heading .quiet{font-size:10px;min-height:28px;padding:5px 8px}.notification-empty{padding:20px 0}
@keyframes dispatch-arrive{from{opacity:0;translate:0 -8px}to{opacity:1;translate:0 0}}
@media(max-width:650px){.notification-label{display:none}.top-actions{gap:7px}.notification-button{min-width:37px;padding:8px}.notification-centre{top:58px;padding:14px}.notification-centre>header{top:-14px}.brand small{max-width:155px;letter-spacing:.04em}#notification-toast{top:58px}}
@media(prefers-reduced-motion:reduce){#notification-toast{animation:none}}
/* Council choices stay readable in both the town drawer and campaign map. */
.affair-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:12px;margin:14px 0}
.affair-options>article{padding:14px;border:1px solid #c9c8af;border-radius:10px;background:#f7f4e7;display:flex;flex-direction:column;gap:8px}
.affair-options>article.selected{border-color:#52694f;background:#e8eddb}
.affair-options p{margin:0;line-height:1.5}.affair-options button{margin-top:auto;white-space:normal}
.affair-options small{display:block;line-height:1.4;color:#555c4e}
.campaign-ambition{margin-bottom:20px}.ambition-steps{list-style:none;margin:10px 0;padding:0}
.ambition-steps li{display:flex;align-items:start;justify-content:space-between;gap:16px;padding:8px 0;border-bottom:1px solid #d6d4bf}
.ambition-steps b{white-space:nowrap}.ambition-steps .complete{color:#426441}.ambition-complete{border-color:#657e4c;background:#ecf0df}
.council-petition{border-left:4px solid #a8733e}.assault-plans{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}
.assault-plans button{white-space:normal}.ledger>button+button{margin:8px 0 0 8px}
@media(max-width:600px){.affair-options{grid-template-columns:1fr}.assault-plans{grid-template-columns:1fr}.ledger>button+button{margin-left:0}}

.aim-gate{position:absolute;top:75px;left:50%;transform:translateX(-50%);display:grid;grid-template-columns:1fr auto;gap:7px;padding:10px 13px;width:260px;max-width:40vw;background:#fff9e9ed;border:1px solid #c7b98b;border-radius:10px;color:#263d2c;text-shadow:none}.aim-gate .meter,.aim-gate small{grid-column:1/-1}.aim-gate .meter i{display:block;height:100%;background:#a7793d;width:100%;transition:width .12s}.aim-gate small{font-size:10px}@media(orientation:portrait){.aim-gate{top:120px;left:auto;right:12px;transform:none;width:150px;max-width:44vw;font-size:10px;padding:8px}.aim-gate small{font-size:9px}}

/* Regional map and town picker */
.campaign-dialog{width:min(1320px,96vw);max-width:1320px}.campaign-layout{grid-template-columns:minmax(0,1.8fr) minmax(290px,1fr);gap:20px}.map-intro{margin:8px 0 12px}.map-objective{margin-bottom:14px;border-bottom:1px solid #d9d3c2;padding-bottom:10px}.map-objective>summary{cursor:pointer;font-size:12px;color:#52614b}.map-shell{border:1px solid #c5ccba;border-radius:15px;overflow:hidden;background:#e4e5ce}.map-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;background:#f5f3e9;border-bottom:1px solid #cbd1be}.map-toolbar>span{font:600 13px Georgia,serif;color:#3b503e}.map-toolbar>div{display:flex;gap:5px}.map-toolbar button{border:1px solid #c7cbbd;border-radius:6px;background:#fffdf5;color:#354d3b;min-width:34px;min-height:34px;padding:5px 9px;font-size:12px;cursor:pointer}.map-toolbar button:first-child,.map-toolbar button:nth-child(2){font-size:21px;line-height:1}.map-toolbar button:hover{background:#e4e9d8}.campaign-dialog .nigeria-map{width:100%;max-height:none;aspect-ratio:1/.72;border-radius:0;touch-action:none;cursor:grab;user-select:none}.campaign-dialog .nigeria-map:active{cursor:grabbing}.campaign-dialog .map-rivers{stroke:#82a8af;opacity:.8}.campaign-dialog .map-marker .marker-hit{fill:transparent;stroke:none;filter:none}.campaign-dialog .map-marker .marker-dot{fill:#8b5743;stroke:#fffdf2}.campaign-dialog .map-marker.owned .marker-dot{fill:#456650}.campaign-dialog .map-marker.selected .marker-dot,.campaign-dialog .map-marker:focus .marker-dot{fill:#274a59;stroke:#d7af54}.campaign-dialog .map-marker text{font-family:system-ui,sans-serif;font-weight:700;pointer-events:none}.campaign-dialog .map-marker .town-label{text-anchor:start;fill:#354633;font-weight:600}.town-label-bg{fill:#f7f5e9;fill-opacity:.94;stroke:none}.map-marker.selected .town-label-bg{fill:#274a59}.campaign-dialog .map-marker.selected .town-label{fill:#fff8df}.town-label-wrap{display:none;pointer-events:none}.map-marker.named .town-label-wrap,.map-marker:hover .town-label-wrap,.map-marker:focus .town-label-wrap{display:block}.campaign-dialog .place-label{fill:#73806a;cursor:default;pointer-events:none}.campaign-dialog .place-label text{font-family:Georgia,serif;font-weight:400;paint-order:stroke;stroke:#e4e5ce;stroke-width:2px;stroke-linejoin:round}.campaign-dialog .founding-map .place-label{cursor:pointer;pointer-events:auto}.map-key{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;padding:9px 12px;background:#f5f3e9;border-top:1px solid #cbd1be;font-size:10px;color:#687260}.map-key>span{display:flex;align-items:center;gap:5px}.map-key>span:last-child{margin-left:auto}.key-town,.key-home{width:9px;height:9px;border-radius:50%;background:#8b5743;display:inline-block}.key-home{background:#456650}.town-browser{margin:14px 0 8px}.town-search{display:grid;grid-template-columns:1fr 150px;gap:7px;align-items:center}.town-search>label:first-child{grid-column:1/-1;font:600 14px Georgia,serif;color:#3b503e}.town-search input,.town-search select{width:100%;min-width:0;margin:0;padding:10px;border:1px solid #cccdbd;border-radius:8px;background:#fffdf5;font-size:12px;color:#384735}.campaign-dialog .region-list{grid-template-columns:repeat(2,minmax(0,1fr));max-height:260px;gap:6px;margin-top:9px}.campaign-dialog .region-choice{min-height:60px;background:#f8f5eb;padding:10px;border-radius:9px;gap:10px}.campaign-dialog .region-choice:hover{border-color:#7f9677;background:#edf0e3}.campaign-dialog .region-choice.chosen{border-color:#58745c;background:#e6ecdf;box-shadow:inset 3px 0 #58745c}.campaign-dialog .region-choice b{font-size:12px}.campaign-dialog .region-choice small{display:block;font-size:10px;margin-top:3px;color:#727866}.campaign-dialog .map-number{flex-shrink:0;width:28px;height:28px;display:grid;place-items:center;background:#8b5743;color:#fff8e9;font-size:12px}.campaign-dialog .map-number.owned{background:#456650}.town-list-rating{margin-left:auto;text-align:right;font-size:11px;color:#52614b;white-space:nowrap}.town-list-rating small{font-size:9px!important}.map-empty{font-size:12px;padding:14px;color:#69745e}.campaign-dialog .map-credit{font-size:10px;color:#81856f;line-height:1.5}.campaign-dialog .resource-ledger{border-top:1px solid #d6d4c2;padding-top:12px;margin-top:16px}.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}.map-toolbar button:focus-visible,.region-choice:focus-visible,.nigeria-map:focus-visible{outline:3px solid #bd9340;outline-offset:2px}
@media(max-width:800px){.campaign-layout{grid-template-columns:1fr}.map-details{position:static}.campaign-dialog .map-pane{display:block}.map-toolbar{padding:8px}.map-toolbar>span{font-size:12px}.map-key>span:last-child{margin-left:0}.campaign-dialog .region-list{max-height:240px}.campaign-dialog .map-details{padding:16px}.town-list-rating{display:none}}
@media(max-width:420px){.map-toolbar>span{display:none}.map-toolbar>div{width:100%}.map-toolbar button{flex:1}.town-search{grid-template-columns:1fr 115px}.campaign-dialog .region-choice{padding:8px;gap:7px}.campaign-dialog .region-choice b{font-size:11px}}
.campaign-dialog .nigeria-map{aspect-ratio:1/.46}.campaign-dialog .map-details input{max-width:100%;min-width:0}.campaign-dialog .map-details .field-buttons{flex-wrap:wrap}.campaign-dialog .map-details .field-buttons input{flex:1 1 180px}
.campaign-dialog .dialog-head h2{font-size:29px;margin:5px 0}.campaign-dialog .map-intro{font-size:12px;line-height:1.5;margin:7px 0 10px}.campaign-dialog .map-objective{margin-bottom:12px;padding-bottom:8px}.campaign-dialog .nigeria-map{aspect-ratio:1/.38}
.map-marker .town-label-wrap{pointer-events:auto;cursor:pointer}

.expedition-warning{margin:14px 0;padding:14px;border:1px solid #c9ac73;border-radius:10px;background:#f3ead5}.map-details .expedition-warning h4{margin-top:0}.expedition-auto{display:flex!important;align-items:flex-start;gap:9px;font-size:12px!important;line-height:1.6}.expedition-auto input{width:17px!important;height:17px;flex:0 0 17px;margin:2px 0!important}.campaign-dialog .region-choice small{line-height:1.5}

.expedition-size-picker{margin:14px 0;padding:12px;border:1px solid #cccdbd;border-radius:9px;background:#faf7ed}.expedition-size-picker label{display:block;font-size:12px;font-weight:600}.expedition-size-picker input{width:90px!important;display:block;margin:8px 0!important}.expedition-size-picker small{display:block;line-height:1.5;font-size:11px;color:#6b735f}

.expedition-equipment{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:12px 0}.expedition-equipment label{padding:10px;background:#f1efdf;border-radius:8px}.expedition-equipment input{width:100%!important;box-sizing:border-box}.expedition-equipment small{font-weight:400}.expedition-size-picker h4{margin-top:0}.expedition-size-picker #expedition-plan-status{font-size:11px;line-height:1.6}.expedition-size-picker>.field-buttons{gap:8px}

/* Held movement is visibly distinct; touch controls do not select page text. */
#assault-controls{user-select:none;-webkit-user-select:none}#assault-controls [data-move].held{background:var(--green);color:var(--card);border-color:var(--green-dark);box-shadow:inset 0 2px 5px #182a3240;transform:translateY(1px)}

.recovery-aid:focus{outline:2px solid var(--gold);outline-offset:2px}.recovery-aid summary{cursor:pointer}

#look-controls{position:absolute;right:20px;bottom:calc(var(--dock-height,150px) + 18px);display:flex;align-items:center;gap:7px;color:#fff9e6;text-shadow:0 1px 3px #203329;pointer-events:auto;user-select:none;-webkit-user-select:none}#look-controls button{width:46px;height:44px;padding:4px;font-size:25px;touch-action:none}#look-controls span{font-size:10px}#look-controls button.held{background:var(--green);color:var(--card)}@media(max-width:650px){#look-controls{right:10px;gap:4px}#look-controls button{width:38px;height:40px}#look-controls span{display:none}}

/* Keep browser controls in stable compositor layers above Unity's swapping WebGL surface.
   Live backdrop sampling across the WebGL surface can drop the overlay during repaints. */
body{isolation:isolate}
#unity-canvas{z-index:0}
#interface{z-index:10;isolation:isolate;transform:translateZ(0)}
#modal-layer{z-index:30;isolation:isolate;transform:translateZ(0);backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(32,51,41,.55)}
.topbar,.settlement-title,.panel{backdrop-filter:none;-webkit-backdrop-filter:none}

.tribute-card{border-left:3px solid var(--gold)}.tribute-card:focus{outline:2px solid var(--gold);outline-offset:2px}.tribute-card details{margin:12px 0}.tribute-card summary{cursor:pointer;font-weight:700}.tribute-card .field-buttons{flex-wrap:wrap}.tribute-card .field-buttons button{flex:1 1 125px}

.tribute-record{padding:12px 0;border-top:1px solid var(--line);margin-top:10px}.tribute-record>small{display:block;margin:5px 0;color:var(--rust)}#outgoing-tribute:focus{outline:2px solid var(--gold);outline-offset:2px}

.outcome-dialog{width:min(620px,100%)}.outcome-summary{font-size:16px!important;color:var(--ink)!important}.outcome-report{margin-top:14px;text-align:left;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:10px 0}.outcome-report summary{cursor:pointer;color:var(--green);font-weight:700;font-size:12px}.outcome-report p{margin:9px 0 2px;text-align:left;font-size:12px!important;line-height:1.55!important}.outcome-dialog .result-stats{margin-top:14px}
