/* GENERATED by build_site.py from the approved design sources under design/.
   Do not edit this file. Edit the sources and rebuild. */

/* ==== design/final-homepage/style.css ==== */
/* ==========================================================================
   Chimney Sweep Cornwall NY — FINAL HOMEPAGE
   Design system: PHOTO-FORWARD TRADE (approved Concept C)
   See design/DESIGN-SYSTEM.md. Photography is the layout; type stays quiet.
   ========================================================================== */

:root{
  --black:#0d0f12; --coal:#15181c; --smoke:#22262b; --ash:#8b9299;
  --bone:#eceef0; --paper:#fff;
  /* accent: one hue, three accessible roles — surface, text-on-light, text-on-dark */
  --ember:#b8501f; --ember-dk:#8f3c17; --ember-t:#a8481d; --ember-l:#e07a45;
  --ink:#1b1f24; --body:#4b5158; --hair:#dfe3e6; --hair-d:rgba(255,255,255,.12);
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --wrap:1320px;
  --sec:clamp(3.6rem,2.4rem + 4vw,6.25rem);   /* 58 → 100px */
}
*,*::before,*::after{box-sizing:border-box}
body,h1,h2,h3,p,ul,ol,figure{margin:0}
ul{list-style:none;padding:0}
img{display:block;max-width:100%;height:auto}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{font-family:var(--sans);font-size:17px;line-height:1.7;color:var(--body);background:var(--paper);-webkit-font-smoothing:antialiased}
@media(min-width:900px){body{font-size:18px}}
h1,h2,h3{color:var(--ink);font-weight:740;letter-spacing:-.028em;line-height:1.08}
a{color:var(--ember-t)}
:focus-visible{outline:3px solid var(--ember);outline-offset:3px}
.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:30px}
.tag{font-size:11px;font-weight:800;letter-spacing:.24em;text-transform:uppercase}
.site-nav{display:none}
.skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--black);color:#fff;padding:12px 18px;text-decoration:none}
.skip:focus{left:0}

/* ---------- buttons: one solid accent per view ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:15.5px;
     letter-spacing:.01em;text-decoration:none;padding:16px 28px;border:2px solid transparent;border-radius:2px;
     min-height:52px;transition:background-color .15s,color .15s,border-color .15s}
.btn--e{background:var(--ember);color:#fff}
.btn--e:hover{background:var(--ember-dk);color:#fff}
.btn--g{border-color:rgba(255,255,255,.42);color:#fff}
.btn--g:hover{background:rgba(255,255,255,.12);color:#fff}
.btn--d{background:var(--black);color:#fff}
.btn--d:hover{background:var(--smoke);color:#fff}
.btn--w{background:#fff;color:var(--black)}
.btn--w:hover{background:var(--bone);color:var(--black)}
.acts{display:flex;gap:12px;flex-wrap:wrap}

/* ---------- header: transparent, riding on the hero ---------- */
.hdr{position:absolute;top:0;left:0;right:0;z-index:30}
.hdr__in{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:88px}
.mark{color:#fff;text-decoration:none;font-weight:800;font-size:16.5px;letter-spacing:.06em;line-height:1.1}
.mark em{display:block;font-style:normal;font-size:10px;font-weight:700;letter-spacing:.26em;
         text-transform:uppercase;color:rgba(255,255,255,.6);margin-top:5px}
.hnav{display:flex;gap:28px}
.hnav a{color:rgba(255,255,255,.9);font-size:14.5px;font-weight:600;text-decoration:none}
.hnav a:hover{color:#fff}
.hcall{color:#fff;text-decoration:none;font-weight:700;font-size:15.5px;border:1px solid rgba(255,255,255,.4);
       padding:11px 20px;border-radius:2px;white-space:nowrap}
.hcall:hover{background:rgba(255,255,255,.14);color:#fff}
.nav-btn{display:none;background:none;border:1px solid rgba(255,255,255,.4);border-radius:2px;color:#fff;
         font:inherit;font-size:14px;font-weight:700;padding:10px 14px;cursor:pointer;align-items:center;gap:8px}
.nav-btn i{display:block;width:16px;height:1.5px;background:#fff;position:relative}
.nav-btn i::before,.nav-btn i::after{content:"";position:absolute;left:0;width:16px;height:1.5px;background:#fff}
.nav-btn i::before{top:-5px}.nav-btn i::after{top:5px}

/* ---------- hero: full-bleed photo, directional scrim, left copy ---------- */
.hero{position:relative;background:var(--black);min-height:660px;display:flex;align-items:flex-end}
.hero__img{position:absolute;inset:0}
.hero__img img{width:100%;height:100%;object-fit:cover;object-position:56% center}
.hero::after{content:"";position:absolute;inset:0;
  background:linear-gradient(94deg,rgba(13,15,18,.9) 0%,rgba(13,15,18,.66) 30%,rgba(13,15,18,.1) 62%,rgba(13,15,18,.3) 100%)}
.hero__in{position:relative;z-index:5;width:100%;padding:150px 30px 76px}
.hero .tag{color:var(--ember-l);display:block;margin-bottom:18px}
.hero h1{color:#fff;font-size:clamp(2.35rem,1.5rem + 3.4vw,3.85rem);max-width:16ch;letter-spacing:-.033em}
.hero p{color:rgba(255,255,255,.84);font-size:clamp(1.05rem,1rem + .4vw,1.2rem);max-width:46ch;margin:22px 0 32px}

/* ---------- trust strip: dark, tight, its own band ---------- */
.trust{background:var(--coal)}
.trust ul{display:flex}
.trust li{flex:1;text-align:center;padding:18px 12px;border-left:1px solid var(--hair-d);
          color:#fff;font-size:12.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.trust li:first-child{border-left:0}

/* ---------- sections ---------- */
.sec{padding-block:var(--sec)}
.sec--bone{background:var(--bone)}
.sec--dark{background:var(--black);color:var(--ash)}
.sec--dark h2,.sec--dark h3{color:#fff}
.sec--dark p a,.split__t p a{color:var(--ember-l)}
.hd{max-width:40rem;margin-bottom:48px}
.hd .tag{color:var(--ember-t);display:block;margin-bottom:14px}
.hd h2{font-size:clamp(1.9rem,1.4rem + 2.1vw,2.7rem)}
.hd p{margin-top:16px;max-width:34rem}

/* ---------- featured service: asymmetric, price-led ---------- */
.feat{display:grid;grid-template-columns:1.15fr 1fr;background:var(--black)}
.feat__m{position:relative;min-height:440px}
.feat__m img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.feat__b{padding:56px 54px;color:var(--ash);display:flex;flex-direction:column;justify-content:center}
.feat__b .tag{color:var(--ember-l);display:block;margin-bottom:16px}
.feat__price{font-size:clamp(3.2rem,2.2rem + 3.4vw,4.6rem);font-weight:800;color:#fff;letter-spacing:-.05em;line-height:.9}
.feat__b h2{color:#fff;font-size:clamp(1.55rem,1.25rem + 1.2vw,2.05rem);margin:18px 0 14px}
.feat__b p{max-width:46ch;margin-bottom:28px}

/* ---------- photo rows: used three times, then stop ---------- */
.row{position:relative;display:block;height:320px;overflow:hidden;text-decoration:none;color:#fff;background:var(--black)}
.row+.row{border-top:2px solid #fff}
.row img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.row::after{content:"";position:absolute;inset:0;
  background:linear-gradient(92deg,rgba(13,15,18,.93) 0%,rgba(13,15,18,.74) 46%,rgba(13,15,18,.2) 100%)}
.row__in{position:relative;z-index:4;height:100%;display:flex;flex-direction:column;justify-content:center;
         max-width:var(--wrap);margin-inline:auto;padding:0 30px}
.row .tag{color:var(--ember-l);margin-bottom:12px}
.row h3{color:#fff;font-size:clamp(1.5rem,1.2rem + 1.4vw,2.05rem);margin-bottom:10px}
.row p{color:rgba(255,255,255,.78);max-width:48ch;font-size:16.5px;line-height:1.6}
.row__go{margin-top:16px;font-size:11px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:#fff}
.row:hover .row__go{color:var(--ember-l)}

/* ---------- editorial index: the remaining services, no images ---------- */
.idx{border-top:1px solid var(--hair);margin-top:52px}
.idx li{border-bottom:1px solid var(--hair)}
.idx a{display:grid;grid-template-columns:19rem 1fr auto;gap:34px;align-items:baseline;
       padding:26px 0;text-decoration:none;color:inherit}
.idx a:hover .idx__n{color:var(--ember-t)}
.idx__n{font-size:20px;font-weight:740;color:var(--ink);letter-spacing:-.02em}
.idx__d{color:var(--body);font-size:16px;max-width:58ch}
.idx__go{font-size:11px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--ember-t);white-space:nowrap}

/* ---------- diagnostic split: image bleeds left, text right ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;align-items:center}
.split__m{height:580px}
.split__m img{width:100%;height:100%;object-fit:cover}
.split__t{padding:0 30px 0 70px;max-width:660px}
.split__t .tag{color:var(--ember-l);display:block;margin-bottom:14px}
.split__t h2{font-size:clamp(1.9rem,1.4rem + 2.1vw,2.7rem);margin-bottom:20px}
.split__t p{margin-bottom:18px;max-width:52ch}
.figs{display:flex;gap:44px;margin-top:32px;padding-top:26px;border-top:1px solid var(--hair-d)}
.figs b{display:block;font-size:2.4rem;font-weight:800;color:#fff;letter-spacing:-.035em;line-height:1}
.figs span{font-size:13px;color:var(--ash);display:block;margin-top:6px;max-width:19ch;line-height:1.45}

/* ---------- process: numbered, light ground, one supporting image ---------- */
.proc{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}
.proc__m img{width:100%;aspect-ratio:4/3;object-fit:cover}
.steps{counter-reset:s;display:grid;gap:26px;list-style:none;padding:0;margin:0}
.steps li{position:relative;padding-left:56px}
.steps li::before{counter-increment:s;content:counter(s,decimal-leading-zero);position:absolute;left:0;top:1px;
  font-size:15px;font-weight:800;color:var(--ember-t);letter-spacing:.06em}
.steps h3{font-size:18px;margin-bottom:5px}
.steps p{font-size:16px;line-height:1.6}

/* ---------- service area: photo band + towns ---------- */
.band{position:relative;height:300px;background:var(--black)}
.band img{width:100%;height:100%;object-fit:cover;opacity:.85}
.band::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(13,15,18,.14) 22%,rgba(13,15,18,.66) 64%,rgba(13,15,18,.95) 100%)}
.band__in{position:absolute;inset:auto 0 0 0;z-index:4;max-width:var(--wrap);margin-inline:auto;padding:0 30px 34px}
.band .tag{color:var(--ember-l);display:block;margin-bottom:10px}
.band h2{color:#fff;font-size:clamp(1.8rem,1.4rem + 1.8vw,2.5rem)}
.area{display:grid;grid-template-columns:.9fr 1.1fr;gap:60px;align-items:start}
.alinks{display:grid;gap:2px;margin-top:26px}
.alink{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:17px 20px;
       background:var(--smoke);border-radius:3px;text-decoration:none;color:#fff;font-weight:700;font-size:16.5px}
.alink:hover{background:#2c3138;color:#fff}
.alink span{color:var(--ember-l);font-size:11px;font-weight:800;letter-spacing:.18em;text-transform:uppercase}
.towns{columns:3;column-gap:26px}
.towns li{padding:7px 0;font-size:15.5px;color:var(--ash)}

/* ---------- faq: hairline rows, no boxes ---------- */
.faq{max-width:74ch;border-top:1px solid var(--hair)}
.faq details{border-bottom:1px solid var(--hair)}
.faq summary{cursor:pointer;list-style:none;padding:24px 40px 24px 0;position:relative;
             font-size:18.5px;font-weight:740;color:var(--ink);letter-spacing:-.015em}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";position:absolute;right:6px;top:50%;width:10px;height:10px;
  border-right:2px solid var(--ember-t);border-bottom:2px solid var(--ember-t);
  transform:translateY(-70%) rotate(45deg);transition:transform .15s}
.faq details[open] summary::after{transform:translateY(-20%) rotate(225deg)}
.faq details p{padding-bottom:24px;max-width:68ch}

/* ---------- final CTA: the one accent surface ---------- */
.close{background:var(--ember);color:#fff;padding-block:var(--sec)}
.close__in{display:grid;grid-template-columns:1.25fr auto;gap:56px;align-items:center}
.close h2{color:#fff;font-size:clamp(1.9rem,1.4rem + 2.1vw,2.7rem);max-width:17ch;margin-bottom:16px}
.close p{color:rgba(255,255,255,.94);max-width:46ch}
.close .acts{flex-direction:column;align-items:stretch;gap:14px}

/* ---------- footer ---------- */
footer{background:var(--black);color:#7d848b;padding:76px 0 32px}
footer h3{font-size:11px;font-weight:800;letter-spacing:.22em;text-transform:uppercase;color:#fff;margin-bottom:18px}
footer a{color:#d6dade;text-decoration:none;font-size:15.5px}
footer a:hover{color:#fff}
.fg{display:grid;grid-template-columns:1.8fr 1fr 1fr 1fr;gap:46px}
.fg li{padding:5px 0}
.ftel{font-size:1.75rem;font-weight:800;color:#fff!important;letter-spacing:-.035em;display:block;margin:16px 0 6px}
.fl{border-top:1px solid var(--hair-d);margin-top:52px;padding-top:22px;font-size:13.5px;display:flex;gap:26px;flex-wrap:wrap}

/* ---------- sticky mobile call bar ---------- */
.callbar{display:none}

@media(max-width:980px){
  .hnav,.hcall{display:none}
  .nav-btn{display:inline-flex}
  .hdr__in{min-height:70px}
  .site-nav{display:none;position:absolute;left:0;right:0;top:70px;background:var(--black);padding:8px 30px 22px}
  .site-nav.open{display:block}
  .site-nav a{display:block;color:#fff;text-decoration:none;font-weight:700;font-size:16px;
              padding:14px 0;border-bottom:1px solid var(--hair-d)}

  /* hero: vertical scrim, capped height, action preserved */
  .hero{min-height:0}
  .hero__img img{object-position:62% center}
  .hero::after{background:linear-gradient(180deg,rgba(13,15,18,.78) 0%,rgba(13,15,18,.4) 32%,rgba(13,15,18,.86) 72%,rgba(13,15,18,.95) 100%)}
  .hero__in{padding:120px 30px 44px;min-height:600px;display:flex;flex-direction:column;justify-content:flex-end}
  .hero h1{font-size:2.25rem;max-width:none}
  .hero p{font-size:1.02rem;margin:16px 0 24px}
  .acts .btn{flex:1 1 100%}

  .trust ul{flex-direction:column}
  .trust li{flex:none;text-align:left;padding:14px 30px;border-left:0;border-top:1px solid var(--hair-d)}
  .trust li:first-child{border-top:0}

  .feat{grid-template-columns:1fr}
  .feat__m{min-height:260px}
  .feat__b{padding:36px 30px}
  .row{height:auto;min-height:0}
  .row::after{background:linear-gradient(180deg,rgba(13,15,18,.5) 0%,rgba(13,15,18,.88) 62%)}
  .row img{position:absolute}
  .row__in{height:auto;padding:200px 30px 32px}
  .idx a{grid-template-columns:1fr;gap:6px;padding:20px 0}
  .split{grid-template-columns:1fr}
  .split__m{height:260px}
  .split__t{padding:42px 30px 52px;max-width:none}
  .figs{gap:30px}
  .proc{grid-template-columns:1fr;gap:34px}
  .band{height:220px}
  .area{grid-template-columns:1fr;gap:34px}
  .towns{columns:2}
  .close__in{grid-template-columns:1fr;gap:28px}
  .close .acts{flex-direction:row;flex-wrap:wrap}
  .fg{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 26px}
  .fg>div:first-child{grid-column:1/-1}
  .fg a[href^="mailto:"]{overflow-wrap:anywhere}
  .callbar{display:grid;position:fixed;left:0;right:0;bottom:0;z-index:60;grid-template-columns:1.25fr 1fr;background:var(--coal)}
  .callbar a{display:flex;align-items:center;justify-content:center;min-height:54px;color:#fff;
             text-decoration:none;font-weight:700;font-size:15px}
  .callbar a.p{background:var(--ember)}
  body{padding-bottom:54px}
}

/* ==== design/page-types/page-types.css ==== */
/* ==========================================================================
   Chimney Sweep Cornwall NY — PAGE-TYPE PROTOTYPES
   Loaded AFTER ../final-homepage/style.css, which is the approved
   Concept C system (tokens, header, buttons, trust strip, FAQ, footer).
   Nothing here redefines a token, a button or the footer. Everything here
   is a composition that the homepage does not use.
   ========================================================================== */

/* The overlay header belongs to the homepage. Every other page type carries
   the same header on a solid ground so it can sit above a light hero. */
.hdr--solid{position:static;background:var(--black)}
.hdr--solid .hdr__in{min-height:78px}

.eyebrow{color:var(--ember-t);display:block;margin-bottom:14px}
.eyebrow--l{color:var(--ember-l)}
.rule{width:56px;height:3px;background:var(--ember);margin-bottom:26px}
.lead{font-size:clamp(1.08rem,1rem + .45vw,1.28rem);line-height:1.6}

/* ==========================================================================
   1 · CORE SERVICE PAGE
   ========================================================================== */

/* split hero — dark copy panel, photograph bleeding off the right edge */
.shero{display:grid;grid-template-columns:1fr 1fr;background:var(--black);align-items:stretch}
.shero__t{padding:clamp(3rem,1.6rem + 4vw,5.5rem) 56px clamp(3rem,1.6rem + 4vw,5.5rem) 30px;
          max-width:calc(var(--wrap) / 2);margin-left:auto;width:100%;
          display:flex;flex-direction:column;justify-content:center}
.shero__t h1{color:#fff;font-size:clamp(2.2rem,1.5rem + 2.8vw,3.3rem);letter-spacing:-.033em;max-width:16ch}
.shero__t h1 span{color:var(--ember-l)}
.shero__t p{color:rgba(255,255,255,.82);margin:20px 0 30px;max-width:44ch}
.shero__facts{display:flex;gap:26px;flex-wrap:wrap;margin-top:32px;padding-top:22px;border-top:1px solid var(--hair-d)}
.shero__facts li{color:#fff;font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase}
.shero__m{position:relative;min-height:540px}
.shero__m img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

/* what the inspection covers — prose left, component register right */
.covers{display:grid;grid-template-columns:.85fr 1.15fr;gap:72px;align-items:start}
.covers h2{font-size:clamp(1.85rem,1.4rem + 2vw,2.6rem)}
.covers p{margin-top:18px;max-width:38ch}
.reg{border-top:2px solid var(--ink)}
.reg li{display:grid;grid-template-columns:2.6rem 1fr;gap:18px;align-items:baseline;
        padding:15px 0;border-bottom:1px solid var(--hair)}
.reg b{font-size:12px;font-weight:800;letter-spacing:.14em;color:var(--ember-t)}
.reg span{color:var(--ink);font-size:17px;font-weight:600}
.reg em{display:block;font-style:normal;color:var(--body);font-size:15px;font-weight:400;margin-top:3px}

/* the three NFPA levels — full-width rows, not three equal cards */
.lv{border-top:1px solid var(--hair)}
.lv__r{display:grid;grid-template-columns:15rem 1fr;gap:48px;padding:44px 0;border-bottom:1px solid var(--hair)}
.lv__n{font-size:clamp(2.6rem,2rem + 2vw,3.6rem);font-weight:800;color:var(--ink);
       letter-spacing:-.05em;line-height:.9}
.lv__n em{display:block;font-style:normal;font-size:11px;font-weight:800;letter-spacing:.18em;
          text-transform:uppercase;color:var(--ember-t);margin-top:12px;line-height:1.5}
.lv__b h3{font-size:1.35rem;margin-bottom:12px}
.lv__b p{max-width:62ch}
.lv__b p+p{margin-top:14px}
.trig{margin-top:20px;border-top:1px solid var(--hair);columns:2;column-gap:40px}
.trig li{padding:10px 0;font-size:15.5px;line-height:1.5;border-bottom:1px solid var(--hair);
         break-inside:avoid;padding-left:18px;position:relative}
.trig li::before{content:"";position:absolute;left:0;top:18px;width:7px;height:1px;background:var(--ember-t)}

/* a callout that is a rule and a ground change, not a card */
.callout{border-left:4px solid var(--ember);padding:4px 0 4px 30px;max-width:62ch}
.callout b{display:block;font-size:11px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;
           color:var(--ember-t);margin-bottom:10px}

/* detail image bleeding off the LEFT edge, copy right, dark ground */
.bleed{display:grid;grid-template-columns:1fr 1fr;background:var(--coal);align-items:stretch}
.bleed--r{direction:rtl}
.bleed--r>*{direction:ltr}
.bleed__m{position:relative;min-height:480px}
.bleed__m img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.bleed__t{padding:clamp(3rem,1.8rem + 3vw,4.75rem) 30px clamp(3rem,1.8rem + 3vw,4.75rem) 70px;
          max-width:calc(var(--wrap) / 2);color:var(--ash)}
.bleed__t h2{color:#fff;font-size:clamp(1.75rem,1.35rem + 1.8vw,2.4rem);margin-bottom:18px}
.bleed__t p+p{margin-top:16px}
.bleed__t p{max-width:46ch}

/* related links — a quiet register, never a card grid */
.rel{display:grid;grid-template-columns:1fr 1fr;gap:0 56px;border-top:2px solid var(--ink)}
.rel a{display:flex;justify-content:space-between;align-items:baseline;gap:20px;
       padding:20px 0;border-bottom:1px solid var(--hair);text-decoration:none;color:var(--ink);
       font-weight:700;font-size:17.5px}
.rel a span{font-size:11px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;
            color:var(--ember-t);white-space:nowrap}
.rel a:hover{color:var(--ember-t)}

/* ==========================================================================
   2 · REPAIR HUB — a diagnostic instrument
   ========================================================================== */

.rhero{background:var(--black);padding-block:clamp(3rem,1.8rem + 3.4vw,4.75rem)}
.rhero__in{display:grid;grid-template-columns:1.08fr .92fr;gap:80px;align-items:start}
.rhero h1{color:#fff;font-size:clamp(2.2rem,1.5rem + 2.8vw,3.3rem);letter-spacing:-.033em;max-width:13ch}
.rhero p{color:rgba(255,255,255,.82);margin:20px 0 30px;max-width:46ch}
.jump{border-top:1px solid var(--hair-d)}
.jump b{display:block;font-size:11px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;
        color:var(--ember-l);padding:18px 0 6px}
.jump a{display:block;padding:11px 0;border-top:1px solid var(--hair-d);color:rgba(255,255,255,.88);
        text-decoration:none;font-size:15.5px;font-weight:600}
.jump a:hover{color:var(--ember-l)}

/* symptom → likely cause → where it goes */
.diag{margin-top:6px}
.diag__h{display:grid;grid-template-columns:22rem 1fr 13rem;gap:44px;padding-bottom:14px;
         border-bottom:2px solid var(--ink)}
.diag__h span{font-size:11px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--ember-t)}
.diag__r{display:grid;grid-template-columns:22rem 1fr 13rem;gap:44px;padding:30px 0;
         border-bottom:1px solid var(--hair);align-items:start}
.diag__s{font-size:19px;font-weight:740;color:var(--ink);letter-spacing:-.02em;line-height:1.3}
.diag__s i{display:block;font-style:normal;font-size:12px;font-weight:800;letter-spacing:.16em;
           color:var(--ash);margin-bottom:10px}
.diag__c{font-size:16.5px;line-height:1.62;max-width:62ch}
.diag__g{text-decoration:none;color:var(--ink);font-weight:700;font-size:15.5px;line-height:1.4;
         border-top:2px solid var(--ember);padding-top:12px;display:block}
.diag__g:hover{color:var(--ember-t)}
.diag__g em{display:block;font-style:normal;font-size:10.5px;font-weight:800;letter-spacing:.18em;
            text-transform:uppercase;color:var(--ember-t);margin-top:8px}
.diag__lab{display:none}

/* full-width photograph used as a break, with one line on it */
.pbreak{position:relative;height:340px;background:var(--black);overflow:hidden}
.pbreak img{width:100%;height:100%;object-fit:cover;opacity:.9}
.pbreak::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(13,15,18,.12) 30%,rgba(13,15,18,.9) 100%)}
.pbreak__in{position:absolute;inset:auto 0 0 0;z-index:4;max-width:var(--wrap);margin-inline:auto;
            padding:0 30px 32px;color:#fff;font-size:clamp(1.15rem,1rem + .8vw,1.6rem);
            font-weight:740;letter-spacing:-.025em;line-height:1.25}
.pbreak__in span{max-width:26ch;display:block}

/* what we repair — hairline blocks in a grid, no borders or shadows */
.blocks{display:grid;grid-template-columns:1fr 1fr;gap:0 56px}
.blocks>div{border-top:2px solid var(--ink);padding:26px 0 30px}
.blocks h3{font-size:1.2rem;margin-bottom:10px}
.blocks p{font-size:16.5px;line-height:1.62;max-width:44ch}
.blocks a{display:inline-block;margin-top:14px;font-size:11px;font-weight:800;letter-spacing:.18em;
          text-transform:uppercase;color:var(--ember-t);text-decoration:none}
.blocks a:hover{text-decoration:underline}

/* three causes, three columns, numerals carry the rhythm */
.reasons{display:grid;grid-template-columns:repeat(3,1fr);gap:48px}
.reasons h3{font-size:1.2rem;margin:14px 0 10px}
.reasons b{font-size:11px;font-weight:800;letter-spacing:.2em;color:var(--ember-t)}
.reasons p{font-size:16.5px;line-height:1.62}
.reasons p+p{margin-top:12px}

/* ==========================================================================
   3 · LOCATION PAGE — quieter than the commercial pages
   ========================================================================== */

.lhero{background:var(--bone);padding-block:clamp(3.2rem,2rem + 3.6vw,5.25rem)}
.lhero h1{font-size:clamp(2.1rem,1.45rem + 2.6vw,3.1rem);max-width:20ch;letter-spacing:-.032em}
.lhero p{margin:20px 0 30px;max-width:52ch}
.lhero__meta{margin-top:34px;padding-top:20px;border-top:1px solid #d7dbde;display:flex;gap:28px;
             flex-wrap:wrap;font-size:11px;font-weight:800;letter-spacing:.16em;
             text-transform:uppercase;color:var(--body)}

/* one strong local photograph, full width, no text on it */
.lphoto{height:440px;background:var(--black)}
.lphoto img{width:100%;height:100%;object-fit:cover}
.lcap{background:var(--black);color:var(--ash);font-size:13.5px;padding:14px 0 16px}

/* conditions as a register of labelled observations */
.cond{display:grid;grid-template-columns:.8fr 1.2fr;gap:72px;align-items:start}
.cond h2{font-size:clamp(1.8rem,1.4rem + 1.9vw,2.5rem)}
.cond>div>p{margin-top:18px;max-width:36ch}
.dl{border-top:2px solid var(--ink)}
.dl>div{display:grid;grid-template-columns:13rem 1fr;gap:34px;padding:24px 0;border-bottom:1px solid var(--hair)}
.dl h3{font-size:16.5px;letter-spacing:-.01em;line-height:1.35}
.dl p{font-size:16.5px;line-height:1.62}

.practice{display:grid;grid-template-columns:1fr 1fr;gap:0 56px;margin-top:8px}
.practice li{padding:18px 0 18px 26px;border-bottom:1px solid #d7dbde;position:relative;
             font-size:16.5px;line-height:1.55}
.practice li::before{content:"";position:absolute;left:0;top:28px;width:12px;height:2px;background:var(--ember)}

.inline-links{display:flex;flex-wrap:wrap;gap:0 44px;border-top:2px solid var(--ink)}
.inline-links a{padding:18px 0;border-bottom:1px solid var(--hair);flex:1 1 auto;min-width:16rem;
                text-decoration:none;color:var(--ink);font-weight:700;font-size:16.5px}
.inline-links a:hover{color:var(--ember-t)}

/* ==========================================================================
   4 · BLOG ARTICLE — an editorial reading layout
   ========================================================================== */

/* headline block on black, then the lead photograph uncropped beneath it */
.amast{background:var(--black);padding-block:clamp(3rem,2rem + 2.6vw,4.5rem)}
.amast__in{max-width:47.75rem;margin-inline:auto}  /* content edge matches .art */
.amast h1{color:#fff;font-size:clamp(2.1rem,1.4rem + 2.7vw,3.15rem);letter-spacing:-.033em;max-width:22ch}
.amast__by{margin-top:22px;padding-top:18px;border-top:1px solid var(--hair-d);
           color:rgba(255,255,255,.7);font-size:13.5px;letter-spacing:.02em}
.amast__fig{background:var(--black);padding:0 30px 40px}
.amast__fig img{max-width:980px;margin-inline:auto;width:100%}
.amast__fig figcaption{max-width:980px;margin:14px auto 0;color:var(--ash);font-size:14px;line-height:1.5}

.art{max-width:44rem;margin-inline:auto;font-size:19px;line-height:1.75;color:#3f454b}
.art>p+p{margin-top:22px}
.art .lede{font-size:22px;line-height:1.6;color:var(--ink);font-weight:500}
.art h2{font-size:clamp(1.6rem,1.3rem + 1.2vw,2rem);margin:56px 0 18px;padding-top:26px;
        border-top:1px solid var(--hair)}
.art h3{font-size:1.2rem;margin:34px 0 12px}
.art ul{margin:22px 0}
.art ul li{padding:14px 0 14px 26px;border-bottom:1px solid var(--hair);position:relative;
           font-size:17.5px;line-height:1.6}
.art ul li::before{content:"";position:absolute;left:0;top:24px;width:12px;height:2px;background:var(--ember)}
.art ul li b{color:var(--ink)}
.artfig{margin:40px 0}
.artfig img{width:100%}
.artfig figcaption{margin-top:12px;font-size:14px;color:#6b7278;line-height:1.5}

/* the article's full-width break is typographic, not another photograph */
.statband{background:var(--black);color:var(--ash);padding-block:clamp(3rem,2rem + 2.4vw,4.25rem);margin:56px 0}
.statband__in{display:grid;grid-template-columns:auto 1fr;gap:48px;align-items:center;
              max-width:52rem;margin-inline:auto;padding-inline:30px}
.statband b{font-size:clamp(3.4rem,2.4rem + 3.6vw,5rem);font-weight:800;color:#fff;
            letter-spacing:-.05em;line-height:.88;display:block}
.statband p{font-size:18px;line-height:1.6;max-width:44ch}

.artcta{background:var(--bone);padding:34px 34px 36px;margin:52px 0 8px}
.artcta b{display:block;font-size:11px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;
          color:var(--ember-t);margin-bottom:12px}
.artcta h3{font-size:1.3rem;margin-bottom:10px}
.artcta p{font-size:16.5px;line-height:1.6;margin-bottom:22px}

/* ==========================================================================
   5 · ABOUT — company and fieldwork
   ========================================================================== */

.ahero{background:var(--bone);padding-block:clamp(3.2rem,2rem + 3.6vw,5.25rem)}
.ahero__in{display:grid;grid-template-columns:1fr .92fr;gap:72px;align-items:center}
.ahero h1{font-size:clamp(2.1rem,1.45rem + 2.6vw,3.1rem);max-width:14ch;letter-spacing:-.032em}
.ahero p{margin:20px 0 30px;max-width:46ch}
.ahero__m img{width:100%;aspect-ratio:4 / 5;object-fit:cover}

.prose2{display:grid;grid-template-columns:.8fr 1.2fr;gap:72px;align-items:start}
.prose2 h2{font-size:clamp(1.8rem,1.4rem + 1.9vw,2.5rem)}
.prose2 p{max-width:64ch}
.prose2 p+p{margin-top:18px}
.figwide{margin-top:52px}
.figwide img{width:100%;aspect-ratio:16 / 7;object-fit:cover}
.figwide figcaption{margin-top:12px;font-size:14px;color:#6b7278}

.expect{display:grid;grid-template-columns:1fr 1fr;gap:44px 56px}
.expect>div{border-top:2px solid var(--ink);padding-top:22px}
.expect b{font-size:11px;font-weight:800;letter-spacing:.2em;color:var(--ember-t)}
.expect h3{font-size:1.15rem;margin:12px 0 10px}
.expect p{font-size:16.5px;line-height:1.62}

.scope{background:var(--black);color:var(--ash);padding-block:var(--sec)}
.scope__in{display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:start}
.scope h2{color:#fff;font-size:clamp(1.8rem,1.4rem + 1.9vw,2.5rem);max-width:14ch}
.scope p+p{margin-top:18px}
.scope p{max-width:48ch}

/* ==========================================================================
   6 · CONTACT — the shortest path to a conversation
   ========================================================================== */

.chero{background:var(--black);padding-block:clamp(2.8rem,1.8rem + 3vw,4.25rem)}
.chero h1{color:#fff;font-size:clamp(2.1rem,1.45rem + 2.6vw,3.1rem);letter-spacing:-.032em;max-width:12ch}
.chero p{color:rgba(255,255,255,.82);margin-top:18px;max-width:52ch}

.reach{display:grid;grid-template-columns:1.05fr .95fr;gap:80px;align-items:start}
.bigtel{display:block;font-size:clamp(2.4rem,1.6rem + 3vw,3.6rem);font-weight:800;letter-spacing:-.045em;
        color:var(--ink);text-decoration:none;line-height:1;margin-top:6px}
.bigtel:hover{color:var(--ember-t)}
.reach__lab{font-size:11px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--ember-t)}
.reach__mail{display:block;font-size:19px;font-weight:700;color:var(--ink);text-decoration:none;
             margin-top:6px;overflow-wrap:anywhere}
.reach__mail:hover{color:var(--ember-t)}
.reach hr{border:0;border-top:1px solid var(--hair);margin:34px 0}
.tell{border-top:2px solid var(--ink)}
.tell li{padding:18px 0;border-bottom:1px solid var(--hair);font-size:16.5px;line-height:1.6}
.tell li b{display:block;color:var(--ink);font-size:17px;margin-bottom:4px}

.towns2{columns:3;column-gap:30px;margin-top:26px}
.towns2 li{padding:7px 0;font-size:15.5px;color:var(--body)}

/* ==========================================================================
   Responsive — every page type recomposes, none of them simply stacks
   ========================================================================== */

@media(max-width:980px){
  .shero{grid-template-columns:1fr}
  .shero__m{min-height:300px;order:-1}
  .shero__t{padding:44px 30px 48px;max-width:none;margin-left:0}
  .shero__facts{gap:8px 22px;margin-top:26px}
  .acts .btn{flex:1 1 100%}

  .covers{grid-template-columns:1fr;gap:34px}
  .covers p{max-width:none}
  .lv__r{grid-template-columns:1fr;gap:16px;padding:32px 0}
  .lv__n{display:flex;align-items:baseline;gap:16px;font-size:2.2rem}
  .lv__n em{margin-top:0;max-width:none}
  .trig{columns:1}
  .callout{padding-left:22px}

  .bleed{grid-template-columns:1fr}
  .bleed--r{direction:ltr}
  .bleed__m{min-height:260px}
  .bleed__t{padding:40px 30px 46px;max-width:none}
  .bleed__t p{max-width:none}
  .rel{grid-template-columns:1fr}

  .rhero__in{grid-template-columns:1fr;gap:38px}
  .jump{border-top:1px solid var(--hair-d)}
  .diag__h{display:none}
  .diag__r{grid-template-columns:1fr;gap:14px;padding:26px 0}
  .diag__lab{display:block;font-size:10.5px;font-weight:800;letter-spacing:.18em;
             text-transform:uppercase;color:var(--ash);margin-bottom:8px}
  .diag__g{border-top:0;padding-top:0;display:inline-block;color:var(--ember-t)}
  .diag__g em{margin-top:4px}
  .pbreak{height:240px}
  .blocks{grid-template-columns:1fr;gap:0}
  .reasons{grid-template-columns:1fr;gap:32px}

  .lphoto{height:280px}
  .cond{grid-template-columns:1fr;gap:32px}
  .cond>div>p{max-width:none}
  .dl>div{grid-template-columns:1fr;gap:8px;padding:20px 0}
  .practice{grid-template-columns:1fr}
  .inline-links{gap:0}
  .inline-links a{min-width:100%}

  .amast__fig{padding:0 0 30px}
  .amast__fig figcaption{padding-inline:30px}
  .art{font-size:17.5px}
  .art .lede{font-size:19.5px}
  .art h2{margin:42px 0 16px}
  .statband__in{grid-template-columns:1fr;gap:20px}
  .statband{margin:44px 0}
  .artcta{padding:28px 26px 30px}

  .ahero__in{grid-template-columns:1fr;gap:34px}
  .ahero__m{order:-1}
  .ahero__m img{aspect-ratio:4 / 3}
  .prose2{grid-template-columns:1fr;gap:26px}
  .figwide img{aspect-ratio:4 / 3}
  .expect{grid-template-columns:1fr;gap:30px}
  .scope__in{grid-template-columns:1fr;gap:26px}
  .scope h2,.scope p{max-width:none}

  .reach{grid-template-columns:1fr;gap:44px}
  .reach__mail{font-size:16.5px}
  .towns2{columns:2}
}

/* ---------- repair hub: photographic plate + instrument bar ---------- */
.rtop{position:relative;height:420px;background:var(--black);display:flex;align-items:flex-end;overflow:hidden}
.rtop img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.rtop::after{content:"";position:absolute;inset:0;
  background:linear-gradient(94deg,rgba(13,15,18,.9) 0%,rgba(13,15,18,.6) 42%,rgba(13,15,18,.18) 100%)}
.rtop__in{position:relative;z-index:4;width:100%;padding-bottom:44px}
.rtop h1{color:#fff;font-size:clamp(2.2rem,1.5rem + 2.8vw,3.3rem);letter-spacing:-.033em;max-width:13ch}
.rbar{background:var(--coal);padding-block:40px}
.rbar__in{display:grid;grid-template-columns:1.08fr .92fr;gap:80px;align-items:start}
.rbar p{color:rgba(255,255,255,.82);margin-bottom:26px;max-width:46ch}
.rbar + .trust{border-top:1px solid var(--hair-d)}
@media(max-width:980px){
  .rtop{height:330px}
  .rtop__in{padding-bottom:32px}
  .rtop::after{background:linear-gradient(180deg,rgba(13,15,18,.45) 0%,rgba(13,15,18,.9) 100%)}
  .rbar__in{grid-template-columns:1fr;gap:34px}
  .rbar p{max-width:none}
}

/* ==== design/production.css ==== */
/* ==========================================================================
   PRODUCTION-ONLY ADDITIONS
   Loaded after the two approved design sources. Everything here is either a
   component no prototype needed (breadcrumbs, the two hubs, legal copy, 404)
   or an alias that lets the authored content in content.py express itself in
   the approved system. Nothing here redefines a token, a button colour, the
   header, the footer or any approved composition.
   ========================================================================== */

/* ---------- breadcrumb: part of the header stack, not a section ---------- */
.crumbs{background:var(--coal);border-top:1px solid var(--hair-d)}
.crumbs ol{display:flex;flex-wrap:wrap;gap:0 10px;list-style:none;margin:0;padding:11px 0;
           font-size:12px;letter-spacing:.02em;color:var(--ash)}
.crumbs li+li::before{content:"/";margin-right:10px;color:rgba(255,255,255,.28)}
.crumbs a{color:rgba(255,255,255,.72);text-decoration:none}
.crumbs a:hover{color:#fff}
.crumbs span{color:#fff}

/* ---------- button aliases used by the authored copy ---------- */
.btn--primary{background:var(--ember);color:#fff}
.btn--primary:hover{background:var(--ember-dk);color:#fff}
.btn--line{border-color:var(--ink);color:var(--ink)}
.btn--line:hover{background:var(--ink);color:#fff}
.btn--light{background:#fff;color:var(--black)}
.btn--light:hover{background:var(--bone);color:var(--black)}
.btn--ghost-light{border-color:rgba(255,255,255,.42);color:#fff}
.btn--ghost-light:hover{background:rgba(255,255,255,.12);color:#fff}
.btn--sm{padding:12px 20px;min-height:44px;font-size:14.5px}
.btn-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px}
.btn-row--tight{margin-top:20px}

/* ---------- small type utilities used inline in the copy ---------- */
.eyebrow{display:block;font-size:11px;font-weight:800;letter-spacing:.24em;
         text-transform:uppercase;margin-bottom:14px;color:var(--ember-t)}
.sec--dark .eyebrow,.eyebrow--l{color:var(--ember-l)}
.mt0{margin-top:0}
.small{font-size:14.5px}
.muted{color:#6b7278}
.sec--dark .muted{color:var(--ash)}
p.lede{font-size:clamp(1.08rem,1rem + .45vw,1.28rem);line-height:1.6;color:var(--ink)}
.sec--dark p.lede{color:#fff}

/* ---------- prose rhythm inside authored sections ---------- */
.sec p+p,.sec p+ul,.sec ul+p,.sec p+ol,.sec ol+p{margin-top:16px}
.sec h2{font-size:clamp(1.8rem,1.4rem + 1.9vw,2.5rem);margin-bottom:18px}
.sec h2+p{margin-top:0}
.sec h3{font-size:1.25rem;margin:30px 0 10px}
.sec .wrap>p,.sec .wrap>h2,.sec .wrap>h3{max-width:64ch}
.sec--dark{color:var(--ash)}
.sec--dark a{color:var(--ember-l)}
.sec strong{color:var(--ink);font-weight:700}
.sec--dark strong{color:#fff}

/* ---------- standalone photo figure (photos.render) ---------- */
.shot{margin:40px 0 0}
.shot img{width:100%}
.shot--portrait img{max-width:480px}
.shot--detail img{max-width:920px}
.shot--wide img,.shot--hero img{max-width:100%}

/* ---------- service-area hub: photograph with an overlapping panel ---------- */
.hubhero{position:relative;background:var(--black);padding-bottom:0}
.hubhero__m{height:440px}
.hubhero__m img{width:100%;height:100%;object-fit:cover}
.hubhero .wrap{position:relative}
.hubhero__panel{position:relative;margin-top:-140px;background:var(--black);
                padding:44px 52px 48px;max-width:640px;z-index:4}
.hubhero__panel h1{color:#fff;font-size:clamp(2.1rem,1.45rem + 2.6vw,3.1rem);letter-spacing:-.032em}
.hubhero__panel p{color:rgba(255,255,255,.84);margin-top:18px;max-width:44ch}
.townbig{columns:4;column-gap:30px;margin-top:8px}
.townbig li{padding:8px 0;font-size:16px;break-inside:avoid}

/* ---------- blog hub: masthead, one featured piece, then a varied list ---------- */
.bmast{background:var(--black);padding-block:clamp(3rem,2rem + 3vw,4.75rem)}
.bmast__in{display:grid;grid-template-columns:1.1fr .9fr;gap:64px;align-items:end}
.bmast h1{color:#fff;font-size:clamp(2.2rem,1.5rem + 2.8vw,3.3rem);letter-spacing:-.033em}
.bmast .lead{color:rgba(255,255,255,.82)}
.feat-post{display:grid;grid-template-columns:1.1fr .9fr;background:var(--coal);align-items:stretch}
.feat-post__m{position:relative;min-height:400px}
.feat-post__m img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.feat-post__b{padding:clamp(2.4rem,1.6rem + 2.4vw,3.6rem) 54px;color:var(--ash);
              display:flex;flex-direction:column;justify-content:center}
.feat-post__b b{display:block;font-size:11px;font-weight:800;letter-spacing:.2em;
                text-transform:uppercase;color:var(--ember-l);margin-bottom:14px}
.feat-post__b h2{color:#fff;font-size:clamp(1.6rem,1.3rem + 1.4vw,2.2rem);margin-bottom:14px}
.feat-post__b h2 a{color:inherit;text-decoration:none}
.feat-post__b h2 a:hover{color:var(--ember-l)}
.feat-post__b p{max-width:46ch}
.feat-post__b .go{margin-top:22px;font-size:11px;font-weight:800;letter-spacing:.2em;
                  text-transform:uppercase;color:var(--ember-l);text-decoration:none}
.posts{border-top:2px solid var(--ink)}
.posts li{border-bottom:1px solid var(--hair)}
.posts a{display:grid;grid-template-columns:4rem 1fr 7rem;gap:34px;align-items:baseline;
         padding:28px 0;text-decoration:none;color:inherit}
.posts b{font-size:11px;font-weight:800;letter-spacing:.2em;color:var(--ember-t)}
.posts h3{font-size:1.3rem;margin:0 0 8px;color:var(--ink);letter-spacing:-.02em}
.posts a:hover h3{color:var(--ember-t)}
.posts p{font-size:16.5px;line-height:1.6;max-width:62ch}
.posts .go{font-size:11px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;
           color:var(--ember-t);white-space:nowrap;text-align:right}

/* ---------- article body: the approved reading layout, applied to authored copy ---------- */
.artbody{font-size:19px;line-height:1.75;color:#3f454b}
.artbody .sec>.wrap{max-width:47.75rem}
.artbody .sec{padding-block:0}
.artbody .sec:first-child{padding-top:clamp(2.6rem,1.8rem + 2.4vw,3.8rem)}
.artbody .sec:last-child{padding-bottom:clamp(3rem,2rem + 3vw,4.75rem)}
.artbody h2{font-size:clamp(1.6rem,1.3rem + 1.2vw,2rem);margin:52px 0 18px;padding-top:26px;
            border-top:1px solid var(--hair)}
.artbody .sec:first-child>.wrap>h2:first-child{margin-top:0;padding-top:0;border-top:0}
.artbody h3{font-size:1.2rem;margin:34px 0 12px}
.artbody .sec p+p{margin-top:22px}
.artbody .sec .wrap>p{max-width:none}
.artbody .practice{grid-template-columns:1fr;margin:22px 0}
.artbody .practice li{font-size:17.5px}
.artbody .callout{margin:34px 0}
.artbody .shot{margin:40px 0}
.artbody .shot img{max-width:100%}
.amast__fig img.is-portrait{max-width:520px}

/* full-width typographic break inside an article */
.statband{background:var(--black);color:var(--ash)}

/* ---------- legal copy: restrained, readable, no photography ---------- */
.chero--tight{padding-block:clamp(2.2rem,1.6rem + 2vw,3.2rem)}
.legalbody{font-size:17.5px;line-height:1.75}
.legalbody .sec>.wrap{max-width:44rem}
.legalbody .sec{padding-block:0}
.legalbody .sec:first-child{padding-top:clamp(2.6rem,1.8rem + 2.4vw,3.8rem)}
.legalbody .sec:last-child{padding-bottom:clamp(3rem,2rem + 3vw,4.75rem)}
.legalbody h2{font-size:1.4rem;margin:40px 0 12px}
.legalbody .sec:first-child>.wrap>h2:first-child{margin-top:0}
.legalbody .practice{grid-template-columns:1fr;margin:18px 0}

/* ---------- 404: the system, lightly ---------- */
.e404{background:var(--black);color:var(--ash);min-height:70vh;display:flex;align-items:center;
      padding-block:clamp(3rem,2rem + 3vw,5rem)}
.e404 b{display:block;font-size:11px;font-weight:800;letter-spacing:.24em;text-transform:uppercase;
        color:var(--ember-l);margin-bottom:16px}
.e404 h1{color:#fff;font-size:clamp(2.1rem,1.5rem + 2.4vw,3rem);letter-spacing:-.032em;max-width:16ch}
.e404 p{margin:18px 0 8px;max-width:52ch}
.e404 .rel{border-top-color:rgba(255,255,255,.28);margin-top:38px}
.e404 .rel a{color:#fff;border-bottom-color:var(--hair-d)}
.e404 .rel a span{color:var(--ember-l)}
.e404 .rel a:hover{color:var(--ember-l)}

/* ---------- ground-sensitive tweaks for shared components ---------- */
.sec .towns li,.sec--bone .towns li{color:var(--body)}
.sec--bone .practice li,.sec--bone .idx li{border-color:#d7dbde}
.sec .practice li{border-bottom-color:var(--hair)}
.sec--dark .practice li{border-bottom-color:var(--hair-d)}
.sec--dark .dl>div,.sec--dark .dl{border-color:var(--hair-d)}
.sec--dark .reg li{border-bottom-color:var(--hair-d)}
.sec--dark .reg{border-top-color:#fff}
.sec--dark .reg span,.sec--dark h3{color:#fff}
.sec--dark .reg em{color:var(--ash)}

@media(max-width:980px){
  .hubhero__m{height:280px}
  .hubhero__panel{margin-top:-80px;padding:32px 30px 36px;max-width:none}
  .townbig{columns:2}
  .bmast__in{grid-template-columns:1fr;gap:22px;align-items:start}
  .feat-post{grid-template-columns:1fr}
  .feat-post__m{min-height:240px;order:-1}
  .feat-post__b{padding:34px 30px 38px}
  .feat-post__b p{max-width:none}
  .posts a{grid-template-columns:1fr;gap:8px;padding:24px 0}
  .posts .go{text-align:left}
  .artbody{font-size:17.5px}
  .artbody h2{margin:40px 0 16px}
  .crumbs ol{font-size:11.5px}
}

/* ---------- components the authored copy needs inside the content column ---------- */

/* adjacent sections on the same ground read as one band */
.sec--bone + .sec--bone,.sec--dark + .sec--dark{padding-top:0}
.sec:not(.sec--bone):not(.sec--dark) + .sec:not(.sec--bone):not(.sec--dark){padding-top:0}

/* text + photograph inside the wrap (prose_split / split) */
.wsplit{display:grid;grid-template-columns:1.08fr .92fr;gap:60px;align-items:start}
.wsplit--flip .wsplit__t{order:2}
.wsplit--flip .wsplit__m{order:1}
.wsplit__m img{width:100%;aspect-ratio:4 / 3;object-fit:cover}
.wsplit__t>p:first-child{margin-top:0}

/* the $69 offer, on a dark ground */
.offerblk{display:grid;grid-template-columns:auto 1fr;gap:64px;align-items:start}
.offerblk__price{font-size:clamp(3rem,2.2rem + 3vw,4.4rem);font-weight:800;color:#fff;
                 letter-spacing:-.05em;line-height:.88;margin:0}
.offerblk__price span{display:block;font-size:11px;font-weight:800;letter-spacing:.2em;
                      text-transform:uppercase;color:var(--ember-l);margin-bottom:14px;
                      letter-spacing:.2em;line-height:1.4}
.offerblk h2{color:#fff}
.offerblk p{max-width:52ch}

/* featured service block without its photograph */
.feat__b--solo{background:var(--black);padding:clamp(2.4rem,1.6rem + 2.4vw,3.4rem) 54px;color:var(--ash)}
.feat__b--solo h3,.feat__b--solo h2{color:#fff}
.feat .btn--line,.feat__b--solo .btn--line{border-color:rgba(255,255,255,.42);color:#fff}
.feat .btn--line:hover,.feat__b--solo .btn--line:hover{background:rgba(255,255,255,.12);color:#fff}
.feat h3{color:#fff;font-size:clamp(1.5rem,1.25rem + 1.1vw,1.95rem);margin-bottom:14px}
.feat__b p{max-width:46ch}

/* a photographic break with nothing written on it */
.pbreak--plain::after{display:none}
.pbreak--plain{height:360px}

/* town links that carry a line of description */
.alinks--desc{gap:2px}
.alink--desc{align-items:flex-start;padding:20px 22px}
.alink--desc b{font-weight:700}
.alink--desc em{display:block;font-style:normal;font-weight:400;font-size:15px;line-height:1.55;
                color:var(--ash);margin-top:6px;max-width:46ch}

/* callout title as authored */
.callout__title{display:block;font-size:11px;font-weight:800;letter-spacing:.2em;
                text-transform:uppercase;color:var(--ember-t);margin-bottom:10px}
.sec--dark .callout__title{color:var(--ember-l)}
.sec--dark .callout{border-left-color:var(--ember-l)}

@media(max-width:980px){
  .wsplit{grid-template-columns:1fr;gap:28px}
  .wsplit--flip .wsplit__t{order:1}
  .wsplit--flip .wsplit__m{order:0}
  .offerblk{grid-template-columns:1fr;gap:24px}
  .feat__b--solo{padding:34px 30px 38px}
  .pbreak--plain{height:240px}
  .alink--desc em{max-width:none}
}

/* prose sections inside a reading column stay single-column */
.artbody .prose2,.legalbody .prose2{grid-template-columns:1fr;gap:0}
.artbody .prose2>div:first-child h2,.legalbody .prose2>div:first-child h2{margin-bottom:18px}
.artbody .prose2>div:first-child h2{padding-top:26px;border-top:1px solid var(--hair)}
.artbody .sec:first-child .prose2>div:first-child h2{padding-top:0;border-top:0}

/* the dark scope band is not a .sec--dark, so it needs its own link colour */
.scope a{color:var(--ember-l)}
.scope strong{color:#fff}
.e404 a{color:var(--ember-l)}
.e404 .wrap{width:100%}

/* ==== design/rr-additions.css ==== */
/* Rank & Rent additions (2026-10): location-page visuals, dense link sections, Services hub.
   Uses only the approved tokens. */
.lfig{margin:0}
.lfig img,.lfig .ph{display:block;width:100%;aspect-ratio:3/2;object-fit:cover;background:var(--smoke)}
.lfig--wide img,.lfig--wide .ph{aspect-ratio:16/9}
.lfig figcaption{font-size:13.5px;color:var(--body);padding-top:10px;max-width:60ch}
.sec--dark .lfig figcaption{color:var(--ash)}
.ph{display:flex;align-items:center;justify-content:center;text-align:center;padding:24px;
  color:#fff;font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  background:repeating-linear-gradient(135deg,var(--smoke) 0 14px,var(--coal) 14px 28px)}
.lpair{display:grid;grid-template-columns:1fr 1.1fr;gap:clamp(28px,4vw,64px);align-items:center}
.lpair--flip .lpair__m{order:-1}
.lpair__t>*+*{margin-top:16px}
.lmap{position:relative;width:100%;height:440px;background:var(--bone);border:1px solid var(--hair)}
.lmap iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.locality-map{width:100%;background:var(--bone);border:1px solid var(--hair)}
.locality-map iframe{display:block;width:100%;aspect-ratio:auto!important;height:440px!important}
.locality-map+p,.lmap+p{font-size:13.5px;color:var(--body);margin-top:10px}
.lgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:0 44px;border-top:2px solid var(--ink)}
.lgrid a{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:15px 0;
  border-bottom:1px solid var(--hair);color:var(--ink);font-weight:650;text-decoration:none}
.lgrid a span{font-size:11px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--ember-t)}
.lgrid a:hover{color:var(--ember-t)}
.sec--dark .lgrid{border-top-color:rgba(255,255,255,.28)}
.sec--dark .lgrid a{color:#fff;border-bottom-color:var(--hair-d)}
.sec--dark .lgrid a span{color:var(--ember-l)}
.sec--dark .lgrid a:hover{color:var(--ember-l)}
.lgrid+p{margin-top:26px}
@media (max-width:980px){
  .lpair{grid-template-columns:1fr}
  .lpair--flip .lpair__m{order:0}
  .lgrid{grid-template-columns:1fr 1fr;gap:0 28px}
  .lmap{height:320px}
  .locality-map iframe{height:320px!important}
}
@media (max-width:560px){.lgrid{grid-template-columns:1fr}}
