  :root{
    --navy:#33409E;
    --navy-deep:#1F2760;
    --navy-light:#EEF0FA;
    --white:#FFFFFF;
    --ink:#1D2233;
    --sky:#5B7CFA;
    --success:#3FBE7A;
    --card:#FFFFFF;
    --radius:16px;
    --ink-soft:#4F5786;      /* secondary text on light (was var(--ink-soft) / var(--ink-soft), under 4.5:1) */
    --sky-text:#3550C9;      /* sky as text on light grounds (4.5:1+) */
    --sky-btn:#3F5BD9;       /* sky buttons with white text (5:1+) */
    --sky-on-dark:#9DB0FF;   /* sky as text on dark grounds */
    /* added by the design system (MASTER.md) */
    --ground-blue:#1F2760; --ground-white:#FFFFFF;
    --on-blue:#FFFFFF; --on-blue-soft:#C9CFF0; --line-on-blue:rgba(255,255,255,.16);
    --danger:#B42318;
    --space-section:96px;
    --shadow-lift:0 14px 30px rgba(31,39,96,.16);
    --ease-out:cubic-bezier(.22,1,.36,1);
    --t-micro:160ms; --t-ui:280ms; --t-reveal:600ms; --stagger:60ms;
    --lift-btn:-2px; --lift-card:-4px; --press:.97;
  }
  *{box-sizing:border-box;margin:0;padding:0;}
  html{scroll-behavior:smooth;}
  section[id]{scroll-margin-top:76px;}
  body{background:var(--white);color:var(--ink);font-family:'Inter',sans-serif;line-height:1.6;overflow-x:hidden;}
  h1,h2,h3{font-family:'Poppins',sans-serif;font-weight:700;color:var(--navy-deep);}
  .mono{font-family:'IBM Plex Mono',monospace;letter-spacing:.03em;}
  a{color:inherit;text-decoration:none;}
  img{max-width:100%;display:block;}
  .wrap{max-width:1140px;margin:0 auto;padding:0 24px;}
  .btn{display:inline-flex;align-items:center;gap:8px;padding:14px 28px;border-radius:999px;font-weight:600;font-size:15px;transition:transform .15s ease, box-shadow .15s ease;cursor:pointer;border:none;font-family:'Inter',sans-serif;}
  .btn:hover{transform:translateY(-2px);}
  .btn-primary{background:var(--navy);color:#fff;box-shadow:0 6px 18px rgba(51,64,158,.3);}
  .btn-primary:hover{box-shadow:0 10px 24px rgba(51,64,158,.4);}
  .btn-ghost{background:transparent;color:var(--navy);border:1.5px solid var(--navy);}
  .btn-sky{background:var(--sky-btn);color:#fff;box-shadow:0 6px 16px rgba(91,124,250,.35);}
  .btn-sky:hover{box-shadow:0 10px 22px rgba(91,124,250,.45);}

  header{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border-bottom:1px solid rgba(51,64,158,.1);transition:box-shadow .3s ease;}
  header.scrolled{box-shadow:0 4px 18px rgba(0,0,0,.06);}
  header nav{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;max-width:1140px;margin:0 auto;}
  .logo-mark{font-family:'Poppins',sans-serif;font-weight:800;font-size:21px;color:var(--navy);display:flex;align-items:baseline;gap:4px;min-height:44px;align-items:center;}
  .logo-mark .sub{font-family:'Inter',sans-serif;font-weight:500;font-size:12px;color:var(--ink-soft);margin-left:6px;white-space:nowrap;}
  .nav-links{display:flex;gap:26px;font-size:14.5px;font-weight:500;list-style:none;margin:0;padding:0;}
  .nav-links a{display:inline-flex;align-items:center;min-height:44px;}
  .nav-links a{opacity:.85;position:relative;}
  .nav-links a:after{content:'';position:absolute;left:0;bottom:-4px;width:100%;height:2px;background:var(--sky);transform:scaleX(0);transform-origin:left;transition:transform var(--t-ui) var(--ease-out);}
  .nav-links a:hover{opacity:1;color:var(--navy);}
  .menu-toggle{display:none;background:none;border:none;font-size:26px;color:var(--navy);cursor:pointer;min-width:44px;min-height:44px;}

  /* HERO */
  .hero{position:relative;padding:80px 24px 90px;background:linear-gradient(160deg,var(--navy-deep) 0%, var(--navy) 100%);overflow:hidden;text-align:center;color:#fff;}
  .hero-watermark{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:640px;max-width:none;opacity:.06;filter:brightness(0) invert(1);pointer-events:none;}
  #pulseCanvas{position:absolute;inset:0;pointer-events:none;}
  .hero-inner{position:relative;z-index:2;}
  .eyebrow{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.14em;text-transform:uppercase;margin-bottom:16px;opacity:.85;}
  .hero h1{font-size:clamp(32px,5.4vw,54px);line-height:1.12;max-width:760px;margin:0 auto 18px;color:#fff;}
  .hero p.sub{font-size:18px;color:rgba(255,255,255,.82);max-width:520px;margin:0 auto 32px;}
  .hero-ctas{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;margin-bottom:26px;}
  .trust-line{display:inline-flex;align-items:center;gap:10px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22);padding:10px 20px;border-radius:999px;font-size:13.5px;font-weight:500;backdrop-filter:blur(6px);}
  .hero .eyebrow,.hero p.sub,.hero-ctas,.trust-line{opacity:0;transform:translateY(18px);animation:hero-in .8s ease forwards;}
  .hero .eyebrow{animation-delay:.05s;} .hero p.sub{animation-delay:.32s;}
  .hero-ctas{animation-delay:.46s;} .trust-line{animation-delay:.6s;}
  @keyframes hero-in{to{opacity:1;transform:translateY(0);}}

  .ticker-wrap{background:var(--navy-deep);overflow:hidden;padding:12px 0;}
  .ticker{display:flex;white-space:nowrap;animation:ticker-scroll 24s linear infinite;width:max-content;}
  .ticker span{color:#fff;font-family:'IBM Plex Mono',monospace;font-size:13px;letter-spacing:.08em;padding:0 28px;opacity:.85;}
  @keyframes ticker-scroll{from{transform:translateX(0);}to{transform:translateX(-50%);}}

  section{padding:80px 24px;}
  .section-head{text-align:center;max-width:620px;margin:0 auto 50px;}
  .section-head .eyebrow{justify-content:center;display:flex;color:var(--sky-text);opacity:1;}
  .section-head h2{font-size:clamp(26px,4vw,38px);}
  .section-head p{color:#4b5170;margin-top:10px;}

  .story{background:var(--navy-light);}
  .story-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:50px;align-items:center;max-width:1050px;margin:0 auto;}
  .story-grid img{border-radius:var(--radius);box-shadow:0 20px 40px rgba(31,39,96,.18);filter:saturate(1.05) contrast(1.04) brightness(.99);}
  .gallery-grid img{filter:saturate(1.05) contrast(1.04) brightness(.99);}
  .story p{color:#4b5170;margin-bottom:16px;}
  .story-stats{display:flex;gap:28px;margin-top:26px;flex-wrap:wrap;}
  .story-stats .num{font-family:'Poppins',sans-serif;font-weight:800;font-size:30px;color:var(--navy);}
  .story-stats .label{font-size:12.5px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;}

  /* PROGRAMS */
  .programs-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;max-width:1140px;margin:0 auto;}
  @media(max-width:1100px){ .programs-grid{grid-template-columns:repeat(2,1fr);max-width:760px;} }
  @media(max-width:620px){ .programs-grid{grid-template-columns:1fr;max-width:420px;} }
  .program-card{background:var(--card);border-radius:var(--radius);padding:28px;border:1px solid rgba(51,64,158,.1);position:relative;overflow:hidden;transition:transform .25s ease, box-shadow .25s ease;}
  .program-card:hover{transform:translateY(-6px);box-shadow:0 16px 32px rgba(51,64,158,.14);}
  .program-card h3{font-size:19px;margin-bottom:6px;}
  .program-card .tagline{font-size:13px;color:var(--ink-soft);margin-bottom:16px;}
  .program-checklist{list-style:none;margin-bottom:18px;}
  .program-checklist li{display:flex;gap:8px;align-items:flex-start;font-size:13.5px;color:#3d4363;margin-bottom:8px;}
  .program-checklist li:before{content:'✓';color:var(--success);font-weight:700;flex-shrink:0;}
  .program-price{border-top:1px dashed rgba(51,64,158,.2);padding-top:14px;}
  .program-price .amount{font-family:'Poppins',sans-serif;font-weight:800;font-size:26px;color:var(--navy);}
  .program-price .save-badge{display:inline-block;background:var(--navy-light);color:var(--navy);font-size:12px;font-weight:700;padding:3px 10px;border-radius:999px;margin-left:8px;vertical-align:middle;}
  .program-price .meta{font-size:12px;color:var(--ink-soft);margin-top:4px;}

  /* SERVICES (tabs) */
  .service-tabs{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;overflow-x:auto;width:100%;max-width:none;margin:0 auto 26px;padding-bottom:6px;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
  .service-tabs::-webkit-scrollbar{display:none;}
  .service-tab{flex-shrink:0;min-height:44px;padding:10px 20px;border-radius:999px;font-size:14px;font-weight:600;background:var(--card);border:1px solid rgba(51,64,158,.15);color:var(--navy);cursor:pointer;transition:background .2s ease, color .2s ease, transform .2s ease;}
  .service-tab:hover{transform:translateY(-2px);}
  .service-tab.active{background:var(--navy);color:#fff;border-color:var(--navy);}
  .service-panel{max-width:800px;margin:0 auto;background:var(--card);border-radius:var(--radius);padding:8px 0;box-shadow:0 10px 26px rgba(51,64,158,.1);}
  .service-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding:16px 28px;border-top:1px solid rgba(51,64,158,.08);flex-wrap:wrap;}
  .service-row:first-of-type{border-top:none;}
  .service-name{font-weight:600;color:var(--ink);font-size:15px;}
  .service-note{display:block;font-size:12px;color:var(--ink-soft);font-weight:400;margin-top:2px;}
  .service-prices{display:flex;gap:10px;flex-wrap:wrap;}
  .price-chip{background:var(--navy-light);color:var(--navy-deep);font-family:'IBM Plex Mono',monospace;font-size:12px;font-weight:600;padding:6px 12px;border-radius:8px;white-space:nowrap;}
  .panel-fade{animation:panel-fade .35s ease;}
  @keyframes panel-fade{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:translateY(0);}}

  /* GALLERY */
  .gallery-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;max-width:1100px;margin:0 auto;}
  .gallery-grid img{border-radius:var(--radius);width:100%;height:100%;object-fit:cover;aspect-ratio:1/1;transition:transform .5s ease;}
  .gallery-grid img:hover{transform:scale(1.04);}
  .gallery-grid .tall{grid-row:span 2;}
  .gallery-grid .tall img{aspect-ratio:1/2.15;}

  .testimonials{background:var(--white);}
  .video-card{max-width:820px;margin:0 auto;border-radius:var(--radius);overflow:hidden;box-shadow:0 20px 40px rgba(31,39,96,.18);border:1px solid rgba(51,64,158,.12);background:var(--navy-deep);}
  .video-frame{position:relative;width:100%;padding-top:56.25%;}
  .video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}

  .faq{max-width:720px;margin:0 auto;}
  details{border-bottom:1px solid rgba(51,64,158,.15);padding:18px 0;}
  summary{min-height:44px;font-weight:600;font-size:16.5px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;color:var(--navy-deep);}
  summary::-webkit-details-marker{display:none;}
  summary:after{content:'+';font-size:22px;color:var(--sky);}
  details[open] summary:after{content:'–';}
  details p{margin-top:12px;color:#4b5170;font-size:14.5px;}

  .location{background:var(--navy-deep);color:#fff;}
  .location-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px;max-width:1000px;margin:0 auto;align-items:start;}
  .location .section-head h2{color:#fff;}
  .location .eyebrow{color:var(--sky-on-dark);}
  .info-row{display:flex;align-items:center;gap:14px;margin-bottom:12px;font-size:15px;min-height:44px;}
  .info-row a{display:inline-flex;align-items:center;min-height:44px;}
  .icon-svg{color:var(--sky);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
  .amenity-row{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0;list-style:none;padding:0;}
  .amenity-chip{display:inline-flex;align-items:center;gap:7px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.25);color:#fff;font-size:13px;font-weight:500;padding:8px 14px;border-radius:999px;transition:background .25s ease, transform .2s ease;}
  .amenity-chip:hover{background:rgba(255,255,255,.18);transform:translateY(-2px);}
  .hours-card{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);border-radius:var(--radius);padding:18px 20px;margin-bottom:6px;}
  .hours-card-head{display:flex;align-items:center;gap:8px;font-weight:600;font-size:14px;color:var(--sky-on-dark);margin-bottom:12px;}
  .hours-card-head:not(.is-open) .live-dot{background:#9aa0bd;}
  .hours-card-head:not(.is-open) .live-dot:before{display:none;}
  .live-dot{width:9px;height:9px;border-radius:50%;background:var(--success);position:relative;flex-shrink:0;}
  .live-dot:before{content:'';position:absolute;inset:0;border-radius:50%;background:var(--success);animation:live-pulse 1.8s ease-out infinite;}
  @keyframes live-pulse{0%{transform:scale(1);opacity:.7;}100%{transform:scale(2.6);opacity:0;}}
  .hours-row{display:flex;justify-content:space-between;font-size:14px;color:rgba(255,255,255,.85);padding:6px 0;border-top:1px solid rgba(255,255,255,.1);}
  .hours-row:first-of-type{border-top:none;}
  .map-frame{border-radius:var(--radius);overflow:hidden;border:1px solid rgba(255,255,255,.2);position:relative;transition:transform .4s ease, box-shadow .4s ease;}
  .map-frame:hover{transform:scale(1.015);box-shadow:0 16px 34px rgba(0,0,0,.25);}
  .map-frame iframe{width:100%;height:320px;border:0;}

  .wa-float{position:fixed;bottom:24px;right:24px;z-index:200;background:#25D366;color:#fff;width:58px;height:58px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:26px;box-shadow:0 8px 22px rgba(37,211,102,.4);}

  .js .reveal{opacity:0;transform:translateY(28px);transition:opacity .7s ease, transform .7s ease;}
  .reveal.in{opacity:1;transform:translateY(0);}
  .js .reveal-stagger > *{opacity:0;transform:translateY(24px);transition:opacity .6s ease, transform .6s ease;}
  .reveal-stagger.in > *{opacity:1;transform:translateY(0);}
  .reveal-stagger.in > *:nth-child(1){transition-delay:.05s;} .reveal-stagger.in > *:nth-child(2){transition-delay:.15s;}
  .reveal-stagger.in > *:nth-child(3){transition-delay:.25s;} .reveal-stagger.in > *:nth-child(4){transition-delay:.35s;}

  footer{background:var(--ink);color:#C4C8DC;padding:50px 24px 30px;}
  .footer-grid{display:flex;justify-content:space-between;flex-wrap:wrap;gap:30px;max-width:1140px;margin:0 auto 30px;}
  .footer-grid h4{color:#fff;font-family:'Poppins',sans-serif;margin-bottom:12px;}
  .footer-grid .col a{display:flex;align-items:center;min-height:44px;font-size:14px;opacity:.9;}
  .footer-head{color:#fff;font-family:'Poppins',sans-serif;font-size:16px;margin-bottom:8px;}
  .footer-bottom{text-align:center;font-size:12.5px;opacity:.85;border-top:1px solid rgba(255,255,255,.1);padding-top:20px;max-width:1140px;margin:0 auto;}



  .program-icon{
    width:40px;height:40px;border-radius:50%;background:var(--navy-light);
    display:flex;align-items:center;justify-content:center;color:var(--navy);
    flex-shrink:0;
  }
  .program-icon svg{width:20px;height:20px;}
  .program-head{display:flex;align-items:center;gap:12px;margin-bottom:4px;}
  .program-head h3{margin:0;}
  .price-row{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;}
  .price-original{position:relative;color:#646C99;font-size:15px;font-weight:600;}
  .price-original:after{
    content:'';position:absolute;left:0;top:50%;height:2px;background:#c23b3b;
    width:100%;transform:translateY(-50%) scaleX(0);transform-origin:left;transition:transform .6s ease .4s;
  }
  .reveal-stagger.in .price-original:after{transform:translateY(-50%) scaleX(1);}
  html:not(.js) .price-original:after{transform:translateY(-50%) scaleX(1);}


  @media (prefers-reduced-motion: reduce){*{animation-duration:.001s !important;animation-iteration-count:1 !important;transition-duration:.001s !important;}}

  /* LOADING SCREEN */
  html.is-loading{overflow:hidden;}
  #loader{
    position:fixed;inset:0;z-index:9999;
    background:linear-gradient(160deg,var(--navy-deep) 0%, var(--navy) 100%);
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;
    transition:opacity .6s ease, visibility .6s ease;
  }
  #loader{cursor:pointer;}
  html:not(.js) #loader, html:not(.is-loading) #loader:not(.loader-leave){display:none;}
  #loader.loader-leave{animation:loader-out .6s ease forwards;pointer-events:none;}
  @keyframes loader-out{to{opacity:0;visibility:hidden;}}
  .loader-skip{position:absolute;bottom:28px;left:0;right:0;text-align:center;font-size:13px;color:rgba(255,255,255,.7);}
  .loader-ring-wrap{position:relative;width:96px;height:96px;display:flex;align-items:center;justify-content:center;}
  .loader-ring{
    position:absolute;inset:0;border-radius:50%;
    border:3px solid rgba(255,255,255,.15);
    border-top-color:var(--sky);
    animation:loader-spin 1s linear infinite;
  }
  .loader-ring.r2{inset:12px;border-top-color:transparent;border-right-color:var(--sky);animation-duration:1.4s;animation-direction:reverse;opacity:.7;}
  @keyframes loader-spin{to{transform:rotate(360deg);}}
  .loader-logo{font-family:'Poppins',sans-serif;font-weight:800;font-size:15px;color:#fff;position:relative;z-index:1;}
  .loader-logo span{color:var(--sky);}
  .loader-word{font-family:'Poppins',sans-serif;font-weight:800;font-size:28px;color:#fff;letter-spacing:.02em;}
  .loader-word span{display:inline-block;opacity:0;transform:translateY(14px);animation:loader-letter .5s ease forwards;}
  .loader-word span.sky{color:var(--sky);}
  @keyframes loader-letter{to{opacity:1;transform:translateY(0);}}
  .loader-pulse{width:220px;height:36px;}
  .loader-pulse path{
    fill:none;stroke:rgba(255,255,255,.5);stroke-width:2;
    stroke-dasharray:400;stroke-dashoffset:400;
    animation:loader-draw 1.8s ease-in-out infinite;
  }
  @keyframes loader-draw{
    0%{stroke-dashoffset:400;}
    50%{stroke-dashoffset:0;}
    100%{stroke-dashoffset:-400;}
  }
  .loader-bar-track{width:200px;height:3px;background:rgba(255,255,255,.15);border-radius:999px;overflow:hidden;}
  .loader-bar-fill{width:100%;height:100%;background:var(--sky);border-radius:999px;transform:scaleX(0);transform-origin:left;transition:transform 5s linear;}
  .loader-tag{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.14em;color:rgba(255,255,255,.5);text-transform:uppercase;}

  @media(max-width:1100px){
    .nav-links{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;gap:0;background:#fff;padding:12px 24px 20px;border-bottom:1px solid rgba(51,64,158,.12);box-shadow:0 18px 30px rgba(31,39,96,.12);}
    .nav-links.open{display:flex;}
    .nav-links a{font-size:17px;}
    .menu-toggle{display:block;}
    .nav-phone{display:none;}
  }
  @media(max-width:820px){
    .story-grid,.location-grid{grid-template-columns:1fr;}
    .gallery-grid{grid-template-columns:repeat(2,1fr);}
    .gallery-grid .tall{grid-row:span 1;}
    .gallery-grid .tall img{aspect-ratio:1/1;}
    .hero-watermark{width:420px;}
  }


  /* ===================== added for the Website Build SOP ===================== */
  .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;}
  .skip-link{position:fixed;left:16px;top:-80px;z-index:300;background:var(--navy-deep);color:#fff;padding:12px 18px;border-radius:8px;font-weight:600;}
  .skip-link:focus{top:12px;}
  :focus-visible{outline:3px solid var(--sky);outline-offset:3px;}
  html.is-loading{overflow:hidden;}

  /* header: phone link, dark version over dark sections */
  header nav{position:relative;}
  .nav-cta{display:flex;align-items:center;gap:18px;}
  .nav-phone{font-weight:600;font-size:14.5px;color:var(--navy);display:inline-flex;align-items:center;min-height:44px;white-space:nowrap;}
  header{transition:background-color .3s ease, box-shadow .3s ease, border-color .3s ease;}
  header.header-dark{background:rgba(31,39,96,.94);border-bottom-color:rgba(255,255,255,.12);}
  header.header-dark .logo-mark, header.header-dark .nav-links a, header.header-dark .nav-phone, header.header-dark .menu-toggle{color:#fff;}
  header.header-dark .logo-mark .sub{color:#C9CFF0;}
  header.header-dark .btn-primary{background:#fff;color:var(--navy-deep);}
  @media(max-width:1100px){ header.header-dark .nav-links{background:var(--navy-deep);} }

  /* sizes: the header must never push the page sideways on small phones */
  @media(max-width:520px){
    header nav{padding:10px 16px;}
    .logo-mark{font-size:19px;}
    .logo-mark .sub{display:none;}
    .nav-cta .btn{padding:10px 14px;font-size:13.5px;min-height:44px;}
    .hero-watermark{width:300px;}
  }
  .hero{overflow:hidden;}
  .hero-watermark{max-width:none;}
  .trust-line{margin:0;}

  /* pause every animated element while it is off screen, pseudo-elements included */
  .is-paused, .is-paused::before, .is-paused::after, .is-paused *{animation-play-state:paused !important;}

  /* 07 · booking form */
  .book{background:var(--white);}
  .book-grid{display:grid;grid-template-columns:1fr 1.25fr;gap:56px;align-items:start;max-width:1050px;}
  .book-intro h2{font-size:clamp(26px,4vw,38px);margin-bottom:14px;}
  .book-intro .eyebrow{color:var(--sky-text);opacity:1;}
  .book-intro p{color:#4b5170;margin-bottom:14px;}
  .book-alt a{color:var(--navy);font-weight:600;text-decoration:underline;text-underline-offset:3px;}
  .booking-form{display:grid;grid-template-columns:1fr 1fr;gap:18px 20px;background:var(--navy-light);border-radius:var(--radius);padding:28px;}
  .field{display:flex;flex-direction:column;gap:6px;}
  .field-wide{grid-column:1 / -1;}
  .field label{font-weight:600;font-size:14px;color:var(--navy-deep);}
  .field input, .field select, .field textarea{font:inherit;font-size:16px;color:var(--ink);background:#fff;border:1.5px solid rgba(51,64,158,.25);border-radius:10px;padding:12px 14px;min-height:48px;width:100%;}
  .field textarea{resize:vertical;min-height:110px;}
  .field input:focus, .field select:focus, .field textarea:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(91,124,250,.3);}
  .field [aria-invalid="true"]{border-color:#B42318;}
  .field-error{font-size:13px;color:#B42318;margin:0;}
  .form-actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px;}
  .form-actions .btn{min-height:48px;}
  .form-actions .btn[disabled]{opacity:.7;cursor:wait;}
  .form-status{margin:0;font-size:14px;color:var(--ink);}
  .form-status.is-ok{color:#1E7A46;font-weight:600;}
  .form-status.is-error{color:#B42318;}
  .form-status a{color:inherit;text-decoration:underline;}
  @media(max-width:820px){ .book-grid{grid-template-columns:1fr;gap:28px;} .booking-form{grid-template-columns:1fr;padding:20px;} }

  .location-ctas{display:flex;gap:14px;margin-top:24px;flex-wrap:wrap;}
  .faq-section{background:var(--navy-light);}

  /* page counter "03 / 10" */
  .page-counter{position:fixed;left:20px;bottom:24px;z-index:150;font-family:'IBM Plex Mono',monospace;font-size:13px;letter-spacing:.06em;color:var(--navy-deep);background:rgba(255,255,255,.92);border:1px solid rgba(51,64,158,.15);padding:6px 12px;border-radius:999px;opacity:0;transform:translateY(8px);transition:opacity .3s ease, transform .3s ease;pointer-events:none;}
  .page-counter.show{opacity:1;transform:none;}

  /* quick contact: floating WhatsApp on laptops, Call / Book bar on phones; hidden over the form and contact section */
  /* hide the children, never transform the container: a transformed parent would re-anchor these fixed elements */
  .wa-float, .quick-bar{transition:opacity .3s ease, translate .3s ease, visibility 0s;}
  .quick-contact.is-hidden .wa-float, .quick-contact.is-hidden .quick-bar{opacity:0;translate:0 16px;pointer-events:none;visibility:hidden;transition:opacity .3s ease, translate .3s ease, visibility 0s .3s;}
  .wa-float svg{display:block;}
  .quick-bar{display:none;}
  @media(max-width:767px){
    .wa-float{display:none;}
    .quick-bar{display:grid;grid-template-columns:1fr 1.6fr;gap:8px;position:fixed;left:0;right:0;bottom:0;z-index:200;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:rgba(255,255,255,.96);border-top:1px solid rgba(51,64,158,.12);}
    .quick-bar a{display:flex;align-items:center;justify-content:center;min-height:48px;border-radius:999px;font-weight:600;font-size:15px;}
    .quick-bar a:first-child{background:var(--navy-light);color:var(--navy);}
    .quick-bar a:last-child{background:var(--navy);color:#fff;}
    footer{padding-bottom:96px;}
    .page-counter{top:72px;bottom:auto;left:auto;right:12px;}
  }
  @media (prefers-reduced-motion: reduce){ .page-counter, .wa-float, .quick-bar{transition:none;} }

  /* phones: the quick bar carries Call / Book, so the header keeps only the logo and the menu */
  @media(max-width:767px){ .nav-cta{display:none;} }
  .nav-links a, .footer-grid .col a{min-width:44px;}

  /* counters count in place: the final width is reserved, so the card never re-wraps while numbers rise (layout shift) */
  .program-price .amount, .story-stats .num{display:inline-block;font-variant-numeric:tabular-nums;text-align:left;}
  .program-price .amount{min-width:4.2ch;}
  .story-stats .num{min-width:3.4ch;}

  /* the loader word is filled letter by letter: reserve its height so nothing around it moves */
  .loader-word{min-height:1.3em;line-height:1.3;}

  /* the scrollbar space is always reserved, so unlocking the page after the loader never shifts fixed elements */
  html{scrollbar-gutter:stable;}

  /* text effect on every heading (vanilla port of motion-primitives TextEffect, preset "fade-in-blur", per word):
     each word starts 20px low, blurred 12px and transparent, and settles into place. The blur is the user's choice
     over the SOP's transform-and-opacity rule; it runs once per heading and only while that heading arrives.
     main.js splits a heading into words only when JavaScript runs and motion is allowed. */
  .te-mask{display:inline-block;vertical-align:top;}
  .te-seg{display:inline-block;opacity:0;transform:translateY(20px);filter:blur(12px);transition:transform .6s cubic-bezier(.22,1,.36,1), opacity .5s ease, filter .6s ease;transition-delay:calc(var(--te-i) * 50ms);}
  .te-in .te-seg{opacity:1;transform:none;filter:none;}


  /* ===================== DESIGN SYSTEM (MASTER.md): grounds, sweep, micro-interactions ===================== */
  @view-transition{navigation:auto;}
  section{padding:var(--space-section) 24px;}
  @media(max-width:767px){ section{padding:64px 20px;} }

  /* section grounds: blue, white, blue… from the hero down */
  [data-ground="white"]{background:var(--ground-white);}
  [data-ground="blue"]:not(.hero){background:var(--ground-blue);color:var(--on-blue-soft);}
  [data-ground="white"]{--g-prev:var(--ground-blue);}
  [data-ground="blue"]{--g-prev:var(--ground-white);}
  [data-ground="blue"] .section-head h2, .book-intro h2{color:var(--on-blue);}
  [data-ground="blue"] .section-head p, .book-intro p{color:var(--on-blue-soft);}
  [data-ground="blue"] .eyebrow, .book-intro .eyebrow{color:var(--sky-on-dark);}
  .book-alt a{color:var(--on-blue);}
  .booking-form{background:var(--white);}

  /* footer on white */
  footer{background:var(--ground-white);color:var(--ink-soft);border-top:1px solid rgba(51,64,158,.1);}
  .footer-head, .footer-grid h4{color:var(--navy-deep);}
  .footer-grid .col a{color:var(--navy);opacity:1;}
  .footer-bottom{border-top-color:rgba(51,64,158,.12);opacity:1;}

  /* the sweep: the previous section's colour sits on top as ::before and recedes; main.js drives --clip */
  .sweep-on .sweep{position:relative;isolation:isolate;}
  .sweep-on .sweep::before{content:'';position:absolute;inset:0;z-index:-1;background:var(--g-prev);clip-path:var(--clip, inset(0));pointer-events:none;}
  .sweep-on .sweep > *{transition:opacity var(--t-ui) ease;}
  .sweep-on .sweep:not(.swept) > *{opacity:0;}


  /* motion tokens on what already moves */
  .hero .eyebrow,.hero p.sub,.hero-ctas,.trust-line{animation-timing-function:var(--ease-out);}
  .js .reveal{transform:translateY(24px);transition:opacity var(--t-reveal) var(--ease-out), transform var(--t-reveal) var(--ease-out);}
  .js .reveal-stagger > *{transition:opacity var(--t-reveal) var(--ease-out), transform var(--t-reveal) var(--ease-out);}
  .reveal-stagger.in > *:nth-child(1){transition-delay:.05s;} .reveal-stagger.in > *:nth-child(2){transition-delay:.11s;}
  .reveal-stagger.in > *:nth-child(3){transition-delay:.17s;} .reveal-stagger.in > *:nth-child(4){transition-delay:.23s;}
  header{transition:background-color var(--t-ui) ease, box-shadow var(--t-ui) ease, border-color var(--t-ui) ease;}

  /* buttons: flat at rest; hover lifts 2px and deepens; press .97; focus ring; disabled */
  .btn{transition:transform var(--t-micro) var(--ease-out), box-shadow var(--t-ui) var(--ease-out), background-color var(--t-micro) ease, color var(--t-micro) ease, border-color var(--t-micro) ease;}
  .btn-primary, .btn-sky{box-shadow:none;}
  .btn:hover{transform:translateY(var(--lift-btn));box-shadow:var(--shadow-lift);}
  .btn-primary:hover{background:var(--navy-deep);}
  .btn-sky:hover{background:var(--sky-text);}
  .btn-ghost:hover{background:var(--navy);color:#fff;}
  .btn-ghost-light{color:#fff;border-color:rgba(255,255,255,.6);}
  .btn-ghost-light:hover{background:#fff;color:var(--navy-deep);border-color:#fff;}
  .btn:active{transform:translateY(0) scale(var(--press));box-shadow:none;transition-duration:80ms;}
  .btn[disabled]{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none;}
  header.header-dark .btn-primary:hover{background:var(--navy-light);}
  [data-ground="blue"] .btn:hover{box-shadow:0 14px 30px rgba(0,0,0,.28);}

  /* program cards: flat, lift 4px on hover (translate, so it never fights the reveal's transform) */
  .js .reveal-stagger > .program-card{transition-property:opacity, transform, translate, box-shadow;transition-duration:var(--t-reveal), var(--t-reveal), var(--t-ui), var(--t-ui);transition-timing-function:var(--ease-out);}
  .reveal-stagger.in > .program-card:nth-child(1){transition-delay:.05s, .05s, 0s, 0s;}
  .reveal-stagger.in > .program-card:nth-child(2){transition-delay:.11s, .11s, 0s, 0s;}
  .reveal-stagger.in > .program-card:nth-child(3){transition-delay:.17s, .17s, 0s, 0s;}
  .reveal-stagger.in > .program-card:nth-child(4){transition-delay:.23s, .23s, 0s, 0s;}
  .program-card{transition:translate var(--t-ui) var(--ease-out), box-shadow var(--t-ui) var(--ease-out);}
  .program-card:hover{transform:none;translate:0 var(--lift-card);box-shadow:0 18px 36px rgba(0,0,0,.3);}
  .reveal-stagger.in > .program-card:hover{transform:translateY(0);}

  /* tabs, panel, FAQ, links, inputs, gallery, map, chips */
  .service-tab{transition:background-color var(--t-micro) ease, color var(--t-micro) ease, border-color var(--t-micro) ease, transform var(--t-micro) var(--ease-out);}
  .service-tab:active{transform:scale(var(--press));}
  .panel-fade{animation:panel-fade var(--t-ui) var(--ease-out);}
  summary:after{content:'+';transition:transform var(--t-ui) var(--ease-out);}
  details[open] summary:after{content:'+';transform:rotate(45deg);}
  details[open] p{animation:faq-in var(--t-ui) var(--ease-out);}
  @keyframes faq-in{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
  summary{transition:color var(--t-micro) ease;}
  summary:hover{color:var(--navy);}
  .nav-links a:hover:after, .nav-links a:focus-visible:after{width:100%;transform:scaleX(1);}
  .nav-links.open{animation:menu-in var(--t-ui) var(--ease-out);}
  @keyframes menu-in{from{opacity:0;transform:translateY(-8px);}to{opacity:1;transform:none;}}
  .footer-grid .col a{width:fit-content;background:linear-gradient(currentColor,currentColor) 0 calc(50% + .8em)/0 1.5px no-repeat;transition:background-size var(--t-ui) var(--ease-out);}
  .footer-grid .col a:hover, .footer-grid .col a:focus-visible{background-size:100% 1.5px;}
  .field input, .field select, .field textarea{transition:border-color var(--t-micro) ease, box-shadow var(--t-micro) ease;}
  .field input:hover, .field select:hover, .field textarea:hover{border-color:rgba(51,64,158,.45);}
  .field [aria-invalid="true"]{border-color:var(--danger);}
  .gallery-grid picture{display:block;overflow:hidden;border-radius:var(--radius);}
  .gallery-grid img{transition:transform var(--t-reveal) var(--ease-out);}
  .map-frame{transition:transform var(--t-ui) var(--ease-out), box-shadow var(--t-ui) var(--ease-out);}
  .amenity-chip{transition:background-color var(--t-micro) ease, transform var(--t-micro) var(--ease-out);}
  .wa-float{transition:opacity .3s ease, translate .3s ease, scale var(--t-micro) var(--ease-out), visibility 0s;}
  .wa-float:hover{scale:1.06;}
  .wa-float:active{scale:var(--press);}
  .quick-bar a{transition:transform var(--t-micro) var(--ease-out);}
  .quick-bar a:active{transform:scale(var(--press));}

  /* ===================== LOADER BAR: Assessment → Plan → Recovery ===================== */
  #loader{background:var(--ground-blue);}
  .loader-progress{display:flex;align-items:flex-start;gap:18px;width:min(360px, calc(100vw - 48px));}
  .loader-steps{flex:1;display:grid;grid-template-columns:repeat(3,1fr);gap:6px;}
  .loader-step{display:flex;flex-direction:column;gap:10px;}
  .loader-seg{position:relative;display:block;height:6px;border-radius:999px;background:rgba(255,255,255,.14);overflow:hidden;}
  .loader-seg-fill{position:absolute;inset:0;border-radius:inherit;background:var(--sky);transform:scaleX(0);transform-origin:left;}
  .loader-step.is-done .loader-seg-fill{background:#fff;}
  .loader-step-name{font-family:'Inter',sans-serif;font-size:13px;font-weight:500;color:rgba(255,255,255,.62);transition:color var(--t-ui) ease;}
  .loader-step.is-active .loader-step-name{color:#fff;}
  .loader-step.is-done .loader-step-name{color:var(--sky-on-dark);}
  .loader-pct{font-family:'Poppins',sans-serif;font-weight:700;font-size:15px;color:#fff;line-height:6px;min-width:4ch;text-align:right;font-variant-numeric:tabular-nums;padding-top:0;}
  .loader-pct{transform:translateY(-1px);}
  #loader.loader-leave{animation:loader-out .7s var(--ease-out) forwards;}
  @keyframes loader-out{to{opacity:0;visibility:hidden;transform:translateY(-24px);}}

  /* ===================== HERO: copy left, the clinic's own photographs right ===================== */
  .hero{background:var(--ground-blue);text-align:left;padding:72px 32px 96px;}
  .hero-grid{position:relative;z-index:2;max-width:1240px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:56px;align-items:center;}
  .hero .eyebrow{color:var(--sky-on-dark);opacity:1;margin-bottom:22px;}
  .hero h1{font-size:clamp(38px,4vw,58px);line-height:1.04;letter-spacing:-.025em;max-width:none;margin:0 0 24px;color:#fff;font-weight:800;}
  .hero p.sub{font-size:19px;line-height:1.55;color:var(--on-blue-soft);max-width:34em;margin:0 0 36px;}
  .hero-ctas{justify-content:flex-start;margin-bottom:36px;}
  .hero-facts{list-style:none;display:flex;flex-wrap:wrap;gap:10px 28px;font-size:14.5px;color:var(--on-blue-soft);}
  .hero-facts li{display:flex;align-items:center;gap:10px;}
  .hero-open{color:#fff;font-weight:600;}
  .hero-open:not(.is-open) .live-dot{background:#9aa0bd;}
  .hero-open:not(.is-open) .live-dot:before{display:none;}
  .hero-media{position:relative;margin:0;padding:0 0 56px 56px;}
  .hero-photo{overflow:hidden;border-radius:var(--radius);}
  .hero-photo img{width:100%;height:100%;object-fit:cover;display:block;}
  .hero-photo-main{aspect-ratio:4/5;max-height:calc(100vh - 220px);min-height:420px;margin-left:auto;}
  .hero-photo-inset{position:absolute;left:0;bottom:0;width:40%;aspect-ratio:1/1;border:6px solid var(--ground-blue);border-radius:calc(var(--radius) + 6px);}
  .hero-media figcaption{position:absolute;right:0;bottom:14px;font-size:13px;color:var(--on-blue-soft);}
  #pulseCanvas{z-index:1;}

  /* entrance, after the loader: copy rises in turn, the photographs open upward and settle */
  .hero .eyebrow,.hero p.sub,.hero-ctas,.hero-facts{opacity:0;transform:translateY(20px);animation:hero-in var(--t-reveal) var(--ease-out) forwards;}
  .hero .eyebrow{animation-delay:.05s;} .hero p.sub{animation-delay:.35s;} .hero-ctas{animation-delay:.45s;} .hero-facts{animation-delay:.55s;}
  .hero-photo{clip-path:inset(100% 0 0 0 round var(--radius));animation:hero-open 1.1s var(--ease-out) .15s forwards;}
  .hero-photo img{transform:scale(1.12);animation:hero-settle 1.6s var(--ease-out) .15s forwards;}
  .hero-photo-inset, .hero-photo-inset img{animation-delay:.4s;}
  .hero-media figcaption{opacity:0;animation:hero-in var(--t-reveal) var(--ease-out) .9s forwards;}
  @keyframes hero-open{to{clip-path:inset(0 0 0 0 round var(--radius));}}
  @keyframes hero-settle{to{transform:scale(1);}}
  html.is-loading .hero *, html.is-loading .hero *::before{animation-play-state:paused;}
  html:not(.js) .hero *{animation:none !important;opacity:1 !important;transform:none !important;clip-path:none !important;}
  @media (prefers-reduced-motion: reduce){ .hero .eyebrow,.hero p.sub,.hero-ctas,.hero-facts,.hero-photo,.hero-photo img,.hero-media figcaption{animation:none;opacity:1;transform:none;clip-path:none;} }

  @media(max-width:900px){
    .hero{padding:48px 20px 72px;}
    .hero-grid{grid-template-columns:1fr;gap:56px;}
    .hero h1{font-size:clamp(36px,9.4vw,56px);}
    .hero p.sub{font-size:17px;margin-bottom:28px;}
    .hero-media{padding:0 0 40px 0;}
    .hero-photo-main{aspect-ratio:4/3;max-height:none;min-height:0;}
    .hero-photo-inset{display:none;}
    .hero-media figcaption{left:0;right:auto;bottom:10px;}
  }

  /* hero: one photograph */
  .hero-media{padding:0 0 40px 0;}
  .hero-photo-main{max-height:calc(100vh - 200px);}

  /* WHY US without a photo: heading left, reasons right, the three figures as a full-width row */
  .story-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:64px;align-items:start;max-width:1140px;margin:0 auto;}
  .story-head h2{font-size:clamp(30px,3.6vw,48px);line-height:1.1;letter-spacing:-.02em;}
  .story-body p{font-size:18px;line-height:1.65;color:var(--ink);margin-bottom:18px;}
  .story-body p:last-child{margin-bottom:0;}
  .story-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;max-width:1140px;margin:56px auto 0;}
  .story-stats > div{background:var(--navy-light);border-radius:var(--radius);padding:32px 28px;display:flex;flex-direction:column;gap:6px;}
  .story-stats .num{font-size:clamp(44px,5vw,72px);line-height:1;letter-spacing:-.02em;min-width:0;}
  .story-stats .label{font-size:14px;letter-spacing:.04em;}
  @media(max-width:820px){
    .story-grid{grid-template-columns:1fr;gap:20px;}
    .story-body p{font-size:17px;}
    .story-stats{grid-template-columns:1fr;gap:12px;margin-top:36px;}
    .story-stats > div{flex-direction:row;align-items:baseline;justify-content:space-between;padding:22px 24px;}
    .story-stats .num{font-size:44px;}
  }
  .story-head .eyebrow{color:var(--sky-text);opacity:1;}

  /* ===================== PROGRAMS: each plan unfolds as its card arrives =====================
     card rises (reveal-stagger) → its checklist ticks in item by item → the price counts down from the regular price
     (main.js) while the regular price is struck through → the saving badge and validity settle in last.
     Entrances use the `translate` property and animations, so hover (`transform`, transitions) stays instant. */
  .program-card:nth-child(1){--card-d:.05s;} .program-card:nth-child(2){--card-d:.11s;}
  .program-card:nth-child(3){--card-d:.17s;} .program-card:nth-child(4){--card-d:.23s;}
  .program-checklist li:nth-child(1){--li:0;} .program-checklist li:nth-child(2){--li:1;} .program-checklist li:nth-child(3){--li:2;} .program-checklist li:nth-child(4){--li:3;}
  .js .programs-grid:not(.in) .program-checklist li, .js .programs-grid:not(.in) .save-badge, .js .programs-grid:not(.in) .program-price .meta{opacity:0;}
  .js .programs-grid.in .program-checklist li{animation:tick-in .45s var(--ease-out) both;animation-delay:calc(var(--card-d) + .3s + var(--li) * 90ms);}
  .js .programs-grid.in .program-checklist li:before{display:inline-block;animation:tick-mark .4s var(--ease-out) both;animation-delay:calc(var(--card-d) + .38s + var(--li) * 90ms);}
  .js .programs-grid.in .save-badge{animation:badge-in .45s var(--ease-out) both;animation-delay:calc(var(--card-d) + 1.6s);}
  .js .programs-grid.in .program-price .meta{animation:fade-in .5s var(--ease-out) both;animation-delay:calc(var(--card-d) + 1.7s);}
  .price-original:after{transition:transform .5s var(--ease-out);transition-delay:calc(var(--card-d, 0s) + .76s);}
  @keyframes tick-in{from{opacity:0;translate:-10px 0;}to{opacity:1;translate:0 0;}}
  @keyframes tick-mark{from{opacity:0;scale:.3;}to{opacity:1;scale:1;}}
  @keyframes badge-in{from{opacity:0;scale:.82;}to{opacity:1;scale:1;}}
  @keyframes fade-in{from{opacity:0;}to{opacity:1;}}

  /* ===================== PRICING: tabs slide in, rows cascade, prices count up ===================== */
  .js .service-tabs:not(.in) .service-tab{opacity:0;}
  .js .service-tabs.in .service-tab{animation:tab-in .45s var(--ease-out) both;animation-delay:calc(var(--i, 0) * 55ms);}
  @keyframes tab-in{from{opacity:0;translate:0 14px;}to{opacity:1;translate:0 0;}}
  .js .service-row{animation:row-in .5s var(--ease-out) both;animation-delay:calc(var(--i, 0) * 70ms);}
  .js .service-panel:not(.in) .service-row{animation-play-state:paused;}
  @keyframes row-in{from{opacity:0;translate:0 14px;}to{opacity:1;translate:0 0;}}
  .chip-price{display:inline-block;font-variant-numeric:tabular-nums;text-align:left;}
  .panel-fade{animation:none;}

  /* booking form → WhatsApp */
  .form-actions{flex-direction:column;align-items:flex-start;gap:10px;}
  .btn-wa svg{flex-shrink:0;}
  .form-note{margin:0;font-size:13.5px;color:var(--ink-soft);}
  .nowrap, a[href^="tel:"]{white-space:nowrap;}

  /* header: the opposite of the section under it (main.js adds .header-dark over white sections) */
  header{background:rgba(255,255,255,.96);}
  header.header-dark{background:rgba(31,39,96,.96);}

  /* VISIT US: both actions under the map, an equal pair that lines up with the map's edges */
  .location-grid{align-items:start;}
  .location-side{display:flex;flex-direction:column;gap:20px;}
  .map-frame iframe{height:380px;display:block;}
  .location-ctas{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0;}
  .location-ctas .btn{justify-content:center;min-height:52px;}
  .hours-card{margin-bottom:0;}
  .hours-row span{white-space:nowrap;}
  @media(max-width:820px){
    .map-frame iframe{height:300px;}
    .location-ctas{grid-template-columns:1fr;gap:10px;}
    .hours-card{padding:16px;}
    .hours-row{font-size:13.5px;gap:12px;}
  }

  /* the footer's top line sits outside the sweep layer: cover it while the footer sweeps in */
  .sweep-on footer.sweep::before{top:-1px;}
  @media(min-width:821px){
    .location-grid{align-items:stretch;}
    .map-frame{flex:1;min-height:340px;}
    .map-frame iframe{height:100%;}
  }
  .location h2{color:var(--on-blue);}

  /* ===================== LOADER: range of motion (option B) ===================== */
  #loader{gap:28px;}
  .rom-name{font-family:'Poppins',sans-serif;font-weight:800;font-size:22px;color:#fff;}
  .rom-name span{color:var(--sky);}
  .rom{width:min(380px, calc(100vw - 64px));}
  .rom svg{display:block;width:100%;height:auto;overflow:visible;}
  .rom-track{fill:none;stroke:rgba(255,255,255,.12);stroke-width:10;stroke-linecap:round;}
  .rom-fill{fill:none;stroke:var(--sky);stroke-width:10;stroke-linecap:round;}
  .rom-tick{stroke:rgba(255,255,255,.35);stroke-width:1.5;transition:stroke var(--t-micro) ease;}
  .rom-tick.lit{stroke:#fff;}
  .rom-arm{stroke:#fff;stroke-width:3;stroke-linecap:round;}
  .rom-fixed{stroke:rgba(255,255,255,.4);stroke-width:3;stroke-linecap:round;}
  .rom-hub{fill:#fff;}
  .rom-read{text-align:center;margin-top:16px;}
  .rom-deg{font-family:'Poppins',sans-serif;font-weight:800;font-size:clamp(40px,7vw,56px);line-height:1;color:#fff;font-variant-numeric:tabular-nums;letter-spacing:-.02em;}
  .rom-deg span{display:inline-block;min-width:3ch;text-align:right;}
  .rom-label{font-size:14px;color:var(--on-blue-soft);margin-top:6px;}

  /* ===================== BOOK: the booking as it arrives on WhatsApp ===================== */
  .chat{margin-top:32px;max-width:420px;background:rgba(255,255,255,.06);border:1px solid var(--line-on-blue);border-radius:var(--radius);overflow:hidden;}
  .chat-top{display:flex;align-items:center;gap:12px;padding:12px 16px;background:rgba(255,255,255,.06);}
  .chat-avatar{width:40px;height:40px;border-radius:50%;object-fit:cover;flex-shrink:0;}
  .chat-who{display:flex;flex-direction:column;line-height:1.25;}
  .chat-who b{font-family:'Poppins',sans-serif;font-weight:700;font-size:15px;color:#fff;}
  .chat-who span{font-size:13px;color:var(--on-blue-soft);}
  .chat-body{display:flex;flex-direction:column;gap:10px;padding:18px 16px 20px;min-height:236px;}
  .bubble{position:relative;max-width:86%;padding:10px 12px 8px;border-radius:14px;font-size:14px;line-height:1.45;}
  .bubble-text{margin:0;white-space:pre-line;overflow-wrap:anywhere;}
  .bubble-out{align-self:flex-end;background:var(--sky-btn);color:#fff;border-bottom-right-radius:4px;}
  .bubble-in{align-self:flex-start;background:#fff;color:var(--ink);border-bottom-left-radius:4px;}
  .bubble-meta{display:flex;justify-content:flex-end;align-items:center;gap:5px;margin-top:4px;font-size:11.5px;font-variant-numeric:tabular-nums;}
  .bubble-out .bubble-meta{color:rgba(255,255,255,.78);}
  .bubble-in .bubble-meta{color:var(--ink-soft);}
  .ticks{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;overflow:visible;}
  .ticks path{transition:opacity var(--t-ui) ease, stroke var(--t-ui) ease;}
  .bubble-out .tick-clock{opacity:0;}
  .bubble-out[data-state="pending"] .tick-clock{opacity:1;}
  .bubble-out[data-state="pending"] .tick-a, .bubble-out[data-state="pending"] .tick-b, .bubble-out[data-state="sent"] .tick-b{opacity:0;}
  .bubble-out[data-state="read"] .ticks{stroke:#A7F0C4;}
  .chat-typing{display:none;align-self:flex-start;gap:4px;padding:12px 14px;background:#fff;border-radius:14px;border-bottom-left-radius:4px;}
  .chat-typing.on{display:flex;}
  .chat-typing i{width:7px;height:7px;border-radius:50%;background:var(--ink-soft);animation:typing-dot 1.2s ease-in-out infinite;}
  .chat-typing i:nth-child(2){animation-delay:.15s;} .chat-typing i:nth-child(3){animation-delay:.3s;}
  @keyframes typing-dot{0%,60%,100%{opacity:.35;translate:0 0;}30%{opacity:1;translate:0 -3px;}}
  /* the sequence: bubbles arrive one at a time (main.js adds .anim, then .on to each) */
  .chat.anim .bubble{opacity:0;translate:0 12px;transition:opacity .45s var(--ease-out), translate .45s var(--ease-out);}
  .chat.anim .bubble.on{opacity:1;translate:0 0;}
  .chat-caption{margin:12px 0 0;font-size:13.5px;color:var(--on-blue-soft);max-width:420px;}
  @media(max-width:820px){ .chat{margin-top:24px;} .chat-body{min-height:0;} }
  .book-intro .chat .bubble-text{margin:0;}
  .book-intro .bubble-out .bubble-text{color:#fff;}
  .book-intro .bubble-in .bubble-text{color:var(--ink);}
  /* smallest phones: the hours may wrap rather than push the column wider than the screen */
  .location-grid > *{min-width:0;}
  @media(max-width:360px){ .hours-row{flex-wrap:wrap;gap:2px 12px;} .hours-row span{white-space:normal;} }

  /* layout stability (SOP: layout shift below 0.1 at every size) */
  /* the typing dots and the reply share one slot, so the chat never changes height */
  .chat-reply{display:grid;justify-items:start;}
  .chat-reply > *{grid-area:1 / 1;}
  .chat-typing{display:flex;visibility:hidden;align-self:start;}
  .chat-typing.on{visibility:visible;}
  .chat-reply .bubble-in{max-width:86%;}
  /* the figures keep their final width while counting, so their labels never re-wrap */
  .story-stats .num{min-width:3.4ch;}
  @media(max-width:820px){ .story-stats .label{flex:1;text-align:right;} }
  /* a size-matched stand-in for Poppins while it loads, so headings wrap the same before and after */
  @font-face{font-family:'Poppins Fallback';src:local('Arial'),local('Liberation Sans'),local('Helvetica'),local('DejaVu Sans');size-adjust:112%;ascent-override:93%;descent-override:31%;line-gap-override:9%;}
  h1,h2,h3,.logo-mark,.rom-name,.rom-deg{font-family:'Poppins','Poppins Fallback',sans-serif;}
  .chat-typing i{animation:none;}
  .chat-typing.on i{animation:typing-dot 1.2s ease-in-out infinite;}
  .chat-typing.on i:nth-child(2){animation-delay:.15s;} .chat-typing.on i:nth-child(3){animation-delay:.3s;}

  /* ===================== FOOTER: the name at full width, a heartbeat, four full columns ===================== */
  footer{padding:88px 32px 40px;}
  .footer-wrap{max-width:1240px;margin:0 auto;}
  .footer-mark{display:block;width:fit-content;max-width:100%;font-family:'Poppins','Poppins Fallback',sans-serif;font-weight:800;
    font-size:clamp(56px,14.5vw,208px);line-height:.9;letter-spacing:-.045em;color:var(--navy-deep);margin:0 auto;white-space:nowrap;}
  .footer-mark span{display:inline-block;}
  .footer-mark .pro{color:var(--sky);}
  .footer-mark:focus-visible{outline-offset:8px;border-radius:8px;}
  .footer-pulse{display:block;width:100%;height:48px;margin:18px 0 56px;overflow:visible;}
  .footer-pulse path{fill:none;stroke:var(--sky);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke;}
  .footer-grid{display:grid;grid-template-columns:1.35fr 1fr 1.25fr 1.2fr;gap:40px;max-width:none;margin:0 0 56px;justify-content:stretch;}
  .footer-grid .col{display:flex;flex-direction:column;align-items:flex-start;gap:4px;}
  .footer-grid .col p{margin:0 0 10px;font-size:15px;line-height:1.6;color:var(--ink-soft);max-width:34ch;}
  .footer-head{font-size:17px;line-height:1.3;margin-bottom:12px;color:var(--navy-deep);}
  .col-about .footer-head{font-size:clamp(20px,1.9vw,26px);line-height:1.15;letter-spacing:-.01em;max-width:14ch;}
  .footer-grid .col a:not(.btn){min-height:44px;font-size:15px;color:var(--navy);}
  .footer-hours{color:var(--ink);}
  .footer-open{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--navy-deep) !important;}
  .footer-open:not(.is-open) .live-dot{background:#9aa0bd;}
  .footer-open:not(.is-open) .live-dot:before{display:none;}
  .footer-book{margin-top:14px;background-image:none !important;width:auto !important;}
  .footer-bottom{display:flex;justify-content:space-between;align-items:center;gap:12px 24px;flex-wrap:wrap;text-align:left;padding-top:22px;
    border-top:1px solid rgba(51,64,158,.12);max-width:none;margin:0;font-size:13.5px;color:var(--ink-soft);}
  .footer-bottom p{margin:0;}
  .footer-top{display:inline-flex;align-items:center;min-height:44px;font-weight:600;color:var(--navy);}
  .footer-top:hover{text-decoration:underline;text-underline-offset:4px;}
  @media(max-width:1000px){ .footer-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:36px 28px;} }
  @media(max-width:560px){
    footer{padding:64px 20px 104px;}
    .footer-grid{grid-template-columns:1fr;gap:28px;}
    .footer-pulse{margin:12px 0 40px;height:36px;}
  }

  /* entrance, once the footer is reached: the letters rise in turn, the heartbeat draws, then the columns follow */
  .js .footer-mark.reveal{opacity:1;transform:none;}
  .js .footer-mark:not(.in) span{opacity:0;translate:0 .35em;}
  .js .footer-mark.in span{animation:mark-in .7s var(--ease-out) both;animation-delay:calc(var(--l) * 55ms);}
  @keyframes mark-in{from{opacity:0;translate:0 .35em;}to{opacity:1;translate:0 0;}}
  .js .footer-pulse.reveal{opacity:1;transform:none;}
  .js .footer-pulse path{stroke-dasharray:1600;stroke-dashoffset:1600;}
  .js .footer-pulse.in path{animation:pulse-draw 1.6s var(--ease-out) .35s forwards;}
  @keyframes pulse-draw{to{stroke-dashoffset:0;}}
  .reveal-stagger.in.footer-grid > *:nth-child(1){transition-delay:.55s;} .reveal-stagger.in.footer-grid > *:nth-child(2){transition-delay:.63s;}
  .reveal-stagger.in.footer-grid > *:nth-child(3){transition-delay:.71s;} .reveal-stagger.in.footer-grid > *:nth-child(4){transition-delay:.79s;}
  @media (prefers-reduced-motion: reduce){ .js .footer-mark span{opacity:1 !important;translate:none !important;} .js .footer-pulse path{stroke-dashoffset:0 !important;} }
  .footer-grid .col a.footer-book{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 24px;margin-top:16px;
    background:var(--navy);color:#fff;border-radius:999px;font-weight:600;}
  .footer-grid .col a.footer-book:hover{background:var(--navy-deep);color:#fff;}
  .footer-pulse{margin-top:clamp(28px,3.4vw,52px);}
  .footer-links{display:inline-flex;align-items:center;gap:24px;}
  .footer-links a{display:inline-flex;align-items:center;min-height:44px;font-weight:600;color:var(--navy);}
  .footer-links a:hover{text-decoration:underline;text-underline-offset:4px;}
  .form-note a{color:var(--navy);font-weight:600;text-decoration:underline;text-underline-offset:3px;white-space:nowrap;}

  /* ===================== SMOOTHNESS (phones) =====================
     The sweep no longer reshapes a clip path every scroll frame (a full repaint of the section each frame).
     Two plain layers do it instead: the previous colour underneath, the section's own colour on top, sliding up with a
     curved top edge. Only that layer's transform changes while scrolling, which the graphics chip handles without repainting. */
  [data-ground="white"]{--g-own:var(--ground-white);}
  [data-ground="blue"]{--g-own:var(--ground-blue);}
  .sweep-on .sweep{overflow:clip;}
  .sweep-on .sweep::before{display:none !important;}
  .sweep-bg{position:absolute;left:0;right:0;top:0;pointer-events:none;display:none;}
  .sweep-under{bottom:0;z-index:-2;background:var(--g-prev);}
  .sweep-over{height:calc(100% + var(--dome, 110px));z-index:-1;background:var(--g-own);
    border-radius:50% 50% 0 0 / var(--dome, 110px) var(--dome, 110px) 0 0;}
  .sweep-on .sweep.sweeping > .sweep-bg{display:block;}
  .sweep-on .sweep.sweeping > .sweep-over{will-change:transform;}
  .sweep-on .sweep > .sweep-bg{opacity:1 !important;transition:none !important;}
  .sweep-on footer.sweep > .sweep-under{top:-1px;}
  /* the header is 96% solid: its background blur was invisible but cost a repaint on every scroll */
  header{-webkit-backdrop-filter:none;backdrop-filter:none;}
  /* heading words: a lighter blur on phones and touch screens, where large blurs are expensive */
  @media (hover:none), (max-width:820px){ .te-seg{filter:blur(5px);} }
