/* v1.15 — shared menu surfaces. Theme colors come from style.css. */
:root {
    --menu-space-1:4px; --menu-space-2:8px; --menu-space-3:12px;
    --menu-space-4:16px; --menu-space-6:24px;
    --menu-body-font:Arial,Helvetica,sans-serif;
    --menu-heading-font:'MedievalSharp',Georgia,serif;
    --menu-danger:#efaca0; --menu-danger-line:#ba7569;
}
button,select,input,textarea,summary {
    font-family:var(--menu-body-font);
    font-variant-numeric:tabular-nums;
}
button { font-size:14px; min-height:44px; min-width:44px; border-radius:7px; }
button:hover { transform:none; }
:is(#view-switch,#shop,.game-actions,.player-account,.system-panel,#army-view,.upgrade-multiplier) button {
    font-family:var(--menu-body-font); font-size:14px;
}
:root button:disabled,:root[data-theme='stone'] button:disabled {
    opacity:1; color:var(--ink-muted,#d0bd9e); border-color:var(--panel-line,#77634a);
    background:var(--panel-inset,#251d19)!important; box-shadow:none; cursor:not-allowed;
}
:is(h1,h2,h3,h4),.dialog-header h3,.kingdom-modal-header h3 {
    font-family:var(--menu-heading-font);
}
:is(#options-popup,#leaderboard-popup,#message-popup,#achievement-menu,#upgrade-menu,#research-popup,#kingdom-location-popup,#general-menu,#season-transition,.game-notice) .popup-content.dialog-shell {
    width:min(100%,680px); max-width:680px; height:auto;
    max-height:calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    padding:0; gap:0; display:flex; flex-direction:column; align-items:stretch;
    justify-content:flex-start; overflow:hidden; text-align:left;
    background:var(--panel-fill,#2e2118); border:2px solid var(--panel-line,#a67c52);
    border-radius:12px; box-shadow:0 20px 70px #0009;
}
#research-popup .popup-content.dialog-shell { width:min(100%,1040px); max-width:1040px; }
#kingdom-location-popup .popup-content.dialog-shell { width:min(100%,800px); max-width:800px; }
.popup { box-sizing:border-box; padding:16px max(12px,env(safe-area-inset-right)) 16px max(12px,env(safe-area-inset-left)); }
.dialog-header {
    display:flex; align-items:center; justify-content:space-between; gap:16px;
    flex:0 0 auto; padding:16px 20px; border-bottom:1px solid var(--panel-line,#a67c52);
    background:var(--panel-inset,#251d19);
}
.dialog-header :is(h2,h3,#general-menu-header) { margin:0; padding:0; border:0; min-width:0; font-size:22px; line-height:1.25; color:var(--ink-heading,#f0d4a0); }
.dialog-header .dialog-close { flex:0 0 auto; width:auto; min-width:76px; margin:0; }
.dialog-body { flex:1 1 auto; min-height:0; min-width:0; overflow:auto; overscroll-behavior:contain; padding:20px; scrollbar-color:var(--panel-line,#a67c52) transparent; font:14px/1.55 var(--menu-body-font); }
.dialog-body > :first-child { margin-top:0; }
.dialog-body > :last-child { margin-bottom:0; }
.dialog-body :is(p,small,.player-account-hint,.research-guidance,.army-help) { font:13px/1.55 var(--menu-body-font); }
.dialog-body h4 { margin:20px 0 10px; font-size:18px; }
.dialog-body > h4:first-child { margin-top:0; }
/* The shell owns scrolling. Former per-menu lists no longer compete with it. */
.dialog-body :is(#upgrade-list,#upgrade-list-2,#kingdom-location-body,#achievement-list,#leaderboard-scroll,#message-scroll) {
    max-height:none; height:auto; overflow:visible; min-height:0;
}
.dialog-body #kingdom-location-body { padding:0; }
.dialog-body :is(.kingdom-modal-header,.research-popup-header) { padding:0; border:0; margin:0 0 12px; }
.dialog-body .kingdom-modal-header:empty { display:none; }
#achievement-menu .dialog-body #achievement-list { overflow:visible; max-height:none; }
#leaderboard-scroll,#message-scroll { margin:16px 0; }
#message-scroll { max-height:45dvh!important; overflow:auto!important; }
#leaderboard-scroll { max-height:40dvh!important; overflow:auto!important; }
.settings-nav { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:6px; margin-bottom:20px; }
.settings-nav button { margin:0; padding:10px 6px; font:600 13px/1.3 var(--menu-body-font); }
:root .button-secondary,:root .dialog-close,:root .settings-nav button,:root .game-actions button {
    background:var(--panel-inset,#251d19)!important; color:var(--ink,#fdf6e3); box-shadow:none;
}
:root .settings-nav button[aria-pressed='true'],:root .button-primary {
    background:linear-gradient(var(--button-top),var(--button-bottom))!important;
    color:var(--ink-heading,#ffdf9e); border-color:var(--accent,#dbb36d);
    box-shadow:inset 0 -2px 0 var(--accent,#dbb36d);
}
:root .button-danger,:root[data-theme='stone'] .button-danger {
    color:var(--menu-danger)!important; border-color:var(--menu-danger-line)!important;
    background:#39201e!important; box-shadow:none;
}
.settings-journal,.danger-zone,.game-help { margin-top:20px; padding-top:16px; border-top:1px solid var(--panel-line,#77634a); }
.settings-journal h4,.danger-zone h4 { margin-top:0; }
.danger-zone p { color:var(--ink-muted,#d0bd9e); }
.action-row { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.action-row button { margin:0; width:100%; }
#export-legacy-save { grid-column:1/-1; }
#save-load-controls { grid-template-columns:1fr; margin-bottom:12px; }
.section-intro { color:var(--ink-muted,#d0bd9e); margin:0 0 16px; }
[data-settings-section] :is(.theme-option,.battery-saver-option,.balance-consent) { width:100%; box-sizing:border-box; margin:12px 0; grid-column:1/-1; padding:14px; background:var(--panel-inset,#251d19); }
[data-settings-section] label { cursor:pointer; }
[data-settings-section] :is(.theme-option,.battery-saver-option,.balance-consent) label { min-height:44px; }
[data-settings-section] :is(.theme-option,.battery-saver-option,.balance-consent) strong { font:600 14px/1.5 var(--menu-body-font); }
[data-settings-section] .checkbox-group { display:grid; grid-template-columns:1fr; gap:10px; margin:12px 0; }
[data-settings-section] .checkbox-option { display:flex; align-items:center; gap:12px; min-height:52px; font:14px/1.5 var(--menu-body-font); text-align:left; }
[data-settings-section] .checkbox-option input { flex:0 0 auto; width:20px; height:20px; margin:0; }
[data-settings-section] .checkbox-option :is(strong,small) { display:block; }
[data-settings-section] small { color:var(--ink-muted,#d0bd9e); }
.player-account { padding:0; border:0; background:none; }
.player-account h4 { font-family:var(--menu-heading-font); font-size:18px; }
.player-account p,.player-account-fields label { font-size:13px; }
.player-account-buttons button { font-size:14px; }
#player-account-google { grid-column:1/-1; }
.account-link-details { margin-top:16px; }
summary { min-height:44px; padding:10px 0; box-sizing:border-box; cursor:pointer; font-size:14px; }
.account-link-details button { width:100%; margin-top:8px; }
.stats-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:0 20px; margin:0; font-variant-numeric:tabular-nums; }
.stats-grid dt,.stats-grid dd { margin:0; padding:12px 0; border-bottom:1px solid var(--panel-line,#77634a); }
.stats-grid dd { text-align:right; overflow-wrap:anywhere; color:var(--ink-heading,#f0d4a0); font-weight:600; }
.leaderboard-row { display:grid; grid-template-columns:32px minmax(0,1fr) minmax(60px,auto); align-items:baseline; gap:12px; padding:12px 6px; margin:0; border-bottom:1px solid var(--panel-line,#77634a); font:14px/1.5 var(--menu-body-font); }
.leaderboard-row .ranking-name { overflow-wrap:anywhere; }
.leaderboard-row .ranking-stage { text-align:right; font-variant-numeric:tabular-nums; color:var(--ink-heading,#f0d4a0); }
.leaderboard-columns { display:grid; grid-template-columns:32px 1fr auto; gap:12px; font:12px var(--menu-body-font); color:var(--ink-muted,#d0bd9e); padding:8px 6px; }
.army-empty-state { padding:20px; margin-bottom:20px; border:1px solid var(--panel-line,#77634a); border-radius:10px; background:var(--panel-inset,#251d19); }
.army-empty-state h3 { margin-top:0; }
.army-empty-state p,.campaign-requirement { font:14px/1.5 var(--menu-body-font); color:var(--ink,#fdf6e3); }
.campaign-requirement { font-weight:600; }
#army-view :is(.army-help,.army-dps-explainer,.campaign-preview,.campaign-card p) { font-size:13px; line-height:1.55; }
#army-view select:disabled { opacity:1; color:var(--ink-muted,#d0bd9e); }
@media(max-width:560px) {
    .dialog-header { padding:12px; gap:8px; }
    .dialog-header :is(h2,h3,#general-menu-header) { font-size:20px; }
    .dialog-body { padding:14px; }
    .settings-nav { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .settings-nav button { font-size:14px; }
    .game-actions { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .game-actions button:last-child { grid-column:1/-1; }
    .action-row,#export-import-controls { grid-template-columns:1fr; }
    .leaderboard-row { gap:6px; grid-template-columns:24px minmax(0,1fr) minmax(50px,auto); }
    .player-account-fields,.player-account-buttons { grid-template-columns:1fr; }
}
@media(max-width:360px) {
    #achievement-menu .dialog-body #achievement-list { grid-template-columns:1fr; }
    .inline-form,#message-entry { grid-template-columns:1fr; }
    .inline-form > * { grid-column:1; }
}
@media(max-height:500px) {
    .popup { padding-top:6px; padding-bottom:6px; }
    :is(#options-popup,#leaderboard-popup,#message-popup,#achievement-menu,#upgrade-menu,#research-popup,#kingdom-location-popup,#general-menu) .popup-content.dialog-shell { max-height:calc(100dvh - 12px); }
    .dialog-header { padding:6px 12px; }
}
