:root,
.theme-formal {
    --color-bg: #f9f8f6;
    --color-text: #2c3e50;
    --color-text-light: #5a6a7a;
    --color-primary: #3a5a40;
    --color-primary-hover: #2d4531;
    --color-primary-rgb: 58, 90, 64;
    --color-secondary: #a3b18a;
    --color-accent: #dad7cd;
    --color-card-bg: #242931;
    --font-heading: 'Cormorant Garamond', serif;
    --font-body: 'DM Sans', sans-serif;
    --hero-gradient: linear-gradient(180deg, rgba(218, 215, 205, 0.5) 0%, rgba(249, 248, 246, 1) 100%);
    --story-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
    --section-shadow: 0 4px 25px rgba(0, 0, 0, 0.04);
    --section-shadow-dark: 0 4px 25px rgba(0, 0, 0, 0.2);
    --card-shadow: 0 4px 15px rgba(0, 0, 0, 0.05);
    --btn-primary-shadow: 0 5px 15px rgba(58, 90, 64, 0.2);
    --btn-secondary-hover-bg: rgba(58, 90, 64, 0.05);
    --faq-border: rgba(0, 0, 0, 0.05);
    --footer-border: rgba(0, 0, 0, 0.05);
    --discreet-underline: rgba(0, 0, 0, 0.2);
}

html[data-font="dyslexic"] em,
html[data-font="dyslexic"] i {
    letter-spacing: -0.12em;
}

.caption {
    font-size: 0.95rem;
    font-style: italic;
    margin-top: 1rem;
    margin-bottom: 0;
    color: var(--color-text-light);
    text-align: center;
    font-family: var(--font-heading);
}

@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]),
    :root:not([data-theme="light"]) .theme-formal {
        --color-bg: #1a1e24;
        --color-text: #e2e8f0;
        --color-text-light: #94a3b8;
        --color-primary: #a3b18a;
        --color-primary-hover: #ccd5ae;
        --color-primary-rgb: 163, 177, 138;
        --color-secondary: #3a5a40;
        --color-accent: #2c3e50;
        --hero-gradient: linear-gradient(180deg, rgba(44, 62, 80, 0.5) 0%, rgba(26, 30, 36, 1) 100%);
    }
}

:root[data-theme="dark"],
:root[data-theme="dark"] .theme-formal {
    --color-bg: #1a1e24;
    --color-text: #e2e8f0;
    --color-text-light: #94a3b8;
    --color-primary: #a3b18a;
    --color-primary-hover: #ccd5ae;
    --color-primary-rgb: 163, 177, 138;
    --color-secondary: #3a5a40;
    --color-accent: #2c3e50;
    --hero-gradient: linear-gradient(180deg, rgba(44, 62, 80, 0.5) 0%, rgba(26, 30, 36, 1) 100%);
}

.theme-formal .error-container {
    padding: 10rem 2rem;
}

.theme-formal .error-container h1 {
    font-size: 5rem;
    margin-bottom: 0;
}

.theme-formal.has-formal-banner .formal-hero-visual {
    position: relative;
    overflow: hidden;
    min-height: min(56vh, 520px);
    padding: 5.5rem 2rem;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--color-bg);
    background-image: none;
    text-align: center;
}

.formal-banner-bg {
    position: absolute;
    inset: 0;
    z-index: 0;
    overflow: hidden;
}

.formal-banner-img {
    position: absolute;
    left: 0;
    right: 0;
    top: -8%;
    width: 100%;
    height: 125%;
    object-fit: cover;
    object-position: center 45%;
    opacity: calc(var(--banner-base-opacity, 0.52) * (1 - var(--banner-fade, 0) * 0.85));
    transform: translate3d(0, var(--banner-parallax, 0px), 0);
    will-change: transform, opacity;
}

.formal-banner-scrim {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background: linear-gradient(
        to bottom,
        color-mix(in srgb, var(--color-bg) 8%, transparent) 0%,
        color-mix(in srgb, var(--color-bg) 28%, transparent) 42%,
        color-mix(in srgb, var(--color-bg) 78%, transparent) 72%,
        var(--color-bg) 100%
    );
}

.formal-hero-content {
    position: relative;
    z-index: 2;
    width: 100%;
    max-width: 900px;
    margin: 3.4375rem auto 0;
    text-shadow: 0 1px 18px color-mix(in srgb, var(--color-bg) 55%, transparent);
}

@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) .theme-formal.has-formal-banner {
        --banner-base-opacity: 0.42;
    }

    :root:not([data-theme="light"]) .theme-formal.has-formal-banner .formal-banner-img {
        filter: brightness(0.9) saturate(0.88);
    }

    :root:not([data-theme="light"]) .theme-formal.has-formal-banner .formal-hero-content {
        text-shadow: 0 2px 24px rgba(0, 0, 0, 0.55);
    }
}

:root[data-theme="dark"] .theme-formal.has-formal-banner {
    --banner-base-opacity: 0.42;
}

:root[data-theme="dark"] .theme-formal.has-formal-banner .formal-banner-img {
    filter: brightness(0.9) saturate(0.88);
}

:root[data-theme="dark"] .theme-formal.has-formal-banner .formal-hero-content {
    text-shadow: 0 2px 24px rgba(0, 0, 0, 0.55);
}

.theme-formal.has-formal-banner {
    --banner-base-opacity: 0.52;
}

@media (max-width: 768px) {
    .theme-formal.has-formal-banner .formal-hero-visual {
        min-height: min(48vh, 420px);
        padding: 5rem 1.25rem;
    }
}
