/* ============================================================
   MyRide Auto — design system v3 (myride.css)
   Campaign Guidelines v2, September 9, 2026.

   v2 was built for the concierge positioning: editorial, quiet,
   price de-emphasised. That site is archived in /_v2/.
   v3 is a working dealership site. The price is the loudest
   thing on every screen. Archivo / Newsreader / Plex Mono and
   the white-black-red palette carry over unchanged.
   ============================================================ */

:root{
  --white:#FFFFFF;
  --black:#0A0A0A;
  --red:#E4002B;
  --line:#E6E6E6;
  --slot:#F1F1F1;
  --paper:#FAFAFA;
  --muted:rgba(10,10,10,.62);
  --ok:#0B7A3B;
  --display:"Archivo",Helvetica,Arial,sans-serif;
  --voice:"Newsreader",Georgia,"Times New Roman",serif;
  --mono:"IBM Plex Mono",Menlo,Consolas,monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html{background:var(--white);color:var(--black);font-family:var(--display);overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth;scroll-padding-top:96px}
body{min-height:100vh;display:flex;flex-direction:column}
main{flex:1}
a{color:inherit;text-decoration:none}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--red);outline-offset:4px}
img{max-width:100%;display:block}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
.wrap{max-width:1200px;margin:0 auto;padding:0 48px;width:100%}
.narrow{max-width:760px}
.mono{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:400}
.muted{color:var(--muted)}
.red{color:var(--red)}
.voice{font-family:var(--voice);font-weight:400;line-height:1.25}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
[hidden]{display:none!important}

/* Photo slots. Drop a real file at the src path and it replaces the
   placeholder. Rule 4: the unit in the photo is the unit on the lot —
   no stock images, ever. A labelled empty slot is honest; a stock
   photo is not. */
.ph{position:relative;display:block;background:var(--slot);overflow:hidden}
.ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;z-index:1}
.ph::after{content:attr(data-label);position:absolute;left:12px;right:12px;bottom:10px;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);line-height:1.5}
.ph.hasimg::after{content:none}
.r32{aspect-ratio:3/2}.r11{aspect-ratio:1/1}.r169{aspect-ratio:16/9}

/* Nav */
.nav{display:flex;align-items:center;justify-content:space-between;height:84px;position:sticky;top:0;z-index:40;gap:24px}
.nav::before{content:"";position:absolute;top:0;bottom:0;left:50%;transform:translateX(-50%);width:100vw;background:var(--white);z-index:-1}
.nav::after{content:"";position:absolute;left:50%;transform:translateX(-50%);bottom:0;width:100vw;height:1px;background:var(--line);pointer-events:none}
.brand{display:flex;align-items:center;gap:8px;font-weight:900;font-stretch:112%;font-size:18px;letter-spacing:-.02em;text-transform:uppercase;flex:none}
.pulse{width:34px;height:17px;fill:none;stroke:var(--red);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.links{display:flex;align-items:center;gap:28px;margin-left:auto}
.links a{font-size:12px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.links a:hover,.links a[aria-current]{color:var(--black)}
.navtel{font-family:var(--mono);font-size:13px;letter-spacing:.06em;font-weight:500;color:var(--black);white-space:nowrap}
.navtel:hover{color:var(--red)}
.menu{display:none;font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;padding:8px 0}

/* Hero */
.hero{padding:72px 0 64px}
.hero.tight{padding:56px 0 44px}
.eyebrow{margin-bottom:28px}
.statement{font-weight:900;font-size:clamp(48px,8vw,104px);line-height:.92;letter-spacing:-.045em;text-transform:uppercase}
.statement.sm{font-size:clamp(36px,5.4vw,68px)}
.hero .voice{font-size:clamp(19px,1.9vw,25px);max-width:48ch;margin-top:26px}
.doors{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:36px}

/* The two doors, side by side. Track A left, Track B right. */
.twodoor{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--black);margin-top:48px}
.twodoor>a{padding:40px;border-right:1px solid var(--black);transition:background .15s ease}
.twodoor>a:last-child{border-right:0}
.twodoor>a:hover{background:var(--paper)}
.twodoor h2{font-weight:900;font-size:clamp(26px,3vw,38px);letter-spacing:-.035em;line-height:1;text-transform:uppercase;margin:14px 0 12px}
.twodoor p{font-size:15.5px;line-height:1.6;color:var(--muted);max-width:34ch}
.twodoor .go{display:inline-block;margin-top:22px;font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--red);border-bottom:1px solid var(--red);padding-bottom:4px}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:18px 28px;background:var(--red);color:var(--white);font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;transition:background .15s ease;border:1px solid var(--red)}
.btn:hover{background:var(--black);border-color:var(--black)}
.btn.dark{background:var(--black);border-color:var(--black)}
.btn.dark:hover{background:var(--red);border-color:var(--red)}
.btn.ghost{background:transparent;color:var(--black);border-color:var(--black)}
.btn.ghost:hover{background:var(--black);color:var(--white)}
.btn:disabled{opacity:.4;cursor:not-allowed}
.btn.full{width:100%}
.btn.big{padding:22px 34px;font-size:13px}
.link{font-size:12px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;border-bottom:1px solid var(--black);padding-bottom:4px;white-space:nowrap}
.link:hover{color:var(--red);border-color:var(--red)}

/* Sections */
.sec{padding:80px 0;border-top:1px solid var(--line)}
.sec.first{border-top:0}
.sec.tight{padding:44px 0 56px}
.sec.paper{background:var(--paper)}
.sec.ink{background:var(--black);color:var(--white);border-top:0}
.sec.ink .muted{color:rgba(255,255,255,.62)}
.sec.ink .btn.ghost{color:var(--white);border-color:var(--white)}
.sec.ink .btn.ghost:hover{background:var(--white);color:var(--black)}
/* Two defined columns rather than space-between, which left a wide dead gap
   in the middle whenever the heading was short. */
.sec-head{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:48px;align-items:end;margin-bottom:40px}
.h{font-weight:800;font-size:clamp(28px,3.4vw,42px);letter-spacing:-.035em;line-height:1.02;max-width:20ch}
.h.lg{font-size:clamp(34px,4.4vw,54px)}
.h3{font-weight:600;font-size:18px;letter-spacing:-.02em}
.sec-head .voice{font-size:19px;max-width:36ch;color:var(--muted)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:36px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:36px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:28px}
.side{display:grid;grid-template-columns:1fr 380px;gap:64px;align-items:start}
.side .sticky{position:sticky;top:108px}

/* ---- Vehicle card. The price is the point. ---- */
.veh{display:block;border-top:1px solid var(--black);padding-top:16px}
.veh .ph{margin-bottom:18px}
.veh .yr{font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--muted)}
/* Two lines reserved so the prices line up across a row even when one
   vehicle's name wraps. The price is the thing being compared. */
.veh h3{font-weight:700;font-size:19px;letter-spacing:-.025em;line-height:1.15;margin-top:8px;min-height:2.3em}
.price{font-weight:900;font-size:clamp(34px,4vw,46px);letter-spacing:-.045em;line-height:1;margin-top:14px;font-variant-numeric:tabular-nums}
.price.sm{font-size:30px}
.price sup{font-size:.42em;font-weight:600;letter-spacing:0;vertical-align:super;margin-left:2px}
.spec{font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;color:var(--muted);margin-top:12px;line-height:1.7}
.veh .cta{display:inline-block;margin-top:16px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--red);border-bottom:1px solid var(--red);padding-bottom:3px}
.dupe{display:inline-block;margin-top:10px;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--line);padding:5px 8px;line-height:1;color:var(--muted)}

/* Inventory rows (the /vehicles table on wide screens) */
.inv{width:100%;border-collapse:collapse;font-size:15px}
.inv th,.inv td{text-align:left;padding:18px 16px 18px 0;border-bottom:1px solid var(--line);vertical-align:middle}
.inv th{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;font-weight:400;color:var(--muted)}
.inv td.p{font-weight:900;font-size:24px;letter-spacing:-.04em;font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right;padding-right:0}
.inv th.p{text-align:right;padding-right:0}
.inv td.n{font-family:var(--mono);font-size:12.5px;color:var(--muted);white-space:nowrap}
.inv tr:hover td{background:var(--paper)}
.inv b{font-weight:700;letter-spacing:-.02em}
.tscroll{overflow-x:auto}

/* Lenders / logos-as-text */
.lenders{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}
.lenders span{font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;border:1px solid var(--line);padding:9px 13px;line-height:1;color:var(--muted)}

/* Numbered steps */
.steps{list-style:none;counter-reset:s;display:grid;grid-template-columns:repeat(3,1fr);gap:36px}
.steps.four{grid-template-columns:repeat(4,1fr)}
.steps li{border-top:1px solid var(--black);padding-top:18px;counter-increment:s}
.steps li::before{content:counter(s,decimal-leading-zero);font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--red)}
.steps h3{font-weight:600;font-size:18px;letter-spacing:-.02em;margin:12px 0 8px}
.steps p{font-size:14.5px;line-height:1.6;color:var(--muted)}

/* Delivered filmstrip — real customers, photographed with consent */
/* The strip is already a direct child of a full-width section, so it does not
   need the 100vw centring trick — and 100vw counts the scrollbar, which made
   the page 8px wider than the viewport and knocked everything off-centre. */
.strip{position:relative;width:100%;overflow:hidden}
.track{display:flex;gap:12px;width:max-content;animation:roll 110s linear infinite}
.track figure{flex:none;width:340px}
.track figure>img{aspect-ratio:3/2;background:var(--slot);width:100%;object-fit:cover}
.track figcaption{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:8px;white-space:nowrap}
.strip:hover .track{animation-play-state:paused}
@keyframes roll{to{transform:translateX(calc(-50% - 6px))}}
@media (prefers-reduced-motion:reduce){.track{animation:none}.strip{overflow-x:auto}}

/* Forms — name + phone, and nothing else. Rule 6. */
.form{max-width:520px}
.field{display:block;margin-top:22px}
.field>span,.field>label{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:10px}
.field input,.field select,.field textarea{width:100%;font:inherit;font-size:16px;padding:16px 0;border:0;border-bottom:1px solid var(--black);background:transparent;border-radius:0;color:var(--black)}
.field textarea{min-height:110px;resize:vertical}
.field input::placeholder{color:var(--muted)}
.field .help{font-size:13px;line-height:1.55;color:var(--muted);margin-top:10px}
.choices{display:flex;flex-wrap:wrap;gap:10px}
.choices label{position:relative}
.choices input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
.choices span{display:inline-block;padding:15px 20px;border:1px solid var(--black);font-size:14px;line-height:1;cursor:pointer;transition:background .12s,color .12s}
.choices input:checked+span{background:var(--black);color:var(--white)}
.choices input:focus-visible+span{outline:2px solid var(--red);outline-offset:3px}
/* Qualifying questions — tap, never type. Several groups have to stack
   without the form starting to feel like paperwork. */
.qs .field{margin-top:18px}
.qs .field>span{margin-bottom:8px}
.qs .choices{gap:7px}
.qs .choices span{padding:12px 15px;font-size:13.5px}
.consent{display:flex;gap:12px;align-items:flex-start;margin-top:26px;font-size:13.5px;line-height:1.6;color:var(--muted);max-width:52ch}
.consent input{width:18px;height:18px;flex:none;margin-top:2px;accent-color:var(--red)}
.err{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--red);margin-top:12px}
.ok{color:var(--ok)}
.honey{position:absolute;left:-9999px}
.form-foot{display:flex;align-items:center;gap:20px;margin-top:30px;flex-wrap:wrap}
.done{border:1px solid var(--ok);padding:28px;margin-top:24px}
.done h3{font-weight:800;font-size:22px;letter-spacing:-.03em}
.done p{font-size:15px;line-height:1.6;color:var(--muted);margin-top:10px}

/* Callout + FAQ */
.callout{border-left:2px solid var(--black);padding:6px 0 6px 20px;font-size:15.5px;line-height:1.6;max-width:62ch}
.callout.red{border-color:var(--red)}
details{border-top:1px solid var(--line)}
details:last-of-type{border-bottom:1px solid var(--line)}
summary{cursor:pointer;list-style:none;padding:20px 0;font-weight:600;font-size:17px;letter-spacing:-.02em;display:flex;justify-content:space-between;gap:20px}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";font-weight:300;font-size:22px;line-height:1}
details[open] summary::after{content:"–"}
details .body{padding:0 0 24px;font-size:15px;line-height:1.65;color:var(--muted);max-width:62ch}

/* Prose */
.prose{font-size:16.5px;line-height:1.7;max-width:64ch}
.prose p{margin:0 0 20px}
.prose h2{font-weight:800;font-size:25px;letter-spacing:-.03em;margin:40px 0 14px}
.prose ul{margin:0 0 20px 22px}
.prose li{margin:6px 0}

/* Contact block */
.info{display:grid;grid-template-columns:130px 1fr;row-gap:14px;column-gap:20px;font-size:16px;line-height:1.55;margin-top:24px}
.info dt{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding-top:4px}
.info a:hover{color:var(--red)}
.big-tel{font-weight:900;font-size:clamp(32px,4.6vw,54px);letter-spacing:-.045em;line-height:1;display:inline-block}
.big-tel:hover{color:var(--red)}

/* Sticky mobile call bar */
.door-bar{display:none}

/* Footer */
.foot{border-top:1px solid var(--black);padding:52px 0 36px;margin-top:auto}
.foot-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:36px}
.foot p{font-size:14.5px;line-height:1.6;color:var(--muted);max-width:34ch;margin-top:14px}
.foot h4{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;font-weight:400;color:var(--muted);margin-bottom:14px}
.foot ul{list-style:none}
.foot li{font-size:14px;line-height:2}
.foot li a:hover{color:var(--red)}
.foot-bot{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:44px;padding-top:20px;position:relative}
.foot-bot::before{content:"";position:absolute;left:50%;transform:translateX(-50%);top:0;width:100vw;height:1px;background:var(--line)}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto}}

@media (max-width:900px){
  .wrap{padding:0 24px}
  .nav{height:64px}
  .menu{display:block}
  .links{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:flex-start;gap:16px;padding:20px 24px 24px;background:var(--white);border-bottom:1px solid var(--line);margin-left:0}
  .nav.open .links{display:flex}
  .navtel{display:none}
  .hero{padding:44px 0 44px}
  .hero.tight{padding:36px 0 32px}
  .twodoor{grid-template-columns:1fr;margin-top:36px}
  .twodoor>a{border-right:0;border-bottom:1px solid var(--black);padding:32px 24px}
  .twodoor>a:last-child{border-bottom:0}
  .sec{padding:56px 0}
  .sec-head{grid-template-columns:1fr;align-items:start;gap:14px}
  .grid2,.grid3,.grid4,.steps,.steps.four,.side,.foot-grid{grid-template-columns:1fr;gap:32px}
  .grid4{gap:36px}
  .side .sticky{position:static}
  .track figure{width:240px}
  .info{grid-template-columns:1fr;row-gap:4px}
  .info dd{margin-bottom:12px}
  .door-bar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--white);border-top:1px solid var(--line);padding:12px 20px;gap:12px}
  .door-bar .btn{flex:1;padding:15px 12px;font-size:11.5px}
  body.has-door main{padding-bottom:86px}
}
