/* Dykes Motors — Collins, MS
   Palette is taken from the lot's own artifacts: the black HDF mark, the red price
   badge already burned into their inventory photography, and the grey of a concrete
   apron. Bebas Neue is the face they already ship; it is used here for the one thing
   that matters most on a used-car lot, the number.                                   */

:root{
  --ink:#0B0B0C;          /* the HDF mark */
  --bone:#F6F4F1;         /* warm paper, not cream */
  --paper:#FFFFFF;
  --steel:#6C7176;        /* concrete, used for data */
  --signal:#C8102E;       /* their price-badge red */
  --line:#E3DFD9;
  --gut:20px;
  --tap:48px;             /* every control clears this */
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--bone); color:var(--ink);
  font-family:"Barlow",system-ui,-apple-system,sans-serif;
  font-size:17px; line-height:1.5; -webkit-font-smoothing:antialiased;
}
img{max-width:100%; display:block}
a{color:inherit}
:focus-visible{outline:3px solid var(--signal); outline-offset:3px}

.skip{position:absolute;left:-9999px}
.skip:focus{left:var(--gut);top:8px;z-index:99;background:var(--ink);color:#fff;padding:12px 16px}

/* ---------- masthead ---------- */
.masthead{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  background:var(--ink); color:#fff; padding:12px var(--gut);
  position:sticky; top:0; z-index:20;
}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;min-height:var(--tap)}
.brand__mark{
  font-family:"Bebas Neue",sans-serif; font-size:20px; letter-spacing:.06em;
  background:#fff; color:var(--ink); padding:3px 8px 1px;
}
.brand__name{font-family:"Bebas Neue",sans-serif;font-size:25px;letter-spacing:.03em;line-height:1}
.masthead__call{
  display:flex; flex-direction:column; align-items:flex-end; justify-content:center;
  text-decoration:none; min-height:var(--tap); padding-left:8px;
}
.masthead__callLabel{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#9AA0A6}
.masthead__callNum{font-family:"Bebas Neue",sans-serif;font-size:22px;letter-spacing:.03em;color:#fff}

/* ---------- lede ---------- */
.lede{padding:32px var(--gut) 20px}
.lede__eyebrow{
  margin:0 0 10px; font-family:"IBM Plex Mono",monospace; font-size:11px;
  letter-spacing:.2em; text-transform:uppercase; color:var(--signal);
}
.lede__h1{
  margin:0; font-family:"Bebas Neue",sans-serif; font-weight:400;
  font-size:clamp(34px,9.4vw,58px); line-height:.96; letter-spacing:.01em; text-wrap:balance;
}
.lede__count{margin:14px 0 0;color:var(--steel);font-size:15px}
.lede__count strong{color:var(--ink)}

/* ---------- filters ---------- */
.filters{
  display:flex; gap:8px; padding:4px var(--gut) 0;
  overflow-x:auto; scrollbar-width:none; -webkit-overflow-scrolling:touch;
}
.filters::-webkit-scrollbar{display:none}
.filters__chip{
  flex:0 0 auto; min-height:var(--tap); padding:0 18px;
  background:transparent; border:1.5px solid var(--line); border-radius:999px;
  font:600 15px/1 "Barlow",sans-serif; color:var(--ink); cursor:pointer;
  transition:background .15s ease,border-color .15s ease,color .15s ease;
}
.filters__chip.is-on{background:var(--ink);border-color:var(--ink);color:#fff}
.filters__status{margin:12px var(--gut) 0;font-size:14px;color:var(--steel);min-height:1.2em}

/* ---------- the lot ---------- */
.lot{list-style:none;margin:16px 0 0;padding:0 var(--gut) 40px;display:grid;gap:16px}
.tag{
  display:block; background:var(--paper); text-decoration:none;
  border:1px solid var(--line); border-radius:2px; overflow:hidden;
  transition:transform .18s ease, box-shadow .18s ease;
}
.tag:active{transform:translateY(1px)}
@media (hover:hover){ .tag:hover{box-shadow:0 10px 28px rgba(11,11,12,.13)} }

/* The letterboxing fix: photos are square-ish, the frame is 4:3, so cover it. */
.tag__shot{aspect-ratio:4/3;background:#EDEAE6}
.tag__shot img{width:100%;height:100%;object-fit:cover}

/* Signature: the windshield stock plate. */
.tag__plate{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:10px 16px 0;
  font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.13em;
  color:var(--steel);
}
.tag__body{color:var(--signal)}
.tag__price{
  margin:2px 0 0; padding:0 16px;
  font-family:"Bebas Neue",sans-serif; font-size:46px; line-height:1;
  letter-spacing:.01em; font-variant-numeric:tabular-nums;
}
.tag__name{margin:6px 0 0;padding:0 16px;font-size:16px;font-weight:600;line-height:1.3}
.tag__meta{
  margin:8px 0 0; padding:0 16px; display:flex; flex-wrap:wrap; gap:6px 14px;
  font-size:14px; color:var(--steel);
}
.tag__go{
  display:flex; align-items:center; min-height:var(--tap); margin-top:12px;
  padding:0 16px; border-top:1px solid var(--line);
  font-weight:600; font-size:15px; color:var(--signal);
}
.tag__arrow{margin-left:.45em}

/* ---------- vehicle detail ---------- */
.veh{padding:0 0 48px}
.veh__back{
  display:inline-flex;align-items:center;min-height:var(--tap);
  padding:0 var(--gut);font-size:15px;font-weight:600;text-decoration:none;color:var(--steel);
}
.veh__backArrow{margin-right:.5em}
.veh__shot{aspect-ratio:4/3;background:#EDEAE6}
.veh__shot img{width:100%;height:100%;object-fit:cover}
.veh__plate{
  display:flex;justify-content:space-between;gap:10px;padding:14px var(--gut) 0;
  font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.13em;color:var(--steel);
}
.veh__body{color:var(--signal)}
.veh__name{margin:8px 0 0;padding:0 var(--gut);font-size:22px;font-weight:700;line-height:1.25}
.veh__price{
  margin:6px 0 0;padding:0;
  font-family:"Bebas Neue",sans-serif;font-size:64px;line-height:1;font-variant-numeric:tabular-nums;
}
.veh__facts{
  display:grid;grid-template-columns:1fr;gap:1px;   /* house rule: never two columns on mobile */
  margin:22px 0 0;padding:0;background:var(--line);border-block:1px solid var(--line);
}
.veh__facts div{background:var(--bone);padding:14px var(--gut)}
.veh__facts dt{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--steel)}
.veh__facts dd{margin:4px 0 0;font-family:"Bebas Neue",sans-serif;font-size:26px;line-height:1;font-variant-numeric:tabular-nums}
.veh__act{display:grid;gap:10px;padding:22px var(--gut) 0}
.veh__copy{padding:24px var(--gut) 0;color:#2B2E31}
.veh__gal{list-style:none;display:grid;grid-template-columns:1fr;gap:12px;margin:24px 0 0;padding:0 var(--gut)}
.veh__gal img{aspect-ratio:4/3;object-fit:cover;width:100%;border:1px solid var(--line)}

/* ---------- buttons + enquiry ---------- */
.btn{
  display:flex;align-items:center;justify-content:center;min-height:56px;
  padding:0 22px;border:1.5px solid var(--ink);border-radius:2px;
  font:700 16px/1 "Barlow",sans-serif;text-decoration:none;cursor:pointer;
}
.btn--call{background:var(--signal);border-color:var(--signal);color:#fff}
.btn--ghost{background:transparent;color:var(--ink)}
.ask{margin:36px var(--gut) 0;padding:24px 20px;background:var(--ink);color:#fff;border-radius:2px}
.ask__h{margin:0;font-family:"Bebas Neue",sans-serif;font-size:32px;line-height:1}
.ask__sub{margin:6px 0 18px;color:#9AA0A6;font-size:14px}
.ask__note{margin:0 0 16px;padding:12px 14px;border-radius:2px;font-size:15px}
.ask__note--ok{background:#0E3B1E;color:#CFF3DC;border:1px solid #1C6B36}
.ask__note--bad{background:#3B0E15;color:#F6D2D8;border:1px solid var(--signal)}
.ask__form{display:grid;gap:14px}
.ask__form label{display:grid;gap:6px;font-size:13px;color:#C8CCD0}
.ask__form input,.ask__form textarea{
  min-height:var(--tap);padding:12px 14px;border:1.5px solid #34383C;border-radius:2px;
  background:#141517;color:#fff;font:400 16px/1.4 "Barlow",sans-serif; /* 16px stops iOS zoom */
}
.ask__form textarea{min-height:96px;resize:vertical}

/* ---------- footer ---------- */
.foot{background:var(--ink);color:#9AA0A6;margin-top:40px;padding:28px var(--gut) 40px}
.foot__addr{margin:0;color:#fff;font-size:16px}
.foot__call{
  display:inline-flex;align-items:center;min-height:var(--tap);
  font-family:"Bebas Neue",sans-serif;font-size:30px;color:#fff;text-decoration:none;letter-spacing:.02em;
}
.foot__note{margin:10px 0 0;font-size:12px;line-height:1.5}

/* ---------- wider screens ---------- */
@media (min-width:700px){
  :root{--gut:32px}
  .lot{grid-template-columns:repeat(2,1fr);gap:20px}
  .veh__facts{grid-template-columns:repeat(3,1fr)}
  .veh__gal{grid-template-columns:repeat(2,1fr);gap:10px}
  .veh__shot,.tag__shot{aspect-ratio:3/2}
  .veh__act{grid-template-columns:1fr 1fr;max-width:640px}
}
@media (min-width:1080px){
  .lot{grid-template-columns:repeat(3,1fr)}
  .lede__h1{font-size:64px}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
}

/* ============================================================
   THE PHOTO ROLL
   A lot that shoots 34 photos of one truck is saying it has nothing to hide, so
   the page opens with the whole roll rather than one hero shot. Native scroll-snap
   does the work: it is smooth on a phone, needs no library, and still scrolls if
   JavaScript never arrives.
   ============================================================ */
.roll{position:relative;background:#101113}
.roll__track{
  display:flex; overflow-x:auto; scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch; scrollbar-width:none;
}
.roll__track::-webkit-scrollbar{display:none}
.roll__frame{flex:0 0 100%;margin:0;scroll-snap-align:center;aspect-ratio:4/3}
.roll__frame img{width:100%;height:100%;object-fit:cover;display:block}
.roll__count{
  position:absolute; right:12px; bottom:14px; margin:0;
  padding:5px 11px; border-radius:999px;
  background:rgba(11,11,12,.74); color:#fff;
  font-family:"IBM Plex Mono",monospace; font-size:12px; letter-spacing:.06em;
  backdrop-filter:blur(6px);
}
.roll__rail{position:absolute;left:0;right:0;bottom:0;height:3px;background:rgba(255,255,255,.18)}
.roll__bar{
  display:block;height:100%;background:var(--signal);
  transform-origin:left center;transform:scaleX(0);
  transition:transform .25s cubic-bezier(.22,.61,.36,1);
}

/* ============================================================
   ARRIVAL
   Content lifts in as it is reached. One short movement, one easing, used
   everywhere — a page that animates in six different ways reads as a demo.
   ============================================================ */
[data-reveal]{opacity:0;transform:translateY(14px)}
.is-ready [data-reveal]{transition:opacity .5s ease,transform .5s cubic-bezier(.22,.61,.36,1)}
[data-reveal].is-in{opacity:1;transform:none}

.lot__item{opacity:0;transform:translateY(18px)}
.is-ready .lot__item{
  animation:dm-land .55s cubic-bezier(.22,.61,.36,1) forwards;
  animation-delay:calc(var(--i,0) * 70ms);
}
@keyframes dm-land{to{opacity:1;transform:none}}

/* the photo settles a beat before the price lands on it */
.tag__shot img{transform:scale(1.035);transition:transform .7s cubic-bezier(.22,.61,.36,1)}
.is-ready .tag:hover .tag__shot img{transform:scale(1)}
@media (hover:hover){ .tag__shot img{transform:none} .tag:hover .tag__shot img{transform:scale(1.04)} }

/* ============================================================
   THE PRICE RAIL
   Once the real price scrolls away the number follows you, because on a used lot
   the price is the whole conversation.
   ============================================================ */
.rail{
  position:fixed; left:0; right:0; bottom:0; z-index:30;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:10px 16px calc(10px + env(safe-area-inset-bottom));
  background:rgba(11,11,12,.93); backdrop-filter:blur(10px);
  transform:translateY(100%); transition:transform .32s cubic-bezier(.22,.61,.36,1);
}
.rail.is-up{transform:none}
.rail__price{
  font-family:"Bebas Neue",sans-serif; font-size:32px; line-height:1; color:#fff;
  font-variant-numeric:tabular-nums;
}
.rail__cta{
  display:flex;align-items:center;min-height:44px;padding:0 20px;border-radius:2px;
  background:var(--signal);color:#fff;font-weight:700;text-decoration:none;font-size:15px;
}

/* price drop + vin + availability */
.veh__money{padding:0 var(--gut)}
.veh__was{margin:2px 0 0;font-size:15px;color:var(--steel)}
.veh__cut{
  margin-left:8px;padding:2px 8px;border-radius:2px;
  background:var(--signal);color:#fff;font-weight:700;font-size:13px;
}
.veh__here{display:inline-flex;align-items:center;gap:6px;color:#127A3E}
.veh__dot{width:7px;height:7px;border-radius:50%;background:#17A356;display:inline-block}
.veh__vin{
  margin:20px 0 0;padding:0 var(--gut);
  font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.1em;color:var(--steel);
}
.veh__act .btn{width:100%}

@media (prefers-reduced-motion:reduce){
  [data-reveal],.lot__item{opacity:1!important;transform:none!important;animation:none!important}
  .rail{transition:none}
}

/* ---------- find ---------- */
.find{padding:20px var(--gut) 0}
.find__label{
  display:block;margin-bottom:7px;
  font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--steel);
}
.find__input{
  width:100%;min-height:var(--tap);padding:12px 14px;
  border:1.5px solid var(--line);border-radius:2px;background:var(--paper);
  font:400 16px/1.3 "Barlow",sans-serif;color:var(--ink);   /* 16px stops iOS zoom */
}
.find__input:focus{border-color:var(--ink);outline:none;box-shadow:0 0 0 3px rgba(200,16,46,.16)}

/* photo count + price cut sit on the photo, where they are read as facts about it */
.tag__shot{position:relative}
.tag__shots{
  position:absolute;left:10px;bottom:10px;
  padding:4px 9px;border-radius:999px;background:rgba(11,11,12,.72);color:#fff;
  font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.06em;
  backdrop-filter:blur(6px);
}
.tag__cut{
  position:absolute;right:10px;top:10px;
  padding:4px 9px;border-radius:2px;background:var(--signal);color:#fff;
  font-weight:700;font-size:13px;
}
.lot__none{margin:0 var(--gut) 40px;color:var(--steel);font-size:16px}
.lot__clear{
  min-height:var(--tap);padding:0 14px;margin-left:4px;
  background:none;border:1.5px solid var(--line);border-radius:2px;
  font:600 15px/1 "Barlow",sans-serif;color:var(--ink);cursor:pointer;
}

/* ---------- section band ---------- */
.band{
  display:flex;align-items:baseline;gap:10px;
  margin:34px var(--gut) 0;padding-bottom:8px;border-bottom:2px solid var(--ink);
  font-family:"Bebas Neue",sans-serif;font-size:30px;line-height:1;letter-spacing:.02em;
}
.band__n{
  font-family:"IBM Plex Mono",monospace;font-size:12px;letter-spacing:.1em;color:var(--steel);
}

/* A listing with no photography of its own. Better to say so than to run an
   ad-framed export on the website. */
.tag__soon,.veh__soon{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  height:100%;margin:0;padding:24px;text-align:center;background:#EDEAE6;
  font-family:"Bebas Neue",sans-serif;font-size:22px;letter-spacing:.02em;color:var(--steel);
}
.tag__soon span,.veh__soon span{
  font-family:"Barlow",sans-serif;font-size:13px;font-weight:500;letter-spacing:0;color:#8A9096;
}
.veh__soon{height:auto;margin:0 var(--gut);border:1px solid var(--line)}

/* Availability tone. "Call to confirm" is not a failure state — it is the site
   refusing to promise something nobody has checked. */
.veh__here--ok{color:#127A3E}
.veh__here--ok .veh__dot{background:#17A356}
.veh__here--warn{color:#B26A00}
.veh__here--warn .veh__dot{background:#E08A00}
.veh__here--gone{color:var(--signal)}
.veh__here--gone .veh__dot{background:var(--signal)}

/* ---------- article ---------- */
.post{padding:0 0 40px}
.post__head{padding:8px var(--gut) 0; max-width:44rem}
.post__kicker{
  margin:0 0 12px; font-family:"IBM Plex Mono",monospace; font-size:11px;
  letter-spacing:.16em; text-transform:uppercase; color:var(--signal);
}
.post__title{
  margin:0; font-family:"Bebas Neue",sans-serif; font-weight:400;
  font-size:clamp(32px,8.5vw,52px); line-height:.98; letter-spacing:.01em; text-wrap:balance;
}
.post__standfirst{margin:16px 0 0; font-size:18px; line-height:1.5; color:var(--steel)}
.post__body{padding:26px var(--gut) 0; max-width:38rem}
.post__body p{margin:0 0 1.15em; font-size:17px; line-height:1.68}
.post__body h2{
  margin:1.9em 0 .55em; font-family:"Bebas Neue",sans-serif; font-weight:400;
  font-size:30px; line-height:1.05; letter-spacing:.01em;
}
.post__body h3{margin:1.6em 0 .5em; font-size:19px; font-weight:700; line-height:1.3}
.post__body ul{margin:0 0 1.2em; padding-left:1.15em}
.post__body li{margin:.4em 0; font-size:17px; line-height:1.6}
.post__body strong{font-weight:700}
.post__body a{color:var(--signal); text-underline-offset:3px}
.post__cta{
  margin:36px var(--gut) 0; padding:24px 20px; max-width:38rem;
  background:var(--ink); color:#fff; border-radius:2px;
}
.post__ctaH{margin:0; font-family:"Bebas Neue",sans-serif; font-size:30px; line-height:1}
.post__ctaP{margin:6px 0 18px; color:#9AA0A6; font-size:15px}
.post__ctaRow{display:grid; gap:10px}
@media (min-width:700px){ .post__ctaRow{grid-template-columns:1fr 1fr} }

/* ---------- article index ---------- */
.reads{list-style:none; margin:20px 0 0; padding:0 var(--gut) 40px; display:grid; gap:12px}
.read{
  display:block; background:var(--paper); border:1px solid var(--line); border-radius:2px;
  padding:16px; text-decoration:none;
  transition:box-shadow .18s ease, transform .18s ease;
}
.read:active{transform:translateY(1px)}
@media (hover:hover){ .read:hover{box-shadow:0 8px 22px rgba(11,11,12,.10)} }
.reads__item.is-pillar .read{border-color:var(--ink)}
.read__meta{
  margin:0 0 8px; display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.1em;
  text-transform:uppercase; color:var(--steel);
}
.read__pin{background:var(--ink); color:#fff; padding:2px 7px; border-radius:2px; letter-spacing:.09em}
.read__title{margin:0; font-size:19px; line-height:1.28; font-weight:700; text-wrap:balance}
.read__sub{margin:8px 0 0; font-size:15px; line-height:1.5; color:var(--steel)}
.read__go{
  display:inline-flex; align-items:center; min-height:44px; margin-top:6px;
  font-weight:600; font-size:15px; color:var(--signal);
}
@media (min-width:700px){ .reads{grid-template-columns:1fr 1fr} }

/* ---------- city ---------- */
.city__hook{margin:16px 0 0; font-size:17px; line-height:1.55; color:var(--steel); max-width:40rem}
.city__copy{padding:8px var(--gut) 0; max-width:38rem}
.city__h2{
  margin:1.8em 0 .5em; font-family:"Bebas Neue",sans-serif; font-weight:400;
  font-size:27px; line-height:1.05; letter-spacing:.01em;
}
.city__copy p{margin:0; font-size:16.5px; line-height:1.65; color:#2B2E31}
.city__switch{display:grid; gap:10px; padding:26px var(--gut) 0; max-width:38rem}
.towns{list-style:none; margin:20px 0 0; padding:0 var(--gut) 40px; display:grid; gap:8px}
.town{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  min-height:56px; padding:0 16px; background:var(--paper);
  border:1px solid var(--line); border-radius:2px; text-decoration:none;
}
.town__name{font-weight:650; font-size:17px}
.town__dist{font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.08em; color:var(--steel)}
@media (min-width:700px){ .towns{grid-template-columns:1fr 1fr} .city__switch{grid-template-columns:1fr 1fr} }
