/* Short, wide touch screens: spend width on the UI and keep height for the map. */
@media (orientation:landscape) {
  body.compact-ui {
    --landscape-left:max(8px,env(safe-area-inset-left));
    --landscape-right:max(8px,env(safe-area-inset-right));
    --landscape-top:max(8px,env(safe-area-inset-top));
    --landscape-bottom:max(8px,env(safe-area-inset-bottom));
  }

  /* Home actions fit without scrolling; secondary banner choices follow below. */
  .compact-ui .home-screen { padding:0 max(16px,env(safe-area-inset-right)) 0 max(16px,env(safe-area-inset-left)); }
  .compact-ui .home-frame { inset:max(8px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left)); }
  .compact-ui .home-top { min-height:56px;padding:max(4px,env(safe-area-inset-top)) 8px 4px;gap:12px; }
  .compact-ui .home-top>span { display:none; }
  .compact-ui .home-top .language-control { margin-left:auto; }
  .compact-ui .home-top .language-control>span { display:none; }
  .compact-ui .home-utility { margin-left:0; }
  .compact-ui .home-footer { min-height:36px;padding:0 8px max(4px,env(safe-area-inset-bottom));letter-spacing:1px; }
  .compact-ui .home-footer>span:nth-child(2) { display:none; }
  .compact-ui .home-footer>a { min-height:32px;padding:8px 0; }
  .compact-ui .home-content,
  .compact-ui .home-screen[data-view=new] .home-content,
  .compact-ui .home-screen[data-view=games] .home-content {
    width:100%;max-width:1000px;margin:8px auto 12px;padding:12px 20px;
  }
  .compact-ui .home-screen[data-view=main] .home-content {
    display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:4px 24px;
    grid-template-areas:'eyebrow menu' 'title menu' 'motto menu' 'rule menu' 'note menu';
    align-content:center;min-height:min(460px,calc(100dvh - 112px));
  }
  .compact-ui .home-screen[data-view=main] .home-eyebrow { grid-area:eyebrow;font-size:8px;letter-spacing:1px; }
  .compact-ui .home-screen[data-view=main] .home-title { grid-area:title;font-size:clamp(30px,5vw,48px);margin:6px 0;letter-spacing:2px; }
  .compact-ui .home-screen[data-view=main] .home-motto { grid-area:motto;font-size:16px;line-height:1.45; }
  .compact-ui .home-screen[data-view=main] .home-rule { grid-area:rule;margin:6px 0; }
  .compact-ui .home-screen[data-view=main] .home-local-note { grid-area:note;font-size:10px;margin:0; }
  .compact-ui .home-screen[data-view=main] .home-menu { grid-area:menu;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;align-content:center; }
  .compact-ui .home-menu>.home-primary { grid-column:1/-1;margin:0;min-height:56px;padding:8px 12px; }
  .compact-ui .home-menu-item { min-height:44px;padding:6px 8px;gap:6px;font-size:12px; }
  .compact-ui .home-menu-item>.roman-icon:last-child { display:none; }
  .compact-ui .home-banner { margin:0 auto 12px; }

  /* Each half scrolls independently; starting the city stays within reach. */
  .compact-ui .home-screen[data-view=new],
  .compact-ui .home-screen[data-view=games] { overflow:hidden; }
  .compact-ui .home-screen[data-view=new] .home-content,
  .compact-ui .home-screen[data-view=games] .home-content { flex:1;min-height:0;max-height:480px;overflow:hidden; }
  .compact-ui .home-screen[data-view=new] .home-content { display:flex;flex-direction:column; }
  .compact-ui .home-new-overview .home-back { position:sticky;top:0;z-index:1;background:var(--papyrus-solid);width:100%; }
  .compact-ui .home-back { flex:none;margin:0;min-height:44px;padding:4px 0; }
  .compact-ui #home-new-form { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;flex:1;min-height:0; }
  .compact-ui .home-new-overview,
  .compact-ui .home-library-overview { min-height:0;overflow:auto;overscroll-behavior:contain;padding:0 4px 4px;scrollbar-width:thin; }
  .compact-ui .home-new-overview { scroll-padding:48px 4px 8px; }
  .compact-ui .home-input,.compact-ui .home-modes label { scroll-margin-block:6px; }
  .compact-ui .home-new-settings { min-height:0;display:flex;flex-direction:column;gap:8px; }
  .compact-ui .home-mode-scroll { flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:2px; }
  .compact-ui .home-page-title { font-size:28px;margin:5px 0 8px; }
  .compact-ui .home-description { font-size:12px;line-height:1.5;margin:0 0 8px; }
  .compact-ui .home-field-label { margin:10px 0 6px; }
  .compact-ui .home-input { min-height:44px;padding:8px 12px;font-size:18px; }
  .compact-ui .home-scenario { margin:10px 0 4px;padding:10px;gap:8px; }
  .compact-ui .home-scenario strong { font-size:17px; }
  .compact-ui .home-scenario p { line-height:1.5; }
  .compact-ui .home-new-settings .home-modes { margin:0;gap:6px; }
  .compact-ui .home-modes legend { margin-bottom:6px; }
  .compact-ui .home-modes label { min-height:52px;padding:8px;gap:8px; }
  .compact-ui .home-modes small { margin-top:3px;font-size:12px;line-height:1.4;color:var(--ink); }
  .compact-ui .home-starting { flex:none;margin:10px 0 6px;font-size:10px;gap:5px 10px; }
  .compact-ui .home-new-settings>.home-primary { flex:none;min-height:44px;padding:8px 12px; }
  .compact-ui .home-new-settings>.home-local-note { flex:none;margin:0;font-size:12px; }
  .compact-ui .home-library-layout { display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);grid-template-rows:minmax(0,1fr) auto;gap:0 24px;height:100%;min-height:0; }
  .compact-ui .home-library-overview { grid-column:1;grid-row:1; }
  .compact-ui .home-library-actions { grid-column:1;grid-row:2; }
  .compact-ui .home-library-actions .home-local-note { font-size:10px;margin:6px 0 0; }
  .compact-ui .home-library-layout .home-saves { grid-column:2;grid-row:1/3; }
  .compact-ui .home-saves { min-height:0;max-height:none;margin:0;padding:4px;overscroll-behavior:contain; }
  .compact-ui .home-save { padding:10px;gap:10px; }
  .compact-ui .home-load { min-width:44px;flex-shrink:0; }
  .compact-ui .home-save-art { display:none; }
  .compact-ui .home-save-info h2 { font-size:22px;margin:5px 0; }
  .compact-ui .home-import-button { margin-top:12px;padding:8px;min-height:44px; }
  .compact-ui .home-empty { padding:12px; }
  .compact-ui .home-empty>.roman-icon { width:32px;height:32px; }
  .compact-ui .home-empty h2 { font-size:22px;margin:8px 0; }
  .compact-ui .home-empty p { margin:8px 0; }

  /* A shallow horizontal catalog preserves a usable strip of terrain. */
  body.compact-ui .build-dock { left:var(--landscape-left);right:var(--landscape-right);bottom:calc(var(--landscape-bottom) + 52px);max-width:1000px; }
  body.compact-ui .dock-header { height:46px; }
  body.compact-ui .build-tabs { height:44px; }
  body.compact-ui .build-tabs button { min-width:44px;height:44px; }
  body.compact-ui .building-list { padding:4px 6px;gap:6px; }
  body.compact-ui .building-card { min-width:198px;max-width:198px;height:72px;padding:6px;gap:6px; }
  body.compact-ui .building-card>.building-preview { width:44px;height:44px; }
  body.compact-ui .building-card strong { font-size:13px;line-height:1.25; }
  body.compact-ui .building-card .build-costs { font-size:11px;line-height:15px;margin-top:3px;gap:3px 6px; }
  body.compact-ui .dock-footer { height:24px;min-height:0;flex-wrap:nowrap;padding:0 8px 4px; }
  body.compact-ui .dock-footer>span:first-child { display:flex;min-width:0;font-size:13px;line-height:18px;color:var(--ink); }
  body.compact-ui .dock-footer>span:first-child>i { display:none; }
  body.compact-ui .dock-footer { justify-content:space-between;gap:8px; }
  body.compact-ui.build-open .toast-stack { bottom:calc(var(--landscape-bottom) + 208px); }
  body.compact-ui .selection-hint {
    left:var(--landscape-left);top:var(--hud-bottom,60px);transform:none;
    max-width:min(340px,calc(100% - 80px));
  }
  body.compact-ui.building-selected .resource-bar { max-width:calc(100% - 70px - env(safe-area-inset-left) - env(safe-area-inset-right)); }
  body.compact-ui .inspector { top:var(--hud-bottom,60px);right:var(--landscape-right);width:min(300px,44vw);max-height:calc(100dvh - var(--hud-bottom,60px) - var(--landscape-bottom) - 52px); }
  body.compact-ui .inspector-head img { width:52px;height:52px; }
  body.compact-ui .inspector-head h2 { font-size:21px; }
  body.compact-ui .inspector-close { position:sticky;float:right;top:0;right:0;z-index:2;background:var(--papyrus-solid); }
  body.compact-ui.building-selected #view-legend { top:auto;bottom:calc(var(--landscape-bottom) + 104px);right:var(--landscape-right);max-width:40vw; }
  body.compact-ui #view-picker { max-height:calc(100dvh - var(--landscape-top) - var(--landscape-bottom) - 112px); }

  /* Dialogs use the available width; their close button stays above scrolling. */
  body.compact-ui dialog { inset:var(--landscape-top) var(--landscape-right) var(--landscape-bottom) var(--landscape-left);margin:auto;width:min(850px,calc(100vw - var(--landscape-left) - var(--landscape-right)));max-width:none;max-height:calc(100dvh - var(--landscape-top) - var(--landscape-bottom));overscroll-behavior:contain; }
  body.compact-ui .dialog-inner { padding:12px 18px; }
  body.compact-ui .panel-title { font-size:24px;margin:4px 0 8px; }
  body.compact-ui .panel-intro { margin:0 0 10px; }
  body.compact-ui dialog[data-panel=menu] { max-width:850px; }
  body.compact-ui .menu-grid { grid-template-columns:repeat(5,minmax(0,1fr)); }
  body.compact-ui .menu-grid button { min-height:52px;flex-direction:row;gap:6px;padding:6px; }
  body.compact-ui .menu-grid button>span { font-size:12px; }
  body.compact-ui .menu-grid svg { width:20px;height:20px; }

  /* Map and selected city remain side by side, even on the smallest phones. */
  body.compact-ui dialog[data-panel=campaign] { width:calc(100vw - var(--landscape-left) - var(--landscape-right));height:calc(100dvh - var(--landscape-top) - var(--landscape-bottom)); }
  body.compact-ui dialog[data-panel=campaign] .dialog-inner { padding:8px 12px; }
  body.compact-ui .campaign-header { flex-wrap:nowrap;gap:6px; }
  body.compact-ui .campaign-header .panel-eyebrow,body.compact-ui .campaign-clock>span { display:none; }
  body.compact-ui .campaign-header .panel-title { font-size:20px!important;margin:0; }
  body.compact-ui .campaign-army { padding:4px 0;gap:4px; }
  body.compact-ui .campaign-army strong { font-size:18px; }
  body.compact-ui .campaign-army small { font-size:13px!important;line-height:1.3; }
  body.compact-ui .campaign-layout { grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:10px;margin-top:5px; }
  body.compact-ui .region-map { min-height:140px; }
  body.compact-ui .campaign-city-pane h3 { font-size:21px;margin:4px 0 8px; }
  body.compact-ui .campaign-city-stats { padding:7px;gap:5px; }
  body.compact-ui .campaign-legend { font-size:13px!important;padding:3px 0;gap:4px 8px; }
  body.compact-ui .campaign-map-note { font-size:14px;margin:4px 0; }

  .compact-ui .battle-paper { left:calc((100% + var(--landscape-left) - var(--landscape-right))/2);top:calc((100% + var(--landscape-top) - var(--landscape-bottom))/2);width:min(760px,calc(100% - var(--landscape-left) - var(--landscape-right)));max-height:calc(100% - var(--landscape-top) - var(--landscape-bottom));padding:14px 22px; }
  .compact-ui .battle-paper-close { position:sticky;float:right;right:0;top:0;z-index:2;background:var(--papyrus-solid); }
  .compact-ui .battle-planner { left:var(--landscape-left);right:var(--landscape-right);max-height:calc(100dvh - var(--landscape-top) - 132px);overflow:auto;overscroll-behavior:contain; }
  .compact-ui .battle-planning.battle-plan-options-open .battle-practice { visibility:hidden; }
  .compact-ui .battle-planning.battle-plan-options-open .battle-deploy { visibility:hidden; }

  /* Routing needs the map; formation editing and troop lists open on demand. */
  .compact-ui .battle-practice { padding:0;background:var(--papyrus-solid);font-size:14px; }
  .compact-ui .battle-guide-toggle { display:flex;align-items:center;gap:8px;min-height:44px;width:100%;padding:6px 10px;margin:0;text-decoration:none;font-size:14px; }
  .compact-ui #battle-guide-content { display:block;padding:8px 10px; }
  .compact-ui .battle-practice [data-battle=end-practice] { display:flex;align-items:center;gap:8px;margin:0;padding:6px 10px;min-height:44px; }
  .compact-ui .battle-guide-collapsed .battle-practice { display:flex;align-items:center;width:220px;max-width:calc(100% - 210px);height:46px; }
  .compact-ui .battle-guide-collapsed #battle-guide-content { display:none; }
  .compact-ui .battle-guide-collapsed .battle-guide-toggle { flex:1;min-width:0; }
  .compact-ui .battle-guide-collapsed [data-battle=end-practice] { flex:none;justify-content:center;width:44px;padding:0; }
  .compact-ui .battle-guide-collapsed [data-battle=end-practice]>span { display:none; }
  .compact-ui .battle-roster-toggle { display:flex;align-items:center;justify-content:center;gap:6px;pointer-events:auto;align-self:flex-start;min-height:44px;min-width:126px;padding:4px 8px;background:var(--papyrus-solid);border:1px solid var(--papyrus-edge);border-radius:4px;color:var(--ink);font-size:14px; }
  .compact-ui .battle-roster-toggle strong { font-size:13px; }
  .compact-ui .battle-roster { display:none; }
  .compact-ui .battle-roster-open .battle-roster { display:flex; }
  .compact-ui .battle-roster-open .battle-roster-toggle { position:absolute;bottom:64px;left:0; }
  .compact-ui .battle-hud-hidden .battle-roster-toggle { display:none; }
  .compact-ui .battle-planning:not(.battle-has-selection) .battle-planner { display:none; }
  .compact-ui .battle-planner { top:auto;bottom:var(--landscape-bottom);left:auto;right:var(--landscape-right);width:min(360px,calc(100% - 152px));max-height:none;padding:6px;display:flex;flex-wrap:nowrap;align-items:center;gap:6px;overflow:visible;background:var(--papyrus-solid); }
  .compact-ui .battle-roster-open .battle-planner { bottom:calc(var(--landscape-bottom) + 64px); }
  .compact-ui .battle-plan-modes { flex:2;min-width:0; }
  .compact-ui .battle-planner button { font-size:14px;min-height:44px; }
  .compact-ui .battle-plan-modes button { min-width:0;padding:4px; }
  .compact-ui .battle-has-selection .battle-plan-settings { display:block;flex:1;min-width:105px;margin:0; }
  .compact-ui .plan-settings-full { display:none; }
  .compact-ui .plan-settings-short { display:inline; }
  .compact-ui .battle-planner .battle-plan-hint,
  .compact-ui .battle-planner .battle-plan-edit,
  .compact-ui .battle-planner .battle-plan-face,
  .compact-ui .battle-planner .battle-plan-summary { display:none; }
  .compact-ui .battle-plan-options-open .battle-planner { top:calc(var(--landscape-top) + 54px);bottom:auto;width:min(320px,calc(100% - 16px));max-height:calc(100dvh - var(--landscape-top) - var(--landscape-bottom) - 116px);display:flex;flex-direction:column;align-items:stretch;overflow:auto;overscroll-behavior:contain; }
  .compact-ui .battle-plan-options-open .battle-plan-done { display:flex;align-items:center;justify-content:center;gap:8px;position:sticky;top:0;z-index:2;flex:none;background:var(--papyrus-solid); }
  .compact-ui .battle-plan-options-open .battle-plan-modes,
  .compact-ui .battle-plan-options-open .battle-plan-settings { display:none; }
  .compact-ui .battle-has-selection.battle-plan-options-open .battle-plan-options { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));min-width:0;flex:none;order:0;margin:0;gap:8px; }
  .compact-ui .battle-plan-options label { font-size:.875rem;color:var(--ink); }
  .compact-ui .battle-plan-options select { font-size:.875rem; }
  .compact-ui .battle-plan-options-open .battle-plan-edit { display:flex;min-width:0;flex:none; }
  .compact-ui .battle-plan-options-open .battle-plan-face { display:block;width:100%;margin:0;flex:none; }
  .compact-ui .battle-plan-options-open .battle-plan-summary { display:block;margin:0;padding:8px 0;font-size:14px;color:var(--ink); }
}

@media (orientation:landscape) and (max-height:350px) {
  .compact-ui .home-content,
  .compact-ui .home-screen[data-view=new] .home-content,
  .compact-ui .home-screen[data-view=games] .home-content { padding:8px 14px; }
  .compact-ui .home-screen[data-view=main] .home-motto { font-size:14px; }
  .compact-ui .home-screen[data-view=main] .home-local-note { font-size:9px; }
  .compact-ui .home-new-overview .home-description { display:none; }
  .compact-ui .home-modes label { min-height:52px;padding:6px; }
  .compact-ui .home-new-settings>.home-local-note { display:none; }
  .compact-ui .menu-grid button { min-height:44px; }
  .compact-ui .menu-grid button>span { font-size:11px; }
  .compact-ui .menu-grid svg { width:17px;height:17px; }
}
