/* ==========================================================================
   National Broadcast Academy — Public Website
   Design tokens: studio-dark (navbar / hero / footer), warm-paper content,
   broadcast-red accent (#E10E2D), Anton display type, waveform signature.
   ========================================================================== */

/* ═══════════════════════════════════════════ Tokens */
:root {
  /* ── NBA Brand Palette (updated) ── */
  --nba-brand:             #6b1e4a;
  --nba-brand-dim:         #521639;
  --nba-brand-light:       rgba(107,30,74,.10);

  --nba-studio:            #32183f;   /* navbar, hero, dark sections */
  --nba-panel:             #3a1f47;   /* raised panels on dark bg */
  --nba-panel-line:        rgba(255,245,255,.10);
  --nba-deeper:            #251839;   /* footer, overlays */

  /* maps for backward compatibility */
  --nba-red:               #6b1e4a;
  --nba-red-dim:           #521639;
  --nba-on-air:            #b8265e;
  --nba-amber:             #c9962a;

  --nba-paper:             #fff5ff;
  --nba-paper-alt:         #efebe2;
  --nba-body:              #3b3b47;
  --nba-body-dim:          #6b6b77;
  --nba-line:              rgba(59,59,71,.14);
  --nba-text-on:           #fff5ff;
  --nba-text-on-dim:       rgba(255,245,255,.68);
  --nba-text-onstudio-dim: rgba(255,245,255,.55);

  /* Typography */
  --font-display: 'Anton', 'Arial Narrow', sans-serif;
  --font-body:    'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-mono:    'JetBrains Mono', 'Space Mono', ui-monospace, monospace;

  /* Spacing & shape */
  --radius:    4px;
  --radius-lg: 10px;
  --section-py: 4.5rem;
}
/* ═══════════════════════════════════════════ Reset / Base */
@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }
}

body.nba-body {
  font-family: var(--font-body);
  color: var(--nba-body);
  background-color: var(--nba-paper);
  -webkit-font-smoothing: antialiased;
}

.nba-body a { text-decoration: none; color: inherit; }

/* ═══════════════════════════════════════════ Display type */
.nba-display {
  font-family: var(--font-display);
  text-transform: uppercase;
  letter-spacing: .01em;
  line-height: .96;
}

.nba-eyebrow {
  font-family: var(--font-mono);
  font-size: .72rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  font-weight: 600;
}
.nba-eyebrow--red    { color: var(--nba-red); }
.nba-eyebrow--amber  { color: var(--nba-amber); }
.nba-eyebrow--onstudio { color: var(--nba-text-on-dim); }

.nba-meta {
  font-family: var(--font-mono);
  font-size: .74rem;
  color: var(--nba-body-dim);
}
.nba-tag {
  font-family: var(--font-mono);
  font-size: .66rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--nba-brand);
}
.nba-tag.pinned { color: var(--nba-amber); }

/* ═══════════════════════════════════════════ Buttons */
.nba-btn {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  font-family: var(--font-mono);
  font-size: .8rem;
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: uppercase;
  padding: .76rem 1.5rem;
  border-radius: var(--radius);
  border: 1.5px solid transparent;
  cursor: pointer;
  transition: transform .15s ease, background-color .15s ease,
              color .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.nba-btn:hover  { transform: none; }
.nba-btn:active { transform: none; }


/* Hero section buttons — solid brand on dark hero */
.nba-btn--hero-solid {
  background: var(--nba-brand);
  color: #fff;
  border: 1.5px solid transparent;
}
.nba-btn--hero-solid:hover  { background: var(--nba-brand-dim); color: #fff; }
.nba-btn--hero-solid:focus  { outline: 2px solid var(--nba-amber); outline-offset: 2px; }
.nba-btn--hero-solid:active { background: var(--nba-brand-dim); }

.nba-btn--solid,
.nba-btn--solid:link,
.nba-btn--solid:visited {
  background: var(--nba-red);
  color: #fff !important;
}
.nba-btn--solid:hover { background: var(--nba-red-dim); color: #fff !important; }

.nba-btn--outline-dark {
  border-color: rgba(58,61,69,.28); color: var(--nba-body);
}
.nba-btn--outline-dark:hover {
  border-color: var(--nba-body);
  background: rgba(58,61,69,.06);
  color: var(--nba-body);
}

.nba-btn--outline-light {
  border-color: rgba(245,243,238,.35); color: var(--nba-text-on);
}
.nba-btn--outline-light:hover {
  border-color: var(--nba-text-on);
  background: rgba(245,243,238,.08);
  color: var(--nba-text-on);
}

.nba-btn--ghost-light {
  background: rgba(245,243,238,.08); color: var(--nba-text-on-dim);
  border-color: transparent;
}
.nba-btn--ghost-light:hover { background: rgba(245,243,238,.15); color: var(--nba-text-on); }

.nba-btn--ghost-dark {
  background: rgba(58,61,69,.06); color: var(--nba-body);
  border-color: transparent;
}
.nba-btn--ghost-dark:hover { background: rgba(58,61,69,.12); color: var(--nba-body); }

/* Focus ring — visible everywhere */
.nba-body a:focus-visible,
.nba-body button:focus-visible,
.nba-body .nav-link:focus-visible {
  outline: 2px solid var(--nba-amber);
  outline-offset: 2px;
}

/* ═══════════════════════════════════════════ Navbar */
.nba-navbar {
  background: var(--nba-studio);
  border-bottom: 1px solid var(--nba-panel-line);
  padding: 1rem 0;
  transition: padding .2s ease, box-shadow .2s ease;
}
.nba-navbar.is-scrolled {
  padding: .4rem 0;
  box-shadow: 0 8px 24px rgba(0,0,0,.35);
}

.nba-navbar .navbar-brand { display: flex; align-items: center; gap: .75rem; padding: 0; flex-shrink: 0; min-width: 0; }
.nba-navbar .navbar-brand img, .nba-nav-logo { height: 58px; width: auto; flex-shrink: 0; display: block; }

.navbar-brand-text {
  display: flex;
  flex-direction: column;
  gap: .06rem;
  min-width: 0;
}
.navbar-brand-text .brand-abbr {
  font-family: var(--font-body);   /* Anton is a headline face, not meant for ~15px text — swapped for a crisp, real-weight font */
  font-size: 1rem;
  font-weight: 700;
  color: var(--nba-text-on);
  letter-spacing: .01em;
  line-height: 1.15;
  white-space: nowrap;
}
.navbar-brand-text small {
  display: block;
  font-family: var(--font-body);
  font-size: .65rem;
  font-weight: 600;
  letter-spacing: .03em;
  color: var(--nba-amber);
  line-height: 1.2;
  white-space: nowrap;
}
.navbar-brand-text small {
  display: block;
  font-family: var(--font-body);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .04em;
  color: var(--nba-amber);
  white-space: nowrap;
}

.nba-navbar .nav-link {
  color: var(--nba-text-on-dim) !important;
  font-family: var(--font-mono);
  font-size: .85rem;
  letter-spacing: .04em;
  text-transform: uppercase;
  padding: .65rem 1.05rem !important;
}
.nba-navbar .nav-link:hover,
.nba-navbar .nav-link.active { color: var(--nba-text-on) !important; }
.nba-navbar .nav-link.active { border-bottom: 2px solid var(--nba-brand); }

.nba-navbar .dropdown-menu {
  background: var(--nba-panel);
  border: 1px solid var(--nba-panel-line);
  border-radius: var(--radius);
  padding: .4rem;
  min-width: 210px;
}
.nba-navbar .dropdown-item {
  color: var(--nba-text-on-dim);
  font-size: .85rem;
  border-radius: var(--radius);
  padding: .55rem .85rem;
  display: flex;
  align-items: center;
  gap: .5rem;
}
.nba-navbar .dropdown-item:hover {
  background: rgba(107,30,74,.25);
  color: var(--nba-text-on);
}
.nba-navbar .navbar-toggler { border-color: var(--nba-panel-line); }

/* Nav CTAs */
.nba-nav-portal {
  font-family: var(--font-mono);
  font-size: .78rem;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--nba-text-on-dim);
  padding: .55rem 1rem;
  border-radius: var(--radius);
  border: 1px solid var(--nba-panel-line);
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  transition: color .15s, border-color .15s;
}
.nba-nav-portal:hover { color: var(--nba-text-on); border-color: rgba(245,243,238,.3); }

.nba-nav-apply {
  background: var(--nba-red);
  color: #fff !important;
  font-family: var(--font-mono);
  font-size: .75rem;
  letter-spacing: .04em;
  text-transform: uppercase;
  padding: .6rem 1.3rem;
  border-radius: var(--radius);
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  transition: background .15s, transform .12s;
}
.nba-nav-apply:hover { background: var(--nba-brand-dim); }

/* On-air pulse badge */
.nba-onair {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  font-family: var(--font-mono);
  font-size: .7rem;
  letter-spacing: .12em;
  font-weight: 700;
  color: var(--nba-on-air);
  border: 1px solid rgba(255,34,34,.45);
  border-radius: 999px;
  padding: .28rem .8rem .28rem .55rem;
}
.nba-onair__dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--nba-on-air);
  animation: nba-pulse 1.8s infinite;
}
@media (prefers-reduced-motion: reduce) { .nba-onair__dot { animation: none; } }
@keyframes nba-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(255,34,34,.55); }
  70%  { box-shadow: 0 0 0 8px rgba(255,34,34,0); }
  100% { box-shadow: 0 0 0 0 rgba(255,34,34,0); }
}

/* ═══════════════════════════════════════════ Hero */
.nba-hero {
  position: relative;
  background: var(--nba-studio);
  background-size: cover;
  background-position: center;
  color: var(--nba-text-on);
  padding: 6.5rem 0 5rem;
  overflow: hidden;
}
.nba-hero::before {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(20,21,26,.72) 0%,
              rgba(37,24,57,.90) 65%, #14151A 100%);
}
.nba-hero__inner { position: relative; z-index: 1; }

.nba-hero-logo { height: 56px; width: auto; }

.nba-hero__title {
  font-size: clamp(2.4rem, 5.5vw, 4.4rem);
  margin: .6rem 0 .5rem;
}
.nba-hero__tagline {
  font-family: var(--font-mono);
  font-size: .9rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--nba-amber);
  margin-bottom: .5rem;
}
.nba-hero__sub {
  color: var(--nba-text-on-dim);
  font-size: 1.05rem;
  max-width: 36rem;
  margin-bottom: 0;
}

.nba-hero-stats {
  display: flex;
  gap: 2.5rem;
  margin-top: 3rem;
  flex-wrap: wrap;
}
.nba-hero-stats .stat-num {
  font-family: var(--font-display);
  font-size: 2rem;
  color: var(--nba-amber);
  line-height: 1;
}
.nba-hero-stats .stat-label {
  font-family: var(--font-mono);
  font-size: .68rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--nba-text-on-dim);
}

/* Page hero (inner pages) */
.nba-page-hero {
  background: var(--nba-studio);
  color: var(--nba-text-on);
  padding: 4rem 0 3rem;
  background-size: cover;
  background-position: center;
  position: relative;
}
.nba-page-hero--dept { min-height: 280px; display: flex; align-items: flex-end; }
.nba-page-hero::before {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(20,21,26,.60), rgba(37,24,57,.92));
}
.nba-page-hero__inner { position: relative; z-index: 1; }
.nba-page-hero h1 {
  font-size: clamp(2rem, 4vw, 3rem);
  margin: .6rem 0 .5rem;
}
.nba-page-hero p {
  color: var(--nba-text-on-dim);
  max-width: 44rem;
  margin-bottom: 0;
}

/* News/Event detail — uploaded image shown inline within the article body,
   never as a background behind the title. Fixed max-height + object-fit
   keeps varied upload aspect ratios from blowing out the layout, while
   width:100% keeps it fully responsive down to mobile. */
.nba-article-image {
  width: 100%;
  max-height: 420px;
  overflow: hidden;
  border-radius: var(--radius-lg);
}
.nba-article-image img {
  width: 100%;
  height: 100%;
  max-height: 420px;
  object-fit: cover;
  display: block;
}
@media (max-width: 767.98px) {
  .nba-article-image { max-height: 260px; }
  .nba-article-image img { max-height: 260px; }
}

/* Programme metadata strip */
.nba-prog-meta-strip {
  display: flex;
  flex-wrap: wrap;
  gap: 1.25rem;
  margin-top: .5rem;
}
.nba-prog-meta-strip span {
  font-family: var(--font-mono);
  font-size: .78rem;
  color: var(--nba-text-on-dim);
  display: flex;
  align-items: center;
  gap: .35rem;
}
.nba-prog-meta-strip span i { color: var(--nba-amber); }



/* ═══════════════════════════════════════════ Sections */
.nba-section { padding: var(--section-py) 0; }
.nba-section--tight { padding: 3rem 0; }
.nba-section--studio { background: var(--nba-studio); color: var(--nba-text-on); }
.nba-section--alt    { background: var(--nba-paper-alt); }

/* About Us page — subtle, responsive school-image background behind the
   whole content area. The overlay keeps opacity low enough that text,
   cards, and buttons remain fully readable on desktop, tablet, and mobile. */
.nba-about-bg {
  position: relative;
  background-color: var(--nba-paper);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  background-attachment: scroll; /* avoid 'fixed' jank on mobile Safari */
  isolation: isolate;
}
.nba-about-bg__overlay {
  position: absolute;
  inset: 0;
  background: rgba(255, 245, 255, .80); /* --nba-paper at high opacity — fades the photo without hiding it */
  z-index: 0;
  pointer-events: none;
}
.nba-body-copy {
  background: rgba(255, 255, 255, .85);
  padding: 1.5rem;
  border-radius: var(--radius-lg);
}
.nba-about-bg__content {
  position: relative;
  z-index: 1;
}
@media (max-width: 575.98px) {
  .nba-about-bg__overlay { background: rgba(255, 245, 255, .96); } /* extra-legible on small screens */
}

.nba-section-head { margin-bottom: 2.5rem; }
.nba-section-head h2 { font-size: clamp(1.7rem, 3vw, 2.4rem); margin: .5rem 0 .75rem; }
.nba-section-head p  { color: var(--nba-body-dim); max-width: 38rem; }
.nba-section--studio .nba-section-head p { color: var(--nba-text-on-dim); }

/* ═══════════════════════════════════════════ Tab bar */
.nba-tab-bar {
  background: var(--nba-paper-alt);
  border-bottom: 1px solid var(--nba-line);
  position: sticky;
  top: 62px; /* below navbar */
  z-index: 100;
}
.nba-tabs {
  gap: 0;
  border-bottom: none;
  overflow-x: auto;
  flex-wrap: nowrap;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.nba-tabs::-webkit-scrollbar { display: none; }
.nba-tabs .nav-link {
  font-family: var(--font-mono);
  font-size: .78rem;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--nba-body-dim);
  border: none;
  border-bottom: 3px solid transparent;
  border-radius: 0;
  padding: .9rem 1.2rem;
  white-space: nowrap;
  transition: color .15s, border-color .15s;
}
.nba-tabs .nav-link:hover  { color: var(--nba-body); border-color: var(--nba-line); }
.nba-tabs .nav-link.active {
  color: var(--nba-red);
  border-bottom-color: var(--nba-red);
  background: transparent;
}

/* ═══════════════════════════════════════════ Cards */
.nba-card {
  background: #fff;
  border: 1px solid var(--nba-line);
  border-radius: var(--radius-lg);
  height: 100%;
  transition: transform .18s ease, box-shadow .18s ease;
}
.nba-card:hover {  box-shadow: 0 14px 30px rgba(37,24,57,.08); }
.nba-card__body { padding: 1.6rem; }
.nba-card h3 { font-size: 1.05rem; font-weight: 700; margin-bottom: .5rem; }
.nba-card p  { color: var(--nba-body-dim); font-size: .92rem; margin-bottom: 0; }

/* Rounded image */
.nba-rounded-img { border-radius: var(--radius-lg); }

/* ═══════════════════════════════════════════ Department cards */
/* Image is a real <img> so it can be sized with object-fit — the photo is
   never cropped, and the whole subject (including the person's head)
   stays visible. The caption sits in its own band below the photo
   rather than overlaid on top of it, so height can grow generously
   without any part of the image needing to be cut off. */
.nba-dept-card {
  position: relative;
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--nba-studio);
  color: var(--nba-text-on);
  height: 100%;
  display: flex;
  flex-direction: column;
  transition: transform .2s ease, box-shadow .2s ease;
}
.nba-dept-card:hover { box-shadow: 0 20px 40px rgba(0,0,0,.25); }

.nba-dept-card__media {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  flex-shrink: 0;
  overflow: hidden;
  background: linear-gradient(160deg, var(--nba-studio) 0%, #1c1428 100%);
}
.nba-dept-card__media img {
  display: block;
  width: 100%;
  height: 100%;
}
/* Blurred, scaled copy of the same photo fills the whole box — this is
   what fixes narrow/portrait source images (e.g. ICT) that would
   otherwise leave empty gaps at the sides of the landscape frame. */
.nba-dept-card__media-bg {
  position: absolute;
  inset: 0;
  object-fit: cover;
  object-position: center;
  filter: blur(20px) brightness(.55) saturate(1.15);
  transform: scale(1.15); /* hides the soft blur edge from the crop line */
}
/* Sharp, uncropped image on top — always shows the full photo */
.nba-dept-card__media-fg {
  position: relative;
  z-index: 1;
  object-fit: contain;   /* shows the entire image — no cropping of heads/subjects */
  object-position: center;
}
.nba-dept-card__placeholder {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 3rem;
  color: var(--nba-amber);
}

.nba-dept-card__body {
  position: relative;
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 1.5rem 1.75rem;
}

.nba-dept-card__icon {
  font-size: 1.8rem;
  color: var(--nba-amber);
  margin-bottom: .6rem;
}
.nba-dept-card h2, .nba-dept-card h3 {
  font-family: var(--font-display);
  text-transform: uppercase;
  font-size: 1.7rem;
  margin: .3rem 0 .35rem;
}
.nba-dept-card p {
  font-size: .95rem;
  color: var(--nba-text-on-dim);
  margin-bottom: 0;
  max-width: 34rem;
}
.nba-dept-card__cta {
  font-family: var(--font-mono);
  font-size: .78rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--nba-amber);
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  margin-top: 1rem;
  transform: translateX(0);
  transition: transform .2s ease;
}
.nba-dept-card:hover .nba-dept-card__cta { transform: translateX(4px); }
.nba-dept-card__prog-count {
  font-family: var(--font-mono);
  font-size: .68rem;
  color: var(--nba-amber);
  margin-top: .4rem;
  display: block;
}

@media (min-width: 768px) {
  .nba-dept-card__media { aspect-ratio: 16 / 9; }
  .nba-dept-card__body { padding: 1.75rem 2.25rem; }
}

/* ═══════════════════════════════════════════ Department carousel (homepage) */
/* Shows exactly ONE department slide at a time on every breakpoint; the
   track holds a leading clone of the last slide and a trailing clone of
   the first slide (injected by site.js) so looping never "jumps". */
.nba-dept-carousel {
  overflow: hidden;
  margin-top: 1.25rem;
  border-radius: var(--radius-lg);
}
.nba-dept-carousel__track {
  display: flex;
  align-items: stretch;
  will-change: transform;
  transition: transform .6s cubic-bezier(.2,.7,.2,1);
}
.nba-dept-carousel__track.is-jumping { transition: none; }

.nba-dept-carousel__slide {
  flex: 0 0 100%;
  max-width: 100%;
  min-width: 0;
}
.nba-dept-carousel__slide .nba-dept-card { height: 100%; }

.nba-dept-carousel__nav { display: inline-flex; gap: .5rem; }
.nba-carousel-btn {
  width: 40px; height: 40px;
  border-radius: 50%;
  border: 1px solid rgba(255,245,255,.3);
  background: rgba(255,245,255,.06);
  color: #fff5ff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  cursor: pointer;
  transition: background .15s ease, border-color .15s ease, transform .15s ease;
}
.nba-carousel-btn:hover { background: rgba(255,245,255,.16); border-color: rgba(255,245,255,.5); }
.nba-carousel-btn:active { transform: scale(.94); }

.nba-dept-carousel__dots {
  display: flex;
  justify-content: center;
  gap: .5rem;
  margin-top: 1.75rem;
}
.nba-dept-carousel__dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  border: none;
  background: rgba(255,245,255,.28);
  padding: 0;
  cursor: pointer;
  transition: background .2s ease, transform .2s ease;
}
.nba-dept-carousel__dot.is-active { background: var(--nba-amber); transform: scale(1.25); }

/* ═══════════════════════════════════════════ Programme chain (homepage) */
.nba-chain {
  display: flex;
  align-items: stretch;
  gap: 0;
  flex-wrap: wrap;
  margin-top: 2rem;
}
.nba-chain__step {
  flex: 1 1 240px;
  border: 1px solid var(--nba-line);
  border-radius: var(--radius-lg);
  padding: 1.75rem;
  background: #fff;
  transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease;
}
.nba-chain__step:hover {
  transform: translateY(-6px);
  box-shadow: 0 16px 32px rgba(37,24,57,.12);
  border-color: transparent;
}
.nba-chain__step + .nba-chain__step { margin-left: 1.25rem; }
.nba-chain__stage {
  font-family: var(--font-mono);
  font-size: .7rem;
  letter-spacing: .12em;
  color: var(--nba-amber);
  background: var(--nba-studio);
  display: block;
  width: fit-content;
  padding: .22rem .6rem;
  border-radius: var(--radius);
  margin: 0 auto 1rem;   /* centred within the box */
  text-align: center;
}
.nba-chain__step h3 { font-size: 1.15rem; margin-bottom: .35rem; }
.nba-chain__step p  {
  color: var(--nba-body-dim);
  font-size: .9rem;
  text-align: justify;     /* evenly justified body copy */
  text-align-last: left;   /* ...without stretching the final line */
}
.nba-chain__arrow {
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--nba-body-dim);
  font-size: 1.3rem;
  padding: 0 .25rem;
}
@media (max-width: 767.98px) {
  .nba-chain { flex-direction: column; }
  .nba-chain__step + .nba-chain__step { margin-left: 0; margin-top: 1.25rem; }
  .nba-chain__arrow,
  .nba-chain__plus { transform: rotate(90deg); padding: .25rem 0; }
}

/* Workshop sits in the same horizontal row as Basic/Intermediate/Advanced,
   but is separated by a "+" rather than a "→" arrow, since it isn't the
   next sequential stage — it's an independent, prerequisite-free track. */
.nba-chain__plus {
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--nba-body-dim);
  font-size: 1.6rem;
  font-weight: 300;
  padding: 0 .35rem;
}
.nba-chain__step--workshop { border-style: dashed; }
.nba-chain__stage--workshop { color: var(--nba-red); background: rgba(225,14,45,.08); }

/* ═══════════════════════════════════════════ Admissions apply steps */
.nba-apply-steps {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  gap: 0;
  flex-wrap: wrap;
  margin-bottom: 1rem;
}
.nba-apply-step {
  flex: 1 1 160px;
  text-align: center;
  padding: 1rem;
}
.nba-apply-step__num {
  font-family: var(--font-display);
  font-size: 2.2rem;
  color: var(--nba-amber);
  line-height: 1;
  margin-bottom: .5rem;
}
.nba-apply-step h4 {
  font-size: .95rem;
  font-weight: 700;
  color: var(--nba-text-on);
  margin-bottom: .35rem;
}
.nba-apply-step p {
  font-size: .82rem;
  color: var(--nba-text-on-dim);
  margin-bottom: 0;
}
.nba-apply-step__arrow {
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--nba-text-on-dim);
  font-size: 1.2rem;
  padding-top: 1rem;
}
@media (max-width: 767.98px) {
  .nba-apply-steps { flex-direction: column; align-items: center; }
  .nba-apply-step__arrow { transform: rotate(90deg); padding: .1rem 0; }
}

/* Apply workflow (admissions page) */
.nba-apply-workflow { display: flex; flex-direction: column; gap: 0; }
.nba-apply-step-full {
  display: flex;
  gap: 1.5rem;
  padding: 2rem 0;
  border-bottom: 1px solid var(--nba-line);
}
.nba-apply-step-full:last-child { border-bottom: none; }
.nba-apply-step-full__num {
  font-family: var(--font-display);
  font-size: 2rem;
  color: var(--nba-red);
  line-height: 1;
  min-width: 3rem;
  padding-top: .1rem;
}
.nba-apply-step-full__body h3 { font-size: 1.1rem; margin-bottom: .5rem; }
.nba-apply-step-full__body p  { color: var(--nba-body-dim); margin-bottom: .75rem; }

.nba-apply-checklist {
  list-style: none;
  padding: 0;
  margin: .75rem 0;
}
.nba-apply-checklist li {
  display: flex;
  align-items: center;
  gap: .5rem;
  font-size: .9rem;
  padding: .2rem 0;
  color: var(--nba-body);
}
.nba-apply-checklist li i { color: var(--nba-red); }

.nba-notice {
  display: flex;
  align-items: flex-start;
  gap: .5rem;
  background: rgba(242,183,5,.08);
  border: 1px solid rgba(242,183,5,.25);
  border-radius: var(--radius);
  padding: .85rem 1rem;
  font-size: .9rem;
  color: var(--nba-body-dim);
}

/* ═══════════════════════════════════════════ Programme cards (dept page) */
.nba-prog-card {
  border: 1px solid var(--nba-line);
  border-radius: var(--radius-lg);
  padding: 1.5rem;
  background: #fff;
  display: flex;
  flex-direction: column;
  height: 100%;
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.nba-prog-card:hover {
  
  box-shadow: 0 12px 28px rgba(37,24,57,.08);
  border-color: rgba(225,14,45,.2);
}
.nba-prog-card__level {
  font-family: var(--font-mono);
  font-size: .68rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--nba-brand);
  background: rgba(225,14,45,.06);
  display: inline-block;
  padding: .22rem .65rem;
  border-radius: 999px;
  margin-bottom: .75rem;
}
.nba-prog-card h3 { font-size: 1.05rem; margin-bottom: .35rem; }
.nba-prog-card p  { color: var(--nba-body-dim); font-size: .9rem; }
.nba-prog-card__cta {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  font-family: var(--font-mono);
  font-size: .74rem;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--nba-red);
  margin-top: auto;
}

/* Programme overview card (admissions page) */
.nba-prog-overview-card {
  border: 1px solid var(--nba-line);
  border-radius: var(--radius-lg);
  padding: 1.5rem;
  background: #fff;
  height: 100%;
  display: flex;
  flex-direction: column;
}
.nba-prog-overview-card__level {
  font-family: var(--font-mono);
  font-size: .66rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--nba-amber);
  background: var(--nba-studio);
  display: inline-block;
  padding: .2rem .55rem;
  border-radius: var(--radius);
  margin-bottom: .75rem;
}
.nba-prog-overview-card h3 { font-size: 1rem; margin-bottom: .35rem; }
.nba-prog-overview-card p  { color: var(--nba-body-dim); font-size: .88rem; flex-grow: 1; }

.nba-link-arrow {
  font-family: var(--font-mono);
  font-size: .74rem;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--nba-brand);
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  margin-top: auto;
}
.nba-link-arrow:hover { color: var(--nba-brand-dim); }

/* ═══════════════════════════════════════════ Programme header (list page) */
.nba-prog-header { border-bottom: 1px solid var(--nba-line); padding-bottom: 1.5rem; margin-bottom: 2rem; }

/* Course listing */
.nba-course-list { display: flex; flex-direction: column; gap: 0; }
.nba-course-item {
  padding: 1.25rem 0;
  border-bottom: 1px solid var(--nba-line);
}
.nba-course-item:last-child { border-bottom: none; }
.nba-course-item__header {
  display: flex;
  align-items: center;
  gap: .75rem;
  flex-wrap: wrap;
  margin-bottom: .35rem;
}
.nba-course-item__code {
  font-family: var(--font-mono);
  font-size: .72rem;
  letter-spacing: .08em;
  color: var(--nba-red);
  background: rgba(225,14,45,.07);
  padding: .18rem .5rem;
  border-radius: var(--radius);
  white-space: nowrap;
}
.nba-course-item__header h3,
.nba-course-item__header h4 { font-size: 1rem; margin: 0; font-weight: 700; }
.nba-course-item__units {
  font-family: var(--font-mono);
  font-size: .72rem;
  color: var(--nba-body-dim);
  white-space: nowrap;
}
.nba-course-item__desc { color: var(--nba-body-dim); font-size: .9rem; margin: 0; }

/* Course taster (dept page prog card) */
.nba-course-taster {
  list-style: none;
  padding: 0;
  margin: 0;
  border-top: 1px solid var(--nba-line);
  padding-top: .75rem;
}
.nba-course-taster li {
  font-size: .82rem;
  color: var(--nba-body-dim);
  padding: .2rem 0;
  display: flex;
  align-items: center;
  gap: .4rem;
}
.nba-course-taster li::before {
  content: '';
  display: inline-block;
  width: 4px; height: 4px;
  border-radius: 50%;
  background: var(--nba-red);
  flex-shrink: 0;
}
.nba-course-taster li.more { color: var(--nba-red); font-family: var(--font-mono); font-size: .72rem; }
.nba-course-taster li.more::before { background: var(--nba-amber); }
.nba-course-taster .code {
  font-family: var(--font-mono);
  font-size: .68rem;
  color: var(--nba-body-dim);
}

/* Learning outcomes list */
.nba-outcomes-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: .5rem;
}
.nba-outcomes-list li {
  display: flex;
  align-items: flex-start;
  gap: .6rem;
  font-size: .95rem;
  padding: .5rem 0;
  border-bottom: 1px solid var(--nba-line);
}
.nba-outcomes-list li:last-child { border-bottom: none; }
.nba-outcomes-list li i { color: var(--nba-red); flex-shrink: 0; margin-top: .1rem; }

/* ═══════════════════════════════════════════ Requirements (admissions) */
.nba-requirements-grid { display: flex; flex-direction: column; gap: 2rem; }
.nba-req-section {
  border: 1px solid var(--nba-line);
  border-radius: var(--radius-lg);
  padding: 1.5rem;
  background: #fff;
}
.nba-req-section h3 {
  font-size: 1.05rem;
  margin-bottom: 1rem;
  display: flex;
  align-items: center;
  gap: .5rem;
}
.nba-req-section h3 i { color: var(--nba-red); }
.nba-req-level {
  font-family: var(--font-mono);
  font-size: .68rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--nba-amber);
  background: var(--nba-studio);
  padding: .18rem .5rem;
  border-radius: var(--radius);
  margin-right: .4rem;
}
.nba-req-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.nba-req-list li {
  padding: .4rem 0;
  border-bottom: 1px solid var(--nba-line);
  font-size: .92rem;
  color: var(--nba-body);
  display: flex;
  align-items: flex-start;
  gap: .5rem;
}
.nba-req-list li:last-child { border-bottom: none; }
.nba-req-list li::before {
  content: '\2022';
  color: var(--nba-red);
  font-size: 1.1rem;
  line-height: 1.4;
  flex-shrink: 0;
}

/* ═══════════════════════════════════════════ News cards (image-overlay style) */
.nba-news-card {
  position: relative;
  display: block;
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--nba-studio);
  box-shadow: 0 1px 3px rgba(37,24,57,.10);
  transition: transform .25s ease, box-shadow .25s ease;
  isolation: isolate;
}
.nba-news-card:hover,
.nba-news-card:focus-visible {
  transform: translateY(-4px);
  box-shadow: 0 20px 40px rgba(37,24,57,.22);
}

/* Image layer — fills the card, zooms gently on hover */
.nba-news-card__img {
  position: relative;
  width: 100%;
  aspect-ratio: 3/4;
  overflow: hidden;
  background: var(--nba-paper-alt);
}
.nba-news-card--featured .nba-news-card__img { aspect-ratio: 16/9; }

.nba-news-card__img img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1);
  transition: transform .5s cubic-bezier(.2,.7,.2,1);
  display: block;
}
.nba-news-card:hover .nba-news-card__img img,
.nba-news-card:focus-visible .nba-news-card__img img { transform: scale(1.08); }

.nba-news-card__placeholder {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  font-size: 2.4rem;
  color: var(--nba-text-on-dim);
  background: linear-gradient(160deg, var(--nba-studio), var(--nba-panel));
}

/* Gradient scrim — always fully present so headline/excerpt stay
   legible without needing hover (required for touch devices). */
.nba-news-card__scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    rgba(20,10,26,.96) 0%,
    rgba(20,10,26,.82) 38%,
    rgba(20,10,26,.30) 68%,
    rgba(20,10,26,.05) 90%
  );
}

/* Headline + meta, pinned to the bottom of the image — always visible */
.nba-news-card__overlay {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  padding: 1.25rem 1.35rem 1.35rem;
  color: var(--nba-text-on);
}

.nba-news-card__tag {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  font-family: var(--font-mono);
  font-size: .66rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--nba-amber);
  background: rgba(255,245,255,.12);
  border: 1px solid rgba(255,245,255,.18);
  border-radius: 999px;
  padding: .25rem .7rem;
  margin-bottom: .6rem;
}
.nba-news-card__tag.pinned { color: #251839; background: var(--nba-amber); border-color: var(--nba-amber); }

.nba-news-card__title {
  font-family: var(--font-display);
  text-transform: uppercase;
  letter-spacing: .01em;
  font-size: 1.05rem;
  line-height: 1.25;
  margin: 0 0 .5rem;
  color: var(--nba-text-on);
}
.nba-news-card--featured .nba-news-card__title { font-size: clamp(1.4rem, 2.4vw, 2rem); }

.nba-news-card__excerpt {
  font-size: .86rem;
  color: var(--nba-text-on-dim);
  margin: 0 0 .6rem;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}
.nba-news-card--featured .nba-news-card__excerpt {
  -webkit-line-clamp: 3;
}

.nba-news-card__meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .3rem .9rem;
  font-family: var(--font-mono);
  font-size: .72rem;
  color: var(--nba-text-on-dim);
  margin: 0;
}
.nba-news-card__meta i { margin-right: .25rem; }

/* Card grid spacing so overlays never collide across breakpoints */
.nba-news-grid { row-gap: 1.75rem; }

@media (max-width: 767.98px) {
  .nba-news-card__img { aspect-ratio: 4/5; }
  .nba-news-card--featured .nba-news-card__img { aspect-ratio: 4/3; }
  .nba-news-card__title { font-size: .98rem; }
}

/* ═══════════════════════════════════════════ Staff */
.nba-staff-card {
  text-align: center;
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  border: 1px solid var(--nba-line);
  border-radius: var(--radius-lg);
  background: #fff;
  overflow: hidden;
  transition: transform .18s ease, box-shadow .18s ease;
}
.nba-staff-card:hover { box-shadow: 0 14px 30px rgba(37,24,57,.08); }
.nba-staff-card__link {
  display: block;
  padding: 1.4rem 1.4rem 0;
  color: inherit;
}
.nba-staff-card__photo {
  width: 100%;
  aspect-ratio: 1/1;
  border-radius: var(--radius-lg);
  background: var(--nba-paper-alt);
  overflow: hidden;
  margin-bottom: .9rem;
}
.nba-staff-card__photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease; }
.nba-staff-card:hover .nba-staff-card__photo img { transform: none; }
.nba-staff-card__placeholder {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  font-size: 3rem;
  color: var(--nba-body-dim);
}
.nba-staff-card h3  {
  font-size: .98rem; margin-bottom: .15rem; font-weight: 700;
  overflow-wrap: break-word; word-break: break-word;
}
.nba-staff-card .role { font-family: var(--font-mono); font-size: .72rem; color: var(--nba-red); margin-bottom: .1rem; }
.nba-staff-card .dept { font-size: .8rem; color: var(--nba-body-dim); margin-bottom: 0; }

/* Extra details (qualifications / bio snippet / email) — flex-grow so every
   card in a row stretches to the same height regardless of content length,
   which is what actually stops cards from visually overlapping/misaligning
   when one profile has far more text than its neighbours. */
.nba-staff-card__meta {
  flex-grow: 1;
  display: flex;
  flex-direction: column;
  gap: .5rem;
  padding: .75rem 1.4rem 0;
  text-align: left;
  min-width: 0; /* allow child text-overflow/ellipsis & wrapping to work inside flex */
}
.nba-staff-card__meta .qual {
  font-size: .78rem;
  color: var(--nba-ink, #1a1a1a);
  font-weight: 600;
  margin: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.nba-staff-card__meta .bio {
  font-size: .85rem;
  line-height: 1.5;
  color: var(--nba-body-dim);
  margin: 0;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow-wrap: break-word;
  word-break: break-word;
}
.nba-staff-card__meta .email {
  display: flex;
  align-items: center;
  gap: .3rem;
  font-size: .78rem;
  color: var(--nba-red);
  text-decoration: none;
  overflow: hidden;
  min-width: 0;
}
.nba-staff-card__meta .email span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
}
.nba-staff-card__meta .email:hover { text-decoration: underline; }
.nba-staff-card__more {
  display: block;
  margin-top: auto;
  padding: .9rem 1.4rem;
  font-family: var(--font-mono);
  font-size: .72rem;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--nba-studio);
  text-decoration: none;
  border-top: 1px solid var(--nba-line);
}
.nba-staff-card__more:hover { color: var(--nba-red); }

/* Staff profile (detail page) */
.nba-staff-profile-card {
  border: 1px solid var(--nba-line);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: #fff;
}
.nba-staff-profile-card__photo { aspect-ratio: 1/1; overflow: hidden; background: var(--nba-paper-alt); }
.nba-staff-profile-card__photo img { width: 100%; height: 100%; object-fit: cover; transition: none; }
.nba-staff-profile-card__placeholder {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  font-size: 5rem; color: var(--nba-body-dim);
}
.nba-staff-profile-card__info { padding: 1.5rem; overflow-wrap: break-word; word-break: break-word; }
.nba-staff-profile-card__info h2 { font-size: 1.25rem; margin-bottom: .2rem; }
.nba-staff-profile-card__info .role {
  font-family: var(--font-mono); font-size: .78rem; color: var(--nba-red);
}
.nba-staff-profile-card__info .qual {
  font-size: .85rem; color: var(--nba-body-dim); margin-top: .2rem;
}
.nba-dept-badge {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  font-family: var(--font-mono);
  font-size: .72rem;
  letter-spacing: .05em;
  color: var(--nba-body-dim);
  border: 1px solid var(--nba-line);
  border-radius: 999px;
  padding: .25rem .75rem;
  margin-top: .75rem;
  transition: color .15s, border-color .15s;
}
.nba-dept-badge:hover { color: var(--nba-red); border-color: var(--nba-red); }

/* ═══════════════════════════════════════════ Sidebar */
.nba-sidebar { display: flex; flex-direction: column; gap: 0; }
.nba-sidebar-card {
  border: 1px solid var(--nba-line);
  border-radius: var(--radius-lg);
  padding: 1.4rem;
  background: #fff;
  margin-bottom: 1.25rem;
}
.nba-sidebar-card:last-child { margin-bottom: 0; }
.nba-sidebar-card h3 { font-size: 1rem; font-weight: 700; margin-bottom: .9rem; }
.nba-sidebar-card p  { font-size: .88rem; color: var(--nba-body-dim); margin-bottom: 0; }

.nba-sidebar-card--cta {
  background: var(--nba-studio);
  border-color: var(--nba-panel-line);
  color: var(--nba-text-on);
}
.nba-sidebar-card--cta h3 { color: var(--nba-text-on); }
.nba-sidebar-card--cta p  { color: var(--nba-text-on-dim); }

.nba-sidebar-card--accent {
  background: rgba(225,14,45,.03);
  border-color: rgba(225,14,45,.12);
}
.nba-sidebar-card--closed {
  background: rgba(58,61,69,.04);
  border-color: var(--nba-line);
}

.nba-sidebar-dept-link {
  display: flex;
  align-items: center;
  gap: .5rem;
  padding: .55rem 0;
  border-bottom: 1px solid var(--nba-line);
  font-size: .9rem;
  color: var(--nba-body);
  transition: color .15s;
}
.nba-sidebar-dept-link:last-child { border-bottom: none; }
.nba-sidebar-dept-link:hover { color: var(--nba-red); }
.nba-sidebar-dept-link .bi-chevron-right { color: var(--nba-body-dim); font-size: .75rem; }

.nba-sidebar-news-link {
  display: block;
  font-size: .88rem;
  color: var(--nba-body);
  transition: color .15s;
}
.nba-sidebar-news-link:hover { color: var(--nba-red); }
.nba-sidebar-news-link strong { display: block; font-weight: 600; margin-bottom: .1rem; }

/* ═══════════════════════════════════════════ About page */
.nba-vm-card {
  border-radius: var(--radius-lg);
  padding: 2rem;
  height: 100%;
}
.nba-vm-card--vision {
  background: rgba(225,14,45,.06);
  border: 1px solid rgba(225,14,45,.14);
}
.nba-vm-card--mission {
  background: rgba(225,14,45,.06);
  border: 1px solid rgba(225,14,45,.14);
}
.nba-vm-card__icon {
  width: 52px; height: 52px;
  border-radius: var(--radius-lg);
  background: rgba(225,14,45,.12);
  color: var(--nba-red);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.4rem;
  margin-bottom: 1rem;
}
.nba-vm-card h2 { font-size: 1.3rem; font-weight: 700; margin-bottom: .75rem; }

.nba-value-card {
  border: 1px solid var(--nba-line);
  border-radius: var(--radius-lg);
  padding: 1.5rem;
  background: #fff;
  text-align: center;
  transition: border-color .18s, box-shadow .18s;
}
.nba-value-card:hover { border-color: rgba(225,14,45,.2); box-shadow: 0 8px 20px rgba(20,21,26,.06); }
.nba-value-card i { font-size: 1.8rem; color: var(--nba-brand); display: block; margin-bottom: .75rem; }
.nba-value-card h4 { font-size: .95rem; font-weight: 700; margin: 0; }

/* ═══════════════════════════════════════════ Info card / list */
.nba-info-card {
  border: 1px solid var(--nba-line);
  border-radius: var(--radius-lg);
  padding: 1.4rem;
  background: #fff;
}
.nba-info-card h3 { font-size: 1rem; font-weight: 700; margin-bottom: 1rem; }

.nba-info-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: .75rem;
}
.nba-info-list li {
  display: flex;
  align-items: flex-start;
  gap: .75rem;
  font-size: .9rem;
}
.nba-info-list li i { color: var(--nba-red); margin-top: .15rem; flex-shrink: 0; }
.nba-info-list li a { color: inherit; }
.nba-info-list li a:hover { color: var(--nba-red); }

/* ═══════════════════════════════════════════ Contact page */
.nba-map-embed {
  border-radius: var(--radius-lg);
  overflow: hidden;
  border: 1px solid var(--nba-line);
  position: relative;
}
.nba-map-embed iframe { width: 100%; height: 280px; border: none; display: block; }
.nba-map-link {
  display: flex;
  align-items: center;
  gap: .3rem;
  padding: .65rem 1rem;
  background: #fff;
  font-family: var(--font-mono);
  font-size: .75rem;
  letter-spacing: .04em;
  color: var(--nba-body-dim);
  border-top: 1px solid var(--nba-line);
}
.nba-map-link:hover { color: var(--nba-red); }

.nba-share-bar { display: flex; align-items: center; gap: .75rem; }
.nba-share-btn {
  width: 36px; height: 36px;
  border: 1px solid var(--nba-line);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  color: var(--nba-body-dim);
  transition: color .15s, border-color .15s;
}
.nba-share-btn:hover { color: var(--nba-red); border-color: var(--nba-red); }

.nba-social-link {
  width: 38px; height: 38px;
  border: 1px solid var(--nba-line);
  border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--nba-body-dim);
  font-size: 1rem;
  transition: color .15s, border-color .15s, background .15s;
}
.nba-social-link:hover { color: var(--nba-red); border-color: var(--nba-red); background: rgba(225,14,45,.05); }

/* ═══════════════════════════════════════════ CTA sections */
.nba-cta-section { padding: var(--section-py) 0; }
.nba-contact-strip { padding: 3.5rem 0; }

.nba-cta-box {
  border: 1px solid var(--nba-line);
  border-radius: var(--radius-lg);
  padding: 2rem 2.5rem;
  background: var(--nba-paper-alt);
  margin-top: 2rem;
}

/* ═══════════════════════════════════════════ Breadcrumb */
.nba-breadcrumb-bar {
  background: var(--nba-paper-alt);
  border-bottom: 1px solid var(--nba-line);
  padding: .6rem 0;
}
.nba-breadcrumb {
  font-family: var(--font-mono);
  font-size: .74rem;
  letter-spacing: .04em;
  margin: 0;
  --bs-breadcrumb-divider-color: var(--nba-body-dim);
  --bs-breadcrumb-item-padding-x: .45rem;
}
.nba-breadcrumb .breadcrumb-item + .breadcrumb-item::before { content: '/'; }
.nba-breadcrumb a { color: var(--nba-body-dim); }
.nba-breadcrumb a:hover { color: var(--nba-red); }
.nba-breadcrumb .active { color: var(--nba-body); }

/* ═══════════════════════════════════════════ Filter bar */
.nba-filter-bar .form-label {
  font-family: var(--font-mono);
  font-size: .72rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--nba-body-dim);
  margin-bottom: .3rem;
  display: block;
}
.nba-search-input { position: relative; }
.nba-search-input i {
  position: absolute;
  left: .85rem; top: 50%;
  transform: translateY(-50%);
  color: var(--nba-body-dim);
  pointer-events: none;
  z-index: 1;
}
.nba-search-input .form-control { padding-left: 2.4rem; }

/* ═══════════════════════════════════════════ Accordion / FAQ */
.nba-accordion .accordion-item {
  border-color: var(--nba-line);
  background: #fff;
}
.nba-accordion .accordion-item:first-child { border-radius: var(--radius-lg) var(--radius-lg) 0 0; }
.nba-accordion .accordion-item:last-child  { border-radius: 0 0 var(--radius-lg) var(--radius-lg); }
.nba-accordion .accordion-button {
  font-family: var(--font-body);
  font-weight: 600;
  font-size: .98rem;
  color: var(--nba-body);
  background: #fff;
  box-shadow: none;
}
.nba-accordion .accordion-button:not(.collapsed) {
  color: var(--nba-brand);
  background: rgba(225,14,45,.03);
  box-shadow: inset 0 -1px 0 var(--nba-line);
}
.nba-accordion .accordion-button::after { filter: none; }
.nba-accordion .accordion-body { color: var(--nba-body-dim); font-size: .93rem; }

/* ═══════════════════════════════════════════ Forms */
.nba-body .form-control,
.nba-body .form-select {
  border-color: var(--nba-line);
  border-radius: var(--radius);
  padding: .65rem .9rem;
  color: var(--nba-body);
  background: #fff;
}
.nba-body .form-control:focus,
.nba-body .form-select:focus {
  border-color: var(--nba-red);
  box-shadow: 0 0 0 3px rgba(225,14,45,.12);
}
.nba-body .form-control::placeholder { color: rgba(107,110,118,.5); }
.nba-body label,
.nba-body .form-label {
  font-family: var(--font-mono);
  font-size: .72rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--nba-body-dim);
  margin-bottom: .3rem;
}
.invalid-feedback { font-size: .82rem; }

/* ── Contact form: grouping, spacing, and visual hierarchy ── */
.nba-contact-form__body { padding: 2rem; }
.nba-contact-form__group {
  border: none;      /* reset the browser's default fieldset chrome */
  margin: 0 0 1.75rem;
  padding: 0;
  min-width: 0;
}
.nba-contact-form__group--message { margin-bottom: 0; }
.nba-contact-form__legend {
  float: none;
  width: auto;
  font-family: var(--font-mono);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--nba-red);
  border-bottom: 1px solid var(--nba-line);
  padding-bottom: .5rem;
  margin-bottom: 1.1rem;
}
.nba-contact-form textarea.form-control { resize: vertical; min-height: 9rem; }
.nba-contact-form__submit { min-width: 12rem; justify-content: center; }
@media (max-width: 575.98px) {
  .nba-contact-form__body { padding: 1.35rem; }
  .nba-contact-form__submit { width: 100%; }
}

/* ═══════════════════════════════════════════ Body copy */
.nba-body-copy {
  font-size: 1rem;
  line-height: 1.75;
  color: var(--nba-body);
  max-width: 66ch;
}
.nba-body-copy h2, .nba-body-copy h3 {
  margin-top: 1.75em;
  margin-bottom: .5em;
  text-align: left; /* headings and short labels stay left-aligned, not justified */
}
/* Longer paragraphs read cleanly justified on wider columns; text-align-last
   keeps the final line of each paragraph left-aligned so it doesn't stretch
   into an awkward gap. */
.nba-body-copy p  {
  margin-bottom: 1.1em;
  text-align: justify;
  text-align-last: left;
  -webkit-hyphens: auto;
  hyphens: auto;
}
.nba-body-copy ul { padding-left: 1.4em; margin-bottom: 1em; text-align: left; }
.nba-body-copy li { margin-bottom: .4em; }
.nba-body-copy a  { color: var(--nba-red); text-decoration: underline; }

/* Justified text on very narrow columns produces uneven rivers of
   whitespace, so fall back to left-aligned on small screens. */
@media (max-width: 575.98px) {
  .nba-body-copy p { text-align: left; hyphens: none; }
}

/* ═══════════════════════════════════════════ Pagination */
.nba-pagination {
  display: flex;
  gap: .4rem;
  justify-content: center;
  margin-top: 2.5rem;
  font-family: var(--font-mono);
  font-size: .85rem;
  flex-wrap: wrap;
}
.nba-pagination a,
.nba-pagination span {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 38px; height: 38px;
  border: 1px solid var(--nba-line);
  border-radius: var(--radius);
  padding: 0 .65rem;
  color: var(--nba-body-dim);
}
.nba-pagination a:hover { border-color: var(--nba-red); color: var(--nba-red); }
.nba-pagination .current {
  background: var(--nba-studio); color: #fff; border-color: var(--nba-studio);
}

/* ═══════════════════════════════════════════ Footer */
.nba-footer {
  background: var(--nba-deeper, #251839);
  color: var(--nba-text-on-dim);
  padding: 4.5rem 0 1.5rem;
}
.nba-footer-brand {
  font-family: var(--font-display);
  color: var(--nba-text-on);
  font-size: 1.1rem;
}
.nba-footer-heading {
  font-family: var(--font-mono);
  font-size: .72rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--nba-text-on);
  margin-bottom: 1.1rem;
}
.nba-footer nav a {
  color: var(--nba-text-on-dim);
  display: block;
  padding: .3rem 0;
  font-size: .88rem;
  transition: color .15s;
}
.nba-footer nav a:hover { color: var(--nba-text-on); }
.nba-footer address a  { color: var(--nba-text-on-dim); }
.nba-footer address a:hover { color: var(--nba-text-on); }

.nba-footer-bottom {
  border-top: 1px solid var(--nba-panel-line);
  margin-top: 3rem;
  padding-top: 1.5rem;
  font-size: .8rem;
  font-family: var(--font-mono);
  display: flex;
  flex-wrap: wrap;
  gap: .75rem;
  justify-content: space-between;
  align-items: center;
}
.nba-footer-bottom a {
  color: var(--nba-text-on-dim);
  transition: color .15s;
}
.nba-footer-bottom a:hover { color: var(--nba-text-on); }

.nba-social { display: flex; gap: .5rem; }
.nba-social a {
  width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--nba-panel-line);
  border-radius: 50%;
  color: var(--nba-text-on-dim);
  font-size: .95rem;
  transition: color .15s, border-color .15s;
}
.nba-social a:hover { color: #fff; border-color: var(--nba-brand); background: var(--nba-brand); }

/* ═══════════════════════════════════════════ Misc utilities */
.nba-badge-soft {
  display: inline-block;
  font-family: var(--font-mono);
  font-size: .68rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  padding: .25rem .6rem;
  border-radius: 999px;
  background: rgba(58,61,69,.08);
  color: var(--nba-body-dim);
}
.nba-empty {
  text-align: center;
  padding: 3.5rem 1rem;
  color: var(--nba-body-dim);
  border: 1px dashed var(--nba-line);
  border-radius: var(--radius-lg);
}
.nba-empty a { color: var(--nba-red); }

/* ═══════════════════════════════════════════ Responsive tweaks */
@media (max-width: 991.98px) {
  .nba-tab-bar { top: 0; } /* Not sticky below navbar on mobile */
  .nba-section { padding: 3rem 0; }
  .nba-hero { padding: 5rem 0 4rem; }
  .nba-page-hero { padding: 3rem 0 2.5rem; }

  .nba-apply-step-full { flex-direction: column; gap: .75rem; }
  .nba-apply-step-full__num { font-size: 1.5rem; min-width: auto; }

  .nba-cta-box { padding: 1.5rem; }
}

@media (max-width: 767.98px) {
  .nba-hero-logo { height: 42px; }
  .nba-navbar .navbar-brand img { height: 44px; }
  .nba-footer-bottom { flex-direction: column; gap: .5rem; }
  .nba-footer-bottom div { flex-wrap: wrap; }
}

/* Departments section — #6b1e4a background */
.nba-section--brand {
  background: var(--nba-brand);
  color: var(--nba-text-on);
  padding: 2.75rem 0;       /* shorter than the default 4.5rem section padding */
}
.nba-section--brand .nba-section-head { margin-bottom: 1.5rem; }
/* Dept cards on brand bg: slightly lighter overlay so cards are readable */
.nba-section--brand .nba-dept-card {
  border: 1.5px solid rgba(255,245,255,.15);
}
.nba-section--brand .nba-dept-card::before {
  background: linear-gradient(160deg, rgba(37,24,57,.25), rgba(37,24,57,.88));
}
.nba-section--brand .nba-dept-card:hover::before { opacity: .82; }

/* Footer logo — larger than navbar */
.nba-footer-logo {
  height: 52px;
  width:  auto;
  flex-shrink: 0;
  display: block;
}
/* Footer brand: full name, not abbreviation */
.nba-footer-brand-text {
  display: flex;
  flex-direction: column;
}
.footer-brand-name {
  font-family: var(--font-body);   /* Anton is a headline face, not meant for ~16px text — swapped for a crisp, real-weight font */
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--nba-text-on);
  letter-spacing: .01em;
  line-height: 1.25;
  text-transform: none;
}
/* Footer contact links */
.nba-footer-link {
  color: var(--nba-text-on-dim);
  text-decoration: none;
  transition: color .15s;
}
.nba-footer-link:hover { color: var(--nba-text-on); }

/* ── Portal Login — solid brand button ── */
.nba-nav-portal-solid {
  font-family: var(--font-mono);
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  background: var(--nba-brand);
  color: #fff !important;
  padding: .58rem 1.15rem;
  border-radius: var(--radius);
  border: none;
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  text-decoration: none;
  transition: background .15s;
}
.nba-nav-portal-solid:hover  { background: var(--nba-brand-dim); color: #fff !important; }
.nba-nav-portal-solid:focus-visible { outline: 2px solid var(--nba-amber); outline-offset: 2px; }
.nba-nav-portal-solid:active { background: var(--nba-brand-dim); }

/* ── Footer logo ── */
.nba-footer-logo {
  height: 52px;
  width:  auto;
  flex-shrink: 0;
  display: block;
}
.nba-footer-brand-text { display: flex; flex-direction: column; }
.footer-brand-name {
  font-family: var(--font-body);   /* Anton is a headline face, not meant for ~16px text — swapped for a crisp, real-weight font */
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--nba-text-on);
  letter-spacing: .01em;
  line-height: 1.25;
  text-transform: none;
}
.nba-footer-link { color: var(--nba-text-on-dim); text-decoration: none; transition: color .15s; }
.nba-footer-link:hover { color: var(--nba-text-on); }

/* ── Navbar logo class ── */
.nba-nav-logo { height: 58px; width: auto; flex-shrink: 0; display: block; }

/* ── Responsive navbar ──
   The brand block (logo + school name + "....Raising Broadcast
   Professionals" tagline) must be allowed to shrink and wrap on small
   screens instead of overflowing the navbar — a fixed-width, non-shrinking,
   nowrap brand block is what was pushing the tagline (and sometimes the
   toggler button) outside the visible viewport on phones. ---------------- */
@media (max-width: 991.98px) {
  .nba-navbar .navbar-brand { flex-shrink: 1; min-width: 0; }
  .navbar-brand-text { min-width: 0; }
  .navbar-brand-text .brand-abbr,
  .navbar-brand-text small {
    white-space: normal;
    overflow-wrap: break-word;
  }
  .navbar-toggler { flex-shrink: 0; }
}
@media (max-width: 575.98px) {
  .nba-nav-logo { height: 42px; }
  .navbar-brand-text .brand-abbr { font-size: 1rem; }
  .navbar-brand-text small {
    display: block; /* always visible on mobile — must not be hidden */
    font-size: .62rem;
  }
  .nba-navbar .navbar-brand { gap: .6rem; }
}
@media (min-width: 576px) and (max-width: 991.98px) {
  .nba-nav-logo { height: 50px; }
  .navbar-brand-text small { font-size: .68rem; }
}
/* ===========================================================================
   Events & Gallery
   =========================================================================== */

/* ── Event listing card (mirrors .nba-news-card) ── */
.nba-event-card {
  position: relative;
  display: block;
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--nba-studio);
  box-shadow: 0 1px 3px rgba(37,24,57,.10);
  transition: transform .25s ease, box-shadow .25s ease;
  isolation: isolate;
}
.nba-event-card:hover,
.nba-event-card:focus-visible { transform: translateY(-4px); box-shadow: 0 20px 40px rgba(37,24,57,.22); }

.nba-event-card__img { position: relative; width: 100%; aspect-ratio: 4/3; overflow: hidden; background: var(--nba-paper-alt); }
.nba-event-card__img img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  transition: transform .5s cubic-bezier(.2,.7,.2,1);
}
.nba-event-card:hover .nba-event-card__img img,
.nba-event-card:focus-visible .nba-event-card__img img { transform: scale(1.08); }

.nba-event-card__placeholder {
  width: 100%; height: 100%; display: flex; align-items: center; justify-content: center;
  font-size: 2.2rem; color: var(--nba-text-on-dim);
  background: linear-gradient(160deg, var(--nba-studio), var(--nba-panel));
}

.nba-event-card__scrim {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(20,10,26,.92) 0%, rgba(20,10,26,.55) 45%, rgba(20,10,26,0) 75%);
}
.nba-event-card__overlay { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end; padding: 1rem 1.1rem; }
.nba-event-card__tag {
  align-self: flex-start; font-size: .68rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
  color: var(--nba-amber); background: rgba(255,245,255,.08); border: 1px solid rgba(255,245,255,.18);
  border-radius: 999px; padding: .2rem .6rem; margin-bottom: .5rem;
}
.nba-event-card__title { color: var(--nba-text-on); font-size: 1.05rem; font-weight: 700; line-height: 1.3; margin-bottom: .4rem; }
.nba-event-card__excerpt { font-size: .85rem; color: var(--nba-text-on-dim); margin-bottom: .5rem; }
.nba-event-card__meta { display: flex; flex-wrap: wrap; gap: .9rem; font-size: .78rem; color: var(--nba-text-on-dim); margin: 0; }
.nba-event-card__meta i { margin-right: .3rem; }
.nba-photo-count-badge {
  position: absolute; top: .75rem; right: .75rem; z-index: 2;
  background: rgba(20,10,26,.72); color: var(--nba-text-on); font-size: .74rem; font-weight: 600;
  border-radius: 999px; padding: .25rem .6rem; display: flex; align-items: center; gap: .3rem;
  backdrop-filter: blur(2px);
}

/* ── Event detail: info card ── */
.nba-event-info-card dt { font-size: .74rem; text-transform: uppercase; letter-spacing: .04em; color: var(--nba-body-dim); margin-top: .85rem; }
.nba-event-info-card dt:first-child { margin-top: 0; }
.nba-event-info-card dd { font-size: .95rem; font-weight: 600; color: var(--nba-body); margin-bottom: 0; }
.nba-preview-banner {
  background: var(--nba-amber); color: #2a2110; font-weight: 700; text-align: center;
  padding: .6rem 1rem; font-size: .9rem;
}

/* ── Gallery layouts ── */
.nba-gallery { margin-top: 1.5rem; }
.nba-gallery-tile {
  position: relative; display: block; overflow: hidden; border-radius: var(--radius-lg);
  background: var(--nba-paper-alt); cursor: zoom-in; border: 0; padding: 0; width: 100%; text-align: left;
}
.nba-gallery-tile img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.nba-gallery-tile:hover img { transform: scale(1.06); }
.nba-gallery-tile__caption {
  position: absolute; left: 0; right: 0; bottom: 0; padding: .55rem .7rem .45rem;
  background: linear-gradient(to top, rgba(20,10,26,.88), rgba(20,10,26,0));
  color: var(--nba-text-on); font-size: .74rem; line-height: 1.35;
  opacity: 0; transform: translateY(6px); transition: opacity .2s ease, transform .2s ease;
}
.nba-gallery-tile:hover .nba-gallery-tile__caption,
.nba-gallery-tile:focus-visible .nba-gallery-tile__caption { opacity: 1; transform: translateY(0); }

/* Grid */
.nba-gallery--grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: .9rem; }
.nba-gallery--grid .nba-gallery-tile { aspect-ratio: 1/1; }

/* Masonry (CSS columns \u2014 no JS required) */
.nba-gallery--masonry { column-count: 3; column-gap: .9rem; }
.nba-gallery--masonry .nba-gallery-tile { margin-bottom: .9rem; break-inside: avoid; }
.nba-gallery--masonry .nba-gallery-tile img { height: auto; }
@media (max-width: 767.98px) { .nba-gallery--masonry { column-count: 2; } }
@media (max-width: 479.98px) { .nba-gallery--masonry { column-count: 1; } }

/* Large featured image + thumbnail strip */
.nba-gallery--featured .nba-gallery-main { aspect-ratio: 16/9; margin-bottom: .9rem; }
.nba-gallery--featured .nba-gallery-thumbs {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: .6rem;
}
.nba-gallery--featured .nba-gallery-thumbs .nba-gallery-tile { aspect-ratio: 1/1; }

/* Carousel / slideshow \u2014 CSS scroll-snap, no JS dependency required to scroll */
.nba-gallery--carousel { position: relative; }
.nba-gallery--carousel .nba-gallery-track {
  display: flex; gap: .9rem; overflow-x: auto; scroll-snap-type: x mandatory;
  padding-bottom: .5rem; scrollbar-width: thin;
}
.nba-gallery--carousel .nba-gallery-tile {
  flex: 0 0 min(78%, 420px); aspect-ratio: 4/3; scroll-snap-align: start;
}
.nba-gallery-carousel-btn {
  position: absolute; top: 42%; transform: translateY(-50%); z-index: 2;
  width: 40px; height: 40px; border-radius: 50%; border: 0;
  background: rgba(20,10,26,.75); color: #fff; display: flex; align-items: center; justify-content: center;
  font-size: 1.1rem;
}
.nba-gallery-carousel-btn:hover { background: var(--nba-brand); }
.nba-gallery-carousel-btn--prev { left: -6px; }
.nba-gallery-carousel-btn--next { right: -6px; }
@media (max-width: 575.98px) { .nba-gallery-carousel-btn { display: none; } }

/* Mixed / featured grid \u2014 first tile spans 2x2 */
.nba-gallery--mixed {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  grid-auto-rows: 140px; gap: .9rem;
}
.nba-gallery--mixed .nba-gallery-tile:nth-child(5n+1) { grid-column: span 2; grid-row: span 2; }

/* ── Lightbox ── */
.nba-lightbox {
  position: fixed; inset: 0; z-index: 1080; display: none;
  background: rgba(10,5,14,.94); align-items: center; justify-content: center; padding: 2rem 1rem;
}
.nba-lightbox.is-open { display: flex; }
.nba-lightbox__figure { max-width: min(92vw, 1100px); max-height: 90vh; display: flex; flex-direction: column; align-items: center; }
.nba-lightbox__img { max-width: 100%; max-height: 74vh; border-radius: 6px; object-fit: contain; }
.nba-lightbox__caption { color: var(--nba-text-on); text-align: center; margin-top: .9rem; font-size: .9rem; max-width: 700px; }
.nba-lightbox__people { color: var(--nba-amber); font-size: .82rem; margin-top: .35rem; }
.nba-lightbox__close, .nba-lightbox__nav {
  position: absolute; background: rgba(255,245,255,.08); border: 1px solid rgba(255,245,255,.2);
  color: var(--nba-text-on); border-radius: 50%; width: 44px; height: 44px;
  display: flex; align-items: center; justify-content: center; font-size: 1.3rem;
}
.nba-lightbox__close:hover, .nba-lightbox__nav:hover { background: var(--nba-brand); }
.nba-lightbox__close { top: 1.2rem; right: 1.2rem; }
.nba-lightbox__nav--prev { left: 1.2rem; top: 50%; transform: translateY(-50%); }
.nba-lightbox__nav--next { right: 1.2rem; top: 50%; transform: translateY(-50%); }
@media (max-width: 575.98px) {
  .nba-lightbox__nav--prev { left: .4rem; }
  .nba-lightbox__nav--next { right: .4rem; }
  .nba-lightbox__close { top: .5rem; right: .5rem; }
}

/* ===========================================================================
   Admin: Manage Gallery page
   =========================================================================== */
.nba-admin-photo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; margin: 16px 0; }
.nba-admin-photo-card { background: #fff; border: 1px solid #dfdfdf; border-radius: 6px; padding: 10px; }
.nba-admin-photo-card img { width: 100%; height: 150px; object-fit: cover; border-radius: 4px; margin-bottom: 8px; background: #f2f2f2; }
.nba-admin-photo-card .nba-admin-order-badge { font-size: 11px; font-weight: 700; color: #666; }
.nba-admin-people-list { list-style: none; margin: 8px 0; padding: 0; font-size: 12px; }
.nba-admin-people-list li { display: flex; justify-content: space-between; align-items: center; padding: 3px 0; border-bottom: 1px dashed #eee; cursor: default; }
.nba-admin-inline-actions { display: flex; gap: 4px; align-items: center; }
.nba-admin-inline-actions button { font-size: 11px; padding: 1px 6px; }
.nba-admin-card-handle { display: flex; align-items: center; gap: 6px; cursor: grab; padding: 2px 0 6px; user-select: none; }
.nba-admin-card-handle:active { cursor: grabbing; }
.nba-admin-drag-icon { color: #888; cursor: grab; margin-right: 4px; }
.nba-admin-drag-ghost { opacity: .4; background: #f3f3ff; }
.nba-admin-save-indicator { font-size: 11px; font-weight: 600; margin-left: 4px; }

/* ===========================================================================
   Scroll-reveal (fade-up + stagger) — see static/website/js/site.js
   =========================================================================== */
[data-reveal] {
  opacity: 0;
  transform: translateY(34px) scale(.96);
  transition: opacity .65s cubic-bezier(.22,1,.36,1), transform .65s cubic-bezier(.22,1,.36,1);
  transition-delay: var(--reveal-delay, 0ms);
  will-change: opacity, transform;
}
[data-reveal].is-visible { opacity: 1; transform: translateY(0) scale(1); }

@media (prefers-reduced-motion: reduce) {
  [data-reveal] { opacity: 1; transform: none; transition: none; }
}

/* ===========================================================================
   Admissions Notice Banner (homepage, dismissible)
   =========================================================================== */
.nba-notice-banner {
  background: var(--nba-amber);
  color: #2a2110;
  overflow: hidden;
  max-height: 200px;
  animation: nba-notice-slide-down .45s ease both;
}
.nba-notice-banner.is-dismissed { display: none; }

@keyframes nba-notice-slide-down {
  from { max-height: 0; opacity: 0; }
  to   { max-height: 200px; opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  .nba-notice-banner { animation: none; }
}

.nba-notice-banner__inner {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
  gap: .6rem 1.2rem; padding: .65rem 1rem; text-align: center;
}
.nba-notice-banner__text { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: center; gap: .1rem .6rem; }
.nba-notice-banner__headline { font-size: .86rem; font-weight: 800; letter-spacing: .02em; text-transform: uppercase; }
.nba-notice-banner__message { font-size: .84rem; }
.nba-notice-banner__actions { display: flex; align-items: center; gap: .6rem; }
.nba-notice-banner__cta {
  background: var(--nba-studio); color: var(--nba-text-on); font-size: .78rem; font-weight: 700;
  border-radius: 999px; padding: .35rem 1rem; text-decoration: none; white-space: nowrap;
  transition: background .2s ease;
}
.nba-notice-banner__cta:hover { background: var(--nba-brand); color: var(--nba-text-on); }
.nba-notice-banner__close {
  background: transparent; border: 0; color: #2a2110; font-size: .95rem; line-height: 1;
  padding: .2rem; opacity: .7;
}
.nba-notice-banner__close:hover { opacity: 1; }
