/* ============================================================================
   MAS COMMUNICATIONS DESIGN SYSTEM
   Art direction: American print advertising, direct mail, print-shop craft.

   The visual language is built from things MAS actually produces: postcards,
   indicia, address blocks, postal barcodes, crop and registration marks,
   proofing annotations, neighbourhood maps, campaign IDs.

   Fonts load via <link> in each page's <head> (not @import) so they don't sit
   behind a render-blocking CSS request.

   Structure
     01 Tokens        05 Marks & rules    09 Nav / footer   13 Responsive
     02 Reset         06 Print artifacts  10 Forms
     03 Typography    07 Editorial parts  11 Pricing
     04 Layout        08 Buttons          12 Motion
   ============================================================================ */

/* ---------------------------------------------------------------- 01 TOKENS */
:root {
  --font-display: 'Fraunces', Georgia, 'Times New Roman', serif;
  --font-condensed: 'Barlow Condensed', 'Arial Narrow', system-ui, sans-serif;
  --font-body: 'Inter', system-ui, -apple-system, sans-serif;
  --font-mono: 'IBM Plex Mono', ui-monospace, 'Courier New', monospace;

  /* Brand: unchanged MAS palette, extended for depth */
  --navy-900: #0f1b2d;
  --navy-800: #17273d;
  --navy-700: #243752;
  --navy-100: #d0d9e6;

  --red-600: #c0392b;   /* the MAS accent */
  --red-700: #a93226;
  --red-500: #e56a56;   /* accent on navy; lifted to clear AA at label size */

  /* Warm paper stock rather than sterile white */
  --cream:      #f4efe4;
  --cream-deep: #e9e2d3;
  --paper:      #fbf8f2;
  --white:      #ffffff;

  --ink:      #15181d;
  --ink-soft: #4a4f58;
  --rule:     #d6cdba;   /* warm hairline for cream surfaces */
  --rule-cool:#e2e2e5;   /* hairline for white surfaces */
  --rule-strong:#8f8068; /* control + card boundaries, clears 3:1 on
                            white, paper and cream alike */

  /* Crisp, not bubbly */
  --r-sm: 2px;

  --shadow-lift: 0 10px 30px rgba(15, 27, 45, .13);
  --shadow-flat: 0 2px 8px rgba(15, 27, 45, .07);

  --ease: cubic-bezier(.2, .7, .3, 1);

  /* Varied section heights, not one repeated value */
  --pad-xl: 132px;
  --pad-lg: 104px;
  --pad-md: 76px;
  --pad-sm: 52px;
}

/* ----------------------------------------------------------------- 02 RESET */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  font-family: var(--font-body);
  font-size: 17px;
  line-height: 1.6;
  color: var(--ink);
  background: var(--cream);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;        /* asymmetric compositions must never scroll sideways */
}
img, svg { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; cursor: pointer; border: none; background: none; color: inherit; }
input, select, textarea { font: inherit; }
ul { list-style: none; }
address { font-style: normal; }
::selection { background: var(--red-600); color: #fff; }
:focus-visible { outline: 2px solid var(--red-600); outline-offset: 3px; }

/* ------------------------------------------------------------ 03 TYPOGRAPHY */
.display, h1, h2, h3 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--navy-900);
  letter-spacing: -0.015em;
  text-wrap: balance;
}

/* Oversized brand statements. Tight leading is the point. */
.display { font-size: clamp(2.75rem, 7.4vw, 5.6rem); line-height: 0.96; }
.display--md { font-size: clamp(2.25rem, 5.4vw, 4rem); line-height: 1; }

h1 { font-size: clamp(2.5rem, 6.4vw, 4.75rem); line-height: 0.98; }
h2 { font-size: clamp(1.85rem, 3.6vw, 2.9rem); line-height: 1.08; }
h3 { font-size: clamp(1.15rem, 1.7vw, 1.45rem); line-height: 1.2; font-weight: 600; }

p { text-wrap: pretty; }
.lede { font-size: clamp(1.0625rem, 1.5vw, 1.25rem); line-height: 1.55; color: var(--ink-soft); }
.measure { max-width: 58ch; }
.measure-tight { max-width: 42ch; }

/* Section label: condensed, industrial, the workhorse of the system */
.label {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--font-condensed);
  font-weight: 600;
  font-size: 0.8125rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--red-600);
}
.label::before { content: ""; width: 22px; height: 2px; background: var(--red-600); flex-shrink: 0; }
.label--plain::before { display: none; }

/* Technical strings: campaign IDs, ZIPs, quantities, tracking numbers */
.mono {
  font-family: var(--font-mono);
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-soft);
}

/* Oversized sequence numerals */
.numeral {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: clamp(3.25rem, 6vw, 5rem);
  line-height: 0.8;
  color: var(--red-600);
  font-variant-numeric: tabular-nums;
}

/* Dark-surface inversions */
.on-dark, .on-dark h1, .on-dark h2, .on-dark h3, .on-dark .display { color: #fff; }
.on-dark .lede { color: var(--navy-100); }
.on-dark .label { color: var(--red-500); }
.on-dark .label::before { background: var(--red-500); }
.on-dark .mono { color: var(--navy-100); }
.on-dark .numeral { color: var(--red-500); }

/* ---------------------------------------------------------------- 04 LAYOUT */
.wrap { width: 100%; max-width: 1220px; margin: 0 auto; padding: 0 32px; }
.wrap--narrow { max-width: 900px; }

section { padding: var(--pad-lg) 0; }
.sec--xl { padding: var(--pad-xl) 0; }
.sec--md { padding: var(--pad-md) 0; }
.sec--sm { padding: var(--pad-sm) 0; }
section[id] { scroll-margin-top: 90px; }

.bg-cream { background: var(--cream); }
.bg-deep  { background: var(--cream-deep); }
.bg-paper { background: var(--paper); }
.bg-white { background: var(--white); }
.bg-navy  { background: var(--navy-900); color: #fff; }

/* Asymmetric grids: the default composition, not centred stacks */
.grid-editorial {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
  gap: clamp(40px, 6vw, 92px);
  align-items: center;
}
.grid-editorial--top { align-items: start; }
.grid-editorial--flip > :first-child { order: 2; }

/* Statement left, supporting fragments right */
.grid-statement {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
  gap: clamp(40px, 6vw, 88px);
  align-items: start;
}

.stack-sm > * + * { margin-top: 14px; }
.stack-md > * + * { margin-top: 22px; }
.stack-lg > * + * { margin-top: 34px; }

/* --------------------------------------------------------- 05 MARKS & RULES */
.rule { height: 1px; background: var(--rule); border: 0; }
.on-dark .rule, .bg-navy .rule { background: var(--navy-700); }
.rule--red { height: 2px; background: var(--red-600); width: 56px; }

/* Crop marks: printer's trim guides on the corners of a composition */
.cropped { position: relative; }
.cropped::before, .cropped::after {
  content: "";
  position: absolute;
  width: 16px; height: 16px;
  pointer-events: none;
}
.cropped::before { top: -10px; left: -10px; border-top: 1px solid var(--red-600); border-left: 1px solid var(--red-600); }
.cropped::after { bottom: -10px; right: -10px; border-bottom: 1px solid var(--red-600); border-right: 1px solid var(--red-600); }

/* Perforation: the tear line on a mailer */
.perf { height: 0; border: 0; border-top: 2px dashed var(--rule); }

/* Proofing annotation: what a print designer scribbles on a proof */
.annot {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-condensed);
  font-weight: 600;
  font-size: 0.8125rem;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--red-600);
  line-height: 1.1;
}
.annot svg { width: 30px; height: 12px; flex-shrink: 0; }

/* ------------------------------------------------------ 06 PRINT ARTIFACTS */

/* Postcard: .pc-face is the printed side, .pc-addr the address side */
.pc {
  position: relative;
  aspect-ratio: 6 / 4;
  border-radius: var(--r-sm);
  box-shadow: var(--shadow-lift);
  overflow: hidden;
  transition: transform .45s var(--ease);
}
.pc-face {
  background: var(--navy-900);
  color: #fff;
  padding: clamp(16px, 2.4vw, 26px);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.pc-face .kicker {
  font-family: var(--font-condensed);
  font-weight: 600;
  font-size: 0.75rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--red-500);
}
.pc-face .shout {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(1.15rem, 2.5vw, 1.9rem);
  line-height: 1;
  color: #fff;
  letter-spacing: -0.02em;
}
.pc-face .terms {
  font-family: var(--font-mono);
  font-size: 0.625rem;
  letter-spacing: 0.05em;
  color: var(--navy-100);
  text-transform: uppercase;
}

.pc-addr {
  height: 100%;
  background: var(--paper);
  padding: clamp(14px, 2vw, 20px);
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-rows: auto 1fr auto;
  gap: 10px 14px;
  border: 1px solid var(--rule);
}

/* Bulk-mail indicia: the printed postage block on real direct mail */
.indicia {
  grid-column: 2; grid-row: 1;
  align-self: start;
  border: 1px solid var(--navy-900);
  padding: 6px 9px;
  text-align: center;
  font-family: var(--font-condensed);
  font-weight: 600;
  font-size: 0.5625rem;
  line-height: 1.25;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--navy-900);
}

.addr {
  grid-column: 1; grid-row: 2;
  align-self: end;
  font-family: var(--font-mono);
  font-size: 0.6875rem;
  line-height: 1.65;
  color: var(--navy-900);
  text-transform: uppercase;
}
.addr .resident { color: var(--ink-soft); }

/* POSTNET-style routing bars */
.barcode {
  grid-column: 1 / -1; grid-row: 3;
  height: 22px;
  background-image: repeating-linear-gradient(
    to right,
    var(--navy-900) 0 2px, transparent 2px 5px,
    var(--navy-900) 5px 7px, transparent 7px 12px,
    var(--navy-900) 12px 14px, transparent 14px 17px);
  background-repeat: repeat-x;
  opacity: .82;
}

/* Decorative QR module grid, tinted via mask so one asset serves any colour */
.qr {
  width: 62px; height: 62px;
  background-color: var(--navy-900);
  -webkit-mask: url(/assets/qr.svg) center / contain no-repeat;
  mask: url(/assets/qr.svg) center / contain no-repeat;
  flex-shrink: 0;
}
.qr--sm { width: 46px; height: 46px; }
.qr--light { background-color: #fff; }

.postmark { width: 118px; height: 118px; color: var(--navy-900); opacity: .9; }
.on-dark .postmark { color: #fff; opacity: .5; }

/* Hero mail composition: overlapping pieces, tangible not flat.
   The front card is lifted clear of the bottom so the proofing annotation
   sits on cream rather than colliding with the navy postcard. */
.mailstack { position: relative; padding: 20px 0 62px; }
.mailstack .pc--back { width: 78%; margin-left: auto; transform: rotate(2.1deg); }
.mailstack .pc--front {
  width: 74%;
  position: absolute;
  left: 0; bottom: 62px;
  transform: rotate(-3.2deg);
  z-index: 2;
}
.mailstack:hover .pc--front { transform: rotate(-4.4deg) translate(-6px, -6px); }
.mailstack:hover .pc--back  { transform: rotate(3deg) translate(5px, -3px); }
.mailstack .annot { position: absolute; right: 0; bottom: 10px; z-index: 3; }

/* Placement for the extra pieces that sit on an address panel */
.pc-addr .pc-cid { grid-column: 1; grid-row: 1; }
.pc-addr .qr { grid-column: 2; grid-row: 2; align-self: end; }

/* Generic mounted artifact: a piece of production output on the page */
.artifact { background: var(--paper); border: 1px solid var(--rule); padding: 20px; }
.artifact--dark { background: var(--navy-800); border-color: var(--navy-700); }

/* Design proof: abstract page furniture under crop marks */
.proof-sheet .bar { height: 7px; background: var(--rule); margin-top: 9px; border-radius: 1px; }
.proof-sheet .bar--head { height: 15px; width: 58%; background: var(--navy-900); margin-top: 0; }
.proof-sheet .bar--short { width: 68%; }
.proof-sheet .bar--red { height: 9px; width: 34%; background: var(--red-600); margin-top: 15px; }

/* Spec sheet row: leader dots, like a print job ticket */
.spec {
  display: flex;
  align-items: baseline;
  gap: 12px;
  padding: 13px 0;
  border-bottom: 1px solid var(--rule);
  font-family: var(--font-condensed);
  font-size: 1rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.spec dt { color: var(--ink-soft); font-weight: 500; white-space: nowrap; }
.spec .dots { flex: 1; border-bottom: 1px dotted var(--rule); transform: translateY(-4px); }
.spec dd { color: var(--navy-900); font-weight: 700; white-space: nowrap; }
.on-dark .spec { border-bottom-color: var(--navy-700); }
.on-dark .spec dt { color: var(--navy-100); }
.on-dark .spec dd { color: #fff; }
.on-dark .spec .dots { border-bottom-color: var(--navy-700); }

/* Neighbourhood map */
.map { width: 100%; height: auto; }
.map .streets { stroke: var(--rule); stroke-width: 1.4; fill: none; }
.map .parcel  { fill: var(--navy-900); opacity: .07; }
.map .target { fill: var(--red-600); fill-opacity: .13; stroke: var(--red-600); stroke-width: 2; }
.map .radius  { fill: none; stroke: var(--red-600); stroke-dasharray: 5 5; stroke-width: 1.4; opacity: .55; }
.map .pin     { fill: var(--red-600); }
.map .zip     { font-family: 'IBM Plex Mono', monospace; font-size: 11px; fill: var(--ink-soft); letter-spacing: .06em; }
.on-dark .map .streets { stroke: var(--navy-700); }
.on-dark .map .parcel  { fill: #fff; opacity: .05; }
.on-dark .map .zip     { fill: var(--navy-100); }

/* --------------------------------------------------- 07 EDITORIAL SECTIONS */

/* Numbered process step: no card, just type, rule and artifact */
.step {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) minmax(0, 0.85fr);
  gap: clamp(20px, 3.5vw, 48px);
  align-items: start;
  padding: clamp(32px, 4vw, 52px) 0;
  border-top: 1px solid var(--rule);
}
.step:last-child { border-bottom: 1px solid var(--rule); }
.step-body h3 { margin-bottom: 8px; }
.step-body p { color: var(--ink-soft); }
.step-art { align-self: center; }
.on-dark .step, .on-dark .step:last-child { border-color: var(--navy-700); }
.on-dark .step-body p { color: var(--navy-100); }

/* Clipped fragments: scraps of mail pinned to a board */
.scrap {
  position: relative;
  background: var(--white);
  border: 1px solid var(--rule);
  border-left: 3px solid var(--red-600);
  padding: 20px 24px;
  font-size: 1.0625rem;
  line-height: 1.45;
  box-shadow: var(--shadow-flat);
  transition: transform .3s var(--ease);
}
.scrap:nth-child(1) { transform: rotate(-0.5deg); }
.scrap:nth-child(2) { transform: rotate(0.4deg) translateX(14px); }
.scrap:nth-child(3) { transform: rotate(-0.3deg) translateX(4px); }
.scrap:hover { transform: rotate(0) translateX(0); }

/* Specimen: an industry catalogued like a mail piece */
.specimen {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 18px;
  padding: 26px 0;
  border-top: 1px solid var(--rule);
  align-items: start;
}
.specimen-idx { font-family: var(--font-mono); font-size: 0.6875rem; color: var(--red-600); padding-top: 6px; letter-spacing: .08em; }
.specimen h3 {
  font-family: var(--font-condensed);
  font-size: 1.4rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  line-height: 1.05;
}
.specimen p { margin-top: 6px; color: var(--ink-soft); font-size: 0.9375rem; }
.specimen-meta {
  margin-top: 10px;
  font-family: var(--font-mono);
  font-size: 0.625rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ink-soft);
}
.specimen-meta span { color: var(--red-600); }

/* Big stat, set as type rather than in a box */
.figure-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 32px; }
.specimen-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 56px; }
.figure { display: flex; flex-direction: column; gap: 5px; }
.figure .fig-num {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: clamp(2.75rem, 5vw, 4.25rem);
  line-height: 0.85;
  color: var(--navy-900);
  font-variant-numeric: tabular-nums;
}
.figure .fig-label {
  font-family: var(--font-condensed);
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--ink-soft);
}
.on-dark .figure .fig-num { color: #fff; }
.on-dark .figure .fig-label { color: var(--navy-100); }

/* Campaign report: makes "measurable" tangible */
.report { border: 1px solid var(--navy-700); background: var(--navy-800); padding: clamp(24px, 3vw, 34px); border-radius: var(--r-sm); }
.report-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--navy-700);
  flex-wrap: wrap;
}
.report-note {
  margin-top: 18px;
  font-family: var(--font-mono);
  font-size: 0.625rem;
  letter-spacing: .09em;
  text-transform: uppercase;
  color: var(--navy-100);
  opacity: .8;
}


/* Est. 2000 credibility callout. The primary trust signal, so it is set
   at headline weight rather than tucked into a small badge. */
.est {
  display: flex;
  align-items: center;
  gap: 20px;
  padding-top: 22px;
  border-top: 3px solid var(--red-600);
  max-width: 440px;
}
.est-num {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: clamp(3.5rem, 6.5vw, 5.25rem);
  line-height: .78;
  color: var(--navy-900);
  font-variant-numeric: tabular-nums;
}
.est-num sup { font-size: .45em; vertical-align: super; line-height: 0; }
.est-copy { display: flex; flex-direction: column; gap: 4px; }
.est-copy strong {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: clamp(1.05rem, 1.6vw, 1.35rem);
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--navy-900);
  line-height: 1.05;
}
.est-copy span {
  font-family: var(--font-mono);
  font-size: .6875rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--ink-soft);
}
/* Compact echo used on the interior pages */
.est--sm { gap: 14px; padding-top: 16px; border-top-width: 2px; max-width: 360px; }
.est--sm .est-num { font-size: clamp(2.5rem, 4vw, 3.25rem); }
.est--sm .est-copy strong { font-size: 1rem; }
.on-dark .est-num, .on-dark .est-copy strong { color: #fff; }
.on-dark .est-copy span { color: var(--navy-100); }

/* --------------------------------------------------------------- 08 BUTTONS */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 15px 30px;
  border-radius: var(--r-sm);
  font-family: var(--font-condensed);
  font-weight: 600;
  font-size: 1rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  border: 2px solid transparent;
  transition: background .2s var(--ease), color .2s var(--ease),
              border-color .2s var(--ease), transform .2s var(--ease);
  white-space: nowrap;
}
.btn:active { transform: translateY(1px); }
.btn-primary { background: var(--red-600); color: #fff; border-color: var(--red-600); }
.btn-primary:hover { background: var(--red-700); border-color: var(--red-700); }
.btn-secondary { background: transparent; color: var(--navy-900); border-color: var(--navy-900); }
.btn-secondary:hover { background: var(--navy-900); color: #fff; }
.on-dark .btn-secondary, .bg-navy .btn-secondary { color: #fff; border-color: rgba(255,255,255,.55); }
.on-dark .btn-secondary:hover, .bg-navy .btn-secondary:hover { background: #fff; color: var(--navy-900); border-color: #fff; }
.btn-sm { padding: 11px 20px; font-size: .875rem; }
.btn-block { width: 100%; }

/* ------------------------------------------------------------ 09 NAV/FOOTER */
.topbar { position: sticky; top: 0; z-index: 100; background: var(--cream); border-bottom: 1px solid var(--rule); }
.topbar .wrap { display: flex; align-items: center; justify-content: space-between; gap: 24px; height: 74px; }
.brand { display: flex; align-items: center; gap: 13px; flex-shrink: 0; }
.brand-logo { height: 34px; width: auto; }
.brand-tagline {
  font-family: var(--font-condensed);
  font-size: 0.6875rem;
  font-weight: 500;
  line-height: 1.25;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-soft);
  border-left: 1px solid var(--rule);
  padding-left: 13px;
}
.nav-links { display: flex; align-items: center; gap: 30px; }
.nav-links a {
  position: relative;
  font-family: var(--font-condensed);
  font-weight: 600;
  font-size: 1rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-soft);
  transition: color .2s var(--ease);
}
.nav-links a:hover { color: var(--navy-900); }
.nav-links a[aria-current="page"] { color: var(--navy-900); }
.nav-links a[aria-current="page"]::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: -6px;
  height: 2px;
  background: var(--red-600);
}
/* `.nav-links a` outranks `.btn-primary`; re-assert the button's own colours. */
.nav-links a.btn-primary,
.nav-links a.btn-primary:hover,
.nav-links a.btn-primary[aria-current="page"] { color: #fff; }
.nav-links a.btn-primary::after { display: none; }

.nav-phone {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-mono);
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--navy-900);
  white-space: nowrap;
}
.nav-phone:hover { color: var(--red-600); }
.nav-phone svg { width: 14px; height: 14px; color: var(--red-600); }

.nav-toggle { display: none; width: 30px; height: 22px; position: relative; }
.nav-toggle span { display: block; position: absolute; left: 0; right: 0; height: 2px; background: var(--navy-900); transition: var(--ease) .2s; }
.nav-toggle span:nth-child(1) { top: 0; }
.nav-toggle span:nth-child(2) { top: 10px; }
.nav-toggle span:nth-child(3) { top: 20px; }

footer { background: var(--navy-900); color: var(--navy-100); padding: 76px 0 34px; }
.footer-grid { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr) minmax(0, 1fr); gap: 48px; }
.footer-brand img { height: 30px; width: auto; margin-bottom: 18px; }
.footer-grid p { font-size: 0.9375rem; color: var(--navy-100); max-width: 44ch; }
.footer-col h3 {
  font-family: var(--font-condensed);
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #fff;
  margin-bottom: 16px;
}
.footer-col a { display: block; font-size: 0.9375rem; color: var(--navy-100); padding: 5px 0; transition: color .2s var(--ease); }
.footer-col a:hover { color: #fff; }
.footer-bottom {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: 52px;
  padding-top: 22px;
  border-top: 1px solid var(--navy-700);
}
.footer-bottom p { font-family: var(--font-mono); font-size: 0.6875rem; letter-spacing: .07em; text-transform: uppercase; color: var(--navy-100); opacity: .8; }

/* ----------------------------------------------------------------- 10 FORMS */
.form-shell {
  background: var(--white);
  border: 1px solid var(--rule);
  border-top: 3px solid var(--red-600);
  padding: clamp(26px, 3.4vw, 40px);
  border-radius: var(--r-sm);
  box-shadow: var(--shadow-flat);
}
.form-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 18px; }
.field { display: flex; flex-direction: column; }
.field.full { grid-column: 1 / -1; }
.field label {
  font-family: var(--font-condensed);
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--navy-900);
  margin-bottom: 7px;
}
.field-hint { font-weight: 500; color: var(--ink-soft); letter-spacing: .04em; }
.req { color: var(--red-600); }

input[type="text"], input[type="email"], input[type="tel"], select, textarea {
  width: 100%;
  padding: 12px 14px;
  border: 1px solid var(--rule-strong);
  border-radius: var(--r-sm);
  background: var(--paper);
  font-size: 1rem;
  color: var(--ink);
  transition: border-color .2s var(--ease), box-shadow .2s var(--ease);
}
input:focus, select:focus, textarea:focus {
  outline: none;
  border-color: var(--navy-900);
  box-shadow: 0 0 0 3px rgba(192, 57, 43, .16);
}
textarea { min-height: 118px; resize: vertical; }
select { cursor: pointer; }
.field-row { display: flex; gap: 10px; }
.field-row input { flex: 1; }
.field-row select { width: 116px; flex-shrink: 0; }
.other-industry { display: none; margin-top: 8px; }

.form-submit-row { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; margin-top: 26px; }
.form-note { font-size: 0.8125rem; color: var(--ink-soft); max-width: 34ch; }
.form-status { margin-top: 18px; padding: 13px 16px; border-radius: var(--r-sm); font-size: 0.9375rem; display: none; }
.form-status.success { display: block; background: #ecfdf5; color: #05543c; border: 1px solid #a7f3d0; }
.form-status.notice  { display: block; background: #fffbeb; color: #7a4708; border: 1px solid #fde68a; }
.hp-field { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* Contact page: info column beside the form */
.grid-contact {
  display: grid;
  grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
  gap: clamp(40px, 5vw, 80px);
  align-items: start;
}

/* Segment filter (clients page) */
.segment-toggle { display: flex; gap: 10px; flex-wrap: wrap; }
.segment-toggle button {
  padding: 8px 18px;
  border: 1px solid var(--rule-strong);
  border-radius: var(--r-sm);
  font-family: var(--font-condensed);
  font-weight: 600;
  font-size: 0.875rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-soft);
  transition: all .2s var(--ease);
}
.segment-toggle button:hover { border-color: var(--navy-900); color: var(--navy-900); }
.segment-toggle button.active { background: var(--navy-900); border-color: var(--navy-900); color: #fff; }

/* --------------------------------------------------------------- 11 PRICING */
/* Structured comparison is a legitimate use of cards. Kept scannable. */
.tier-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; align-items: start; }
.tier {
  position: relative;
  display: flex;
  flex-direction: column;
  background: var(--white);
  border: 1px solid var(--rule-strong);
  border-radius: var(--r-sm);
  padding: 30px 26px;
}
.tier.featured { border: 2px solid var(--navy-900); box-shadow: var(--shadow-lift); }
.tier-badge {
  position: absolute; top: -12px; left: 50%; transform: translateX(-50%);
  background: var(--navy-900); color: #fff;
  font-family: var(--font-condensed); font-weight: 600;
  font-size: 0.75rem; letter-spacing: .14em; text-transform: uppercase;
  padding: 4px 14px; white-space: nowrap;
}
.tier-badge--start { background: var(--red-600); }
.tier h3 { font-family: var(--font-condensed); font-size: 1.5rem; text-transform: uppercase; letter-spacing: .03em; }
.tier-price { display: flex; align-items: baseline; gap: 5px; margin-top: 12px; }
.tier-price .num { font-family: var(--font-condensed); font-weight: 700; font-size: clamp(2.25rem, 3.4vw, 2.75rem); line-height: .85; color: var(--navy-900); }
.tier-price .per { font-family: var(--font-mono); font-size: .6875rem; color: var(--ink-soft); }
.tier-volume { margin-top: 10px; font-family: var(--font-mono); font-size: .6875rem; letter-spacing: .09em; text-transform: uppercase; color: var(--ink-soft); }
.tier-cpc {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  margin-top: 16px;
  padding: 10px 12px;
  background: var(--cream);
  border-left: 3px solid var(--red-600);
}
.tier-cpc span {
  font-family: var(--font-mono);
  font-size: .5625rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ink-soft);
}
.tier-cpc strong {
  font-family: var(--font-condensed);
  font-weight: 700;
  font-size: 1.5rem;
  line-height: 1;
  color: var(--red-600);
  font-variant-numeric: tabular-nums;
}

.tier-list { margin-top: 18px; flex: 1; }
.tier-list li { display: flex; gap: 11px; align-items: flex-start; padding: 9px 0; border-bottom: 1px solid var(--rule-cool); font-size: 0.9375rem; }
.tier-list li:last-child { border-bottom: none; }
.tier-list svg { width: 17px; height: 17px; color: var(--red-600); flex-shrink: 0; margin-top: 3px; }
.tier .btn { margin-top: 22px; }

.enterprise-bar {
  display: flex; align-items: center; justify-content: space-between;
  gap: 24px; flex-wrap: wrap;
  margin-top: 26px; padding: 26px 32px;
  background: var(--navy-900); border-radius: var(--r-sm);
}
.enterprise-bar p { color: var(--navy-100); font-size: 1rem; }
.enterprise-bar strong { color: #fff; }
/* The bar paints itself navy without carrying .on-dark, so the secondary
   button would inherit navy text on navy. Re-assert the dark-surface variant. */
.enterprise-bar .btn-secondary { color: #fff; border-color: rgba(255,255,255,.55); }
.enterprise-bar .btn-secondary:hover { background: #fff; color: var(--navy-900); border-color: #fff; }
.upgrade-note { margin-top: 20px; font-size: 0.875rem; color: var(--ink-soft); }
.upgrade-note strong { color: var(--navy-900); }

/* ---------------------------------------------------------------- 12 MOTION
   Opt-in, and switched off entirely for reduced-motion users. */
.js .reveal { opacity: 0; transform: translateY(14px); }
.reveal.in { opacity: 1; transform: none; transition: opacity .6s var(--ease), transform .6s var(--ease); }
.reveal-d1.in { transition-delay: .07s; }
.reveal-d2.in { transition-delay: .14s; }
.reveal-d3.in { transition-delay: .21s; }
.js .rule-draw { transform: scaleX(0); transform-origin: left; }
.rule-draw.in { transform: scaleX(1); transition: transform .7s var(--ease); }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
  .js .reveal { opacity: 1; transform: none; }
  .js .rule-draw { transform: none; }
  .mailstack:hover .pc--front, .mailstack:hover .pc--back { transform: none; }
}

/* ------------------------------------------------------------- 13 RESPONSIVE
   Compositions are re-thought at each step, not merely shrunk. */
@media (max-width: 1040px) {
  .grid-editorial, .grid-statement, .grid-contact { grid-template-columns: minmax(0, 1fr); gap: 44px; }
  .grid-editorial--flip > :first-child { order: 0; }
  .step { grid-template-columns: auto minmax(0, 1fr); }
  .step-art { grid-column: 1 / -1; margin-top: 8px; max-width: 420px; }
  .tier-grid { grid-template-columns: minmax(0, 1fr); }
  .specimen-grid { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .footer-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .footer-grid > :first-child { grid-column: 1 / -1; }
}

@media (max-width: 900px) {
  :root { --pad-xl: 84px; --pad-lg: 72px; --pad-md: 56px; --pad-sm: 40px; }
  .wrap { padding: 0 24px; }

  /* Nav collapses here: four links, a phone and a CTA need the room */
  .nav-links {
    display: none;
    position: absolute;
    top: 74px; left: 0; right: 0;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    background: var(--cream);
    border-bottom: 1px solid var(--rule);
    padding: 18px 24px 24px;
    box-shadow: var(--shadow-lift);
  }
  .nav-links.open { display: flex; }
  .nav-links a { padding: 11px 0; font-size: 1.125rem; }   /* large tap targets */
  .nav-links a[aria-current="page"]::after { bottom: 4px; right: auto; width: 26px; }
  .nav-links .btn { margin-top: 10px; }
  .nav-toggle { display: block; }

  /* Stack the mail composition rather than overlapping it */
  .mailstack { padding: 0; display: flex; flex-direction: column; gap: 18px; }
  .mailstack .pc--back { width: 100%; margin: 0; transform: none; }
  .mailstack .pc--front { width: 100%; position: static; transform: none; }
  .mailstack .annot { position: static; }

  .figure-row { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 34px 28px; }
  .scrap, .scrap:nth-child(n) { transform: none; }
}

@media (max-width: 620px) {
  body { font-size: 16px; }
  .wrap { padding: 0 20px; }
  /* Headlines stay confident on mobile rather than collapsing to body size */
  .display { font-size: clamp(2.25rem, 11vw, 3rem); }
  h1 { font-size: clamp(2.1rem, 10vw, 2.85rem); }

  .form-grid { grid-template-columns: minmax(0, 1fr); }
  .field-row { flex-direction: column; }
  .field-row select { width: 100%; }
  .footer-grid { grid-template-columns: minmax(0, 1fr); gap: 32px; }
  .footer-grid > :first-child { grid-column: auto; }
  .step { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .enterprise-bar { padding: 24px; }
  .est { gap: 14px; }
  .cropped::before, .cropped::after { display: none; }  /* decorative clutter */
  .btn { width: 100%; }
  .form-submit-row .btn { width: auto; }
  .report-head { flex-direction: column; }
}
