/* Game menu motion + Settings backdrop, shared by both entry points. */
:is(#settingsModal, #playerSettingsModal, #menuSettingsModal, #inGameLoadOverlay, #loadGameModal),
#loadGameModal.fade {
    background: rgba(0, 0, 0, .52);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    transition: opacity 220ms ease;
}
:is(#settingsModal, #playerSettingsModal, #menuSettingsModal, #inGameLoadOverlay) .settings-modal-panel,
#loadGameModal.fade .modal-dialog {
    transform: scale(.97) translateY(12px);
    opacity: 0;
    transition: transform 230ms cubic-bezier(.2,.78,.24,1), opacity 180ms ease;
}
:is(#settingsModal, #playerSettingsModal, #menuSettingsModal, #inGameLoadOverlay).open .settings-modal-panel,
#loadGameModal.show .modal-dialog {
    transform: scale(1) translateY(0);
    opacity: 1;
}
/* Settings and save library share vertical geometry, not width. */
:root { --menu-workspace-height: min(80dvh, 760px); }
:is(#playerSettingsModal, #menuSettingsModal, #inGameLoadOverlay) .settings-modal-panel,
#loadGameModal .save-modal-content {
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    height: var(--menu-workspace-height);
    max-height: var(--menu-workspace-height);
    padding: 0;
    overflow: hidden;
}
#loadGameModal .modal-dialog {
    margin: calc((100dvh - var(--menu-workspace-height)) / 2) auto;
}
:is(#playerSettingsModal, #menuSettingsModal, #inGameLoadOverlay) .settings-modal-header,
#loadGameModal .save-modal-header {
    flex: 0 0 auto;
    padding: 1.25rem 1.5rem;
    margin: 0;
    border-bottom: 0;
}
:is(#playerSettingsModal, #menuSettingsModal, #inGameLoadOverlay) .settings-modal-title,
#loadGameModal .modal-title {
    display: flex;
    align-items: center;
    margin: 0;
    font-size: 1.25rem;
    font-weight: 700;
    line-height: 1.3;
    letter-spacing: -.01em;
}
:is(#playerSettingsModal, #menuSettingsModal, #inGameLoadOverlay) .settings-modal-title svg,
#loadGameModal .modal-title svg { width: 20px; height: 20px; flex-shrink: 0; }
:is(#playerSettingsModal, #menuSettingsModal) .settings-tabs {
    flex-shrink: 0;
    margin: 0 1.5rem 1rem;
}
:is(#playerSettingsModal, #menuSettingsModal) .settings-modal-body {
    flex: 1;
    min-height: 0;
    max-height: none;
    padding: 0 1.5rem 1.25rem;
    overflow-y: auto;
}
/* Same soft upper scroll edge as the dossier; header stays fully opaque. */
:is(#playerSettingsModal, #menuSettingsModal) .settings-modal-body.is-scrolled,
#inGameLoadOverlay .settings-modal-body,
#loadGameModal .save-modal-body {
    -webkit-mask-image: linear-gradient(to bottom, transparent 0, rgba(0, 0, 0, .34) 5px, #000 14px, #000 100%);
    mask-image: linear-gradient(to bottom, transparent 0, rgba(0, 0, 0, .34) 5px, #000 14px, #000 100%);
}
@media (max-width: 620px) {
    :root { --menu-workspace-height: calc(100dvh - 24px); }
}
