/* The approved Dashboard palette, shared by staff, DPR and public pages. */
@media screen {
    html { scrollbar-gutter: stable; }
    body.ff-site-theme {
        --ff-page: #020617; --ff-panel: #0f172a; --ff-group: #1e293b;
        --ff-border: #334155; --ff-text: #f8fafc; --ff-muted: #cbd5e1; --ff-link: #93c5fd;
        --cp-page: var(--ff-page); --cp-panel: var(--ff-panel); --cp-soft: var(--ff-group);
        --cp-border: var(--ff-border); --cp-text: var(--ff-text); --cp-muted: var(--ff-muted);
        --cp-action: #2563eb; --cp-link: var(--ff-link);
        --cp-service-body: var(--ff-panel); --cp-service-header-start: var(--ff-group);
        --cp-service-header-end: var(--ff-group); --cp-service-divider: var(--ff-border);
        --base-100: var(--ff-page); --base-200: var(--ff-panel); --base-300: var(--ff-border);
        --base-content: var(--ff-text); --primary: #2563eb;
        margin: 0; min-height: 100vh; background: var(--ff-page); color: var(--ff-text);
        font-family: 'Instrument Sans', ui-sans-serif, system-ui, sans-serif;
        font-size: 1rem; line-height: 1.5; color-scheme: dark;
    }
    .ff-site-theme *, .ff-site-theme *::before, .ff-site-theme *::after { box-sizing: border-box; }
    .ff-site-theme [hidden] { display: none !important; }
    /* Interface captions use initial capitals, including content loaded after navigation.
       Keep prose, consent statements, and entered values in their original case. */
    .ff-site-theme :is(h1, h2, h3, h4, h5, h6, legend, th, dt, summary,
        [role="heading"], [role="columnheader"], [role="tab"], [role="button"],
        button, input[type="button"], input[type="submit"], input[type="reset"],
        select, option, .ff-frame-title, .ff-nav-flyout-title, .ff-nav-current,
        .ff-breadcrumbs [aria-current="page"], a,
        .button, .cp-button, .photo-button, .wd-small-button, .wq-button,
        .contact-button, .cp-link, .ff-record-edit, a[class*="rounded"],
        .cp-choice strong, .cp-check strong) { text-transform: capitalize; }
    .ff-site-theme label:not(:has(input[type="checkbox"], input[type="radio"])) { text-transform: capitalize; }
    .ff-site-theme :is(input:not([type="button"]):not([type="submit"]):not([type="reset"]),
        textarea, code, pre, [contenteditable="true"], [data-preserve-case],
        a[href^="mailto:"], a[href^="tel:"]) { text-transform: none; }
    .ff-site-theme :is(label, a, button, summary) :is(p, small, .cp-help, .cp-error, .help-text, .field-error) { text-transform: none; }
    /* Email values keep their own case rule inside title-cased interface captions. */
    .ff-site-theme :is([data-email-address], input[type="email"]) { text-transform: lowercase !important; }
    .ff-skip-link { position: absolute; left: 1rem; top: -5rem; z-index: 100; padding: .75rem; background: var(--ff-panel); color: var(--ff-text); }
    .ff-skip-link:focus { top: .5rem; }
    .ff-site-theme .ff-frame-header { display: block; height: auto; min-height: 4.5rem; padding: 0; background: var(--ff-panel); border: 0; border-bottom: 1px solid #ffffff1a; }
    .ff-site-theme .ff-frame-header-inner { display: flex; align-items: center; gap: 1rem; width: 100%; min-height: 4.5rem; margin: 0 auto; padding: .75rem 1rem; }
    .ff-frame-brand { display: flex; flex: 0 0 40px; align-items: center; }
    .ff-frame-brand img { display: block; width: 40px; height: auto; max-height: 54px; object-fit: contain; }
    .ff-frame-heading { min-width: 0; flex: 1; }
    .ff-frame-heading p { margin: 0; line-height: 1.25; }
    .ff-frame-label { color: var(--ff-link); font-size: .75rem; font-weight: 600; text-transform: uppercase; letter-spacing: .2em; }
    .ff-frame-title { color: var(--ff-text); font-size: 1rem; font-weight: 700; overflow-wrap: anywhere; }
    .ff-frame-user { color: var(--ff-muted); font-size: .875rem; }
    .ff-frame-signout { flex: 0 0 auto; margin: 0; }
    .ff-site-theme .ff-frame-signout button { margin: 0; padding: .5rem .8rem; border: 1px solid #475569; border-radius: .5rem; background: transparent; color: var(--ff-text); font: inherit; font-size: .875rem; font-weight: 600; cursor: pointer; }
    .ff-site-theme .ff-frame { width: 100%; margin-inline: auto; }
    .ff-frame-sidebar { display: none; }
    .ff-frame-content { min-width: 0; overflow-wrap: anywhere; }
    .ff-site-theme .ff-frame-content :is(.ff-desktop-container, .cp-shell, .site-shell) { width: 100%; max-width: none; margin-inline: 0; }
    .ff-site-theme .ff-frame-content > main { width: 100%; max-width: none; margin-inline: 0; }
    .ff-site-theme .ff-frame-content > .cp-shell { display: block; min-height: 0; margin-top: 1.5rem; }
    .ff-site-theme .ff-frame-content .cp-main-inner { max-width: none; }
    /* Customer interior pages use the same flat content inset and title scale as Home. */
    .ff-site-theme .ff-frame-content > .cp-shell:not(.cp-auth) { margin-top: 0; border: 0; border-radius: 0; background: transparent; overflow: visible; }
    .ff-site-theme .cp-shell:not(.cp-auth) .cp-topbar { display: none; }
    .ff-site-theme .cp-shell:not(.cp-auth) .cp-main-inner { padding: 1.5rem 1.25rem 3rem; }
    .ff-site-theme .cp-shell:not(.cp-auth) .cp-main h1 { margin: 0; font-size: 1.8rem; font-weight: 700; line-height: 1.5; }
    @media(max-width: 767px) { .ff-site-theme .cp-shell:not(.cp-auth) .cp-main h1 { font-size: 1.55rem; } }

    .ff-site-theme .ff-frame-content .cp-sidebar { display: none; }
    .ff-site-theme .ff-frame-content .cp-topbar { background: var(--ff-panel); }
    .ff-site-theme .ff-frame-content > header { height: auto; background: var(--ff-panel); border-color: var(--ff-border); }
    .ff-site-theme .ff-frame-content > header img.brand-logo,
    .ff-site-theme .ff-frame-content > header.photo-header img,
    .ff-site-theme .ff-frame-content > header .policy-brand img { display: none; }
    .ff-mobile-menu { margin: .75rem 1rem 0; border: 1px solid var(--ff-border); border-radius: .5rem; background: var(--ff-panel); }
    .ff-mobile-menu > summary { padding: .65rem .9rem; font-weight: 600; cursor: pointer; }
    .ff-mobile-menu .ff-frame-nav { padding: 0 .5rem .5rem; }
    .ff-site-theme .ff-frame-nav { display: block; }
    .ff-nav-group { padding: .5rem 0; }
    .ff-nav-group + .ff-nav-group { border-top: 1px solid var(--ff-border); }
    .ff-nav-label { margin: 0; padding: .5rem; color: var(--ff-link); font-size: .6875rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; overflow-wrap: anywhere; }
    .ff-frame-nav a { display: flex; align-items: center; min-height: 44px; padding: .5rem; border-radius: .375rem; color: var(--ff-text); font-size: .875rem; line-height: 1.4; text-decoration: none; overflow-wrap: anywhere; }
    .ff-frame-nav a:hover { background: var(--ff-group); }
    .ff-frame-nav a[aria-current="page"] { background: #1e3a5f; color: #bfdbfe; }
    .ff-nav-item { margin: 0 0 .65rem; min-width: 0; }
    .ff-nav-home { margin-bottom: 1rem; padding-bottom: 1rem; border-bottom: 1px solid #475569; }
    .ff-nav-settings { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid #475569; }
    .ff-site-theme .ff-nav-button {
        display: flex; align-items: center; justify-content: space-between; gap: .5rem;
        width: 100%; min-height: 44px; margin: 0; padding: .65rem .75rem;
        border: 1px solid #415774; border-top-color: #647b99; border-bottom-color: #07101e;
        border-radius: .5rem; background: linear-gradient(180deg, #33465f 0%, #203149 45%, #142238 100%);
        box-shadow: inset 0 1px 0 #ffffff24, 0 3px 0 #010713, 0 4px 7px #0005;
        color: #f8fafc; font: inherit; font-size: .875rem; font-weight: 600; line-height: 1.4;
        text-align: left; text-decoration: none; cursor: pointer; overflow-wrap: anywhere;
    }
    .ff-site-theme .ff-nav-button:hover { background: linear-gradient(180deg, #456181, #283f5b 50%, #1c304a); border-top-color: #93c5fd; }
    .ff-site-theme .ff-nav-button:active, .ff-site-theme .ff-nav-button[aria-expanded="true"] { background: linear-gradient(180deg, #12223a, #2b4668); box-shadow: inset 0 2px 4px #0007, 0 1px 0 #ffffff1a; }
    .ff-site-theme .ff-nav-button[aria-current] { background: linear-gradient(180deg, #315f98, #183a64); border-color: #60a5fa; color: #fff; }
    .ff-site-theme .ff-nav-button:disabled { opacity: .5; cursor: not-allowed; box-shadow: none; }
    .ff-nav-arrow { flex: 0 0 auto; font-size: 1.4rem; color: #bfdbfe; line-height: 1; }
    .ff-site-theme .ff-nav-current { display: block; margin: .35rem .2rem 0; padding: .6rem .65rem; border: 1px solid #60a5fa; border-radius: .35rem; background: #1e3a5f; color: #e0f2fe; font-size: .8125rem; text-decoration: none; }
    .ff-nav-current-label { display: block; color: #93c5fd; font-size: .625rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
    .ff-site-theme .ff-nav-flyout { position: fixed; z-index: 200; width: 17rem; max-width: calc(100vw - 24px); padding: .75rem; overflow: auto; border: 1px solid #64748b; border-radius: .65rem; background: #0f172a; box-shadow: 0 12px 35px #0009, inset 0 1px 0 #ffffff1a; }
    .ff-site-theme .ff-nav-flyout nav { display: block; }
    .ff-nav-flyout-title { margin: 0 0 .75rem; color: #bfdbfe; font-size: .8125rem; font-weight: 700; }
    .ff-breadcrumbs { color: #cbd5e1; font-size: .875rem; line-height: 1.5; }
    .ff-breadcrumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem 0; list-style: none !important; margin: 0 !important; padding: 0 !important; }
    .ff-breadcrumbs li { display: inline-flex; align-items: baseline; min-width: 0; max-width: 100%; }
    .ff-breadcrumbs a, .ff-breadcrumbs [aria-current="page"] { padding: .375rem .125rem; overflow-wrap: anywhere; }
    .ff-breadcrumbs a { color: inherit; text-decoration: underline; text-underline-offset: .2em; }
    .ff-breadcrumbs [aria-current="page"] { font-weight: 600; }
    .ff-breadcrumb-separator { padding: 0 .5rem; opacity: .65; }
    .ff-frame-content > .ff-breadcrumbs { margin: 0; padding: 1.25rem 1.25rem 0; }
    .ff-site-theme :where(a) { color: var(--ff-link); }
    .ff-site-theme :is(.cp-button:not(.cp-button-secondary), .contact-button-primary, .wq-primary, .photo-button:not(.photo-button-secondary)) { color: #fff; }
    .ff-site-theme :where(input, select, textarea) { color: var(--ff-text); background-color: var(--ff-panel); border-color: #64748b; }
    .ff-site-theme :where(input, select, textarea)::placeholder { color: #94a3b8; opacity: 1; }
    .ff-site-theme :where(select option) { background: var(--ff-panel); color: var(--ff-text); }
    .ff-site-theme :where(button, .button, .cp-button, .photo-button, .wd-small-button, .wq-button) { border-radius: .5rem; }
    .ff-site-theme :is(a, button, input, select, textarea, summary, [tabindex]):focus-visible { outline: 3px solid #93c5fd; outline-offset: 3px; }
    .ff-site-theme fieldset { min-width: 0; margin: 1rem 0; padding: 1.25rem; border: 1px solid #475569; border-radius: .75rem; background: var(--ff-group); }
    .ff-site-theme legend { padding-inline: .4rem; color: var(--ff-text); font-weight: 600; }
    .ff-site-theme :is(.cp-section, .photo-panel, .wd-panel, .record-profile, form > section, main > form:not(.owner-customer-list-filters):has(> label)) { background: var(--ff-group); border-color: #475569; border-radius: .75rem; }
    .ff-site-theme main > form:not(.owner-customer-list-filters):has(> label) { padding: 1.25rem; }
    .ff-site-theme :is(.policy-content, .content-card, .contact-card, .hero) { background: var(--ff-panel); border-color: var(--ff-border); }
    .ff-site-theme :is(.policy-main h1, .policy-content h2, .policy-content h3, .policy-content p, .policy-content li) { color: var(--ff-text); }
    .ff-site-theme :is(.policy-eyebrow, .policy-version) { color: var(--ff-muted); }
    .ff-site-theme .policy-content a { color: var(--ff-link); }
    .ff-site-theme :is(.public-legal-footer, footer) { background: var(--ff-panel); color: var(--ff-muted); }
    .ff-site-theme :where(table) { color: var(--ff-text); }
    .ff-site-theme :where(thead, th) { background-color: var(--ff-group); }
    .ff-site-theme :where(th, td) { border-color: var(--ff-border); }
    /* lg: no left gutter, 5% right margin, and a fixed 16rem sidebar. */
    @media (min-width: 1024px) {
        .ff-site-theme .ff-frame-header-inner { width: 95%; margin-inline: 0; padding-inline: 1rem 0; }
        .ff-site-theme .ff-frame { display: grid; grid-template-columns: 16rem minmax(0, 1fr); column-gap: 3rem; width: 95%; margin-inline: 0; align-items: start; }
        .ff-frame-sidebar { display: block; min-width: 0; align-self: stretch; margin-top: 0; padding-top: 2rem; background: var(--ff-panel); border: 0; }
        /* Equal padding preserves the previous button width after removing the 1px divider. */
        .ff-frame-sidebar-inner { position: sticky; top: 0; max-height: 100dvh; overflow-y: auto; padding: .75rem calc(1rem + .5px); scrollbar-width: thin; }
        .ff-mobile-menu { display: none; }
    }
}
@media print {
    .ff-frame-header, .ff-frame-sidebar, .ff-mobile-menu, .ff-skip-link, .ff-nav-flyout { display: none !important; }
    .ff-frame, .ff-frame-content { display: block; width: 100%; margin: 0; }
}
