/* =========================================================================
   ATL Epoxy Design — dark-luxury landing
   Palette: Black #141414 · White/Silver #FFFFFF/#DFDFDF · Gold #D1A85D · Charcoal #2A2A2A
   Less gold = more premium. Gold is the picture frame used once per wall.
   ========================================================================= */

:root {
  /* surfaces */
  --base:#141414; --base-solid:#141414; --raised:#1a1a1a; --card:#2a2a2a; --charcoal:#575755;
  --overlay:rgba(20,20,20,.72);
  /* text */
  --white:#fff; --silver:#dfdfdf; --muted:#a8a8a6; --on-gold:#0e0e0e;
  /* gold */
  --gold:#d1a85d; --gold-hi:#e6c98e; --gold-deep:#a87d38;
  --gold-soft:rgba(209,168,93,.12); --gold-line:rgba(209,168,93,.34);
  --grad-gold:linear-gradient(180deg,#e6c98e 0%,#d1a85d 46%,#a87d38 100%);
  --sheen:linear-gradient(100deg,#9d7b3c,#d1a85d 35%,#f0d9a8 50%,#d1a85d 65%,#9d7b3c);
  /* lines + shadow */
  --border:rgba(255,255,255,.10); --border-strong:rgba(255,255,255,.18);
  --hair:linear-gradient(90deg,transparent,var(--gold-line) 50%,transparent);
  --sh-md:0 6px 18px rgba(0,0,0,.45); --sh-lg:0 18px 48px rgba(0,0,0,.55);
  --sh-xl:0 30px 80px rgba(0,0,0,.62); --sh-gold:0 10px 30px rgba(209,168,93,.20);
  /* radius */
  --r-sm:8px; --r-md:14px; --r-lg:20px; --r-xl:28px; --r-pill:999px;
  /* layout */
  --container:1200px; --gutter:clamp(20px,5vw,40px);
  --measure-faq:680px; --measure-form:540px;
  --pad:clamp(64px,9vw,128px); --pad-sm:clamp(40px,6vw,72px);
  /* type */
  --serif:"Cormorant Garamond","Times New Roman",Georgia,serif;
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --fs-h1:clamp(2.35rem,1.35rem + 4.5vw,4.5rem);
  --fs-h2:clamp(1.9rem,1.3rem + 2.6vw,3.05rem);
  --fs-h3:clamp(1.4rem,1.15rem + 1vw,1.8rem);
  --fs-lead:clamp(1.18rem,1.08rem + .55vw,1.45rem);
  --fs-body:clamp(1.06rem,1rem + .3vw,1.2rem);
  --fs-eyebrow:clamp(.82rem,.77rem + .2vw,.92rem);
  /* motion */
  --ease:cubic-bezier(.22,1,.36,1); --ease-out:cubic-bezier(.16,1,.3,1);
  --dur-fast:160ms; --dur:260ms; --dur-slow:560ms;
  --z-nav:100; --z-float:90; --z-modal:200;
}

/* ---------- reset / base ---------- */
*,*::before,*::after{box-sizing:border-box}
*{margin:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:calc(84px + env(safe-area-inset-top));color-scheme:dark}
/* fill the iOS safe areas (notch/home-bar) with the site's dark base so the top reads seamless */
html,body{background:var(--base)}
/* Global horizontal-overflow guard: clip is more reliable than hidden across
   engines (and doesn't create a stray scroll container). Keeps one rogue element
   from shifting the whole page sideways on phones. */
html,body{overflow-x:clip}
body{
  font-family:var(--sans);font-size:var(--fs-body);line-height:1.62;
  color:var(--silver);background:var(--base);overflow-x:hidden;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
/* Media safety net: nothing can ever force the page wider than the screen. */
img,svg,video,canvas{max-width:100%;height:auto}
/* matte-stone vignette so flat black reads as a deep surface, not a dead color */
body::before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background:radial-gradient(120% 90% at 50% 0%,rgba(209,168,93,.05),transparent 42%),
             radial-gradient(140% 120% at 50% 100%,rgba(0,0,0,.5),transparent 55%);
}
main,header,footer,section{position:relative;z-index:1}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
input,select,textarea{font:inherit;color:inherit}
ul{list-style:none;padding:0}
.svg-defs{position:absolute;width:0;height:0;overflow:hidden}
.icon{width:1.15em;height:1.15em;display:inline-block;vertical-align:middle;fill:currentColor;flex:none}
.icon--gold{color:var(--gold)}

.skip-link{position:absolute;left:-9999px;top:0;z-index:300;background:var(--gold);color:var(--on-gold);
  padding:10px 16px;border-radius:0 0 var(--r-sm) 0;font-weight:600}
.skip-link:focus{left:0}

:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{
  outline:2px solid var(--gold);outline-offset:3px;border-radius:4px}

/* ---------- typography ---------- */
h1,h2,h3{font-family:var(--serif);font-weight:600;color:var(--white);line-height:1.1;letter-spacing:-.012em}
h1{font-size:var(--fs-h1);line-height:1.06;letter-spacing:-.018em;text-wrap:balance}
h2{font-size:var(--fs-h2);text-wrap:balance}
h3{font-size:var(--fs-h3)}
p{color:var(--silver)}
.lead{font-family:var(--sans);font-size:var(--fs-lead);line-height:1.55;color:var(--silver);max-width:46ch}
.eyebrow{display:flex;align-items:center;gap:.6em;font-family:var(--sans);font-weight:600;
  font-size:var(--fs-eyebrow);letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}
.eyebrow .tick{width:26px;height:2px;background:var(--grad-gold);border-radius:2px;flex:none}
.eyebrow--center{justify-content:center}
.gold-word{background:var(--sheen);-webkit-background-clip:text;background-clip:text;
  color:transparent;-webkit-text-fill-color:transparent}
/* Fallback: if a browser (old Android WebView / some in-app browsers like
   Instagram/Facebook) can't clip the gradient to the text, the transparent fill
   would make this gold text INVISIBLE. Force a solid gold instead. */
@supports not ((-webkit-background-clip:text) or (background-clip:text)){
  .gold-word,.gold-em,
  .footer__cta2--lux .footer__cta2-phone,.footer__cta2--lux .footer__cta2-eyebrow,
  .ctaband--polished .ctaband__eyebrow,.ctaband--polished .ctaband__line em,
  .ctaband--quiet .ctaband__line .gold-em,.ctaband--residential__eyebrow{
    background:none!important;color:var(--gold)!important;-webkit-text-fill-color:var(--gold)!important}
}
.link-gold{color:var(--gold);font-weight:600;display:inline-flex;align-items:center;gap:.35em}
.link-gold .icon{transition:transform var(--dur) var(--ease)}
.link-gold:hover .icon{transform:translateX(4px)}

/* ---------- layout ---------- */
.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:var(--gutter)}
.section{padding-block:var(--pad)}
.section--raised{background:var(--raised)}
.sec-head{max-width:62ch;margin-bottom:clamp(2rem,1rem + 3vw,3.25rem);display:grid;gap:.85rem}
.sec-head--center{margin-inline:auto;text-align:center;justify-items:center}
.sec-foot{margin-top:2.25rem;text-align:center;color:var(--muted)}

/* ---------- buttons (exactly two styles) ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;
  min-height:48px;padding:.75rem 1.6rem;border-radius:var(--r-pill);font-family:var(--sans);
  font-weight:600;letter-spacing:.01em;white-space:nowrap;
  transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),
    background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}
.btn .icon{width:1.05em;height:1.05em}
.btn--gold{background:var(--grad-gold);color:var(--on-gold);box-shadow:var(--sh-gold)}
.btn--gold:hover{transform:translateY(-2px);box-shadow:0 14px 38px rgba(209,168,93,.32)}
.btn--gold:active{transform:translateY(0) scale(.98)}
.btn--ghost{background:transparent;color:var(--white);border:1px solid var(--gold-line)}
.btn--ghost:hover{background:var(--gold-soft);border-color:var(--gold)}
.btn--ghost .icon{color:var(--gold)}
.btn--sm{min-height:44px;padding:.55rem 1.15rem;font-size:.92rem}
.btn--block{width:100%}

/* ---------- nav ---------- */
.nav{position:fixed;inset-inline:0;top:0;z-index:var(--z-nav);
  padding-top:max(.5rem,env(safe-area-inset-top));
  transition:background var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}
.nav__inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  min-height:64px;padding-block:.55rem}
.nav.is-scrolled{background:rgba(20,20,20,.82);backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);box-shadow:0 1px 0 var(--gold-line),var(--sh-md)}
.brand{display:flex;align-items:center;gap:.6rem;min-width:0}
.brand__mark{width:46px;height:auto;flex:none}
.brand__word{font-family:var(--serif);font-weight:600;font-size:1.18rem;letter-spacing:.01em;
  color:var(--white);white-space:nowrap}
.brand__word-em{color:var(--gold)}
.nav__links{display:none;gap:1.6rem}
.nav__links a{display:inline-flex;align-items:center;min-height:44px;font-size:.92rem;color:var(--silver);position:relative;padding-block:.55rem;letter-spacing:.01em}
.nav__links a::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;
  background:var(--grad-gold);transform:scaleX(0);transform-origin:left;transition:transform var(--dur) var(--ease)}
.nav__links a:hover{color:var(--white)}
.nav__links a:hover::after{transform:scaleX(1)}
.nav__actions{display:flex;align-items:center;gap:.7rem}
.nav__tel{display:none;align-items:center;gap:.45rem;min-height:44px;padding-block:.5rem;color:var(--gold);font-weight:600;font-size:.95rem}
.nav__tel:hover{color:var(--gold-hi)}

/* ---------- hero ---------- */
.hero{min-height:88vh;min-height:min(92svh, 780px);display:flex;align-items:center;
  padding-top:clamp(96px,12vh,140px);padding-bottom:clamp(48px,8vh,88px);overflow:hidden}
.hero__media{position:absolute;inset:0;z-index:0}
.hero__media img{width:100%;height:100%;object-fit:cover;object-position:center 66%}
.hero__scrim{position:absolute;inset:0;
  background:
    linear-gradient(180deg,rgba(20,20,20,.55),rgba(20,20,20,.14) 32%,rgba(20,20,20,.26) 62%,rgba(20,20,20,.6) 88%,var(--base-solid) 100%),
    linear-gradient(90deg,rgba(20,20,20,.84),rgba(20,20,20,.40) 56%,rgba(20,20,20,.05) 100%)}
.hero__inner{position:relative;z-index:2}
.hero__copy{max-width:660px;display:grid;gap:1.15rem}
.hero__copy h1{text-shadow:0 2px 16px rgba(0,0,0,.82),0 1px 3px rgba(0,0,0,.6)}
.hero__rating{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.stars{display:inline-flex;gap:2px;color:var(--gold)}
.stars .icon{width:1.15rem;height:1.15rem}
.hero__rating-label{color:var(--silver);font-weight:500;font-size:.95rem}
.hero__cta{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.4rem}
.hero__proof{display:flex;flex-wrap:wrap;gap:1.1rem 1.5rem;margin-top:.7rem;color:var(--silver);font-size:.92rem}
.hero__proof li{display:flex;align-items:center;gap:.45rem}
.hero__proof .icon{width:1.15rem;height:1.15rem}

/* ---------- trust strip ---------- */
.trust{padding-block:clamp(28px,4vw,40px);position:relative}
.trust::before,.trust::after{content:"";position:absolute;inset-inline:0;height:1px;background:var(--hair)}
.trust::before{top:0}.trust::after{bottom:0}
.trust__inner{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;
  gap:.9rem 1.4rem;text-align:center}
.trust__item{display:flex;align-items:center;gap:.55rem;color:var(--silver);font-size:.9rem;
  font-weight:500;letter-spacing:.01em}
.trust__item .icon{width:1.3rem;height:1.3rem}
.trust__item:not(:last-child){padding-right:1.4rem;border-right:1px solid var(--border)}

/* ---------- CTA bands ---------- */
.ctaband{position:relative;padding-block:var(--pad-sm);overflow:hidden;
  background:var(--raised);isolation:isolate}
.ctaband::before,.ctaband::after{content:"";position:absolute;inset-inline:0;height:1px;background:var(--hair);z-index:2}
.ctaband::before{top:0}.ctaband::after{bottom:0}
/* CTA band photo treatment moved to dedicated cinematic .ctaband__media layers — see POLISH v3 block */
.ctaband__inner{display:flex;flex-direction:column;align-items:center;text-align:center;gap:1.3rem}
.ctaband__line{font-family:var(--serif);font-size:clamp(1.5rem,1.1rem + 1.9vw,2.4rem);
  line-height:1.18;color:var(--white);max-width:24ch}
.ctaband__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem}

/* ---------- reviews ---------- */
.reviews__agg{display:flex;align-items:center;gap:.85rem;flex-wrap:wrap;
  margin-bottom:2.25rem;padding-bottom:1.6rem;border-bottom:1px solid var(--border)}
.reviews__score{font-family:var(--serif);font-size:clamp(2.6rem,1.8rem + 3vw,3.6rem);font-weight:700;line-height:1}
.reviews__agg .stars .icon{width:1.4rem;height:1.4rem}
.reviews__agg-label{color:var(--muted);font-size:.95rem}
.reviews__agg-label strong{color:var(--silver)}
.reviews__grid{display:grid;gap:1.25rem}
.rev-card{position:relative;background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);
  padding:1.6rem;display:flex;flex-direction:column;gap:1rem;overflow:hidden;
  transition:border-color var(--dur) var(--ease),transform var(--dur) var(--ease)}
.rev-card:hover{border-color:var(--gold-line);transform:translateY(-3px)}
.rev-card__glyph{position:absolute;top:.7rem;right:1rem;width:3.4rem;height:3.4rem;color:var(--gold);opacity:.1}
.rev-card .stars .icon{width:1.05rem;height:1.05rem}
.rev-card__body{color:var(--silver);font-size:.98rem;line-height:1.65;font-style:italic;
  display:-webkit-box;-webkit-line-clamp:8;line-clamp:8;-webkit-box-orient:vertical;overflow:hidden}
.rev-card__by{display:flex;align-items:center;gap:.7rem;margin-top:auto;padding-top:.4rem}
.avatar{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;flex:none;
  background:var(--grad-gold);color:var(--on-gold);font-weight:700;font-family:var(--serif);font-size:1.1rem;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.25)}
.rev-card__meta{display:grid}
.rev-card__meta strong{color:var(--white);font-size:.95rem}
.rev-card__meta span{color:var(--muted);font-size:.8rem;letter-spacing:.02em}
.reviews__out{margin-top:1.8rem;color:var(--muted);font-size:.95rem}
.reviews__out a{color:var(--gold);font-weight:600}
.reviews__out a:hover{color:var(--gold-hi)}

/* ---------- featured projects ---------- */
.projects__grid{display:grid;gap:1.25rem}
.proj{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);
  padding:1.6rem;display:flex;flex-direction:column;gap:.75rem;
  transition:border-color var(--dur) var(--ease),transform var(--dur) var(--ease)}
.proj__name{margin-top:.1rem}
.proj__meta{margin-top:auto;padding-top:.5rem}
.proj:hover{border-color:var(--gold-line);transform:translateY(-3px)}
.proj__stat{font-family:var(--serif);font-weight:700;line-height:.9;display:flex;align-items:baseline;gap:.4rem}
.proj__stat>.gold-word{font-size:clamp(3rem,2rem + 4vw,4.6rem)}
.proj__stat-unit{font-family:var(--sans);font-size:.85rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.proj__name{color:var(--white)}
.proj__desc{color:var(--silver);font-size:.96rem}
.proj__meta{color:var(--muted);font-size:.8rem;letter-spacing:.03em;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}
.proj__meta .dot{width:3px;height:3px;border-radius:50%;background:var(--gold);display:inline-block}
.proj__pills{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.3rem}
.proj__pills li{font-size:.72rem;letter-spacing:.02em;color:var(--gold);border:1px solid var(--gold-line);
  border-radius:var(--r-pill);padding:.28rem .7rem;background:var(--gold-soft)}

/* ---------- services ---------- */
.services__grid{display:grid;gap:1.1rem}
.svc{background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);padding:1.5rem;
  display:grid;gap:.55rem;align-content:start;transition:border-color var(--dur) var(--ease),transform var(--dur) var(--ease)}
.svc:hover{border-color:var(--gold-line);transform:translateY(-3px)}
.svc__icon{width:2rem;height:2rem;margin-bottom:.2rem}
.svc h3{color:var(--white);font-size:1.3rem}
.svc p{color:var(--silver);font-size:.95rem}
.services__seo{margin-top:2rem;max-width:80ch;color:var(--muted);font-size:.95rem;line-height:1.7}

/* ---------- reusable swipe carousel (reviews / projects / services) ---------- */
.carousel{position:relative}
.carousel__track{display:flex;gap:1.25rem;overflow-x:auto;scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;
  align-items:stretch;padding:6px;margin:-6px;scroll-padding-inline:6px}
.carousel__track::-webkit-scrollbar{display:none}
/* snap-align START (not center): centering floats slide 0 right of the section gutter
   and reads as a misaligned first card — DS rule: first slide's left edge must sit on
   the same gutter line as the section heading. */
.carousel__slide{flex:0 0 86%;scroll-snap-align:start;min-width:0;margin:0}
.carousel__controls{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:1.1rem;margin-top:1.6rem;max-width:100%}
.carousel__arrow{width:46px;height:46px;border-radius:50%;border:1px solid var(--gold-line);
  background:transparent;color:var(--gold);font-size:1.5rem;line-height:1;display:grid;place-items:center;
  transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}
.carousel__arrow:hover{background:var(--gold);color:var(--on-gold);border-color:var(--gold)}
.carousel__arrow:disabled{opacity:.3;cursor:default}
.carousel__arrow:disabled:hover{background:transparent;color:var(--gold);border-color:var(--gold-line)}
.carousel__dots{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;justify-content:center;min-width:0;max-width:100%}
.carousel__dot{width:24px;height:24px;min-width:24px;border:0;background:transparent;padding:0;cursor:pointer;
  display:grid;place-items:center}
.carousel__dot::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--border-strong);
  transition:width var(--dur) var(--ease),background var(--dur) var(--ease)}
.carousel__dot.is-active::before{width:24px;border-radius:99px;background:var(--gold)}
@media(min-width:600px){.carousel__slide{flex-basis:calc((100% - 1.25rem)/2)}}
@media(min-width:1024px){.carousel__slide{flex-basis:calc((100% - 2.5rem)/3)}}
/* Desktop click-drag: hold the mouse on the track and drag to scroll (touch already
   scrolls natively). JS adds .is-grabbing while a drag is in progress — snap is disabled
   so the cursor leads, and the carousel settles to the nearest card on release. */
@media(hover:hover) and (pointer:fine){
  .js .carousel__track{cursor:grab}
  .js .carousel__track.is-grabbing{cursor:grabbing}
}
.carousel__track.is-grabbing{scroll-snap-type:none;-webkit-user-select:none;user-select:none}

/* ---------- work gallery ---------- */
.gallery{display:grid;gap:.85rem;grid-auto-flow:column;grid-auto-columns:78%;grid-template-rows:repeat(2,150px);
  overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gutter);
  scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;margin-inline:calc(var(--gutter)*-1);
  padding-inline:var(--gutter)}
.gallery::-webkit-scrollbar{display:none}
.tile{position:relative;border-radius:var(--r-lg);overflow:hidden;scroll-snap-align:start;
  border:1px solid var(--border);padding:0;display:block;grid-row:span 1}
.tile img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.tile::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(0,0,0,.6));
  opacity:.85;transition:opacity var(--dur) var(--ease)}
.tile:hover img,.tile:focus-visible img{transform:scale(1.05)}
.tile:hover{border-color:var(--gold-line)}
.tile__cap{position:absolute;left:.9rem;bottom:.8rem;z-index:2;color:var(--white);font-size:.85rem;
  font-weight:500;letter-spacing:.01em;text-shadow:0 1px 6px rgba(0,0,0,.8)}
.tile--feature{grid-row:span 2}

/* ---------- FAQ ---------- */
.faq__wrap{max-width:var(--measure-faq)}
.faq__list{display:grid}
.faq-item{border-top:1px solid var(--border)}
.faq-item:last-of-type{border-bottom:1px solid var(--border)}
.faq-item summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:1.15rem .25rem;cursor:pointer;font-family:var(--serif);font-size:1.18rem;color:var(--white);
  transition:color var(--dur-fast) var(--ease)}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary:hover{color:var(--gold-hi)}
.faq-item__icon{position:relative;width:22px;height:22px;flex:none}
.faq-item__icon::before,.faq-item__icon::after{content:"";position:absolute;background:var(--gold);
  border-radius:2px;transition:transform var(--dur) var(--ease),opacity var(--dur) var(--ease)}
.faq-item__icon::before{top:50%;left:0;right:0;height:2px;transform:translateY(-50%)}
.faq-item__icon::after{left:50%;top:0;bottom:0;width:2px;transform:translateX(-50%)}
.faq-item[open] .faq-item__icon::after{transform:translateX(-50%) rotate(90deg);opacity:0}
.faq-item__a{padding:0 .25rem 1.3rem;color:var(--silver);font-size:.98rem;line-height:1.7;max-width:62ch;
  border-left:2px solid var(--gold-line);padding-left:1rem;margin-bottom:.2rem}
.faq__cta{display:flex;flex-direction:column;align-items:center;gap:1rem;text-align:center;margin-top:2.5rem}
.faq__cta p{color:var(--muted)}

/* ---------- quote form ---------- */
.quote__grid{display:grid;gap:clamp(2.5rem,2rem + 3vw,4rem)}
.quote__pitch{display:grid;gap:1.1rem;align-content:start}
.quote__points{display:grid;gap:.7rem;margin-top:.3rem}
.quote__points li{display:flex;align-items:center;gap:.65rem;color:var(--silver);font-size:.98rem}
.quote__points .icon{width:1.3rem;height:1.3rem}
.quote__call{display:inline-flex;align-items:center;gap:.8rem;margin-top:.6rem;padding:.9rem 1.2rem;
  border:1px solid var(--gold-line);border-radius:var(--r-md);background:var(--gold-soft);width:fit-content}
.quote__call:hover{border-color:var(--gold)}
.quote__call .icon{width:1.6rem;height:1.6rem}
.quote__call-k{display:block;font-size:.78rem;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}
.quote__call strong{font-family:var(--serif);font-size:1.4rem;color:var(--white)}

.form-card{background:var(--card);border:1px solid var(--border-strong);border-top:3px solid var(--gold);
  border-radius:var(--r-lg);box-shadow:var(--sh-lg);padding:clamp(1.5rem,1.1rem + 1.6vw,2.25rem);
  display:grid;gap:.85rem;max-width:var(--measure-form);width:100%}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.field-row{display:grid;gap:.35rem}
.field-row label{font-size:.82rem;font-weight:600;letter-spacing:.03em;color:var(--silver);text-transform:uppercase}
.field-row .req{color:var(--gold)}
.field-row .opt{color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0}
.field{width:100%;min-height:50px;background:var(--raised);border:1px solid var(--border-strong);
  border-radius:var(--r-sm);padding:.7rem .9rem;color:var(--white);
  transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}
.field::placeholder{color:var(--muted)}
textarea.field{min-height:92px;resize:vertical;line-height:1.5}
select.field{appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%23d1a85d' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 1rem center;padding-right:2.4rem}
.field:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px var(--gold-soft)}
.field.is-invalid{border-color:#e0726a;box-shadow:0 0 0 3px rgba(224,114,106,.15)}
.consent-row{display:flex;gap:.7rem;align-items:flex-start;margin-top:.3rem}
.consent-row input{margin-top:.2rem;width:18px;height:18px;accent-color:var(--gold);flex:none}
.consent{font-size:.76rem;line-height:1.5;color:var(--muted)}
.consent a{color:var(--gold);text-decoration:underline}
.form-note{font-size:.8rem;color:var(--muted);line-height:1.5;margin-top:.2rem}
.form-note a{color:var(--gold);font-weight:600}
.form-status{font-size:.9rem;font-weight:600;min-height:1.2em}
.form-status.is-ok{color:var(--gold-hi)}
.form-status.is-err{color:#e8908a}

/* ---------- footer ---------- */
.footer{background:var(--base);padding-block:clamp(3rem,5vw,4.5rem) 2rem;border-top:1px solid var(--border)}
.footer__cta{text-align:center;display:grid;gap:.7rem;justify-items:center;margin-bottom:2.6rem}
.footer__cta-h{font-size:clamp(1.8rem,1.3rem + 2.2vw,2.7rem)}
.footer__cta p{color:var(--silver)}
.footer__cta-actions{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;margin-top:.6rem}
.footer__rule{height:1px;background:var(--hair);margin-bottom:2.4rem}
.footer__main{display:grid;gap:2rem;margin-bottom:2.2rem}
.lockup{display:grid;justify-items:start;gap:.5rem}
.lockup__mark{width:128px;height:auto}
.lockup__word{font-family:var(--serif);font-weight:600;font-size:1.35rem;letter-spacing:.08em;color:var(--white)}
.lockup__div{display:flex;align-items:center;gap:.6rem;width:100%;max-width:240px}
.lockup__div i{flex:1;height:1px;background:var(--gold-line)}
.lockup__diamond{width:8px;height:8px;background:var(--grad-gold);transform:rotate(45deg);flex:none}
.lockup__tag{font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold)}
.footer__nap h3,.footer__social h3{font-size:.8rem;letter-spacing:.18em;text-transform:uppercase;
  color:var(--muted);margin-bottom:.9rem;font-family:var(--sans);font-weight:600}
.footer__nap{display:grid;gap:.55rem;align-content:start}
.footer__nap a,.footer__nap p{display:flex;align-items:center;gap:.5rem;color:var(--silver);font-size:.95rem}
.footer__nap a:hover{color:var(--gold)}
.footer__hours{color:var(--muted)!important;font-size:.85rem!important}
.footer__icons{display:flex;gap:.7rem}
.footer__icons a{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;
  border:1px solid var(--border);color:var(--silver);
  transition:color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}
.footer__icons a:hover{color:var(--on-gold);background:var(--gold);border-color:var(--gold)}
.footer__icons .icon{width:1.25rem;height:1.25rem}
.footer__bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;
  padding-top:1.6rem;border-top:1px solid var(--border)}
.footer__bar p{color:var(--muted);font-size:.82rem}
.footer__legal{display:flex;gap:1.2rem}
.footer__legal a{color:var(--muted);font-size:.82rem}
.footer__legal a:hover{color:var(--gold)}
.footer__bp{display:inline-flex;align-items:center;gap:.4rem;color:var(--muted);font-size:.82rem;
  border:1px solid var(--border);border-radius:var(--r-pill);padding:.4rem .9rem}
.footer__bp .icon{width:.95rem;height:.95rem;color:var(--gold);transition:transform var(--dur) var(--ease)}
.footer__bp:hover{color:var(--silver);border-color:var(--gold-line)}
.footer__bp:hover .icon{transform:translateX(3px)}

/* ---------- floating call ---------- */
.float-call{position:fixed;right:max(1rem,env(safe-area-inset-right));
  bottom:max(1rem,env(safe-area-inset-bottom));z-index:var(--z-float);
  display:inline-flex;align-items:center;gap:.5rem;min-height:54px;padding:0 1.2rem;
  background:var(--grad-gold);color:var(--on-gold);border-radius:var(--r-pill);font-weight:700;
  box-shadow:var(--sh-gold),var(--sh-lg);opacity:0;transform:translateY(14px);pointer-events:none;
  transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease)}
.float-call.is-on{opacity:1;transform:none;pointer-events:auto}
.float-call .icon{width:1.25rem;height:1.25rem}

/* ---------- lightbox ---------- */
.lightbox{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;
  background:rgba(10,10,10,.94);padding:clamp(1rem,4vw,3rem);opacity:0;transition:opacity var(--dur) var(--ease)}
.lightbox.is-open{opacity:1}
.lightbox[hidden]{display:none}
.lightbox__img{max-width:100%;max-height:88vh;border-radius:var(--r-md);box-shadow:var(--sh-xl);
  border:1px solid var(--border)}
.lightbox__close{position:absolute;top:max(clamp(1rem,3vw,2rem),env(safe-area-inset-top));right:max(clamp(1rem,3vw,2rem),env(safe-area-inset-right));
  width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,.08);color:var(--white);
  display:grid;place-items:center}
.lightbox__close:hover{background:var(--gold);color:var(--on-gold)}
.lightbox__nav{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:50%;
  background:rgba(255,255,255,.08);color:var(--white);display:grid;place-items:center}
.lightbox__nav:hover{background:var(--gold);color:var(--on-gold)}
.lightbox__nav--prev{left:clamp(.5rem,2vw,1.5rem)}.lightbox__nav--prev .icon{transform:rotate(180deg)}
.lightbox__nav--next{right:clamp(.5rem,2vw,1.5rem)}

/* ---------- reveal motion (cinematic: mask/blur + stagger) ---------- */
.reveal{transition:opacity var(--dur-reveal) var(--ease-out),transform var(--dur-reveal) var(--ease-entrance),filter var(--dur-reveal) var(--ease-out)}
.js .reveal{opacity:0;transform:translateY(20px);filter:blur(6px);will-change:opacity,transform}
.reveal.is-in{opacity:1;transform:none;filter:none}
.reveal--clip{clip-path:inset(0 0 100% 0);transform:none;filter:none;
  transition:clip-path var(--dur-reveal) var(--ease-entrance),opacity var(--dur-reveal) var(--ease-out)}
.reveal--clip.is-in{clip-path:inset(0 0 0 0)}
[data-reveal-group] .reveal{transition-delay:0ms}
[data-reveal-group] .reveal:nth-child(2){transition-delay:var(--stagger)}
[data-reveal-group] .reveal:nth-child(3){transition-delay:calc(var(--stagger)*2)}
[data-reveal-group] .reveal:nth-child(4){transition-delay:calc(var(--stagger)*3)}
[data-reveal-group] .reveal:nth-child(5){transition-delay:calc(var(--stagger)*4)}

/* =========================================================================
   CINEMATIC LAYER (open-design: Lamborghini discipline + Bugatti monumental)
   CSP-safe (no CDN), reduced-motion gated, transform/opacity/filter only.
   ========================================================================= */
:root{
  --display:"Fraunces","Cormorant Garamond",Georgia,serif;
  --ease-entrance:cubic-bezier(.22,1,.36,1);
  --ease-emph:cubic-bezier(.2,0,0,1);
  --dur-micro:120ms; --dur-ui:200ms; --dur-reveal:640ms; --stagger:90ms;
  --fs-monogram:clamp(3.6rem,2rem + 9vw,8rem); --track-display:-.03em; --leading-display:1;
}
@media(max-width:640px){:root{--dur-reveal:480ms;--stagger:70ms;--fs-monogram:clamp(3rem,1.4rem + 10vw,5rem)}}

h1,h2,.ctaband__line{font-feature-settings:"liga" 1,"dlig" 1,"kern" 1}
.count,[data-countup],.reviews__score,.proj__stat>.gold-word,.footer__nap{
  font-variant-numeric:tabular-nums lining-nums;font-feature-settings:"tnum" 1,"lnum" 1}

/* one-shot brushed-gold sheen (logo on load, gold buttons on hover) */
.sheen{position:relative;overflow:hidden}
.sheen::after{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;
  background:linear-gradient(100deg,transparent 32%,rgba(255,255,255,.20) 50%,transparent 68%);
  transform:translateX(-130%)}
.sheen--once.is-lit::after{animation:sheenSweep 900ms var(--ease-out) 1 both}
.btn--gold.sheen::after{background:linear-gradient(100deg,transparent 35%,rgba(255,255,255,.28) 50%,transparent 65%)}
@media(hover:hover){.btn--gold.sheen:hover::after{animation:sheenSweep 700ms var(--ease-out) 1 both}}
@keyframes sheenSweep{to{transform:translateX(130%)}}

/* hero: monumental wordmark, Ken-Burns, spotlight, mask-wipe headline, scroll cue */
.hero__inner{position:relative}
.hero__monogram{position:absolute;top:clamp(-8px,-2vh,0px);left:0;z-index:0;
  font-family:var(--display);font-weight:500;font-size:var(--fs-monogram);line-height:var(--leading-display);
  letter-spacing:var(--track-display);text-transform:uppercase;color:rgba(255,255,255,.05);
  pointer-events:none;white-space:nowrap;opacity:0;transition:opacity 900ms var(--ease-out) 120ms}
.hero__monogram.is-in{opacity:1}
.dot-gold{color:var(--gold);-webkit-text-fill-color:var(--gold)}
.hero__kb{transform:scale(1);transform-origin:60% 40%;will-change:transform}
.hero.is-ready .hero__kb{animation:kenburns 26s ease-in-out 1 both}
@keyframes kenburns{0%{transform:scale(1) translate3d(0,0,0)}100%{transform:scale(1.06) translate3d(0,-1.2%,0)}}
.hero__spotlight{position:absolute;inset:0;pointer-events:none;z-index:1;opacity:0;
  transition:opacity var(--dur) var(--ease);
  background:radial-gradient(240px 240px at var(--mx,50%) var(--my,40%),rgba(209,168,93,.12),transparent 70%)}
.has-pointer .hero__spotlight.is-active{opacity:1}
.hero h1{position:relative;z-index:2}
.mask-line{display:block;overflow:hidden;padding-bottom:.3em;margin-bottom:-.18em}
.mask-line>span{display:block;transition:transform var(--dur-reveal) var(--ease-entrance)}
.js .mask-line>span{transform:translateY(150%)}
.mask-line.is-in>span{transform:translateY(0)}
.hero h1 .mask-line:nth-child(2).is-in>span{transition-delay:90ms}
.hero h1 .mask-line:nth-child(3).is-in>span{transition-delay:180ms}
/* Hero headline — brighter "real metal" gold with a slow LIGHT SHIMMER: a bright
   champagne highlight band drifts across the letters continuously. drop-shadow
   keeps it legible over the photo (the glyph fill is transparent via
   background-clip:text, so text-shadow can't be used). */
#hero-h1 .gold-word{
  background:linear-gradient(100deg,
    #d3a23f 0%, #ecc25a 14%, #f6d77f 27%,
    #fffae6 41%, #ffe086 50%, #fffae6 59%,
    #f6d77f 73%, #ecc25a 86%, #d3a23f 100%);
  background-size:210% auto;
  -webkit-background-clip:text;background-clip:text;
  color:transparent;-webkit-text-fill-color:transparent;
  filter:drop-shadow(0 2px 7px rgba(0,0,0,.55));
  animation:heroGoldShimmer 5.5s linear infinite;
}
@keyframes heroGoldShimmer{from{background-position:0% center}to{background-position:-220% center}}
.hero__h1-tail{display:block;font-size:.6em;color:var(--silver);margin-top:.4em;letter-spacing:0;line-height:1.32;
  transition:opacity var(--dur-reveal) var(--ease) 320ms}
.js .hero__h1-tail{opacity:0}
.hero__copy.is-in .hero__h1-tail,.hero h1 .mask-line:nth-child(3).is-in~.hero__h1-tail{opacity:1}
.scroll-cue{display:inline-flex;align-items:center;gap:.55rem;margin-top:1.5rem;
  font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}
.scroll-cue__dot{position:relative;width:20px;height:32px;border:1px solid var(--gold-line);border-radius:12px;flex:none}
.scroll-cue__dot::after{content:"";position:absolute;left:50%;top:6px;width:3px;height:7px;margin-left:-1.5px;
  border-radius:2px;background:var(--gold);animation:scrollNudge 1.8s var(--ease) infinite}
@keyframes scrollNudge{0%,100%{transform:translateY(0);opacity:1}50%{transform:translateY(8px);opacity:.4}}

/* gold-foil section seams + chiaroscuro page-turn */
.seam{display:block;height:1px;width:100%;margin-bottom:clamp(1.5rem,4vw,2.6rem);position:relative;overflow:visible;
  background:linear-gradient(90deg,transparent,var(--gold-line) 50%,transparent);opacity:0;
  transition:opacity var(--dur-reveal) var(--ease)}
.seam.is-in{opacity:1}
.seam::after{content:"";position:absolute;top:-1px;left:0;height:3px;width:22%;
  background:linear-gradient(90deg,transparent,var(--gold-hi),transparent);filter:blur(1px);transform:translateX(-120%)}
.seam.is-in::after{animation:seamSweep 1100ms var(--ease-out) 1 both}
@keyframes seamSweep{to{transform:translateX(560%)}}
.projects{background:linear-gradient(180deg,var(--base-solid),#171717)}

/* static film grain → black reads as honed stone (no animation = no motion liability) */
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:2;opacity:.035;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");
  background-size:120px 120px}

/* carousel: edge fades + active-card emphasis */
.carousel{position:relative;-webkit-mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent)}
.carousel__slide{transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease-entrance),border-color var(--dur) var(--ease)}
.carousel__slide:not(.is-current){opacity:.82}
.carousel__dot.is-active{box-shadow:0 0 0 4px var(--gold-soft)}
@media(min-width:1024px){.carousel{-webkit-mask-image:none;mask-image:none}.carousel__slide{opacity:1!important}}

/* lightbox cinematic zoom-in + tile hover */
.lightbox{backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.lightbox__img{transform:scale(.96);opacity:0;
  transition:transform var(--dur-ui) var(--ease-entrance),opacity var(--dur-ui) var(--ease)}
.lightbox.is-open .lightbox__img{transform:scale(1);opacity:1}
.tile__cap{transition:transform var(--dur) var(--ease-entrance),color var(--dur) var(--ease)}
@media(hover:hover){.tile:hover .tile__cap{color:var(--gold-hi)}.tile:hover{box-shadow:0 0 0 1px var(--gold-line),var(--sh-lg)}}

/* magnetic gold CTA + nav condense refinement */
.btn--magnetic{will-change:transform}
.nav .brand__mark{transition:width var(--dur) var(--ease-entrance)}
.nav.is-scrolled .brand__mark{width:38px}
.nav-sentinel{position:absolute;top:0;left:0;width:1px;height:1px}

/* reviews leave-a-review CTA */
.reviews__out{margin-top:2.2rem;display:flex;flex-direction:column;align-items:center;gap:.9rem;text-align:center}
.reviews__out-line{font-family:var(--serif);font-size:clamp(1.4rem,1.1rem + 1.4vw,2rem);color:var(--white)}
.reviews__out .btn--gold{min-width:230px}
.reviews__out-alt{color:var(--muted);font-size:.9rem}
.reviews__out-alt:hover{color:var(--gold)}

/* ============ RESPONSIVE ============ */
@media(min-width:600px){
  .reviews__grid{grid-template-columns:repeat(2,1fr)}
  .rev-card--wide{grid-column:1/-1}
  .projects__grid{grid-template-columns:repeat(2,1fr)}
  .services__grid{grid-template-columns:repeat(2,1fr)}
}
@media(min-width:768px){
  .gallery{grid-auto-flow:row;grid-template-columns:repeat(2,1fr);grid-auto-rows:200px;
    overflow:visible;margin-inline:0;padding-inline:0}
  .tile--feature{grid-column:span 2}
}
@media(min-width:880px){
  .services__grid{grid-template-columns:repeat(3,1fr)}
}
@media(min-width:1024px){
  .nav__links{display:flex}
  .nav__tel{display:inline-flex}
  .hero__copy{max-width:620px}
  .reviews__grid{grid-template-columns:repeat(3,1fr)}
  .rev-card--wide{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:1.5rem}
  .rev-card--wide .rev-card__body{flex:1 1 60%;min-width:280px}
  .projects__grid{grid-template-columns:1.3fr 1fr;grid-auto-rows:1fr}
  .proj--feature{grid-row:span 2;background:linear-gradient(180deg,#262626,#1c1c1c)}
  .gallery{grid-template-columns:repeat(4,1fr);grid-auto-rows:215px}
  .tile--feature{grid-column:span 2;grid-row:span 2}
  .quote__grid{grid-template-columns:1fr minmax(0,var(--measure-form));align-items:start}
  .form-card{margin-inline:0}
}
@media(min-width:1024px) and (min-height:560px){
  .hero{min-height:100vh;min-height:100dvh}
}

/* mobile button comfort */
@media(max-width:560px){
  .hero__cta .btn,.ctaband__actions .btn,.footer__cta-actions .btn{width:100%}
  .nav__word{font-size:1.05rem}
  .float-call__label{display:none}
  .float-call{min-width:54px;justify-content:center;padding:0;width:54px;height:54px;border-radius:50%}
}

/* ============ REDUCED MOTION ============ */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important}
  .reveal{opacity:1!important;transform:none!important;filter:none!important;clip-path:none!important}
  .reveal--clip{clip-path:none!important}
  .mask-line>span{transform:none!important}
  .hero__h1-tail,.hero__monogram{opacity:1!important}
  .hero__kb{animation:none!important;transform:none!important}
  .hero__spotlight{display:none!important}
  [data-parallax]{transform:none!important}
  .sheen::after,.seam::after,.scroll-cue__dot::after{animation:none!important}
  #hero-h1 .gold-word{animation:none!important}
  .btn--magnetic{transform:none!important}
  .float-call{transition:none}
}

/* ============ SUB-PAGES (legal · thank-you · 404) ============ */
.subnav{position:sticky;top:0;z-index:var(--z-nav);background:rgba(20,20,20,.9);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 1px 0 var(--gold-line)}
.subnav__inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:62px}
.prose-wrap{padding-block:clamp(2.5rem,6vw,5rem)}
.prose{max-width:760px;margin-inline:auto}
.prose h1{font-size:clamp(2.2rem,1.4rem + 3vw,3.4rem);margin-bottom:.4rem}
.prose .muted{color:var(--muted);margin-bottom:1.4rem}
.prose h2{font-size:1.45rem;color:var(--gold-hi);margin:2rem 0 .5rem}
.prose p{color:var(--silver);margin-bottom:1rem;line-height:1.75}
.prose strong{color:var(--white)}
.prose a{color:var(--gold);text-decoration:underline}
.center-screen{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:24px;text-align:center}
.panel{max-width:600px;width:100%;background:var(--card);border:1px solid var(--border-strong);
  border-top:3px solid var(--gold);border-radius:var(--r-xl);padding:clamp(28px,6vw,52px);box-shadow:var(--sh-xl)}
.panel .eyebrow{justify-content:center;margin-bottom:1rem}
.panel h1{font-size:clamp(2rem,1.4rem + 3vw,3rem);margin-bottom:.7rem}
.panel p{color:var(--silver);margin-bottom:1.6rem}
.panel__actions{display:flex;flex-wrap:wrap;gap:.7rem;justify-content:center}

/* ===================================================================
   APPROVED WIREFRAME REVISION (2026-06-16) — additive only.
   New classes + scoped overrides for the restructured page. The :root
   tokens are NOT touched; CSS for removed components is left as dead
   rules to minimise regression surface.
   =================================================================== */

/* --- Hero: bigger scoped type, white Google badge, trust line --- */
.hero h1{font-size:clamp(2.9rem,1.9rem + 5vw,5.4rem)}
.hero__lead{font-size:clamp(1.2rem,1.05rem + .7vw,1.6rem);color:var(--silver);max-width:36ch}
.hero__badge{justify-self:start;display:inline-flex;align-items:center;gap:.7rem;
  background:rgba(22,22,22,.82);border:1px solid var(--gold-line);border-radius:var(--r-md);
  padding:.6rem .95rem;box-shadow:var(--sh-md)}
.hero__eyebrow{justify-content:flex-start;text-align:left}
.hero__badge .stars{color:var(--gold)}
.hero__badge .stars .icon{width:1rem;height:1rem}
.hero__badge-text{display:flex;flex-direction:column;line-height:1.12;font-family:var(--sans)}
.hero__badge-text strong{color:var(--white);font-weight:700;font-size:.95rem;letter-spacing:.005em}
.hero__badge-sub{color:var(--silver);font-size:.78rem}
.hero__cta .btn--block{max-width:380px}
.hero__trustline{max-width:380px;text-align:center;color:var(--silver);font-size:.92rem;
  letter-spacing:.01em;margin-top:.1rem}

/* --- CTA bands: italic line + capped full-width button --- */
.ctaband__line{font-style:italic}
.ctaband__actions{width:100%}
.ctaband__actions .btn--block{max-width:420px;margin-inline:auto}

/* --- Reviews: divider + clean reviewer name (source label removed) --- */
.reviews__carousel{margin-top:.5rem}
.rev-card__divider{border:0;height:1px;width:100%;background:var(--border);margin:.1rem 0 .2rem}
.rev-card__name{color:var(--white);font-weight:600;font-size:1rem;font-family:var(--serif);letter-spacing:.01em}

/* --- Gallery: 2-row horizontal-scroll grid (reuses the carousel engine) --- */
.gallery-carousel .gal-col{display:flex;flex-direction:column;gap:.85rem;height:clamp(320px,84vw,440px)}
.gallery-carousel .tile{flex:1;min-height:0;height:auto;width:100%;display:block}
.gallery-carousel .tile::after{display:none}

/* --- Quote: centered single column --- */
.quote__wrap{max-width:600px;margin-inline:auto;display:grid;gap:clamp(1.6rem,1.1rem + 2vw,2.6rem)}
.quote__head{margin-inline:auto;max-width:36ch}
.quote__wrap .form-card{margin-inline:auto}

/* --- Footer: two-part (grey CTA card + black id bar) --- */
.btn--dark{background:var(--base-solid);color:var(--white);border:1px solid var(--border-strong)}
.btn--dark:hover{background:#0e0e0e;border-color:var(--gold-line)}
.btn--dark .icon{color:var(--gold)}
.footer__cta2{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);
  padding:clamp(1.5rem,1rem + 3vw,2.4rem);display:grid;justify-items:center;gap:1.1rem;
  text-align:center;margin-bottom:2rem}
.footer__cta2 .btn--block{max-width:420px;margin-inline:auto}
.footer__cta2 .footer__icons{justify-content:center}
.footer__social-label{color:var(--muted);font-size:.74rem;letter-spacing:.18em;text-transform:uppercase}
.footer__idbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;
  padding-block:1.5rem;border-top:1px solid var(--border);margin-bottom:.4rem}
.footer__id{display:flex;align-items:center;gap:.7rem}
.footer__logo-circle{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;flex:none;
  border:1px solid var(--gold-line);background:var(--raised)}
.footer__logo-circle svg{width:30px;height:auto}
.footer__id-word{font-family:var(--serif);font-weight:600;font-size:1.05rem;color:var(--white)}
.footer__id-contact{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;color:var(--muted);font-size:.85rem}
.footer__id-contact a{color:var(--silver)}
.footer__id-contact a:hover{color:var(--gold)}

/* --- Long eyebrow used as a section label (reviews/gallery): soften tracking so a sentence reads well --- */
.reviews .eyebrow--center,.work .eyebrow--center{flex-wrap:wrap;letter-spacing:.14em;
  max-width:34ch;margin-inline:auto;row-gap:.25rem;justify-content:center}

/* ===================================================================
   LEGIBILITY PASS (2026-06-17) — raise small text site-wide so the
   whole site is easier to read (not just one element). Tokens for
   body/lead/eyebrow/h3 were also bumped in :root.
   =================================================================== */
.field-row label{font-size:.95rem}
.consent{font-size:.9rem;line-height:1.6}
.form-note{font-size:1rem;line-height:1.55}
.form-status{font-size:1rem}
.footer__bar p,.footer__legal a,.footer__bp{font-size:.92rem}
.footer__social-label{font-size:.84rem}
.footer__id-contact{font-size:.96rem}
.footer__id-word{font-size:1.12rem}
.hero__badge-text strong{font-size:1.02rem}
.hero__badge-sub{font-size:.9rem}
.hero__trustline{font-size:1.04rem}
.rev-card__body{font-size:1.1rem;line-height:1.72}
.rev-card__name{font-size:1.1rem}
.faq-item__a{font-size:1.1rem;line-height:1.75}
.faq-item summary{font-size:clamp(1.22rem,1.05rem + .65vw,1.5rem)}
.sec-foot{font-size:1.02rem}
.prose p,.prose li{font-size:1.06rem;line-height:1.78}
.prose h2{font-size:1.55rem}
.btn{font-size:1.02rem}
.btn--sm{font-size:.98rem}

/* --- Reviews: Leave-a-Google-review CTA (re-added per request) --- */
.reviews__cta{margin-top:1.7rem;text-align:center}
.reviews__cta .link-gold{font-size:1.05rem;justify-content:center}

/* ===================================================================
   CONTACT FORM + FOOTER CALL CARD — premium redesign (2026-06-17)
   =================================================================== */
.btn--lg{min-height:58px;font-size:1.08rem;padding:1rem 1.9rem}

/* --- Premium quote form --- */
.form-card--lux{position:relative;overflow:hidden;border:1px solid var(--gold-line);
  border-radius:var(--r-xl);box-shadow:var(--sh-xl);gap:1.15rem;
  padding:clamp(2.4rem, 1.7rem + 3.6vw, 4rem);
  background:radial-gradient(120% 80% at 50% -10%,rgba(209,168,93,.10),transparent 60%),
    linear-gradient(180deg,#242424,#1b1b1b)}
.form-card--lux::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--grad-gold)}
.form-card__head{display:grid;justify-items:center;text-align:center;gap:.55rem;margin-bottom:.5rem}
.form-card__chip{display:inline-flex;align-items:center;gap:.55rem;background:var(--gold-soft);
  border:1px solid var(--gold-line);color:var(--gold-hi);border-radius:var(--r-pill);
  padding:.42rem .95rem;font-size:.9rem;font-weight:600}
.form-card__chip .stars{color:var(--gold)}
.form-card__chip .stars .icon{width:.95rem;height:.95rem}
.form-card__micro{color:var(--muted);font-size:.95rem;max-width:36ch}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.9rem}
.field2{position:relative}
.field2--full{grid-column:1 / -1}
.field2__input{width:100%;height:60px;background:var(--raised);border:1px solid var(--border-strong);
  border-radius:var(--r-md);color:var(--white);padding:1.5rem .95rem .45rem 3rem;font-size:1.02rem;
  appearance:none;-webkit-appearance:none;
  transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}
.field2__input::placeholder{color:transparent}
.field2__input:hover{border-color:var(--gold-line)}
.field2__input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px var(--gold-soft);background:#1f1f1f}
.field2__input.is-invalid{border-color:#e0795f;box-shadow:0 0 0 3px rgba(224,121,95,.18)}
.field2__icon{position:absolute;left:1rem;top:30px;transform:translateY(-50%);color:var(--gold);
  pointer-events:none;display:grid;place-items:center}
.field2__icon .icon{width:1.25rem;height:1.25rem}
.field2__label{position:absolute;left:3rem;top:30px;transform:translateY(-50%);color:var(--muted);
  font-size:1.02rem;pointer-events:none;transition:all var(--dur-fast) var(--ease)}
.field2__input:focus ~ .field2__label,
.field2__input:not(:placeholder-shown) ~ .field2__label,
.field2__label--up{top:13px;transform:none;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--gold-hi);font-weight:600}
.field2--select .field2__input{cursor:pointer;padding-right:2.8rem}
.field2--select .field2__input option{background:#1c1c1c;color:var(--white)}
.field2__chevron{position:absolute;right:1.1rem;top:30px;transform:translateY(-50%) rotate(90deg);
  width:1rem;height:1rem;color:var(--gold);pointer-events:none}
@media(max-width:520px){.form-grid{grid-template-columns:1fr}}

/* --- Footer "prefer to talk" call card --- */
.footer__cta2{position:relative;overflow:hidden;border:1px solid var(--gold-line);border-radius:var(--r-xl);
  box-shadow:var(--sh-lg);display:grid;justify-items:center;text-align:center;gap:.45rem;
  margin:0 auto 2.2rem;max-width:680px;
  padding:clamp(2rem,1.4rem + 3vw,3rem) clamp(1.4rem,1rem + 3vw,2.5rem);
  background:radial-gradient(110% 80% at 50% 0%,rgba(209,168,93,.12),transparent 55%),
    linear-gradient(180deg,#242424,#1b1b1b)}
.footer__cta2-badge{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;
  background:var(--gold-soft);border:1px solid var(--gold-line);color:var(--gold);margin-bottom:.6rem}
.footer__cta2-badge .icon{width:1.7rem;height:1.7rem}
.footer__cta2-eyebrow{display:inline-flex;align-items:center;gap:.5em;font-size:var(--fs-eyebrow);
  font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}
.footer__cta2-eyebrow .tick{width:24px;height:2px;background:var(--grad-gold);border-radius:2px;flex:none}
.footer__cta2-title{font-family:var(--serif);color:var(--white);font-size:clamp(1.6rem,1.2rem + 1.8vw,2.3rem)}
.footer__cta2-phone{display:inline-block;font-family:var(--serif);font-weight:600;line-height:1.1;
  font-size:clamp(1.75rem,1.35rem + 2.2vw,2.8rem);margin:.25rem 0 .15rem;
  background:var(--sheen);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}
.footer__cta2-phone:hover{filter:brightness(1.08)}
.footer__cta2-sub{color:var(--muted);font-size:.98rem}
.footer__social-row{display:grid;justify-items:center;gap:.7rem;margin-top:1.4rem;padding-top:1.4rem;
  border-top:1px solid var(--border);width:100%;max-width:340px}
.footer__social-row .footer__icons{justify-content:center}
.footer__cta2 .footer__icons a{border-color:var(--gold-line);color:var(--gold)}
.footer__cta2 .footer__icons a:hover{color:var(--on-gold);background:var(--gold);border-color:var(--gold)}

/* ===================================================================
   POLISH v2 (2026-06-17) — desktop presence, focal points, consistency
   =================================================================== */

/* Hero: gold accent becomes the focal beat; tighten eyebrow tracking */
.hero h1 .gold-word{font-weight:700;filter:drop-shadow(0 1px 4px rgba(0,0,0,.7))}
.eyebrow{letter-spacing:.18em}

/* Reviews: faint serif quote glyph fills the card; tighter controls; centered pill CTA */
.rev-card::before{content:"\201C";position:absolute;top:.1rem;right:1.1rem;font-family:var(--serif);
  font-size:4.2rem;line-height:1;color:var(--gold);opacity:.14;pointer-events:none}
.carousel__controls{margin-top:1rem}
.reviews__cta-btn .icon:first-child{color:var(--gold)}

/* Contact form: desktop 2-col (trust pitch + form); mobile stays single + centered */
.quote__layout{display:grid;gap:clamp(2rem,1.5rem + 2vw,3.25rem);max-width:560px;margin-inline:auto;justify-items:center}
.quote__pitch{display:grid;gap:1.25rem;align-content:start;width:100%}
.quote__head{display:grid;justify-items:center;text-align:center;gap:.85rem;margin-inline:auto;max-width:36ch}
.quote__points{display:none;gap:.85rem;margin-top:.2rem}
.quote__points li{display:flex;align-items:center;gap:.7rem;color:var(--silver);font-size:1.05rem}
.quote__points .icon{width:1.4rem;height:1.4rem;color:var(--gold);flex:none}
.quote__call2{display:none;align-items:center;gap:.85rem;width:fit-content;padding:.85rem 1.2rem;
  border:1px solid var(--gold-line);border-radius:var(--r-md);background:var(--gold-soft)}
.quote__call2:hover{border-color:var(--gold)}
.quote__call2 .icon{width:1.7rem;height:1.7rem;color:var(--gold);flex:none}
.quote__call2-k{display:block;font-size:.8rem;color:var(--muted);letter-spacing:.05em;text-transform:uppercase}
.quote__call2 strong{display:block;font-family:var(--serif);font-size:1.5rem;color:var(--white)}
@media(min-width:920px){
  .quote__layout{grid-template-columns:1fr 1.04fr;align-items:center;justify-items:stretch;max-width:1060px}
  .quote__head{justify-items:start;text-align:left;margin-inline:0;max-width:42ch}
  .quote__head .eyebrow--center{justify-content:flex-start}
  .quote__points{display:grid}
  .quote__call2{display:inline-flex}
  .form-card--lux{margin:0}
}

/* Consent: breathing room + bigger checkbox target */
.consent-row{margin-top:.6rem;gap:.7rem}
.consent-row input[type="checkbox"]{width:22px;height:22px;flex:none;accent-color:var(--gold);margin-top:.15rem}

/* Footer call card: more desktop presence + clean sub line + larger socials */
.footer__cta2{max-width:760px}
.footer__cta2-sub{max-width:40ch;margin-inline:auto}
.footer__cta2 .footer__icons a{width:48px;height:48px}
@media(min-width:760px){.footer__cta2{padding-inline:clamp(2.5rem,1rem + 6vw,4rem)}}

/* ===================================================================
   POLISH v3 (2026-06-17) — CTA boxes redesigned cinematic + roomy
   (4-agent design pass; every selector scoped to its box, no collisions)
   =================================================================== */

/* ---- CTA Band 1 — .ctaband--polished (cinematic "book now") ---- */
.ctaband--polished{background:var(--base);padding-block:clamp(76px,11vw,148px);min-height:clamp(420px,48vw,560px);display:flex;align-items:center}
.ctaband--polished .ctaband__media{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.ctaband--polished .ctaband__media::before{content:"";position:absolute;inset:-2%;background:url("assets/gallery-polished-floor.webp") center/cover no-repeat;transform:scale(1.06);transform-origin:50% 40%;will-change:transform;filter:brightness(1.22) contrast(1.03)}
.ctaband--polished .ctaband__media::after{content:"";position:absolute;inset:0;background:
  radial-gradient(120% 78% at 50% 46%, rgba(10,10,10,.10) 0%, rgba(12,12,12,.30) 46%, rgba(14,14,14,.56) 100%),
  linear-gradient(118deg, rgba(10,10,10,.40) 0%, rgba(12,12,12,.10) 42%, rgba(10,10,10,.38) 100%),
  linear-gradient(180deg, rgba(20,20,20,0) 60%, rgba(18,18,18,.34) 84%, var(--base-solid) 100%),
  linear-gradient(0deg, rgba(20,20,20,0) 62%, rgba(20,20,20,.5) 84%, var(--base-solid) 100%)}
.ctaband--polished .ctaband__glow{position:absolute;inset:0;z-index:1;pointer-events:none;background:
  radial-gradient(58% 42% at 50% -6%, rgba(230,201,142,.22) 0%, rgba(209,168,93,.10) 34%, transparent 64%),
  radial-gradient(40% 26% at 78% 8%, rgba(209,168,93,.10) 0%, transparent 70%);mix-blend-mode:screen}
.ctaband--polished .ctaband__inner{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;text-align:center;gap:clamp(1.4rem,1rem + 1.6vw,2.1rem);max-width:680px;padding-inline:clamp(8px,2vw,24px)}
.ctaband--polished .ctaband__eyebrow{display:inline-flex;align-items:center;gap:.6rem;font-family:var(--sans);font-size:var(--fs-eyebrow);letter-spacing:.18em;text-transform:uppercase;margin:0;font-weight:600;background:var(--sheen);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;filter:drop-shadow(0 1px 2px rgba(0,0,0,.85))}
.ctaband--polished .ctaband__eyebrow::before{content:"";width:30px;height:2px;border-radius:2px;background:var(--grad-gold);flex:none}
.ctaband--polished .ctaband__line{font-family:var(--serif);font-style:italic;font-size:clamp(1.7rem,1.15rem + 2.4vw,2.85rem);line-height:1.16;color:var(--white);max-width:20ch;margin:0 auto;text-shadow:0 2px 18px rgba(0,0,0,.85),0 1px 3px rgba(0,0,0,.7)}
.ctaband--polished .ctaband__line em{font-style:italic;background:var(--sheen);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;filter:drop-shadow(0 1px 3px rgba(0,0,0,.8))}
.ctaband--polished .ctaband__actions{display:flex;justify-content:center;width:100%;margin-top:.2rem}
.ctaband--polished .ctaband__actions .btn--block{width:100%;max-width:clamp(260px,72vw,360px);margin-inline:auto;box-shadow:var(--sh-gold),var(--sh-lg)}
.ctaband--polished .ctaband__note{margin:0;font-family:var(--sans);font-size:.92rem;letter-spacing:.02em;color:var(--silver)}
@media (prefers-reduced-motion: no-preference){.ctaband--polished .ctaband__media::before{animation:ctaband-polished-kb 26s ease-in-out infinite alternate}}
@keyframes ctaband-polished-kb{from{transform:scale(1.06) translate3d(0,0,0)}to{transform:scale(1.14) translate3d(-1.4%,-1.8%,0)}}
@media (max-width:480px){.ctaband--polished{padding-block:clamp(60px,16vw,96px);min-height:0}.ctaband--polished .ctaband__actions .btn--block{max-width:100%}}

/* ---- CTA Band 2 — .ctaband--quiet (framed plate, no photo) ---- */
.ctaband--quiet{padding-block:clamp(64px,4rem + 5vw,120px);background:
  radial-gradient(120% 90% at 50% -10%, rgba(209,168,93,.14), transparent 58%),
  radial-gradient(90% 70% at 50% 120%, rgba(209,168,93,.05), transparent 60%),
  linear-gradient(180deg,#202020 0%,#191919 52%,var(--base-solid) 100%)}
.ctaband--quiet::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(140% 120% at 80% 0%, rgba(255,255,255,.035), transparent 55%)}
.ctaband--quiet .ctaband__inner{position:relative;z-index:1;width:100%;max-width:600px;margin-inline:auto;gap:clamp(1.1rem,.8rem + 1vw,1.6rem);padding:clamp(2.4rem,1.6rem + 4vw,3.6rem) clamp(1.6rem,1rem + 4vw,3.2rem);border:1px solid var(--gold-line);border-radius:var(--r-xl);background:
  radial-gradient(115% 80% at 50% 0%, rgba(209,168,93,.10), transparent 55%),
  linear-gradient(180deg,rgba(42,42,42,.55),rgba(24,24,24,.55));box-shadow:var(--sh-lg), inset 0 1px 0 rgba(255,255,255,.04)}
.ctaband--quiet .ctaband__eyebrow{display:inline-flex;align-items:center;gap:.6rem;margin:0;font-family:var(--sans);font-weight:600;font-size:var(--fs-eyebrow);letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}
.ctaband--quiet .ctaband__eyebrow .tick{width:26px;height:2px;border-radius:2px;background:var(--grad-gold);flex:none}
.ctaband--quiet .ctaband__line{margin:0;font-family:var(--serif);font-size:clamp(1.65rem,1.25rem + 2vw,2.6rem);line-height:1.16;color:var(--white);max-width:22ch;font-style:italic}
.ctaband--quiet .ctaband__line .gold-em{background:var(--sheen);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;font-style:italic}
.ctaband--quiet .ctaband__sub{margin:0;color:var(--muted);font-size:.96rem;letter-spacing:.01em;max-width:34ch}
.ctaband--quiet .ctaband__rule{width:64px;height:1px;border:0;margin:.2rem 0;background:var(--grad-gold);opacity:.7}
.ctaband--quiet .ctaband__actions{margin-top:.3rem}
.ctaband--quiet .ctaband__actions .btn--block{width:100%;max-width:clamp(260px,70vw,360px);margin-inline:auto}
@media (max-width:480px){.ctaband--quiet .ctaband__line{font-size:clamp(1.5rem,1.2rem + 3vw,1.9rem)}}

/* ---- CTA Band 3 — .ctaband--residential (cinematic) ---- */
.ctaband--residential{background:#141414;background-image:none;padding-block:clamp(76px,11vw,150px);isolation:isolate}
.ctaband--residential__media{position:absolute;inset:-6%;z-index:0;background-image:url("assets/gallery-light-residential-floor.webp");background-size:cover;background-position:center 38%;transform:scale(1.04);will-change:transform;filter:brightness(1.18) contrast(1.02)}
.ctaband--residential__grade{position:absolute;inset:0;z-index:1;background:
  radial-gradient(120% 78% at 50% 50%, rgba(15,15,15,.12) 0%, rgba(15,15,15,.38) 58%, rgba(15,15,15,.62) 100%),
  linear-gradient(180deg, #141414 0%, rgba(20,20,20,.5) 12%, rgba(20,20,20,.14) 36%, rgba(20,20,20,.26) 66%, #141414 100%)}
.ctaband--residential__leak{position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(60% 42% at 50% -6%, rgba(209,168,93,.16) 0%, rgba(209,168,93,.05) 42%, transparent 70%);mix-blend-mode:screen}
.ctaband--residential__inner{position:relative;z-index:2;max-width:640px;padding-inline:clamp(8px,4vw,32px);gap:1.6rem}
.ctaband--residential__eyebrow{display:inline-flex;align-items:center;gap:.6rem;font-family:var(--sans);font-size:.8rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;background:var(--sheen);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;filter:drop-shadow(0 1px 2px rgba(0,0,0,.85))}
.ctaband--residential__tick{width:24px;height:2px;border-radius:2px;background:var(--grad-gold);flex:none}
.ctaband--residential__line{max-width:18ch;text-wrap:balance;text-shadow:0 2px 18px rgba(0,0,0,.85),0 1px 3px rgba(0,0,0,.7)}
.ctaband--residential__actions{margin-top:.4rem}
.ctaband--residential__actions .btn--block{width:clamp(260px,72vw,420px);margin-inline:auto}
@media (prefers-reduced-motion: no-preference){.ctaband--residential__media{animation:ctabandResidentialKB 26s ease-in-out infinite alternate}@keyframes ctabandResidentialKB{from{transform:scale(1.04) translate3d(0,0,0)}to{transform:scale(1.12) translate3d(0,-1.4%,0)}}}
@media (max-width:480px){.ctaband--residential__inner{padding-inline:8px}.ctaband--residential__line{max-width:22ch}}

/* ---- Footer CTA card — .footer__cta2--lux (cinematic) ---- */
.footer__cta2--lux{position:relative;isolation:isolate;overflow:hidden;display:block;text-align:center;border:1px solid var(--gold-line);border-radius:var(--r-xl);box-shadow:var(--sh-lg),inset 0 1px 0 rgba(255,255,255,.04);margin:0 auto clamp(2.4rem,1.8rem + 2.5vw,3.4rem);max-width:680px;padding:0;background:linear-gradient(180deg,#202020,#171717 62%,#141414)}
.footer__cta2--lux .footer__cta2-media{position:absolute;inset:0;z-index:0;background-image:url("assets/gallery-metallic-floor-wide.webp");background-size:cover;background-position:center 35%;opacity:.72;transform:scale(1.06);transform-origin:50% 40%;filter:brightness(1.22)}
.footer__cta2--lux .footer__cta2-scrim{position:absolute;inset:0;z-index:1;background:
  radial-gradient(120% 95% at 50% 12%,rgba(20,20,20,.06),rgba(20,20,20,.4) 60%,#141414 100%),
  linear-gradient(180deg,rgba(20,20,20,.34) 0%,rgba(20,20,20,.04) 40%,rgba(20,20,20,.4) 84%,#141414 100%)}
.footer__cta2--lux .footer__cta2-title{text-shadow:0 1px 10px rgba(0,0,0,.78),0 1px 3px rgba(0,0,0,.6)}
.footer__cta2--lux .footer__cta2-phone{filter:drop-shadow(0 1px 3px rgba(0,0,0,.85))}
.footer__cta2--lux .footer__cta2-sub{text-shadow:0 1px 6px rgba(0,0,0,.7)}
.footer__cta2--lux .footer__social-label{text-shadow:0 1px 5px rgba(0,0,0,.7)}
.footer__cta2--lux .footer__cta2-leak{position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(90% 60% at 50% -6%,rgba(209,168,93,.20),rgba(209,168,93,.07) 40%,transparent 66%);mix-blend-mode:screen}
.footer__cta2--lux .footer__cta2-inner{position:relative;z-index:2;display:grid;justify-items:center;gap:.85rem;width:100%;max-width:460px;margin-inline:auto;padding:clamp(4rem, 3rem + 4.5vw, 5.6rem) clamp(2.2rem, 1.5rem + 5vw, 3.6rem)}
.footer__cta2--lux .footer__cta2-badge{width:68px;height:68px;border-radius:50%;display:grid;place-items:center;margin:0 0 .9rem;background:radial-gradient(120% 120% at 50% 22%,rgba(209,168,93,.22),rgba(209,168,93,.08));border:1px solid var(--gold-line);color:var(--gold);box-shadow:0 8px 26px rgba(0,0,0,.4),inset 0 0 0 1px rgba(255,255,255,.04)}
.footer__cta2--lux .footer__cta2-badge .icon{width:1.55rem;height:1.55rem}
.footer__cta2--lux .footer__cta2-eyebrow{display:inline-flex;align-items:center;gap:.55em;margin:0;font-size:var(--fs-eyebrow);letter-spacing:.2em;text-transform:uppercase;font-weight:600;background:var(--sheen);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;filter:drop-shadow(0 1px 2px rgba(0,0,0,.85))}
.footer__cta2--lux .footer__cta2-eyebrow .tick{width:26px;height:2px;background:var(--grad-gold);border-radius:2px;flex:none}
.footer__cta2--lux .footer__cta2-title{margin:0;font-family:var(--serif);color:var(--white);font-size:clamp(1.55rem,1.15rem + 1.7vw,2.2rem);line-height:1.15}
.footer__cta2--lux .footer__cta2-phone{display:inline-block;margin:.15rem 0 .1rem;font-family:var(--serif);font-weight:600;font-size:clamp(1.95rem,1.4rem + 2.6vw,3rem);line-height:1.05;letter-spacing:.01em;background:var(--sheen);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;min-height:44px;transition:filter var(--dur-fast) var(--ease)}
.footer__cta2--lux .footer__cta2-phone:hover{filter:brightness(1.1)}
.footer__cta2--lux .footer__cta2-phone:focus-visible{outline:2px solid var(--gold);outline-offset:6px;border-radius:6px}
.footer__cta2--lux .footer__cta2-sub{margin:0;max-width:34ch;margin-inline:auto;color:var(--silver);font-size:.96rem;line-height:1.5}
.footer__cta2--lux .footer__cta2-hr{width:min(72%,260px);height:1px;margin:1.5rem auto .35rem;background:var(--hair)}
.footer__cta2--lux .footer__social-row{display:grid;justify-items:center;gap:.95rem;margin:0;padding:0;border:0;width:100%}
.footer__cta2--lux .footer__social-label{color:var(--muted);font-size:.76rem;letter-spacing:.2em;text-transform:uppercase}
.footer__cta2--lux .footer__icons{display:flex;justify-content:center;gap:.85rem}
.footer__cta2--lux .footer__icons a{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--gold-line);background:rgba(209,168,93,.06);color:var(--silver);transition:color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}
.footer__cta2--lux .footer__icons a:hover{color:var(--on-gold);background:var(--gold);border-color:var(--gold);transform:translateY(-2px)}
.footer__cta2--lux .footer__icons a:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.footer__cta2--lux .footer__icons .icon{width:1.3rem;height:1.3rem}
@media (prefers-reduced-motion: no-preference){.footer__cta2--lux .footer__cta2-media{animation:footerCta2KenBurns 30s var(--ease) infinite alternate}}
@keyframes footerCta2KenBurns{from{transform:scale(1.06) translate3d(0,0,0)}to{transform:scale(1.14) translate3d(0,-2.2%,0)}}
@media (max-width:380px){.footer__cta2--lux .footer__cta2-inner{padding-inline:1.6rem}.footer__cta2--lux .footer__cta2-sub{max-width:30ch}}

/* Carousels advance exactly one slide — snap-stop stops momentum from skipping past a slide */
.carousel__slide{scroll-snap-stop:always}

/* ===================================================================
   WIREFRAME FIDELITY PASS (2026-06-17) — restructure every section to
   the client's desktop + mobile wireframes while KEEPING the dark-luxury
   palette / type. Additive + scoped; :root untouched. This supersedes
   the cinematic full-bleed hero, photo CTA bands, 2-col form and footer
   photo card — their old rules go dead now that the markup dropped the
   .hero__media / .ctaband--polished|quiet|residential / .quote__layout /
   .footer__cta2--lux classes.
   =================================================================== */

/* ---- Brand: real horizontal logo (transparent) in nav + footer ---- */
.brand__logo{height:clamp(40px,4.6vw,50px);width:auto;display:block;
  transition:height var(--dur) var(--ease-entrance)}
.nav.is-scrolled .brand__logo{height:clamp(34px,4vw,42px)}
.footer__id-logo{height:46px;width:auto;display:block}
@media(max-width:560px){.brand__logo{height:38px}}

/* ---- Nav: desktop Google trust pill (mobile = logo + Quote only) ---- */
.nav__pill{display:none}
@media(min-width:1024px){
  .nav__pill{display:inline-flex;align-items:center;gap:.45rem;white-space:nowrap;
    border:1px solid var(--gold-line);border-radius:var(--r-pill);padding:.46rem .9rem;
    font-size:.86rem;font-weight:600;letter-spacing:.02em;color:var(--silver)}
  .nav__pill .icon{width:1rem;height:1rem;color:var(--gold)}
  .nav__pill:hover{border-color:var(--gold);color:var(--white)}
}

/* ---- Hero: copy + framed photo. Mobile stacks copy → photo → CTA;
        desktop splits copy (left) / photo (right). Full warranty headline. ---- */
.hero--split{min-height:0;display:block;overflow:visible;align-items:stretch;
  padding-top:clamp(104px,15vh,156px);padding-bottom:clamp(40px,7vw,84px)}
.hero--split .hero__inner{display:flex;flex-direction:column;gap:clamp(1.3rem,1rem + 1.6vw,2.1rem)}
.hero--split .hero__copy{max-width:none;display:grid;gap:1.05rem}
.hero--split .hero__eyebrow{align-self:start;display:inline-flex;width:auto;gap:.5em;
  border:1px solid var(--gold-line);border-radius:var(--r-pill);padding:.5rem 1rem;
  color:var(--gold);letter-spacing:.13em;background:var(--gold-soft)}
.hero--split .hero__copy h1{text-shadow:none}
.hero--split .hero__lead{max-width:46ch;font-size:clamp(1rem,.92rem + .42vw,1.24rem);line-height:1.5;color:var(--muted)}
.hero__figure{position:relative;margin:0;border-radius:var(--r-lg);overflow:hidden;
  border:1px solid var(--border);box-shadow:var(--sh-lg)}
.hero__photo{width:100%;height:100%;object-fit:cover;display:block;aspect-ratio:16/11;max-height:60vh}
.hero__figure .hero__badge{position:absolute;left:clamp(.7rem,4%,1.15rem);bottom:clamp(.7rem,4%,1.15rem);
  z-index:3;margin:0;justify-self:auto;background:rgba(18,18,18,.86);
  -webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px)}
.hero__actions{display:grid;gap:.7rem;justify-items:center}
.hero--split .hero__actions .btn--block{width:100%;max-width:420px}
.hero--split .hero__trustline{margin:0;text-align:center}
@media(min-width:1024px){
  .hero--split .hero__inner{display:grid;grid-template-columns:1.02fr .98fr;
    column-gap:clamp(2.4rem,4vw,4.5rem);row-gap:clamp(1.3rem,1.6vw,1.9rem);align-items:center}
  .hero--split .hero__copy{grid-column:1;grid-row:1;align-self:end}
  .hero--split .hero__actions{grid-column:1;grid-row:2;justify-items:start;align-self:start}
  .hero--split .hero__figure{grid-column:2;grid-row:1 / span 2;align-self:stretch;height:100%}
  .hero--split .hero__photo{aspect-ratio:auto;height:100%;max-height:none;min-height:clamp(430px,46vw,580px)}
  .hero--split .hero__actions .btn--block{width:auto;min-width:248px}
  .hero--split .hero__trustline{text-align:left}
}

/* ---- CTA strips: flat single line + button (replaces the cinematic bands) ---- */
.ctaband--flat{background:var(--raised);min-height:0;display:block;
  padding-block:clamp(2rem,1.4rem + 2.6vw,3.2rem)}
.ctaband--flat .ctaband__inner{display:flex;flex-direction:column;align-items:center;
  text-align:center;gap:1.15rem;max-width:none}
.ctaband--flat .ctaband__line{margin:0;font-family:var(--serif);font-style:italic;color:var(--white);
  font-size:clamp(1.4rem,1.1rem + 1.4vw,2.05rem);line-height:1.2;max-width:32ch}
.ctaband--flat .ctaband__line em{font-style:italic;background:var(--sheen);
  -webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}
.ctaband--flat .ctaband__actions{width:100%;justify-content:center}
.ctaband--flat .ctaband__actions .btn{width:100%;max-width:360px;margin-inline:auto}
@media(min-width:768px){
  .ctaband--flat .ctaband__inner{flex-direction:row;justify-content:space-between;text-align:left;gap:1.6rem}
  .ctaband--flat .ctaband__line{max-width:40ch}
  .ctaband--flat .ctaband__actions{width:auto}
  .ctaband--flat .ctaband__actions .btn{width:auto;max-width:none;margin:0;min-width:230px}
  .ctaband--flat--center .ctaband__inner{justify-content:center;gap:clamp(1.5rem,3vw,2.4rem)}
}

/* ---- Gallery: desktop static grid (4 across, 5th centers); mobile keeps the 2-row scroll ---- */
@media(min-width:1024px){
  .gallery-carousel{-webkit-mask-image:none;mask-image:none}
  .gallery-carousel .carousel__track{display:flex;flex-wrap:wrap;justify-content:center;gap:1rem;
    overflow:visible;scroll-snap-type:none;padding:0;margin:0}
  .gallery-carousel .gal-col{display:contents}
  .gallery-carousel .tile{flex:0 0 calc((100% - 3rem) / 4);width:auto;height:auto;
    aspect-ratio:4/3;min-height:0}
  .gallery-carousel .carousel__controls{display:none!important}
}

/* ---- Quote form: centered single column (pitch sidebar + "prefer to talk" removed) ---- */
.quote .quote__wrap{max-width:600px;margin-inline:auto;display:grid;justify-items:center;
  gap:clamp(1.6rem,1.1rem + 2vw,2.6rem)}
.quote__wrap .quote__head{display:grid;justify-items:center;text-align:center;gap:.85rem;
  margin:0 auto;max-width:42ch}
.quote__wrap .quote__head .eyebrow--center{justify-content:center}
.quote__wrap .form-card{margin-inline:auto;width:100%}

/* ---- Footer CTA: flat premium block (Call button + socials); photo card retired ---- */
.footer__cta2--flat{position:relative;overflow:hidden;display:grid;justify-items:center;text-align:center;
  gap:1.3rem;max-width:680px;margin:0 auto clamp(2rem,1.6rem + 2vw,3rem);
  padding:clamp(2.2rem,1.6rem + 3vw,3.2rem) clamp(1.6rem,1rem + 4vw,3rem);
  border:1px solid var(--gold-line);border-radius:var(--r-xl);box-shadow:var(--sh-lg);
  background:radial-gradient(110% 80% at 50% 0%,rgba(209,168,93,.10),transparent 55%),
    linear-gradient(180deg,#242424,#1b1b1b)}
.footer__cta2--flat::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--grad-gold)}
.footer__cta2--flat .btn--block{max-width:420px;margin-inline:auto}
.footer__cta2--flat .footer__social-row{display:grid;justify-items:center;gap:.8rem;width:100%;
  max-width:340px;margin:0;padding-top:1.3rem;border-top:1px solid var(--border)}
.footer__cta2--flat .footer__social-label{color:var(--muted);font-size:.84rem;
  letter-spacing:.18em;text-transform:uppercase}
.footer__cta2--flat .footer__icons{display:flex;justify-content:center;gap:.85rem}
.footer__cta2--flat .footer__icons a{width:48px;height:48px;border:1px solid var(--gold-line);color:var(--gold)}
.footer__cta2--flat .footer__icons a:hover{color:var(--on-gold);background:var(--gold);border-color:var(--gold)}

/* ---- Google "G" logo: NO css fill (keeps the 4 brand colours), just sizing ---- */
.g-logo{width:1.15em;height:1.15em;display:inline-block;vertical-align:middle;flex:none}

/* ---- Hero badge: G logo + (stars / label / area) column ---- */
.hero__badge-g{width:1.6rem;height:1.6rem}
.hero__badge .hero__badge-text{gap:.1rem}
.hero__badge .stars .icon{width:.92rem;height:.92rem}

/* ---- Trust banner: row of TRUE trust marks (reuses .trust strip; gold icons, hairline dividers) ---- */
.trust--banner{padding-block:clamp(1.5rem,1.1rem + 1.5vw,2.3rem)}
.trust--banner .trust__inner{gap:.7rem 1.5rem}
.trust__item{font-size:.98rem;color:var(--silver);font-weight:500}
.trust__item .icon{width:1.25rem;height:1.25rem;color:var(--gold)}
.trust__item strong{color:var(--white);font-weight:700}
.trust__item--google{gap:.5rem}
.trust__item--google .g-logo{width:1.35rem;height:1.35rem}
@media(max-width:640px){
  .trust--banner .trust__inner{column-gap:1rem;row-gap:.55rem}
  .trust__item:not(:last-child){padding-right:1rem}
  .trust__item{font-size:.9rem}
}

/* ---- Hero MOBILE: full-bleed background image with overlaid copy (phone reverts to the
        full-background hero per request; desktop ≥1024 keeps the copy + framed-photo split) ---- */
@media(max-width:1023px){
  .hero--split{position:relative;display:flex;align-items:center;overflow:hidden;
    /* fallback FIRST (vh), modern override LAST (svh) — so phones with a dynamic
       toolbar use the small viewport height and don't push the CTA below the fold */
    min-height:92vh;min-height:92svh;
    padding-top:clamp(108px,18vh,168px);padding-bottom:clamp(2.2rem,8vw,4rem)}
  .hero--split .hero__inner{position:static;display:flex;flex-direction:column;gap:1.05rem}
  .hero--split .hero__figure{position:absolute;inset:0;z-index:0;margin:0;border:0;border-radius:0;
    box-shadow:none;height:100%}
  .hero--split .hero__photo{height:100%;max-height:none;aspect-ratio:auto;object-fit:cover;object-position:center 60%}
  .hero--split .hero__figure::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
    background:linear-gradient(180deg,rgba(18,18,18,.66) 0%,rgba(18,18,18,.30) 30%,rgba(18,18,18,.40) 60%,rgba(20,20,20,.88) 90%,var(--base-solid) 100%),
      linear-gradient(90deg,rgba(18,18,18,.55),rgba(18,18,18,.05) 70%)}
  .hero--split .hero__figure .hero__badge{display:none}
  .hero--split .hero__copy,.hero--split .hero__actions{position:relative;z-index:2}
  .hero--split .hero__copy h1{text-shadow:0 2px 16px rgba(0,0,0,.85),0 1px 3px rgba(0,0,0,.6)}
  .hero--split .hero__copy h1 .gold-word{filter:drop-shadow(0 1px 5px rgba(0,0,0,.8))}
  .hero--split .hero__h1-tail{color:var(--silver);text-shadow:0 1px 8px rgba(0,0,0,.85)}
  .hero--split .hero__lead{color:var(--silver);text-shadow:0 1px 8px rgba(0,0,0,.85)}
  .hero--split .hero__eyebrow{background:rgba(18,18,18,.5);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
  .hero--split .hero__actions .btn--block{width:100%;max-width:none}
  .hero--split .hero__trustline{text-align:left;color:var(--silver);text-shadow:0 1px 6px rgba(0,0,0,.8)}
}

/* ===================================================================
   FINAL TWEAKS (2026-06-18)
   =================================================================== */
/* Lining figures on serif headings so "1" renders as a real numeral, not "I"
   (Cormorant Garamond defaults to old-style figures where the 1 looks like a capital I). */
h1, h2, h3, .hero h1, .hero__h1-tail, .ctaband__line {
  font-variant-numeric: lining-nums;
  font-feature-settings: "lnum" 1, "kern" 1, "liga" 1;
}
/* Google mark on each review card (sits at the end of the reviewer row) — 30% larger */
.rev-card__g{width:1.56rem;height:1.56rem;margin-left:auto;flex:none}
/* Thank-you page: branded logo above the panel */
.thankyou__logo{display:block;margin:0 auto 1.5rem;width:230px;max-width:72%;height:auto}
/* Google mark in the quote-form rating chip */
.form-card__chip-g{width:1.05rem;height:1.05rem;flex:none}

/* ===================================================================
   CINEMATIC REBUILD (2026-07-12) — full-bleed hero, pain/process/
   guarantee sections, gallery marquee, liquid-glass form, decorative
   display text + cursor-glow CTAs. Additive + scoped; :root untouched.
   All added motion is reduced-motion gated (see block at end).
   =================================================================== */

/* ---- Global touch-action (crisp taps, no iOS double-tap zoom) ---- */
a,button,summary,label,input,select,textarea,.carousel__arrow,.tile{touch-action:manipulation}

/* ---- Decorative oversized display text behind section headers ---- */
.bg-word{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:0;
  font-family:var(--display);font-weight:600;text-transform:uppercase;letter-spacing:.01em;line-height:1;
  color:rgba(255,255,255,.022);white-space:nowrap;pointer-events:none;user-select:none;
  font-size:clamp(6rem,26vw,20rem)}
.bg-word--pain{top:16%}
.bg-word--guar{top:auto;bottom:-2%;color:rgba(209,168,93,.03)}

/* ============ FULL-BLEED HERO ============ */
.hero--full{align-items:flex-end;overflow:hidden;
  /* fallback (vh) FIRST, modern (svh) LAST so phones use the small viewport height */
  min-height:86vh;min-height:86svh;
  padding-top:clamp(120px,20vh,180px);padding-bottom:clamp(2.6rem,7vw,5rem)}
@media(min-width:1024px) and (min-height:560px){
  .hero--full{min-height:100vh;min-height:100dvh;align-items:center}
}
.hero--full .hero__media{position:absolute;inset:0;z-index:0}
.hero--full .hero__media img,.hero--full .hero__img{width:100%;height:100%;object-fit:cover;object-position:center 62%}
/* LIGHT scrim: bottom-only (darkest single stop <=45%) + a soft left aid; legibility comes
   mostly from text-shadow so the photo stays vivid (never a dark blanket). */
.hero--full .hero__scrim{position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(180deg,transparent 40%,rgba(20,20,20,.12) 60%,rgba(20,20,20,.30) 82%,rgba(20,20,20,.45) 100%),
    linear-gradient(90deg,rgba(20,20,20,.34) 0%,rgba(20,20,20,.06) 55%,transparent 100%)}
.hero--full .hero__inner{position:relative;z-index:2;width:100%}
.hero--full .hero__copy{max-width:680px;display:grid;gap:clamp(1rem,.8rem + 1vw,1.5rem)}
.hero--full #hero-h1{font-size:clamp(2.15rem,1.5rem + 4vw,5rem);line-height:1.07;
  text-shadow:0 2px 22px rgba(0,0,0,.9),0 1px 3px rgba(0,0,0,.85)}
.hero--full .hero__eyebrow{align-self:start;display:inline-flex;width:auto;gap:.5em;text-align:left;
  border:1px solid var(--gold-line);border-radius:var(--r-pill);padding:.5rem 1rem;color:var(--gold);
  letter-spacing:.12em;background:rgba(18,18,18,.55);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
  text-shadow:0 1px 6px rgba(0,0,0,.7)}
.hero--full .hero__eyebrow::before{content:none}
.hero--full .hero__lead{max-width:52ch;color:var(--silver);
  font-size:clamp(1.1rem,1rem + .55vw,1.42rem);text-shadow:0 1px 10px rgba(0,0,0,.85)}
.hero--full .hero__cta{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:.3rem}
.hero--full .hero__cta .btn{min-width:220px}
.hero--full .btn--ghost{background:rgba(18,18,18,.5);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.hero--full .hero__badge{margin-top:.6rem;justify-self:start}
@media(max-width:560px){.hero--full .hero__cta .btn{width:100%;min-width:0}}

/* ============ PAIN / AGITATE ============ */
.pain{overflow:clip}
.pain .container,.guarantee .container{position:relative;z-index:1}
/* One-glance punch rows (owner standard: hooks, not paragraphs) */
.punch-list{max-width:54rem;margin:clamp(1.5rem,1rem + 2vw,2.5rem) auto 0;border-top:1px solid var(--border)}
.punch{display:flex;align-items:center;gap:clamp(1.1rem,.8rem + 1.6vw,1.9rem);
  padding:clamp(1.4rem,1rem + 2vw,2.3rem) .25rem;border-bottom:1px solid var(--border)}
.punch__icon{width:3rem;height:3rem;border-radius:var(--r-md);display:grid;place-items:center;flex-shrink:0;
  background:var(--gold-soft);border:1px solid var(--gold-line);color:var(--gold)}
.punch__icon .icon{width:1.5rem;height:1.5rem}
.punch p{color:var(--white);font-family:var(--display);font-weight:600;
  font-size:clamp(1.35rem,1rem + 1.9vw,2.1rem);line-height:1.24;letter-spacing:.005em}
.punch p em{font-style:normal;color:var(--gold)}
@media(max-width:600px){.punch__icon{width:2.6rem;height:2.6rem}.punch__icon .icon{width:1.3rem;height:1.3rem}}

/* ============ PROCESS — one-line steps ============ */
.process__steps{display:grid;gap:clamp(1rem,.8rem + 1.4vw,1.5rem);margin-top:clamp(1.5rem,1rem + 2vw,2.5rem);
  counter-reset:none;padding:0;list-style:none}
.process__steps--lines{display:flex;flex-direction:column;gap:0;max-width:50rem;
  margin-left:auto;margin-right:auto;border-top:1px solid var(--border)}
.process-line{display:flex;align-items:center;gap:clamp(1rem,.7rem + 1.5vw,1.7rem);
  padding:clamp(1.25rem,.9rem + 1.8vw,2rem) .25rem;border-bottom:1px solid var(--border)}
.process-line__num{font-family:var(--display);font-weight:600;font-size:clamp(2.1rem,1.7rem + 1.8vw,2.9rem);
  line-height:1;color:transparent;-webkit-text-stroke:1.4px var(--gold-line);letter-spacing:.01em;flex-shrink:0;
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1;min-width:2.4ch}
.process-line p{color:var(--white);font-family:var(--display);font-weight:600;
  font-size:clamp(1.25rem,.95rem + 1.6vw,1.85rem);line-height:1.26}
.process-line p em{font-style:normal;color:var(--gold)}
.process__cta{display:flex;justify-content:center;margin-top:clamp(1.6rem,1.1rem + 2vw,2.6rem)}
@media(min-width:760px){.process__steps{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1100px){.process__steps{grid-template-columns:repeat(4,1fr)}}

/* ============ GALLERY MARQUEE (pure-CSS ribbon; lightbox on primary set) ============ */
.marquee{position:relative;overflow:hidden;margin-top:clamp(1rem,.7rem + 1.5vw,1.8rem);
  padding-block:clamp(.4rem,1.5vw,.9rem);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}
.marquee__track{display:flex;width:max-content;animation:marqueeScroll 52s linear infinite;will-change:transform}
.marquee .tile{flex:0 0 auto;width:clamp(230px,64vw,340px);aspect-ratio:4/3;height:auto;grid-row:auto;
  margin-right:clamp(.7rem,1.6vw,1.1rem);border-radius:var(--r-lg)}
.marquee .tile img{width:100%;height:100%;object-fit:cover}
.marquee .tile.is-clone{cursor:default}
.marquee:hover .marquee__track,.marquee:focus-within .marquee__track{animation-play-state:paused}
@keyframes marqueeScroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.work__hint{text-align:center;color:var(--muted);font-size:.95rem;margin-top:clamp(1rem,2vw,1.6rem)}
/* ── Work rail: when JS is on, the pure-CSS marquee becomes a real horizontal scroll
   strip so visitors can grab it (mouse) or swipe it (touch). JS drives the gentle drift
   by nudging scrollLeft and wraps seamlessly using the duplicated clone tiles. Without JS
   it falls back to the CSS keyframe marquee above. ── */
.js .workrail{overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;
  scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}
.js .workrail::-webkit-scrollbar{display:none}
.js .workrail .marquee__track{animation:none;will-change:auto}
@media(hover:hover) and (pointer:fine){
  .js .workrail{cursor:grab}
  .js .workrail.is-dragging{cursor:grabbing}
}
.js .workrail.is-dragging{-webkit-user-select:none;user-select:none}

/* ============ GUARANTEE (hero-weight differentiator) ============ */
.guarantee{overflow:clip;
  background:radial-gradient(100% 60% at 50% 0%,rgba(209,168,93,.06),transparent 62%)}
.guarantee__inner{display:grid;gap:clamp(2rem,1.4rem + 3vw,3.5rem);justify-items:center;text-align:center}
.guarantee__seal{margin:0;width:clamp(150px,42vw,220px);aspect-ratio:1;border-radius:50%;overflow:hidden;
  border:1px solid var(--gold-line);box-shadow:var(--sh-lg),0 0 0 6px rgba(209,168,93,.06)}
.guarantee__seal img{width:100%;height:100%;object-fit:cover}
.guarantee__copy{display:grid;gap:1.05rem;justify-items:center;max-width:640px}
.guarantee__copy .eyebrow{justify-content:center}
.guarantee__copy h2{font-size:clamp(2rem,1.4rem + 2.8vw,3.2rem)}
.guarantee__tiles{display:grid;gap:.85rem;width:100%;text-align:left;margin-top:.4rem}
.guar-tile{display:flex;gap:1rem;align-items:flex-start;
  padding:clamp(1.15rem,.9rem + 1.1vw,1.5rem);border:1px solid var(--border);border-radius:var(--r-lg);
  background:var(--card);transition:border-color var(--dur) var(--ease)}
.guar-tile:hover{border-color:var(--gold-line)}
.guar-tile__icon{width:2.6rem;height:2.6rem;flex:none;border-radius:50%;display:grid;place-items:center;
  background:var(--grad-gold);border:0;color:var(--on-gold);
  box-shadow:0 4px 12px rgba(209,168,93,.3),inset 0 1px 0 rgba(255,255,255,.35)}
.guar-tile__icon .icon{width:1.35rem;height:1.35rem}
.guar-tile strong{display:block;color:var(--white);font-size:1.05rem;margin-bottom:.15rem}
.guar-tile span{color:var(--muted);font-size:.96rem;line-height:1.5}
@media(min-width:900px){
  .guarantee__inner{grid-template-columns:auto minmax(0,1fr);justify-items:start;text-align:left;align-items:center}
  .guarantee__seal{width:clamp(200px,22vw,280px)}
  .guarantee__copy{justify-items:start}
  .guarantee__copy .eyebrow{justify-content:flex-start}
}

/* ============ LIQUID-GLASS QUOTE FORM ============ */
.form-card--glass{
  background:linear-gradient(180deg,rgba(40,40,40,.55),rgba(22,22,22,.58));
  -webkit-backdrop-filter:blur(16px) saturate(1.12);backdrop-filter:blur(16px) saturate(1.12);
  border:1px solid var(--gold-line);
  box-shadow:var(--sh-xl),inset 0 1px 0 rgba(255,255,255,.10),inset 0 0 0 1px rgba(255,255,255,.02)}
/* keep the gold top border from .form-card--lux::before; solid fallback for in-app browsers */
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .form-card--glass{background:linear-gradient(180deg,#242424,#1b1b1b)}
}

/* ============ CURSOR-GLOW on gold CTAs (extends the magnetic buttons) ============ */
@media (hover:hover) and (pointer:fine){
  .btn--gold.btn--magnetic::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
    z-index:0;opacity:0;mix-blend-mode:screen;
    background:radial-gradient(120px 120px at var(--mx,50%) var(--my,50%),rgba(255,255,255,.42),transparent 60%);
    transition:opacity var(--dur) var(--ease)}
  .btn--gold.btn--magnetic:hover::before{opacity:1}
}

/* ============ REDUCED MOTION — kill every added animation ============ */
@media(prefers-reduced-motion:reduce){
  .marquee{overflow-x:auto;-webkit-mask-image:none;mask-image:none;
    scrollbar-width:none;-ms-overflow-style:none}
  .marquee::-webkit-scrollbar{display:none}
  .marquee__track{animation:none;will-change:auto}
  .marquee .tile.is-clone{display:none}
  .btn--gold.btn--magnetic::before{display:none}
  .bg-word{opacity:1}
}

/* ---- Sub-pages (thank-you / 404): cinematic emblem panel ---- */
.panel--seal{background:radial-gradient(120% 80% at 50% -10%,rgba(209,168,93,.12),transparent 60%),
  linear-gradient(180deg,#242424,#1b1b1b)}
.panel__emblem{display:block;margin:0 auto 1.3rem;width:96px;height:96px;border-radius:50%;
  object-fit:cover;border:1px solid var(--gold-line);box-shadow:0 0 0 6px rgba(209,168,93,.05)}
.panel__note{margin-top:1.4rem;margin-bottom:0;color:var(--muted);font-size:.9rem}

/* ── Footer brand finale: the skyline wordmark standing on fresh epoxy —
   gold horizon hairline + mirrored reflection clipped in a shallow "pool" ── */
.footer__idbar{flex-direction:column;align-items:center;gap:1.2rem;padding-block:2.6rem 1.2rem}
.footer__finale{position:relative;display:flex;flex-direction:column;align-items:center;width:100%}
.finale__glow{position:absolute;top:30%;left:50%;transform:translate(-50%,-50%);width:min(760px,94vw);height:240px;
  border-radius:50%;background:radial-gradient(50% 50% at 50% 50%,rgba(209,168,93,.16),transparent 70%);
  filter:blur(8px);pointer-events:none}
.finale__mark{position:relative;z-index:1;width:min(620px,86vw);height:auto;
  filter:drop-shadow(0 16px 38px rgba(0,0,0,.55))}
.finale__floorline{width:min(740px,94vw);height:1px;margin-top:clamp(.9rem,2.4vw,1.4rem);background:var(--hair)}
.finale__pool{display:flex;justify-content:center;width:100%;height:clamp(54px,11vw,104px);overflow:hidden}
.finale__reflection{width:min(620px,86vw);height:auto;align-self:flex-start;transform:scaleY(-1);
  opacity:.3;filter:blur(2px) saturate(1.2);pointer-events:none;user-select:none;
  -webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.85),transparent 75%);
          mask-image:linear-gradient(180deg,rgba(0,0,0,.85),transparent 75%)}

/* ── Google rating cover card (DS pattern: Storm Restoration, 2026-07-12) ── */
.rev-card--rating{align-items:center;justify-content:center;text-align:center;gap:.85rem;
  background:linear-gradient(var(--card),var(--card)) padding-box,
    linear-gradient(135deg,rgba(66,133,244,.55),rgba(234,67,53,.42) 33%,rgba(251,188,5,.55) 66%,rgba(52,168,83,.5)) border-box;
  border:1.5px solid transparent}
.rev-card--rating:hover{border-color:transparent}
.rating__g{width:44px;height:44px}
.rev-card--rating .stars .icon{width:1.15rem;height:1.15rem}
.rating__score{font-family:var(--serif);font-weight:600;font-size:clamp(3rem,2.4rem + 2vw,4rem);
  line-height:1;color:var(--white);letter-spacing:-.02em}
.rating__sub{color:var(--muted);font-size:.92rem;line-height:1.55;max-width:24ch;margin:0}

/* ── Theme A cinematic backdrop: freshly-poured epoxy floor under a near-black veil.
   Sections go slightly translucent so the swirl ghosts through; flip theme unaffected. ── */
:root:not([data-theme="flip"]){--base:rgba(17,17,17,.86);--raised:rgba(23,23,23,.87);background:#101010}
:root:not([data-theme="flip"]) body{background:transparent}
:root:not([data-theme="flip"]) body::before{content:"";position:fixed;left:0;right:0;top:0;height:128vh;
  z-index:-1;pointer-events:none;
  /* owner 2026-07-13 v3: CINEMATIC backdrop — fresh-poured black epoxy with molten gold
     veining (bg-epoxy-cinematic.webp), light veil (deliberately bold), and a parallax
     drift driven by --bgy from app.js so the floor moves as you scroll. */
  transform:translate3d(0,var(--bgy,0),0);will-change:transform;
  background:linear-gradient(180deg,rgba(10,10,10,.44) 0%,rgba(10,10,10,.34) 45%,rgba(10,10,10,.52) 100%),
    url("assets/bg-epoxy-cinematic.webp") center/cover no-repeat #101010}
/* Page-scoped backdrop override: the /garage-special flake promo uses a black+gold FLAKE floor
   texture instead of the metallic cinematic swirl. Only affects <body class="promo-flake">. */
:root:not([data-theme="flip"]) body.promo-flake::before{
  background:linear-gradient(180deg,rgba(8,8,8,.5) 0%,rgba(8,8,8,.4) 45%,rgba(8,8,8,.58) 100%),
    url("assets/bg-garage-flake.webp") center/cover no-repeat #0b0b0b}

/* ── Desktop wheel fix: mandatory x-snap rails latch diagonal wheel gestures and
   stall page scrolling while the cursor is over them. Mouse users get proximity
   snap + no forced stops; touch keeps mandatory for clean swipes. ── */
@media(pointer:fine){
  .carousel__track,.gallery{scroll-snap-type:x proximity}
  .carousel__slide{scroll-snap-stop:normal}
}

/* ═══ SEAMLESS SURFACE + COMPONENT ELEVATION (owner pass, 2026-07-13) ═══ */

/* 1 · One continuous background: no section carries its own tint anymore —
   the fixed epoxy backdrop is the page's single surface. Cards/panels/fields
   keep their own opaque surfaces. Kills the banding at section boundaries. */
.section--raised,.footer,.ctaband,.ctaband--flat,.ctaband--polished,.projects{background:transparent}

/* 3 · Trust banner → chip pills (was plain grey text on the open background) */
.trust--banner .trust__item{padding:.6rem 1.15rem;border:1px solid var(--gold-line);
  border-radius:var(--r-pill);background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 55%),var(--card);
  box-shadow:var(--sh-md);color:var(--silver)}
.trust--banner .trust__item:not(:last-child){padding-right:1.15rem;border-right:1px solid var(--gold-line)}

/* 4 · Pain punch-list → luxe glass cards (was bare hairline rows) */
.punch-list{max-width:none;border-top:0;display:grid;grid-template-columns:1fr;gap:1rem}
@media(min-width:900px){.punch-list{grid-template-columns:repeat(3,1fr);gap:1.3rem}}
.punch{flex-direction:column;align-items:flex-start;gap:1.1rem;
  padding:clamp(1.5rem,1.2rem + 1.2vw,2rem);border:1px solid var(--border);border-bottom:1px solid var(--border);
  border-radius:var(--r-lg);box-shadow:var(--sh-md),inset 0 1px 0 rgba(255,255,255,.05);
  background:linear-gradient(180deg,rgba(255,255,255,.035),transparent 42%),var(--card);
  position:relative;overflow:hidden;transition:transform var(--dur) var(--ease),border-color var(--dur) var(--ease)}
.punch::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--grad-gold);opacity:.55}
.punch:hover{transform:translateY(-4px);border-color:var(--gold-line)}
.punch__icon{width:3.4rem;height:3.4rem;border-radius:50%;
  box-shadow:0 0 0 5px var(--gold-soft),inset 0 1px 0 rgba(255,255,255,.08)}
@media(max-width:899px){.punch{flex-direction:row;align-items:center}}

/* 5 · Process → "The Pour": a molten-gold stream fills as you scroll;
   each stage is a teardrop node on the stream, ending in a pooled drop.
   (Owner: editorial 01–04 numerals felt generic for epoxy.) */
.process__steps--pour{position:relative;max-width:44rem;margin:clamp(2rem,1.4rem + 2vw,3rem) auto 0;
  display:flex;flex-direction:column;gap:clamp(1.5rem,1.1rem + 2vw,2.4rem);padding-left:0;list-style:none;
  --pour:100%}
.process__steps--pour::before{content:"";position:absolute;top:-.75rem;bottom:-2rem;left:26px;width:3px;
  border-radius:2px;background:rgba(209,168,93,.14)}
.process__steps--pour::after{content:"";position:absolute;top:-.75rem;left:26px;width:3px;border-radius:2px;
  height:var(--pour);max-height:calc(100% + 2.75rem);
  background:linear-gradient(180deg,#f0d9a8,#d1a85d 55%,#a87d38);
  box-shadow:0 0 14px rgba(209,168,93,.5);transition:height .3s linear}
.pour-step{position:relative;display:flex;gap:1.3rem;align-items:flex-start;margin:0;padding:0}
.pour-step__node{flex:none;width:54px;height:54px;margin-top:.35rem;z-index:1;
  border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--grad-gold);
  display:grid;place-items:center;
  box-shadow:0 6px 18px rgba(209,168,93,.35),inset 0 1px 0 rgba(255,255,255,.35)}
.pour-step__node .icon{transform:rotate(45deg);width:1.35rem;height:1.35rem;color:var(--on-gold)}
.pour-step__card{flex:1;min-width:0;border:1px solid var(--border);border-radius:var(--r-lg);
  padding:clamp(1.35rem,1.05rem + 1.2vw,1.8rem);
  background:linear-gradient(180deg,rgba(255,255,255,.035),transparent 42%),var(--card);
  box-shadow:var(--sh-md),inset 0 1px 0 rgba(255,255,255,.05);
  transition:transform var(--dur) var(--ease),border-color var(--dur) var(--ease)}
.pour-step:hover .pour-step__card{transform:translateY(-3px);border-color:var(--gold-line)}
.pour-step__stage{display:inline-block;font-family:var(--serif);font-style:italic;color:var(--gold);
  font-size:clamp(1.05rem,1rem + .3vw,1.25rem);letter-spacing:.02em;margin-bottom:.4rem}
.pour-step__card p{color:var(--white);font-family:var(--display);font-weight:600;
  font-size:clamp(1.15rem,.95rem + 1vw,1.55rem);line-height:1.3;margin:0}
.pour-step__card p em{font-style:normal;color:var(--gold)}

/* 6 · FAQ rows → cards (was bare border-top rows) */
.faq-item{border:1px solid var(--border);border-radius:var(--r-md);margin-bottom:.7rem;
  background:linear-gradient(180deg,rgba(255,255,255,.025),transparent 50%),var(--card);
  box-shadow:var(--sh-md);overflow:hidden;transition:border-color var(--dur) var(--ease)}
.faq-item:hover,.faq-item.is-open{border-color:var(--gold-line)}
.faq-item__q{padding-inline:1.15rem}
.faq-item__a{padding-inline:1.15rem}

/* 7 · Footer CTA card: lift the follow label + icons out of the murk */
.footer__cta2--lux .footer__social-label,.footer__cta2 .footer__social-label{color:var(--silver);letter-spacing:.2em}
.footer__cta2--lux .footer__icons a,.footer__cta2 .footer__icons a{color:var(--silver);border-color:var(--border-strong)}

/* ── Hero quick-quote card (2 fields, glass over the photo) ── */
.hero-form{margin-top:1.4rem;max-width:520px;padding:1.1rem;border-radius:var(--r-lg);
  background:rgba(20,20,20,.68);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  border:1px solid var(--gold-line);box-shadow:var(--sh-lg)}
.hero-form__row{display:flex;gap:.6rem;margin-bottom:.6rem}
@media(max-width:560px){.hero-form__row{flex-direction:column}}
.hero-form__field{flex:1;min-width:0;min-height:52px;padding:0 1rem;border-radius:var(--r-md);
  background:rgba(26,26,26,.92);border:1px solid var(--border-strong);color:var(--white);
  font:500 1rem var(--sans)}
.hero-form__field::placeholder{color:var(--muted)}
.hero-form__field:focus{outline:2px solid var(--gold);outline-offset:1px;border-color:var(--gold-line)}
.hero-form__field.is-invalid{border-color:#b3564d}
.hero-form__btn{width:100%;justify-content:center}
.hero-form__status{margin:.5rem 0 0;font-size:.9rem;color:var(--silver);min-height:1.2em}
.hero-form__status.is-err{color:#e8a9a1}
.hero-form__alt{margin:.55rem 0 0;font-size:.9rem;color:var(--muted);text-align:center}
.hero-form__alt a{color:var(--gold);font-weight:600}
/* 2-step (foot-in-the-door): step 2 reveals on CTA press */
.lead2__step[data-step="2"]{animation:lead2In .34s cubic-bezier(.22,.61,.36,1) both}
@keyframes lead2In{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.lead2__step[data-step="2"]{animation:none}}
.lead2__back{display:block;width:100%;margin:.5rem 0 0;padding:.35rem;background:none;border:0;
  color:var(--muted);font:inherit;font-size:.85rem;cursor:pointer;text-align:center;min-height:44px}
.lead2__back:hover{color:var(--gold)}

/* Hero H1 third line: confident tagline under the big statement (speed + risk reversal) */
.hero__h1-kicker{display:block;font-size:.42em;line-height:1.35;letter-spacing:.005em;
  color:var(--silver);font-weight:500;margin-top:.5em;max-width:22ch}

/* ===================================================================
   HERO HOOK REWORK (2026-07-13) — owner feedback: punchier hook, less
   text in the hero, stronger display type. H1 moves to Fraunces (already
   loaded), the lead paragraph is gone, the hero card now carries the FULL
   lead form, and the eyebrow pill sits below the form where the Google
   badge used to be. Additive + scoped.
   =================================================================== */
.hero--full .hero__copy{max-width:700px}
.hero--full #hero-h1{font-family:var(--display);font-weight:600;letter-spacing:-.018em;line-height:1.04;
  font-size:clamp(2.35rem,1.4rem + 4.3vw,4.6rem)}
.hero--full #hero-h1 .gold-word{font-style:italic;font-weight:500;
  filter:drop-shadow(0 2px 5px rgba(0,0,0,.75)) drop-shadow(0 10px 28px rgba(0,0,0,.5))}
/* 4th mask-line (the kicker) gets its own reveal delay (base rules cover 2 and 3) */
.hero h1 .mask-line:nth-child(4).is-in>span{transition-delay:270ms}
.hero--full .hero__h1-kicker{font-family:var(--sans);font-weight:600;font-size:.3em;
  letter-spacing:.02em;color:var(--white);max-width:none;margin-top:.55em;
  text-shadow:0 1px 10px rgba(0,0,0,.85)}
.hero-form__field--full{width:100%;margin-bottom:.6rem}
.hero-form__selectwrap{position:relative;margin-bottom:.6rem}
.hero-form__selectwrap .hero-form__field--full{margin-bottom:0}
.hero-form__select{appearance:none;-webkit-appearance:none;cursor:pointer;color:var(--white)}
.hero-form__select option{color:#141414;background:#fff}
.hero-form__chevron{position:absolute;right:1rem;top:50%;width:1rem;height:1rem;
  transform:translateY(-50%) rotate(90deg);pointer-events:none;color:var(--gold)}
.hero-form__consent{display:flex;gap:.55rem;align-items:flex-start;margin:.15rem 0 .75rem}
.hero-form__consent input{margin-top:.16rem;accent-color:var(--gold);flex:none;width:15px;height:15px}
.hero-form__consent .consent{font-size:.68rem;line-height:1.5;color:var(--muted)}
.hero-form__consent .consent a{color:var(--silver)}
.hero__eyebrow--below{margin-top:1.05rem}

/* ── Hero polish round 2 (owner 2026-07-13): Google pill above the title,
   headline gold matched to the CTA gradient (no dark shimmer phases),
   stronger left scrim for the new bath-floor desktop hero, and a real
   glass panel behind the hero form so the layout reads anchored. ── */
.hero__gpill{display:inline-flex;align-items:center;gap:.55rem;justify-self:start;
  border:1px solid var(--gold-line);border-radius:var(--r-pill);padding:.5rem 1.05rem;
  background:rgba(14,14,14,.55);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  text-decoration:none;color:var(--white)}
.hero__gpill .g-logo{width:1.15rem;height:1.15rem;flex:none}
.hero__gpill .stars{color:var(--gold);display:inline-flex;gap:.12rem}
.hero__gpill .stars .icon{width:.8rem;height:.8rem}
.hero__gpill strong{font-family:var(--sans);font-weight:600;font-size:.88rem;letter-spacing:.02em;white-space:nowrap}
.hero--full #hero-h1 .gold-word{background:linear-gradient(180deg,#f2dca9 0%,#e9cd94 55%,#dcb670 100%);
  background-size:auto;-webkit-background-clip:text;background-clip:text;animation:none;
  /* CRITICAL: the h1's text-shadow paints THROUGH transparent clipped glyphs and turns
     the gold muddy-bronze — shadow must come from drop-shadow (painted pixels) instead */
  text-shadow:none;
  filter:drop-shadow(0 2px 8px rgba(0,0,0,.55))}
.hero--full .hero__scrim{background:
  linear-gradient(180deg,transparent 38%,rgba(16,16,16,.18) 58%,rgba(16,16,16,.38) 82%,rgba(16,16,16,.55) 100%),
  linear-gradient(90deg,rgba(16,16,16,.62) 0%,rgba(16,16,16,.26) 46%,transparent 74%)}
.hero-form{background:rgba(13,13,13,.62);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border:1px solid var(--gold-line);box-shadow:0 24px 60px rgba(0,0,0,.45)}

/* ── UI/UX polish pass (ui-ux-pro-max audit, 2026-07-13): pressed-state
   physics on every CTA, hover lift on tappable cards, 12px legibility floor
   on the hero consent, inline invalid-clear. All motion reduced-motion gated. ── */
.btn:active{transform:translateY(1px) scale(.985);transition-duration:80ms}
@media(pointer:fine) and (prefers-reduced-motion:no-preference){
  .punch,.guar-tile,.rev-card,.faq-item{transition:transform 220ms var(--ease,cubic-bezier(.22,1,.36,1)),border-color 220ms ease,box-shadow 220ms ease}
  .punch:hover,.guar-tile:hover,.rev-card:hover{transform:translateY(-3px);border-color:var(--gold-line);box-shadow:0 14px 34px rgba(0,0,0,.35)}
}
@media(prefers-reduced-motion:reduce){.btn:active{transform:none}}
.hero-form__consent .consent{font-size:.75rem;color:var(--silver)}
.hero-form__field.is-invalid,.hero-form__select.is-invalid{border-color:#b3564d;outline:1px solid rgba(179,86,77,.55)}

/* ===================================================================
   CINEMATIC REDESIGN (owner, 2026-07-13) — full remake pass:
   Fraunces display type across all headings, split hero (hook left,
   glass quote panel right), proof chips, editorial work grid replacing
   the marquee, refined process/review details. Additive + scoped.
   =================================================================== */

/* ---- Type system: Fraunces owns display, Inter owns UI, Cormorant retires to quotes ---- */
h2{font-family:var(--display);font-weight:600;letter-spacing:-.014em;
  font-size:clamp(1.95rem,1.3rem + 2.6vw,3.4rem);line-height:1.06}
h2 .gold-word{font-style:italic;font-weight:500;text-shadow:none}
h3{font-family:var(--display);font-weight:600}
.sec-head .lead{margin-top:.65rem}
.sec-head--center{max-width:56rem;margin-inline:auto}

/* ---- Hero: split grid, hook left / quote panel right ---- */
.hero--full .hero__grid{display:grid;grid-template-columns:minmax(0,1fr);gap:2.1rem;align-items:center;width:100%}
@media(min-width:1024px){
  .hero--full .hero__grid{grid-template-columns:minmax(0,1.08fr) minmax(380px,460px);gap:clamp(2.2rem,4vw,4.6rem)}
}
.hero--full .hero__copy{max-width:640px}
.hero--full #hero-h1{font-size:clamp(2.35rem,1.35rem + 3.7vw,4.2rem)}
.hero__chips{list-style:none;display:flex;flex-wrap:wrap;gap:.55rem;margin:.4rem 0 0;padding:0}
.hero__chips li{display:inline-flex;align-items:center;gap:.45rem;font-family:var(--sans);font-weight:600;
  font-size:.86rem;letter-spacing:.03em;color:var(--white);background:rgba(14,14,14,.5);
  border:1px solid rgba(255,255,255,.13);border-radius:100px;padding:.5rem .95rem;
  -webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.hero__chips .icon{width:.95rem;height:.95rem;color:var(--gold);flex:none}
.hero__eyebrow--below{margin-top:1.15rem}

.hero__panel{background:rgba(12,12,12,.68);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  border:1px solid var(--gold-line);border-radius:20px;padding:clamp(1.25rem,2vw,1.75rem);
  box-shadow:0 30px 80px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.06)}
.hero__panel-head{margin-bottom:1.05rem}
.hero__panel-title{font-family:var(--display);font-weight:600;font-size:1.62rem;color:var(--white);line-height:1.12}
.hero__panel-title .gold-word{font-style:italic;font-weight:500;text-shadow:none}
.hero__panel-micro{font-size:.85rem;color:var(--silver);margin-top:.35rem}
.hero__panel .hero-form{background:none;border:0;box-shadow:none;padding:0;margin-top:0;max-width:none;
  -webkit-backdrop-filter:none;backdrop-filter:none}

/* ---- Work: editorial grid (replaces marquee) ---- */
.workgrid{display:grid;grid-template-columns:1fr;gap:1rem;margin-top:clamp(1.7rem,3vw,2.7rem)}
@media(min-width:720px){
  .workgrid{grid-template-columns:repeat(3,1fr)}
  .workcard--feature{grid-column:span 2;grid-row:span 2;aspect-ratio:auto}
}
.workcard{position:relative;overflow:hidden;border-radius:16px;border:1px solid rgba(255,255,255,.08);
  padding:0;background:#131313;cursor:pointer;aspect-ratio:4/3;display:block;width:100%;text-align:left}
.workcard img{width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.02);
  transition:transform 1.1s var(--ease,cubic-bezier(.22,1,.36,1))}
@media(prefers-reduced-motion:no-preference){.workcard:hover img,.workcard:focus-visible img{transform:scale(1.07)}}
.workcard__cap{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;gap:.18rem;
  padding:2.4rem 1.15rem 1rem;pointer-events:none;
  background:linear-gradient(0deg,rgba(10,10,10,.88) 0%,rgba(10,10,10,.42) 55%,transparent 100%)}
.workcard__cap em{font-style:normal;font-family:var(--sans);font-weight:700;font-size:.68rem;
  letter-spacing:.17em;text-transform:uppercase;color:var(--gold)}
.workcard__cap strong{font-family:var(--display);font-weight:500;font-size:1.14rem;color:var(--white);letter-spacing:.01em}
.workcard:focus-visible{outline:2px solid var(--gold);outline-offset:3px}

/* ---- Process + reviews refinements ---- */
.pour-step__stage{font-family:var(--display);font-size:1.08rem;letter-spacing:.01em}
.rev-card{position:relative;overflow:hidden}
.rev-card::before{content:"\201C";position:absolute;top:-10px;right:12px;font-family:var(--display);
  font-size:5.2rem;line-height:1;color:var(--gold);opacity:.13;pointer-events:none;font-style:italic}

/* ---- Mobile hero: panel stacks under the hook, chips wrap ---- */
@media(max-width:1023px){
  .hero--full{align-items:flex-start;padding-top:clamp(104px,16vh,150px)}
  .hero__panel{max-width:560px}
}

/* ── Round 3 (owner): gold-dot chips (checkmark-in-chip is an AI-site cliché — DS rule),
   work rail sizing for the auto-scroll marquee, slower loop for readable captions. ── */
.hero__chips li::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--grad-gold);flex:none}
.workrail .marquee__track{animation-duration:80s}
.workrail .workcard{width:clamp(280px,42vw,430px);aspect-ratio:4/3;border-radius:16px}
.workrail .workcard img{transform:none}
.workrail .workcard.is-clone{cursor:default}
@media(max-width:560px){.workrail .workcard{width:clamp(250px,72vw,340px)}}

/* ===================================================================
   ROUND 4 (owner, 2026-07-13) — kill the cheap "side stuff":
   • process teardrop rail  → premium numbered step cards
   • guarantee folded-icon circles → clean gold-rule tiles (no icons)
   • brighter, more legible work-gallery captions
   • restored + upgraded dark/gold background toggle pill
   =================================================================== */

/* ---- Process: numbered step cards (replaces .process__steps--pour) ---- */
.steps{list-style:none;margin:clamp(1.8rem,1.2rem + 2vw,2.8rem) 0 0;padding:0;
  display:grid;gap:1rem;grid-template-columns:1fr}
@media(min-width:680px){.steps{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1080px){.steps{grid-template-columns:repeat(4,1fr)}}
.step{position:relative;padding:1.5rem 1.35rem 1.6rem;border-radius:16px;
  background:linear-gradient(180deg,rgba(28,28,28,.72),rgba(18,18,18,.72));
  border:1px solid rgba(255,255,255,.09);overflow:hidden;
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.step::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--grad-gold);opacity:.9}
.step__num{font-family:var(--display);font-style:italic;font-weight:500;font-size:2.5rem;line-height:1;
  background:var(--grad-gold);-webkit-background-clip:text;background-clip:text;color:transparent;
  display:block;margin-bottom:.55rem}
.step__stage{display:block;font-family:var(--sans);font-weight:700;font-size:.7rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--silver);margin-bottom:.45rem}
.step__body{font-family:var(--display);font-weight:600;font-size:1.24rem;line-height:1.22;color:#fff}
.step__body em{font-style:normal;color:var(--gold-hi)}
@media(pointer:fine) and (prefers-reduced-motion:no-preference){
  .step{transition:transform 220ms var(--ease,cubic-bezier(.22,1,.36,1)),border-color 220ms ease}
  .step:hover{transform:translateY(-4px);border-color:var(--gold-line)}
}

/* ---- Guarantee tiles: no icons, gold left-rule + clean type ---- */
.guar-tile{display:block;gap:0;padding:1.15rem 1.3rem;position:relative;border-radius:14px;
  border:1px solid rgba(255,255,255,.09);background:rgba(20,20,20,.62);
  border-left:3px solid transparent;background-clip:padding-box}
.guar-tile::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:3px;background:var(--grad-gold)}
.guar-tile strong{display:block;font-family:var(--display);font-weight:600;color:#fff;font-size:1.12rem;margin-bottom:.2rem}
.guar-tile span{color:var(--silver);font-size:.95rem;line-height:1.5}

/* ---- Work captions: darker scrim + pure-white bold title for legibility ---- */
.workcard__cap{padding:3.1rem 1.2rem 1.15rem;
  background:linear-gradient(0deg,rgba(8,8,8,.96) 0%,rgba(8,8,8,.72) 42%,rgba(8,8,8,.2) 78%,transparent 100%)}
.workcard__cap em{color:var(--gold-hi);font-size:.7rem}
.workcard__cap strong{font-weight:700;font-size:1.24rem;color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.8)}

/* ===================================================================
   ROUND 5 (owner, 2026-07-13) — reviews rebuilt as a bulletproof
   auto-marquee (no scroll-snap = no alignment bug, ever), 5.0 becomes a
   centered header badge; FAQ gets real razzle-dazzle (gold accent, glow,
   animated +, smooth answer reveal). Additive + scoped.
   =================================================================== */

/* ---- Reviews: centered 5.0 Google badge header ---- */
.rating-badge{display:inline-flex;align-items:center;gap:.9rem;margin:1.1rem auto 0;
  padding:.7rem 1.3rem .7rem .9rem;border-radius:100px;
  background:rgba(14,14,14,.6);border:1px solid var(--gold-line);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 12px 34px rgba(0,0,0,.4)}
.rating-badge__g{width:2rem;height:2rem;flex:none}
.rating-badge__num{font-family:var(--display);font-weight:600;font-size:2rem;line-height:1;color:#fff}
.rating-badge__stack{display:flex;flex-direction:column;gap:.15rem;text-align:left}
.rating-badge__stack .stars{display:inline-flex;gap:.1rem;color:var(--gold)}
.rating-badge__stack .stars .icon{width:.85rem;height:.85rem}
.rating-badge__label{font-family:var(--sans);font-weight:600;font-size:.72rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--silver)}

/* ---- Reviews: auto-scroll marquee rail of testimonial tiles ---- */
.revrail{position:relative;overflow:hidden;margin-top:clamp(1.6rem,1.1rem + 1.8vw,2.6rem);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.revrail .marquee__track{display:flex;width:max-content;gap:1.1rem;
  animation:marqueeScroll 95s linear infinite;will-change:transform}
.revrail:hover .marquee__track,.revrail:focus-within .marquee__track{animation-play-state:paused}
.rev-tile{flex:0 0 auto;width:clamp(300px,80vw,380px);margin:0;display:flex;flex-direction:column;
  border-radius:18px;border:1px solid rgba(255,255,255,.09);
  background:linear-gradient(180deg,rgba(30,30,30,.82),rgba(20,20,20,.82));
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  padding:1.5rem 1.5rem 1.35rem;box-shadow:0 16px 40px rgba(0,0,0,.32)}
.rev-tile .rev-card__body{font-size:1rem;line-height:1.62;color:#eaeaea;
  display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}
.revrail__hint{text-align:center;color:var(--muted);font-size:.82rem;letter-spacing:.02em;margin-top:1.1rem}
@media(prefers-reduced-motion:reduce){
  .revrail{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .revrail .marquee__track{animation:none}
}

/* ---- FAQ: razzle-dazzle accordion ---- */
.faq__list{display:grid;gap:.85rem}
.faq-item{position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.09);border-radius:16px;
  margin-bottom:0;background:linear-gradient(180deg,rgba(26,26,26,.72),rgba(17,17,17,.72));
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  transition:border-color 240ms ease,box-shadow 240ms ease,background 240ms ease}
.faq-item::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:var(--grad-gold);transform:scaleY(0);transform-origin:top;transition:transform 300ms var(--ease,cubic-bezier(.22,1,.36,1))}
.faq-item[open]{border-color:var(--gold-line);box-shadow:0 14px 40px rgba(0,0,0,.4),0 0 0 1px rgba(209,168,93,.12)}
.faq-item[open]::before{transform:scaleY(1)}
@media(pointer:fine){.faq-item:hover{border-color:rgba(209,168,93,.32)}}
.faq-item summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:1.1rem;
  cursor:pointer;padding:1.15rem 1.35rem;font-family:var(--display);font-weight:600;color:#fff;
  font-size:clamp(1.08rem,1rem + .5vw,1.32rem);line-height:1.3}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item[open] summary{color:var(--gold-hi)}
.faq-item__icon{position:relative;width:26px;height:26px;flex:none;border-radius:50%;
  border:1px solid var(--gold-line);background:rgba(209,168,93,.08);transition:transform 320ms var(--ease,cubic-bezier(.22,1,.36,1)),background 240ms ease}
.faq-item__icon::before,.faq-item__icon::after{content:"";position:absolute;background:var(--gold);border-radius:2px}
.faq-item__icon::before{top:50%;left:7px;right:7px;height:2px;transform:translateY(-50%)}
.faq-item__icon::after{left:50%;top:7px;bottom:7px;width:2px;transform:translateX(-50%);transition:opacity 240ms ease,transform 320ms var(--ease,cubic-bezier(.22,1,.36,1))}
.faq-item[open] .faq-item__icon{transform:rotate(135deg);background:var(--grad-gold)}
.faq-item[open] .faq-item__icon::before,.faq-item[open] .faq-item__icon::after{background:#141414}
.faq-item[open] .faq-item__icon::after{opacity:1}
.faq-item__a{padding:0 1.35rem 1.3rem;color:var(--silver);font-size:1.02rem;line-height:1.72;max-width:64ch}
@media(prefers-reduced-motion:no-preference){
  .faq-item[open] .faq-item__a{animation:faqReveal 380ms var(--ease,cubic-bezier(.22,1,.36,1))}
}
@keyframes faqReveal{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}

/* ===================================================================
   REVIEWS: centered card + visible swipe hint (owner, 2026-07-13)
   =================================================================== */
/* Center every review card — including the first/last — by giving the end
   slides side margins equal to the peek, so card 1 rests centered (paused). */
.reviews__carousel .carousel__slide{scroll-snap-align:center}
.reviews__carousel .carousel__slide:first-child{margin-left:7%}
.reviews__carousel .carousel__slide:last-child{margin-right:7%}

/* Big, obvious "Swipe →" affordance directly under the cards */
.swipe-hint{display:flex;align-items:center;justify-content:center;gap:.6rem;margin-top:1.4rem;
  font-family:var(--sans);font-weight:700;font-size:.82rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--gold-hi)}
.swipe-hint__chevs{display:inline-flex;align-items:center}
.swipe-hint__chevs .icon{width:1.2rem;height:1.2rem;color:var(--gold);margin-left:-.35rem}
@media(prefers-reduced-motion:no-preference){
  .swipe-hint__chevs .icon{animation:swipeNudge 1.5s var(--ease,cubic-bezier(.22,1,.36,1)) infinite}
  .swipe-hint__chevs .icon:nth-child(2){animation-delay:.18s}
  .swipe-hint__chevs .icon:nth-child(3){animation-delay:.36s}
}
@keyframes swipeNudge{0%,60%,100%{transform:translateX(0);opacity:.35}30%{transform:translateX(6px);opacity:1}}
