/* ==========================================================================
   Mercedes-Benz Parts Specialist — Portfolio Site
   Light "Mercedes-Benz.com" treatment:
   white body, near-black type, Mercedes Grey, petrol-blue accent,
   dark cinematic hero / page-banner / footer.
   ========================================================================== */

/* ---------- 1. Tokens ---------------------------------------------------- */
:root{
  /* --- light surfaces (the body of the site) --- */
  --bg:            #ffffff;
  --bg-2:          #f4f5f7;   /* alternating section band */
  --bg-3:          #eaecef;   /* raised chips / hover */
  --surface:       #ffffff;
  --surface-2:     #f7f8fa;

  /* --- dark surfaces (hero, page banner, footer, video bands) --- */
  --dark:          #0e1114;
  --dark-2:        #16191d;
  --dark-3:        #1f2429;

  /* --- ink --- */
  --ink:           #0e1114;
  --ink-2:         #4b555e;
  --ink-3:         #646d75;   /* 4.8:1 on white AND on the #f4f5f7 band */
  --ink-on-dark:   #ffffff;
  --ink-on-dark-2: #c3c9ce;
  --ink-on-dark-3: #939ba2;

  /* --- Mercedes Grey (official brand grey) --- */
  --mb-grey:       #a4aaae;
  --mb-grey-soft:  #cfd3d6;

  /* --- lines --- */
  --line:          #e2e5e8;
  --line-strong:   #cbd0d5;
  --line-dark:     rgba(255,255,255,.14);
  --line-dark-2:   rgba(255,255,255,.26);

  /* --- accent: petrol blue --- */
  --accent:        #0b6ea8;
  --accent-deep:   #084b73;
  --accent-soft:   rgba(11,110,168,.09);

  --wa:            #25d366;
  --wa-ink:        #06351a;

  --font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;

  --wrap: 1240px;
  --pad: clamp(20px, 5vw, 48px);
  --r-sm: 4px;
  --r: 8px;
  --r-lg: 14px;

  --shadow-sm: 0 2px 10px rgba(14,17,20,.05);
  --shadow:    0 10px 34px -12px rgba(14,17,20,.16);
  --shadow-lg: 0 26px 60px -22px rgba(14,17,20,.26);

  --ease: cubic-bezier(.22,.61,.36,1);
}

/* ---------- 2. Reset ----------------------------------------------------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font-body);
  font-size:16px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; cursor:pointer; }
h1,h2,h3,h4{ margin:0; line-height:1.14; letter-spacing:-.022em; font-weight:700; }
p{ margin:0 0 1em; }
ul{ margin:0; padding:0; list-style:none; }
::selection{ background:var(--accent); color:#fff; }
:focus-visible{ outline:2px solid var(--accent); outline-offset:3px; border-radius:3px; }

/* ---------- 3. Layout helpers -------------------------------------------- */
.wrap{ width:100%; max-width:var(--wrap); margin-inline:auto; padding-inline:var(--pad); }
.section{ padding:clamp(64px,9vw,124px) 0; position:relative; }
.section--tight{ padding:clamp(44px,6vw,76px) 0; }
.center{ text-align:center; }
.grid{ display:grid; gap:24px; }

.section--dark{ background:var(--dark); color:var(--ink-on-dark); }
.section--dark .lead,
.section--dark .card p,
.section--dark p{ color:var(--ink-on-dark-2); }
.section--dark .eyebrow{ color:var(--ink-on-dark-3); }
.section--dark .eyebrow::before{ background:var(--mb-grey); }
.section--band{ background:var(--bg-2); }

.eyebrow{
  display:inline-flex; align-items:center; gap:10px;
  font-size:11px; font-weight:700; letter-spacing:.24em; text-transform:uppercase;
  color:var(--ink-3); margin-bottom:16px;
}
.eyebrow::before{ content:""; width:26px; height:1px; background:var(--mb-grey); }
.h-xl{ font-size:clamp(34px,6vw,66px); }
.h-lg{ font-size:clamp(28px,4.2vw,46px); }
.h-md{ font-size:clamp(21px,2.6vw,28px); }
.lead{ color:var(--ink-2); font-size:clamp(15px,1.7vw,18px); max-width:64ch; }
.sec-head{ max-width:760px; margin-bottom:clamp(36px,5vw,60px); }
.sec-head.center{ margin-inline:auto; }

/* heading rhythm — the reset zeroes heading margins, put the gap back */
.h-xl + .lead, .h-lg + .lead, .h-md + .lead,
h1 + .lead, h2 + .lead, h3 + .lead,
h2 + p, h1 + p{ margin-top:20px; }
.cta h2 + p, .vband h2 + p{ margin-top:16px; }
.card h3 + p, .step h3 + p, .tier h3 + p, .tl__item h3 + p{ margin-top:0; }

/* metallic heading accent — graphite on light, silver on dark */
.chrome{
  background:linear-gradient(180deg,#5d666e 0%,#2b3238 55%,#0e1114 100%);
  -webkit-background-clip:text; background-clip:text;
  -webkit-text-fill-color:transparent; color:transparent;
}
.hero .chrome, .phead .chrome, .section--dark .chrome, .ftr .chrome,
.vband .chrome, .cta .chrome{
  background:linear-gradient(180deg,#ffffff 0%,#d5dade 46%,var(--mb-grey) 100%);
  -webkit-background-clip:text; background-clip:text;
  -webkit-text-fill-color:transparent;
}

/* ---------- 4. Buttons --------------------------------------------------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  padding:15px 28px; border-radius:2px; border:1px solid transparent;
  font-weight:600; font-size:14.5px; letter-spacing:.015em;
  transition:transform .25s var(--ease), background .22s, border-color .22s,
             color .22s, box-shadow .25s;
  white-space:nowrap; position:relative; overflow:hidden;
}
.btn:hover{ transform:translateY(-2px); }
.btn:active{ transform:translateY(0); }
.btn svg{ width:17px; height:17px; flex:none; }

.btn--primary{ background:var(--ink); color:#fff; box-shadow:var(--shadow-sm); }
.btn--primary:hover{ background:#000; box-shadow:var(--shadow); }

.btn--wa{ background:var(--wa); color:var(--wa-ink); font-weight:700; }
.btn--wa:hover{ background:#1ec25c; box-shadow:0 12px 30px -12px rgba(37,211,102,.55); }

.btn--ghost{ background:transparent; color:var(--ink); border-color:var(--line-strong); }
.btn--ghost:hover{ background:var(--ink); color:#fff; border-color:var(--ink); }

.hero .btn--ghost, .phead .btn--ghost, .section--dark .btn--ghost,
.ftr .btn--ghost, .vband .btn--ghost, .cta .btn--ghost, .drawer .btn--ghost{
  color:#fff; border-color:var(--line-dark-2); background:rgba(255,255,255,.04);
}
.hero .btn--ghost:hover, .phead .btn--ghost:hover, .section--dark .btn--ghost:hover,
.ftr .btn--ghost:hover, .vband .btn--ghost:hover, .cta .btn--ghost:hover{
  background:#fff; color:var(--ink); border-color:#fff;
}

.btn--sm{ padding:11px 20px; font-size:13px; }
.btn--block{ width:100%; }

/* ---------- 5. Header ---------------------------------------------------- */
.hdr{
  position:fixed; inset:0 0 auto 0; z-index:100;
  transition:background .35s, border-color .35s, box-shadow .35s, color .35s;
  border-bottom:1px solid transparent;
  color:#fff;
}
.hdr.is-stuck{
  background:rgba(255,255,255,.95);
  backdrop-filter:blur(16px);
  border-bottom-color:var(--line);
  box-shadow:0 1px 0 rgba(14,17,20,.04);
  color:var(--ink);
}
.hdr__in{
  display:flex; align-items:center; justify-content:space-between;
  height:78px; gap:20px;
}
.brand{ display:flex; align-items:center; gap:12px; min-width:0; }
.brand__mark{
  width:40px; height:40px; flex:none;
  display:grid; place-items:center; border-radius:50%;
  border:1px solid var(--line-dark-2); transition:border-color .35s;
}
.hdr.is-stuck .brand__mark{ border-color:var(--line-strong); }
.brand__mark svg{ width:23px; height:23px; stroke:currentColor; }
.brand__txt{ display:flex; flex-direction:column; line-height:1.12; min-width:0; }
.brand__name{
  font-size:15px; font-weight:800; letter-spacing:.15em; text-transform:uppercase;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.brand__sub{ font-size:9.5px; letter-spacing:.22em; text-transform:uppercase; opacity:.62; }

.nav{ display:flex; align-items:center; gap:2px; position:relative; }
.nav a{
  padding:10px 16px; font-size:14.5px; font-weight:500;
  color:currentColor; opacity:.78; transition:opacity .2s; position:relative; z-index:1;
}
.nav a:hover{ opacity:1; }
.nav a.is-active{ opacity:1; font-weight:600; }
.nav a.is-active::after{
  content:""; position:absolute; left:16px; right:16px; bottom:2px; height:2px;
  background:currentColor;
}

.hdr__cta{ display:flex; align-items:center; gap:12px; }

.burger{
  display:none; width:44px; height:44px; border-radius:3px;
  background:transparent; border:1px solid var(--line-dark-2);
  place-items:center; color:currentColor; transition:border-color .35s;
}
.hdr.is-stuck .burger{ border-color:var(--line-strong); }
.burger span{
  display:block; width:18px; height:1.5px; background:currentColor;
  transition:transform .3s var(--ease), opacity .2s;
}
.burger span + span{ margin-top:5px; }
.burger.is-open span:nth-child(1){ transform:translateY(6.5px) rotate(45deg); }
.burger.is-open span:nth-child(2){ opacity:0; }
.burger.is-open span:nth-child(3){ transform:translateY(-6.5px) rotate(-45deg); }

.drawer{
  position:fixed; inset:78px 0 auto 0; z-index:99;
  background:var(--dark); color:#fff;
  padding:12px var(--pad) 30px;
  transform:translateY(-14px); opacity:0; pointer-events:none;
  visibility:hidden; isolation:isolate;
  transition:transform .3s var(--ease), opacity .3s var(--ease), visibility 0s linear .3s;
  display:none;
}
.drawer.is-open{
  transform:none; opacity:1; pointer-events:auto; visibility:visible;
  transition:transform .3s var(--ease), opacity .3s var(--ease), visibility 0s;
}
.drawer a{
  display:block; padding:16px 2px; font-size:17px; font-weight:600;
  border-bottom:1px solid var(--line-dark);
}
.drawer .btn{ margin-top:22px; box-shadow:none; }

/* ---------- 6. Hero ------------------------------------------------------ */
.hero{
  position:relative; overflow:hidden;
  background:var(--dark); color:#fff;
  padding:clamp(130px,15vw,172px) 0 clamp(60px,7vw,92px);
}
.hero__in{ position:relative; z-index:3; }

.hero__grid-2{
  display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);
  gap:clamp(32px,5vw,72px); align-items:center;
}
.hero__copy > *{ max-width:40ch; }
.hero__copy .hero__lead{ max-width:54ch; }
/* these must never be squeezed by the copy measure or the buttons stack */
.hero__copy .hero__trust,
.hero__copy .hero__badge,
.hero__copy .hero__actions{ max-width:none; }

.hero__bg{ position:absolute; inset:0; z-index:0; }
.hero__bg video, .hero__bg img{
  width:100%; height:100%; object-fit:cover; object-position:center 40%;
  opacity:.30; filter:saturate(.85) contrast(1.05);
}
.hero__scrim{
  position:absolute; inset:0; z-index:1;
  background:
    linear-gradient(90deg, var(--dark) 4%, rgba(14,17,20,.86) 46%, rgba(14,17,20,.55) 100%),
    linear-gradient(0deg, var(--dark) 1%, transparent 42%);
}
.hero__grid{
  position:absolute; inset:0; z-index:2; opacity:.55;
  background-image:
    linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px);
  background-size:70px 70px;
  mask-image:radial-gradient(circle at 40% 40%, #000 6%, transparent 74%);
}

.hero__media{
  position:relative; z-index:3;
  aspect-ratio:3/4;
  border-radius:var(--r-lg); overflow:hidden;
  background:var(--dark-2); border:1px solid var(--line-dark);
  box-shadow:0 40px 90px -34px rgba(0,0,0,.9);
}
.hero__media video, .hero__media img{ width:100%; height:100%; object-fit:cover; }
.hero__media::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(0deg, rgba(14,17,20,.5), transparent 46%);
}

.hero__badge{
  display:inline-flex; align-items:center; gap:10px;
  padding:8px 16px; border-radius:100px;
  background:rgba(255,255,255,.07); border:1px solid var(--line-dark-2);
  font-size:12.5px; color:var(--ink-on-dark-2); margin-bottom:26px;
  backdrop-filter:blur(8px);
}
.hero__badge b{ color:#fff; font-weight:700; }
.dot{
  width:7px; height:7px; border-radius:50%; background:var(--wa); flex:none;
  box-shadow:0 0 0 0 rgba(37,211,102,.6); animation:pulse 2.4s infinite;
}
@keyframes pulse{
  70%{ box-shadow:0 0 0 9px rgba(37,211,102,0); }
  100%{ box-shadow:0 0 0 0 rgba(37,211,102,0); }
}

.hero h1{
  font-size:clamp(38px,5.4vw,68px);
  line-height:1.04; letter-spacing:-.03em; margin-bottom:22px; font-weight:700;
}
.hero h1 .chrome{ display:block; }
.hero__lead{ font-size:clamp(15.5px,1.6vw,18px); color:var(--ink-on-dark-2); margin-bottom:34px; }
.hero__actions{ display:flex; flex-wrap:wrap; gap:14px; margin-bottom:44px; }
.hero .btn--primary{ background:#fff; color:var(--ink); }
.hero .btn--primary:hover{ background:var(--mb-grey-soft); }

.hero__trust{
  /* fixed 4-up grid — a flex row wrapped the 4th stat onto its own line
     once the hero became a two-column layout */
  display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:18px;
  padding-top:28px; border-top:1px solid var(--line-dark);
}
.hero__trust div span{
  display:block; font-size:clamp(22px,2.8vw,32px); font-weight:700;
  letter-spacing:-.03em; line-height:1; color:#fff;
}
.hero__trust div small{
  display:block; margin-top:8px; font-size:10.5px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--ink-on-dark-3);
}
.scroll-hint{ display:none; }

/* ---------- 7. Marquee --------------------------------------------------- */
.marquee{
  border-bottom:1px solid var(--line);
  background:var(--bg); padding:26px 0; overflow:hidden;
  mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);
}
.marquee__track{
  display:flex; gap:clamp(40px,6vw,84px); width:max-content;
  animation:slide 38s linear infinite;
}
.marquee:hover .marquee__track{ animation-play-state:paused; }
@keyframes slide{ to{ transform:translateX(-50%); } }
.marquee__item{
  font-size:clamp(13px,1.5vw,17px); font-weight:700; letter-spacing:.18em;
  text-transform:uppercase; color:var(--ink-3); white-space:nowrap;
  transition:color .25s;
}
.marquee__item:hover{ color:var(--ink); }

/* ---------- 8. Cards ----------------------------------------------------- */
.card{
  position:relative; padding:30px; border-radius:var(--r);
  background:var(--surface); border:1px solid var(--line);
  transition:transform .35s var(--ease), border-color .3s, box-shadow .35s;
}
.card:hover{ transform:translateY(-4px); border-color:var(--line-strong); box-shadow:var(--shadow); }
.section--dark .card, .vband .card{
  background:var(--dark-2); border-color:var(--line-dark); color:#fff;
}
.section--dark .card:hover{ border-color:var(--line-dark-2); }

.card__ico{
  width:50px; height:50px; border-radius:var(--r-sm); display:grid; place-items:center;
  background:var(--bg-2); border:1px solid var(--line);
  margin-bottom:20px; transition:background .3s, border-color .3s;
}
.card:hover .card__ico{ background:var(--accent-soft); border-color:rgba(11,110,168,.28); }
.card__ico svg{ width:23px; height:23px; stroke:var(--ink); transition:stroke .3s; }
.card:hover .card__ico svg{ stroke:var(--accent); }
.section--dark .card__ico{ background:var(--dark-3); border-color:var(--line-dark); }
.section--dark .card__ico svg{ stroke:#fff; }
.card h3{ font-size:18px; margin-bottom:9px; }
.card p{ color:var(--ink-2); font-size:14.5px; margin:0; }

.cat{
  display:flex; flex-direction:column; border-radius:var(--r); overflow:hidden;
  background:var(--surface); border:1px solid var(--line);
  transition:transform .35s var(--ease), border-color .3s, box-shadow .35s;
}
.cat:hover{ transform:translateY(-5px); border-color:var(--line-strong); box-shadow:var(--shadow); }
.cat__media{
  position:relative; aspect-ratio:1/1; overflow:hidden; background:var(--bg-2);
  display:grid; place-items:center;
}
.cat__media img, .cat__media video{
  width:100%; height:100%; object-fit:cover; transition:transform .8s var(--ease);
}
.cat:hover .cat__media img{ transform:scale(1.05); }
.cat__media .ph{ width:52px; height:52px; opacity:.3; stroke:var(--mb-grey); }
.cat__body{ padding:24px 26px 28px; display:flex; flex-direction:column; flex:1; }
.cat__body h3{ font-size:18px; margin-bottom:8px; }
.cat__body p{ color:var(--ink-2); font-size:14.5px; flex:1; }
.cat__list{ display:flex; flex-wrap:wrap; gap:6px; margin:16px 0 22px; }
.cat__list li{
  font-size:11.5px; padding:5px 11px; border-radius:100px;
  background:var(--bg-2); border:1px solid var(--line); color:var(--ink-2);
}
.section--dark .cat__list li{
  background:var(--dark-3); border-color:var(--line-dark); color:var(--ink-on-dark-2);
}
.cat .btn{ align-self:flex-start; }

/* ---------- 9. Steps ----------------------------------------------------- */
.steps{ counter-reset:s; display:grid; gap:0; }
.step{ position:relative; padding:26px 0 26px 76px; border-top:1px solid var(--line); }
.step:last-child{ border-bottom:1px solid var(--line); }
.section--dark .step{ border-color:var(--line-dark); }
.step::before{
  counter-increment:s; content:counter(s,decimal-leading-zero);
  position:absolute; left:0; top:26px;
  font-size:26px; font-weight:700; letter-spacing:-.02em; line-height:1;
  color:var(--ink-3);
}
.step h3{ font-size:17px; margin-bottom:6px; }
.step p{ color:var(--ink-2); font-size:14.5px; margin:0; }

/* ---------- 10. Stats ---------------------------------------------------- */
.stats{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  border-top:1px solid var(--line); border-bottom:1px solid var(--line);
}
.stat{ padding:38px 26px; text-align:center; border-right:1px solid var(--line); }
.stat:last-child{ border-right:0; }
.stat b{
  display:block; font-size:clamp(32px,4.4vw,48px); font-weight:700;
  letter-spacing:-.035em; line-height:1; color:var(--ink);
  font-variant-numeric:tabular-nums;
}
.stat small{
  display:block; margin-top:12px; font-size:11px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--ink-3);
}
.section--dark .stats, .section--dark .stat{ border-color:var(--line-dark); }
.section--dark .stat b{ color:#fff; }

/* ---------- 11. Split (media + text) ------------------------------------- */
.split{
  display:grid; grid-template-columns:1fr 1fr; gap:clamp(32px,5vw,76px); align-items:center;
}
.split > *{ min-width:0; }
.split--rev .split__media{ order:2; }
.split__media{
  position:relative; border-radius:var(--r); overflow:hidden;
  aspect-ratio:4/5; background:var(--bg-2); border:1px solid var(--line);
  display:grid; place-items:center;
}
.split__media img, .split__media video{ width:100%; height:100%; object-fit:cover; }
.split__media .ph{ width:60px; height:60px; opacity:.3; stroke:var(--mb-grey); }
.split__media--square{ aspect-ratio:1/1; }
.split__media--tall{ aspect-ratio:9/13; }
.split__tag{
  position:absolute; left:18px; bottom:18px; z-index:2;
  padding:9px 16px; border-radius:100px; font-size:12px;
  background:rgba(14,17,20,.76); border:1px solid rgba(255,255,255,.18);
  backdrop-filter:blur(10px); color:#fff;
}
.split__media--has-media::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(0deg, rgba(14,17,20,.45), transparent 42%);
}

/* ---------- 12. Timeline ------------------------------------------------- */
.tl{ position:relative; padding-left:30px; }
.tl::before{
  content:""; position:absolute; left:5px; top:10px; bottom:10px; width:1px;
  background:var(--line-strong);
}
.section--dark .tl::before{ background:var(--line-dark); }
.tl__item{ position:relative; padding-bottom:36px; }
.tl__item:last-child{ padding-bottom:0; }
.tl__item::before{
  content:""; position:absolute; left:-30px; top:8px; width:11px; height:11px;
  border-radius:50%; background:var(--ink); box-shadow:0 0 0 4px var(--bg);
}
.section--dark .tl__item::before{ background:#fff; box-shadow:0 0 0 4px var(--dark); }
.tl__yr{
  font-size:11px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--accent); font-weight:700; margin-bottom:6px;
}
.tl__item h3{ font-size:17.5px; margin-bottom:6px; }
.tl__item p{ color:var(--ink-2); font-size:14.5px; margin:0; }

/* ---------- 13. Chips / quality tiers ------------------------------------ */
.chips{ display:flex; flex-wrap:wrap; gap:10px; }
.chip{
  padding:11px 18px; border-radius:2px; font-size:13.5px; font-weight:600;
  background:var(--bg); border:1px solid var(--line); color:var(--ink);
  transition:.25s var(--ease);
}
.chip:hover{ border-color:var(--ink); transform:translateY(-2px); box-shadow:var(--shadow-sm); }
.chip small{
  display:block; font-size:10.5px; color:var(--ink-3);
  letter-spacing:.06em; font-weight:500; margin-top:2px;
}
.section--dark .chip{ background:var(--dark-2); border-color:var(--line-dark); color:#fff; }
.section--dark .chip:hover{ border-color:#fff; }
.section--dark .chip small{ color:var(--ink-on-dark-3); }

.tiers{ display:grid; gap:0; }
.tier{
  display:grid; grid-template-columns:auto 1fr auto; gap:22px; align-items:center;
  padding:24px 4px; border-top:1px solid var(--line); transition:background .28s;
}
.tier:last-child{ border-bottom:1px solid var(--line); }
.tier:hover{ background:var(--bg-2); }
.section--dark .tier{ border-color:var(--line-dark); }
.section--dark .tier:hover{ background:var(--dark-2); }
.tier__rank{
  width:42px; height:42px; border-radius:50%; display:grid; place-items:center;
  font-weight:700; font-size:14px;
  background:var(--bg-2); border:1px solid var(--line-strong); color:var(--ink);
}
.section--dark .tier__rank{ background:var(--dark-3); border-color:var(--line-dark); color:#fff; }
.tier h3{ font-size:16px; margin-bottom:4px; }
.tier p{ color:var(--ink-2); font-size:14px; margin:0; }
.tier__badge{
  padding:6px 13px; border-radius:2px; font-size:10.5px; font-weight:700;
  letter-spacing:.1em; text-transform:uppercase; white-space:nowrap;
}
.badge--best{ background:var(--ink); color:#fff; }
.badge--good{ background:var(--accent-soft); color:var(--accent-deep); border:1px solid rgba(11,110,168,.3); }
.badge--value{ background:var(--bg-3); color:var(--ink-2); }
.section--dark .badge--best{ background:#fff; color:var(--ink); }
.section--dark .badge--value{ background:var(--dark-3); color:var(--ink-on-dark-2); }

/* ---------- 14. Forms ---------------------------------------------------- */
.form{ display:grid; gap:18px; }
.field{ display:grid; gap:8px; }
.field label{
  font-size:11.5px; letter-spacing:.12em; text-transform:uppercase;
  color:var(--ink-3); font-weight:700;
}
.field input, .field select, .field textarea{
  width:100%; padding:15px 16px; border-radius:2px;
  background:var(--bg); border:1px solid var(--line-strong);
  color:var(--ink); font-family:inherit; font-size:15px;
  transition:border-color .2s, box-shadow .2s;
}
.field textarea{ resize:vertical; min-height:112px; }
.field input:focus, .field select:focus, .field textarea:focus{
  outline:none; border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft);
}
.field input::placeholder, .field textarea::placeholder{ color:var(--ink-3); }
.field select{
  appearance:none; cursor:pointer; padding-right:44px;
  background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%237c868f' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 16px center;
}
.form__row{ display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.form__note{ font-size:12.5px; color:var(--ink-3); margin:0; }

/* ---------- 15. Contact tiles -------------------------------------------- */
.ctiles{ display:grid; gap:0; }
.ctile{
  display:flex; gap:18px; align-items:flex-start; padding:22px 4px;
  border-top:1px solid var(--line); transition:background .28s;
}
.ctile:last-child{ border-bottom:1px solid var(--line); }
a.ctile:hover{ background:var(--bg-2); }
.ctile__ico{
  width:40px; height:40px; flex:none; border-radius:50%; display:grid; place-items:center;
  background:var(--bg-2); border:1px solid var(--line);
}
.ctile__ico svg{ width:18px; height:18px; stroke:var(--ink); }
.ctile b{
  display:block; font-size:11px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--ink-3); font-weight:700; margin-bottom:4px;
}
.ctile span{ font-size:15.5px; color:var(--ink); word-break:break-word; }

/* ---------- 16. CTA band -------------------------------------------------- */
.cta{
  position:relative; overflow:hidden; border-radius:var(--r);
  padding:clamp(44px,6vw,76px) clamp(28px,5vw,64px);
  background:var(--dark); color:#fff; text-align:center;
}
.cta::before{
  content:""; position:absolute; inset:0; opacity:.5;
  background-image:
    linear-gradient(rgba(255,255,255,.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.03) 1px, transparent 1px);
  background-size:52px 52px;
  mask-image:radial-gradient(circle at 50% 50%, #000, transparent 74%);
}
.cta > *{ position:relative; z-index:1; }
.cta h2{ margin-bottom:14px; }
.cta p{ color:var(--ink-on-dark-2); max-width:58ch; margin:0 auto 32px; }
.cta .eyebrow{ color:var(--ink-on-dark-3); }
.cta__actions{ display:flex; flex-wrap:wrap; gap:14px; justify-content:center; }
.cta .btn--primary{ background:#fff; color:var(--ink); }
.cta .btn--primary:hover{ background:var(--mb-grey-soft); }

/* ---------- 17. Video band ------------------------------------------------ */
.vband{
  position:relative; overflow:hidden;
  height:clamp(320px,46vw,520px);
  background:var(--dark); color:#fff;
  display:grid; place-items:center;
}
.vband video, .vband img{
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; object-position:center 45%; opacity:.55;
}
.vband::after{
  content:""; position:absolute; inset:0;
  background:
    linear-gradient(0deg, rgba(14,17,20,.84), rgba(14,17,20,.3) 55%, rgba(14,17,20,.72)),
    linear-gradient(90deg, rgba(14,17,20,.55), transparent 58%);
}
.vband__in{
  position:relative; z-index:2; text-align:center;
  max-width:780px; padding-inline:var(--pad);
}
.vband h2{ font-size:clamp(26px,3.8vw,44px); margin-bottom:14px; }
.vband p{ color:var(--ink-on-dark-2); margin:0 auto; max-width:54ch; }
.vband .eyebrow{ color:var(--ink-on-dark-3); }

/* ---------- 18. Footer ---------------------------------------------------- */
.ftr{ background:var(--dark); color:#fff; padding:clamp(52px,6vw,80px) 0 34px; }
.ftr__top{
  display:grid; grid-template-columns:1.7fr 1fr 1fr 1.3fr; gap:42px;
  padding-bottom:46px; border-bottom:1px solid var(--line-dark);
}
.ftr h4{
  font-size:11px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--ink-on-dark-3); margin-bottom:18px; font-weight:700;
}
.ftr li{ margin-bottom:11px; }
.ftr li a{ font-size:14.5px; color:var(--ink-on-dark-2); transition:color .2s; }
.ftr li a:hover{ color:#fff; }
.ftr__about p{ font-size:14.5px; color:var(--ink-on-dark-2); max-width:40ch; }
.ftr__bot{
  display:flex; flex-wrap:wrap; gap:14px; justify-content:space-between;
  padding-top:26px; font-size:12.5px; color:var(--ink-on-dark-3);
}
.socials{ display:flex; gap:10px; }
.socials a{
  width:38px; height:38px; border-radius:50%; display:grid; place-items:center;
  border:1px solid var(--line-dark); transition:.25s;
}
.socials a:hover{ background:#fff; border-color:#fff; }
.socials svg{ width:16px; height:16px; stroke:var(--ink-on-dark-2); }
.socials a:hover svg{ stroke:var(--ink); }

/* ---------- 19. Floating WhatsApp ---------------------------------------- */
.fab{
  position:fixed; right:22px; bottom:22px; z-index:90;
  display:flex; align-items:center; gap:11px;
  padding:14px 22px 14px 17px; border-radius:100px;
  background:var(--wa); color:var(--wa-ink); font-weight:700; font-size:14.5px;
  box-shadow:0 14px 34px -10px rgba(37,211,102,.5);
  transform:translateY(90px); opacity:0;
  transition:transform .45s var(--ease), opacity .35s, box-shadow .3s;
}
.fab.is-in{ transform:none; opacity:1; }
.fab:hover{ box-shadow:0 20px 46px -12px rgba(37,211,102,.65); transform:translateY(-3px); }
.fab svg{ width:21px; height:21px; flex:none; }

/* ---------- 20. Page banner (inner pages) -------------------------------- */
.phead{
  position:relative; overflow:hidden;
  background:var(--dark); color:#fff;
  padding:clamp(140px,16vw,200px) 0 clamp(56px,7vw,88px);
}
.phead::before{
  content:""; position:absolute; inset:0; opacity:.5;
  background-image:
    linear-gradient(rgba(255,255,255,.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.03) 1px, transparent 1px);
  background-size:64px 64px;
  mask-image:radial-gradient(circle at 46% 34%, #000, transparent 76%);
}
.phead__in{ position:relative; z-index:1; max-width:800px; }
.phead .lead{ color:var(--ink-on-dark-2); }
.phead .eyebrow{ color:var(--ink-on-dark-3); }
.crumb{ font-size:12.5px; color:var(--ink-on-dark-3); margin-bottom:18px; }
.crumb a:hover{ color:#fff; }
.crumb span{ color:var(--mb-grey); }

/* ---------- 21. Motion --------------------------------------------------- */
[data-reveal]{
  opacity:0; transform:translateY(24px);
  transition:opacity .8s var(--ease), transform .8s var(--ease);
  transition-delay:var(--d,0ms);
}
[data-reveal].is-in{ opacity:1; transform:none; }

.progress{
  position:fixed; top:0; left:0; z-index:200; height:2px; width:0;
  background:linear-gradient(90deg,var(--accent-deep),var(--accent) 55%,var(--mb-grey));
  transition:width .12s linear; pointer-events:none;
}

.hero__badge, .hero h1, .hero__lead, .hero__actions, .hero__trust, .hero__media{
  opacity:0; transform:translateY(18px);
  animation:heroIn .62s var(--ease) forwards;
}
.hero__badge  { animation-delay:.02s; }
.hero h1      { animation-delay:.06s; }
.hero__lead   { animation-delay:.14s; }
.hero__actions{ animation-delay:.22s; }
.hero__trust  { animation-delay:.30s; }
.hero__media  { animation-delay:.10s; }
@keyframes heroIn{ to{ opacity:1; transform:none; } }

.ln{ display:block; overflow:hidden; }
.ln > i{
  display:block; font-style:normal; transform:translateY(110%);
  transition:transform .95s var(--ease); transition-delay:var(--ld,0ms);
}
.is-in .ln > i, .ln.is-in > i{ transform:none; }

.divider{
  height:1px; border:0; margin:0; background:var(--line);
  transform:scaleX(0); transform-origin:center;
  transition:transform 1.3s var(--ease);
}
.divider.is-in{ transform:scaleX(1); }

.btn::before{
  content:""; position:absolute; top:0; left:-140%; width:60%; height:100%;
  background:linear-gradient(100deg, transparent, rgba(255,255,255,.3), transparent);
  transform:skewX(-18deg); transition:left .75s var(--ease); pointer-events:none;
}
.btn:hover::before{ left:150%; }
.btn--ghost::before{ background:linear-gradient(100deg, transparent, rgba(0,0,0,.06), transparent); }

.chips .chip{
  opacity:0; transform:translateY(12px);
  transition:opacity .5s var(--ease), transform .5s var(--ease),
             border-color .25s, box-shadow .25s;
}
.chips.is-in .chip{ opacity:1; transform:none; }

.cat__media .ph, .split__media .ph{ animation:floaty 7s ease-in-out infinite; }
@keyframes floaty{
  0%,100%{ transform:translateY(0); opacity:.3; }
  50%    { transform:translateY(-8px); opacity:.42; }
}

/* The page used to start at opacity:0 with a fade-in. On a throttled phone
   that meant nothing was painted for ~0.5s and it dominated First Contentful
   Paint. The hero choreography below carries the arrival instead. */

/* video pause/play affordance */
.vtoggle{
  position:absolute; right:14px; bottom:14px; z-index:4;
  width:40px; height:40px; border-radius:50%; display:grid; place-items:center;
  background:rgba(14,17,20,.62); border:1px solid rgba(255,255,255,.24);
  color:#fff; backdrop-filter:blur(8px);
  transition:background .25s, transform .25s var(--ease);
}
.vtoggle:hover{ background:rgba(14,17,20,.9); transform:scale(1.06); }
.vtoggle svg{ width:15px; height:15px; fill:currentColor; }

/* ---------- 22. Reduced motion ------------------------------------------- */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important; animation-iteration-count:1 !important;
    transition-duration:.01ms !important; scroll-behavior:auto !important;
  }
  [data-reveal]{ opacity:1; transform:none; }
  .hero__badge, .hero h1, .hero__lead, .hero__actions, .hero__trust, .hero__media{
    opacity:1; transform:none; animation:none;
  }
  .ln > i{ transform:none; }
  .divider{ transform:scaleX(1); }
  .chips .chip{ opacity:1; transform:none; }
  .btn::before{ display:none; }
  .progress{ display:none; }
}

/* ---------- 23. Utility grids -------------------------------------------- */
.g-2{ grid-template-columns:repeat(2,1fr); }
.g-3{ grid-template-columns:repeat(3,1fr); }
.g-4{ grid-template-columns:repeat(4,1fr); }
.g-auto-260{ grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); }
.g-auto-300{ grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); }

/* ---------- 24. Responsive ----------------------------------------------- */
@media (max-width: 1080px){
  .nav{ display:none; }
  .burger{ display:grid; }
  .drawer{ display:block; }
  .hdr__cta .btn--wa{ display:none; }
  .ftr__top{ grid-template-columns:1fr 1fr; gap:34px; }
  .g-4{ grid-template-columns:repeat(2,1fr); }
  .hero__grid-2{ grid-template-columns:1fr; gap:44px; }
  .hero__copy > *{ max-width:62ch; }
  .hero__media{ aspect-ratio:16/10; max-height:440px; }
}
@media (max-width: 860px){
  .split{ grid-template-columns:1fr; }
  .split--rev .split__media{ order:0; }
  .split__media, .split__media--square, .split__media--tall{ aspect-ratio:4/3; }
  .g-3{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width: 620px){
  .btn{ white-space:normal; text-align:center; }
  .cat__list li{ overflow-wrap:anywhere; }
  .g-2,.g-3,.g-4{ grid-template-columns:1fr; }
  .form__row{ grid-template-columns:1fr; }
  .ftr__top{ grid-template-columns:1fr; }
  .tier{ grid-template-columns:auto 1fr; }
  .tier__badge{ grid-column:2; justify-self:start; margin-top:8px; }
  .hero__trust{ display:grid; grid-template-columns:1fr 1fr; gap:22px 24px; }
  .stat{ border-right:0; border-bottom:1px solid var(--line); }
  .stat:last-child{ border-bottom:0; }
  .fab{ padding:13px 17px; font-size:0; gap:0; right:16px; bottom:16px; }
  .fab svg{ width:23px; height:23px; }
  .step{ padding-left:0; padding-top:54px; }
  .step::before{ top:22px; }
  .hero__media{ aspect-ratio:9/12; max-height:none; }
  .split__media, .split__media--square, .split__media--tall{ aspect-ratio:1/1; }
}

/* ==========================================================================
   25. MOBILE HARDENING
   Findings from a device audit across iPhone SE / 14 / Pro Max, Galaxy S20,
   Pixel 7 and a 320px Android. Everything here is a fix for a real defect,
   not a nicety.
   ========================================================================== */

/* ---- 25.1 iOS auto-zoom on form focus ----------------------------------
   Safari zooms the whole page when a focused input has a font-size under
   16px. That threw the enquiry form off-screen mid-typing on every iPhone.
   16px is the minimum, not a preference. --------------------------------- */
@media (max-width: 1080px){
  .field input, .field select, .field textarea{
    font-size:16px;
    padding:16px;              /* keeps the control ≥ 48px tall */
  }
}

/* ---- 25.2 Tap targets --------------------------------------------------
   Footer links were 16px tall — roughly a third of the 44px minimum, and
   the footer is where the phone number lives. ---------------------------- */
@media (max-width: 1080px){
  .ftr li{ margin-bottom:2px; }
  .ftr li a{
    display:block; padding:13px 0; min-height:44px;
    display:flex; align-items:center;
  }
  .ftr__bot{ gap:10px; }

  .crumb a{ display:inline-block; padding:6px 0; }

  .brand{ min-height:44px; }

  .vtoggle{ width:44px; height:44px; }

  .socials a{ width:44px; height:44px; }

  /* stop two adjacent chips reading as one target */
  .chips{ gap:12px; }
  .chip{ min-height:44px; display:flex; flex-direction:column; justify-content:center; }
}

/* ---- 25.3 Legibility ---------------------------------------------------
   9.5–11px type is fine on a 27" monitor and unreadable at arm's length on
   a phone. Bumped, with tracking eased so it stays tidy. ----------------- */
@media (max-width: 820px){
  .brand__sub{ font-size:11px; letter-spacing:.16em; }
  .eyebrow{ font-size:12px; letter-spacing:.18em; }
  .hero__trust div small{ font-size:11.5px; letter-spacing:.11em; }
  .stat small{ font-size:12px; letter-spacing:.11em; }
  .ctile b, .field label{ font-size:12px; letter-spacing:.1em; }
  .tier__badge{ font-size:11.5px; }
  .cat__list li{ font-size:12.5px; }
  .form__note{ font-size:13.5px; }
  .ftr__bot{ font-size:13px; }
  .split__tag{ font-size:13px; padding:10px 16px; }
}

/* ---- 25.4 Landscape phones --------------------------------------------
   The hero ran to 1242px on a 390px-tall landscape screen — three swipes
   before any content. Compress it when height is the scarce axis. -------- */
@media (max-height: 520px) and (orientation: landscape){
  .hero{ padding:96px 0 44px; }
  .hero__grid-2{ grid-template-columns:1.2fr .8fr; gap:28px; align-items:center; }
  .hero__media{ aspect-ratio:4/3; max-height:260px; }
  .hero h1{ font-size:clamp(26px,4.4vw,38px); margin-bottom:14px; }
  .hero__lead{ font-size:14.5px; margin-bottom:20px; }
  .hero__actions{ margin-bottom:22px; }
  .hero__trust{ padding-top:16px; gap:12px; }
  .hero__trust div span{ font-size:20px; }
  .phead{ padding:104px 0 40px; }
  .drawer{ max-height:calc(100vh - 78px); overflow-y:auto; }
  .vband{ height:auto; padding:64px 0; min-height:0; }
}

/* ---- 25.5 The drawer must never trap the user --------------------------
   If the menu ever grows past the screen it has to scroll, and it must not
   sit under the notch / home indicator. ---------------------------------- */
.drawer{
  max-height:calc(100dvh - 78px);
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  padding-bottom:max(30px, env(safe-area-inset-bottom));
}

/* ---- 25.6 Respect the notch and home indicator -------------------------- */
@supports (padding: max(0px)){
  .wrap{
    padding-left:max(var(--pad), env(safe-area-inset-left));
    padding-right:max(var(--pad), env(safe-area-inset-right));
  }
  .fab{
    right:max(16px, env(safe-area-inset-right));
    bottom:max(16px, env(safe-area-inset-bottom));
  }
}

/* ---- 25.7 Touch devices: no hover-only behaviour ------------------------
   Tilt / magnetic effects are pointer-driven and are skipped in JS on
   touch, but the CSS hover states must not stick after a tap either. ----- */
@media (hover: none){
  .card:hover, .cat:hover, .chip:hover, .btn:hover{ transform:none; }
  .btn:hover::before{ left:-140%; }
  .cat:hover .cat__media img{ transform:none; }
  .btn:active{ transform:scale(.985); }
  .card:active, .cat:active{ transform:scale(.995); }
}

/* ---- 25.8 Smaller phones: tighten without breaking --------------------- */
@media (max-width: 400px){
  .hdr__in{ height:66px; }
  .drawer{ inset-block-start:66px; max-height:calc(100dvh - 66px); }
  .brand__name{ font-size:13.5px; letter-spacing:.12em; }
  .brand__mark{ width:36px; height:36px; }
  .brand__mark svg{ width:20px; height:20px; }
  .hero{ padding-top:104px; }
  .cat__body{ padding:20px 20px 24px; }
  .card{ padding:24px 22px; }
  .cta{ padding:36px 22px; }
}

/* ---- 25.9 Last pass from the device audit ------------------------------- */
@media (max-width: 1080px){
  /* breadcrumb link was a 33px target */
  .crumb{ line-height:1.9; }
  .crumb a{ padding:12px 4px 12px 0; min-height:44px; display:inline-flex; align-items:center; }
}
@media (max-width: 820px){
  .brand__sub{ font-size:11.5px; }
  .chip small{ font-size:11.5px; }
}

/* ---- 25.10 Full-width primary actions on phones ------------------------
   Ragged button widths read as accidental on a narrow screen, and a
   thumb-width target converts better than a text-width one. -------------- */
@media (max-width: 560px){
  .hero__actions, .cta__actions{ display:grid; gap:12px; }
  .hero__actions .btn, .cta__actions .btn{ width:100%; }
  .cat .btn{ align-self:stretch; width:100%; }
}

/* ==========================================================================
   26. ACCESSIBILITY & SEMANTICS
   ========================================================================== */

/* Skip link: keyboard users had to tab through the whole nav on every page
   before reaching content. Hidden until focused. */
.skip-link{
  position:absolute; left:-9999px; top:0; z-index:300;
  background:var(--ink); color:#fff;
  padding:14px 22px; border-radius:0 0 4px 0;
  font-size:14.5px; font-weight:600;
}
.skip-link:focus{ left:0; }

/* Visually hidden, still read by screen readers. Used for section headings
   that the design carries visually but never states in markup. */
.sr-only{
  position:absolute !important; width:1px; height:1px;
  padding:0; margin:-1px; overflow:hidden;
  clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap; border:0;
}

/* footer column headings moved h4 -> h3 to keep the outline in order */
.ftr__h{
  font-size:11px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--ink-on-dark-3); margin-bottom:18px; font-weight:700;
}
@media (max-width: 820px){ .ftr__h{ font-size:12px; } }

/* <main> is a plain wrapper — it must not introduce spacing of its own */
main{ display:block; }

/* ---- 27. Contact tile footnote -----------------------------------------
   The UAE dialling code sitting next to an Indian address looks like an
   error unless it is explained. This is that explanation. ---------------- */
.ctile__note{
  display:block; margin-top:6px;
  font-size:13px; line-height:1.5; color:var(--ink-3);
}
@media (max-width: 820px){ .ctile__note{ font-size:13.5px; } }

/* ==========================================================================
   28. BRAND (merc.evo) + PERSONAL SIGNATURE
   The business name carries permanence; the named person carries the trust.
   Both are on every page, doing different jobs.
   ========================================================================== */

/* the wordmark is set lowercase by design — the global uppercase transform
   would render it "MERC.EVO" and lose that */
.brand__name{
  text-transform:none;
  letter-spacing:-.005em;
  font-size:19px;
  font-weight:700;
}
.brand__dot{ color:var(--accent); }
.hdr:not(.is-stuck) .brand__dot,
.ftr .brand__dot{ color:var(--mb-grey); }
@media (max-width: 400px){ .brand__name{ font-size:17.5px; } }

/* signature block — the human behind the business name */
.sig{
  display:flex; align-items:center; gap:14px;
  margin:30px 0 28px; padding-top:24px;
  border-top:1px solid var(--line);
}
.section--dark .sig, .hero .sig{ border-top-color:var(--line-dark); }
.sig__mark{
  width:36px; height:2px; flex:none; border-radius:2px;
  background:linear-gradient(90deg, var(--ink), var(--mb-grey));
}
.section--dark .sig__mark{ background:linear-gradient(90deg,#fff,var(--mb-grey)); }
.sig__txt{ display:flex; flex-direction:column; line-height:1.3; }
.sig__txt b{ font-size:16.5px; font-weight:700; letter-spacing:-.01em; }
.sig__txt small{
  font-size:12.5px; letter-spacing:.1em; text-transform:uppercase;
  color:var(--ink-3); margin-top:3px;
}
.section--dark .sig__txt small{ color:var(--ink-on-dark-3); }
@media (max-width: 820px){ .sig__txt small{ font-size:12px; } }
