/* LOCKED CANDIDATE v4: all-dark neutral near-black, sparing violet #7A4BFF / #A285FF and blue #4D8DFF.
   Departs from Obsidian Forge v1.3 (which banned blue). David's answers relayed via Isaac, 20 Oct 2026. */
:root {
  --void:#0A0A0A; --obsidian:#0E0E0E; --charcoal:#121212; --graphite:#171717; --gunmetal:#2B2B2B;
  --titanium:#F5F5F5; --silver:#B5B5B5;
  --violet:#7A4BFF; --violet-text:#A285FF; --violet-press:#6E40F5; --on-violet:#FFFFFF;
  --violet-glow:rgba(122,75,255,.30); --violet-haze:rgba(122,75,255,.08);
  --blue:#4D8DFF; --teal:var(--blue); --magenta:var(--violet); --teal-haze:rgba(77,141,255,.08);
  --rule:rgba(255,255,255,.12); --rule-strong:rgba(255,255,255,.24);
}
/* v4: all-dark. Former white sections are a neutral alt band (#111111), never navy/blue-tinted */
.surface-alt { background:#111111; border-top:1px solid var(--rule); border-bottom:1px solid var(--rule); }
section.block.surface-alt { padding-bottom: clamp(64px, 9vw, 112px); }
.surface-alt .card, .surface-alt .offer-card, .surface-alt .price-box { background: #171717; }
/* small violet numerals use the text-safe violet (was #7A4BFF at 4.3:1) */
.shead .num b { color: var(--violet-text) !important; }
/* keep accents sparing: small labels go neutral, blue is kept for links-in-text, focus and price labels */
.ptag, .ridx, .tag.teal { color: var(--silver) !important; border-color: var(--rule-strong) !important; }
.sprice small, .price-label, .plabel { color: var(--blue); }
:focus-visible { outline-color: var(--blue); }
/* brand split: two link groups in Contact */
.links-group { margin: 0 0 18px; }
.links-group h3 { font: 600 12px/1 var(--font-tech); letter-spacing:.2em; text-transform:uppercase; color: var(--silver); margin: 0 0 10px; }
/* parts page */
.parts-table { width:100%; border-collapse:collapse; margin: 8px 0 32px; font-size:15px; }
.parts-table th, .parts-table td { text-align:left; vertical-align:top; padding:16px 14px; border-top:1px solid var(--rule-strong); }
.parts-table th { font: 600 12px/1.2 var(--font-tech); letter-spacing:.16em; text-transform:uppercase; color: var(--silver); }
.parts-table td.ref { font-family: var(--font-tech); letter-spacing:.04em; white-space:nowrap; }
.parts-table td.price b { display:block; font: 500 20px/1.2 var(--font-display); }
.parts-table td.price small { display:block; color: var(--blue); font-size:12.5px; line-height:1.4; }
.parts-table .cond { display:block; color: var(--silver); font-size:13.5px; margin-top:6px; }
.parts-note { border-left:3px solid var(--violet); padding: 14px 18px; margin: 0 0 28px; background: var(--charcoal); max-width: 78ch; }
.parts-note p { margin: 0 0 8px; } .parts-note p:last-child { margin:0; }
.tbc { font-family: var(--font-tech); letter-spacing:.04em; }
@media (max-width: 760px) {
  .parts-table thead { display:none; }
  .parts-table, .parts-table tbody, .parts-table tr, .parts-table td { display:block; width:100%; }
  .parts-table tr { border-top:1px solid var(--rule-strong); padding: 12px 0; }
  .parts-table td { border:0; padding: 4px 0; }
}
.band { padding-bottom: clamp(56px, 8vw, 96px); }
.surface-alt + .contact { margin-top: 0; }
/* fix (since v1): offers.css .block padding removed the .wrap side gutters on mobile */
.block.wrap { padding-left: var(--gut); padding-right: var(--gut); }
.parts-table .lnk { display:block; margin-top:6px; font: 500 12.5px/1.4 var(--font-tech); letter-spacing:.04em; color: var(--silver); }
/* contrast fix (since v1): breadcrumb separators were silver at 50% opacity, 3.1:1 */
.breadcrumb span { opacity: .75; }
