/* Albion: Land of Faerie — game.css */
:root{
  --ink:#241a10; --parch:#f3e9cf; --parch2:#e7d8b0;
  --gold:#c8a447; --gold-lt:#f4e6a1; --green:#2f5d3a; --green-d:#1d3c26;
  --sidhe:#2f6aa0; --fomor:#8e2f3c; --panel:#20301f; --panel2:#182617;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;font-family:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;color:var(--ink);background:#0e1710}
button{font-family:inherit;cursor:pointer}
.hidden{display:none!important}

/* ---------- MENU ---------- */
#menu{
  min-height:100%;display:flex;align-items:center;justify-content:center;padding:30px 16px;
  background:
    radial-gradient(1200px 600px at 50% -10%, rgba(200,164,71,0.18), transparent 60%),
    linear-gradient(160deg,#12241a,#0b160f 60%);
}
.menu-inner{max-width:840px;width:100%;text-align:center;color:var(--parch)}
.crest{width:78px;height:78px;margin:0 auto 6px;border-radius:50%;
  background:radial-gradient(circle at 50% 40%, var(--gold-lt), var(--gold) 55%, #6f5320 100%);
  box-shadow:0 0 0 4px rgba(244,230,161,0.25), 0 8px 30px rgba(0,0,0,0.5);position:relative}
.crest::after{content:"❈";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:38px;color:#3a2b12}
h1{font-size:52px;margin:6px 0 0;letter-spacing:2px;color:var(--gold-lt);text-shadow:0 2px 0 #4a3714,0 0 24px rgba(200,164,71,0.4)}
h1 span{display:block;font-size:19px;letter-spacing:7px;text-transform:uppercase;color:var(--parch2);margin-top:4px}
.tagline{font-style:italic;color:#c9c3ad;margin:14px 0 26px;font-size:17px}
#menu h2{color:var(--gold-lt);font-size:16px;letter-spacing:3px;text-transform:uppercase;margin:8px 0 14px;font-weight:600}
#scenarios{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;text-align:left}
.scn-card{background:linear-gradient(180deg,rgba(243,233,207,0.96),rgba(231,216,176,0.96));
  color:var(--ink);border:2px solid #7a5f24;border-radius:10px;padding:14px 15px;transition:transform .12s,box-shadow .12s,border-color .12s;position:relative}
.scn-card:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(0,0,0,0.45)}
.scn-card.chosen{border-color:var(--gold-lt);box-shadow:0 0 0 3px rgba(200,164,71,0.55),0 10px 24px rgba(0,0,0,0.5)}
.scn-card h3{margin:0 0 2px;font-size:20px;color:#5a3210}
.scn-turns{font-size:11px;letter-spacing:2px;text-transform:uppercase;color:#8a6a2a;margin-bottom:8px}
.scn-card p{margin:0;font-size:13.5px;line-height:1.4;color:#3c2e1c}
.side-choice{margin:26px auto 18px;display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:center;color:var(--parch)}
.side-choice>span{letter-spacing:2px;text-transform:uppercase;font-size:12px;color:var(--gold-lt)}
.side-choice label{cursor:pointer;font-size:15px}
.side-choice em{color:#a9c2a9;font-size:12px}
button.big{font-size:20px;letter-spacing:2px;padding:13px 34px;color:#2a1e0c;border:none;border-radius:40px;
  background:linear-gradient(180deg,var(--gold-lt),var(--gold));box-shadow:0 6px 20px rgba(0,0,0,0.5);text-transform:uppercase}
button.big:hover{filter:brightness(1.08)}
.foot{margin-top:22px;font-size:11.5px;color:#8c9a89}

/* ---------- GAME ---------- */
#game{display:flex;height:100vh;width:100vw;overflow:hidden}
#boardwrap{flex:1;position:relative;background:radial-gradient(900px 600px at 40% 30%, #16324a, #0c1b28 70%);overflow:hidden}
#board{position:absolute;inset:0;cursor:grab}
#board:active{cursor:grabbing}
.hex{transition:fill .15s}
.board-ctrls{position:absolute;top:12px;left:12px;display:flex;flex-direction:column;gap:6px}
.board-ctrls button{width:34px;height:34px;border-radius:8px;border:1px solid #7a5f24;background:rgba(20,30,20,0.85);color:var(--gold-lt);font-size:17px}
.board-ctrls button:hover{background:rgba(40,55,40,0.95)}
#toast{position:absolute;left:50%;bottom:26px;transform:translateX(-50%) translateY(20px);opacity:0;transition:.25s;
  background:rgba(16,24,16,0.94);color:var(--parch);border:1px solid var(--gold);padding:10px 18px;border-radius:24px;font-size:14px;max-width:80%;text-align:center;pointer-events:none}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

#sidebar{width:320px;flex-shrink:0;background:linear-gradient(180deg,var(--panel),var(--panel2));color:var(--parch);
  border-left:3px solid var(--gold);display:flex;flex-direction:column;padding:14px 14px 10px}
.hud-top{border:1px solid #3d5a3d;border-radius:8px;padding:10px;background:rgba(0,0,0,0.2)}
.hud-row{display:flex;justify-content:space-between;align-items:center;font-size:13px;margin:3px 0}
.hud-row b{color:var(--gold-lt)}
.side-fomor{color:#f0a9b3} .side-sidhe{color:#a9d0f0}
.power .pw{font-size:12px}
.pw b{font-size:15px;margin-left:4px}
.pw.sidhe b{color:#a9d0f0} .pw.fomor b{color:#f0a9b3}
.forts{font-size:11px;letter-spacing:1px;color:#cfe0cf}
.controls{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}
.controls button{padding:10px 8px;border-radius:7px;border:1px solid #6f5524;background:#33472f;color:var(--parch);font-size:13px}
.controls button:hover:not(:disabled){background:#456139}
.controls button:disabled{opacity:.4;cursor:not-allowed}
.controls button.primary{grid-column:1/3;background:linear-gradient(180deg,var(--gold-lt),var(--gold));color:#2a1e0c;border:none;font-weight:700;font-size:15px;letter-spacing:1px}
.log-title{font-size:11px;letter-spacing:3px;text-transform:uppercase;color:var(--gold-lt);margin:4px 0 4px}
#log{flex:1;overflow-y:auto;font-size:12.5px;line-height:1.45;border:1px solid #3d5a3d;border-radius:8px;padding:8px;background:rgba(0,0,0,0.28)}
#log div{padding:2px 0;border-bottom:1px dotted rgba(255,255,255,0.06);color:#d8e2d3}
#log div:first-child{color:var(--gold-lt)}
.legend{font-size:10.5px;color:#9fb09b;margin-top:8px;line-height:1.5}
.legend b{color:var(--parch)}

/* ---------- OVERLAYS ---------- */
.overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(6,10,7,0.82);z-index:30;padding:20px}
.panel{max-width:560px;background:linear-gradient(180deg,var(--parch),var(--parch2));color:var(--ink);
  border:3px solid var(--gold);border-radius:12px;padding:26px 28px;box-shadow:0 20px 60px rgba(0,0,0,0.6)}
.panel h2{margin-top:0;color:#5a3210;letter-spacing:1px}
.panel p{font-size:14.5px;line-height:1.5}
.panel .primary{margin-top:10px;padding:11px 22px;border:none;border-radius:30px;background:linear-gradient(180deg,var(--gold-lt),var(--gold));color:#2a1e0c;font-weight:700;letter-spacing:1px}
.panel.vic{text-align:center}
.panel.vic h1{font-size:46px;margin:0 0 8px;letter-spacing:2px}
.panel.vic h1.won{color:#2f6a34;text-shadow:0 0 18px rgba(80,180,90,0.4)}
.panel.vic h1.lost{color:#8e2f3c}
.panel.vic p{font-size:16px}

@media (max-width:820px){
  #scenarios{grid-template-columns:1fr}
  #game{flex-direction:column}
  #sidebar{width:100%;border-left:none;border-top:3px solid var(--gold);max-height:44vh}
  #boardwrap{min-height:56vh}
}

/* ---------- v1.1 interface enhancements ---------- */
.unit-card{border:1px solid #60745c;border-radius:8px;padding:10px 11px;margin-top:10px;background:rgba(0,0,0,.22);min-height:78px}
.unit-card-title{color:var(--gold-lt);font-weight:700;font-size:15px;margin-bottom:5px}
.unit-card-detail{font-size:12px;line-height:1.45;color:#d6dfd2}
.unit-card-detail b{color:#fff}
.unit-nav{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
.unit-nav button{padding:8px;border-radius:7px;border:1px solid #60745c;background:#293c28;color:var(--parch)}
.unit-nav button:hover:not(:disabled){background:#3d5739}.unit-nav button:disabled{opacity:.4;cursor:not-allowed}
.controls #coordbtn{grid-column:1/3}
.target-ring{filter:drop-shadow(0 0 3px rgba(0,0,0,.8))}
.coord-label{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:7px;fill:rgba(255,255,255,.72);paint-order:stroke;stroke:rgba(0,0,0,.65);stroke-width:2px;pointer-events:none}
.terrain-mark{font-size:12px;fill:rgba(255,255,255,.15);pointer-events:none;text-anchor:middle}
.battle-panel{min-width:min(520px,92vw)}
.battle-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 18px;margin:12px 0;padding:12px;background:rgba(60,40,15,.08);border-radius:8px}
.battle-grid div{font-size:13px}.battle-result-code{font-size:26px;font-weight:800;color:#6e3417;text-align:center;margin:10px 0}
@media (prefers-reduced-motion: reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* v1.2.0 strategic information panels */
.objectives-panel,.minimap-panel{border:1px solid #3d5a3d;border-radius:8px;padding:9px;background:rgba(0,0,0,.18);margin-top:9px}
.section-title{font-family:Georgia,serif;font-weight:700;color:var(--gold);font-size:.86rem;letter-spacing:.04em;margin-bottom:6px}
#objectives{font-size:.78rem;line-height:1.35;color:#e8dfc6}
.objective-line{display:flex;gap:6px;align-items:flex-start;margin:3px 0}.objective-mark{font-weight:700;min-width:14px}.objective-done{color:#9fd18b}.objective-live{color:#e8c978}
.force-status{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:7px;padding-top:6px;border-top:1px solid rgba(255,255,255,.1);font-size:.73rem}
.force-status b{font-size:.9rem}.force-sidhe{color:#9ec9ff}.force-fomor{color:#ef9b9b}
#minimap{display:block;width:100%;height:auto;max-height:125px;border:1px solid rgba(255,255,255,.16);border-radius:5px;background:#0c1b28}

/* v1.3.0 tactical awareness and navigation */
.hex-tip{position:absolute;z-index:12;pointer-events:none;max-width:255px;padding:8px 10px;border:1px solid var(--gold);border-radius:7px;background:rgba(12,20,15,.96);color:var(--parch);font-size:11.5px;line-height:1.35;box-shadow:0 7px 20px rgba(0,0,0,.4)}
.hex-tip b{color:var(--gold-lt)}
.tactical-preview{border:1px solid #60745c;border-radius:8px;padding:9px 10px;margin-top:8px;background:rgba(0,0,0,.16);min-height:60px}
.tactical-preview-title{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--gold-lt);margin-bottom:4px}
.tactical-preview-body{font-size:11.5px;line-height:1.4;color:#d6dfd2}
.tactical-preview-body .odds{font-size:18px;color:#ffe18a;font-weight:800;margin-right:6px}
.tactical-preview-body .good{color:#a8d99a}.tactical-preview-body .warn{color:#f0c979}.tactical-preview-body .bad{color:#efaaaa}
#minimap{cursor:crosshair}
#viewzoom{color:#cfe0cf;font-size:11px}
.board-ctrls button#centerview,.board-ctrls button#resetview{font-size:16px}

.controls #savebtn,.controls #loadbtn{background:#2b4434}


/* v1.5.0 command-status and readiness enhancements */
.view-zoom{width:34px;text-align:center;font-size:10px;color:#dbe9d5;background:rgba(20,30,20,.72);border:1px solid rgba(122,95,36,.55);border-radius:6px;padding:3px 0;pointer-events:none}
.command-panel{border:1px solid #3d5a3d;border-radius:8px;padding:9px;background:rgba(0,0,0,.18);margin-top:9px}
.command-title-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.command-title-row span:last-child{font-size:10px;color:#cfe0cf;font-weight:400}.command-title-row b{color:var(--gold-lt);font-size:12px}
.command-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-bottom:7px}
.command-stat{border-radius:5px;padding:5px 2px;text-align:center;background:rgba(255,255,255,.045);font-size:9px;color:#b9c8b5}.command-stat b{display:block;font-size:13px;color:#fff;margin-bottom:1px}
.command-stat.ready b{color:#a8e69a}.command-stat.moved b{color:#8fc8ff}.command-stat.spent b{color:#b8b8b8}.command-stat.disrupted b{color:#f2c566}
.command-roster{max-height:126px;overflow:auto;border-top:1px solid rgba(255,255,255,.08);padding-top:4px}
.roster-unit{display:grid;grid-template-columns:17px 1fr auto;align-items:center;gap:6px;width:100%;border:0;border-bottom:1px dotted rgba(255,255,255,.08);background:transparent;color:#dce5d8;padding:5px 4px;text-align:left;font-size:10.5px;border-radius:3px}
.roster-unit:hover{background:rgba(255,255,255,.07)}.roster-unit.selected{background:rgba(244,230,161,.13);outline:1px solid rgba(244,230,161,.35)}
.roster-glyph{display:inline-flex;width:17px;height:17px;border-radius:50%;align-items:center;justify-content:center;font-weight:700;font-size:9px;color:#fff}.roster-glyph.sidhe{background:var(--sidhe)}.roster-glyph.fomor{background:var(--fomor)}.roster-glyph.leader{clip-path:polygon(50% 0,100% 100%,0 100%);border-radius:0;padding-top:4px;background:#a88f62;color:#1a160f}
.roster-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roster-status{font-size:9px;text-transform:uppercase;letter-spacing:.04em}.status-ready{color:#a8e69a}.status-moved{color:#8fc8ff}.status-spent{color:#aaa}.status-disrupted{color:#f2c566}
.readiness-dot{pointer-events:none;stroke:#102010;stroke-width:1.2}.readiness-ready{fill:#8ee07c}.readiness-moved{fill:#7bbcff}.readiness-spent{fill:#777}.readiness-disrupted{fill:#e7b94e}

.controls #undobtn{background:#4a3b2a}.controls #undobtn:not(:disabled){border-color:#b8934a}

.controls #reportbtn{background:#3f3829;border-color:#8d7440}
#turn-report-body p{font-size:14px;line-height:1.45;margin:10px 0}


/* v1.8.0 enemy threat overlay */
.threat-move{fill:rgba(175,45,45,.28);stroke:#d96969;stroke-width:1.5;pointer-events:none}
.threat-ranged{fill:rgba(220,155,55,.18);stroke:#d8a84f;stroke-width:1.2;stroke-dasharray:4 3;pointer-events:none}
.controls #threatbtn[aria-pressed="true"]{background:#6a3131;border-color:#d77b68;color:#fff0d0}


/* v1.9.0 strategic guidance */
.guidance-panel{border:1px solid #3d5a3d;border-radius:8px;padding:9px;background:rgba(0,0,0,.18);margin-top:9px}
.guidance-title-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.guidance-title-row span:last-child{max-width:145px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;color:#cfe0cf;font-weight:400}
.guidance-list{display:flex;flex-direction:column;gap:4px}.guidance-empty{font-size:11px;line-height:1.35;color:#b9c8b5;padding:3px 1px}
.guidance-item{display:grid;grid-template-columns:22px 1fr auto;gap:7px;align-items:center;width:100%;padding:6px 7px;border:1px solid rgba(255,255,255,.08);border-radius:5px;background:rgba(255,255,255,.035);color:#e6eee2;text-align:left}
.guidance-item:hover{background:rgba(255,255,255,.09);border-color:rgba(244,230,161,.32)}.guidance-icon{font-size:15px;text-align:center;color:var(--gold-lt)}
.guidance-copy{min-width:0}.guidance-copy b{display:block;font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.guidance-copy small{display:block;font-size:8.5px;color:#aebda9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.guidance-range{font-size:10px;text-align:right;color:#ffe18a;font-weight:700}.guidance-range small{display:block;font-size:9px;color:#b8c8b4;font-weight:400}
.guidance-attack .guidance-icon,.guidance-leader .guidance-icon{color:#ef9b9b}.guidance-power .guidance-icon{color:#ffe18a}.guidance-defend .guidance-icon{color:#9ec9ff}

/* v2.0.0 movement path preview */
.move-path-line{stroke:#f5df78;stroke-width:5;stroke-linecap:round;stroke-dasharray:8 6;opacity:.9;pointer-events:none;filter:drop-shadow(0 0 2px #111)}
.move-path-dot{fill:#fff3b0;stroke:#5b4514;stroke-width:2;pointer-events:none}
.move-path-dest{fill:#f7d34a;stroke:#fff4b5;stroke-width:3;pointer-events:none;filter:drop-shadow(0 0 4px rgba(247,211,74,.8))}


/* v2.1.0 combat experience */
.combat-history-panel{border:1px solid #3d5a3d;border-radius:8px;padding:9px;background:rgba(0,0,0,.18);margin-top:9px}
.combat-history-title-row{display:flex;justify-content:space-between;align-items:center}.combat-history-title-row button{font-size:9px;padding:3px 7px;background:transparent;color:#b9c8b5;border:1px solid rgba(255,255,255,.15);border-radius:4px}
.combat-history{max-height:150px;overflow:auto}.history-empty{font-size:10.5px;color:#aebda9;padding:4px 2px}
.history-entry{display:grid;grid-template-columns:22px 1fr auto;gap:6px;align-items:center;width:100%;padding:6px 5px;border:0;border-bottom:1px dotted rgba(255,255,255,.08);background:transparent;color:#e5ece1;text-align:left;border-radius:4px}.history-entry:hover{background:rgba(255,255,255,.07)}
.history-icon{font-size:15px;color:#e6c86e;text-align:center}.history-copy{min-width:0}.history-copy b{display:block;font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.history-copy small{display:block;font-size:8.5px;color:#aebda9;margin-top:1px}.history-result{font-size:8.5px;font-weight:700;color:#f2d98e;text-align:right;max-width:74px}
.controls #confirmbtn[aria-pressed="true"]{background:#36513a;border-color:#77a37a}.controls #confirmbtn[aria-pressed="false"]{background:#493d2b;border-color:#8d7440}
.combat-fx{pointer-events:none;animation:combatFxFade 1.6s ease-out forwards}.combat-fx-ring{fill:none;stroke:#fff0a0;stroke-width:4;filter:drop-shadow(0 0 5px #8f2f22);animation:combatRing 1.1s ease-out forwards}.combat-fx-text{text-anchor:middle;font-family:Georgia,serif;font-weight:800;font-size:11px;fill:#fff5bd;paint-order:stroke;stroke:#3b1510;stroke-width:3px;letter-spacing:.04em;filter:drop-shadow(0 2px 2px #000)}
@keyframes combatRing{0%{r:10;opacity:1;stroke-width:6}100%{r:31;opacity:0;stroke-width:1}}@keyframes combatFxFade{0%,65%{opacity:1}100%{opacity:0}}
.ai-action-list{display:flex;flex-direction:column;gap:5px;margin-top:10px}.ai-action-row{display:flex;justify-content:space-between;gap:12px;padding:7px 8px;background:rgba(80,40,30,.08);border-radius:5px;font-size:12px}.ai-action-row span{color:#7a5a38}
.battle-panel{animation:battlePanelIn .18s ease-out}.battle-result-code{animation:battleResultPulse .42s ease-out}
@keyframes battlePanelIn{from{transform:scale(.97);opacity:.25}to{transform:scale(1);opacity:1}}@keyframes battleResultPulse{0%{transform:scale(.7)}65%{transform:scale(1.18)}100%{transform:scale(1)}}
@media (prefers-reduced-motion: reduce){.combat-fx,.combat-fx-ring,.battle-panel,.battle-result-code{animation:none!important}}


/* v2.2.0 Tactical Intelligence */
.difficulty-choice{display:grid;grid-template-columns:1fr;gap:5px;margin:14px auto 10px;max-width:650px;padding:11px 14px;border:1px solid rgba(196,165,82,.45);border-radius:8px;background:rgba(0,0,0,.18)}
.difficulty-choice>span{font-family:Georgia,serif;color:var(--gold-lt);font-weight:700;margin-bottom:2px}.difficulty-choice label{font-size:13px;color:#e9e0c7}.difficulty-choice em{color:#aeb9a9;font-size:11px}.difficulty-choice small{color:#aeb9a9;font-size:10px;line-height:1.35;margin-top:3px}
.ai-doctrine{font-size:10px;color:#b9c8b5}.ai-doctrine b{color:var(--gold-lt)}#ai-note{opacity:.7}

/* v2.3.0 supplied-map battlefield */
#albion-map-art{filter:saturate(.96) brightness(.92) contrast(1.04)}
.hex{fill:rgba(255,255,255,.015);stroke:rgba(10,20,15,.42);stroke-width:1}
.hex:hover{fill:rgba(255,224,120,.12)}
#terrain{display:none}

/* v2.4.3 measured native SVG map alignment */
#board{
  aspect-ratio:542/900;
  max-height:calc(100vh - 150px);
  margin-inline:auto;
  overflow:hidden;
  background:#0d1820;
}
#boardsvg{width:100%!important;height:100%!important;display:block}
#albion-map-art{filter:none}
.hex{fill:rgba(255,255,255,.006);stroke:rgba(255,230,125,.10);stroke-width:.5}
.hex:hover{fill:rgba(255,224,120,.17);stroke:rgba(255,232,150,.72);stroke-width:1.1}

/* v3.0.2 printed-cell fit */
#hl polygon { vector-effect: non-scaling-stroke; }
#threats polygon { vector-effect: non-scaling-stroke; }

/* v3.2.1 full-screen battlefield */
#game{min-height:100vh}
#board{width:100%;height:calc(100vh - 118px);max-height:none!important;aspect-ratio:auto!important;margin:0!important;overflow:hidden}
#boardsvg{width:100%!important;height:100%!important;display:block;cursor:crosshair;touch-action:none}


/* v3.2.3 viewport containment and sidebar scrolling */
html, body {
  height: 100%;
  min-height: 100%;
  margin: 0;
  overflow: hidden;
}

#game {
  height: 100vh;
  min-height: 0 !important;
  max-height: 100vh;
  overflow: hidden;
}

/* Let the game layout consume the viewport without forcing the page taller. */
#game .game-layout,
#game .layout,
#game .shell,
#game .game-shell,
#game .main-grid {
  min-height: 0;
  max-height: 100%;
}

/* The battlefield must shrink inside its grid/flex cell instead of pushing the HUD off-screen. */
#board {
  min-height: 0 !important;
  height: 100% !important;
  max-height: 100% !important;
  overflow: hidden !important;
}

/* Side columns scroll internally; they never make the whole page taller. */
#sidebar,
.sidebar,
.leftbar,
.rightbar,
.side-panel,
.side-column,
#left-panel,
#right-panel {
  min-height: 0 !important;
  max-height: 100% !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
}

/* Common nested sidebar content must be allowed to shrink. */
#sidebar > *,
.sidebar > *,
.leftbar > *,
.rightbar > *,
.side-panel > *,
.side-column > * {
  min-height: 0;
  max-width: 100%;
  box-sizing: border-box;
}

/* Keep bottom command/status bars visible inside the viewport. */
.bottom-bar,
.command-bar,
#commandbar,
#controls,
.game-controls,
.status-bar,
#statusbar {
  flex: 0 0 auto;
  position: relative;
  z-index: 5;
}

/* Slightly tighten very short displays. */
@media (max-height: 760px) {
  #sidebar,
  .sidebar,
  .leftbar,
  .rightbar,
  .side-panel,
  .side-column {
    font-size: 0.92rem;
  }
  .panel, .card, .box {
    margin-block: 4px !important;
    padding-block: 6px !important;
  }
}

@media (max-height: 620px) {
  #sidebar,
  .sidebar,
  .leftbar,
  .rightbar,
  .side-panel,
  .side-column {
    font-size: 0.84rem;
  }
}

/* v3.3.0 Enhanced Cartography */
#cartolabels {
  pointer-events: none;
}
.map-label {
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 700;
  paint-order: stroke fill;
  stroke: rgba(18,14,10,.92);
  stroke-width: 2.2px;
  stroke-linejoin: round;
  fill: #f6e7b0;
  letter-spacing: .7px;
  vector-effect: non-scaling-stroke;
  text-rendering: geometricPrecision;
  user-select: none;
}
.map-label-region {
  font-size: 15px;
  letter-spacing: 2px;
  fill: #f0d99a;
  stroke-width: 2.8px;
  opacity: .94;
}
.map-label-water {
  font-size: 10px;
  font-style: italic;
  font-weight: 600;
  letter-spacing: 1.2px;
  fill: #e8f2ff;
  stroke: rgba(15,32,58,.92);
  stroke-width: 2.4px;
  opacity: .92;
}
.map-label-place {
  font-size: 7.2px;
  fill: #fff0b8;
  stroke: #2a160d;
  stroke-width: 2px;
}
.map-label-sacred {
  font-size: 6.6px;
  font-style: italic;
  fill: #f4dcff;
  stroke: #2b1033;
  stroke-width: 1.9px;
}
@media (max-width: 1100px) {
  .map-label-region { font-size: 14px; }
}
