  :root{
    --navy:#0D1B2A;
    --charcoal:#2B2B2B;
    --blue:#0D1B2A;
    --coral:#A25135;
    --gold:#C8A15A;
    --gold-light:#CFAD6F;
    --teal:#C8A15A;
    --ivory:#F6F3EF;
    --sand:#EFE6D9;
    --dark-green:#213327;
    --green-light:#2F4B3B;
    --text:#2B2B2B;
    --text-soft:#6C6761;
    --border:#e4dfd7;
    --error:#D64545;
    --white:#ffffff;
    --font-head:'Source Serif 4', serif;
    --font-body:'Inter', sans-serif;
    --font-logo:'Playfair Display', serif;
  }
  *{box-sizing:border-box; margin:0; padding:0;}
  html{scroll-behavior:smooth; scroll-padding-top:90px;}
  body{
    font-family:var(--font-body);
    color:var(--text);
    background:var(--ivory);
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3,.serif{font-family:var(--font-head);}
  a{text-decoration:none; color:inherit;}
  img{max-width:100%; display:block;}
  ul{list-style:none;}
  button{font-family:inherit; cursor:pointer;}
  .wrap{max-width:1180px; margin:0 auto; padding:0 32px;}
  .section{padding:88px 0;}
  .eyebrow{
    font-size:12.5px; letter-spacing:.16em; text-transform:uppercase;
    color:var(--coral); font-weight:700; margin-bottom:14px;
  }
  .center{text-align:center;}
  .section-head{max-width:620px; margin:0 auto 52px;}
  .section-head h2{font-size:32px; color:var(--navy); font-weight:600; margin-bottom:14px;}
  .section-head p{color:var(--text-soft); font-size:15.5px;}

  /* MOTION */
  .reveal{ opacity:0; transform:translateY(28px); transition:opacity .8s cubic-bezier(.16,.8,.24,1), transform .8s cubic-bezier(.16,.8,.24,1);}
  .reveal.in-view{ opacity:1; transform:translateY(0);}
  @keyframes heroUp{ from{ opacity:0; transform:translateY(18px);} to{ opacity:1; transform:translateY(0);} }
  @keyframes cardIn{ from{ opacity:0; transform:translateY(14px);} to{ opacity:1; transform:translateY(0);} }
  @keyframes logoScroll{ from{ transform:translateX(0);} to{ transform:translateX(-50%);} }
  .hero-anim{ opacity:0; animation:heroUp .8s cubic-bezier(.16,.8,.24,1) forwards;}
  .card-in{ animation:cardIn .5s cubic-bezier(.16,.8,.24,1) both;}
  @media (prefers-reduced-motion: reduce){
    html{ scroll-behavior:auto;}
    .reveal, .reveal.in-view{ opacity:1 !important; transform:none !important; transition:none !important;}
    .hero-anim, .card-in{ animation:none !important; opacity:1 !important;}
    .logo-track{ animation:none !important;}
    .logo-row{ overflow-x:auto !important;}
    .logo-row .logo-dup{ display:none !important;}
    .test-grid{ transition:none !important;}
    .test-grid.is-fading{ opacity:1 !important; transform:none !important;}
  }

  /* LOGO MARK */
  .logo-mark{
    width:44px; height:44px; border-radius:50%; background:var(--ivory);
    display:flex; align-items:center; justify-content:center;
    flex-shrink:0; padding:4px; box-sizing:border-box;
  }
  .logo-mark img{ width:100%; height:100%; display:block; object-fit:contain;}

  /* SKIP LINK */
  .skip-link{
    position:absolute; top:-100px; left:12px; z-index:2000;
    background:var(--navy); color:#fff; padding:12px 20px; border-radius:8px;
    font-size:13.5px; font-weight:600; transition:top .15s ease;
  }
  .skip-link:focus{ top:12px;}

  /* HEADER */
  header{
    position:sticky; top:0; z-index:100;
    background:rgba(255,249,242,.92); backdrop-filter:blur(8px);
    border-bottom:1px solid var(--border);
  }
  nav{ display:flex; align-items:center; justify-content:space-between; padding:16px 0; gap:20px;}
  .brand{ display:flex; align-items:center; gap:12px;}
  .brand-text .name{ letter-spacing:.02em;}
  .brand-text .name-first{ color:#000; font-family:"Times New Roman", Times, serif; font-size:20px; font-style:normal; font-weight:400; line-height:normal; text-transform:uppercase;}
  .brand-text .name-last{ color:#B95B3D; font-family:"Times New Roman", Times, serif; font-size:20px; font-style:normal; font-weight:400; line-height:normal; text-transform:uppercase;}
  .brand-text .tag{ color:#000; font-family:"Gill Sans", "Gill Sans MT", Calibri, sans-serif; font-size:11px; font-style:normal; font-weight:400; line-height:normal; text-transform:uppercase; letter-spacing:.06em;}
  .nav-links{ display:flex; gap:30px; font-size:14px; font-weight:500; color:var(--dark-green);}
  #mobileMenu a{ font-size:14px; font-weight:500; color:var(--dark-green);}
  .nav-links a{ opacity:.78; transition:.15s;}
  .nav-links a:hover{ opacity:1; color:var(--coral);}
  .nav-right{ display:flex; align-items:center; gap:18px;}
  .menu-btn{ display:none; background:none; border:none; font-size:22px; color:var(--navy);}
  .mobile-cta-bar{ display:none;}

  .btn{
    display:inline-flex; align-items:center; gap:8px; justify-content:center;
    padding:12px 24px; border-radius:8px; font-size:13.5px; font-weight:600;
    letter-spacing:.01em; border:1.5px solid transparent; transition:.15s;
    white-space:nowrap;
  }
  .btn-coral{ background:var(--coral); color:#fff;}
  .btn-coral:hover{ background:#81402a;}
  .btn-navy{ background:var(--navy); color:#fff;}
  .btn-navy:hover{ background:#16283a;}
  .btn-outline{ border-color:var(--navy); color:var(--navy); background:transparent;}
  .btn-outline:hover{ background:var(--navy); color:#fff;}
  .btn:active{ transform:scale(.96);}
  .btn-block{ width:100%;}

  /* HERO */
  .hero{ padding:72px 0 60px;}
  .hero-grid{ display:grid; grid-template-columns:1.05fr .95fr; gap:24px 56px; align-items:center;}
  .hero-intro{ grid-column:1;}
  .portrait-card{ grid-column:2;}
  .hero h1{ font-size:44px; line-height:1.18; color:var(--navy); font-weight:700; margin-bottom:20px;}
  .hero h1 em{ font-style:italic; color:var(--coral);}
  .hero p.lead{ color:var(--text-soft); font-size:15.5px; max-width:480px; margin-bottom:28px;}
  .hero-ctas{ display:flex; gap:14px; flex-wrap:wrap; margin-bottom:30px;}

  .portrait-card{
    background:#fff; border-radius:16px; overflow:hidden;
    box-shadow:0 24px 48px -28px rgba(13,27,42,.35); position:relative;
    transition:transform .4s ease;
  }
  .portrait-card:hover{ transform:translateY(-6px);}
  .portrait-card img{ width:100%; height:420px; object-fit:cover; object-position:center center;}
  .portrait-info{ padding:44px 24px 28px; text-align:center; background:var(--dark-green);}
  .portrait-info .pname{ font-family:var(--font-head); font-weight:600; font-size:20px; color:#fff;}
  .portrait-info .prole{ font-size:13px; color:var(--gold); font-weight:600; margin:2px 0 14px;}
  .portrait-info .pquote{
    font-family:var(--font-head); font-style:italic; font-size:14.5px; color:#d8d2c8;
    border-top:2px solid var(--coral); padding-top:14px; display:inline-block;
  }

  /* TRUST BAR */
  .trust{ padding:30px 0 26px; background:var(--sand); border-top:1px solid var(--border);}
  .trust-label{ text-align:center; font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--text-soft); font-weight:700; margin-bottom:22px;}
  /* .wrap already caps at 1180px site-wide, which keeps roughly 8-10 logos in view
     at once on very wide screens even though the full 18-school set scrolls through.
     .logo-row is the fixed, masked "window"; .logo-track is the strip that actually
     scrolls inside it, so the edge fade stays put while the logos move underneath it. */
  .logo-row{
    overflow:hidden; width:100%;
    -webkit-mask-image:linear-gradient(to right, transparent, #000 8%, #000 92%, transparent);
    mask-image:linear-gradient(to right, transparent, #000 8%, #000 92%, transparent);
  }
  .logo-track{
    display:flex; flex-wrap:nowrap; justify-content:flex-start; align-items:center;
    gap:38px; width:max-content;
    animation:logoScroll 42s linear infinite;
  }
  .logo-row .school-logo{ height:26.4px; width:auto; color:var(--dark-green); opacity:.82; flex-shrink:0;}
  .logo-row .school-logo text{ fill:currentColor;}

  /* STATS */
  .stats{ background:var(--sand); padding:44px 0 56px; border-bottom:1px solid var(--border);}
  .stats-grid{ display:grid; grid-template-columns:repeat(5,1fr); gap:24px; text-align:center;}
  .stats-grid > div{ border-left:1px solid rgba(13,27,42,.12); padding:0 16px;}
  .stats-grid > div:first-child{ border-left:none;}
  .stats-grid .ic{ width:52px; height:52px; margin:0 auto 12px; display:flex; align-items:center; justify-content:center;}
  .stats-grid .ic img{ width:100%; height:100%; object-fit:contain;}
  .stats-grid .ic svg{ width:34px; height:34px; color:var(--navy);}
  .stats-grid .num{ font-family:var(--font-head); font-size:32px; color:var(--navy); font-weight:600; margin-bottom:6px;}
  .stats-grid .label{ font-size:12.5px; color:var(--text-soft); max-width:170px; margin:0 auto; line-height:1.5;}

  /* APPROACH */
  .approach-grid{ display:grid; grid-template-columns:.85fr repeat(3,1fr); gap:36px; align-items:start;}
  .approach-intro{ padding-right:8px;}
  .approach-intro h2{ font-size:28px; line-height:1.25; color:var(--navy); font-weight:600; margin-bottom:14px;}
  .approach-intro p{ font-size:14.5px; color:var(--text-soft);}
  .approach-card{ background:transparent; border:none; padding:8px 4px; transition:transform .3s ease;}
  .approach-illu{ width:100%; max-width:190px; height:auto; margin-bottom:20px;}
  .approach-card:hover{ transform:translateY(-4px);}
  .approach-card h3{ font-size:18px; color:var(--navy); font-weight:600; margin-bottom:10px;}
  .approach-card p{ font-size:14.5px; color:var(--text-soft);}

  /* TESTIMONIALS */
  .testimonials{ background-color:var(--dark-green); background-image:url('imgs/testimonial-texture-2.png'); background-repeat:repeat;}
  .testimonials .eyebrow{ color:var(--gold);}
  .testimonials .section-head h2{ color:#fff;}
  .test-row{ display:flex; align-items:center; gap:20px;}
  .test-grid{
    flex:1; display:grid; grid-template-columns:repeat(3,1fr); gap:22px; align-items:stretch;
    transition:opacity .32s cubic-bezier(.16,.8,.24,1), transform .32s cubic-bezier(.16,.8,.24,1);
  }
  .test-grid.is-fading{ opacity:0; transform:translateY(10px);}
  .test-card{
    background:rgba(255,255,255,.05); border-radius:14px; border:1px solid rgba(255,255,255,.14);
    padding:28px 24px; display:flex; flex-direction:column; min-height:260px;
    height:var(--test-card-h, auto);
    transition:transform .3s ease, box-shadow .3s ease, height .2s ease;
  }
  .test-card:hover{ transform:translateY(-6px); box-shadow:0 16px 32px -20px rgba(0,0,0,.45);}
  .test-avatar-row{ display:flex; align-items:center; justify-content:space-between; margin-bottom:14px;}
  .test-avatar{
    width:40px; height:40px; border-radius:50%; flex-shrink:0;
    display:flex; align-items:center; justify-content:center;
    font-family:var(--font-head); font-weight:600; font-size:14px; color:#fff;
  }
  .stars{ color:var(--gold); font-size:15px; letter-spacing:2px;}
  .test-card p.quote{
    font-family:var(--font-head); font-style:italic; font-size:14.5px; color:#f1ede6;
    flex:1; margin-bottom:16px;
  }
  .test-attr{ font-size:12.5px; font-weight:700; color:var(--gold);}
  .arrow-btn{
    width:38px; height:38px; border-radius:50%; border:1.5px solid var(--border); background:#fff;
    display:flex; align-items:center; justify-content:center; color:var(--navy); font-size:16px; flex-shrink:0;
    transition:.15s;
  }
  .arrow-btn:hover{ border-color:var(--coral); color:var(--coral);}
  .arrow-btn:active{ transform:scale(.9);}
  .arrow-btn:disabled{ opacity:.35; cursor:not-allowed; pointer-events:none;}
  .test-dots{ display:flex; align-items:center; justify-content:center; gap:9px; margin-top:26px;}
  .test-dot{
    width:9px; height:9px; border-radius:50%; background:rgba(255,255,255,.25); border:none; padding:0;
    transition:background .25s ease, transform .25s ease;
  }
  .test-dot:hover{ background:var(--gold);}
  .test-dot.active{ background:var(--gold); transform:scale(1.25);}

  /* SERVICES */
  .services-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:24px; margin-bottom:24px;}
  .services-grid-2{ display:grid; grid-template-columns:repeat(2,1fr); gap:24px;}
  .plan{ background:#fff; border:1px solid var(--border); border-radius:14px; padding:30px 26px; position:relative; display:flex; flex-direction:column; transition:transform .3s ease, box-shadow .3s ease;}
  .plan:hover{ transform:translateY(-6px); box-shadow:0 16px 32px -20px rgba(13,27,42,.22);}
  .plan.featured{ border:2px solid var(--coral); background:#fff8f6;}
  .plan-badge{
    position:absolute; top:-13px; left:26px; background:var(--coral); color:#fff;
    font-size:10.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
    padding:5px 12px; border-radius:20px;
  }
  .plan h3{ font-size:17px; color:var(--navy); font-weight:600;}
  .plan .sessions{ font-size:12px; color:var(--text-soft); margin-bottom:14px;}
  .plan .price{ font-family:var(--font-head); font-size:28px; color:var(--navy); font-weight:600; margin-bottom:18px;}
  .plan .price sup{ font-size:13px; font-family:var(--font-body); color:var(--text-soft); font-weight:500;}
  .plan .tagline{ font-size:13px; color:var(--text-soft); margin-bottom:16px;}
  .plan ul{ margin-bottom:22px; flex:1;}
  .plan li{ font-size:13.5px; color:var(--text-soft); padding-left:22px; position:relative; margin-bottom:10px;}
  .plan .addon-note{ font-size:11.5px; color:var(--text-soft); font-style:italic; margin:-10px 0 16px;}
  .plan li:before{ content:"✓"; position:absolute; left:0; color:var(--coral); font-weight:700;}

  /* ABOUT */
  .about{ background:var(--sand);}
  .about-grid{ display:grid; grid-template-columns:.85fr 1.15fr; gap:56px; align-items:center;}
  .about-photo img{ width:100%; aspect-ratio:4/5; object-fit:cover; border-radius:16px; box-shadow:0 24px 48px -28px rgba(13,27,42,.3);}
  .about-text h2{ font-size:30px; color:var(--navy); font-weight:600; margin-bottom:16px;}
  .about-text p{ font-size:14.5px; color:var(--text-soft); margin-bottom:14px;}
  .about-text p:last-child{ margin-bottom:0;}

  /* CONTACT */
  .contact{ background:var(--green-light); position:relative; overflow:hidden;}
  .contact::after{
    content:""; position:absolute; right:0; bottom:0; width:220px; height:220px;
    background-image:radial-gradient(var(--gold) 1.5px, transparent 1.5px);
    background-size:16px 16px; opacity:.35; pointer-events:none;
  }
  .contact-grid{ display:grid; grid-template-columns:.85fr 1.15fr; gap:56px; align-items:start; position:relative; z-index:1;}
  .contact h2{ font-size:30px; color:#fff; font-weight:600; margin-bottom:16px;}
  .contact p.lead{ color:#c9c2b4; font-size:15px; max-width:400px; margin-bottom:26px;}
  .contact-points{ display:flex; flex-direction:column; gap:13px;}
  .contact-points .cp{ display:flex; gap:10px; align-items:center; font-size:13.5px; color:#e9e4da;}
  .contact-points .cp .ic{ width:18px; height:18px; color:var(--gold); flex-shrink:0;}
  .contact-points .cp a{ color:inherit; text-decoration:none;}
  .contact-points .cp a:hover{ text-decoration:underline;}
  .form-card{ background:var(--ivory); border-radius:14px; padding:32px; color:var(--text);}
  .form-row{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:14px;}
  .field label{ display:block; font-size:12px; color:var(--text-soft); margin-bottom:6px; font-weight:600;}
  .field input, .field textarea, .field select{
    width:100%; border:1px solid var(--border); border-radius:8px; padding:11px 12px;
    font-family:inherit; font-size:13.5px; background:#fff; color:var(--text);
  }
  .field input:focus, .field textarea:focus, .field select:focus{ outline:2px solid var(--blue); outline-offset:1px;}
  .field{ margin-bottom:14px;}
  .field textarea{ resize:none; height:84px;}
  .form-note{ font-size:12px; color:var(--text-soft); margin-top:10px; text-align:center; display:none;}
  .form-note.show{ display:block; color:var(--teal); font-weight:600;}
  .form-note.show.is-error{ color:var(--error);}

  /* PACKAGE MODAL */
  .modal-overlay{
    position:fixed; inset:0; background:rgba(13,27,42,.55);
    display:flex; align-items:center; justify-content:center; padding:24px;
    z-index:1000; opacity:0; visibility:hidden; transition:opacity .25s ease, visibility 0s linear .25s;
  }
  .modal-overlay.is-open{ opacity:1; visibility:visible; transition:opacity .25s ease;}
  .modal-box{
    background:#fff; border-radius:16px; width:100%; max-width:560px; max-height:90vh;
    overflow-y:auto; padding:32px; position:relative; box-shadow:0 30px 60px -20px rgba(13,27,42,.45);
    transform:translateY(16px) scale(.98); opacity:0; transition:transform .3s cubic-bezier(.16,.8,.24,1), opacity .3s ease;
  }
  .modal-overlay.is-open .modal-box{ transform:translateY(0) scale(1); opacity:1;}
  .modal-close{
    position:absolute; top:16px; right:16px; width:32px; height:32px; border-radius:50%;
    border:1px solid var(--border); background:#fff; color:var(--text-soft); font-size:18px;
    display:flex; align-items:center; justify-content:center; line-height:1; transition:.15s;
  }
  .modal-close:hover{ border-color:var(--coral); color:var(--coral);}
  .modal-summary{
    background:var(--ivory); border:1px solid var(--border); border-radius:12px;
    padding:18px 20px; margin:8px 0 24px;
  }
  .modal-summary-top{ display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:4px;}
  .modal-plan-name{ font-family:var(--font-head); font-weight:600; font-size:18px; color:var(--navy);}
  .modal-plan-price{ font-family:var(--font-head); font-weight:600; font-size:20px; color:var(--coral);}
  .modal-plan-meta{ font-size:12.5px; color:var(--text-soft);}
  .modal-thankyou{ text-align:center; padding:24px 8px 8px;}
  .modal-thankyou-icon{
    width:52px; height:52px; border-radius:50%; background:var(--teal); color:#fff;
    font-size:24px; display:flex; align-items:center; justify-content:center; margin:0 auto 16px;
  }
  .modal-thankyou h3{ font-size:20px; color:var(--navy); margin-bottom:8px;}
  .modal-thankyou p{ font-size:14px; color:var(--text-soft);}
  body.modal-open{ overflow:hidden;}
  @media (prefers-reduced-motion: reduce){
    .modal-overlay, .modal-box{ transition:none !important;}
  }
  @media(max-width:600px){
    .modal-box{ padding:24px 20px;}
    .modal-box .form-row{ grid-template-columns:1fr;}
  }
  .field textarea.essay-textarea{ min-height:200px; resize:vertical; height:auto;}
  .field-error{ display:none; color:var(--error); font-size:12px; margin-top:6px;}
  .field-error.show{ display:block;}
  .field.has-error input, .field.has-error textarea, .field.has-error select{ border-color:var(--error);}

  /* FOOTER */
  footer{ background:var(--dark-green); padding:26px 0;}
  .footer-grid{ display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap;}
  .footer-brand{ display:flex; align-items:center; gap:12px;}
  .footer-brand .name{ color:#fff; font-family:var(--font-head); font-weight:600; font-size:14px;}
  .footer-brand .tag{ color:#9D958A; font-size:9px; letter-spacing:.12em; text-transform:uppercase;}
  .footer-tag{ font-family:var(--font-head); font-style:italic; font-size:14px; color:#e9e4da; text-align:center;}
  .footer-tag b{ color:var(--gold); font-style:normal;}
  .footer-right{ display:flex; align-items:center; gap:18px; font-size:12.5px; color:#9D958A;}
  .social{ display:flex; gap:12px;}
  .social a{ width:28px; height:28px; border-radius:50%; border:1px solid rgba(255,255,255,.15); display:flex; align-items:center; justify-content:center; color:#e9e4da; font-size:13px;}
  .accent-bar{ height:6px; background:var(--teal);}

  @media(max-width:900px){
    .hero-grid, .contact-grid, .about-grid{ grid-template-columns:1fr;}
    .hero-intro{ grid-column:auto; grid-row:auto; order:1;}
    .portrait-card{ grid-column:auto; grid-row:auto; order:2;}
    .test-grid, .services-grid, .services-grid-2, .stats-grid{ grid-template-columns:1fr 1fr;}
    .approach-grid{ grid-template-columns:1fr; gap:32px;}
    .approach-intro{ padding-right:0;}
    .nav-links{ display:none;}
    .menu-btn{ display:block;}
    .header-cta{ display:none;}
    .footer-grid{ flex-direction:column; text-align:center;}
    body{ padding-bottom:78px;}
    .mobile-cta-bar{
      display:block; position:fixed; left:0; right:0; bottom:0; z-index:150;
      padding:12px 16px; background:rgba(255,249,242,.96); backdrop-filter:blur(8px);
      border-top:1px solid var(--border); box-shadow:0 -6px 20px rgba(13,27,42,.1);
    }
  }
  @media(max-width:600px){
    .services-grid, .services-grid-2, .stats-grid{ grid-template-columns:1fr;}
    .hero h1{ font-size:32px;}
    .form-row{ grid-template-columns:1fr;}

    /* School logos: slightly tighter spacing on phones */
    .logo-track{ gap:22px; animation-duration:26s;}

    /* Testimonials: one full-width card at a time, arrows float over the edges */
    .test-row{ position:relative; gap:0;}
    .test-grid{
      display:flex; overflow-x:auto; scroll-snap-type:x mandatory;
      -webkit-overflow-scrolling:touch; gap:16px; padding:0 44px;
    }
    .test-card{ flex:0 0 100%; scroll-snap-align:center;}
    .arrow-btn{ position:absolute; top:50%; transform:translateY(-50%); z-index:5;}
    #prevBtn{ left:2px;}
    #nextBtn{ right:2px;}
  }
