@layer measure, tap;

/* A plate the build filled with a real photograph. The family's own container
   keeps its size, its corners and any mask it applies; the picture is sized to
   fill that box rather than the box being resized to the picture, so placing a
   photograph never changes the composition. In its own layer so a family that
   wants different behaviour simply wins. */


@font-face{font-family:"Inter Variable";src:url("./fonts/inter-latin-standard-normal.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap;}
@font-face{font-family:"IBM Plex Mono";src:url("./fonts/ibm-plex-mono-latin-500-normal.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap;}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body,h1,h2,h3,h4,p,figure,blockquote,dl,dd,ul,ol{margin:0}
ul[class],ol[class]{list-style:none;padding:0}
img,svg,video{display:block;max-width:100%}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:0;cursor:pointer;padding:0}
a{color:inherit}

:root{
  --ink:#111d31;
  --paper:#f2f5fa;
  --deep:#16294a;
  --deep-ink:#dfe8f5;
  --accent:#e2622c;
  --accent-ink:#1f1e1d;
  --accent-ink-raw:#fff6f1;
  --muted:#4f6079;
  --muted-deep:#8793a4;
  --muted-ink:#798699;
  --muted-tint:#4f6079;
  --muted-raw:#4f6079;
  --accent-read:#a34720;
  --accent-read-deep:#e46f3d;
  --accent-read-ink:#e2622c;
  --hairline:rgba(17,29,49,.16);
  --hair-strong:rgba(17,29,49,0.34);
  /* The paper values again under stable names, so a light card nested in a dark
     section can put back what it inherited (see deepGroundFix). */
  --muted-paper:#4f6079;
  --accent-read-paper:#a34720;
  --hairline-raw:rgba(17,29,49,.16);
  --hair-strong-raw:rgba(17,29,49,0.34);
  --tint-1:#e8ebf1;
  --tint-2:#dee2e8;
  --deep-tint:#263858;
  --accent-soft:rgba(226,98,44,0.14);

  --ff-display:"Inter Variable", system-ui, -apple-system, "Segoe UI", sans-serif;
  --ff-body:"Inter Variable", system-ui, -apple-system, "Segoe UI", sans-serif;
  --ff-accent:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --fw-display:600;
  --fw-body:400;
  --tr-display:-0.045em;
  --measure:66ch;
  --measure-cap:74ch;

  --fs--2: clamp(0.592rem, 0.485rem + 0.00vw, 0.592rem);
  --fs--1: clamp(0.769rem, 0.631rem + 0.00vw, 0.769rem);
  --fs-0: clamp(1.000rem, 0.820rem + 0.00vw, 1.000rem);
  --fs-1: clamp(1.092rem, 0.895rem + 0.62vw, 1.300rem);
  --fs-2: clamp(1.149rem, 0.942rem + 1.24vw, 1.690rem);
  --fs-3: clamp(1.274rem, 1.045rem + 1.86vw, 2.197rem);
  --fs-4: clamp(1.657rem, 1.358rem + 2.48vw, 2.856rem);
  --fs-5: clamp(2.153rem, 1.766rem + 3.10vw, 3.713rem);
  --fs-6: clamp(2.800rem, 2.296rem + 3.72vw, 4.827rem);
  --fs-7: clamp(3.639rem, 2.984rem + 4.34vw, 6.275rem);

  --u:9px;
  --gap:calc(var(--u) * 3);
  --section-y-base:clamp(3.1rem, 5.6vw + 1.5rem, 6.2rem);
  --section-y:var(--section-y-base);
  --page:1280px;
  --gutter:clamp(18px, 4.2vw, 46px);
  --r1:0px;--r2:12px;--r3:2px;

  --ease:cubic-bezier(.22,.61,.36,1);
  --ease-out:cubic-bezier(.16,1,.3,1);
  --dur:.45s;
}

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--ff-body);
  font-weight:var(--fw-body);
  font-size:var(--fs-0);
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}

h1,h2,h3,h4{
  font-family:var(--ff-display);
  font-weight:var(--fw-display);
  letter-spacing:var(--tr-display);
  line-height:1.02;
  
  text-wrap:balance;
}
p{text-wrap:pretty}

.shell{width:100%;max-width:var(--page);margin-inline:auto;padding-inline:var(--gutter)}
.wide{width:100%;max-width:calc(var(--page) + 200px);margin-inline:auto;padding-inline:var(--gutter)}
.measure{max-width:var(--measure)}

.eyebrow{
  font-family:var(--ff-accent);
  font-size:var(--fs--2);
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--muted);
  font-weight:600;
}

.ic{flex:none}

/* focus that is visible on both paper and deep surfaces */
:where(a,button,[tabindex]):focus-visible{
  outline:2px solid var(--accent);
  outline-offset:3px;
  border-radius:2px;
}
.skip{
  position:absolute;left:-9999px;top:0;z-index:999;
  background:var(--ink);color:var(--paper);padding:12px 18px;
}
.skip:focus{left:8px;top:8px}

/* --- motion: opt-in, reveal-on-scroll, fully disabled when asked --- */
[data-reveal]{opacity:0;transform:translateY(16px)}
[data-reveal].is-in{opacity:1;transform:none;transition:opacity var(--dur) var(--ease-out),transform var(--dur) var(--ease-out)}
[data-reveal][data-reveal-delay="1"].is-in{transition-delay:.07s}
[data-reveal][data-reveal-delay="2"].is-in{transition-delay:.14s}
[data-reveal][data-reveal-delay="3"].is-in{transition-delay:.21s}
[data-reveal][data-reveal-delay="4"].is-in{transition-delay:.28s}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  [data-reveal]{opacity:1!important;transform:none!important}
}

/* --- measure: no line of running text may run to 200 characters ---
   Paragraphs only. li and dd are layout containers as often as they are prose
   — capping them collapsed three section grids to 60% of the page the first
   time this shipped — so they are left to the family that laid them out. */
@layer measure{
  p,.demo-form output{max-width:min(100%,var(--measure-cap))}
}

/* --- tap targets ---
   Touch-sized hit areas for navigation furniture, up to 900px — a tablet is a
   touch device even though it is not a phone. Declared in the lowest
   cascade layer on purpose: a family's own responsive rules are unlayered, so
   its display:none at mobile still wins and the kit can never resurrect a
   control the family deliberately hid. */
@layer tap{
  @media (max-width:900px){
    :where(header,nav,footer,[data-menu],[data-navbar],[data-sbar]) :is(a[href],button,summary,[role="button"]){
      min-height:44px;
      min-width:2.75rem;
      display:inline-flex;
      align-items:center;
    }
    :where(header,nav,footer,[data-menu],[data-navbar],[data-sbar]) :is(a[href],button):has(>svg){
      min-width:44px;
      justify-content:center;
    }
    /* A phone number or email address is a primary action wherever it sits,
       so it earns a full hit area even outside the navigation. */
    :is(a[href^="tel:"],a[href^="mailto:"]):not(:where(p,dd) *){
      min-height:44px;
      display:inline-flex;
      align-items:center;
    }
  }
}

/* --- preview banner: every prospect site must say what it is --- */
.preview-note{
  background:var(--ink);color:var(--paper);
  font-family:var(--ff-accent);font-size:12px;line-height:1.45;
  letter-spacing:.02em;
  padding:10px var(--gutter);
  display:flex;gap:10px;align-items:baseline;justify-content:center;
  text-align:center;flex-wrap:wrap;
  position:relative;z-index:60;
}
.preview-note b{font-weight:700;letter-spacing:.1em;text-transform:uppercase;font-size:11px}
.preview-note span{opacity:.82;max-width:54ch}

/* --- demo-safe forms: nothing is collected or sent --- */
.demo-form output{display:block;font-size:var(--fs--1);color:var(--muted);margin-top:calc(var(--u)*1.5)}
.demo-form output:empty{display:none}

.hours-tbl{border-collapse:collapse;margin:clamp(20px,2.4vw,30px) 0 0;min-width:min(100%,264px);
  font-variant-numeric:tabular-nums;text-align:left;color:inherit}
.hours-tbl caption{text-align:left;font-family:var(--ff-accent);font-size:.64rem;letter-spacing:.14em;
  text-transform:uppercase;padding-bottom:9px;color:inherit}
.hours-tbl th{text-align:left;font-weight:400;font-family:var(--ff-accent);font-size:.72rem;
  letter-spacing:.08em;text-transform:uppercase;padding:8px 26px 8px 0;white-space:nowrap;
  border-top:1px solid color-mix(in srgb, currentColor 22%, transparent);color:inherit}
.hours-tbl td{text-align:right;font-size:.9rem;padding:8px 0;color:inherit;
  border-top:1px solid color-mix(in srgb, currentColor 22%, transparent)}


/* ============ TRUSTED HOME SERVICE ============ */

body{background:var(--paper);color:var(--ink)}

/* --- utility strip (setting 0) --- */
.util{background:var(--deep);color:var(--deep-ink)}
.util-in{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 22px;
  padding-block:9px;font-size:.78rem;letter-spacing:.01em}
.util p{color:rgba(223,232,245,0.82)}
.util p span{margin:0 9px;color:rgba(223,232,245,0.56)}
.util a{display:inline-flex;align-items:center;gap:7px;text-decoration:none;color:rgba(223,232,245,0.82);
  min-width:0;overflow-wrap:anywhere}
.util a:hover{color:var(--accent-read-deep)}

/* --- header shell, shared by all three mastheads --- */
.hd{position:sticky;top:0;z-index:50;background:var(--paper);border-bottom:1px solid rgba(17,29,49,0.14);
  transition:box-shadow .3s var(--ease)}
.hd.is-stuck{box-shadow:0 2px 14px rgba(17,29,49,0.1)}
.mark{display:flex;align-items:center;gap:12px;text-decoration:none;min-width:0}
.mark-badge{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:var(--r2);
  background:var(--deep);color:var(--deep-ink);font-family:var(--ff-display);font-weight:var(--fw-display);
  font-size:1.16rem;line-height:1}
.mark-text{display:grid;gap:3px;min-width:0}
.mark-name{font-family:var(--ff-display);font-weight:var(--fw-display);font-size:1.06rem;line-height:1.1;
  letter-spacing:-.015em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mark-kind{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:rgb(90,98,112);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav{display:flex;gap:clamp(12px,1.8vw,28px);justify-content:flex-end}
.nav a{font-size:.9rem;font-weight:600;text-decoration:none;padding:10px 0;white-space:nowrap;position:relative}
.nav a::after{content:"";position:absolute;left:0;right:100%;bottom:4px;height:2px;background:var(--accent);
  transition:right .28s var(--ease-out)}
.nav a:hover::after{right:0}
.hd-act{display:flex;align-items:center;gap:12px}
.hd-tel{display:flex;align-items:center;gap:10px;min-height:48px;padding:0 4px;text-decoration:none;color:var(--ink)}
.hd-tel svg{flex:none;color:var(--accent-read)}
.hd-tel-txt{display:grid;gap:1px}
.hd-tel-txt span{font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:rgb(90,98,112)}
.hd-tel-txt b{font-family:var(--ff-display);font-weight:var(--fw-display);font-size:1.06rem;letter-spacing:-.015em;line-height:1.1;white-space:nowrap}
.hd-tel:hover b{color:var(--accent-read)}
.hd-cta{display:inline-flex;align-items:center;min-height:48px;padding:0 22px;border-radius:var(--r2);
  background:var(--accent);color:var(--accent-ink);font-size:.88rem;font-weight:700;letter-spacing:.01em;
  text-decoration:none;white-space:nowrap;transition:filter .22s,transform .22s var(--ease)}
.hd-cta:hover{filter:brightness(1.07);transform:translateY(-1px)}
.burger{display:none;width:46px;height:46px;flex-direction:column;justify-content:center;align-items:center;gap:5px}
.burger span{display:block;width:22px;height:2px;background:var(--ink);transition:transform .3s var(--ease),opacity .25s}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* masthead 0 — one bar, three columns */
.hd-in{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:clamp(14px,2.4vw,40px);min-height:78px}

/* masthead 1 — name and number on the bar, links on a ruled band beneath */
.hd-bar{display:flex;align-items:center;justify-content:space-between;gap:clamp(14px,2.4vw,40px);min-height:74px}
.hd-band{border-top:1px solid rgba(17,29,49,0.14);background:var(--tint-1)}
.hd-band-in{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:44px}
.hd-band-in .nav{justify-content:flex-start;gap:clamp(14px,2.2vw,32px)}
.hd-band-in .nav a{padding:11px 0;font-size:.86rem}
.hd-band-meta{font-size:.76rem;font-weight:600;color:rgb(90,98,112);text-align:right;min-width:0;overflow-wrap:anywhere}
.hd-band-meta span{margin:0 8px;color:rgba(17,29,49,0.62)}

/* masthead 2 — status line, name, then a numbered contents index */
.hd--rec{border-bottom-width:2px;border-bottom-color:rgba(17,29,49,0.62)}
.hd-status{background:var(--deep);color:var(--deep-ink)}
.hd-status-in{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 20px;
  padding-block:7px;font-size:.74rem;letter-spacing:.02em}
.hd-status-in p{color:rgba(223,232,245,0.8)}
.hd-status-in p span{margin:0 8px;color:rgba(223,232,245,0.56)}
.hd-status-in a{display:inline-flex;align-items:center;gap:7px;color:rgba(223,232,245,0.8);text-decoration:none;
  min-width:0;overflow-wrap:anywhere}
.hd-status-in a:hover{color:var(--accent-read-deep)}
.hd-main{display:grid;grid-template-columns:auto auto;align-items:center;justify-content:space-between;
  gap:clamp(14px,2.4vw,40px);min-height:72px}
.hd-index{border-top:1px solid rgba(17,29,49,0.14)}
.hd-index-in{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:46px}
.hd-index-in ol{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 clamp(16px,2.4vw,34px);margin:0;padding:0;list-style:none}
.hd-index-in li{display:flex;align-items:baseline;gap:7px}
.hd-index-in em{font-style:normal;font-size:10px;font-weight:700;letter-spacing:.12em;color:var(--accent-read)}
.hd-index-in a{font-size:.86rem;font-weight:600;text-decoration:none;padding:11px 0;white-space:nowrap}
.hd-index-in a:hover{color:var(--accent-read)}
.hd-index-tel{font-family:var(--ff-display);font-weight:var(--fw-display);font-size:1rem;letter-spacing:-.015em;
  white-space:nowrap}

.menu{position:fixed;inset:0;z-index:49;background:var(--deep);color:var(--deep-ink);display:none;
  flex-direction:column;justify-content:space-between;gap:30px;padding:104px var(--gutter) 40px;overflow-y:auto}
.menu[data-open]{display:flex}
.menu nav{display:grid;gap:2px}
.menu nav a{font-family:var(--ff-display);font-weight:var(--fw-display);font-size:clamp(1.6rem,7vw,2.4rem);
  letter-spacing:-.025em;text-decoration:none;padding:10px 0;min-height:48px;
  border-bottom:1px solid rgba(223,232,245,0.16)}
.menu-foot{display:grid;gap:10px}
.menu-tel{display:inline-flex;align-items:center;gap:10px;font-family:var(--ff-display);font-weight:var(--fw-display);
  font-size:1.5rem;text-decoration:none;color:var(--accent-read-deep)}
.menu-foot a{text-decoration:none;color:rgba(223,232,245,0.86);width:fit-content;min-width:0;overflow-wrap:anywhere}
.menu-foot p{display:flex;gap:12px;font-size:.88rem;color:rgba(223,232,245,0.66)}
.menu-foot p span{min-width:72px;color:rgba(223,232,245,0.56)}

/* --- hero, shared type --- */
.hero-eyebrow{font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  color:rgb(90,98,112);margin-bottom:clamp(16px,2.2vw,26px)}
.hero-eyebrow i{color:var(--accent-read);font-style:normal;margin:0 5px}
.hero-h{font-size:clamp(2.1rem,4.6vw,3.7rem);line-height:1.04;max-width:18ch}
.hero-h .hl-1{color:#5e6675}
.hero-lead{margin-top:clamp(16px,2vw,24px);font-size:var(--fs-1);line-height:1.6;color:#354051;max-width:52ch}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:clamp(24px,3vw,36px)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:54px;padding:0 28px;
  border-radius:var(--r2);background:var(--accent);color:var(--accent-ink);font-size:.95rem;font-weight:700;
  text-decoration:none;border:0;transition:filter .22s,transform .22s var(--ease)}
.btn:hover{filter:brightness(1.07);transform:translateY(-1px)}
.btn svg{transition:transform .25s var(--ease-out)}
.btn:hover svg{transform:translateX(4px)}
.btn--wide{width:100%}
.btn-line{display:inline-flex;align-items:center;min-height:54px;padding:0 26px;border-radius:var(--r2);
  border:1.5px solid rgba(17,29,49,0.28);font-size:.95rem;font-weight:600;text-decoration:none;color:var(--ink);
  transition:border-color .22s,background .22s}
.btn-line:hover{border-color:var(--ink);background:rgba(17,29,49,0.05)}

/* --- hero 0: the board --- */
.hero--board{background:var(--deep);color:var(--deep-ink);background-image:url("./assets/grid.svg");
  background-size:cover;background-position:center}
.hero--board .hero-eyebrow{color:rgba(223,232,245,0.62)}
.hero--board .hero-h .hl-1{color:rgba(223,232,245,0.6)}
.hero--board .hero-lead{color:rgba(223,232,245,0.8)}
.hero--board .btn-line{border-color:rgba(223,232,245,0.56);color:var(--deep-ink)}
.hero--board .btn-line:hover{border-color:var(--deep-ink);background:rgba(223,232,245,0.08)}
.hero-in{display:grid;grid-template-columns:minmax(0,1.18fr) minmax(320px,.82fr);gap:clamp(28px,4vw,64px);
  padding-block:clamp(40px,5.4vw,84px);align-items:start}
.hero-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:clamp(20px,2.4vw,30px);padding:0;list-style:none}
.hero-chips li{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:var(--r2);
  border:1px solid rgba(223,232,245,0.3);font-size:.82rem;font-weight:600;color:rgba(223,232,245,0.86)}
.hero-chips svg{color:var(--accent-read-deep)}

.disp{background:var(--paper);color:var(--ink);border-radius:var(--r2);padding:clamp(22px,2.6vw,32px);
  display:grid;gap:16px;align-content:start;box-shadow:0 18px 40px rgba(22,41,74,0.35);
  border-top:5px solid var(--accent)}
.disp-label{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:rgb(90,98,112)}
.disp-tel{font-family:var(--ff-display);font-weight:var(--fw-display);font-size:clamp(1.7rem,3.2vw,2.5rem);
  line-height:1.02;letter-spacing:-.035em;text-decoration:none;margin-top:-4px;word-break:break-word}
.disp-tel:hover{color:var(--accent-read)}
.disp-tel--mail{font-size:clamp(1.1rem,2vw,1.4rem);letter-spacing:-.01em}
.disp-hours{width:100%;border-collapse:collapse;margin-top:2px}
.disp-hours caption{text-align:left;font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:rgb(90,98,112);padding-bottom:8px;border-bottom:1px solid rgba(17,29,49,0.28)}
.disp-hours th,.disp-hours td{padding:9px 0;font-size:.9rem;text-align:left;border-bottom:1px solid rgba(17,29,49,0.14)}
.disp-hours th{font-weight:600;color:#5e6675}
.disp-hours td{text-align:right;font-weight:600}
.disp-facts{display:grid;gap:9px;padding:0;list-style:none}
.disp-facts li{display:flex;gap:10px;font-size:.88rem;line-height:1.45;color:#354051;min-width:0}
.disp-facts svg{flex:none;margin-top:2px;color:var(--accent-read)}
.disp-facts a,.disp-facts span{min-width:0;overflow-wrap:anywhere;text-decoration:none}
.disp-alt{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-size:.85rem;font-weight:600;
  text-decoration:none;color:var(--accent-read);border-top:1px solid rgba(17,29,49,0.14);padding-top:14px}
.disp-alt:hover{color:var(--ink)}

/* --- hero 1: the call sheet --- */
.hero--sheet{display:flex;flex-direction:column;background:var(--paper);border-bottom:1px solid rgba(17,29,49,0.28)}
.hero-sheet{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;
  gap:clamp(26px,4vw,64px);padding-block:clamp(46px,6.4vw,104px) clamp(30px,4vw,56px)}
.hero-sheet-main{flex:1 1 520px;min-width:0}
.hero-sheet-side{flex:0 1 270px;min-width:0;border-top:2px solid var(--ink);padding-top:14px}
.hero-sheet-k{font-size:10.5px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:rgb(90,98,112);
  margin-bottom:10px}
.hero-sheet-side .hero-lines{display:grid;gap:0;margin:0;padding:0;list-style:none}
.hero-sheet-side .hero-lines li{display:flex;align-items:baseline;gap:11px;padding:10px 0;
  border-bottom:1px solid rgba(17,29,49,0.14);font-size:.98rem;font-weight:600;min-width:0;overflow-wrap:anywhere}
.hero-sheet-side .hero-lines em{font-style:normal;font-size:10px;font-weight:700;letter-spacing:.12em;
  color:var(--accent-read);flex:none}
.hero-h--big{font-size:clamp(2.4rem,6vw,5rem);line-height:1;letter-spacing:-.03em;max-width:15ch}
.hero--sheet .hero-lead{font-size:var(--fs-2);max-width:46ch;color:#354051}
.sheet-strip{border-top:2px solid var(--ink);background:var(--tint-1)}
.sheet-dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:0;margin:0;
  padding-block:0}
.sheet-dl>div{min-width:0;padding:clamp(18px,2vw,24px) clamp(14px,1.8vw,26px) clamp(18px,2vw,24px) 0;
  border-right:1px solid rgba(17,29,49,0.14)}
.sheet-dl>div:last-child{border-right:0}
.sheet-dl>div:not(:first-child){padding-left:clamp(14px,1.8vw,26px)}
.sheet-dl dt{font-size:10.5px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:rgb(90,98,112);
  margin-bottom:8px}
.sheet-dl dd{margin:0;font-size:.98rem;font-weight:600;line-height:1.5;min-width:0;overflow-wrap:anywhere}
.sheet-dl a{text-decoration:none;border-bottom:1px solid rgba(17,29,49,0.28)}
.sheet-dl a:hover{color:var(--accent-read)}
/* An email address is one unbreakable word, so an equal share of the band
   splits it across two lines mid-domain. It gets a wider share instead, and
   only breaks when even that is not enough. */
.sheet-dl-mail{grid-column:span 2}
@media (max-width:900px){.sheet-dl-mail{grid-column:auto}}
.sheet-dl-mail dd{overflow-wrap:break-word}
.sheet-dl-mail dd{font-weight:500;font-size:.92rem}

/* --- hero 2: the record --- */
.hero--rec{display:grid;background:var(--tint-1);border-bottom:1px solid rgba(17,29,49,0.28)}
.hero-rec{display:grid;grid-template-columns:minmax(0,.46fr) minmax(0,1.3fr) minmax(280px,.78fr);
  gap:clamp(22px,3.4vw,54px);padding-block:clamp(34px,4.4vw,64px);align-items:start}
.hero-rail{display:grid;gap:9px;align-content:start;border-top:2px solid var(--ink);padding-top:14px}
.hero-rail-k{font-size:10.5px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--accent-read)}
.hero-rail-v{font-size:.9rem;font-weight:600;color:#354051;line-height:1.45}
.hero-h--rec{font-size:clamp(1.8rem,3vw,2.7rem);line-height:1.08;max-width:16ch}
.hero--rec .hero-lead{max-width:44ch}
.hero-call{border-top:2px solid var(--accent);background:var(--paper);border-radius:0 0 var(--r2) var(--r2);
  padding:clamp(18px,2.2vw,26px);display:grid;gap:13px;align-content:start;
  box-shadow:0 10px 26px rgba(17,29,49,0.08)}
.hero-call-k{font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:rgb(90,98,112)}
.hero-call-tel{font-family:var(--ff-display);font-weight:var(--fw-display);font-size:clamp(1.45rem,2.4vw,1.95rem);
  letter-spacing:-.03em;line-height:1.05;text-decoration:none;word-break:break-word}
.hero-call-tel:hover{color:var(--accent-read)}
.hero-call-tel--mail{font-size:1.05rem;letter-spacing:-.01em}
.hero-call .hero-call-hours{display:grid;gap:7px;margin:0;padding:0;list-style:none;
  border-top:1px solid rgba(17,29,49,0.14);padding-top:12px}
.hero-call .hero-call-hours li{display:flex;justify-content:space-between;gap:14px;font-size:.88rem}
.hero-call .hero-call-hours span{color:#5e6675;font-weight:600}
.hero-call .hero-call-hours b{font-weight:700}
.hero-call-addr{display:flex;gap:9px;font-size:.86rem;line-height:1.45;color:#354051;min-width:0}
.hero-call-addr svg{flex:none;margin-top:2px;color:var(--accent-read)}
.hero-call-addr span{min-width:0;overflow-wrap:anywhere}

/* --- the movable dark ground --- */
[data-ground="deep"]{background:var(--deep);color:var(--deep-ink);
  background-image:url("./assets/concrete.svg");background-size:cover}
[data-ground="deep"] .eyebrow{color:var(--accent-read-deep)}
[data-ground="deep"] .sh h2{color:var(--deep-ink)}

/* --- section headers --- */
.sh{display:grid;gap:10px;padding-block:var(--section-y) clamp(24px,2.6vw,38px);max-width:54ch}
.sh h2{font-size:var(--fs-4)}
.sh--flush{padding-top:0}
.rec-sec .sh--flush,.cov .sh--flush,.qa .sh--flush{padding-top:0}

/* --- services --- */
.svc{padding-bottom:var(--section-y)}
.svc-lead{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:clamp(18px,2.6vw,36px);align-items:center;
  border:1px solid rgba(17,29,49,0.28);border-left:4px solid var(--accent);border-radius:var(--r2);
  padding:clamp(22px,2.6vw,34px);background:var(--tint-1)}
.svc-lead-ic{color:var(--accent-read);flex:none}
.svc-lead-tag{font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:rgb(90,98,112);margin-bottom:8px}
.svc-lead h3{font-size:var(--fs-3);line-height:1.06}
.svc-lead-p{margin-top:10px;font-size:1rem;line-height:1.6;color:#354051;max-width:54ch}
.svc-lead-cta{display:inline-flex;align-items:center;gap:9px;min-height:50px;padding:0 22px;border-radius:var(--r2);
  border:1.5px solid rgba(17,29,49,0.28);font-size:.88rem;font-weight:700;text-decoration:none;white-space:nowrap;
  transition:background .22s,color .22s,border-color .22s}
.svc-lead-cta:hover{background:var(--deep);color:var(--deep-ink);border-color:var(--deep)}
.chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px;padding:0;list-style:none}
.chips li{font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:rgb(90,98,112);
  border:1px solid rgba(17,29,49,0.28);border-radius:var(--r3);padding:5px 11px}
.svc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;margin-top:clamp(24px,3vw,40px);
  border-top:1px solid rgba(17,29,49,0.28)}
.svc-cell{padding:clamp(22px,2.6vw,34px) clamp(20px,2.4vw,32px);border-bottom:1px solid rgba(17,29,49,0.14);
  border-right:1px solid rgba(17,29,49,0.14);min-width:0}
.svc-cell:nth-child(even){border-right:0}
.svc-cell-top{display:flex;align-items:center;gap:14px}
.svc-cell-ic{color:var(--accent-read);flex:none}
.svc-cell h3{font-size:var(--fs-1);line-height:1.12}
.svc-cell p{margin-top:11px;font-size:.96rem;line-height:1.6;color:#354051;max-width:46ch}

/* services, setting 1: the quoted schedule */
.svc-sched{width:100%;border-collapse:collapse;text-align:left;margin-top:4px}
.svc-sched thead th{font-size:10.5px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:rgb(90,98,112);
  padding:0 20px 11px 0;border-bottom:2px solid var(--ink);vertical-align:bottom}
.svc-sched thead th:last-child{padding-right:0}
.svc-sched tbody th,.svc-sched tbody td{padding:clamp(16px,1.9vw,22px) 20px clamp(16px,1.9vw,22px) 0;
  border-bottom:1px solid rgba(17,29,49,0.14);vertical-align:top}
.svc-sched tbody td:last-child{padding-right:0}
.svc-sched tbody th{width:30%;font-size:1.06rem;font-weight:700;letter-spacing:-.01em;line-height:1.2}
.svc-sched-name{display:flex;align-items:flex-start;gap:12px}
.svc-sched-ic{color:var(--accent-read);flex:none;margin-top:-1px}
.svc-sched td{font-size:.96rem;line-height:1.58;color:#354051}
.svc-sched-terms{font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:rgb(90,98,112);
  line-height:1.7}
.svc-sched tbody tr:hover{background:var(--tint-1)}

/* services, setting 2: the spec sheet */
.svc-spec{display:grid;margin:0;border-top:2px solid var(--ink)}
.svc-spec-row{display:grid;grid-template-columns:minmax(0,.4fr) minmax(0,1fr) auto;
  gap:clamp(14px,2.6vw,40px);align-items:start;padding:clamp(20px,2.4vw,30px) 0;border-bottom:1px solid rgba(17,29,49,0.14)}
.svc-spec dt{font-family:var(--ff-display);font-weight:var(--fw-display);font-size:var(--fs-2);line-height:1.1;
  letter-spacing:-.02em;display:grid;gap:8px;min-width:0}
.svc-spec-no{font-family:var(--ff-body);font-size:10.5px;font-weight:700;letter-spacing:.14em;color:var(--accent-read)}
.svc-spec dd{margin:0;min-width:0}
.svc-spec dd p{font-size:1rem;line-height:1.62;color:#354051;max-width:54ch}
.svc-spec dd .chips{margin-top:12px}
.svc-spec-ic{color:rgba(17,29,49,0.62);flex:none}
.svc-spec-row:hover .svc-spec-ic{color:var(--accent-read)}

/* --- process: the flow line --- */
.flow-sec{padding-bottom:var(--section-y);border-block:1px solid rgba(17,29,49,0.14)}
.flow-in{display:flex;flex-wrap:wrap;align-items:flex-end;gap:clamp(20px,3vw,48px)}
.flow-head{flex:1 1 360px;margin:0}
.flow-act{flex:0 1 auto;display:flex;align-items:center;gap:clamp(12px,2vw,22px);padding-bottom:6px}
.flow-tel{display:inline-flex;align-items:center;gap:9px;min-height:44px;text-decoration:none;
  font-weight:700;font-size:.95rem;color:var(--ink)}
.flow-tel svg{color:var(--accent-read)}
.flow{flex:1 1 100%;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:0;position:relative;
  list-style:none;padding:0;margin:clamp(30px,4vw,52px) 0 0}
.flow::before{content:"";position:absolute;left:0;right:0;top:9px;height:2px;background:rgba(17,29,49,0.2)}
.flow>li{position:relative;padding:0 clamp(14px,2vw,30px) 0 0;min-width:0}
.flow-mark{display:block;width:20px;height:20px;border-radius:50%;border:2px solid var(--accent);
  background:var(--paper);position:relative;z-index:1}
.flow-mark::after{content:"";position:absolute;inset:4px;border-radius:50%;background:var(--accent)}
.flow-no{margin-top:18px;font-size:10.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-read)}
.flow>li h3{margin-top:10px;font-size:var(--fs-1);line-height:1.12}
.flow-p{margin-top:10px;font-size:.94rem;line-height:1.6;color:#354051}
.flow-sec[data-ground="deep"] .flow::before{background:rgba(223,232,245,0.24)}
.flow-sec[data-ground="deep"] .flow-mark{background:var(--deep)}
.flow-sec[data-ground="deep"] .flow-no{color:var(--accent-read-deep)}
.flow-sec[data-ground="deep"] .flow-p{color:rgba(223,232,245,0.76)}
.flow-sec[data-ground="deep"] .flow-tel{color:var(--deep-ink)}
.flow-sec[data-ground="deep"] .flow-tel svg{color:var(--accent-read-deep)}

/* --- coverage --- */
.cov{border-block:1px solid rgba(17,29,49,0.14)}
.cov:not([data-ground]){background:var(--tint-1)}
.cov-in{display:grid;grid-template-columns:minmax(0,.66fr) minmax(0,1fr) minmax(0,1.04fr);grid-template-rows:auto auto;
  column-gap:clamp(26px,4vw,64px);padding-block:var(--section-y);align-items:start}
.cov-cap{grid-column:1;grid-row:2;margin-top:12px;font-size:10.5px;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:rgb(90,98,112);line-height:1.5;min-width:0;overflow-wrap:anywhere}
.cov-body{grid-column:2;grid-row:1/3}
.cov-plate{position:relative;aspect-ratio:1/1;border:1px solid rgba(17,29,49,0.28);border-radius:var(--r2);overflow:hidden;
  background:var(--paper) url("./assets/grid-light.svg") center/cover;display:grid;place-items:center;align-content:center;gap:10px}
.cov-cross{position:absolute;inset:0;
  background:linear-gradient(rgba(17,29,49,0.22) 0 0) 50% 0/1px 100% no-repeat,
             linear-gradient(rgba(17,29,49,0.22) 0 0) 0 50%/100% 1px no-repeat}
.cov-pin{position:relative;display:grid;place-items:center;width:52px;height:52px;border-radius:50%;
  background:var(--accent);color:var(--accent-ink)}
.cov-city{position:relative;font-family:var(--ff-display);font-weight:var(--fw-display);font-size:1.1rem;
  letter-spacing:-.02em;text-align:center;background:var(--paper);color:var(--ink);padding:4px 12px;border-radius:var(--r3)}
.cov-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 clamp(20px,3vw,48px);
  padding:0;margin:0;list-style:none;border-top:1px solid rgba(17,29,49,0.28)}
.cov-list li{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid rgba(17,29,49,0.14);min-width:0}
.cov-key{font-size:10.5px;font-weight:700;letter-spacing:.1em;color:var(--accent-read);flex:none}
.cov-name{font-size:1rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cov-rule{flex:1 1 auto;min-width:10px;height:1px;background:rgba(17,29,49,0.22)}
.cov-base{margin-top:18px;display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:.9rem;color:#354051}
.cov-base svg{color:var(--accent-read)}
.cov-base a{color:var(--accent-read);font-weight:700}
.cov-jobs{grid-column:3;grid-row:1/3;align-self:start;border-top:1px solid rgba(17,29,49,0.28);padding-top:clamp(18px,2.2vw,26px)}
.cov-jobs h3{font-size:1.02rem;letter-spacing:-.01em;margin-bottom:12px}
.cov-jobs ul{padding:0;margin:0;list-style:none}
.cov-jobs li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 16px;
  align-items:baseline;padding:11px 0;border-bottom:1px solid rgba(17,29,49,0.14)}
.job-title{font-size:.96rem;font-weight:600;min-width:0;overflow-wrap:anywhere}
.job-loc{font-size:.86rem;color:rgb(90,98,112)}
.job-tags{grid-column:1/-1;font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:rgb(90,98,112)}
.job-note{margin-top:14px;font-size:.78rem;color:rgb(90,98,112);font-style:italic}
.cov[data-ground="deep"] .cov-key,.cov[data-ground="deep"] .cov-base svg,
.cov[data-ground="deep"] .cov-base a{color:var(--accent-read-deep)}
.cov[data-ground="deep"] .cov-cap,.cov[data-ground="deep"] .job-loc,
.cov[data-ground="deep"] .job-tags,.cov[data-ground="deep"] .job-note{color:rgba(223,232,245,0.62)}
.cov[data-ground="deep"] .cov-base{color:rgba(223,232,245,0.8)}
.cov[data-ground="deep"] .cov-list,.cov[data-ground="deep"] .cov-jobs{border-top-color:rgba(223,232,245,0.56)}
.cov[data-ground="deep"] .cov-list li,.cov[data-ground="deep"] .cov-jobs li{border-bottom-color:rgba(223,232,245,0.56)}
.cov[data-ground="deep"] .cov-rule{background:rgba(223,232,245,0.24)}

/* --- on record --- */
.rec-sec{padding-block:var(--section-y)}
.rec{display:grid;margin:0;border-top:2px solid var(--ink)}
.rec-row{display:grid;grid-template-columns:minmax(0,.32fr) minmax(0,1fr);gap:clamp(14px,3vw,40px);
  padding:clamp(16px,2vw,24px) 0;border-bottom:1px solid rgba(17,29,49,0.14)}
.rec-row dt{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:rgb(90,98,112);padding-top:.3em}
.rec-row dd{margin:0;display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:10px 24px;min-width:0}
.rec-val{font-family:var(--ff-display);font-weight:var(--fw-display);font-size:1.22rem;letter-spacing:-.02em;
  min-width:0;overflow-wrap:anywhere}
.rec-src{font-size:.78rem;color:rgb(90,98,112)}
.rec-src--none{font-style:italic}
a.rec-src{text-decoration:underline;text-underline-offset:3px;color:var(--accent-read)}
.rec-table{width:100%;border-collapse:collapse;text-align:left}
.rec-table thead th{font-size:10.5px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:rgb(90,98,112);
  padding:0 20px 11px 0;border-bottom:2px solid var(--ink)}
.rec-table thead th:last-child{padding-right:0;text-align:right}
.rec-table tbody th,.rec-table tbody td{padding:clamp(15px,1.8vw,21px) 20px;border-bottom:1px solid rgba(17,29,49,0.14);
  vertical-align:baseline;padding-left:0}
.rec-table tbody td:last-child{padding-right:0;text-align:right}
.rec-table tbody th{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:rgb(90,98,112);width:28%}
.rec-sec[data-ground="deep"] .rec,.rec-sec[data-ground="deep"] .rec-table thead th{border-top-color:#dfe8f5;border-bottom-color:#dfe8f5}
.rec-sec[data-ground="deep"] .rec-row,.rec-sec[data-ground="deep"] .rec-table tbody th,
.rec-sec[data-ground="deep"] .rec-table tbody td{border-bottom-color:rgba(223,232,245,0.56)}
.rec-sec[data-ground="deep"] .rec-row dt,.rec-sec[data-ground="deep"] .rec-table th,
.rec-sec[data-ground="deep"] .rec-src{color:rgba(223,232,245,0.62)}
.rec-sec[data-ground="deep"] a.rec-src{color:var(--accent-read-deep)}

/* --- questions --- */
.qa{background:var(--tint-1);border-block:1px solid rgba(17,29,49,0.14);padding-block:var(--section-y)}
.qa-in{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(26px,4vw,68px);align-items:start}
.qa-side{position:sticky;top:104px;align-self:start}
.qa-index{padding:0;margin:0;list-style:none;border-top:1px solid rgba(17,29,49,0.28)}
.qa-index a{display:flex;gap:12px;align-items:baseline;padding:12px 0;border-bottom:1px solid rgba(17,29,49,0.14);
  text-decoration:none;font-size:.94rem;min-height:44px}
.qa-index em{font-style:normal;font-size:10.5px;font-weight:700;letter-spacing:.1em;color:var(--accent-read);flex:none}
.qa-index a:hover span{text-decoration:underline;text-underline-offset:3px}
.qa-body{padding:0;margin:0;list-style:none;display:grid;gap:clamp(20px,2.4vw,30px)}
.qa-body li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:clamp(12px,2vw,22px);
  border:1px solid rgba(17,29,49,0.14);border-radius:var(--r2);background:var(--paper);padding:clamp(18px,2.2vw,26px);
  scroll-margin-top:170px}
.qa-body li:target{border-color:var(--accent-read);box-shadow:inset 3px 0 0 var(--accent)}
.qa-no{font-size:10.5px;font-weight:700;letter-spacing:.1em;color:var(--accent-read);padding-top:.35em}
.qa-body h3{font-size:var(--fs-1);line-height:1.16}
.qa-body p{grid-column:2;margin-top:9px;font-size:.98rem;line-height:1.64;color:#354051;max-width:54ch}

/* questions, setting 1: a two-column ledger, nothing behind a click */
.qa-dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 clamp(26px,4vw,64px);margin:0;
  border-top:2px solid var(--ink)}
.qa-dl-row{padding:clamp(20px,2.4vw,30px) 0;border-bottom:1px solid rgba(17,29,49,0.14);min-width:0}
.qa-dl dt{display:grid;gap:8px;font-family:var(--ff-display);font-weight:var(--fw-display);font-size:var(--fs-1);
  line-height:1.16;letter-spacing:-.015em}
.qa-dl dt .qa-no{padding-top:0}
.qa-dl dd{margin:12px 0 0;font-size:.98rem;line-height:1.64;color:#354051}

/* questions, setting 2: one running column, numbers in the margin */
.qa-run{display:grid;gap:0;padding:0;margin:0;list-style:none;border-top:2px solid var(--ink)}
.qa-run>li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:clamp(16px,3vw,44px);
  padding:clamp(22px,2.8vw,36px) 0;border-bottom:1px solid rgba(17,29,49,0.14);align-items:start}
.qa-run-no{font-family:var(--ff-display);font-weight:var(--fw-display);font-size:clamp(1.6rem,3vw,2.4rem);
  line-height:.9;letter-spacing:-.04em;color:rgba(17,29,49,0.62)}
.qa-run h3{font-size:var(--fs-2);line-height:1.14}
/* 70ch measured out at 93 real characters: a ch is the width of a zero and
   this face's prose runs narrower, so the cap is set from the measured line. */
.qa-run p{margin-top:11px;font-size:1rem;line-height:1.66;color:#354051;max-width:54ch}

/* --- contact --- */
.ct{background:var(--deep);color:var(--deep-ink);background-image:url("./assets/grid.svg");background-size:cover;
  padding-block:var(--section-y)}
.ct>.shell{text-align:center}
.ct-top{display:grid;justify-items:center;gap:12px;padding-bottom:clamp(26px,3vw,42px);
  border-bottom:1px solid rgba(223,232,245,0.3)}
/* A heading rather than a paragraph, because on a thin prospect every other
   section is pruned and the form's own h3 was left jumping straight from the
   h1. It is the contact section's heading either way; it was only ever a <p>
   because of how small it is set. */
.ct-eyebrow{margin:0;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-read-deep)}
.ct-tel{display:flex;align-items:baseline;justify-content:center;gap:clamp(12px,2vw,24px);flex-wrap:wrap;text-decoration:none;
  font-family:var(--ff-display);font-weight:var(--fw-display);font-size:clamp(2.1rem,6vw,4.4rem);
  line-height:1;letter-spacing:-.04em;width:fit-content;max-width:100%;overflow-wrap:anywhere}
.ct-tel:hover{color:var(--accent-read-deep)}
.ct-tel--mail{font-size:clamp(1.2rem,3vw,2rem);letter-spacing:-.02em}
.ct-hours{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 26px;font-size:.9rem;color:rgba(223,232,245,0.8)}
.ct-hours span{display:flex;gap:9px}
.ct-hours b{color:rgba(223,232,245,0.56);font-weight:700;letter-spacing:.06em;text-transform:uppercase;font-size:11px;align-self:center}
.ct-grid{text-align:left;display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(26px,4vw,64px);
  padding-top:clamp(26px,3vw,42px);align-items:start}
/* One line of detail does not balance a form, so stack it and let the form
   set the measure rather than leaving half the band empty. */
.ct-grid[data-lean]{grid-template-columns:minmax(0,1fr);justify-items:center;max-width:660px;margin:0 auto}
.ct-grid[data-lean] .ct-dl{grid-auto-flow:column;gap:clamp(22px,4vw,54px);justify-content:center;text-align:center}
.ct-grid[data-lean] .ct-form{width:100%}
.ct-dl{display:grid;gap:22px;margin:0}
.ct-dl>div{min-width:0}
.ct-dl dt{font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:rgba(223,232,245,0.55);margin-bottom:7px}
.ct-dl dd{margin:0;font-size:.98rem;line-height:1.6;color:rgba(223,232,245,0.88);min-width:0;overflow-wrap:anywhere}
.ct-dl a{text-decoration:none;border-bottom:1px solid rgba(223,232,245,0.34)}
.ct-dl a:hover{color:var(--accent-read-deep)}
.ct-form{background:var(--paper);color:var(--ink);border-radius:var(--r2);padding:clamp(22px,3vw,36px);
  display:grid;grid-template-columns:1fr 1fr;gap:clamp(13px,1.8vw,20px);align-content:start;
  border-top:5px solid var(--accent)}
.ct-form-h{grid-column:1/-1;font-size:var(--fs-2);line-height:1.1}
.ff{display:grid;gap:7px;min-width:0}
.ff--wide,.ct-form>button,.ct-form>output{grid-column:1/-1}
.ff label{font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:rgb(90,98,112)}
.ff input,.ff select,.ff textarea{background:rgba(17,29,49,0.035);border:1px solid rgba(17,29,49,0.28);border-radius:var(--r3);
  padding:13px 14px;font-size:1rem;color:var(--ink);width:100%;min-width:0}
.ff textarea{resize:vertical}
.ff input:focus,.ff select:focus,.ff textarea:focus{outline:0;border-color:var(--accent-read);background:var(--paper)}
.ff select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,rgba(17,29,49,0.6) 50%),
  linear-gradient(135deg,rgba(17,29,49,0.6) 50%,transparent 50%);
  background-position:calc(100% - 19px) 50%,calc(100% - 14px) 50%;background-size:5px 5px;background-repeat:no-repeat;
  padding-right:34px}

/* --- footer --- */
.ft{background:var(--ink);color:var(--paper)}
.ft-in{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(20px,3vw,46px);
  padding-block:clamp(34px,4vw,56px);border-bottom:1px solid rgba(242,245,250,0.16)}
.ft-col{min-width:0}
.ft-col--mark .mark-badge{background:var(--accent);color:var(--accent-ink);margin-bottom:14px}
.ft-name{font-family:var(--ff-display);font-weight:var(--fw-display);font-size:1.22rem;letter-spacing:-.02em;line-height:1.2}
.ft-kind{margin-top:8px;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:rgba(242,245,250,0.55)}
.ft-h{font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:rgba(242,245,250,0.52);
  margin-bottom:14px;line-height:1}
.ft-col ul{padding:0;margin:0;list-style:none;display:grid;gap:8px}
.ft-col li{font-size:.88rem;color:rgba(242,245,250,0.8);line-height:1.4}
/* Direct children only: the footer nav sits inside a column, and this rule's
   width:fit-content and min-width:0 were undercutting the kit's touch floor
   on its short links. */
.ft-col>a,.ft-col>p{display:block;font-size:.88rem;text-decoration:none;color:rgba(242,245,250,0.8);
  line-height:1.5;margin-bottom:9px;width:fit-content;max-width:100%;min-width:0;overflow-wrap:anywhere}
.ft-col>a:hover{color:var(--accent-read-ink)}
.ft-tel{font-family:var(--ff-display);font-weight:var(--fw-display);font-size:1.16rem!important;letter-spacing:-.02em}
.ft-soc{text-transform:capitalize}
.ft-nav{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:14px;padding-top:14px;border-top:1px solid rgba(242,245,250,0.14)}
.ft-nav a{font-size:.8rem;margin-bottom:0;color:rgba(242,245,250,0.6)}
.ft-legal{padding-block:20px 26px;display:grid;gap:7px}
.ft-legal p{font-size:.74rem;line-height:1.55;color:rgba(242,245,250,0.52);max-width:52ch}

/* --- persistent call bar (mobile) --- */
.callbar{display:none;position:fixed;left:0;right:0;bottom:0;z-index:48;gap:10px;
  padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:var(--deep);
  border-top:1px solid rgba(223,232,245,0.2)}
.callbar a{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;min-height:50px;
  border-radius:var(--r2);font-size:.88rem;font-weight:700;text-decoration:none;white-space:nowrap}
.callbar-tel{background:var(--paper);color:var(--ink)}
.callbar-tel span{font-family:var(--ff-display);font-weight:var(--fw-display);letter-spacing:-.02em;font-size:1rem}
.callbar-cta{background:var(--accent);color:var(--accent-ink)}

/* ---------------- responsive ---------------- */
@media (max-width:1180px){
  .cov-in{grid-template-columns:minmax(0,.62fr) minmax(0,1.38fr);grid-template-rows:auto auto auto}
  .cov-jobs{grid-column:1/-1;grid-row:3;margin-top:clamp(26px,3.2vw,44px)}
  .cov-list{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cov-jobs li{grid-template-columns:minmax(0,1.5fr) minmax(0,.7fr) minmax(0,.8fr);gap:16px}
  .job-tags{grid-column:auto;text-align:right}
  .nav{display:none}
  .hd-band,.hd-index{display:none}
  .burger{display:flex}
  .hd-in{grid-template-columns:auto 1fr}
  .hd-in .hd-act{grid-column:2;justify-content:flex-end}
  .hero-rec{grid-template-columns:minmax(0,1.3fr) minmax(260px,.8fr);row-gap:22px}
  .hero-rail{grid-column:1/-1;grid-auto-flow:column;justify-content:start;gap:0 26px;align-items:baseline}
}
@media (max-width:1040px){
  .hero-in{grid-template-columns:1fr;gap:30px}
  .disp{max-width:560px}
  .ct-grid{grid-template-columns:1fr;gap:30px}
  .qa-in{grid-template-columns:1fr;gap:26px}
  .qa-side{position:static}
  .qa-dl{grid-template-columns:1fr;gap:0}
  .cov-in{grid-template-columns:1fr;grid-template-rows:auto auto auto auto;row-gap:8px}
  .cov-plate{max-width:320px}
  .cov-cap{grid-column:1;grid-row:2;margin-bottom:18px}
  .cov-body{grid-column:1;grid-row:3}
  .cov-jobs{grid-column:1;grid-row:4}
  .ft-in{grid-template-columns:repeat(2,minmax(0,1fr))}
  .svc-spec-row{grid-template-columns:minmax(0,.44fr) minmax(0,1fr);row-gap:12px}
  .svc-spec-ic{display:none}
}
@media (max-width:900px){
  .flow-in{align-items:flex-start}
  .flow-act{flex-wrap:wrap;padding-bottom:0}
  .mark-kind{display:none}
  .cov-base a,.ct-dl dd a,.disp-alt a{display:inline-flex;align-items:center;min-height:44px}
  ol.flow{grid-auto-flow:row;grid-auto-columns:auto;gap:clamp(22px,3vw,30px);padding-left:34px}
  .flow::before{left:9px;right:auto;top:6px;bottom:6px;width:2px;height:auto}
  .flow>li{padding:0}
  .flow-mark{position:absolute;left:-34px;top:2px}
  .flow-no{margin-top:0}
  .svc-lead{grid-template-columns:auto minmax(0,1fr);row-gap:20px}
  .svc-lead-cta{grid-column:2;justify-self:start}
  .svc-grid{grid-template-columns:1fr}
  .svc-cell{border-right:0}
  .hero-rec{grid-template-columns:1fr;row-gap:24px}
  .hero-sheet-side{flex:1 1 100%;max-width:480px}
  .hero-rail{grid-auto-flow:row;gap:8px}
  .hero-call{max-width:480px}
  .sheet-dl{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sheet-dl>div{border-right:0;border-bottom:1px solid rgba(17,29,49,0.14)}
  .sheet-dl>div:nth-child(odd){border-right:1px solid rgba(17,29,49,0.14);padding-right:18px}
  .sheet-dl>div:nth-child(even){padding-left:18px}
  .svc-sched tbody th{width:34%}
}
@media (max-width:680px){
  .hd-cta{display:none}
  .hd-tel{display:none}
  .callbar{display:flex}
  body{padding-bottom:80px}
  .cov-list{grid-template-columns:1fr}
  .cov-jobs li{grid-template-columns:1fr;gap:4px}
  .job-tags{text-align:left}
  .ct-form{grid-template-columns:1fr}
  .ft-in{grid-template-columns:1fr;gap:26px}
  .rec-row{grid-template-columns:1fr;gap:8px}
  .rec-row dd{justify-content:flex-start}
  .rec-table tbody th{width:auto}
  .qa-body li{grid-template-columns:1fr}
  .qa-body p{grid-column:1}
  .qa-run>li{grid-template-columns:1fr;gap:10px}
  .svc-lead{grid-template-columns:1fr}
  .svc-lead-cta{grid-column:1}
  .svc-spec-row{grid-template-columns:1fr;gap:10px}
  .sheet-dl{grid-template-columns:1fr}
  .sheet-dl>div{border-right:0!important;padding-left:0!important;padding-right:0}
  .svc-sched,.svc-sched tbody,.svc-sched tr,.svc-sched td{display:block;width:100%}
  .svc-sched thead{display:none}
  .svc-sched tbody th{width:auto;border-bottom:0;padding-bottom:8px}
  .svc-sched tr{border-bottom:1px solid rgba(17,29,49,0.28);padding-block:14px}
  .svc-sched td{border-bottom:0;padding:0 0 8px}
  .rec-table,.rec-table tbody,.rec-table tr,.rec-table td{display:block;width:100%}
  .rec-table thead{display:none}
  .rec-table tbody th{border-bottom:0;padding-bottom:6px}
  .rec-table tr{border-bottom:1px solid rgba(17,29,49,0.28);padding-block:14px}
  .rec-table tbody td{border-bottom:0;padding:0 0 6px;text-align:left!important}
}

/* --- drawn plates ----------------------------------------------------- */
/* The family keeps its frame, its labels and its wash; only the picture
   inside the frame comes from here. !important is deliberate: this is a
   build-time override of whatever surface the family had reached for, and
   several families set the plate's background on a more specific selector
   than an attribute. */
[data-photo-slot="about"]{background-image:url("./assets/plate-about.svg")!important;background-size:cover!important;background-position:center!important;background-repeat:no-repeat!important}
/* Every family lays a wash over its plate so the caption on it stays legible.
   Those washes were written when there was nothing underneath them to see --
   one of them reaches 86% opacity -- and over a real drawing they put the
   drawing out. Damping the wash keeps the caption readable and lets the
   picture through, and the contrast gate checks what results. */
[data-photo-slot]::before{opacity:.62}
/* A real photograph beats a drawing, every time. */
[data-has-photo]{background-image:none!important}
[data-has-photo]::before{opacity:1}


/* --- auto-derived: readable tokens on inverted grounds (see deepGroundFix) --- */
.util,
.mark-badge,
.hd-status,
.menu,
.hero--board,
[data-ground="deep"],
.svc-lead-cta:hover,
.ct{
  --muted:var(--muted-deep);
  --accent-read:var(--accent-read-deep);
  --hairline:rgba(255,255,255,.18);
  --hair-strong:rgba(255,255,255,.34);
}
.skip,
.preview-note,
.ft{
  --muted:var(--muted-ink);
  --accent-read:var(--accent-read-ink);
  --hairline:rgba(255,255,255,.18);
  --hair-strong:rgba(255,255,255,.34);
}
body,
.disp,
.cov-city,
.ct-form,
.callbar-tel{
  --muted:var(--muted-paper);
  --accent-read:var(--accent-read-paper);
  --hairline:var(--hairline-raw);
  --hair-strong:var(--hair-strong-raw);
}
