/* Shared presentation for the public routes introduced in the 2026 site upgrade. */
:root {
    --public-ink: #17233a;
    --public-muted: #526071;
    --public-navy: #102b3a;
    --public-blue: #1a3768;
    --public-gold: #b08d57;
    --public-canvas: #f6f8fb;
    --public-border: #d7e0e9;
    --public-card: #ffffff;
}

body.gfsa-public-page { background: var(--public-canvas); color: var(--public-ink); }
.public-hero { padding: clamp(54px, 7vw, 82px) 20px; background: linear-gradient(135deg, var(--public-navy), #254d80); color: #fff; }
.public-hero--center { text-align: center; }
.public-hero__inner { width: min(100%, 1120px); margin: 0 auto; }
.public-hero h1, .public-hero h2, .public-hero p, .public-hero strong { color: #fff; }
.public-hero h1 { margin: 0 0 16px; font-size: clamp(2.15rem, 5vw, 4rem); line-height: 1.12; text-wrap: balance; }
.public-hero p { max-width: 900px; margin: 12px auto 0; line-height: 1.8; }
.public-hero a { color: #ffe1a8; text-underline-offset: 3px; }
.public-hero__links { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 18px; margin-top: 20px; }
.public-wrap { width: min(calc(100% - 40px), 1120px); margin: 0 auto; padding: clamp(30px, 4vw, 48px) 0 clamp(56px, 7vw, 84px); }
.public-card, .public-notice, .public-empty { background: var(--public-card); border: 1px solid var(--public-border); border-radius: 16px; box-shadow: 0 14px 34px rgba(16, 43, 58, .06); }
.public-card { padding: clamp(20px, 3vw, 26px); }
.public-notice { padding: 18px 20px; border-left: 5px solid var(--public-gold); background: #fff9eb; line-height: 1.75; }
.public-empty { padding: clamp(34px, 6vw, 58px) 24px; text-align: center; }
.public-filter { display: flex; flex-wrap: wrap; align-items: end; gap: 14px; margin: 22px 0 26px; padding: 20px; background: #fff; border: 1px solid var(--public-border); border-radius: 16px; }
.public-field { flex: 1 1 260px; min-width: 0; }
.public-field label { display: block; margin-bottom: 7px; font-weight: 700; color: var(--public-ink); }
.public-control { display: block; width: 100%; min-height: 46px; padding: 10px 12px; border: 1px solid #aeb9c6; border-radius: 10px; background: #fff; color: var(--public-ink); font: inherit; line-height: 1.45; box-sizing: border-box; }
.public-control:focus { outline: none; border-color: var(--public-blue); box-shadow: 0 0 0 3px rgba(26, 55, 104, .15); }
.public-filter .btn { min-height: 46px; margin: 0; }
.public-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(290px, 100%), 1fr)); gap: 20px; }
.public-grid .public-card { display: flex; min-width: 0; flex-direction: column; }
.public-card h2, .public-card h3 { color: #102b4f; }
.public-card p { line-height: 1.75; }
.public-meta { color: var(--public-muted); overflow-wrap: anywhere; }
.public-badge { display: inline-block; width: max-content; max-width: 100%; padding: 6px 11px; border-radius: 999px; background: #e7f7ee; color: #17633b; font-size: .86rem; font-weight: 700; }
.public-actions { display: flex; flex-wrap: wrap; gap: 10px; }
@media (max-width: 640px) {
    .public-wrap { width: min(calc(100% - 28px), 1120px); }
    .public-filter { align-items: stretch; }
    .public-filter .btn { width: 100%; justify-content: center; }
    .public-hero__links { flex-direction: column; align-items: center; }
}
