/* ============================================================
   Prime Estate Services - design system
   Heritage estate: warm bone surface, espresso ink,
   committed heritage-green accent. Spectral + Hanken Grotesk.
   ============================================================ */

:root{
  /* surfaces */
  --bone:        oklch(0.966 0.012 86);
  --bone-2:      oklch(0.928 0.016 84);
  --paper:       oklch(0.988 0.007 86);
  --ink:         oklch(0.255 0.022 52);
  --ink-soft:    oklch(0.435 0.020 56);
  --ink-faint:   oklch(0.58 0.016 60);

  /* heritage green - the brand carrier */
  --green:       oklch(0.430 0.066 150);
  --green-deep:  oklch(0.300 0.050 152);
  --green-bright:oklch(0.520 0.085 148);
  --green-wash:  oklch(0.940 0.020 150);

  /* warm secondary, used sparingly */
  --clay:        oklch(0.620 0.095 56);
  --gold:        oklch(0.760 0.090 75);

  /* cool hero shading */
  --blue:        oklch(0.460 0.105 235);
  --teal:        oklch(0.520 0.080 198);

  --line:        color-mix(in oklab, var(--ink) 14%, transparent);
  --line-strong: color-mix(in oklab, var(--ink) 26%, transparent);

  --serif: "Spectral", Georgia, "Times New Roman", serif;
  --sans:  "Hanken Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;

  --maxw: 1240px;
  --gutter: clamp(20px, 5vw, 72px);

  --r-sm: 8px;
  --r:    14px;
  --r-lg: 22px;

  --shadow-sm: 0 1px 2px color-mix(in oklab, var(--ink) 8%, transparent),
               0 4px 14px -8px color-mix(in oklab, var(--ink) 22%, transparent);
  --shadow:    0 24px 60px -28px color-mix(in oklab, var(--ink) 48%, transparent);
  --shadow-lg: 0 50px 110px -40px color-mix(in oklab, var(--ink) 60%, transparent);

  --ease: cubic-bezier(.22,.61,.21,1);
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  font-family:var(--sans);
  background:var(--bone);
  color:var(--ink);
  line-height:1.62;
  font-size:clamp(16px,1.05vw,17.5px);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
::selection{background:var(--green);color:var(--bone)}

h1,h2,h3,h4{font-family:var(--serif);font-weight:500;line-height:1.04;letter-spacing:-.012em;color:var(--ink)}
.serif-i{font-style:italic;font-weight:400}

/* ---------- layout ---------- */
.shell{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter)}
.section{padding-block:clamp(64px,9vw,128px)}
.section-tight{padding-block:clamp(48px,6vw,84px)}

.kicker{
  display:inline-flex;align-items:center;gap:.7em;
  font-family:var(--sans);font-weight:700;font-size:.74rem;
  letter-spacing:.16em;text-transform:uppercase;color:var(--green);
}
.kicker::before{content:"";width:30px;height:2px;background:var(--green);border-radius:2px}
.kicker.on-dark{color:var(--gold)}
.kicker.on-dark::before{background:var(--gold)}

.display{font-size:clamp(2.6rem,6vw,5rem)}
.h-xl{font-size:clamp(2.1rem,4.4vw,3.6rem)}
.h-lg{font-size:clamp(1.7rem,3vw,2.6rem)}
.h-md{font-size:clamp(1.3rem,2vw,1.7rem)}
.measure{max-width:62ch}
.lede{font-size:clamp(1.08rem,1.5vw,1.32rem);color:var(--ink-soft);line-height:1.6}

/* ---------- buttons ---------- */
.btn{
  --bg:var(--green);--fg:var(--bone);
  display:inline-flex;align-items:center;justify-content:center;gap:.6em;
  font-family:var(--sans);font-weight:700;font-size:1rem;line-height:1;
  padding:1.05em 1.6em;border-radius:999px;border:1.5px solid transparent;
  background:var(--bg);color:var(--fg);cursor:pointer;
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),background .2s,color .2s,border-color .2s;
  white-space:nowrap;
}
.btn svg{width:1.15em;height:1.15em}
.btn:hover{transform:translateY(-2px)}
.btn-primary{box-shadow:0 16px 32px -14px color-mix(in oklab,var(--green) 80%,black)}
.btn-primary:hover{background:var(--green-bright);box-shadow:0 22px 44px -16px color-mix(in oklab,var(--green) 80%,black)}
.btn-ink{--bg:var(--ink);--fg:var(--bone)}
.btn-outline{--bg:transparent;--fg:var(--ink);border-color:var(--line-strong)}
.btn-outline:hover{border-color:var(--ink);background:color-mix(in oklab,var(--ink) 5%,transparent)}
.btn-ghost-light{--bg:transparent;--fg:var(--bone);border-color:color-mix(in oklab,white 45%,transparent)}
.btn-ghost-light:hover{background:color-mix(in oklab,white 14%,transparent)}
.btn-lg{font-size:1.06rem;padding:1.15em 1.9em}
.btn-block{width:100%}

.link-arrow{display:inline-flex;align-items:center;gap:.5em;font-weight:700;color:var(--green);font-size:.98rem}
.link-arrow svg{width:1.05em;height:1.05em;transition:transform .25s var(--ease)}
.link-arrow:hover svg{transform:translateX(4px)}

/* ============================================================
   Header
   ============================================================ */
.site-header{
  position:fixed;inset:0 0 auto 0;z-index:80;
  padding-block:clamp(14px,2vw,22px);
  transition:background .35s var(--ease),box-shadow .35s var(--ease),padding .35s var(--ease);
}
.site-header .shell{display:flex;align-items:center;justify-content:space-between;gap:24px}
.site-header.solid{
  background:color-mix(in oklab,var(--bone) 88%,transparent);
  backdrop-filter:blur(14px) saturate(1.2);
  box-shadow:0 1px 0 var(--line),0 14px 36px -30px color-mix(in oklab,var(--ink) 70%,transparent);
  padding-block:10px;
}
.nav-main{display:flex;align-items:center;gap:clamp(20px,2.6vw,38px)}
.nav-main a{
  font-weight:600;font-size:.97rem;color:var(--bone);opacity:.9;
  position:relative;padding-block:6px;transition:opacity .2s,color .2s;
}
.nav-main a::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:0;background:var(--gold);transition:width .3s var(--ease)}
.nav-main a:hover,.nav-main a[aria-current="page"]{opacity:1}
.nav-main a[aria-current="page"]::after,.nav-main a:hover::after{width:100%}
.site-header.solid .nav-main a{color:var(--ink)}
.site-header.solid .nav-main a::after{background:var(--green)}

.header-right{display:flex;align-items:center;gap:18px}
.header-phone{display:flex;flex-direction:column;align-items:flex-end;line-height:1.1;color:var(--bone)}
.header-phone small{font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;opacity:.72;font-weight:700}
.header-phone b{font-family:var(--serif);font-size:1.16rem;font-weight:500}
.site-header.solid .header-phone{color:var(--ink)}
.burger{display:none;width:46px;height:46px;align-items:center;justify-content:center;background:none;border:none;color:var(--bone);cursor:pointer}
.site-header.solid .burger{color:var(--ink)}
.burger svg{width:26px;height:26px}

/* logo lockup */
.logo{display:flex;align-items:center;gap:13px}
.logo .emblem{width:46px;height:46px;flex:0 0 auto}
.logo .wm{display:flex;flex-direction:column;line-height:1}
.logo .wm .t1{font-family:var(--serif);font-weight:600;font-size:1.22rem;letter-spacing:.01em;color:var(--bone)}
.logo .wm .t2{font-family:var(--sans);font-weight:700;font-size:.6rem;letter-spacing:.34em;text-transform:uppercase;margin-top:5px;color:color-mix(in oklab,var(--bone) 72%,transparent)}
.site-header.solid .logo .wm .t1{color:var(--ink)}
.site-header.solid .logo .wm .t2{color:var(--green)}
.logo .emblem .em-stroke{stroke:var(--bone)}
.logo .emblem .em-fill{fill:var(--gold)}
.site-header.solid .logo .emblem .em-stroke{stroke:var(--ink)}
.site-header.solid .logo .emblem .em-fill{fill:var(--green)}
/* footer/static contexts use ink logo */
.logo.logo-static .wm .t1{color:var(--bone)}
.logo.logo-static .wm .t2{color:color-mix(in oklab,var(--bone) 70%,transparent)}
.logo.logo-static .emblem .em-stroke{stroke:var(--bone)}
.logo.logo-static .emblem .em-fill{fill:var(--gold)}

/* mobile drawer */
.drawer{position:fixed;inset:0;z-index:90;background:var(--green-deep);color:var(--bone);
  display:flex;flex-direction:column;padding:26px var(--gutter) 40px;transform:translateX(100%);
  transition:transform .45s var(--ease);visibility:hidden}
.drawer.open{transform:none;visibility:visible}
.drawer-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}
.drawer-close{background:none;border:none;color:var(--bone);width:46px;height:46px;cursor:pointer}
.drawer-close svg{width:28px;height:28px}
.drawer nav{display:flex;flex-direction:column}
.drawer nav a{font-family:var(--serif);font-size:1.9rem;padding:15px 0;border-bottom:1px solid color-mix(in oklab,white 16%,transparent)}
.drawer .drawer-cta{margin-top:auto;padding-top:28px;display:flex;flex-direction:column;gap:12px}
.drawer .dphone{font-family:var(--serif);font-size:1.6rem;color:var(--gold)}

/* ============================================================
   Hero (home)
   ============================================================ */
.hero{position:relative;min-height:min(94svh,860px);display:flex;align-items:center;color:var(--bone);overflow:hidden;text-align:center}
.hero__media{position:absolute;inset:0;z-index:0;overflow:hidden;background:var(--green-deep)}
.hero__media img,.hero__media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}
.hero__media img{animation:kenburns 28s ease-in-out infinite alternate;will-change:transform}
.hero__media video{object-position:center 38%}
/* drifting green/blue shading wash */
.hero__media::before{content:"";position:absolute;inset:0;z-index:1;mix-blend-mode:soft-light;opacity:.96;
  background:radial-gradient(85% 85% at 18% 18%,color-mix(in oklab,var(--green) 94%,transparent),transparent 62%),
            radial-gradient(90% 90% at 82% 85%,color-mix(in oklab,var(--green-deep) 94%,transparent),transparent 60%),
            radial-gradient(60% 60% at 55% 45%,color-mix(in oklab,var(--teal) 45%,transparent),transparent 72%);
  background-size:180% 180%;background-position:0% 0%;animation:heroDrift 20s ease-in-out infinite alternate}
.hero__media::after{content:"";position:absolute;inset:0;z-index:2;
  background:linear-gradient(180deg,color-mix(in oklab,var(--green-deep) 70%,transparent) 0%,color-mix(in oklab,var(--green-deep) 42%,transparent) 46%,color-mix(in oklab,var(--green-deep) 92%,transparent) 100%),
             color-mix(in oklab,var(--green-deep) 34%,transparent)}
@keyframes kenburns{from{transform:scale(1.04)}to{transform:scale(1.16)}}
@keyframes heroDrift{from{background-position:0% 0%}to{background-position:100% 100%}}
@media (prefers-reduced-motion:reduce){.hero__media img,.hero__media video,.hero__media::before{animation:none}}
.hero__inner{position:relative;z-index:2;width:100%;padding-block:clamp(40px,8vw,96px)}
.hero__inner .kicker{color:var(--gold)}
.hero__inner .kicker::before{background:var(--gold)}
.hero h1{color:var(--bone);margin:.2em auto 0;max-width:18ch;text-shadow:0 2px 34px color-mix(in oklab,var(--ink) 55%,transparent)}
.hero p{margin:1.1em auto 0;max-width:50ch;color:color-mix(in oklab,var(--bone) 94%,transparent);font-size:clamp(1.06rem,1.5vw,1.3rem);line-height:1.58}
.hero__actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:2.1em;align-items:center;justify-content:center}
.hero__rating{display:flex;align-items:center;gap:10px;font-weight:600;font-size:.95rem}
.hero__rating .stars{color:var(--gold);letter-spacing:1px}

/* ============================================================
   Trust strip
   ============================================================ */
.trust{background:var(--ink);color:var(--bone)}
.trust .shell{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:18px 36px;padding-block:22px}
.trust .ti{display:flex;align-items:center;gap:11px;font-weight:600;font-size:.96rem;color:color-mix(in oklab,var(--bone) 90%,transparent)}
.trust .ti svg{width:21px;height:21px;color:var(--gold);flex:0 0 auto}

/* ============================================================
   Section intro
   ============================================================ */
.intro{display:grid;grid-template-columns:1fr;gap:18px;margin-bottom:clamp(40px,5vw,64px)}
.intro.split{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(24px,4vw,64px);align-items:end}
.intro h2{margin-top:.35em}
.intro .intro-aside{color:var(--ink-soft)}

/* editorial two-column band */
.editorial{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(28px,5vw,80px);align-items:center}
.editorial.flip .editorial__media{order:-1}
.editorial__media{position:relative;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow)}
.editorial__media img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/5}
.editorial__media .stamp{position:absolute;left:18px;bottom:18px;background:color-mix(in oklab,var(--green-deep) 88%,transparent);
  backdrop-filter:blur(4px);color:var(--bone);padding:10px 16px;border-radius:999px;font-weight:600;font-size:.85rem;display:flex;gap:8px;align-items:center}
.editorial__media .stamp svg{width:16px;height:16px;color:var(--gold)}
.prose p+p{margin-top:1em}
.prose p{color:var(--ink-soft);max-width:56ch}

/* ============================================================
   Services - structured list, not identical cards
   ============================================================ */
.svc-list{border-top:1px solid var(--line)}
.svc-row{
  display:grid;grid-template-columns:auto 1fr auto;gap:clamp(18px,4vw,56px);align-items:center;
  padding-block:clamp(22px,3vw,38px);border-bottom:1px solid var(--line);
  transition:background .3s var(--ease);position:relative;
}
.svc-row .num{font-family:var(--serif);font-size:clamp(1.2rem,2vw,1.6rem);color:var(--green);font-weight:500;font-feature-settings:"tnum"}
.svc-row .svc-main h3{font-size:clamp(1.4rem,2.4vw,2.05rem)}
.svc-row .svc-main p{color:var(--ink-soft);margin-top:.4em;max-width:60ch}
.svc-row .svc-thumb{width:clamp(120px,16vw,210px);aspect-ratio:4/3;border-radius:var(--r);overflow:hidden;flex:0 0 auto;box-shadow:var(--shadow-sm)}
.svc-row .svc-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.svc-row:hover{background:color-mix(in oklab,var(--green-wash) 60%,transparent)}
.svc-row:hover .svc-thumb img{transform:scale(1.05)}

/* full detailed service block (services page) */
.svc-detail{display:grid;grid-template-columns:.95fr 1.05fr;gap:clamp(26px,4vw,64px);align-items:center;padding-block:clamp(40px,6vw,80px);border-bottom:1px solid var(--line)}
.svc-detail:nth-child(even) .svc-detail__media{order:-1}
.svc-detail__media{border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow)}
.svc-detail__media img{width:100%;height:100%;object-fit:cover;aspect-ratio:3/2}
.svc-detail h3{font-size:clamp(1.7rem,3vw,2.5rem);margin:.25em 0 .5em}
.svc-detail ul{list-style:none;margin-top:1.2em;display:grid;gap:.65em}
.svc-detail li{display:flex;gap:.7em;align-items:flex-start;color:var(--ink-soft)}
.svc-detail li svg{width:20px;height:20px;color:var(--green);flex:0 0 auto;margin-top:3px}

/* ============================================================
   Before / After - consistent transformation cards
   ============================================================ */
.ba-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2vw,26px)}
.ba-card{position:relative;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow);cursor:zoom-in;background:var(--ink)}
.ba-card .ba-photo{position:relative;aspect-ratio:4/5;overflow:hidden}
.ba-card .ba-photo img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.ba-card:hover .ba-photo img{transform:scale(1.04)}
.ba-card::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(0deg,color-mix(in oklab,var(--ink) 80%,transparent) 0%,transparent 36%)}
.ba-card .ba-tag{position:absolute;top:14px;left:14px;z-index:2;display:flex;gap:7px;align-items:center;
  background:color-mix(in oklab,var(--ink) 70%,transparent);backdrop-filter:blur(4px);color:var(--bone);
  font-weight:700;font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;padding:7px 12px;border-radius:999px}
.ba-card .ba-tag b{color:var(--gold)}
.ba-card .ba-cap{position:absolute;left:18px;right:18px;bottom:15px;z-index:2}
.ba-card .ba-cap h3{font-size:1.18rem;color:var(--bone)}

/* ============================================================
   Portfolio gallery - finished work only
   ============================================================ */
.gallery{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:clamp(200px,19vw,280px);gap:clamp(14px,1.6vw,22px)}
.shot{position:relative;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-sm);cursor:zoom-in;background:var(--ink)}
.shot img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--ease)}
.shot:hover img{transform:scale(1.05)}
.shot::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,color-mix(in oklab,var(--ink) 60%,transparent),transparent 46%);opacity:.85}
.shot figcaption{position:absolute;left:18px;bottom:16px;z-index:2;color:var(--bone);font-weight:600;font-size:.95rem;display:flex;align-items:center;gap:8px}
.shot figcaption svg{width:16px;height:16px;color:var(--gold)}
.shot.w2{grid-column:span 2}
.shot.h2{grid-row:span 2}

/* ============================================================
   Why / values
   ============================================================ */
.values{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:clamp(20px,3vw,40px)}
.value{padding-top:26px;border-top:2px solid var(--green)}
.value .vh{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.value .vh svg{width:26px;height:26px;color:var(--green);flex:0 0 auto}
.value h3{font-size:1.28rem}
.value p{color:var(--ink-soft);margin-top:.3em;font-size:.98rem}

/* ============================================================
   Dark estate band
   ============================================================ */
.band-dark{background:var(--green-deep);color:var(--bone)}
.band-dark h2,.band-dark h3{color:var(--bone)}
.band-dark .lede{color:color-mix(in oklab,var(--bone) 82%,transparent)}
.band-ink{background:var(--ink);color:var(--bone)}
.band-ink h2,.band-ink h3{color:var(--bone)}

/* steps */
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:clamp(18px,2.4vw,30px);counter-reset:s}
.step{position:relative;padding:30px 26px;border-radius:var(--r-lg);background:color-mix(in oklab,var(--bone) 8%,transparent);border:1px solid color-mix(in oklab,var(--bone) 16%,transparent)}
.step::before{counter-increment:s;content:counter(s,decimal-leading-zero);font-family:var(--serif);font-size:2.4rem;color:var(--gold);opacity:.85;display:block;margin-bottom:10px;line-height:1}
.step h3{font-size:1.22rem}
.step p{color:color-mix(in oklab,var(--bone) 80%,transparent);margin-top:.4em;font-size:.96rem}

/* ============================================================
   Reviews
   ============================================================ */
.reviews{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:clamp(18px,2.4vw,30px)}
.review{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(26px,3vw,36px);display:flex;flex-direction:column;box-shadow:var(--shadow-sm)}
.review .stars{color:var(--gold);letter-spacing:2px;margin-bottom:14px}
.review blockquote{font-family:var(--serif);font-size:1.22rem;line-height:1.45;color:var(--ink);flex:1}
.review .by{display:flex;align-items:center;gap:13px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.review .by .mono{width:46px;height:46px;border-radius:50%;background:var(--green);color:var(--bone);display:grid;place-items:center;font-family:var(--serif);font-size:1.15rem}
.review .by b{display:block;font-size:.97rem}
.review .by span{font-size:.84rem;color:var(--ink-faint)}

/* ============================================================
   Service area
   ============================================================ */
.area-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(28px,5vw,72px);align-items:center}
.chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}
.chip{background:var(--paper);border:1px solid var(--line);padding:9px 16px;border-radius:999px;font-weight:600;font-size:.92rem;box-shadow:var(--shadow-sm)}
.chip.lead{background:var(--green);color:var(--bone);border-color:transparent}
.area-call{background:var(--ink);color:var(--bone);border-radius:var(--r-lg);padding:clamp(28px,3.5vw,44px);box-shadow:var(--shadow-lg)}
.area-call h3{color:var(--bone);font-size:clamp(1.4rem,2.4vw,1.9rem)}
.area-call p{color:color-mix(in oklab,var(--bone) 78%,transparent);margin:.6em 0 1.4em}
.area-call .bigphone{display:inline-flex;align-items:center;gap:12px;font-family:var(--serif);font-size:clamp(1.6rem,3vw,2.2rem);color:var(--gold)}
.area-call .bigphone svg{width:1em;height:1em}

/* ============================================================
   CTA band (green drench)
   ============================================================ */
.cta{position:relative;background:var(--green);color:var(--bone);overflow:hidden}
.cta::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 140% at 85% 0%,color-mix(in oklab,var(--green-bright) 60%,transparent),transparent 60%);opacity:.7}
.cta .shell{position:relative;z-index:2;text-align:center;display:flex;flex-direction:column;align-items:center}
.cta h2{color:var(--bone);max-width:18ch}
.cta p{color:color-mix(in oklab,var(--bone) 88%,transparent);margin-top:.7em;max-width:52ch;font-size:clamp(1.05rem,1.4vw,1.25rem)}
.cta .cta-actions{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;margin-top:2em}

/* ============================================================
   Interior page hero
   ============================================================ */
.page-hero{position:relative;color:var(--bone);overflow:hidden;padding-top:clamp(120px,16vw,180px);padding-bottom:clamp(48px,7vw,90px)}
.page-hero__media{position:absolute;inset:0;z-index:0}
.page-hero__media img{width:100%;height:100%;object-fit:cover}
.page-hero__media::after{content:"";position:absolute;inset:0;background:linear-gradient(85deg,color-mix(in oklab,var(--green-deep) 86%,transparent),color-mix(in oklab,var(--ink) 55%,transparent))}
.page-hero .shell{position:relative;z-index:2}
.page-hero .crumb{font-weight:600;font-size:.86rem;letter-spacing:.04em;color:color-mix(in oklab,var(--bone) 72%,transparent);margin-bottom:14px}
.page-hero .crumb a:hover{color:var(--gold)}
.page-hero h1{color:var(--bone);font-size:clamp(2.4rem,5vw,4rem);max-width:18ch;text-shadow:0 2px 30px color-mix(in oklab,var(--ink) 45%,transparent)}
.page-hero p{margin-top:.8em;max-width:54ch;color:color-mix(in oklab,var(--bone) 88%,transparent);font-size:clamp(1.05rem,1.4vw,1.25rem)}

/* ============================================================
   Contact
   ============================================================ */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,72px);align-items:start}
.contact-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(26px,3vw,40px);box-shadow:var(--shadow-sm)}
.field{display:flex;flex-direction:column;gap:7px;margin-bottom:18px}
.field label{font-weight:600;font-size:.9rem}
.field input,.field textarea,.field select{
  font-family:var(--sans);font-size:1rem;color:var(--ink);background:var(--bone);
  border:1.5px solid var(--line-strong);border-radius:var(--r-sm);padding:.85em 1em;width:100%;transition:border-color .2s,box-shadow .2s}
.field input:focus,.field textarea:focus,.field select:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 4px var(--green-wash)}
.field textarea{min-height:130px;resize:vertical}
.contact-line{display:flex;gap:14px;align-items:flex-start;padding:16px 0;border-bottom:1px solid var(--line)}
.contact-line:last-child{border-bottom:none}
.contact-line .ic{width:46px;height:46px;border-radius:12px;background:var(--green-wash);display:grid;place-items:center;flex:0 0 auto}
.contact-line .ic svg{width:22px;height:22px;color:var(--green)}
.contact-line .ct b{display:block;font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);font-weight:700}
.contact-line .ct a,.contact-line .ct span{font-family:var(--serif);font-size:1.25rem;color:var(--ink)}

/* ============================================================
   Footer
   ============================================================ */
.site-footer{background:var(--green-deep);color:color-mix(in oklab,var(--bone) 80%,transparent);padding-block:clamp(56px,7vw,84px) 30px}
.footer-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:clamp(28px,4vw,56px);padding-bottom:42px;border-bottom:1px solid color-mix(in oklab,var(--bone) 18%,transparent)}
.site-footer .f-about{max-width:34ch;margin-top:18px;font-size:.96rem;line-height:1.6}
.site-footer h4{color:var(--bone);font-family:var(--sans);font-weight:700;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;margin-bottom:16px}
.site-footer ul{list-style:none;display:grid;gap:11px}
.site-footer ul a{font-size:.96rem}
.site-footer ul a:hover{color:var(--gold)}
.f-contact a,.f-contact span{display:flex;gap:10px;align-items:flex-start;font-size:.96rem;margin-bottom:11px}
.f-contact svg{width:17px;height:17px;color:var(--gold);flex:0 0 auto;margin-top:3px}
.footer-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;padding-top:24px;font-size:.84rem;color:color-mix(in oklab,var(--bone) 62%,transparent)}

/* sticky mobile call bar */
.callbar{position:fixed;inset:auto 0 0 0;z-index:75;display:none;gap:10px;padding:11px clamp(12px,4vw,18px);
  background:color-mix(in oklab,var(--green-deep) 96%,transparent);backdrop-filter:blur(10px);border-top:1px solid color-mix(in oklab,white 14%,transparent)}
.callbar a{flex:1;display:flex;align-items:center;justify-content:center;gap:9px;padding:15px;border-radius:12px;font-weight:700;font-size:1.02rem}
.callbar .c-call{background:var(--gold);color:var(--ink)}
.callbar .c-quote{background:color-mix(in oklab,white 14%,transparent);color:var(--bone);flex:0 0 auto;width:120px}
.callbar svg{width:19px;height:19px}

/* lightbox */
.lightbox{position:fixed;inset:0;z-index:120;display:none;align-items:center;justify-content:center;padding:24px;
  background:color-mix(in oklab,var(--green-deep) 82%,black 30%)}
.lightbox.open{display:flex}
.lightbox img{max-width:94vw;max-height:90vh;border-radius:var(--r);box-shadow:var(--shadow-lg)}
.lightbox .lb-x{position:absolute;top:22px;right:24px;width:48px;height:48px;border-radius:50%;border:none;cursor:pointer;
  background:color-mix(in oklab,white 16%,transparent);color:var(--bone);font-size:1.7rem;display:grid;place-items:center}

/* reveal */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.reveal.in{opacity:1;transform:none}
.reveal[data-d="1"]{transition-delay:.08s}
.reveal[data-d="2"]{transition-delay:.16s}
.reveal[data-d="3"]{transition-delay:.24s}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}html{scroll-behavior:auto}}

/* ============================================================
   Responsive
   ============================================================ */
@media (max-width:1040px){
  .editorial,.svc-detail,.area-grid,.contact-grid{grid-template-columns:1fr}
  .svc-detail:nth-child(even) .svc-detail__media,.editorial.flip .editorial__media{order:0}
  .intro.split{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr 1fr}
  .gallery{grid-template-columns:repeat(2,1fr)}
  .shot.w2{grid-column:span 2}
  .shot.h2{grid-row:span 1}
}
@media (max-width:860px){
  .nav-main,.header-phone{display:none}
  .burger{display:flex}
  .callbar{display:flex}
  body{padding-bottom:74px}
  .svc-row{grid-template-columns:auto 1fr;gap:16px 22px}
  .svc-row .svc-thumb{display:none}
  .trust .shell{justify-content:flex-start}
  .ba-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:560px){
  .footer-grid{grid-template-columns:1fr}
  .gallery{grid-template-columns:1fr;grid-auto-rows:clamp(200px,56vw,300px)}
  .shot.w2{grid-column:span 1}
  .ba-grid{grid-template-columns:1fr}
  .hero__actions{flex-direction:column;align-items:stretch}
  .hero__actions .btn{width:100%}
  .callbar .c-quote{width:100px}
}
