/* =====================================================================
   drop-shop — "Nightfall"
   Dark, cinematic hype / limited-drop store.
   Display: Anton (massive condensed grotesk).  Body: Space Grotesk.
   Palette: near-black + ONE accent: acid green (#c6f24e). Glow, grain.
   Signature: coverflow fan carousel + countdown.
   ===================================================================== */

/* Unbranded defaults for the two operator colour slots.
   The layout injects ONLY the slots the operator actually set
   (storefront/_preview/palette.html.twig, fed by
   StorefrontContext::site() -> PreviewParams::colorsFromQuery, which returns []
   for an unbranded load), so --brand / --secondary are UNDEFINED on a plain
   storefront and every bare `var(--brand)` below silently drops its whole
   declaration. CASCADE LAYER on purpose: unlayered declarations always beat
   layered ones regardless of source order, so the operator's inline <head>
   :root still wins, while a plain :root copy here would cascade AFTER it and
   clobber ?brand=. Values match the var() fallbacks already used below and
   design/theme-previews/drop-shop/styles.css. */
@layer storegrid-theme-defaults {
  :root {
    --brand: #c6f24e;
    --secondary: #ff2d6b;
  }
}

:root {
  /* Editable palette (3 slots). The first two ids MUST stay brand/secondary —
     they're injected per-request by _layout's inline <head> style (BEFORE this
     linked sheet) from the operator's colours, and are NOT redeclared here (a
     :root copy would cascade later and CLOBBER the operator value, killing
     ?brand=). The 3rd slot (--surface) has no runtime injection yet, so its
     var() fallback holds the Nightfall canvas until edge-dev pushes it.

       brand     → --acid : the signature accent (glow/shadow/dim derive from it)
       secondary → --live : the live/urgency signal (countdown pulse + sold flags)
       surface   → --canvas : the near-black backdrop the whole dark layer rides on
  */
  --acid: var(--brand, #c6f24e);
  --acid-dim: color-mix(in srgb, var(--brand, #c6f24e) 72%, #000);
  --live: var(--secondary, #ff2d6b);
  --canvas: var(--surface, #0a0b09);
  --bg: var(--canvas);
  --bg-2: color-mix(in srgb, var(--canvas) 88%, #fff);
  --panel: #15171300;
  --surface-2: #16181400;
  --ink: #f3f5ee;
  --ink-soft: #9aa092;
  --ink-faint: #5e6358;
  --line: rgba(255,255,255,.09);
  --line-2: rgba(255,255,255,.14);
  --glow: 0 0 0 1px color-mix(in srgb, var(--brand) 30%, transparent), 0 0 30px color-mix(in srgb, var(--brand) 25%, transparent);
  --max: 1340px;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
body {
  font-family: "Space Grotesk", system-ui, sans-serif;
  background: var(--bg);
  color: var(--ink);
  line-height: 1.55;
  overflow-x: hidden;
}
/* film grain + vignette */
body::before {
  content: ""; position: fixed; inset: 0; z-index: 1; pointer-events: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/></filter><rect width='120' height='120' filter='url(%23n)' opacity='0.04'/></svg>");
  mix-blend-mode: overlay; opacity: .6;
}
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
.display { font-family: "Anton", "Arial Narrow", sans-serif; font-weight: 400; letter-spacing: .01em; text-transform: uppercase; }
.wrap { max-width: var(--max); margin: 0 auto; padding-inline: clamp(16px, 3vw, 40px); position: relative; z-index: 2; }

/* ---------------- ticker ---------------- */
.ticker { background: var(--acid); color: var(--canvas); font-weight: 700; font-size: 12.5px; letter-spacing: .04em; text-transform: uppercase; overflow: hidden; white-space: nowrap; }
.ticker .run { display: inline-block; padding: 8px 0; animation: marquee 26s linear infinite; }
.ticker .run span { padding-inline: 28px; }
.ticker .run span::before { content: "✦"; margin-right: 28px; }
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* ---------------- header ---------------- */
header.site { position: sticky; top: 0; z-index: 40; background: rgba(10,11,9,.7); backdrop-filter: blur(14px); border-bottom: 1px solid var(--line); }
.nav { display: flex; align-items: center; justify-content: space-between; height: 70px; }
.logo { font-family: "Anton", sans-serif; text-transform: uppercase; font-size: 26px; letter-spacing: .04em; display: inline-flex; align-items: center; gap: 8px; }
.logo .dot { width: 10px; height: 10px; border-radius: 50%; background: var(--acid); box-shadow: 0 0 14px var(--acid); }
.nav-links { display: flex; gap: 30px; }
.nav-links a { font-size: 13.5px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--ink-soft); position: relative; transition: color .2s; }
.nav-links a:hover { color: var(--ink); }
.nav-links a::after { content: ""; position: absolute; left: 0; bottom: -6px; width: 0; height: 2px; background: var(--acid); transition: width .25s; }
.nav-links a:hover::after { width: 100%; }
.nav-right { display: flex; align-items: center; gap: 14px; }
.cart-pill { display: inline-flex; align-items: center; gap: 8px; border: 1px solid var(--line-2); padding: 8px 14px; border-radius: 100px; font-size: 13px; font-weight: 600; cursor: pointer; transition: border-color .2s, background .2s; }
.cart-pill:hover { border-color: var(--acid); background: color-mix(in srgb, var(--brand) 6%, transparent); }
.cart-pill svg { width: 17px; height: 17px; stroke: var(--acid); }
.burger { display: none; background: none; border: 0; cursor: pointer; }
.burger svg { width: 24px; height: 24px; stroke: var(--ink); }

/* ---------------- buttons ---------------- */
.btn { display: inline-flex; align-items: center; gap: 10px; padding: 15px 28px; border-radius: 100px; font-weight: 700; font-size: 14px; letter-spacing: .02em; text-transform: uppercase; cursor: pointer; border: 1.5px solid transparent; transition: transform .2s, box-shadow .25s, background .2s, color .2s; }
.btn-acid { background: var(--acid); color: var(--canvas); }
.btn-acid:hover { transform: translateY(-3px); box-shadow: 0 0 36px color-mix(in srgb, var(--brand) 50%, transparent); }
.btn-out { background: transparent; color: var(--ink); border-color: var(--line-2); }
.btn-out:hover { border-color: var(--acid); color: var(--acid); }

/* ---------------- hero ---------------- */
.hero { position: relative; min-height: clamp(620px, 96vh, 940px); display: flex; flex-direction: column; justify-content: center; overflow: hidden; }
.hero-bg { position: absolute; inset: 0; z-index: 0; }
.hero-bg img { width: 100%; height: 100%; object-fit: cover; opacity: .42; filter: saturate(.85) contrast(1.05); }
.hero-bg::after { content: ""; position: absolute; inset: 0; background: radial-gradient(120% 90% at 50% 0%, rgba(10,11,9,.2), rgba(10,11,9,.92) 70%), linear-gradient(0deg, var(--bg) 4%, transparent 50%); }
.hero-glow { position: absolute; z-index: 0; width: 70vw; height: 70vw; max-width: 820px; max-height: 820px; left: 50%; top: 30%; transform: translate(-50%,-50%); background: radial-gradient(circle, color-mix(in srgb, var(--brand) 16%, transparent), transparent 60%); filter: blur(20px); pointer-events: none; }
/* operator brand-tinted halo — the visible signal that ?brand= is honored.
   Sits behind the acid glow so the drop-shop identity stays dominant. */
.hero-glow::after { content: ""; position: absolute; inset: 0; left: 50%; top: 55%; width: 60%; height: 60%; transform: translate(-50%,-50%); border-radius: 50%; background: radial-gradient(circle, color-mix(in srgb, var(--brand) 26%, transparent), transparent 62%); }
.hero-inner { position: relative; z-index: 3; text-align: center; padding-top: clamp(40px, 7vh, 90px); }
.hero-kicker { display: inline-flex; align-items: center; gap: 10px; font-size: 12.5px; font-weight: 700; letter-spacing: .22em; text-transform: uppercase; color: var(--acid); margin-bottom: 24px; }
.hero-kicker .ln { width: 30px; height: 1px; background: var(--acid); }
.hero h1 { font-family: "Anton", sans-serif; text-transform: uppercase; font-size: clamp(58px, 13vw, 188px); line-height: .92; letter-spacing: -.01em; }
.hero h1 .stroke { color: transparent; -webkit-text-stroke: 2px var(--ink); }
.hero h1 .acid { color: var(--acid); text-shadow: 0 0 60px color-mix(in srgb, var(--brand) 40%, transparent); }
.hero p { max-width: 50ch; margin: 26px auto 0; color: var(--ink-soft); font-size: clamp(14px, 1.4vw, 17px); }
.hero-cta { margin-top: 34px; display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }
.countdown-chip { margin: 30px auto 0; display: inline-flex; align-items: center; gap: 12px; background: rgba(20,22,18,.7); border: 1px solid var(--line-2); border-radius: 100px; padding: 9px 9px 9px 18px; font-size: 12.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); }
.countdown-chip .live { width: 8px; height: 8px; border-radius: 50%; background: var(--live); box-shadow: 0 0 10px var(--live); animation: pulse 1.4s infinite; }
@keyframes pulse { 0%,100% { opacity: 1; } 50% { opacity: .3; } }
.countdown-chip .clock { display: inline-flex; gap: 5px; }
.countdown-chip .clock b { font-family: "Space Grotesk", monospace; background: color-mix(in srgb, var(--brand) 12%, transparent); color: var(--acid); border-radius: 8px; padding: 6px 9px; font-size: 14px; font-weight: 700; font-variant-numeric: tabular-nums; }

/* ---------------- coverflow / fan carousel ---------------- */
/* The margin-bottom is the controls' room. They are absolutely positioned at
   top:100% below, and .hero clips its overflow, so without it they would be
   cut off on any viewport where the hero is content-height (390px is). */
.coverflow { position: relative; z-index: 3; margin-top: clamp(28px, 4vw, 56px); margin-bottom: 70px; height: clamp(320px, 42vw, 440px); }
.cf-stage { position: relative; height: 100%; perspective: 1600px; }
.cf-card {
  position: absolute; top: 0; left: 50%; width: clamp(200px, 22vw, 280px); height: 100%;
  border-radius: 20px; overflow: hidden; cursor: pointer;
  transform-style: preserve-3d;
  transition: transform .55s cubic-bezier(.2,.8,.2,1), opacity .55s, box-shadow .55s, filter .55s;
  border: 1px solid var(--line);
}
.cf-card img { width: 100%; height: 100%; object-fit: cover; }
.cf-card::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(10,11,9,.92) 6%, rgba(10,11,9,.1) 55%); }
.cf-card .cf-meta { position: absolute; left: 18px; right: 18px; bottom: 18px; z-index: 2; opacity: 0; transform: translateY(8px); transition: opacity .4s, transform .4s; }
.cf-card .cf-meta .tag { font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--acid); font-weight: 700; }
.cf-card .cf-meta h3 { font-family: "Anton", sans-serif; text-transform: uppercase; font-size: 22px; line-height: 1; margin: 6px 0 12px; }
.cf-card .cf-meta .view { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--canvas); background: var(--acid); padding: 8px 14px; border-radius: 100px; }
.cf-card.is-center { box-shadow: 0 0 0 1px color-mix(in srgb, var(--brand) 50%, transparent), 0 30px 80px -20px rgba(0,0,0,.8), 0 0 60px color-mix(in srgb, var(--brand) 25%, transparent); }
.cf-card.is-center .cf-meta { opacity: 1; transform: none; }
.cf-card:not(.is-center) { filter: brightness(.55) saturate(.8); }
/* Below the stage, not over it. `bottom: -8px` put the buttons' 52px bodies
   8px up from the card's foot, which is exactly where .cf-meta parks the
   "View product" CTA — the two arrows sat on top of the CTA's label at every
   width. top:100% clears the card entirely. */
.cf-controls { position: absolute; z-index: 5; top: 100%; margin-top: 14px; left: 50%; transform: translateX(-50%); display: flex; gap: 14px; }
.cf-btn { width: 52px; height: 52px; border-radius: 50%; border: 1px solid var(--line-2); background: rgba(20,22,18,.7); backdrop-filter: blur(6px); color: var(--ink); display: grid; place-items: center; cursor: pointer; transition: background .2s, transform .2s, border-color .2s; }
.cf-btn:hover { background: var(--acid); color: var(--canvas); border-color: var(--acid); transform: scale(1.06); }
.cf-btn svg { width: 22px; height: 22px; stroke: currentColor; }

/* ---------------- top drops ---------------- */
.section { padding-block: clamp(60px, 9vw, 130px); }
.sec-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: clamp(28px, 4vw, 50px); flex-wrap: wrap; }
.sec-head .eye { font-size: 12.5px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--acid); display: block; margin-bottom: 14px; }
.sec-head h2 { font-family: "Anton", sans-serif; text-transform: uppercase; font-size: clamp(40px, 6.5vw, 88px); line-height: .96; letter-spacing: -.01em; }
.sec-head h2 .stroke { color: transparent; -webkit-text-stroke: 1.5px var(--ink-soft); }
.drop-timer { display: inline-flex; align-items: center; gap: 8px; border: 1px solid var(--line-2); border-radius: 100px; padding: 10px 16px; font-size: 12.5px; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-soft); }
.drop-timer .mono { font-variant-numeric: tabular-nums; color: var(--acid); font-weight: 700; }

.drops { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(14px, 1.6vw, 22px); }
.drop { position: relative; background: var(--bg-2); border: 1px solid var(--line); border-radius: 18px; overflow: hidden; transition: transform .35s cubic-bezier(.2,.8,.2,1), border-color .35s, box-shadow .35s; }
.drop:hover { transform: translateY(-8px); border-color: var(--acid); box-shadow: 0 24px 60px -28px color-mix(in srgb, var(--brand) 30%, transparent); }
.drop-media { position: relative; aspect-ratio: 1/1.1; overflow: hidden; background: #000; }
.drop-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s, opacity .4s; opacity: .92; }
.drop:hover .drop-media img { transform: scale(1.06); opacity: 1; }
.drop .heat { position: absolute; top: 12px; left: 12px; z-index: 2; background: rgba(10,11,9,.7); backdrop-filter: blur(4px); border: 1px solid var(--line-2); color: var(--acid); font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; padding: 5px 10px; border-radius: 100px; }
.drop .sold { position: absolute; top: 12px; right: 12px; z-index: 2; background: var(--live); color: #fff; font-size: 11px; font-weight: 800; padding: 5px 10px; border-radius: 100px; }
.drop-body { padding: 16px 16px 18px; }
.drop-body .label { font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-faint); }
.drop-body h3 { font-family: "Anton", sans-serif; text-transform: uppercase; font-size: 20px; line-height: 1.04; margin: 6px 0 12px; }
.drop-foot { display: flex; align-items: center; justify-content: space-between; }
.drop-price { font-size: 17px; font-weight: 700; font-variant-numeric: tabular-nums; }
.drop-cart { width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--line-2); background: transparent; color: var(--ink); display: grid; place-items: center; cursor: pointer; transition: background .2s, color .2s, transform .2s; }
.drop-cart:hover { background: var(--acid); color: var(--canvas); transform: scale(1.08); }
.drop-cart svg { width: 18px; height: 18px; stroke: currentColor; }

/* ---------------- waitlist band ---------------- */
.waitlist { position: relative; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); overflow: hidden; }
.waitlist::before { content: ""; position: absolute; inset: 0; background: radial-gradient(60% 120% at 50% 120%, color-mix(in srgb, var(--brand) 14%, transparent), transparent 60%); }
.waitlist .wrap { text-align: center; padding-block: clamp(56px, 9vw, 110px); position: relative; z-index: 2; }
.waitlist h2 { font-family: "Anton", sans-serif; text-transform: uppercase; font-size: clamp(38px, 7vw, 96px); line-height: .96; }
.waitlist h2 .acid { color: var(--acid); }
.waitlist p { color: var(--ink-soft); max-width: 46ch; margin: 18px auto 0; }
.wl-form { margin-top: 30px; display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
.wl-form input { background: var(--bg-2); border: 1px solid var(--line-2); border-radius: 100px; padding: 15px 24px; color: var(--ink); font-size: 15px; min-width: 300px; font-family: inherit; outline: none; transition: border-color .2s; }
.wl-form input:focus { border-color: var(--acid); }
.wl-form input::placeholder { color: var(--ink-faint); }

/* ---------------- footer ---------------- */
footer.foot { padding-block: clamp(40px, 5vw, 64px) 0; }
.foot-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 30px; flex-wrap: wrap; padding-bottom: 36px; border-bottom: 1px solid var(--line); }
.foot-top .logo { font-size: 40px; }
.foot-links { display: flex; gap: clamp(34px, 5vw, 70px); flex-wrap: wrap; }
.foot-links h4 { font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-faint); margin-bottom: 14px; }
.foot-links ul { list-style: none; display: flex; flex-direction: column; gap: 10px; }
.foot-links a { font-size: 14px; color: var(--ink-soft); transition: color .2s; }
.foot-links a:hover { color: var(--acid); }
.foot-bottom { padding-block: 22px; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 10px; font-size: 12.5px; color: var(--ink-faint); }

/* reveal */
.reveal { opacity: 0; transform: translateY(28px); transition: opacity .8s cubic-bezier(.2,.8,.2,1), transform .8s cubic-bezier(.2,.8,.2,1); }
.reveal.in { opacity: 1; transform: none; }

/* Preview marker — _layout emits `<div class="preview-ribbon">` under ?preview=1.
   BOTTOM-LEFT, which is the only free corner on every page: the top edge is the
   ticker followed by `header.site` (sticky, top: 0, z-40), so a top-corner mark
   lands on the logo or the cart pill at some scroll position; `.to-top` (z-40)
   holds bottom-right and `.toast` (z-120) the bottom centre. The offsets are
   `.to-top`'s exactly, so the two fixed corner marks share one spacing rhythm.
   z-index 30 clears `main` (2) and the grain overlay (1) and stays under the
   header and `.to-top` (40) and `.toast` (120), all of which are root-level like
   the marker itself; pointer-events: none keeps every control beneath it
   clickable. The overlay is a separate problem — see below the rule.
   Built from this theme's own status-chip devices rather than a ribbon shape:
   `.heat`'s blurred near-black capsule and hairline, the logo's glowing acid
   dot, and the word in Anton — the display face, and the one no other theme's
   marker uses. The label is `--ink`, not the brand-filled slab the other themes
   fill their marker with: drop-shop's brand slot IS the accent on a near-black
   canvas, so a pale operator brand would leave that pattern white-on-white.
   Here the operator colour rides the dot and the glow ring, where legibility
   does not depend on it.
   Near-opaque where `.heat` sits at .7: `.heat` floats over product imagery,
   while this parks over the footer's copyright line at the foot of every page,
   and a .7 chip ghosted that line through the label.
   The only motion is the opacity fade below, which answers opening the image
   viewer; reduced motion drops it. */
.preview-ribbon {
  position: fixed; left: clamp(16px, 3vw, 30px); bottom: clamp(16px, 3vw, 30px);
  z-index: 30; pointer-events: none;
  display: flex; align-items: center; gap: 9px;
  padding: 9px 18px 9px 15px; border-radius: 100px;
  background: rgba(10,11,9,.93); backdrop-filter: blur(10px);
  border: 1px solid var(--line-2);
  box-shadow: 0 18px 40px -20px rgba(0,0,0,.8), var(--glow);
  font-family: "Anton", "Arial Narrow", sans-serif; font-weight: 400;
  font-size: 13px; letter-spacing: .1em; text-transform: uppercase;
  line-height: 1; color: var(--ink);
  transition: opacity .3s ease;
}
.preview-ribbon::before {
  content: ""; width: 8px; height: 8px; border-radius: 50%;
  background: var(--acid); box-shadow: 0 0 12px var(--acid);
}
/* …and steps aside for the one overlay this theme has. The marker is genuinely
   underneath it now — the lightbox renders in the layout's `overlays` block,
   outside `main`, so its z-index 200 is scored against the root and beats this
   30 (t-0dv0n8; before that move `main`'s own stacking context trapped it and
   the marker painted ON TOP of the open viewer). But the overlay's film is
   rgba(6,7,5,.94), not opaque: at full opacity the chip still ghosts through it
   at the bottom-left, as the header does. Fading it out keeps the viewer clean,
   returns the marker the moment the viewer closes, and runs on the lightbox's
   own timing so it reads as part of that one interaction. */
body:has(.lightbox.open) .preview-ribbon { opacity: 0; }
@media (prefers-reduced-motion: reduce) { .preview-ribbon { transition: none; } }

/* flash toast (server-rendered one-shot) */
.toast {
  position: fixed; left: 50%; bottom: 26px; transform: translateX(-50%); z-index: 120;
  background: var(--acid); color: var(--canvas); font-weight: 700; font-size: 13.5px;
  letter-spacing: .02em; padding: 13px 22px; border-radius: 100px;
  box-shadow: 0 20px 60px -20px rgba(0,0,0,.7), var(--glow); max-width: min(92vw, 460px); text-align: center;
}
.toast--error { background: #ff6b6b; color: #160606; box-shadow: 0 20px 60px -20px rgba(0,0,0,.7), 0 0 0 1px rgba(255,107,107,.4), 0 0 30px rgba(255,107,107,.3); }

/* mobile nav drawer (burger-toggled) */
@media (max-width: 720px) {
  .nav-links.open {
    display: flex; flex-direction: column; gap: 0;
    position: absolute; left: 0; right: 0; top: 100%;
    background: rgba(10,11,9,.96); backdrop-filter: blur(14px);
    border-bottom: 1px solid var(--line); padding: 8px 0;
  }
  .nav-links.open a { padding: 14px clamp(16px, 3vw, 40px); }
}

/* responsive */
@media (max-width: 1000px) {
  .drops { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 720px) {
  .nav-links { display: none; }
  .burger { display: block; }
  .cart-pill span.lbl { display: none; }
  .coverflow { height: clamp(300px, 70vw, 380px); }
  .cf-card { width: clamp(170px, 56vw, 220px); }
}
@media (max-width: 520px) {
  .drops { grid-template-columns: 1fr 1fr; gap: 10px; }
  .hero h1 { font-size: clamp(52px, 18vw, 90px); }
}

/* =====================================================================
   INNER PAGES — shared scaffolding (Nightfall / drop-shop)
   Carries the homepage DNA: Anton display, acid accent, grain, glow,
   pill buttons, hard contrast, tabular numerics.
   ===================================================================== */

/* footer brand block */
.foot-brand { max-width: 360px; }
.foot-brand p { margin: 16px 0 18px; color: var(--ink-soft); font-size: 14px; line-height: 1.6; }
.foot-social { display: flex; gap: 10px; }
.foot-social a { width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--line-2); display: grid; place-items: center; color: var(--ink-soft); transition: border-color .2s, color .2s, transform .2s; }
.foot-social a:hover { border-color: var(--acid); color: var(--acid); transform: translateY(-2px); }
.foot-social svg { width: 18px; height: 18px; stroke: currentColor; }
@media (max-width: 720px) { .foot-brand { max-width: 100%; } }

/* generic main spacing on inner pages.
   This z-index lifts the page off the fixed film-grain layer (`body::before`,
   z-index 1) and is therefore load-bearing for the theme's texture — but it also
   makes `main` a stacking context, so anything nested in it meets root-level
   fixed chrome at 2, not at its own z-index. Full-screen overlays consequently
   render in the layout's `overlays` block, outside `main`; ThemeOverlayStackingTest
   holds that. */
main { position: relative; z-index: 2; }
.btn-block { width: 100%; justify-content: center; }
.btn-sm { padding: 10px 18px; font-size: 12.5px; }

/* page sub-hero / banner ------------------------------------------------ */
.page-head { position: relative; padding-block: clamp(50px, 8vw, 96px) clamp(28px, 4vw, 44px); overflow: hidden; border-bottom: 1px solid var(--line); }
.page-head::before { content: ""; position: absolute; inset: 0; z-index: 0; background: radial-gradient(70% 130% at 18% -10%, color-mix(in srgb, var(--brand) 12%, transparent), transparent 55%), radial-gradient(60% 120% at 92% -10%, color-mix(in srgb, var(--brand) 16%, transparent), transparent 55%); }
.page-head .wrap { position: relative; z-index: 2; }
.crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 12px; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-faint); margin-bottom: 22px; }
.crumbs a { color: var(--ink-soft); transition: color .2s; }
.crumbs a:hover { color: var(--acid); }
.crumbs .sep { color: var(--ink-faint); }
.crumbs .cur { color: var(--ink); }
.page-eye { font-size: 12.5px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--acid); display: block; margin-bottom: 14px; }
.page-title { font-family: "Anton", sans-serif; text-transform: uppercase; font-size: clamp(42px, 8vw, 110px); line-height: .96; letter-spacing: -.01em; }
.page-title .stroke { color: transparent; -webkit-text-stroke: 1.5px var(--ink-soft); }
.page-title .acid { color: var(--acid); text-shadow: 0 0 50px color-mix(in srgb, var(--brand) 35%, transparent); }
.page-lead { max-width: 56ch; margin-top: 20px; color: var(--ink-soft); font-size: clamp(14px, 1.3vw, 16px); }

/* surfaces / cards reused widely */
.panel { background: var(--bg-2); border: 1px solid var(--line); border-radius: 18px; }
.panel-pad { padding: clamp(20px, 3vw, 32px); }

/* form controls (dark, premium) --------------------------------------- */
.field { display: flex; flex-direction: column; gap: 8px; }
.field label, .lbl-up { font-size: 11.5px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-soft); }
.input, .select, .textarea { width: 100%; background: #0d0f0c; border: 1px solid var(--line-2); border-radius: 12px; padding: 14px 16px; color: var(--ink); font-family: inherit; font-size: 15px; outline: none; transition: border-color .2s, box-shadow .2s, background .2s; }
.input::placeholder, .textarea::placeholder { color: var(--ink-faint); }
.input:focus, .select:focus, .textarea:focus { border-color: var(--acid); box-shadow: 0 0 0 3px color-mix(in srgb, var(--brand) 16%, transparent); background: #101310; }
.textarea { resize: vertical; min-height: 130px; line-height: 1.55; }
.select { appearance: none; background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%239aa092' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>"); background-repeat: no-repeat; background-position: right 14px center; padding-right: 40px; cursor: pointer; }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.field-row-3 { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 14px; }
.form-grid { display: grid; gap: 16px; }
.help { font-size: 12.5px; color: var(--ink-faint); }
.help a { color: var(--acid); }
@media (max-width: 560px) { .field-row, .field-row-3 { grid-template-columns: 1fr; } }

/* ===================== PRODUCTS LISTING =============================== */
.shop-bar { display: flex; align-items: center; justify-content: space-between; gap: 18px; flex-wrap: wrap; margin-bottom: clamp(22px, 3vw, 36px); }
.chips { display: flex; gap: 8px; flex-wrap: wrap; }
.chip { border: 1px solid var(--line-2); background: transparent; color: var(--ink-soft); border-radius: 100px; padding: 9px 18px; font-size: 12.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; cursor: pointer; transition: all .2s; }
.chip:hover { color: var(--ink); border-color: var(--ink-soft); }
.chip.is-active { background: var(--acid); color: var(--canvas); border-color: var(--acid); box-shadow: 0 0 24px color-mix(in srgb, var(--brand) 30%, transparent); }
.shop-tools { display: flex; align-items: center; gap: 14px; }
.shop-count { font-size: 13px; color: var(--ink-faint); letter-spacing: .04em; text-transform: uppercase; white-space: nowrap; }
.shop-tools .select { width: auto; min-width: 168px; padding-block: 11px; }

.grid-products { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(14px, 1.6vw, 22px); }
.pcard { position: relative; background: var(--bg-2); border: 1px solid var(--line); border-radius: 18px; overflow: hidden; display: flex; flex-direction: column; transition: transform .35s cubic-bezier(.2,.8,.2,1), border-color .35s, box-shadow .35s; }
.pcard:hover { transform: translateY(-8px); border-color: var(--acid); box-shadow: 0 24px 60px -28px color-mix(in srgb, var(--brand) 30%, transparent); }
.pcard-media { position: relative; aspect-ratio: 1/1.12; overflow: hidden; background: #000; display: block; }
.pcard-media img { width: 100%; height: 100%; object-fit: cover; opacity: .92; transition: transform .6s, opacity .4s; }
.pcard:hover .pcard-media img { transform: scale(1.06); opacity: 1; }
.pcard .badge-sale { position: absolute; top: 12px; left: 12px; z-index: 2; background: var(--acid); color: var(--canvas); font-size: 11px; font-weight: 800; letter-spacing: .04em; padding: 5px 10px; border-radius: 100px; }
.pcard-body { padding: 15px 16px 18px; display: flex; flex-direction: column; flex: 1; }
.pcard-cat { font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-faint); }
.pcard-name { font-family: "Anton", sans-serif; text-transform: uppercase; font-size: 19px; line-height: 1.04; margin: 6px 0 4px; }
.pcard-name a:hover { color: var(--acid); }
.pcard-desc { font-size: 12.5px; color: var(--ink-soft); line-height: 1.45; margin-bottom: 14px; flex: 1; }
.pcard-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: auto; }
.price { font-size: 17px; font-weight: 700; font-variant-numeric: tabular-nums; }
.price .was { color: var(--ink-faint); text-decoration: line-through; font-weight: 500; font-size: 13px; margin-right: 7px; }
.add-mini { display: inline-flex; align-items: center; gap: 7px; border: 1px solid var(--line-2); background: transparent; color: var(--ink); border-radius: 100px; padding: 8px 14px; font-size: 11.5px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; cursor: pointer; transition: all .2s; }
.add-mini:hover { background: var(--acid); color: var(--canvas); border-color: var(--acid); }
.add-mini svg { width: 15px; height: 15px; stroke: currentColor; }

/* ===================== PRODUCT DETAIL ================================= */
.pdp { display: grid; grid-template-columns: 1.05fr .95fr; gap: clamp(28px, 4vw, 60px); align-items: start; padding-block: clamp(34px, 5vw, 60px); }
.gallery { position: sticky; top: 92px; }
.gallery-main { position: relative; border: 1px solid var(--line); border-radius: 20px; overflow: hidden; aspect-ratio: 1/1.12; background: #000; cursor: zoom-in; }
.gallery-main img { width: 100%; height: 100%; object-fit: cover; }
.gallery-main .zoom-hint { position: absolute; bottom: 14px; right: 14px; z-index: 2; display: inline-flex; align-items: center; gap: 7px; background: rgba(10,11,9,.7); backdrop-filter: blur(6px); border: 1px solid var(--line-2); color: var(--ink-soft); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; padding: 7px 12px; border-radius: 100px; }
.gallery-main .zoom-hint svg { width: 14px; height: 14px; stroke: currentColor; }
.thumbs { display: flex; gap: 12px; margin-top: 14px; }
.thumb { width: 84px; height: 84px; border-radius: 14px; overflow: hidden; border: 1px solid var(--line-2); cursor: pointer; padding: 0; background: #000; opacity: .6; transition: opacity .2s, border-color .2s, transform .2s; }
.thumb img { width: 100%; height: 100%; object-fit: cover; }
.thumb:hover { opacity: .9; transform: translateY(-2px); }
.thumb.is-active { opacity: 1; border-color: var(--acid); box-shadow: var(--glow); }

.pdp-info .pdp-cat { font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--acid); font-weight: 700; }
.pdp-info h1 { font-family: "Anton", sans-serif; text-transform: uppercase; font-size: clamp(36px, 5vw, 64px); line-height: .98; margin: 10px 0 14px; }
.pdp-tagline { color: var(--ink-soft); font-size: 16px; max-width: 46ch; }
.pdp-price { display: flex; align-items: baseline; gap: 12px; margin: 22px 0 6px; }
.pdp-price .now { font-size: 30px; font-weight: 700; font-variant-numeric: tabular-nums; }
.pdp-price .was { font-size: 18px; color: var(--ink-faint); text-decoration: line-through; }
.pdp-price .off { font-size: 11px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; background: var(--acid); color: var(--canvas); padding: 4px 9px; border-radius: 100px; }

.variant { margin-top: 22px; }
.variant .v-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 12px; }
.variant .v-head .lbl-up { color: var(--ink-soft); }
.variant .v-head .sel { font-size: 13px; color: var(--ink); font-weight: 600; }
/* Colour picker: always a dropdown (t-0dzech) — the theme's own dark .select
   (acid focus ring, drawn chevron), set in the pills' display face. */
.variant .opt-select { max-width: 320px; font-family: "Space Grotesk", sans-serif; font-weight: 700; }
.sizes { display: flex; gap: 10px; flex-wrap: wrap; }
.size { min-width: 50px; height: 46px; padding: 0 12px; border-radius: 12px; border: 1px solid var(--line-2); background: transparent; color: var(--ink); font-family: "Space Grotesk", sans-serif; font-weight: 700; font-size: 14px; cursor: pointer; transition: all .2s; }
.size:hover:not(:disabled) { border-color: var(--ink-soft); }
.size.is-active { background: var(--acid); color: var(--canvas); border-color: var(--acid); }
.size:disabled { color: var(--ink-faint); cursor: not-allowed; position: relative; opacity: .55; }
.size:disabled::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top left, transparent calc(50% - .5px), var(--line-2) calc(50% - .5px), var(--line-2) calc(50% + .5px), transparent calc(50% + .5px)); }
.size-guide { margin-left: auto; font-size: 12px; color: var(--ink-soft); text-decoration: underline; text-underline-offset: 3px; }
/* Combination sold-out notice + disabled buy state for the dynamic picker. */
.combo-oos { margin: 16px 0 0; font-size: 12.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: #ff6a6a; }
.buy-row .btn:disabled, .summary .btn:disabled { background: transparent; color: var(--ink-faint); border: 1px solid var(--line-2); cursor: not-allowed; transform: none; box-shadow: none; }
.buy-row .btn:disabled:hover, .summary .btn:disabled:hover { transform: none; box-shadow: none; border-color: var(--line-2); color: var(--ink-faint); }

.qty { display: inline-flex; align-items: center; border: 1px solid var(--line-2); border-radius: 12px; overflow: hidden; }
.qty button { width: 44px; height: 48px; background: transparent; border: 0; color: var(--ink); font-size: 20px; cursor: pointer; transition: background .2s, color .2s; }
.qty button:hover { background: var(--acid); color: var(--canvas); }
.qty input { width: 48px; height: 48px; text-align: center; background: transparent; border: 0; color: var(--ink); font-family: "Space Grotesk", sans-serif; font-weight: 700; font-size: 16px; font-variant-numeric: tabular-nums; -moz-appearance: textfield; }
.qty input::-webkit-outer-spin-button, .qty input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

.buy-row { display: flex; gap: 14px; align-items: stretch; margin-top: 26px; flex-wrap: wrap; }
.buy-row .qty { height: 54px; }
.buy-row .qty button, .buy-row .qty input { height: 54px; }
.buy-row .btn { flex: 1; min-width: 160px; }
.assurance { display: flex; flex-wrap: wrap; gap: 18px; margin-top: 22px; padding-top: 20px; border-top: 1px solid var(--line); }
.assurance .a-item { display: flex; align-items: center; gap: 9px; font-size: 12.5px; color: var(--ink-soft); }
.assurance svg { width: 17px; height: 17px; stroke: var(--acid); }

/* accordion (details / FAQ / order rows) */
.accordion { border-top: 1px solid var(--line); margin-top: 30px; }
.acc-item { border-bottom: 1px solid var(--line); }
.acc-head { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 14px; background: none; border: 0; color: var(--ink); padding: 20px 2px; cursor: pointer; text-align: left; font-family: "Anton", sans-serif; text-transform: uppercase; font-size: 18px; letter-spacing: .02em; }
.acc-head:hover { color: var(--acid); }
.acc-head .ico { width: 26px; height: 26px; border-radius: 50%; border: 1px solid var(--line-2); display: grid; place-items: center; flex: none; transition: transform .3s, border-color .2s, background .2s; }
.acc-head .ico svg { width: 14px; height: 14px; stroke: currentColor; }
.acc-item.open .acc-head .ico { transform: rotate(45deg); border-color: var(--acid); color: var(--acid); }
.acc-panel { overflow: hidden; max-height: 0; transition: max-height .4s cubic-bezier(.2,.8,.2,1); }
.acc-panel-inner { padding: 0 2px 22px; color: var(--ink-soft); font-size: 14.5px; line-height: 1.7; }
.acc-panel-inner p + p { margin-top: 12px; }
.spec-list { list-style: none; display: grid; gap: 10px; }
.spec-list li { display: flex; gap: 12px; }
.spec-list .k { min-width: 90px; color: var(--ink-faint); font-size: 12px; letter-spacing: .08em; text-transform: uppercase; padding-top: 2px; }

.related { padding-block: clamp(40px, 6vw, 80px); border-top: 1px solid var(--line); }

/* fullscreen lightbox -------------------------------------------------- */
.lightbox { position: fixed; inset: 0; z-index: 200; background: rgba(6,7,5,.94); backdrop-filter: blur(8px); display: none; align-items: center; justify-content: center; opacity: 0; transition: opacity .3s; }
.lightbox.open { display: flex; opacity: 1; }
.lb-stage { position: relative; width: min(92vw, 1000px); height: min(88vh, 1000px); }
.lb-slide { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity .35s; pointer-events: none; }
.lb-slide.active { opacity: 1; pointer-events: auto; }
.lb-slide img { max-width: 100%; max-height: 100%; object-fit: contain; border-radius: 14px; box-shadow: 0 40px 120px -30px rgba(0,0,0,.8); }
.lb-close { position: absolute; top: 22px; right: 22px; z-index: 5; width: 50px; height: 50px; border-radius: 50%; border: 1px solid var(--line-2); background: rgba(20,22,18,.7); color: var(--ink); display: grid; place-items: center; cursor: pointer; transition: all .2s; }
.lb-close:hover { background: var(--acid); color: var(--canvas); border-color: var(--acid); }
.lb-close svg { width: 22px; height: 22px; stroke: currentColor; }
.lb-nav { position: absolute; top: 50%; transform: translateY(-50%); z-index: 5; width: 56px; height: 56px; border-radius: 50%; border: 1px solid var(--line-2); background: rgba(20,22,18,.7); backdrop-filter: blur(6px); color: var(--ink); display: grid; place-items: center; cursor: pointer; transition: all .2s; }
.lb-nav:hover { background: var(--acid); color: var(--canvas); border-color: var(--acid); }
.lb-nav svg { width: 26px; height: 26px; stroke: currentColor; }
.lb-prev { left: 16px; } .lb-next { right: 16px; }
.lb-count { position: absolute; bottom: 18px; left: 50%; transform: translateX(-50%); z-index: 5; font-size: 13px; letter-spacing: .1em; color: var(--ink-soft); font-variant-numeric: tabular-nums; }
.lb-count b { color: var(--acid); }

/* ===================== CART ========================================== */
.cart-layout { display: grid; grid-template-columns: 1.6fr .9fr; gap: clamp(24px, 3vw, 44px); align-items: start; padding-block: clamp(30px, 4vw, 56px); }
.cart-list { display: grid; gap: 14px; }
.cart-item { display: grid; grid-template-columns: 96px 1fr auto; gap: 18px; align-items: center; background: var(--bg-2); border: 1px solid var(--line); border-radius: 16px; padding: 14px; transition: border-color .3s; }
.cart-item:hover { border-color: var(--line-2); }
.cart-thumb { width: 96px; height: 96px; border-radius: 12px; overflow: hidden; background: #000; }
.cart-thumb img { width: 100%; height: 100%; object-fit: cover; }
.ci-name { font-family: "Anton", sans-serif; text-transform: uppercase; font-size: 19px; line-height: 1.05; }
.ci-name a:hover { color: var(--acid); }
.ci-variant { font-size: 12.5px; color: var(--ink-soft); margin: 5px 0 12px; letter-spacing: .03em; }
.ci-controls { display: flex; align-items: center; gap: 14px; }
.ci-right { display: flex; flex-direction: column; align-items: flex-end; gap: 14px; height: 100%; justify-content: space-between; }
.ci-total { font-size: 18px; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ci-remove { background: none; border: 0; color: var(--ink-faint); cursor: pointer; display: inline-flex; align-items: center; gap: 5px; font-size: 12px; letter-spacing: .04em; text-transform: uppercase; transition: color .2s; }
.ci-remove:hover { color: var(--acid); }
.ci-remove svg { width: 15px; height: 15px; stroke: currentColor; }

.summary { position: sticky; top: 92px; }
.summary h3 { font-family: "Anton", sans-serif; text-transform: uppercase; font-size: 24px; margin-bottom: 18px; }
.sum-row { display: flex; justify-content: space-between; align-items: center; padding: 11px 0; font-size: 14.5px; color: var(--ink-soft); border-bottom: 1px dashed var(--line); }
.sum-row .v { color: var(--ink); font-variant-numeric: tabular-nums; }
.sum-row.discount .v { color: var(--acid); }
.sum-total { display: flex; justify-content: space-between; align-items: baseline; padding-top: 18px; margin-top: 6px; }
.sum-total .t-lbl { font-family: "Anton", sans-serif; text-transform: uppercase; font-size: 20px; }
.sum-total .t-val { font-size: 26px; font-weight: 700; font-variant-numeric: tabular-nums; }
.promo-msg { font-size: 12.5px; margin-top: -6px; margin-bottom: 14px; min-height: 16px; }
.promo-msg.ok { color: var(--acid); }
.continue-link { display: inline-flex; align-items: center; gap: 8px; margin-top: 16px; font-size: 13px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--ink-soft); transition: color .2s; }
.continue-link:hover { color: var(--acid); }

.empty-state { text-align: center; padding: clamp(50px, 9vw, 110px) 20px; }
.empty-state .e-ico { width: 80px; height: 80px; margin: 0 auto 24px; border-radius: 50%; border: 1px solid var(--line-2); display: grid; place-items: center; color: var(--acid); }
.empty-state .e-ico svg { width: 36px; height: 36px; stroke: currentColor; }
.empty-state h2 { font-family: "Anton", sans-serif; text-transform: uppercase; font-size: clamp(30px, 5vw, 52px); }
.empty-state p { color: var(--ink-soft); margin: 12px auto 26px; max-width: 40ch; }

/* ===================== CHECKOUT ====================================== */
.checkout-layout { display: grid; grid-template-columns: 1.45fr .9fr; gap: clamp(24px, 3.5vw, 50px); align-items: start; padding-block: clamp(30px, 4vw, 56px); }
.steps { display: grid; gap: 14px; }
.step { background: var(--bg-2); border: 1px solid var(--line); border-radius: 18px; overflow: hidden; transition: border-color .3s, box-shadow .3s; }
.step.active { border-color: var(--acid); box-shadow: 0 0 0 1px color-mix(in srgb, var(--brand) 25%, transparent), 0 24px 60px -30px color-mix(in srgb, var(--brand) 25%, transparent); }
.step.done { border-color: var(--line-2); }
.step-head { display: flex; align-items: center; gap: 14px; padding: 18px 22px; cursor: pointer; }
.step-num { width: 34px; height: 34px; flex: none; border-radius: 50%; border: 1px solid var(--line-2); display: grid; place-items: center; font-family: "Anton", sans-serif; font-size: 16px; color: var(--ink-soft); transition: all .25s; }
.step.active .step-num { background: var(--acid); color: var(--canvas); border-color: var(--acid); }
.step.done .step-num { border-color: var(--acid); color: var(--acid); }
.step.done .step-num::after { content: "✓"; }
.step.done .step-num .n { display: none; }
.step-title { font-family: "Anton", sans-serif; text-transform: uppercase; font-size: 20px; flex: 1; }
/* Edit is a real <button>: it is the step's disclosure control, so it has to be
   keyboard-reachable. Shown on .done only — the step in hand is already open and
   step 4 renders none at all (d-0dtwt4). The 44px tap target is STATED as a
   height rather than guessed at with a negative inset: this glyph box is ~14px,
   so `inset: -14px` would land at 42. */
.step-edit { position: relative; display: none; background: none; border: 0; padding: 0; font-family: inherit; font-size: 12px; letter-spacing: .06em; text-transform: uppercase; color: var(--acid); cursor: pointer; transition: color .2s; }
.step.done .step-edit { display: inline-block; }
.step-edit::after { content: ""; position: absolute; left: -12px; right: -12px; top: 50%; height: 44px; transform: translateY(-50%); }
.step-edit:hover { color: var(--ink); }
.step-edit:focus-visible { outline: 2px solid var(--acid); outline-offset: 3px; }
.step-body { max-height: 0; overflow: hidden; transition: max-height .45s cubic-bezier(.2,.8,.2,1); }
.step.active .step-body { max-height: 1200px; }
.step-body-inner { padding: 4px 22px 24px; }
.step-summary { padding: 0 22px 18px 70px; margin-top: -8px; font-size: 13.5px; color: var(--ink-soft); display: none; }
.step.done .step-summary { display: block; }
.delivery-opt { display: flex; align-items: center; gap: 14px; border: 1px solid var(--line-2); border-radius: 14px; padding: 16px 18px; cursor: pointer; transition: border-color .2s, background .2s; }
.delivery-opt + .delivery-opt { margin-top: 12px; }
.delivery-opt.sel { border-color: var(--acid); background: color-mix(in srgb, var(--brand) 5%, transparent); }
.delivery-opt .radio { width: 20px; height: 20px; border-radius: 50%; border: 1px solid var(--line-2); flex: none; display: grid; place-items: center; transition: border-color .2s; }
.delivery-opt.sel .radio { border-color: var(--acid); }
.delivery-opt.sel .radio::after { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--acid); box-shadow: 0 0 10px var(--acid); }
.delivery-opt .d-name { font-weight: 700; }
.delivery-opt .d-sub { font-size: 12.5px; color: var(--ink-soft); }
.delivery-opt .d-price { margin-left: auto; font-weight: 700; font-variant-numeric: tabular-nums; }
.card-box { border: 1px dashed var(--line-2); border-radius: 14px; padding: 18px; background: #0d0f0c; }
.card-box .stripe-tag { display: inline-flex; align-items: center; gap: 7px; font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-faint); margin-bottom: 14px; }
.card-box .stripe-tag b { color: var(--acid); }
/* Payment mount node — this checkout collects no card field, so the provider's
   iframe is what fills the box (PCI SAQ A-EP, d-0dssu6). */
.pay-mount { display: grid; gap: 6px; place-items: center; text-align: center; padding: 30px 18px; border: 1px dashed var(--line-2); border-radius: 10px; background: color-mix(in srgb, var(--brand) 6%, transparent); }
.pay-mount .pm-title { font-family: "Anton", "Arial Narrow", sans-serif; font-weight: 400; text-transform: uppercase; letter-spacing: .03em; font-size: 17px; }
.pay-mount .pm-sub { font-size: 12.5px; color: var(--ink-soft); }

.confirm { text-align: center; padding: clamp(40px, 7vw, 90px) 20px; }
.confirm .c-ico { width: 92px; height: 92px; margin: 0 auto 26px; border-radius: 50%; border: 1px solid color-mix(in srgb, var(--brand) 40%, transparent); display: grid; place-items: center; color: var(--acid); box-shadow: var(--glow); }
.confirm .c-ico svg { width: 44px; height: 44px; stroke: currentColor; }
.confirm h1 { font-family: "Anton", sans-serif; text-transform: uppercase; font-size: clamp(34px, 6vw, 70px); line-height: .96; }
.confirm .order-no { display: inline-block; margin: 18px 0; font-family: "Anton", sans-serif; font-size: 22px; letter-spacing: .06em; color: var(--acid); background: color-mix(in srgb, var(--brand) 10%, transparent); border: 1px solid color-mix(in srgb, var(--brand) 30%, transparent); padding: 8px 20px; border-radius: 100px; }
.confirm p { color: var(--ink-soft); max-width: 44ch; margin: 0 auto 8px; }
.confirm .c-actions { margin-top: 28px; display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }

/* ===================== ORDER DETAIL ================================== */
.track-detail { display: grid; grid-template-columns: 1.3fr 1fr; gap: 24px; margin-top: 34px; padding-top: 26px; border-top: 1px solid var(--line); }
.track-detail h4 { font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-faint); margin-bottom: 14px; }
.addr-lines { font-size: 14px; color: var(--ink-soft); line-height: 1.7; }

/* ============== ORDER SUMMARY LINES (checkout / order) =============== */
.ob-line { display: flex; align-items: center; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.ob-line:last-child { border-bottom: 0; }
.ob-line img { width: 56px; height: 56px; border-radius: 10px; object-fit: cover; background: #000; }
.ob-line .lname { font-weight: 700; }
.ob-line .lvar { font-size: 12.5px; color: var(--ink-soft); }
.ob-line .lqty { margin-left: auto; color: var(--ink-soft); font-size: 13px; }
.ob-line .lprice { font-variant-numeric: tabular-nums; font-weight: 700; min-width: 60px; text-align: right; }
.ob-pay { display: flex; align-items: center; gap: 9px; margin-top: 14px; font-size: 13px; color: var(--ink-soft); }
.sum-note { display: flex; align-items: center; gap: 8px; justify-content: center; margin-top: 22px; font-size: 12px; color: var(--ink-faint); letter-spacing: .04em; }
.sum-note svg { width: 15px; height: 15px; stroke: var(--acid); }

/* about page ---------------------------------------------------------- */
.about-story { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 5vw, 70px); align-items: center; padding-block: clamp(40px, 6vw, 80px); }
.about-story .as-media { border-radius: 20px; overflow: hidden; border: 1px solid var(--line); aspect-ratio: 4/5; position: relative; }
.about-story .as-media img { width: 100%; height: 100%; object-fit: cover; }
.about-story .as-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(10,11,9,.5), transparent 50%); }
.about-story h2 { font-family: "Anton", sans-serif; text-transform: uppercase; font-size: clamp(30px, 4.5vw, 56px); line-height: .98; margin-bottom: 20px; }
.about-story p { color: var(--ink-soft); margin-bottom: 16px; line-height: 1.75; }
.stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(14px, 2vw, 24px); padding-block: clamp(36px, 5vw, 64px); border-block: 1px solid var(--line); }
.stat { text-align: center; }
.stat .num { font-family: "Anton", sans-serif; font-size: clamp(40px, 6vw, 76px); line-height: 1; color: var(--acid); text-shadow: 0 0 40px color-mix(in srgb, var(--brand) 30%, transparent); }
.stat .lab { font-size: 12px; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-soft); margin-top: 10px; }
.values { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; padding-block: clamp(40px, 6vw, 80px); }
.value { background: var(--bg-2); border: 1px solid var(--line); border-radius: 18px; padding: 28px 24px; transition: transform .3s, border-color .3s; }
.value:hover { transform: translateY(-6px); border-color: var(--acid); }
.value .v-ico { width: 46px; height: 46px; border-radius: 12px; border: 1px solid var(--line-2); display: grid; place-items: center; color: var(--acid); margin-bottom: 18px; }
.value .v-ico svg { width: 22px; height: 22px; stroke: currentColor; }
.value h3 { font-family: "Anton", sans-serif; text-transform: uppercase; font-size: 20px; margin-bottom: 10px; }
.value p { color: var(--ink-soft); font-size: 13.5px; line-height: 1.6; }
.cta-band { text-align: center; padding-block: clamp(50px, 8vw, 100px); position: relative; overflow: hidden; border-top: 1px solid var(--line); }
.cta-band::before { content: ""; position: absolute; inset: 0; background: radial-gradient(60% 130% at 50% 120%, color-mix(in srgb, var(--brand) 14%, transparent), transparent 60%); }
.cta-band .wrap { position: relative; z-index: 2; }
.cta-band h2 { font-family: "Anton", sans-serif; text-transform: uppercase; font-size: clamp(38px, 7vw, 92px); line-height: .96; }
.cta-band .acid { color: var(--acid); }

/* contact page -------------------------------------------------------- */
.contact-layout { display: grid; grid-template-columns: 1.2fr .9fr; gap: clamp(28px, 4vw, 56px); align-items: start; padding-block: clamp(34px, 5vw, 60px); }
.contact-aside { display: grid; gap: 16px; }
.info-card { display: flex; gap: 14px; align-items: flex-start; background: var(--bg-2); border: 1px solid var(--line); border-radius: 16px; padding: 18px 20px; }
.info-card .ic-ico { width: 40px; height: 40px; flex: none; border-radius: 11px; border: 1px solid var(--line-2); display: grid; place-items: center; color: var(--acid); }
.info-card .ic-ico svg { width: 19px; height: 19px; stroke: currentColor; }
.info-card .ic-lbl { font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-faint); margin-bottom: 4px; }
.info-card .ic-val { color: var(--ink); font-weight: 600; }
.info-card .ic-val a:hover { color: var(--acid); }
.map-box { aspect-ratio: 16/9; border-radius: 16px; overflow: hidden; border: 1px solid var(--line); background: linear-gradient(135deg, #0d0f0c, #15171300), repeating-linear-gradient(45deg, color-mix(in srgb, var(--brand) 4%, transparent) 0 2px, transparent 2px 14px); display: grid; place-items: center; color: var(--ink-faint); position: relative; }
.map-box .pin { width: 44px; height: 44px; border-radius: 50%; background: color-mix(in srgb, var(--brand) 12%, transparent); border: 1px solid color-mix(in srgb, var(--brand) 40%, transparent); display: grid; place-items: center; color: var(--acid); box-shadow: var(--glow); }
.map-box .pin svg { width: 22px; height: 22px; stroke: currentColor; }
.faq { padding-bottom: clamp(40px, 6vw, 80px); }
.faq h2 { font-family: "Anton", sans-serif; text-transform: uppercase; font-size: clamp(28px, 4vw, 48px); margin-bottom: 10px; }

/* responsive — inner pages */
@media (max-width: 1000px) {
  .grid-products { grid-template-columns: repeat(3, 1fr); }
  .pdp { grid-template-columns: 1fr; }
  .gallery { position: static; }
  .cart-layout, .checkout-layout, .contact-layout, .about-story, .track-detail { grid-template-columns: 1fr; }
  .summary, .gallery { position: static; }
  .values, .stats { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 720px) {
  .grid-products { grid-template-columns: repeat(2, 1fr); }
  .shop-bar { flex-direction: column; align-items: flex-start; }
  .shop-tools { width: 100%; }
  .shop-tools .select { flex: 1; }
  .cart-item { grid-template-columns: 72px 1fr; }
  .cart-thumb { width: 72px; height: 72px; }
  .ci-right { grid-column: 1 / -1; flex-direction: row; align-items: center; }
}
@media (max-width: 520px) {
  .grid-products { grid-template-columns: 1fr 1fr; gap: 10px; }
  .values, .stats { grid-template-columns: 1fr 1fr; }
  .stats { gap: 22px 14px; }
}

/* =====================================================================
   Long-form content page (privacy / terms / returns)
   "Nightfall" dossier: dark surfaces, hairline borders, acid-green glow
   on the active TOC item, Anton uppercase headings, acid section numbers.
   ===================================================================== */
.legal-wrap { padding-block: clamp(40px, 6vw, 80px); }
.legal-updated {
  margin-top: 18px; display: inline-flex; align-items: center; gap: 10px;
  font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft);
  padding: 8px 16px; border: 1px solid var(--line-2); border-radius: 100px;
}
.legal-updated .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--acid); box-shadow: 0 0 10px color-mix(in srgb, var(--brand) 80%, transparent); }
.legal-intro-lede { color: var(--ink-soft); max-width: 60ch; margin-top: 22px; font-size: clamp(15px, 1.7vw, 18px); line-height: 1.6; }

.legal-layout {
  display: grid; grid-template-columns: 250px minmax(0, 1fr); gap: clamp(28px, 4vw, 64px);
  margin-top: clamp(34px, 5vw, 56px); align-items: start;
}
.legal-toc { position: sticky; top: 22px; }
.legal-toc .toc-label {
  font-size: 11px; font-weight: 700; letter-spacing: .22em; text-transform: uppercase;
  color: var(--ink-faint); margin-bottom: 16px; display: block;
}
.legal-toc ol { list-style: none; counter-reset: toc; border-left: 1px solid var(--line); }
.legal-toc li { counter-increment: toc; }
.legal-toc a {
  display: block; padding: 8px 0 8px 18px; margin-left: -1px;
  font-size: 13px; color: var(--ink-soft); border-left: 1px solid transparent;
  transition: color .2s, border-color .2s;
}
.legal-toc a::before { content: counter(toc, decimal-leading-zero) "  "; color: var(--ink-faint); font-size: 10.5px; font-variant-numeric: tabular-nums; }
.legal-toc a:hover { color: var(--ink); }
.legal-toc a.active { color: var(--acid); border-left-color: var(--acid); text-shadow: 0 0 18px color-mix(in srgb, var(--brand) 45%, transparent); }
.legal-toc a.active::before { color: var(--acid-dim); }

.legal-body { display: grid; gap: 14px; max-width: 760px; }
.legal-body section {
  scroll-margin-top: 22px; background: rgba(255,255,255,.018); border: 1px solid var(--line);
  border-radius: 18px; padding: clamp(22px, 3vw, 34px);
}
.legal-body h2 {
  font-family: "Anton", sans-serif; text-transform: uppercase; font-weight: 400;
  font-size: clamp(22px, 3.4vw, 34px); line-height: .96; letter-spacing: .005em;
  display: flex; align-items: baseline; gap: 14px;
}
.legal-body h2 .h2-num { font-family: "Space Grotesk", sans-serif; font-size: 13px; font-weight: 700; color: var(--acid); letter-spacing: 0; }
.legal-body h3 { font-family: "Space Grotesk", sans-serif; font-weight: 700; font-size: 16px; text-transform: uppercase; letter-spacing: .04em; color: var(--ink); margin-top: 24px; }
.legal-body p { margin-top: 14px; font-size: 15.5px; line-height: 1.72; color: var(--ink-soft); max-width: 66ch; }
.legal-body ul, .legal-body ol.legal-list { margin: 14px 0 2px; padding: 0; list-style: none; max-width: 66ch; }
.legal-body ul li, .legal-body ol.legal-list li {
  position: relative; padding-left: 26px; margin-top: 10px; font-size: 15px; line-height: 1.6; color: var(--ink-soft);
}
.legal-body ul li::before {
  content: ""; position: absolute; left: 2px; top: 9px; width: 8px; height: 8px;
  background: var(--acid); transform: rotate(45deg); box-shadow: 0 0 8px color-mix(in srgb, var(--brand) 50%, transparent);
}
.legal-body ol.legal-list { counter-reset: ll; }
.legal-body ol.legal-list li { counter-increment: ll; }
.legal-body ol.legal-list li::before {
  content: counter(ll); position: absolute; left: 0; top: 0; width: 19px; height: 19px;
  border: 1px solid var(--line-2); color: var(--acid); border-radius: 5px;
  display: grid; place-items: center; font-size: 11px; font-weight: 700;
}
.legal-def {
  margin: 16px 0 2px; padding: 18px 20px; background: color-mix(in srgb, var(--brand) 4%, transparent);
  border: 1px solid color-mix(in srgb, var(--brand) 22%, transparent); border-left: 3px solid var(--acid); border-radius: 12px;
}
.legal-def dt { font-family: "Space Grotesk", sans-serif; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; font-size: 14px; margin-top: 14px; color: var(--ink); }
.legal-def dt:first-child { margin-top: 0; }
.legal-def dd { font-size: 14.5px; line-height: 1.55; color: var(--ink-soft); margin-top: 4px; }
.legal-contact-card {
  margin-top: 16px; padding: 20px 22px; background: var(--acid); color: var(--canvas); border-radius: 14px;
  box-shadow: 0 0 40px color-mix(in srgb, var(--brand) 25%, transparent);
}
.legal-contact-card .rows { display: grid; gap: 6px; }
.legal-contact-card .rows div { font-size: 14.5px; color: rgba(10,11,9,.78); }
.legal-contact-card .rows strong { color: var(--canvas); }
.legal-contact-card a { color: var(--canvas); font-weight: 700; border-bottom: 2px solid rgba(10,11,9,.4); }

.to-top {
  position: fixed; right: clamp(16px, 3vw, 30px); bottom: clamp(16px, 3vw, 30px); z-index: 40;
  width: 50px; height: 50px; border-radius: 50%; border: 1px solid var(--line-2);
  background: var(--bg-2); color: var(--acid); display: grid; place-items: center; cursor: pointer;
  opacity: 0; transform: translateY(10px) scale(.92); pointer-events: none;
  transition: opacity .3s, transform .3s, box-shadow .3s;
}
.to-top.show { opacity: 1; transform: none; pointer-events: auto; }
.to-top:hover { box-shadow: var(--glow); }
.to-top svg { width: 19px; height: 19px; fill: none; stroke: currentColor; stroke-width: 2.2; }
.toc-inline-toggle { display: none; }

@media (max-width: 920px) {
  .legal-layout { grid-template-columns: 1fr; gap: 16px; }
  .legal-toc { position: static; border: 1px solid var(--line); border-radius: 14px; background: rgba(255,255,255,.02); overflow: hidden; }
  .legal-toc .toc-label { display: none; }
  .toc-inline-toggle {
    display: flex; align-items: center; justify-content: space-between; width: 100%;
    padding: 16px 20px; background: none; border: 0; cursor: pointer;
    font-family: "Space Grotesk", sans-serif; font-size: 12px; font-weight: 700;
    letter-spacing: .14em; text-transform: uppercase; color: var(--ink);
  }
  .toc-inline-toggle svg { width: 16px; height: 16px; transition: transform .25s; }
  .legal-toc.open .toc-inline-toggle svg { transform: rotate(180deg); }
  .legal-toc ol { border-left: 0; padding: 0 20px 14px; max-height: 0; overflow: hidden; transition: max-height .3s ease; }
  .legal-toc.open ol { max-height: 680px; }
  .legal-toc a { padding-left: 0; border-left: 0; }
  .legal-toc a.active { border-left: 0; }
}
