/* =====================================================================
   Public Website styles - reuses the CSS variables/tokens defined in
   style.css (loaded first). Keep this file focused on the citizen-facing
   site only; dashboard/admin styling stays in style.css.
   ===================================================================== */

.site-body { background: var(--paper); }

.site-topbar {
    position: sticky; top: 0; z-index: 40;
    background: var(--navy-900);
    box-shadow: var(--shadow-md);
}
.site-topbar-inner {
    max-width: 1180px; margin: 0 auto; padding: 14px 24px;
    display: flex; align-items: center; justify-content: space-between; gap: 20px;
}
.site-brand { display:flex; align-items:center; gap:12px; }
.site-brand .brand-text strong { color:#fff; font-family: var(--font-display); font-size:16px; display:block; }
.site-brand .brand-text span { color:#9fb2c2; font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; }

.site-nav { display:flex; align-items:center; gap:22px; }
.site-nav a { color:#c9d6e0; font-weight:600; font-size:13.5px; padding:6px 2px; border-bottom:2px solid transparent; }
.site-nav a:hover, .site-nav a.active { color:#fff; border-bottom-color: var(--red); }
.site-nav a.site-login-btn { color:#fff; border-bottom:none; padding:8px 16px; }

.site-nav-toggle {
    display:none; background:none; border:0; color:#fff; cursor:pointer; padding:6px;
}

.site-maintenance-banner {
    background: var(--amber-soft); color: var(--amber); text-align:center;
    padding: 10px 16px; font-size: 13.5px; font-weight:600;
}

.site-main { max-width: 1180px; margin: 0 auto; padding: 0 24px 60px; }

/* ---- Hero ---- */
.site-hero {
    background: linear-gradient(135deg, var(--navy-900), var(--navy-700) 75%);
    color: #fff; border-radius: var(--radius);
    margin: 28px 0 40px; padding: 64px 40px;
    text-align:center;
}
.site-hero h1 { color:#fff; font-size: 32px; max-width: 760px; margin: 0 auto 14px; }
.site-hero p { color:#c9d6e0; font-size:15px; max-width:600px; margin:0 auto 26px; }
.site-hero .btn { margin: 0 6px; }

/* ---- Section headings ---- */
.site-section { margin-bottom: 48px; }
.site-section-head { display:flex; align-items:baseline; justify-content:space-between; margin-bottom:18px; flex-wrap:wrap; gap:10px; }
.site-section-head h2 { font-size:22px; }
.site-section-head a { font-size:13px; font-weight:700; color: var(--navy-700); }

/* ---- Cards grid (news / gallery) ---- */
.site-grid { display:grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap:20px; }

.site-card {
    background: var(--paper-card); border:1px solid var(--border); border-radius: var(--radius);
    overflow:hidden; box-shadow: var(--shadow-sm); display:flex; flex-direction:column;
}
.site-card-img { width:100%; height:160px; object-fit:cover; background: var(--gray-soft); display:block; }
.site-card-img-placeholder {
    width:100%; height:160px; background: linear-gradient(135deg, var(--navy-700), var(--navy-600));
    display:flex; align-items:center; justify-content:center; color:#fff; font-family: var(--font-display); font-size:14px;
}
.site-card-body { padding:16px 18px; flex:1; display:flex; flex-direction:column; }
.site-card-date { font-size:11px; color: var(--ink-soft); text-transform:uppercase; letter-spacing:.04em; margin-bottom:6px; }
.site-card h3 { font-size:15.5px; margin-bottom:8px; }
.site-card p { font-size:13px; color: var(--ink-soft); flex:1; }
.site-card .read-more { font-size:12.5px; font-weight:700; color: var(--navy-700); margin-top:10px; display:inline-block; }

/* ---- Announcements list ---- */
.site-announce { border-left:4px solid var(--red); background: var(--paper-card); border-radius: var(--radius);
    padding:16px 20px; margin-bottom:14px; box-shadow: var(--shadow-sm); }
.site-announce h3 { font-size:14.5px; margin-bottom:6px; }
.site-announce p { font-size:13px; color: var(--ink-soft); margin:0 0 6px; }
.site-announce .site-card-date { margin:0; }

/* ---- Quick links / stat strip ---- */
.site-quicklinks { display:grid; grid-template-columns: repeat(auto-fit, minmax(220px,1fr)); gap:16px; margin: 8px 0 44px; }
.site-quicklink { background: var(--paper-card); border:1px solid var(--border); border-radius: var(--radius);
    padding:20px; text-align:center; box-shadow: var(--shadow-sm); }
.site-quicklink .icon { font-size:26px; margin-bottom:8px; }
.site-quicklink h3 { font-size:14px; margin-bottom:4px; }
.site-quicklink p { font-size:12.5px; color: var(--ink-soft); margin:0; }

/* ---- Gallery ---- */
.site-gallery-item img { width:100%; height:190px; object-fit:cover; display:block; }
.site-gallery-item .site-card-body { padding:12px 14px; }

/* ---- About / static pages ---- */
.site-page-head { padding: 40px 0 18px; }
.site-page-head h1 { font-size:26px; }
.site-prose { font-size:14.5px; line-height:1.8; color: var(--ink); max-width: 780px; }
.site-prose p { margin: 0 0 16px; }

.site-contact-grid { display:grid; grid-template-columns: 1.1fr 1fr; gap:32px; align-items:start; }
.site-contact-info .card { padding: 20px; }
.site-contact-info h3 { font-size:14px; margin: 18px 0 4px; }
.site-contact-info h3:first-child { margin-top:0; }
.site-contact-info p { font-size:13.5px; color: var(--ink-soft); margin:0; }

/* ---- Footer ---- */
.site-footer { background: var(--navy-900); color:#c9d6e0; margin-top: 40px; }
.site-footer-inner {
    max-width:1180px; margin:0 auto; padding: 44px 24px 28px;
    display:grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap:32px;
}
.site-footer .brand-text strong { color:#fff; }
.site-footer-col h3 { color:#fff; font-size:13px; text-transform:uppercase; letter-spacing:.05em; margin-bottom:12px; }
.site-footer-col p { font-size:13px; margin:0 0 8px; color:#9fb2c2; }
.site-footer-col a { display:block; font-size:13px; color:#c9d6e0; margin-bottom:9px; }
.site-footer-col a:hover { color:#fff; }
.site-footer-bottom { border-top:1px solid rgba(255,255,255,0.08); text-align:center; padding:16px; font-size:12px; color:#8399a9; }

@media (max-width: 900px) {
    .site-footer-inner { grid-template-columns: 1fr 1fr; }
    .site-contact-grid { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
    .site-nav-toggle { display:block; }
    .site-nav {
        position:absolute; top:100%; left:0; right:0; background: var(--navy-900);
        flex-direction:column; align-items:flex-start; padding: 10px 24px 18px; gap:14px;
        display:none;
    }
    .site-nav.open { display:flex; }
    .site-hero { padding: 44px 22px; }
    .site-footer-inner { grid-template-columns: 1fr; }
}
