/* ============================================================
   CSB LE QUEBECOIS — DESIGN SYSTEM PARTAGE
   ============================================================ */

:root{
  --blue:#1E6BB8;
  --blue-dark:#154e87;
  --blue-pale:#EAF3FC;
  --green:#4A9A2E;
  --green-dark:#357021;
  --green-pale:#EEF7EA;
  --orange:#D44B1A;
  --orange-dark:#a83a13;
  --orange-pale:#FDEEE7;
  --navy:#1A2E5A;
  --navy-dark:#101d3b;
  --light:#F5F7FA;
  --white:#FFFFFF;
  --gray:#64748B;
  --gray-light:#94A3B8;
  --dark:#0A1628;

  --accent:var(--navy);
  --accent-dark:var(--navy-dark);
  --accent-pale:var(--light);

  --font-title:'Playfair Display', serif;
  --font-body:'DM Sans', sans-serif;

  --header-h:68px;
  --radius-sm:10px;
  --radius-md:18px;
  --radius-lg:28px;
  --shadow-sm:0 4px 16px rgba(10,22,40,0.06);
  --shadow-md:0 12px 32px rgba(10,22,40,0.10);
  --shadow-lg:0 24px 60px rgba(10,22,40,0.16);
}

body.page-maternelle{ --accent:var(--blue); --accent-dark:var(--blue-dark); --accent-pale:var(--blue-pale); }
body.page-primaire{ --accent:var(--orange); --accent-dark:var(--orange-dark); --accent-pale:var(--orange-pale); }
body.page-college{ --accent:var(--green); --accent-dark:var(--green-dark); --accent-pale:var(--green-pale); }

*,*::before,*::after{ box-sizing:border-box; margin:0; padding:0; }
html{ scroll-behavior:smooth; }
body{
  font-family:var(--font-body);
  color:var(--dark);
  background:var(--white);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
ul{ list-style:none; }
button{ font-family:inherit; cursor:pointer; border:none; background:none; color:inherit; }
input,select,textarea{ font-family:inherit; font-size:inherit; color:inherit; }
h1,h2,h3,h4{ font-family:var(--font-title); line-height:1.15; font-weight:700; }
em{ font-style:italic; color:var(--orange); }
.container{ max-width:1240px; margin:0 auto; padding:0 32px; }
section{ position:relative; }

/* ===== SCROLL REVEAL ===== */
.r{ opacity:0; transform:translateY(28px); transition:opacity .65s ease, transform .65s ease; }
.r.v{ opacity:1; transform:translateY(0); }

/* ===== LABELS / HEADINGS ===== */
.eyebrow{
  display:inline-flex; align-items:center; gap:8px;
  font-size:12.5px; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  color:var(--accent);
}
.eyebrow::before{ content:""; width:22px; height:2px; background:var(--accent); display:inline-block; }
.section-head{ max-width:640px; margin-bottom:52px; }
.section-head.center{ margin-left:auto; margin-right:auto; text-align:center; }
.section-head h2{ font-size:clamp(30px,4vw,44px); margin-top:14px; color:var(--navy); }
.section-head p{ margin-top:16px; color:var(--gray); font-size:17px; }

/* ===== BUTTONS ===== */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  padding:15px 30px; border-radius:100px; font-weight:600; font-size:15px;
  transition:transform .25s ease, box-shadow .25s ease, background .25s ease, color .25s ease;
  white-space:nowrap;
}
.btn:hover{ transform:translateY(-2px); }
.btn-orange{ background:var(--orange); color:var(--white); box-shadow:0 10px 24px rgba(212,75,26,.32); }
.btn-orange:hover{ background:var(--orange-dark); }
.btn-blue{ background:var(--blue); color:var(--white); box-shadow:0 10px 24px rgba(30,107,184,.32); }
.btn-blue:hover{ background:var(--blue-dark); }
.btn-green{ background:var(--green); color:var(--white); box-shadow:0 10px 24px rgba(74,154,46,.32); }
.btn-green:hover{ background:var(--green-dark); }
.btn-navy{ background:var(--navy); color:var(--white); box-shadow:0 10px 24px rgba(26,46,90,.32); }
.btn-navy:hover{ background:var(--navy-dark); }
.btn-accent{ background:var(--accent); color:var(--white); box-shadow:0 10px 24px rgba(10,22,40,.2); }
.btn-accent:hover{ background:var(--accent-dark); }
.btn-white{ background:var(--white); color:var(--navy); }
.btn-whatsapp{ background:#25D366; color:var(--white); box-shadow:0 10px 24px rgba(37,211,102,.32); }
.btn-whatsapp:hover{ background:#1ea952; }
.btn-outline{ background:transparent; border:1.5px solid rgba(255,255,255,.5); color:var(--white); }
.btn-outline:hover{ background:rgba(255,255,255,.12); }
.btn-outline-dark{ background:transparent; border:1.5px solid rgba(26,46,90,.25); color:var(--navy); }
.btn-outline-dark:hover{ background:rgba(26,46,90,.06); }
.btn-sm{ padding:10px 20px; font-size:13.5px; }

/* ===== STRIPE ===== */
.stripe{
  height:5px; width:100%;
  background:linear-gradient(to right, var(--blue) 33.33%, var(--orange) 33.33% 66.66%, var(--green) 66.66%);
}

/* ============================================================
   HEADER
   ============================================================ */
.site-header{
  position:fixed; top:0; left:0; right:0; z-index:200;
  height:var(--header-h);
  background:rgba(255,255,255,0.95);
  backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px);
  border-bottom:1px solid rgba(26,46,90,0.06);
}
.site-header .container{ height:100%; display:flex; align-items:center; justify-content:space-between; gap:24px; }
.logo{ display:flex; align-items:center; flex-shrink:0; }
.logo-text{ display:flex; flex-direction:column; line-height:1.15; }
.logo-text .name{ font-family:var(--font-title); font-weight:700; font-size:18px; color:var(--navy); }
.logo-text .sub{ font-size:10.5px; letter-spacing:.06em; color:var(--gray); text-transform:uppercase; }

.main-nav{ display:flex; align-items:center; gap:8px; }
.main-nav a{
  padding:9px 18px; border-radius:100px; font-size:14.5px; font-weight:600; color:var(--navy);
  transition:background .2s ease, color .2s ease, opacity .2s ease;
}
.main-nav a:hover{ background:rgba(26,46,90,0.06); }
.main-nav a.nav-maternelle{ background:rgba(30,107,184,.12); color:var(--blue); }
.main-nav a.nav-primaire{ background:rgba(212,75,26,.12); color:var(--orange); }
.main-nav a.nav-college{ background:rgba(74,154,46,.12); color:var(--green); }
.main-nav a.nav-maternelle:hover{ background:rgba(30,107,184,.22); }
.main-nav a.nav-primaire:hover{ background:rgba(212,75,26,.22); }
.main-nav a.nav-college:hover{ background:rgba(74,154,46,.22); }
.main-nav a.active{ opacity:1; font-weight:700; }
.main-nav a.active.nav-maternelle{ background:rgba(30,107,184,.28); }
.main-nav a.active.nav-primaire{ background:rgba(212,75,26,.28); }
.main-nav a.active.nav-college{ background:rgba(74,154,46,.28); }
.main-nav a.active:not([class*="nav-"]){ background:rgba(26,46,90,0.09); }

.header-right{ display:flex; align-items:center; gap:14px; flex-shrink:0; }
.header-search{
  display:flex; align-items:center; gap:8px;
  background:var(--light); border:1.5px solid transparent; border-radius:100px;
  padding:9px 16px; width:190px; transition:border-color .2s ease, width .2s ease;
}
.header-search:focus-within{ border-color:var(--blue); width:220px; }
.header-search input{ background:none; border:none; outline:none; font-size:13.5px; width:100%; color:var(--navy); }
.header-search svg{ flex-shrink:0; opacity:.55; }
.btn-contact-header{
  background:var(--navy); color:var(--white); padding:10px 22px; border-radius:100px;
  font-size:14px; font-weight:600; transition:background .2s ease;
}
.btn-contact-header:hover{ background:var(--navy-dark); }

.nav-toggle{ display:none; width:40px; height:40px; align-items:center; justify-content:center; flex-shrink:0; }
.nav-toggle span, .nav-toggle span::before, .nav-toggle span::after{
  content:""; display:block; width:22px; height:2px; background:var(--navy); position:relative; transition:.2s ease;
}
.nav-toggle span::before{ position:absolute; top:-7px; }
.nav-toggle span::after{ position:absolute; top:7px; }
.nav-toggle.open span{ background:transparent; }
.nav-toggle.open span::before{ top:0; transform:rotate(45deg); }
.nav-toggle.open span::after{ top:0; transform:rotate(-45deg); }

/* ============================================================
   FLOATING BOTTOM NAV
   ============================================================ */
.float-nav{
  position:fixed; left:50%; bottom:28px; transform:translateX(-50%); z-index:200;
  display:flex; align-items:center; gap:4px;
  background:rgba(10,22,40,0.92); backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px);
  border-radius:60px; padding:8px; box-shadow:var(--shadow-lg);
}
.float-nav a{
  padding:11px 20px; border-radius:60px; font-size:13.5px; font-weight:600; color:rgba(255,255,255,.72);
  transition:background .2s ease, color .2s ease;
}
.float-nav a:hover{ color:var(--white); }
.float-nav a.active{ color:var(--white); }
.float-nav a.active.fn-maternelle{ background:rgba(30,107,184,.45); }
.float-nav a.active.fn-primaire{ background:rgba(212,75,26,.45); }
.float-nav a.active.fn-college{ background:rgba(74,154,46,.45); }
.float-nav a.active.fn-accueil{ background:rgba(255,255,255,.14); }
.float-nav .sep{ width:1px; height:18px; background:rgba(255,255,255,.16); margin:0 2px; }
.float-nav .fn-contact{ color:var(--white); font-weight:700; }
body.page-maternelle .float-nav .fn-contact{ background:var(--blue); }
body.page-primaire .float-nav .fn-contact,
body:not([class*="page-"]) .float-nav .fn-contact{ background:var(--orange); }
body.page-college .float-nav .fn-contact{ background:var(--green); }
body.page-contact .float-nav .fn-contact,
body.page-preinscription .float-nav .fn-contact{ background:var(--orange); }

/* ============================================================
   SUB-NAV (cycle pages)
   ============================================================ */
.sub-nav{
  position:sticky; top:var(--header-h); z-index:150;
  background:rgba(255,255,255,.96); backdrop-filter:blur(12px);
  border-bottom:1px solid rgba(26,46,90,.06);
}
.sub-nav .container{ display:flex; gap:6px; overflow-x:auto; padding-top:14px; padding-bottom:14px; }
.sub-nav a{
  padding:8px 18px; border-radius:100px; font-size:13.5px; font-weight:600; color:var(--gray);
  white-space:nowrap; transition:background .2s ease, color .2s ease;
}
.sub-nav a:hover{ color:var(--accent); }
.sub-nav a.active{ background:var(--accent-pale); color:var(--accent-dark); }

/* ============================================================
   FOOTER
   ============================================================ */
.site-footer{ background:#060e1c; color:rgba(255,255,255,.72); padding:80px 0 0; }
.footer-grid{
  display:grid; grid-template-columns:2fr 1fr 1fr 1fr 1.2fr; gap:36px; padding-bottom:56px;
}
.footer-brand .logo-text .name{ color:var(--white); }
.footer-brand p{ margin-top:18px; font-size:14.5px; max-width:320px; color:rgba(255,255,255,.55); }
.footer-col h4{ font-family:var(--font-body); font-size:14px; font-weight:700; color:var(--white); margin-bottom:18px; text-transform:uppercase; letter-spacing:.05em; }
.footer-col li{ margin-bottom:11px; font-size:14px; }
.footer-col a{ color:rgba(255,255,255,.6); transition:color .2s ease; }
.footer-col a:hover{ color:var(--white); }
.footer-col.contact li{ display:flex; gap:10px; align-items:flex-start; color:rgba(255,255,255,.62); }
.social-icons{ display:flex; gap:10px; margin-top:22px; }
.social-icons a{
  width:38px; height:38px; border-radius:50%; background:rgba(255,255,255,.08);
  display:flex; align-items:center; justify-content:center; font-size:14px; font-weight:700; color:var(--white);
  transition:background .2s ease, transform .2s ease;
}
.social-icons a:hover{ background:var(--orange); transform:translateY(-3px); }
.footer-bottom{
  border-top:1px solid rgba(255,255,255,.08); padding:24px 0 100px;
  text-align:center; font-size:13px; color:rgba(255,255,255,.4);
}

/* ============================================================
   HERO GENERIC
   ============================================================ */
.hero-section{ min-height:100vh; display:flex; align-items:stretch; background:var(--dark); padding-top:var(--header-h); }
.hero-cols{ display:grid; grid-template-columns:1fr 1fr; width:100%; min-width:0; }
.hero-text{
  padding:80px 64px; display:flex; flex-direction:column; justify-content:center; position:relative;
  color:var(--white); min-width:0;
  background:radial-gradient(circle at 20% 20%, rgba(212,75,26,.14), transparent 55%), var(--dark);
}
.hero-scroll-indicator{ display:flex; align-items:center; gap:12px; color:rgba(255,255,255,.5); font-size:12.5px; margin-top:56px; }
.hero-media{ padding:24px; display:flex; min-width:0; }
.hero-tag{ font-size:12.5px; font-weight:700; letter-spacing:.16em; text-transform:uppercase; }
.hero-grid-photos{
  display:grid; grid-template-columns:1fr 1fr; gap:14px; width:100%; min-width:0;
}
.hero-grid-photos .ph{
  border-radius:var(--radius-md); overflow:hidden; position:relative; aspect-ratio:1/1; min-width:0;
}
.hero-grid-photos .ph img{ width:100%; height:100%; object-fit:cover; }
.hero-grid-photos .ph.tall{ grid-row:span 2; aspect-ratio:auto; }

/* video play badge */
.play-badge{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  background:rgba(10,22,40,.28); transition:background .25s ease;
}
.play-badge:hover{ background:rgba(10,22,40,.45); }
.play-circle{
  width:64px; height:64px; border-radius:50%; background:rgba(255,255,255,.95);
  display:flex; align-items:center; justify-content:center; box-shadow:0 8px 24px rgba(0,0,0,.35);
  animation:pulse 2.6s ease-in-out infinite;
}
.play-circle svg{ margin-left:4px; }
@keyframes pulse{ 0%,100%{ transform:scale(1);} 50%{ transform:scale(1.07);} }
.play-label{
  position:absolute; bottom:14px; left:14px; color:var(--white); font-size:12.5px; font-weight:600;
  background:rgba(10,22,40,.55); padding:6px 12px; border-radius:100px;
}

/* ============================================================
   VIDEO MODAL
   ============================================================ */
.video-modal{
  position:fixed; inset:0; z-index:500; display:none; align-items:center; justify-content:center;
  background:rgba(6,10,20,.92); padding:24px;
}
.video-modal.open{ display:flex; }
.video-modal .modal-box{ width:100%; max-width:920px; position:relative; }
.video-modal video{ width:100%; border-radius:var(--radius-md); box-shadow:var(--shadow-lg); background:#000; }
.video-modal .modal-close{
  position:absolute; top:-46px; right:0; width:36px; height:36px; border-radius:50%;
  background:rgba(255,255,255,.12); color:var(--white); display:flex; align-items:center; justify-content:center;
  font-size:18px; transition:background .2s ease;
}
.video-modal .modal-close:hover{ background:rgba(255,255,255,.24); }

/* ============================================================
   CARDS GENERIQUES
   ============================================================ */
.grid-3{ display:grid; grid-template-columns:repeat(3,1fr); gap:28px; }
.grid-2{ display:grid; grid-template-columns:1fr 1fr; gap:28px; }
.grid-4{ display:grid; grid-template-columns:repeat(4,1fr); gap:22px; }

.cycle-card{
  position:relative; border-radius:var(--radius-lg); overflow:hidden; aspect-ratio:3/4;
  box-shadow:var(--shadow-sm); transition:transform .35s ease, box-shadow .35s ease;
}
.cycle-card:hover{ transform:translateY(-8px); box-shadow:var(--shadow-lg); }
.cycle-card img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.cycle-card::before{ content:""; position:absolute; inset:0; }
.cycle-card.c-maternelle::before{ background:linear-gradient(180deg, rgba(30,107,184,.28) 0%, rgba(6,10,20,.35) 42%, rgba(6,10,20,.96) 100%); }
.cycle-card.c-primaire::before{ background:linear-gradient(180deg, rgba(212,75,26,.28) 0%, rgba(6,10,20,.35) 42%, rgba(6,10,20,.96) 100%); }
.cycle-card.c-college::before{ background:linear-gradient(180deg, rgba(74,154,46,.28) 0%, rgba(6,10,20,.35) 42%, rgba(6,10,20,.96) 100%); }
.cycle-card .topbar{ position:absolute; top:0; left:0; right:0; height:3px; z-index:2; }
.cycle-card.c-maternelle .topbar{ background:var(--blue); }
.cycle-card.c-primaire .topbar{ background:var(--orange); }
.cycle-card.c-college .topbar{ background:var(--green); }
.cycle-card .content{
  position:absolute; inset:0; z-index:2; display:flex; flex-direction:column; justify-content:flex-end; padding:32px; color:var(--white);
  text-shadow:0 2px 10px rgba(0,0,0,.55);
}
.cycle-card .age{ font-size:12.5px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; opacity:.95; }
.cycle-card h3{ font-size:28px; margin:10px 0 12px; color:var(--white); }
.cycle-card p{ font-size:14.5px; opacity:.95; margin-bottom:18px; }
.cycle-card .link{ font-size:14px; font-weight:700; display:inline-flex; align-items:center; gap:6px; }

/* testimonial cards */
.testi-card{ background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.08); border-radius:var(--radius-md); padding:34px; }
.testi-card.light{ background:var(--white); border:none; box-shadow:var(--shadow-sm); }
.testi-quote{ font-family:var(--font-title); font-size:46px; color:var(--orange); line-height:1; margin-bottom:8px; }
.testi-text{ font-style:italic; font-size:15.5px; color:rgba(255,255,255,.82); margin-bottom:24px; }
.testi-card.light .testi-text{ color:var(--gray); }
.testi-person{ display:flex; align-items:center; gap:12px; }
.avatar{ width:44px; height:44px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-weight:700; color:var(--white); font-size:15px; flex-shrink:0; }
.testi-person .name{ font-weight:700; font-size:14.5px; color:var(--white); }
.testi-card.light .testi-person .name{ color:var(--navy); }
.testi-person .role{ font-size:12.5px; opacity:.6; }

/* infra cards */
.infra-card{ background:var(--white); border-radius:var(--radius-md); overflow:hidden; box-shadow:var(--shadow-sm); transition:transform .3s ease, box-shadow .3s ease; }
.infra-card:hover{ transform:translateY(-6px); box-shadow:var(--shadow-md); }
.infra-card .photo{ aspect-ratio:4/3; overflow:hidden; position:relative; }
.infra-card .photo img{ width:100%; height:100%; object-fit:cover; transition:transform .5s ease; }
.infra-card:hover .photo img{ transform:scale(1.05); }
.infra-card .photo.placeholder{ background:linear-gradient(135deg, var(--accent-pale), var(--light)); display:flex; align-items:center; justify-content:center; }
.infra-card .photo.placeholder span{ font-size:12px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--accent); opacity:.55; }
.infra-card .body{ padding:22px 24px 26px; }
.infra-card h4{ font-family:var(--font-body); font-size:16.5px; font-weight:700; color:var(--navy); margin-bottom:8px; }
.infra-card p{ font-size:13.5px; color:var(--gray); }

/* activity icon cards */
.activity-card{ background:var(--white); border-radius:var(--radius-md); padding:28px 22px; text-align:center; box-shadow:var(--shadow-sm); position:relative; overflow:hidden; transition:transform .3s ease; }
.activity-card:hover{ transform:translateY(-6px); }
.activity-card::after{ content:""; position:absolute; left:0; right:0; bottom:0; height:4px; background:var(--accent); transform:scaleX(0); transition:transform .3s ease; }
.activity-card:hover::after{ transform:scaleX(1); }
.activity-icon{ width:64px; height:64px; border-radius:50%; margin:0 auto 16px; display:flex; align-items:center; justify-content:center; }
.activity-card h4{ font-family:var(--font-body); font-size:15.5px; font-weight:700; color:var(--navy); }

/* stat blocks */
.stats-band{ background:var(--light); padding:64px 0; }
.stats-grid{ display:grid; gap:24px; text-align:center; position:relative; }
.stat-num{ font-family:var(--font-title); font-size:48px; color:var(--navy); font-weight:700; }
.stat-label{ margin-top:8px; font-size:13.5px; color:var(--gray); letter-spacing:.03em; }
.stats-grid > div{ position:relative; padding:0 12px; }
.stats-grid > div:not(:last-child)::after{
  content:""; position:absolute; right:0; top:50%; transform:translateY(-50%); height:60%; width:1px; background:rgba(26,46,90,.12);
}

/* photo blocks / placeholders (fallback only) */
.ph-block{ background:linear-gradient(135deg, var(--accent-pale), var(--light)); border-radius:var(--radius-md); position:relative; overflow:hidden; }
.ph-block img{ width:100%; height:100%; object-fit:cover; }

/* badge floating */
.badge-float{
  position:absolute; background:var(--white); box-shadow:var(--shadow-md); border-radius:100px;
  padding:12px 22px; font-weight:700; font-size:14px; display:flex; align-items:center; gap:8px; z-index:5;
}

/* forms */
.form-row{ display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.field{ margin-bottom:18px; }
.field label{ display:block; font-size:13px; font-weight:600; color:var(--navy); margin-bottom:8px; }
.field input, .field select, .field textarea{
  width:100%; padding:14px 16px; border:1.5px solid #E2E8F0; border-radius:var(--radius-sm);
  background:var(--white); font-size:14.5px; transition:border-color .2s ease;
}
.field input:focus, .field select:focus, .field textarea:focus{ outline:none; border-color:var(--accent); }
.field textarea{ resize:vertical; min-height:110px; }
.checkbox-row{ display:flex; align-items:flex-start; gap:10px; font-size:13.5px; color:var(--gray); }
.checkbox-row input{ width:auto; margin-top:3px; }

/* stepper */
.stepper{ display:flex; align-items:center; gap:0; margin-bottom:44px; }
.stepper .step{ display:flex; align-items:center; gap:12px; flex:1; }
.stepper .circle{
  width:38px; height:38px; border-radius:50%; background:var(--light); color:var(--gray);
  display:flex; align-items:center; justify-content:center; font-weight:700; font-size:14.5px; flex-shrink:0;
  transition:background .3s ease, color .3s ease;
}
.stepper .step.active .circle{ background:var(--accent); color:var(--white); }
.stepper .step.done .circle{ background:var(--accent-dark); color:var(--white); }
.stepper .label{ font-size:13.5px; font-weight:600; color:var(--gray); }
.stepper .step.active .label{ color:var(--navy); }
.stepper .line{ flex:1; height:2px; background:#E2E8F0; margin:0 4px; }

.form-step{ display:none; }
.form-step.active{ display:block; }

.recap-box{ background:var(--light); border-radius:var(--radius-md); padding:26px; margin-bottom:22px; }
.recap-box .row{ display:flex; justify-content:space-between; padding:9px 0; border-bottom:1px solid rgba(26,46,90,.07); font-size:14px; }
.recap-box .row:last-child{ border-bottom:none; }
.recap-box .row .k{ color:var(--gray); }
.recap-box .row .v{ font-weight:700; color:var(--navy); }

/* success toast */
.form-success{
  display:none; align-items:center; gap:12px; background:var(--green-pale); color:var(--green-dark);
  padding:16px 20px; border-radius:var(--radius-sm); font-size:14.5px; font-weight:600; margin-top:16px;
}
.form-success.show{ display:flex; }

/* decorative circles for CTA */
.cta-decor{ position:absolute; border-radius:50%; background:rgba(255,255,255,.06); pointer-events:none; }

/* utility */
.mt-0{margin-top:0;} .center{text-align:center;}
.tag-pill{ display:inline-flex; align-items:center; padding:8px 16px; border-radius:100px; font-size:12.5px; font-weight:600; }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1024px){
  .footer-grid{ grid-template-columns:1fr 1fr; }
  .grid-3{ grid-template-columns:1fr 1fr; }
  .grid-4{ grid-template-columns:1fr 1fr; }
}
@media (max-width:860px){
  .main-nav, .header-search{ display:none; }
  .nav-toggle{ display:flex; }
  .main-nav.mobile-open{
    display:flex; flex-direction:column; gap:2px;
    position:absolute; top:var(--header-h); left:0; right:0; z-index:250;
    background:var(--white); padding:10px 20px 18px; box-shadow:var(--shadow-md);
    border-bottom:1px solid rgba(26,46,90,.08);
  }
  .main-nav.mobile-open a{ padding:14px 16px; border-radius:12px; font-size:15.5px; width:100%; }
  .float-nav{ left:16px; right:16px; transform:none; width:auto; justify-content:space-between; overflow-x:auto; }
  .float-nav .label-full{ display:none; }
  .grid-2{ grid-template-columns:1fr; }
  .grid-3{ grid-template-columns:1fr; }
  .grid-4{ grid-template-columns:1fr 1fr; }
  .footer-grid{ grid-template-columns:1fr 1fr; gap:32px; }
  .form-row{ grid-template-columns:1fr; }
  .stats-grid{ grid-template-columns:1fr 1fr !important; }
  .hero-section{ min-height:auto; }
  .hero-cols{ grid-template-columns:1fr; }
  .hero-text{ padding:64px 24px 40px; }
  .hero-media{ padding:0 24px 48px; }

  /* ---- generic layout overrides for inline-styled multi-column sections ---- */
  .rs-2col{ grid-template-columns:1fr !important; gap:36px !important; }
  .rs-sticky-off{ position:static !important; top:auto !important; }
  .rs-3col{ grid-template-columns:1fr 1fr !important; grid-template-rows:auto !important; }
  .rs-3col > *{ grid-column:auto !important; grid-row:auto !important; }
  .rs-gallery-3{ grid-template-columns:1fr !important; }
  .rs-photogrid-6{ grid-template-columns:repeat(3,1fr) !important; }

  /* ---- reduce oversized vertical whitespace on mobile ---- */
  .container{ padding:0 24px; }
  section[style*="120px"]{ padding:72px 0 !important; }
  section[style*="110px"]{ padding:64px 0 !important; }
  section[style*="100px"]{ padding:60px 0 !important; }
  section[style*="90px"]{ padding:56px 0 !important; }
  .section-head{ margin-bottom:36px; }
  .stats-band{ padding:44px 0; }

  /* ---- stat divider only makes sense between the 2 mobile columns ---- */
  .stats-grid > div::after{ display:none; }
  .stats-grid > div:nth-child(odd):not(:last-child)::after{
    display:block; content:""; position:absolute; right:0; top:50%; transform:translateY(-50%);
    height:60%; width:1px; background:rgba(26,46,90,.12);
  }
}
@media (max-width:560px){
  .container{ padding:0 20px; }
  .footer-grid{ grid-template-columns:1fr; }
  .grid-4{ grid-template-columns:1fr 1fr; }
  .stats-grid{ grid-template-columns:1fr 1fr !important; }
  .float-nav a span.label-full{ display:none; }
  .logo-text .sub{ display:none; }
  .header-right{ gap:8px; }
  .btn-contact-header{ padding:9px 14px; font-size:12.5px; }

  section[style*="120px"]{ padding:56px 0 !important; }
  section[style*="110px"]{ padding:52px 0 !important; }
  section[style*="100px"]{ padding:48px 0 !important; }
  section[style*="90px"]{ padding:44px 0 !important; }

  .stepper .label{ display:none; }
  .stepper .circle{ margin:0 auto; }
  .stepper .step{ flex-direction:column; gap:6px; }

  .rs-3col{ grid-template-columns:1fr !important; }
  .rs-photogrid-6{ grid-template-columns:repeat(2,1fr) !important; }
}
body{ overflow-x:hidden; }
