/* ==========================================================================
   Volga Task Services — component layer (prototype)
   Depends on tokens.css. Every colour below is a token. Zero raw hex.
   Codex ports this as public/assets/vlg.css.
   ========================================================================== */

@font-face{font-family:'Archivo';font-style:normal;font-weight:100 900;font-stretch:62% 125%;
  font-display:swap;src:url('/assets/fonts/archivo-latin-var.woff2') format('woff2');}
@font-face{font-family:'ArchivoFallback';src:local('Arial'),local('Helvetica Neue'),local('Liberation Sans');
  size-adjust:97%;ascent-override:90%;descent-override:22%;line-gap-override:0%;}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--page-bg);color:var(--text);
  font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-body);
  -webkit-font-smoothing:antialiased;font-synthesis-weight:none;
}
img,picture,video,svg{max-width:100%;display:block}
h1,h2,h3,h4{color:var(--heading);font-weight:700;letter-spacing:-.018em;margin:0 0 .55em;text-wrap:balance}
h1{font-size:var(--fs-h1);line-height:var(--lh-display);letter-spacing:-.026em}
h2{font-size:var(--fs-h2);line-height:var(--lh-heading);letter-spacing:-.022em}
h3{font-size:var(--fs-h3);line-height:1.28}
p{margin:0 0 1.05em;max-width:var(--measure)}
a{color:var(--accent);text-underline-offset:.18em;text-decoration-thickness:.06em}
a:hover{color:var(--accent-hover)}
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:2px}
.skip-link{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip-link:focus{width:auto;height:auto;overflow:visible;clip:auto;left:1rem;top:1rem;z-index:200;
  background:var(--surface);color:var(--heading);padding:.7rem 1rem;
  border:1px solid var(--border-strong);border-radius:var(--radius)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ---------- layout ---------- */
.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:clamp(1.15rem,4vw,2rem)}
.container--wide{max-width:var(--container-wide)}
.section{padding-block:clamp(3.25rem,5.5vw,5.5rem)}
.section--tight{padding-block:clamp(2.25rem,3.6vw,3.5rem)}
.band{background:var(--page-bg)}
.band--alt{background:var(--surface-muted)}
.band--surface{background:var(--surface)}

/* The feature band re-declares the token set locally instead of hard-coding a
   colour. In light it is a deep ground; in dark it is a raised surface. */
.on-feature,.band--feature,.formwrap__aside,.page-hero,.hero__card{
  --surface:var(--feature-surface);
  --surface-raised:var(--feature-surface);
  --surface-muted:var(--feature-surface);
  --heading:var(--feature-heading);
  --text:var(--feature-text);
  --text-muted:var(--feature-muted);
  --text-faint:var(--feature-muted);
  --border:var(--feature-border);
  --border-strong:var(--feature-border);
  --accent:var(--feature-accent);
  --accent-hover:var(--feature-accent);
  --focus-ring:var(--feature-focus);
  --secondary-button-text:var(--feature-heading);
  --secondary-button-border:var(--feature-border);
  --secondary-button-bg-hover:var(--on-media-hover);
  --shadow-2:none;--shadow-3:none;
  color:var(--text);
}
.band--feature{background:var(--feature-bg)}

.stack>*+*{margin-top:1rem}
.split{display:grid;gap:clamp(1.5rem,3vw,3rem);grid-template-columns:minmax(0,1fr)}
@media (min-width:860px){
  .split{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .split--7-5{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
  .split--5-7{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}
  .split--8-4{grid-template-columns:minmax(0,8fr) minmax(0,4fr)}
}

/* ---------- section headings ---------- */
.eyebrow{
  font-size:var(--fs-micro);font-weight:650;text-transform:uppercase;letter-spacing:.1em;
  color:var(--accent);margin:0 0 .75rem;font-stretch:88%;
}
.section-head{display:grid;gap:.6rem 3rem;margin-bottom:clamp(1.75rem,3vw,2.6rem)}
@media (min-width:900px){.section-head{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:end}}
.section-head h2{margin:0}
.section-head .lead{margin:0}
.lead{font-size:var(--fs-lead);color:var(--text-muted);line-height:1.5;max-width:56ch}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.55em;
  font:inherit;font-weight:640;font-size:var(--fs-small);line-height:1;
  padding:.92em 1.35em;border-radius:var(--radius);border:1px solid transparent;
  cursor:pointer;text-decoration:none;white-space:nowrap;
  transition:background-color var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease),
             color var(--dur-1) var(--ease),transform var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease);
}
.btn:active{transform:translateY(1px)}
.btn--primary{background:var(--primary-button-bg);color:var(--primary-button-text);border-color:var(--primary-button-border);box-shadow:var(--shadow-1)}
.btn--primary:hover{background:var(--primary-button-bg-hover);border-color:var(--primary-button-bg-hover);color:var(--primary-button-text)}
.btn--secondary{background:var(--secondary-button-bg);color:var(--secondary-button-text);border-color:var(--secondary-button-border)}
.btn--secondary{border-color:var(--text-muted)}
.btn--secondary:hover{background:var(--secondary-button-bg-hover);color:var(--secondary-button-text)}
.btn[aria-disabled="true"],.btn[data-loading]{opacity:.62;pointer-events:none;cursor:not-allowed}
.btn--lg{font-size:var(--fs-body);padding:1.02em 1.6em}
.btn--block{width:100%}
.btn-row{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center}

.link-arrow{display:inline-flex;align-items:center;gap:.4em;font-weight:620;text-decoration:none}
.link-arrow::after{content:"→";transition:transform var(--dur-1) var(--ease)}
.link-arrow:hover::after{transform:translateX(3px)}

/* ---------- header ---------- */
.site-header{position:sticky;top:0;z-index:60;background:var(--surface);border-bottom:1px solid var(--border);
  transition:background-color var(--dur-2) var(--ease),border-color var(--dur-2) var(--ease)}
.market-rail{background:var(--surface-muted);border-bottom:1px solid var(--border);color:var(--text-muted)}
.market-rail__inner{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.3rem 1rem;
  padding-block:.5rem;font-size:var(--fs-micro);letter-spacing:.055em;text-transform:uppercase;font-weight:620}
.market-rail a{color:var(--accent);text-decoration:none;display:inline-flex;gap:.4em;align-items:center}
.market-rail__status{display:inline-flex;align-items:center;gap:.5em}
.dot{width:.5em;height:.5em;border-radius:50%;background:var(--success);flex:none}
.dot--soon{background:var(--warning)}

.nav{display:flex;align-items:center;gap:clamp(.75rem,2vw,2rem);padding-block:.85rem}
.brand{display:flex;align-items:center;gap:.6rem;text-decoration:none;flex:none}
.brand img{height:34px;width:auto}
.brand__text{display:flex;flex-direction:column;line-height:1.05}
.brand__name{font-weight:760;font-size:1.02rem;color:var(--heading);letter-spacing:-.015em}
.brand__tag{font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);font-weight:600}
.nav__main{display:none;gap:clamp(.5rem,1.4vw,1.5rem);margin-inline-start:auto}
@media (min-width:1040px){.nav__main{display:flex;align-items:center}}
.nav__main>a,.nav__item>button{
  font:inherit;font-size:var(--fs-small);font-weight:620;color:var(--heading);
  background:none;border:0;padding:.55rem .2rem;cursor:pointer;text-decoration:none;
  display:inline-flex;align-items:center;gap:.3em;border-bottom:2px solid transparent;
}
.nav__main>a:hover,.nav__item>button:hover{color:var(--accent)}
.nav__main>a[aria-current="page"],.nav__item[data-active]>button{border-bottom-color:var(--accent);color:var(--accent)}
.nav__item{position:relative}
.nav__pop{
  position:absolute;top:calc(100% + .5rem);left:-1rem;min-width:22rem;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);
  box-shadow:var(--shadow-3);padding:.45rem;display:grid;gap:.1rem;
  opacity:0;visibility:hidden;transform:translateY(-6px);
  transition:opacity var(--dur-2) var(--ease),transform var(--dur-2) var(--ease),visibility var(--dur-2);
}
.nav__item[data-open] .nav__pop{opacity:1;visibility:visible;transform:none}
.nav__pop a{display:block;padding:.6rem .8rem;border-radius:var(--radius-sm);text-decoration:none;
  color:var(--heading);font-weight:620;font-size:var(--fs-small)}
.nav__pop a small{display:block;font-weight:450;color:var(--text-muted);margin-top:.1em;font-size:.82rem}
.nav__pop a:hover{background:var(--accent-soft);color:var(--accent-hover)}
.nav__right{display:flex;align-items:center;gap:.6rem;margin-inline-start:auto}
@media (min-width:1040px){.nav__right{margin-inline-start:0}}
.nav__phone{font-weight:680;font-size:var(--fs-small);color:var(--heading);text-decoration:none;white-space:nowrap}
.nav__phone:hover{color:var(--accent)}
.nav__cta{display:none}
@media (min-width:720px){.nav__cta{display:inline-flex}}
.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2.35rem;height:2.35rem;
  border:1px solid var(--border-strong);border-radius:var(--radius);background:transparent;color:var(--heading);cursor:pointer}
.icon-btn:hover{background:var(--surface-muted)}
@media (min-width:1040px){.nav__burger{display:none}}
[data-theme="dark"] .icon-sun,html:not([data-theme="dark"]) .icon-moon{display:block}
[data-theme="dark"] .icon-moon,html:not([data-theme="dark"]) .icon-sun{display:none}

/* Header overlays media; only visible navigation text changes ground. */
body.has-media-hero .site-header{position:absolute;left:0;right:0;background:transparent;border-bottom-color:transparent}
body.has-media-hero:not(.header-solid) .nav{color:var(--on-media-heading)}
body.has-media-hero:not(.header-solid) .nav :is(.brand__name,.brand__tag,.nav__phone,.nav__main>a,.nav__item>button,.icon-btn){color:var(--on-media-heading)}
body.has-media-hero.header-solid .site-header{position:fixed;background:var(--surface);border-bottom-color:var(--border)}
/* drawer */
.drawer{position:fixed;inset:0;z-index:120;display:none;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;background:transparent;color:var(--text)}
.drawer[open]{display:block}
.drawer__scrim{position:absolute;inset:0;background:var(--scrim);border:0}
.drawer__panel{position:absolute;top:0;right:0;height:100%;width:min(22rem,88vw);background:var(--surface);
  border-left:1px solid var(--border);padding:1.1rem;overflow:auto;display:grid;gap:.15rem;align-content:start;
  animation:drawerIn var(--dur-3) var(--ease)}
@keyframes drawerIn{from{transform:translateX(14px);opacity:.4}to{transform:none;opacity:1}}
.drawer__head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.6rem}
.drawer__panel a:not(.btn){display:block;padding:.72rem .2rem;border-bottom:1px solid var(--border);
  color:var(--heading);text-decoration:none;font-weight:620}
.drawer__panel a.is-sub{padding-left:1rem;font-weight:450;color:var(--text-muted);font-size:var(--fs-small)}
.drawer__panel .btn{margin-top:1rem}

/* ---------- hero ---------- */
.hero{position:relative;isolation:isolate;color:var(--on-media-text);background:var(--feature-bg);
  padding-block:clamp(7rem,14vw,10.5rem) clamp(3rem,6vw,5rem);color:var(--text)}
.hero__media{position:absolute;inset:0;z-index:-2;overflow:hidden}
.hero__media img{width:100%;height:100%;object-fit:cover;object-position:var(--hero-pos,center 42%)}
.hero::after{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(180deg,var(--hero-overlay-top) 0%,var(--scrim) 46%,var(--hero-overlay-bottom) 100%)}
.hero__inner{display:grid;gap:clamp(1.8rem,4vw,3.5rem)}
@media (min-width:960px){.hero__inner{grid-template-columns:minmax(0,7fr) minmax(0,4fr);align-items:end}}
.hero{--heading:var(--on-media-heading);--text:var(--on-media-text);
  --text-muted:var(--on-media-muted);--text-faint:var(--on-media-faint);
  --accent:var(--feature-accent);--accent-hover:var(--feature-accent);
  --border:var(--on-media-border);--border-strong:var(--on-media-border-strong);
  --secondary-button-text:var(--on-media-strong);--secondary-button-border:var(--on-media-border-strong);
  --secondary-button-bg-hover:var(--on-media-hover);--focus-ring:var(--feature-accent)}
.hero h1{font-size:var(--fs-display);max-width:16ch;margin-bottom:.35em}
.hero__lead{font-size:var(--fs-lead);color:var(--text);max-width:52ch;line-height:1.5}
.hero__note{font-size:var(--fs-small);color:var(--text-muted);margin-top:1.1rem}
.hero__card{background:var(--glass);backdrop-filter:blur(8px);border:1px solid var(--border);
  border-radius:var(--radius-lg);padding:1.35rem 1.4rem;color:var(--text)}
.hero__card h2{font-size:var(--fs-micro);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:.9rem}
.spec{margin:0;display:grid;gap:.1rem}
.spec>div{display:flex;justify-content:space-between;gap:1rem;padding:.6rem 0;border-top:1px solid var(--border)}
.spec>div:first-child{border-top:0}
.spec dt{color:var(--text-muted);font-size:var(--fs-small)}
.spec dd{margin:0;font-weight:640;font-size:var(--fs-small);color:var(--heading);text-align:right}
.hero__credit{font-size:.7rem;color:var(--text-faint);margin-top:1.5rem}

/* page hero (non-media) */
.page-hero{background:var(--feature-bg);padding-block:clamp(2.4rem,5vw,4rem)}
.page-hero h1{max-width:20ch}

.breadcrumbs{font-size:var(--fs-micro);letter-spacing:.06em;text-transform:uppercase;
  color:var(--text-muted);margin-bottom:1.2rem}
.breadcrumbs ol{display:flex;flex-wrap:wrap;gap:.3rem .5rem;list-style:none;margin:0;padding:0}
.breadcrumbs a{color:inherit;text-decoration:none}
.breadcrumbs a:hover{color:var(--accent);text-decoration:underline}
.breadcrumbs li+li::before{content:"/";margin-right:.5rem;opacity:.5}

/* ---------- trust strip ---------- */
.trust{display:grid;gap:0;border:1px solid var(--border);border-radius:var(--radius-lg);
  background:var(--surface);overflow:hidden}
@media (min-width:640px){.trust{grid-template-columns:repeat(2,1fr)}}
@media (min-width:960px){.trust{grid-template-columns:repeat(4,1fr)}}
.trust__item{padding:1.1rem 1.25rem;border-top:1px solid var(--border)}
@media (min-width:640px){.trust__item{border-top:0;border-left:1px solid var(--border)}
  .trust__item:nth-child(-n+2){border-top:0}.trust__item:nth-child(odd){border-left:0}}
@media (min-width:960px){.trust__item{border-left:1px solid var(--border)}.trust__item:first-child{border-left:0}
  .trust__item:nth-child(odd){border-left:1px solid var(--border)}.trust__item:first-child{border-left:0}}
.trust__k{font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.09em;color:var(--text-muted);font-weight:640}
.trust__v{font-weight:660;color:var(--heading);margin-top:.25rem}

/* ---------- universal card grid ----------
   Explicit breakpoints. Never auto-fit + gap:0 (that is what glued the
   `.v2-related` cards together at every width from 600px up). */
.cards{display:grid;gap:1.15rem;grid-template-columns:minmax(0,1fr)}
.cards>*{min-width:0}
@media (min-width:600px){.cards--2,.cards--3,.cards--4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:940px){.cards--3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .cards--4{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:1160px){.cards--4{grid-template-columns:repeat(4,minmax(0,1fr))}}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);
  min-width:0;padding:clamp(1.05rem,3vw,1.35rem);box-shadow:var(--shadow-1);display:flex;flex-direction:column;gap:.5rem;
  transition:box-shadow var(--dur-2) var(--ease),transform var(--dur-2) var(--ease),border-color var(--dur-2) var(--ease)}
.card:hover{box-shadow:var(--shadow-2);border-color:var(--border-strong);transform:translateY(-2px)}
.card h3{margin:0}
.card h3 a{color:var(--heading);text-decoration:none}
.card:hover h3 a{color:var(--accent)}
.card p{margin:0;color:var(--text-muted);font-size:var(--fs-small)}
.card__meta{margin-top:auto;padding-top:.6rem;display:flex;gap:.65rem;align-items:center;
  font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.07em;color:var(--text-faint);font-weight:620}
.card__icon{width:2.1rem;height:2.1rem;border-radius:var(--radius);display:grid;place-items:center;
  background:var(--accent-soft);color:var(--accent);margin-bottom:.35rem}
.tag{display:inline-block;font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.08em;
  font-weight:660;color:var(--accent);background:var(--accent-soft);padding:.28em .6em;border-radius:var(--radius-pill)}

/* ---------- link list (replaces the glued related-cards grid) ---------- */
.linklist{list-style:none;margin:0;padding:0;display:grid;gap:0;border-top:1px solid var(--border)}
@media (min-width:760px){.linklist--2{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:2.5rem}}
.linklist li{border-bottom:1px solid var(--border)}
.linklist a{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;
  gap:.15rem 1rem;min-width:0;padding:.85rem .2rem;text-decoration:none;color:var(--heading);
  font-weight:620;overflow-wrap:anywhere}
.linklist a small{color:var(--text-muted);font-weight:450;font-size:var(--fs-small);
  text-align:right;flex:0 1 auto;min-width:0;overflow-wrap:anywhere}
.linklist a:hover{color:var(--accent)}
.linklist a:hover small{color:var(--accent)}

/* ---------- real work ---------- */
.work{display:grid;gap:.9rem;grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:899px){
  /* with five frames an odd one is left alone in a two-column grid — let it span */
  .work figure:nth-child(5){grid-column:span 2}
  .work figure:nth-child(5) img{aspect-ratio:16/9}
}
@media (min-width:900px){
  .work{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:auto auto}
  .work figure:first-child{grid-column:span 2;grid-row:span 2}
}
.work figure{margin:0;position:relative;overflow:hidden;border-radius:var(--radius-lg);background:var(--surface-muted)}
.work img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/3;
  object-position:var(--focal,50% 50%);transition:transform var(--dur-4) var(--ease)}
@media (min-width:900px){.work figure:first-child img{aspect-ratio:1/1}}
.work figure:hover img{transform:scale(1.03)}
.work figcaption{position:absolute;left:0;right:0;bottom:0;padding:1.6rem .9rem .7rem;
  background:linear-gradient(180deg,transparent,var(--scrim-strong));color:var(--on-media-strong);
  font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.08em;font-weight:640}
.proof-note{display:inline-flex;flex-wrap:wrap;gap:.5rem .9rem;align-items:center;
  font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.08em;font-weight:640;
  color:var(--accent);border:1px solid var(--accent);border-radius:var(--radius-pill);
  padding:.42rem .95rem;margin:0 0 1.4rem}

/* ---------- before / after ---------- */
.ba{position:relative;border-radius:var(--radius-lg);overflow:hidden;background:var(--surface-muted);
  aspect-ratio:4/3;user-select:none;touch-action:pan-y}
.ba img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ba__after{clip-path:inset(0 0 0 var(--split,50%))}
.ba__handle{position:absolute;top:0;bottom:0;left:var(--split,50%);width:2px;background:var(--on-media-heading);
  box-shadow:0 0 0 1px var(--scrim);cursor:ew-resize}
.ba__handle::after{content:"";position:absolute;top:50%;left:50%;width:2.4rem;height:2.4rem;
  transform:translate(-50%,-50%);border-radius:50%;background:var(--on-media-heading);box-shadow:0 2px 10px var(--scrim)}
.ba__label{position:absolute;top:.7rem;padding:.28rem .6rem;border-radius:var(--radius-pill);
  background:var(--scrim-strong);color:var(--on-media-heading);font-size:var(--fs-micro);letter-spacing:.08em;text-transform:uppercase;font-weight:640}
.ba__label--b{left:.7rem}.ba__label--a{right:.7rem}
.ba input[type=range]{position:absolute;inset:auto 0 0 0;width:100%;opacity:0;height:100%;cursor:ew-resize}

/* ---------- process ---------- */
.steps{counter-reset:step;display:grid;gap:1.15rem}
@media (min-width:760px){.steps{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1080px){.steps{grid-template-columns:repeat(4,minmax(0,1fr))}}
.step{border-top:2px solid var(--accent);padding-top:1rem}
.step__n{counter-increment:step;font-size:var(--fs-micro);letter-spacing:.1em;font-weight:680;color:var(--accent)}
.step__n::before{content:"Step " counter(step)}
.step h3{margin:.45rem 0 .35rem}
.step p{color:var(--text-muted);font-size:var(--fs-small);margin:0}

/* ---------- market cards ---------- */
.market{display:block;border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;
  background:var(--surface);text-decoration:none;color:inherit;box-shadow:var(--shadow-1);
  transition:box-shadow var(--dur-2) var(--ease),transform var(--dur-2) var(--ease)}
.market:hover{box-shadow:var(--shadow-2);transform:translateY(-2px)}
.market img{aspect-ratio:16/9;object-fit:cover;width:100%;transition:transform var(--dur-4) var(--ease)}
.market:hover img{transform:scale(1.03)}
.market__body{padding:1.3rem}
.market__status{display:inline-flex;align-items:center;gap:.45em;font-size:var(--fs-micro);
  text-transform:uppercase;letter-spacing:.08em;font-weight:660;color:var(--text-muted);margin-bottom:.5rem}
.market h3{margin:0 0 .4rem}
.market p{color:var(--text-muted);font-size:var(--fs-small)}
.credit{font-size:.7rem;color:var(--media-caption);margin:.55rem 0 0}

/* ---------- coverage map ---------- */
.coverage{display:grid;gap:1.5rem}
@media (min-width:1000px){.coverage{grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);align-items:start}}
.segmented{display:inline-flex;padding:.25rem;background:var(--surface-muted);border:1px solid var(--border);
  border-radius:var(--radius-pill);gap:.2rem}
.segmented button{font:inherit;font-size:var(--fs-small);font-weight:640;border:0;background:transparent;
  color:var(--text-muted);padding:.5rem 1.05rem;border-radius:var(--radius-pill);cursor:pointer;
  transition:background-color var(--dur-2) var(--ease),color var(--dur-2) var(--ease)}
.segmented button[aria-pressed="true"]{background:var(--surface);color:var(--heading);box-shadow:var(--shadow-1)}
.mapstage{position:relative;border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;
  background:var(--surface);aspect-ratio:16/11}
.mapstage svg{width:100%;height:100%;display:block}
.mapstage .zone{fill:var(--accent-soft);stroke:var(--accent);stroke-width:1.1;
  transition:fill var(--dur-3) var(--ease),stroke-width var(--dur-2) var(--ease),opacity var(--dur-3) var(--ease);cursor:pointer}
.mapstage .zone:hover{fill:var(--accent);fill-opacity:.35}
.mapstage .zone[data-selected]{fill:var(--accent);fill-opacity:.55;stroke-width:2}
.mapstage .zone-label{font-size:9px;font-weight:640;fill:var(--heading);pointer-events:none;paint-order:stroke;
  stroke:var(--surface);stroke-width:2.6px;stroke-linejoin:round}
.mapstage .home-pin{fill:var(--accent);stroke:var(--surface);stroke-width:1.5}
.mapstage__view{transition:transform var(--dur-4) var(--ease)}
.mapstage__legend{position:absolute;left:.75rem;bottom:.75rem;background:var(--surface);
  border:1px solid var(--border);border-radius:var(--radius);padding:.45rem .7rem;
  font-size:var(--fs-micro);color:var(--text-muted);letter-spacing:.04em}
.mapstage__reset{position:absolute;right:.75rem;top:.75rem}

.coverage__panel{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);
  padding:1.3rem;box-shadow:var(--shadow-1)}
.coverage__panel h3{margin:.2rem 0 .35rem}
.zipform{display:flex;gap:.5rem;margin:.4rem 0 .3rem}
.zipform input{flex:1;min-width:0}
.zipresult{font-size:var(--fs-small);margin-top:.6rem;padding:.7rem .85rem;border-radius:var(--radius);
  border:1px solid var(--border);background:var(--surface-muted);color:var(--text-muted)}
.zipresult[data-state="in"]{border-color:var(--success);background:var(--success-soft);color:var(--success)}
.zipresult[data-state="out"]{border-color:var(--warning);background:var(--warning-soft);color:var(--warning)}
.chips{display:flex;flex-wrap:wrap;gap:.45rem;margin:.9rem 0 0}
.chip{font:inherit;font-size:var(--fs-small);font-weight:600;padding:.42em .85em;border-radius:var(--radius-pill);
  border:1px solid var(--border-strong);background:var(--surface);color:var(--text);cursor:pointer;text-decoration:none;
  transition:background-color var(--dur-1) var(--ease),color var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease)}
.chip:hover{border-color:var(--accent);color:var(--accent)}
.chip[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--accent-on)}
details.quiet{border-top:1px solid var(--border);margin-top:1.1rem;padding-top:.7rem}
details.quiet>summary{cursor:pointer;font-size:var(--fs-small);color:var(--text-muted);font-weight:600;list-style:none}
details.quiet>summary::-webkit-details-marker{display:none}
details.quiet>summary::before{content:"＋ ";color:var(--accent)}
details.quiet[open]>summary::before{content:"− "}
details.quiet p{font-size:var(--fs-small);color:var(--text-muted);margin-top:.6rem}

/* ---------- forms ---------- */
.form{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-lg);padding:clamp(1.5rem,3vw,2.4rem);box-shadow:var(--shadow-1)}
.form-row{display:grid;gap:.32rem;margin:0 0 .95rem}
.form-row label{font-size:var(--fs-small);font-weight:620;color:var(--heading)}
.form-row .hint,.form-row + .hint,.form small{font-size:.8rem;color:var(--text-muted)}
.formwrap{display:grid;gap:0;border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface)}
@media (min-width:940px){.formwrap{grid-template-columns:minmax(0,4fr) minmax(0,6fr)}}
.formwrap__aside{background:var(--feature-bg);padding:clamp(1.5rem,3vw,2.4rem)}
.formwrap__aside ul{list-style:none;margin:1.2rem 0 0;padding:0;display:grid;gap:.7rem}
.formwrap__aside li{display:flex;gap:.6rem;font-size:var(--fs-small);color:var(--text)}
.formwrap__aside li::before{content:"✓";color:var(--accent);font-weight:700;flex:none}
.formwrap__form{padding:clamp(1.5rem,3vw,2.4rem)}
.field{display:grid;gap:.32rem;margin-bottom:.95rem}
.field label{font-size:var(--fs-small);font-weight:620;color:var(--heading)}
.field .hint{font-size:.8rem;color:var(--text-muted)}
.fieldrow{display:grid;gap:.95rem}
@media (min-width:560px){.fieldrow{grid-template-columns:repeat(2,minmax(0,1fr))}}
input,select,textarea{
  font:inherit;font-size:var(--fs-small);width:100%;padding:.72rem .8rem;color:var(--text);
  background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);
  transition:border-color var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease)}
input::placeholder,textarea::placeholder{color:var(--text-faint)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
input:disabled,select:disabled,textarea:disabled{background:var(--surface-muted);color:var(--text-faint);cursor:not-allowed}
input[aria-invalid="true"]{border-color:var(--error);box-shadow:0 0 0 3px var(--error-soft)}
.field__error{font-size:.8rem;color:var(--error)}
fieldset{border:0;margin:0 0 1rem;padding:0}
legend{font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.08em;font-weight:660;
  color:var(--text-muted);padding:0;margin-bottom:.6rem}
.formnote{font-size:.8rem;color:var(--text-muted);margin-top:.9rem}

/* ---------- FAQ ---------- */
.faq{border-top:1px solid var(--border);max-width:78ch}
.faq details{border-bottom:1px solid var(--border)}
.faq summary{
  cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:1.5rem;align-items:flex-start;
  padding:1.05rem .25rem;font-weight:640;color:var(--heading);font-size:1.02rem;line-height:1.4;
  border-radius:var(--radius-sm);
}
.faq summary::-webkit-details-marker{display:none}
.faq summary:hover{color:var(--accent)}
.faq summary:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}
.faq__icon{flex:none;width:1.4rem;height:1.4rem;margin-top:.12rem;border-radius:50%;display:grid;place-items:center;
  color:var(--accent);background:var(--accent-soft);transition:transform var(--dur-2) var(--ease)}
.faq details[open] .faq__icon{transform:rotate(180deg)}
.faq__a{padding:0 .25rem 1.15rem;color:var(--text-muted);max-width:66ch}
.faq__a p{margin:0}
.faq details[open] .faq__a{animation:faqIn var(--dur-3) var(--ease)}
@keyframes faqIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}

/* ---------- article ---------- */
.article{display:grid;gap:clamp(1.75rem,3vw,3rem)}
@media (min-width:1080px){.article{grid-template-columns:minmax(0,16rem) minmax(0,1fr);align-items:start}}
.toc{position:sticky;top:6.5rem;font-size:var(--fs-small)}
.toc summary{font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.09em;color:var(--text-muted);margin-bottom:.7rem;cursor:pointer}
.toc ol{list-style:none;margin:0;padding:0;display:grid;gap:.1rem;border-left:2px solid var(--border)}
.toc a{display:block;padding:.42rem .8rem;color:var(--text-muted);text-decoration:none;
  border-left:2px solid transparent;margin-left:-2px}
.toc a:hover{color:var(--accent)}
.toc a[aria-current="true"]{color:var(--accent);border-left-color:var(--accent);font-weight:620}
.prose{max-width:none}
.prose>*{max-width:var(--measure)}
/* Blocks that are not reading matter break out of the 68ch measure, otherwise a
   3-up card grid inside an article renders 209px tracks (grid-guard violation). */
.prose>:where(.cards,.inline-cta,figure,table,pre){max-width:none}
.prose h2{margin-top:2.2em;font-size:clamp(1.35rem,1.15rem + .7vw,1.7rem)}
.prose h3{margin-top:1.7em}
.prose ul,.prose ol{padding-left:1.15rem;color:var(--text)}
.prose li{margin-bottom:.5em}
.prose li::marker{color:var(--accent)}
.article__meta{display:flex;flex-wrap:wrap;gap:.5rem 1.4rem;font-size:var(--fs-small);color:var(--text-muted);
  margin-top:1.2rem;padding-top:1rem;border-top:1px solid var(--border)}
.callout{border:1px solid var(--border);border-left:3px solid var(--accent);background:var(--surface);
  border-radius:var(--radius);padding:1.05rem 1.2rem;margin:1.6rem 0}
.callout__label{display:block;font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.09em;
  font-weight:660;color:var(--accent);margin-bottom:.4rem}
.callout p{margin:0;color:var(--text)}
.takeaways{background:var(--accent-soft);border:1px solid var(--accent);border-radius:var(--radius-lg);
  padding:1.25rem 1.4rem;margin:2rem 0}
.takeaways h2{font-size:var(--fs-micro)!important;text-transform:uppercase;letter-spacing:.1em;
  color:var(--accent);margin:0 0 .8rem}
.takeaways ul{list-style:none;margin:0;padding:0;display:grid;gap:.55rem}
.takeaways li{display:flex;gap:.6rem;font-size:var(--fs-small);color:var(--text)}
.takeaways li::before{content:"✓";color:var(--accent);font-weight:700;flex:none}
.inline-cta{display:grid;gap:1rem;align-items:center;border:1px solid var(--border);border-radius:var(--radius-lg);
  background:var(--surface);padding:1.25rem 1.4rem;margin:2.2rem 0;box-shadow:var(--shadow-1)}
@media (min-width:720px){.inline-cta{grid-template-columns:minmax(0,1fr) auto}}
.inline-cta h2{margin:0 0 .25rem;font-size:var(--fs-h3)}
.inline-cta p{margin:0;color:var(--text-muted);font-size:var(--fs-small)}

/* ---------- footer ---------- */
.site-footer{
  /* local token scope — the footer is a ground change, so it re-declares the
     roles instead of overriding component colours one by one. */
  --heading:var(--footer-heading);
  --text:var(--footer-text);
  --text-muted:var(--footer-text);
  --text-faint:var(--footer-text);
  --border:var(--footer-border);
  --border-strong:var(--footer-border);
  --accent:var(--footer-accent);
  --accent-hover:var(--footer-accent);
  --focus-ring:var(--footer-accent);
  --secondary-button-text:var(--footer-heading);
  --secondary-button-border:var(--footer-border);
  --secondary-button-bg-hover:var(--on-media-hover);
  background:var(--footer-bg);color:var(--text);
  border-top:1px solid var(--border);padding-block:clamp(2.75rem,5vw,4.5rem) 1.5rem;margin-top:0}
.site-footer a:not(.btn){color:var(--text);text-decoration:none}
.site-footer a:not(.btn):hover{color:var(--accent);text-decoration:underline}
.footer-lead{display:block;gap:1.2rem;padding-bottom:clamp(2rem,4vw,3rem);
  border-bottom:1px solid var(--border);margin-bottom:clamp(2rem,4vw,3rem)}

.footer-lead h2{margin:0}
.footer-grid{display:grid;gap:2rem}
@media (min-width:640px){.footer-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1000px){.footer-grid{grid-template-columns:1.4fr 1fr 1fr 1fr}}
.footer-col h3{font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.1em;
  color:var(--heading);margin:0 0 .8rem}
.footer-col ul{list-style:none;margin:0;padding:0;display:grid;gap:.5rem;font-size:var(--fs-small)}
.footer-brand p{font-size:var(--fs-small);max-width:36ch}
.footer-bottom{margin-top:clamp(2rem,4vw,3rem);padding-top:1.2rem;border-top:1px solid var(--border);
  font-size:var(--fs-small);display:flex;flex-wrap:wrap;gap:.5rem 1rem;justify-content:space-between}
.footer-bottom p{margin:0;max-width:none}

/* ---------- motion ---------- */
[data-reveal]{opacity:0;transform:translateY(10px)}
html.js [data-reveal].is-in,html:not(.js) [data-reveal]{opacity:1;transform:none;
  transition:opacity var(--dur-4) var(--ease),transform var(--dur-4) var(--ease)}
[data-reveal][data-delay="1"].is-in{transition-delay:70ms}
[data-reveal][data-delay="2"].is-in{transition-delay:140ms}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important}
  [data-reveal]{opacity:1!important;transform:none!important}
}
@media print{[data-reveal]{opacity:1!important;transform:none!important}}

.icon-btn{min-width:44px;min-height:44px}.btn{white-space:normal;line-height:1.35;text-align:center;min-height:44px}
.nojs-nav{display:flex;flex-wrap:wrap;gap:1rem}.section-head--center{display:block;text-align:center}.section-head--center .lead{margin-inline:auto}
.email-wrap{overflow-wrap:anywhere}.footer-col>a{display:block;margin-top:.5rem}
@media(max-width:1150px){.nav__cta{display:none}}@media(max-width:380px){.nav{gap:.4rem}.nav__right{gap:.3rem}.brand__name{font-size:.95rem}.brand__tag{font-size:.55rem}.nav__phone{font-size:.78rem}}
.hero__credit{padding-inline:2rem}.hero__media picture{display:block;height:100%}.hero__media .city-video{height:100%}
@media(max-width:680px){.hero__media img{object-position:center 42%}.hero{padding-top:9rem}.work figcaption{font-size:.65rem;letter-spacing:.02em;padding:.9rem .5rem .45rem}}
.work-comparison{margin-top:2.5rem;align-items:center}.section-tail{margin-top:1.75rem}.comparison{margin:0}.comparison-pair{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.comparison-pair img{width:100%;height:auto}
.ba:focus-within{outline:3px solid var(--focus-ring);outline-offset:3px}
html:not(.js) .ba{display:grid;grid-template-columns:1fr 1fr;aspect-ratio:auto;gap:.5rem}html:not(.js) .ba img{position:static;clip-path:none;height:auto}html:not(.js) .ba :is(input,.ba__handle){display:none}
/* Coverage is its own small component, loaded only where the map is used. */
.service-map { --map-land:var(--accent-soft); --map-edge:var(--accent); scroll-margin-top:7rem; }
.service-map [hidden] { display:none!important; }
.service-map__intro { display:block; margin-bottom:2rem; }
.service-map__intro p { max-width:64ch; }
.coverage-market-arrow { position:absolute; right:1rem; top:1rem; font-size:1.3rem; }
.service-map__chips { min-height:3rem; margin-bottom:1.25rem; gap:.5rem; }
.service-map__chip { min-height:44px; padding:.6rem .9rem; font-size:.875rem; }
.service-map__chip[aria-pressed=true] { background:var(--accent); color:var(--accent-on); border-color:var(--accent); }
.service-map__layout { gap:1.5rem; }
.service-map__visual { padding:0; background:none; border:0; box-shadow:none; min-width:0; }
.coverage-stage { position:relative; aspect-ratio:16/11; height:auto; overflow:hidden; border:1px solid var(--border); background:var(--surface); color:var(--heading); isolation:isolate; }
.coverage-reference { position:absolute; inset:0; height:100%; width:100%; }
.coverage-reference path[data-reference-place] { fill:var(--map-land); stroke:var(--map-edge); stroke-width:1; transition:fill .2s; }
.coverage-reference path.is-active { fill:var(--accent); stroke:var(--accent); stroke-width:2; }
.coverage-reference text { fill:var(--text); font-size:11px; font-weight:700; paint-order:stroke; stroke:var(--surface); stroke-width:3px; stroke-linejoin:round; }
.coverage-reference__north { font-size:14px; }
.service-map__canvas { position:absolute; inset:0; width:100%; height:100%; border:0; border-radius:0; background:transparent; visibility:hidden; }
.service-map[data-map-state=ready] .service-map__canvas { visibility:visible; }
.coverage-load { position:absolute; inset-inline:0; bottom:85px; text-align:center; z-index:2; }
.coverage-map-label { position:absolute; bottom:0; inset-inline:0; padding:.8rem 1.1rem; display:grid; gap:.2rem; background:var(--surface-raised); color:var(--text); pointer-events:none; z-index:2; }
.coverage-map-label span { font-weight:700; }
.coverage-map-label small { color:var(--text-muted); font-size:.72rem; line-height:1.5; }
.service-map__canvas .maplibregl-ctrl-bottom-right { bottom:69px; }
.service-map__controls { margin-top:.6rem; }
.service-map__control { min-height:44px; font-size:.875rem; }
.service-map__status { min-height:2.8em; font-size:.8rem; }
.service-map__attribution { font-size:.72rem; }
.service-map__detail { background:var(--surface); padding:1.5rem; border:1px solid var(--border); box-shadow:none; min-width:0; }
.service-map__detail p { font-size:.9375rem; }
.service-map__detail h3 { margin:.5rem 0 1rem; font-size:clamp(1.65rem,2vw,2.2rem); }
.coverage-detail-scope { padding-top:1rem; border-top:1px solid var(--border); }
.service-map__detail-actions { margin-top:1.5rem; flex-direction:column; gap:1rem; align-items:flex-start; }
.service-map__detail-actions .btn { font-size:.8rem; white-space:normal; text-align:center; }
.coverage-zip { border-bottom:1px solid var(--border); padding-bottom:1.3rem; margin-bottom:1.5rem; }
.coverage-zip label { display:block; font-size:.9375rem; font-weight:700; margin-bottom:.7rem; }
.coverage-zip>div:first-of-type { display:flex; gap:.5rem; }
.coverage-zip input { width:0; min-width:0; flex:1; font:inherit; font-size:16px; color:var(--text); background:var(--page-bg); border:1px solid var(--border-strong); padding:.65rem; border-radius:0; }
.coverage-zip .btn { width:auto; flex:none; font-size:.75rem; padding:.65rem .8rem; }
.coverage-zip #zip-note { font-size:.75rem; margin:.7rem 0 0; color:var(--text-muted); }
.coverage-zip-result:not(:empty) { margin-top:.8rem; padding:.85rem; font-size:.875rem; border-left:3px solid var(--accent); background:var(--surface-muted); line-height:1.6; }
.coverage-zip-result a { display:block; margin-top:.5rem; }
.coverage-sources { padding:1rem 0; border-bottom:1px solid var(--border); }
.coverage-sources summary { cursor:pointer; padding:.6rem 0; font-size:.875rem; font-weight:600; }
.coverage-sources p { font-size:.875rem; max-width:90ch; }
.service-map__fallback { background:none; border:0; padding:1.8rem 0 0; }
.coverage-directory { display:grid; grid-template-columns:1fr 1fr; gap:2rem; }
.coverage-directory h3 { font-size:1.25rem; margin-bottom:.5rem; }
.coverage-directory p { font-size:.8rem; color:var(--text-muted); }
.coverage-directory ul { grid-template-columns:1fr 1fr; gap:.6rem; padding:0; }
.coverage-directory a { padding:.75rem; font-size:.9375rem; background:var(--surface); }
.coverage-directory small { font-size:.7rem; margin-top:.25rem; }
.service-map.is-expanded { z-index:10000; background:var(--page-bg); overflow:auto; inset:1rem; padding:1.5rem; }
.service-map.is-expanded .coverage-stage { height:min(65vh,720px); }
.service-map.is-expanded .service-map__canvas { height:100%; }
@media(min-width:1000px) { .service-map__layout { grid-template-columns:minmax(0,1.65fr) minmax(310px,1fr); } }
@media(max-width:680px) {
      .coverage-market-arrow { right:.6rem; font-size:1rem; }
  .coverage-stage { aspect-ratio:4/3; height:auto; }
  .service-map__detail { padding:1.1rem; }
  .coverage-directory { grid-template-columns:1fr; }
  .service-map.is-expanded { inset:0; padding:1rem; }
}
@media(prefers-reduced-motion:reduce) { .coverage-reference path { transition:none; } }

.service-map__layout{display:grid;gap:1.5rem}.coverage-markets{margin-bottom:1.25rem;flex-wrap:wrap;border-radius:var(--radius)}.coverage-markets small,.coverage-market-arrow{display:none}.coverage-markets button{min-height:44px}
.service-map__chips{display:flex;flex-wrap:wrap;gap:.5rem}.service-map__detail{display:flex;flex-direction:column;border-radius:var(--radius-lg)}[data-map-detail]{order:-2}.coverage-zip{order:-1}.service-map__chip,.service-map__control{font:inherit;border:1px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface);color:var(--text);padding:.5rem .8rem;cursor:pointer}
.service-map__controls,.service-map__detail-actions{display:flex;gap:.75rem;flex-wrap:wrap}.coverage-stage{border-radius:var(--radius-lg)}.coverage-directory ul{display:block;list-style:none}.coverage-directory a{display:flex;background:transparent;padding:.85rem .2rem}.coverage-directory a small{font-size:var(--fs-small)}.coverage-directory-disclosure{margin-top:1.5rem}.coverage-directory-disclosure>summary{cursor:pointer;padding:1rem 0;color:var(--accent)}
.service-map.is-expanded{position:fixed}.map-modal-open{overflow:hidden}.coverage-reference path{cursor:pointer}.coverage-map-label small{color:var(--text-muted)}
.maplibregl-ctrl-group{background:var(--surface);border:1px solid var(--border)}.maplibregl-ctrl-group button{color:var(--text)}

.formwrap__aside svg{display:none}.formwrap__aside .form-trust{display:none}.formwrap__aside .btn{margin-top:1rem}.fieldrow{align-items:start}.field{min-width:0}.formwrap legend svg{display:none}.formwrap__form>button[type=submit]{width:100%}.visually-hidden{position:absolute;width:1px;height:1px;clip:rect(0,0,0,0);overflow:hidden;white-space:nowrap}.formwrap__form{min-width:0}.hint,.formnote{font-size:.8rem;color:var(--text-muted)}.req{color:var(--error)}.lead-details{margin-bottom:1rem}.lead-details summary{cursor:pointer;margin-bottom:1rem}.contact-card{align-self:start}
@media(min-width:1080px){.contact-card{position:sticky;top:7rem}.toc summary{list-style:none}.toc summary::-webkit-details-marker{display:none}}
@media(max-width:1079px){.toc{position:static}.toc:not([open]) ol{display:none}}
.article .cards--3{grid-template-columns:1fr}@media(min-width:760px) and (max-width:1079px){.article .cards--3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1080px){.article .cards--3{grid-template-columns:repeat(3,minmax(0,1fr))}}
.local-proof{margin:0;align-self:start}.local-proof img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;object-position:50% 50%;border-radius:var(--radius-lg)}
/* Shared production patterns: preserved booking, gallery, and success contracts. */
[hidden]{display:none!important}button,input,textarea,select{max-width:100%}button{font-family:inherit}figure{margin:0}img{height:auto}svg{flex-shrink:0}ul.cards,ul.gallery{list-style:none;padding:0}main{min-height:50vh}.split>*{min-width:0}.field--full{grid-column:1/-1}.cards .tag{align-self:flex-start}.cards>li{list-style:none}.service-card,.proof-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.35rem}.service-card a,.proof-card a{color:var(--heading)}
.btn:not(.btn--primary){background:var(--secondary-button-bg);color:var(--secondary-button-text);border-color:var(--secondary-button-border)}.btn-row{margin-top:1.25rem}.filters{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.25rem 0}.chip{display:inline-flex;align-items:center;min-height:44px;text-decoration:none;line-height:1.4}.chip svg,.points svg{width:18px;height:18px}.points{list-style:none;padding:0;display:grid;gap:.6rem}.points li{display:flex;gap:.65rem}.formwrap__aside .points li::before{display:none}
.media-figure{margin:0}.media-figure img{width:100%;height:auto}.media-figure figcaption{font-size:var(--fs-micro);color:var(--media-caption);margin-top:.6rem;line-height:1.5}.media-figure figcaption b{display:none}.media-figure__credit{color:inherit}.article-figure{max-width:var(--container);margin:2rem auto}.article-figure img{max-height:36rem;object-fit:contain}.article-figure figcaption{font-size:var(--fs-small);color:var(--text-muted)}
.gallery{list-style:none;padding:0;display:grid;gap:1rem;grid-template-columns:minmax(0,1fr)}@media(min-width:600px){.gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:940px){.gallery{grid-template-columns:repeat(3,minmax(0,1fr))}}
.gallery-item{position:relative;overflow:hidden;border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--border)}.gallery-item img{aspect-ratio:4/3;width:100%;object-fit:cover}.gallery-item figcaption{padding:.75rem;font-size:var(--fs-small)}.gallery-item .tag{margin:.75rem .75rem 0}
.lightbox{border:0;padding:0;background:transparent;max-width:min(94vw,1100px);max-height:92vh}.lightbox::backdrop{background:var(--scrim-strong)}.lightbox-inner{position:relative;background:var(--surface);border-radius:var(--radius-lg);overflow:hidden}.lightbox img{width:100%;max-height:78vh;object-fit:contain}.lightbox figcaption{padding:.7rem 1rem;color:var(--text-muted);font-size:var(--fs-small)}.lightbox-btn{position:absolute;top:8px;width:44px;height:44px;border-radius:var(--radius-pill);border:0;background:var(--scrim-strong);color:var(--on-media-heading);cursor:pointer}.lightbox-close{right:8px}.lightbox-prev{left:8px;top:50%}.lightbox-next{right:8px;top:50%}
.est-progress{display:flex;gap:.5rem;margin-bottom:1rem}.est-progress .seg{flex:1;height:6px;border-radius:var(--radius-sm);background:var(--border)}.est-progress .seg.done,.est-progress .seg.now{background:var(--accent)}.est-nav{display:flex;justify-content:space-between;gap:1rem;margin-top:1rem}.est-steplabel{font-weight:650;color:var(--accent)}[data-inactive]{display:none}.est-review dl{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.5rem;background:var(--surface-muted);padding:1rem}.est-review dd{margin:0;overflow-wrap:anywhere}.form-status{padding:1rem;color:var(--error);background:var(--error-soft);border:1px solid var(--error)}.form-status:empty{display:none}.field-msg{color:var(--error)}.v2-form-success{padding:1.5rem;background:var(--success-soft);color:var(--success)}
.city-video-control{position:absolute;right:1.5rem;bottom:1rem;z-index:3;font:inherit;padding:.65rem;border:1px solid var(--on-media-border-strong);background:var(--scrim-strong);color:var(--on-media-heading);border-radius:var(--radius);min-height:44px}.hero__credit{max-width:75%;font-size:var(--fs-micro)}
.trustbar ul{list-style:none;display:flex;flex-wrap:wrap;gap:1rem;padding:1rem 0}.trustbar li{display:flex;gap:.5rem;align-items:center}.steps>div{border-top:2px solid var(--accent);padding-top:1rem}.step__n{display:none}.step .step__n{display:block}.proof-grid{display:grid;gap:1rem}.hero-media{position:relative}.collage{display:grid;gap:1rem;grid-template-columns:repeat(2,minmax(0,1fr))}.collage .c-tall{grid-row:span 2}.collage img{height:100%;object-fit:cover}.hero-badge,.hero-trustcard{display:flex;align-items:center;gap:.5rem;margin-top:.75rem;color:var(--text-muted)}.contact-markets{display:grid;gap:1.25rem}.on-feature a:not(.btn){color:var(--accent)}
@media(hover:none){.card:hover,.market:hover,.work figure:hover img,.market:hover img{transform:none}}

.drawer-open{overflow:hidden}.footer-grid{align-items:start}.page-hero h1{max-width:26ch}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}

/* ---------- migrated market and capability components ---------- */
.city-strip{position:relative;isolation:isolate;min-height:clamp(18rem,42vw,31rem);overflow:hidden;background:var(--feature-bg)}
.city-strip picture,.city-strip img{position:absolute;inset:0;width:100%;height:100%}
.city-strip img{object-fit:cover;object-position:center 46%}
.city-strip::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,var(--hero-overlay-top),var(--scrim-strong))}
.city-strip__over{position:relative;z-index:1;min-height:inherit;display:flex;align-items:end;padding-block:clamp(2.25rem,6vw,5rem);color:var(--feature-text)}
.city-strip__over h2{max-width:19ch;color:var(--feature-heading);margin-bottom:.45em}
.city-strip__over p:last-child{max-width:62ch;color:var(--feature-text);margin:0}
.city-strip__credit{font-size:var(--fs-micro);color:var(--feature-muted)!important;margin-top:.8rem!important}
.city-strip .eyebrow{color:var(--feature-accent)}
.trustbar{background:var(--surface);border-block:1px solid var(--border)}
.trustbar__grid{display:grid;grid-template-columns:1fr}
@media (min-width:640px){.trustbar__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:960px){.trustbar__grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.trustbar__cell{display:grid;gap:.18rem;padding:1rem 1.2rem;border-top:1px solid var(--border)}
@media (min-width:640px){.trustbar__cell:nth-child(-n+2){border-top:0}.trustbar__cell:nth-child(even){border-left:1px solid var(--border)}}
@media (min-width:960px){.trustbar__cell{border-top:0;border-left:1px solid var(--border)}.trustbar__cell:first-child{border-left:0}}
.trustbar__k,.trustbar__s{font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}
.trustbar__k{font-weight:650}.trustbar__v{font-weight:700;color:var(--heading)}
.service-card{text-decoration:none;color:inherit;min-height:100%;position:relative}
.service-card--wide{grid-column:span 2}.service-card--featured{background:var(--feature-bg);color:var(--feature-text);border-color:var(--feature-border)}
.service-card--featured h3,.service-card--dark h3{color:var(--feature-heading)}
.service-card--featured p,.service-card--dark p{color:var(--feature-text)}
.service-card .more{margin-top:auto;color:var(--accent);font-size:var(--fs-small);font-weight:650}
@media (max-width:599px){.service-card--wide{grid-column:auto}}
.card__link{display:block;margin-top:auto;padding-top:.7rem;color:var(--accent);font-size:var(--fs-small);font-weight:650}.card-link{display:flex;align-items:center;gap:.6em;text-decoration:none;color:inherit}.card-link strong{display:block;color:var(--heading)}.card-link small{color:var(--text-faint)}
.market-list{list-style:none;padding:0;margin:0;display:grid;gap:.6rem}
.market-list li{display:flex;align-items:flex-start;gap:.55rem;padding:.62rem 0;border-bottom:1px solid var(--border);color:var(--text-muted)}
.market-list li svg{color:var(--accent);margin-top:.15rem;flex:none}.market-list li a{color:var(--heading);text-decoration:none;font-weight:620}
.market-list--wide{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:2rem}
.city-cols{display:grid;gap:2rem}.city-cols h3{font-size:var(--fs-h3);margin-bottom:.65rem}
@media (min-width:760px){.city-cols{grid-template-columns:repeat(2,minmax(0,1fr))}}
.quote-factors-details{border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.quote-factors-details summary{cursor:pointer;padding:1rem 0;color:var(--heading);font-weight:650}
.quote-factors-details .spec{padding-bottom:1rem}
@media (max-width:600px){.market-list--wide{grid-template-columns:1fr}}
