/* ===========================================================
   NEOSELF — Shared Design System
   Ink #0B0B0C · Paper #F2F1ED · Anodized Steel #445E78 (proof only, <=10%)
   Display: Schibsted Grotesk 500 · Body: Hanken Grotesk · Data: IBM Plex Mono
   =========================================================== */

:root{
  --ink:#0B0B0C;
  --paper:#F2F1ED;
  --steel:#445E78;
  --graphite-800:#16161A;
  --graphite-600:#5C5C62;
  --steel-400:#9A9AA0;
  --mist-200:#D6D4CB;
  --card-50:#FBFAF7;

  --display: 'Schibsted Grotesk', sans-serif;
  --body: 'Hanken Grotesk', sans-serif;
  --mono: 'IBM Plex Mono', monospace;

  --container: 1180px;
  --gutter: clamp(20px, 4vw, 64px);
}

*{ margin:0; padding:0; box-sizing:border-box; }

html{ scroll-behavior:smooth; }

body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--body);
  font-weight:400;
  font-size:16px;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
}

img{ max-width:100%; display:block; }

a{ color:inherit; text-decoration:none; }

/* ---------- Type scale ---------- */
.display{
  font-family:var(--display);
  font-weight:500;
  letter-spacing:-0.01em;
  line-height:1.05;
}
.display-xl{ font-size:clamp(48px, 9vw, 116px); }
.display-l{ font-size:clamp(38px, 6vw, 68px); }
.title{
  font-family:var(--display);
  font-weight:500;
  font-size:clamp(28px, 3.4vw, 42px);
  line-height:1.15;
  letter-spacing:-0.01em;
}
.lead{
  font-size:clamp(17px, 1.4vw, 22px);
  line-height:1.6;
  color:var(--graphite-600);
  font-weight:400;
}
.eyebrow{
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:0.18em;
  text-transform:uppercase;
  color:var(--graphite-600);
}
.mono{ font-family:var(--mono); }

/* ---------- Layout ---------- */
.wrap{
  max-width:var(--container);
  margin:0 auto;
  padding:0 var(--gutter);
}
.section{
  padding:clamp(64px, 10vw, 140px) 0;
}
.section--tight{ padding:clamp(48px, 6vw, 88px) 0; }
.hr{
  border:none;
  border-top:1px solid var(--mist-200);
}
.section-head{
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  gap:24px;
  margin-bottom:clamp(32px,5vw,64px);
  flex-wrap:wrap;
}

/* ---------- Header / Nav ---------- */
.nav{
  position:sticky;
  top:0;
  z-index:50;
  background:rgba(242,241,237,0.92);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--mist-200);
}
.nav__inner{
  max-width:var(--container);
  margin:0 auto;
  padding:18px var(--gutter);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:32px;
}
.logo{
  font-family:var(--display);
  font-weight:500;
  font-size:18px;
  letter-spacing:0.06em;
  text-transform:uppercase;
  white-space:nowrap;
}
.nav__links{
  display:flex;
  gap:clamp(16px,3vw,40px);
  align-items:center;
  font-family:var(--mono);
  font-size:12px;
  letter-spacing:0.08em;
  text-transform:uppercase;
}
.nav__links a{
  color:var(--graphite-600);
  transition:color .15s ease;
  padding:4px 0;
  border-bottom:1px solid transparent;
}
.nav__links a:hover,
.nav__links a:focus-visible,
.nav__links a[aria-current="page"]{
  color:var(--ink);
  border-bottom-color:var(--ink);
}
.nav__cart{
  font-family:var(--mono);
  font-size:12px;
  letter-spacing:0.08em;
  border:1px solid var(--ink);
  padding:8px 14px;
  border-radius:2px;
  white-space:nowrap;
}
.nav__toggle{
  display:none;
  background:none;
  border:1px solid var(--ink);
  width:40px; height:40px;
  align-items:center; justify-content:center;
  border-radius:2px;
  cursor:pointer;
}
.nav__toggle span, .nav__toggle span::before, .nav__toggle span::after{
  content:'';
  display:block;
  width:18px; height:1px;
  background:var(--ink);
  position:relative;
}
.nav__toggle span::before{ top:-5px; }
.nav__toggle span::after{ top:4px; }

@media (max-width:760px){
  .nav__links{
    position:absolute;
    top:100%; left:0; right:0;
    flex-direction:column;
    align-items:flex-start;
    background:var(--paper);
    border-bottom:1px solid var(--mist-200);
    padding:20px var(--gutter) 28px;
    gap:16px;
    display:none;
  }
  .nav__links.is-open{ display:flex; }
  .nav__toggle{ display:flex; }
  .nav__cart{ display:none; }
}

/* ---------- Buttons ---------- */
.btn{
  font-family:var(--mono);
  font-size:12px;
  letter-spacing:0.08em;
  text-transform:uppercase;
  padding:14px 28px;
  border-radius:2px;
  border:1px solid var(--ink);
  display:inline-flex;
  align-items:center;
  gap:10px;
  cursor:pointer;
  transition:background .15s ease, color .15s ease, border-color .15s ease;
  background:transparent;
  color:var(--ink);
}
.btn--primary{
  background:var(--ink);
  color:var(--paper);
}
.btn--primary:hover{ background:var(--graphite-800); }
.btn--ghost:hover{ background:var(--ink); color:var(--paper); }
.btn--dark{
  background:var(--ink);
  color:var(--paper);
  border-color:var(--ink);
}
.btn-row{ display:flex; gap:14px; flex-wrap:wrap; }
.btn:focus-visible{ outline:2px solid var(--steel); outline-offset:2px; }

/* ---------- Data chips ---------- */
.chip{
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:0.08em;
  text-transform:uppercase;
  border:1px solid var(--mist-200);
  border-radius:2px;
  padding:8px 12px;
  color:var(--graphite-600);
  display:inline-flex;
  align-items:center;
  gap:8px;
}
.chip-row{
  display:flex; flex-wrap:wrap; gap:10px;
}
.chip--accent{
  border-color:var(--steel);
  color:var(--steel);
}

/* ---------- Hero ---------- */
.hero{
  padding:clamp(56px,9vw,120px) 0 clamp(40px,6vw,80px);
}
.hero__eyebrow{ margin-bottom:18px; }
.hero h1{ margin-bottom:24px; max-width:14ch; }
.hero .lead{ max-width:46ch; margin-bottom:32px; }

/* ---------- Proof module ---------- */
.proof-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(180px, 1fr));
  gap:1px;
  background:var(--mist-200);
  border:1px solid var(--mist-200);
}
.proof-cell{
  background:var(--card-50);
  padding:32px 28px;
}
.proof-cell .stat{
  font-family:var(--display);
  font-weight:500;
  font-size:clamp(36px,5vw,56px);
  line-height:1;
  color:var(--ink);
  margin-bottom:10px;
}
.proof-cell .stat .unit{
  font-family:var(--mono);
  font-size:0.4em;
  color:var(--steel);
  vertical-align:super;
  margin-left:2px;
}
.proof-cell p{
  font-size:14px;
  color:var(--graphite-600);
  max-width:22ch;
}
.proof-cell .src{
  display:block;
  margin-top:10px;
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:0.06em;
  color:var(--steel-400);
}

/* ---------- Proof ladder ---------- */
.ladder{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(140px,1fr));
  gap:0;
  border:1px solid var(--mist-200);
}
.ladder__step{
  padding:24px 20px;
  border-right:1px solid var(--mist-200);
  position:relative;
}
.ladder__step:last-child{ border-right:none; }
.ladder__num{
  font-family:var(--mono);
  font-size:11px;
  color:var(--steel-400);
  margin-bottom:10px;
  display:block;
}
.ladder__step h4{
  font-family:var(--display);
  font-weight:500;
  font-size:16px;
  margin-bottom:6px;
}
.ladder__step p{ font-size:13px; color:var(--graphite-600); }

/* ---------- Cards / Grid ---------- */
.grid-3{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:var(--gutter);
}
.grid-2{
  display:grid;
  grid-template-columns:repeat(2, 1fr);
  gap:var(--gutter);
}
@media (max-width:900px){
  .grid-3{ grid-template-columns:1fr; gap:48px; }
  .grid-2{ grid-template-columns:1fr; gap:48px; }
}

/* ---------- Product card (object) ---------- */
.product-card{
  display:flex;
  flex-direction:column;
  gap:24px;
}
.product-card__visual{
  position:relative;
  aspect-ratio:3/4;
  border:1px solid var(--mist-200);
  display:flex;
  align-items:flex-end;
  justify-content:center;
  overflow:hidden;
  background:linear-gradient(180deg, var(--card-50) 0%, var(--mist-200) 100%);
}
.product-card__vessel{
  width:38%;
  height:78%;
  border-radius:6px 6px 14px 14px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  padding-top:14%;
  position:relative;
}
.product-card__vessel::before{
  content:'';
  position:absolute;
  top:0; left:50%;
  transform:translateX(-50%);
  width:60%; height:10%;
  border-bottom:1px solid rgba(0,0,0,0.08);
  background-image:repeating-linear-gradient(90deg, rgba(0,0,0,0.08) 0 1px, transparent 1px 4px);
}
.product-card__vessel .v-label{
  font-family:var(--mono);
  font-size:9px;
  letter-spacing:0.12em;
  text-transform:uppercase;
}
.product-card__vessel .v-name{
  font-family:var(--display);
  font-weight:500;
  font-size:clamp(18px,2vw,26px);
  margin-top:6px;
  text-transform:uppercase;
  letter-spacing:0.04em;
}
.product-card__vessel .v-spec{
  margin-top:auto;
  margin-bottom:14%;
  font-family:var(--mono);
  font-size:9px;
  letter-spacing:0.08em;
  text-align:center;
  opacity:0.7;
}
.vessel--defend{ background:linear-gradient(160deg,#E9E8E4 0%, #C8C8C8 55%, #A9ACB1 100%); color:var(--ink); }
.vessel--repair{ background:linear-gradient(160deg,#2C2C30 0%, #16161A 60%, #0B0B0C 100%); color:var(--card-50); }
.vessel--clean{ background:linear-gradient(160deg,#F4F3EF 0%, #DCDAD2 55%, #BFC0C5 100%); color:var(--ink); }

.product-card__body h3{
  font-family:var(--display);
  font-weight:500;
  font-size:24px;
  margin-bottom:6px;
}
.product-card__body .ptype{
  font-size:14px;
  color:var(--graphite-600);
  margin-bottom:16px;
}
.product-card__meta{
  display:flex;
  justify-content:space-between;
  align-items:center;
  font-family:var(--mono);
  font-size:12px;
  color:var(--graphite-600);
  border-top:1px solid var(--mist-200);
  padding-top:14px;
}

/* ---------- Ingredient row ---------- */
.ingredient-row{
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  padding:18px 0;
  border-bottom:1px solid var(--mist-200);
  gap:24px;
}
.ingredient-row:first-child{ border-top:1px solid var(--mist-200); }
.ingredient-row__name{ font-size:17px; }
.ingredient-row__why{
  font-size:13px;
  color:var(--graphite-600);
  margin-top:4px;
  max-width:48ch;
}
.ingredient-row__pct{
  font-family:var(--mono);
  font-size:16px;
  color:var(--steel);
  white-space:nowrap;
}

/* ---------- Footer ---------- */
.footer{
  border-top:1px solid var(--mist-200);
  padding:clamp(48px,7vw,88px) 0 40px;
}
.footer__grid{
  display:grid;
  grid-template-columns:1.4fr 1fr 1fr 1fr;
  gap:40px;
  margin-bottom:56px;
}
.footer__col h5{
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--graphite-600);
  margin-bottom:16px;
}
.footer__col a{
  display:block;
  font-size:14px;
  color:var(--ink);
  margin-bottom:10px;
  transition:color .15s ease;
}
.footer__col a:hover{ color:var(--steel); }
.footer__bottom{
  display:flex;
  justify-content:space-between;
  align-items:center;
  flex-wrap:wrap;
  gap:16px;
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:0.06em;
  color:var(--steel-400);
  text-transform:uppercase;
}
@media (max-width:760px){
  .footer__grid{ grid-template-columns:1fr 1fr; gap:32px; }
}

/* ---------- Misc ---------- */
.center{ text-align:center; }
.text-steel{ color:var(--steel); }
.muted{ color:var(--graphite-600); }
.mt-xl{ margin-top:clamp(40px,6vw,80px); }
.split{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:var(--gutter);
  align-items:center;
}
@media (max-width:900px){
  .split{ grid-template-columns:1fr; gap:40px; }
}

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

/* Fade-in on load */
.fade-up{
  opacity:0;
  transform:translateY(16px);
  animation:fadeUp .7s ease forwards;
}
@keyframes fadeUp{
  to{ opacity:1; transform:translateY(0); }
}
.delay-1{ animation-delay:.08s; }
.delay-2{ animation-delay:.16s; }
.delay-3{ animation-delay:.24s; }
