*{box-sizing:border-box;margin:0;padding:0}
:root{
  --brand:#C42010;--brand-deep:#7a1409;
  --maroon:#9e1c0c;--maroon-deep:#5f0f06;
  --gold:#C9821A;--gold-soft:#fdf6ea;--amber:#C9821A;
  --ink:#171b22;--muted:#6f7886;
  --paper:#fff;--bg:#f4f2ef;--line:#e7e2da;
  --radius:16px;--radius-sm:11px;--shadow:0 1px 2px rgba(0,0,0,.04);--maxw:1180px;
}
/* NOTE: no global `scroll-behavior:smooth` — on the root element it animates every
   mouse-wheel tick, making wheel scrolling feel slow/uneven (thumb dragging is
   unaffected). Left off intentionally for native, responsive scrolling. */
/* The production body carries Tailwind's `overflow-x-hidden`, which computes
   overflow-y:auto and turns <body> into a scroll container — that breaks the
   sticky nav (it scrolls away). Fix: move the horizontal-overflow guard to
   <html> (the natural scroll container, where overflow-x:hidden does NOT break
   sticky) and make <body> overflow:visible so it is no longer a scroll
   container. (overflow:clip would also work but is unsupported in some engines.)
   This stylesheet only loads when showroom_active?, so it is showroom-scoped;
   body.showroom outspecifies the single-class Tailwind `overflow-x-hidden`. */
html{overflow-x:hidden}
body.showroom{overflow:visible}
/* Body is flex-col min-h-screen; let <main> absorb extra height so the footer
   sits at the bottom on short pages (no leftover gap below it). */
body.showroom > main{flex:1 0 auto}
body{font-family:'Inter',system-ui,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;line-height:1.5}
a{color:inherit;text-decoration:none}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}

/* NAV */
.nav{background:var(--brand);position:sticky;top:0;z-index:40}
.nav .wrap{display:flex;align-items:center;gap:28px;height:62px}
.nav img.logo{height:33px;width:auto;display:block}
.nav .links{display:flex;gap:24px;margin-left:8px}
.nav .links a{color:#ffd9d2;font-weight:600;font-size:14px;padding:6px 2px;border-bottom:2px solid transparent}
.nav .links a:hover{color:#fff}.nav .links a.active{color:#fff;border-bottom-color:#fff}
.nav .user{margin-left:auto;display:flex;align-items:center;gap:9px;color:#fff;font-weight:600;font-size:14px}
.nav .user .av{width:32px;height:32px;border-radius:50%;background:#ffe7e2;color:var(--brand);display:grid;place-items:center;font-weight:800}
.burger{display:none;margin-left:auto;background:transparent;border:0;cursor:pointer;padding:8px}
.burger span{display:block;width:24px;height:2px;background:#fff;margin:5px 0;border-radius:2px}

/* COMPACT HERO (detail) */
.crumb{font-size:13px;color:var(--muted);margin:14px 2px 0}
.crumb a:hover{color:var(--brand)}.crumb .sep{opacity:.5;margin:0 6px}
.hero{margin-top:8px;border-radius:18px;overflow:hidden;display:grid;grid-template-columns:1.15fr .85fr;
  background:linear-gradient(125deg,var(--maroon),var(--maroon-deep));color:#fff;box-shadow:0 12px 30px rgba(94,15,6,.2)}
.hero .left{padding:22px 30px 24px;display:flex;flex-direction:column;justify-content:center}
.badge{display:inline-flex;align-items:center;gap:7px;background:rgba(255,255,255,.16);
  border:1px solid rgba(255,255,255,.3);color:#fff;border-radius:30px;padding:5px 13px;
  font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;width:fit-content}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:#ffd591}
.hero h1{font-family:'Archivo';font-weight:900;font-size:clamp(25px,3.2vw,37px);line-height:1;letter-spacing:-.6px;margin-top:9px}
.hero h1 .body-style{display:block;color:#ffd591;font-size:.66em;margin-top:1px}
.vinline{display:flex;align-items:center;gap:10px;margin-top:13px;flex-wrap:wrap}
.vinline .vin{font-family:'JetBrains Mono';font-weight:700;font-size:clamp(16px,2.6vw,21px);letter-spacing:.14em;
  background:rgba(0,0,0,.22);border:1px solid rgba(255,255,255,.18);padding:8px 14px;border-radius:9px}
.vinline button{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28);color:#fff;
  border-radius:9px;padding:9px 12px;font-size:13px;font-weight:600;cursor:pointer}
.vinline button:hover{background:rgba(255,255,255,.24)}
/* Icon-only hero controls (⧉ copy / 🖨 print): bigger glyph + tighter padding so
   the tap target matches the favorite star's 20px SVG (all three ~40px tall). */
.vinline button.icon-btn{font-size:18px;line-height:20px;padding:9px 11px}
.pills{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.pill{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.26);border-radius:9px;padding:6px 11px}
.pill .v{font-family:'JetBrains Mono';font-weight:700;font-size:14px}
.pill .k{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:#ffcfc7;margin-top:2px}
/* Classic showroom confidence line (promoted out of the spec grid, web_features.
   classic_confidence_reason_display): label+value match .pill's tokens so it reads as part of
   the same hero chip family; the reason wraps onto its own line since it is prose, not a chip. */
.confidence-note{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-top:10px}
.confidence-note .cf-label{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:#ffcfc7}
.confidence-note .cf-value{font-family:'JetBrains Mono';font-weight:700;font-size:15px}
.confidence-note .cf-reason{flex-basis:100%;font-size:13px;color:rgba(255,255,255,.82);line-height:1.4}
.hero .right{position:relative;background:#fff;display:flex;align-items:center;justify-content:center;padding:16px}
/* When an actual image is shown, fill the whole panel edge-to-edge (no padding);
   the no-image frame keeps its padded surround. */
.hero .right:not(.no-image){padding:0}
.hero .right img{width:100%;height:100%;object-fit:cover;display:block}
/* Clickable hero image -> opens the lightbox. */
.hero .right .hero-img{cursor:zoom-in}
.hero .right .hero-img-hint{position:absolute;bottom:10px;right:10px;background:rgba(0,0,0,.6);
  color:#fff;font-size:12px;font-weight:600;padding:4px 9px;border-radius:7px;pointer-events:none;letter-spacing:.01em}
/* web_features.showroom_hero_image_3x2: render the image in a fixed 3:2 box,
   center-cropped (cover), trimming top/bottom whitespace of square renders so
   the car fills the panel. aspect-ratio is inherently responsive, so this one
   rule covers desktop + mobile and supersedes the mobile contain override below.
   High specificity (.right.r32:not(.no-image) img) intentionally beats both the
   base `.hero .right img` and the mobile `.hero .right:not(.no-image) img` rules.
   The panel centers any vertical slack (flex align-items:center) as clean white. */
.hero .right.r32:not(.no-image) img{width:100%;aspect-ratio:3/2;height:auto;max-height:none;object-fit:cover;display:block}
/* no-image frame */
.hero .right .frame{width:100%;min-height:150px;border:2px dashed #e3c08a;border-radius:12px;
  background:repeating-linear-gradient(45deg,#fffdf8,#fffdf8 12px,#fdf4e4 12px,#fdf4e4 24px);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;color:#a9772e;text-align:center;padding:14px}
/* The frame's display:flex above overrides the [hidden] attribute's display:none,
   so re-assert it with matching specificity — otherwise an assigned image and the
   no-image frame would both show. */
.hero .right .frame[hidden]{display:none}
.hero .right .frame svg{width:40px;height:40px;opacity:.7}
.hero .right .frame .t{font-weight:700;color:#8a5e12}
.hero .right .frame .s{font-size:13px;color:#b58a4a}
.hero .right .addimg{margin-top:6px;background:var(--gold);color:#fff;border:0;border-radius:8px;padding:8px 14px;font-weight:700;font-size:13px;cursor:pointer}
/* No-image state: warm the surround so the striped/gold frame reads the same on
   modern (red) pages as it does on classic (whose .right is already #fff8f0). */
.hero .right.no-image{background:#fff8f0}

/* ERA: CLASSIC OVERRIDES */
.era-classic .hero{background:linear-gradient(125deg,var(--maroon),var(--maroon-deep));box-shadow:0 12px 30px rgba(94,15,6,.2)}
.era-classic .hero .right{background:#fff8f0}
.era-classic .badge{background:rgba(201,130,26,.22);border-color:rgba(201,130,26,.55);color:#ffd591}
.era-classic .badge::before{background:var(--gold)}
.era-classic .hero h1 .body-style{color:var(--gold)}
.era-classic .card h2::before{background:var(--gold)}
.era-classic .vintable .val{color:var(--gold)}
.era-classic .vintable tr:hover td{background:var(--gold-soft)}

/* DECODE BAR */
.decodebar{background:var(--paper);border:1px solid var(--line);border-radius:14px;margin-top:16px;
  padding:14px 18px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.decodebar label{font-weight:700;font-size:15px}
.decodebar input{flex:1;min-width:200px;font-family:'JetBrains Mono';font-size:15px;letter-spacing:.1em;
  padding:11px 14px;border:1.5px solid var(--line);border-radius:10px;text-transform:uppercase}
.decodebar input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(196,32,16,.12)}
.decodebar button{background:var(--brand);color:#fff;border:0;border-radius:10px;padding:11px 22px;font-weight:700;font-size:15px;cursor:pointer}

/* ADS */
.ad{position:relative;display:flex;align-items:center;justify-content:center;text-align:center;background:#fff;
  border:1px dashed #d4cdc2;color:#a89f93;border-radius:12px;font-family:'JetBrains Mono';font-size:12px;letter-spacing:.1em}
.ad::before{content:"Advertisement";position:absolute;top:7px;left:0;right:0;font-size:9px;opacity:.6;letter-spacing:.18em}
.ad-lead{height:96px;margin-top:16px}.ad-inline{height:260px;margin:20px 0}
.ad-rail{min-height:600px;position:sticky;top:78px}

/* DETAIL GRID + CARDS */
/* minmax(0,1fr) (not 1fr) so a fixed-width descendant — e.g. an ad slot filled
   with a wide banner — can't expand the column past the viewport and stretch the
   cards. Paired with .ad-zone overflow containment below. */
.grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px;margin-top:22px;align-items:start}
/* Belt-and-suspenders: clip any oversized ad creative to its slot so a wide
   banner can't trigger horizontal page scroll. overflow-x:clip (not hidden) so
   it creates no scroll container — sticky .ad-rail and vertical ad expansion
   keep working. Correctly-sized mobile ads (<= column width) are unaffected. */
.ad-zone{max-width:100%;overflow-x:clip}
/* mobile_ad_lite (body.mobile-ad-lite): on phones, hide the desktop-only sidebar
   ad slots (their showAds() is also skipped in JS, so nothing loads) and the
   Ezoic outstream video ad — the heaviest, most intrusive mobile format. */
@media (max-width:900px){
  body.mobile-ad-lite .ad-zone-desktop-only{display:none!important}
  body.mobile-ad-lite #ez-video-container,
  body.mobile-ad-lite #ez-video-outstream-wrap,
  body.mobile-ad-lite [id^="ez-video-outstream"]{display:none!important}
}
.card{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:24px;box-shadow:var(--shadow)}
.card + .card{margin-top:20px}
.card h2{font-family:'Archivo';font-weight:800;font-size:18px;display:flex;align-items:center;gap:10px;margin-bottom:18px}
.card h2::before{content:"";width:4px;height:20px;border-radius:2px;background:var(--brand)}
.vintable{width:100%;border-collapse:collapse}
.vintable th{text-align:left;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700;padding:0 10px 12px}
.vintable td{padding:14px 10px;border-top:1px solid var(--line);vertical-align:middle}
.vintable .pos{font-weight:600}.vintable .val{font-family:'JetBrains Mono';font-weight:700;font-size:17px;color:var(--brand)}
.vintable .dec{font-weight:600}.vintable tr:hover td{background:#fbf3f1}
.specs{display:grid;grid-template-columns:1fr 1fr;gap:0 28px}
.spec{display:flex;justify-content:space-between;gap:14px;padding:12px 0;border-bottom:1px solid var(--line)}
.spec .k{color:var(--muted);font-weight:500;font-size:14px}.spec .v{font-weight:700;text-align:right;font-size:15px}
.spec .v.mono{font-family:'JetBrains Mono';font-weight:600}
/* Multi-value spec fields (Exterior Color, Interior Trim) render a <select> of
   the available options. Style it as an obvious, contained dropdown — the bare
   native control read as plain text and wasn't recognizable as interactive,
   especially on mobile Safari. max-width:100% keeps long option labels from
   overflowing the cell. */
.showroom-spec-select{font:inherit;font-size:14px;font-weight:600;color:var(--ink);text-align:left;
  background:#fff;border:1px solid var(--line);border-radius:8px;padding:7px 30px 7px 11px;max-width:100%;
  cursor:pointer;appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238a5e12' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 10px center}
.showroom-spec-select:hover{border-color:var(--brand)}
.showroom-spec-select:focus-visible{outline:2px solid var(--brand);outline-offset:1px}
.rail .card{margin-bottom:18px}
/* Related Vehicles list: each entry is a bordered, hover-highlighted link card
   matching the page's card aesthetic (rounded, --line border, brand hover).
   A square thumbnail (vehicle image, or the Safari-logo placeholder) sits left
   of the title/trim/VIN block. */
.related-vehicle{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);
  border-radius:12px;text-decoration:none;color:var(--ink);transition:border-color .15s,background .15s}
.related-vehicle + .related-vehicle{margin-top:10px}
.related-vehicle:hover{border-color:var(--brand);background:#fbf3f1}
.related-vehicle .thumb{flex:0 0 auto;width:56px;height:56px;border-radius:8px;object-fit:cover;
  background:var(--bg);border:1px solid var(--line)}
.related-vehicle .thumb-placeholder{display:grid;place-items:center}
.related-vehicle .thumb-placeholder img{width:60%;height:60%;opacity:.45}
.related-vehicle .info{min-width:0}
.related-vehicle .title{font-weight:700;font-size:14px;line-height:1.35}
.related-vehicle .sub{font-size:13px;color:var(--muted);margin-top:2px}
.related-vehicle .vin{font-family:'JetBrains Mono';font-size:12px;color:var(--muted);margin-top:4px;letter-spacing:.02em;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.btn{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;padding:13px;border-radius:11px;
  font-weight:700;font-size:14px;cursor:pointer;border:1px solid var(--line);background:#fff;color:var(--ink);margin-bottom:10px}
.btn:last-child{margin-bottom:0}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.dark{background:var(--ink);border-color:var(--ink);color:#fff}.btn:hover{border-color:var(--muted)}
/* Inline ghost button (auto-width) for secondary CTAs like "View API Docs". */
.btn-ghost{display:inline-flex;align-items:center;gap:8px;padding:11px 18px;border:1px solid var(--line);
  border-radius:11px;font-weight:700;font-size:14px;color:var(--ink);background:#fff;cursor:pointer}
.btn-ghost:hover{border-color:var(--brand);color:var(--brand)}
.recall{border-left:3px solid var(--amber);background:var(--gold-soft);padding:12px 14px;border-radius:0 8px 8px 0}
.recall .rc{font-family:'JetBrains Mono';font-weight:700;color:#8a5e12;font-size:13px}
.recall .rt{font-size:13px;color:#5a4a2a;margin-top:4px;line-height:1.4}
.recall + .recall{margin-top:10px}
/* Recalls card: count line + subscriber-gated upsell */
.recall-meta{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:12px}
.recall-meta .rn{font-family:'Archivo';font-weight:800;font-size:16px}
.recall-meta .rs{font-size:12px;color:var(--muted)}
.recall-gate{background:var(--gold-soft);border:1px solid #f0e0c2;border-radius:12px;padding:22px 16px;text-align:center}
.recall-gate svg{width:34px;height:34px;color:var(--gold);margin-bottom:8px}
.recall-gate .gt{font-family:'Archivo';font-weight:800;font-size:16px;color:var(--ink);margin-bottom:6px}
.recall-gate .gs{font-size:13px;color:var(--muted);line-height:1.45;margin-bottom:14px}
.recall-gate .gbtn{display:inline-block;background:var(--ink);color:#fff;border-radius:10px;padding:10px 20px;font-weight:700;font-size:14px;cursor:pointer}
.recall-gate .gbtn:hover{opacity:.92}
/* Separate the stacked gate CTAs (View Plans + the PR#287 ad-unlock button),
   which otherwise wrap in the 320px rail and butt up against each other. */
.recall-gate .gbtn + .gbtn{margin-top:10px}
/* Garage Maroon accent for the rewarded-ad recall unlock button. */
.recall-gate .gbtn.ez-recall-unlock{background:var(--maroon)}
/* Clickable recall -> detail popup */
.recall-clickable{cursor:pointer;transition:background .12s,box-shadow .12s}
.recall-clickable:hover{background:#fbe9dd}
.recall-clickable:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.recall-clickable .recall-more{display:block;margin-top:7px;font-size:12px;font-weight:700;color:var(--brand)}
.recall-modal{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;padding:20px;z-index:60}
.recall-modal[hidden]{display:none}
.recall-modal-card{background:var(--paper);border-radius:16px;max-width:640px;width:100%;max-height:85vh;overflow:auto;padding:28px;position:relative;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.recall-modal-close{position:absolute;top:12px;right:14px;background:transparent;border:0;font-size:20px;color:var(--muted);cursor:pointer;line-height:1;padding:4px}
.recall-modal-close:hover{color:var(--ink)}
.rm-head{border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:4px;padding-right:24px}
.rm-num{font-family:'JetBrains Mono';font-weight:700;color:var(--brand);font-size:14px}
.rm-comp{font-family:'Archivo';font-weight:800;font-size:20px;line-height:1.15;margin-top:4px}
.rm-date{font-size:13px;color:var(--muted);margin-top:5px}
.rm-sec{margin-top:16px}
.rm-label{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}
.rm-sec p{font-size:14px;line-height:1.55;color:var(--ink)}
@media print{.recall-modal{display:none!important}}

/* HERO IMAGE LIGHTBOX — full-resolution view of the assigned vehicle image. */
.img-modal{position:fixed;inset:0;background:rgba(0,0,0,.85);display:flex;align-items:center;justify-content:center;padding:20px;z-index:70}
.img-modal[hidden]{display:none}
.img-modal-inner{position:relative;display:flex;flex-direction:column;align-items:center;gap:12px;max-width:96vw;max-height:92vh}
.img-modal-inner img{max-width:96vw;max-height:86vh;width:auto;height:auto;object-fit:contain;border-radius:10px;box-shadow:0 20px 60px rgba(0,0,0,.5);background:#fff}
.img-modal-close{position:absolute;top:-44px;right:0;background:rgba(0,0,0,.6);border:0;color:#fff;font-size:20px;line-height:1;width:36px;height:36px;border-radius:50%;cursor:pointer}
.img-modal-close:hover{background:rgba(0,0,0,.8)}
.img-modal-cap{color:#fff;font-size:14px;text-align:center}
@media (max-width:760px){.img-modal-close{top:0;right:0}}
@media print{.img-modal{display:none!important}}
.info-row{display:flex;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--line);font-size:14px}
.info-row:last-of-type{border-bottom:0}.info-row .k{color:var(--muted)}.info-row .v{font-weight:700}
.note{background:var(--gold-soft);border:1px solid #f0e0c2;border-radius:10px;padding:13px 14px;font-size:13px;color:#7a5a1e;line-height:1.5;margin-top:6px}
.note b{color:#5f4513}

/* DASHBOARD */
.dashhead{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-top:18px}
.dashhead h1{font-family:'Archivo';font-weight:900;font-size:clamp(26px,3.4vw,36px);letter-spacing:-.5px}
.dashhead p{color:var(--muted);margin-top:4px}
.dashhead .acts{display:flex;gap:10px}
.dashhead .acts .btn{width:auto;margin:0;padding:11px 18px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:22px}
.stat{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:var(--shadow)}
.stat .ico{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;font-size:20px;margin-bottom:14px}
.stat .lbl{color:var(--muted);font-size:13px;font-weight:600}
.stat .num{font-family:'Archivo';font-weight:900;font-size:30px;margin-top:2px;line-height:1}
.stat .sub{font-size:12px;color:var(--brand);font-weight:600;margin-top:6px}
.dashgrid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px;align-items:start;margin-top:22px}
.favhead{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.favhead h2{font-family:'Archivo';font-weight:800;font-size:18px}
.favhead .count{color:var(--muted);font-size:14px}
.fav{display:flex;align-items:center;gap:16px;padding:14px;border:1px solid var(--line);border-radius:14px;margin-top:12px}
.fav:hover{border-color:#d8cfc2;background:#fffdfb}
.fav .thumb{width:64px;height:48px;border-radius:10px;flex-shrink:0;display:grid;place-items:center;background:var(--gold-soft);color:var(--gold);font-size:20px;overflow:hidden}
.fav .thumb img{width:100%;height:100%;object-fit:cover}
.fav .meta{flex:1;min-width:0}
.fav .title{font-weight:700}
.fav .vin{font-family:'JetBrains Mono';font-size:12px;color:var(--muted);margin-top:2px}
.fav .added{font-size:12px;color:#a39a8d;margin-top:2px}
.fav .del{background:transparent;border:0;color:#c0392b;font-size:18px;cursor:pointer;padding:6px}

/* HOME */
.home-hero{margin-top:8px;border-radius:18px;overflow:hidden;color:#fff;text-align:center;padding:42px 24px 40px;
  background:radial-gradient(120% 130% at 50% -10%,var(--maroon),var(--maroon-deep) 70%);position:relative}
.home-hero .trust{display:flex;gap:24px;justify-content:center;flex-wrap:wrap;color:#ffd9d2;font-size:13px;font-weight:600;margin-bottom:16px}
.home-hero .trust span{display:inline-flex;align-items:center;gap:7px}
.home-hero h1{font-family:'Archivo';font-weight:900;font-size:clamp(28px,4.6vw,46px);letter-spacing:-.8px;line-height:1.02}
.home-hero .sub{color:#ffd591;font-weight:600;font-size:clamp(14px,2vw,18px);margin-top:8px}
.home-search{display:flex;gap:10px;max-width:660px;margin:24px auto 0}
.home-search input{flex:1;font-family:'JetBrains Mono';font-size:16px;letter-spacing:.08em;padding:15px 18px;border:0;border-radius:12px;text-transform:uppercase;background:#fff;color:var(--ink)}
.home-search input::placeholder{color:var(--muted);text-transform:none;letter-spacing:normal}
.home-search input:focus{outline:3px solid rgba(255,255,255,.5)}
.home-search button{background:#fff;color:var(--brand);border:0;border-radius:12px;padding:15px 26px;font-weight:800;font-size:16px;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.25)}
.home-search button:hover{background:#fff0ed}
.home-hint{color:#ffc9bf;font-size:12px;margin-top:10px}
.blog-head{text-align:center;margin-top:42px}
.blog-head h2{font-family:'Archivo';font-weight:900;font-size:clamp(24px,3.4vw,34px)}
.blog-head p{color:var(--muted);max-width:560px;margin:8px auto 0}
.featured{display:grid;grid-template-columns:.85fr 1.15fr;margin-top:26px;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:var(--paper);box-shadow:var(--shadow)}
.featured .img{min-height:240px;background:linear-gradient(160deg,#2a2f36,#11141a);display:flex;align-items:flex-end;padding:22px;color:#fff}
.featured .img .tag{font-family:'Archivo';font-weight:900;font-size:20px;line-height:1.1;text-transform:uppercase;letter-spacing:.02em}
.featured .body{padding:28px}
.featured .kicker{font-size:13px;color:var(--muted);margin-bottom:10px}
.featured h3{font-family:'Archivo';font-weight:800;font-size:24px;margin-bottom:10px}
.featured p{color:#4b5460;font-size:15px}
.featured .cta{display:flex;align-items:center;gap:20px;margin-top:20px;flex-wrap:wrap}
.featured .cta .read{background:var(--brand);color:#fff;border:0;border-radius:10px;padding:12px 20px;font-weight:700;cursor:pointer}
.featured .cta .all{color:var(--brand);font-weight:700}
.posts{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:18px}
.post{background:var(--paper);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.post .img{height:120px;background:linear-gradient(160deg,#7a1409,#c42010)}
.post .pb{padding:16px}
.post .pk{font-size:12px;color:var(--muted)}
.post h4{font-family:'Archivo';font-weight:700;font-size:16px;margin-top:6px}

footer{margin:46px 0 30px;text-align:center;color:var(--muted);font-size:13px}

/* RESPONSIVE */
@media (max-width:900px){
  .grid,.dashgrid{grid-template-columns:minmax(0,1fr)}
  .ad-rail{position:static;min-height:280px}
  .hero{grid-template-columns:1fr}.hero .right{order:-1;min-height:150px}
  /* Stacked single-column hero: the grid no longer stretches .right to .left's
     height, so the desktop edge-to-edge object-fit:cover would crop the vehicle
     (only a partial shows). On mobile, show the WHOLE image contained inside the
     hero instead — let it size to its natural ratio at full width, capped so a
     tall/square render can't dominate the screen, and contain (not cover) so the
     full vehicle is visible. White letterboxing blends with the images' white
     backgrounds. The no-image frame is excluded so it keeps its padded height. */
  .hero .right:not(.no-image){min-height:0;padding:0;background:#fff}
  .hero .right:not(.no-image) img{height:auto;max-height:60vh;object-fit:contain}
  /* iOS Safari hero-image expansion fix (mobile only; desktop r32 unchanged).
     Putting aspect-ratio:3/2 on the flex .right with an IN-FLOW <img> still let
     WebKit size the box from the image's intrinsic height (the image stayed in
     normal flow). Definitive fix: a universally-supported padding-ratio box
     (height:0 + padding-bottom:66.667% = 3:2, no reliance on aspect-ratio) with
     the image taken OUT OF FLOW (position:absolute; inset:0). An out-of-flow
     image cannot contribute to its container's height, so nothing can expand it;
     overflow:hidden clips the cover crop. display:block drops flex so no
     intrinsic re-sizing path remains. */
  .hero .right.r32:not(.no-image){display:block;position:relative;aspect-ratio:auto;height:0;padding:0 0 66.667%;overflow:hidden}
  .hero .right.r32:not(.no-image) img{position:absolute;inset:0;width:100%;height:100%;min-height:0;max-height:none;aspect-ratio:auto;object-fit:cover}
  .stats{grid-template-columns:1fr 1fr}
  .featured{grid-template-columns:1fr}.featured .img{min-height:160px}
  .posts{grid-template-columns:1fr}
}
@media (max-width:760px){
  .burger{display:block}
  /* Burger opens a stacked menu (logo + burger stay on the top bar; links AND
     the account actions wrap below it), so every account link stays reachable
     on mobile. The header expands rather than overlaying. */
  .nav .links,.nav .user{display:none}
  .nav.open .wrap{height:auto;flex-wrap:wrap;padding-bottom:10px}
  .nav.open .links,.nav.open .user{display:flex;flex-direction:column;width:100%;gap:0;margin-left:0;align-items:stretch}
  .nav.open .links{order:3}
  .nav.open .user{order:4;position:static;padding-top:4px}
  .nav.open .links a{padding:12px 0;border-bottom:1px solid rgba(255,255,255,.15)}
  .nav.open .user .av{display:none}
  .nav.open .user > a{padding:12px 0;border-bottom:1px solid rgba(255,255,255,.15)}
  .nav.open .user .user-links{display:flex;position:static;flex-direction:column;background:transparent;border:0;box-shadow:none;padding:0;min-width:0}
  .nav.open .user .user-links a,.nav.open .user .user-links button{color:#fff;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.15);border-radius:0}
  .nav.open .user .user-links a:hover,.nav.open .user .user-links button:hover{background:transparent;color:#ffd9d2}
  .specs{grid-template-columns:1fr}
  .card{padding:18px}
  .dashhead .acts{width:100%}.dashhead .acts .btn{flex:1}
  .vintable thead{display:none}
  .vintable,.vintable tbody,.vintable tr,.vintable td{display:block;width:100%}
  .vintable tr{border:1px solid var(--line);border-radius:12px;padding:6px 14px;margin-bottom:12px}
  .vintable tr:hover td{background:transparent}
  .vintable td{border-top:0;padding:7px 0;display:flex;justify-content:space-between;align-items:center}
  .vintable td::before{content:attr(data-label);color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em;font-weight:600}
}

/* ACCESSIBILITY + PRINT */
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto;transition:none!important}}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
@media print{
  /* Drop chrome + non-content UI: nav, footer, hero image, ads, all interactive
     controls (decode bar, copy/share/favorite, rail action buttons, modal). */
  .nav, .site-footer, .burger,
  .hero .right,
  .decodebar, .ad, .ad-zone, .recall-modal,
  .related-vehicles,
  .vinline button, .rail .btn{display:none!important}

  /* Ink-friendly: white background, black text, no shadows/round corners. */
  body{background:#fff;color:#000}
  body.showroom > main, .wrap{max-width:100%;padding:0}
  .hero{grid-template-columns:1fr;background:#fff;color:#000;box-shadow:none;border:1px solid #ccc;border-radius:0;margin:0 0 10px}
  .hero .left{padding:12px 14px}
  .hero h1,.hero h1 .body-style,.crumb,.blurb,.badge,.pill .k,.pill .v,
  .confidence-note .cf-label,.confidence-note .cf-value,.confidence-note .cf-reason{color:#000}
  .badge{background:#fff;border-color:#999}
  .vinline .vin{background:#fff;color:#000;border-color:#999}
  .pill{background:#fff;border-color:#ccc}

  /* Tighten layout to optimise space: single column, compact cards. */
  /* `.grid` collides with Tailwind's .grid utility (loaded after showroom.css);
     scope with body.showroom to outspecify it and force a single print column. */
  body.showroom .grid{display:block;margin-top:10px}
  body.showroom .grid > div, body.showroom .rail{display:block;width:auto}
  .rail .card,.card{box-shadow:none;border:1px solid #ddd;border-radius:0;padding:12px;margin:0 0 10px;break-inside:avoid;page-break-inside:avoid}
  .card h2{margin-bottom:8px}
  .card h2::before{display:none}
  .specs{gap:0 18px}
  .spec{padding:6px 0}
  .vintable td{padding:7px 8px}
  @page{margin:12mm}

  /* decode_page_print_options polish, keyed off the `.print-options` marker
     class the showroom VIN partials put on main.wrap when the
     web_features.decode_page_print_options switch is on. Switch OFF -> no
     marker class -> the rules above apply unchanged (breadcrumb prints, hero
     image hidden). */
  .print-options .crumb{display:none!important}

  /* Show the hero vehicle image on the printed report. Only the with-image
     panel is un-hidden (`:not(.no-image)`): the "No factory image on file"
     frame stays dropped by the `.hero .right` rule above, so no-image VINs
     print exactly as before. The overrides below neutralise BOTH the ≤900px
     stacked-hero rules (paper width falls under that breakpoint: order:-1,
     60vh cap) and the r32 padding-ratio box with its out-of-flow absolute
     image (same specificity, later in source -> these win), printing the
     image in flow after the hero text, contained at its natural ratio. */
  .print-options .hero .right:not(.no-image){display:block!important;order:0;position:static;height:auto;min-height:0;padding:0 0 8px;overflow:visible;background:#fff}
  .print-options .hero .right:not(.no-image) img{position:static;display:block;width:auto;max-width:100%;height:auto;max-height:3.2in;min-height:0;aspect-ratio:auto;object-fit:contain;margin:0 auto}
  .print-options .hero .hero-img-hint{display:none!important}
  /* A with-image panel whose <img> 404s at runtime reveals the no-image .frame
     via the hero_image partial's onerror handler, which the server-side
     .no-image class guard above can't see. Keep the placeholder frame out of
     print unconditionally — when the image loaded fine the frame is [hidden]
     anyway, and the server-side no-image panel is already display:none. */
  .print-options .hero .right .frame{display:none!important}
}

/* Showroom additions beyond style-guide §7 (from the approved classic mockup) */
.blurb{margin-top:10px;color:#ffe2dc;font-size:13.5px;max-width:56ch;font-style:italic;line-height:1.45}
.era-classic .blurb{color:#ffe2dc}
.decodebar .hint{flex-basis:100%;font-size:12px;color:var(--muted)}
.card.classic h2::before{background:var(--gold)}
@media print{ .blurb{color:#000} }

/* API promo (home) — highlights the developer API (revenue) with a code sample */
.api-promo{margin-top:46px}
.api-code{margin-top:24px;background:linear-gradient(160deg,#2a2f36,#11141a);border-radius:18px;
  padding:24px;color:#cfd4db;box-shadow:var(--shadow);overflow:hidden}
.api-code-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.api-code-head .api-title{font-family:'Archivo';font-weight:800;font-size:16px;color:#fff}
.api-badges{display:flex;gap:8px}
.pillb{font-weight:700;font-size:11px;letter-spacing:.06em;border-radius:30px;padding:4px 11px;color:#fff}
.pillb.get{background:#16a34a}
.pillb.json{background:#2563eb}
.api-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.api-label{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#9aa3b0;margin-bottom:8px}
.api-code pre{margin:0;overflow-x:auto;background:rgba(0,0,0,.25);border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:14px}
.api-code pre code{font-family:'JetBrains Mono';font-size:12.5px;line-height:1.55;white-space:pre}
.api-code pre.req code{color:#7ee0a6}
.api-code pre.resp code{color:#7fb6ff}
.api-cta{display:flex;gap:12px;justify-content:center;margin-top:22px;flex-wrap:wrap}
.api-cta .btn{width:auto;margin:0;padding:13px 24px}
@media (max-width:760px){ .api-grid{grid-template-columns:1fr} }

/* API DOCS page — parameter / rate-limit / status tables + doc helpers.
   .docs-table is a new (collision-free) name; other rules are scoped under
   .docs-page so they never touch shared showroom classes. */
.docs-page .docs-nav{display:flex;flex-wrap:wrap;gap:8px}
.docs-page .docs-nav a{font-size:13px;font-weight:600;color:var(--muted);padding:6px 12px;
  border:1px solid var(--line);border-radius:30px;background:var(--paper)}
.docs-page .docs-nav a:hover{border-color:var(--brand);color:var(--brand)}
.docs-page .docs-lead{color:var(--muted);margin-bottom:14px}
.docs-page .method-pill{display:inline-block;font-weight:700;font-size:11px;letter-spacing:.06em;
  border-radius:30px;padding:4px 11px;color:#fff;margin-left:8px;vertical-align:middle}
.docs-page .method-pill.get{background:#16a34a}
.docs-page .method-pill.post{background:#2563eb}
.docs-page .docs-subhead{font-family:'Archivo';font-weight:800;font-size:14px;color:var(--ink);margin:18px 0 8px}
.docs-page .level-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:8px}
.docs-page .level-card{border:1px solid var(--line);border-radius:12px;padding:16px;background:var(--paper)}
.docs-page .level-card h3{font-family:'Archivo';font-weight:800;font-size:15px;margin-bottom:4px}
.docs-page .level-card .lvl-note{font-size:13px;color:var(--muted);margin-bottom:8px}
.docs-page .level-card ul{margin:0 0 0 18px;font-size:14px;color:var(--ink)}
.docs-page .level-card li{margin:4px 0}
.docs-page .status-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.docs-page .status-row{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--paper)}
.docs-page .status-row .code{font-family:'JetBrains Mono';font-weight:700;font-size:13px}
.docs-page .status-row .code.ok{color:#16a34a}
.docs-page .status-row .code.err{color:#dc2626}
.docs-page .status-row p{font-size:13px;color:var(--muted);margin-top:4px}
.docs-page .docs-warn{display:flex;gap:10px;border:1px solid #f3d98a;background:var(--gold-soft);
  border-radius:12px;padding:14px;margin-top:14px}
.docs-page .docs-warn h4{font-weight:700;font-size:13px;color:#8a5e12}
.docs-page .docs-warn p{font-size:13px;color:#7a5510;margin-top:2px}
.docs-table{width:100%;border-collapse:collapse;font-size:14px}
.docs-table th{text-align:left;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:0 10px 10px}
.docs-table td{padding:10px;border-top:1px solid var(--line);vertical-align:top}
.docs-table td code{font-family:'JetBrains Mono';font-size:12.5px;color:var(--brand)}
@media (max-width:760px){ .docs-page .level-grid,.docs-page .status-grid{grid-template-columns:1fr} }

/* Rich site footer (ported from the production footer, restyled for showroom).
   Scoped under .site-footer so it overrides the minimal §7 footer{} rule. */
.site-footer{margin:56px 0 0;background:linear-gradient(180deg,#1b1f27,#0f1216);
  color:#cfd4db;border-top:4px solid var(--brand);text-align:left;font-size:15px}
.site-footer .wrap{padding:48px 20px 28px}
.ft-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:32px}
.ft-brand .ft-logo{height:38px;width:auto;display:block;margin-bottom:14px}
.ft-brand p{color:#9aa3b0;max-width:48ch;line-height:1.5;margin-bottom:16px}
.ft-col h3{font-family:'Archivo';font-weight:800;font-size:12px;letter-spacing:.12em;
  text-transform:uppercase;color:#fff;margin-bottom:14px}
.ft-col ul{list-style:none;display:flex;flex-direction:column;gap:9px}
.ft-col a{color:#9aa3b0}
.ft-col a:hover{color:#fff}
.ft-bottom{margin-top:32px;border-top:1px solid #2a2f3a;padding-top:20px;
  display:flex;justify-content:center;align-items:center;gap:16px;flex-wrap:wrap}
.ft-bottom p{color:#7b828e;font-size:13px;margin:0}
@media (max-width:760px){ .ft-grid{grid-template-columns:1fr;gap:24px} }

/* NAV USER DROPDOWN */
.nav .user{position:relative;cursor:pointer}
.nav .user .user-links{display:none;position:absolute;right:0;top:calc(100% + 8px);background:#fff;border:1px solid var(--line);border-radius:12px;padding:6px;min-width:180px;box-shadow:0 12px 30px rgba(0,0,0,.12);flex-direction:column;z-index:50}
.nav .user.open .user-links{display:flex}
.nav .user.has-menu:focus-visible{outline:2px solid #fff;outline-offset:2px;border-radius:8px}
.nav .user .user-links a,.nav .user .user-links button{color:var(--ink);font-weight:600;font-size:14px;padding:9px 12px;border-radius:8px}
.nav .user .user-links a:hover,.nav .user .user-links button:hover{background:var(--bg)}
/* Sign out renders as a button_to (real DELETE form); style it like the links. */
.nav .user .user-links form{margin:0}
.nav .user .user-links button{display:block;width:100%;text-align:left;background:none;border:0;cursor:pointer;font-family:inherit}

/* DASHBOARD */
.dashhead{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin:32px 0 24px}
.dashhead h1{font-size:28px;font-weight:800;line-height:1.2}
.dashhead p{color:var(--muted);margin-top:4px}
.acts{display:flex;gap:10px;flex-shrink:0}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:32px}
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:22px;display:flex;flex-direction:column;gap:10px}
.stat .ico{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;font-size:22px}
.stat .lbl{font-size:13px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.stat .num{font-size:32px;font-weight:800;line-height:1}
.dashgrid{display:grid;grid-template-columns:1fr 320px;gap:24px;align-items:start}
.favhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.favhead h2{font-size:18px;font-weight:800}
.favhead .count{font-size:13px;color:var(--muted);font-weight:600}
.fav{display:flex;gap:14px;padding:14px 0;border-bottom:1px solid var(--line)}
.fav:last-child{border-bottom:none}
.fav .thumb{width:56px;height:56px;border-radius:10px;background:var(--gold-soft);display:grid;place-items:center;font-size:22px;flex-shrink:0;overflow:hidden}
.fav .thumb img{width:100%;height:100%;object-fit:cover}
.fav .meta .title{font-weight:700;font-size:15px;line-height:1.3}
.fav .meta .vin{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--muted);margin-top:2px}
.fav .meta .added{font-size:12px;color:var(--muted);margin-top:2px}
.rail .card + *{margin-top:16px}
@media(max-width:900px){.stats{grid-template-columns:repeat(2,1fr)}.dashgrid{grid-template-columns:1fr}}
@media(max-width:600px){.stats{grid-template-columns:1fr}.dashhead{flex-direction:column}.acts{width:100%}.acts a{flex:1;text-align:center}}

/* ARCHIVE landing */
.archive-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:18px 0}
.archive-stats .stat .num{font-size:26px}
.archive-years{margin-top:22px}
.archive-legend{display:flex;gap:18px;color:var(--muted);font-size:13px;font-weight:600;margin:6px 0 4px}
.archive-legend .dot,.era-band .dot{display:inline-block;width:9px;height:9px;border-radius:50%;vertical-align:middle;margin-right:6px}
.archive-legend .dot.modern,.era-band .dot.modern{background:var(--brand)}
.archive-legend .dot.classic,.era-band .dot.classic{background:var(--gold)}
.era-band{display:flex;align-items:center;gap:0;margin:26px 0 8px;font-family:'Archivo';font-weight:800;
  font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.era-band::after{content:"";flex:1;height:1px;background:var(--line);margin-left:12px}
.decade{margin:14px 0}
.decade h3{font-family:'Archivo';font-weight:800;font-size:15px;color:var(--ink);margin-bottom:8px;display:flex;align-items:baseline;gap:8px}
.decade h3 .dcount{font-family:'Inter';font-weight:600;font-size:12px;color:var(--muted)}
.year-chips{display:flex;flex-wrap:wrap;gap:10px}
.year-chip{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:80px;
  padding:10px 12px;background:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);transition:border-color .12s,transform .12s}
.year-chip:hover{border-color:var(--brand);transform:translateY(-1px)}
.year-chip .yr{font-family:'Archivo';font-weight:900;font-size:18px;color:var(--ink);line-height:1}
.year-chip .ct{font-size:11px;color:var(--muted);margin-top:3px}
.year-chip.classic{border-color:#ecd9b0;background:var(--gold-soft)}
.year-chip.classic:hover{border-color:var(--gold)}
.year-chip.classic .yr{color:#8a5e12}
.make-grid{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.make-chip{display:inline-flex;align-items:baseline;gap:8px;padding:10px 14px;background:var(--paper);
  border:1px solid var(--line);border-radius:30px;box-shadow:var(--shadow);font-weight:700}
.make-chip:hover{border-color:var(--brand)}
.make-chip .ct{font-weight:600;font-size:12px;color:var(--muted)}
.sample-vin{padding:16px}
.sample-vin .label{font-weight:700;font-size:14px;color:var(--ink)}
.sample-vin .mono{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--muted);margin-top:6px}
.sample-vin:hover{border-color:var(--brand)}
@media (max-width:760px){ .archive-stats{grid-template-columns:1fr 1fr} }
/* ARCHIVE sub-page helpers */
.pill-nav{display:inline-flex;align-items:center;padding:8px 16px;background:var(--paper);border:1px solid var(--line);
  border-radius:30px;font-size:13px;font-weight:600;color:var(--ink);box-shadow:var(--shadow);transition:border-color .12s}
.pill-nav:hover{border-color:var(--brand);color:var(--brand)}
.make-chip.classic{border-color:#ecd9b0;background:var(--gold-soft);color:#8a5e12}
.make-chip.classic:hover{border-color:var(--gold)}
.make-chip.active-chip{border-color:var(--brand);background:var(--brand);color:#fff}
.make-chip.active-chip:hover{border-color:var(--brand-deep)}
/* Informational (non-link) model chip: a classic year recognized by the decoder
   that has no stored example VINs to browse yet. */
.make-chip.static{cursor:default}
.make-chip.static:hover{border-color:#ecd9b0}
.badge-classic{display:inline-flex;align-items:center;padding:1px 7px;background:var(--gold-soft);
  border:1px solid #ecd9b0;border-radius:20px;font-size:11px;font-weight:700;color:#8a5e12;margin-left:6px;vertical-align:middle}
.badge-trim{display:inline-flex;align-items:center;padding:1px 7px;background:#f0f4ff;
  border:1px solid #c7d7ff;border-radius:20px;font-size:11px;font-weight:700;color:#3b5bdb;margin-left:6px;vertical-align:middle}
.classic-item{border-color:#ecd9b0;background:var(--gold-soft)}
.classic-item:hover{border-color:var(--gold)}

/* BLOG index — scoped to .blog-index so it never overrides the home page's
   .featured/.posts blog styling (which is defined earlier and used on Home). */
.blog-index .featured{display:flex;flex-direction:column;border-radius:16px;overflow:hidden;background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);margin-bottom:24px;transition:box-shadow .15s}
.blog-index .featured:hover{box-shadow:0 6px 32px rgba(0,0,0,.10)}
.blog-index .featured .feat-img img{width:100%;max-height:320px;object-fit:cover;display:block}
.blog-index .featured .feat-body{padding:28px 28px 24px}
.blog-index .featured .feat-body h2{font-family:'Archivo';font-weight:900;font-size:clamp(20px,3vw,30px);line-height:1.15;margin:8px 0 10px;color:var(--ink)}
.blog-index .featured .feat-excerpt{color:var(--muted);font-size:16px;line-height:1.6;margin-bottom:14px}
.blog-index .featured .feat-meta{font-size:12px;color:var(--muted);font-weight:600;display:flex;gap:6px;align-items:center}
.blog-index .posts{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin:20px 0}
.blog-index .post-card{display:flex;flex-direction:column;overflow:hidden;text-decoration:none;transition:box-shadow .15s,transform .12s}
.blog-index .post-card:hover{box-shadow:0 6px 28px rgba(0,0,0,.10);transform:translateY(-1px)}
.blog-index .post-card .post-img img{width:100%;height:180px;object-fit:cover;display:block}
.blog-index .post-card .post-body{padding:18px;flex:1;display:flex;flex-direction:column}
.blog-index .post-card .post-body h3{font-family:'Archivo';font-weight:800;font-size:16px;line-height:1.3;margin:6px 0 8px;color:var(--ink);flex:1}
.blog-index .post-card .post-excerpt{font-size:13px;color:var(--muted);line-height:1.5;margin-bottom:10px;flex:1}
.blog-index .post-card .post-meta{font-size:11px;color:var(--muted);font-weight:600;display:flex;gap:4px;align-items:center}
.blog-index .pager{display:flex;gap:8px;justify-content:center;margin:28px 0}
@media(max-width:800px){.blog-index .posts{grid-template-columns:repeat(2,1fr)}}
@media(max-width:540px){.blog-index .posts{grid-template-columns:1fr}.blog-index .featured .feat-body{padding:18px}}

/* BLOG show — article body prose */
.article-body{font-size:16px;line-height:1.7;color:var(--ink)}
.article-body h2{font-family:'Archivo';font-weight:800;font-size:22px;margin:24px 0 10px}
.article-body h3{font-family:'Archivo';font-weight:700;font-size:18px;margin:18px 0 8px}
.article-body p{margin:0 0 14px}.article-body a{color:var(--brand);font-weight:600}
.article-body ul,.article-body ol{margin:0 0 14px 22px}.article-body li{margin:4px 0}
.article-body img{max-width:100%;border-radius:12px;margin:14px 0}
/* Blog article images: cap displayed size at 500x500, aspect ratio preserved. Scoped to the blog show page (.blog-index) so shared .article-body pages (privacy/terms/about) are untouched. */
.blog-index .article-body img{max-width:min(100%,500px);max-height:500px;width:auto;height:auto}
.article-body pre{background:#11141a;color:#cfd4db;border-radius:10px;padding:14px;overflow-x:auto;font-family:'JetBrains Mono';font-size:13px}
.article-body code{font-family:'JetBrains Mono'}

/* CLASSICS page */
.classic-intro p{margin-bottom:10px}
.classic-chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}
.classic-chip{display:flex;flex-direction:column;padding:10px 14px;background:var(--gold-soft);border:1px solid #ecd9b0;border-radius:12px;box-shadow:var(--shadow);transition:border-color .12s,transform .12s;text-decoration:none}
.classic-chip:hover{border-color:var(--gold);transform:translateY(-1px)}
.classic-chip-vin{font-family:'JetBrains Mono';font-weight:700;font-size:13px;color:#8a5e12;letter-spacing:.08em}
.classic-chip-label{font-size:11px;color:var(--muted);margin-top:2px}
.classic-chip-static{cursor:default}
.classic-chip-static:hover{transform:none;border-color:#ecd9b0}
.classic-mfr-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:8px}
.classic-mfr-card{background:var(--gold-soft);border:1px solid #ecd9b0;border-radius:12px;padding:14px}
.classic-mfr-card strong{display:block;font-family:'Archivo';font-weight:800;font-size:14px;color:#7a5010;margin-bottom:8px}
.classic-mfr-header{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:8px}
.classic-mfr-badge{display:inline-block;background:rgba(201,130,26,.18);border:1px solid #ecd9b0;border-radius:20px;padding:2px 9px;font-size:11px;font-weight:700;color:#8a5e12}
.classic-mfr-detail{display:flex;gap:8px;font-size:13px;margin-bottom:4px}
.classic-mfr-detail .k{color:var(--muted);font-weight:600;min-width:46px}
.classic-mfr-detail .v{color:var(--ink);font-weight:500}
.classic-mfr-detail .v.mono{font-family:'JetBrains Mono';font-size:12px}
.classic-tech-list{margin:6px 0 0 14px;list-style:disc;color:var(--muted);font-size:13px;line-height:1.8}
@media(max-width:760px){.classic-mfr-grid{grid-template-columns:1fr 1fr}}
@media(max-width:540px){.classic-mfr-grid{grid-template-columns:1fr}}

/* CLASSICS COVERAGE MATRIX — chunked year-by-manufacturer tables. */
.classic-matrix-hint{color:var(--muted);font-size:13px;margin:-6px 0 14px}
/* Each table scrolls horizontally inside its own box so it never overflows the
   page on narrow screens. */
.classic-matrix-wrap{overflow-x:auto;margin:0 0 18px;border:1px solid var(--line);border-radius:12px}
.classic-matrix-wrap:last-child{margin-bottom:0}
.classic-matrix{border-collapse:collapse;width:100%;font-size:13px}
.classic-matrix th,.classic-matrix td{padding:7px 8px;text-align:center;border-bottom:1px solid var(--line);white-space:nowrap}
.classic-matrix tbody tr:last-child th,.classic-matrix tbody tr:last-child td{border-bottom:0}
.classic-matrix thead th{background:var(--paper);border-bottom:2px solid var(--line);
  font-family:'Archivo';font-weight:800;color:var(--ink);vertical-align:bottom}
.classic-matrix .cm-mfr{display:block}
.classic-matrix .cm-mfr-sub{display:block;font-size:10px;font-weight:600;color:var(--muted);
  text-transform:uppercase;letter-spacing:.06em;margin-top:2px}
.classic-matrix .cm-corner{text-align:left;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em}
.classic-matrix .cm-yr-row{text-align:left;font-family:'JetBrains Mono';font-weight:700;color:var(--muted);background:var(--paper)}
.classic-matrix .cm-year{font:inherit;font-family:'JetBrains Mono';font-weight:700;font-size:13px;color:#8a5e12;
  background:var(--gold-soft);border:1px solid #ecd9b0;border-radius:8px;padding:5px 9px;min-width:54px;cursor:pointer}
.classic-matrix .cm-year:hover,.classic-matrix .cm-year:focus-visible{border-color:var(--gold);background:#fbe6c8;outline:none}
.classic-matrix .cm-empty{color:#d8c7a4}
/* Shared year-cell tooltip (appended to <body>). */
.cm-tooltip{position:fixed;z-index:80;max-width:340px;background:#2b211a;color:#fff;border-radius:10px;
  padding:10px 12px;box-shadow:0 12px 30px rgba(0,0,0,.28);pointer-events:none;font-size:13px}
.cm-tooltip[hidden]{display:none}
.cm-tip-h{font-weight:800;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#ffd591;margin-bottom:5px}
.cm-tip-b{line-height:1.5}

/* DATA downloads page */
.data-downloads{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-top:22px}
.data-card{display:flex;flex-direction:column;gap:14px}
.data-card h2{margin-bottom:6px}
.data-card-top{flex:1}
.data-card-desc{color:var(--muted);font-size:14px;line-height:1.5;margin-top:4px}
.data-card-action{margin-top:4px}
.data-card-action .btn{width:100%}
.data-locked{color:var(--muted);cursor:not-allowed;background:#f5f3f0;border-color:var(--line)}
.data-info-row{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:20px}
.data-quality-list{margin:8px 0 0 18px;list-style:disc;color:var(--muted);font-size:14px;line-height:1.9}
@media(max-width:760px){.data-downloads{grid-template-columns:1fr}.data-info-row{grid-template-columns:1fr}}

/* PHASE 3: PRICING PLANS */
.plan-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:24px;align-items:start}
/* Real purchasable tiers (web_features.real_plans_grid): six cards lay out 3x2. */
.plan-grid.real-plans-grid{grid-template-columns:repeat(3,1fr)}
/* Launch "subscriptions coming soon" notice — shown when no purchasable plans exist (Chargebee migration-only state). */
.plan-coming-soon{max-width:560px;margin:24px auto 0;text-align:center}
.plan-coming-soon h2{justify-content:center}
.plan-coming-soon h2::before{display:none}
.plan-coming-soon p{color:var(--muted)}
.plan-card{background:var(--paper);border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:var(--shadow);display:flex;flex-direction:column}
.plan-card-header{padding:22px 20px 18px;border-bottom:1px solid var(--line)}
.plan-card-header h3{font-family:'Archivo';font-weight:800;font-size:18px}
.plan-card-price{margin-top:10px}
.plan-card-price .amount{font-family:'Archivo';font-weight:900;font-size:32px;color:var(--ink)}
.plan-card-price .period{font-size:14px;color:var(--muted)}
.plan-card-price .free{font-family:'Archivo';font-weight:900;font-size:28px;color:var(--muted)}
.plan-card-desc{font-size:13px;color:var(--muted);margin-top:6px;line-height:1.45}
.plan-card-features{padding:16px 20px;flex:1}
.plan-feature{display:flex;align-items:flex-start;gap:8px;padding:5px 0;font-size:13px;color:var(--ink)}
.plan-feature svg{flex-shrink:0;color:#2a9d2a;margin-top:1px}
.plan-cta{padding:16px 20px;border-top:1px solid var(--line)}
.plan-cta .btn{margin-bottom:0}
.plan-highlight{border:2px solid var(--brand);box-shadow:0 4px 18px rgba(196,32,16,.12)}
.plan-highlight .plan-card-header{background:linear-gradient(135deg,#fff5f4,#fff)}
.plan-badge{display:inline-block;background:var(--brand);color:#fff;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:3px 10px;border-radius:20px;margin-top:8px}
.plan-current-label{display:flex;align-items:center;justify-content:center;gap:6px;padding:11px;border-radius:11px;border:2px solid #2a9d2a;color:#2a9d2a;font-weight:700;font-size:14px}
.plan-savings{font-size:12px;color:#2a9d2a;font-weight:600;margin-top:4px}
.plan-annual-note{font-size:12px;color:var(--muted);margin-top:3px}
.plan-period-toggle{display:flex;gap:0;background:var(--paper);border:1px solid var(--line);border-radius:10px;overflow:hidden;width:fit-content;margin:18px auto 0}
.plan-period-toggle a{padding:8px 22px;font-size:14px;font-weight:600;color:var(--muted)}
.plan-period-toggle a.active{background:var(--brand);color:#fff}
.plan-faq{margin-top:42px}
.plan-faq h2{font-family:'Archivo';font-weight:900;font-size:clamp(22px,2.8vw,28px);margin-bottom:20px}
.plan-faq-item{padding:16px 0;border-bottom:1px solid var(--line)}
.plan-faq-item h3{font-weight:700;font-size:15px;margin-bottom:6px}
.plan-faq-item p{font-size:14px;color:var(--muted);line-height:1.55}
/* The compound .real-plans-grid selector must repeat in the media rules — its
   (0,2,0) base rule otherwise outweighs the single-class responsive overrides. */
@media(max-width:900px){.plan-grid,.plan-grid.real-plans-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.plan-grid,.plan-grid.real-plans-grid{grid-template-columns:1fr}}

/* PHASE 3: SUBSCRIPTION/BILLING */
.sub-status-card{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:24px;box-shadow:var(--shadow);margin-top:22px}
.sub-plan-name{font-family:'Archivo';font-weight:900;font-size:26px}
.sub-plan-desc{color:var(--muted);font-size:14px;margin-top:2px}
.sub-price{font-family:'Archivo';font-weight:900;font-size:28px;color:var(--brand);margin-top:10px}
.sub-price span{font-size:15px;color:var(--muted);font-weight:600}
.sub-status-badge{display:inline-block;background:#e8f8e8;color:#1a7a1a;border:1px solid #b2ddb2;border-radius:20px;padding:4px 14px;font-size:13px;font-weight:700;margin-top:8px}
.sub-renewal{font-size:13px;color:var(--muted);margin-top:4px}
.sub-usage-section{margin-top:22px}
.sub-usage-section h2{font-family:'Archivo';font-weight:800;font-size:16px;margin-bottom:14px}
.sub-usage-bar{background:var(--line);border-radius:6px;height:8px;overflow:hidden;margin-top:8px}
.sub-usage-fill{height:8px;border-radius:6px;background:var(--brand)}
.sub-usage-label{font-size:12px;color:var(--muted);margin-top:5px}
.sub-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
.sub-actions .btn{width:auto;padding:11px 20px;margin-bottom:0}
.sub-no-plan{text-align:center;padding:40px 20px}
.sub-no-plan h2{font-family:'Archivo';font-weight:900;font-size:24px;margin-top:16px}
.sub-no-plan p{color:var(--muted);font-size:15px;margin-top:8px;max-width:480px;margin-left:auto;margin-right:auto}
.sub-no-plan .btn{display:inline-flex;width:auto;padding:13px 28px;margin:20px auto 0}
.sub-annual-save{background:var(--gold-soft);border:1px solid #f0e0c2;border-radius:12px;padding:18px 20px;margin-top:22px}
.sub-annual-save h3{font-weight:700;font-size:15px;color:#7a5a1e}
.sub-annual-save p{font-size:14px;color:#8a6a2e;margin-top:4px;line-height:1.5}
@media(max-width:760px){.sub-actions{flex-direction:column}.sub-actions .btn{width:100%}}

/* PHASE 3 TASK 2: Profile + API Keys + Usage */
/* Profile page */
.sh-profile-fields{display:flex;flex-direction:column;gap:14px}
.sh-field-pair{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.sh-field{display:flex;flex-direction:column;gap:5px}
.sh-field-label{font-size:13px;font-weight:600;color:var(--ink)}
.sh-field-input{padding:10px 13px;border:1.5px solid var(--line);border-radius:10px;font-size:15px;font-family:inherit;background:var(--paper);color:var(--ink)}
.sh-field-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(196,32,16,.1)}
.sh-field-hint{font-size:12px;color:var(--muted)}
.sh-profile-actions{display:flex;gap:10px;flex-wrap:wrap}
.sh-danger-zone h2::before{background:#c53030!important}
/* Checkbox row */
.sh-checkbox-row{display:flex;align-items:flex-start;gap:10px}
.sh-checkbox{width:16px;height:16px;margin-top:2px;flex-shrink:0;accent-color:var(--brand)}
/* API key row */
.sh-key-row{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:14px 0;border-bottom:1px solid var(--line)}
.sh-key-row:last-child{border-bottom:none}
.sh-key-row-info{flex:1;min-width:0}
.sh-key-row-name{font-weight:700;font-size:15px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sh-key-row-meta{margin-top:5px;display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--muted)}
.sh-key-row-actions{display:flex;gap:8px;flex-shrink:0;align-items:center}
.sh-key-prefix{font-family:'JetBrains Mono';font-size:12px;background:var(--bg);padding:3px 7px;border-radius:6px;color:var(--ink)}
.sh-key-badge{font-size:11px;font-weight:700;padding:2px 9px;border-radius:20px}
.sh-key-badge.active{background:#e8f8e8;color:#1a7a1a}
.sh-key-badge.revoked{background:#fdecea;color:#c53030}
/* Key code display block */
.sh-key-code-block{display:flex;align-items:center;gap:10px;background:#11141a;border-radius:10px;padding:12px 14px;overflow-x:auto}
.sh-key-mono{font-family:'JetBrains Mono';font-size:13px;color:#4ade80;word-break:break-all;flex:1}
/* Account disabled state */
.sh-account-disabled-notice{background:#fdecea;border:1px solid #f5c6c6;border-radius:10px;padding:12px 14px;font-size:13px;color:#c53030;margin-bottom:14px}
.sh-form-disabled{opacity:.5;pointer-events:none}
/* Reveal page */
.sh-reveal-warning h2::before{background:#d97706!important}
/* Usage two-column layout */
.sh-usage-two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:20px;margin-bottom:40px}
@media(max-width:760px){.sh-field-pair{grid-template-columns:1fr}.sh-usage-two-col{grid-template-columns:1fr}.sh-key-row{flex-direction:column}.sh-key-row-actions{flex-direction:row}}

/* ===== Auth (Devise) showroom cards — Phase 3 Task 4 (unique names) ===== */
.auth-wrap{max-width:460px;margin:40px auto 56px;padding:0 20px}
.auth-card{background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);overflow:hidden}
.auth-card .auth-head{background:var(--brand);padding:22px 30px;text-align:center}
.auth-card .auth-head img{height:38px;width:auto}
.auth-card .auth-body{padding:28px 30px}
.auth-card h1{font-family:'Archivo','Inter',sans-serif;font-weight:900;font-size:24px;color:var(--ink);margin-bottom:6px;text-align:center}
.auth-card .auth-sub{color:var(--muted);font-size:14px;margin-bottom:20px;text-align:center}
.auth-field{margin-bottom:15px}
.auth-field label{display:block;font-size:13px;font-weight:600;color:var(--ink);margin-bottom:6px}
.auth-field input[type=email],.auth-field input[type=password],.auth-field input[type=text]{width:100%;padding:11px 14px;border:1.5px solid var(--line);border-radius:10px;font-size:15px;background:#fff;color:var(--ink)}
.auth-field input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(196,32,16,.12)}
.auth-field .auth-hint{display:block;margin-top:5px;font-size:12px;color:var(--muted)}
.auth-field-pair{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.auth-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;font-size:14px;gap:10px;flex-wrap:wrap}
.auth-check{display:flex;align-items:center;gap:8px;color:var(--ink)}
.auth-check input{width:16px;height:16px;accent-color:var(--brand)}
.auth-card .btn{width:100%;margin-top:6px;justify-content:center}
.auth-links{margin-top:18px;padding-top:16px;border-top:1px solid var(--line);font-size:14px;display:flex;flex-direction:column;gap:9px;text-align:center}
.auth-links a{color:var(--brand);font-weight:600}
.auth-links a:hover{text-decoration:underline}
.auth-errors{background:var(--gold-soft);border:1px solid #f0e0c2;border-radius:10px;padding:12px 14px;font-size:13px;color:#7a5a1e;margin-bottom:16px}
.auth-errors h2{font-size:14px;font-weight:700;margin-bottom:6px;color:#7a5a1e}
.auth-errors ul{margin:0;padding-left:18px}
.auth-errors li{margin:2px 0}
.auth-danger{margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}
.auth-danger h3{font-size:14px;font-weight:700;color:var(--ink);margin-bottom:8px}
.auth-danger p{font-size:13px;color:var(--muted);margin-bottom:10px}
@media(max-width:760px){.auth-field-pair{grid-template-columns:1fr}}

/* ── Camera VIN Scanner (Phase 3) ─────────────────────────────────── */
.scanner-card{background:#0d1117;border-color:#1f2733}
.scanner-card .relative .bg-black,.scanner-card video{background:#000}
.scanner-controls{background:#141a22;border-top:1px solid #1f2733;padding:22px 16px}
.scanner-action-btn{margin:0}
.scanner-action-btn+.scanner-action-btn{margin-top:12px}
.scanner-limit{display:inline-flex;align-items:center;background:var(--gold-soft);color:#7a5a1e;border:1px solid #f0e0c2;border-radius:999px;padding:7px 14px;font-size:13px;font-weight:600}
.scanner-limit-unlimited{background:#e9f7ec;color:#1f7a35;border-color:#bfe6c8}
.scanner-tips h2{font-size:17px}
.scanner-tips-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:14px}
.scanner-tip{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.scanner-tip h4{font-size:14px;font-weight:700;color:var(--ink);margin-bottom:4px}
.scanner-tip p{font-size:13px;color:var(--muted);line-height:1.5}
.scanner-upsell .scanner-upsell-lead{font-size:15px;color:var(--muted);line-height:1.6;margin-bottom:22px}
.scanner-upsell-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.scanner-upsell-plan{position:relative;background:var(--bg);border:1px solid var(--line);border-radius:14px;padding:24px}
.scanner-upsell-featured{border:2px solid var(--brand);background:#fff}
.scanner-upsell-badge{position:absolute;top:-11px;right:16px;background:var(--brand);color:#fff;font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;padding:4px 10px;border-radius:999px}
.scanner-upsell-plan h3{font-size:19px;font-weight:800;color:var(--ink);margin-bottom:6px}
.scanner-upsell-price{font-size:26px;font-weight:900;color:var(--brand);margin-bottom:4px}
.scanner-upsell-featured .scanner-upsell-price{color:var(--brand-deep)}
.scanner-upsell-sub{font-size:13px;color:var(--muted);margin-bottom:16px}
.scanner-upsell-feats{list-style:none;padding:0;margin:0 0 18px}
.scanner-upsell-feats li{position:relative;padding-left:24px;font-size:14px;color:var(--ink);margin:8px 0;line-height:1.4}
.scanner-upsell-feats li::before{content:"\2713";position:absolute;left:0;top:0;color:#1f7a35;font-weight:800}
.scanner-upsell-signin{margin-top:22px;padding-top:18px;border-top:1px solid var(--line);text-align:center}
.scanner-upsell-signin p{font-size:14px;color:var(--muted);margin-bottom:12px}
.scanner-upsell-signin .btn{width:auto;display:inline-flex;padding:11px 22px}
@media(max-width:760px){.scanner-tips-grid{grid-template-columns:1fr}.scanner-upsell-grid{grid-template-columns:1fr}}

/* ══════════════════════════════════════════════════════════════════════════
   ARCHIVE LANDING REDESIGN (Phase: new mockup). All rules scoped under
   .archive-v2 so the mockup's bare class names (.hero/.decodebar/.legend/
   .stats/.make/.chip/.section/.year/.years/.recent/.promo/.secnav etc.) do
   NOT clobber the shared showroom classes from earlier phases. Source of
   truth: /Users/rbrown/Downloads/decodethis-archive-redesign.html. Layout
   chrome (:root/*/html/body/.wrap/.nav/.burger/.site-footer) and real ads
   (.ad*) intentionally NOT re-added here.
   ══════════════════════════════════════════════════════════════════════════ */

/* HERO */
.archive-v2 .crumb{font-size:13px;color:var(--muted);margin:14px 2px 0}
.archive-v2 .crumb a:hover{color:var(--brand)}.archive-v2 .crumb .sep{opacity:.5;margin:0 6px}
.archive-v2 .hero{margin-top:8px;border-radius:18px;color:#fff;padding:26px 30px;
  background:linear-gradient(125deg,var(--brand),var(--brand-deep));box-shadow:0 12px 30px rgba(122,20,9,.2)}
/* Year listing: a single model year IS one era, so the page flips the archive-v2
   hero via the documented era flag (§3.4) — modern years stay brand red, classic
   (pre-1981) years go maroon/gold. Reuses existing tokens; introduces no new colors. */
.archive-v2.era-classic .hero{background:linear-gradient(125deg,var(--maroon),var(--maroon-deep));box-shadow:0 12px 30px rgba(94,15,6,.2)}
.archive-v2.era-classic .chip .k{color:#ffd591}
.archive-v2 .hero h1{font-family:'Archivo';font-weight:900;font-size:clamp(26px,3.6vw,38px);letter-spacing:-.6px;line-height:1}
.archive-v2 .hero .sub{color:#ffd9d2;margin-top:8px;font-size:15px;max-width:64ch}
.archive-v2 .chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.archive-v2 .chip{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.26);border-radius:9px;padding:7px 12px}
.archive-v2 .chip .v{font-family:'Archivo';font-weight:800;font-size:15px}
.archive-v2 .chip .k{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:#ffcfc7;margin-top:1px}

/* DECODE BAR (with validator) */
.archive-v2 .decodebar{background:var(--paper);border:1px solid var(--line);border-radius:14px;margin-top:16px;padding:14px 18px}
.archive-v2 .decodebar .row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.archive-v2 .decodebar label{font-weight:700;font-size:15px;display:flex;align-items:center;gap:7px}
.archive-v2 .decodebar input{flex:1;min-width:200px;font-family:'JetBrains Mono';font-size:15px;letter-spacing:.1em;
  padding:11px 14px;border:1.5px solid var(--line);border-radius:10px;text-transform:uppercase}
.archive-v2 .decodebar input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(196,32,16,.12)}
.archive-v2 .decodebar button{background:var(--brand);color:#fff;border:0;border-radius:10px;padding:11px 22px;font-weight:700;font-size:15px;cursor:pointer}
.archive-v2 .decodebar button:disabled{opacity:.5;cursor:not-allowed}
.archive-v2 #vinIndicator{font-size:12px;margin-top:8px;min-height:1rem}
.archive-v2 .ok{color:#16a34a}.archive-v2 .bad{color:var(--brand)}.archive-v2 .dim{color:var(--muted)}

/* SECTION NAV (sticky under the 62px nav). Not scoped under .archive-v2 so the
   _section_nav partial can render as a direct child of the page-spanning
   #main-content — sticky needs a tall containing block to stay pinned. */
.secnav{position:sticky;top:62px;z-index:30;background:rgba(244,242,239,.93);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);margin-top:18px}
.secnav .wrap{display:flex;gap:8px;padding:11px 20px;overflow-x:auto}
.secnav a{flex:none;font-weight:700;font-size:14px;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:20px;padding:8px 15px}
.secnav a:hover{border-color:var(--brand);color:var(--brand)}

/* SECTION HEADERS */
.archive-v2 .section{scroll-margin-top:132px;padding-top:38px}
.archive-v2 .shead{margin-bottom:18px}
.archive-v2 .shead h2{font-family:'Archivo';font-weight:900;font-size:clamp(22px,3vw,30px);letter-spacing:-.4px}
.archive-v2 .shead p{color:var(--muted);margin-top:4px}

/* YEAR TOOLBAR */
.archive-v2 .toolbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:16px}
.archive-v2 .tabs{display:inline-flex;background:#fff;border:1px solid var(--line);border-radius:11px;padding:4px}
.archive-v2 .tabs button{border:0;background:transparent;font-family:'Inter';font-weight:700;font-size:14px;color:var(--muted);padding:8px 16px;border-radius:8px;cursor:pointer}
.archive-v2 .tabs button[aria-selected="true"]{background:var(--brand);color:#fff}
.archive-v2 .tabs button[aria-selected="true"][data-era="classic"]{background:var(--gold)}
.archive-v2 .yearsearch{position:relative;flex:1;min-width:150px;max-width:260px}
.archive-v2 .yearsearch input{width:100%;padding:9px 12px 9px 32px;border:1px solid var(--line);border-radius:10px;font-size:14px}
.archive-v2 .yearsearch input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(196,32,16,.12)}
.archive-v2 .yearsearch .ic{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--muted)}
.archive-v2 .legend{display:flex;gap:16px;margin-left:auto;font-size:12px;color:var(--muted);font-weight:600}
.archive-v2 .legend span{display:inline-flex;align-items:center;gap:6px}
.archive-v2 .legend .dot{width:10px;height:10px;border-radius:3px}.archive-v2 .legend .dot.c{background:var(--gold)}.archive-v2 .legend .dot.m{background:var(--brand)}
.archive-v2 .jump{display:flex;gap:8px;overflow-x:auto;margin-bottom:18px;padding-bottom:2px}
.archive-v2 .jump a{flex:none;font-weight:700;font-size:13px;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:20px;padding:6px 13px}
.archive-v2 .jump a:hover{border-color:var(--brand);color:var(--brand)}.archive-v2 .jump a.hide{display:none}

/* DECADES + YEAR CHIPS */
.archive-v2 .decade{scroll-margin-top:150px;padding-top:18px}
.archive-v2 .decade .dhead{display:flex;align-items:baseline;gap:12px;margin-bottom:12px}
.archive-v2 .decade .dhead h3{font-family:'Archivo';font-weight:900;font-size:20px}
.archive-v2 .decade .dhead .c{color:var(--muted);font-size:13px;font-weight:600}
.archive-v2 .years{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}
.archive-v2 .year{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:15px 8px;
  border:1px solid var(--line);border-top:3px solid var(--brand);border-radius:12px;background:var(--paper);
  color:var(--ink);box-shadow:var(--shadow);transition:transform .12s,box-shadow .12s,border-color .12s,background .12s}
.archive-v2 .year .y{font-family:'Archivo';font-weight:800;font-size:21px;line-height:1}
.archive-v2 .year .tag{font-family:'Inter';font-weight:700;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase}
.archive-v2 .year:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(0,0,0,.1)}
.archive-v2 .year.classic{border-top-color:var(--gold)}.archive-v2 .year.classic .tag{color:var(--gold)}
.archive-v2 .year.classic:hover{border-color:var(--gold);background:var(--gold-soft)}
.archive-v2 .year.modern{border-top-color:var(--brand)}.archive-v2 .year.modern .tag{color:var(--brand)}
.archive-v2 .year.modern:hover{border-color:var(--brand);background:#fbf3f1}
.archive-v2 .year.hide{display:none}.archive-v2 .decade.hide{display:none}
.archive-v2 .empty{display:none;text-align:center;color:var(--muted);padding:40px 0}.archive-v2 .empty.show{display:block}

/* MAKES */
.archive-v2 .makes{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}
.archive-v2 .make{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:18px;text-align:center;
  box-shadow:var(--shadow);transition:transform .12s,box-shadow .12s,border-color .12s,background .12s}
.archive-v2 .make:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(0,0,0,.08);border-color:var(--brand);background:#fbf3f1}
.archive-v2 .make .lw{height:46px;display:grid;place-items:center;margin-bottom:10px}
.archive-v2 .make .lw img{max-height:46px;max-width:90%;object-fit:contain}
.archive-v2 .make .lw .mono{display:none;font-family:'Archivo';font-weight:900;font-size:24px;color:var(--muted)}
.archive-v2 .make .nm{font-weight:700}

/* PROMO (first-party CTA, not an ad slot) */
.archive-v2 .promo{background:linear-gradient(125deg,var(--brand),var(--brand-deep));color:#fff;border-radius:18px;padding:32px;text-align:center;margin-top:38px}
.archive-v2 .promo h3{font-family:'Archivo';font-weight:900;font-size:24px}
.archive-v2 .promo p{color:#ffd9d2;margin:8px auto 0;max-width:58ch}
.archive-v2 .promo .btns{display:flex;gap:12px;justify-content:center;margin-top:18px;flex-wrap:wrap}
.archive-v2 .promo .b1{background:#fff;color:var(--brand);font-weight:700;border-radius:10px;padding:11px 20px;border:0}
.archive-v2 .promo .b2{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.6);border-radius:10px;padding:11px 20px;font-weight:700}

/* RECENT */
.archive-v2 .recent{display:grid;grid-template-columns:repeat(auto-fill,minmax(244px,1fr));gap:16px}
.archive-v2 .rcard{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:var(--shadow);
  transition:transform .12s,box-shadow .12s,border-color .12s}
.archive-v2 .rcard:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(0,0,0,.08);border-color:var(--brand)}
.archive-v2 .rcard .top{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.archive-v2 .rcard .yr{font-family:'Archivo';font-weight:800;font-size:13px;padding:3px 10px;border-radius:20px}
.archive-v2 .rcard .yr.modern{background:#fbe6e2;color:var(--brand)}.archive-v2 .rcard .yr.classic{background:var(--gold-soft);color:#8a5e12}
.archive-v2 .rcard .new{font-size:11px;font-weight:600;color:var(--muted)}
.archive-v2 .rcard h3{font-family:'Archivo';font-weight:800;font-size:17px;line-height:1.15}
.archive-v2 .rcard .trim{font-size:13px;color:var(--muted);margin-top:2px}
.archive-v2 .rcard .vin{font-family:'JetBrains Mono';font-size:12px;color:var(--muted);border-top:1px solid var(--line);margin-top:14px;padding-top:11px}
.archive-v2 .viewall{text-align:center;margin-top:22px}
.archive-v2 .viewall a{display:inline-block;background:var(--brand);color:#fff;font-weight:700;border-radius:11px;padding:13px 24px}

/* STATS BAND (dark) */
.archive-v2 .stats-band{background:linear-gradient(135deg,#171b22,#0e1116);color:#fff;border-radius:18px;padding:40px;margin-top:38px}
.archive-v2 .stats-band h2{font-family:'Archivo';font-weight:900;font-size:26px;text-align:center}
.archive-v2 .stats-band .sub{color:#9aa3af;text-align:center;margin-top:6px}
.archive-v2 .statgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;text-align:center;margin-top:26px}
.archive-v2 .statgrid .n{font-family:'Archivo';font-weight:900;font-size:clamp(24px,3vw,34px);color:#ff7a5c}
.archive-v2 .statgrid .l{color:#9aa3af;font-size:14px;margin-top:4px}

/* RESPONSIVE */
@media (max-width:900px){.archive-v2 .statgrid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:760px){
  .archive-v2 .legend{width:100%;margin-left:0;order:3}
  .archive-v2 .years{grid-template-columns:repeat(auto-fill,minmax(80px,1fr))}
  .archive-v2 .hero{padding:22px}
}
