/* Chaffinch Windows & Doors — site styles
   Tokens come from the logo: the teal field, the navy frames, the finch's orange breast.
   Orange is reserved for the one action that matters: getting a quote. */

@font-face {
  font-family: "Montserrat";
  src: url("../fonts/montserrat-latin-wght-normal.woff2") format("woff2-variations"),
       url("../fonts/montserrat-latin-wght-normal.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  --teal: #13789c;          /* brand field, white text passes 5:1 */
  --teal-brand: #1687af;    /* exact logo teal, large shapes only */
  --navy: #0c4573;          /* logo frames */
  --navy-deep: #08223b;     /* second ink on teal, footer ground */
  --ink: #0b2340;
  --ink-soft: #435a74;
  --ground: #ffffff;
  --stone: #eef3f6;
  --stone-2: #e1eaf0;
  --orange: #ee7b22;
  --orange-hover: #f68d3a;
  --on-teal-soft: #d5ebf4;
  --ring: var(--navy-deep);

  --font: "Montserrat", "Segoe UI", "Helvetica Neue", Arial, sans-serif;
  --s-small: 0.9375rem;                       /* 15px */
  --s-body: 1.0625rem;                        /* 17px */
  --s-lead: clamp(1.25rem, 1.05rem + 0.6vw, 1.5rem);
  --s-h2: clamp(1.75rem, 1.3rem + 1.6vw, 2.5rem);
  --s-display: clamp(2.125rem, 1rem + 4.6vw, 5.5rem);

  --margin: clamp(20px, 3.2vw, 44px);
  --gap: clamp(16px, 2vw, 28px);
  --maxw: 1440px;
  --hdr-h: 76px;

  --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
  --ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
}

/* ---------- reset & base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html {
  color-scheme: light;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-padding-top: calc(var(--hdr-h) + 16px);
  scrollbar-color: var(--navy) var(--stone);
}
@media (pointer: fine) { html { overscroll-behavior: none; } }
@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }
body {
  margin: 0;
  font-family: var(--font);
  font-size: var(--s-body);
  line-height: 1.6;
  color: var(--ink);
  background: var(--ground);
  font-optical-sizing: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  -webkit-tap-highlight-color: rgba(238, 123, 34, 0.25);
}
img, picture, svg { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-underline-offset: 0.2em; text-decoration-thickness: 1.5px; }
a:hover { text-decoration-thickness: 2.5px; }
button, input, select, textarea { font: inherit; color: inherit; }
button, a, summary, label, select { touch-action: manipulation; }
h1, h2, h3, h4 { margin: 0; line-height: 1.12; letter-spacing: -0.02em; font-weight: 800; text-wrap: balance; }
p { margin: 0 0 1em; text-wrap: pretty; }
p:last-child { margin-bottom: 0; }
ul, ol { margin: 0; padding: 0; }
::selection { background: var(--orange); color: var(--navy-deep); }
:focus-visible { outline: 3px solid var(--ring); outline-offset: 3px; }
.on-dark { --ring: #ffffff; }
[id] { scroll-margin-top: calc(var(--hdr-h) + 16px); }
.num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.vh {
  position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.wrap { width: 100%; max-width: var(--maxw); margin-inline: auto; padding-inline: max(var(--margin), env(safe-area-inset-left)) max(var(--margin), env(safe-area-inset-right)); }

.skip {
  position: absolute; left: 12px; top: -100px; z-index: 100;
  background: var(--navy-deep); color: #fff; padding: 14px 20px; font-weight: 700; text-decoration: none;
}
.skip:focus-visible { top: 12px; outline-color: var(--orange); }

/* ---------- buttons & links ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 52px; padding: 0 26px;
  font-weight: 700; font-size: var(--s-body); line-height: 1.2; text-decoration: none;
  border: 0; border-radius: 0; cursor: pointer;
  transition: transform 140ms var(--ease-out), background-color 160ms ease, color 160ms ease;
}
.btn:active { transform: scale(0.97); }
.btn--accent { background: var(--orange); color: var(--navy-deep); }
.btn--accent:hover { background: var(--orange-hover); }
.btn--ink { background: var(--navy-deep); color: #fff; }
.btn--ink:hover { background: var(--navy); }
.btn--light { background: #fff; color: var(--navy-deep); }
.btn--light:hover { background: var(--stone); }
.btn svg { width: 20px; height: 20px; flex: none; }
.btn[aria-busy="true"] { cursor: progress; }
.btn .spin { display: none; width: 18px; height: 18px; border: 2.5px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: spin 700ms linear infinite; }
.btn[aria-busy="true"] .spin { display: inline-block; }
@keyframes spin { to { transform: rotate(360deg); } }

.tlink { font-weight: 700; text-decoration: underline; min-height: 44px; display: inline-flex; align-items: center; }
.more { font-weight: 700; display: inline-flex; align-items: center; min-height: 44px; }

/* ---------- header ---------- */
.hdr {
  position: sticky; top: 0; z-index: 40;
  background: var(--teal); color: #fff;
  padding-top: env(safe-area-inset-top);
}
.hdr__in { display: flex; align-items: center; gap: 24px; min-height: var(--hdr-h); }
.hdr__logo { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; margin-right: auto; min-height: 44px; }
.hdr__logo img { width: 52px; height: 52px; }
.hdr__name { display: flex; flex-direction: column; line-height: 1; font-weight: 800; font-size: 1.25rem; letter-spacing: -0.01em; }
.hdr__name span { font-weight: 500; font-size: 0.8125rem; letter-spacing: 0.01em; margin-top: 4px; }
.hdr__nav { display: flex; gap: 4px; list-style: none; }
.hdr__nav a {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 10px;
  font-weight: 600; font-size: var(--s-small); text-decoration: none;
  text-underline-offset: 8px;
}
.hdr__nav a:hover, .hdr__nav a[aria-current] { text-decoration: underline; text-decoration-thickness: 2px; }
.hdr__tel { font-weight: 700; text-decoration: none; display: inline-flex; align-items: center; gap: 8px; min-height: 44px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.hdr__tel:hover { text-decoration: underline; }
.hdr__tel svg { width: 18px; height: 18px; }
.hdr__cta { min-height: 46px; padding: 0 20px; }
.hdr__menu {
  display: none; align-items: center; gap: 10px; min-height: 46px; min-width: 46px; padding: 0 14px;
  background: var(--navy-deep); color: #fff; border: 0; font-weight: 700; cursor: pointer;
  transition: transform 140ms var(--ease-out);
}
.hdr__menu:active { transform: scale(0.97); }
.hdr__menu svg { width: 20px; height: 20px; }
.hdr__call { display: none; }
@media (max-width: 1180px) {
  .hdr__nav, .hdr__tel { display: none; }
  .hdr__menu { display: inline-flex; }
}
@media (max-width: 640px) {
  :root { --hdr-h: 64px; }
  .hdr__in { gap: 10px; }
  .hdr__logo img { width: 44px; height: 44px; }
  .hdr__name { font-size: 1.0625rem; }
  .hdr__name span { font-size: 0.75rem; }
  .hdr__cta { display: none; }
}

/* mobile menu */
.menu {
  border: 0; padding: 0; margin: 0; width: 100%; max-width: 100%; height: 100%; max-height: 100%;
  background: var(--navy-deep); color: #fff; overscroll-behavior: contain;
}
.menu::backdrop { background: rgba(8, 34, 59, 0.6); }
.menu[open] { display: flex; flex-direction: column; }
@media (prefers-reduced-motion: no-preference) {
  .menu[open] { animation: menu-in 260ms var(--ease-out); }
}
@keyframes menu-in { from { opacity: 0; transform: translateY(-12px); } to { opacity: 1; transform: none; } }
.menu__top { display: flex; justify-content: space-between; align-items: center; min-height: var(--hdr-h); padding-top: env(safe-area-inset-top); }
.menu__close { background: #fff; color: var(--navy-deep); border: 0; min-height: 46px; padding: 0 16px; font-weight: 700; cursor: pointer; }
.menu__body { overflow-y: auto; padding-block: 12px 40px; padding-bottom: calc(40px + env(safe-area-inset-bottom)); }
.menu__group { margin-bottom: 28px; }
.menu__group h2 { font-size: var(--s-small); font-weight: 600; color: var(--on-teal-soft); letter-spacing: 0; margin-bottom: 6px; }
.menu__group ul { list-style: none; }
.menu__group a { display: flex; align-items: center; min-height: 48px; font-size: 1.375rem; font-weight: 700; text-decoration: none; }
.menu__group a:hover, .menu__group a[aria-current] { text-decoration: underline; }
.menu__actions { display: grid; gap: 12px; margin-top: 8px; }

/* mobile action bar */
.abar { display: none; }
@media (max-width: 760px) {
  .abar {
    display: grid; grid-template-columns: 1fr 1fr 1.2fr; position: fixed; inset: auto 0 0 0; z-index: 30;
    background: var(--navy-deep); padding-bottom: env(safe-area-inset-bottom);
  }
  .abar a { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 56px; color: #fff; font-weight: 700; font-size: var(--s-small); text-decoration: none; }
  .abar a:active { background: var(--navy); }
  .abar a.abar__quote { background: var(--orange); color: var(--navy-deep); }
  .abar svg { width: 18px; height: 18px; }
  body { padding-bottom: calc(56px + env(safe-area-inset-bottom)); }
  html { scroll-padding-bottom: calc(72px + env(safe-area-inset-bottom)); }
}

/* ---------- monument hero (home) ---------- */
.hero {
  background: var(--teal); color: #fff;
  min-height: calc(100svh - var(--hdr-h));
  display: grid; grid-template-rows: 1fr auto;
  padding-block: clamp(28px, 6vh, 72px) clamp(28px, 5vh, 48px);
}
.mono {
  font-weight: 800; line-height: 0.84; letter-spacing: -0.045em; margin: 0;
  font-kerning: normal;
}
.mono .line { display: block; overflow: hidden; padding-bottom: 0.06em; margin-bottom: -0.06em; letter-spacing: -0.045em; }
.mono .line > span { display: block; white-space: nowrap; }
.hero .wrap:first-child { container-type: inline-size; }
.hero .mono .l1 { font-size: 19vw; font-size: 20.6cqw; }
.hero .mono .l2 { font-size: 10.3vw; font-size: 11.2cqw; color: var(--navy-deep); margin-top: 0.12em; }
.hero__foot { display: grid; grid-template-columns: 5fr 7fr; gap: 28px clamp(32px, 5vw, 80px); align-items: end; margin-top: clamp(32px, 5vh, 56px); }
.hero__say { max-width: 40ch; }
.hero__say p { font-size: var(--s-lead); line-height: 1.4; font-weight: 500; margin-bottom: 24px; }
.hero__actions { display: flex; flex-wrap: wrap; gap: 12px 16px; align-items: center; }
.btn--line { background: transparent; color: #fff; box-shadow: inset 0 0 0 2px #fff; font-variant-numeric: tabular-nums; }
.btn--line:hover { background: #fff; color: var(--navy-deep); }
.hero__facts { list-style: none; display: flex; flex-wrap: wrap; gap: 8px 22px; font-size: var(--s-small); font-weight: 600; margin-top: 24px; }
.hero__facts li { display: flex; align-items: center; gap: 8px; }
.hero__facts svg { width: 18px; height: 18px; flex: none; }
.hero__pics { list-style: none; display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.hero__pics a { display: block; color: #fff; text-decoration: none; }
.hero__pics figure { margin: 0; }
.hero__pics picture { display: block; aspect-ratio: 4 / 5; overflow: hidden; background: var(--teal-brand); }
.hero__pics img { width: 100%; height: 100%; object-fit: cover; transition: transform 500ms var(--ease-out); }
.hero__pics a:hover img { transform: scale(1.04); }
.hero__pics figcaption { font-size: var(--s-small); font-weight: 600; padding-top: 10px; line-height: 1.35; }
.hero__pics a:hover figcaption { text-decoration: underline; }
@media (max-width: 960px) {
  .hero__foot { grid-template-columns: 1fr; }
  .hero__pics { gap: 8px; }
  .hero__pics figcaption { font-size: 0.8125rem; }
}
@media (max-width: 860px) {
  .hero { min-height: 0; padding-block: 48px 36px; }
}

/* masked line reveal: the single loud moment */
@media (prefers-reduced-motion: no-preference) {
  .mono .line > span { animation: rise 900ms var(--ease-out) both; }
  .mono .line + .line > span { animation-delay: 110ms; }
  .hero__foot, .phero__foot { animation: fade-up 600ms var(--ease-out) 420ms both; }
}
@keyframes rise { from { transform: translateY(105%); } to { transform: none; } }
@keyframes fade-up { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }

/* ---------- page hero (inner pages) ---------- */
.phero { background: var(--teal); color: #fff; padding-block: clamp(28px, 5vw, 64px) clamp(36px, 5vw, 64px); }
.crumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: 4px 10px; font-size: var(--s-small); font-weight: 500; margin-bottom: clamp(28px, 5vw, 56px); }
.crumbs li { display: flex; align-items: center; gap: 10px; }
.crumbs li + li::before { content: "/"; color: var(--on-teal-soft); }
.crumbs a { color: #fff; min-height: 32px; display: inline-flex; align-items: center; }
.crumbs [aria-current] { color: var(--on-teal-soft); }
.phero .mono { font-size: var(--s-display); line-height: 0.95; letter-spacing: -0.035em; }
.phero .mono .line > span { white-space: normal; }
.phero .mono .l2 { color: var(--navy-deep); }
.phero__foot { display: grid; grid-template-columns: repeat(12, 1fr); gap: var(--gap); margin-top: clamp(24px, 3vw, 40px); align-items: end; }
.phero__foot .lead { grid-column: 1 / span 7; font-size: var(--s-lead); line-height: 1.45; font-weight: 500; max-width: 44ch; margin: 0; }
.phero__foot .hero__actions { grid-column: 8 / -1; justify-content: flex-end; }
@media (max-width: 860px) {
  .phero__foot { grid-template-columns: 1fr; }
  .phero__foot .lead, .phero__foot .hero__actions { grid-column: 1; }
  .phero__foot .hero__actions { justify-content: flex-start; }
}

/* ---------- sections ---------- */
.sec { padding-block: clamp(64px, 9vw, 140px); }
.sec--stone { background: var(--stone); }
.sec--navy { background: var(--navy-deep); color: #fff; }
.sec--teal { background: var(--teal); color: #fff; }
.h2 { font-size: var(--s-h2); }
.h-big { font-size: var(--s-display); line-height: 0.98; letter-spacing: -0.035em; }
.soft { color: var(--ink-soft); }
.sec--navy .soft, .sec--teal .soft { color: var(--on-teal-soft); }

/* reveal: parts of each section, staggered; content stays visible without JS */
html.js [data-reveal] > * { opacity: 0; transform: translateY(22px); }
html.js [data-reveal].in > * {
  opacity: 1; transform: none;
  transition: opacity 600ms var(--ease-out), transform 750ms var(--ease-out);
  transition-delay: calc(var(--i, 0) * 75ms);
}
@media (prefers-reduced-motion: reduce) {
  html.js [data-reveal] > * { opacity: 1; transform: none; }
}

/* ---------- showcase: door colour chooser (the live thing) ---------- */
.plate { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 4vw, 64px); align-items: stretch; min-height: 80svh; }
.plate__img { align-self: center; position: relative; background: var(--stone-2); aspect-ratio: 1; overflow: hidden; }
.plate__img img { width: 100%; height: 100%; object-fit: cover; }
.plate__body { display: flex; flex-direction: column; justify-content: space-between; gap: 36px; padding-block: 8px; }
.tabs { display: flex; flex-wrap: wrap; gap: 4px 6px; }
.tab {
  display: inline-flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 14px 0 10px;
  background: transparent; border: 0; cursor: pointer; font-weight: 600; font-size: var(--s-small); color: var(--ink-soft);
  transition: background-color 160ms ease, color 160ms ease, transform 140ms var(--ease-out);
}
.tab:hover { color: var(--ink); background: var(--stone-2); }
.tab:active { transform: scale(0.97); }
.tab[aria-selected="true"] { background: var(--navy-deep); color: #fff; }
.tab .sw { width: 20px; height: 20px; flex: none; box-shadow: inset 0 0 0 1.5px rgba(8, 34, 59, 0.35); }
.tab[aria-selected="true"] .sw { box-shadow: inset 0 0 0 1.5px rgba(255, 255, 255, 0.7); }
.plate__title { font-size: var(--s-h2); margin-bottom: 18px; }
.plate__text { max-width: 44ch; }
.plate__text p { color: var(--ink); }
.cells { display: grid; grid-template-columns: 1fr 1fr; }
.cells .btn { min-height: 72px; justify-content: flex-start; padding: 0 24px; }
.cells .btn--quiet { background: var(--stone-2); color: var(--navy-deep); }
.cells .btn--quiet:hover { background: #d3e0e8; }
@media (max-width: 860px) {
  .plate { grid-template-columns: 1fr; min-height: 0; }
  .cells { grid-template-columns: 1fr; }
  .cells .btn { min-height: 60px; }
}

/* ---------- footer ---------- */
.ftr { background: var(--navy); color: #fff; padding-top: clamp(56px, 6vw, 88px); }
.ftr__cols { display: grid; grid-template-columns: repeat(12, 1fr); gap: 40px var(--gap); font-size: var(--s-small); }
.ftr__col { grid-column: span 3; }
.ftr__col h2 { font-size: var(--s-small); letter-spacing: 0; font-weight: 800; margin-bottom: 10px; }
.ftr__col ul { list-style: none; }
.ftr__col a { color: var(--on-teal-soft); text-decoration: none; display: inline-flex; min-height: 34px; align-items: center; overflow-wrap: anywhere; }
.ftr__col a:hover { color: #fff; text-decoration: underline; }
.ftr__col p { color: var(--on-teal-soft); }
.ftr__mark { margin-top: clamp(64px, 10vw, 160px); }
.ftr__mark svg { width: 100%; height: auto; overflow: visible; }
.ftr__mark text { font-family: var(--font); font-weight: 800; fill: #ffffff; letter-spacing: -0.04em; }
.ftr__legal { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 24px; padding-block: 20px calc(24px + env(safe-area-inset-bottom)); font-size: 0.8125rem; color: var(--on-teal-soft); }
.ftr__legal a { color: var(--on-teal-soft); }
@media (max-width: 960px) { .ftr__col { grid-column: span 6; } }
@media (max-width: 520px) { .ftr__cols { gap: 32px 20px; } .ftr__col a { min-height: 44px; } }

/* ---------- article layout for service, area and info pages ---------- */
.intro { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 5vw, 80px); align-items: center; }
.intro__img { background: var(--stone-2); }
.intro__img img { width: 100%; height: auto; }
.intro__body .h2 { margin-bottom: 20px; }
.intro__body p { max-width: 58ch; }
@media (max-width: 860px) { .intro { grid-template-columns: 1fr; } }

.art { display: grid; grid-template-columns: 34% 1fr; }
.art .facts { position: sticky; top: calc(var(--hdr-h) + 32px); align-self: start; }
.prose { max-width: 68ch; }
.prose h2 { font-size: var(--s-h2); margin: 1.6em 0 0.55em; }
.prose h2:first-child { margin-top: 0; }
.prose h3 { font-size: 1.25rem; letter-spacing: -0.01em; margin: 1.6em 0 0.4em; }
.prose p, .prose ul, .prose ol { margin-bottom: 1.05em; }
.prose ul, .prose ol { padding-left: 1.2em; }
.prose li { margin-bottom: 0.4em; padding-left: 0.2em; }
.prose li::marker { color: var(--teal); font-weight: 800; }
.prose a { font-weight: 600; }
@media (max-width: 860px) {
  .art { grid-template-columns: 1fr; gap: 40px; }
  .art .facts { position: static; }
}

/* steps as a real ordered list */
.steps { list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 0; margin-top: 40px; }
.steps li { padding: 28px 28px 32px 0; }
.steps h3 { font-size: 1.25rem; margin-bottom: 8px; }
.steps p { color: var(--ink-soft); max-width: 32ch; }

/* gallery */
.filters { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 40px; }
.gal { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: clamp(20px, 2.4vw, 36px); list-style: none; }
.gal li[hidden] { display: none; }
.gal figure { margin: 0; }
.gal .ph { background: var(--stone-2); aspect-ratio: 1; overflow: hidden; }
.gal .ph img { width: 100%; height: 100%; object-fit: cover; }
.gal figcaption { padding-top: 12px; font-size: var(--s-small); line-height: 1.45; }
.gal figcaption strong { display: block; font-size: 1.0625rem; }
.gal__empty { padding: 40px 0; }

/* photo pair row */
.pair { display: grid; grid-template-columns: 1fr 1fr; gap: var(--gap); }
.pair figure { margin: 0; }
.pair img { width: 100%; height: auto; aspect-ratio: 1; object-fit: cover; background: var(--stone-2); }
.pair figcaption { font-size: var(--s-small); color: var(--ink-soft); padding-top: 10px; }
@media (max-width: 640px) { .pair { grid-template-columns: 1fr; } }

/* reviews */
.revs { display: grid; gap: clamp(48px, 6vw, 88px); }
.rev { display: grid; grid-template-columns: 34% 1fr; }
.rev blockquote { margin: 0; font-size: clamp(1.375rem, 1rem + 1.2vw, 2rem); line-height: 1.32; font-weight: 600; letter-spacing: -0.015em; max-width: 34ch; }
.rev__by { font-size: var(--s-small); }
.rev__by strong { display: block; font-size: 1.0625rem; }
@media (max-width: 760px) { .rev { grid-template-columns: 1fr; gap: 12px; } .rev__by { order: 2; } }
.rating { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px 20px; }
.rating__n { font-size: clamp(4rem, 2rem + 6vw, 8rem); font-weight: 800; letter-spacing: -0.05em; line-height: 0.9; font-variant-numeric: tabular-nums; }

/* areas list */
.towns { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); gap: 40px var(--gap); list-style: none; }
.towns h3 { font-size: 1.375rem; margin-bottom: 8px; }
.towns h3 a { text-decoration: none; }
.towns h3 a:hover { text-decoration: underline; }
.towns p { color: var(--ink-soft); max-width: 40ch; }
.also { columns: 3 220px; list-style: none; font-weight: 600; }
.also li { padding-block: 5px; break-inside: avoid; }

/* ---------- forms ---------- */
.qform { display: grid; grid-template-columns: 1fr 1fr; gap: 22px 20px; }
.qform .full { grid-column: 1 / -1; }
.field label { display: block; font-weight: 700; font-size: var(--s-small); margin-bottom: 8px; cursor: pointer; }
.field .hint { font-weight: 500; color: var(--ink-soft); }
.field input, .field select, .field textarea {
  width: 100%; min-height: 54px; padding: 13px 16px; font-size: 1rem;
  background-color: #fff; color: var(--ink); border: 2px solid #9fb1c2; border-radius: 0;
  transition: border-color 140ms ease;
}
.field textarea { min-height: 140px; resize: vertical; line-height: 1.5; }
.field select { appearance: none; -webkit-appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2308223b' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 14px center; background-size: 20px; padding-right: 48px; }
.field input:hover, .field select:hover, .field textarea:hover { border-color: var(--navy); }
.field input:focus-visible, .field select:focus-visible, .field textarea:focus-visible { outline: 3px solid var(--orange); outline-offset: 0; border-color: var(--navy-deep); }
.field input::placeholder, .field textarea::placeholder { color: #5f7389; }
.field [aria-invalid="true"] { border-color: #b3261e; }
.err { display: block; color: #b3261e; font-weight: 600; font-size: var(--s-small); margin-top: 6px; }
.err:empty { display: none; }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.qform__foot { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 24px; }
.qform__note { font-size: var(--s-small); color: var(--ink-soft); max-width: 52ch; margin: 0; }
.status { font-weight: 600; }
.status:empty { display: none; }
.status--ok { background: #e3f3ea; color: #10512d; padding: 16px 20px; }
.status--bad { background: #fbe9e8; color: #8a1c15; padding: 16px 20px; }
@media (max-width: 640px) { .qform { grid-template-columns: 1fr; } .field input, .field select, .field textarea { font-size: 16px; } }

.contact { display: grid; grid-template-columns: 34% 1fr; gap: 40px 0; }
.contact__ways { display: grid; gap: 28px; align-content: start; padding-right: var(--gap); }
.contact__ways h2 { font-size: var(--s-small); letter-spacing: 0; color: var(--ink-soft); font-weight: 600; margin-bottom: 2px; }
.contact__ways a { font-size: 1.375rem; font-weight: 700; text-decoration: none; overflow-wrap: anywhere; }
.contact__ways a:hover { text-decoration: underline; }
@media (max-width: 860px) { .contact { grid-template-columns: 1fr; } }

/* utility spacing */
.mt-l { margin-top: clamp(40px, 5vw, 72px); }
.mt-m { margin-top: 28px; }
.center-row { display: flex; flex-wrap: wrap; gap: 12px 20px; align-items: center; }

@media print {
  .hdr, .abar, .call, .ftr__mark, .menu { display: none !important; }
  body { padding: 0; }
}
main:focus { outline: none; }

/* =================== rebuilt sections =================== */
.sec-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 20px 40px; margin-bottom: clamp(32px, 4vw, 56px); }
.sec-head .h2 { max-width: 20ch; }
.sec-head p { max-width: 52ch; color: var(--ink-soft); margin: 12px 0 0; }

/* service tiles with real photos */
.tiles { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--gap); list-style: none; }
.tiles--4 { grid-template-columns: repeat(4, 1fr); }
.tile { background: #fff; display: flex; flex-direction: column; }
.sec:not(.sec--stone) .tile { background: var(--stone); }
.tile__img { aspect-ratio: 4 / 3; overflow: hidden; background: var(--stone-2); }
.tile__img img { width: 100%; height: 100%; object-fit: cover; transition: transform 500ms var(--ease-out); }
.tile:hover .tile__img img { transform: scale(1.03); }
.tile__body { padding: 24px 24px 28px; display: flex; flex-direction: column; gap: 10px; flex: 1; }
.tile h3 { font-size: 1.375rem; }
.tile h3 a { text-decoration: none; }
.tile h3 a::after { content: ""; position: absolute; inset: 0; }
.tile { position: relative; }
.tile h3 a:hover { text-decoration: underline; }
.tile p { color: var(--ink-soft); margin: 0; }
.tile ul { list-style: none; margin-top: 6px; position: relative; z-index: 1; }
.tile li a { display: inline-flex; align-items: center; min-height: 36px; font-weight: 600; font-size: var(--s-small); }
.tile .more { margin-top: auto; padding-top: 6px; color: var(--navy); }
@media (max-width: 1000px) { .tiles--4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 860px) { .tiles { grid-template-columns: 1fr; } }
@media (max-width: 560px) { .tiles--4 { grid-template-columns: 1fr; } }

/* recent work grid */
.shots { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--gap); list-style: none; }
.shots figure { margin: 0; }
.shots .ph { aspect-ratio: 1; overflow: hidden; background: var(--stone-2); }
.shots img { width: 100%; height: 100%; object-fit: cover; transition: transform 500ms var(--ease-out); }
.shots a { text-decoration: none; display: block; }
.shots a:hover img { transform: scale(1.03); }
.shots figcaption { padding-top: 12px; font-weight: 600; font-size: var(--s-small); line-height: 1.4; }
.shots a:hover figcaption { text-decoration: underline; }
@media (max-width: 900px) { .shots { grid-template-columns: repeat(2, 1fr); } }

/* why choose us */
.why { display: grid; grid-template-columns: 5fr 7fr; gap: clamp(32px, 6vw, 96px); align-items: center; }
.why__img { position: relative; }
.why__img img { width: 100%; height: auto; }
.why__badge { position: absolute; left: 20px; bottom: 20px; background: var(--teal); color: #fff; padding: 16px 20px; line-height: 1.2; }
.why__badge strong { display: block; font-size: 2rem; font-weight: 800; letter-spacing: -0.03em; font-variant-numeric: tabular-nums; }
.checks { list-style: none; display: grid; gap: 26px; margin-top: 32px; }
.checks li { display: grid; grid-template-columns: 40px 1fr; gap: 4px 16px; }
.checks .ic { width: 40px; height: 40px; background: var(--teal); color: #fff; display: grid; place-items: center; grid-row: span 2; }
.checks .ic svg { width: 22px; height: 22px; }
.checks h3 { font-size: 1.1875rem; letter-spacing: -0.01em; }
.checks p { color: var(--ink-soft); margin: 0; }
@media (max-width: 860px) { .why { grid-template-columns: 1fr; } .why__img { max-width: 480px; } }

/* reviews */
.revgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--gap); }
.rcard { background: rgba(255, 255, 255, 0.07); padding: 28px; display: flex; flex-direction: column; gap: 18px; margin: 0; }
.rcard blockquote { margin: 0; font-size: 1.0625rem; line-height: 1.6; }
.rcard blockquote p { margin: 0; }
.rcard figcaption { margin-top: auto; font-size: var(--s-small); color: var(--on-teal-soft); }
.rcard figcaption strong { display: block; color: #fff; font-size: 1rem; }
.stars { display: flex; gap: 3px; color: var(--orange); }
.stars svg { width: 18px; height: 18px; }
.rscore { display: flex; align-items: center; gap: 16px; }
.rscore strong { font-size: 3rem; font-weight: 800; letter-spacing: -0.04em; line-height: 1; font-variant-numeric: tabular-nums; }
.rscore span { color: var(--on-teal-soft); font-size: var(--s-small); line-height: 1.4; }
.sec--navy .sec-head p { color: var(--on-teal-soft); }
.sec--navy a:not(.btn) { color: #fff; }
@media (max-width: 900px) { .revgrid { grid-template-columns: 1fr; } }

/* areas */
.areas { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(32px, 6vw, 96px); align-items: start; }
.chips { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin-top: 28px; }
.chips a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 16px; background: #fff; font-weight: 600; font-size: var(--s-small); text-decoration: none; transition: background-color 160ms ease, color 160ms ease; }
.sec:not(.sec--stone) .chips a { background: var(--stone); }
.chips a:hover { background: var(--navy-deep); color: #fff; }
.areas__also { background: #fff; padding: clamp(24px, 3vw, 40px); }
.areas__also h3 { font-size: 1.25rem; margin-bottom: 14px; }
.areas__also ul { columns: 2; list-style: none; font-size: var(--s-small); color: var(--ink-soft); }
.areas__also li { padding-block: 3px; }
@media (max-width: 860px) { .areas { grid-template-columns: 1fr; } }

/* how it works: a real sequence */
.flow { list-style: none; display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--gap); counter-reset: flow; }
.flow li { counter-increment: flow; background: var(--stone); padding: 24px 22px 28px; }
.sec--stone .flow li { background: #fff; }
.flow li::before { content: counter(flow); display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: var(--navy-deep); color: #fff; font-weight: 800; margin-bottom: 18px; font-variant-numeric: tabular-nums; }
.flow h3 { font-size: 1.125rem; margin-bottom: 6px; }
.flow p { color: var(--ink-soft); font-size: var(--s-small); margin: 0; }
@media (max-width: 1100px) { .flow { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 640px) { .flow { grid-template-columns: 1fr; } .flow li { display: grid; grid-template-columns: 38px 1fr; gap: 0 16px; padding: 20px; } .flow li::before { grid-row: span 2; margin: 0; } }

/* FAQ */
.faq2 { display: grid; grid-template-columns: 4fr 8fr; gap: 32px clamp(32px, 6vw, 96px); align-items: start; }
.faq2__head p { color: var(--ink-soft); margin-top: 16px; max-width: 34ch; }
.faq2__head .h2 { margin-bottom: 0; }
.faq2__list { display: grid; gap: 8px; }
.faq2__list details { background: var(--stone); }
.sec--stone .faq2__list details { background: #fff; }
.faq2__list summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 20px 24px; font-size: 1.125rem; font-weight: 700; line-height: 1.35; min-height: 64px; }
.faq2__list summary::-webkit-details-marker { display: none; }
.faq2__list summary:hover { color: var(--navy); }
.chev { width: 22px; height: 22px; flex: none; transition: transform 220ms var(--ease-out); }
details[open] > summary .chev { transform: rotate(180deg); }
.faq__a { padding: 0 24px 22px; max-width: 70ch; }
.faq__a p { margin-bottom: 0.8em; }
@media (prefers-reduced-motion: no-preference) { details[open] .faq__a { animation: fade-up 260ms var(--ease-out); } }
@media (max-width: 860px) { .faq2 { grid-template-columns: 1fr; } .faq2__list summary { padding: 18px 20px; font-size: 1.0625rem; } .faq__a { padding: 0 20px 20px; } }

/* quote CTA with form */
.cta { background: var(--navy-deep); color: #fff; }
.cta__grid { display: grid; grid-template-columns: 5fr 7fr; gap: clamp(32px, 6vw, 96px); align-items: start; }
.cta__lead { color: var(--on-teal-soft); font-size: var(--s-lead); line-height: 1.45; margin-top: 16px; max-width: 30ch; }
.cta__tel { display: inline-flex; align-items: center; gap: 14px; margin-top: 32px; font-size: clamp(1.75rem, 1.2rem + 1.8vw, 2.5rem); font-weight: 800; letter-spacing: -0.03em; color: #fff; text-decoration: none; font-variant-numeric: tabular-nums; }
.cta__tel:hover { color: var(--orange); }
.cta__tel .ic { width: 52px; height: 52px; display: grid; place-items: center; background: var(--orange); color: var(--navy-deep); }
.cta__tel .ic svg { width: 24px; height: 24px; }
.cta__ways { list-style: none; margin-top: 24px; display: grid; gap: 4px; }
.cta__ways a { color: #fff; font-weight: 600; min-height: 40px; display: inline-flex; align-items: center; gap: 10px; }
.cta__ways svg { width: 18px; height: 18px; }
.cta__form { background: rgba(255, 255, 255, 0.06); padding: clamp(24px, 3vw, 40px); }
.cta__form h3 { font-size: 1.375rem; margin-bottom: 22px; }
.cta .field label { color: #fff; }
.cta .field .hint { color: var(--on-teal-soft); }
.cta .err { color: #ffb4ab; }
.cta .qform__note { color: var(--on-teal-soft); }
.cta .qform__note a { color: #fff; }
.cta .field input, .cta .field select, .cta .field textarea { border-color: #fff; }
@media (max-width: 960px) { .cta__grid { grid-template-columns: 1fr; } }

/* service page: quote card beside the article */
.art2 { display: grid; grid-template-columns: 7fr 4fr; gap: clamp(32px, 6vw, 96px); align-items: start; }
.qcard { position: sticky; top: calc(var(--hdr-h) + 24px); background: #fff; padding: 28px; }
.sec:not(.sec--stone) .qcard { background: var(--stone); }
.qcard h2 { font-size: 1.375rem; margin-bottom: 18px; }
.qcard dl { display: grid; gap: 14px; margin: 0 0 24px; }
.qcard dt { font-size: var(--s-small); color: var(--ink-soft); }
.qcard dd { margin: 0; font-weight: 700; }
.qcard .btn { width: 100%; }
.qcard .btn + .btn { margin-top: 10px; }
@media (max-width: 960px) { .art2 { grid-template-columns: 1fr; } .qcard { position: static; } }

/* options grouped */
.opts { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: var(--gap); }
.opt { background: var(--stone); padding: 26px 26px 28px; }
.sec--stone .opt { background: #fff; }
.opt h3 { font-size: 1.1875rem; margin-bottom: 14px; }
.opt ul { list-style: none; display: grid; gap: 10px; }
.opt li { display: grid; grid-template-columns: 20px 1fr; gap: 10px; align-items: start; line-height: 1.45; }
.opt li svg { width: 20px; height: 20px; color: var(--teal); margin-top: 2px; }
.opt li small { display: block; color: var(--ink-soft); font-size: 0.875rem; }

/* photo pairs at a size the photos can hold */
.pair { max-width: 900px; }
.ph picture, .tile__img picture, .plate__img picture, .gal .ph picture { display: block; width: 100%; height: 100%; }
.sec--navy .btn--light { color: var(--navy-deep); }

/* =================== premium light direction (Boxt / Heatable style) =================== */
:root { --r: 16px; --r-sm: 10px; --shadow-float: 0 1px 2px rgba(8, 34, 59, 0.08), 0 12px 32px rgba(8, 34, 59, 0.14); }
body { background: #fff; }

/* white header */
.hdr { background: #fff; color: var(--ink); box-shadow: 0 1px 0 rgba(8, 34, 59, 0.08); --ring: var(--navy-deep); }
.hdr__name { color: var(--navy-deep); }
.hdr__name span { color: var(--teal); font-weight: 600; }
.hdr__nav a { color: var(--ink); }
.hdr__nav a:hover, .hdr__nav a[aria-current] { color: var(--teal); }
.hdr__tel { color: var(--navy-deep); }
.hdr__tel svg { color: var(--teal); }

/* radius system */
.btn { border-radius: var(--r-sm); }
.tile, .rcard, .flow li, .opt, .qcard, .cta__form, .areas__also, .faq2__list details { border-radius: var(--r); }
.tile { overflow: hidden; }
.shots .ph, .gal .ph, .plate__img, .intro__img, .intro__img img, .why__img img, .pair img, .list__img img { border-radius: var(--r); overflow: hidden; }
.why__badge { border-radius: var(--r-sm); }
.chips a { border-radius: 999px; }
.tab { border-radius: 999px; }
.cells .btn { border-radius: 0; }
.cells .btn:first-child { border-radius: var(--r-sm) 0 0 var(--r-sm); }
.cells .btn:last-child { border-radius: 0 var(--r-sm) var(--r-sm) 0; }
.field input, .field select, .field textarea { border-radius: var(--r-sm); border-width: 1.5px; }
.status--ok, .status--bad { border-radius: var(--r-sm); }
.checks .ic { border-radius: 50%; }
.cta__tel .ic { border-radius: 50%; }
@media (max-width: 860px) {
  .cells .btn:first-child { border-radius: var(--r-sm) var(--r-sm) 0 0; }
  .cells .btn:last-child { border-radius: 0 0 var(--r-sm) var(--r-sm); }
}

/* hero */
.hero2 { background: var(--stone); padding-block: clamp(40px, 6vw, 88px) clamp(48px, 6vw, 96px); }
.hero2__grid { display: grid; grid-template-columns: 7fr 5fr; gap: clamp(40px, 6vw, 96px); align-items: center; }
.hero2__rating { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; font-size: var(--s-small); color: var(--ink); margin-bottom: 22px; }
.hero2__rating strong { font-weight: 800; }
.hero2 h1 { font-size: clamp(2.375rem, 1.3rem + 3.6vw, 4.25rem); line-height: 1.04; letter-spacing: -0.035em; font-weight: 800; color: var(--navy-deep); max-width: 19ch; }
.hero2__lead { font-size: var(--s-lead); line-height: 1.5; color: var(--ink-soft); max-width: 40ch; margin: 22px 0 32px; font-weight: 500; }
.pc { background: #fff; border-radius: var(--r); padding: 20px; max-width: 560px; box-shadow: var(--shadow-float); }
.pc label { display: block; font-weight: 700; font-size: var(--s-small); margin-bottom: 10px; color: var(--navy-deep); }
.pc__row { display: flex; gap: 10px; }
.pc input { flex: 1; min-width: 0; min-height: 56px; padding: 0 16px; font-size: 1.0625rem; border: 1.5px solid #9fb1c2; border-radius: var(--r-sm); background: #fff; color: var(--ink); text-transform: uppercase; }
.pc input::placeholder { text-transform: none; color: #5f7389; }
.pc input:focus-visible { outline: 3px solid var(--orange); outline-offset: 0; border-color: var(--navy-deep); }
.pc .btn { min-height: 56px; white-space: nowrap; }
.hero2__or { margin-top: 18px; font-size: var(--s-small); color: var(--ink-soft); }
.hero2__or a { color: var(--navy-deep); font-weight: 700; }
.hero2__media { position: relative; padding: 0 0 48px 0; }
.hero2__img { border-radius: 24px; overflow: hidden; aspect-ratio: 4 / 5; background: var(--stone-2); max-width: 470px; margin-left: auto; }
.hero2__img picture, .hero2__img img { display: block; width: 100%; height: 100%; object-fit: cover; }
.float { position: absolute; background: #fff; border-radius: var(--r); box-shadow: var(--shadow-float); margin: 0; }
.float--a { top: 28px; left: 0; display: flex; align-items: center; gap: 12px; padding: 14px 18px 14px 14px; font-size: var(--s-small); line-height: 1.3; }
.float--a strong { display: block; color: var(--navy-deep); }
.float__ic { width: 40px; height: 40px; border-radius: 50%; background: var(--teal); color: #fff; display: grid; place-items: center; flex: none; }
.float__ic svg { width: 22px; height: 22px; }
.float--b { left: -12px; bottom: 0; max-width: 300px; padding: 18px 20px; }
.float--b blockquote { margin: 8px 0 6px; font-weight: 600; line-height: 1.45; color: var(--navy-deep); font-size: 0.9375rem; }
.float--b blockquote p { margin: 0; }
.float--b figcaption { font-size: 0.875rem; color: var(--ink-soft); }
@media (prefers-reduced-motion: no-preference) {
  .hero2__copy > * { animation: fade-up 600ms var(--ease-out) both; }
  .hero2__copy > :nth-child(2) { animation-delay: 60ms; }
  .hero2__copy > :nth-child(3) { animation-delay: 120ms; }
  .hero2__copy > :nth-child(4) { animation-delay: 180ms; }
  .hero2__copy > :nth-child(5) { animation-delay: 240ms; }
  .float { animation: fade-up 700ms var(--ease-out) 380ms both; }
  .float--b { animation-delay: 500ms; }
}
@media (max-width: 960px) {
  .hero2__grid { grid-template-columns: 1fr; }
  .hero2__media { max-width: 520px; }
  .hero2__img { margin-left: 0; aspect-ratio: 5 / 4; max-width: none; }
}
@media (max-width: 520px) {
  .pc { padding: 16px; }
  .pc__row { flex-direction: column; }
  .float--b { position: relative; left: 0; margin-top: -40px; margin-left: 12px; margin-right: 12px; max-width: none; }
  .hero2__media { padding-bottom: 0; }
}

/* trust bar */
.trustbar { background: #fff; box-shadow: 0 1px 0 rgba(8, 34, 59, 0.08); }
.trustbar ul { list-style: none; display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px var(--gap); padding-block: 28px; }
.trustbar li { display: flex; align-items: center; gap: 14px; font-size: var(--s-small); line-height: 1.35; color: var(--ink-soft); }
.trustbar strong { display: block; color: var(--navy-deep); font-size: 1rem; }
.tb__ic { width: 44px; height: 44px; border-radius: 50%; background: var(--stone); color: var(--teal); display: grid; place-items: center; flex: none; }
.tb__ic svg { width: 22px; height: 22px; }
@media (max-width: 960px) { .trustbar ul { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .trustbar ul { grid-template-columns: 1fr; gap: 16px; } }

/* inner page heroes: light, calm */
.phero { background: var(--stone); color: var(--ink); --ring: var(--navy-deep); }
.crumbs a { color: var(--ink); }
.crumbs li + li::before { color: var(--ink-soft); }
.crumbs [aria-current] { color: var(--ink-soft); }
.phero .mono .l1 { color: var(--navy-deep); }
.phero .mono .l2 { color: var(--teal); }
.phero .mono { font-weight: 800; }
.phero__foot .lead { color: var(--ink-soft); }
.phero .btn--line { color: var(--navy-deep); box-shadow: inset 0 0 0 2px var(--navy-deep); }
.phero .btn--line:hover { background: var(--navy-deep); color: #fff; }
.btn--line svg { width: 18px; height: 18px; }
.phero + .sec.sec--stone, .trustbar + .sec.sec--stone { padding-top: clamp(64px, 9vw, 140px); }

/* =================== depth & motion pass =================== */
:root {
  --sh-1: 0 1px 2px rgba(8, 34, 59, 0.05), 0 4px 14px rgba(8, 34, 59, 0.06);
  --sh-2: 0 2px 4px rgba(8, 34, 59, 0.06), 0 16px 36px rgba(8, 34, 59, 0.14);
  --edge: rgba(8, 34, 59, 0.08);
  interpolate-size: allow-keywords;
}
.hdr { transition: box-shadow 220ms ease; }
.hdr.is-scrolled { box-shadow: 0 1px 0 var(--edge), 0 8px 24px rgba(8, 34, 59, 0.08); }

/* cards: crisp semi-transparent edge + layered ambient/direct shadow */
.tile, .opt, .flow li, .qcard, .areas__also, .faq2__list details, .wiz { box-shadow: 0 0 0 1px var(--edge), var(--sh-1); }
.sec:not(.sec--stone) .tile, .sec:not(.sec--stone) .opt, .sec:not(.sec--stone) .flow li, .sec:not(.sec--stone) .qcard, .sec:not(.sec--stone) .faq2__list details { background: #fff; }
.tile { transition: transform 320ms var(--ease-out), box-shadow 320ms var(--ease-out); }
.tile:has(h3 a):hover { transform: translateY(-4px); box-shadow: 0 0 0 1px var(--edge), var(--sh-2); }
.tile:has(h3 a:focus-visible) { outline: 3px solid var(--navy-deep); outline-offset: 3px; }
.shots .ph, .gal .ph { box-shadow: 0 0 0 1px var(--edge), var(--sh-1); transition: transform 320ms var(--ease-out), box-shadow 320ms var(--ease-out); }
.shots a:hover .ph { transform: translateY(-4px); box-shadow: 0 0 0 1px var(--edge), var(--sh-2); }
.plate__img, .intro__img, .why__img img, .hero2__img { box-shadow: var(--sh-2); }
.chips a { box-shadow: 0 0 0 1px var(--edge); transition: background-color 160ms ease, color 160ms ease, transform 140ms var(--ease-out); }
.chips a:active { transform: scale(0.97); }
.btn--accent { box-shadow: 0 1px 0 rgba(8, 34, 59, 0.12), 0 6px 16px rgba(238, 123, 34, 0.28); }
.btn--accent:hover { box-shadow: 0 1px 0 rgba(8, 34, 59, 0.12), 0 8px 22px rgba(238, 123, 34, 0.36); }
.btn--ghost { background: transparent; color: var(--navy-deep); box-shadow: inset 0 0 0 1.5px rgba(8, 34, 59, 0.25); }
.btn--ghost:hover { box-shadow: inset 0 0 0 1.5px var(--navy-deep); }
.rcard { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08); }

/* hero photo settles in once on load */
@media (prefers-reduced-motion: no-preference) {
  .hero2__img img { animation: settle 1200ms var(--ease-out) both; }
}
@keyframes settle { from { transform: scale(1.06); opacity: 0.6; } to { transform: none; opacity: 1; } }

/* FAQ: smooth open where the browser supports animating to auto height */
@supports (interpolate-size: allow-keywords) {
  @media (prefers-reduced-motion: no-preference) {
    .faq2__list details::details-content { height: 0; overflow: clip; transition: height 300ms var(--ease-out), content-visibility 300ms allow-discrete; }
    .faq2__list details[open]::details-content { height: auto; }
  }
}

/* reviews carousel on phones, grid on desktop */
.carousel__nav { display: none; }
@media (max-width: 900px) {
  .revgrid { display: flex; gap: 16px; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; scrollbar-width: none; margin-inline: calc(var(--margin) * -1); padding-inline: var(--margin); scroll-padding-inline: var(--margin); }
  .revgrid::-webkit-scrollbar { display: none; }
  .rcard { flex: 0 0 84%; scroll-snap-align: start; }
  .carousel__nav { display: flex; gap: 10px; margin-top: 20px; }
}
.cbtn { width: 48px; height: 48px; border-radius: 50%; border: 0; background: rgba(255, 255, 255, 0.12); color: #fff; display: grid; place-items: center; cursor: pointer; transition: background-color 160ms ease, transform 140ms var(--ease-out); }
.cbtn:hover { background: rgba(255, 255, 255, 0.22); }
.cbtn:active { transform: scale(0.94); }
.cbtn svg { width: 22px; height: 22px; transform: rotate(90deg); }
.cbtn--next svg { transform: rotate(-90deg); }

/* =================== quote builder =================== */
.wiz { background: #fff; border-radius: 20px; padding: clamp(22px, 3.2vw, 40px); }
.wiz__top { display: none; align-items: center; gap: 16px; margin-bottom: 28px; }
.wiz--on .wiz__top { display: flex; }
.wiz__bar { flex: 1; height: 6px; border-radius: 99px; background: var(--stone-2); overflow: hidden; }
.wiz__prog { display: block; height: 100%; width: 100%; background: var(--teal); border-radius: 99px; transform-origin: left center; transform: scaleX(0.25); transition: transform 420ms var(--ease-out); }
.wiz__count { font-size: var(--s-small); font-weight: 700; color: var(--ink-soft); font-variant-numeric: tabular-nums; white-space: nowrap; }
.wiz__step { border: 0; padding: 0; margin: 0 0 32px; min-width: 0; }
.wiz--on .wiz__step { margin-bottom: 0; }
.wiz__q { font-size: clamp(1.375rem, 1.1rem + 0.9vw, 1.75rem); font-weight: 800; letter-spacing: -0.02em; color: var(--navy-deep); margin-bottom: 22px; padding: 0; outline: none; }
.wiz__step--in { animation: step-in 360ms var(--ease-out); }
@keyframes step-in { from { opacity: 0; transform: translateX(16px); } to { opacity: 1; transform: none; } }
.choices { display: grid; gap: 12px; }
.choices--4 { grid-template-columns: repeat(4, 1fr); }
.choices--5 { grid-template-columns: repeat(5, 1fr); }
.choice { position: relative; display: flex; flex-direction: column; gap: 10px; padding: 18px 16px; min-height: 108px; border-radius: 14px; background: #fff; box-shadow: 0 0 0 1.5px #c9d5df; cursor: pointer; transition: box-shadow 160ms ease, background-color 160ms ease, transform 140ms var(--ease-out); }
.choice:hover { box-shadow: 0 0 0 1.5px var(--navy), var(--sh-1); }
.choice:active { transform: scale(0.98); }
.choice input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.choice:has(input:checked) { box-shadow: 0 0 0 2.5px var(--teal); background: #f1f8fb; }
.choice:has(input:focus-visible) { outline: 3px solid var(--orange); outline-offset: 2px; }
.choice__ic { width: 44px; height: 44px; border-radius: 12px; background: var(--stone); color: var(--teal); display: grid; place-items: center; }
.choice__ic svg { width: 26px; height: 26px; }
.choice:has(input:checked) .choice__ic { background: var(--teal); color: #fff; }
.choice__t { font-weight: 700; line-height: 1.3; color: var(--navy-deep); }
.choice__d { font-size: var(--s-small); color: var(--ink-soft); line-height: 1.4; margin-top: -4px; }
.choice--text { min-height: 96px; justify-content: center; }
.wiz__nav { display: none; justify-content: space-between; gap: 12px; margin-top: 28px; }
.wiz--on .wiz__nav { display: flex; }
.wiz__nav [data-wiz-next] { margin-left: auto; }
.wiz .qform { grid-template-columns: 1fr 1fr; }
.wizwrap { min-width: 0; }
@media (max-width: 1100px) { .choices--5 { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 760px) { .choices--4, .choices--5 { grid-template-columns: 1fr 1fr; } .choice { min-height: 96px; } }
@media (max-width: 640px) { .wiz .qform { grid-template-columns: 1fr; } }
.btn[hidden], [hidden] { display: none !important; }
@media (max-width: 860px) { .contact .wizwrap { order: -1; } .contact .wiz { margin-inline: calc(var(--margin) * -0.5); } }
