/* Self-hosted Inter + Playfair Display (variable, latin + latin-ext), from Google Fonts. */
@font-face{font-family:'Inter';font-style:normal;font-weight:400 900;font-display:swap;src:url(/assets/fonts/inter-normal-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Playfair Display';font-style:italic;font-weight:700 900;font-display:swap;src:url(/assets/fonts/playfairdisplay-italic-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Playfair Display';font-style:normal;font-weight:700 900;font-display:swap;src:url(/assets/fonts/playfairdisplay-normal-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;font-size:16px}
section[id]{scroll-margin-top:90px}
:focus-visible{outline:2px solid #0E5C43;outline-offset:2px;border-radius:12px}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid #0E5C43 !important;outline-offset:2px}
:root{
  --navy:#0F1826;
  --navy2:#1B2A3D;
  --em:#0E6B4E;
  --em-dark:#0A4F39;
  --em-light:#E5F2EC;
  --sky:#C9A227;
  --sky-light:#FBF1DA;
  --gold:#C9A227;
  --gold-dark:#8A6D1C;
  --gold-light:#FBF1DA;
  --cta-primary:#0E5C43;
  --cta-primary-dark:#0A4432;
  --white:#fff;
  --bg:#FAF8F4;
  --bg2:#F2EFE7;
  --border:#E7E1D3;
  --text:#161611;
  --text2:#2B2B24;
  --text3:#6B6B60;
  --text4:#5C6660;
  --star:#8A6D1C;
  --warn-bg:#FFF7ED;
  --warn-border:#FED7AA;
  --warn-text:#92400E;
  --warn-sub:#B45309;
  --sp-sm:48px;
  --sp-md:80px;
  --sp-lg:128px;
  --max:1280px;
  --px:clamp(1.25rem,5vw,3.5rem);
  --r:12px;
  --r-sm:12px;
  --r-lg:12px;
  --sh:0 6px 24px rgba(15,24,38,.08);
  --sh-lg:0 24px 60px rgba(15,24,38,.16);
  --sh-gold:0 10px 30px rgba(201,162,39,.25);
  --grad-em:linear-gradient(135deg,#0E6B4E 0%,#0A4F39 100%);
  --grad-em-gold:linear-gradient(120deg,#0E6B4E 0%,#146B52 55%,#C9A227 100%);
  --grad-navy:linear-gradient(160deg,#0F1826 0%,#1B2A3D 100%);
  --grad-navy-em:linear-gradient(150deg,#0F1826 0%,#16283A 50%,#0E6B4E 100%);
  --glass-bg:rgba(255,255,255,.6);
  --glass-border:rgba(255,255,255,.4);
}@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
/* No overflow-x:hidden here. It was masking a real layout bug in the nav
   rather than fixing it, and it silently breaks position:sticky in some
   browsers. Overflow is contained by the elements that cause it. */
body{font-family:'Inter',sans-serif;color:var(--text);background:var(--white)}

/* PAGE SYSTEM */
.page{display:none;min-height:100vh}
.page.active{display:block}

/* UTILS */
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--px)}
.serif{font-family:'Playfair Display',serif}
.tag{display:inline-flex;align-items:center;gap:.4rem;font-size:.875rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase;padding:.3rem 1rem;border-radius:12px}
.tag-em{background:var(--em-light);color:var(--em-dark)}
.tag-sky{background:var(--sky-light);color:var(--gold-dark)}
.tag-navy{background:var(--bg2);color:var(--navy)}

/* REVEAL */
html.js .rv{opacity:0;transform:translateY(20px);transition:opacity .6s ease,transform .6s ease}
html.reveal-all .rv{opacity:1;transform:none}
html.js .rv.on{opacity:1;transform:none}
.rv.d1{transition-delay:.08s}.rv.d2{transition-delay:.16s}.rv.d3{transition-delay:.24s}

/* BUTTONS */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;font-family:'Inter',sans-serif;font-weight:700;font-size:.95rem;border-radius:12px;text-decoration:none;cursor:pointer;border:none;transition:transform .18s cubic-bezier(.2,.8,.3,1),box-shadow .22s,background .2s;white-space:normal;text-align:center;max-width:100%;overflow-wrap:break-word;line-height:1.25;padding:1rem 2rem;letter-spacing:-.005em}
.btn{position:relative;overflow:hidden}
.btn::after{content:'';position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 0 0 rgba(201,162,39,0);transition:box-shadow .3s}
.btn:active{transform:scale(.97)}
/* ── 2.2 · Three CTA tiers, and only three ───────────────────────────
   Primary   = solid --cta-primary, white text. One per viewport.
   Secondary = 1px ink outline, transparent fill.
   Tertiary  = text + arrow, no container.
   Gold is accent only (stars, eyebrows, "Most Popular") — never a fill. */
.btn-em,.btn-gold,.btn-wh,.fsub{background:var(--cta-primary);color:#fff;border:1px solid var(--cta-primary);box-shadow:none}
.btn-em:hover,.btn-gold:hover,.btn-wh:hover,.fsub:hover{background:var(--cta-primary-dark);border-color:var(--cta-primary-dark);color:#fff;transform:translateY(-1px);box-shadow:0 6px 18px rgba(14,92,67,.28)}
.btn-outline,.btn-wh-ol,.btn-navy{background:transparent;color:var(--navy);border:1px solid var(--navy);box-shadow:none}
.btn-outline:hover,.btn-wh-ol:hover,.btn-navy:hover{background:rgba(15,24,38,.06);color:var(--navy);border-color:var(--navy);transform:translateY(-1px)}
.btn-navy{font-size:.875rem;padding:.65rem 1.35rem}
/* On the dark final-CTA band the ink outline flips to white. */
.final-cta .btn-outline,.final-cta .btn-wh-ol{color:#fff;border-color:rgba(255,255,255,.55)}
.final-cta .btn-outline:hover,.final-cta .btn-wh-ol:hover{background:rgba(255,255,255,.1);border-color:#fff;color:#fff}
/* Tertiary — no container at all. */
.cta-tertiary,.svc-btn{display:inline-flex;align-items:center;gap:.35rem;background:none;border:none;padding:0;margin:0;
  font-family:'Inter',sans-serif;font-size:.95rem;font-weight:700;color:var(--cta-primary);
  text-decoration:none;cursor:pointer;transition:gap .16s,color .16s}
.cta-tertiary:hover,.svc-btn:hover{color:var(--cta-primary-dark);gap:.6rem;background:none;transform:none}
.svc-btn{margin-top:.95rem}

/* NAV */
.nav{position:sticky;top:0;z-index:200;background:transparent;backdrop-filter:none;border-bottom:1px solid transparent;transition:background .35s ease,backdrop-filter .35s ease,border-color .35s ease,box-shadow .35s ease}
.nav.scrolled{background:rgba(255,255,255,.85);backdrop-filter:blur(16px);border-bottom:1px solid var(--border);box-shadow:0 4px 24px rgba(15,24,38,.06)}
.nav-inner{max-width:var(--max);margin:0 auto;padding:0 var(--px);display:flex;align-items:center;justify-content:space-between;gap:.75rem;height:74px}
.nav-logo{cursor:pointer;display:flex;flex-direction:column;line-height:1;text-decoration:none;min-width:0;flex:0 1 auto;overflow:hidden}
.nav-logo-img{height:52px;width:auto;display:block}@media(max-width:520px){.nav-logo-img{height:40px}}
.nav-logo-name{font-family:'Playfair Display',serif;font-size:1.4rem;color:var(--navy);font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis}
.nav-logo-sub{font-size:.875rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--text4)}
.nav-links{display:flex;align-items:center;gap:1.9rem;list-style:none}
.nav-links a{color:var(--text2);text-decoration:none;font-size:.92rem;font-weight:600;cursor:pointer;transition:color .18s;position:relative}
.nav-links a::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;background:var(--em);border-radius:12px;transform:scaleX(0);transition:transform .22s ease}
.nav-links a:hover::after{transform:scaleX(1)}
.nav-links a:hover,.nav-links a.active{color:var(--em-dark)}
.nav-right{display:flex;align-items:center;gap:.85rem;flex:0 0 auto}
.nav-phone{font-size:.875rem;font-weight:700;color:var(--text2);text-decoration:none;display:flex;align-items:center;gap:.4rem}
.nav-phone:hover{color:var(--em-dark)}

.hamburger-btn{display:none;flex-direction:column;justify-content:center;gap:5px;width:36px;height:36px;background:none;border:none;cursor:pointer;padding:0}
.hamburger-btn span{display:block;width:22px;height:2.5px;background:var(--navy);border-radius:12px;transition:all .25s}
.hamburger-btn.open span:nth-child(1){transform:translateY(7.5px) rotate(45deg)}
.hamburger-btn.open span:nth-child(2){opacity:0}
.hamburger-btn.open span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}

.mobile-menu{display:none;flex-direction:column;background:#fff;border-top:1px solid var(--border);padding:.5rem var(--px) 1rem}
.mobile-menu.open{display:flex}
.mobile-menu a{padding:.85rem 0;font-size:.95rem;font-weight:600;color:var(--text2);text-decoration:none;border-bottom:1px solid var(--border);cursor:pointer}
.mobile-menu a:last-child{border-bottom:none}
.mobile-menu-phone{color:var(--em-dark) !important;font-weight:700 !important}
.mob-sub{display:none;flex-direction:column;padding-left:.9rem;border-left:2px solid var(--em-light);margin:0 0 .3rem}
.mob-sub.open{display:flex}
.mob-sub a{font-size:.88rem !important;color:var(--text3) !important;padding:.6rem 0 !important}

/* NAV DROPDOWN */
.nav-dd-wrap{position:relative}
.nav-dd-trigger{display:inline-flex;align-items:center;gap:.3rem}
.nav-caret{transition:transform .2s;opacity:.6}
.nav-dd-wrap:hover .nav-caret{transform:rotate(180deg)}
.nav-dd{position:absolute;top:calc(100% + 18px);left:50%;transform:translateX(-50%) translateY(8px);width:640px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:var(--sh-lg);padding:1rem;opacity:0;visibility:hidden;transition:opacity .2s,transform .2s;z-index:250}
.nav-dd::before{content:'';position:absolute;top:-18px;left:0;right:0;height:18px}
.nav-dd-wrap:hover .nav-dd{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
.nav-dd-inner{display:grid;grid-template-columns:1fr 1fr;gap:.25rem}
.nav-dd-item{display:flex;align-items:flex-start;gap:.7rem;padding:.7rem .8rem;border-radius:12px;background:none;border:none;cursor:pointer;text-align:left;font-family:'Inter',sans-serif;transition:background .15s;width:100%}
.nav-dd-item:hover{background:var(--em-light)}
.nav-dd-ic{font-size:1.15rem;flex-shrink:0;width:34px;height:34px;border-radius:12px;background:var(--em-light);display:flex;align-items:center;justify-content:center}
.nav-dd-item:hover .nav-dd-ic{background:#fff}
.nav-dd-item strong{display:block;font-size:.875rem;color:var(--navy);font-weight:700;margin-bottom:.1rem}
.nav-dd-item small{display:block;font-size:.875rem;color:var(--text3);line-height:1.4}
.nav-dd-foot{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:.8rem;padding:.85rem 1rem 0;border-top:1px solid var(--border)}
.nav-dd-foot span{font-size:.875rem;color:var(--text3);font-weight:600}
.nav-dd-foot .btn{padding:.6rem 1.15rem;font-size:.875rem}

/* SERVICE PAGE */
.svc-split{display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:center}
.svc-photo{border-radius:12px;overflow:hidden;box-shadow:var(--sh-lg);background:linear-gradient(135deg,var(--em-light),#F0E8FF);aspect-ratio:4/3}
.svc-photo picture{display:contents}
.svc-photo img{width:100%;height:100%;object-fit:cover;display:block}
.svc-check{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:.7rem 2rem;max-width:820px;margin:0 auto}
.svc-check li{display:flex;align-items:flex-start;gap:.6rem;font-size:.92rem;color:var(--text2);line-height:1.5;padding:.5rem 0;border-bottom:1px solid var(--border)}
.svc-check li::before{content:'✓';color:#fff;background:var(--em);width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.875rem;font-weight:900;flex-shrink:0;margin-top:.1rem}

/* AREAS PAGE */
.area-region{margin-bottom:2.5rem}
.area-region-head{margin-bottom:1.1rem}
.area-region-head h3{font-family:'Playfair Display',serif;font-size:1.4rem;color:var(--navy);margin-bottom:.3rem}
.area-region-head p{font-size:.9rem;color:var(--text3);line-height:1.6;max-width:640px}
.area-city-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.8rem}
.area-city{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:1rem 1.15rem;background:#fff;border:1.5px solid var(--border);border-radius:12px;cursor:pointer;transition:all .18s;font-family:'Inter',sans-serif;text-align:left}
.area-city:hover{border-color:var(--em);box-shadow:var(--sh);transform:translateY(-2px)}
.area-city-name{font-size:.95rem;font-weight:700;color:var(--navy)}
.area-city-go{font-size:.875rem;font-weight:600;color:var(--em-dark);white-space:nowrap}

/* SECTIONS
   2.5 — a three-step spacing scale, assigned by how much weight a section
   carries rather than one uniform pad. Tight for connective tissue, loose
   for the moments that need room to land. */
.sec{padding:var(--sp-md) 0}
.sec-tight{padding:var(--sp-sm) 0}
.sec-loose{padding:var(--sp-lg) 0}@media(max-width:700px){
  :root{--sp-sm:32px;--sp-md:52px;--sp-lg:76px}}
.sec-alt{background:var(--bg)}
.sec-dark{background:var(--navy)}
.sec-head{margin-bottom:2.2rem}
.sec-center{text-align:center}
.sec-center .sec-sub{margin-left:auto;margin-right:auto}
.sec-tag{margin-bottom:.8rem}
.h2{font-family:'Playfair Display',serif;font-size:clamp(2.05rem,3.3vw,3.05rem);line-height:1.08;letter-spacing:-.018em;color:var(--text);margin-bottom:.8rem}
.h2 em{font-style:italic;color:var(--em-dark)}
.h2-w{color:#fff}.h2-w em{color:var(--gold)}
.sec-sub{font-size:1rem;color:var(--text3);max-width:600px;line-height:1.72}
.sec-sub-w{color:rgba(255,255,255,.6)}

/* HERO */
.hero{background:var(--bg);padding:var(--sp-sm) var(--px) var(--sp-md);position:relative;overflow:clip}
.hero::after{content:'';position:absolute;bottom:-1px;left:0;right:0;height:88px;background:var(--white);clip-path:ellipse(58% 100% at 50% 100%)}
.hero-dots{position:absolute;inset:0;background-image:radial-gradient(rgba(15,23,42,.05) 1px,transparent 1px);background-size:30px 30px;pointer-events:none}
.hero-glow{position:absolute;top:-80px;right:-80px;width:480px;height:480px;border-radius:50%;background:radial-gradient(circle,rgba(14,107,78,.13) 0%,transparent 70%);pointer-events:none}
.hero-inner{max-width:var(--max);margin:0 auto;display:grid;grid-template-columns:1fr 470px;gap:3.4rem;align-items:start;position:relative;z-index:1}
.hero-eyebrow{display:flex;align-items:center;gap:.6rem;margin-bottom:1.4rem}
.hero-stars{color:var(--star);font-size:.88rem;letter-spacing:.04em}
.hero-eyebrow-txt{font-size:.875rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text3)}
.hero h1{font-family:'Playfair Display',serif;font-size:clamp(2.9rem,5.1vw,4.7rem);line-height:1.02;letter-spacing:-.024em;color:var(--navy);margin-bottom:1.15rem}
.hero h1 em{font-style:italic;color:var(--em)}
.hero-sub{font-size:1.14rem;color:var(--text2);max-width:520px;line-height:1.7;margin-bottom:1.9rem}
.hero-ctas{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:.9rem}
.hero-content{max-width:580px}@media(min-width:961px) and (min-height:660px){
  .hero-content{position:sticky;top:calc(74px + 1.25rem);align-self:start}}@media(prefers-reduced-motion:reduce){.hero-content{position:static}}
.hero-trust-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1rem 1.5rem;margin:0 0 1.9rem;padding:1.5rem 1.6rem;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 34px rgba(15,24,38,.07);max-width:580px}
.trust-badge{display:flex;align-items:center;gap:.6rem;font-size:.875rem;line-height:1.3}
.trust-badge strong{font-weight:700;color:var(--text)}
.trust-rating{display:flex;align-items:center;gap:.35rem;font-size:1rem;font-weight:800;color:var(--em)}
.trust-icon{font-size:1.2rem;display:inline-block}
.trust-label{color:var(--text2)}
.reviews-title{font-size:.875rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--text3);margin-bottom:1rem}
.gl-logo{width:13px;height:13px;flex-shrink:0}

.hero-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem;padding-top:2rem;border-top:1px solid var(--border)}
.hero-panel{display:flex;flex-direction:column;gap:1rem}
.hero-photo{position:relative;border-radius:12px;overflow:hidden;box-shadow:var(--sh-lg);background:linear-gradient(135deg,var(--em-light),#F0E8FF);aspect-ratio:16/9}
.hero-photo picture{display:contents}
.hero-photo img{width:100%;height:100%;object-fit:cover;display:block}
.hero-photo-badge{position:absolute;left:14px;bottom:14px;display:inline-flex;align-items:center;gap:.4rem;background:rgba(255,255,255,.95);backdrop-filter:blur(6px);border-radius:12px;padding:.4rem .85rem;font-size:.875rem;font-weight:700;color:var(--navy);box-shadow:var(--sh)}
.hpb-stars{color:var(--star);font-size:.875rem}

/* PROFESSIONAL ICONS (replace emoji) */
.ico{width:1em;height:1em;display:inline-block;vertical-align:-0.14em;flex-shrink:0}
.svc-icon .ico,.nav-dd-ic .ico,.cinfo-icon .ico,.standard-icon .ico,.trust-icon .ico,.btb-icon .ico,.cp-emoji .ico{width:1.15em;height:1.15em;vertical-align:middle}
.standard-icon{color:var(--em);display:flex}
.trust-icon{color:var(--em-dark);display:inline-flex}
.nav-dd-ic{color:var(--em-dark)}
.cp-emoji{color:var(--em-dark);display:flex;align-items:center;justify-content:center}

.book-card{background:#fff;border-radius:12px;padding:2rem 1.85rem;box-shadow:0 30px 70px rgba(15,24,38,.28),0 0 0 1px rgba(255,255,255,.1)}0%{box-shadow:0 30px 70px rgba(15,24,38,.28),0 0 0 0 rgba(14,107,78,.55)}55%{box-shadow:0 30px 70px rgba(15,24,38,.28),0 0 0 14px rgba(14,107,78,0)}100%{box-shadow:0 30px 70px rgba(15,24,38,.28),0 0 0 0 rgba(14,107,78,0)}
.book-card.book-pulse{animation:bookPulse 1.8s ease-out}
.book-card-head{margin-bottom:1.3rem}
.book-card-head .book-card-h{font-family:'Playfair Display',serif;font-size:1.3rem;color:var(--text);margin-bottom:.2rem}
.book-card-sub{font-size:.875rem;color:var(--text3);font-weight:500}
.book-steps{display:flex;align-items:center;margin-bottom:1.5rem}
.book-step{display:flex;flex-direction:column;align-items:center;gap:.3rem;flex-shrink:0}
.book-step-num{width:30px;height:30px;border-radius:50%;background:var(--bg);border:1.5px solid var(--border);color:var(--text4);font-size:.875rem;font-weight:800;display:flex;align-items:center;justify-content:center}
.book-step.active .book-step-num{background:var(--em);border-color:var(--em);color:#fff}
.book-step-lbl{font-size:.875rem;font-weight:700;color:var(--text4);text-transform:uppercase;letter-spacing:.04em}
.book-step.active .book-step-lbl{color:var(--em-dark)}
.book-step-line{flex:1;height:2px;background:var(--border);margin:0 .4rem;margin-bottom:1.1rem}
.book-flbl{display:block;font-size:.875rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text2);margin-bottom:.35rem}
.book-sel{background:var(--bg);border:1.5px solid var(--border);color:var(--text);font-size:.875rem;padding:.65rem .85rem}
.book-sel:focus{border-color:var(--em)}
.book-result-price{font-family:'Playfair Display',serif;font-size:2rem;font-weight:900;color:var(--navy);line-height:1.15}

.book-city-input{display:flex;align-items:center;gap:.55rem;background:var(--bg);border:1.5px solid var(--border);border-radius:12px;padding:0 .85rem;transition:border-color .18s}
.book-city-input:focus-within{border-color:var(--em)}
.book-city-input svg{color:var(--text4);flex-shrink:0}
.book-city-input select{flex:1;border:none;background:transparent;font-family:'Inter',sans-serif;font-size:.875rem;color:var(--text);padding:.65rem 0;outline:none;appearance:none;cursor:pointer}

.book-btn-row{display:flex;gap:.4rem}
.book-pill{flex:1;background:var(--white);border:1.5px solid var(--border);border-radius:12px;padding:.7rem 0;font-family:'Inter',sans-serif;font-size:.88rem;font-weight:700;color:var(--text2);cursor:pointer;transition:border-color .16s,background .16s,color .16s,transform .16s}
.book-pill:hover{border-color:var(--em);transform:translateY(-1px)}
.book-pill.active{border-color:var(--em);color:var(--em-dark);background:var(--em-light)}
#freqPills .book-pill{padding:.5rem .2rem;line-height:1.25}
#freqPills .book-pill small{font-size:.875rem}

.book-svc-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.5rem}
.book-svc-card{text-align:left;background:var(--white);border:1.5px solid var(--border);border-radius:12px;padding:.85rem .9rem;cursor:pointer;transition:border-color .16s,background .16s,transform .16s;display:flex;flex-direction:column;gap:.25rem}
.book-svc-card:hover{border-color:var(--em);transform:translateY(-1px)}
.book-svc-card strong{font-size:.875rem;color:var(--text);font-weight:700}
.book-svc-card span{font-size:.875rem;color:var(--text3);line-height:1.4}
.book-svc-card.active{background:var(--em-light);border-color:var(--em)}
.book-svc-card.active strong{color:var(--em-dark)}

.book-price-box{background:var(--em-light);border:1.5px solid var(--em);border-radius:12px;padding:1.1rem 1.3rem;display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1rem}
.book-price-lbl{font-size:.875rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--em-dark)}
.book-price-note{font-size:.875rem;color:var(--text3);margin-top:.15rem}
.book-price-sub{font-size:.875rem;color:var(--text3);margin-top:.4rem}
.book-price-right{text-align:right}
.book-price-gst{font-size:.875rem;color:var(--em-dark);font-weight:600}
.book-submit{width:100%;justify-content:center;font-size:.95rem}

/* BOOKING CALENDAR */
.cal{border:1.5px solid var(--border);border-radius:12px;padding:.55rem .5rem;background:var(--white)}
.cal-head{display:flex;align-items:center;justify-content:space-between;padding:.15rem .2rem .5rem}
.cal-title{font-weight:800;font-size:.9rem;color:var(--text)}
.cal-nav{width:28px;height:28px;border:1px solid var(--border);background:var(--white);border-radius:12px;cursor:pointer;color:var(--text2);font-size:1.05rem;line-height:1;display:flex;align-items:center;justify-content:center;transition:all .12s}
.cal-nav:hover:not(:disabled){border-color:var(--em);color:var(--em-dark)}
.cal-nav:disabled{opacity:.3;cursor:not-allowed}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}
.cal-dow{text-align:center;font-size:.875rem;font-weight:700;color:var(--text4);text-transform:uppercase;padding:.3rem 0}
.cal-day{aspect-ratio:1/1;border:none;background:none;border-radius:12px;font-family:'Inter',sans-serif;font-size:.875rem;font-weight:600;color:var(--text2);cursor:pointer;transition:all .12s;padding:0}
.cal-day:hover:not(:disabled):not(.empty){background:var(--em-light);color:var(--em-dark)}
.cal-day:disabled{color:var(--text4);opacity:.4;cursor:not-allowed}
.cal-day.sel{background:var(--em);color:#fff}
.cal-day.empty{cursor:default}
.tslot-cats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem;margin-bottom:.55rem}
.tcat{border:1.5px solid var(--border);border-radius:12px;padding:.5rem .25rem;background:var(--white);cursor:pointer;text-align:center;font-family:'Inter',sans-serif;transition:all .15s}
.tcat:hover{border-color:var(--em)}
.tcat.active{border-color:var(--em);background:var(--em-light)}
.tcat strong{display:block;font-size:.875rem;font-weight:700;color:var(--text)}
.tcat.active strong{color:var(--em-dark)}
.tcat span{font-size:.875rem;color:var(--text3)}
.tslot-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem}
.tslot{border:1.5px solid var(--border);border-radius:12px;padding:.5rem .15rem;background:var(--white);cursor:pointer;font-family:'Inter',sans-serif;font-size:.875rem;font-weight:600;color:var(--text2);transition:all .12s}
.tslot:hover{border-color:var(--em)}
.tslot.sel{border-color:var(--em);background:var(--em);color:#fff}

/* ORDER SUMMARY + CODES (Step 3) */
.order-summary{background:var(--em-light);border:1.5px solid var(--em);border-radius:12px;padding:1.1rem 1.2rem;margin-bottom:1.1rem}
.os-title{font-size:.875rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--em-dark);margin-bottom:.7rem}
.os-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.26rem 0;font-size:.875rem;color:var(--text3)}
.os-row strong{color:var(--text);font-weight:700;text-align:right}
.os-divider{height:1px;background:var(--em);opacity:.25;margin:.55rem 0}
.os-discount span{color:var(--em-dark);font-weight:700}
.os-total{display:flex;justify-content:space-between;align-items:center;margin-top:.55rem;padding-top:.6rem;border-top:1.5px solid var(--em)}
.os-total span{font-size:.9rem;font-weight:800;color:var(--text)}
.os-total strong{font-family:'Playfair Display',serif;font-size:1.35rem;font-weight:900;color:var(--em-dark)}
.book-apply{background:var(--navy);color:#fff;border:none;border-radius:12px;padding:0 1.1rem;font-family:'Inter',sans-serif;font-size:.875rem;font-weight:700;cursor:pointer;transition:all .15s;white-space:nowrap}
.book-apply:hover{background:var(--em-dark)}
.code-msg{font-size:.875rem;font-weight:600;margin-top:.35rem;min-height:1em}
.book-flbl .book-opt{font-weight:500;color:var(--text4);text-transform:none;letter-spacing:0}
.hcard-lbl{font-size:.875rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin-bottom:.8rem}
.trust-pills{display:flex;flex-wrap:wrap;gap:.4rem}
.tpill{background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.14);border-radius:12px;padding:.26rem .8rem;font-size:.875rem;color:rgba(255,255,255,.78)}
.rev-av-b{background:linear-gradient(135deg,#0E6B4E,#0A4F39);color:#fff}

/* TRUST STRIP */
.tstrip{background:var(--white);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.tstrip-inner{max-width:var(--max);margin:0 auto;padding:1.35rem var(--px);display:flex;justify-content:center;flex-wrap:wrap;gap:1.1rem 2.1rem}
/* Below 960px the centred wrap breaks into ragged 1-2-1 rows. A two-column
   grid with left-aligned items reads as a deliberate list instead. */
@media(max-width:960px){
  .tstrip-inner{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem 1.25rem;justify-content:stretch;padding-top:1.5rem;padding-bottom:1.5rem}
  .ts-item{align-items:flex-start;line-height:1.35}
  .ts-dot{margin-top:.42em}
}
@media(max-width:360px){
  .tstrip-inner{grid-template-columns:minmax(0,1fr);gap:.7rem}
}
.ts-item{display:flex;align-items:center;gap:.55rem;font-size:.875rem;font-weight:700;color:var(--text2);letter-spacing:-.005em}
.ts-dot{width:7px;height:7px;border-radius:50%;background:var(--em);flex-shrink:0}

.standards{background:var(--navy);padding:66px 0;position:relative;overflow:hidden}
.standards-head{text-align:center;max-width:640px;margin:0 auto 2.6rem}
.standards-title{font-family:'Playfair Display',serif;font-size:clamp(1.8rem,3vw,2.5rem);color:#fff;margin:.95rem 0 .7rem;line-height:1.15}
.standards-sub{font-size:.95rem;color:rgba(255,255,255,.6);line-height:1.75}
.standards-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.25rem;max-width:var(--max);margin:0 auto;padding:0 var(--px)}
.standard-card{background:rgba(255,255,255,.05);border:1.5px solid rgba(255,255,255,.09);border-radius:12px;padding:1.7rem 1.45rem;text-align:left}
.standard-icon{font-size:1.85rem;margin-bottom:.9rem}
.standard-card h3{font-size:1.02rem;font-weight:800;color:#fff;margin-bottom:.55rem}
.standard-card p{font-size:.875rem;color:rgba(255,255,255,.62);line-height:1.65}@media(max-width:900px){.standards-grid{grid-template-columns:1fr 1fr}}@media(max-width:560px){.standards-grid{grid-template-columns:minmax(0,1fr)}}

/* STEPS */
.steps-row{display:grid;grid-template-columns:repeat(4,1fr);position:relative}
.steps-row::before{content:'';position:absolute;top:25px;left:calc(12.5% + 12px);right:calc(12.5% + 12px);height:2px;background:linear-gradient(90deg,var(--em),var(--sky));z-index:0}
.step{text-align:center;padding:0 1.25rem;position:relative;z-index:1}
.step-dot{width:50px;height:50px;border-radius:50%;background:var(--white);border:2px solid var(--em);color:var(--em);font-weight:800;font-size:.88rem;display:flex;align-items:center;justify-content:center;margin:0 auto 1.15rem;box-shadow:0 0 0 6px var(--bg)}
.step h3{font-size:.94rem;font-weight:700;color:var(--navy);margin-bottom:.4rem}
.step p{font-size:.875rem;color:var(--text3);line-height:1.65}

/* BOOK STRIP */
.bstrip{background:linear-gradient(135deg,var(--em-light),#F0E8FF);border:1px solid #E2E8F0;border-radius:12px;padding:1.85rem 2.25rem;display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;margin-top:3.25rem}
.bstrip h3{font-size:1.08rem;font-weight:800;color:var(--navy);margin-bottom:.2rem}
.bstrip p{font-size:.875rem;color:var(--text3)}
.bstrip-btns{display:flex;gap:.8rem;flex-wrap:wrap}

/* SVC GRID */
.svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem}
.svc-card{border:1px solid var(--border);border-radius:12px;padding:2rem 1.85rem;background:var(--white);transition:transform .28s cubic-bezier(.2,.8,.3,1),box-shadow .28s,border-color .25s;position:relative;overflow:hidden}
.svc-card::after{content:'';position:absolute;bottom:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--em),var(--sky));transform:scaleX(0);transform-origin:left;transition:transform .28s}
.svc-card:hover{border-color:var(--em);box-shadow:0 22px 50px rgba(15,24,38,.13);transform:translateY(-6px)}
.svc-card:hover::after{transform:scaleX(1)}
.svc-card.pop{border-color:var(--em);border-width:2px}
.svc-top-badge{position:absolute;top:0;right:1.4rem;background:var(--em);color:#fff;font-size:.875rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;padding:.22rem .75rem;border-radius:0 0 12px 12px}
.svc-icon{width:52px;height:52px;border-radius:12px;background:var(--em-light);color:var(--em-dark);display:flex;align-items:center;justify-content:center;font-size:1.3rem;margin-bottom:1.15rem;transition:background .25s,transform .25s}
.svc-card:hover .svc-icon{background:var(--grad-em);color:#fff;transform:scale(1.06)}
.svc-card h3{font-size:1.02rem;font-weight:700;color:var(--navy);margin-bottom:.42rem}
.svc-card p{font-size:.875rem;color:var(--text3);line-height:1.65;margin-bottom:.95rem}
.svc-list{list-style:none;margin-bottom:1.2rem}
.svc-list li{font-size:.875rem;color:var(--text2);padding:.18rem 0;display:flex;align-items:center;gap:.45rem}
.svc-list li::before{content:'✓';color:var(--em);font-weight:900;font-size:.875rem;flex-shrink:0}
.svc-note{margin-top:.5rem;font-size:.875rem;color:var(--text3)}
.svc-price{font-size:1.18rem;font-weight:800;color:var(--navy)}
.svc-price span{font-size:.875rem;font-weight:400;color:var(--text4)}

/* CALCULATOR */
.calc-box{background:var(--white);border:2px solid var(--border);border-radius:12px;padding:2.25rem;box-shadow:var(--sh-lg);max-width:800px;margin:0 auto}
.calc-row{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1.3rem}
.calc-lbl{display:block;font-size:.875rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text2);margin-bottom:.4rem}
.calc-sel{width:100%;padding:.75rem 1rem;border:1.5px solid var(--border);border-radius:12px;font-family:'Inter',sans-serif;font-size:.9rem;color:var(--text);background:var(--bg);outline:none;transition:border-color .18s;appearance:none;cursor:pointer}
.hero-calc-sel{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);color:#fff}
.hero-calc-sel:focus{border-color:var(--gold)}
.hero-calc-sel option{color:#0C2D3F}
.calc-sel:focus{border-color:var(--em)}
.calc-result{background:linear-gradient(135deg,var(--navy),#0F172A);border-radius:12px;padding:1.6rem 2rem;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin-top:1.3rem}
.calc-price-lbl{font-size:.875rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.45);margin-bottom:.3rem}
.calc-price-val{font-family:'Playfair Display',serif;font-size:2.4rem;color:#fff;font-weight:700;line-height:1}
.calc-note{font-size:.875rem;color:rgba(255,255,255,.4);margin-top:.3rem}from{transform:translateX(0)}to{transform:translateX(-50%)}

/* BIG QUOTE */
.bq-sec{background:var(--grad-navy-em);padding:88px var(--px);text-align:center;position:relative;overflow:hidden}
.bq-sec blockquote{font-family:'Playfair Display',serif;font-style:italic;font-size:clamp(1.6rem,3.1vw,2.45rem);color:#fff;max-width:840px;margin:0 auto 1.2rem;line-height:1.36;letter-spacing:-.012em;position:relative}
.bq-sec blockquote::before{content:'\201C';color:var(--gold)}
.bq-sec blockquote::after{content:'\201D';color:var(--gold)}
.bq-attr{font-size:.875rem;color:rgba(255,255,255,.55);letter-spacing:.06em;position:relative}

/* REVIEWS GRID */
.rev-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem}
.rev-card{background:var(--white);border:1px solid var(--border);border-radius:12px;padding:1.8rem 1.7rem;transition:transform .26s cubic-bezier(.2,.8,.3,1),box-shadow .26s,border-color .24s}
.rev-card:hover{box-shadow:0 22px 48px rgba(15,24,38,.12);transform:translateY(-5px);border-color:var(--em-light)}
.rc-top{display:flex;align-items:center;gap:.8rem;margin-bottom:.9rem}
.rc-av{position:relative;width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,var(--em-light),#EAD9A8);color:var(--em-dark);font-weight:800;font-size:.875rem;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.rc-av-g{position:absolute;right:-3px;bottom:-3px;width:19px;height:19px;border-radius:50%;
  background:#fff;box-shadow:0 1px 4px rgba(15,24,38,.28);display:flex;align-items:center;justify-content:center}
.rc-av-g svg{width:12px;height:12px;display:block}
.rc-loc{display:inline-flex;align-items:center}
.rc-name{font-size:.9rem;font-weight:700;color:var(--navy);display:block}
.rc-loc{font-size:.875rem;color:var(--text4)}
.rc-stars{color:var(--star);font-size:.875rem;margin-bottom:.6rem}
.rc-headline{font-size:.95rem;font-weight:800;color:var(--navy);margin-bottom:.5rem;line-height:1.4}
.rc-text{font-size:.875rem;color:var(--text3);line-height:1.65;font-style:italic;margin-bottom:.9rem}
.rc-text::before{content:'\201C'}.rc-text::after{content:'\201D'}
.rc-verified{display:inline-flex;align-items:center;gap:.42rem;font-size:.875rem;font-weight:700;color:#3c4043;background:#fff;border:1px solid var(--border);border-radius:12px;padding:.34rem .7rem;box-shadow:0 1px 3px rgba(15,24,38,.06)}
.rc-g{width:15px;height:15px;flex-shrink:0}

/* SERVICE COMPARISON */
.compare-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;max-width:800px;margin:0 auto}
.compare-card{background:var(--white);border:1.5px solid var(--border);border-radius:12px;padding:2rem;position:relative}
.compare-featured{border-color:var(--em);border-width:2px;box-shadow:0 16px 40px rgba(14,107,78,.14)}
.compare-badge{position:absolute;top:0;right:1.5rem;background:var(--em);color:#fff;font-size:.875rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:.25rem .8rem;border-radius:0 0 12px 12px}
.compare-head h3{font-family:'Playfair Display',serif;font-size:1.25rem;color:var(--navy);margin-bottom:.4rem}
.compare-head p{font-size:.875rem;color:var(--text3);margin-bottom:1.4rem;line-height:1.6}
.compare-list{list-style:none;margin-bottom:1.6rem}
.compare-list li{font-size:.88rem;color:var(--text2);padding:.45rem 0;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:.6rem}
.compare-list li:last-child{border-bottom:none}
.compare-list li::before{content:'✓';color:var(--em);font-weight:900;flex-shrink:0}
.compare-price{font-size:1.3rem;font-weight:800;color:var(--navy)}
.compare-price span{font-size:.875rem;font-weight:400;color:var(--text4)}@media(max-width:640px){.compare-grid{grid-template-columns:minmax(0,1fr)}}

/* WHY GRID */
.why-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1.1rem;margin-bottom:2.4rem}
.why-stat{text-align:center;padding:1.3rem 1rem;border-radius:12px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);backdrop-filter:blur(8px);transition:transform .25s,background .25s}
.why-stat:hover{transform:translateY(-3px);background:rgba(255,255,255,.08)}
.why-stat strong{display:block;font-family:'Playfair Display',serif;font-size:1.9rem;color:#fff;line-height:1}
.why-stat span{display:block;font-size:.875rem;color:rgba(255,255,255,.5);text-transform:uppercase;letter-spacing:.06em;margin-top:.4rem}
.why-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem}
.why-card{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:1.7rem;transition:all .25s;position:relative;overflow:hidden}
.why-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--grad-em-gold);transform:scaleX(0);transform-origin:left;transition:transform .3s}
.why-card:hover{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);transform:translateY(-4px)}
.why-card:hover::before{transform:scaleX(1)}
.why-icon{width:42px;height:42px;border-radius:12px;background:rgba(201,162,39,.16);color:var(--gold);display:flex;align-items:center;justify-content:center;font-size:1.15rem;margin-bottom:.95rem}
.why-card h3{font-size:.94rem;font-weight:700;color:#fff;margin-bottom:.38rem}
.why-card p{font-size:.875rem;color:rgba(255,255,255,.5);line-height:1.65}@media(max-width:900px){.why-stats{grid-template-columns:1fr 1fr}}

/* FAQ */
.faq-wrap{max-width:780px;margin:0 auto;display:flex;flex-direction:column;gap:.65rem}
details.faq{border:1px solid var(--border);border-radius:12px;background:var(--white);padding:0 1.35rem;transition:border-color .2s,box-shadow .2s}
details.faq:hover{border-color:var(--em-light);box-shadow:0 6px 18px rgba(15,24,38,.05)}
details.faq[open]{border-color:var(--em);box-shadow:0 10px 26px rgba(14,107,78,.08)}
details.faq summary{position:relative;padding:1.15rem 2rem 1.15rem 0;font-weight:700;font-size:.97rem;color:var(--navy);cursor:pointer;list-style:none;display:block;user-select:none;overflow-wrap:anywhere}
details.faq summary::-webkit-details-marker{display:none}
details.faq summary::after{content:'+';position:absolute;right:.5rem;top:50%;transform:translateY(-50%);font-size:1.3rem;color:var(--em);transition:transform .2s;line-height:1;width:1em;text-align:center}
details.faq[open] summary{color:var(--em-dark)}
details.faq[open] summary::after{transform:translateY(-50%) rotate(45deg)}
details.faq p{font-size:.88rem;color:var(--text3);padding-bottom:1.1rem;line-height:1.78}

/* CITIES GRID */
.city-pills-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:.9rem}
.city-pill{background:var(--white);border:1px solid var(--border);border-radius:12px;padding:1.35rem .9rem;text-align:center;cursor:pointer;transition:transform .24s cubic-bezier(.2,.8,.3,1),box-shadow .24s,border-color .22s,background .22s;display:flex;flex-direction:column;align-items:center}
.city-pill:hover{border-color:var(--em);background:var(--em-light);transform:translateY(-5px);box-shadow:0 16px 34px rgba(15,24,38,.1)}
.city-pill.local{border-color:var(--em);background:var(--em-light)}
.city-pill .cp-emoji{font-size:1.4rem;margin-bottom:.35rem}
.city-pill .cp-name{font-size:.88rem;font-weight:700;color:var(--navy)}
.city-pill .cp-fee{font-size:.875rem;color:var(--text3);margin-top:.18rem}
.city-pill.local .cp-fee{color:var(--em-dark);font-weight:600}

/* CONTACT FORM */
.contact-grid{display:grid;grid-template-columns:380px 1fr;gap:4.5rem;align-items:start}
.cinfo-row{display:flex;align-items:center;gap:.9rem;min-width:0;padding:.95rem 1.1rem;border-radius:12px;background:var(--bg);border:1px solid var(--border);margin-bottom:.8rem}
.cinfo-text{min-width:0}
.cinfo-icon{width:38px;height:38px;border-radius:12px;background:var(--em-light);color:var(--em-dark);display:flex;align-items:center;justify-content:center;font-size:1.05rem;flex-shrink:0}
.cinfo-text strong{display:block;font-size:.875rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text3);margin-bottom:.1rem}
.cinfo-text a,.cinfo-text span{font-size:.88rem;color:var(--navy);font-weight:600;text-decoration:none;overflow-wrap:anywhere}
.cinfo-text a:hover{color:var(--em-dark)}
.form-box{background:var(--white);border:1px solid var(--border);border-radius:12px;padding:2.4rem;box-shadow:0 24px 60px rgba(15,24,38,.1)}
.fg{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.95rem;margin-bottom:.95rem}
.fg.full{grid-template-columns:minmax(0,1fr)}
.flbl{display:block;font-size:.875rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text2);margin-bottom:.38rem}
.finp{width:100%;padding:.88rem 1.05rem;border:1.5px solid var(--border);border-radius:12px;font-family:'Inter',sans-serif;font-size:.94rem;color:var(--text);background:var(--bg);outline:none;transition:border-color .18s,box-shadow .18s,background .18s;appearance:none}
.finp:focus{border-color:var(--em);background:#fff;box-shadow:0 0 0 4px rgba(14,107,78,.12)}
textarea.finp{resize:vertical;min-height:105px}
.fsub{width:100%;padding:.95rem;margin-top:.7rem;background:var(--cta-primary);color:#fff;border:1px solid var(--cta-primary);font-family:'Inter',sans-serif;font-size:.95rem;font-weight:800;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:.5rem;text-decoration:none}
.fsub:hover{background:var(--cta-primary-dark);border-color:var(--cta-primary-dark);transform:translateY(-1px);box-shadow:0 6px 18px rgba(14,92,67,.28)}
.ffine{text-align:center;font-size:.875rem;color:var(--text4);margin-top:.7rem}

/* PRICE TABLE */
.ptable{width:100%;border-collapse:collapse;border-radius:12px;overflow:hidden;box-shadow:var(--sh)}
.ptable th{background:var(--navy);color:#fff;padding:.85rem 1.1rem;font-size:.875rem;font-weight:700;text-align:left;letter-spacing:.04em}
.ptable td{padding:.8rem 1.1rem;font-size:.875rem;border-bottom:1px solid var(--border)}
.ptable tr:last-child td{border-bottom:none}
.ptable tr:nth-child(even) td{background:var(--bg)}
.ptable tr:hover td{background:var(--em-light)}
.ph{font-weight:700;color:var(--em-dark)}

/* FINAL CTA */
.final-cta{background:var(--grad-navy-em);padding:var(--sp-lg) var(--px);position:relative;overflow:hidden}
.final-cta::before{content:'';position:absolute;top:-180px;left:50%;transform:translateX(-50%);width:650px;height:650px;border-radius:50%;background:rgba(201,162,39,.07);pointer-events:none}
.final-cta h2{font-family:'Playfair Display',serif;font-size:clamp(2.1rem,3.8vw,3.2rem);color:#fff;margin-bottom:.95rem;position:relative}
.final-cta h2 em{font-style:italic;color:var(--gold)}
.final-cta p{font-size:.95rem;color:rgba(255,255,255,.58);max-width:460px;margin:0 auto 2.4rem;line-height:1.8;position:relative}
.final-cta-btns{display:flex;justify-content:center;gap:.95rem;flex-wrap:wrap;position:relative}
.final-note{margin-top:1.4rem;font-size:.875rem;color:rgba(255,255,255,.28);position:relative}

/* FOOTER */
.footer{background:#0A1119;padding:66px 0 0;border-top:3px solid var(--em)}
.foot-inner{max-width:var(--max);margin:0 auto;padding:0 var(--px) 3rem;display:grid;grid-template-columns:1.8fr 1fr 1fr 1fr;gap:3rem}
.foot-logo{font-family:'Playfair Display',serif;font-size:1.12rem;color:#EEF2FF;display:block;margin-bottom:.55rem}
.foot-logo-chip{display:inline-block;background:#fff;border-radius:12px;padding:.7rem .9rem;margin-bottom:.9rem;box-shadow:0 6px 20px rgba(0,0,0,.25)}
.foot-logo-chip img{height:56px;width:auto;display:block}
.foot-tag{font-size:.875rem;color:#8A93A0;line-height:1.72;max-width:250px}
footer .foot-h{font-size:.875rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:.9rem}
footer ul{list-style:none;display:flex;flex-direction:column;gap:.5rem}
footer ul a,.foot-link{color:#8A93A0;text-decoration:none;font-size:.875rem;transition:color .16s;cursor:pointer;background:none;border:none;font-family:'Inter',sans-serif;padding:0;text-align:left}
footer ul a:hover,.foot-link:hover{color:#EEF2FF}
.foot-bottom{border-top:1px solid rgba(255,255,255,.04);padding:1.1rem var(--px);max-width:var(--max);margin:0 auto;display:flex;justify-content:space-between;flex-wrap:wrap;gap:.5rem;font-size:.875rem;color:#8A93A0}
.foot-bottom-links{display:flex;align-items:center;gap:.6rem;color:#8A93A0}
.foot-bottom-link{background:none;border:none;cursor:pointer;color:#8A93A0;font-size:.875rem;font-family:'Inter',sans-serif;padding:0;transition:color .15s}
.foot-bottom-link:hover{color:#EEF2FF}

.foot-social{display:flex;gap:.6rem;margin-top:1.2rem}
.foot-social-icon{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.06);display:flex;align-items:center;justify-content:center;color:#fff;transition:all .2s}
.foot-social-icon:hover{background:var(--em)}

.legal-body h3{font-size:1.05rem;font-weight:700;color:var(--navy);margin:1.8rem 0 .6rem}
.legal-body h3:first-child{margin-top:0}
.legal-body p{font-size:.92rem;color:var(--text2);line-height:1.8;margin-bottom:.5rem}
.legal-body a{color:var(--em-dark);text-decoration:underline}

/* CITY PAGE */
.city-hero{background:var(--grad-navy-em);padding:68px var(--px) 88px;position:relative;overflow:hidden}
.city-hero::after{content:'';position:absolute;bottom:-1px;left:0;right:0;height:76px;background:var(--white);clip-path:ellipse(58% 100% at 50% 100%)}
.breadcrumb{display:flex;align-items:center;gap:.45rem;font-size:.875rem;color:rgba(255,255,255,.38);margin-bottom:1.4rem;flex-wrap:wrap}
.breadcrumb button{color:rgba(255,255,255,.38);background:none;border:none;cursor:pointer;font-family:'Inter',sans-serif;font-size:.875rem;transition:color .15s;padding:0}
.breadcrumb button:hover{color:rgba(255,255,255,.7)}
.breadcrumb span{color:rgba(255,255,255,.22)}
.travel-notice{border-radius:12px;padding:1.4rem 1.8rem;display:flex;align-items:flex-start;gap:.9rem}
.travel-notice.warn{background:#FFF7ED;border:1.5px solid #FED7AA}
.travel-notice.ok{background:var(--em-light);border:1.5px solid var(--em-light)}
.travel-notice h3{font-size:.94rem;font-weight:800;margin-bottom:.3rem}
.travel-notice.warn h3{color:#92400E}
.travel-notice.ok h3{color:var(--em-dark)}
.travel-notice p{font-size:.875rem;line-height:1.7}
.travel-notice.warn p{color:#B45309}
.travel-notice.ok p{color:var(--em-dark)}
.hood-pill{background:var(--em-light);border:1px solid var(--em-light);border-radius:12px;padding:.38rem 1rem;font-size:.875rem;font-weight:600;color:var(--em-dark);display:inline-block;margin:.25rem}

/* BEFORE / AFTER GALLERY */
.ba-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}
.ba-card{position:relative;border-radius:12px;overflow:hidden;box-shadow:var(--sh-lg);background:var(--navy);cursor:pointer;transition:transform .3s,box-shadow .3s}
.ba-card:hover{transform:translateY(-6px);box-shadow:0 32px 70px rgba(15,24,38,.24)}
.ba-slider{position:relative;aspect-ratio:4/3;overflow:hidden;user-select:none}
.ba-slider picture{display:contents}
.ba-slider img,.ba-ph{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;pointer-events:none;text-align:center}
.ba-ph{color:rgba(255,255,255,.85);font-size:.875rem;font-weight:700;letter-spacing:.04em}
.ba-ph svg{width:34px;height:34px;opacity:.8}
.ba-img-before{z-index:1;background:linear-gradient(150deg,#3A4450,#232B34)}
.ba-img-after{z-index:2;clip-path:inset(0 0 0 50%);background:linear-gradient(150deg,#0E6B4E,#0A4F39)}
.ba-tag{position:absolute;top:14px;z-index:3;font-size:.875rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;padding:.32rem .85rem;border-radius:12px;background:rgba(15,24,38,.72);color:#fff;backdrop-filter:blur(4px)}
.ba-tag-before{left:14px}
.ba-tag-after{right:14px;background:var(--em)}
.ba-handle{position:absolute;top:0;bottom:0;left:50%;width:3px;background:#fff;z-index:4;transform:translateX(-50%);box-shadow:0 0 0 1px rgba(15,24,38,.15)}
.ba-handle::after{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:42px;height:42px;border-radius:50%;background:#fff;box-shadow:var(--sh-lg);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%230F1826' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 7l-5 5 5 5M16 7l5 5-5 5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:center}
.ba-sample-ribbon{position:absolute;bottom:14px;left:14px;z-index:5;font-size:.875rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:#1A1608;background:linear-gradient(135deg,#C9A227,#E4C766);padding:.3rem .75rem;border-radius:12px;box-shadow:var(--sh)}
.ba-caption{padding:1rem 1.2rem 1.2rem;background:var(--white)}
.ba-caption strong{display:block;font-size:.92rem;color:var(--navy);margin-bottom:.2rem}
.ba-caption span{font-size:.875rem;color:var(--text4)}
.ba-expand{position:absolute;top:14px;right:14px;z-index:6;width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.9);display:flex;align-items:center;justify-content:center;color:var(--navy);opacity:0;transition:opacity .2s}
.ba-card:hover .ba-expand{opacity:1}
.lightbox-overlay{position:fixed;inset:0;z-index:1000;background:rgba(10,15,22,.88);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;padding:2rem}
.lightbox-overlay.open{display:flex}
.lightbox-inner{position:relative;max-width:900px;width:100%}
.lightbox-inner .ba-slider{aspect-ratio:16/10;border-radius:12px;box-shadow:var(--sh-lg)}
.lightbox-close{position:absolute;top:-48px;right:0;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.25);color:#fff;width:40px;height:40px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s}
.lightbox-close:hover{background:rgba(255,255,255,.24)}
.lightbox-caption{color:rgba(255,255,255,.7);text-align:center;margin-top:1rem;font-size:.875rem}@media(max-width:900px){.ba-grid{grid-template-columns:minmax(0,1fr)}}@media(max-width:600px){.ba-grid{grid-template-columns:minmax(0,1fr)}}
.recur-strip{margin-top:1.6rem;background:var(--grad-navy);border-radius:12px;padding:1.7rem 2rem;display:flex;align-items:center;justify-content:space-between;gap:1.6rem;flex-wrap:wrap}
.recur-copy strong{display:block;color:#fff;font-size:1.02rem;margin-bottom:.25rem}
.recur-copy span{font-size:.875rem;color:rgba(255,255,255,.6)}
.recur-tiers{display:flex;gap:1.6rem}
.recur-tier{text-align:center}
.recur-tier strong{display:block;font-family:'Playfair Display',serif;font-size:1.7rem;color:var(--gold);line-height:1}
.recur-tier span{font-size:.875rem;color:rgba(255,255,255,.55);text-transform:uppercase;letter-spacing:.05em}@media(max-width:900px){.recur-strip{flex-direction:column;text-align:center}.recur-tiers{justify-content:center}}


/* DESKTOP STICKY BOOK BAR */
#stickyBar{position:fixed;left:0;right:0;bottom:0;z-index:280;background:rgba(255,255,255,.94);backdrop-filter:blur(14px);border-top:1px solid var(--border);box-shadow:0 -6px 26px rgba(15,24,38,.08);transform:translateY(105%);transition:transform .35s ease;display:none}
#stickyBar.show{transform:translateY(0)}
.sticky-inner{max-width:var(--max);margin:0 auto;padding:.85rem var(--px);display:flex;align-items:center;justify-content:space-between;gap:1.2rem}
.sticky-copy strong{display:block;font-size:.95rem;color:var(--navy)}
.sticky-copy span{font-size:.875rem;color:var(--text3)}
.sticky-btns{display:flex;gap:.6rem;align-items:center}@media(min-width:961px){#stickyBar{display:block}}

/* MOBILE */
/* Full-width bottom bar (not a floating pill) so it can never sit on top of a
   button. `--mobile-bar-h` is mirrored into body padding below. */
:root{--mobile-bar-h:76px}
/* 3.2 · two-up mobile bar, mirroring the desktop sticky bar: call on the
   left, quote on the right. Both targets are >= 48px tall. */
.float-cta{display:none;position:fixed;left:0;right:0;bottom:0;z-index:300;
  align-items:stretch;gap:.5rem;
  padding:.5rem .75rem calc(.5rem + env(safe-area-inset-bottom));
  background:rgba(255,255,255,.96);backdrop-filter:blur(14px);
  border-top:1px solid var(--border);
  box-shadow:0 -6px 26px rgba(15,24,38,.12);
  transition:transform .3s ease,opacity .25s ease}
.float-call,.float-quote{
  display:inline-flex;align-items:center;justify-content:center;gap:.4rem;
  min-height:48px;border-radius:12px;font-family:'Inter',sans-serif;
  font-weight:800;font-size:.95rem;white-space:nowrap;cursor:pointer;
  text-decoration:none;line-height:1}
.float-call{flex:0 0 38%;background:transparent;color:var(--navy);
  border:1px solid var(--navy)}
.float-quote{flex:1 1 auto;background:var(--cta-primary);color:#fff;
  border:1px solid var(--cta-primary)}
.float-call:active{background:var(--bg2)}
.float-quote:active{background:var(--cta-primary-dark)}
/* Slide out of the way while the booking calculator is on screen. */
.float-cta.hidden{transform:translateY(105%);opacity:0;pointer-events:none}@media(max-width:960px){
  body{padding-bottom:calc(var(--mobile-bar-h) + env(safe-area-inset-bottom))}}
#soundToggle{position:fixed;left:1rem;bottom:1.1rem;z-index:300;width:42px;height:42px;border-radius:50%;background:#fff;border:1.5px solid var(--border);box-shadow:var(--sh);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--navy);transition:transform .15s,box-shadow .2s,color .2s}
#soundToggle:hover{transform:translateY(-2px);box-shadow:var(--sh-lg);color:var(--em-dark)}
#soundToggle:active{transform:scale(.94)}
#soundToggle svg{width:19px;height:19px}@media(max-width:960px){
  /* ── 3.1 · put the calculator directly under the subheadline ──────────
     The calculator lives in .hero-panel, a SIBLING of .hero-content, so
     `order` alone cannot interleave it between the subheadline and the trust
     row. display:contents dissolves both wrappers on mobile so every piece
     becomes a flex item of .hero-inner and can be ordered as one sequence:
     eyebrow → H1 → subheadline → CALCULATOR → trust → CTAs → photo.
     Desktop keeps the two-column grid untouched. */
  .hero-inner{grid-template-columns:minmax(0,1fr);display:flex;flex-direction:column;gap:1.1rem}
  .hero-content,.hero-panel{display:contents}
  .hero-eyebrow{order:1}
  .hero-inner h1{order:2}
  .hero-proof{order:3}
  .hero-sub{order:4;margin-bottom:0}
  .hero-photo{order:5;aspect-ratio:16/7}      /* slim band between the pitch and the calculator */
  .book-card{order:6}
  .promise-card{order:7}                      /* stays directly under the price */
  .hero-trust-row{order:8;grid-template-columns:minmax(0,1fr);margin:0}
  .hero-ctas{order:9;margin:0}
  .hero-content > p:not(.hero-sub):not(.hero-proof){order:10;margin:0}
  .trust-badge-desktop{display:none}          /* 4 badges → 2 on mobile */
  .hero-panel{margin-top:2rem}
  .svc-grid{grid-template-columns:1fr 1fr}
  .why-grid{grid-template-columns:1fr 1fr}
  .steps-row{grid-template-columns:1fr 1fr;gap:2rem}
  .steps-row::before{display:none}
  .step-dot{box-shadow:none}
  .rev-grid{grid-template-columns:1fr 1fr}
  .contact-grid{grid-template-columns:minmax(0,1fr)}
  .foot-inner{grid-template-columns:1fr 1fr;gap:2rem}
  .city-pills-grid{grid-template-columns:repeat(3,1fr)}
  .calc-row{grid-template-columns:1fr 1fr}
  .nav-links{display:none}
  .hamburger-btn{display:flex}
  .float-cta{display:flex}
  /* The booking bar owns the bottom of a phone screen; the sound toggle is a
     desktop nicety with nowhere left to sit that isn't on top of a real control. */
  #soundToggle{display:none}
  .svc-split{grid-template-columns:1fr;gap:1.6rem}
  .svc-photo{aspect-ratio:16/9}}@media(max-width:600px){
  .hero h1{font-size:2.5rem;line-height:1.06}
  .hero-trust-row{grid-template-columns:1fr;gap:.7rem}
  .hero-ctas .btn{width:100%}
  .svc-grid,.rev-grid,.why-grid,.city-pills-grid{grid-template-columns:minmax(0,1fr)}
  .calc-row{grid-template-columns:minmax(0,1fr)}
  .fg{grid-template-columns:minmax(0,1fr)}
  .bstrip{flex-direction:column;align-items:flex-start}
  .foot-inner{grid-template-columns:minmax(0,1fr)}
  .hero-stats{grid-template-columns:repeat(2,1fr)}
  .svc-check{grid-template-columns:minmax(0,1fr)}
  .area-city-grid{grid-template-columns:minmax(0,1fr)}}@media(max-width:520px){
  .nav-inner{height:72px;padding:0 1.1rem}
  .nav-phone{display:none}
  .nav-logo-name{font-size:clamp(1rem,4.4vw,1.12rem);white-space:nowrap}
  .nav-logo-sub{display:none}
  .nav-right{gap:.5rem}
  .nav-right .btn-navy{padding:.55rem .8rem;font-size:.875rem}
  .why-stats{grid-template-columns:1fr 1fr}}
@media(max-width:430px){
  /* The nav CTA duplicates the always-present bottom bar (and the hero's own
     button while the hero is on screen). Dropping it here is what lets the
     wordmark render in full instead of truncating to "Honourable Cleanin". */
  .nav-right .btn-navy{display:none}
  .book-steps .book-step-lbl{display:none}
  .book-step.active .book-step-lbl{display:block}
  .book-step-line{margin-bottom:.55rem}
}
@media(max-width:430px){
  details.faq{padding:0 1rem}
  .btn{padding:.95rem 1.15rem}
}
@media(max-width:360px){
  .nav-inner{padding:0 .85rem;gap:.5rem}
  .book-card{padding:1.6rem 1.15rem}
  .hero{padding-left:1rem;padding-right:1rem}
}

/* ── 1.3 · price reveal: frequency toggle, step-down, risk-reversal ── */
.freq-toggle{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;margin-bottom:.85rem}
.freq-opt{border:1.5px solid var(--border);border-radius:12px;background:var(--white);padding:.5rem .2rem;font-family:'Inter',sans-serif;font-size:.875rem;font-weight:700;color:var(--text2);cursor:pointer;line-height:1.25;transition:border-color .14s,background .14s,color .14s}
.freq-opt span{display:block;font-size:.875rem;font-weight:600;opacity:.75}
/* Four options across cannot hold 14px labels at 320px - "Monthly -10%" was
   clipping its button. Two rows of two gives each ~130px. Declared after the
   base rule so source order, not specificity, resolves it. */
@media(max-width:430px){.freq-toggle{grid-template-columns:repeat(2,minmax(0,1fr))}}
.freq-opt:hover{border-color:var(--em)}
.freq-opt.active{border-color:var(--em);background:var(--em-light);color:var(--em-dark)}
.freq-saving{margin:.45rem 0 .1rem;font-size:.875rem;font-weight:700;color:var(--em-dark)}
.price-stepdown{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:.7rem .9rem;font-size:.875rem;color:var(--text3);line-height:1.5;margin-bottom:.7rem}
.price-stepdown strong{color:var(--text)}
.price-riskrev{font-size:.875rem;color:var(--text3);line-height:1.5;margin-bottom:1rem;display:flex;gap:.4rem}
.price-riskrev::before{content:'↩';color:var(--em-dark);font-weight:800}

/* ── 1.2 · calendar quick-pick chips ── */
.cal-nextavail{font-size:.875rem;font-weight:700;color:var(--em-dark);margin-bottom:.5rem}
.cal-chips{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.6rem}
.cal-chip{flex:1 1 0;min-width:66px;border:1.5px solid var(--border);border-radius:12px;background:var(--white);padding:.45rem .3rem;font-family:'Inter',sans-serif;font-size:.875rem;font-weight:700;line-height:1.3;color:var(--text2);cursor:pointer;text-align:center;transition:border-color .14s,background .14s,color .14s}
.cal-chip span{display:block;font-weight:600;font-size:.875rem;color:var(--text3)}
.cal-chip:hover{border-color:var(--em)}
.cal-chip.sel{border-color:var(--em);background:var(--em);color:#fff}
.cal-chip.sel span{color:rgba(255,255,255,.85)}
.cal-chip-more{flex:1 1 100%;min-width:0;color:var(--em-dark);border-style:dashed}

/* ── 2.1 · The Honourable Promise, directly under the price ── */
.promise-card{background:#fff;border:1.5px solid var(--em);border-radius:12px;padding:1.1rem 1.25rem;margin-top:.4rem;box-shadow:var(--sh)}
.promise-head{display:flex;align-items:baseline;gap:.6rem;margin-bottom:.7rem}
.promise-big{font-family:'Playfair Display',serif;font-size:1.75rem;font-weight:900;color:var(--em-dark);line-height:1}
.promise-lbl{font-size:.875rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--em-dark)}
.promise-list{list-style:none;display:grid;gap:.4rem}
.promise-list li{display:flex;align-items:flex-start;gap:.55rem;font-size:.875rem;color:var(--text2);line-height:1.5}
.promise-list li::before{content:'✓';color:var(--em);font-weight:900;flex-shrink:0}

/* ── 2.1 · cities, collapsed to one sentence ── */
.cities-line{max-width:760px;margin:0 auto;text-align:center;font-size:1.02rem;line-height:1.85;color:var(--text2)}
.cities-line strong{color:var(--em-dark)}

/* ── 2.1 · final CTA with the contact form folded in ── */
.final-cta-inner{max-width:var(--max);margin:0 auto;display:grid;grid-template-columns:1fr 460px;gap:3.5rem;align-items:start;text-align:left;position:relative}
.final-cta-copy h2{font-family:'Playfair Display',serif;font-size:clamp(2.1rem,3.8vw,3.2rem);color:#fff;margin-bottom:.95rem;line-height:1.1}
.final-cta-copy h2 em{font-style:italic;color:var(--gold)}
.final-cta-copy p{font-size:1rem;color:rgba(255,255,255,.62);line-height:1.8;margin-bottom:1.9rem;max-width:44ch}
.final-contact-rows{display:grid;gap:.55rem;margin-bottom:1.7rem}
.final-contact-row{display:flex;align-items:center;gap:.65rem;overflow-wrap:anywhere;min-width:0;font-size:.95rem;font-weight:600;color:#fff;text-decoration:none;transition:color .16s}
a.final-contact-row:hover{color:var(--gold)}
.final-contact-row.is-static{color:rgba(255,255,255,.62);font-weight:500}
.final-pills{display:flex;gap:.7rem;flex-wrap:wrap}
.final-cta-form .form-box{text-align:left}@media(max-width:960px){
  .final-cta-inner{grid-template-columns:1fr;gap:2.5rem}
  .final-cta-copy p{max-width:none}}

/* ── 2.6 · "Text me this quote" capture at the price reveal ── */
.quote-sms{border-top:1px solid var(--border);padding-top:.95rem;margin-bottom:1rem}
.quote-sms-lbl{display:block;font-size:.875rem;font-weight:700;color:var(--text2);margin-bottom:.5rem;line-height:1.45}
.quote-sms-row{display:flex;gap:.4rem}
.quote-sms-input{flex:1;min-width:0;padding:.7rem .85rem;border:1.5px solid var(--border);border-radius:12px;font-family:'Inter',sans-serif;font-size:.95rem;color:var(--text);background:var(--bg);outline:none;transition:border-color .16s}
.quote-sms-input:focus{border-color:var(--em);background:#fff}
.quote-sms-btn{flex-shrink:0;background:transparent;color:var(--cta-primary);border:1px solid var(--navy);border-radius:12px;padding:0 1rem;font-family:'Inter',sans-serif;font-size:.875rem;font-weight:700;cursor:pointer;white-space:nowrap;transition:background .16s}
.quote-sms-btn:hover{background:rgba(15,24,38,.06)}
.quote-sms-msg{font-size:.875rem;color:var(--text3);margin-top:.45rem;line-height:1.45}@media(max-width:420px){.quote-sms-row{flex-direction:column}.quote-sms-btn{padding:.7rem 1rem}}

/* ── 2.7 · triggered 10%-off offer ── */
.offer-modal{position:fixed;inset:0;z-index:400;background:rgba(10,15,22,.7);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:1.25rem;opacity:0;transition:opacity .25s ease}
.offer-modal[hidden]{display:none}
.offer-modal.open{opacity:1}
.offer-modal-card{position:relative;background:#fff;border-radius:12px;padding:2rem 1.9rem;max-width:440px;width:100%;box-shadow:var(--sh-lg);transform:translateY(10px);transition:transform .25s ease}
.offer-modal.open .offer-modal-card{transform:none}
.offer-modal-card h2{font-family:'Playfair Display',serif;font-size:1.6rem;line-height:1.2;color:var(--navy);margin:.85rem 0 .6rem}
.offer-modal-card p{font-size:.95rem;color:var(--text3);line-height:1.7;margin-bottom:1.2rem}
.offer-modal-close{position:absolute;top:.85rem;right:.85rem;width:34px;height:34px;border-radius:50%;background:var(--bg);border:1px solid var(--border);color:var(--text2);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .16s}
.offer-modal-close:hover{background:var(--bg2)}@media(min-width:961px){
  .hero-ctas .btn-em{background:transparent;color:var(--navy);border:1px solid var(--navy);box-shadow:none}
  .hero-ctas .btn-em:hover{background:rgba(15,24,38,.06);color:var(--navy);border-color:var(--navy);box-shadow:none}}

/* ── Service x city landing pages ────────────────────────────────────── */
.breadcrumb-lp{font-size:.875rem;color:var(--text3);margin-bottom:1rem}
.breadcrumb-lp a{color:var(--text3);text-decoration:none}
.breadcrumb-lp a:hover{color:var(--em-dark);text-decoration:underline}
.breadcrumb-lp a[aria-current]{color:var(--text2);font-weight:600}
.lp-body p{font-size:1.02rem;line-height:1.85;color:var(--text2);margin-bottom:1.15rem}
.lp-body p:last-child{margin-bottom:0}
.lp-body strong{color:var(--text)}
.lp-links{display:flex;flex-direction:column;gap:.65rem}

/* Landing pages with no calculator panel (commercial routes to a walkthrough
   form instead) must not leave the 470px booking column empty on desktop. */
.hero-inner-solo{grid-template-columns:minmax(0,1fr)}
.hero-inner-solo .hero-content{max-width:760px}

/* ══ Context fixes: components reused on the opposite background ═══════
   These four all render text the same colour as what is behind it. Each is
   a component built for one background being reused on the other by the
   JS-generated service, areas and city views. Fixed by scoping the dark
   treatment to the dark container instead of applying it everywhere. */

/* 1 · .standard-card was authored for the navy .standards band. The service
      and areas views drop the same grid into a light .sec, so its white
      heading and body text landed on cream. Light is now the default and the
      dark treatment is scoped to .standards. */
.standard-card{background:var(--white);border:1.5px solid var(--border)}
.standard-card h3{color:var(--navy)}
.standard-card p{color:var(--text3)}
.standard-card .standard-icon{color:var(--em-dark)}
.standards .standard-card{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.09)}
.standards .standard-card h3{color:#fff}
.standards .standard-card p{color:rgba(255,255,255,.62)}
.standards .standard-card .standard-icon{color:var(--gold)}

/* 2 · the outline button only got its light treatment inside .final-cta, so
      the same button on the dark .city-hero was navy on navy. */
.city-hero .btn-outline,.city-hero .btn-wh-ol,
.sec-dark .btn-outline,.sec-dark .btn-wh-ol,
.standards .btn-outline,.standards .btn-wh-ol{color:#fff;border-color:rgba(255,255,255,.55)}
.city-hero .btn-outline:hover,.city-hero .btn-wh-ol:hover,
.sec-dark .btn-outline:hover,.sec-dark .btn-wh-ol:hover,
.standards .btn-outline:hover,.standards .btn-wh-ol:hover{background:rgba(255,255,255,.1);border-color:#fff;color:#fff}

/* 3 · Phase 2 folded the contact form into .final-cta, so `.final-cta p`
      (0,1,1) started beating `.ffine` (0,1,0) and painted the reassurance
      line white on the form's white card. */
.final-cta .form-box p,.final-cta .ffine{color:var(--text3)}
.final-cta .form-box .flbl{color:var(--text2)}

/* 4 · Phase 3 renamed the footer headings to .foot-h, but the JS-generated
      city/service/areas footers still emit <h4>, which lost the gold and fell
      back to near-black on the near-black footer. */
footer h4{font-size:.875rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:.9rem}

/* ── Service pages · "What's included" checklist ──────────────────────── */
.incl-card{background:var(--white);border:1.5px solid var(--border);border-radius:12px;
  padding:2rem 2.25rem;max-width:880px;margin:0 auto;box-shadow:var(--sh)}
.incl-card .svc-check{max-width:none;margin:0}
.incl-note{margin-top:1.4rem;padding-top:1.1rem;border-top:1px solid var(--border);
  font-size:.875rem;color:var(--text3);text-align:center}
@media(max-width:700px){
  .incl-card{padding:1.4rem 1.15rem}
  .svc-check{grid-template-columns:minmax(0,1fr);gap:.55rem}
}


/* ── Launch pass · 2026-09-16 ─────────────────────────────────────────
   Tap targets, keyboard access, contrast, mobile proof line. */
.nav-logo-name{display:inline-flex;align-items:center;gap:.25rem}
.nav-phone{min-height:44px}
.hamburger-btn{width:44px;height:44px;align-items:center}
.nav-dd-wrap:focus-within .nav-dd{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
.nav-dd-wrap:focus-within .nav-caret{transform:rotate(180deg)}
a.nav-dd-item{text-decoration:none;color:inherit}
.cta-tertiary,.svc-btn{min-height:44px}
.trust-badge a.trust-label{display:inline-flex;align-items:center;min-height:44px}
.foot-social-icon{width:44px;height:44px}
footer ul a,.foot-link,.foot-bottom-link{display:inline-flex;align-items:center;min-height:32px}
@media(max-width:960px){footer ul a,.foot-link,.foot-bottom-link{min-height:44px}}
.cal-day:disabled{opacity:.55;text-decoration:line-through}
.hero-proof{display:none}
@media(max-width:960px){
  .hero-proof{display:flex;flex-wrap:wrap;align-items:center;gap:.2rem .9rem;margin:0;font-size:.95rem;font-weight:600;color:var(--text2);line-height:1.4}
  .hero-proof>span{display:inline-flex;align-items:center;gap:.3rem;white-space:nowrap}
  .hero-photo-badge{display:none}           /* the proof line above already says it */
  .book-pill{min-height:44px}
  .hero-content > p:not(.hero-sub):not(.hero-proof) a{min-height:44px;display:inline-flex;align-items:center}
  .hero-proof .hero-stars{color:var(--star);letter-spacing:.02em}
  .hero-proof strong{color:var(--em-dark)}
  .hero-proof a{color:var(--text2);text-decoration:underline;text-underline-offset:2px;min-height:44px;display:inline-flex;align-items:center}
}
