:root{
  --ink:#070A0A; --cream:#EAE2D0; --coral:#F0815C; --coral-deep:#DE603E;
  --pad:28px;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%}
body{
  background:var(--ink);color:var(--cream);
  font-family:"Red Hat Mono",ui-monospace,monospace;
  padding:calc(env(safe-area-inset-top) + 22px) var(--pad) calc(env(safe-area-inset-bottom) + 56px);
}

.back{
  display:inline-flex;align-items:center;gap:9px;
  font-size:10px;font-weight:500;letter-spacing:.24em;text-transform:uppercase;
  color:rgba(234,226,208,.6);text-decoration:none;
}
.back:hover{color:var(--coral)}
.back .a{color:var(--coral)}

h1{
  font-family:"Big Shoulders Display",Impact,sans-serif;font-weight:800;
  font-size:clamp(44px,15vw,80px);line-height:.84;text-transform:uppercase;
  margin-top:34px;
}
.lede{
  margin-top:14px;max-width:34ch;
  font-size:12px;font-weight:500;line-height:1.9;letter-spacing:.04em;
  color:rgba(234,226,208,.62);
}
.rule{height:1px;width:52px;background:var(--coral);margin:24px 0 30px}

.grid{display:grid;gap:10px}
.grid.two{grid-template-columns:repeat(2,1fr)}
.grid.three{grid-template-columns:repeat(3,1fr)}

.slot{
  position:relative;overflow:hidden;aspect-ratio:4/5;
  background:#0D1212;border:1px solid rgba(234,226,208,.14);
}
.slot.wide{aspect-ratio:1/1}
.slot img{width:100%;height:100%;object-fit:cover;display:block}
.slot .empty{
  position:absolute;inset:0;display:flex;flex-direction:column;gap:6px;
  align-items:center;justify-content:center;
  font-size:9px;letter-spacing:.1em;color:rgba(234,226,208,.3);text-align:center;padding:6px;
}
.slot .empty em{font-style:normal;font-size:16px;color:rgba(240,129,92,.4)}

.cta{
  display:flex;align-items:center;justify-content:space-between;
  min-height:64px;margin-top:30px;padding:0 18px;
  background:var(--coral);color:var(--ink);text-decoration:none;
  font-size:14px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;
  transition:background .18s ease;
}
.cta:hover,.cta:active{background:var(--coral-deep)}
.cta:focus-visible{outline:2px solid var(--cream);outline-offset:3px}
.cta.off{background:transparent;color:rgba(234,226,208,.42);
  border:1px solid rgba(234,226,208,.22);cursor:default}

.spec{
  margin-top:18px;font-size:10px;font-weight:500;letter-spacing:.14em;
  line-height:2.3;text-transform:uppercase;color:rgba(234,226,208,.5);
}
.spec b{color:var(--cream);font-weight:700}

h2{
  font-family:"Big Shoulders Display",Impact,sans-serif;font-weight:800;
  font-size:34px;line-height:.9;text-transform:uppercase;margin:52px 0 18px;
}

footer{
  margin-top:56px;padding-top:22px;border-top:1px solid rgba(234,226,208,.14);
  font-size:9px;font-weight:500;letter-spacing:.22em;line-height:2.2;text-transform:uppercase;
  color:rgba(234,226,208,.42);
}
footer a{color:rgba(234,226,208,.42)}

@media (min-width:600px){
  :root{--pad:56px}
  body{max-width:900px;margin:0 auto}
  .grid{gap:16px}
  .grid.two{grid-template-columns:repeat(3,1fr)}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ============ merch — the SAND page ============================
   Home is ink: night, the event, the signal.
   Merch is sand: daylight, the coast, the thing you wear in the sun.
   On a light ground the accent must be Coral Deep, never Coral Primary.
   ================================================================ */
body.merch{
  --paper:#EEE0C5;
  --line:rgba(7,10,10,.16);
  --soft:rgba(7,10,10,.66);
  background:var(--paper); color:var(--ink);
  padding:0 0 104px;
}
body.merch .wrap{padding:0 var(--pad);max-width:900px;margin:0 auto}

/* hero — the photo runs full bleed, then dissolves into the paper */
body.merch .band{
  position:relative;overflow:hidden;isolation:isolate;
  min-height:86svh;display:flex;flex-direction:column;justify-content:flex-end;
  padding:calc(env(safe-area-inset-top) + 22px) var(--pad) 40px;
  background:var(--paper);
}
body.merch .band .ph{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}
body.merch .band::after{
  content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(to bottom,
    rgba(238,224,197,.40) 0%, rgba(238,224,197,0) 24%,
    rgba(238,224,197,0) 52%, rgba(238,224,197,.92) 88%, var(--paper) 100%);
}
body.merch .band .back{position:absolute;top:calc(env(safe-area-inset-top) + 22px);left:var(--pad);
  color:rgba(7,10,10,.72)}
body.merch .back .a{color:var(--coral-deep)}
body.merch .back:hover{color:var(--coral-deep)}
body.merch .band h1{
  margin:0;font-family:"Big Shoulders Display",Impact,sans-serif;font-weight:800;
  font-size:clamp(44px,14vw,82px);line-height:.86;text-transform:uppercase;color:var(--ink);
}
body.merch .band .kicker{
  margin-bottom:14px;font-size:10px;font-weight:700;letter-spacing:.3em;
  text-transform:uppercase;color:rgba(7,10,10,.72);
}

/* generous air — the whole point of the register */
body.merch .run{padding-top:66px}
body.merch .block{padding-top:84px}
body.merch .run .big{
  font-family:"Big Shoulders Display",Impact,sans-serif;font-weight:800;
  font-size:clamp(58px,21vw,116px);line-height:.82;text-transform:uppercase;color:var(--ink);
}
body.merch .say,body.merch .run .say{
  margin-top:16px;max-width:38ch;
  font-size:12.5px;font-weight:500;line-height:2.05;letter-spacing:.03em;color:var(--soft);
}
body.merch .khead{display:flex;align-items:baseline;justify-content:space-between;gap:16px}
body.merch .khead h2{
  margin:0;font-family:"Big Shoulders Display",Impact,sans-serif;font-weight:800;
  font-size:clamp(32px,10vw,54px);line-height:.86;text-transform:uppercase;color:var(--ink);
}
body.merch .price{font-size:13px;font-weight:700;letter-spacing:.14em;color:var(--ink)}

/* run counter */
body.merch .ticks{display:flex;gap:3px;margin:32px 0 12px;height:26px}
body.merch .ticks span{flex:1;background:rgba(7,10,10,.13);border-radius:1px}
body.merch .ticks span.gone{background:var(--coral-deep)}
body.merch .ticks.idle span{background:rgba(7,10,10,.10)}
body.merch .readout{display:flex;justify-content:space-between;
  font-size:10px;font-weight:700;letter-spacing:.2em;text-transform:uppercase}
body.merch .readout .left{color:var(--ink)}
body.merch .readout .tot{color:rgba(7,10,10,.62);font-weight:500}

/* images sit on the paper, no boxes */
body.merch .shots{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:26px}
body.merch .slot{position:relative;overflow:hidden;aspect-ratio:4/5;background:rgba(7,10,10,.05);border:0}
body.merch .shots .slot.wide{grid-column:1/-1;aspect-ratio:16/9}
body.merch .shots .slot.full{grid-column:1/-1;aspect-ratio:4/5}
body.merch .slot img{width:100%;height:100%;object-fit:cover;display:block}
body.merch .print{margin-top:28px;aspect-ratio:2/3;background:transparent}
body.merch .print img{object-fit:contain;background:transparent}

/* spec */
body.merch dl{margin-top:30px;border-top:1px solid var(--line)}
body.merch dl div{display:flex;justify-content:space-between;gap:20px;padding:15px 0;
  border-bottom:1px solid var(--line)}
body.merch dt{font-size:10px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;
  color:rgba(7,10,10,.62);flex:0 0 34%}
body.merch dd{margin:0;font-size:11px;font-weight:700;letter-spacing:.06em;text-align:right;
  line-height:1.6;color:var(--ink)}
body.merch dd small{display:block;font-weight:500;font-size:10px;color:rgba(7,10,10,.62);
  letter-spacing:.1em;margin-top:3px}

/* size guide */
body.merch .sizes{margin-top:30px;border-top:1px solid var(--line)}
body.merch .sizes summary{padding:16px 0;cursor:pointer;list-style:none;
  font-size:10px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:rgba(7,10,10,.74)}
body.merch .sizes summary::-webkit-details-marker{display:none}
body.merch .sizes summary::after{content:" +";font-weight:500}
body.merch .sizes[open] summary::after{content:" \2013"}
body.merch .sizes table{width:100%;border-collapse:collapse;margin-bottom:6px}
body.merch .sizes th,body.merch .sizes td{padding:10px 0;text-align:right;
  font-size:11px;font-weight:500;letter-spacing:.08em;border-bottom:1px solid rgba(7,10,10,.1)}
body.merch .sizes th{font-size:9px;letter-spacing:.18em;text-transform:uppercase;
  color:rgba(7,10,10,.62);font-weight:500}
body.merch .sizes th:first-child,body.merch .sizes td:first-child{text-align:left;font-weight:700}
body.merch .sizes p{margin:14px 0 22px;font-size:10px;font-weight:500;line-height:1.95;
  letter-spacing:.05em;color:rgba(7,10,10,.64)}

/* closing frame */
body.merch .closer{margin-top:88px;width:100%;aspect-ratio:16/9;overflow:hidden;position:relative}
body.merch .closer img{width:100%;height:100%;object-fit:cover;display:block}
body.merch .closer::after{content:"";position:absolute;inset:0;
  background:linear-gradient(to bottom,var(--paper) 0%,rgba(238,224,197,0) 20%,
             rgba(238,224,197,0) 76%,var(--paper) 100%)}
body.merch .tail-note{padding:30px var(--pad) 0;font-size:10px;font-weight:500;
  letter-spacing:.22em;text-transform:uppercase;color:rgba(7,10,10,.62)}
body.merch footer{margin-top:60px;padding-top:24px;border-top:1px solid var(--line);
  font-size:9px;font-weight:500;letter-spacing:.22em;line-height:2.2;text-transform:uppercase;
  color:rgba(7,10,10,.62)}
body.merch footer a{color:rgba(7,10,10,.62)}

/* order bar */
body.merch .bar{
  position:fixed;left:0;right:0;bottom:0;z-index:20;
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:0 var(--pad) env(safe-area-inset-bottom);min-height:70px;
  background:var(--coral-deep);color:var(--ink);text-decoration:none;
  font-size:13px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;
  transition:background .18s ease;
}
body.merch .bar:hover,body.merch .bar:active{background:#C24E30}
body.merch .bar .when{font-weight:500;font-size:10px;letter-spacing:.14em;opacity:.72}
body.merch .bar.off{background:rgba(7,10,10,.07);color:rgba(7,10,10,.66);
  border-top:1px solid var(--line)}
body.merch .bar.done{background:rgba(7,10,10,.07);color:rgba(7,10,10,.6);
  border-top:1px solid var(--coral-deep)}

@media(min-width:600px){
  body.merch .shots{gap:20px}
  body.merch .block{padding-top:104px}
}

/* coral survives as a fill, not as small type */
body.merch .band h1::after{
  content:"";display:block;width:56px;height:3px;background:var(--coral-deep);margin-top:22px;
}

/* ---- cross-page nav: every page reaches every page ---- */
.pagenav{display:flex;flex-wrap:wrap;gap:0 26px;margin-top:44px;padding-top:22px;
  border-top:1px solid rgba(234,226,208,.16)}
.pagenav a{font-size:10px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;
  color:rgba(234,226,208,.6);text-decoration:none;padding:8px 0}
.pagenav a:hover,.pagenav a[aria-current]{color:var(--coral)}
body.merch .pagenav{border-top-color:rgba(7,10,10,.16)}
body.merch .pagenav a{color:rgba(7,10,10,.66)}
body.merch .pagenav a:hover,body.merch .pagenav a[aria-current]{color:var(--coral-deep)}

/* ---- what the money builds ---- */
.builds{margin-top:60px;padding-top:30px;border-top:1px solid rgba(240,129,92,.4)}
.builds h2{font-family:"Big Shoulders Display",Impact,sans-serif;font-weight:800;
  font-size:clamp(30px,9vw,46px);line-height:.88;text-transform:uppercase;margin:0}
.builds .say{margin-top:14px;max-width:40ch;font-size:12px;font-weight:500;line-height:2;
  letter-spacing:.04em;color:rgba(234,226,208,.66)}
.builds ol{list-style:none;margin:28px 0 0;padding:0;counter-reset:b}
.builds li{display:flex;gap:16px;align-items:baseline;padding:15px 0;
  border-bottom:1px solid rgba(234,226,208,.14)}
.builds li::before{counter-increment:b;content:counter(b,decimal-leading-zero);
  font-size:10px;font-weight:500;letter-spacing:.16em;color:rgba(234,226,208,.35);flex:0 0 26px}
.builds .item{flex:1;font-size:12px;font-weight:700;letter-spacing:.06em;line-height:1.6}
.builds .item small{display:block;margin-top:5px;font-weight:500;font-size:10px;
  letter-spacing:.1em;color:rgba(234,226,208,.5);text-transform:none}
.builds .state{font-size:9px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
  color:rgba(234,226,208,.38);white-space:nowrap}
.builds .state.on{color:var(--coral)}

/* ---- follow ---- */
.follow{display:flex;align-items:center;justify-content:space-between;gap:18px;
  min-height:64px;margin-top:36px;padding:0 18px;white-space:nowrap;
  border:1px solid rgba(240,129,92,.55);color:var(--cream);text-decoration:none;
  font-size:11.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  transition:background .18s ease,color .18s ease}
.follow:hover{background:var(--coral);color:var(--ink);border-color:var(--coral)}
.follow span{color:var(--coral);font-weight:500;font-size:9px;letter-spacing:.1em}
.follow:hover span{color:var(--ink)}

body.merch .say a{color:var(--coral-deep);text-decoration:none;
  border-bottom:1px solid rgba(222,96,62,.45);font-weight:700}
body.merch .say a:hover{color:var(--ink);border-color:var(--ink)}
