/* Final portal visual hardening: independent topbar/navbar/button contrast. */
.portal-public {
  color: #1f2937;
  background: var(--portal-background-color, var(--portal-background, #f6f8fb));
}
.portal-public .library-topbar {
  background: var(--portal-topbar-color, #102a43);
  color: var(--portal-topbar-text, #fff);
}
.portal-public .library-navbar {
  background: var(--portal-navbar-color, var(--portal-primary-color, #1f4e79));
  color: var(--portal-navbar-text, #fff);
}
.portal-public .library-navbar .nav-link {
  color: var(--portal-navbar-text, #fff);
}
.portal-public .library-navbar .nav-link:hover,
.portal-public .library-navbar .nav-link:focus {
  color: var(--portal-navbar-hover-text, var(--portal-navbar-text, #fff));
  background: color-mix(in srgb, var(--portal-navbar-text, #fff) 12%, transparent);
}
.portal-public .library-navbar .nav-link.active,
.portal-public .library-navbar .nav-link[aria-current="page"] {
  color: var(--portal-navbar-active-text, var(--portal-navbar-text, #fff));
  background: color-mix(in srgb, var(--portal-navbar-text, #fff) 16%, transparent);
  box-shadow: inset 0 -3px 0 var(--portal-accent-color, #f0ad4e);
}
.portal-public .library-navbar .dropdown-menu {
  background: var(--portal-navbar-color, #fff);
  border-color: color-mix(in srgb, var(--portal-navbar-text, #111827) 15%, transparent);
}
.portal-public .library-navbar .dropdown-item {
  color: var(--portal-navbar-color-text, var(--portal-navbar-text, #111827));
}
.portal-public .library-navbar .dropdown-item:hover,
.portal-public .library-navbar .dropdown-item:focus {
  color: var(--portal-navbar-hover-text, #111827);
  background: color-mix(in srgb, var(--portal-navbar-text, #111827) 10%, transparent);
}
.portal-public .btn-primary {
  color: var(--portal-button-text, #fff);
  background-color: var(--portal-primary-color, #1f4e79);
  border-color: var(--portal-primary-color, #1f4e79);
}
.portal-public .btn-primary:hover,
.portal-public .btn-primary:focus-visible {
  color: var(--portal-button-hover-text, #fff);
  background-color: var(--portal-secondary-color, #2f75b5);
  border-color: var(--portal-secondary-color, #2f75b5);
}
.portal-public .btn-outline-primary {
  color: var(--portal-primary-color, #1f4e79);
  border-color: var(--portal-primary-color, #1f4e79);
  background: transparent;
}
.portal-public .btn-outline-primary:hover,
.portal-public .btn-outline-primary:focus-visible {
  color: var(--portal-primary-color-text, #fff);
  background-color: var(--portal-primary-color, #1f4e79);
  border-color: var(--portal-primary-color, #1f4e79);
}
.portal-public .btn-outline-secondary { color:#495057; border-color:#6c757d; }
.portal-public .btn-outline-secondary:hover,.portal-public .btn-outline-secondary:focus-visible { color:#fff; background:#6c757d; border-color:#6c757d; }
.portal-public .btn-outline-success { color:#146c43; border-color:#198754; }
.portal-public .btn-outline-success:hover,.portal-public .btn-outline-success:focus-visible { color:#fff; background:#198754; border-color:#198754; }
.portal-public .btn-outline-danger { color:#b02a37; border-color:#dc3545; }
.portal-public .btn-outline-danger:hover,.portal-public .btn-outline-danger:focus-visible { color:#fff; background:#dc3545; border-color:#dc3545; }
.portal-public .btn-outline-warning { color:#664d03; border-color:#ffc107; }
.portal-public .btn-outline-warning:hover,.portal-public .btn-outline-warning:focus-visible { color:#111827; background:#ffc107; border-color:#ffc107; }
.portal-public .btn-outline-info { color:#087990; border-color:#0dcaf0; }
.portal-public .btn-outline-info:hover,.portal-public .btn-outline-info:focus-visible { color:#111827; background:#0dcaf0; border-color:#0dcaf0; }
.portal-public .btn-outline-purple { color:#6f42c1; border-color:#6f42c1; background:transparent; }
.portal-public .btn-outline-purple:hover,.portal-public .btn-outline-purple:focus-visible { color:#fff; background:#6f42c1; border-color:#6f42c1; }
.portal-public .portal-hero-image,
.portal-public .home-hero.portal-hero-image {
  background-image: linear-gradient(135deg, rgba(8,24,40,.82), rgba(8,24,40,.48)), var(--portal-hero-background, none);
}
.portal-public .portal-page { min-width:0; overflow-wrap:anywhere; }
.portal-public .card, .portal-public .table-responsive, .portal-public .alert { min-width:0; }
@supports not (background: color-mix(in srgb, black 10%, white)) {
  .portal-public .library-navbar .nav-link:hover,
  .portal-public .library-navbar .nav-link:focus { background: rgba(255,255,255,.12); }
  .portal-public .library-navbar .nav-link.active { background: rgba(255,255,255,.16); }
}
@media (max-width: 991.98px) {
  .portal-public .library-navbar .navbar-collapse { max-height: calc(100vh - 70px); overflow-y:auto; }
  .portal-public .library-navbar .navbar-nav { padding-bottom:.5rem; }
}


/* Final hero contrast and vertical-flow hardening.
 * Hero imagery is intentionally darkened, therefore all hero copy must be light.
 * Keep the first content block in normal flow so headers, context bars and heroes
 * cannot overlap when the navbar changes state.
 */
.portal-public .portal-hero-image,
.portal-public .portal-hero-image h1,
.portal-public .portal-hero-image h2,
.portal-public .portal-hero-image h3,
.portal-public .portal-hero-image h4,
.portal-public .portal-hero-image h5,
.portal-public .portal-hero-image h6,
.portal-public .portal-hero-image p,
.portal-public .portal-hero-image .lead,
.portal-public .portal-hero-image .eyebrow,
.portal-public .portal-hero-image .text-body-secondary,
.portal-public .portal-hero-image .small,
.portal-public .portal-hero-image label {
  color: #fff !important;
}
.portal-public .portal-hero-image .text-white-50,
.portal-public .portal-hero-image .text-body-secondary {
  color: rgba(255,255,255,.88) !important;
}
.portal-public .portal-hero-image .eyebrow {
  letter-spacing: .12em;
  font-weight: 800;
}
.portal-public .portal-hero-image .container {
  padding-top: clamp(2.75rem, 6vw, 5rem);
  padding-bottom: clamp(2.75rem, 6vw, 5rem);
}
.portal-public .home-hero.portal-hero-image {
  min-height: clamp(480px, 58vh, 680px);
  display: flex;
  align-items: center;
}
.portal-public .home-hero.portal-hero-image .container {
  width: 100%;
}
.portal-public .portal-hero-image .hero-feature-card,
.portal-public .portal-hero-image .hero-feature-card h1,
.portal-public .portal-hero-image .hero-feature-card h2,
.portal-public .portal-hero-image .hero-feature-card h3,
.portal-public .portal-hero-image .hero-feature-card p,
.portal-public .portal-hero-image .hero-feature-card .small,
.portal-public .portal-hero-image .hero-feature-card .text-body-secondary {
  color: var(--library-text, #1f2937) !important;
}
@media (max-width: 575.98px) {
  .portal-public .portal-hero-image .container {
    padding-top: 2.5rem;
    padding-bottom: 2.5rem;
  }
  .portal-public .home-hero.portal-hero-image {
    min-height: 0;
  }
}
