/* ============================================================
   Seaside Krav Maga — shared stylesheet
   Edit colors/fonts once here; every page updates.
   ============================================================ */

/* ---------- DESIGN TOKENS ---------- */
:root{
  --navy:        #1f396e;   /* headings */
  --navy-deep:   #16294f;
  --sky:         #1fa2d6;   /* links / accents */
  --red:         #911113;   /* buttons */
  --red-bright:  #c8181b;   /* hover / highlights */
  --ink:         #231f20;   /* near-black */
  --ink-2:       #171314;
  --text:        #363636;   /* body text */
  --muted:       #5b6470;
  --light:       #f5f5f5;   /* light section bg */
  --line:        #e4e7ee;
  --white:       #ffffff;

  --serif: "Cormorant", serif;          /* headings */
  --sans:  "Source Sans 3", sans-serif; /* body */

  --maxw: 1180px;

  --texture: url("https://www.seasidedojo.com/wp-content/uploads/2023/08/bg.jpg");
}

*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;scroll-padding-top:90px;}
body{font-family:var(--sans);color:var(--text);background:var(--white);line-height:1.6;font-size:18px;}

/* Cormorant ships old-style (text) figures by default, so digits like 9, 0 and 3
   hang below the baseline — "90 Minutes", phone numbers, times. Force lining
   figures everywhere so numbers sit on the baseline with the capitals. */
body,h1,h2,h3,h4,input,select,textarea,button{
  font-variant-numeric:lining-nums proportional-nums;
  font-feature-settings:"lnum" 1,"onum" 0;
}
h1,h2,h3,h4{font-family:var(--serif);color:var(--navy);font-weight:600;line-height:1.15;}
a{color:var(--sky);text-decoration:none;}
a:hover{text-decoration:underline;}
img{max-width:100%;display:block;}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px;}
:focus-visible{outline:3px solid var(--sky);outline-offset:2px;}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0;}

/* ---------- BUTTONS ---------- */
.btn{
  display:inline-block;background:var(--red);color:var(--white);font-family:var(--sans);
  font-size:19px;font-weight:700;padding:14px 32px;border-radius:5px;border:none;cursor:pointer;
  letter-spacing:.3px;box-shadow:0 4px 14px rgba(145,17,19,.28);transition:background .18s,transform .18s;
}
.btn:hover{background:var(--red-bright);text-decoration:none;color:#fff;transform:translateY(-2px);}
.btn.small{font-size:16px;padding:10px 20px;}
.btn.ghost{background:transparent;border:2px solid rgba(255,255,255,.85);box-shadow:none;}
.btn.ghost:hover{background:rgba(255,255,255,.16);}
.readmore{font-weight:700;color:var(--red);font-size:16px;letter-spacing:.2px;}
.readmore:hover{color:var(--red-bright);}
.readmore.muted{color:var(--muted);font-weight:600;}
.kicker{text-transform:uppercase;letter-spacing:2.4px;font-size:13px;font-weight:700;color:#7fd0f2;margin-bottom:10px;}

/* ---------- TOP UTILITY BAR ---------- */
/* Same recipe as .page-banner ("What Is Israeli Krav Maga?") — navy multiplied
   with the texture, which is what makes it read darker than the nav band. */
.topbar{background:var(--navy) var(--texture) center/cover;background-blend-mode:multiply;
  color:#dbe3f0;font-size:14px;}
.topbar .wrap{display:flex;flex-wrap:wrap;gap:4px 20px;align-items:center;justify-content:space-between;padding:8px 24px;}
.topbar .tagline{margin-right:auto;color:#ffffff;font-weight:600;letter-spacing:.2px;}
@media(max-width:900px){.topbar .wrap{justify-content:center;}.topbar .tagline{margin-right:0;flex-basis:100%;text-align:center;}}
/* Phones: the bar was four stacked rows of 22px-tall links — too small to hit
   and it pushed the banner off the first screen. Two rows, real tap targets.
   Email and phone come out here: Call is in the sticky bottom bar on every
   page and both are in the footer, so nothing is lost. */
@media(max-width:700px){
  .topbar{font-size:13.5px;}
  .topbar .wrap{gap:0 22px;padding:6px 20px 7px;}
  .topbar .tagline{padding:3px 0 1px;}
  .topbar a{display:inline-block;padding:9px 2px;}
  .topbar .tb-mail,.topbar .tb-phone{display:none;}
}
.topbar a{color:#dbe3f0;}
.topbar a:hover{color:var(--white);}
/* Sister-site switch. Reads as a button rather than another utility link so
   it is recognisable as "leave here and go to the other school's site". */
.topbar .tb-dojo{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.28);
  border-radius:999px;padding:3px 13px;font-weight:600;color:#fff;white-space:nowrap;}
.topbar .tb-dojo:hover{background:var(--sky);border-color:var(--sky);text-decoration:none;}
@media(max-width:700px){.topbar .tb-dojo{padding:6px 13px;}}

/* ---------- HEADER / NAV ---------- */
.site-header{background:#42699f var(--texture) center/cover;background-blend-mode:soft-light;position:relative;z-index:60;}
.site-header .wrap{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 24px;flex-wrap:nowrap;}
/* Logo sits fully inside the lighter blue nav band, vertically centred
   against the menu (the wrap's align-items:center does the centring). */
.logo{display:flex;align-items:center;gap:14px;flex:0 0 auto;position:relative;z-index:2;}
.logo img{height:124px;width:auto;}
.logo:hover{text-decoration:none;}

.nav{display:flex;flex-wrap:nowrap;gap:2px;align-items:center;}
.nav > li{list-style:none;position:relative;}
.nav > li > a{
  display:block;color:var(--white);font-weight:700;font-size:13.5px;white-space:nowrap;
  text-transform:uppercase;letter-spacing:.4px;padding:11px 11px;border-radius:4px;
}
.nav > li > a:hover{background:rgba(255,255,255,.14);text-decoration:none;color:#fff;}
.nav > li > a.active{color:#7fd0f2;}
.caret{font-size:10px;opacity:.8;}

/* nav CTA — present on every page */
.nav .nav-cta a{background:var(--red);color:var(--white);border-radius:5px;box-shadow:0 3px 10px rgba(145,17,19,.35);}
.nav .nav-cta a:hover{background:var(--red-bright);color:var(--white);}

/* dropdowns */
.nav .submenu{
  display:none;position:absolute;top:100%;left:0;min-width:272px;
  background:var(--white);box-shadow:0 12px 30px rgba(0,0,0,.22);border-radius:0 0 8px 8px;
  padding:8px 0;z-index:70;border-top:3px solid var(--red);
}
.nav li:hover .submenu,.nav li:focus-within .submenu,.nav li.open .submenu{display:block;}
.nav .submenu li{list-style:none;}
.nav .submenu a{display:block;padding:10px 20px;color:var(--text);font-size:15.5px;text-transform:none;font-weight:400;}
.nav .submenu a:hover{background:var(--light);color:var(--navy);text-decoration:none;}
.nav .submenu .sep{color:#d5d9e0;font-size:11px;letter-spacing:2px;padding:2px 20px;user-select:none;}

.nav-toggle{display:none;background:transparent;border:0;cursor:pointer;padding:10px;}
.nav-toggle span{display:block;width:26px;height:3px;background:#fff;border-radius:2px;margin:5px 0;}

/* ---------- SCROLLING BANNER ---------- */
.banner{position:relative;background:var(--ink-2);overflow:hidden;}
.banner .slides{position:relative;min-height:clamp(400px,52vw,560px);}
.slide{position:absolute;inset:0;opacity:0;visibility:hidden;transition:opacity .7s ease;display:flex;align-items:center;}
.slide.is-active{opacity:1;visibility:visible;}
.slide-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.slide::after{content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,rgba(10,16,32,.90) 0%,rgba(10,16,32,.74) 46%,rgba(10,16,32,.42) 100%);}
.slide-inner{position:relative;z-index:2;max-width:var(--maxw);width:100%;padding-top:40px;padding-bottom:40px;}
.slide-inner h2{
  color:#fff;font-family:var(--serif);text-transform:uppercase;font-size:clamp(30px,4.6vw,54px);
  letter-spacing:.8px;line-height:1.06;max-width:16ch;text-shadow:0 3px 18px rgba(0,0,0,.6);margin:0;
}
.slide-copy{color:#e6ecf7;font-size:clamp(16px,1.7vw,20px);margin:16px 0 26px;max-width:52ch;text-shadow:0 1px 10px rgba(0,0,0,.55);}

.banner .arrow{
  position:absolute;top:50%;transform:translateY(-50%);z-index:5;
  width:52px;height:52px;border-radius:50%;border:0;cursor:pointer;
  background:rgba(0,0,0,.42);color:#fff;font-size:22px;line-height:1;
  display:flex;align-items:center;justify-content:center;transition:background .18s;
}
.banner .arrow:hover{background:var(--red);}
.banner .arrow.prev{left:14px;}
.banner .arrow.next{right:14px;}

.banner .dots{position:absolute;left:0;right:0;bottom:20px;z-index:5;display:flex;gap:11px;justify-content:center;}
.banner .dot{
  width:13px;height:13px;border-radius:50%;border:2px solid rgba(255,255,255,.85);
  background:transparent;cursor:pointer;padding:0;transition:background .18s,transform .18s;
}
.banner .dot:hover{background:rgba(255,255,255,.55);}
.banner .dot.is-active{background:var(--red-bright);border-color:#fff;transform:scale(1.18);}

/* Arrows move down beside the dots so they never sit on top of the copy.
   This has to happen everywhere the slide copy starts near the left edge —
   at 768 and 910 the prev arrow was sitting underneath the headline, not just
   on phones — so it runs to the same 900px breakpoint as the mobile nav. */
@media(max-width:900px){
  .slide-inner{padding-bottom:74px;}
  .banner .arrow{top:auto;bottom:14px;transform:none;width:44px;height:44px;font-size:17px;
    background:rgba(0,0,0,.55);}
  .banner .arrow.prev{left:calc(50% - 104px);}
  .banner .arrow.next{right:calc(50% - 104px);}
  .banner .dots{bottom:26px;}
}
@media(max-width:700px){
  .banner .slides{min-height:470px;}
  .slide::after{background:linear-gradient(rgba(10,16,32,.74),rgba(10,16,32,.90));}
  .banner .arrow{width:38px;height:38px;font-size:16px;background:rgba(255,255,255,.18);}
  .banner .arrow.prev{left:calc(50% - 96px);}
  .banner .arrow.next{right:calc(50% - 96px);}
}
/* 901–1320px: the arrows stay at the sides, but the 1180px wrap is close enough
   to the edge that the headline ran under them. Inset the copy past the arrows. */
@media(min-width:901px) and (max-width:1320px){
  .slide-inner{padding-left:80px;padding-right:80px;}
}

/* ---------- PAGE HERO (interior pages: photo fills the space) ---------- */
.page-hero{position:relative;overflow:hidden;background:var(--ink-2);
  min-height:clamp(360px,42vw,470px);display:flex;align-items:center;}
.page-hero.short{min-height:clamp(240px,26vw,320px);}
.ph-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.page-hero::after{content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,rgba(10,16,32,.90) 0%,rgba(10,16,32,.72) 50%,rgba(10,16,32,.44) 100%);}
.ph-inner{position:relative;z-index:2;width:100%;padding-top:44px;padding-bottom:44px;}
.ph-inner h1{color:#fff;text-transform:uppercase;font-size:clamp(28px,4.4vw,50px);letter-spacing:.8px;
  line-height:1.07;max-width:17ch;text-shadow:0 3px 18px rgba(0,0,0,.6);}
.ph-copy{color:#e6ecf7;font-size:clamp(16px,1.7vw,20px);margin:16px 0 26px;max-width:56ch;text-shadow:0 1px 10px rgba(0,0,0,.55);}
.ph-actions{display:flex;flex-wrap:wrap;gap:14px;align-items:center;}

/* ---------- PAGE BANNER (simple interior heading) ---------- */
.page-banner{background:var(--navy) var(--texture) center/cover;background-blend-mode:multiply;text-align:center;padding:52px 0;}
.page-banner h1{color:var(--white);text-transform:uppercase;font-size:clamp(28px,4.5vw,46px);letter-spacing:1px;text-shadow:0 2px 10px rgba(0,0,0,.4);}
.pb-sub{color:#dbe4f2;margin-top:12px;font-size:18px;}

/* ---------- THREE-UP (What is Krav / Why us / Calendar) ---------- */
.threeup{padding:62px 0 56px;background:var(--white);}
.tu-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;}
.tu-card{background:var(--light);border:1px solid var(--line);border-radius:14px;padding:30px 28px;
  display:flex;flex-direction:column;box-shadow:0 6px 20px rgba(15,25,55,.06);}
.tu-card h2{font-size:27px;text-transform:uppercase;margin-bottom:12px;letter-spacing:.4px;}
.tu-card p{font-size:16.5px;color:var(--muted);margin-bottom:18px;}
.tu-card .readmore{margin-top:auto;}
.cal-embed{background:#fff;border:2px dashed #c8ccd4;border-radius:10px;min-height:180px;
  display:flex;align-items:center;justify-content:center;margin-bottom:14px;}
.cal-embed.tall{min-height:460px;margin:22px 0 8px;}
/* Live embed: drop the placeholder dashes and let the iframe fill the box
   so an 800px-wide Google embed can't overflow a narrow screen. */
.cal-embed.live{border:1px solid var(--line);background:#fff;padding:0;overflow:hidden;
  display:block;min-height:0;}
.cal-embed.live iframe{display:block;width:100%;height:600px;border:0;}
.cal-art{display:block;width:100%;height:auto;border-radius:9px;}
@media(max-width:700px){.cal-embed.live iframe{height:520px;}}
.cal-fpo{color:#9aa0aa;font-style:italic;font-size:16px;text-align:center;padding:20px;margin:0;}
.cal-quick{font-size:16px;color:var(--navy);margin-bottom:14px;}
@media(max-width:900px){.tu-grid{grid-template-columns:1fr;}}

/* ---------- FUNNEL CARDS (ad landing anchors) ---------- */
.funnels{padding:60px 0;background:var(--light);}
.section-title{text-align:center;text-transform:uppercase;font-size:32px;margin-bottom:32px;letter-spacing:.6px;}
.section-title.light{color:#fff;}
.fn-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
.fn-card{background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 8px 24px rgba(15,25,55,.11);
  display:flex;flex-direction:column;color:var(--text);transition:transform .2s,box-shadow .2s;
  scroll-margin-top:100px;}
.fn-card:hover{transform:translateY(-6px);box-shadow:0 18px 40px rgba(15,25,55,.19);text-decoration:none;}
.fn-card img{width:100%;height:210px;object-fit:cover;}
.fn-body{padding:22px 24px 26px;display:flex;flex-direction:column;flex:1;}
.fn-label{text-transform:uppercase;letter-spacing:2px;font-size:12px;font-weight:700;color:var(--sky);}
.fn-card p{font-size:16px;color:var(--muted);margin-bottom:16px;}
.fn-go{margin-top:auto;font-weight:700;color:var(--red);font-size:16px;}
/* Intro line under the section title — same treatment as .content p.intro
   so this section reads like the rest of the site. */
.funnels .section-title{margin-bottom:16px;}
.section-lead{font-family:var(--serif);font-size:clamp(19px,2.1vw,24px);line-height:1.45;
  font-weight:600;color:var(--navy);text-align:center;max-width:900px;margin:0 auto 36px;}
/* Bulleted card body + bottom-aligned CTA (8/28 sketch).
   Titles and buttons are height-locked so all three cards line up: the
   bullets start on the same line and the buttons share one baseline. */
.fn-card h3{font-size:25px;margin:2px 0 14px;text-transform:uppercase;min-height:2.3em;text-align:center;}
.fn-list{list-style:none;margin:0 0 22px;padding:0;}
.fn-list li{position:relative;padding-left:22px;margin-bottom:10px;font-size:16.5px;
  line-height:1.45;color:#33405c;}
.fn-list li:last-child{margin-bottom:0;}
.fn-list li::before{content:"";position:absolute;left:0;top:9px;width:8px;height:8px;
  border-radius:50%;background:var(--red);}
.fn-cta{margin-top:auto;display:flex;align-items:center;justify-content:center;
  text-align:center;line-height:1.25;min-height:56px;padding:10px 18px;}
@media(max-width:900px){.fn-grid{grid-template-columns:1fr;}
  .fn-card h3{min-height:0;}
  .fn-cta{min-height:0;}}

/* ---------- MISSION / VISION / VALUES / STORY ---------- */
.mvvs{background:var(--navy-deep) var(--texture) center/cover;background-blend-mode:multiply;padding:64px 0;}
.mvvs-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;}
.mv-card{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.16);border-radius:14px;padding:28px 30px;}
.mv-card h3{color:#fff;text-transform:uppercase;font-size:25px;letter-spacing:.6px;margin-bottom:12px;}
.mv-card p,.mv-card li{color:#dbe4f2;font-size:16.5px;}
.mv-card ul{margin:0 0 0 20px;}
.mv-card li{margin-bottom:8px;}
.mv-card strong{color:#fff;}
.mv-card .readmore{display:inline-block;margin-top:12px;color:#7fd0f2;}
.mvvs-grid.inline{margin:6px 0 34px;}
.mv-card.light{background:var(--light);border:1px solid var(--line);}
.mv-card.light h3{color:var(--navy);}
.mv-card.light p,.mv-card.light li{color:var(--text);}
.mv-card.light strong{color:var(--navy);}
@media(max-width:820px){.mvvs-grid{grid-template-columns:1fr;}}

/* ---------- WHAT IS KRAV STRIP (interior pages) ---------- */
.whatis{background:var(--light);border-top:4px solid var(--red);padding:44px 0;}
.whatis h2{font-size:29px;text-transform:uppercase;margin-bottom:12px;}
.whatis p{max-width:82ch;margin-bottom:14px;}

/* ---------- GENERIC CONTENT ---------- */
.content{padding:56px 0;}
.content h2{color:var(--navy);font-size:30px;text-transform:uppercase;margin:30px 0 14px;}
.content h3{color:var(--navy);font-size:24px;margin:24px 0 10px;}
.content p{margin-bottom:16px;}
.content p.lead{font-size:20px;line-height:1.55;color:#33405c;border-left:4px solid var(--red);padding-left:18px;max-width:860px;margin:0 0 22px;}
.content p.intro{font-family:var(--serif);font-size:clamp(19px,2.1vw,24px);line-height:1.45;font-weight:600;color:var(--navy);text-align:center;max-width:900px;margin:0 auto 36px;}
.content p.intro::after{content:"";display:block;width:70px;height:3px;background:var(--red);margin:20px auto 0;border-radius:2px;}
.content ul{margin:0 0 16px 22px;}
.content li{margin-bottom:8px;}
.content .note{font-size:16px;color:var(--muted);}
.content img.band{width:100%;height:320px;object-fit:cover;border-radius:12px;box-shadow:0 6px 20px rgba(15,25,55,.12);margin:34px 0;}
ul.prep li{margin-bottom:9px;}

/* ---------- PAGE HEAD (content + schedule sidebar) ---------- */
.page-head{display:grid;grid-template-columns:1fr 330px;gap:40px;align-items:start;margin-bottom:10px;}
.page-head-main h2{margin-top:0;}
.schedule-card{background:var(--light);border:1px solid var(--line);border-radius:12px;padding:22px 24px;box-shadow:0 4px 14px rgba(15,25,55,.06);position:sticky;top:20px;}
.schedule-card h3{margin:0 0 10px;font-size:19px;color:var(--navy);text-transform:uppercase;letter-spacing:.5px;}
.schedule-card .days{margin:0 0 12px;font-weight:700;color:var(--navy);font-size:17px;}
.schedule-card ul{list-style:none;margin:0 0 16px;}
.schedule-card li{margin-bottom:8px;font-size:16px;line-height:1.4;}
.schedule-card li strong{color:var(--navy);}
@media(max-width:820px){.page-head{grid-template-columns:1fr;gap:22px;}.schedule-card{position:static;}}
/* Schedule card with no description column beside it — essentials.html, where
   the class description and prep list were removed (9/10). Keeps the card at
   its sidebar width instead of stretching it across the wrap. */
/* ---------- INLINE VIDEO BLOCK ---------- */
/* A 16:9 clip set in the flow of a content page. Capped so it doesn't dominate
   the column, and centred. aspect-ratio keeps its height reserved before the
   file loads, so nothing jumps. */
.video-block{margin:32px auto;max-width:760px;}
.video-block video{width:100%;aspect-ratio:16/9;height:auto;display:block;border-radius:10px;
  box-shadow:0 6px 20px rgba(15,25,55,.16);background:#000;}
.video-block figcaption{font-size:15px;color:var(--muted);margin-top:10px;text-align:center;}

/* A photo in the page-head's right column, where a page has no schedule card
   (speaking.html). Capped at 300px so a small source isn't stretched across
   the full 330px track. */
.side-photo{margin:0;}
.side-photo img{width:100%;max-width:300px;height:auto;display:block;border-radius:12px;
  box-shadow:0 4px 14px rgba(15,25,55,.12);}
@media(max-width:820px){.side-photo img{margin:0 auto;}}

/* Schedule card with no description column beside it — essentials,
   krav-combatives and private-lessons, where the class description and prep
   list were removed (9/10). Floated right so the copy wraps around it instead
   of leaving a hole across the rest of the row. Stands down below 820px, where
   there isn't room for text beside a 330px card. */
.schedule-solo{float:right;width:330px;margin:0 0 24px 36px;}
.schedule-solo .schedule-card{position:static;}
/* Contain the float so it can't escape into the section below. */
main.content > .wrap::after{content:"";display:table;clear:both;}
/* Structural blocks get the full width rather than squeezing in beside it. */
.content .wf-row,.content img.band,.content .band-wrap,.content .cta-block,
.content .gallery,.content .clinic-grid,.content .why-grid{clear:both;}
@media(max-width:820px){
  .schedule-solo{float:none;width:auto;max-width:330px;margin:0 0 22px;}
}

/* ---------- BAND PHOTO WITH A CLIPPING FRAME ---------- */
/* Same look as img.band, but the photo sits inside a frame that clips it, so
   motion.js can drift it for parallax without it spilling out of its box.
   Oversized on purpose (118%) to give the drift somewhere to go. With JS off
   it just reads as a normal band photo. */
.band-wrap{position:relative;overflow:hidden;width:100%;height:320px;border-radius:12px;
  box-shadow:0 6px 20px rgba(15,25,55,.12);margin:34px 0;}
.band-wrap img{position:absolute;left:0;top:-9%;width:100%;height:118%;object-fit:cover;display:block;}
@media(max-width:700px){.band-wrap{height:230px;}}

/* ---------- SCHEDULE TABLE ---------- */
table.sched{width:100%;border-collapse:collapse;margin:8px 0 18px;font-size:17px;}
table.sched th{background:var(--navy);color:#fff;text-align:left;padding:11px 14px;font-family:var(--sans);font-size:14px;text-transform:uppercase;letter-spacing:1px;}
table.sched td{padding:11px 14px;border-bottom:1px solid var(--line);}
table.sched tr:nth-child(even) td{background:var(--light);}
/* Phones: tighten the cells and keep the class time on one line — "8:15 –
   9:15 am" was breaking across two lines, which is the one thing in the table
   a visitor is actually reading. */
@media(max-width:560px){
  table.sched{font-size:15.5px;}
  table.sched th{padding:10px 8px;font-size:13px;letter-spacing:.6px;}
  table.sched td{padding:10px 8px;}
  table.sched td:nth-child(2){white-space:nowrap;}
}

/* ---------- CTA BLOCK (sketch: the three reassurance lines) ---------- */
.cta-block{background:var(--light);border:1px solid var(--line);border-left:6px solid var(--red);
  border-radius:12px;padding:34px 36px;margin:40px 0 10px;text-align:center;}
.cta-block h2{margin:0 0 16px;font-size:31px;text-transform:uppercase;}
.cta-lines{list-style:none;margin:0 0 24px;display:flex;flex-wrap:wrap;gap:10px 30px;justify-content:center;}
.cta-lines li{font-family:var(--serif);font-size:21px;font-weight:600;color:var(--navy);margin:0;}
.cta-lead{font-family:var(--serif);font-size:21px;font-weight:600;color:var(--navy);
  max-width:720px;margin:0 auto 24px;line-height:1.45;}
@media(max-width:700px){.cta-block{padding:26px 22px;}.cta-lines{flex-direction:column;gap:8px;}
  .cta-lead{font-size:18px;}}

/* ---------- PROGRAM LIST (Training hub) ---------- */
.prog-list{display:flex;flex-direction:column;gap:26px;}
.prog{display:grid;grid-template-columns:300px 1fr;gap:30px;align-items:stretch;
  background:var(--light);border:1px solid var(--line);border-radius:14px;overflow:hidden;
  box-shadow:0 6px 20px rgba(15,25,55,.06);}
.prog img{width:100%;height:100%;min-height:230px;object-fit:cover;}
.prog > div{padding:26px 30px 26px 0;align-self:center;}
.prog h2{margin:6px 0 10px;font-size:29px;}
.prog p{color:var(--muted);margin-bottom:16px;}
@media(max-width:760px){.prog{grid-template-columns:1fr;}.prog > div{padding:0 24px 26px;}}

/* ---------- CLINIC / WHY GRIDS ---------- */
.clinic-grid,.why-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px;margin:20px 0 10px;}
.clinic,.why{background:var(--light);border:1px solid var(--line);border-radius:12px;padding:26px 28px;scroll-margin-top:110px;}
.clinic h3,.why h3{margin:0 0 10px;font-size:24px;}
.clinic p,.why p{color:var(--muted);margin-bottom:12px;}
@media(max-width:760px){.clinic-grid,.why-grid{grid-template-columns:1fr;}}

/* ---------- GET STARTED / CONTACT FORM ---------- */
.gs-grid{display:grid;grid-template-columns:1fr 340px;gap:40px;align-items:start;}
.gs-form{background:var(--light);border:1px solid var(--line);border-radius:14px;padding:32px 34px;box-shadow:0 6px 20px rgba(15,25,55,.06);}
.gs-form h2{margin:0 0 20px;font-size:30px;text-transform:uppercase;}
/* Tally-hosted free class form */
.tally-wrap{padding:20px 22px;}
.tally-wrap iframe{display:block;width:100%;border:0;min-height:560px;}
.gs-form fieldset{border:0;margin:0 0 22px;}
.gs-form legend{font-family:var(--serif);font-size:21px;font-weight:600;color:var(--navy);margin-bottom:10px;}
.gs-form .hint{font-family:var(--sans);font-size:14px;font-weight:400;color:var(--muted);}
.gs-form fieldset label{display:flex;align-items:flex-start;gap:10px;padding:7px 0;font-size:16.5px;cursor:pointer;}
.gs-form input[type=checkbox],.gs-form input[type=radio]{width:19px;height:19px;margin-top:3px;accent-color:var(--red);flex:none;}
.fields{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:22px;}
.fields .f{display:flex;flex-direction:column;gap:6px;font-size:15px;font-weight:600;color:var(--navy);}
.fields .f.wide{grid-column:1 / -1;}
.fields input,.fields select,.fields textarea{
  width:100%;padding:11px 13px;border:1px solid #c9ced8;border-radius:6px;
  font-family:inherit;font-size:16px;background:#fff;color:var(--text);font-weight:400;
}
.fields input:focus,.fields select:focus,.fields textarea:focus{border-color:var(--sky);outline:none;box-shadow:0 0 0 3px rgba(31,162,214,.18);}
.form-note{font-size:14.5px;color:var(--muted);margin:14px 0 0;}
.form-status{margin-top:10px;font-size:15px;color:var(--red);font-weight:600;display:none;}
.form-status.show{display:block;}
@media(max-width:900px){.gs-grid{grid-template-columns:1fr;}.fields{grid-template-columns:1fr;}.gs-form{padding:24px 22px;}}

.gs-side{display:flex;flex-direction:column;gap:18px;}
.gs-box{background:#fff;border:1px solid var(--line);border-radius:12px;padding:22px 24px;box-shadow:0 4px 14px rgba(15,25,55,.06);}
.gs-box h3{margin:0 0 10px;font-size:20px;text-transform:uppercase;letter-spacing:.5px;}
.gs-box p{margin-bottom:8px;font-size:16px;}
.gs-box .big{font-size:26px;font-family:var(--serif);font-weight:700;}
.gs-box.quiet{background:var(--light);font-family:var(--serif);font-size:19px;color:var(--navy);font-style:italic;}
.steps{margin:0 0 0 20px;}
.steps li{margin-bottom:9px;font-size:16px;}

/* ---------- WIREFRAME ROWS ---------- */
.wf-row{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center;
  margin:26px 0;padding:34px;border-radius:16px;background:var(--light);border:1px solid var(--line);
  box-shadow:0 6px 20px rgba(15,25,55,.06);}
.wf-text h3{margin-top:0;}
.wf-photo img{width:100%;height:340px;object-fit:cover;border-radius:8px;box-shadow:0 6px 18px rgba(0,0,0,.15);}
@media(max-width:760px){.wf-row{grid-template-columns:1fr;padding:24px;}.wf-photo img{height:280px;}}

.gallery{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:30px 0 10px;}
.gallery img{width:100%;height:300px;object-fit:cover;border-radius:8px;box-shadow:0 6px 18px rgba(0,0,0,.15);}
@media(max-width:640px){.gallery{grid-template-columns:1fr;}}

/* ---------- INSTRUCTORS ---------- */
.instructor{display:grid;grid-template-columns:300px 1fr;gap:34px;align-items:start;margin:34px 0 46px;}
.instructor.reverse{grid-template-columns:1fr 300px;}
.instructor.reverse .photo{order:2;}
.instructor .photo img{width:100%;height:360px;object-fit:cover;object-position:top center;border-radius:8px;box-shadow:0 6px 18px rgba(0,0,0,.15);}
.instructor .role{text-transform:uppercase;letter-spacing:1px;color:var(--sky);font-weight:700;font-size:14px;margin-bottom:0;}
.instructor h3{margin:2px 0 14px;font-size:30px;}
.ikma{text-align:center;margin:40px 0 10px;}
.ikma img{display:inline-block;max-width:300px;width:100%;height:auto;}
@media(max-width:640px){
  .instructor,.instructor.reverse{grid-template-columns:1fr;}
  .instructor.reverse .photo{order:0;}
  .instructor .photo img{height:300px;}
}

/* ---------- AREAS WE SERVE ---------- */
.areas{background:var(--light);text-align:center;padding:44px 0;}
.areas h2{text-transform:uppercase;font-size:29px;margin-bottom:10px;}
.areas p{font-size:18px;color:var(--muted);}

/* ---------- GET STARTED BAND ---------- */
/* .cta-band is the same band used mid-page to break up a long read. It sits
   as a direct child of main.content, outside .wrap, so it runs edge to edge
   without needing 100vw (which would overflow by the scrollbar width). */
.getstarted,.cta-band{background:var(--navy-deep) var(--texture) center/cover;background-blend-mode:multiply;color:#fff;text-align:center;padding:56px 0;}
.getstarted h2,.cta-band h2{color:#fff;text-transform:uppercase;font-size:clamp(26px,4vw,38px);margin-bottom:12px;}
.getstarted p,.cta-band p{max-width:640px;margin:0 auto 22px;font-size:19px;color:#dbe4f2;}
.cta-band{margin:48px 0;}
@media(max-width:700px){.cta-band{margin:34px 0;padding:44px 0;}}
.gs-alt{font-size:16px !important;margin:18px auto 0 !important;}
.gs-alt a{color:#7fd0f2;font-weight:700;}

/* ---------- FOOTER ---------- */
.site-footer{background:var(--ink);color:#aeb2ba;padding:54px 0 26px;font-size:15px;}
/* Sister-school panel above the footer columns. Bordered rather than filled so
   it reads as a signpost off the site, not a second CTA competing with the
   navy Get Started band directly above it. */
.sister{display:flex;align-items:center;justify-content:space-between;gap:20px 30px;flex-wrap:wrap;
  border:1px solid #3d3a3b;border-radius:8px;padding:20px 24px;margin-bottom:38px;
  background:rgba(255,255,255,.03);}
.sister-text{flex:1 1 420px;}
.sister-text p{line-height:1.45;}
.sister-text strong{color:var(--white);}
.sister-kicker{color:var(--sky);text-transform:uppercase;font-size:12.5px;letter-spacing:1.3px;
  font-weight:700;margin-bottom:6px;}
.sister .btn{flex:0 0 auto;}
@media(max-width:560px){.sister{padding:18px 18px 20px;}.sister .btn{width:100%;text-align:center;}}
.footer-cols{display:grid;grid-template-columns:repeat(4,1fr);gap:34px 40px;margin-bottom:36px;}
.footer-col h3{color:var(--white);text-transform:uppercase;font-size:14px;letter-spacing:1.3px;margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid #3d3a3b;}
.footer-col ul{list-style:none;}
.footer-col li{margin-bottom:10px;line-height:1.3;}
.footer-col a{color:#c7ccd4;transition:color .15s,padding-left .15s;}
.footer-col a:hover{color:var(--sky);padding-left:3px;}
.footer-bottom{text-align:center;border-top:1px solid #3d3a3b;padding-top:22px;font-size:13.5px;letter-spacing:.3px;color:#8b8f97;}
.footer-bottom a{color:var(--sky);}
@media(max-width:760px){.footer-cols{grid-template-columns:repeat(2,1fr);gap:28px;}}
@media(max-width:430px){.footer-cols{grid-template-columns:1fr;}}

/* ---------- STICKY MOBILE CTA (CTA always reachable) ---------- */
.sticky-cta{display:none;position:fixed;left:0;right:0;bottom:0;z-index:200;
  background:rgba(23,19,20,.97);padding:9px 12px;gap:10px;box-shadow:0 -4px 18px rgba(0,0,0,.35);}
.sticky-cta a{flex:1;text-align:center;padding:13px 10px;border-radius:6px;font-weight:700;font-size:16px;}
.sticky-cta .sc-call{background:rgba(255,255,255,.14);color:#fff;flex:0 0 92px;}
.sticky-cta .sc-go{background:var(--red);color:#fff;}
.sticky-cta a:hover{text-decoration:none;}

/* ---------- RESPONSIVE NAV ---------- */
@media(max-width:1180px){
  /* Below full width the overlap is dropped — the utility bar wraps and the
     logo would sit on top of the tagline. */
  .logo img{height:70px;margin:0;}
      .nav > li > a{font-size:12.5px;padding:10px 8px;letter-spacing:.2px;}
}
/* One breakpoint, one block. (This was previously an @media(max-width:1000px)
   wrapped around an @media(max-width:900px) with only one closing brace, which
   swallowed everything below it — including the reduced-motion rules — into the
   mobile query. Anything appended to this file landed inside it too.) */
@media(max-width:900px){
  .site-header .wrap{flex-wrap:wrap;}
    .nav{flex-wrap:wrap;}
  .nav-toggle{display:block;}
  .site-header nav{flex-basis:100%;display:none;}
  .site-header.nav-open nav{display:block;}
  .nav{flex-direction:column;align-items:stretch;gap:0;padding-bottom:12px;}
  .nav > li > a{padding:13px 8px;border-bottom:1px solid rgba(255,255,255,.14);border-radius:0;font-size:15px;}
  .nav .submenu{position:static;display:none;box-shadow:none;border-radius:0;border-top:0;
    background:rgba(255,255,255,.10);padding:2px 0 8px;}
  .nav li.open .submenu{display:block;}
  .nav li:hover .submenu{display:none;}
  .nav li.open:hover .submenu{display:block;}
  .nav .submenu a{color:#eef3fa;padding:9px 26px;}
  .nav .submenu a:hover{background:rgba(255,255,255,.12);color:#fff;}
  .nav .submenu .sep{display:none;}
  .nav .nav-cta a{margin-top:10px;text-align:center;padding:14px;font-size:16px;}
  .nav-toggle{width:46px;height:46px;display:flex;flex-direction:column;justify-content:center;
    align-items:center;padding:0;}
  /* Hamburger becomes an X while the menu is open, so the control reads as
     "close" rather than "open again". */
  .nav-toggle span{transition:transform .18s,opacity .18s;}
  .site-header.nav-open .nav-toggle span:nth-child(1){transform:translateY(8px) rotate(45deg);}
  .site-header.nav-open .nav-toggle span:nth-child(2){opacity:0;}
  .site-header.nav-open .nav-toggle span:nth-child(3){transform:translateY(-8px) rotate(-45deg);}
  .sticky-cta{display:flex;}
  /* Clearance for the sticky bar lives on the footer, not on body — body
     padding left a strip of white page background below the dark footer. */
  .site-footer{padding-bottom:92px;}
  /* Inline links inside body copy get a real tap area on touch. */
  .readmore,.fn-go{display:inline-block;padding:6px 0;}
  .footer-col li{margin-bottom:4px;}
  .footer-col a{display:inline-block;padding:7px 0;}
}

/* ---------- PHONE IN LANDSCAPE ----------
   A 360px-tall viewport was showing nothing but banner. Shorten the hero
   areas so the headline, the button and the start of the page all fit. */
@media(max-height:520px) and (orientation:landscape){
  /* Utility bar + a 70px logo were eating 163px of a 360px-tall screen before
     the visitor saw anything. The bar is utility only and everything in it is
     in the footer, so it stands down here. */
  .topbar{display:none;}
  .site-header .wrap{padding:8px 24px;}
  .logo img{height:48px;}
  .banner .slides{min-height:330px;}
  .page-hero{min-height:300px;}
  .page-hero.short{min-height:200px;}
  .slide-inner,.ph-inner{padding-top:24px;padding-bottom:56px;}
  .slide-inner h2{font-size:clamp(26px,3.4vw,38px);}
  .slide-copy,.ph-copy{margin:10px 0 16px;}
}

/* ---------- REDUCED MOTION ---------- */
@media(prefers-reduced-motion:reduce){
  *{animation:none !important;transition:none !important;}
  html{scroll-behavior:auto;}
}
