/* Landscape Supply Finder: "The Scale Ticket".
   Scale house weigh tickets and carbon copy delivery slips. Canary ply owns the ticket field, white and pink plies
   stack as results, the ground is scale house gray, ink is carbon blue black. Stamp red is only for stamps.
   Archivo extra condensed for preprinted labels and display, Public Sans for filled values, Doto for weighed figures.
   Layered over the engine style.css: tokens first, then components. */

@font-face { font-family: "Archivo"; src: url("/static/fonts/archivo.woff2") format("woff2"); font-weight: 100 900; font-stretch: 62% 125%; font-display: swap; }
@font-face { font-family: "Public Sans"; src: url("/static/fonts/public-sans.woff2") format("woff2"); font-weight: 100 900; font-display: swap; }
@font-face { font-family: "Doto"; src: url("/static/fonts/doto.woff2") format("woff2"); font-weight: 100 900; font-display: swap; }

:root {
  --ground: #dfe2e4;          /* cool scale house gray, the page */
  --ply-white: #fafaf7;
  --canary: #f3d85e;
  --canary-2: #e9cb45;        /* pressed canary, hover */
  --pink: #f6d2da;
  --carbon: #1f2240;          /* ink */
  --carbon-blue: #2e3192;     /* carbon impression, links */
  --stamp: #b0102a;           /* stamps only */

  --paper: var(--ground);
  --surface: var(--ply-white);
  --sunk: #d0d4d7;
  --ink: var(--carbon);
  --ink-2: #33365a;
  --ink-3: #4b4e6d;           /* 5.4:1 on canary, 6:1 on ground */
  --rule: #c3c7ca;
  --rule-2: #a6abaf;
  --green: var(--carbon);     /* the one action is carbon ink */
  --green-2: #0f1126;
  --green-tint: #d8d9e4;
  --ember: var(--carbon-blue);
  --warn: #7a4a00;
  --focus: var(--carbon-blue);

  --font: "Public Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --label: "Archivo", "Arial Narrow", sans-serif;
  --dot: "Doto", "Public Sans", monospace;
  --mono: "Public Sans", ui-sans-serif, system-ui, sans-serif;

  --r-sm: 2px; --r-md: 3px; --r-lg: 4px; --r-xl: 6px;
  --perf: radial-gradient(circle at 50% 50%, var(--ground) 0 3.5px, transparent 4px);
  color-scheme: light;
}

body { background: var(--ground); color: var(--ink); font-feature-settings: normal; }
a { color: var(--carbon-blue); text-underline-offset: 4px; }
a:hover { color: var(--carbon); }
::selection { background: var(--canary); color: var(--carbon); }
input, select, textarea { caret-color: var(--stamp); }
html { scrollbar-color: var(--rule-2) var(--ground); }
:focus-visible { outline: 3px solid var(--carbon-blue); outline-offset: 2px; }
.mono, .fig { font-family: var(--font); font-variant-numeric: tabular-nums lining-nums; letter-spacing: 0; }
.fig { font-weight: 600; }
.dot-num { font-family: var(--dot); font-weight: 800; font-variant-numeric: tabular-nums; letter-spacing: 0.02em; }
.nowrap { white-space: nowrap; }
h1, h2, h3 { letter-spacing: -0.005em; }
input::placeholder { color: #5d607c; }

/* preprinted label voice: extra condensed caps at a readable size, no tracking */
.tf-label, .clabel, .facts dt, .spec dt, .contact-dl dt, .slip-rows dt, .ticket-strip, .fgroup-label,
.calc-dl dt, .narrow-label, .callout-k, .line-items thead th, .data-table th, .hours th, .q-label {
  font-family: var(--label); font-stretch: 62%; font-weight: 700; text-transform: uppercase; letter-spacing: 0.01em;
}

/* ---------- the ticket: canary ply with a perforated top edge ---------- */
.ticket { position: relative; background: var(--canary); color: var(--carbon); border-radius: var(--r-lg); padding: 32px; }
.ticket::before {
  content: ""; position: absolute; left: 0; right: 0; top: -4px; height: 8px;
  background: var(--perf); background-size: 16px 8px; background-repeat: repeat-x; pointer-events: none;
}
.ticket-strip {
  display: flex; flex-wrap: wrap; gap: 4px 24px; font-size: 1rem; line-height: 1.25rem; color: var(--ink-2);
  padding-bottom: 12px; margin-bottom: 20px; border-bottom: 3px solid var(--carbon);
}
.ticket-strip b { font-family: var(--font); font-stretch: 100%; font-weight: 700; color: var(--carbon); text-transform: none; margin-left: 6px; }
.ticket-strip .dot-num { font-family: var(--dot); font-size: 1.5rem; line-height: 1; font-weight: 900; }

/* ---------- header and footer ---------- */
.site-header { background: var(--ground); border-bottom: 3px solid var(--carbon); }
.logo { gap: 10px; font-family: var(--label); font-stretch: 75%; font-weight: 700; font-size: 1.25rem; letter-spacing: 0; color: var(--carbon); }
.logo-word b { font-weight: 800; }
.logo-mark { width: 30px; height: 30px; stroke: none; fill: none; }
.logo-mark .lm-ticket { fill: var(--canary); stroke: var(--carbon); stroke-width: 1.6; }
.logo-mark .lm-pile { fill: var(--carbon); }
.header-search { background: var(--ply-white); border: 2px solid var(--carbon); border-radius: var(--r-md); }
.header-search:focus-within { border-color: var(--carbon-blue); }
.header-search button { color: var(--carbon); border-radius: 0; }
.header-search button:hover { background: var(--canary); }
.hs-div { background: var(--rule-2); }
.main-nav a { color: var(--carbon); font-weight: 600; border-radius: var(--r-md); }
.main-nav a:hover { background: var(--ply-white); }
.main-nav a[aria-current="page"] { text-decoration-color: var(--carbon); text-decoration-thickness: 3px; }
@media (max-width: 900px) { .main-nav ul.open { background: var(--ground); border-bottom: 3px solid var(--carbon); } }
.site-footer { background: var(--carbon); color: #e6e7ee; border-top: 0; }
.site-footer a, .site-footer .footer-h, .site-footer .logo { color: #fff; }
.site-footer .logo-mark .lm-ticket { stroke: var(--canary); }
.site-footer .logo-mark .lm-pile { fill: var(--canary); }
.site-footer .muted, .footer-note { color: #c4c6d6; }
.site-footer a:hover { color: var(--canary); }
.footer-h { font-family: var(--label); font-stretch: 62%; font-weight: 700; text-transform: uppercase; font-size: 1rem; letter-spacing: 0; color: var(--canary) !important; }

/* ---------- buttons ---------- */
.btn { border-radius: var(--r-md); font-weight: 700; }
.btn-primary { background: var(--carbon); color: #fff; }
.btn-primary:hover { background: var(--carbon-blue); color: #fff; }
.btn-quiet { background: var(--ply-white); border: 2px solid var(--carbon); color: var(--carbon); }
.btn-quiet:hover { background: var(--canary); border-color: var(--carbon); }
.btn-link { color: var(--carbon-blue); font-weight: 600; }
.arrow-link { color: var(--carbon-blue); font-weight: 700; }

/* ---------- stamps: rubber stamp red, slightly turned, inked not printed ---------- */
.stamp {
  display: inline-block; font-family: var(--label); font-stretch: 75%; font-weight: 800; text-transform: uppercase;
  color: var(--stamp); border: 3px solid var(--stamp); border-radius: var(--r-lg); padding: 6px 12px 4px;
  line-height: 1.1; letter-spacing: 0.02em; transform: rotate(-4deg); mix-blend-mode: multiply;
  -webkit-mask-image: radial-gradient(circle at 30% 40%, #000 60%, rgba(0,0,0,.82) 61%, #000 75%);
          mask-image: radial-gradient(circle at 30% 40%, #000 60%, rgba(0,0,0,.82) 61%, #000 75%);
}
.stamps { display: flex; flex-wrap: wrap; gap: 12px 16px; margin-top: 20px; }
.stamp-sm { font-size: 1rem; padding: 3px 10px 2px; border-width: 2px; }
.stamps .stamp-sm:nth-child(2n) { transform: rotate(3deg); }
.stamp-verified { font-size: 1.5rem; text-align: center; padding: 10px 16px 8px; }
.stamp-weighed { font-size: 1.375rem; opacity: 0; transform: rotate(-8deg) scale(1.35); }
.stamp-weighed.press { opacity: 1; transform: rotate(-8deg) scale(1); transition: transform 220ms cubic-bezier(0.2, 0.9, 0.1, 1), opacity 120ms linear; }
@media (prefers-reduced-motion: reduce) { .stamp-weighed, .stamp-weighed.press { transition: none; transform: rotate(-8deg); } }

/* ---------- home: ticket + weigh slip ---------- */
.ticket-hero { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 24px; align-items: start; padding-top: 40px; padding-bottom: 56px; }
.th-ticket h1 { font-family: var(--label); font-stretch: 62%; font-weight: 800; text-transform: uppercase; font-size: clamp(2.75rem, 1.6rem + 3.6vw, 4.75rem); line-height: 0.92; letter-spacing: -0.01em; max-width: 14ch; }
.th-sub { margin-top: 16px; font-size: 1.125rem; line-height: 1.6rem; color: var(--ink-2); max-width: 52ch; }
.ticket-form { margin-top: 28px; display: grid; gap: 12px; background: none; border: 0; padding: 0; }
.tf-row { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 12px; }
.tf-row-2 { grid-template-columns: minmax(0, 1fr) auto; align-items: end; }
.tf-field { display: flex; flex-direction: column; gap: 4px; margin: 0; padding: 0; border: 0; min-width: 0; }
.tf-label { font-size: 1rem; line-height: 1.25rem; color: var(--carbon); }
.tf-field input, .tf-field select {
  width: 100%; min-height: 52px; padding: 0 14px; background: var(--ply-white); border: 2px solid var(--carbon);
  border-radius: var(--r-md); font-size: 1.0625rem; font-weight: 500; color: var(--carbon);
}
.tf-field select { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--carbon) 50%), linear-gradient(135deg, var(--carbon) 50%, transparent 50%); background-position: right 18px center, right 12px center; background-size: 6px 6px; background-repeat: no-repeat; padding-right: 36px; }
.tf-field input:focus, .tf-field select:focus { outline: 3px solid var(--carbon-blue); outline-offset: 1px; }
.ticket .seg { background: var(--ply-white); border: 2px solid var(--carbon); border-radius: var(--r-md); padding: 3px; gap: 3px; margin: 0; display: flex; }
.ticket .seg label { flex: 1; }
.ticket .seg span { min-height: 40px; justify-content: center; width: 100%; font-weight: 600; color: var(--carbon); font-size: 0.9375rem; }
.ticket .seg input:checked + span { background: var(--carbon); color: #fff; box-shadow: none; }
.tf-go { min-height: 52px; padding: 0 28px; font-size: 1.0625rem; }
.tf-go .i { margin-left: 4px; }
.tf-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; }
.ticket .btn-link { color: var(--carbon); }
.composer-err { color: var(--stamp); font-weight: 700; font-size: 0.9375rem; }
.common-orders { margin-top: 24px; padding-top: 16px; border-top: 3px solid var(--carbon); display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px 16px; }
.common-orders h2 { font-family: var(--label); font-stretch: 62%; font-weight: 700; text-transform: uppercase; font-size: 1rem; }
.common-orders ul { display: flex; flex-wrap: wrap; gap: 8px; }
.common-orders a { display: inline-flex; align-items: center; min-height: 36px; padding: 0 12px; border: 2px solid var(--carbon); border-radius: 999px; color: var(--carbon); font-weight: 600; font-size: 0.9375rem; text-decoration: none; background: rgba(250, 250, 247, 0.5); }
.common-orders a:hover { background: var(--carbon); color: #fff; }

.slip { position: relative; background: var(--ply-white); border-radius: var(--r-lg); padding: 28px 28px 32px; }
.slip::before { content: ""; position: absolute; left: 0; right: 0; top: -4px; height: 8px; background: var(--perf); background-size: 16px 8px; background-repeat: repeat-x; }
.slip h2 { font-family: var(--label); font-stretch: 62%; font-weight: 800; text-transform: uppercase; font-size: 1.5rem; line-height: 1.75rem; padding-bottom: 12px; border-bottom: 3px solid var(--carbon); }
.slip-rows { margin: 0; }
.slip-rows > div { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 4px 16px; padding: 14px 0; }
.slip-rows > div + div { background: linear-gradient(var(--rule-2), var(--rule-2)) top / 100% 2px no-repeat; }
.slip-rows dt { font-size: 1.125rem; line-height: 2rem; color: var(--ink-3); }
.slip-rows dd { margin: 0; display: grid; gap: 2px; }
.slip-n { font-family: var(--font); font-variant-numeric: tabular-nums; font-size: 1.5rem; line-height: 2rem; font-weight: 700; }
.slip-rows dd span { font-size: 0.9375rem; line-height: 1.375rem; color: var(--ink-2); }
.slip-net { background: var(--carbon) !important; color: #fff; margin: 8px -28px 0; padding: 18px 28px !important; }
.slip-net dt { color: var(--canary); font-size: 1.5rem; line-height: 3.25rem; }
.slip-net .slip-n { font-family: var(--dot); font-size: clamp(2.75rem, 2rem + 2vw, 3.5rem); line-height: 1; color: var(--canary); font-weight: 800; }
.slip-net dd span { color: #dfe0ea; }
.slip .stamp-verified { position: absolute; right: 24px; bottom: 20px; font-size: 1.25rem; transform: rotate(-6deg); }
.slip .arrow-link { margin-top: 24px; }

.lines { padding-bottom: 64px; }
.lines-head { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 24px; align-items: end; margin-bottom: 16px; }
.lines-head h2, .weigh-copy h2, .back > h2, .places > h2, .ledger > h2, .price-hub h2 { font-family: var(--label); font-stretch: 62%; font-weight: 800; text-transform: uppercase; font-size: clamp(2rem, 1.5rem + 1.6vw, 2.75rem); line-height: 1; }
.lines-head p { color: var(--ink-2); max-width: 60ch; }

/* line items: the body of a ticket. Thick ink bar above, ply rows, no hairlines */
.line-items { background: var(--ply-white); border-radius: var(--r-lg); overflow: hidden; font-size: 1rem; }
.line-items thead th { background: var(--carbon); color: #fff; text-align: left; font-size: 1rem; padding: 10px 16px; font-weight: 700; }
.line-items th, .line-items td { padding: 14px 16px; vertical-align: top; text-align: left; }
.line-items tbody tr:nth-child(even) { background: #efefe9; }
.line-items tbody th { font-weight: 600; }
.line-items tbody th a { color: var(--carbon); font-weight: 700; font-size: 1.0625rem; text-decoration: none; }
.line-items tbody th a:hover { text-decoration: underline; }
.line-items .num { text-align: right; white-space: nowrap; }
.line-items .fig { font-size: 1.125rem; }
.line-items td .li-unit { white-space: nowrap; }
.li-note, .li-unit { display: block; font-weight: 400; font-size: 0.875rem; line-height: 1.25rem; color: var(--ink-3); margin-top: 2px; white-space: normal; }
.li-go { width: 48px; }
.li-go a { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; color: var(--carbon); }
.line-items tbody tr { position: relative; }
.line-items tbody tr:hover { background: #f6eebf; }
.line-items-tight th, .line-items-tight td { padding: 10px 14px; }

.weigh { padding-bottom: 64px; }
.weigh-ticket { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 32px; }
.weigh-copy p { margin-top: 12px; color: var(--ink-2); max-width: 40ch; }
.calc { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 20px; }
.calc-fields { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; align-content: start; }
.calc-mat { grid-column: 1 / -1; }
.calc-out { position: relative; background: var(--ply-white); border-radius: var(--r-lg); padding: 20px; display: grid; gap: 12px; align-content: start; }
.calc-main { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.calc-main .dot-num { font-size: 4rem; line-height: 1; color: var(--carbon); }
.calc-unit { font-family: var(--label); font-stretch: 62%; font-weight: 700; text-transform: uppercase; font-size: 1.25rem; }
.calc-dl { margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 16px; }
.calc-dl > div { padding: 8px 0; background: linear-gradient(var(--rule), var(--rule)) top / 100% 2px no-repeat; }
.calc-dl dt { font-size: 0.9375rem; color: var(--ink-3); }
.calc-dl dd { margin: 0; font-weight: 700; font-variant-numeric: tabular-nums; }
.calc-out .stamp-weighed { position: absolute; right: 16px; top: 18px; }
.calc-go { justify-self: start; }
.calc-note { font-size: 0.875rem; line-height: 1.25rem; color: var(--ink-3); }

.back { padding-bottom: 64px; }
.back-cols { margin-top: 24px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; }
.back-cols > div { border-top: 6px solid var(--carbon); padding-top: 16px; display: grid; gap: 12px; align-content: start; }
.back-cols h3 { font-size: 1.25rem; line-height: 1.6rem; font-weight: 700; }
.back-cols p { color: var(--ink-2); }

.places { padding-bottom: 72px; }
.city-grid { margin-top: 20px; columns: 4 200px; column-gap: 24px; }
.city-grid li { break-inside: avoid; }
.city-grid a, .state-cols a { display: inline-flex; min-height: 36px; align-items: center; color: var(--carbon); font-weight: 600; text-decoration: none; }
.city-grid a:hover, .state-cols a:hover { text-decoration: underline; color: var(--carbon-blue); }
.places-sub { font-family: var(--label); font-stretch: 62%; font-weight: 800; text-transform: uppercase; font-size: 1.5rem; margin-top: 40px; }
.state-cols { margin-top: 12px; columns: 5 160px; column-gap: 24px; }
.state-cols li { break-inside: avoid; display: flex; justify-content: space-between; gap: 8px; align-items: center; }
.n { color: var(--ink-3); font-variant-numeric: tabular-nums; font-family: var(--font); }

/* ---------- listing pages ---------- */
.page-head { padding-top: 24px; }
.head-ticket { padding: 28px 28px 24px; }
.head-ticket h1, .page-head h1, .p-ticket h1, .search-title, .notfound h1 {
  font-family: var(--label); font-stretch: 62%; font-weight: 800; text-transform: uppercase; letter-spacing: -0.005em;
  font-size: clamp(2.25rem, 1.6rem + 2vw, 3.25rem); line-height: 0.98; max-width: 22ch;
}
.head-ticket .facts { margin-top: 20px; border: 0; background: var(--ply-white); border-radius: var(--r-md); }
.head-ticket .facts > div { padding: 12px 20px; margin: 0; box-shadow: none; }
.head-ticket .facts > div + div { margin-left: 0; padding-left: 20px; background: linear-gradient(var(--rule), var(--rule)) left center / 2px 60% no-repeat; }
.facts dt { font-size: 0.9375rem; line-height: 1.25rem; color: var(--ink-3); }
.facts dd { font-size: 1.375rem; line-height: 1.75rem; font-weight: 700; }
.narrow { font-size: 0.9375rem; }
.narrow-label { font-size: 1rem; color: var(--ink-2); }
.narrow a { color: var(--carbon-blue); font-weight: 600; }
.crumbs a { color: var(--ink-2); }
.crosslinks { margin-top: 12px; font-size: 0.9375rem; }

.rail .fgroup { border-top: 3px solid var(--carbon); }
.rail .fgroup:first-child { border-top: 0; }
.fgroup-label { font-size: 1rem; line-height: 1.25rem; color: var(--carbon); }
.fopt .box { border: 2px solid var(--carbon); border-radius: var(--r-sm); background: var(--ply-white); }
.fopt[aria-pressed="true"] .box { background: var(--carbon); border-color: var(--carbon); }
.fopt:hover { background: var(--ply-white); }
.toolbar { border-bottom: 3px solid var(--carbon); }
.tbtn, .tselect select { border: 2px solid var(--carbon); background-color: var(--ply-white); border-radius: var(--r-md); color: var(--carbon); }
.tbtn:hover, .tselect select:hover { background-color: var(--canary); }
.tbadge { background: var(--carbon-blue); }
.locate-field { border: 2px solid var(--carbon); background: var(--ply-white); border-radius: var(--r-md); }
.active-chips button { border: 2px solid var(--carbon); border-radius: 999px; background: var(--ply-white); }

/* results: a stack of plies, each with a tear-off stub */
.results { gap: 10px; padding-top: 12px; }
.result {
  margin: 0; padding: 18px 0 18px 20px; border: 0; border-radius: var(--r-lg); background: var(--ply-white);
  grid-template-columns: minmax(0, 1fr) 148px; gap: 8px 0;
}
.result:hover, .result.hl { background: #fff6cf; }
.r-main { padding-right: 20px; }
.r-side {
  padding: 0 16px 0 18px; align-items: flex-end;
  background: radial-gradient(circle at 1px 50%, var(--ground) 0 2.5px, transparent 3px) left top / 4px 12px repeat-y;
}
.r-name { font-size: 1.1875rem; line-height: 1.6rem; font-weight: 700; }
.r-name a { color: var(--carbon); }
.r-meta { color: var(--ink-2); font-size: 0.9375rem; }
.r-dist { font-family: var(--font); font-weight: 700; color: var(--carbon); }
.r-rating > span[aria-hidden] { color: var(--carbon); }
.r-get { color: var(--carbon); font-weight: 700; font-size: 0.9375rem; }
.r-wood, .r-amt { font-size: 0.9375rem; color: var(--ink-2); }
.r-warn { font-size: 0.875rem; font-weight: 600; }
.r-price-alt { font-family: var(--font); font-weight: 700; font-size: 1rem; line-height: 1.375rem; color: var(--carbon); text-align: right; }
.r-noprice { color: var(--ink-3); font-size: 0.9375rem; }
.r-price .mono { color: var(--carbon); font-weight: 700; }
.r-call { border: 2px solid var(--carbon); color: var(--carbon); background: transparent; font-weight: 700; }
.r-call:hover { background: var(--carbon); color: #fff; border-color: var(--carbon); }
.r-locs { font-size: 0.875rem; color: var(--ink-2); }
.skel { background: var(--ply-white); border-radius: var(--r-lg); }
.empty, .start, .error-box { background: var(--ply-white); border-radius: var(--r-lg); border: 0; }
.notice { background: var(--canary); color: var(--carbon); border: 0; border-radius: var(--r-md); font-weight: 500; }
.map-panel, .mini-map { border: 2px solid var(--carbon); border-radius: var(--r-lg); }
.mini-map { background: var(--ply-white); }

.ledger { padding-top: 48px; padding-bottom: 24px; }
.ledger-grid { margin-top: 20px; display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; align-items: start; }
.ledger-block { background: var(--ply-white); border-radius: var(--r-lg); padding: 20px; display: grid; gap: 12px; }
.ledger-block h3 { font-family: var(--label); font-stretch: 62%; font-weight: 800; text-transform: uppercase; font-size: 1.375rem; line-height: 1.5rem; padding-bottom: 10px; border-bottom: 3px solid var(--carbon); }
.ledger-block .line-items { background: none; }
.ledger-block .line-items thead th { background: none; color: var(--ink-3); padding-left: 0; }
.ledger-block .line-items th, .ledger-block .line-items td { padding-left: 0; }
.ledger-block .line-items tbody tr:nth-child(even) { background: none; }
.ledger-block .line-items tbody tr + tr { background: linear-gradient(var(--rule), var(--rule)) top / 100% 2px no-repeat; }
.ledger-facts { display: grid; gap: 12px; }
.ledger-facts li { color: var(--ink-2); }
.ledger-facts b { color: var(--carbon); font-size: 1.125rem; }
.covers { color: var(--ink-2); }

.related { padding-top: 32px; }
.summary p { max-width: 70ch; color: var(--ink-2); }
.callout { background: var(--canary); border: 0; border-radius: var(--r-lg); padding: 18px 22px; }
.callout:hover { background: var(--canary-2); }
.callout-k { font-size: 0.9375rem; color: var(--ink-2); }
.callout-t { font-size: 1.125rem; font-weight: 700; }
.callout .i { color: var(--carbon); }
.section-h { font-weight: 700; }
.linkcols li, .index-list li { border-bottom: 2px solid var(--rule); }
.index-list { border-top: 3px solid var(--carbon); }
.linkcols a, .index-list a { color: var(--carbon); font-weight: 600; }
.faq-list { border-top: 3px solid var(--carbon); }
.faq-item { border-bottom: 2px solid var(--rule); }
.faq-item summary::after { font-family: var(--font); color: var(--carbon); }
.stat-line strong { color: var(--carbon); }

/* ---------- profile: the full ticket ---------- */
.p-ticket { margin-top: 24px; }
.p-ticket .p-meta { margin-top: 12px; color: var(--ink-2); }
.p-ticket .lede { margin-top: 12px; max-width: 64ch; color: var(--carbon); font-size: 1.125rem; line-height: 1.65rem; }
.open-now.open { color: #1d5b2c; font-weight: 700; }
.open-now.closed { color: var(--ink-3); font-weight: 600; }
.p-grid { margin-top: 24px; }
.p-sec { background: var(--ply-white); border-radius: var(--r-lg); padding: 20px 24px; margin-top: 16px; }
.p-sec:first-child { margin-top: 0; }
.p-sec > .section-h { font-family: var(--label); font-stretch: 62%; font-weight: 800; text-transform: uppercase; font-size: 1.5rem; line-height: 1.75rem; padding-bottom: 10px; margin-bottom: 4px; border-bottom: 3px solid var(--carbon); }
.spec > div { border-bottom: 2px solid var(--rule); }
.spec > div:last-child { border-bottom: 0; }
.spec dt { font-size: 1rem; color: var(--ink-3); }
.spec dd { color: var(--carbon); font-weight: 500; }
.spec-gaps { color: var(--ink-2); }
.p-sec .line-items { background: none; }
.p-sec .line-items thead th { border-radius: 0; }
.quotes summary { color: var(--carbon-blue); font-weight: 700; }
.quotes li { border-bottom: 2px solid var(--rule); }
.q-label { color: var(--ink-3); font-size: 0.9375rem; }
.quotes q { color: var(--carbon); }
.stub { position: relative; background: var(--canary); border: 0; border-radius: var(--r-lg); padding: 20px; }
.stub::before { content: ""; position: absolute; left: 0; right: 0; top: -4px; height: 8px; background: var(--perf); background-size: 16px 8px; background-repeat: repeat-x; }
.contact-dl > div { border-top: 2px solid rgba(31, 34, 64, 0.25); }
.contact-dl dt, .hours th { color: var(--ink-2); }
.hours th, .hours td { border-color: rgba(31, 34, 64, 0.2); }
.hours tr.today th, .hours tr.today td { background: var(--carbon); color: #fff; }
.stub .btn-quiet { background: var(--ply-white); }
.nearby li { border-bottom: 2px solid var(--rule); }
.sticky-cta { background: var(--ground); border-top: 3px solid var(--carbon); }

/* ---------- docs, price hub, search, 404 ---------- */
.prose h1 { font-family: var(--label); font-stretch: 62%; font-weight: 800; text-transform: uppercase; font-size: clamp(2.25rem, 1.6rem + 2vw, 3.25rem); line-height: 0.98; }
.prose h2 { font-weight: 700; }
.prose li::marker { color: var(--carbon); }
.prose table th { background: var(--carbon); color: #fff; }
.prose table td { border-bottom: 2px solid var(--rule); }
.side-search { padding: 24px; }
.side-search h2 { font-family: var(--label); font-stretch: 62%; font-weight: 800; text-transform: uppercase; font-size: 1.5rem; }
.side-search .cfield input { background: var(--ply-white); border: 2px solid var(--carbon); border-radius: var(--r-md); min-height: 48px; padding: 0 12px; }
.side-search .cfield { padding: 0; }
.price-hub section { margin-top: 40px; }
.price-hub section h2 { font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem); margin-bottom: 12px; }
.price-hub .table-scroll + p { margin-top: 12px; }
.price-hub > p { margin-top: 24px; padding-bottom: 48px; }
.search-head .composer, .notfound .composer { background: var(--canary); border: 0; border-radius: var(--r-lg); }
.composer .cfield input, .composer .cfield select { background: transparent; }
.search-head .composer .cfield, .notfound .composer .cfield { background: var(--ply-white); border-radius: var(--r-md); }
.search-head .composer .cfield + .cfield, .notfound .composer .cfield + .cfield { margin-left: 6px; box-shadow: none; }
.nf-code { font-family: var(--dot); font-size: 5rem; line-height: 1; color: var(--carbon); }
.data-table th { color: var(--ink-3); border-bottom: 3px solid var(--carbon); }
.data-table td { border-bottom: 2px solid var(--rule); }

/* calculator page */
.calc-page .calc { margin-top: 24px; }

/* ---------- responsive ---------- */
@media (max-width: 1023px) {
  .ticket-hero { grid-template-columns: minmax(0, 1fr); }
  .weigh-ticket { grid-template-columns: minmax(0, 1fr); }
  .lines-head { grid-template-columns: minmax(0, 1fr); }
  .result { grid-template-columns: minmax(0, 1fr) 128px; }
}
@media (max-width: 720px) {
  .ticket { padding: 22px 18px; }
  .ticket-hero { padding-top: 20px; gap: 20px; }
  .tf-row, .tf-row-2 { grid-template-columns: minmax(0, 1fr); }
  .tf-go { width: 100%; }
  .slip { padding: 22px 18px 24px; }
  .slip-net { margin-left: -18px; margin-right: -18px; padding-left: 18px !important; padding-right: 18px !important; }
  .slip .stamp-verified { right: 14px; bottom: 14px; font-size: 1rem; }
  .calc { grid-template-columns: minmax(0, 1fr); }
  .back-cols { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  .line-items th, .line-items td { padding: 12px 10px; }
  .li-go { display: none; }
  .result { grid-template-columns: minmax(0, 1fr); padding: 16px 16px 0; }
  .r-main { padding-right: 0; }
  .r-side { flex-direction: row; align-items: center; justify-content: space-between; padding: 12px 0 14px; text-align: left;
    background: radial-gradient(circle at 50% 1px, var(--ground) 0 2.5px, transparent 3px) left top / 12px 4px repeat-x; }
  .r-price, .r-price-alt { align-items: flex-start; text-align: left; }
  .head-ticket { padding: 22px 18px 18px; }
  .head-ticket .facts > div { padding: 10px 14px; }
  .head-ticket .facts > div + div { padding-left: 14px; }
  .p-sec { padding: 18px 16px; }
  .ledger-grid { grid-template-columns: minmax(0, 1fr); }
  .calc-main .dot-num { font-size: 3.25rem; }
}

/* ---------- finish review fixes ---------- */
.tf-label, .clabel, .facts dt, .spec dt, .contact-dl dt, .slip-rows dt, .fgroup-label, .calc-dl dt, .hours th, .q-label, .line-items thead th, .data-table th { font-size: max(0.875rem, 1em); letter-spacing: 0; }
.spec dt, .contact-dl dt, .hours th { font-size: 0.9375rem; }
.only-narrow { display: none; }

/* profile: one continuous ticket body, sections torn apart by a thick ink bar */
.p-main { background: var(--ply-white); border-radius: var(--r-lg); padding: 4px 24px 20px; }
.p-main .p-sec { background: none; border-radius: 0; padding: 20px 0 8px; margin: 0; }
.p-main .p-sec + .p-sec { border-top: 6px solid var(--carbon); margin-top: 16px; }
.p-sec > .section-h { border-bottom: 0; padding-bottom: 6px; }
.spec { margin: 0; }
.spec > div, .spec > div:last-child { border: 0; padding-left: 10px; padding-right: 10px; }
.spec > div:nth-child(odd) { background: #efefe9; }
.p-related > .section-h { font-family: var(--label); font-stretch: 62%; font-weight: 800; text-transform: uppercase; font-size: 1.75rem; line-height: 1.1; }
.nearby { border-top: 3px solid var(--carbon); }
.nearby li { border: 0; padding-left: 10px; padding-right: 10px; }
.nearby li:nth-child(odd) { background: var(--ply-white); }

/* guide */
.prose h2 { font-family: var(--label); font-stretch: 62%; font-weight: 800; text-transform: uppercase; font-size: 1.75rem; line-height: 1.1; }
.prose table th, .prose table td { padding: 12px 16px; border: 0; }
.prose table thead th { font-family: var(--label); font-stretch: 62%; font-weight: 700; text-transform: uppercase; }
.prose table tbody tr:nth-child(odd) { background: var(--ply-white); }
.prose table tbody tr:nth-child(even) { background: #efefe9; }
.side-search .cfield { border: 0; background: none; display: grid; gap: 6px; }
.side-search .clabel { font-size: 1rem; color: var(--carbon); }

/* calculator page */
.calc-ticket { margin: 24px 0 64px; }
.calc-ticket .calc { grid-column: 1 / -1; }
.calc-page .prose { padding-top: 24px; }

/* price hub */
.price-hub .prose { padding-bottom: 0; }
.price-hub .prose > :last-child { margin-bottom: 0; }
.price-hub section:first-of-type { margin-top: 24px; }

@media (max-width: 640px) {
  .head-ticket .facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .head-ticket .facts > div, .head-ticket .facts > div + div { padding: 8px 10px; background: none; }
  .head-ticket .facts dd { font-size: 1.125rem; line-height: 1.5rem; }
  .head-ticket .facts dt { font-size: 0.875rem; line-height: 1.125rem; }
  .head-ticket h1 { font-size: 2rem; }
  .col-range, .col-unit { display: none; }
  .only-narrow { display: block; }
  .p-main { padding: 2px 16px 16px; }
}
@media (max-width: 720px) { .line-items td .li-unit { white-space: normal; max-width: 9.5rem; margin-left: auto; } }
@media (max-width: 640px) {
  .head-ticket .facts > div:last-child:nth-child(odd) { grid-column: auto; }
  .head-ticket .facts > div:nth-child(n+3) { box-shadow: none; }
  .head-ticket .facts > div:nth-child(n+4) { background: linear-gradient(var(--rule), var(--rule)) top / 100% 2px no-repeat; }
}
.r-unit { font-size: 0.875rem; line-height: 1.25rem; color: var(--ink-2); }
.spec { border-top: 0 !important; }
.locate { border-bottom: 0; }
.rail[role="dialog"] { box-shadow: 0 -12px 32px rgba(31, 34, 64, 0.18); }
