/* ============================================================
   STYLE.CSS — Sri Sai Vidhyashala Website
   ============================================================
   HOW TO CUSTOMIZE:
   - Colors: Change values in the :root section at the top
   - Fonts: Change the font-family in the body section
   - Spacing: Adjust padding/margin values
   - The file is split into labeled sections for easy editing
   ============================================================ */


/* ============================================================
   SECTION 1: COLOR VARIABLES
   Change any color here and it updates everywhere on the site!
   ============================================================ */
:root {
  /* ============================================================
     MAIN COLORS — change these to retheme the whole site!
     Current theme: Warm Maroon + Gold
     ✏️ --color-primary    = main maroon (navbar, buttons, headings)
     ✏️ --color-secondary  = gold accent (highlights, active links)
     ✏️ --color-accent     = deep rose   (hover effects, underlines)
  ============================================================ */

  /* --- Main Brand Colors --- */
  --color-primary:    #7b1d35;   /* Rich maroon   — navbar, buttons, headings */
  --color-secondary:  #e8a838;   /* Warm gold      — accents, highlights */
  --color-accent:     #c0395a;   /* Deep rose-red  — hover effects, underlines */

  /* --- Background Colors --- */
  --color-bg:         transparent;   /* Transparent — body handles the grey bg */
  --color-bg-soft:    transparent;   /* Transparent — let body grey show through */
  --color-white:      #ffffff;

  /* --- Text Colors --- */
  --color-text:       #2d1a20;   /* Near-black maroon — body text */
  --color-text-muted: #7a5560;   /* Muted mauve        — secondary text */

  /* --- Card & Panel Colors --- */
  --color-card-bg:    rgba(255, 253, 253, 0.93);   /* Cards stay white to pop against grey */
  --color-card-border: rgba(123, 29, 53, 0.12);

  /* --- Navbar --- */
  --color-nav-bg:     rgba(100, 18, 36, 0.96);   /* Deep maroon navbar */
  --color-nav-text:   #ffffff;

  /* --- Footer --- */
  --color-footer-bg:  #3a0d18;   /* Very deep maroon footer */
  --color-footer-text: #f5d5dc;  /* Pale rose text */

  /* --- Shadows & Radius --- */
  --shadow-sm:  0 2px 8px rgba(123, 29, 53, 0.10);
  --shadow-md:  0 6px 20px rgba(123, 29, 53, 0.16);
  --shadow-lg:  0 12px 35px rgba(123, 29, 53, 0.22);
  --radius-sm:  8px;
  --radius-md:  16px;
  --radius-lg:  28px;
}


/* ============================================================
   SECTION 2: GLOBAL RESET
   Removes default browser spacing so our design is consistent
   ============================================================ */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

/* Smooth scrolling when clicking anchor links */
html {
  scroll-behavior: smooth;
}


/* ============================================================
   SECTION 3: BODY — Main page background
   ============================================================
   The page has TWO background layers stacked on top of each other:

   Layer 1 (bottom) — obg.png
     Your decorative image, fixed so it stays put while scrolling.
     It shows very faintly underneath everything.

   Layer 2 (top) — grey wash
     A solid translucent grey sits on top of obg.png.
     This is what keeps the page from feeling too busy or dark.

   ✏️ HOW TO ADJUST THE GREY TONE:
     Find rgba(235, 232, 232, 0.94) below.
     - Change the first three numbers (235,232,232) to shift the hue:
         235,232,232 = neutral warm grey  ← current
         230,230,235 = cool blue-grey
         235,230,228 = warm pinkish-grey
     - Change the last number (0.88) to control opacity:
         0.75 = more image visible (busier)
         0.88 = balanced  ← current
         0.95 = nearly solid grey (very clean)

   ✏️ TO CHANGE THE BACKGROUND IMAGE:
     Change 'obg.png' below to your filename (obg.jpg also works).
   ============================================================ */
body {
  font-family: 'Nunito', 'Segoe UI', sans-serif;

  /* ── Background image — obg.png fills the whole screen, fixed ──
     ✏️ Change 'obg.png' to your filename (e.g. obg.jpg)          */
  background-image: url('obg.png');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  background-attachment: fixed;   /* Stays put while you scroll (parallax) */

  /* Fallback colour shown before obg.png loads */
  background-color: #d6d3d3;

  color: var(--color-text);
  overflow-x: hidden;

  /* Page fade-in effect (controlled by JS) */
  opacity: 0;
  transition: opacity 0.5s ease;
}

/* When JS adds the 'loaded' class, the page becomes visible */
body.loaded {
  opacity: 1;
}

/* Mobile: fixed attachment can glitch on phones */
@media (max-width: 768px) {
  body { background-attachment: scroll; }
}


/* ============================================================
   SECTION 4: PAGE LOADER
   The spinning/pulsing logo shown while the page loads
   ============================================================ */
#loader {
  position: fixed;          /* Stays in place even when scrolling */
  width: 100%;
  height: 100vh;            /* Full screen height */
  background: #e8e6e6;

  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  gap: 16px;

  z-index: 9999;            /* On top of everything */
  transition: opacity 0.5s ease;
}

/* Loader text below the logo */
#loader p {
  color: var(--color-primary);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 2px;
  text-transform: uppercase;
  animation: loaderPulse 1.4s ease-in-out infinite;
}

/* Logo image in the loader */
#loader img {
  width: 90px;
  height: auto;
  animation: loaderBounce 1.4s ease-in-out infinite;
}

/* Animations for the loader */
@keyframes loaderBounce {
  0%, 100% { transform: translateY(0) scale(1); }
  50%       { transform: translateY(-12px) scale(1.05); }
}
@keyframes loaderPulse {
  0%, 100% { opacity: 0.5; }
  50%       { opacity: 1; }
}


/* ============================================================
   SECTION 5: GREY WASH OVERLAY
   This pseudo-element sits on top of obg.png (the body
   background image) and tints it with a grey wash, keeping
   the page light and readable while the image shows through.

   ✏️ HOW TO ADJUST:
   • Make the grey DARKER (more opaque):
       Change 0.78 → 0.88  (less image visible)
   • Make the grey LIGHTER (more image shows through):
       Change 0.78 → 0.60  (more image visible)
   • Change the grey HUE:
       216, 211, 211 = current warm grey
       210, 210, 216 = cool blue-grey
       218, 210, 210 = warm pinkish-grey
   • Add a maroon/gold tint (uncomment the radial-gradients below)
   ============================================================ */
body::before {
  content: "";
  position: fixed;
  inset: 0;                 /* Covers the entire viewport */
  pointer-events: none;     /* Never blocks clicks or hover */

  /* Stack order:
     body (z-index auto) → body::before (z-index 0) → page content (z-index 1+) */
  z-index: 0;

  background:
    /* ── Optional warm tints — uncomment to enable ──
    radial-gradient(ellipse 55% 40% at 5%  5%,  rgba(123,29,53,0.06), transparent),
    radial-gradient(ellipse 55% 40% at 95% 95%, rgba(232,168,56,0.07), transparent), */

    /* ── Grey wash — the main overlay ──
       ✏️ Change 0.78 to adjust how much of obg.png shows through */
    rgba(216, 211, 211, 0.78);
}

/* All page content must sit ABOVE the grey wash */
nav, section, footer, .stats-bar, .notices-bar,
.disclosure-banner, .page-banner, #loader {
  position: relative;
  z-index: 1;
}


/* ============================================================
   SECTION 6: NAVBAR (Top navigation bar)
   ============================================================ */

/* Navbar slides down on page load */
@keyframes navSlideDown {
  from { transform: translateY(-100%); opacity: 0; }
  to   { transform: translateY(0);     opacity: 1; }
}

nav {
  position: fixed;          /* Sticks to the top when you scroll */
  top: 0;
  width: 100%;
  height: 65px;

  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 6%;

  background: var(--color-nav-bg);
  backdrop-filter: blur(10px);   /* Frosted glass effect */

  box-shadow: 0 2px 15px rgba(0,0,0,0.15);
  z-index: 1000;

  /* Entrance animation */
  animation: navSlideDown 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;

  /* Smooth background change on scroll (controlled by JS) */
  transition: background 0.3s ease, box-shadow 0.3s ease;
}

/* --- Logo + School Name side-by-side --- */
.logo-container {
  display: flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
}

/* Logo spins gently on hover */
.logo-container img {
  height: 38px;
  width: auto;
  filter: drop-shadow(0 1px 3px rgba(0,0,0,0.2));
  transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1),
              filter 0.3s ease;
}

.logo-container:hover img {
  transform: rotate(12deg) scale(1.1);
  filter: drop-shadow(0 2px 8px rgba(232, 168, 56, 0.55));
}

/* School name with shimmer effect on hover */
.logo-container h3 {
  color: var(--color-nav-text);
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 0.3px;
  background: linear-gradient(
    90deg,
    var(--color-nav-text) 0%,
    var(--color-secondary) 45%,
    var(--color-nav-text) 90%
  );
  background-size: 200% auto;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  transition: background-position 0.6s ease;
}

.logo-container:hover h3 {
  background-position: right center;
}

/* --- Navigation links list --- */
nav ul {
  display: flex;
  gap: 4px;
  list-style: none;
}

/* Stagger nav items in on load */
nav ul li {
  animation: navSlideDown 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
}
nav ul li:nth-child(1) { animation-delay: 0.08s; }
nav ul li:nth-child(2) { animation-delay: 0.14s; }
nav ul li:nth-child(3) { animation-delay: 0.20s; }

/* Each nav link — underline slide-in on hover */
nav a {
  position: relative;
  color: var(--color-nav-text);
  text-decoration: none;
  font-size: 14px;
  font-weight: 600;
  padding: 6px 16px;
  border-radius: 20px;
  transition: color 0.25s ease, background 0.25s ease;
  overflow: hidden;
}

/* Gold underline that slides in from left on hover */
nav a::after {
  content: "";
  position: absolute;
  bottom: 4px;
  left: 16px;
  right: 16px;
  height: 2px;
  background: var(--color-secondary);
  border-radius: 2px;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}

nav a:hover::after {
  transform: scaleX(1);
}

/* Hover effect — subtle background + brightness */
nav a:hover {
  background: rgba(255, 255, 255, 0.12);
  color: var(--color-secondary);
}

/* Active / current page link — gold pill */
nav a.active {
  background: var(--color-secondary);
  color: var(--color-primary);
  font-weight: 700;
}

/* Active link keeps the underline hidden (already has pill) */
nav a.active::after {
  display: none;
}

/* --- Mobile: shrink gaps --- */
@media (max-width: 768px) {
  nav { padding: 0 4%; }
  nav ul { gap: 2px; }
  nav a { padding: 5px 10px; font-size: 13px; }
  .logo-container h3 { font-size: 13px; }
}


/* ============================================================
   SECTION 7: HERO SLIDER (Full-screen image slideshow)
   ============================================================ */
.hero {
  position: relative;
  width: 100%;
  height: 100vh;      /* Full screen height — change to e.g. 80vh to make shorter */
  overflow: hidden;
}

/* --- Slide container --- */
.slides {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
}

/* Each slide */
.slide {
  position: absolute;
  width: 100%;
  height: 100%;
  opacity: 0;                     /* Hidden by default */
  transition: opacity 1s ease;   /* Smooth fade between slides */
}

/* The active (visible) slide */
.slide.active {
  opacity: 1;
}

/* Images fill the slide completely */
.slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  animation: kenBurns 14s ease-in-out infinite; /* Slow zoom effect */
}

/* Ken Burns zoom animation */
@keyframes kenBurns {
  0%   { transform: scale(1); }
  50%  { transform: scale(1.08); }
  100% { transform: scale(1); }
}

/* Dark overlay on top of slides so text is readable */
/* Change the rgba alpha (last value) to adjust darkness: 0=clear, 1=black */
.hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(0, 40, 20, 0.45) 0%,
    rgba(0, 40, 20, 0.50) 60%,
    rgba(0, 20, 10, 0.70) 100%
  );
  z-index: 1;
}

/* --- Text overlay on the hero --- */
.hero-text {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
  color: white;
  z-index: 2;
  width: 90%;
}

/* Logo + school name row */
.hero-brand {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  margin-bottom: 14px;
}

.hero-brand img {
  height: 70px;
  width: auto;
  filter: drop-shadow(0 2px 8px rgba(0,0,0,0.4));
  transition: transform 0.3s ease;
}

.hero-brand img:hover {
  transform: scale(1.05);
}

.hero-brand h1 {
  font-size: clamp(28px, 5vw, 56px);  /* Responsive font size */
  font-weight: 800;
  letter-spacing: 1px;
  text-shadow: 0 2px 12px rgba(0,0,0,0.5);
}

/* Tagline below school name */
.hero-text p {
  font-size: clamp(14px, 2vw, 20px);
  opacity: 0.92;
  text-shadow: 0 1px 6px rgba(0,0,0,0.4);
  margin-bottom: 28px;
}

/* Buttons in the hero section */
.hero-buttons {
  display: flex;
  gap: 14px;
  justify-content: center;
  flex-wrap: wrap;  /* Wraps on small screens */
}

/* Base button style */
.btn {
  display: inline-block;
  padding: 12px 28px;
  border-radius: 25px;
  font-size: 14px;
  font-weight: 700;
  text-decoration: none;
  cursor: pointer;
  border: none;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.btn:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-md);
}

/* Primary (solid) button */
.btn-primary {
  background: var(--color-secondary);   /* Orange */
  color: #fff;
}

/* Secondary (outline) button */
.btn-outline {
  background: transparent;
  color: #fff;
  border: 2px solid rgba(255,255,255,0.7);
}

.btn-outline:hover {
  background: rgba(255,255,255,0.15);
}

/* Slide arrow buttons */
.slide-btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 3;
  background: rgba(255,255,255,0.2);
  border: none;
  color: white;
  font-size: 22px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  cursor: pointer;
  transition: background 0.2s;
}

.slide-btn:hover { background: rgba(255,255,255,0.4); }
.slide-btn.prev { left: 20px; }
.slide-btn.next { right: 20px; }

/* Slide dot indicators */
.slide-dots {
  position: absolute;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 8px;
  z-index: 3;
}

.dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: rgba(255,255,255,0.5);
  cursor: pointer;
  transition: background 0.3s, transform 0.3s;
  border: none;
}

.dot.active {
  background: var(--color-secondary);
  transform: scale(1.3);
}

/* Mobile adjustments for hero */
@media (max-width: 768px) {
  .hero-brand { flex-direction: column; gap: 8px; }
}


/* ============================================================
   SECTION 8: STATS BAR (Numbers row under the hero)
   ============================================================ */
.stats-bar {
  background: var(--color-primary);
  padding: 20px 8%;
  display: flex;
  justify-content: space-around;
  flex-wrap: wrap;
  gap: 16px;
}

.stat-item {
  text-align: center;
  color: white;
}

.stat-item .stat-number {
  font-size: 32px;
  font-weight: 800;
  display: block;
  color: var(--color-secondary);
}

.stat-item .stat-label {
  font-size: 13px;
  opacity: 0.9;
  text-transform: uppercase;
  letter-spacing: 1px;
}


/* ============================================================
   SECTION 8B: VISION & MISSION SECTION
   Same look as the About section, mirrored (text left, image right)
   ============================================================ */
#vision-mission {
  padding: 90px 8%;
  background: transparent;
  position: relative;
}

/* Two-column layout: text left, image right */
.vision-container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  gap: 60px;
  max-width: 1100px;
  margin: 0 auto;
}

/* Image wrapper with decorative border (flipped to the left side) */
.vision-image {
  position: relative;
}

.vision-image::before {
  content: "";
  position: absolute;
  width: 85%;
  height: 85%;
  bottom: -16px;
  left: -16px;
  border-radius: var(--radius-lg);
  background: linear-gradient(135deg, var(--color-secondary), var(--color-primary));
  z-index: 0;
}

.vision-image img {
  position: relative;
  width: 100%;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  z-index: 1;
  transition: transform 0.5s ease;
}

.vision-image img:hover {
  transform: scale(1.02);
}

/* Text side */
.vision-text {
  text-align: left;
}

.vision-text h5 {
  color: var(--color-primary);
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  margin-bottom: 8px;
}

.vision-text h2 {
  font-size: clamp(26px, 3.5vw, 40px);
  font-weight: 800;
  color: var(--color-text);
  margin-bottom: 16px;
  text-align: left;
}

.vision-text p {
  font-size: 18px;
  line-height: 1.85;
  color: var(--color-text-muted);
  margin-bottom: 14px;
  text-align: left;
}

/* Mobile: stack vertically (text first, then image) */
@media (max-width: 768px) {
  .vision-container {
    grid-template-columns: 1fr;
    gap: 40px;
    text-align: center;
  }
  .vision-text { text-align: center; }
  .vision-text h2 { text-align: center; }
  .vision-text p { text-align: center; }
  .vision-image::before { display: none; }
}


/* ============================================================
   SECTION 9: ABOUT SECTION
   ============================================================ */
#about {
  padding: 90px 8%;
  background: transparent;
  position: relative;
}

/* Section title badge */
.section-badge {
  display: inline-block;
  background: rgba(123,29,53,0.10);
  color: var(--color-primary);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  padding: 6px 16px;
  border-radius: 20px;
  margin-bottom: 10px;
}

/* Main section heading */
.section-title {
  font-size: clamp(26px, 4vw, 40px);
  font-weight: 800;
  color: var(--color-text);
  margin-bottom: 20px;
  text-align: center;
}

/* Colored word inside heading */
.highlight {
  color: var(--color-primary);
}

/* Centered block for badge + title */
.section-header {
  text-align: center;
  margin-bottom: 50px;
}

/* Two-column layout: image left, text right */
.about-container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  gap: 60px;
  max-width: 1100px;
  margin: 0 auto;
}

/* Image wrapper with decorative border */
.about-image {
  position: relative;
}

/* Decorative offset shape behind the image */
.about-image::before {
  content: "";
  position: absolute;
  width: 85%;
  height: 85%;
  bottom: -16px;
  right: -16px;
  border-radius: var(--radius-lg);
  background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
  z-index: 0;
}

.about-image img {
  position: relative;
  width: 100%;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  z-index: 1;
  transition: transform 0.5s ease;
}

.about-image img:hover {
  transform: scale(1.02);
}

/* Text side */
.about-text {
  text-align: left;
}

.about-text h5 {
  color: var(--color-primary);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  margin-bottom: 8px;
}

.about-text h2 {
  font-size: clamp(22px, 3vw, 34px);
  font-weight: 800;
  color: var(--color-text);
  margin-bottom: 16px;
  text-align: left;
}

.about-text p {
  font-size: 15px;
  line-height: 1.85;
  color: var(--color-text-muted);
  margin-bottom: 14px;
  text-align: left;
}

/* Bullet feature list */
.about-features {
  list-style: none;
  margin: 20px 0 28px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.about-features li {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  font-weight: 600;
  color: var(--color-text);
}

/* Green checkmark circle */
.about-features li::before {
  content: "✓";
  width: 22px;
  height: 22px;
  background: var(--color-primary);
  color: white;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  flex-shrink: 0;
}

/* Mobile: stack vertically */
@media (max-width: 768px) {
  .about-container {
    grid-template-columns: 1fr;
    gap: 40px;
    text-align: center;
  }
  .about-text { text-align: center; }
  .about-text h2 { text-align: center; }
  .about-text p { text-align: center; }
  .about-features li { justify-content: center; }
  .about-image::before { display: none; }
}


/* ============================================================
   SECTION 10: NOTICES / ANNOUNCEMENTS TICKER
   A scrolling ticker bar for school notices
   ============================================================ */
.notices-bar {
  background: var(--color-secondary);
  padding: 10px 0;
  display: flex;
  align-items: center;
  overflow: hidden;
  gap: 0;
}

.notices-label {
  background: var(--color-accent);
  color: white;
  font-size: 12px;
  font-weight: 800;
  padding: 4px 16px;
  letter-spacing: 1px;
  white-space: nowrap;
  flex-shrink: 0;
  text-transform: uppercase;
}

/* The ticker marquee wrapper */
.ticker-wrapper {
  flex: 1;
  overflow: hidden;
}

/* The scrolling text */
.ticker-track {
  display: flex;
  white-space: nowrap;
  animation: ticker 30s linear infinite;  /* Change 30s to slow down or speed up */
}

.ticker-track span {
  color: white;
  font-size: 13px;
  font-weight: 600;
  padding: 0 40px;
}

.ticker-track span::after {
  content: "★";
  margin-left: 40px;
  opacity: 0.6;
}

@keyframes ticker {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }  /* Moves halfway, then loops */
}

/* Pause ticker when mouse hovers */
.ticker-wrapper:hover .ticker-track {
  animation-play-state: paused;
}


/* ============================================================
   SECTION 11: ACADEMICS CARDS
   ============================================================ */
#academics-section {
  padding: 90px 8%;
  background: transparent;
}

/* Grid of cards — auto-adjusts column count */
.cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 28px;
  max-width: 1100px;
  margin: 0 auto;
}

/* Single card */
.card {
  background: var(--color-card-bg);
  border: 1px solid var(--color-card-border);
  border-radius: var(--radius-md);
  padding: 32px 28px;
  text-align: center;
  box-shadow: var(--shadow-sm);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  position: relative;
  overflow: hidden;
}

/* Top colored stripe on the card */
.card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--color-primary), var(--color-secondary));
}

.card:hover {
  transform: translateY(-6px);
  box-shadow: var(--shadow-lg);
}

/* Icon inside the card */
.card-icon {
  font-size: 40px;
  margin-bottom: 16px;
  display: block;
}

.card h3 {
  font-size: 18px;
  font-weight: 700;
  color: var(--color-primary);
  margin-bottom: 10px;
  text-align: center;
}

.card p {
  font-size: 14px;
  color: var(--color-text-muted);
  line-height: 1.7;
  text-align: center;
}


/* ============================================================
   SECTION 11b: ACADEMIC CARD PHOTO
   The image area at the top of each academics card.
   Hovering shows a zoom overlay. Clicking opens the lightbox.
   ============================================================ */

/* Photo wrapper — sits above the card text */
.card-photo {
  position: relative;      /* Needed so the overlay sits on top */
  width: 100%;
  height: 180px;           /* ✏️ Change this to make the photo taller or shorter */
  overflow: hidden;
  border-radius: var(--radius-md) var(--radius-md) 0 0;  /* Rounded only on top */
  cursor: pointer;
  margin: -32px -28px 20px; /* Pull to card edges (matches card padding) */
  width: calc(100% + 56px); /* Compensate for the negative margin */
}

/* The photo itself */
.card-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;       /* Crops to fill the box without stretching */
  object-position: center;
  transition: transform 0.4s ease;  /* Smooth zoom on hover */
  display: block;
}

/* Zoom the photo slightly when hovering the card */
.card-photo:hover img {
  transform: scale(1.07);
}

/* Dark overlay that appears on hover with "View Photo" text */
.card-photo-overlay {
  position: absolute;
  inset: 0;                /* Covers the full photo area */
  background: rgba(123, 29, 53, 0.55);   /* Semi-transparent green */
  display: flex;
  align-items: center;
  justify-content: center;

  /* Hidden by default — fades in on hover */
  opacity: 0;
  transition: opacity 0.3s ease;
}

/* Show overlay when hovering */
.card-photo:hover .card-photo-overlay {
  opacity: 1;
}

/* Text inside the overlay */
.card-photo-overlay span {
  color: white;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0.5px;
  text-shadow: 0 1px 4px rgba(0,0,0,0.3);
}

/* The card body below the photo (icon + title + text + link) */
.card-body {
  padding-top: 4px;
}

/* "View Photo" link at the bottom of each card */
.card-photo-link {
  display: inline-block;
  margin-top: 14px;
  color: var(--color-primary);
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
  padding: 6px 16px;
  border: 2px solid var(--color-primary);
  border-radius: 20px;
  transition: background 0.2s ease, color 0.2s ease;
}

/* Hover: fill the button */
.card-photo-link:hover {
  background: var(--color-primary);
  color: white;
}

/* ============================================================
   SECTION 11c: ACADEMICS PHOTO LIGHTBOX
   Same style as the gallery lightbox — fullscreen popup.
   ============================================================ */

/* The dark full-screen backdrop */
/* Hidden by default; JavaScript adds class 'open' to show it */
#acad-lightbox {
  display: none;
  position: fixed;
  inset: 0;                        /* Covers entire screen */
  background: rgba(0, 0, 0, 0.88);
  z-index: 5000;
  justify-content: center;
  align-items: center;
  padding: 20px;
}

/* Show when JS adds .open */
#acad-lightbox.open {
  display: flex;
}

/* The enlarged photo inside the lightbox */
#acad-lightbox img {
  max-width: 90vw;
  max-height: 85vh;
  border-radius: var(--radius-md);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.6);
  object-fit: contain;             /* Shows full image without cropping */
}

/* Close (×) button — top-right corner */
#acad-lightbox .lightbox-close {
  position: absolute;
  top: 20px;
  right: 20px;
  background: white;
  color: #333;
  border: none;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  font-size: 18px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.2s;
}

#acad-lightbox .lightbox-close:hover {
  background: #f0f0f0;
}

#gallery-section {
  padding: 90px 8%;
  background: transparent;
}

/* ── Event navigation pill buttons ── */
#gallery-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  justify-content: center;
  max-width: 1100px;
  margin: 0 auto 48px;
}

.gallery-event-btn {
  padding: 10px 24px;
  border: 2px solid var(--color-primary);
  border-radius: 30px;
  background: transparent;
  color: var(--color-primary);
  font-family: inherit;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.25s ease, color 0.25s ease,
              transform 0.2s ease, box-shadow 0.2s ease;
  letter-spacing: 0.2px;
}

.gallery-event-btn:hover {
  background: rgba(123, 29, 53, 0.08);
  transform: translateY(-2px);
  box-shadow: var(--shadow-sm);
}

.gallery-event-btn.active {
  background: var(--color-primary);
  color: #fff;
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}

/* ── Event content panels ── */
/* All event panels hidden by default; only .active shows */
.gallery-event {
  display: none;
  animation: eventFadeIn 0.35s ease both;
}

.gallery-event.active {
  display: block;
}

@keyframes eventFadeIn {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ── Year heading inside an event ── */
.gallery-year {
  max-width: 1100px;
  margin: 0 auto 52px;
}

.gallery-year-heading {
  font-size: 22px;
  font-weight: 800;
  color: var(--color-primary);
  margin-bottom: 20px;
  padding-bottom: 10px;
  border-bottom: 3px solid var(--color-secondary);
  display: inline-block;
  /* Gold accent dot before the year */
  padding-left: 14px;
  position: relative;
}

.gallery-year-heading::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 6px;
  height: 6px;
  background: var(--color-secondary);
  border-radius: 50%;
}

/* ── Photo grid ── */
.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 16px;
}

.gallery img {
  width: 100%;
  height: 210px;
  object-fit: cover;
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  cursor: pointer;
  transition: transform 0.35s ease, box-shadow 0.35s ease;
}

.gallery img:hover {
  transform: scale(1.04);
  box-shadow: var(--shadow-lg);
}

/* Mobile */
@media (max-width: 600px) {
  #gallery-nav { gap: 8px; }
  .gallery-event-btn { font-size: 13px; padding: 8px 16px; }
  .gallery img { height: 160px; }
}

/* --- Lightbox (popup image viewer) --- */
/* This shows when you click a gallery image */
.lightbox {
  display: none;              /* Hidden by default */
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.85);
  z-index: 5000;
  justify-content: center;
  align-items: center;
  padding: 20px;
}

.lightbox.open {
  display: flex;
}

.lightbox img {
  max-width: 90vw;
  max-height: 85vh;
  border-radius: var(--radius-md);
  box-shadow: 0 20px 60px rgba(0,0,0,0.6);
}

/* Close button for the lightbox */
.lightbox-close {
  position: absolute;
  top: 20px;
  right: 20px;
  background: white;
  color: #333;
  border: none;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  font-size: 20px;
  cursor: pointer;
  line-height: 40px;
  text-align: center;
}


/* ============================================================
   SECTION 13: MANDATORY DISCLOSURE LINK BUTTON
   ============================================================ */
.disclosure-banner {
  background: linear-gradient(135deg, var(--color-primary), #5a1124);
  padding: 40px 8%;
  text-align: center;
}

.disclosure-banner h3 {
  color: white;
  font-size: 20px;
  font-weight: 700;
  margin-bottom: 8px;
  text-align: center;
}

.disclosure-banner p {
  color: rgba(255,255,255,0.8);
  font-size: 14px;
  margin-bottom: 20px;
  text-align: center;
}

/* The disclosure link button */
.btn-disclosure {
  display: inline-block;
  background: var(--color-secondary);
  color: white;
  padding: 12px 32px;
  border-radius: 25px;
  text-decoration: none;
  font-weight: 700;
  font-size: 14px;
  transition: transform 0.2s, box-shadow 0.2s;
}

.btn-disclosure:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 20px rgba(0,0,0,0.2);
}


/* ============================================================
   SECTION 14: CONTACT / ADMISSIONS SECTION
   ============================================================ */
#admissions {
  padding: 90px 8%;
  background: transparent;
}

.admissions-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  max-width: 1000px;
  margin: 0 auto;
}

/* Info card on the left */
.admissions-info {
  background: var(--color-card-bg);
  border: 1px solid var(--color-card-border);
  border-radius: var(--radius-md);
  padding: 36px;
  box-shadow: var(--shadow-sm);
}

.admissions-info h3 {
  font-size: 22px;
  font-weight: 700;
  color: var(--color-primary);
  margin-bottom: 20px;
  text-align: left;
}

/* Program list items */
.program-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 0;
  border-bottom: 1px solid rgba(123,29,53,0.1);
  font-size: 15px;
  font-weight: 600;
}

.program-item:last-child { border-bottom: none; }

.program-icon {
  width: 36px;
  height: 36px;
  background: rgba(123,29,53,0.10);
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
}

/* Contact card on the right */
.contact-card {
  background: linear-gradient(135deg, var(--color-primary), #5a1124);
  border-radius: var(--radius-md);
  padding: 36px;
  color: white;
}

.contact-card h3 {
  font-size: 22px;
  font-weight: 700;
  margin-bottom: 24px;
  text-align: left;
  color: white;
}

.contact-item {
  display: flex;
  gap: 14px;
  margin-bottom: 20px;
  align-items: flex-start;
}

.contact-icon {
  width: 40px;
  height: 40px;
  background: rgba(255,255,255,0.15);
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
}

.contact-item h4 {
  font-size: 13px;
  font-weight: 700;
  color: rgba(255,255,255,0.7);
  margin-bottom: 3px;
  text-align: left;
}

.contact-item p {
  font-size: 14px;
  color: white;
  line-height: 1.5;
  text-align: left;
}

.contact-item a {
  color: var(--color-secondary);
  text-decoration: none;
}

/* Map link in the card */
.map-link {
  display: inline-block;
  margin-top: 16px;
  background: rgba(255,255,255,0.15);
  color: white;
  padding: 8px 18px;
  border-radius: 20px;
  text-decoration: none;
  font-size: 13px;
  font-weight: 600;
  transition: background 0.2s;
}

.map-link:hover { background: rgba(255,255,255,0.25); }

/* Mobile stacking */
@media (max-width: 768px) {
  .admissions-grid { grid-template-columns: 1fr; }
  .admissions-info h3 { text-align: center; }
  .contact-card h3 { text-align: center; }
}


/* ============================================================
   SECTION 14b: PAGE HEADER BANNER
   The full-width banner at the top of Academics and Gallery pages.

   HOW TO SET YOUR PHOTOS:
     Academics page banner → save your photo as:  bg1.jpg  (or bg1.png)
     Gallery page banner   → save your photo as:  bg2.jpg  (or bg2.png)
     Just place the files in the same folder as the HTML files.

   TO CHANGE THE DARK OVERLAY STRENGTH:
     Find "rgba(0, 0, 0, 0.55)" below and change the last number:
       0.3 = lighter (more photo visible)
       0.6 = darker  (easier to read text on busy photos)

   TO CHANGE THE PHOTO FILE TYPE (e.g. .png instead of .jpg):
     Change "bg1.jpg" to "bg1.png" inside background-image below.
   ============================================================ */

/* Shared base style — used by both banners */
.page-banner {
  position: relative;          /* Lets us layer the overlay on top */
  padding: 120px 8% 70px;
  text-align: center;
  color: white;
  overflow: hidden;            /* Hides any image edges that peek out */

  /* Ken Burns: slow zoom on the background photo */
  background-size: cover !important;
  background-position: center !important;
  background-repeat: no-repeat !important;
  animation: bannerZoom 14s ease-in-out infinite;
}

@keyframes bannerZoom {
  0%, 100% { background-size: 105% !important; }
  50%       { background-size: 115% !important; }
}

/* Dark overlay — sits between the photo and the text */
/* Without this, white text on a bright photo is hard to read */
.page-banner::after {
  content: "";
  position: absolute;
  inset: 0;                    /* Covers the full banner */

  /* ✏️ Change 0.55 to adjust overlay darkness (0 = clear, 1 = black) */
  background: rgba(0, 0, 0, 0.55);
  z-index: 0;
}

/* All text/spans inside the banner must sit above the overlay */
.page-banner > * {
  position: relative;
  z-index: 1;
}

/* Small badge label above the heading */
.page-banner .banner-badge {
  display: inline-block;
  background: rgba(255, 255, 255, 0.20);
  padding: 4px 16px;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
}

/* Main heading */
.page-banner h1 {
  font-size: clamp(28px, 5vw, 52px);
  font-weight: 800;
  margin-top: 14px;
  text-shadow: 0 2px 12px rgba(0, 0, 0, 0.5);
  text-align: center;
}

/* Subtitle below the heading */
.page-banner p {
  opacity: 0.88;
  font-size: 16px;
  margin-top: 10px;
  text-shadow: 0 1px 6px rgba(0, 0, 0, 0.4);
  text-align: center;
}

/* ─── Academics banner — uses bg1.jpg ─── */
/* ✏️ Change "bg1.jpg" to your actual filename if different */
.page-banner-academics {
  background-image: url('bg1.jpg');
}

/* ─── Gallery banner — uses bg2.jpg ─── */
/* ✏️ Change "bg2.jpg" to your actual filename if different */
.page-banner-gallery {
  background-image: url('bg2.jpg');
}


/* ============================================================
   SECTION 15: FOOTER
   ============================================================ */
footer {
  background: var(--color-footer-bg);
  color: var(--color-footer-text);
  padding: 50px 8% 20px;
}

.footer-container {
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr;
  gap: 40px;
  padding-bottom: 30px;
  border-bottom: 1px solid rgba(255,255,255,0.1);
}

/* Footer section heading */
.footer-heading {
  font-size: 15px;
  font-weight: 700;
  color: white;
  margin-bottom: 18px;
  text-align: left;
}

/* Contact block in footer */
.contact-block { text-align: left; }
.contact-block h3 {
  font-size: 15px;
  font-weight: 700;
  color: white;
  margin-bottom: 18px;
  position: relative;
  padding-bottom: 10px;
  text-align: left;
}

/* Underline accent on footer headings */
.contact-block h3::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 36px;
  height: 3px;
  background: var(--color-secondary);
  border-radius: 2px;
}

.contact-block .contact-item { margin-bottom: 16px; }
.contact-block .contact-item span { color: var(--color-secondary); }
.contact-block .contact-item h4 { color: white; font-size: 13px; margin-bottom: 2px; text-align: left; }
.contact-block .contact-item p  { font-size: 13px; opacity: 0.75; line-height: 1.5; text-align: left; }

/* Social links in footer center */
.footer-center { display: flex; flex-direction: column; }
.socials { display: flex; flex-direction: column; gap: 12px; }
.social-title { font-size: 15px; font-weight: 700; color: white; margin-bottom: 6px; text-align: left; }

.socials a {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  padding: 8px 16px;
  border-radius: 22px;
  text-decoration: none;
  color: white;
  font-weight: 600;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.socials a:hover { transform: translateY(-2px); }
.socials i { font-size: 16px; }

/* Instagram gradient */
.socials a.insta { background: linear-gradient(45deg, #f9ce34, #ee2a7b, #6228d7); }
.socials a.insta:hover { box-shadow: 0 4px 16px rgba(238,42,123,0.5); }

/* Facebook blue */
.socials a.facebook { background: #1877f2; }
.socials a.facebook:hover { box-shadow: 0 4px 16px rgba(24,119,242,0.5); }

/* Embedded map */
.footer-map iframe {
  width: 100%;
  height: 130px;
  border: none;
  border-radius: var(--radius-sm);
  filter: grayscale(20%) brightness(0.9);
  transition: filter 0.3s;
}

.footer-map iframe:hover { filter: grayscale(0%) brightness(1); }

/* Footer bottom copyright line */
.footer-bottom {
  text-align: center;
  margin-top: 20px;
  font-size: 12px;
  opacity: 0.5;
}

/* Mobile */
@media (max-width: 768px) {
  .footer-container {
    grid-template-columns: 1fr;
    gap: 30px;
    text-align: center;
  }
  .contact-block { text-align: center; }
  .contact-block h3 { text-align: center; }
  .contact-block h3::after { left: 50%; transform: translateX(-50%); }
  .contact-block .contact-item h4,
  .contact-block .contact-item p { text-align: center; }
  .social-title { text-align: center; }
  .footer-map iframe { max-width: 280px; margin: 0 auto; display: block; }
}


/* ============================================================
   SECTION 16: SCROLL REVEAL ANIMATIONS
   Elements with class="hidden" start invisible and fade in
   when they scroll into view (controlled by JS observer)
   ============================================================ */
.hidden {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}

.show {
  opacity: 1;
  transform: translateY(0);
}

/* About section slide-in from sides */
.about-image,
.about-text {
  opacity: 0;
  transition: opacity 0.9s ease, transform 0.9s ease;
}

.about-image { transform: translateX(-50px); }
.about-text  { transform: translateX(50px); }

.about-show .about-image,
.about-show .about-text {
  opacity: 1;
  transform: translateX(0);
}


/* ============================================================
   SECTION 17: PAGE TRANSITION
   Pages fade out when you click a nav link
   ============================================================ */
body {
  transition: opacity 0.4s ease;
}


/* ============================================================
   SECTION 18: ENQUIRY FORM
   The admissions enquiry form card (left side of the admissions grid).
   ✏️ To change colours: update --color-primary / --color-secondary
      in the :root block at the top of this file.
   ============================================================ */

/* Card wrapper — matches the style of the contact card on the right */
.enquiry-form-card {
  background: var(--color-card-bg);
  border: 1px solid var(--color-card-border);
  border-radius: var(--radius-md);
  padding: 36px;
  box-shadow: var(--shadow-md);

  /* Top accent stripe — same as the academic cards */
  position: relative;
  overflow: hidden;
}

.enquiry-form-card::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--color-primary), var(--color-secondary));
}

/* Card heading */
.enquiry-form-card h3 {
  font-size: 20px;
  font-weight: 800;
  color: var(--color-primary);
  margin-bottom: 6px;
  text-align: left;
}

/* Subtitle below heading */
.enquiry-subtitle {
  font-size: 13px;
  color: var(--color-text-muted);
  margin-bottom: 22px;
  text-align: left;
}

/* ── Each field wrapper ── */
.form-group {
  display: flex;
  flex-direction: column;
  gap: 5px;
  margin-bottom: 16px;
}

/* Field label */
.form-group label {
  font-size: 13px;
  font-weight: 700;
  color: var(--color-text);
  text-align: left;
}

/* Red asterisk on required fields */
.required {
  color: var(--color-accent);
}

/* Text inputs and date picker */
.form-group input[type="text"],
.form-group input[type="tel"],
.form-group input[type="email"],
.form-group input[type="date"] {
  width: 100%;
  padding: 10px 14px;
  border: 1.5px solid var(--color-card-border);
  border-radius: var(--radius-sm);
  font-size: 14px;
  font-family: inherit;
  color: var(--color-text);
  background: #fff;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
  outline: none;
}

/* Textarea for message */
.form-group textarea {
  width: 100%;
  padding: 10px 14px;
  border: 1.5px solid var(--color-card-border);
  border-radius: var(--radius-sm);
  font-size: 14px;
  font-family: inherit;
  color: var(--color-text);
  background: #fff;
  resize: vertical;           /* User can resize vertically only */
  min-height: 80px;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
  outline: none;
}

/* Focus state — maroon ring around the active field */
.form-group input:focus,
.form-group textarea:focus {
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(123, 29, 53, 0.10);
}

/* Placeholder text colour */
.form-group input::placeholder,
.form-group textarea::placeholder {
  color: #bbb;
  font-size: 13px;
}

/* ── Submit Button ── */
.btn-enquiry {
  width: 100%;
  padding: 13px;
  margin-top: 6px;

  background: linear-gradient(135deg, var(--color-primary), var(--color-accent));
  color: white;
  font-size: 15px;
  font-weight: 700;
  font-family: inherit;
  border: none;
  border-radius: 25px;
  cursor: pointer;

  transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.2s ease;
  letter-spacing: 0.3px;
}

.btn-enquiry:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(123, 29, 53, 0.30);
}

/* Disabled state while sending */
.btn-enquiry:disabled {
  opacity: 0.65;
  cursor: not-allowed;
  transform: none;
}

/* ── Status message (shown below the button after submit) ── */
.enquiry-status {
  margin-top: 14px;
  padding: 10px 14px;
  border-radius: var(--radius-sm);
  font-size: 13px;
  font-weight: 600;
  text-align: center;
  display: none;                  /* Hidden until JS sets content */
}

/* Show when JS adds content */
.enquiry-status:not(:empty) {
  display: block;
}

/* Sending state — neutral blue-grey */
.enquiry-status--sending {
  background: rgba(100, 120, 200, 0.12);
  color: #4a5699;
  border: 1px solid rgba(100, 120, 200, 0.25);
}

/* Success state — soft green */
.enquiry-status--success {
  background: rgba(30, 140, 80, 0.10);
  color: #1a6e40;
  border: 1px solid rgba(30, 140, 80, 0.25);
}

/* Error state — soft red */
.enquiry-status--error {
  background: rgba(200, 50, 50, 0.10);
  color: #a02020;
  border: 1px solid rgba(200, 50, 50, 0.25);
}

/* Mobile: full-width layout already handled by .admissions-grid responsive rules */
