/* Centre of Hope — Public site theme
   Bootstrap 5 base, overridden with brand variables. */

:root {
  --coh-primary:      #B22234;
  --coh-primary-dark: #8f1627;
  --coh-accent:       #D4AF37;
  --coh-accent-dark:  #b68d2a;
  --coh-cream:        #FFFDF8;
  --coh-ink:          #172033;
  --coh-muted:        #5b6778;
  --coh-bg:           #fcfdff;
  --coh-surface:      #f5f7fb;
  --coh-border:       #e4e8ef;

  --bs-primary:       var(--coh-primary);
  --bs-primary-rgb:   178, 34, 52;
  --bs-link-color:    var(--coh-primary);
  --bs-link-hover-color: var(--coh-primary-dark);
  /* Override Bootstrap's --bs-secondary-color (used by .text-muted) so it stays readable on cream/white */
  --bs-secondary-color: #4b5563;
  --bs-body-color: var(--coh-ink);
  --bs-body-bg: var(--coh-bg);
  color-scheme: light;
}

/* Public site is a fixed branded palette (cream/navy/red/gold) — do NOT follow OS dark mode.
   The page sets <html data-bs-theme="light"> to lock Bootstrap's theme as well. */
.text-muted { color: var(--coh-muted) !important; }

/* Readable text on the cream-tinted stats / news strip regardless of UA theme */
.coh-stats, .bg-cream { color: var(--coh-ink); }
.coh-stats h1, .coh-stats h2, .coh-stats h3, .coh-stats h4,
.bg-cream h1, .bg-cream h2, .bg-cream h3, .bg-cream h4 { color: var(--coh-ink); }

html { scroll-behavior:smooth; }
body {
  font-family: 'Inter', system-ui, -apple-system, sans-serif;
  font-size: 16px;
  color: var(--coh-ink);
  background: var(--coh-bg);
  line-height: 1.65;
}
h1,h2,h3,h4,h5,h6 { font-family:'Poppins', system-ui, sans-serif; font-weight:700; color:var(--coh-ink); }

/* ── Buttons ──────────────────────────────────────────── */
.btn-coh { background:var(--coh-primary); color:#fff; border:none; padding:.75rem 1.5rem; border-radius:8px; font-weight:600; }
.btn-coh:hover { background:var(--coh-primary-dark); color:#fff; }
.btn-coh-outline { background:transparent; color:var(--coh-primary); border:2px solid var(--coh-primary); padding:.65rem 1.4rem; border-radius:8px; font-weight:600; }
.btn-coh-outline:hover { background:var(--coh-primary); color:#fff; }
.btn-gold { background:var(--coh-accent); color:#1f2937; border:none; padding:.75rem 1.5rem; border-radius:8px; font-weight:600; }
.btn-gold:hover { background:var(--coh-accent-dark); color:#1f2937; }

a { color:var(--coh-primary); text-decoration:none; }
a:hover { color:var(--coh-primary-dark); text-decoration:underline; }

/* Inputs: 16px to prevent iOS zoom */
.form-control, .form-select { font-size:16px; min-height:44px; }

/* ── Top Bar ─────────────────────────────────────────── */
.topbar { background:var(--coh-primary); color:#fff; font-size:.85rem; padding:.4rem 0; }
.topbar a { color:#fff; }
.topbar a:hover { color:var(--coh-accent); text-decoration:none; }
.topbar .container { gap:1rem; }

/* ── Navbar ─────────────────────────────────────────── */
.coh-navbar { background:var(--coh-bg); border-bottom:1px solid var(--coh-border); padding:.65rem 0; position:sticky; top:0; z-index:1020; box-shadow:0 2px 8px rgba(0,0,0,.04); }
.coh-navbar .container { gap:1rem; }
.coh-brand { display:flex; align-items:center; gap:.85rem; font-weight:800; color:var(--coh-primary); font-family:'Poppins', sans-serif; font-size:1.38rem; line-height:1.02; flex:0 0 auto; }
.coh-brand img { width:82px; height:82px; object-fit:contain; }
.coh-brand-text { display:block; }
.coh-brand-text span { display:block; }
.coh-nav-links { list-style:none; padding:0; margin:0; display:flex; gap:1rem; align-items:center; justify-content:flex-end; flex:1 1 auto; min-width:0; }
.coh-nav-links a { color:var(--coh-ink); font-weight:500; font-size:.92rem; white-space:nowrap; padding:.5rem 0; border-bottom:2px solid transparent; }
.coh-nav-links a:hover, .coh-nav-links a.active { color:var(--coh-primary); border-bottom-color:var(--coh-primary); text-decoration:none; }
.coh-burger { background:none; border:none; padding:.5rem; min-width:44px; min-height:44px; display:none; cursor:pointer; }
.coh-burger span { display:block; width:24px; height:2px; background:var(--coh-ink); margin:5px 0; transition:.2s; }
@media (max-width:1199.98px) {
  .topbar { font-size:.78rem; }
  .topbar .container > div:last-child span { display:none; }
  .coh-nav-links { display:none; }
  .coh-burger { display:block; }
  .coh-mobile-menu.open { display:block; }
}
@media (max-width:575.98px) {
  .coh-navbar { padding:.55rem 0; }
  .coh-brand { font-size:1.12rem; gap:.65rem; }
  .coh-brand img { width:64px; height:64px; }
}
.coh-mobile-menu { display:none; background:var(--coh-bg); border-bottom:1px solid var(--coh-border); padding:1rem 0; }
.coh-mobile-menu a { display:flex; align-items:center; gap:.75rem; padding:.875rem 1.25rem; color:var(--coh-ink); border-radius:8px; margin-bottom:.25rem; min-height:44px; }
.coh-mobile-menu a:hover { background:var(--coh-cream); color:var(--coh-primary); text-decoration:none; }

/* ── Hero ─────────────────────────────────────────── */
.coh-hero {
  position:relative;
  isolation:isolate;
  overflow:hidden;
  min-height:92vh;
  color:#fff;
  background:#0a0a0a;
}
.coh-hero-backdrop,
.coh-hero-shade {
  position:absolute;
  inset:0;
}
.coh-hero-backdrop { z-index:-3; background:#0a0a0a; }
.coh-hero-shade {
  z-index:-1;
  background:
    linear-gradient(180deg, rgba(10,12,20,.58) 0%, rgba(10,12,20,.14) 30%, rgba(10,12,20,.18) 55%, rgba(10,12,20,.78) 100%),
    linear-gradient(90deg, rgba(10,12,20,.45) 0%, rgba(10,12,20,.12) 45%, rgba(10,12,20,0) 70%);
}
/* Video carousel */
.coh-hero-video-carousel {
  position:absolute;
  inset:0;
  z-index:-2;
}
.coh-hero-video {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  opacity:0;
  transition:opacity 1.2s ease-in-out;
}
.coh-hero-video.is-active { opacity:1; }
/* Image fallback slides */
.coh-hero-slide,
.coh-hero-slide img {
  width:100%;
  height:100%;
}
.coh-hero-slide img {
  object-fit:cover;
  display:block;
}
.coh-hero-slides {
  display:none;
  position:absolute;
  inset:0;
  z-index:-2;
}
.coh-hero-slides.is-active { display:block; }
.coh-hero-slide {
  position:absolute;
  inset:0;
  margin:0;
  opacity:0;
  transition:opacity 1s ease;
}
.coh-hero-slide.is-active { opacity:1; }
.coh-hero.is-using-slides .coh-hero-video-carousel { display:none; }
.coh-hero--no-media .coh-hero-backdrop {
  background:linear-gradient(135deg, #111 0%, #1a1a2e 54%, #16213e 100%);
}
/* Hero inner layout: flex column, motto at top, content at bottom */
.coh-hero-inner {
  position:relative;
  z-index:2;
  min-height:92vh;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  padding-top:1.5rem;
  padding-bottom:2.5rem;
}
/* Motto at the top, centered */
.coh-hero-motto-top {
  text-align:center;
  padding-top:.75rem;
}
.coh-hero-motto {
  display:inline-block;
  color:#fff;
  font-family:'Poppins', system-ui, sans-serif;
  font-size:clamp(2rem, 5vw, 3.65rem);
  font-weight:800;
  line-height:1.1;
  letter-spacing:-.02em;
  text-shadow:0 4px 32px rgba(0,0,0,.6), 0 2px 8px rgba(0,0,0,.4);
  animation:cohHeroDown .9s cubic-bezier(.16,.84,.44,1) both;
}
.coh-hero-motto::after {
  content:"";
  display:block;
  width:clamp(70px, 12vw, 120px);
  height:3px;
  margin:.85rem auto 0;
  border-radius:99px;
  background:linear-gradient(90deg, transparent, var(--coh-accent) 30%, var(--coh-accent) 70%, transparent);
}
/* Bottom content area */
.coh-hero-bottom {
  max-width:680px;
  animation:cohHeroUp .9s cubic-bezier(.16,.84,.44,1) .1s both;
}
.coh-hero-eyebrow {
  display:inline-flex; align-items:center; gap:.5rem;
  font-family:'Inter',sans-serif; font-weight:600;
  font-size:.78rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--coh-accent);
  margin-bottom:.85rem;
  text-shadow:0 2px 10px rgba(0,0,0,.5);
}
.coh-hero h1 {
  color:#fff;
  font-family:'Poppins', system-ui, sans-serif;
  font-size:clamp(1.6rem, 3.6vw, 2.6rem);
  font-weight:700;
  line-height:1.12;
  letter-spacing:-.01em;
  margin-bottom:1.5rem;
  text-shadow:0 4px 24px rgba(0,0,0,.55), 0 1px 3px rgba(0,0,0,.4);
}
.coh-hero-actions { display:flex; flex-wrap:wrap; gap:1rem; align-items:center; }
@keyframes cohHeroUp { from { opacity:0; transform:translateY(22px); } to { opacity:1; transform:translateY(0); } }
@keyframes cohHeroDown { from { opacity:0; transform:translateY(-16px); } to { opacity:1; transform:translateY(0); } }
@media (prefers-reduced-motion: reduce) {
  .coh-hero-motto, .coh-hero-bottom { animation:none !important; }
}
.btn-hero-primary {
  background:var(--coh-accent);
  color:#111;
  border:2px solid var(--coh-accent);
  padding:.75rem 1.75rem;
  border-radius:8px;
  font-weight:700;
  transition:all .25s ease;
}
.btn-hero-primary:hover {
  background:var(--coh-accent-dark);
  border-color:var(--coh-accent-dark);
  color:#111;
  transform:translateY(-1px);
  box-shadow:0 6px 20px rgba(212,175,55,.35);
}
.btn-hero-outline {
  background:rgba(255,255,255,.1);
  color:#fff;
  border:2px solid rgba(255,255,255,.7);
  padding:.75rem 1.75rem;
  border-radius:8px;
  font-weight:700;
  backdrop-filter:blur(4px);
  transition:all .25s ease;
}
.btn-hero-outline:hover {
  background:#fff;
  border-color:#fff;
  color:#111;
  transform:translateY(-1px);
}
/* Video progress bars (Instagram-story style) */
.coh-hero-progress {
  position:absolute;
  bottom:1.5rem;
  left:50%;
  transform:translateX(-50%);
  display:flex;
  gap:6px;
  width:min(400px, 60vw);
  z-index:5;
}
.coh-hero-progress-bar {
  flex:1;
  height:3px;
  background:rgba(255,255,255,.25);
  border-radius:3px;
  overflow:hidden;
  cursor:pointer;
}
.coh-hero-progress-bar span {
  display:block;
  height:100%;
  width:0%;
  background:var(--coh-accent);
  border-radius:3px;
  transition:width .3s linear;
}
.coh-hero-progress-bar.is-done span { width:100%; background:rgba(255,255,255,.5); }
.coh-hero-progress-bar.is-active span { background:var(--coh-accent); }

/* Circular glowing progress ring */
.coh-hero-ring {
  position:absolute;
  top:1.25rem;
  right:1.25rem;
  z-index:6;
  width:clamp(44px, 6.5vw, 80px);
  height:auto;
  display:flex;
  align-items:center;
  justify-content:center;
  pointer-events:none;
  transform:translateZ(0);
}
.coh-hero-ring-svg { width:100%; height:auto; display:block; }
.coh-hero-ring-bg { stroke:rgba(255,255,255,0.08); }
.coh-hero-ring-progress {
  stroke-linecap:round;
  transition:stroke-dashoffset .08s linear;
  filter: drop-shadow(0 6px 14px rgba(212,175,55,0.22));
}

@media (max-width:767.98px) {
  .coh-hero-ring { right:.85rem; top:.85rem; width:48px; }
}

/* ── Hero responsive ────────────────────────────── */
@media (max-width:767.98px) {
  .coh-hero { min-height:88vh; }
  .coh-hero-inner {
    min-height:88vh; padding-top:1.25rem; padding-bottom:3.25rem;
    justify-content:flex-end; gap:2.25rem;
  }
  .coh-hero-motto-top { padding-top:1.25rem; }
  .coh-hero-motto { font-size:clamp(1.7rem, 8vw, 2.3rem); }
  .coh-hero-motto::after { margin-top:.6rem; height:2px; }
  .coh-hero-bottom { max-width:100%; }
  .coh-hero-eyebrow { font-size:.7rem; letter-spacing:.1em; margin-bottom:.65rem; }
  .coh-hero h1 { font-size:clamp(1.35rem, 6vw, 1.85rem); margin-bottom:1.25rem; }
  .coh-hero-actions { flex-direction:column; gap:.75rem; align-items:stretch; }
  .coh-hero-actions .btn { width:100%; text-align:center; }
  .coh-hero-progress { width:min(280px, 72vw); bottom:.85rem; }
}
@media (max-width:480px) {
  .coh-hero { min-height:84vh; }
  .coh-hero-inner { min-height:84vh; gap:1.75rem; }
  .coh-hero-motto { font-size:1.6rem; }
  .coh-hero h1 { font-size:1.3rem; }
}

/* ── Homepage pathways ─────────────────────────────── */
.coh-pathways {
  position:relative;
  z-index:5;
  margin-top:-3.25rem;
  padding-bottom:.75rem;
}
.coh-pathways-panel {
  display:grid;
  grid-template-columns:repeat(4, minmax(0, 1fr));
  overflow:hidden;
  border-radius:8px;
  background:linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
  box-shadow:0 22px 55px rgba(15,23,42,.22);
}
.coh-pathway-item {
  display:flex;
  min-height:132px;
  flex-direction:column;
  justify-content:center;
  gap:.25rem;
  padding:1.25rem;
  color:#fff;
  text-decoration:none;
  border-right:1px solid rgba(255,255,255,.18);
  transition:background .2s ease, transform .2s ease;
}
.coh-pathway-item:last-child { border-right:0; }
.coh-pathway-item:hover {
  background:rgba(212,175,55,.15);
  color:#fff;
  text-decoration:none;
  transform:translateY(-2px);
}
.coh-pathway-item i {
  width:42px;
  height:42px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:8px;
  background:rgba(212,175,55,.18);
  color:var(--coh-accent);
  font-size:1.35rem;
  margin-bottom:.35rem;
}
.coh-pathway-item span {
  color:rgba(255,255,255,.72);
  font-size:.85rem;
  font-weight:700;
}
.coh-pathway-item strong {
  color:#fff;
  font-family:'Poppins', system-ui, sans-serif;
  font-size:1rem;
  line-height:1.3;
}

@media (max-width: 1199.98px) {
  .coh-hero h1 { font-size:3.1rem; }
  .coh-hero-inner { grid-template-columns:minmax(0, 760px); }
  .coh-hero-dots { right:.85rem; }
}

@media (max-width: 991.98px) {
  .coh-hero,
  .coh-hero-inner { min-height:72vh; }
  .coh-hero-inner {
    grid-template-columns:1fr;
    align-items:center;
    padding-top:3.25rem;
    padding-bottom:5.25rem;
  }
  .coh-hero h1 { font-size:2.65rem; }
  .coh-hero p { font-size:1.05rem; max-width:620px; }
  .coh-hero-dots {
    top:auto;
    right:auto;
    left:calc(var(--bs-gutter-x, 1.5rem) * .5);
    bottom:2.25rem;
    transform:none;
    flex-direction:row;
    gap:.35rem;
  }
  .coh-hero-dots button {
    width:auto;
    min-width:44px;
    padding:.25rem .2rem .25rem 1.75rem;
    text-align:left;
  }
  .coh-hero-dots button::before { width:18px; }
  .coh-hero-dots button[aria-current="true"]::before { width:24px; }
  .coh-pathways-panel { grid-template-columns:repeat(2, minmax(0, 1fr)); }
  .coh-pathway-item:nth-child(2n) { border-right:0; }
  .coh-pathway-item:nth-child(-n+2) { border-bottom:1px solid rgba(255,255,255,.18); }
}

@media (max-width: 575.98px) {
  .coh-hero,
  .coh-hero-inner { min-height:auto; }
  .coh-hero-shade {
    background:
      linear-gradient(90deg, rgba(9,13,23,.8) 0%, rgba(9,13,23,.54) 100%),
      linear-gradient(0deg, rgba(9,13,23,.62) 0%, rgba(9,13,23,.08) 52%, rgba(9,13,23,.18) 100%);
  }
  .coh-hero-inner {
    padding-top:2.25rem;
    padding-bottom:2.75rem;
  }
  .coh-hero h1 {
    font-size:2.15rem;
    line-height:1.12;
  }
  .coh-hero p {
    font-size:1rem;
    margin-bottom:1.5rem;
  }
  .coh-hero .badge-tag {
    font-size:.78rem;
    max-width:100%;
    white-space:normal;
  }
  .coh-hero-actions { gap:.75rem; }
  .coh-hero-actions .btn {
    width:100%;
    justify-content:center;
  }
  .coh-hero-scroll { display:none; }
  .coh-pathways {
    margin-top:0;
    padding:1rem 0 0;
    background:#fff;
  }
  .coh-pathways-panel { grid-template-columns:1fr; }
  .coh-pathway-item {
    min-height:104px;
    border-right:0;
    border-bottom:1px solid rgba(255,255,255,.18);
  }
  .coh-pathway-item:last-child { border-bottom:0; }
  .coh-pathway-item:nth-child(-n+2) { border-bottom:1px solid rgba(255,255,255,.18); }
}

@media (prefers-reduced-motion: reduce) {
  .coh-hero-slide,
  .coh-pathway-item {
    transition:none;
  }
  .coh-pathway-item:hover { transform:none; }
}

/* ── Sections ─────────────────────────────────────────── */
.coh-section { padding:4rem 0; }
.coh-section-title { font-size:clamp(1.6rem, 3.2vw, 2.25rem); margin-bottom:.5rem; }
.coh-section-eyebrow { color:var(--coh-primary); text-transform:uppercase; letter-spacing:.12em; font-size:.8rem; font-weight:700; margin-bottom:.75rem; display:block; }
.coh-section-lead { color:var(--coh-muted); font-size:1.05rem; max-width:740px; margin-bottom:2.5rem; }

/* ── Cards ─────────────────────────────────────────── */
.coh-card { background:var(--coh-surface); border:1px solid var(--coh-border); border-radius:12px; padding:1.75rem; height:100%; transition:.25s; }
.coh-card:hover { box-shadow:0 12px 30px rgba(178,34,52,.12); transform:translateY(-3px); border-color:rgba(178,34,52,.3); }
.coh-card-icon { width:56px; height:56px; border-radius:12px; background:var(--coh-cream); color:var(--coh-primary); display:inline-flex; align-items:center; justify-content:center; font-size:1.6rem; margin-bottom:1rem; }
.coh-card h3 { font-size:1.2rem; margin-bottom:.5rem; }

/* ── Stat strip ─────────────────────────────────────────── */
.coh-stats { background:var(--coh-cream); padding:3rem 0; }
.coh-stat-number { font-family:'Poppins', sans-serif; font-size:clamp(2rem, 5vw, 3rem); font-weight:800; color:var(--coh-primary); line-height:1; }
.coh-stat-label { color:var(--coh-muted); text-transform:uppercase; letter-spacing:.08em; font-size:.8rem; font-weight:600; }

/* ── Gallery preview ─────────────────────────────────────── */
.coh-gallery-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(220px,1fr)); gap:.75rem; }
.coh-gallery-grid a { position:relative; overflow:hidden; border-radius:10px; aspect-ratio:1; display:block; }
.coh-gallery-grid img { width:100%; height:100%; object-fit:cover; transition:.3s; }
.coh-gallery-grid a:hover img { transform:scale(1.05); }
.coh-gallery-item { background:#fff; border:1px solid var(--coh-border); border-radius:12px; overflow:hidden; }
.coh-gallery-media { width:100%; height:100%; aspect-ratio:1; object-fit:cover; display:block; }
.coh-gallery-caption {
  padding:.6rem .75rem;
  font-size:.9rem;
  line-height:1.35;
  color:#111827;
  background:linear-gradient(180deg, #fff, #f9fafb);
  border-top:1px solid var(--coh-border);
  min-height:2.5rem;
}
.coh-media-badge {
  position:absolute; right:.5rem; bottom:.5rem;
  background:rgba(15,23,42,.82); color:#fff;
  padding:.2rem .5rem; border-radius:999px;
  font-size:.75rem; font-weight:600;
}

/* ── Testimonial card ─────────────────────────────────────── */
.coh-testi { background:var(--coh-surface); border-left:4px solid var(--coh-accent); padding:1.5rem; border-radius:8px; height:100%; }
.coh-testi blockquote { font-style:italic; margin-bottom:1rem; color:var(--coh-ink); }
.coh-testi .who { font-weight:600; color:var(--coh-primary); font-size:.9rem; }
.coh-testi .role { color:var(--coh-muted); font-size:.85rem; }

/* ── Our Team ─────────────────────────────────────────── */
.coh-team-group-section { margin-top:2.75rem; }
.coh-team-card {
  height:100%;
  overflow:hidden;
  border:1px solid var(--coh-border);
  border-radius:8px;
  background:var(--coh-surface);
  box-shadow:0 10px 26px rgba(15,23,42,.06);
  transition:transform .22s ease, box-shadow .22s ease, border-color .22s ease;
}
.coh-team-card:hover {
  transform:translateY(-3px);
  border-color:rgba(178,34,52,.24);
  box-shadow:0 18px 38px rgba(15,23,42,.11);
}
.coh-team-photo {
  aspect-ratio:4/3;
  background:linear-gradient(135deg, var(--coh-cream), #fff);
  color:var(--coh-primary);
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:3rem;
}
.coh-team-photo img { width:100%; height:100%; object-fit:cover; display:block; }
.coh-team-body { padding:1.25rem; }
.coh-team-group {
  display:inline-flex;
  align-items:center;
  color:var(--coh-primary);
  font-size:.72rem;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
  margin-bottom:.55rem;
}
.coh-team-card h3 { font-size:1.12rem; margin-bottom:.35rem; }
.coh-team-role { color:var(--coh-accent-dark); font-weight:800; font-size:.92rem; margin-bottom:.7rem; }
.coh-team-body p { color:var(--coh-muted); font-size:.94rem; margin-bottom:0; }
.coh-team-bio { margin-top:.8rem; }
.coh-team-contact { display:flex; flex-wrap:wrap; gap:.5rem; margin-top:1rem; }
.coh-team-contact a {
  display:inline-flex;
  align-items:center;
  gap:.4rem;
  min-height:38px;
  padding:.45rem .75rem;
  border:1px solid var(--coh-border);
  border-radius:999px;
  color:var(--coh-primary);
  font-weight:700;
  font-size:.85rem;
  text-decoration:none;
}
.coh-team-contact a:hover { background:var(--coh-primary); color:#fff; border-color:var(--coh-primary); }
.coh-empty-panel {
  display:flex;
  flex-direction:column;
  gap:.35rem;
  padding:1.4rem;
  border:1px dashed rgba(178,34,52,.35);
  border-radius:8px;
  background:#fff;
  color:var(--coh-muted);
}
.coh-empty-panel strong { color:var(--coh-ink); }

/* ── School Life cards ─────────────────────────────────── */
.coh-school-life-card {
  height:100%;
  overflow:hidden;
  border:1px solid var(--coh-border);
  border-radius:8px;
  background:var(--coh-surface);
  box-shadow:0 10px 26px rgba(15,23,42,.06);
  transition:transform .22s ease, box-shadow .22s ease, border-color .22s ease;
}
.coh-school-life-card:hover {
  transform:translateY(-3px);
  border-color:rgba(178,34,52,.24);
  box-shadow:0 18px 38px rgba(15,23,42,.11);
}
.coh-school-life-image {
  width:100%;
  aspect-ratio:16/10;
  object-fit:cover;
  display:block;
  background:var(--coh-cream);
}
.coh-school-life-body { padding:1.35rem; }
.coh-school-life-icon {
  width:56px;
  height:56px;
  border-radius:8px;
  background:var(--coh-cream);
  color:var(--coh-primary);
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:1.55rem;
  margin-bottom:1rem;
}
.coh-school-life-kicker {
  display:block;
  color:var(--coh-primary);
  font-size:.74rem;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
  margin-bottom:.5rem;
}
.coh-school-life-card h3 { font-size:1.15rem; margin-bottom:.55rem; }
.coh-school-life-card p { color:var(--coh-muted); font-size:.95rem; line-height:1.65; margin-bottom:0; }
.coh-school-life-card--expanded .coh-school-life-body { padding:1.5rem; }
.coh-school-life-card--expanded .coh-school-life-icon,
.coh-school-life-card--feature .coh-school-life-icon { margin-bottom:.85rem; }
.coh-school-life-details {
  margin-top:1rem;
  padding-top:.9rem;
  border-top:1px solid var(--coh-border);
}
.coh-school-life-details summary {
  min-height:36px;
  cursor:pointer;
  color:var(--coh-primary);
  font-weight:800;
}
.coh-school-life-details p { margin-top:.6rem; }
.coh-school-life-extra {
  margin-top:.85rem;
  padding-top:.85rem;
  border-top:1px solid var(--coh-border);
}

/* ── CTA banner ─────────────────────────────────────── */
.coh-cta { background:linear-gradient(135deg, var(--coh-accent) 0%, var(--coh-accent-dark) 100%); color:#1f2937; padding:3.5rem 0; }
.coh-cta h2 { color:#1f2937; }

/* ── Footer ─────────────────────────────────────────── */
.coh-footer { background:linear-gradient(180deg, #111827 0%, #182334 100%); color:#dbe4ef; padding:3.5rem 0 1.5rem; border-top:1px solid rgba(255,255,255,.08); }
.coh-footer h5 { color:#fff; margin-bottom:1rem; font-size:1rem; text-transform:uppercase; letter-spacing:.12em; font-weight:700; }
.coh-footer a { color:#e5edf7; }
.coh-footer a:hover { color:var(--coh-accent); text-decoration:none; }
.coh-footer ul { list-style:none; padding:0; margin:0; }
.coh-footer ul li { padding:.25rem 0; }
.coh-footer-social { display:flex; flex-wrap:wrap; gap:.5rem; }
.coh-footer-social-link { display:inline-flex; width:42px; height:42px; align-items:center; justify-content:center; background:rgba(255,255,255,.10); color:#fff; border:1px solid rgba(255,255,255,.14); border-radius:50%; transition:.2s; }
.coh-footer-social-link:hover { background:var(--coh-primary); color:#fff; border-color:var(--coh-primary); text-decoration:none; transform:translateY(-2px); }
.coh-footer-social-link.is-disabled { color:rgba(255,255,255,.48); cursor:not-allowed; }
.coh-footer-social-link.is-disabled:hover { background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.14); transform:none; }
.coh-footer-bottom { border-top:1px solid rgba(255,255,255,.12); margin-top:2.5rem; padding-top:1.5rem; font-size:.88rem; color:#cbd5e1; }
.coh-footer-bottom a { color:var(--coh-accent); }

/* ── Page banner (interior pages) ─────────────────────── */
.coh-page-banner { background:linear-gradient(135deg, var(--coh-primary) 0%, var(--coh-primary-dark) 100%); color:#fff; padding:3.5rem 0; }
.coh-page-banner h1 { color:#fff; margin-bottom:.5rem; }
.coh-page-banner .breadcrumb { background:transparent; padding:0; margin:0; }
.coh-page-banner .breadcrumb a, .coh-page-banner .breadcrumb-item { color:rgba(255,255,255,.85); }
.coh-page-banner .breadcrumb-item.active { color:var(--coh-accent); }
.coh-page-banner .breadcrumb-item+.breadcrumb-item::before { color:rgba(255,255,255,.5); }

/* ── PWA install banner ──────────────────────────────── */
#pwa-install-banner { position:fixed; bottom:1rem; left:1rem; right:1rem; max-width:480px; margin:auto; background:var(--coh-primary); color:#fff; padding:1rem 1.25rem; border-radius:12px; display:none; align-items:center; justify-content:space-between; gap:1rem; box-shadow:0 8px 24px rgba(0,0,0,.2); z-index:1050; }
#pwa-install-banner.show { display:flex; }

/* ── Photo booth modal ─────────────────────────────── */
.coh-lightbox-modal .modal-dialog {
  transition:transform .18s ease-out, opacity .18s ease-out;
}
.coh-lightbox-modal .modal-content {
  background:radial-gradient(circle at top right, rgba(35,48,73,.62), rgba(9,11,18,.96));
  border:1px solid rgba(255,255,255,.18);
  border-radius:14px;
  box-shadow:0 22px 70px rgba(0,0,0,.55);
  backdrop-filter:blur(4px);
}
.coh-lightbox-modal .modal-header {
  color:#fff;
  align-items:flex-start;
  padding:.75rem .9rem 0;
}
.coh-lightbox-modal .modal-body {
  position:relative;
  padding:.6rem 3.75rem 1.35rem;
  text-align:center;
}
.coh-lightbox-modal #cohLightboxImage,
.coh-lightbox-modal #cohLightboxVideo {
  max-width:100%;
  max-height:75vh;
  object-fit:contain;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.14);
  box-shadow:0 12px 36px rgba(0,0,0,.45);
}
.coh-lightbox-modal #cohLightboxVideo { width:100%; background:#000; }
.coh-lightbox-title {
  max-width:78%;
  background:linear-gradient(180deg, rgba(15,23,42,.9), rgba(15,23,42,.72));
  border:1px solid rgba(255,255,255,.14);
  color:#f8fafc;
  padding:.42rem .75rem;
  border-radius:10px;
  font-size:.95rem;
  line-height:1.3;
  text-shadow:0 1px 2px rgba(0,0,0,.65);
  white-space:normal;
  overflow:hidden;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
}
.coh-lightbox-actions { margin-left:auto; display:flex; gap:.35rem; }
.coh-lightbox-btn {
  width:34px;
  height:34px;
  border-radius:9px;
  border:1px solid rgba(255,255,255,.45);
  color:#fff;
  background:rgba(15,23,42,.7);
}
.coh-lightbox-btn:hover {
  background:rgba(178,34,52,.92);
  color:#fff;
  border-color:rgba(255,255,255,.85);
}
.coh-lightbox-modal .coh-lightbox-nav {
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  width:44px;
  height:44px;
  border-radius:50%;
  border:1px solid rgba(255,255,255,.42);
  background:linear-gradient(180deg, rgba(7,11,24,.7), rgba(7,11,24,.5));
  color:#fff;
  font-size:1.35rem;
  line-height:1;
  cursor:pointer;
  box-shadow:0 8px 18px rgba(0,0,0,.35);
}
.coh-lightbox-modal .coh-lightbox-nav.prev { left:12px; }
.coh-lightbox-modal .coh-lightbox-nav.next { right:12px; }
.coh-lightbox-modal .coh-lightbox-nav:hover {
  background:rgba(178,34,52,.94);
  border-color:rgba(255,255,255,.78);
}
.coh-lightbox-modal .btn-close.btn-close-white { opacity:.95; }
.coh-lightbox-modal .btn-close.btn-close-white:hover { opacity:1; transform:scale(1.05); }
@media (max-width: 575.98px) {
  .coh-lightbox-modal .modal-content { border-radius:0; border-left:none; border-right:none; }
  .coh-lightbox-modal .modal-header { padding:.45rem .45rem 0; }
  .coh-lightbox-modal .modal-body { padding:.35rem .35rem .85rem; }
  .coh-lightbox-modal .coh-lightbox-nav { width:36px; height:36px; font-size:1.1rem; }
  .coh-lightbox-modal .coh-lightbox-nav.prev { left:4px; }
  .coh-lightbox-modal .coh-lightbox-nav.next { right:4px; }
  .coh-lightbox-title { max-width:58vw; font-size:.85rem; }
}

/* ── Utility ─────────────────────────────────────────── */
.text-coh { color:var(--coh-primary)!important; }
.bg-cream { background:var(--coh-cream); }
.skip-link { position:absolute; top:-100px; left:0; background:var(--coh-primary); color:#fff; padding:.5rem 1rem; z-index:9999; }
.skip-link:focus { top:0; }

/* ── First-visit preloader / splash ──────────────────── */
.coh-preloader { display:none; }
html.coh-preloading { overflow:hidden; }
html.coh-preloading body { overflow:hidden; }
html.coh-preloading .coh-preloader {
  display:flex; position:fixed; inset:0; z-index:100000;
  align-items:center; justify-content:center; text-align:center;
  background:
    radial-gradient(1200px 600px at 50% -10%, rgba(212,175,55,.18), transparent 60%),
    linear-gradient(160deg, #ffffff 0%, var(--coh-cream) 55%, #fff6ea 100%);
  -webkit-font-smoothing:antialiased;
}
.coh-preloader__inner {
  width:min(90vw, 460px); padding:1.5rem;
  display:flex; flex-direction:column; align-items:center;
}
.coh-preloader__logo-wrap {
  position:relative; width:120px; height:120px; margin-bottom:1.25rem;
  display:flex; align-items:center; justify-content:center;
}
.coh-preloader__logo {
  width:96px; height:auto; display:block;
  filter:drop-shadow(0 8px 22px rgba(178,34,52,.18));
  animation:cohPreLogo 2.4s ease-in-out infinite;
}
.coh-preloader__ring {
  position:absolute; inset:0; border-radius:50%;
  border:3px solid rgba(178,34,52,.12);
  border-top-color:var(--coh-primary);
  border-right-color:var(--coh-accent);
  animation:cohPreSpin 1.05s linear infinite;
}
.coh-preloader__welcome {
  margin:0; font-family:'Inter',sans-serif; font-weight:500;
  letter-spacing:.18em; text-transform:uppercase; font-size:.72rem;
  color:var(--coh-muted); opacity:0; animation:cohPreUp .6s ease forwards .15s;
}
.coh-preloader__brand {
  margin:.15rem 0 .35rem; font-family:'Poppins',sans-serif; font-weight:800;
  font-size:clamp(1.5rem, 5vw, 2.1rem); line-height:1.1; color:var(--coh-ink);
  opacity:0; animation:cohPreUp .6s ease forwards .28s;
}
.coh-preloader__motto {
  display:flex; align-items:center; justify-content:center; gap:.7rem;
  margin:.1rem 0 .6rem; width:100%; opacity:0; animation:cohPreUp .6s ease forwards .38s;
}
.coh-preloader__motto::before, .coh-preloader__motto::after {
  content:""; height:1px; flex:1 1 auto; max-width:46px;
  background:linear-gradient(90deg, transparent, var(--coh-accent));
}
.coh-preloader__motto::after { background:linear-gradient(90deg, var(--coh-accent), transparent); }
.coh-preloader__motto span {
  font-family:'Poppins',sans-serif; font-weight:700; white-space:nowrap;
  font-size:clamp(.82rem,2.7vw,1rem); letter-spacing:.01em; color:var(--coh-accent-dark);
}
.coh-preloader__tagline {
  margin:0 0 1.4rem; font-size:clamp(.85rem,2.6vw,.98rem); color:var(--coh-primary-dark);
  font-weight:500; opacity:0; animation:cohPreUp .6s ease forwards .5s;
}
.coh-preloader__progress {
  width:min(72vw, 240px); height:5px; border-radius:99px;
  background:rgba(23,32,51,.08); overflow:hidden; margin-bottom:1rem;
  opacity:0; animation:cohPreUp .5s ease forwards .5s;
}
.coh-preloader__progress-fill {
  display:block; height:100%; width:0; border-radius:99px;
  background:linear-gradient(90deg, var(--coh-primary), var(--coh-accent));
  animation:cohPreBar var(--coh-pre-progress, 3800ms) cubic-bezier(.33,.1,.25,1) forwards;
}
.coh-preloader__quote {
  margin:0; min-height:1.4em; font-size:.85rem; font-style:italic; color:var(--coh-muted);
  opacity:0; animation:cohPreUp .6s ease forwards .7s;
}
.coh-preloader__skip {
  margin-top:1.5rem; background:transparent; border:0; cursor:pointer;
  font-size:.72rem; letter-spacing:.06em; text-transform:uppercase;
  color:var(--coh-muted); padding:.4rem .8rem; border-radius:99px;
  opacity:0; animation:cohPreUp .6s ease forwards 1s; transition:color .2s, background .2s;
}
.coh-preloader__skip:hover, .coh-preloader__skip:focus-visible {
  color:var(--coh-primary); background:rgba(178,34,52,.08); outline:none;
}
.coh-preloader.coh-preloader--done {
  opacity:0; visibility:hidden; transition:opacity .55s ease, visibility .55s ease;
}
@keyframes cohPreSpin { to { transform:rotate(360deg); } }
@keyframes cohPreLogo {
  0%,100% { transform:translateY(0) scale(1); }
  50%     { transform:translateY(-6px) scale(1.03); }
}
@keyframes cohPreUp {
  from { opacity:0; transform:translateY(10px); }
  to   { opacity:1; transform:translateY(0); }
}
@keyframes cohPreBar {
  0%   { width:0; }
  55%  { width:72%; }
  100% { width:100%; }
}
@media (prefers-reduced-motion: reduce) {
  .coh-preloader__logo, .coh-preloader__ring,
  .coh-preloader__welcome, .coh-preloader__brand, .coh-preloader__motto, .coh-preloader__tagline,
  .coh-preloader__progress, .coh-preloader__quote, .coh-preloader__skip {
    animation:none !important; opacity:1 !important; transform:none !important;
  }
  .coh-preloader__ring { border-top-color:var(--coh-primary); }
  .coh-preloader__progress-fill { width:100%; animation:none !important; }
}
