/* Blackland Build Co. demo stylesheet (spec 21, v2-demo-construction;
   build round 1: the BLUEPRINT register + the chrome + the Home bands;
   round 2 extends the sheet in place with the inner-page devices: the
   thin hero, the projects grid, the numbered capability bands, the
   plain-fact rows, the estimator feature, the people rows, and the
   record ledger rows).
   Standalone, scoped css for this demo alone: every selector carries
   the .blc- prefix. The documented machine-scope exceptions are exactly
   three kinds: the two @font-face rules, and the one token block on
   #demo-main (the demo's own serving scope; the one sanctioned machine
   root, which repaints the machinery body field for this dark sheet,
   the fleet precedent). Toggle surfaces carry explicit [hidden]
   companion rules: .blc-head-panel and .blc-faq-panel both, plus the
   sheet-wide blanket under .blc-page.

   Machinery contract (demo-base.css, demo-notice.css, layouts.demo)
   is never redefined here: the machinery banner-clearance token is
   consumed at EXACTLY ONE var() site, the demo-owned --blc-clear
   bridge on the .blc-page wrapper; the sticky header row pins top 0
   and pays the fixed banner clearance through that bridge exactly once
   (the header never overlaps the banner; the banner covers the header's
   padding band). The machinery favicon pair, the demo notice, the skip
   link, and the consent pair ride the machinery chain untouched. No
   imports anywhere; sibling demo namespaces and the app bundles are
   absent by construction.

   Faces: two font-face rules live ONLY in this file, self-hosted
   beside their OFL licenses under /demos/construction/fonts/, display
   swap: Anton weight 400 ONLY (the display voice renders through SIZE,
   never a synthetic bold) and Inter variable 100 900 (400 body,
   500 nav and captions, 600 buttons, tabs and tags). No fixed-pitch
   face anywhere in the stack.

   Palette law (spec 21, the BLUEPRINT register per plan 01): the
   sheet's only color literals are the eight hex bytes + the scrim
   triplet + the line-ink rgba form, all inside the token block, each
   byte exactly once; further paper-alpha washes derive from the same
   paper rgb form (244, 241, 234) and every scrim stop derives from the
   token triplet.
   Text over images rides the paper token at full opacity over the
   neutral scrim stops; scrims and washes are NEVER accent tinted; the
   accent paints fills, borders and decorations only (its text byte is
   the soft accent; the on-fill text byte is paper). Elevation is
   forbidden on the whole sheet: depth comes from hairlines, the panel
   fill, and the scrim only.

   Edges: squared everywhere via the radius token (2px); no radius above
   2px appears; tiles are hairline-bordered figures with captions BELOW
   the photo; wide flat bands carry full-width hairline separators on
   their top edges (the drafting-rule rhythm).

   Media conditions, the only four in this file: 48rem (the chrome flip,
   the crew pair, the market grid columns, the newsledger row split, the
   projects grid two-up),
   56rem (the trust split, the stats row, the stronghold split, the
   industries and record grids, the contact rows, the estimator split,
   the people row split, the ledger row columns), 64rem (the hero
   scale, the market grid six-up, the industries links column, the band
   rhythm, the projects grid three-up, the numbered-band row split)
   and the reduced-motion pair at the end.
   Mobile-first, min-width queries only; the machinery's own 768px
   breakpoint never appears. Rotation rides turn units (0.5turn), never
   the banned degree word. */

@font-face {
  font-family: "Anton";
  src: url("/demos/construction/fonts/anton-latin-400.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Inter";
  src: url("/demos/construction/fonts/inter-latin-wght.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

/* The BLUEPRINT tokens (plan 01's verbatim block): the eight spec-locked
   bytes + the scrim triplet + the line-ink form, one block, the sheet's
   only color literals. */
#demo-main {
  --blc-ink: #25221f;      /* deep warm ash charcoal: the page base field; band fills; text never rides on itself */
  --blc-ink-deep: #17140f; /* the deep field: footer, quote band, countup band, hero backdrop washes */
  --blc-panel: #302c26;    /* the raised field: hairline tile fills, FAQ rows, statement panels, hover washes */
  --blc-paper: #f4f1ea;    /* THE SHEET'S SINGLE LIGHT LITERAL: headings, overlay copy, footer text, and the on-fill text byte on indigo */
  --blc-draft: #b5b2ac;    /* drafting grey: body copy on every dark field */
  --blc-hint: #8f8a84;     /* muted meta: dates, captions, attributions; rides ink + ink-deep ONLY (close-fail on panel, pin in the round-3 ledger) */
  --blc-indigo: #5649d6;   /* accent FILL byte (hue 245.5): buttons, the tab done-segment, NOW BUILDING tag fills, quote rule, underlines; NEVER a text byte */
  --blc-indigo-soft: #a39cf0; /* accent TEXT byte (hue 245.0): schedule-tab labels, links, link hover, stat labels, phase-tag text */
  --blc-scrim: 24, 22, 19; /* the neutral scrim triplet; hero stops + washes derive from it; NEVER accent tinted */
  --blc-line-ink: rgba(244, 241, 234, 0.16); /* hairlines + rules on the dark fields (the only rgba form besides the scrim) */
  color-scheme: dark;
  background: var(--blc-ink);
}

/* The page wrapper: the ONE --demo-notice-space var() site (the
   --blc-clear bridge) + the sheet's type + edge tokens + the relative
   sticky-scope root. */
.blc-page {
  --blc-clear: var(--demo-notice-space);
  --blc-radius: 2px;
  --blc-display: "Anton", "Arial Narrow", sans-serif;
  --blc-text: "Inter", system-ui, sans-serif;
  --blc-fs-hero: clamp(2.875rem, 1.4rem + 7.2vw, 5.5rem);
  --blc-fs-section: clamp(1.875rem, 1.2rem + 3.2vw, 2.875rem);
  --blc-fs-statement: clamp(1.75rem, 1.1rem + 3.4vw, 2.625rem);
  --blc-fs-stat: clamp(2.375rem, 1.3rem + 4.6vw, 3.875rem);
  --blc-fs-num: clamp(1.5rem, 0.9rem + 3vw, 2.25rem);
  --blc-fs-city: clamp(1.25rem, 0.9rem + 2vw, 1.625rem);
  position: relative;
  font-family: var(--blc-text);
  font-size: 1rem;
  line-height: 1.65;
  color: var(--blc-draft);
  background: var(--blc-ink);
}

/* The demo-owned groups: border-box, the descendant link overrides,
   the hidden blanket, and the focus rings (the sheet scope only). */
.blc-page,
.blc-page *,
.blc-page *::before,
.blc-page *::after {
  box-sizing: border-box;
}
.blc-page a {
  color: var(--blc-indigo-soft);
  text-decoration: underline;
  text-underline-offset: 0.1875em;
}
.blc-page a:hover {
  color: var(--blc-paper);
}
.blc-page [hidden] {
  display: none !important;
}
.blc-page :focus-visible {
  outline: 2px solid var(--blc-paper);
  outline-offset: 2px;
}

/* Base element rhythm scoped to the sheet: headings ride the display
   face in paper; body copy rides draft; lists reset where the devices
   restyle them. */
.blc-page :is(h1, h2, h3) {
  margin: 0 0 1rem;
  font-family: var(--blc-display);
  font-weight: 400;
  line-height: 1.12;
  color: var(--blc-paper);
}
.blc-page p {
  margin: 0 0 1rem;
}
.blc-page :is(ul, ol) {
  margin: 0;
  padding: 0;
  list-style: none;
}

/* Display scale hooks (the plan-01 scale). */
.blc-h1 {
  font-size: var(--blc-fs-hero);
  line-height: 1.05;
  margin: 0 0 1.25rem;
}
.blc-h2 {
  font-size: var(--blc-fs-section);
  line-height: 1.12;
  margin: 0 0 1.125rem;
}

/* The schedule-tab overline voice: small-caps label over a thin
   two-tone bar (filled done-segment on an open track), left-anchored. */
.blc-tab {
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
  margin: 0 0 0.875rem;
}
.blc-tab-label {
  font: 600 0.75rem/1.2 var(--blc-text);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--blc-indigo-soft);
}
.blc-tab-bar {
  display: block;
  height: 2px;
  width: 7.5rem;
  background: var(--blc-line-ink);
  border-radius: 2px;
}
.blc-tab-done {
  display: block;
  height: 2px;
  width: 2.5rem;
  background: var(--blc-indigo);
}
.blc-tab--light .blc-tab-label {
  color: var(--blc-paper);
}
.blc-tab--light .blc-tab-bar {
  background: rgba(244, 241, 234, 0.35);
}

/* Buttons: the one accented fill (paper text byte on indigo) and the
   ghost variant (transparent fill, soft accent text + border). */
.blc-page .blc-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.625rem 1.25rem;
  min-height: 2.75rem;
  border: 1px solid var(--blc-indigo);
  border-radius: var(--blc-radius);
  background: var(--blc-indigo);
  color: var(--blc-paper);
  font: 600 0.9375rem/1.2 var(--blc-text);
  text-decoration: none;
  white-space: nowrap;
}
.blc-page .blc-btn:hover {
  color: var(--blc-paper);
}
.blc-page .blc-btn--ghost {
  background: transparent;
  border-color: var(--blc-indigo-soft);
  color: var(--blc-indigo-soft);
}
.blc-page .blc-btn--ghost:hover {
  color: var(--blc-paper);
  border-color: var(--blc-paper);
}

/* The sticky header row: pins top 0 and pays the machinery banner
   clearance through the --blc-clear bridge exactly once. Opaque ink;
   the fixed gold banner covers the padding band. */
.blc-head {
  position: sticky;
  top: 0;
  z-index: 40;
  padding-top: var(--blc-clear);
  background: var(--blc-ink);
  border-bottom: 1px solid var(--blc-line-ink);
}
.blc-head-row {
  display: flex;
  align-items: center;
  gap: 1.25rem;
  min-height: 3.5rem;
}
/* Belted device forms (the spec-20 fact-853 hatch lesson): every
   anchor-painted device rule carries the .blc-page scope so the
   (0,2,0)-later form beats the (0,1,1) descendant override; the
   generic rule keeps painting the class-less anchors only. */
.blc-page .blc-brand {
  font-family: var(--blc-display);
  font-weight: 400;
  font-size: 1.125rem;
  color: var(--blc-paper);
  text-decoration: none;
  letter-spacing: 0.01em;
}
.blc-page .blc-brand:hover {
  color: var(--blc-paper);
}
.blc-nav {
  margin-left: auto;
  display: none;
}
.blc-nav-links {
  display: flex;
  align-items: center;
  gap: 0.25rem;
}
.blc-nav-links a {
  display: inline-block;
  padding: 0.875rem 0.75rem;
  min-height: 2.75rem;
  font: 500 0.9375rem/1.2 var(--blc-text);
  color: var(--blc-draft);
  text-decoration: none;
}
.blc-nav-links a:hover,
.blc-nav-links a[aria-current="page"] {
  color: var(--blc-paper);
  text-decoration: none;
}
.blc-nav-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: auto;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  border: 1px solid var(--blc-line-ink);
  border-radius: var(--blc-radius);
  background: transparent;
  color: var(--blc-paper);
}
.blc-nav-toggle:hover {
  border-color: var(--blc-paper);
}
.blc-page .blc-head-cta {
  min-height: 2.75rem;
  display: none;
}

/* The mobile disclosure panel: absolutely positioned BELOW the sticky
   header full-width (the sanctioned overlay layer; the header is its
   containing block), its own opaque ink fill so the page never shows
   through; the toggle carries the row's right edge at the base widths
   and retires with the panel at 48rem. */
.blc-head-panel {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  display: grid;
  border-top: 1px solid var(--blc-line-ink);
  padding: 0.375rem 1.25rem 0.75rem;
  background: var(--blc-ink);
}
.blc-head-panel[hidden] {
  display: none;
}
.blc-head-panel a {
  display: block;
  padding: 0.75rem 0;
  font: 500 1rem/1.3 var(--blc-text);
  color: var(--blc-draft);
  text-decoration: none;
}
.blc-head-panel a:hover,
.blc-head-panel a[aria-current="page"] {
  color: var(--blc-paper);
  text-decoration: none;
}
.blc-head-panel .blc-btn {
  margin-top: 0.5rem;
  justify-content: center;
}

/* The band rhythm: wide flat sections with full-width drafting rules
   on their top edges; the shell centers the content column; the deep
   variant flips the field. */
.blc-section {
  padding-block: clamp(3.25rem, 8.5vw, 5.5rem);
  border-top: 1px solid var(--blc-line-ink);
}
.blc-band-deep {
  background: var(--blc-ink-deep);
}
.blc-shell {
  max-width: 71.25rem;
  margin-inline: auto;
  padding-inline: 1.25rem;
}
.blc-lede {
  max-width: 42rem;
  color: var(--blc-draft);
}

/* BAND 1: the hero. Full-bleed image, absolute neutral scrim with the
   four-stop ramp (0 / 0.55 / 0.78 / 0.92; the stops re-placed at the
   measured contour lines 0 / 28% / 38% / 52% in the round-3 paint fix so
   the whole copy stack rides the deep zone: the small-caps eyebrow
   needs the 0.78-alpha contour), and an absolutely covering
   overlay layer under which copy anchors band-bottom; overlay text
   rides paper at full opacity in the deep contours. */
.blc-hero {
  position: relative;
  min-height: min(78svh, 42rem);
  display: flex;
}
.blc-hero-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
.blc-hero-scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(var(--blc-scrim), 0) 0%,
    rgba(var(--blc-scrim), 0.55) 28%,
    rgba(var(--blc-scrim), 0.78) 38%,
    rgba(var(--blc-scrim), 0.92) 52%
  );
}
.blc-hero-overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}
.blc-hero-inner {
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2.25rem;
  padding-block: 2.5rem;
}
.blc-hero-copy {
  max-width: 42rem;
}
.blc-hero-manifesto {
  color: var(--blc-paper);
  max-width: 40rem;
}
.blc-hero-cta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem;
  margin-top: 0.5rem;
}
.blc-page .blc-herolink {
  font: 500 1rem/1.3 var(--blc-text);
  color: var(--blc-paper);
  text-decoration: underline;
  text-underline-offset: 0.1875em;
}
.blc-page .blc-herolink:hover {
  color: var(--blc-paper);
  text-decoration: none;
}
.blc-page .blc-scrolldown {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.75rem;
  min-height: 2.75rem;
  color: var(--blc-paper);
}
.blc-page .blc-scrolldown:hover {
  color: var(--blc-paper);
  text-decoration: none;
}

/* BAND 2: the trust band; the honesty split turns two columns at
   56rem with a hairline between the lede and the honesty line. */
.blc-trust-split {
  display: grid;
  gap: 1.25rem;
}
.blc-trust-line {
  border-top: 1px solid var(--blc-line-ink);
  padding-top: 1.25rem;
  color: var(--blc-draft);
}
.blc-trust > .blc-btn {
  margin-top: 0.875rem;
}

/* BAND 3: the countup band on the deep field; 2x2 on mobile, one row
   at 56rem with hairline dividers from the second cell onward. */
.blc-stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 2.25rem 1.5rem;
  margin-top: 1.5rem;
}
.blc-stat-num {
  display: block;
  font: 400 var(--blc-fs-stat)/1.05 var(--blc-display);
  color: var(--blc-paper);
  margin: 0 0 0.5rem;
}
.blc-stat-label {
  display: block;
  font: 600 0.75rem/1.35 var(--blc-text);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--blc-draft);
}

/* BAND 4: the Houston stronghold; the HQ block and the hairline-ruled
   twelve-market text grid; no map graphic, no coordinates. */
.blc-stronghold {
  display: grid;
  gap: 2rem;
  margin-top: 1.75rem;
}
.blc-hq-name {
  font: 400 1.375rem/1.2 var(--blc-display);
  color: var(--blc-paper);
  margin: 0 0 0.875rem;
}
.blc-leadrows li {
  padding: 0.375rem 0;
  color: var(--blc-draft);
}
.blc-markets {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.blc-markets li {
  padding: 0.875rem 0.75rem;
  border-top: 1px solid var(--blc-line-ink);
  font: 500 1rem/1.3 var(--blc-text);
  color: var(--blc-paper);
}

/* The tile grid family: hairline figures with captions BELOW the
   photo; no fill boxes, no radius above the token, no elevation. */
.blc-grid {
  display: grid;
  gap: 2.25rem 1.5rem;
  margin-top: 1.75rem;
}
.blc-grid--industries,
.blc-grid--crew {
  grid-template-columns: minmax(0, 1fr);
}
.blc-grid--record {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.blc-page .blc-tile {
  display: block;
  margin: 0;
  color: inherit;
  text-decoration: none;
}
.blc-tile-photo {
  margin: 0;
  border: 1px solid var(--blc-line-ink);
  border-radius: var(--blc-radius);
  overflow: hidden;
}
.blc-tile-photo img {
  display: block;
  width: 100%;
  height: auto;
}
.blc-tile-body {
  padding-top: 0.875rem;
}
.blc-tile-name {
  margin: 0 0 0.375rem;
  font: 400 1.25rem/1.2 var(--blc-display);
  color: var(--blc-paper);
}
.blc-tile-note {
  margin: 0 0 0.5rem;
  font-size: 0.9375rem;
  color: var(--blc-draft);
}
.blc-tile-meta {
  margin: 0 0 0.5rem;
  font-size: 0.875rem;
  color: var(--blc-draft);
}
.blc-tile-link {
  font: 600 0.75rem/1.2 var(--blc-text);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--blc-indigo-soft);
}
.blc-tile:hover .blc-tile-link {
  color: var(--blc-paper);
}

/* The phase-tag chips: soft accent text on hairline; the NOW BUILDING
   variant rides the indigo FILL with the paper text byte. */
.blc-tag {
  display: inline-block;
  padding: 0.3125rem 0.625rem;
  border: 1px solid var(--blc-line-ink);
  border-radius: var(--blc-radius);
  font: 600 0.6875rem/1.2 var(--blc-text);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--blc-indigo-soft);
}
.blc-tag--now {
  background: var(--blc-indigo);
  border-color: var(--blc-indigo);
  color: var(--blc-paper);
}

/* The record header row: h2 left, the view-all link right at 48rem. */
.blc-recordhead {
  display: grid;
  gap: 0.375rem 1.5rem;
  align-items: baseline;
}
.blc-recordhead .blc-textlink {
  font-weight: 600;
}

/* The ledger text-link column: hairline-divided rows, soft accent
   links. */
.blc-textlinks {
  margin-top: 1.75rem;
  border-top: 1px solid var(--blc-line-ink);
}
.blc-textlinks li {
  border-bottom: 1px solid var(--blc-line-ink);
}
.blc-textlinks a {
  display: block;
  padding: 0.875rem 0;
  font: 500 1rem/1.35 var(--blc-text);
  color: var(--blc-indigo-soft);
  text-decoration: none;
}
.blc-textlinks a:hover {
  color: var(--blc-paper);
  text-decoration: none;
}
.blc-page .blc-textlink {
  display: inline-block;
  margin-top: 1rem;
  font: 600 0.875rem/1.3 var(--blc-text);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--blc-indigo-soft);
  text-decoration: none;
}
.blc-page .blc-textlink:hover {
  color: var(--blc-paper);
  text-decoration: none;
}

/* BAND 8: the quote band on the deep field; the indigo rule bar sits
   above the statement; the attribution rides a hairline top. */
.blc-quoterule {
  display: block;
  width: 2.5rem;
  height: 3px;
  background: var(--blc-indigo);
  border-radius: 2px;
  margin: 0 0 1.5rem;
}
.blc-quote {
  max-width: 56rem;
}
.blc-quote-stat {
  margin: 0 0 1.5rem;
}
.blc-quote-stat p {
  margin: 0;
  font: 400 var(--blc-fs-statement)/1.2 var(--blc-display);
  color: var(--blc-paper);
}
.blc-quote-attr {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.375rem 1rem;
  margin: 0;
  padding-top: 1.25rem;
  border-top: 1px solid var(--blc-line-ink);
}
.blc-quote-name {
  font: 600 0.9375rem/1.3 var(--blc-text);
  color: var(--blc-indigo-soft);
}
.blc-quote-role {
  font: 500 0.9375rem/1.3 var(--blc-text);
  color: var(--blc-draft);
}

/* BAND 9: the from-the-site ledger; three dated text rows, no images,
   no article pages. */
.blc-newsledger {
  margin-top: 1.75rem;
}
.blc-newsrow {
  display: grid;
  gap: 0.375rem;
  border-top: 1px solid var(--blc-line-ink);
  padding: 1.25rem 0;
}
.blc-newsrow:last-child {
  border-bottom: 1px solid var(--blc-line-ink);
}
.blc-news-date {
  font: 600 0.75rem/1.4 var(--blc-text);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--blc-hint);
}
.blc-news-text {
  margin: 0;
  color: var(--blc-draft);
}

/* BAND 10: the FAQ accordion rows; the head is a real button; the
   panel carries the [hidden] companion; the chevron rides turn units. */
.blc-faq-list {
  margin-top: 1.75rem;
  border-bottom: 1px solid var(--blc-line-ink);
}
.blc-faq-row {
  border-top: 1px solid var(--blc-line-ink);
}
.blc-faq-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  width: 100%;
  min-height: 3.25rem;
  padding: 0.875rem 0;
  border: 0;
  background: transparent;
  text-align: left;
  font: 500 1.0625rem/1.35 var(--blc-text);
  color: var(--blc-paper);
}
.blc-faq-head:hover {
  color: var(--blc-paper);
}
.blc-faq-chev {
  flex: none;
  transition: transform 0.2s ease;
  color: var(--blc-draft);
}
.blc-faq-row--open .blc-faq-chev {
  transform: rotate(0.5turn);
}
.blc-faq-panel {
  padding-bottom: 1.125rem;
  color: var(--blc-draft);
}
.blc-faq-panel p {
  margin: 0;
  max-width: 46rem;
}
.blc-faq-panel[hidden] {
  display: none;
}
.blc-faq > .blc-btn {
  margin-top: 1.75rem;
}

/* BAND 11: the contact band on the raised panel field; hairline top
   and bottom; the row targets clear the 44px floor. */
.blc-contactrows {
  display: grid;
  margin-top: 1.75rem;
}
.blc-page .blc-contactrow {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.375rem 1.25rem;
  min-height: 3.25rem;
  padding: 0.75rem 0;
  border-top: 1px solid var(--blc-line-ink);
  text-decoration: none;
}
.blc-page .blc-contactrow:hover {
  text-decoration: none;
}
.blc-contactrow:last-of-type {
  border-bottom: 1px solid var(--blc-line-ink);
}
.blc-contact-verb {
  min-width: 7.5rem;
  font: 600 0.75rem/1.5 var(--blc-text);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--blc-indigo-soft);
}
.blc-contact-detail {
  font: 500 1.0625rem/1.4 var(--blc-text);
  color: var(--blc-paper);
}
.blc-contactrow:hover .blc-contact-detail {
  color: var(--blc-paper);
}
.blc-contact-hours {
  margin: 1.125rem 0 0;
  color: var(--blc-draft);
}

/* The shared footer: the deep field; three columns at 48rem; the
   safety sentence and the copyright close the sheet. */
.blc-footer {
  background: var(--blc-ink-deep);
  border-top: 1px solid var(--blc-line-ink);
  padding-block: 3rem 2.25rem;
}
.blc-footer-grid {
  display: grid;
  gap: 2rem 2.5rem;
}
.blc-footer-brandline {
  margin: 0 0 0.25rem;
  font: 400 1.25rem/1.2 var(--blc-display);
  color: var(--blc-paper);
}
.blc-footer-city,
.blc-footer-address {
  margin: 0 0 0.875rem;
  color: var(--blc-draft);
}
.blc-footer-address p {
  margin: 0;
}
.blc-footer-contact {
  margin-bottom: 0.5rem;
}
.blc-footer-contact p {
  margin: 0 0 0.375rem;
}
.blc-footer-contact a {
  color: var(--blc-indigo-soft);
}
.blc-footer-contact a:hover {
  color: var(--blc-paper);
}
.blc-footer h3 {
  margin: 0 0 0.875rem;
  font: 600 0.8125rem/1.3 var(--blc-text);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--blc-paper);
}
.blc-footer-list a {
  display: inline-block;
  padding: 0.375rem 0;
  min-height: 2.75rem;
  color: var(--blc-indigo-soft);
  text-decoration: none;
}
.blc-footer-list a:hover {
  color: var(--blc-paper);
  text-decoration: none;
}
.blc-footer-office p {
  margin: 0 0 0.375rem;
  color: var(--blc-draft);
}
.blc-footer-safety {
  margin: 2.25rem 0 0;
  padding-top: 1.5rem;
  border-top: 1px solid var(--blc-line-ink);
  max-width: 46rem;
  color: var(--blc-draft);
}
.blc-footer-copy {
  margin: 1.5rem 0 0;
  font-size: 0.8125rem;
  color: var(--blc-hint);
}

/* INNER PAGES (round 2): the thin hero, the projects figure grid, the
   numbered capability bands, the plain-fact rows, the estimator
   feature, the people rows, and the record ledger rows. Same laws as
   the Home bands: hairlines only, no elevation, captions below the
   photos, tokens as the sheet's only color sources.

   The thin hero: tab + h1 + one-line lede on the base ink. The closing
   hairline rides the band's own border-bottom; the band that follows
   it paints no border-top, so the rule between them never doubles. */
.blc-thin {
  padding-block: clamp(2.5rem, 6.5vw, 4.25rem);
  border-bottom: 1px solid var(--blc-line-ink);
}
.blc-thin .blc-lede {
  margin: 0;
}
.blc-thin + .blc-section,
.blc-thin + .blc-bandnum {
  border-top: 0;
}
/* The thin-hero h1 scale (plan 01: the giant-ish subpage lead). */
.blc-h1--thin {
  font-size: var(--blc-fs-city);
  line-height: 1.12;
}

/* The projects grid: six record figures, 1 col mobile, 2 at 48rem, 3
   at 64rem; the tiles are plain figures (no detail pages exist), with
   the city and size meta line, the one-line note, and the phase tag in
   the caption below the photo. */
.blc-grid--projects {
  grid-template-columns: minmax(0, 1fr);
}

/* The numbered capability bands: Anton numerals in the soft accent on
   the ink field; hairline-separated full-width rows; text led. The
   count lines are the sheet's ONE hint-on-ink pairing (4.62:1); hint
   never rides the panel byte (the pinned close-fail stays forbidden).
   The even variant flips the numeral to the right edge at 64rem. */
.blc-bandnum {
  padding-block: clamp(2.25rem, 5.5vw, 3.75rem);
  border-top: 1px solid var(--blc-line-ink);
}
.blc-bandnum-row {
  display: grid;
  gap: 0.625rem 2.5rem;
}
.blc-num {
  font: 400 var(--blc-fs-num)/1.1 var(--blc-display);
  color: var(--blc-indigo-soft);
}
.blc-bandnum-body {
  max-width: 46rem;
}
.blc-bandnum-name {
  margin: 0 0 0.5rem;
  font: 400 1.375rem/1.25 var(--blc-display);
  color: var(--blc-paper);
}
.blc-bandnum-note {
  margin: 0 0 0.375rem;
  font-size: 0.9375rem;
  color: var(--blc-draft);
}
.blc-bandnum-count {
  margin: 0 0 0.5rem;
  font: 500 0.9375rem/1.4 var(--blc-text);
  color: var(--blc-hint);
}

/* The plain-fact rows: the safety statement's three claims, one per
   row, hairline dividers; the device also carries the Start page's
   what-to-have-ready rows. On the deep field draft is 8.68:1; on ink
   7.48; hint never composes here. */
.blc-facts {
  margin-top: 1.75rem;
}
.blc-factrow {
  padding: 1.125rem 0;
  border-top: 1px solid var(--blc-line-ink);
  color: var(--blc-draft);
}
.blc-factrow:last-child {
  border-bottom: 1px solid var(--blc-line-ink);
}

/* The estimator feature: the demo's ONE face placement (the sourced
   portrait, lazy + async + dims + alt); the figure caps at a portrait
   width on mobile and turns left beside the quote and bio at 56rem;
   the quote and attribution ride the band-8 device classes. */
.blc-estimator {
  display: grid;
  gap: 1.75rem;
  align-items: start;
}
.blc-estimator-photo {
  margin: 0;
  max-width: 20rem;
  border: 1px solid var(--blc-line-ink);
  border-radius: var(--blc-radius);
  overflow: hidden;
}
.blc-estimator-photo img {
  display: block;
  width: 100%;
  height: auto;
}
.blc-estimator .blc-quote-attr {
  margin-bottom: 0;
}
.blc-estimator .blc-bio {
  margin: 1.5rem 0 0;
}

/* The people rows: photo-less ledger rows; the row label rides Anton
   paper; the name rides Anton paper inline; the role rides the caps
   soft-accent byte; the sentence rides draft. */
.blc-peoplerows {
  margin-top: 1.75rem;
}
.blc-peoplerow {
  display: grid;
  gap: 0.375rem 2rem;
  padding: 1.25rem 0;
  border-top: 1px solid var(--blc-line-ink);
}
.blc-peoplerow-label {
  font: 400 1.125rem/1.3 var(--blc-display);
  color: var(--blc-paper);
}
.blc-peoplerow-text {
  margin: 0;
  color: var(--blc-draft);
}
.blc-peoplerow-name {
  font: 400 1.125rem/1.4 var(--blc-display);
  color: var(--blc-paper);
}
.blc-peoplerow-role {
  font: 600 0.75rem/1.5 var(--blc-text);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--blc-indigo-soft);
}

/* The record ledger rows: six photo-less compact rows anchoring to the
   Projects page, hairline dividers; stacked lines on mobile, the
   three-column row (name and meta stacked, note, tag) at 56rem. */
.blc-ledger {
  margin-top: 1.75rem;
}
.blc-page .blc-ledgerrow {
  display: grid;
  gap: 0.25rem 2rem;
  padding: 1.125rem 0;
  border-top: 1px solid var(--blc-line-ink);
  text-decoration: none;
}
.blc-ledgerrow:last-child {
  border-bottom: 1px solid var(--blc-line-ink);
}
.blc-page .blc-ledgerrow:hover {
  text-decoration: none;
}
.blc-ledger-name {
  font: 400 1.125rem/1.25 var(--blc-display);
  color: var(--blc-paper);
}
.blc-ledger-meta {
  font-size: 0.875rem;
  color: var(--blc-draft);
}
.blc-ledger-note {
  font-size: 0.9375rem;
  color: var(--blc-draft);
}
.blc-ledgerrow:hover .blc-ledger-meta,
.blc-ledgerrow:hover .blc-ledger-note {
  color: var(--blc-paper);
}

/* 48rem: the chrome flip (the desktop nav row and the head CTA reveal;
   the toggle and the panel retire), the crew pair, the market grid
   four-up, the newsledger row split. */
@media (min-width: 48rem) {
  .blc-head-row {
    gap: 1.5rem;
  }
  .blc-nav {
    display: block;
  }
  .blc-page .blc-head-cta {
    display: inline-flex;
  }
  .blc-nav-toggle,
  .blc-head-panel {
    display: none !important;
  }
  .blc-grid--crew {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .blc-markets {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .blc-newsrow {
    grid-template-columns: 9rem minmax(0, 1fr);
    gap: 1.5rem;
  }
  .blc-grid--projects {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .blc-footer-grid {
    grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr);
  }
}

/* 56rem: the trust split, the stats single row with hairline dividers,
   the stronghold split, the industries and record grids, the contact
   row columns. */
@media (min-width: 56rem) {
  .blc-trust-split {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 2.5rem;
  }
  .blc-trust-line {
    border-top: 0;
    border-left: 1px solid var(--blc-line-ink);
    padding: 0.25rem 0 0.25rem 2.5rem;
  }
  .blc-stats {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1.5rem;
  }
  .blc-stat + .blc-stat {
    border-left: 1px solid var(--blc-line-ink);
    padding-left: 1.75rem;
  }
  .blc-stronghold {
    grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
  }
  .blc-markets {
    border-left: 1px solid var(--blc-line-ink);
    padding-left: 2rem;
  }
  .blc-grid--industries {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .blc-recordhead {
    grid-template-columns: minmax(0, 1fr) max-content;
  }
  .blc-recordhead .blc-textlink {
    margin-top: 0;
    justify-self: end;
  }
  .blc-grid--record {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .blc-contactrows {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .blc-contactrow {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.25rem;
    border-top: 0;
    padding: 1rem 1.5rem 1rem 0;
  }
  .blc-contactrow + .blc-contactrow {
    border-left: 1px solid var(--blc-line-ink);
    padding-left: 1.5rem;
  }
  .blc-contactrow:last-of-type {
    border-bottom: 0;
    padding-right: 1.5rem;
  }
  .blc-contact-hours {
    grid-column: 1 / -1;
    margin-top: 1.25rem;
  }
  .blc-estimator {
    grid-template-columns: minmax(0, 18.75rem) minmax(0, 1fr);
    gap: 2.5rem;
  }
  .blc-estimator-photo {
    max-width: 100%;
  }
  .blc-peoplerow {
    grid-template-columns: minmax(0, 1fr) minmax(0, 2.2fr);
    align-items: baseline;
  }
  .blc-ledgerrow {
    grid-template-columns: minmax(0, 1.1fr) minmax(0, 1.3fr) max-content;
  }
  .blc-ledger-name {
    grid-column: 1;
    grid-row: 1;
  }
  .blc-ledger-meta {
    grid-column: 1;
    grid-row: 2;
  }
  .blc-ledger-note {
    grid-column: 2;
    grid-row: 1 / span 2;
    align-self: center;
  }
  .blc-ledgerrow .blc-tag {
    grid-column: 3;
    grid-row: 1 / span 2;
    align-self: center;
  }
}

/* 64rem: the hero scale, the market grid six-up, the industries links
   column beside the tile grid (display: contents keeps the plan markup;
   the tab and the h2 span the full width), the band rhythm. */
@media (min-width: 64rem) {
  .blc-hero {
    min-height: min(78svh, 46rem);
  }
  .blc-hero-inner {
    flex-direction: row;
    justify-content: space-between;
    align-items: flex-end;
    padding-block: 3rem;
  }
  .blc-markets {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
  .blc-shell:has(> .blc-grid--industries) {
    display: grid;
    grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
    column-gap: 2.5rem;
    align-items: start;
  }
  .blc-shell:has(> .blc-grid--industries) > :not(.blc-grid--industries):not(.blc-textlinks) {
    grid-column: 1 / -1;
  }
  .blc-shell:has(> .blc-grid--industries) > .blc-textlinks {
    margin-top: 1.75rem;
  }
  .blc-grid--projects {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .blc-bandnum-row {
    grid-template-columns: max-content minmax(0, 1fr);
    align-items: start;
  }
  .blc-bandnum--even .blc-bandnum-row {
    grid-template-columns: minmax(0, 1fr) max-content;
  }
  .blc-bandnum--even .blc-num {
    grid-column: 2;
    grid-row: 1;
    text-align: right;
  }
}

/* Reduced motion: the blanket kills the chevron turn transition; the
   countup script never starts its timers or observers under it, so the
   server-rendered settled stats stay untouched (the zero-timer law). */
@media (prefers-reduced-motion: reduce) {
  .blc-faq-chev {
    transition: none;
  }
  .blc-page *,
  .blc-page *::before,
  .blc-page *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
  }
}