/* ============================================================
   R WILKES PAINTING & DECORATING — site styles
   Conversion-led palette: sapphire / blue / sage / chalk / slate
   ============================================================ */


:root{
  --color-primary-blue:  #2E3A8C;
  --color-accent-sage:   #7FA99B;
  --color-bg-chalk:      #EAF0F6;
  --color-text-slate:    #5C6B73;
  --color-dark-sapphire: #1A2254;

  --ink:        var(--color-dark-sapphire);
  --brand:      var(--color-primary-blue);
  --brand-deep: var(--color-dark-sapphire);
  --peri:       var(--color-accent-sage);
  --peri-soft:  #B8D0C8;
  --mist:       var(--color-bg-chalk);
  --paper:      #F8FAFC;
  --white:      #FFFFFF;
  --line:       #D4DEE5;
  --tape:       var(--color-accent-sage);
  --render:     #EAF0F6;

  --font-display:'Anton', sans-serif;
  --font-body:'Karla', sans-serif;

  --radius: 14px;
  --shadow-sm: 0 2px 10px rgba(26,34,84,.07);
  --shadow-md: 0 10px 34px rgba(26,34,84,.13);
  --maxw: 1160px;
  --ease: cubic-bezier(.23,.8,.32,1);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:.01ms !important; transition-duration:.01ms !important; }
}

body{
  margin:0;
  font-family:var(--font-body);
  font-size:17px; line-height:1.65;
  color:var(--ink);
  background:var(--paper);
  overflow-x:hidden;
}

img,svg{ max-width:100%; display:block; }
a{ color:var(--brand); }
::selection{ background:var(--peri); color:#fff; }

h1,h2,h3{ font-family:var(--font-display); font-weight:400; line-height:1.04;
  text-transform:uppercase; letter-spacing:.015em; margin:0 0 .5em; color:var(--ink); }
h1{ font-size:clamp(2.6rem, 6.4vw, 4.6rem); }
h2{ font-size:clamp(1.9rem, 4vw, 2.9rem); }
h3{ font-size:clamp(1.15rem, 2vw, 1.45rem); letter-spacing:.03em; }
p{ margin:0 0 1em; }

.wrap{ max-width:var(--maxw); margin:0 auto; padding:0 24px; }
.section{ padding:96px 0; }
.section--tight{ padding:64px 0; }
.section--mist{ background:var(--mist); }
.section--ink{ background:var(--ink); color:var(--mist); }
.section--ink h2,.section--ink h3{ color:#fff; }

.eyebrow{
  display:inline-flex; align-items:center; gap:10px;
  font-size:.78rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase;
  color:var(--peri); margin-bottom:14px;
}
.eyebrow::before{ content:""; width:34px; height:4px; border-radius:2px; background:var(--peri); }
.section--ink .eyebrow{ color:var(--peri-soft); }

.lede{ font-size:1.16rem; max-width:60ch; color:var(--color-text-slate); }
.section--ink .lede{ color:var(--color-bg-chalk); }

/* ------- buttons ------- */
.btn{
  display:inline-flex; align-items:center; gap:10px;
  font-family:var(--font-body); font-weight:700; font-size:1rem;
  padding:15px 30px; border-radius:999px; border:2px solid transparent;
  cursor:pointer; text-decoration:none; line-height:1;
  transition:background-color .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease), box-shadow .2s var(--ease);
}
.btn svg{ width:18px; height:18px; }
.btn--primary{ background:var(--brand); color:#fff; }
.btn--primary:hover{ background:var(--brand-deep); box-shadow:var(--shadow-md); }
.btn--ghost{ background:transparent; color:var(--brand); border-color:var(--brand); }
.btn--ghost:hover{ background:var(--brand); color:#fff; }
.btn--light{ background:#fff; color:var(--brand); }
.btn--light:hover{ background:var(--mist); }
.btn--ghost-light{ background:transparent; color:#fff; border-color:rgba(255,255,255,.55); }
.btn--ghost-light:hover{ border-color:#fff; background:rgba(255,255,255,.1); }
.btn:focus-visible{ outline:3px solid var(--tape); outline-offset:3px; }
a:focus-visible{ outline:3px solid var(--tape); outline-offset:3px; border-radius:4px; }

/* ------- header ------- */
.site-header{
  position:fixed; inset:14px 16px auto; z-index:60;
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  max-width:calc(var(--maxw) + 48px); margin:0 auto;
  padding:10px 14px 10px 20px;
  background:rgba(248,250,252,.94); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
  border:1px solid var(--line); border-radius:999px; box-shadow:var(--shadow-sm);
  transition:box-shadow .25s var(--ease), background-color .25s var(--ease);
}
.site-header.is-scrolled{ box-shadow:var(--shadow-md); background:rgba(248,250,252,.98); }

/* ------- topbar: photo banner across the very top edge ------- */
.glowbar{
  display:none;
}

.brand{ display:flex; align-items:center; gap:11px; text-decoration:none; color:var(--ink); }
.brand__logo{ height:48px; width:auto; display:block; }
@media (max-width:600px){ .brand__logo{ height:40px; } }

.site-nav{ display:flex; align-items:center; gap:4px; }
.site-nav a{
  text-decoration:none; color:var(--ink); font-weight:600; font-size:.95rem;
  padding:9px 14px; border-radius:999px;
  transition:background-color .18s var(--ease), color .18s var(--ease);
}
.site-nav a:hover{ background:var(--mist); }
.site-nav a[aria-current="page"]{ background:var(--ink); color:#fff; }
.site-nav .btn{ padding:11px 22px; margin-left:6px; }
.site-nav a.btn--primary{ color:#fff; }
.site-nav a.btn--primary:hover{ color:#fff; background:var(--brand-deep); }

.nav-toggle{ display:none; background:none; border:0; cursor:pointer; padding:10px; border-radius:50%; }
.nav-toggle svg{ width:26px; height:26px; stroke:var(--ink); }
.mobile-menu__head,.mobile-menu__foot{ display:none; }

@media (max-width: 768px){
  .site-header{ z-index:100; }
  .nav-toggle{
    display:grid; place-items:center; width:46px; height:46px; padding:10px;
    transition:opacity .2s var(--ease);
  }
  .site-header.menu-open{ background:transparent; border-color:transparent; box-shadow:none; backdrop-filter:none; -webkit-backdrop-filter:none; }
  .site-header.menu-open > .brand,.site-header.menu-open > .nav-toggle{ opacity:0; pointer-events:none; }
  .site-nav{
    position:fixed; inset:0; z-index:1; width:100%; height:100vh; min-height:100svh;
    display:flex; flex-direction:column; align-items:stretch; gap:0;
    overflow-y:auto; overscroll-behavior:contain;
    background:var(--color-dark-sapphire); border:0; border-radius:0; box-shadow:none;
    padding:0 clamp(22px,7vw,52px) max(24px,env(safe-area-inset-bottom));
    opacity:0; visibility:hidden; transform:translateY(-100%); pointer-events:none;
    transition:
      transform 650ms cubic-bezier(.22,1,.36,1),
      opacity 400ms ease,
      visibility 0s linear 650ms;
    counter-reset:mobile-nav;
  }
  .site-nav.is-open{
    opacity:1; visibility:visible; transform:translateY(0); pointer-events:auto;
    transition:transform 650ms cubic-bezier(.22,1,.36,1),opacity 400ms ease;
  }
  .mobile-menu__head{
    min-height:94px; display:flex; align-items:center; justify-content:space-between;
    gap:20px; flex:none; padding-top:max(12px,env(safe-area-inset-top));
  }
  .mobile-menu__brand{
    display:inline-flex; align-items:center; padding:7px 12px; border-radius:999px;
    background:var(--color-bg-chalk);
  }
  .mobile-menu__brand img{ width:auto; height:40px; }
  .mobile-menu__close{
    width:48px; height:48px; flex:none; display:grid; place-items:center;
    border:1px solid rgba(255,255,255,.28); border-radius:50%;
    background:transparent; color:var(--color-bg-chalk); cursor:pointer;
  }
  .mobile-menu__close svg{ width:24px; height:24px; }
  .mobile-menu__close:hover{ background:rgba(255,255,255,.08); }
  .mobile-menu__close:focus-visible{ outline:3px solid var(--color-accent-sage); outline-offset:3px; }
  .site-nav > a{
    counter-increment:mobile-nav; width:100%; display:flex; align-items:center; gap:18px;
    padding:clamp(10px,2.1svh,18px) 2px; border-radius:0;
    border-bottom:1px solid rgba(255,255,255,.14);
    color:var(--color-bg-chalk); font-family:var(--font-display);
    font-size:clamp(2rem,8.5vw,4rem); font-weight:400; line-height:1;
    text-transform:uppercase; letter-spacing:.02em;
    opacity:0; transform:translateY(-20px);
  }
  .site-nav > a::before{
    content:"0" counter(mobile-nav); width:2.1em; flex:none;
    color:var(--color-accent-sage); font-family:var(--font-body);
    font-size:.32em; font-weight:700; letter-spacing:.12em;
  }
  .site-nav > a::after{ content:"↗"; margin-left:auto; color:var(--color-accent-sage); font-family:var(--font-body); font-size:.5em; }
  .site-nav > a:hover{ background:transparent; color:var(--color-accent-sage); }
  .site-nav > a[aria-current="page"]{ background:transparent; color:var(--color-accent-sage); }
  .site-nav > a.btn--primary{
    margin:12px 0 0; padding:15px 20px; justify-content:flex-start;
    border:0; border-radius:999px; background:var(--color-accent-sage); color:var(--color-dark-sapphire);
    font-size:clamp(1.35rem,6vw,2rem);
  }
  .site-nav > a.btn--primary::before,.site-nav > a.btn--primary::after{ color:var(--color-dark-sapphire); }
  .site-nav > a.btn--primary:hover{ background:#93B9AC; color:var(--color-dark-sapphire); }
  .site-nav.is-open > a{
    opacity:1; transform:translateY(0);
    transition:opacity 450ms ease,transform 550ms cubic-bezier(.22,1,.36,1);
  }
  .site-nav.is-open > a:nth-of-type(1){ transition-delay:140ms; }
  .site-nav.is-open > a:nth-of-type(2){ transition-delay:190ms; }
  .site-nav.is-open > a:nth-of-type(3){ transition-delay:240ms; }
  .site-nav.is-open > a:nth-of-type(4){ transition-delay:290ms; }
  .site-nav.is-open > a:nth-of-type(5){ transition-delay:340ms; }
  .site-nav.is-open > a:nth-of-type(6){ transition-delay:390ms; }
  .mobile-menu__foot{
    display:grid; gap:8px; margin-top:auto; padding:clamp(22px,4svh,38px) 2px 4px;
    color:var(--peri-soft); font-size:.9rem; line-height:1.45;
  }
  .mobile-menu__foot a{ color:#fff; font-weight:700; text-decoration:none; }
  .mobile-menu__trust{ color:var(--color-accent-sage); font-weight:700; }
}

@media (max-width:768px) and (max-height:720px){
  .mobile-menu__head{ min-height:76px; }
  .mobile-menu__brand img{ height:32px; }
  .mobile-menu__close{ width:44px; height:44px; }
  .site-nav > a{ padding:8px 2px; font-size:clamp(1.65rem,7.5vw,2.6rem); }
  .site-nav > a.btn--primary{ margin-top:8px; padding:12px 18px; }
  .mobile-menu__foot{ padding-top:16px; font-size:.82rem; }
}

@media (prefers-reduced-motion:reduce){
  .site-nav,.site-nav > a{
    transition-duration:.01ms !important; transition-delay:0ms !important;
    transform:none;
  }
}

/* ------- full-screen conversion footer ------- */
.site-footer{
  min-height:100vh; min-height:100svh; background:var(--ink); color:var(--color-bg-chalk);
  padding:clamp(42px,7vh,78px) 0 24px; display:flex; flex-direction:column;
  justify-content:space-between; overflow:hidden;
}
.site-footer a{ color:#fff; text-decoration:none; }
.site-footer a:hover{ text-decoration:underline; }
.footer-action{ text-align:center; padding:0 24px clamp(34px,6vh,64px); }
.footer-action__kicker{
  color:var(--peri-soft); font-size:.78rem; font-weight:700; letter-spacing:.2em;
  text-transform:uppercase; margin-bottom:clamp(18px,3vh,30px);
}
.footer-action__cta{
  --mx:0px; --my:0px; width:min(70vw,520px); aspect-ratio:2.25/1; margin:auto;
  display:grid; place-items:center; border-radius:999px; background:var(--color-accent-sage);
  color:var(--ink) !important; text-decoration:none !important; font-family:var(--font-display);
  font-size:clamp(2rem,5vw,4.8rem); line-height:.95; text-transform:uppercase;
  box-shadow:0 18px 55px rgba(0,0,0,.2); transform:translate3d(var(--mx),var(--my),0);
  transition:box-shadow .25s var(--ease), background-color .25s var(--ease);
  will-change:transform;
}
.footer-action__cta:hover{ background:#93B9AC; box-shadow:0 24px 70px rgba(0,0,0,.28); }
.email-marquee{
  border-block:1px solid rgba(255,255,255,.18); overflow:hidden; padding:12px 0;
  margin-bottom:clamp(28px,5vh,54px);
}
.email-marquee__track{ display:flex; width:max-content; animation:email-scroll 28s linear infinite; }
.email-marquee__group{ display:flex; align-items:center; flex:none; }
.email-marquee a{
  font-family:var(--font-display); font-size:clamp(2rem,5.5vw,5.2rem);
  line-height:1; text-transform:uppercase; white-space:nowrap; padding:0 .22em;
}
.email-marquee b{ color:var(--color-accent-sage); font-size:clamp(1.2rem,2.5vw,2.2rem); padding:0 .25em; }
@keyframes email-scroll{ to{ transform:translateX(-50%); } }
.footer-grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:40px; margin-bottom:clamp(28px,4vh,48px); }
.footer-grid h3{ color:#fff; font-size:.95rem; letter-spacing:.12em; margin-bottom:14px; }
.footer-grid ul{ list-style:none; margin:0; padding:0; display:grid; gap:9px; font-size:.95rem; }
.footer-brand p{ font-size:.95rem; max-width:36ch; color:var(--peri-soft); }
.footer-base{ border-top:1px solid rgba(255,255,255,.14); padding-top:26px;
  display:flex; flex-wrap:wrap; gap:14px; justify-content:space-between; font-size:.85rem; }
.footer-base button{ background:none; border:0; color:#fff; cursor:pointer; font:inherit; padding:0; }
.footer-base button:hover{ text-decoration:underline; }
@media (max-width:860px){ .footer-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:520px){
  .site-footer{ padding-top:34px; }
  .footer-action__cta{ width:min(88vw,390px); font-size:clamp(2rem,11vw,3.4rem); }
  .footer-grid{ grid-template-columns:1fr 1fr; gap:24px 20px; }
  .footer-brand{ grid-column:1/-1; }
  .footer-grid > div:last-child{ grid-column:1/-1; }
}

/* ------- hero (home) — echoes the business card split ------- */
.hero{
  position:relative; height:min(760px,calc(100svh - 66px)); min-height:590px;
  background:var(--ink); color:#fff; overflow:hidden;
}
.hero-illustration{
  position:absolute; z-index:1; left:63%; bottom:-5%;
  width:min(65vw,850px); height:auto; max-height:96%;
  object-fit:contain; object-position:center bottom; pointer-events:none;
  opacity:.25; animation:hero-float 6s ease-in-out infinite alternate;
  transform:translate3d(-50%,4px,0); will-change:transform;
}
@keyframes hero-float{
  from{ transform:translate3d(-50%,4px,0); }
  to{ transform:translate3d(-50%,-4px,0); }
}
.hero__body{
  position:relative; z-index:2; width:min(760px,calc(100% - 48px)); min-height:100%;
  margin-left:clamp(24px,7vw,120px);
  display:flex; flex-direction:column; justify-content:center; padding:56px 0 36px;
}
.hero__roller{
  display:none;
}
.hero h1{ color:#fff; position:relative; }
.hero h1 .thin{ color:var(--color-accent-sage); }
.hero .eyebrow{ color:#fff; margin-top:18px; }
.hero .eyebrow::before{ background:#fff; }
.hero .lede{ color:var(--color-bg-chalk); margin:14px 0 24px; }
.hero__cta{ display:flex; flex-wrap:wrap; gap:14px; }
.hero__contact{ margin-top:26px; display:flex; flex-wrap:wrap; gap:22px; font-weight:700; }
.hero__contact a{ color:#fff; text-decoration:none; display:inline-flex; gap:9px; align-items:center; }
.hero__contact a:hover{ text-decoration:underline; }
.hero__contact svg{ width:18px; height:18px; }
@media (max-width:880px){
  .hero{ height:calc(100svh - 62px); min-height:610px; }
  .hero-illustration{ left:60%; width:min(62vw,650px); }
  .hero__body{
    width:min(680px,calc(100% - 56px)); margin-left:28px;
    justify-content:flex-start; padding:72px 0 28px;
  }
  .hero h1{ font-size:clamp(2.35rem,7vw,3.7rem); }
  .hero__contact{ margin-top:20px; gap:9px 20px; font-size:.92rem; }
}
@media (max-width:640px){
  .hero{ height:calc(100svh - 62px); min-height:680px; }
  .hero-illustration{ left:56%; bottom:-3%; width:92%; max-height:82%; opacity:.18; }
  .hero__body{ width:calc(100% - 48px); min-height:100%; margin-left:24px; padding:86px 0 24px; }
  .hero h1{ font-size:clamp(2.5rem,11vw,4rem); }
}
@media (max-width:390px){
  .hero{ min-height:690px; }
  .hero__body{ width:calc(100% - 36px); margin-left:18px; }
  .hero-illustration{ width:100%; opacity:.16; }
  .hero__contact{ display:grid; gap:8px; }
}

/* trust strip */
.trust{ height:66px; background:var(--color-accent-sage); color:var(--ink); overflow:hidden; }
.trust .wrap{ max-width:none; width:max-content; display:flex; flex-wrap:nowrap; gap:0; padding:0; animation:trust-scroll 26s linear infinite; }
.trust__group{ height:66px; display:flex; align-items:center; flex:none; }
.trust span{ display:inline-flex; align-items:center; gap:10px; padding:0 30px; white-space:nowrap; font-weight:700; font-size:.95rem; letter-spacing:.02em; }
.trust svg{ width:20px; height:20px; flex:none; }
@keyframes trust-scroll{ to{ transform:translateX(-50%); } }

/* ------- cards / grids ------- */
.grid-3{ display:grid; grid-template-columns:repeat(3,1fr); gap:26px; }
.grid-2{ display:grid; grid-template-columns:repeat(2,1fr); gap:26px; }
@media (max-width:980px){ .grid-3{ grid-template-columns:1fr 1fr; } }
@media (max-width:640px){ .grid-3,.grid-2{ grid-template-columns:1fr; } }

.card{
  background:#fff; border:1px solid var(--line); border-radius:var(--radius);
  padding:30px; box-shadow:var(--shadow-sm);
  transition:box-shadow .25s var(--ease), border-color .25s var(--ease);
}
.card:hover{ box-shadow:var(--shadow-md); border-color:var(--peri-soft); }
.card .icon{
  width:52px; height:52px; border-radius:13px; background:var(--mist);
  display:grid; place-items:center; margin-bottom:18px;
}
.card .icon svg{ width:26px; height:26px; stroke:var(--brand); }
.card h3{ margin-bottom:8px; }
.card p{ color:var(--color-text-slate); font-size:.97rem; margin-bottom:0; }
a.card{ text-decoration:none; color:inherit; cursor:pointer; display:block; }
.card__more{ display:inline-flex; align-items:center; gap:7px; margin-top:16px; font-weight:700; color:var(--brand); font-size:.95rem; }
.card__more svg{ width:16px; height:16px; transition:transform .2s var(--ease); }
a.card:hover .card__more svg{ transform:translateX(4px); }

.section-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:24px; margin-bottom:48px; flex-wrap:wrap; }
.section-head .lede{ margin-bottom:0; }

/* ------- reviews ------- */
.review{ display:flex; flex-direction:column; gap:14px; }
.stars{ display:flex; gap:3px; }
.stars svg{ width:18px; height:18px; fill:var(--tape); }
.review blockquote{ margin:0; font-size:1.02rem; color:var(--color-text-slate); }
.review cite{ font-style:normal; font-weight:700; font-size:.92rem; color:var(--peri); }
.review cite span{ color:var(--color-text-slate); font-weight:600; }
.reviews-source{
  margin:30px 0 0; text-align:center; color:var(--color-text-slate);
  font-size:.95rem;
}
.reviews-source strong{ color:var(--ink); }
.reviews-source a{ font-weight:700; }

/* ------- CTA band ------- */
.cta-band{
  position:relative; isolation:isolate; overflow:hidden; min-height:310px;
  border-radius:clamp(24px,3vw,42px); padding:clamp(38px,5vw,62px);
  display:flex; flex-direction:column; align-items:flex-start; justify-content:center;
  gap:26px; color:#fff;
  background:
    linear-gradient(90deg,rgba(8,22,63,.88) 0%,rgba(8,22,63,.68) 54%,rgba(8,22,63,.18) 100%),
    url("../img/quote-cta-painted.png") 56% 42% / cover no-repeat,
    var(--color-dark-sapphire);
  box-shadow:0 20px 48px rgba(4,14,44,.2);
}
.cta-band::after{
  content:""; position:absolute; z-index:-1; right:clamp(-60px,-2vw,-12px); bottom:-54%;
  width:clamp(300px,34vw,480px); height:150%; pointer-events:none;
  background:url("../img/hero-painter.png") right top / contain no-repeat;
  opacity:.16;
}
.cta-band > *{ position:relative; z-index:1; }
.cta-band > div{ max-width:min(62%,650px); }
.cta-band h2{
  max-width:13ch; margin-bottom:12px; color:#fff;
  font-size:clamp(2.35rem,4.6vw,4.5rem); line-height:.94; letter-spacing:-.02em;
}
.cta-band p{
  max-width:44ch; margin:0; color:var(--color-bg-chalk);
  font-size:clamp(1rem,1.5vw,1.15rem);
}
.cta-band .btn--light{
  min-height:64px; padding-inline:30px;
  box-shadow:0 7px 0 var(--color-accent-sage),0 16px 32px rgba(4,14,44,.28);
}
@media (max-width:760px){
  .cta-band{ min-height:0; padding:38px 28px 42px; align-items:flex-start; }
  .cta-band::after{ right:-105px; bottom:-48%; width:360px; height:135%; opacity:.1; }
  .cta-band > div{ max-width:100%; }
  .cta-band h2{ max-width:10ch; }
  .cta-band .btn--light{ min-height:60px; }
}
@media (max-width:480px){
  .cta-band{ padding:34px 22px 38px; }
  .cta-band .btn--light{ width:100%; }
}

/* ------- premium homepage quote CTA ------- */
.quote-cta{
  --bg-x:0px; --bg-y:0px; --painter-x:0px; --painter-y:0px;
  position:relative; isolation:isolate; overflow:hidden;
  min-height:clamp(520px,47vw,640px); padding:clamp(38px,4.5vw,64px);
  border-radius:clamp(24px,3vw,46px); background:var(--color-dark-sapphire);
  display:flex; flex-direction:column; color:var(--color-bg-chalk);
  box-shadow:0 24px 60px rgba(4,14,44,.22);
}
.quote-cta.reveal{ transform:translateY(30px); transition-duration:.8s; }
.quote-cta.reveal.is-in{ transform:none; }
.quote-cta__background{
  position:absolute; z-index:0; inset:-12px; width:calc(100% + 24px); height:calc(100% + 24px);
  max-width:none; object-fit:cover; object-position:58% 40%; pointer-events:none; user-select:none;
  transform:translate3d(var(--bg-x),var(--bg-y),0); transition:transform .65s var(--ease); will-change:transform;
}
.quote-cta__overlay{
  position:absolute; z-index:1; inset:0; pointer-events:none;
  background:linear-gradient(90deg,rgba(8,22,63,.78) 0%,rgba(8,22,63,.52) 50%,rgba(8,22,63,.08) 100%);
}
.quote-cta__painter{
  position:absolute; z-index:2; right:clamp(-50px,-2vw,-12px); bottom:-43%;
  width:auto; height:135%; max-width:none; max-height:none;
  object-fit:contain; object-position:right top; opacity:.18;
  pointer-events:none; user-select:none;
  transform:translate3d(var(--painter-x),var(--painter-y),0); transition:transform .7s var(--ease); will-change:transform;
}
.quote-cta__content{ position:relative; z-index:3; max-width:min(58%,650px); }
.quote-cta__title{
  max-width:11ch; margin:0; color:var(--color-bg-chalk);
  font-size:clamp(3.2rem,6.4vw,6.2rem); line-height:.92; letter-spacing:-.025em;
}
.quote-cta__title span{ position:relative; display:inline-block; color:var(--color-accent-sage); }
.quote-cta__title span::after{
  content:""; position:absolute; left:0; right:0; bottom:-.09em; height:.055em;
  border-radius:999px; background:var(--color-accent-sage); transform:scaleX(0); transform-origin:left;
}
.quote-cta.is-in .quote-cta__title span::after{ animation:quote-swipe .7s .45s var(--ease) both; }
@keyframes quote-swipe{ to{ transform:scaleX(1); } }
.quote-cta__copy{
  max-width:32ch; margin:clamp(22px,3vw,34px) 0 0; color:var(--color-bg-chalk);
  font-size:clamp(1.05rem,1.7vw,1.28rem); line-height:1.55;
}
.quote-cta__copy strong{ color:var(--color-accent-sage); }
.quote-cta__button{
  position:relative; display:inline-flex; align-items:center; justify-content:center; gap:20px;
  min-height:82px; margin-top:clamp(28px,4vw,44px); padding:18px clamp(34px,4vw,64px);
  border-radius:999px; background:var(--color-bg-chalk); color:var(--color-dark-sapphire);
  font-weight:700; font-size:clamp(1.05rem,1.7vw,1.3rem); text-decoration:none;
  box-shadow:0 9px 0 var(--color-accent-sage),0 20px 40px rgba(4,14,44,.32);
  transition:transform .22s ease,box-shadow .22s ease;
}
.quote-cta__button:focus-visible{ outline:3px solid #fff; outline-offset:5px; }
.quote-cta__arrow{ color:var(--color-accent-sage); font-size:1.6em; transition:transform .22s ease; }
.quote-cta__marks{ position:absolute; left:22px; top:-13px; width:34px; height:24px; pointer-events:none; }
.quote-cta__marks i{
  position:absolute; left:0; width:18px; height:3px; border-radius:3px;
  background:var(--color-accent-sage); transform-origin:right;
}
.quote-cta__marks i:nth-child(1){ top:10px; transform:rotate(12deg); }
.quote-cta__marks i:nth-child(2){ top:3px; left:8px; transform:rotate(42deg); }
.quote-cta__marks i:nth-child(3){ top:15px; left:7px; transform:rotate(-18deg); }
.quote-cta__trust{
  position:relative; z-index:3; display:grid; grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(16px,3vw,36px); margin-top:auto; padding-top:clamp(28px,4vw,48px);
}
.quote-cta__trust-item{ display:flex; align-items:center; gap:12px; color:var(--color-bg-chalk); font-weight:700; line-height:1.25; }
.quote-cta__trust-item svg{ width:27px; height:27px; flex:none; color:var(--color-accent-sage); }
@media (hover:hover) and (pointer:fine){
  .quote-cta__button:hover{
    transform:translateY(-4px);
    box-shadow:0 13px 0 var(--color-accent-sage),0 25px 50px rgba(4,14,44,.4);
  }
  .quote-cta__button:hover .quote-cta__arrow{ transform:translateX(6px); }
  .quote-cta__button:hover .quote-cta__marks{ transform:scale(1.08) rotate(-2deg); }
}
.quote-cta__button:active{ transform:translateY(3px); box-shadow:0 5px 0 var(--color-accent-sage),0 12px 28px rgba(4,14,44,.3); }
@media (max-width:900px){
  .quote-cta__content{ max-width:68%; }
  .quote-cta__trust{ grid-template-columns:1fr 1fr; }
  .quote-cta__trust-item:last-child{ grid-column:1/-1; }
  .quote-cta__painter{ right:-70px; bottom:-38%; height:125%; width:auto; opacity:.15; }
}
@media (max-width:700px){
  .quote-cta{ min-height:auto; padding:36px 24px; background-position:58% center; }
  .quote-cta__background{ object-position:52% center; }
  .quote-cta__overlay{ background:linear-gradient(90deg,rgba(8,22,63,.82),rgba(8,22,63,.5)); }
  .quote-cta__content{ max-width:100%; }
  .quote-cta__title{ max-width:10ch; font-size:clamp(2.65rem,13vw,4.5rem); }
  .quote-cta__copy{ max-width:29ch; }
  .quote-cta__button{ width:100%; min-height:74px; padding-inline:28px; }
  .quote-cta__painter{ right:-105px; bottom:-34%; width:auto; height:118%; max-height:none; opacity:.11; }
  .quote-cta__trust{ grid-template-columns:1fr; gap:16px; padding-top:46px; }
  .quote-cta__trust-item:last-child{ grid-column:auto; }
}
@media (max-width:360px){
  .quote-cta{ padding:32px 20px; }
  .quote-cta__button{ min-height:68px; }
}
@media (prefers-reduced-motion:reduce){
  .quote-cta__background,.quote-cta__painter,.quote-cta__button,.quote-cta__arrow{ transition:none; transform:none; }
  .quote-cta__title span::after{ animation:none !important; transform:scaleX(1); }
}

/* ------- page hero (inner pages) ------- */
.page-hero{ background:var(--ink); color:#fff; padding:154px 0 84px; position:relative; overflow:hidden; }
.page-hero h1{ color:#fff; }
.page-hero .lede{ color:var(--color-bg-chalk); }
/* ------- gallery ------- */
.filter-row{ display:flex; flex-wrap:wrap; gap:10px; margin-bottom:40px; }
.filter-btn{
  font:inherit; font-weight:700; font-size:.92rem; padding:10px 20px; cursor:pointer;
  border-radius:999px; border:1.5px solid var(--line); background:#fff; color:var(--ink);
  transition:background-color .18s var(--ease), color .18s var(--ease), border-color .18s var(--ease);
}
.filter-btn:hover{ border-color:var(--peri); }
.filter-btn.is-active{ background:var(--ink); color:#fff; border-color:var(--ink); }

.gallery{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
@media (max-width:980px){ .gallery{ grid-template-columns:1fr 1fr; } }
@media (max-width:600px){ .gallery{ grid-template-columns:1fr; } }
.tile{
  position:relative; border-radius:var(--radius); overflow:hidden; border:1px solid var(--line);
  background:#fff; box-shadow:var(--shadow-sm); transition:box-shadow .25s var(--ease), opacity .3s var(--ease), transform .3s var(--ease);
}
.tile:hover{ box-shadow:var(--shadow-md); }
.tile.is-hidden{ display:none; }
.tile .media{ aspect-ratio:4/3; background:var(--mist); }
.tile .media svg, .tile .media img{ width:100%; height:100%; object-fit:cover; }
.tile figcaption{ padding:16px 20px; }
.tile figcaption strong{ display:block; font-size:1rem; }
.tile figcaption span{ font-size:.85rem; color:var(--peri); font-weight:700; letter-spacing:.06em; text-transform:uppercase; }

/* ------- before / after slider ------- */
.ba{ position:relative; aspect-ratio:4/3; overflow:hidden; background:var(--mist);
  cursor:ew-resize; touch-action:none; -webkit-user-select:none; user-select:none; }
.ba img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; pointer-events:none; }
.ba__after{ clip-path:inset(0 0 0 var(--pos,50%)); }
.ba__line{ position:absolute; top:0; bottom:0; left:var(--pos,50%); width:2px;
  background:var(--white); box-shadow:0 0 0 1px rgba(26,34,84,.18); transform:translateX(-1px); pointer-events:none; }
.ba__handle{ position:absolute; top:50%; left:var(--pos,50%); width:42px; height:42px; margin:-21px 0 0 -21px;
  border-radius:50%; background:var(--white); box-shadow:var(--shadow-md);
  display:grid; place-items:center; color:var(--brand); pointer-events:none; }
.ba__handle svg{ width:22px; height:22px; }
.ba__tag{ position:absolute; bottom:12px; padding:5px 11px; border-radius:999px;
  font-family:var(--font-body); font-weight:700; font-size:.72rem; letter-spacing:.08em; text-transform:uppercase;
  color:#fff; background:rgba(26,34,84,.72); backdrop-filter:blur(4px); pointer-events:none; }
.ba__tag--before{ left:12px; }
.ba__tag--after{ right:12px; }
.ba:focus-visible{ outline:3px solid var(--brand); outline-offset:2px; }

/* ------- rolling showcase (marquee) ------- */
.showreel{ position:relative; overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
          mask-image:linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent); }
.showreel__track{ display:flex; gap:22px; width:max-content;
  animation:showreel-scroll 48s linear infinite; }
.showreel:hover .showreel__track,
.showreel:focus-within .showreel__track{ animation-play-state:paused; }
.showreel__item{ position:relative; flex:0 0 auto; width:340px; aspect-ratio:4/3;
  border-radius:var(--radius); overflow:hidden; border:1px solid var(--line);
  background:var(--mist); box-shadow:var(--shadow-sm);
  padding:0; margin:0; font:inherit; text-align:left; color:inherit;
  -webkit-appearance:none; appearance:none; cursor:zoom-in; display:block; }
.showreel__item:focus-visible{ outline:3px solid var(--brand); outline-offset:3px; }
.showreel__item img{ width:100%; height:100%; object-fit:cover; }
.showreel__item figcaption{ position:absolute; left:0; right:0; bottom:0;
  padding:30px 18px 14px; color:#fff;
  background:linear-gradient(to top, rgba(26,34,84,.82), rgba(26,34,84,0)); }
.showreel__item figcaption span{ display:block; font-size:.74rem; font-weight:700;
  letter-spacing:.07em; text-transform:uppercase; color:var(--peri-soft); margin-bottom:2px; }
.showreel__item figcaption strong{ font-size:.98rem; line-height:1.25; }
@keyframes showreel-scroll{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }
@media (max-width:600px){ .showreel__item{ width:264px; } }
@media (prefers-reduced-motion: reduce){
  .showreel__track{ animation:none; }
  .showreel{ overflow-x:auto; -webkit-overflow-scrolling:touch; }
}

/* ------- lightbox ------- */
.lightbox{ position:fixed; inset:0; z-index:200; display:none;
  align-items:center; justify-content:center; padding:4vmin;
  background:rgba(26,34,84,.86); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); }
.lightbox.is-open{ display:flex; animation:lb-fade .28s ease both; }
@keyframes lb-fade{ from{ opacity:0; } to{ opacity:1; } }
@media (prefers-reduced-motion: reduce){ .lightbox.is-open{ animation:none; } }
.lightbox__inner{ position:relative; max-width:min(1200px,94vw); max-height:92vh;
  display:flex; flex-direction:column; gap:14px; align-items:center;
  animation:lb-pop .28s var(--ease); }
.lightbox__stage{ display:flex; align-items:center; justify-content:center; max-width:100%; }
.lightbox img{ max-width:100%; max-height:84vh; width:auto; height:auto;
  border-radius:var(--radius); box-shadow:0 24px 70px rgba(0,0,0,.5); background:var(--mist); }
/* before/after slider inside the lightbox */
.ba--lightbox{ aspect-ratio:4/3; height:min(84vh, 800px); width:auto; max-width:92vw;
  border-radius:var(--radius); box-shadow:0 24px 70px rgba(0,0,0,.5);
  cursor:ew-resize; }
.ba--lightbox .ba__handle{ width:52px; height:52px; margin:-26px 0 0 -26px; }
.ba--lightbox .ba__handle svg{ width:26px; height:26px; }
.ba--lightbox .ba__tag{ font-size:.8rem; padding:7px 14px; bottom:16px; }
.ba--lightbox .ba__tag--before{ left:16px; }
.ba--lightbox .ba__tag--after{ right:16px; }
.lightbox__cap{ color:#fff; font-weight:700; font-size:1rem; text-align:center; letter-spacing:.01em; }
.lightbox__cap span{ display:block; color:var(--peri-soft); font-size:.78rem;
  letter-spacing:.08em; text-transform:uppercase; margin-bottom:3px; }
.lightbox__close{ position:absolute; top:-6px; right:-6px; transform:translate(40%,-40%);
  width:46px; height:46px; border-radius:50%; border:0; cursor:pointer;
  background:#fff; color:var(--ink); box-shadow:var(--shadow-md);
  display:grid; place-items:center; }
.lightbox__close svg{ width:22px; height:22px; }
.tile, .showreel__item{ cursor:pointer; }
.tile .media{ position:relative; }
.tile__expand{ position:absolute; top:10px; right:10px; z-index:4;
  width:38px; height:38px; border-radius:50%; border:0; cursor:zoom-in;
  background:rgba(255,255,255,.92); color:var(--brand); box-shadow:var(--shadow-sm);
  display:grid; place-items:center; transition:background-color .18s var(--ease), transform .18s var(--ease); }
.tile__expand:hover{ background:#fff; transform:scale(1.06); }
.tile__expand svg{ width:20px; height:20px; }
.tile__expand:focus-visible{ outline:3px solid var(--brand); outline-offset:2px; }
@keyframes lb-pop{ from{ opacity:0; transform:scale(.96); } to{ opacity:1; transform:none; } }
@media (prefers-reduced-motion: reduce){ .lightbox__inner{ animation:none; } }

/* ------- coverage map (about / quote) ------- */
.coverage{ display:grid; grid-template-columns:.85fr 1.15fr; gap:34px; align-items:stretch; }
@media (max-width:820px){ .coverage{ grid-template-columns:1fr; } }
.coverage__areas{ display:flex; flex-wrap:wrap; gap:10px; margin-top:18px; }
.coverage__areas span{ display:inline-flex; align-items:center; gap:8px;
  background:var(--mist); color:var(--brand-deep); border:1px solid var(--line);
  border-radius:999px; padding:8px 15px; font-weight:700; font-size:.9rem; }
.coverage__areas span::before{ content:""; width:8px; height:8px; border-radius:50%; background:var(--peri); }
.coverage__map{ position:relative; min-height:360px; border-radius:calc(var(--radius) + 4px);
  overflow:hidden; border:1px solid var(--line); box-shadow:var(--shadow-md); background:var(--mist); }
.coverage__map iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; display:block; }
.coverage__map::after{ content:""; position:absolute; top:50%; left:50%;
  width:62%; aspect-ratio:1; transform:translate(-50%,-50%); border-radius:50%;
  background:rgba(46,58,140,.14); border:2.5px solid rgba(46,58,140,.55);
  box-shadow:0 0 0 9999px rgba(26,34,84,.04) inset; pointer-events:none; }
.coverage__badge{ position:absolute; left:14px; bottom:14px; z-index:2;
  display:inline-flex; align-items:center; gap:8px; pointer-events:none;
  background:rgba(255,255,255,.94); border:1px solid var(--line); border-radius:999px;
  padding:8px 14px; font-weight:700; font-size:.82rem; color:var(--brand-deep); box-shadow:var(--shadow-sm); }
.coverage__badge::before{ content:""; width:12px; height:12px; border-radius:50%;
  background:rgba(46,58,140,.2); border:2px solid rgba(46,58,140,.7); }
.coverage__note{ font-size:.92rem; color:var(--color-text-slate); margin-top:16px; }

/* ------- quote form ------- */
.quote-grid{ display:grid; grid-template-columns:1.15fr .85fr; gap:48px; align-items:start; }
@media (max-width:900px){ .quote-grid{ grid-template-columns:1fr; } }
.form-card{ background:#fff; border:1px solid var(--line); border-radius:calc(var(--radius) + 6px); padding:38px; box-shadow:var(--shadow-md); }
.field{ margin-bottom:20px; }
.field label{ display:block; font-weight:700; font-size:.92rem; margin-bottom:7px; }
.field input,.field select,.field textarea{
  width:100%; font:inherit; padding:13px 16px; border-radius:10px;
  border:1.5px solid var(--line); background:var(--paper); color:var(--ink);
  transition:border-color .18s var(--ease), box-shadow .18s var(--ease);
}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none; border-color:var(--brand); box-shadow:0 0 0 3px rgba(46,58,140,.15);
}
.field textarea{ min-height:130px; resize:vertical; }
.checks{ display:grid; grid-template-columns:1fr 1fr; gap:10px 18px; }
@media (max-width:560px){ .checks{ grid-template-columns:1fr; } }
.checks label{ display:flex; gap:10px; align-items:flex-start; font-weight:500; font-size:.95rem; cursor:pointer; }
.checks input{ width:18px; height:18px; margin-top:3px; accent-color:var(--brand); cursor:pointer; }
.form-note{ font-size:.85rem; color:var(--color-text-slate); }
.contact-side .card{ margin-bottom:20px; }
.contact-side a{ font-weight:700; text-decoration:none; }
.contact-side a:hover{ text-decoration:underline; }

/* ------- reveal on scroll ------- */
.reveal{ opacity:0; transform:translateY(22px); transition:opacity .65s var(--ease), transform .65s var(--ease); }
.reveal.is-in{ opacity:1; transform:none; }
.reveal[data-delay="1"]{ transition-delay:.08s; } .reveal[data-delay="2"]{ transition-delay:.16s; }
.reveal[data-delay="3"]{ transition-delay:.24s; } .reveal[data-delay="4"]{ transition-delay:.32s; }
@media (prefers-reduced-motion: reduce){ .reveal{ opacity:1; transform:none; } }

/* ============================================================
   HOUSE TOUR — pinned scroll pan/zoom scene (services page)
   ============================================================ */
.tour{ position:relative; background:var(--ink); }
.tour__track{ position:relative; }              /* tall — height set in JS  */
.tour__viewport{
  position:sticky; top:0; height:100vh; height:100svh; overflow:hidden;
  display:grid; place-items:center;
}
.tour__scene{
  position:absolute; top:0; left:0; width:1600px; height:900px;
  transform-origin:0 0; will-change:transform;
}
.tour__scene svg{ width:100%; height:100%; }

.tour__card{
  position:absolute; left:40px; bottom:44px; z-index:5;
  width:min(420px, calc(100vw - 60px));
  background:rgba(248,250,252,.96); backdrop-filter:blur(8px);
  border-radius:var(--radius); border:1px solid var(--line);
  padding:26px 30px; box-shadow:var(--shadow-md);
  opacity:0; transform:translateY(16px);
  transition:opacity .4s var(--ease), transform .4s var(--ease);
}
.tour__card.is-visible{ opacity:1; transform:none; }
.tour__card h3{ margin-bottom:6px; font-size:1.6rem; letter-spacing:.025em; padding-right:54px; }
.tour__card .tour__overview{ font-family:var(--font-display); text-transform:uppercase;
  font-size:1rem; letter-spacing:.05em; color:var(--peri); margin:0 0 10px; }
.tour__card .tour__detail{ font-family:var(--font-display); font-size:.86rem; letter-spacing:.045em;
  line-height:1.6; color:var(--color-text-slate); margin:0; }
.tour__count{ position:absolute; top:26px; right:26px; font-family:var(--font-display); font-size:.95rem; color:var(--peri); letter-spacing:.08em; }

.tour__dots{
  position:absolute; right:26px; top:50%; transform:translateY(-50%); z-index:5;
  display:flex; flex-direction:column; gap:12px;
}
.tour__dots button{
  width:12px; height:12px; border-radius:50%; border:2px solid rgba(255,255,255,.65);
  background:transparent; cursor:pointer; padding:0;
  transition:background-color .2s var(--ease), border-color .2s var(--ease);
}
.tour__dots button.is-active{ background:#fff; border-color:#fff; }
.tour__dots button:focus-visible{ outline:2px solid var(--tape); outline-offset:3px; }

.tour__hint{
  position:absolute; bottom:26px; left:50%; transform:translateX(-50%); z-index:5;
  color:rgba(255,255,255,.85); font-size:.85rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  display:flex; align-items:center; gap:9px; transition:opacity .4s var(--ease);
}
.tour__hint svg{ width:16px; height:16px; animation:hintbob 1.8s ease-in-out infinite; }
@keyframes hintbob{ 0%,100%{ transform:translateY(0);} 50%{ transform:translateY(5px);} }
.tour__hint.is-hidden{ opacity:0; }

.tour__skip{
  position:absolute; top:26px; right:26px; z-index:5;
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--font-body); font-weight:700; font-size:.85rem; letter-spacing:.04em;
  color:#fff; background:rgba(26,34,84,.4); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px);
  border:1.5px solid rgba(255,255,255,.55); border-radius:999px; padding:10px 18px;
  cursor:pointer; transition:background-color .2s var(--ease), border-color .2s var(--ease);
}
.tour__skip:hover{ background:rgba(26,34,84,.6); border-color:#fff; }
.tour__skip:focus-visible{ outline:2px solid var(--tape); outline-offset:3px; }

/* POI ring pulse inside the SVG */
.poi-ring{ opacity:0; transition:opacity .4s ease; }
.poi-ring.is-on{ opacity:1; }

@media (max-width:720px){
  .tour__card{ left:16px; right:16px; bottom:20px; width:auto; padding:20px 22px; }
  .tour__dots{ right:12px; gap:10px; }
  .tour__skip{ top:16px; right:16px; padding:9px 16px; font-size:.8rem; }
}

/* static fallback when motion is reduced */
.tour--static .tour__track{ height:auto !important; }
.tour--static .tour__viewport{ position:relative; height:auto; padding:64px 0; }
.tour--static .tour__scene{ position:relative; width:min(1100px,92vw); height:auto; transform:none !important; }
.tour--static .tour__card,.tour--static .tour__dots,.tour--static .tour__hint,.tour--static .tour__skip{ display:none; }

/* ------- kit strip: circular photo badges ------- */
.kit{ display:grid; grid-template-columns:repeat(3,1fr); gap:36px; text-align:center; }
.kit__item{ margin:0; }
.kit__item img{ width:132px; height:132px; border-radius:50%; margin:0 auto 18px; display:block; }
.kit__item h3{ font-size:1.05rem; letter-spacing:.02em; margin-bottom:6px; }
.kit__item p{ color:var(--color-text-slate); font-size:.94rem; margin:0; }
@media (max-width:720px){
  .kit{ grid-template-columns:1fr; gap:30px; }
  .kit__item img{ width:112px; height:112px; }
}

/* service detail rows */
.svc-row{ display:grid; grid-template-columns:64px 1fr; gap:22px; padding:30px 0; border-bottom:1px solid var(--line); }
.svc-row:last-child{ border-bottom:0; }
.svc-row .icon{ width:54px; height:54px; border-radius:14px; background:var(--mist); display:grid; place-items:center; }
.svc-row .icon svg{ width:26px; height:26px; stroke:var(--brand); }
.svc-row p{ color:var(--color-text-slate); margin-bottom:0; }

/* ------- cookie banner ------- */
.cookie-banner{
  position:fixed; z-index:90; left:16px; right:16px; bottom:16px;
  max-width:560px; margin:0 auto;
  background:#fff; border:1px solid var(--line); border-radius:18px;
  padding:24px 26px; box-shadow:var(--shadow-md);
  transform:translateY(calc(100% + 32px)); transition:transform .45s var(--ease);
}
.cookie-banner.is-visible{ transform:none; }
.cookie-banner h3{ font-size:1.05rem; margin-bottom:6px; }
.cookie-banner p{ font-size:.9rem; color:var(--color-text-slate); margin-bottom:16px; }
.cookie-banner .row{ display:flex; flex-wrap:wrap; gap:10px; }
.cookie-banner .btn{ padding:11px 22px; font-size:.92rem; }

/* ------- policy page ------- */
.policy h2{ font-size:1.5rem; margin-top:2.2em; }
.policy table{ width:100%; border-collapse:collapse; font-size:.92rem; margin:1em 0 2em; }
.policy th,.policy td{ border:1px solid var(--line); padding:10px 14px; text-align:left; vertical-align:top; }
.policy th{ background:var(--mist); }
.skip-link{ position:absolute; left:-9999px; top:0; background:var(--ink); color:#fff; padding:12px 20px; z-index:200; border-radius:0 0 10px 0; }
.skip-link:focus{ left:0; }

/* ------- page transitions ------- */
.page-transition{
  position:fixed; inset:0; z-index:300; pointer-events:none;
  background:var(--ink); transform:translateY(-100%);
  will-change:transform;
}
/* exit: panel sweeps from top to bottom */
.page-transition.is-leaving{
  transform:translateY(0);
  transition:transform .52s var(--ease);
}

/* entry: content settles from top to bottom */
.pt-enter #main, .pt-enter > main{ animation:pt-drop .6s var(--ease) both; }
@keyframes pt-drop{ from{ opacity:0; transform:translateY(-18px); } to{ opacity:1; transform:none; } }

/* entry: covering panel continues down and clears the viewport */
.page-transition.is-entering{ transform:translateY(0); }
.page-transition.is-entering.is-revealed{
  transform:translateY(100%);
  transition:transform .55s var(--ease);
}

@media (prefers-reduced-motion: reduce){
  .page-transition{ display:none; }
  .pt-enter #main, .pt-enter > main{ animation:none; }
}

@media (prefers-reduced-motion: reduce){
  .trust .wrap,.email-marquee__track{ animation:none; }
  .trust{ overflow-x:auto; }
  .email-marquee{ overflow-x:auto; }
  .footer-action__cta{ transform:none !important; }
  .hero-illustration{ animation:none; transform:translate3d(-50%,0,0); }
}

@media (max-height:720px) and (min-width:881px){
  .hero h1{ font-size:clamp(2.5rem,5.5vw,4rem); }
  .hero .lede{ font-size:1rem; }
  .hero__contact{ margin-top:16px; }
}

/* services tour — spotlight dim overlay (viewport space; no per-frame repaint) */
.tour__dim{ position:absolute; inset:0; opacity:0; transition:opacity .5s ease;
  pointer-events:none; will-change:opacity; }
.tour__dim.is-on{ opacity:1; }
@media (prefers-reduced-motion: reduce){ .tour__dim{ display:none; } }
