/* BAF-PROD-009E: chrome for the public shell only - header/nav/footer, all declared directly in
   PublicLayout.razor so Blazor's CSS isolation applies normally. Page CONTENT rendered via @Body
   belongs to a different component (each individual public page) and is therefore styled by the
   separate global stylesheet wwwroot/css/baf-public.css instead - scoped CSS never crosses a
   component boundary, so a single scoped file here could never reach it.

   BAF-PROD-009E1 §5/§13: OWNER's first HUMAN review of /legal/sms-consent (then /baf/sms-consent)
   found the page too narrow, visually dense, and under-differentiated for a public trust page.
   .baf-public-main's own max-width below was widened from 760px to 880px - a professional
   "documentation site" reading width (comparable to widely-used public docs/legal sites), never
   full monitor width - and the header/footer/nav rules below gained explicit responsive treatment
   for common desktop widths, tablet, and mobile, all still expressed in existing design tokens.

   BAF-PROD-009E1A: instrumented rendered-DOM inspection (Playwright, fresh headless Chromium, no
   cache) after a full `dotnet clean`+rebuild confirmed .baf-public-main WAS actually computing to
   exactly 880px/max-width:880px with no parent constraint, isolation leak, or competing selector
   anywhere in the codebase (a repository-wide grep found .baf-public-main/.baf-public-content
   declared in exactly these two files, nowhere else) - so no cascade defect was found to "fix" in
   the literal sense of an overridden rule. The most likely explanation for OWNER's own screenshot
   still showing the pre-009E1 rendering is a stale server process or browser cache predating the
   009E1 commit (Blazor Server's own CSS-isolation bundle and structural Razor changes are not
   always picked up by hot-reload without a full app restart) - disclosed, not assumed silently.
   Regardless of that root cause, this task's own explicit numeric targets (900-1000px desktop
   content width; a draft notice that reads as "a review-state notice, not a tiny badge") were not
   yet met by 880px/the small pill badge, so both are corrected here on their own merits: max-width
   960px (comfortably inside the requested range), and the draft banner (baf-public.css) rebuilt as
   a full-width bordered notice bar instead of a small rounded pill. */

.baf-public-shell {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    background: var(--baf-bg);
    color: var(--baf-text);
    font-family: var(--baf-font-family-base);
}

.baf-public-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--baf-space-lg);
    padding: var(--baf-space-md) var(--baf-space-xl);
    border-bottom: var(--baf-border-width) solid var(--baf-border);
    flex-wrap: wrap;
}

.baf-public-brand {
    display: inline-flex;
    align-items: center;
    gap: var(--baf-space-sm);
    text-decoration: none;
    color: var(--baf-text);
}

.baf-public-wordmark {
    font-weight: 700;
    font-size: var(--baf-type-title-size-lg);
    letter-spacing: 0.02em;
}

.baf-public-nav {
    display: flex;
    flex-wrap: wrap;
    gap: var(--baf-space-lg);
}

.baf-public-nav a,
.baf-public-footer-nav a {
    color: var(--baf-text-muted);
    text-decoration: none;
    font-size: var(--baf-type-body-size-sm);
    padding: var(--baf-space-2) 0;
    border-bottom: var(--baf-border-width) solid transparent;
}

.baf-public-nav a:hover,
.baf-public-nav a:focus-visible,
.baf-public-footer-nav a:hover,
.baf-public-footer-nav a:focus-visible {
    color: var(--baf-accent);
    text-decoration: underline;
}

/* NavLink's own "active" class - a real, always-legible indicator of the current page, distinct
   from the transient hover/focus-visible states above. */
.baf-public-nav a.active {
    color: var(--baf-text);
    font-weight: 600;
    border-bottom-color: var(--baf-accent);
}

.baf-public-main {
    flex: 1;
    width: 100%;
    max-width: 960px;
    margin: 0 auto;
    padding: var(--baf-space-xl) var(--baf-space-lg) var(--baf-space-17);
    box-sizing: border-box;
}

.baf-public-footer {
    border-top: var(--baf-border-width) solid var(--baf-border);
    padding: var(--baf-space-lg) var(--baf-space-xl);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--baf-space-sm);
    text-align: center;
}

.baf-public-footer-identity {
    margin: 0;
    color: var(--baf-text-subtle);
    font-size: var(--baf-type-caption-size-lg);
}

.baf-public-footer-nav {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--baf-space-md);
}

/* Tablet: a little less outer padding than Desktop, content width still governed by .baf-public-main's own max-width. */
@media (max-width: 900px) {
    .baf-public-header {
        padding: var(--baf-space-md) var(--baf-space-lg);
    }

    .baf-public-main {
        padding: var(--baf-space-lg) var(--baf-space-md) var(--baf-space-13);
    }
}

/* Mobile: nav stays usable (wraps, never scrolls horizontally) and outer padding shrinks further. */
@media (max-width: 560px) {
    .baf-public-header {
        flex-direction: column;
        align-items: flex-start;
        gap: var(--baf-space-sm);
        padding: var(--baf-space-sm) var(--baf-space-md);
    }

    .baf-public-nav {
        gap: var(--baf-space-md);
        width: 100%;
    }

    .baf-public-main {
        padding: var(--baf-space-lg) var(--baf-space-sm) var(--baf-space-11);
    }

    .baf-public-footer {
        padding: var(--baf-space-md);
    }
}
