/* ============================================================================
   Robrock Construction — styles.css
   Consumes ONLY tokens.css. Archetype C editorial single-column.
   Concept: the snapped chalk line. Motif recurs: hero underline, section
   dividers, timeline spine, footer mark. (direction.md)
   ============================================================================ */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body {
  margin: 0;
  background: var(--color-bg);
  color: var(--color-text);
  font-family: var(--font-body);
  font-size: var(--step-0);
  line-height: 1.65;
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

/* faint troweled-plaster grain (decision 5) */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  background-image: var(--grain);
  background-size: 180px 180px;
  opacity: var(--grain-opacity);
  pointer-events: none;
  z-index: 0;
  mix-blend-mode: multiply;
}
:root[data-theme="dark"] body::before,
.dark-band { }

img { max-width: 100%; height: auto; display: block; }

::selection { background: var(--color-chalk-tint); color: var(--color-ink); }
:root[data-theme="dark"] ::selection { color: var(--color-ink); }

/* ---- Layout primitives ---- */
.wrap { width: 100%; max-width: var(--frame); margin-inline: auto; padding-inline: var(--gutter); position: relative; z-index: 1; }
.wrap--narrow { max-width: var(--frame-narrow); }
.section { padding-block: var(--space-2xl); position: relative; }
.section--tight { padding-block: var(--space-xl); }
.section--pad-lg { padding-block: var(--space-3xl); }

/* ---- Typography ---- */
h1, h2, h3, h4 { font-family: var(--font-display); font-weight: 700; line-height: 1.06; letter-spacing: -0.01em; text-wrap: balance; margin: 0; color: var(--color-ink); }
h2 { font-size: var(--step-4); }
h3 { font-size: var(--step-2); font-weight: 600; line-height: 1.14; }
h4 { font-size: var(--step-1); font-weight: 600; }
p { margin: 0 0 var(--space-s); max-width: var(--measure); text-wrap: pretty; }
a { color: var(--color-link); text-decoration: none; }

.eyebrow, .label, .ref {
  font-family: var(--font-mono);
  font-size: var(--step--1);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-ink-faint);
}
.ref { letter-spacing: 0.1em; }
.lede { font-size: var(--step-1); line-height: 1.5; color: var(--color-ink-soft); max-width: 54ch; }
.small { font-size: var(--step--1); color: var(--color-ink-faint); }
.serif-lead { font-family: var(--font-display); font-weight: 600; font-size: var(--step-2); line-height: 1.28; letter-spacing: -0.005em; color: var(--color-ink); max-width: 34ch; }
em, .italic { font-style: italic; }

/* ---- The chalk line: signature motif ---- */
.chalk-rule {
  --_h: var(--rule-chalk);
  position: relative;
  height: var(--_h);
  background: var(--color-chalk);
  border: 0;
  margin-block: var(--space-xl);
  transform: scaleX(1);
  transform-origin: 0 50%;
}
.chalk-rule::before, .chalk-rule::after {
  content: "";
  position: absolute;
  top: 50%;
  width: 9px; height: 9px;
  border: var(--rule-chalk) solid var(--color-chalk);
  background: var(--color-bg);
  transform: translateY(-50%) rotate(45deg);
}
.chalk-rule::before { left: -1px; }
.chalk-rule::after  { right: -1px; }
/* animated snap: start collapsed, JS/scroll reveals */
.chalk-rule.snap { transform: scaleX(0); }
.chalk-rule.snap.is-in { transform: scaleX(1); transition: transform var(--dur-snap) var(--ease-snap); }
.hairline { height: var(--rule-hair); background: var(--color-rule); border: 0; margin-block: var(--space-l); }

/* reveal-on-scroll (supporting; ≤ signature) */
.rise { opacity: 1; }
@media (prefers-reduced-motion: no-preference) {
  .rise { opacity: 0; transform: translateY(8px); }
  .rise.is-in { opacity: 1; transform: none; transition: opacity var(--dur-rise) var(--ease-out), transform var(--dur-rise) var(--ease-out); }
}

/* ---- Buttons ---- */
.btn {
  display: inline-flex; align-items: center; gap: 0.5em;
  min-height: 48px; padding: 0.7em 1.25em;
  font-family: var(--font-body); font-size: var(--step-0); font-weight: 600;
  border-radius: var(--radius-2); border: var(--rule-chalk) solid transparent;
  cursor: pointer; text-decoration: none; line-height: 1;
}
.btn--primary { background: var(--color-chalk); color: var(--color-on-chalk); border-color: var(--color-chalk); }
.btn--ghost { background: transparent; color: var(--color-chalk-text); border-color: var(--color-chalk); }
.btn--on-graphite { background: var(--color-chalk-on-graphite); color: var(--color-on-chalk-bright); border-color: var(--color-chalk-on-graphite); }
@media (prefers-reduced-motion: no-preference) {
  .btn { transition: background var(--dur-snap) var(--ease-out), transform var(--dur-snap) var(--ease-out); }
  .btn:hover { transform: translateY(-1px); }
}
.btn--primary:hover { background: var(--color-chalk-deep); border-color: var(--color-chalk-deep); }
.btn--ghost:hover { background: var(--color-chalk-tint); }
.btn:focus-visible, a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: 2px solid var(--color-chalk); outline-offset: 2px;
}

/* text link with drawn underline on hover */
.tlink { color: var(--color-chalk-text); position: relative; font-weight: 600; }
.tlink::after { content: ""; position: absolute; left: 0; bottom: -2px; height: 2px; width: 100%; background: var(--color-chalk); transform: scaleX(0); transform-origin: 0 50%; }
@media (prefers-reduced-motion: no-preference) { .tlink::after { transition: transform var(--dur-snap) var(--ease-snap); } }
.tlink:hover::after, .tlink:focus-visible::after { transform: scaleX(1); }

/* ---- Skip link ---- */
.skip { position: absolute; left: -9999px; top: 0; background: var(--color-ink); color: var(--color-plaster); padding: 0.6em 1em; z-index: 100; border-radius: 0 0 var(--radius-2) 0; }
.skip:focus { left: 0; }

/* ---- Header / nav ---- */
.site-header {
  position: sticky; top: 0; z-index: 40;
  background: color-mix(in srgb, var(--color-bg) 88%, transparent);
  border-bottom: var(--rule-hair) solid var(--color-rule);
  backdrop-filter: saturate(1.1) blur(6px);
}
.nav { display: flex; align-items: center; justify-content: space-between; gap: var(--space-m); min-height: 64px; }
.brand { display: flex; align-items: center; gap: 0.6em; text-decoration: none; color: var(--color-ink); }
.brand__mark { flex: none; width: 30px; height: 30px; }
.brand__name { font-family: var(--font-display); font-weight: 700; font-size: var(--step-1); letter-spacing: -0.01em; line-height: 1; }
.brand__meta { display: block; font-family: var(--font-mono); font-size: 0.62rem; letter-spacing: 0.16em; color: var(--color-ink-faint); margin-top: 2px; }
.nav__links { display: flex; align-items: center; gap: var(--space-m); list-style: none; margin: 0; padding: 0; }
.nav__links a { color: var(--color-ink-soft); font-size: var(--step--1); font-weight: 600; letter-spacing: 0.01em; }
.nav__links a:hover { color: var(--color-chalk-text); }
.nav__actions { display: flex; align-items: center; gap: var(--space-xs); }

.theme-toggle { width: 44px; height: 44px; display: inline-grid; place-items: center; background: transparent; border: var(--rule-hair) solid var(--color-rule); border-radius: var(--radius-2); color: var(--color-ink-soft); cursor: pointer; }
.theme-toggle:hover { color: var(--color-chalk); border-color: var(--color-chalk); }
.theme-toggle .icon-sun { display: none; }
:root[data-theme="dark"] .theme-toggle .icon-sun { display: block; }
:root[data-theme="dark"] .theme-toggle .icon-moon { display: none; }

.hamburger { display: none; width: 44px; height: 44px; place-items: center; background: transparent; border: var(--rule-hair) solid var(--color-rule); border-radius: var(--radius-2); color: var(--color-ink); cursor: pointer; }
.hamburger .bar { display: block; position: absolute; width: 20px; height: 2px; background: currentColor; left: 50%; margin-left: -10px; }
.hamburger .bar1 { top: 15px; } .hamburger .bar2 { top: 21px; } .hamburger .bar3 { top: 27px; }
@media (prefers-reduced-motion: no-preference) { .hamburger .bar { transition: top var(--dur-snap) var(--ease-out), transform var(--dur-snap) var(--ease-out), opacity var(--dur-snap) var(--ease-out); } }
.hamburger[aria-expanded="true"] .bar1 { top: 21px; transform: rotate(45deg); }
.hamburger[aria-expanded="true"] .bar2 { opacity: 0; }
.hamburger[aria-expanded="true"] .bar3 { top: 21px; transform: rotate(-45deg); }

/* mobile dropdown */
.mobile-menu { display: none; }
@media (max-width: 860px) {
  .nav__links { display: none; }
  .nav__actions .btn--nav { display: none; }
  .hamburger { display: grid; position: relative; }
  .mobile-menu {
    display: block; overflow: hidden; max-height: 0;
    border-bottom: var(--rule-hair) solid var(--color-rule);
    background: var(--color-surface);
  }
  @media (prefers-reduced-motion: no-preference) { .mobile-menu { transition: max-height var(--dur-rise) var(--ease-out); } }
  .mobile-menu.open { max-height: 26rem; }
  .mobile-menu ul { list-style: none; margin: 0; padding: var(--space-s) var(--gutter) var(--space-m); display: grid; gap: 2px; }
  .mobile-menu a { display: block; padding: 0.85em 0; color: var(--color-ink); font-weight: 600; border-bottom: var(--rule-hair) solid var(--color-rule); }
  .mobile-menu a:last-child { border-bottom: 0; }
  .mobile-menu .btn { margin-top: var(--space-s); width: 100%; justify-content: center; }
}

/* ---- Hero ---- */
.hero { padding-block: clamp(var(--space-2xl), 10vh, var(--space-3xl)) var(--space-xl); }
.hero__eyebrow { margin-bottom: var(--space-m); display: flex; align-items: center; gap: 0.7em; flex-wrap: wrap; }
.hero__eyebrow .dot { width: 6px; height: 6px; background: var(--color-chalk); transform: rotate(45deg); flex: none; }
.hero h1 { font-size: var(--step-hero); max-width: 16ch; }
.hero__underline { margin: var(--space-m) 0 var(--space-l); max-width: 30rem; }
.hero__lede { margin-bottom: var(--space-l); }
.hero__cta { display: flex; flex-wrap: wrap; gap: var(--space-s); align-items: center; }
.hero__phone { font-family: var(--font-mono); font-size: var(--step--1); color: var(--color-ink-soft); }
.hero__phone a { color: var(--color-ink); }
.hero__spec { margin-top: var(--space-xl); display: flex; flex-wrap: wrap; gap: var(--space-l) var(--space-xl); border-top: var(--rule-hair) solid var(--color-rule); padding-top: var(--space-m); }
.hero__spec div { display: grid; gap: 3px; }
.hero__spec dt { font-family: var(--font-mono); font-size: 0.66rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--color-ink-faint); }
.hero__spec dd { margin: 0; font-family: var(--font-display); font-weight: 600; font-size: var(--step-1); }

/* ---- Section heading block ---- */
.sec-head { display: grid; gap: var(--space-xs); margin-bottom: var(--space-l); }
.sec-head .ref { color: var(--color-chalk-text); }
.sec-head p { color: var(--color-ink-soft); }

/* ---- Services: ruled rows (NOT cards) ---- */
.rows { border-top: var(--rule-hair) solid var(--color-rule); }
.row {
  display: grid; grid-template-columns: 2.4rem 1fr auto; gap: var(--space-m);
  align-items: start; padding: var(--space-m) 0;
  border-bottom: var(--rule-hair) solid var(--color-rule);
  position: relative;
}
.row::before { content: ""; position: absolute; left: calc(-1 * var(--gutter)); top: 0; bottom: 0; width: 3px; background: var(--color-chalk); transform: scaleY(0); transform-origin: 50% 0; }
@media (prefers-reduced-motion: no-preference) { .row::before { transition: transform var(--dur-snap) var(--ease-snap); } }
.row:hover::before { transform: scaleY(1); }
.row:hover { background: color-mix(in srgb, var(--color-surface) 60%, transparent); }
.row__icon { color: var(--color-chalk); width: 2.4rem; }
.row__icon svg { width: 26px; height: 26px; }
.row__body h3 { margin-bottom: 3px; }
.row__body p { margin: 0; color: var(--color-ink-soft); font-size: var(--step-0); max-width: 46ch; }
.row__ref { font-family: var(--font-mono); font-size: 0.7rem; letter-spacing: 0.1em; color: var(--color-ink-faint); padding-top: 0.4em; white-space: nowrap; }
@media (max-width: 640px) {
  .row { grid-template-columns: 2rem 1fr; }
  .row__ref { display: none; }
}

/* ---- Owner ---- */
.owner { display: grid; grid-template-columns: 0.8fr 1.2fr; gap: var(--space-xl); align-items: center; }
.owner__photo { aspect-ratio: 4/5; background: var(--color-surface); border: var(--rule-hair) solid var(--color-rule); display: grid; place-items: center; text-align: center; position: relative; overflow: hidden; }
.owner__photo .mono-tag { position: absolute; bottom: 0; left: 0; right: 0; padding: 0.5em; font-family: var(--font-mono); font-size: 0.62rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--color-ink-faint); background: color-mix(in srgb, var(--color-bg) 80%, transparent); border-top: var(--rule-hair) solid var(--color-rule); }
.owner__mono { font-family: var(--font-display); font-weight: 700; font-size: clamp(3rem, 8vw, 5rem); color: var(--color-chalk); opacity: 0.9; }
.owner__body blockquote { margin: 0 0 var(--space-m); font-family: var(--font-display); font-weight: 600; font-size: var(--step-2); line-height: 1.28; }
@media (max-width: 720px) { .owner { grid-template-columns: 1fr; gap: var(--space-l); } .owner__photo { max-width: 16rem; } }

/* ---- Gallery placeholders ---- */
.gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-s); }
.frame { aspect-ratio: 4/3; border: var(--rule-hair) solid var(--color-rule); background: repeating-linear-gradient(135deg, var(--color-surface) 0 14px, var(--color-plaster-3) 14px 15px); display: grid; place-content: center; text-align: center; gap: 4px; padding: var(--space-s); }
.frame .label { color: var(--color-ink-faint); }
.frame .cap { font-family: var(--font-display); font-weight: 600; color: var(--color-ink-soft); font-size: var(--step-0); }
.frame__mark { width: 22px; height: 22px; color: var(--color-chalk); margin: 0 auto 2px; }
@media (max-width: 720px) { .gallery { grid-template-columns: 1fr 1fr; } }
@media (max-width: 460px) { .gallery { grid-template-columns: 1fr; } }

/* ---- Graphite band (full-bleed via full-width section bg) ---- */
.band-graphite { background: var(--color-graphite); color: var(--color-on-graphite); }
.band-graphite h2, .band-graphite h3 { color: var(--color-on-graphite); }
.band-graphite .ref { color: var(--color-chalk-on-graphite); }
.band-graphite p { color: var(--color-on-graphite-soft); }
.band-graphite .hairline { background: var(--color-rule-graphite); }
/* proposal-band components on graphite: light cards keep dark ink; transparent
   elements switch to on-graphite tokens so nothing goes dark-on-dark */
.band-graphite .plan { color: var(--color-ink); }
.band-graphite .plan p, .band-graphite .plan__sub, .band-graphite .plan li { color: var(--color-ink-soft); }
.band-graphite .plan h3, .band-graphite .plan__price { color: var(--color-ink); }
.band-graphite .plan__tag { color: var(--color-chalk-text); }
.band-graphite .plan li svg { color: var(--color-chalk); }
.band-graphite .anchor-note { color: var(--color-ink-soft); }
.band-graphite .anchor-note b { color: var(--color-ink); }
.band-graphite .domain-box, .band-graphite .roadmap { color: var(--color-on-graphite-soft); }
.band-graphite .grow { border-color: var(--color-rule-graphite); }
.band-graphite .grow b { color: var(--color-on-graphite); }
.band-graphite .grow span { color: var(--color-on-graphite-soft); }
.band-graphite .grow svg, .band-graphite .domain-box svg { color: var(--color-chalk-on-graphite); }
.band-graphite .domain { color: var(--color-on-graphite-soft); border-color: var(--color-rule-graphite); }
.band-graphite .domain--open { color: var(--color-on-graphite); border-color: var(--color-chalk-on-graphite); }
.band-graphite .domain--open b { color: var(--color-chalk-on-graphite); }
.band-graphite .domain--pick { color: var(--color-on-chalk-bright); background: var(--color-chalk-on-graphite); border-color: var(--color-chalk-on-graphite); }

.proof { display: grid; grid-template-columns: auto 1fr; gap: var(--space-xl); align-items: center; }
.proof__numeral { display: grid; }
.proof__numeral .big { font-family: var(--font-display); font-weight: 700; font-size: var(--step-numeral); line-height: 0.85; color: var(--color-chalk-on-graphite); letter-spacing: -0.03em; }
.proof__numeral .cap { font-family: var(--font-mono); font-size: var(--step--1); letter-spacing: 0.12em; text-transform: uppercase; color: var(--color-on-graphite-faint); margin-top: var(--space-xs); }
.quotes { display: grid; gap: var(--space-m); }
.quote { border-left: var(--rule-chalk) solid var(--color-chalk-on-graphite); padding-left: var(--space-m); }
.quote p { font-family: var(--font-display); font-weight: 600; font-size: var(--step-1); color: var(--color-on-graphite); margin-bottom: 6px; max-width: 44ch; }
.quote cite { font-style: normal; font-family: var(--font-mono); font-size: 0.7rem; letter-spacing: 0.08em; color: var(--color-on-graphite-faint); }
.quote .stars { color: var(--color-chalk-on-graphite); letter-spacing: 0.1em; }
.proof__note { margin-top: var(--space-l); }
@media (max-width: 720px) { .proof { grid-template-columns: 1fr; gap: var(--space-l); } }

/* ---- Service area ---- */
.area { display: grid; grid-template-columns: 1.1fr 1fr; gap: var(--space-xl); align-items: start; }
.towns { display: flex; flex-wrap: wrap; gap: 0.5em; margin-top: var(--space-s); }
.town { font-family: var(--font-mono); font-size: var(--step--1); letter-spacing: 0.06em; padding: 0.4em 0.7em; border: var(--rule-hair) solid var(--color-rule); border-radius: var(--radius-2); color: var(--color-ink-soft); }
.town--seat { border-color: var(--color-chalk); color: var(--color-chalk-text); }
.counties { margin-top: var(--space-m); }
@media (max-width: 720px) { .area { grid-template-columns: 1fr; gap: var(--space-l); } }

/* ---- FAQ (editorial Q/A, not accordion widget) ---- */
.qa { border-top: var(--rule-hair) solid var(--color-rule); }
.qa__item { padding: var(--space-m) 0; border-bottom: var(--rule-hair) solid var(--color-rule); display: grid; grid-template-columns: auto 1fr; gap: var(--space-m); }
.qa__q { font-family: var(--font-display); font-weight: 600; font-size: var(--step-1); color: var(--color-ink); }
.qa__num { font-family: var(--font-mono); font-size: 0.72rem; color: var(--color-chalk-text); padding-top: 0.5em; letter-spacing: 0.08em; }
.qa__a { color: var(--color-ink-soft); margin: 0.4em 0 0; grid-column: 2; max-width: 60ch; }
.qa__a .sample { font-family: var(--font-mono); font-size: 0.66rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-ink-faint); border: var(--rule-hair) solid var(--color-rule); padding: 0.15em 0.5em; border-radius: var(--radius-1); display: inline-block; margin-top: 0.5em; }
@media (max-width: 560px) { .qa__item { grid-template-columns: 1fr; gap: var(--space-2xs); } .qa__a { grid-column: 1; } }

/* ---- Contact + form ---- */
.contact { display: grid; grid-template-columns: 1fr 1.1fr; gap: var(--space-xl); align-items: start; }
.contact__lines { display: grid; gap: var(--space-m); }
.cline { display: grid; grid-template-columns: 1.6rem 1fr; gap: var(--space-s); align-items: start; }
.cline svg { width: 20px; height: 20px; color: var(--color-chalk); margin-top: 3px; }
.cline dt { font-family: var(--font-mono); font-size: 0.66rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--color-ink-faint); }
.cline dd { margin: 2px 0 0; font-weight: 600; color: var(--color-ink); }
.cline dd a { color: var(--color-ink); }
.cline .sample-tag { font-family: var(--font-mono); font-size: 0.6rem; color: var(--color-ink-faint); font-weight: 400; }

.estimate { background: var(--color-surface); border: var(--rule-hair) solid var(--color-rule); border-radius: var(--radius-2); padding: var(--space-l); }
.field { display: grid; gap: 0.35em; margin-bottom: var(--space-s); }
.field label { font-family: var(--font-mono); font-size: 0.68rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-ink-faint); }
.field input, .field select, .field textarea {
  box-sizing: border-box; width: 100%; min-height: 48px;
  font: inherit; font-size: var(--step-0); line-height: 1.3;
  color: var(--color-ink); background: var(--color-bg);
  border: var(--rule-hair) solid var(--color-rule); border-radius: var(--radius-2);
  padding: 0.6em 0.8em;
}
.field textarea { min-height: 6.5rem; resize: vertical; }
.field select { appearance: none; -webkit-appearance: none; -moz-appearance: none; padding-right: 2.4em;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%233f7ea3' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
  background-repeat: no-repeat; background-position: right 0.8em center;
}
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--color-chalk); }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.form-foot { display: flex; align-items: center; gap: var(--space-m); flex-wrap: wrap; margin-top: var(--space-xs); }
.form-note { font-size: 0.75rem; color: var(--color-ink-faint); margin: 0; }
.form-confirm { display: none; margin-top: var(--space-s); padding: var(--space-s) var(--space-m); border: var(--rule-chalk) solid var(--color-chalk); border-radius: var(--radius-2); background: var(--color-chalk-tint); color: var(--color-ink); font-weight: 600; }
.form-confirm.show { display: flex; align-items: center; gap: 0.6em; }
.form-confirm svg { width: 20px; height: 20px; color: var(--color-chalk); flex: none; }
@media (max-width: 720px) { .contact { grid-template-columns: 1fr; gap: var(--space-l); } }

/* ---- Pitch transition chrome (recessive) ---- */
.pitch-divider { background: var(--color-surface); border-top: var(--rule-hair) solid var(--color-rule); border-bottom: var(--rule-hair) solid var(--color-rule); }
.pitch-divider .wrap { padding-block: var(--space-l); display: flex; align-items: center; gap: var(--space-m); flex-wrap: wrap; }
.pitch-divider .chip { font-family: var(--font-mono); font-size: 0.66rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--color-chalk-text); border: var(--rule-hair) solid var(--color-chalk); padding: 0.3em 0.7em; border-radius: var(--radius-1); flex: none; }
.pitch-divider p { margin: 0; color: var(--color-ink-soft); font-size: var(--step--1); max-width: 60ch; }

/* IV-pitch surfaces get a hair of chalk on the left of the wrap heading */
.iv-eyebrow { color: var(--color-chalk-text); }

/* ---- Case for your site ---- */
.case { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-xl); }
.case__points { display: grid; gap: var(--space-m); }
.case__point { display: grid; grid-template-columns: 1.8rem 1fr; gap: var(--space-s); }
.case__point svg { width: 24px; height: 24px; color: var(--color-chalk); }
.case__point h4 { margin-bottom: 3px; }
.case__point p { margin: 0; color: var(--color-ink-soft); font-size: var(--step-0); }
.stat-strip { border: var(--rule-hair) solid var(--color-rule); border-radius: var(--radius-2); padding: var(--space-l); background: var(--color-surface); align-self: start; }
.stat { padding: var(--space-s) 0; border-bottom: var(--rule-hair) solid var(--color-rule); }
.stat:last-child { border-bottom: 0; }
.stat b { font-family: var(--font-display); font-weight: 700; font-size: var(--step-2); color: var(--color-chalk); display: block; }
.stat span { font-size: var(--step--1); color: var(--color-ink-soft); }
.stat cite { font-style: normal; font-family: var(--font-mono); font-size: 0.62rem; color: var(--color-ink-faint); display: block; margin-top: 3px; letter-spacing: 0.04em; }
@media (max-width: 720px) { .case { grid-template-columns: 1fr; gap: var(--space-l); } }

/* ---- Proposal / pricing ---- */
.plans { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-l); margin-top: var(--space-l); }
.plan { border: var(--rule-hair) solid var(--color-rule); border-radius: var(--radius-2); padding: var(--space-l); background: var(--color-bg); position: relative; }
.plan--featured { border-color: var(--color-chalk); border-width: var(--rule-chalk); }
.plan__tag { font-family: var(--font-mono); font-size: 0.64rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--color-chalk-text); }
.plan h3 { margin: 0.3em 0 0.2em; }
.plan__price { font-family: var(--font-display); font-weight: 700; font-size: var(--step-3); color: var(--color-ink); line-height: 1.05; margin: var(--space-xs) 0; }
.plan__price small { font-family: var(--font-body); font-size: var(--step-0); font-weight: 400; color: var(--color-ink-soft); }
.plan__sub { font-size: var(--step--1); color: var(--color-ink-soft); margin-bottom: var(--space-s); }
.plan ul { list-style: none; margin: var(--space-s) 0 0; padding: 0; display: grid; gap: 0.5em; }
.plan li { display: grid; grid-template-columns: 1.3rem 1fr; gap: 0.4em; font-size: var(--step--1); color: var(--color-ink-soft); }
.plan li svg { width: 16px; height: 16px; color: var(--color-chalk); margin-top: 3px; }
.anchor-note { margin-top: var(--space-l); padding: var(--space-m); border-left: var(--rule-chalk) solid var(--color-chalk); background: var(--color-surface); font-size: var(--step--1); color: var(--color-ink-soft); }
.anchor-note b { color: var(--color-ink); }
@media (max-width: 720px) { .plans { grid-template-columns: 1fr; } }

.domain-box { margin-top: var(--space-l); border: var(--rule-hair) solid var(--color-rule); border-radius: var(--radius-2); padding: var(--space-l); }
.domain-list { display: flex; flex-wrap: wrap; gap: 0.5em; margin-top: var(--space-s); }
.domain { font-family: var(--font-mono); font-size: var(--step--1); padding: 0.4em 0.7em; border: var(--rule-hair) solid var(--color-rule); border-radius: var(--radius-2); color: var(--color-ink-soft); }
.domain--open { border-color: var(--color-chalk); color: var(--color-ink); }
.domain--open b { color: var(--color-chalk-text); }
.domain--pick { background: var(--color-chalk); color: var(--color-on-chalk); border-color: var(--color-chalk); }

.roadmap { margin-top: var(--space-l); }
.roadmap__grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-s); margin-top: var(--space-s); }
.grow { display: grid; grid-template-columns: 1.6rem 1fr; gap: var(--space-s); padding: var(--space-s) 0; border-top: var(--rule-hair) solid var(--color-rule); }
.grow svg { width: 20px; height: 20px; color: var(--color-chalk); margin-top: 2px; }
.grow b { font-family: var(--font-display); font-size: var(--step-0); }
.grow span { font-size: var(--step--1); color: var(--color-ink-soft); }
@media (max-width: 640px) { .roadmap__grid { grid-template-columns: 1fr; } }

/* ---- Timeline (chalk-line spine) ---- */
.timeline { position: relative; margin-top: var(--space-l); padding-left: var(--space-l); }
.timeline::before { content: ""; position: absolute; left: 6px; top: 6px; bottom: 6px; width: 2px; background: var(--color-chalk); }
.phase { position: relative; padding: 0 0 var(--space-l) var(--space-m); }
.phase:last-child { padding-bottom: 0; }
.phase::before { content: ""; position: absolute; left: calc(-1 * var(--space-l) + 1px); top: 4px; width: 12px; height: 12px; background: var(--color-bg); border: var(--rule-chalk) solid var(--color-chalk); transform: rotate(45deg); }
.phase__when { font-family: var(--font-mono); font-size: 0.68rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-chalk-text); }
.phase h4 { margin: 3px 0 4px; }
.phase p { margin: 0; color: var(--color-ink-soft); font-size: var(--step-0); }
.phase .dep { font-family: var(--font-mono); font-size: 0.66rem; color: var(--color-ink-faint); margin-top: 4px; }
.next-steps { margin-top: var(--space-xl); border-top: var(--rule-hair) solid var(--color-rule); padding-top: var(--space-l); }
.next-steps ol { margin: var(--space-s) 0 var(--space-l); padding-left: 1.3em; display: grid; gap: 0.5em; }
.next-steps li { color: var(--color-ink-soft); }
.next-steps li b { color: var(--color-ink); }

/* ---- Design reference / style tile ---- */
.tile-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-l); }
.tile { border: var(--rule-hair) solid var(--color-rule); border-radius: var(--radius-2); padding: var(--space-l); }
.tile h4 { margin-bottom: var(--space-s); }
.swatches { display: flex; gap: 0.5em; flex-wrap: wrap; }
.sw { display: grid; gap: 4px; font-family: var(--font-mono); font-size: 0.6rem; color: var(--color-ink-faint); }
.sw i { width: 3.2rem; height: 3.2rem; border-radius: var(--radius-2); border: var(--rule-hair) solid var(--color-rule); display: block; }
.type-spec { display: grid; gap: var(--space-s); }
.type-spec .d { font-family: var(--font-display); font-weight: 700; font-size: var(--step-3); line-height: 1; }
.type-spec .b { font-family: var(--font-body); font-size: var(--step-0); }
.type-spec .m { font-family: var(--font-mono); font-size: var(--step--1); letter-spacing: 0.08em; }
.type-spec small { display: block; font-family: var(--font-mono); font-size: 0.6rem; color: var(--color-ink-faint); letter-spacing: 0.08em; margin-top: 3px; }
.mark-concept { display: flex; gap: var(--space-l); align-items: center; flex-wrap: wrap; }
.mark-concept svg { flex: none; }
.voice-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.5em; }
.voice-list li { display: grid; grid-template-columns: 1.4rem 1fr; gap: 0.5em; font-size: var(--step--1); color: var(--color-ink-soft); }
.voice-list .yes { color: var(--color-chalk-text); font-weight: 700; }
.voice-list .no { color: var(--color-ink-faint); font-weight: 700; }
@media (max-width: 720px) { .tile-grid { grid-template-columns: 1fr; } }

/* ---- About IV ---- */
.about-iv { display: grid; grid-template-columns: auto 1fr; gap: var(--space-l); align-items: start; }
.about-iv__mark { width: 54px; height: 54px; color: var(--color-chalk); flex: none; }
.about-iv ul { list-style: none; margin: var(--space-s) 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--space-s) var(--space-l); }
.about-iv li { display: flex; align-items: center; gap: 0.4em; font-size: var(--step--1); color: var(--color-ink-soft); }
.about-iv li svg { width: 16px; height: 16px; color: var(--color-chalk); }
@media (max-width: 560px) { .about-iv { grid-template-columns: 1fr; } }

/* ---- Footer (destination) ---- */
.site-footer { background: var(--color-graphite); color: var(--color-on-graphite); padding-block: var(--space-2xl) var(--space-l); }
.footer-cta { display: grid; gap: var(--space-s); margin-bottom: var(--space-xl); }
.footer-cta h2 { color: var(--color-on-graphite); font-size: var(--step-3); max-width: 20ch; }
.footer-cta p { color: var(--color-on-graphite-soft); max-width: 50ch; }
.footer-cta .btn { margin-top: var(--space-xs); width: fit-content; }
.footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: var(--space-l); border-top: var(--rule-hair) solid var(--color-rule-graphite); padding-top: var(--space-l); }
.footer-grid h5 { font-family: var(--font-mono); font-size: 0.66rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--color-on-graphite-faint); margin: 0 0 var(--space-s); font-weight: 400; }
.footer-grid a, .footer-grid p { color: var(--color-on-graphite-soft); font-size: var(--step--1); display: block; margin: 0 0 0.4em; }
.footer-grid a:hover { color: var(--color-chalk-on-graphite); }
.footer-sign { margin-top: var(--space-xl); display: flex; align-items: center; justify-content: space-between; gap: var(--space-m); flex-wrap: wrap; border-top: var(--rule-hair) solid var(--color-rule-graphite); padding-top: var(--space-l); }
.footer-sign .signoff { font-family: var(--font-display); font-weight: 600; font-size: var(--step-1); color: var(--color-on-graphite); }
.footer-sign .built { font-family: var(--font-mono); font-size: 0.68rem; letter-spacing: 0.06em; color: var(--color-on-graphite-faint); }
.footer-sign .built a { color: var(--color-chalk-on-graphite); }
.footer-mark { display: flex; align-items: center; gap: 0.6em; }
.footer-mark svg { width: 26px; height: 26px; color: var(--color-chalk-on-graphite); }
@media (max-width: 720px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 460px) { .footer-grid { grid-template-columns: 1fr; } }

/* utility */
.stack-s > * + * { margin-top: var(--space-s); }
.mt-l { margin-top: var(--space-l); }
.center-narrow { max-width: 44rem; }
