@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Source+Serif+4:wght@600;700&display=swap");

:root {
    --portal-primary: #1261a6;
    --portal-primary-dark: #0b3158;
    --portal-accent: #f59e0b;
    --portal-bg: #f5f7fb;
    --portal-text: #1f2937;
    --portal-muted: #64748b;
    --portal-border: #dfe7f1;
    --portal-font-modern: "Inter", "Segoe UI", Arial, sans-serif;
    --portal-font-classic: "Source Serif 4", Georgia, serif;
}

html {
    min-height: 100%;
    scroll-behavior: smooth;
}

body {
    min-height: 100vh;
    margin: 0;
    overflow-x: hidden;
    color: var(--portal-text);
    background: var(--portal-bg);
    font-family: var(--portal-font-modern);
    font-size: 1rem;
    line-height: 1.6;
}

a {
    color: var(--portal-primary);
    text-decoration: none;
}

a:hover {
    color: var(--portal-primary-dark);
}

a:focus-visible,
button:focus-visible,
.form-control:focus,
.form-select:focus {
    outline: 3px solid rgba(18, 97, 166, .24);
    outline-offset: 2px;
}

.top-bar {
    color: #d9e8f5;
    background: var(--portal-primary-dark);
    font-size: .875rem;
}

.top-bar a {
    color: #fff;
}

.portal-navbar {
    background: #fff;
    border-bottom: 1px solid var(--portal-border);
    box-shadow: 0 4px 18px rgba(15, 23, 42, .05);
}

.portal-brand {
    display: inline-flex;
    align-items: center;
    gap: .65rem;
    color: var(--portal-primary-dark);
    font-size: 1.1rem;
    font-weight: 800;
}

.brand-mark {
    display: inline-grid;
    width: 2.35rem;
    height: 2.35rem;
    place-items: center;
    color: #fff;
    background: var(--portal-primary);
    border-radius: .7rem;
}

.nav-link {
    color: #334155;
    font-weight: 600;
}

.nav-link:hover,
.nav-link:focus {
    color: var(--portal-primary);
}

.btn-primary {
    background: var(--portal-primary);
    border-color: var(--portal-primary);
}

.btn-primary:hover,
.btn-primary:focus {
    background: #0e4f88;
    border-color: #0e4f88;
}

.page-shell {
    min-height: calc(100vh - 315px);
}

.hero-section {
    padding: 5rem 0;
    color: #fff;
    background: var(--portal-primary-dark);
}

.hero-section h1 {
    max-width: 760px;
    font-weight: 800;
    letter-spacing: -.03em;
}

.hero-section .lead {
    max-width: 680px;
    color: #d5e5f4;
}

.section-space {
    padding: 4.5rem 0;
}

.portal-card {
    height: 100%;
    padding: 1.5rem;
    background: #fff;
    border: 1px solid var(--portal-border);
    border-radius: 1rem;
    box-shadow: 0 12px 30px rgba(15, 23, 42, .05);
}

.auth-section {
    padding: 3rem 0 5rem;
}

.auth-card {
    overflow: hidden;
    background: #fff;
    border: 1px solid var(--portal-border);
    border-radius: 1.1rem;
    box-shadow: 0 18px 45px rgba(15, 23, 42, .1);
}

.auth-card-header {
    padding: 1.8rem 2rem;
    color: #fff;
    background: var(--portal-primary-dark);
}

.auth-card-body {
    padding: 2rem;
}

.form-label {
    margin-bottom: .45rem;
    color: #334155;
    font-weight: 650;
}

.form-control,
.form-select {
    min-height: 46px;
    border-color: #cbd5e1;
    border-radius: .65rem;
}

.field-validation-error,
.validation-summary-errors {
    color: #b42318;
    font-size: .875rem;
}

.validation-summary-errors ul {
    margin-bottom: 0;
}

.portal-footer {
    color: #cbd5e1;
    background: #071f36;
}

.portal-footer h2,
.portal-footer h3 {
    color: #fff;
}

.portal-footer a {
    color: #dce8f3;
}

.portal-footer a:hover {
    color: #fff;
}

.portal-message-host {
    position: fixed;
    z-index: 2000;
    top: 1rem;
    right: 1rem;
    width: min(380px, calc(100vw - 2rem));
}

.loading-overlay {
    position: fixed;
    z-index: 2100;
    inset: 0;
    display: grid;
    place-items: center;
    background: rgba(7, 31, 54, .42);
    backdrop-filter: blur(2px);
}

.loading-card {
    display: flex;
    align-items: center;
    gap: .8rem;
    padding: 1rem 1.25rem;
    color: var(--portal-primary-dark);
    background: #fff;
    border-radius: .8rem;
    box-shadow: 0 15px 40px rgba(15, 23, 42, .2);
    font-weight: 700;
}

.badge-soft-primary {
    color: #0b4d86;
    background: #e6f2fc;
}

@media (max-width: 991.98px) {
    .portal-navbar .navbar-collapse {
        padding: 1rem 0;
    }

    .portal-navbar .navbar-nav {
        gap: .25rem;
    }

    .hero-section {
        padding: 3.5rem 0;
    }
}

@media (max-width: 575.98px) {
    body {
        font-size: .95rem;
    }

    .top-bar .social-links {
        display: none;
    }

    .auth-card-header,
    .auth-card-body {
        padding: 1.35rem;
    }

    .section-space {
        padding: 3rem 0;
    }
}

/* Phase 5 public portal */
.public-hero{padding-bottom:6rem}.hero-search-card{background:#fff;border-radius:1rem;box-shadow:0 22px 55px rgba(7,31,54,.2);color:var(--portal-text);padding:1.25rem}.section-heading{align-items:end;display:flex;gap:1rem;justify-content:space-between;margin-bottom:1.75rem}.section-heading h2{margin:0}.eyebrow{color:var(--portal-primary);display:block;font-size:.78rem;font-weight:800;letter-spacing:.12em;margin-bottom:.45rem;text-transform:uppercase}.category-card{align-items:center;background:#fff;border:1px solid var(--portal-border);border-radius:.85rem;color:var(--portal-text);display:flex;gap:1rem;height:100%;padding:1.1rem;text-decoration:none;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.category-card:hover{border-color:#9bc5eb;box-shadow:0 12px 30px rgba(15,61,97,.09);transform:translateY(-2px)}.category-card strong,.category-card small{display:block}.category-card small{color:var(--portal-muted);margin-top:.25rem}.category-icon{align-items:center;background:#e8f3fc;border-radius:.75rem;color:var(--portal-primary);display:flex;font-size:1.2rem;height:48px;justify-content:center;width:48px}.public-job-card{background:#fff;border:1px solid var(--portal-border);border-radius:1rem;padding:1.35rem;transition:border-color .2s ease,box-shadow .2s ease}.public-job-card:hover{border-color:#a9cdeb;box-shadow:0 14px 35px rgba(15,61,97,.08)}.public-job-card h2 a,.public-job-card h3 a,.compact-job-card a{color:var(--portal-primary-dark);text-decoration:none}.company-logo-sm{background:#fff;border:1px solid var(--portal-border);border-radius:.75rem;height:64px;object-fit:contain;padding:.35rem;width:64px}.job-meta{display:flex;flex-wrap:wrap;gap:.65rem 1.25rem}.job-meta span{color:#475569;font-size:.9rem}.job-meta i{color:var(--portal-primary);margin-right:.4rem}.job-card-footer{align-items:center;border-top:1px solid #e9eef3;display:flex;justify-content:space-between;margin-top:1rem;padding-top:1rem}.compact-job-card{background:#fff;border:1px solid var(--portal-border);border-radius:.85rem;height:100%;padding:1.1rem}.mini-job-row{align-items:center;border-top:1px solid #e9eef3;color:var(--portal-text);display:flex;gap:1rem;justify-content:space-between;padding:1rem 0;text-decoration:none}.mini-job-row strong,.mini-job-row small{display:block}.mini-job-row small{color:var(--portal-muted);margin-top:.25rem}.company-card-public{align-items:center;background:#fff;border:1px solid var(--portal-border);border-radius:.85rem;color:var(--portal-text);display:flex;gap:1rem;height:100%;padding:1rem;text-decoration:none}.company-card-public img{border-radius:.6rem;height:64px;object-fit:contain;width:64px}.company-card-public strong,.company-card-public small{display:block}.company-card-public small{color:var(--portal-muted);margin-top:.2rem}.link-chip-grid{display:grid;gap:.7rem;grid-template-columns:repeat(2,minmax(0,1fr))}.link-chip-grid a{align-items:center;background:#f8fafc;border:1px solid var(--portal-border);border-radius:.65rem;color:var(--portal-text);display:flex;justify-content:space-between;padding:.75rem 1rem;text-decoration:none}.link-chip-grid strong{color:var(--portal-primary)}.stats-band{background:#082f4e}.stat-tile{color:#fff;text-align:center}.stat-tile strong{display:block;font-size:2.35rem}.stat-tile span{color:#c8dae8}.step-card{background:#fff;border:1px solid var(--portal-border);border-radius:1rem;height:100%;padding:1.5rem;position:relative}.step-card>span{align-items:center;background:var(--portal-primary);border-radius:50%;color:#fff;display:flex;font-weight:800;height:32px;justify-content:center;position:absolute;right:1rem;top:1rem;width:32px}.step-card>i{color:var(--portal-primary);font-size:2rem;margin-bottom:1rem}.step-card h3{font-size:1.15rem}.step-card p{color:var(--portal-muted);margin:0}.testimonial-card{background:#fff;border:1px solid var(--portal-border);border-radius:1rem;height:100%;margin:0;padding:1.35rem}.quote-icon{color:#8bbce4;font-size:1.5rem}.testimonial-card blockquote{margin:1rem 0}.testimonial-card figcaption strong,.testimonial-card figcaption span,.testimonial-card figcaption small{display:block}.testimonial-card figcaption span,.testimonial-card figcaption small{color:var(--portal-muted);font-size:.85rem;margin-top:.15rem}.blog-card-public{background:#fff;border:1px solid var(--portal-border);border-radius:1rem;overflow:hidden}.blog-image-placeholder{align-items:center;background:#e8f3fc;color:var(--portal-primary);display:flex;font-size:2rem;height:160px;justify-content:center}.empty-public-state{background:#fff;border:1px dashed #b7c8d8;border-radius:1rem;color:var(--portal-muted);margin-top:1rem;padding:2.5rem;text-align:center}.newsletter-section{background:#082f4e;padding:3.5rem 0}.employer-cta{background:#eaf4fc;padding:3.5rem 0}.filter-card{background:#fff;border:1px solid var(--portal-border);border-radius:1rem;padding:1.15rem}.filter-checks{display:grid;gap:.5rem}.public-page-hero{background:#0b3e66;color:#fff;padding:3rem 0}.public-page-hero h1{font-size:2.5rem}.public-page-hero p{color:#d0dfeb;margin-bottom:0}.public-page-hero .eyebrow{color:#77d4f4}.job-detail-header{background:#fff;border:1px solid var(--portal-border);border-radius:1rem;padding:1.5rem}.company-logo-lg{background:#fff;border:1px solid var(--portal-border);border-radius:.85rem;height:110px;object-fit:contain;padding:.5rem;width:110px}.job-meta-large{gap:.85rem 1.5rem}.job-actions{display:flex;flex-direction:column;gap:.75rem;min-width:190px}.pre-line{white-space:pre-line}.job-detail-list dt{color:#334155;margin-top:1rem}.job-detail-list dd{color:var(--portal-muted);margin-bottom:0}.job-summary-card{top:1rem}.company-directory-card{background:#fff;border:1px solid var(--portal-border);border-radius:1rem;display:flex;flex-direction:column;overflow:hidden}.company-card-cover{background:linear-gradient(135deg,#dceffc,#eef7fd);height:82px}.company-card-body{display:flex;flex:1;flex-direction:column;padding:1.25rem;padding-top:0}.company-card-body>img{background:#fff;border:1px solid var(--portal-border);border-radius:.75rem;height:72px;margin-top:-36px;object-fit:contain;padding:.4rem;width:72px}.company-card-body h2{margin-top:.85rem}.company-profile-header{background:#fff;border:1px solid var(--portal-border);border-radius:1rem;overflow:hidden}.company-profile-cover{background:#e8f3fc;height:230px;object-fit:cover;width:100%}.company-profile-intro{align-items:end;display:flex;gap:1.5rem;padding:0 1.5rem 1.5rem}.company-logo-xl{background:#fff;border:1px solid var(--portal-border);border-radius:1rem;height:130px;margin-top:-55px;object-fit:contain;padding:.6rem;width:130px}.branch-address{border-bottom:1px solid #e9eef3;font-style:normal;padding-bottom:1rem}.branch-address:last-child{border-bottom:0;margin-bottom:0}.article-shell{background:#fff;border:1px solid var(--portal-border);border-radius:1rem;margin:auto;max-width:900px;padding:clamp(1.5rem,4vw,4rem)}.cms-content{line-height:1.8}.cms-content img{height:auto;max-width:100%}
@media (max-width:991.98px){.public-hero{padding-bottom:4rem}.job-actions{min-width:0}.company-profile-intro{align-items:flex-start;flex-direction:column}.company-logo-xl{margin-top:-55px}}
@media (max-width:575.98px){.hero-search-card{padding:1rem}.section-heading{align-items:flex-start;flex-direction:column}.link-chip-grid{grid-template-columns:1fr}.public-job-card{padding:1rem}.company-logo-sm{height:52px;width:52px}.job-card-footer{align-items:flex-start;gap:.75rem}.company-logo-lg{height:82px;width:82px}.company-profile-cover{height:150px}.company-profile-intro{padding:0 1rem 1rem}.company-logo-xl{height:100px;width:100px}.public-page-hero h1{font-size:2rem}}

/* Phase 10 public content */
.content-page-section{padding:4rem 0}.content-page-card{background:#fff;border:1px solid var(--portal-border);border-radius:1rem;padding:clamp(1.4rem,4vw,3rem)}.content-page-card>h1{margin-bottom:1.5rem}.content-card-image{aspect-ratio:16/9;display:block;object-fit:cover;width:100%}.article-featured-image{border-radius:1rem;max-height:480px;object-fit:cover;width:100%}.contact-detail{align-items:flex-start;border-top:1px solid var(--portal-border);display:flex;gap:1rem;padding:1.1rem 0}.contact-detail i{align-items:center;background:#e8f3fc;border-radius:.7rem;color:var(--portal-primary);display:flex;height:42px;justify-content:center;width:42px}.cms-banner{background:#082f4e;border-radius:1.2rem;color:#fff;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(300px,.9fr);min-height:300px;overflow:hidden}.cms-banner>img{height:100%;min-height:300px;object-fit:cover;width:100%}.cms-banner-content{align-self:center;padding:clamp(1.5rem,4vw,3rem)}.cms-banner-content p{color:#d0dfeb}.cms-banner+.cms-banner{margin-top:1.5rem}@media(max-width:767.98px){.content-page-section{padding:2.5rem 0}.cms-banner{grid-template-columns:1fr}.cms-banner>img{min-height:190px}.cms-banner-content{padding:1.5rem}}

/* Compact modern-classic theme shared by the public site and dashboards. */
body {
    font-size: .94rem;
    line-height: 1.45;
}

h1,
h2,
.display-4,
.display-5,
.display-6 {
    font-family: var(--portal-font-classic);
    letter-spacing: -.018em;
}

h3,
h4,
h5,
h6,
.btn,
.nav-link,
.form-label {
    font-family: var(--portal-font-modern);
}

.top-bar {
    padding-top: .3rem !important;
    padding-bottom: .3rem !important;
}

.portal-navbar .container {
    padding-top: .4rem !important;
    padding-bottom: .4rem !important;
}

.portal-brand {
    gap: .5rem;
    font-size: 1rem;
}

.brand-mark {
    width: 2rem;
    height: 2rem;
    border-radius: .5rem;
}

.btn {
    padding: .42rem .72rem;
    border-radius: .48rem;
    font-size: .9rem;
}

.form-control,
.form-select {
    min-height: 40px;
    border-radius: .5rem;
    font-size: .92rem;
}

.form-label {
    margin-bottom: .25rem;
}

.hero-section {
    padding: 3rem 0;
}

.public-hero {
    padding-bottom: 3.5rem;
}

.section-space,
.content-page-section {
    padding: 2.5rem 0;
}

.public-page-hero {
    padding: 2rem 0;
}

.public-page-hero h1 {
    font-size: 2.15rem;
}

.portal-card,
.public-job-card,
.compact-job-card,
.filter-card,
.step-card,
.testimonial-card {
    padding: 1rem;
    border-radius: .75rem;
    box-shadow: 0 6px 18px rgba(15, 23, 42, .045);
}

.auth-section {
    padding: 1.75rem 0 2.5rem;
}

.auth-card-header,
.auth-card-body {
    padding: 1.15rem 1.25rem;
}

.section-heading {
    margin-bottom: 1rem;
}

.hero-search-card {
    padding: 1rem;
}

.content-page-card {
    padding: clamp(1rem, 2.5vw, 1.75rem);
}

.portal-footer {
    padding-top: 2rem !important;
    padding-bottom: 1rem !important;
}

.portal-footer .row.g-4,
.row.g-4 {
    --bs-gutter-x: 1rem;
    --bs-gutter-y: 1rem;
}

.portal-footer hr {
    margin-top: 1.25rem !important;
    margin-bottom: 1rem !important;
}

@media (max-width: 575.98px) {
    .hero-section,
    .section-space,
    .content-page-section {
        padding: 2rem 0;
    }

    .auth-card-header,
    .auth-card-body,
    .public-job-card,
    .portal-card {
        padding: .9rem;
    }
}
