:root{
  --paper:#faf7f2;
  --paper-2:#f0e9dd;
  --ink:#251629;
  --ink-soft:#6b5c72;
  --plum:#201028;
  --plum-2:#2e1a3a;
  --plum-3:#3b2549;
  --gold:#b1873f;
  --gold-2:#c8a35c;
  --gold-deep:#8a6830;
  --gold-soft:rgba(177,135,63,.12);
  --line:rgba(37,22,41,.14);
  --line-2:rgba(37,22,41,.07);
  --line-d:rgba(255,255,255,.16);
  --maxw:1180px;
  --ease:cubic-bezier(.16,1,.3,1);
}
*{margin:0;padding:0;box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth;scroll-padding-top:96px}
body{
  font-family:'Outfit',system-ui,-apple-system,sans-serif;background:var(--paper);color:var(--ink);
  line-height:1.65;font-weight:400;-webkit-font-smoothing:antialiased;overflow-x:hidden;
}
h1,h2,h3,h4,h5{font-family:'Cormorant Garamond',Georgia,'Times New Roman',serif;font-weight:500;line-height:1.06;letter-spacing:-.01em;text-wrap:balance}
img{max-width:100%;display:block}
a{color:inherit}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}
.sec{padding:88px 0}
.sec.tint{background:var(--paper-2)}
.sec.dark{background:var(--plum);color:#f4eee6}
.sec.dark h2{color:#fff}

/* ---------- a11y ---------- */
.skip{position:absolute;left:-9999px;top:0;background:var(--gold);color:#fff;padding:10px 18px;z-index:200;border-radius:0 0 10px 0;font-weight:500}
.skip:focus{left:0}
:focus-visible{outline:3px solid var(--gold);outline-offset:2px;border-radius:4px}
.btn:focus-visible{outline-color:var(--plum)}
.dark :focus-visible,.hero :focus-visible{outline-color:var(--gold-2)}

/* ---------- type helpers ---------- */
.eyebrow{display:inline-block;font-size:.78rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold-deep);font-weight:600;margin-bottom:14px}
.eyebrow.on-dark{color:var(--gold-2)}
.sec-head{max-width:640px;margin-bottom:52px}
.sec-head.center{margin-left:auto;margin-right:auto;text-align:center}
.sec-head h2{font-size:clamp(2.2rem,4.2vw,3.4rem);color:var(--plum)}
.sec.dark .sec-head h2{color:#fff}
.sec-head p{color:var(--ink-soft);margin-top:14px;font-size:1.06rem;font-weight:300}
.sec.dark .sec-head p{color:rgba(244,238,230,.72)}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:9px;padding:15px 28px;border-radius:999px;font-weight:500;font-size:1rem;text-decoration:none;border:1.5px solid transparent;cursor:pointer;transition:transform .25s var(--ease),box-shadow .25s var(--ease),background .25s;font-family:inherit}
.btn:hover{transform:translateY(-2px)}
.btn-gold{background:linear-gradient(135deg,var(--gold),var(--gold-2));color:#fff;box-shadow:0 8px 24px rgba(177,135,63,.35)}
.btn-gold:hover{box-shadow:0 12px 30px rgba(177,135,63,.45)}
.btn-line{border-color:var(--line);color:var(--ink);background:transparent}
.btn-line:hover{border-color:var(--gold);color:var(--gold-deep)}
.btn-line.on-dark{border-color:var(--line-d);color:#f4eee6}
.btn-line.on-dark:hover{border-color:var(--gold-2);color:var(--gold-2)}

/* ---------- header ---------- */
header{position:fixed;inset:0 0 auto 0;z-index:100;transition:background .3s,box-shadow .3s;background:rgba(250,247,242,.6);backdrop-filter:blur(4px)}
header.scrolled{background:rgba(250,247,242,.94);backdrop-filter:blur(14px);box-shadow:0 1px 0 var(--line-2),0 8px 30px rgba(37,22,41,.08)}
.nav{display:flex;align-items:center;justify-content:space-between;height:78px;gap:20px}
/* Without this the logo is the first thing flexbox squeezes, and on a narrow
   laptop it shrinks to nothing while the links stay. */
.logo{flex:none}
.logo-img{width:auto;height:40px}
.navlinks{display:flex;gap:18px;font-size:.95rem}
.navlinks a{text-decoration:none;color:var(--ink);opacity:.82;position:relative;padding:4px 0}
.navlinks a::after{content:"";position:absolute;left:0;bottom:0;width:0;height:1.5px;background:var(--gold);transition:width .3s var(--ease)}
.navlinks a:hover::after{width:100%}
.nav-cta{display:flex;align-items:center;gap:14px}
.call-mini{display:inline-flex;align-items:center;gap:7px;font-weight:600;text-decoration:none;color:var(--plum);font-size:.95rem;font-variant-numeric:tabular-nums}
.call-mini svg{color:var(--gold-deep)}
.nav .btn{padding:11px 22px;font-size:.92rem}
/* The language toggle costs the header bar about 100px. Without this the flex
   items break mid-label instead - "Instant / Estimate", "(650) 666- / 9641" -
   and the bar grows to two lines. */
.navlinks a,.call-mini,.nav .btn,.lang-toggle{white-space:nowrap}
.lang-toggle{display:inline-flex;align-items:center;gap:6px;text-decoration:none;font-size:.86rem;font-weight:500;letter-spacing:.04em;color:var(--gold-deep);background:var(--gold-soft);border:1px solid rgba(177,135,63,.28);border-radius:999px;padding:7px 14px;transition:background .2s,border-color .2s}
.lang-toggle:hover{background:rgba(177,135,63,.2);border-color:var(--gold)}
.lang-toggle svg{flex:none;opacity:.85}
.lt-short{display:none}
.menu-lang{display:inline-flex;align-items:center;gap:8px}
.burger{display:none;background:none;border:0;width:44px;height:44px;cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:5px}
.burger span{display:block;width:22px;height:2px;background:var(--plum);transition:.3s}
.mobile-menu{display:none;position:fixed;top:78px;left:0;right:0;z-index:99;background:var(--paper);border-bottom:1px solid var(--line);padding:10px 24px 24px;flex-direction:column;gap:4px;box-shadow:0 24px 40px rgba(37,22,41,.14)}
.mobile-menu.open{display:flex}
.mobile-menu a{text-decoration:none;padding:12px 4px;border-bottom:1px solid var(--line-2);font-size:1.05rem}
.mobile-menu .btn{margin-top:14px;justify-content:center;border-bottom:0}

/* ---------- hero ---------- */
.hero{position:relative;padding:158px 0 74px;overflow:hidden}
.hero-bg{position:absolute;inset:0;background:
  radial-gradient(900px 480px at 88% -10%,var(--gold-soft),transparent 60%),
  radial-gradient(700px 420px at -8% 30%,rgba(32,16,40,.05),transparent 60%)}
.hero-inner{position:relative;display:grid;grid-template-columns:1.06fr .94fr;gap:56px;align-items:center}
.hero h1{font-size:clamp(2.9rem,6vw,4.7rem);color:var(--plum)}
.hero h1 em{font-style:italic;color:var(--gold-deep)}
.lead{margin-top:20px;font-size:1.14rem;color:var(--ink-soft);font-weight:300;max-width:34em}
.rating-chip{display:inline-flex;align-items:center;gap:9px;margin-top:18px;text-decoration:none;font-size:.94rem;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 16px;box-shadow:0 4px 14px rgba(37,22,41,.06)}
.rating-chip .stars{color:var(--gold);letter-spacing:2px;font-size:.95rem}
.rating-chip b{font-weight:600}
.hero-actions{display:flex;gap:14px;margin-top:28px;flex-wrap:wrap}
.avail-line{margin-top:18px;font-size:.92rem;color:var(--ink-soft);display:flex;align-items:center;gap:8px}
.avail-line .dot{width:8px;height:8px;border-radius:50%;background:#3d9a5f;box-shadow:0 0 0 4px rgba(61,154,95,.15);flex:none}
.price-pill{display:inline-flex;align-items:center;gap:12px;margin-top:22px;text-decoration:none;background:var(--plum);color:#f4eee6;border-radius:14px;padding:13px 20px;font-size:.95rem;transition:transform .25s var(--ease)}
.price-pill:hover{transform:translateY(-2px)}
.price-pill .pp-tag{display:inline-flex;align-items:center;justify-content:center;flex:none;line-height:1;white-space:nowrap;background:var(--gold);color:#fff;font-size:.7rem;letter-spacing:.12em;text-indent:.12em;text-transform:uppercase;font-weight:600;border-radius:999px;padding:5px 10px}
.price-pill em{font-style:italic;color:var(--gold-2)}
.hero-media{position:relative}
.hero-photo{position:relative;border-radius:22px;overflow:hidden;box-shadow:0 30px 70px rgba(32,16,40,.28);aspect-ratio:4/4.6}
.hero-photo img{width:100%;height:100%;object-fit:cover}
.hero-cap{position:absolute;left:16px;right:16px;bottom:16px;background:rgba(32,16,40,.82);backdrop-filter:blur(8px);border-radius:14px;padding:13px 18px;color:#f4eee6;display:flex;flex-direction:column;gap:2px}
.hero-cap b{font-weight:500}
.hero-cap span{font-size:.85rem;opacity:.7}

/* ---------- trust bar ---------- */
.trust{background:var(--plum);color:#f4eee6;padding:26px 0}
.trust-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
.ti{display:flex;flex-direction:column;gap:2px;padding-left:16px;border-left:2px solid var(--gold)}
.ti b{font-weight:500;font-size:.98rem}
.ti span{font-size:.84rem;opacity:.62}

/* ---------- estimate calculator ---------- */
.est-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:44px;align-items:start}
.est-panel{background:var(--plum-2);border:1px solid var(--line-d);border-radius:22px;padding:34px}
.est-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px 0;border-bottom:1px solid var(--line-d)}
.est-row:last-of-type{border-bottom:0}
.est-lbl b{display:block;font-weight:500;font-size:1.02rem}
.est-lbl span{font-size:.84rem;opacity:.6}
.stepper{display:flex;align-items:center;gap:2px;background:var(--plum);border:1px solid var(--line-d);border-radius:999px;padding:4px}
.stepper button{width:38px;height:38px;border-radius:50%;border:0;background:transparent;color:#f4eee6;font-size:1.35rem;cursor:pointer;line-height:1;transition:background .2s}
.stepper button:hover{background:var(--plum-3)}
.stepper output{min-width:34px;text-align:center;font-weight:600;font-size:1.1rem;font-variant-numeric:tabular-nums}
.chk{position:relative;display:inline-flex}
.chk input{position:absolute;inset:0;opacity:0;cursor:pointer}
.chk .box{display:inline-flex;align-items:center;gap:8px;border:1.5px solid var(--line-d);border-radius:999px;padding:9px 18px;font-size:.92rem;transition:all .2s;user-select:none}
.chk input:checked + .box{background:var(--gold);border-color:var(--gold);color:#fff}
.chk input:focus-visible + .box{outline:3px solid var(--gold-2);outline-offset:2px}
.est-out{background:#fff;color:var(--ink);border-radius:22px;padding:34px;box-shadow:0 24px 60px rgba(0,0,0,.25);position:sticky;top:100px}
.est-out .eo-label{font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-deep);font-weight:600}
.est-total{font-family:'Cormorant Garamond',Georgia,serif;font-size:clamp(3.2rem,6vw,4.4rem);color:var(--plum);line-height:1;margin-top:8px;font-variant-numeric:tabular-nums}
.est-items{margin-top:16px;font-size:.92rem;color:var(--ink-soft);display:flex;flex-direction:column;gap:6px}
.est-items li{display:flex;justify-content:space-between;list-style:none;gap:14px}
.est-items li span:last-child{font-variant-numeric:tabular-nums;color:var(--ink)}
.pkg-tip{margin-top:18px;background:var(--gold-soft);border:1px solid rgba(177,135,63,.3);border-radius:14px;padding:14px 16px;font-size:.9rem;line-height:1.5}
.pkg-tip b{color:var(--gold-deep)}
.est-fine{margin-top:16px;font-size:.8rem;color:var(--ink-soft);line-height:1.5}
.est-cta{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}
.est-cta .btn{padding:13px 22px;font-size:.94rem}
/* ---------- estimate lead gate ---------- */
.est-total{transition:filter .5s var(--ease),opacity .5s var(--ease)}
.est-out.gated .est-total{filter:blur(13px);opacity:.5;user-select:none}
.est-gate{margin-top:20px;padding-top:20px;border-top:1px solid var(--line)}
.gate-head{font-size:.9rem;line-height:1.55;color:var(--ink-soft)}
.gate-head b{color:var(--plum);font-weight:600}
.lead-form{display:flex;flex-direction:column;gap:12px;margin-top:16px}
.lf-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.lf-field{display:flex;flex-direction:column;gap:6px}
.lf-field label{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;font-weight:600;color:var(--ink-soft)}
.lf-opt{text-transform:none;letter-spacing:0;font-weight:400;opacity:.7}
/* 16px minimum: anything smaller makes iOS Safari zoom the page on focus */
.lf-field input,.lf-field select{font:inherit;font-size:16px;color:var(--ink);background:var(--paper);border:1.5px solid var(--line-2);border-radius:12px;padding:12px 14px;width:100%;transition:border-color .2s,box-shadow .2s}
.lf-field select{cursor:pointer}
.lf-field input:focus,.lf-field select:focus{outline:0;border-color:var(--gold);box-shadow:0 0 0 3px var(--gold-soft)}
.lf-field input[aria-invalid="true"]{border-color:#a8443b;background:#fdf5f4}
.lf-err{font-size:.82rem;color:#a8443b;font-weight:500}
.lf-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.lead-form .btn-gold{width:100%;justify-content:center;margin-top:2px}
.lead-form .btn-gold[disabled]{opacity:.6;cursor:progress}
.gate-skip{align-self:center;background:none;border:0;padding:4px 6px;font:inherit;font-size:.85rem;color:var(--ink-soft);text-decoration:underline;text-underline-offset:3px;cursor:pointer;transition:color .2s}
.gate-skip:hover{color:var(--gold-deep)}
.lf-note{font-size:.78rem;line-height:1.5;color:var(--ink-soft);text-align:center}
.lead-ok{margin-top:18px;background:var(--gold-soft);border:1px solid rgba(177,135,63,.3);border-radius:14px;padding:14px 16px;font-size:.9rem;line-height:1.55}
.lead-ok b{color:var(--gold-deep)}
.lead-ok em{font-style:normal;font-weight:600;color:var(--plum)}

/* ---------- pricing ---------- */
.compare{display:flex;align-items:stretch;justify-content:center;gap:18px;margin:0 auto 14px;max-width:640px}
.cmp-cell{flex:1;text-align:center;border:1px solid var(--line-d);border-radius:16px;padding:18px 14px}
.cmp-cell .lbl{display:block;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;opacity:.6;margin-bottom:6px}
.cmp-cell .amt-sm{font-family:'Cormorant Garamond',Georgia,serif;font-size:2rem;font-variant-numeric:tabular-nums}
.cmp-cell.hi{border-color:var(--gold);background:rgba(177,135,63,.08)}
.cmp-cell .extra{display:block;font-size:.78rem;color:var(--gold-2);margin-top:4px}
.cmp-vs{align-self:center;font-style:italic;font-family:'Cormorant Garamond',Georgia,serif;font-size:1.2rem;opacity:.5}
.value-line{text-align:center;font-size:1rem;color:rgba(244,238,230,.75);max-width:560px;margin:0 auto 46px}
.value-line strong{color:var(--gold-2)}
.price-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;align-items:stretch}
.price{background:var(--plum-2);border:1px solid var(--line-d);border-radius:20px;padding:32px 28px;display:flex;flex-direction:column;gap:14px}
.price.feat{background:linear-gradient(160deg,var(--plum-3),var(--plum-2));border-color:var(--gold);box-shadow:0 24px 60px rgba(0,0,0,.3);position:relative}
.price .tag{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-2);font-weight:600;min-height:1em}
.price h3{font-size:1.7rem;color:#fff}
.price .amt{font-family:'Cormorant Garamond',Georgia,serif;font-size:3rem;color:var(--gold-2);line-height:1;font-variant-numeric:tabular-nums}
.price .amt small{font-size:1.05rem;color:rgba(244,238,230,.6);font-family:'Outfit',sans-serif}
.price .amt .from{font-size:1.05rem;color:rgba(244,238,230,.6);font-family:'Outfit',sans-serif}
.price-sub{font-size:.88rem;color:rgba(244,238,230,.62)}
.perroom{display:flex;align-items:baseline;gap:8px;background:rgba(177,135,63,.14);border-radius:12px;padding:10px 14px}
.perroom b{font-family:'Cormorant Garamond',Georgia,serif;font-size:1.6rem;color:var(--gold-2)}
.perroom span{font-size:.82rem;color:rgba(244,238,230,.7)}
.price ul{list-style:none;display:flex;flex-direction:column;gap:9px;margin-top:2px;flex:1}
.price li{display:flex;gap:10px;align-items:flex-start;font-size:.94rem;color:rgba(244,238,230,.82)}
.price li svg{flex:none;margin-top:4px;color:var(--gold-2)}
.price .btn{justify-content:center;margin-top:8px}
.price-note{text-align:center;margin-top:34px;color:rgba(244,238,230,.6);font-size:.92rem}

/* ---------- services ---------- */
.svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.svc{background:#fff;border:1px solid var(--line-2);border-radius:20px;padding:30px 28px;transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.svc:hover{transform:translateY(-4px);box-shadow:0 20px 44px rgba(37,22,41,.1)}
.svc .ic{width:54px;height:54px;border-radius:16px;background:var(--gold-soft);color:var(--gold-deep);display:grid;place-items:center;margin-bottom:18px}
.svc h3{font-size:1.55rem;color:var(--plum);margin-bottom:8px}
.svc p{font-size:.95rem;color:var(--ink-soft);font-weight:300}
.svc .more{display:inline-block;margin-top:14px;font-size:.9rem;color:var(--gold-deep);text-decoration:none;font-weight:500}
.svc .more:hover{text-decoration:underline}

/* ---------- before/after sliders ---------- */
.ba-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.ba{background:#fff;border:1px solid var(--line-2);border-radius:20px;overflow:hidden;box-shadow:0 10px 30px rgba(37,22,41,.06)}
.ba-slider{position:relative;aspect-ratio:4/4.4;overflow:hidden;touch-action:pan-y}
.ba-slider img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}
.ba-slider .after-img{clip-path:inset(0 0 0 50%)}
.ba-slider .divider{position:absolute;top:0;bottom:0;left:50%;width:2.5px;background:#fff;box-shadow:0 0 10px rgba(0,0,0,.4);pointer-events:none}
.ba-slider .handle{position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%);border-radius:50%;background:var(--gold);color:#fff;display:grid;place-items:center;box-shadow:0 4px 16px rgba(0,0,0,.35);pointer-events:none}
.ba-slider input[type=range]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:ew-resize;margin:0}
.ba-slider .tag-b,.ba-slider .tag-a{position:absolute;top:12px;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;font-weight:600;padding:4px 12px;border-radius:999px;pointer-events:none}
.ba-slider .tag-b{left:12px;background:rgba(32,16,40,.75);color:#fff}
.ba-slider .tag-a{right:12px;background:var(--gold);color:#fff}
.ba .cap{padding:16px 20px;font-size:.93rem;color:var(--ink-soft)}
.ba-hint{text-align:center;margin-top:22px;font-size:.88rem;color:var(--ink-soft)}

/* ---------- steps ---------- */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
.step{background:#fff;border:1px solid var(--line-2);border-radius:20px;padding:28px 24px}
.step .num{font-family:'Cormorant Garamond',Georgia,serif;font-size:2.2rem;color:var(--gold);line-height:1;margin-bottom:12px}
.step h4{font-size:1.3rem;color:var(--plum);margin-bottom:6px}
.step p{font-size:.9rem;color:var(--ink-soft);font-weight:300}

/* ---------- why / owner ---------- */
.feature{display:grid;grid-template-columns:1fr 1fr;gap:52px;align-items:start}
.feature h2{font-size:clamp(2.2rem,4vw,3.2rem)}
.feature .intro{margin-top:16px;color:rgba(244,238,230,.72);font-weight:300;font-size:1.05rem}
.owner-note{margin-top:26px;background:var(--plum-2);border:1px solid var(--line-d);border-left:3px solid var(--gold);border-radius:16px;padding:20px 22px}
.owner-note b{display:block;font-weight:500;margin-bottom:4px;color:var(--gold-2)}
.owner-note p{font-size:.94rem;color:rgba(244,238,230,.78);font-weight:300}
.owner-note .es{display:inline-block;margin-top:10px;font-size:.82rem;background:rgba(177,135,63,.16);border:1px solid rgba(200,163,92,.4);color:var(--gold-2);border-radius:999px;padding:4px 12px}
.why-list{list-style:none;display:flex;flex-direction:column;gap:20px}
.why-list li{display:flex;gap:16px}
.why-list .ck{flex:none;width:40px;height:40px;border-radius:50%;background:rgba(177,135,63,.16);color:var(--gold-2);display:grid;place-items:center}
.why-list b{font-weight:500;display:block}
.why-list li>div>span{font-size:.9rem;color:rgba(244,238,230,.62);font-weight:300}

/* ---------- offers ---------- */
.offer-cards{display:grid;grid-template-columns:1fr 1fr;gap:22px;max-width:860px;margin:0 auto}
.offer{position:relative;background:var(--plum-2);border:1px solid var(--line-d);border-radius:20px;padding:34px 30px 30px}
.offer .ribbon{position:absolute;top:-13px;left:26px;background:var(--gold);color:#fff;font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;font-weight:600;border-radius:999px;padding:5px 14px}
.offer h3{font-size:1.6rem;color:#fff;margin-bottom:8px}
.offer p{font-size:.94rem;color:rgba(244,238,230,.72);font-weight:300}
.offer-cta{text-align:center;margin-top:36px;display:flex;flex-direction:column;gap:12px;align-items:center}
.offer-cta .fine{font-size:.78rem;color:rgba(244,238,230,.5)}

/* ---------- area ---------- */
.area-wrap{text-align:center;max-width:760px;margin:0 auto}
.area-cities{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:30px}
.area-cities a{text-decoration:none;background:#fff;border:1px solid var(--line);border-radius:999px;padding:11px 24px;font-size:.98rem;transition:all .25s var(--ease)}
.area-cities a:hover{border-color:var(--gold);color:var(--gold-deep);transform:translateY(-2px)}
.area-note{display:inline-flex;align-items:center;gap:8px;margin-top:26px;font-size:.92rem;color:var(--ink-soft)}
.area-note svg{color:var(--gold-deep)}

/* ---------- reviews ---------- */
.rev-agg{display:flex;justify-content:center;margin-bottom:36px}
.rev-agg a{display:inline-flex;align-items:center;gap:12px;text-decoration:none;background:#fff;border:1px solid var(--line);border-radius:999px;padding:11px 22px;box-shadow:0 6px 18px rgba(37,22,41,.06)}
.rev-agg .stars{color:var(--gold);letter-spacing:3px}
.rev-agg b{font-weight:600}
.rev-agg span{color:var(--ink-soft);font-size:.9rem}
.rev-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.rev{position:relative;background:#fff;border:1px solid var(--line-2);border-radius:20px;padding:34px 28px 26px;display:flex;flex-direction:column;gap:18px}
.rev .stars{color:var(--gold);letter-spacing:3px;font-size:.95rem}
.rev p{font-size:.97rem;color:var(--ink);font-weight:300;flex:1}
.rev .who{display:flex;align-items:center;gap:12px}
.rev .av{width:42px;height:42px;border-radius:50%;background:var(--plum);color:var(--gold-2);display:grid;place-items:center;font-family:'Cormorant Garamond',Georgia,serif;font-size:1.2rem}
.rev .who b{display:block;font-weight:500;line-height:1.2}
.rev .who span{font-size:.8rem;color:var(--ink-soft)}
.rev-cta{text-align:center;margin-top:34px}

/* ---------- faq ---------- */
.faq{max-width:760px;margin:0 auto}
.q{border-bottom:1px solid var(--line)}
.q button{width:100%;background:none;border:0;text-align:left;display:flex;justify-content:space-between;align-items:center;gap:18px;padding:22px 4px;font-family:inherit;font-size:1.08rem;font-weight:500;color:var(--ink);cursor:pointer}
.q .ic{flex:none;width:34px;height:34px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;color:var(--gold-deep);transition:transform .3s var(--ease),background .3s}
.q.open .ic{transform:rotate(45deg);background:var(--gold);border-color:var(--gold);color:#fff}
.q .ans{max-height:0;overflow:hidden;transition:max-height .4s var(--ease)}
.q .ans p{padding:0 44px 22px 4px;color:var(--ink-soft);font-weight:300;font-size:.98rem}

/* ---------- cta band ---------- */
.cta-band{text-align:center;padding:20px 0}
.cta-band h2{font-size:clamp(2.4rem,5vw,3.8rem)}
.cta-band h2 em{font-style:italic;color:var(--gold-2)}
.cta-band p{margin-top:14px;color:rgba(244,238,230,.72);font-weight:300;font-size:1.06rem}
.cta-actions{display:flex;gap:14px;justify-content:center;margin-top:30px;flex-wrap:wrap}

/* ---------- footer ---------- */
footer{background:var(--plum);color:rgba(244,238,230,.75);padding:64px 0 34px;border-top:1px solid var(--line-d)}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.1fr;gap:40px}
footer h5{font-family:'Outfit',sans-serif;font-size:.8rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-2);font-weight:600;margin-bottom:16px}
footer ul{list-style:none;display:flex;flex-direction:column;gap:9px}
footer a{color:rgba(244,238,230,.75);text-decoration:none}
footer a:hover{color:var(--gold-2)}
.fline{font-size:.92rem;font-weight:300}
.foot-hours{font-size:.9rem;font-weight:300;display:flex;flex-direction:column;gap:5px}
.foot-hours b{font-weight:500;color:#f4eee6}
.foot-bottom{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;border-top:1px solid var(--line-d);margin-top:46px;padding-top:24px;font-size:.84rem;color:rgba(244,238,230,.5)}

/* ---------- mobile sticky bar ---------- */
.mob-bar{display:none;position:fixed;left:0;right:0;bottom:0;z-index:98;background:rgba(32,16,40,.96);backdrop-filter:blur(12px);padding:10px 12px calc(10px + env(safe-area-inset-bottom));gap:10px}
.mob-bar .btn{flex:1;justify-content:center;padding:13px 10px;font-size:.95rem}

/* ---------- hero evening badge / text-first ---------- */
.hero-badge{display:flex;align-items:flex-start;gap:11px;margin-top:20px;background:var(--gold-soft);border-left:3px solid var(--gold);border-radius:0 12px 12px 0;padding:14px 18px;font-size:1rem;line-height:1.55;color:var(--ink);max-width:56ch}
.hero-badge svg{flex:none;margin-top:3px;color:var(--gold-deep)}
.hero-badge b{font-weight:600;color:var(--plum)}
.text-first{display:flex;align-items:flex-start;gap:9px;margin-top:16px;font-size:.93rem;line-height:1.55;color:var(--ink-soft);max-width:54ch}
.text-first svg{flex:none;margin-top:3px;color:var(--gold-deep)}
.text-first b{color:var(--ink);font-weight:600}

/* ---------- 14-day guarantee ---------- */
.guarantee{display:flex;align-items:center;gap:20px;max-width:700px;margin:36px auto 0;background:rgba(255,255,255,.05);border:1px solid var(--line-d);border-radius:18px;padding:22px 26px}
.guarantee .g-badge{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;width:78px;height:78px;border-radius:50%;background:linear-gradient(135deg,var(--gold),var(--gold-2));color:#fff;font-size:.66rem;letter-spacing:.14em;text-indent:.14em;text-transform:uppercase;font-weight:600;line-height:1}
.guarantee .g-badge b{font-family:'Cormorant Garamond',Georgia,serif;font-size:1.85rem;letter-spacing:0;text-indent:0;font-weight:600;line-height:1;margin-bottom:2px}
.guarantee .g-copy b{display:block;font-family:'Cormorant Garamond',Georgia,serif;font-size:1.55rem;font-weight:600;color:#f4eee6;margin-bottom:5px}
.guarantee .g-copy p{font-size:.97rem;font-weight:300;color:rgba(244,238,230,.8);line-height:1.6}

/* ---------- cta band mail + footer note ---------- */
.cta-mail{margin-top:18px;font-size:.9rem;font-weight:300;color:rgba(244,238,230,.66)}
.cta-mail a{color:var(--gold-2);text-decoration:none;border-bottom:1px solid rgba(200,163,92,.4)}
.cta-mail a:hover{color:#fff}
.fh-note{color:rgba(244,238,230,.55);font-style:italic}

/* ---------- reveal ---------- */
.js .reveal{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.reveal.in{opacity:1;transform:none}

/* ---------- responsive ---------- */
/* The header degrades in two stages instead of one. Logo (254) + six links
   (434) + toggle/phone/Book (375) + gaps needs ~1150px of usable bar, and the
   wrap only ever offers viewport minus 48. Dropping the inline phone number
   first buys ~146px, which keeps the nav links alive on 1024-1180 laptops
   rather than sending them straight to the burger. */
@media (max-width:1180px){
  .nav .call-mini{display:none}
}
@media (max-width:1020px){
  /* Links go too. Everything dropped above is in the burger menu, including
     the phone number, so nothing becomes unreachable. */
  .navlinks{display:none}
  .burger{display:flex}
  .hero-inner{grid-template-columns:1fr;gap:40px}
  .hero-media{max-width:520px}
  .est-grid,.feature{grid-template-columns:1fr;gap:36px}
  .price-grid,.svc-grid,.ba-grid,.rev-grid{grid-template-columns:1fr 1fr}
  .steps{grid-template-columns:1fr 1fr}
  .foot-grid{grid-template-columns:1fr 1fr}
  .est-out{position:static}
}
@media (max-width:720px){
  .sec{padding:64px 0}
  .navlinks,.nav .call-mini,.nav .btn{display:none}
  .lang-toggle{padding:7px 12px}
  .lt-long{display:none}
  .lt-short{display:inline}
  .burger{display:flex}
  .hero{padding-top:120px}
  .price-grid,.svc-grid,.ba-grid,.rev-grid,.steps,.trust-grid,.offer-cards{grid-template-columns:1fr}
  .compare{flex-direction:column}
  .cmp-vs{padding:2px 0}
  .mob-bar{display:flex}
  .mob-bar .mb-primary{flex:1.55;gap:7px;font-weight:600}
  .mob-bar .btn-line{flex:.85;font-size:.88rem;padding:13px 6px}
  .hero-badge{font-size:.95rem;padding:13px 15px;margin-top:16px}
  .guarantee{flex-direction:column;text-align:center;gap:15px;padding:24px 20px}
  body{padding-bottom:74px}
  .est-panel,.est-out{padding:26px 22px}
  .lf-row{grid-template-columns:1fr}
  .chk .box{padding:8px 13px;font-size:.85rem;white-space:nowrap}
  .est-row{gap:10px}
  .foot-grid{grid-template-columns:1fr}
}
/* On a 360px phone the bar is logo + toggle + burger and the wordmark alone is
   254px of the 297px available. The toggle is the new arrival, so the logo
   gives up the height it can spare rather than the toggle disappearing on the
   phones most likely to want it. */
@media (max-width:480px){
  .nav{gap:12px}
  .nav-cta{gap:10px}
  .logo-img{height:28px}
  .lang-toggle{padding:6px 10px;font-size:.8rem}
}
/* 320px is the narrowest phone still in the wild. Tighter gutters and one more
   step off the wordmark keep the toggle and the burger on the same line. */
@media (max-width:360px){
  .wrap{padding:0 16px}
  .nav{gap:10px}
  .logo-img{height:25px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .js .reveal{opacity:1;transform:none;transition:none}
  .btn,.svc,.area-cities a,.q .ic,.price-pill{transition:none !important}
}

/* ================= SERVICE PAGES ================= */
/* ---------- service page hero ---------- */
.svc-hero{position:relative;padding:150px 0 72px;background:
  radial-gradient(760px 420px at 12% 0%,rgba(177,135,63,.10),transparent 62%),
  linear-gradient(180deg,var(--paper) 0%,var(--paper-2) 100%)}
.svc-hero .wrap{max-width:920px}
.svc-hero h1{font-size:clamp(2.4rem,5vw,3.9rem);color:var(--plum);margin-top:6px}
.svc-hero h1 em{font-style:italic;color:var(--gold-deep)}
.svc-hero .lead{margin-top:18px;font-size:1.13rem;line-height:1.7;font-weight:300;color:var(--ink-soft);max-width:62ch}
.svc-hero .hero-actions{margin-top:26px}
.crumb{font-size:.85rem;color:var(--ink-soft);margin-bottom:20px}
.crumb a{color:var(--gold-deep);text-decoration:none}
.crumb a:hover{text-decoration:underline}
.crumb span{opacity:.5;margin:0 7px}

/* ---------- long-form article ---------- */
.prose{max-width:70ch;margin:0 auto}
.prose h2{font-size:clamp(1.7rem,3vw,2.35rem);color:var(--plum);margin:52px 0 16px}
.prose h2:first-child{margin-top:0}
.prose h3{font-size:1.28rem;color:var(--plum);margin:30px 0 10px;font-family:'Outfit',system-ui,sans-serif;font-weight:600}
.prose p{margin-bottom:16px;color:var(--ink-soft);font-weight:300;line-height:1.78}
.prose strong{color:var(--ink);font-weight:600}
.prose ul{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-direction:column;gap:11px}
.prose ul li{position:relative;padding-left:26px;color:var(--ink-soft);font-weight:300;line-height:1.7}
.prose ul li::before{content:"";position:absolute;left:2px;top:.62em;width:7px;height:7px;border-radius:50%;background:var(--gold)}
.prose ul li b{color:var(--ink);font-weight:600}
.prose .callout{background:var(--gold-soft);border-left:3px solid var(--gold);border-radius:0 12px 12px 0;padding:18px 22px;margin:26px 0}
.prose .callout p{margin:0;color:var(--ink)}

/* ---------- per-service price table ---------- */
.svc-price{width:100%;border-collapse:collapse;margin:22px 0 8px;font-size:.97rem}
.svc-price th{text-align:left;font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-deep);font-weight:600;padding:0 0 12px;border-bottom:1px solid var(--line-2)}
.svc-price td{padding:14px 0;border-bottom:1px solid var(--line-2);color:var(--ink-soft);font-weight:300;vertical-align:top}
.svc-price td:last-child{text-align:right;white-space:nowrap;color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}
.svc-price tr:last-child td{border-bottom:0}

/* ---------- before/after placeholder ---------- */
.ba-todo{display:grid;place-items:center;text-align:center;aspect-ratio:4/4.4;border:2px dashed var(--line-2);border-radius:18px;background:repeating-linear-gradient(45deg,var(--paper-2),var(--paper-2) 12px,var(--paper) 12px,var(--paper) 24px);padding:26px;color:var(--ink-soft)}
.ba-todo b{display:block;font-family:'Cormorant Garamond',Georgia,serif;font-size:1.3rem;color:var(--plum);margin-bottom:8px}
.ba-todo span{font-size:.86rem;font-weight:300;line-height:1.6;max-width:26ch}
.ba-pair{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:8px}

/* ---------- quote cta (pages without the estimator) ---------- */
.quote-cta{max-width:760px;margin:0 auto;text-align:center;background:var(--plum-2);border:1px solid var(--line-d);border-radius:22px;padding:44px 38px}
.quote-cta h2{font-size:clamp(1.9rem,3.4vw,2.6rem);color:#fff;margin-bottom:14px}
.quote-cta p{color:rgba(244,238,230,.75);font-weight:300;max-width:52ch;margin:0 auto 26px;line-height:1.7}
.quote-cta .hero-actions{justify-content:center}
.quote-cta .qc-note{margin:20px auto 0;font-size:.88rem;color:rgba(244,238,230,.55)}

/* ---------- related services ---------- */
.rel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.rel-card{display:flex;flex-direction:column;gap:7px;background:#fff;border:1px solid var(--line-2);border-radius:18px;padding:24px 24px 22px;text-decoration:none;transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.rel-card:hover{transform:translateY(-4px);box-shadow:0 18px 40px rgba(37,22,41,.1)}
.rel-card b{font-family:'Cormorant Garamond',Georgia,serif;font-size:1.42rem;font-weight:600;color:var(--plum);line-height:1.25}
.rel-card span{font-size:.91rem;color:var(--ink-soft);font-weight:300;line-height:1.6}
.rel-card em{font-style:normal;color:var(--gold-deep);font-size:1.05rem;margin-top:4px}
.rel-home{text-align:center;margin-top:34px}
.rel-home a{color:var(--gold-deep);text-decoration:none;font-weight:500}
.rel-home a:hover{text-decoration:underline}

/* ================= CITY PAGES ================= */
/* ---------- embedded map ---------- */
.map-embed{margin:26px 0 0;border-radius:18px;overflow:hidden;border:1px solid var(--line-2);background:var(--paper-2);box-shadow:0 10px 30px rgba(37,22,41,.06)}
.map-embed iframe{display:block;width:100%;height:380px;border:0}
.map-cap{margin:14px 0 0;text-align:center;font-size:.86rem;font-weight:300;color:var(--ink-soft)}

/* ---------- customer review placeholder ---------- */
.review-todo{max-width:640px;margin:0 auto;text-align:center;border:2px dashed var(--line-2);border-radius:18px;background:repeating-linear-gradient(45deg,var(--paper-2),var(--paper-2) 12px,var(--paper) 12px,var(--paper) 24px);padding:34px 30px;color:var(--ink-soft)}
.review-todo b{display:block;font-family:'Cormorant Garamond',Georgia,serif;font-size:1.45rem;color:var(--plum);margin-bottom:10px}
.review-todo span{display:block;font-size:.9rem;font-weight:300;line-height:1.7;max-width:44ch;margin:0 auto}

/* ---------- neighbourhood chips ---------- */
.hoods{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:22px;padding:0;list-style:none}
.hoods li{font-size:.82rem;letter-spacing:.04em;color:var(--gold-deep);background:var(--gold-soft);border:1px solid rgba(177,135,63,.24);border-radius:999px;padding:7px 14px;font-weight:500}

/* ---------- other-cities grid (four cards, not three) ---------- */
.city-grid{grid-template-columns:repeat(4,1fr)}

@media (max-width:1020px){
  .rel-grid{grid-template-columns:1fr 1fr}
  .city-grid{grid-template-columns:1fr 1fr}
  .map-embed iframe{height:320px}
}
@media (max-width:720px){
  .svc-hero{padding:118px 0 56px}
  .rel-grid{grid-template-columns:1fr}
  .city-grid{grid-template-columns:1fr}
  .ba-pair{grid-template-columns:1fr}
  .quote-cta{padding:34px 22px}
  .prose h2{margin-top:40px}
  .map-embed iframe{height:260px}
  .review-todo{padding:26px 20px}
}
