/* ═══════════════════════════════════════════════════════════════
   LE BOIL — cayenne, butter, cobalt, chrome
   Display  Bricolage Grotesque  (width + optical size, pushed loud)
   Body     Archivo
   Data     Martian Mono         (wide, mechanical — reads as a receipt)

   --heat drives the whole page. The slider writes to it.
   ═══════════════════════════════════════════════════════════════ */

:root{
  --cream:  #FFF4E0;
  --paper:  #FFEBC4;
  --ink:    #17110C;
  --ink-d:  #6B5A4A;
  --cobalt: #1B3FD8;
  --butter: #FFD447;
  --lime:   #8FE04A;
  --chrome: #C9CBD2;

  /* live heat colour — index 0..4 rewrites these */
  --hot:    #E8481A;
  --hot-d:  #B32E0C;

  --pad: clamp(1.25rem, 5vw, 5rem);
  --maxw: 1560px;

  --f-disp:"Bricolage Grotesque", Impact, sans-serif;
  --f-body:"Archivo", system-ui, sans-serif;
  --f-mono:"Martian Mono", ui-monospace, monospace;

  --ease: cubic-bezier(.2,.8,.3,1);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
section[id],footer[id]{ scroll-margin-top:5rem; }

body{
  margin:0;
  /* the whole page warms as the heat goes up */
  background:color-mix(in srgb, var(--hot) 5%, var(--cream));
  color:var(--ink);
  font-family:var(--f-body);
  font-size:clamp(1rem,.95rem + .3vw,1.12rem);
  line-height:1.6;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  transition:background .6s var(--ease);
}
img{ max-width:100%; display:block; }
h1,h2,h3{ margin:0; font-weight:400; }
p{ margin:0; }
ul,ol,dl,dd,figure,fieldset{ margin:0; padding:0; list-style:none; border:0; }
legend{ padding:0; }
a{ color:inherit; }

::selection{ background:var(--hot); color:var(--cream); }
:focus-visible{ outline:3px solid var(--cobalt); outline-offset:2px; }

.skip{
  position:fixed; top:-100px; left:1rem; z-index:200;
  background:var(--cobalt); color:#fff;
  padding:.7rem 1.1rem; font-family:var(--f-mono); font-size:.78rem; text-decoration:none;
}
.skip:focus{ top:1rem; }

/* ── shared ────────────────────────────────────────────────── */
.kick{
  font-family:var(--f-mono); font-size:.68rem; font-weight:600;
  letter-spacing:.1em; text-transform:uppercase;
  color:var(--hot); margin-bottom:1.1rem;
}
.h2{
  font-family:var(--f-disp);
  font-variation-settings:"wdth" 100, "wght" 800, "opsz" 60;
  font-size:clamp(2.1rem,5.4vw,4.6rem);
  line-height:.96; letter-spacing:-.028em;
  max-width:20ch;
}
.btn{
  display:inline-block;
  font-family:var(--f-disp);
  font-variation-settings:"wdth" 100, "wght" 800, "opsz" 24;
  font-size:1.02rem; letter-spacing:-.01em;
  color:var(--cream); background:var(--ink);
  padding:1rem 1.7rem; border:0; cursor:pointer; text-decoration:none;
  border-radius:2px;
  box-shadow:4px 4px 0 var(--hot);
  transition:transform .18s var(--ease), box-shadow .18s var(--ease), background .5s var(--ease);
}
.btn:hover{ transform:translate(-2px,-2px); box-shadow:6px 6px 0 var(--hot); }
.btn:active{ transform:translate(2px,2px); box-shadow:1px 1px 0 var(--hot); }
.btn--big{ font-size:1.24rem; padding:1.15rem 2.1rem; }
.btn--full{ width:100%; text-align:center; }

/* ── nav ───────────────────────────────────────────────────── */
.nav{
  position:fixed; inset:0 0 auto 0; z-index:80;
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
  padding:.85rem var(--pad);
  transition:background .4s var(--ease), box-shadow .4s var(--ease);
}
.nav.is-stuck{
  background:var(--cream);
  box-shadow:0 2px 0 var(--ink);
}
.nav__mark{
  font-family:var(--f-disp);
  font-variation-settings:"wdth" 88, "wght" 800, "opsz" 32;
  font-size:1.6rem; letter-spacing:-.03em; text-decoration:none;
  color:var(--hot);
  transition:color .5s var(--ease);
}
.nav__links{ display:flex; gap:1.8rem; }
.nav__links a{
  font-family:var(--f-mono); font-size:.68rem; font-weight:600;
  letter-spacing:.04em; text-transform:uppercase;
  text-decoration:none; color:var(--ink);
  padding-bottom:2px; border-bottom:2px solid transparent;
  transition:border-color .25s var(--ease);
}
.nav__links a:hover{ border-bottom-color:var(--hot); }
.nav__cta{
  font-family:var(--f-mono); font-size:.7rem; font-weight:600;
  letter-spacing:.04em; text-transform:uppercase;
  background:var(--ink); color:var(--cream);
  padding:.6rem 1rem; text-decoration:none; border-radius:2px;
  display:flex; gap:.6rem;
}
.nav__cta span{ color:var(--butter); }

/* ── hero ──────────────────────────────────────────────────── */
/* the table itself, full bleed — type sits straight on the newspaper */
.hero{
  position:relative;
  min-height:100svh;
  display:flex; flex-direction:column; justify-content:flex-end;
  padding:7rem var(--pad) clamp(2rem,4vw,3.5rem);
  overflow:hidden;
  isolation:isolate;
}
.hero__bg{
  position:absolute; inset:0; z-index:-2;
  width:100%; height:100%; object-fit:cover;
  filter:saturate(1.12) contrast(1.04);
}
.hero__scrim{
  position:absolute; inset:0; z-index:-1; pointer-events:none;
  /* heavy on the left so the type has a ground; the boil stays visible right */
  background:
    linear-gradient(100deg,
      color-mix(in srgb, var(--cream) 95%, transparent) 0%,
      color-mix(in srgb, var(--cream) 90%, transparent) 32%,
      color-mix(in srgb, var(--cream) 34%, transparent) 62%,
      transparent 84%),
    linear-gradient(to bottom,
      color-mix(in srgb, var(--cream) 72%, transparent) 0%,
      color-mix(in srgb, var(--cream) 12%, transparent) 22%,
      color-mix(in srgb, var(--cream) 12%, transparent) 60%,
      color-mix(in srgb, var(--cream) 84%, transparent) 88%,
      var(--cream) 100%);
  transition:background .6s var(--ease);
}
.hero__h1{
  font-family:var(--f-disp);
  font-variation-settings:"wdth" 100, "wght" 800, "opsz" 96;
  font-size:clamp(3.4rem,11.5vw,10rem);
  line-height:.84; letter-spacing:-.045em;
  text-transform:uppercase;
  margin:.4rem 0 1.6rem;
  display:flex; flex-direction:column;
}
.hero__l--out{
  color:transparent;
  -webkit-text-stroke:2px var(--ink);
  padding-left:.06em;
}
.hero__lede{ max-width:40ch; color:var(--ink-d); font-size:clamp(1rem,.95rem + .35vw,1.2rem); }
.hero__acts{
  display:flex; align-items:center; gap:1.6rem; flex-wrap:wrap;
  margin-top:2rem;
}
.hero__price{ font-family:var(--f-mono); font-size:.72rem; text-transform:uppercase; color:var(--ink-d); }
.hero__price strong{ font-size:1.5rem; color:var(--ink); display:block; }
.hero__price span{ font-size:.66rem; }

.hero__badge{
  position:absolute; right:clamp(1rem,4vw,4rem); bottom:clamp(1.5rem,5vw,4rem);
  width:118px; height:118px;
  display:grid; place-items:center;
}
.hero__badge svg{
  position:absolute; inset:0; width:100%; height:100%;
  animation:spin 22s linear infinite;
  fill:var(--ink);
  font-family:var(--f-mono); font-size:9.4px; letter-spacing:.06em;
}
@keyframes spin{ to{ transform:rotate(360deg); } }
.hero__badge span{ font-size:1.6rem; }

/* ── ticker ────────────────────────────────────────────────── */
.ticker{
  background:var(--ink); color:var(--butter);
  overflow:hidden; padding:.7rem 0;
  border-block:3px solid var(--hot);
  transition:border-color .6s var(--ease);
}
.ticker__t{
  display:flex; gap:2.2rem; align-items:center; width:max-content;
  font-family:var(--f-disp);
  font-variation-settings:"wdth" 92, "wght" 700, "opsz" 20;
  font-size:1.06rem; text-transform:uppercase; letter-spacing:-.01em;
  animation:slide 26s linear infinite;
}
.ticker__t i{ font-style:normal; color:var(--hot); font-size:.7rem; }
@keyframes slide{ to{ transform:translateX(-50%); } }

/* ── order ─────────────────────────────────────────────────── */
.order{
  padding:clamp(4rem,8vw,7rem) var(--pad);
  max-width:var(--maxw); margin-inline:auto;
}
.order__head{ margin-bottom:clamp(2.4rem,5vw,4rem); }
.order__wrap{
  display:grid; gap:clamp(2rem,4vw,4rem);
  grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);
  align-items:start;
}
.order__ctrl{ display:flex; flex-direction:column; gap:2.4rem; }

.fld{ display:block; }
.fld__top{
  display:flex; align-items:baseline; justify-content:space-between;
  gap:1rem; margin-bottom:.8rem;
}
.fld__lab{
  display:block;
  font-family:var(--f-mono); font-size:.7rem; font-weight:600;
  letter-spacing:.08em; text-transform:uppercase; color:var(--ink-d);
  margin-bottom:.8rem;
}
.fld__top .fld__lab{ margin-bottom:0; }
.fld__out{
  font-family:var(--f-disp);
  font-variation-settings:"wdth" 96, "wght" 800, "opsz" 40;
  font-size:2rem; line-height:1; letter-spacing:-.03em;
  color:var(--hot);
  transition:color .5s var(--ease);
}
.fld__hint{ margin-top:.9rem; font-size:.9rem; color:var(--ink-d); }

.rng{
  -webkit-appearance:none; appearance:none;
  width:100%; height:12px; margin:0;
  background:var(--paper);
  border:2px solid var(--ink); border-radius:99px;
  cursor:pointer;
}
.rng::-webkit-slider-thumb{
  -webkit-appearance:none; appearance:none;
  width:30px; height:30px; border-radius:50%;
  background:var(--hot); border:2px solid var(--ink);
  box-shadow:2px 2px 0 var(--ink);
  transition:background .4s var(--ease);
}
.rng::-moz-range-thumb{
  width:26px; height:26px; border-radius:50%;
  background:var(--hot); border:2px solid var(--ink);
}
.rng--heat{
  background:linear-gradient(to right,#FFD447,#FF9E1B,#E8481A,#C21A12,#7A0C1F);
}
.heat__scale{
  display:flex; justify-content:space-between;
  margin-top:.7rem;
}
.heat__scale span{
  font-family:var(--f-mono); font-size:.6rem; font-weight:600;
  letter-spacing:.04em; text-transform:uppercase; color:var(--ink-d);
  transition:color .3s var(--ease);
}
.heat__scale span.is-on{ color:var(--hot); }

.adds{ display:grid; gap:.6rem; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); }
.add{
  display:flex; align-items:center; justify-content:space-between; gap:.7rem;
  background:none; cursor:pointer; text-align:left;
  border:2px solid var(--ink); border-radius:2px;
  padding:.75rem .9rem;
  font-family:var(--f-mono); font-size:.72rem; font-weight:600;
  letter-spacing:.02em; color:var(--ink);
  transition:background .2s var(--ease), box-shadow .2s var(--ease), transform .2s var(--ease);
}
.add:hover{ transform:translate(-1px,-1px); box-shadow:3px 3px 0 var(--ink); }
.add.is-on{ background:var(--butter); box-shadow:3px 3px 0 var(--ink); }
.add em{ font-style:normal; color:var(--ink-d); }
.add.is-on em{ color:var(--ink); }

.segs{ display:flex; gap:.6rem; flex-wrap:wrap; }
.seg{
  flex:1 1 160px;
  background:none; cursor:pointer; text-align:left;
  border:2px solid var(--ink); border-radius:2px;
  padding:.8rem .9rem;
  font-family:var(--f-mono); font-size:.72rem; font-weight:600;
  color:var(--ink);
  transition:background .2s var(--ease), box-shadow .2s var(--ease), transform .2s var(--ease);
}
.seg em{ display:block; font-style:normal; font-weight:400; color:var(--ink-d); font-size:.66rem; margin-top:.25rem; }
.seg:hover{ transform:translate(-1px,-1px); box-shadow:3px 3px 0 var(--ink); }
.seg.is-on{ background:var(--ink); color:var(--cream); box-shadow:3px 3px 0 var(--hot); }
.seg.is-on em{ color:var(--butter); }

/* receipt */
.receipt{
  background:#fff;
  border:2px solid var(--ink);
  box-shadow:8px 8px 0 var(--ink);
  padding:1.6rem;
  position:sticky; top:6.5rem;
}
.receipt__top{
  font-family:var(--f-mono); font-size:.68rem; font-weight:600;
  letter-spacing:.1em; text-transform:uppercase;
  padding-bottom:1rem; margin-bottom:1rem;
  border-bottom:2px dashed var(--ink);
}
.receipt__lines div{
  display:flex; justify-content:space-between; gap:1rem;
  font-family:var(--f-mono); font-size:.72rem;
  padding:.4rem 0; color:var(--ink-d);
}
.receipt__lines div b{ font-weight:400; color:var(--ink); }
.receipt__tot{
  display:flex; justify-content:space-between; align-items:baseline;
  margin-top:1rem; padding-top:1rem;
  border-top:2px dashed var(--ink);
  font-family:var(--f-mono); font-size:.74rem; font-weight:600;
  letter-spacing:.08em; text-transform:uppercase;
}
.receipt__tot strong{
  font-family:var(--f-disp);
  font-variation-settings:"wdth" 96, "wght" 800, "opsz" 48;
  font-size:2.6rem; letter-spacing:-.035em; line-height:1;
}
.receipt__heat{
  margin:1rem 0 1.2rem;
  font-family:var(--f-mono); font-size:.66rem; font-weight:600;
  letter-spacing:.16em; text-transform:uppercase;
  background:var(--hot); color:#fff;
  padding:.5rem .8rem; text-align:center;
  transition:background .5s var(--ease);
}
.receipt__fine{ margin-top:1rem; font-size:.8rem; color:var(--ink-d); line-height:1.6; }

/* ── what's in the pot ─────────────────────────────────────── */
.pot{
  padding:clamp(4rem,8vw,7rem) var(--pad);
  background:var(--ink); color:var(--cream);
}
.pot__head{ max-width:var(--maxw); margin:0 auto clamp(2.4rem,5vw,4rem); }
.pot__head .h2{ color:var(--cream); }
.pot__grid{
  max-width:var(--maxw); margin-inline:auto;
  display:grid; gap:1.4rem;
  grid-template-columns:repeat(2,minmax(0,1fr));
}
.pcard{
  position:relative; overflow:hidden;
  border:2px solid var(--cream);
  background:#000;
}
.pcard img{
  width:100%; aspect-ratio:16/10; object-fit:cover;
  transition:transform 1s var(--ease), filter .6s var(--ease);
  filter:saturate(1.15) contrast(1.05);
}
.pcard:hover img{ transform:scale(1.05); }
.pcard__b{
  padding:1.4rem;
  border-top:2px solid var(--cream);
}
.pcard__b h3{
  font-family:var(--f-disp);
  font-variation-settings:"wdth" 96, "wght" 800, "opsz" 32;
  font-size:1.8rem; letter-spacing:-.03em; text-transform:uppercase;
  margin-bottom:.5rem; color:var(--butter);
}
.pcard__b p{ color:rgba(255,244,224,.72); font-size:.95rem; }

/* ── zone ──────────────────────────────────────────────────── */
.zone{
  padding:clamp(4rem,8vw,7rem) var(--pad) 2rem;
  max-width:var(--maxw); margin-inline:auto;
}
.zone__head{ margin-bottom:clamp(2rem,4vw,3rem); }
.zone__list{ margin-bottom:clamp(3rem,6vw,5rem); }
.zone__list li{
  display:flex; justify-content:space-between; align-items:baseline; gap:1.5rem;
  padding:1.1rem 0;
  border-top:2px solid var(--ink);
  font-family:var(--f-disp);
  font-variation-settings:"wdth" 92, "wght" 600, "opsz" 28;
  font-size:clamp(1.15rem,2.4vw,1.8rem); letter-spacing:-.02em;
  transition:background .35s var(--ease);
}
/* indent the text, not the row — the 2px rule must not slide with it */
.zone__list li > span{ transition:transform .35s var(--ease); }
.zone__list li:hover{ background:var(--paper); }
.zone__list li:hover > span:first-child{ transform:translateX(1rem); }
.zone__list li:last-child{ border-bottom:2px solid var(--ink); }
.zone__list li span:last-child{
  font-family:var(--f-mono); font-size:.78rem; font-weight:600;
  letter-spacing:.04em; color:var(--hot); white-space:nowrap;
  transition:color .5s var(--ease);
}
.zone__foot{
  display:grid; gap:clamp(1.5rem,4vw,3rem);
  grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
}
.fl{
  font-family:var(--f-mono); font-size:.68rem; font-weight:600;
  letter-spacing:.1em; text-transform:uppercase;
  color:var(--hot); margin-bottom:.9rem;
  transition:color .5s var(--ease);
}
.fp{ color:var(--ink-d); margin-bottom:.7rem; }
.fp a{ color:var(--ink); text-underline-offset:4px; }
.zone__mark{
  margin-top:clamp(3rem,7vw,5rem);
  font-family:var(--f-disp);
  font-variation-settings:"wdth" 100, "wght" 800, "opsz" 96;
  font-size:clamp(4rem,20vw,18rem);
  line-height:.8; letter-spacing:-.05em; text-transform:uppercase;
  color:transparent; -webkit-text-stroke:2px var(--ink);
  user-select:none;
}
.zone__legal{
  margin-top:1.4rem; padding-top:1.2rem;
  border-top:2px solid var(--ink);
  font-family:var(--f-mono); font-size:.66rem;
  letter-spacing:.04em; text-transform:uppercase; color:var(--ink-d);
}

/* ── reveal ────────────────────────────────────────────────── */
.rv{ opacity:0; transform:translateY(20px); transition:opacity .7s var(--ease), transform .7s var(--ease); }
.rv.is-in{ opacity:1; transform:none; }

/* ── responsive ────────────────────────────────────────────── */
@media (max-width:1080px){
  .hero__badge{ display:none; }
  .order__wrap{ grid-template-columns:1fr; }
  .receipt{ position:static; }
  .pot__grid{ grid-template-columns:1fr; }
}
@media (max-width:820px){
  .nav{ flex-wrap:wrap; row-gap:.7rem; padding-bottom:.75rem; }
  .nav__links{ order:3; width:100%; gap:1.3rem; overflow-x:auto; scrollbar-width:none; }
  .nav__links::-webkit-scrollbar{ display:none; }
  .nav__links a{ white-space:nowrap; }
  .hero{ padding-top:8rem; }
  /* a side veil buys nothing this narrow — weight it to the bottom instead */
  .hero__scrim{
    background:linear-gradient(to bottom,
      color-mix(in srgb, var(--cream) 82%, transparent) 0%,
      color-mix(in srgb, var(--cream) 24%, transparent) 22%,
      color-mix(in srgb, var(--cream) 72%, transparent) 50%,
      color-mix(in srgb, var(--cream) 95%, transparent) 72%,
      var(--cream) 100%);
  }
}

@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation:none !important; transition-duration:.001ms !important; }
  .rv{ opacity:1; transform:none; }
}
