/* Deliberate panels and temporary selections keep the atlas quiet. */
#inspector{display:block;position:fixed;right:auto;bottom:auto;height:auto;border-radius:12px;visibility:hidden;opacity:0;pointer-events:none;transform:translateY(-14px) scale(.96);transform-origin:var(--details-origin,50%) top;transition:transform .2s ease,opacity .16s ease,visibility .2s;z-index:20;padding:24px;overflow:auto}
#inspector.is-open{visibility:visible;opacity:1;pointer-events:auto;transform:translateY(0) scale(1);animation:none}
#inspector .close-inspector{position:sticky;float:right;top:0;right:0;margin-top:-12px;background:var(--paper);z-index:1}
#open-details[aria-expanded=true]{background:#dfe7d5;border-color:#8e9f7c}
#redo{margin:0 6px 0 0;min-height:36px;background:transparent;border:0;font-size:12px}.page-heading #undo{margin-left:auto!important}
#experiment-controls #select-people{font-size:12px;padding:8px 10px}#select-people[aria-pressed=true]{background:#dfe7d5;border-color:#657d56}
.soldier-unit.is-person-selected::before{content:'';position:absolute;inset:2px 5px -1px;border:1.5px solid #3e6244;border-radius:45%;background:#bfd2aa33;pointer-events:none;box-shadow:0 0 0 2px #fff9df66}.reserve-soldier.is-person-selected{outline:2px solid #3e6244;outline-offset:2px;border-radius:8px}
.selecting-people #atlas{cursor:crosshair!important}.selecting-people .soldier-piece{cursor:crosshair}.people-marquee{position:fixed;z-index:1005;pointer-events:none;border:1.5px solid #3e6244;background:#94b36b29;border-radius:2px}
#group-actions{position:absolute;left:16px;bottom:86px;z-index:7;padding:12px;min-width:275px;max-width:calc(100% - 32px);background:var(--paper);border:1px solid #aeba9e;border-radius:10px;box-shadow:0 8px 28px #263e351a}#group-actions[hidden]{display:none}.group-summary{display:flex;align-items:center;justify-content:space-between;gap:20px}.group-summary button{border:0;background:none;padding:5px 8px;min-height:36px}.group-summary .group-handle{cursor:grab;font-weight:600;font-size:14px}.group-buttons{display:flex;gap:7px;margin-top:8px}.group-buttons button{font-size:12px;min-height:42px;flex:1}#group-actions p{font-size:12px;margin:8px 0 0;color:#617157}
.people-navigation{display:flex;align-items:center;gap:6px;margin-bottom:18px;flex-wrap:wrap}.people-navigation [role=tab]{background:transparent;border:0;border-bottom:2px solid transparent;border-radius:0;padding:11px 16px}.people-navigation [aria-selected=true]{border-color:#425e3c;color:#2c4930;font-weight:600}.people-explainer{font-size:14px;color:#65715e;line-height:1.6;max-width:720px;margin-bottom:20px}.person-organization{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px}.person-organization label{min-width:0;font-size:11px;margin:0}.person-organization select{width:100%;max-width:100%;font-size:13px;margin:5px 0 0}.troop-top [data-toggle-person]{min-width:32px;height:32px;flex-shrink:0;padding:0;font-size:17px;background:transparent}.troop-top [data-toggle-person][aria-pressed=true]{background:#dfe7d5;color:#294b31;border-color:#80916e}.troop-top{flex-wrap:wrap}.troop-name{min-width:80px;flex:1}.troop-card .person-organization~.troop-controls{margin-top:10px}.people-picker-sheet{max-height:82dvh;overflow:auto}.people-empty{padding:30px 0;max-width:480px}.people-empty h3{font:30px 'Libre Caslon Display',Georgia,serif;margin:0 0 10px}.people-empty p{font-size:14px;line-height:1.6;color:#697560}.people-selection-footer{position:sticky;bottom:12px;background:var(--paper);display:flex;align-items:center;justify-content:center;gap:8px;padding:12px;border:1px solid #b9c8a9;border-radius:10px;box-shadow:0 5px 20px #263e3520;margin-top:18px}.people-selection-footer:empty{display:none}.people-selection-footer button{min-height:40px;font-size:12px}.people-selection-footer span{font-size:12px}.org-chart{list-style:none;padding:0;max-width:940px}.org-person{display:flex;align-items:center;gap:12px;margin:0 0 12px calc(var(--depth)*30px);border:1px solid #cbd4c1;border-left:3px solid #a6b393;padding:14px;background:#faf9f3;position:relative;border-radius:0 8px 8px 0}.org-person::before{content:'';position:absolute;left:-18px;top:-12px;width:16px;height:45px;border-left:1px solid #aebd9f;border-bottom:1px solid #aebd9f}.org-person[style="--depth:0"]::before{display:none}.org-person>div{flex:1;min-width:0}.org-person strong{font-size:14px}.org-person small{display:block;font-size:11px;line-height:1.5;margin-top:5px;color:#718067}.org-person label{font-size:11px;margin:0;max-width:220px}.org-person select{font-size:13px;min-height:42px;margin-top:5px}.org-person .soldier-avatar{flex-shrink:0}
/* Touch has explicit reveal state; synthesized/sticky hover never reveals controls. */
.touch-ui .country-territory .territory-label,.touch-ui .country-territory .territory-sub,.touch-ui .country-territory .vacancy,.touch-ui .country-territory .soldier-star,.touch-ui .country-map-actions,.touch-ui .continent>.continent-label,.touch-ui .continent>.continent-sub{opacity:0!important;pointer-events:none!important}
.touch-ui .country-territory.is-revealed .territory-label,.touch-ui .country-territory.is-revealed .territory-sub,.touch-ui .country-territory.is-revealed .soldier-star,.touch-ui .continent.is-revealed>.continent-label,.touch-ui .continent.is-revealed>.continent-sub{opacity:1!important}
.touch-ui .country-territory.is-revealed .vacancy,.touch-ui .country-territory.is-revealed>.country-map-actions,.touch-ui .continent.is-revealed>.continent-label{opacity:1!important;pointer-events:auto!important}
.touch-ui #atlas .soldier-remove{opacity:0!important;pointer-events:none!important}
.touch-ui #atlas .soldier-unit.is-person-selected>.soldier-remove{opacity:1!important;pointer-events:auto!important}
.touch-ui #troop-tooltip{display:none}.touch-ui .continent-resize{opacity:0;pointer-events:none}
@media(max-width:900px){#experiment-controls{flex-wrap:wrap}.org-person{flex-wrap:wrap;margin-left:calc(var(--depth)*15px)}.org-person label{width:100%;max-width:none;margin-left:36px}.person-organization select{font-size:16px}}
@media(max-width:600px){#experiment-controls{grid-template-columns:minmax(0,1fr) 44px 72px}#experiment-controls #select-people{grid-column:1;grid-row:3;font-size:12px;min-height:40px}#map-mode-hint{top:195px}#person-actions{bottom:82px}#group-actions{position:fixed;left:10px;right:10px;bottom:82px;min-width:0;max-width:none}.group-buttons button{min-height:44px;font-size:12px}.group-summary button{min-height:40px}.people-navigation{gap:2px}.people-navigation [role=tab]{padding:10px 12px;font-size:13px}.people-selection-footer{flex-wrap:wrap}.people-picker-sheet{max-height:85dvh}.org-person{padding:12px 10px}.org-person label{margin-left:0}.org-person select{font-size:16px}.person-organization{grid-template-columns:1fr}.touch-ui #atlas .soldier-unit.is-person-selected>.soldier-remove{width:27px;height:27px;font-size:22px;line-height:24px}}
@media(prefers-reduced-motion:reduce){#inspector{transition:none}}
.country-people-button{position:absolute;white-space:nowrap;min-height:28px;padding:3px 7px;font-size:12px;background:#faf8ef;border-color:#a6b697;opacity:0;pointer-events:none}#troop-layer .country-people-button{pointer-events:none}.country-territory:hover .country-people-button,.country-territory.is-revealed .country-people-button{opacity:1}#troop-layer .troop-country:hover .country-people-button,#troop-layer .troop-country.is-revealed .country-people-button{pointer-events:auto}.touch-ui .country-territory .country-people-button{opacity:0!important;pointer-events:none!important}.touch-ui .country-territory.is-revealed .country-people-button{opacity:1!important;pointer-events:auto!important}.country-people-list{margin:15px 0;max-height:50dvh;overflow:auto}.country-people-list>div{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid #d7dece}.country-people-list>div>span:nth-child(2){flex:1}.country-people-list strong{font-size:14px}.country-people-list small{display:block;font-size:11px;color:#6f7e62;margin-top:5px}.country-people-list button{min-width:44px}.country-people-list [aria-pressed=true]{background:#dfe7d5;border-color:#7b8f69}
.group-handle{touch-action:none;-webkit-touch-callout:none}.touch-troop-ghost b{position:absolute;bottom:-6px;right:-6px;border-radius:12px;background:#294834;color:#fff9ec;font:bold 12px sans-serif;min-width:22px;padding:4px;text-align:center}
.drag-source-hidden{visibility:hidden!important;opacity:0!important;pointer-events:none!important}.sea-drop-hint{background:#3f5948ee}.sea-drop-active .map-surface{box-shadow:inset 0 0 0 2px #84967b}
/* One click/tap label, identical on mouse and touch. Troop hover has no UI. */
#troop-layer .soldier-remove{display:none!important}#troop-layer .soldier-piece:hover{transform:none;filter:none}#troop-layer .vacancy{opacity:0!important;visibility:hidden;pointer-events:none!important}#troop-layer .troop-country.is-revealed .vacancy{opacity:1!important;visibility:visible;pointer-events:auto!important}#troop-layer .soldier-star{opacity:0!important}#person-actions{position:fixed;display:flex;align-items:center;gap:10px;transform:none;inset:auto;bottom:auto;right:auto;width:max-content;max-width:calc(100vw - 16px);min-width:150px;padding:9px 10px 9px 13px;z-index:30;background:#263e35;color:#fff9e9;border:1px solid #899779;border-radius:8px;box-shadow:0 5px 18px #263e3526}#person-actions[hidden]{display:none}#person-actions>div{margin:0;min-width:0;max-width:230px}#person-actions strong{font-size:13px;overflow-wrap:anywhere}#person-actions small{font-size:11px;color:#d6dfcc;margin-top:4px}#person-actions .troop-label-remove{border:0;background:#984f3b;color:#fff9ed;min-width:36px;width:36px;min-height:36px;height:36px;padding:0;font:23px/30px sans-serif;border-radius:50%;flex-shrink:0}#person-actions .troop-label-remove:hover{background:#ad5c44}.touch-ui #person-actions .troop-label-remove{width:42px;min-width:42px;height:42px;min-height:42px}#person-actions [data-person-action=remove]{grid-column:auto;grid-row:auto}

/* Country controls use the same screen-sized, click-only label as a person. */
.map-context-label{position:fixed;z-index:25;background:#263e35;color:#fff9e9;border:1px solid #899779;border-radius:8px;box-shadow:0 5px 18px #263e3526;font-family:'DM Sans',sans-serif;max-width:calc(100vw - 16px)}
.map-context-label[hidden]{display:none}
.country-label{display:flex;align-items:center;gap:12px;width:max-content;min-width:190px;max-width:min(300px,calc(100vw - 16px));padding:9px 10px 9px 13px}
.country-label>div{min-width:0;flex:1}.country-label strong{display:block;font-size:13px;overflow-wrap:anywhere;line-height:1.35}.country-label small{display:block;font-size:11px;line-height:1.3;color:#d6dfcc;margin-top:4px;overflow-wrap:anywhere}
.country-label .context-remove{border:0;background:#984f3b;color:#fff9ed;min-width:36px;width:36px;min-height:36px;height:36px;padding:0;font:23px/30px sans-serif;border-radius:50%;flex-shrink:0}
.country-counts{width:236px;padding:6px 9px}
.country-rank-row{display:grid;grid-template-columns:20px 1fr 25px 36px 36px;gap:5px;align-items:center;min-height:42px}
.country-rank-row+.country-rank-row{border-top:1px solid #89977940}
.country-rank-row .soldier-avatar{width:18px;height:32px;display:block}
.country-rank-name{font-size:12px}.country-rank-row output{font-size:13px;font-weight:600;text-align:right;font-variant-numeric:tabular-nums;padding-right:3px}
.country-rank-row button{border:1px solid #89977970;background:#ffffff0b;color:#fff9e9;width:36px;min-width:36px;height:36px;min-height:36px;padding:0;font:21px/1 'DM Sans',sans-serif;border-radius:5px}
.country-rank-row button:disabled{opacity:.3;cursor:default}.country-rank-row button:active:not(:disabled){background:#ffffff25}
.map-context-label button:focus-visible{outline:2px solid #ddc57f;outline-offset:2px}
.editing-land .map-context-label,.dragging .map-context-label,.resizing-continent .map-context-label{visibility:hidden}
.touch-ui .country-label .context-remove{width:44px;min-width:44px;height:44px;min-height:44px}
.touch-ui .country-counts{width:252px}.touch-ui .country-rank-row{grid-template-columns:20px 1fr 25px 44px 44px;min-height:48px}.touch-ui .country-rank-row button{width:44px;min-width:44px;height:44px;min-height:44px}

#atlas .continent,#atlas [data-troop-island]{transition:opacity .18s ease}
#atlas .is-muted{opacity:.3}
#atlas .territory.country-editable{stroke:#4c6845;stroke-width:2.5;vector-effect:non-scaling-stroke;cursor:grab}
#atlas .country-border-points circle{fill:#faf8ef;stroke:#4c6845;stroke-width:1.3;vector-effect:non-scaling-stroke;cursor:crosshair;touch-action:none;pointer-events:all}
.editing-border #atlas .territory,.editing-land #atlas .territory.country-editable{cursor:grabbing}
@media(prefers-reduced-motion:reduce){#atlas .continent,#atlas [data-troop-island]{transition:none}}

/* Strength stays visible when a country runs out of individual troop slots. */
#troop-layer button.troop-count-badge{transform:scale(var(--troop-badge-scale,1));transform-origin:left center;position:absolute;left:29px;top:40px;z-index:3;pointer-events:auto;white-space:nowrap;min-width:28px;padding:2px 4px;border:1px solid #758166;border-radius:9px;background:#fff9e8;color:#263e35;font:bold 12px/16px 'DM Sans',sans-serif;box-shadow:0 1px 3px #263e3533;cursor:pointer}
#troop-layer .troop-count-badge:focus-visible{outline:2px solid #263e35;outline-offset:2px}


/* A single shared palette for every country in a company focus area. */
.country-label{display:grid;grid-template-columns:minmax(0,1fr) auto;width:290px;max-width:calc(100vw - 16px);gap:8px 12px}
.continent-palette{min-width:0;margin:12px 0}
.continent-palette>span{display:block;font-size:11px;color:#68755f;margin-bottom:3px}
.country-label .continent-palette{grid-column:1/-1;margin:2px 0 0;border-top:1px solid #89977940;padding-top:7px}
.country-label .continent-palette>span{color:#d6dfcc;font-size:10px}
.color-swatches{display:flex;width:264px;max-width:100%}
.color-swatches .color-swatch,#inspector .color-swatches .color-swatch{position:relative;display:grid;place-items:center;flex:1;min-width:0;width:44px;height:44px;min-height:44px;margin:0;padding:7px;border:0;background:transparent;box-shadow:none;border-radius:6px}
.color-swatch>span{display:grid;place-items:center;width:27px;height:27px;background:var(--swatch);border:1px solid #263e3540;border-radius:50%;color:#263e35;font:bold 16px/1 sans-serif;box-shadow:0 0 0 2px transparent}
.color-swatch[aria-pressed=true]>span{box-shadow:0 0 0 2px #263e35,0 0 0 3px #d9dfd0}
.country-label .color-swatch[aria-pressed=true]>span{box-shadow:0 0 0 2px #263e35,0 0 0 3px #d9dfd0}
.color-swatch:focus-visible{outline:2px solid #a79157;outline-offset:-2px}
/* Names are printed on the land; every soldier stays above the lettering. */
#atlas .map-lettering,#atlas .map-lettering *{pointer-events:none;user-select:none}
#atlas .map-lettering text{font-family:'Libre Caslon Display',Georgia,serif;font-weight:400}
#atlas .continent-lettering{opacity:.23}
#atlas .continent-lettering text{fill:#334c40}
#atlas .country-lettering text{font-style:italic;fill:#344a3e;paint-order:stroke;stroke:var(--land-color);stroke-width:3px;stroke-linejoin:round}
#atlas .country-lettering{opacity:.88}

/* Selection uses emphasis instead of rings; selected ranks remain readable. */
.soldier-unit.is-person-selected::before{content:none}
.reserve-soldier.is-person-selected{outline:none;box-shadow:none}
#troop-layer .soldier-unit,.reserve-soldier{transition:opacity .15s ease}
.has-people-selection #troop-layer .soldier-unit:not(.is-person-selected),.has-people-selection .reserve-soldier:not(.is-person-selected){opacity:.52}
.has-people-selection #troop-layer .soldier-unit.is-person-selected,.has-people-selection .reserve-soldier.is-person-selected{opacity:1}
#atlas .country-lettering{opacity:.53}
.country-label .country-label-actions{display:flex;flex:none;gap:2px;align-items:center}
.country-label-actions button,#person-actions .context-close{display:grid;place-items:center;min-width:36px;width:36px;min-height:36px;height:36px;padding:0;border:0;border-radius:5px;box-shadow:none;background:transparent;color:#dae0d3;font:23px/1 sans-serif}
.country-label-actions .context-delete{color:#dea58d}
.context-delete svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.country-label-actions button:hover,#person-actions .context-close:hover{background:#ffffff12}
#person-actions{display:grid;grid-template-columns:minmax(0,1fr) 36px;gap:7px 12px;min-width:190px}
#person-actions>div{grid-column:1;grid-row:1;margin:0}
#person-actions .context-close{grid-column:2;grid-row:1;align-self:start}
#person-actions .troop-dismiss{grid-column:1/-1;grid-row:2;justify-self:start;min-height:36px;padding:6px 0;border:0;border-radius:0;background:transparent;color:#e8b39c;font-size:12px;text-align:left}
#person-actions .troop-dismiss:hover{color:#ffceba;text-decoration:underline}
.touch-ui .country-label-actions button,.touch-ui #person-actions .context-close{min-width:44px;width:44px;min-height:44px;height:44px}
.touch-ui #person-actions{grid-template-columns:minmax(0,1fr) 44px}
.touch-ui #person-actions .troop-dismiss{min-height:44px}
.soldier-avatar.action-sprite{background-image:url('soldier-actions.png');background-repeat:no-repeat}

/* Eight complete drawings per rank, with real changing arm and leg poses. */
.troop-drag-ghost{position:fixed;z-index:1001;pointer-events:none;background:transparent}
.troop-drag-ghost b{position:absolute;right:-7px;bottom:-5px;border-radius:12px;background:#294834;color:#fff9ec;font:700 12px/1 sans-serif;padding:5px;min-width:22px;text-align:center}
.drag-figure{position:relative;width:100%;height:100%;overflow:visible}
.drag-frame-window{position:absolute;left:-40.47619%;width:180.95238%;height:100%;overflow:hidden}
.drag-frame-strip{position:absolute;left:0;width:800%;max-width:none;height:300%;animation:drag-sprite-frames 1.6s steps(8,end) infinite;pointer-events:none}
@keyframes drag-sprite-frames{to{transform:translateX(-100%)}}
@media(prefers-reduced-motion:reduce){.drag-frame-strip{animation:none}#troop-layer .soldier-unit,.reserve-soldier{transition:none}}

/* Text edits stay on the map, with explicit save and close in one corner. */
.country-label,#person-actions{width:320px;max-width:calc(100vw - 16px);grid-template-columns:minmax(0,1fr);gap:7px;padding:10px 12px}
.country-label .label-heading,#person-actions .label-heading{grid-column:1/-1;grid-row:1;max-width:none;min-width:0;margin:0;padding-right:74px}
.country-label .label-input,#person-actions .label-input{display:block;box-sizing:border-box;width:100%;min-width:0;min-height:28px;margin:0;padding:3px 2px;border:0;border-bottom:1px solid #aeba9e45;border-radius:0;background:transparent;color:#fff9e9;box-shadow:none;font:600 13px/20px 'DM Sans',sans-serif;text-overflow:ellipsis;cursor:text}
.country-label .label-subtitle,#person-actions .label-subtitle{font-weight:400;font-size:12px;color:#d6dfcc}
.country-label .label-input:focus,#person-actions .label-input:focus{outline:none;border-bottom-color:#ddc57f;background:#ffffff08}
.country-label .label-input[aria-invalid=true],#person-actions .label-input[aria-invalid=true]{border-bottom-color:#e8b39c}
.country-label .label-controls,#person-actions .label-controls{position:absolute;top:6px;right:6px;display:flex;align-items:flex-start;gap:1px;max-width:none;min-width:0;margin:0;padding:0;flex:none}
.label-controls button,#person-actions .label-controls button,.country-label-footer .context-delete{display:grid;place-items:center;min-width:36px;width:36px;min-height:36px;height:36px;padding:0;border:0;border-radius:5px;box-shadow:none;background:transparent;color:#dae0d3;font:23px/1 sans-serif}
.label-controls button[hidden]{display:none!important}
.label-controls .context-save,#person-actions .label-controls .context-save{color:#e4ce88}
.label-controls button:hover,.country-label-footer .context-delete:hover{background:#ffffff12}
.country-label .country-label-footer{grid-column:1/-1;display:flex;justify-content:flex-end;margin-top:-5px}
.country-label-footer .context-delete{color:#dea58d}
#person-actions .troop-label-rank{margin:5px 2px 0;color:#acbda9;font-size:10px}
#person-actions .troop-dismiss{grid-column:1/-1;grid-row:2;margin:0 2px}
.label-controls button:focus-visible,.country-label-footer button:focus-visible{outline:2px solid #ddc57f;outline-offset:-2px}
.touch-ui .label-controls button,.touch-ui #person-actions .label-controls button,.touch-ui .country-label-footer .context-delete{min-width:44px;width:44px;min-height:44px;height:44px}
.touch-ui .country-label .label-heading,.touch-ui #person-actions .label-heading{padding-right:86px}
.touch-ui .country-label .label-input,.touch-ui #person-actions .label-input{min-height:36px;font-size:16px}

/* Screen-space marginalia stays quietly in the corner as the atlas moves. */
.map-surface>.dragon-marginalia{position:absolute;right:20px;bottom:16px;width:clamp(170px,18vw,250px);height:auto;opacity:1;z-index:1;pointer-events:auto;cursor:pointer;touch-action:manipulation;user-select:none}
.dragon-marginalia *{pointer-events:none}
.dragon-marginalia image{opacity:.2}
.dragon-marginalia text{font:italic 31px Georgia,serif;letter-spacing:1px;fill:#647361;opacity:.55}
@media(max-width:600px){.map-surface>.dragon-marginalia{right:10px;bottom:calc(80px + env(safe-area-inset-bottom));width:155px}}

/* Marching changes the registered sprite frame; facing changes the view, never
   rotates the paper soldier flat. The hit target travels with the artwork. */
.soldier-sprite.marching-sprite:not(.action-sprite){background-image:none!important;animation:none!important;transform:none!important}
.march-frame{display:none;position:absolute;left:50%;bottom:5px;background-image:url('soldier-march-v2.png');background-repeat:no-repeat;pointer-events:none;transform-origin:center}
.marching-sprite:not(.action-sprite)>.march-frame{display:block}
.patrolling .soldier-piece{animation:none!important}
@media(prefers-reduced-motion:reduce){.march-frame{display:none!important}}

/* Complete engraved sprite poses, held still between brief gestures. */
.dragon-marginalia .dragon-art{opacity:.3}
.dragon-marginalia .dragon-art image{opacity:1}

/* Native map SVG: artwork, hit targets and patrol offsets share one transform tree. */
#troop-layer g.soldier-unit,#troop-layer g.soldier-piece{position:static}
#troop-layer g.soldier-piece{cursor:grab;touch-action:none;outline:none;transform:none;filter:none}
#troop-layer g.soldier-sprite{background:none!important;filter:none;pointer-events:none;transform-box:fill-box;transform-origin:center}
#troop-layer .sprite-window{pointer-events:none}
#troop-layer .soldier-hit{pointer-events:all}
#troop-layer g.soldier-piece:focus-visible .soldier-hit{stroke:#63784c;stroke-width:1.5;stroke-dasharray:3 3;rx:5}
#troop-layer g.troop-count-badge{pointer-events:auto;cursor:pointer;touch-action:manipulation}
#troop-layer .badge-hit{fill:#fff9e8;stroke:#758166;stroke-width:1}
#troop-layer .troop-count-badge text{fill:#263e35;font:700 12px 'DM Sans',sans-serif;pointer-events:none}
#troop-layer .troop-count-badge:focus-visible .badge-hit{stroke:#263e35;stroke-width:2}

.dragon-marginalia:focus,.dragon-marginalia:focus-visible{outline:none;-webkit-tap-highlight-color:transparent}
.dragon-marginalia:focus-visible .dragon-art{opacity:.38}
#troop-hover-label{position:fixed;z-index:31;pointer-events:none;max-width:min(280px,calc(100vw - 16px));padding:8px 12px;border:1px solid #899779;border-radius:7px;background:#263e35;color:#fff9e9;box-shadow:0 4px 14px #263e3526;font-size:13px;overflow-wrap:anywhere}
#troop-hover-label strong,#troop-hover-label span{display:block}
#troop-hover-label span{margin-top:3px;font-size:11px;color:#d6dfcc}
#troop-hover-label[hidden]{display:none}
.country-expand{display:block;width:100%;margin-top:8px;padding:8px;border:1px solid #899779;border-radius:5px;background:transparent;color:#fff9e9;font-size:12px;cursor:pointer}
.country-expand:hover{background:#ffffff15}
.nationality-guide{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-top:24px}
.nationality-guide>div{padding:12px;background:#edf0e6;border-radius:8px}
.nationality-guide .soldier-avatar{display:inline-block;width:36px;height:65px}
#person-actions select.label-input{color:#fff9e9;background:#263e35;padding:4px 0;margin-top:6px}

.soldier-avatar.rank-british-junior,.soldier-sprite.rank-british-junior{background-image:url("soldiers/british-junior.png");background-size:603.174603% 500%;background-position:0% 0%}

.soldier-avatar.rank-british-staff,.soldier-sprite.rank-british-staff{background-image:url("soldiers/british-staff.png");background-size:603.174603% 500%;background-position:0% 0%}

.soldier-avatar.rank-british-manager,.soldier-sprite.rank-british-manager{background-image:url("soldiers/british-manager.png");background-size:603.174603% 500%;background-position:0% 0%}

.soldier-avatar.rank-us-junior,.soldier-sprite.rank-us-junior{background-image:url("soldiers/us-junior.png");background-size:603.174603% 500%;background-position:0% 0%}

.soldier-avatar.rank-us-staff,.soldier-sprite.rank-us-staff{background-image:url("soldiers/us-staff.png");background-size:603.174603% 500%;background-position:0% 0%}

.soldier-avatar.rank-us-manager,.soldier-sprite.rank-us-manager{background-image:url("soldiers/us-manager.png");background-size:603.174603% 500%;background-position:0% 0%}

.soldier-avatar.rank-prussian-junior,.soldier-sprite.rank-prussian-junior{background-image:url("soldiers/prussian-junior.png");background-size:603.174603% 500%;background-position:0% 0%}

.soldier-avatar.rank-prussian-staff,.soldier-sprite.rank-prussian-staff{background-image:url("soldiers/prussian-staff.png");background-size:603.174603% 500%;background-position:0% 0%}

.soldier-avatar.rank-prussian-manager,.soldier-sprite.rank-prussian-manager{background-image:url("soldiers/prussian-manager.png");background-size:603.174603% 500%;background-position:0% 0%}

.soldier-avatar.rank-british-junior,.soldier-sprite.rank-british-junior{background-position:7.1545% 0.974%}

.soldier-avatar.rank-british-manager,.soldier-sprite.rank-british-manager{background-position:5.8668% 0.8926%}

.soldier-avatar.rank-british-staff,.soldier-sprite.rank-british-staff{background-position:6.6277% -0.0026%}

.soldier-avatar.rank-prussian-junior,.soldier-sprite.rank-prussian-junior{background-position:12.0126% 0.0788%}

.soldier-avatar.rank-prussian-manager,.soldier-sprite.rank-prussian-manager{background-position:6.3936% 0.6485%}

.soldier-avatar.rank-prussian-staff,.soldier-sprite.rank-prussian-staff{background-position:7.0959% 0.2416%}

.soldier-avatar.rank-us-junior,.soldier-sprite.rank-us-junior{background-position:9.5543% 0.5671%}

.soldier-avatar.rank-us-manager,.soldier-sprite.rank-us-manager{background-position:6.6862% -0.0026%}

.soldier-avatar.rank-us-staff,.soldier-sprite.rank-us-staff{background-position:6.5692% 0.4857%}
.country-nationality{display:flex;align-items:center;gap:10px;margin:0 0 7px;padding-bottom:7px;border-bottom:1px solid #89977940;font-size:11px;color:#d6dfcc}
.country-nationality select{flex:1;min-width:0;min-height:34px;padding:4px 7px;border:1px solid #89977970;border-radius:5px;background:#263e35;color:#fff9e9;font-size:13px}
.touch-ui .country-nationality select{min-height:44px;font-size:16px}

/* The coastline is the country selection and keyboard-focus indicator. */
#atlas .territory:focus,#atlas .territory:focus-visible{outline:none}
#atlas .territory:focus-visible{stroke:#4c6845;stroke-width:2.5;vector-effect:non-scaling-stroke}

.country-label-footer .country-split{margin-right:auto;padding:6px 12px;min-height:36px;background:#ffffff0c;color:#dae0d3;border:1px solid #89977960}

/* A screen-sized hit zone makes thin borders easy to double-click at any zoom. */
#atlas .country-border-hit{fill:none;stroke:transparent;stroke-width:20px;vector-effect:non-scaling-stroke;pointer-events:stroke;cursor:pointer;stroke-linejoin:round}
#atlas .country-border-hit:hover{stroke:#4c684518}
.touch-ui #atlas .country-border-hit{stroke-width:28px}
body.map-locked #atlas .country-border-hit{pointer-events:none}

.flag-palette{display:flex;align-items:center;gap:6px;padding:8px;margin-bottom:8px;width:max-content;max-width:calc(100vw - 24px);background:#faf7e9;border:1px solid #c6bea0;border-radius:8px;box-shadow:0 3px 12px #283d3620}
.flag-palette[hidden]{display:none}.flag-palette button{min-height:44px;padding:6px 9px;font-size:12px;text-transform:capitalize}.flag-palette img{display:block;width:32px;height:40px;margin:auto}.flag-palette button[aria-pressed=true]{background:#dbe4d2}
#atlas [data-map-flag]{cursor:grab;touch-action:none;outline:none}#atlas [data-map-flag]:focus-visible{filter:drop-shadow(0 0 3px #364f36)}#atlas [data-map-flag] image{pointer-events:all}#atlas.planting-flag,#atlas.planting-flag *{cursor:crosshair!important}
.flag-palette{pointer-events:auto}

.country-flag-controls{grid-column:1/-1;display:flex;align-items:center;gap:8px;border-top:1px solid #89977940;padding-top:8px;margin-bottom:8px}.country-flag-controls>span{font-size:11px;color:#d6dfcc;margin-right:auto}.country-flag-controls button{padding:2px 8px;min-width:44px;height:44px;background:#ffffff08;border:1px solid #89977960}.country-flag-controls img{height:38px;width:32px;pointer-events:none}
.map-help-content{max-height:min(55dvh,440px);overflow:auto;overscroll-behavior:contain;font-size:12px;line-height:1.55;padding:4px 4px 4px 0}.map-help-content h3{font-weight:700!important;margin:12px 0 4px!important}.map-help-content p{margin:0 0 8px}.map-help-content h3:first-child{margin-top:0!important}

.flag-palette{position:fixed;z-index:35;margin:0;gap:4px;padding:5px}.flag-palette button{display:grid;place-items:center;min-width:38px;min-height:40px;padding:3px 6px}.flag-palette img{width:27px;height:34px}.flag-palette [data-remove-flag]{color:#a25445}.country-flag-controls button[aria-pressed=true]{background:#647b5f;box-shadow:inset 0 0 0 1px #e8dfb6}

#country-hover-label{position:fixed;z-index:1000;pointer-events:none;padding:6px 10px;background:#faf8eff2;border:1px solid #b8c4ad;border-radius:4px;color:#334e41;font:14px Georgia,serif;max-width:min(280px,calc(100vw - 16px));overflow-wrap:anywhere;box-shadow:0 2px 8px #31493e15}
#country-hover-label[hidden]{display:none}

.dragon-marginalia .dragon-art{transform:translateX(440px) scaleX(-1);transform-origin:0 0}
.atlas-action-menu{position:fixed;z-index:1200;width:270px;max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px);overflow:auto;padding:10px;border:1px solid #aab79c;border-radius:7px;background:#faf8ef;color:#334e41;box-shadow:0 8px 30px #263e3530;font:13px 'DM Sans',sans-serif}
.atlas-action-menu[hidden]{display:none}.atlas-action-menu header{display:flex;align-items:center;justify-content:space-between;background:none;padding:0 0 8px;height:auto}.atlas-action-menu header button{width:32px;min-width:32px;font-size:22px}.atlas-action-menu>button,.allocation-editor>button{display:block;width:100%;text-align:left;border:0;background:transparent;min-height:38px;padding:8px;border-radius:4px;color:inherit}.atlas-action-menu button:hover{background:#dce5d4}.atlas-action-menu label{display:block;margin:7px 0;color:#65725c}.atlas-action-menu input,.atlas-action-menu select{width:100%;min-height:36px;font-size:14px;background:#fffdf6;border:1px solid #c5ceba;border-radius:4px;padding:5px;color:#334e41}.atlas-action-menu .menu-row{display:flex;align-items:center;gap:6px;margin:5px 0}.menu-row>span{flex:1;text-transform:capitalize}.menu-row button{padding:4px;min-height:36px;min-width:36px}.menu-row img{height:32px;width:26px}.allocation-editor{border-top:1px solid #c5ceba;margin-top:8px;padding-top:4px}.allocation-editor label{display:flex;justify-content:space-between;align-items:center;gap:8px}.allocation-editor input{width:70px}.allocation-editor select{max-width:180px}
#county-detail-view{position:absolute;inset:0;z-index:10;background:var(--sea)}#county-detail-view[hidden]{display:none}.county-atlas{width:100%;height:100%;touch-action:none;user-select:none}.scope-navigation{position:absolute;top:max(14px,env(safe-area-inset-top));left:14px;display:flex;gap:10px;align-items:center;background:#faf8eff2;border:1px solid #b8c4ad;border-radius:5px;padding:5px}.scope-navigation strong{font:20px Georgia,serif;max-width:35vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scope-navigation button{background:transparent;border:0;min-height:40px}.scope-hint{position:absolute;bottom:12px;left:20px;font-size:12px;opacity:.5;pointer-events:none}.scope-land{stroke:#fff9e9;stroke-width:2;cursor:grab}.scope-land.selected{stroke:#526b4e;stroke-width:4}.scope-name{font:20px Georgia,serif;fill:#52604c;opacity:.5;text-anchor:middle;pointer-events:none}.scope-person{cursor:grab}.scope-person .soldier-sprite{pointer-events:none}.scope-person.selected{filter:drop-shadow(0 1px 3px #36583755)}.scope-percent{font:10px sans-serif;fill:#2c4039;paint-order:stroke;stroke:#faf8ef;stroke-width:3;pointer-events:none}[data-county-point]{fill:#faf8ef;stroke:#526b4e;stroke-width:1.5;cursor:move}[data-scope-flag]{cursor:pointer}
@media(max-width:600px){.scope-navigation{gap:3px;left:8px;right:8px}.scope-navigation strong{font-size:16px;flex:1}.scope-navigation button{padding:5px;font-size:12px}.scope-hint{max-width:65%;font-size:10px}.atlas-action-menu input,.atlas-action-menu select{font-size:16px}}

.county-atlas:has(.scope-person.selected) .scope-person:not(.selected){opacity:.55}

/* Land selection is expressed only by its coastline. */
.county-atlas,.county-atlas *:focus,.county-atlas *:focus-visible{outline:none!important}
.scope-person.selected{filter:none}

#atlas:focus,#atlas:focus-visible{outline:none}
.ocean-ship:focus-visible .ship-hit-area{stroke:none}

.scope-hover-label{position:fixed;z-index:1000;pointer-events:none;padding:6px 10px;background:#faf8eff2;border:1px solid #b8c4ad;border-radius:4px;color:#334e41;font:14px Georgia,serif;max-width:min(280px,calc(100vw - 16px));box-shadow:0 2px 8px #31493e15}.scope-hover-label[hidden]{display:none}.scope-hover-label.person{background:#263e35;color:#fff9e9;border-color:#899779;padding:8px 12px;border-radius:7px;font:13px sans-serif}.scope-hover-label strong,.scope-hover-label span{display:block}.scope-hover-label span{margin-top:3px;font-size:11px;color:#d6dfcc}
.campaign-plans { pointer-events:none; }
.campaign-arrow { fill:#8b5144; fill-opacity:.38; stroke:#704637; stroke-opacity:.65; stroke-width:1.5; stroke-linejoin:round; pointer-events:none; }
.campaign-arrow.draft { fill-opacity:.5; stroke-opacity:.85; }
.campaign-point { fill:#eee9d9; fill-opacity:.88; stroke:#765b49; stroke-opacity:.65; stroke-width:1.5; pointer-events:all; cursor:grab; }
.campaign-point:hover,.campaign-point:focus { fill:#cfbd94; outline:none; stroke-width:2.5; }
