/* ============================================================
   NORD SYSTEM — Design System
   shadcn-inspired tokens · oklch colors · Brand: editorial premium
   ============================================================ */

/* ───────────── Reset ───────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { -webkit-text-size-adjust: 100%; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; scroll-behavior: smooth; }
body { line-height: 1.5; min-height: 100vh; overflow-x: hidden; }
img, picture, video, svg { max-width: 100%; height: auto; display: block; }
button, input, textarea, select { font: inherit; color: inherit; background: transparent; border: 0; }
button { cursor: pointer; }
a { color: inherit; text-decoration: none; }
ul, ol { list-style: none; }
:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; border-radius: var(--radius-sm); }

/* ───────────── Tokens (shadcn-inspired, oklch) ───────────── */
:root {
  /* Surface */
  --background:        oklch(0.985 0.006 80);
  --background-alt:    oklch(0.96  0.010 78);
  --foreground:        oklch(0.18  0.010 60);
  --card:              oklch(1     0     0);
  --card-foreground:   oklch(0.18  0.010 60);
  --popover:           oklch(1     0     0);
  --popover-foreground:oklch(0.18  0.010 60);

  /* Primary / Brand */
  --primary:           oklch(0.18  0.010 60);     /* off-black */
  --primary-foreground:oklch(0.985 0.006 80);
  --secondary:         oklch(0.96  0.010 78);     /* sand */
  --secondary-foreground: oklch(0.18 0.010 60);
  --muted:             oklch(0.96  0.010 78);
  --muted-foreground:  oklch(0.50  0.012 70);
  --accent:            oklch(0.94  0.012 78);
  --accent-foreground: oklch(0.18  0.010 60);

  /* Destructive / Accent-CTA (Vermilion) */
  --destructive:       oklch(0.625 0.21  30);
  --destructive-foreground: oklch(0.985 0.006 80);

  /* Borders / Inputs / Ring */
  --border:            oklch(0.18 0.010 60 / 0.09);
  --border-strong:     oklch(0.18 0.010 60 / 0.18);
  --input:             oklch(0.18 0.010 60 / 0.14);
  --ring:              oklch(0.625 0.21 30 / 0.5);

  /* Backwards-compat aliases (used by existing markup) */
  --bone:        var(--background);
  --bone-deep:   var(--background-alt);
  --off-black:   var(--foreground);
  --vermilion:   var(--destructive);
  --vermilion-d: oklch(0.55 0.21 30);
  --sand:        var(--muted);
  --sand-deep:   oklch(0.92 0.012 78);
  --mid:         var(--muted-foreground);
  --mute:        oklch(0.62 0.010 70);
  --hairline:    var(--border);

  /* Radius scale (shadcn default 0.625rem = 10px) */
  --radius-sm: 0.375rem;   /* 6px */
  --radius-md: 0.5rem;     /* 8px */
  --radius-lg: 0.625rem;   /* 10px */
  --radius-xl: 0.875rem;   /* 14px */
  --radius-2xl: 1rem;      /* 16px */

  /* Shadow scale */
  --shadow-xs: 0 1px 2px 0 oklch(0 0 0 / 0.04);
  --shadow-sm: 0 1px 3px 0 oklch(0 0 0 / 0.06), 0 1px 2px -1px oklch(0 0 0 / 0.06);
  --shadow-md: 0 4px 6px -1px oklch(0 0 0 / 0.07), 0 2px 4px -2px oklch(0 0 0 / 0.07);
  --shadow-lg: 0 10px 15px -3px oklch(0 0 0 / 0.08), 0 4px 6px -4px oklch(0 0 0 / 0.08);
  --shadow-xl: 0 20px 25px -5px oklch(0 0 0 / 0.1),  0 8px 10px -6px oklch(0 0 0 / 0.08);
  --shadow-2xl: 0 25px 50px -12px oklch(0 0 0 / 0.18);

  /* Type */
  --font-display: 'Fraunces', 'Iowan Old Style', Georgia, serif;
  --font-sans:    'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-mono:    'JetBrains Mono', 'SF Mono', Consolas, monospace;

  /* Spacing (4px grid) */
  --s-1: 0.25rem;
  --s-2: 0.5rem;
  --s-3: 0.75rem;
  --s-4: 1rem;
  --s-5: 1.25rem;
  --s-6: 1.5rem;
  --s-8: 2rem;
  --s-10: 2.5rem;
  --s-12: 3rem;
  --s-16: 4rem;
  --s-20: 5rem;
  --s-24: 6rem;
  --s-32: 8rem;

  /* Old spacing aliases (kept for backwards compat) */
  --s1: 0.25rem; --s2: 0.5rem; --s3: 0.75rem; --s4: 1rem;
  --s5: 1.5rem;  --s6: 2rem;   --s7: 3rem;   --s8: 4rem;
  --s9: 6rem;    --s10: 8rem;  --s11: 10rem;

  /* Layout */
  --container: 80rem;       /* 1280px */
  --container-narrow: 56rem;
  --gutter: 1.5rem;
  --header-h: 4.5rem;       /* 72px — accommodates 40px logo + breathing room */

  /* Motion */
  --ease: cubic-bezier(0.16, 1, 0.3, 1);
  --fast: 150ms;
  --med:  250ms;
  --slow: 450ms;
}

@media (max-width: 640px) {
  :root { --gutter: 1rem; --header-h: 3.5rem; }
}

/* ───────────── Base ───────────── */
html, body { background: var(--background); color: var(--foreground); }
body {
  font-family: var(--font-sans);
  font-size: 1rem;
  font-weight: 400;
  font-feature-settings: "cv11", "ss01", "ss03";
}
::selection { background: var(--foreground); color: var(--background); }

/* ───────────── Typography ───────────── */
h1, h2, h3 {
  font-family: var(--font-display);
  font-weight: 400;
  letter-spacing: -0.025em;
  line-height: 1.05;
  color: var(--foreground);
}
h1 { font-size: clamp(2.5rem, 6vw, 5.5rem); }
h2 { font-size: clamp(2rem, 4vw, 3.5rem); }
h3 { font-size: clamp(1.5rem, 2.5vw, 2.25rem); }
h4 { font-family: var(--font-sans); font-size: 1.125rem; font-weight: 500; letter-spacing: -0.005em; color: var(--foreground); }
h5 { font-family: var(--font-mono); font-size: 0.6875rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.16em; color: var(--muted-foreground); }
p  { font-size: 1rem; line-height: 1.6; color: var(--foreground); }
.lead { font-size: 1.125rem; line-height: 1.6; color: var(--muted-foreground); max-width: 38rem; }

.eyebrow {
  font-family: var(--font-mono);
  font-size: 0.6875rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--muted-foreground);
}

.serif-italic { font-family: var(--font-display); font-style: italic; font-weight: 400; }

/* ───────────── Layout ───────────── */
.container        { max-width: var(--container); margin: 0 auto; padding: 0 var(--gutter); width: 100%; }
.container-narrow { max-width: var(--container-narrow); margin: 0 auto; padding: 0 var(--gutter); width: 100%; }

section { padding: var(--s-24) 0; }
@media (max-width: 768px) { section { padding: var(--s-16) 0; } }

.section-muted { background: var(--muted); }
.section-deep  { background: var(--foreground); color: var(--background); }
.section-deep h1, .section-deep h2, .section-deep h3 { color: var(--background); }
.section-deep p, .section-deep .lead { color: oklch(0.985 0.006 80 / 0.72); }
.section-deep .eyebrow { color: oklch(0.985 0.006 80 / 0.55); }

/* Skip link */
.skip { position: absolute; left: -9999px; top: 8px; background: var(--foreground); color: var(--background); padding: 0.75rem 1rem; z-index: 9999; border-radius: var(--radius-md); }
.skip:focus { left: 12px; }

/* ============================================================
   BUTTONS (shadcn-style)
   ============================================================ */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  white-space: nowrap;
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: 0.875rem;
  letter-spacing: -0.005em;
  height: 2.625rem;             /* 42px */
  padding: 0 1.25rem;
  border-radius: var(--radius-md);
  border: 1px solid transparent;
  transition: background var(--fast) var(--ease), color var(--fast) var(--ease), border-color var(--fast) var(--ease), box-shadow var(--fast) var(--ease), opacity var(--fast) var(--ease);
  cursor: pointer;
  user-select: none;
  position: relative;
}
.btn:disabled { opacity: 0.5; pointer-events: none; }
.btn:focus-visible { outline: none; box-shadow: 0 0 0 3px var(--ring); }

.btn-primary, .btn--default {
  background: var(--primary);
  color: var(--primary-foreground);
}
.btn-primary:hover, .btn--default:hover { background: oklch(0.26 0.012 60); }

.btn-vermilion, .btn--destructive {
  background: var(--destructive);
  color: var(--destructive-foreground);
}
.btn-vermilion:hover, .btn--destructive:hover { background: oklch(0.55 0.21 30); }

.btn-outline, .btn--outline {
  background: var(--background);
  color: var(--foreground);
  border-color: var(--border-strong);
}
.btn-outline:hover, .btn--outline:hover { background: var(--accent); }

.btn-secondary, .btn--secondary {
  background: var(--secondary);
  color: var(--secondary-foreground);
}
.btn-secondary:hover, .btn--secondary:hover { background: oklch(0.92 0.012 78); }

.btn-ghost, .btn--ghost {
  background: transparent;
  color: var(--foreground);
  padding: 0 0.25rem;
  height: auto;
  border: 0;
  font-weight: 500;
}
.btn-ghost:hover, .btn--ghost:hover { color: var(--destructive); }
.btn-ghost::after, .btn--ghost::after { content: '→'; transition: transform var(--med) var(--ease); display: inline-block; margin-left: 0.25rem; }
.btn-ghost:hover::after, .btn--ghost:hover::after { transform: translateX(4px); }

.btn-small, .btn--sm { height: 2.125rem; padding: 0 0.875rem; font-size: 0.8125rem; }
.btn--lg { height: 3rem; padding: 0 1.75rem; font-size: 0.9375rem; }

/* ============================================================
   INPUT / FORM
   ============================================================ */
.input, .form-group input:not([type="checkbox"]):not([type="radio"]), .form-group select, .form-group textarea {
  display: block;
  width: 100%;
  height: 2.625rem;
  padding: 0 0.875rem;
  background: var(--card);
  border: 1px solid var(--input);
  border-radius: var(--radius-md);
  font-size: 0.9375rem;
  color: var(--foreground);
  transition: border-color var(--fast) var(--ease), box-shadow var(--fast) var(--ease);
}
.form-group textarea { padding: 0.625rem 0.875rem; height: auto; min-height: 6rem; resize: vertical; }
.input:focus, .form-group input:focus, .form-group select:focus, .form-group textarea:focus {
  outline: none;
  border-color: var(--ring);
  box-shadow: 0 0 0 3px oklch(0.625 0.21 30 / 0.12);
}
.form-group input::placeholder, .form-group textarea::placeholder { color: var(--muted-foreground); opacity: 0.65; }
.form-group label {
  display: block;
  font-family: var(--font-mono);
  font-size: 0.6875rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--muted-foreground);
  margin-bottom: 0.375rem;
}

/* ============================================================
   BADGE
   ============================================================ */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  border-radius: 9999px;
  font-family: var(--font-mono);
  font-size: 0.625rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  background: var(--secondary);
  color: var(--secondary-foreground);
}
.badge--new { background: var(--primary); color: var(--primary-foreground); }
.badge--viral { background: var(--destructive); color: var(--destructive-foreground); }

/* ============================================================
   CARD
   ============================================================ */
.card {
  background: var(--card);
  color: var(--card-foreground);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--s-6);
  transition: border-color var(--med) var(--ease), box-shadow var(--med) var(--ease), transform var(--med) var(--ease);
}
.card:hover { border-color: var(--border-strong); }

/* ============================================================
   HEADER
   ============================================================ */
.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: oklch(0.985 0.006 80 / 0.78);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  backdrop-filter: blur(20px) saturate(180%);
  border-bottom: 1px solid var(--border);
}
.site-header__inner {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  height: var(--header-h);
  padding: 0 var(--gutter);
  max-width: var(--container);
  margin: 0 auto;
  gap: var(--s-4);
}
.nav-primary {
  display: flex;
  gap: var(--s-8);
  align-items: center;
}
.nav-primary a {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--foreground);
  letter-spacing: -0.005em;
  transition: color var(--fast) var(--ease);
  position: relative;
}
.nav-primary a:hover { color: var(--muted-foreground); }
.nav-primary a.is-active { color: var(--destructive); }

.logo {
  justify-self: center;
  display: inline-flex;
  align-items: center;
  transition: opacity var(--fast) var(--ease);
  color: var(--foreground);
}
.logo:hover { opacity: 0.7; }
.logo img { display: block; height: 2.5rem; width: auto; }
.logo svg { display: block; height: 1.5rem; width: auto; color: currentColor; }
.logo span { display: none; } /* hide any leftover text wordmark */

/* Header braucht mehr Höhe damit Logo passt */
.site-header { /* header h adjusted below */ }

.nav-secondary {
  justify-self: end;
  display: flex;
  align-items: center;
  gap: 0.25rem;
}
.nav-icon-btn {
  width: 2.25rem; height: 2.25rem;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: var(--radius-md);
  position: relative;
  transition: background var(--fast) var(--ease);
}
.nav-icon-btn:hover { background: var(--accent); }
.nav-icon-btn svg { width: 1.125rem; height: 1.125rem; stroke: var(--foreground); fill: none; stroke-width: 1.5; }

.cart-badge {
  position: absolute;
  top: 2px; right: 2px;
  min-width: 1rem;
  height: 1rem;
  padding: 0 4px;
  background: var(--destructive);
  color: var(--destructive-foreground);
  border-radius: 9999px;
  font-family: var(--font-mono);
  font-size: 0.625rem;
  font-weight: 600;
  display: none;
  align-items: center; justify-content: center;
  border: 2px solid var(--background);
}
.cart-badge.is-visible { display: inline-flex; }

.mobile-menu-btn {
  display: none;
  width: 2.25rem; height: 2.25rem;
  align-items: center; justify-content: center;
  border-radius: var(--radius-md);
  transition: background var(--fast) var(--ease);
  justify-self: start;
}
.mobile-menu-btn:hover { background: var(--accent); }
.mobile-menu-btn svg { stroke: var(--foreground); width: 1.25rem; height: 1.25rem; fill: none; stroke-width: 1.6; }

@media (max-width: 900px) {
  .nav-primary { display: none; }
  .mobile-menu-btn { display: inline-flex; }
  .site-header__inner { grid-template-columns: auto 1fr auto; }
}

/* Mobile Drawer */
.mobile-drawer {
  position: fixed;
  inset: 0;
  background: var(--background);
  z-index: 200;
  padding: var(--s-6);
  display: flex; flex-direction: column;
  transform: translateY(-100%);
  transition: transform var(--med) var(--ease);
  visibility: hidden;
}
.mobile-drawer.is-open { transform: translateY(0); visibility: visible; }
.mobile-drawer__head {
  display: flex; justify-content: space-between; align-items: center;
  padding-bottom: var(--s-4);
  border-bottom: 1px solid var(--border);
  margin-bottom: var(--s-4);
}
.mobile-drawer__close {
  width: 2.25rem; height: 2.25rem;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.25rem; line-height: 1;
  border-radius: var(--radius-md);
}
.mobile-drawer__close:hover { background: var(--accent); }
.mobile-drawer__nav { display: flex; flex-direction: column; }
.mobile-drawer__nav a {
  font-family: var(--font-display);
  font-size: 2rem;
  font-weight: 400;
  letter-spacing: -0.02em;
  color: var(--foreground);
  padding: 0.75rem 0;
  border-bottom: 1px solid var(--border);
}
.mobile-drawer__nav a:last-child { border-bottom: 0; }

/* ============================================================
   TOP BANNER
   ============================================================ */
.top-banner {
  background: var(--foreground);
  color: oklch(0.985 0.006 80 / 0.85);
  font-family: var(--font-mono);
  font-size: 0.6875rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  padding: 0.625rem var(--gutter);
  text-align: center;
  overflow: hidden;
  white-space: nowrap;
}
.top-banner__track { display: inline-flex; gap: 3rem; animation: marquee 36s linear infinite; }
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* ============================================================
   HERO — cinematic full-bleed photo
   ============================================================ */
.hero {
  position: relative;
  min-height: clamp(640px, 88vh, 900px);
  display: flex;
  align-items: stretch;
  overflow: hidden;
  background: var(--background);
}
.hero__bg {
  position: absolute;
  inset: 0;
  z-index: 0;
}
.hero__bg img {
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: 15% center;
}
.hero__bg::after {
  content: '';
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg,
      oklch(0.985 0.006 80 / 0) 0%,
      oklch(0.985 0.006 80 / 0) 38%,
      oklch(0.985 0.006 80 / 0.4) 52%,
      oklch(0.985 0.006 80 / 0.92) 70%,
      oklch(0.985 0.006 80) 100%);
}
.hero-marker {
  position: absolute;
  top: var(--s-6);
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: 0.75rem;
  font-family: var(--font-mono);
  font-size: 0.625rem;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--muted-foreground);
  z-index: 3;
}
.hero-marker::before, .hero-marker::after {
  content: '';
  width: 2rem; height: 1px;
  background: var(--border-strong);
}
.hero__inner {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  width: 100%;
  max-width: var(--container);
  margin: 0 auto;
  padding: var(--s-16) var(--gutter);
}
.hero__copy {
  grid-column: 2;
  padding-left: var(--s-8);
}
.hero__title {
  font-size: clamp(3rem, 7.5vw, 7rem);
  line-height: 0.94;
  letter-spacing: -0.045em;
  font-weight: 400;
  color: var(--foreground);
  margin: var(--s-4) 0 var(--s-5);
}
.hero__title .serif-italic { color: var(--destructive); }
.hero__sub {
  max-width: 28rem;
  font-size: 1.0625rem;
  line-height: 1.55;
  color: var(--muted-foreground);
  margin-bottom: var(--s-6);
}
.hero__cta {
  display: flex;
  gap: 0.75rem;
  flex-wrap: wrap;
}

.hero__product-tag {
  position: absolute;
  bottom: var(--s-6);
  left: var(--s-6);
  z-index: 3;
  background: oklch(0.18 0.010 60 / 0.92);
  -webkit-backdrop-filter: blur(20px);
  backdrop-filter: blur(20px);
  color: var(--background);
  padding: var(--s-4) var(--s-5);
  border-radius: var(--radius-lg);
  display: flex;
  align-items: center;
  gap: var(--s-4);
  max-width: 22rem;
  box-shadow: var(--shadow-xl);
  border: 1px solid oklch(1 0 0 / 0.05);
}
.hero__product-tag h4 { color: var(--background); font-family: var(--font-display); font-size: 1.125rem; font-weight: 400; letter-spacing: -0.01em; }
.hero__product-tag p { color: oklch(0.985 0.006 80 / 0.6); font-family: var(--font-mono); font-size: 0.6875rem; text-transform: uppercase; letter-spacing: 0.12em; margin-top: 2px; }
.hero__product-tag .btn { background: var(--background); color: var(--foreground); height: 2.125rem; padding: 0 1rem; font-size: 0.75rem; }
.hero__product-tag .btn:hover { background: var(--destructive); color: var(--destructive-foreground); }

@media (max-width: 900px) {
  .hero { min-height: auto; display: block; }
  .hero__bg img { object-position: 22% center; }
  .hero__bg::after {
    background: linear-gradient(180deg,
      oklch(0.985 0.006 80 / 0) 0%,
      oklch(0.985 0.006 80 / 0) 32%,
      oklch(0.985 0.006 80 / 0.85) 58%,
      oklch(0.985 0.006 80) 100%);
  }
  .hero__inner {
    grid-template-columns: 1fr;
    padding: 0 var(--gutter) var(--s-10);
    min-height: 68vh;
  }
  .hero__copy {
    grid-column: 1;
    padding-left: 0;
    padding-top: 36vh;
  }
  .hero__title {
    font-size: clamp(2.5rem, 11vw, 4.25rem);
    line-height: 0.98;
    letter-spacing: -0.035em;
  }
  .hero__sub { font-size: 0.9375rem; }
  .hero__product-tag {
    position: relative;
    margin: var(--s-6) var(--gutter) 0;
    max-width: none;
    bottom: auto; left: auto;
  }
}
@media (max-width: 480px) {
  .hero__title { font-size: clamp(2.25rem, 12vw, 3.5rem); }
}

/* ============================================================
   TRUST STRIP
   ============================================================ */
.trust-strip {
  background: var(--background);
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  padding: var(--s-5) 0;
  position: relative;
  z-index: 2;
}
.trust-strip__inner {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--s-6);
  padding: 0 var(--gutter);
  max-width: var(--container);
  margin: 0 auto;
  align-items: center;
}
.trust-item {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}
.trust-item svg {
  width: 1.375rem; height: 1.375rem;
  stroke: var(--foreground);
  fill: none;
  stroke-width: 1.5;
  flex-shrink: 0;
}
.trust-item strong {
  display: block;
  color: var(--foreground);
  font-weight: 500;
  font-size: 0.875rem;
  letter-spacing: -0.005em;
}
.trust-item span {
  display: block;
  color: var(--muted-foreground);
  font-size: 0.75rem;
  margin-top: 1px;
}

@media (max-width: 900px) {
  .trust-strip__inner { grid-template-columns: 1fr 1fr; gap: var(--s-4); }
}
@media (max-width: 480px) {
  .trust-strip__inner { grid-template-columns: 1fr; }
}

/* ============================================================
   SECTION HEAD (used in moods, reviews, new arrivals)
   ============================================================ */
.section-head {
  display: flex;
  justify-content: space-between;
  align-items: end;
  margin-bottom: var(--s-12);
  flex-wrap: wrap;
  gap: var(--s-4);
}
.section-head__title { max-width: 32rem; }
.section-head__title h2 { margin-top: 0.75rem; }

@media (max-width: 768px) {
  .section-head { flex-direction: column; align-items: start; gap: var(--s-4); }
}

/* Legacy alias */
.moods__head {
  display: flex; justify-content: space-between; align-items: end;
  margin-bottom: var(--s-12); flex-wrap: wrap; gap: var(--s-4);
}
.moods__head h2 { margin-top: 0.75rem; max-width: 32rem; }
@media (max-width: 768px) {
  .moods__head { flex-direction: column; align-items: start; }
}

/* ============================================================
   MOOD CARDS
   ============================================================ */
.moods {
  padding: var(--s-24) 0;
  background: var(--muted);
}
.mood-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--s-3);
}
.mood-card {
  position: relative;
  aspect-ratio: 3/4;
  background: var(--card);
  border-radius: var(--radius-lg);
  overflow: hidden;
  display: flex; flex-direction: column; justify-content: end;
  padding: var(--s-5);
  cursor: pointer;
  transition: transform var(--slow) var(--ease), box-shadow var(--med) var(--ease);
  border: 1px solid var(--border);
}
.mood-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.mood-card::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 0;
}
.mood-card--awaken::before { background: linear-gradient(180deg, oklch(0.92 0.06 70) 0%, oklch(0.78 0.12 50) 50%, oklch(0.65 0.16 40) 100%); }
.mood-card--unwind::before { background: linear-gradient(180deg, oklch(0.50 0.06 270) 0%, oklch(0.30 0.08 270) 60%, oklch(0.18 0.06 270) 100%); }
.mood-card--focus::before  { background: linear-gradient(180deg, oklch(0.85 0.02 200) 0%, oklch(0.65 0.04 200) 60%, oklch(0.45 0.04 200) 100%); }
.mood-card--glow::before   { background: linear-gradient(180deg, oklch(0.94 0.06 80) 0%, oklch(0.75 0.15 40) 50%, oklch(0.625 0.21 30) 100%); }
.mood-card::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 50%, oklch(0 0 0 / 0.15) 100%);
  z-index: 0;
}
.mood-card__content { position: relative; z-index: 1; color: var(--background); }
.mood-card--awaken .mood-card__content, .mood-card--focus .mood-card__content { color: var(--foreground); }
.mood-card__content h3 { font-size: clamp(1.5rem, 2vw, 2rem); margin-bottom: 0.25rem; color: inherit; }
.mood-card__content p { color: inherit; opacity: 0.85; font-family: var(--font-mono); font-size: 0.625rem; text-transform: uppercase; letter-spacing: 0.14em; }

@media (max-width: 900px) { .mood-grid { grid-template-columns: 1fr 1fr; } }

/* ============================================================
   STATS BAR
   ============================================================ */
.stats-bar {
  padding: var(--s-12) 0;
  background: var(--foreground);
  color: var(--background);
}
.stats-bar__inner {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  padding: 0 var(--gutter);
  max-width: var(--container);
  margin: 0 auto;
}
.stat {
  text-align: center;
  border-right: 1px solid oklch(1 0 0 / 0.08);
  padding: var(--s-4) var(--s-3);
}
.stat:last-child { border-right: 0; }
.stat__number {
  font-family: var(--font-display);
  font-size: clamp(2.5rem, 4vw, 4rem);
  font-weight: 400;
  letter-spacing: -0.03em;
  line-height: 1;
  color: var(--background);
  margin-bottom: 0.5rem;
}
.stat__accent { color: var(--destructive); }
.stat__label {
  font-family: var(--font-mono);
  font-size: 0.625rem;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: oklch(0.985 0.006 80 / 0.55);
}

@media (max-width: 760px) {
  .stats-bar__inner { grid-template-columns: 1fr 1fr; }
  .stat { border-right: 0; border-bottom: 1px solid oklch(1 0 0 / 0.08); padding: var(--s-5) var(--s-3); }
  .stat:nth-child(odd) { border-right: 1px solid oklch(1 0 0 / 0.08); }
  .stat:nth-last-child(-n+2) { border-bottom: 0; }
}

/* ============================================================
   FEATURED OBJECT
   ============================================================ */
.featured { padding: var(--s-24) 0; }
.featured__inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--s-16);
  align-items: center;
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--gutter);
}
.featured__visual {
  aspect-ratio: 4/5;
  background: var(--muted);
  border-radius: var(--radius-lg);
  position: relative;
  overflow: hidden;
  box-shadow: var(--shadow-xl);
}
.featured__visual img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 1.2s var(--ease);
}
.featured__visual:hover img { transform: scale(1.03); }
.featured__copy { padding-left: var(--s-4); }
.featured__copy .eyebrow { margin-bottom: 0.75rem; }
.featured__copy h2 { margin-bottom: var(--s-5); }
.featured__copy p { font-size: 1.0625rem; line-height: 1.65; color: var(--muted-foreground); margin-bottom: var(--s-6); }
.featured__meta {
  display: flex;
  gap: var(--s-8);
  margin-bottom: var(--s-6);
  padding-top: var(--s-5);
  border-top: 1px solid var(--border);
}
.featured__meta-item .meta-value { display: block; font-family: var(--font-display); font-size: 2.25rem; font-weight: 400; letter-spacing: -0.025em; margin-bottom: 4px; }
.featured__meta-item .meta-label { display: block; font-family: var(--font-mono); font-size: 0.625rem; text-transform: uppercase; letter-spacing: 0.14em; color: var(--muted-foreground); }

@media (max-width: 900px) {
  .featured__inner { grid-template-columns: 1fr; gap: var(--s-8); }
  .featured__copy { padding-left: 0; }
  .featured__meta { gap: var(--s-6); flex-wrap: wrap; }
}

/* ============================================================
   PRODUCT GRID + CARD
   ============================================================ */
.product-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--s-5);
}
@media (max-width: 1100px) { .product-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 760px)  { .product-grid { grid-template-columns: repeat(2, 1fr); gap: var(--s-3); } }

.product-card {
  display: flex; flex-direction: column;
  cursor: pointer;
  position: relative;
  transition: transform var(--med) var(--ease);
  text-decoration: none;
  color: inherit;
}
.product-card__media {
  aspect-ratio: 4/5;
  background: var(--muted);
  border-radius: var(--radius-lg);
  overflow: hidden;
  position: relative;
  margin-bottom: var(--s-3);
  border: 1px solid var(--border);
  transition: border-color var(--med) var(--ease), box-shadow var(--med) var(--ease);
}
.product-card:hover .product-card__media {
  border-color: var(--border-strong);
  box-shadow: var(--shadow-md);
}
.product-card__image { width: 100%; height: 100%; display: block; position: relative; overflow: hidden; }
.product-card__image img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.6s var(--ease);
}
.product-card:hover .product-card__image img { transform: scale(1.04); }

/* Image placeholder — branded glyph tile shown when a product photo is not yet present.
   Self-healing: once the real .webp exists, no error fires and the photo shows instead. */
.img-placeholder {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  background: radial-gradient(120% 120% at 30% 20%, oklch(0.99 0.006 80) 0%, oklch(0.95 0.012 78) 55%, oklch(0.91 0.014 78) 100%);
  color: oklch(0.62 0.012 70 / 0.5);
  font-family: var(--font-display);
  font-weight: 300;
  font-size: clamp(2.5rem, 7vw, 5rem);
  line-height: 1;
  user-select: none;
}

.product-card__tag {
  position: absolute;
  top: 0.75rem; left: 0.75rem;
  z-index: 2;
  background: var(--card);
  color: var(--foreground);
  font-family: var(--font-mono);
  font-size: 0.6875rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-weight: 500;
  padding: 4px 10px;
  border-radius: 9999px;
  box-shadow: var(--shadow-xs);
  border: 1px solid var(--border);
}
.product-card__tag--new { background: var(--primary); color: var(--primary-foreground); border-color: var(--primary); }
.product-card__tag--viral { background: var(--destructive); color: var(--destructive-foreground); border-color: var(--destructive); }

.product-card__quick {
  position: absolute;
  bottom: 0.75rem; right: 0.75rem;
  z-index: 2;
  opacity: 0;
  transform: translateY(6px);
  transition: all var(--med) var(--ease);
  background: var(--foreground);
  color: var(--background);
  border-radius: 9999px;
  padding: 8px 14px;
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: -0.005em;
}
.product-card:hover .product-card__quick { opacity: 1; transform: translateY(0); }
.product-card__quick:hover { background: var(--destructive); }

.product-card__info {
  display: flex;
  justify-content: space-between;
  align-items: start;
  gap: var(--s-3);
  padding: 0 0.125rem;
}
.product-card__title { font-size: 0.9375rem; font-weight: 500; letter-spacing: -0.005em; color: var(--foreground); }
.product-card__cat { font-family: var(--font-mono); font-size: 0.6875rem; text-transform: uppercase; color: var(--muted-foreground); letter-spacing: 0.1em; margin-top: 4px; }
.product-card__price { font-family: var(--font-mono); font-size: 0.875rem; font-weight: 500; text-align: right; color: var(--foreground); }

/* ============================================================
   PRESS STRIP
   ============================================================ */
.press {
  padding: var(--s-12) 0;
  background: var(--background);
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}
.press__inner {
  text-align: center;
  padding: 0 var(--gutter);
  max-width: var(--container);
  margin: 0 auto;
}
.press__label {
  font-family: var(--font-mono);
  font-size: 0.625rem;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--muted-foreground);
  margin-bottom: var(--s-6);
}
.press__logos {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: var(--s-6) var(--s-12);
  opacity: 0.5;
}
.press__logo {
  font-family: var(--font-display);
  font-size: 1.25rem;
  font-weight: 500;
  letter-spacing: 0.01em;
  color: var(--foreground);
  white-space: nowrap;
}
.press__logo--italic { font-style: italic; }
.press__logo--sans { font-family: var(--font-sans); text-transform: uppercase; letter-spacing: 0.18em; font-size: 0.8125rem; font-weight: 600; }
.press__logo--small { font-size: 1rem; }

/* ============================================================
   REVIEWS
   ============================================================ */
.reviews {
  padding: var(--s-24) 0;
  background: var(--muted);
}
.reviews__head {
  display: flex; justify-content: space-between; align-items: end;
  margin-bottom: var(--s-12);
  padding: 0 var(--gutter);
  max-width: var(--container);
  margin-left: auto; margin-right: auto;
  flex-wrap: wrap; gap: var(--s-4);
}
.reviews__head h2 { margin-top: 0.75rem; }
.reviews__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--s-5);
  padding: 0 var(--gutter);
  max-width: var(--container);
  margin: 0 auto;
}
.review {
  background: var(--card);
  padding: var(--s-6);
  border-radius: var(--radius-lg);
  display: flex; flex-direction: column;
  border: 1px solid var(--border);
  transition: border-color var(--med) var(--ease), box-shadow var(--med) var(--ease), transform var(--med) var(--ease);
}
.review:hover { border-color: var(--border-strong); box-shadow: var(--shadow-md); transform: translateY(-2px); }
.review__stars {
  color: var(--destructive);
  font-size: 0.875rem;
  letter-spacing: 3px;
  margin-bottom: var(--s-3);
}
.review__quote {
  font-family: var(--font-display);
  font-size: 1.25rem;
  line-height: 1.4;
  color: var(--foreground);
  margin-bottom: var(--s-4);
  flex: 1;
}
.review__author {
  display: flex; align-items: center; gap: var(--s-3);
  padding-top: var(--s-3);
  border-top: 1px solid var(--border);
}
.review__avatar {
  width: 2.25rem; height: 2.25rem;
  border-radius: 9999px;
  background: var(--accent);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-display);
  font-size: 0.9375rem;
  color: var(--foreground);
  font-weight: 500;
}
.review__info { line-height: 1.3; }
.review__name { font-size: 0.875rem; font-weight: 500; color: var(--foreground); }
.review__meta { font-family: var(--font-mono); font-size: 0.6875rem; color: var(--muted-foreground); text-transform: uppercase; letter-spacing: 0.1em; margin-top: 2px; }

@media (max-width: 900px) { .reviews__grid { grid-template-columns: 1fr; } }

/* ============================================================
   EDITORIAL / MANIFEST
   ============================================================ */
.editorial {
  padding: var(--s-32) 0;
  background: var(--foreground);
  color: var(--background);
  text-align: center;
}
.editorial__inner { max-width: 48rem; margin: 0 auto; padding: 0 var(--gutter); }
.editorial__eyebrow { color: var(--destructive); margin-bottom: var(--s-4); }
.editorial h2 {
  font-size: clamp(2.5rem, 5.5vw, 4.5rem);
  margin-bottom: var(--s-6);
  line-height: 1.1;
  color: var(--background);
}
.editorial p { font-size: 1.125rem; line-height: 1.7; color: oklch(0.985 0.006 80 / 0.7); margin-bottom: var(--s-5); }
.editorial__sig { font-family: var(--font-display); font-style: italic; font-size: 1.25rem; color: var(--background); margin-top: var(--s-6); }

/* ============================================================
   NEWSLETTER
   ============================================================ */
.newsletter {
  padding: var(--s-24) 0;
  background: var(--muted);
}
.newsletter__inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--s-16);
  align-items: center;
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--gutter);
}
.newsletter__copy h2 { margin: 0.75rem 0 var(--s-4); }
.newsletter__copy p { color: var(--muted-foreground); font-size: 1.0625rem; max-width: 26rem; }
.newsletter__form {
  display: flex;
  gap: 0.5rem;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 0.25rem 0.25rem 0.25rem 0;
  transition: border-color var(--fast) var(--ease), box-shadow var(--fast) var(--ease);
}
.newsletter__form:focus-within { border-color: var(--ring); box-shadow: 0 0 0 3px oklch(0.625 0.21 30 / 0.12); }
.newsletter__form input[type="email"] {
  flex: 1;
  padding: 0 1rem;
  height: 2.625rem;
  background: transparent;
  border: 0;
  font-size: 0.9375rem;
  color: var(--foreground);
}
.newsletter__form input[type="email"]:focus { outline: none; box-shadow: none; }
.newsletter__form .btn { height: 2.625rem; }
.newsletter__msg { font-size: 0.8125rem; color: var(--muted-foreground); margin-top: 0.75rem; min-height: 1.25rem; }
.newsletter__msg.is-success { color: var(--destructive); }

@media (max-width: 900px) {
  .newsletter__inner { grid-template-columns: 1fr; gap: var(--s-6); }
  .newsletter__form { flex-direction: column; padding: 0.25rem; }
  .newsletter__form input { padding: 0 0.75rem; }
}

/* ============================================================
   FOOTER
   ============================================================ */
.site-footer {
  background: var(--foreground);
  color: oklch(0.985 0.006 80 / 0.6);
  padding: var(--s-16) 0 var(--s-5);
  border-top: 1px solid oklch(1 0 0 / 0.08);
}
.footer-grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: var(--s-12);
  padding: 0 var(--gutter);
  max-width: var(--container);
  margin: 0 auto;
}
.footer-brand .logo {
  display: inline-flex;
  align-items: center;
  color: var(--background);
  transition: opacity var(--fast) var(--ease);
}
.footer-brand .logo img {
  height: 3rem;
  width: auto;
  /* Transparent PNG: invert turns dark text into light text + preserves red dot via hue-rotate */
  filter: invert(1) hue-rotate(180deg);
}
.footer-brand .logo svg { height: 1.625rem; width: auto; color: var(--background); }
.footer-brand .logo:hover { opacity: 0.7; }
.footer-tagline {
  font-family: var(--font-display);
  font-size: 1.125rem;
  color: var(--background);
  margin: var(--s-4) 0 var(--s-4);
  max-width: 18rem;
  line-height: 1.4;
  letter-spacing: -0.01em;
}
.footer-col h5 { color: var(--background); margin-bottom: var(--s-4); }
.footer-col ul { display: flex; flex-direction: column; gap: 0.75rem; }
.footer-col a { color: oklch(0.985 0.006 80 / 0.55); font-size: 0.875rem; transition: color var(--fast) var(--ease); }
.footer-col a:hover { color: var(--background); }

.footer-bottom {
  margin-top: var(--s-12);
  padding: var(--s-5) var(--gutter) 0;
  max-width: var(--container);
  margin-left: auto; margin-right: auto;
  border-top: 1px solid oklch(1 0 0 / 0.08);
  display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: var(--s-3);
  font-family: var(--font-mono);
  font-size: 0.6875rem;
  color: oklch(0.985 0.006 80 / 0.4);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

@media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr 1fr; gap: var(--s-6); } }
@media (max-width: 540px) { .footer-grid { grid-template-columns: 1fr; } }

/* ============================================================
   PAGE HEADER (shop, about, legal)
   ============================================================ */
.page-header {
  padding: var(--s-16) 0 var(--s-12);
  border-bottom: 1px solid var(--border);
}
.page-header__inner { max-width: 56rem; }
.page-header h1 {
  font-size: clamp(2.5rem, 7vw, 5.5rem);
  margin-bottom: var(--s-4);
  line-height: 1;
}
.page-header .lead { color: var(--muted-foreground); max-width: 36rem; }

/* ============================================================
   SHOP — Filters
   ============================================================ */
.shop-filters {
  display: flex; justify-content: space-between; align-items: center;
  padding: var(--s-5) 0;
  border-bottom: 1px solid var(--border);
  margin-bottom: var(--s-8);
  flex-wrap: wrap; gap: var(--s-4);
}
.filter-chips { display: flex; gap: 0.5rem; flex-wrap: wrap; }
.filter-chip {
  padding: 0.5rem 0.875rem;
  border: 1px solid var(--border);
  border-radius: 9999px;
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: -0.005em;
  background: var(--background);
  color: var(--foreground);
  transition: all var(--fast) var(--ease);
  cursor: pointer;
  height: 2rem;
}
.filter-chip:hover { border-color: var(--border-strong); }
.filter-chip.is-active { background: var(--primary); color: var(--primary-foreground); border-color: var(--primary); }

.sort-select {
  padding: 0 2.25rem 0 0.875rem;
  height: 2rem;
  border: 1px solid var(--border);
  border-radius: 9999px;
  font-size: 0.75rem;
  font-weight: 500;
  background: var(--background);
  appearance: none;
  -webkit-appearance: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' fill='none' stroke='%230F0E0C' stroke-width='1.5'/></svg>");
  background-repeat: no-repeat;
  background-position: right 0.75rem center;
  cursor: pointer;
}

/* ============================================================
   PRODUCT DETAIL PAGE
   ============================================================ */
.product-page { padding: var(--s-8) 0 var(--s-16); }
.product-detail {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: var(--s-12);
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--gutter);
}
.product-detail__gallery { position: sticky; top: calc(var(--header-h) + var(--s-4)); height: fit-content; }
.product-detail__hero {
  aspect-ratio: 4/5;
  border-radius: var(--radius-lg);
  overflow: hidden;
  margin-bottom: var(--s-3);
  position: relative;
  background: var(--muted);
  border: 1px solid var(--border);
  box-shadow: var(--shadow-lg);
}
.product-detail__hero img { width: 100%; height: 100%; object-fit: cover; display: block; }

.product-detail__thumbs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.5rem; }
.product-detail__thumb {
  aspect-ratio: 1;
  border-radius: var(--radius-md);
  overflow: hidden;
  cursor: pointer;
  border: 1px solid var(--border);
  background: var(--muted);
  transition: border-color var(--fast) var(--ease);
}
.product-detail__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.product-detail__thumb.is-active { border-color: var(--foreground); }

.product-detail__info { padding-top: var(--s-5); }
.product-detail__cat { font-family: var(--font-mono); font-size: 0.6875rem; text-transform: uppercase; letter-spacing: 0.14em; color: var(--muted-foreground); margin-bottom: 0.75rem; }
.product-detail__title { font-size: clamp(2.25rem, 4.5vw, 3.75rem); margin-bottom: var(--s-3); line-height: 1; }
.product-detail__price { font-family: var(--font-mono); font-size: 1.375rem; font-weight: 500; margin-bottom: var(--s-5); display: flex; align-items: baseline; gap: 0.75rem; }
.product-detail__desc { font-size: 1.0625rem; line-height: 1.65; color: var(--muted-foreground); margin-bottom: var(--s-6); }

.product-detail__variants { display: flex; gap: 0.5rem; margin-bottom: var(--s-5); flex-wrap: wrap; }
.variant-chip {
  padding: 0.625rem 1rem;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  font-size: 0.8125rem;
  font-weight: 500;
  cursor: pointer;
  transition: all var(--fast) var(--ease);
  background: var(--background);
  color: var(--foreground);
}
.variant-chip.is-active { background: var(--primary); color: var(--primary-foreground); border-color: var(--primary); }
.variant-chip:hover:not(.is-active) { border-color: var(--border-strong); }

.product-detail__buy { display: flex; gap: 0.5rem; margin-bottom: var(--s-6); align-items: stretch; }
.qty-stepper {
  display: flex; align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 0 0.25rem;
  background: var(--card);
}
.qty-stepper button {
  width: 2rem; height: 2.5rem;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.125rem;
  font-weight: 400;
  color: var(--foreground);
  transition: color var(--fast) var(--ease);
}
.qty-stepper button:hover { color: var(--destructive); }
.qty-stepper input {
  width: 2rem;
  height: 2.625rem;
  text-align: center;
  font-family: var(--font-mono);
  font-size: 0.875rem;
  font-weight: 500;
  border: 0;
  background: transparent;
  -moz-appearance: textfield;
}
.qty-stepper input::-webkit-outer-spin-button,
.qty-stepper input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.add-to-cart-btn { flex: 1; }

.product-detail__details { border-top: 1px solid var(--border); padding-top: var(--s-5); }
.detail-row {
  display: grid; grid-template-columns: 9rem 1fr;
  padding: 0.75rem 0;
  border-bottom: 1px solid var(--border);
  gap: var(--s-4);
}
.detail-row:last-child { border-bottom: 0; }
.detail-row .label { font-family: var(--font-mono); font-size: 0.625rem; text-transform: uppercase; color: var(--muted-foreground); letter-spacing: 0.12em; padding-top: 4px; }
.detail-row .value { font-size: 0.875rem; color: var(--foreground); line-height: 1.5; }

.product-features {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: var(--s-6);
  padding: var(--s-12) 0;
  border-top: 1px solid var(--border);
  margin-top: var(--s-12);
}
.product-feature svg { width: 1.5rem; height: 1.5rem; stroke: var(--foreground); fill: none; stroke-width: 1.5; margin-bottom: 0.875rem; }
.product-feature h4 { margin-bottom: 0.375rem; }
.product-feature p { font-size: 0.875rem; color: var(--muted-foreground); line-height: 1.55; }

@media (max-width: 900px) {
  .product-detail { grid-template-columns: 1fr; gap: var(--s-6); }
  .product-detail__gallery { position: static; }
  .product-features { grid-template-columns: 1fr; padding: var(--s-8) 0; }
  .detail-row { grid-template-columns: 1fr; gap: 4px; }
}

/* ============================================================
   CART
   ============================================================ */
.cart-page { padding: var(--s-8) 0 var(--s-16); }
.cart-layout {
  display: grid;
  grid-template-columns: 1.5fr 1fr;
  gap: var(--s-10);
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--gutter);
}
.cart-items { display: flex; flex-direction: column; gap: var(--s-4); }
.cart-item {
  display: grid;
  grid-template-columns: 7rem 1fr auto;
  gap: var(--s-4);
  padding: var(--s-4) 0;
  border-bottom: 1px solid var(--border);
  align-items: center;
}
.cart-item__media { aspect-ratio: 1; border-radius: var(--radius-md); overflow: hidden; background: var(--muted); border: 1px solid var(--border); }
.cart-item__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cart-item__title { font-size: 1rem; font-weight: 500; margin-bottom: 4px; color: var(--foreground); }
.cart-item__cat { font-family: var(--font-mono); font-size: 0.625rem; text-transform: uppercase; color: var(--muted-foreground); letter-spacing: 0.1em; margin-bottom: var(--s-3); }
.cart-item__variant { font-size: 0.8125rem; color: var(--muted-foreground); }
.cart-item__controls { display: flex; align-items: center; gap: var(--s-3); margin-top: var(--s-3); }
.cart-item__remove { font-size: 0.75rem; color: var(--muted-foreground); cursor: pointer; transition: color var(--fast) var(--ease); background: transparent; border: 0; text-decoration: underline; text-underline-offset: 3px; }
.cart-item__remove:hover { color: var(--destructive); }
.cart-item__price { font-family: var(--font-mono); font-size: 1.125rem; font-weight: 500; text-align: right; color: var(--foreground); }

.cart-summary {
  background: var(--muted);
  border-radius: var(--radius-lg);
  padding: var(--s-6);
  position: sticky;
  top: calc(var(--header-h) + var(--s-4));
  height: fit-content;
  border: 1px solid var(--border);
}
.cart-summary h3 { margin-bottom: var(--s-5); font-size: 1.5rem; }
.summary-row { display: flex; justify-content: space-between; padding: 0.75rem 0; color: var(--muted-foreground); font-size: 0.9375rem; }
.summary-row.total { border-top: 1px solid var(--border); margin-top: var(--s-3); padding-top: var(--s-4); font-size: 1.125rem; font-weight: 500; color: var(--foreground); }
.summary-row .value { font-family: var(--font-mono); }
.checkout-btn { width: 100%; margin-top: var(--s-5); }

.cart-empty {
  text-align: center;
  padding: var(--s-20) var(--gutter);
}
.cart-empty h2 { margin-bottom: var(--s-4); color: var(--foreground); }
.cart-empty p { color: var(--muted-foreground); margin-bottom: var(--s-5); font-size: 1.0625rem; }

@media (max-width: 900px) {
  .cart-layout { grid-template-columns: 1fr; gap: var(--s-6); }
  .cart-summary { position: static; }
  .cart-item { grid-template-columns: 5rem 1fr auto; }
}

/* ============================================================
   CHECKOUT
   ============================================================ */
.checkout-page { padding: var(--s-8) 0 var(--s-16); }
.checkout-layout {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: var(--s-10);
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--gutter);
}
.checkout-form { display: flex; flex-direction: column; gap: var(--s-5); }
.form-section { padding-bottom: var(--s-5); border-bottom: 1px solid var(--border); }
.form-section h3 { font-size: 1.375rem; margin-bottom: var(--s-4); font-family: var(--font-display); font-weight: 400; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-bottom: 0.75rem; }
.form-row--single { grid-template-columns: 1fr; }
.form-group { display: flex; flex-direction: column; }

.payment-options { display: flex; flex-direction: column; gap: 0.5rem; }
.payment-option {
  display: flex; align-items: center; gap: var(--s-3);
  padding: var(--s-4); border: 1px solid var(--border); border-radius: var(--radius-md);
  cursor: pointer;
  transition: all var(--fast) var(--ease);
  background: var(--card);
}
.payment-option:hover { border-color: var(--border-strong); }
.payment-option:has(input:checked) { border-color: var(--foreground); background: var(--background); }
.payment-option input { accent-color: var(--destructive); width: 1rem; height: 1rem; }
.payment-option strong { font-weight: 500; font-size: 0.9375rem; }
.payment-option small { display: block; color: var(--muted-foreground); font-size: 0.75rem; margin-top: 2px; }

@media (max-width: 900px) {
  .checkout-layout { grid-template-columns: 1fr; gap: var(--s-6); }
  .form-row { grid-template-columns: 1fr; }
}

/* ============================================================
   PROSE (about + legal pages)
   ============================================================ */
.prose {
  max-width: 44rem;
  margin: 0 auto;
  padding: var(--s-12) var(--gutter);
}
.prose h2 { font-size: 1.875rem; margin: var(--s-8) 0 var(--s-4); }
.prose h3 { font-size: 1.375rem; font-family: var(--font-display); font-weight: 400; margin: var(--s-6) 0 var(--s-3); }
.prose p, .prose ul li { font-size: 1rem; line-height: 1.7; color: var(--foreground); margin-bottom: var(--s-3); }
.prose ul { list-style: disc; padding-left: var(--s-5); margin-bottom: var(--s-4); }
.prose a { color: var(--destructive); text-decoration: underline; text-underline-offset: 3px; }
.prose strong { font-weight: 500; }
.prose hr { border: 0; height: 1px; background: var(--border); margin: var(--s-8) 0; }

/* ============================================================
   COOKIE BANNER
   ============================================================ */
.cookie {
  position: fixed;
  bottom: 1.25rem;
  right: 1.25rem;
  background: var(--card);
  color: var(--foreground);
  padding: var(--s-4) var(--s-5);
  border-radius: var(--radius-lg);
  max-width: 22rem;
  z-index: 80;
  box-shadow: var(--shadow-xl);
  border: 1px solid var(--border);
  transform: translateY(20px) scale(0.97);
  opacity: 0;
  pointer-events: none;
  transition: all var(--med) var(--ease);
}
.cookie.is-visible { opacity: 1; transform: translateY(0) scale(1); pointer-events: auto; }
.cookie__head {
  display: flex; align-items: center; gap: 0.5rem;
  margin-bottom: 0.5rem;
  font-family: var(--font-mono);
  font-size: 0.625rem;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--muted-foreground);
}
.cookie__head svg { width: 0.875rem; height: 0.875rem; stroke: var(--destructive); fill: none; stroke-width: 2; }
.cookie__text { font-size: 0.8125rem; line-height: 1.55; color: var(--foreground); margin-bottom: var(--s-3); }
.cookie__text a { color: var(--destructive); text-decoration: underline; text-underline-offset: 3px; }
.cookie__actions { display: flex; gap: 0.5rem; }
.cookie__btn {
  padding: 0.5rem 0.875rem;
  font-size: 0.75rem;
  font-weight: 500;
  border-radius: var(--radius-md);
  cursor: pointer;
  transition: all var(--fast) var(--ease);
  flex: 1;
  border: 1px solid transparent;
}
.cookie__btn--accept { background: var(--primary); color: var(--primary-foreground); }
.cookie__btn--accept:hover { background: oklch(0.28 0.012 60); }
.cookie__btn--reject { background: transparent; color: var(--muted-foreground); border-color: var(--border-strong); }
.cookie__btn--reject:hover { color: var(--foreground); border-color: var(--foreground); }

@media (max-width: 540px) {
  .cookie { left: 1rem; right: 1rem; max-width: none; bottom: 1rem; }
}

/* ============================================================
   TOAST
   ============================================================ */
.toast {
  position: fixed;
  bottom: 1.25rem;
  left: 50%;
  transform: translateX(-50%) translateY(10px);
  background: var(--foreground);
  color: var(--background);
  padding: 0.75rem 1.125rem;
  border-radius: var(--radius-md);
  font-size: 0.875rem;
  z-index: 9999;
  opacity: 0;
  pointer-events: none;
  transition: all var(--med) var(--ease);
  display: flex; align-items: center; gap: 0.5rem;
  max-width: 26rem;
  box-shadow: var(--shadow-xl);
}
.toast.is-visible { opacity: 1; transform: translateX(-50%) translateY(0); pointer-events: auto; }
.toast svg { width: 1rem; height: 1rem; stroke: var(--destructive); fill: none; stroke-width: 2; flex-shrink: 0; }

/* ============================================================
   STORY CARDS (About page)
   ============================================================ */
.story-card-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--s-5);
  padding: var(--s-12) 0;
}
.story-card {
  padding: var(--s-6);
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  transition: all var(--med) var(--ease);
}
.story-card:hover { border-color: var(--border-strong); transform: translateY(-2px); box-shadow: var(--shadow-md); }
.story-card__num { font-family: var(--font-display); font-size: 1.125rem; font-weight: 400; color: var(--destructive); margin-bottom: var(--s-3); font-style: italic; }
.story-card__title { font-family: var(--font-display); font-size: 1.5rem; font-weight: 400; line-height: 1.2; margin-bottom: var(--s-3); letter-spacing: -0.02em; }
.story-card__body { font-size: 0.875rem; color: var(--muted-foreground); line-height: 1.65; }

@media (max-width: 900px) { .story-card-grid { grid-template-columns: 1fr; } }

/* ============================================================
   UTILITIES
   ============================================================ */
.scroll-progress { display: none; } /* removed in new design — distracts from content */
.reveal { /* now no-op — content visible by default */ opacity: 1; transform: none; }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* Print */
@media print {
  .site-header, .site-footer, .top-banner, .cookie, .toast, .mobile-drawer { display: none !important; }
  body { background: white; color: black; }
}

/* ============================================================
   IOS SAFE AREA
   ============================================================ */
@supports (padding: env(safe-area-inset-bottom)) {
  .cookie { bottom: calc(1.25rem + env(safe-area-inset-bottom)); }
}

/* ============================================================
   WORLD-CLASS POLISH LAYER  (2026-06 — additive, brand-safe)
   Subtle entrance reveals · paper grain · micro-interactions.
   JS-gated via .js on <html> so no-JS shows everything.
   ============================================================ */

/* ── Scroll reveal — quiet fade + rise, once ── */
.js .reveal {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.7s var(--ease), transform 0.7s var(--ease);
  will-change: opacity, transform;
}
.js .reveal.is-visible { opacity: 1; transform: none; }

/* Gentle stagger inside grouped grids */
.js .mood-card.reveal:nth-child(2),
.js .reviews__grid .review.reveal:nth-child(2) { transition-delay: 0.07s; }
.js .mood-card.reveal:nth-child(3),
.js .reviews__grid .review.reveal:nth-child(3) { transition-delay: 0.14s; }
.js .mood-card.reveal:nth-child(4) { transition-delay: 0.21s; }

@media (prefers-reduced-motion: reduce) {
  .js .reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
}

/* ── Paper grain — faint editorial texture across the canvas ── */
body::after {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 60;                 /* over content + header(50), under drawer(200)/cookie(80)/toast */
  pointer-events: none;
  opacity: 0.045;
  mix-blend-mode: soft-light;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size: 160px 160px;
}
@media (prefers-reduced-motion: reduce) { body::after { opacity: 0.03; } }

/* ── Nav — animated hairline underline ── */
.nav-primary a::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: -6px;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  opacity: 0.5;
  transition: transform var(--med) var(--ease);
}
.nav-primary a:hover::after,
.nav-primary a.is-active::after { transform: scaleX(1); }

/* ── Buttons — quiet depth + tactile press ── */
.btn-primary, .btn--default,
.btn-vermilion, .btn--destructive { box-shadow: var(--shadow-xs); }
.btn-primary:hover, .btn--default:hover,
.btn-vermilion:hover, .btn--destructive:hover { box-shadow: var(--shadow-sm); }
.btn:not(.btn-ghost):not(.btn--ghost):active { transform: translateY(1px); }

/* ── Hero — cinematic settle on load ── */
.js .hero__bg img { animation: hero-settle 1.7s var(--ease) both; }
@keyframes hero-settle { from { transform: scale(1.06); } to { transform: scale(1); } }
@media (prefers-reduced-motion: reduce) { .js .hero__bg img { animation: none; } }

/* ── Product card — a touch more depth on rest, lift on hover ── */
.product-card__media { box-shadow: var(--shadow-xs); }
.product-card:hover .product-card__media { box-shadow: var(--shadow-lg); }

/* ============================================================
   1A CRAFT LAYER  (2026-06 — editorial Typo-Perfektion + Detail)
   Ruhig, markengerecht — Handwerk statt Effekt.
   ============================================================ */

/* Variable-Font optical sizing (Fraunces) — edleres Schriftbild in jeder Größe */
h1, h2, h3, h4, .hero__title, .editorial h2, .product-detail__title,
.page-header h1, .stat__number, .mood-card__content h3, .review__quote,
.footer-tagline, .story-card__title, .serif-italic { font-optical-sizing: auto; }

/* Ausgewogener Zeilenumbruch — keine einsamen Wörter / Hurenkinder mehr */
h1, h2, h3, .hero__title, .editorial h2, .product-detail__title,
.page-header h1, .mood-card__content h3, .review__quote { text-wrap: balance; }
p, .lead, .hero__sub, .featured__copy p, .editorial p, .product-detail__desc,
.newsletter__copy p, .cart-empty p, .product-feature p { text-wrap: pretty; }

/* Fehlende Utility — genutzt auf „You may also like" (Produktseiten) */
.section-sand { background: var(--sand); }

/* Verfeinerter Fokus-Ring */
:focus-visible { outline: 2px solid var(--ring); outline-offset: 3px; }

/* Dünne, markengerechte Scrollbar (nur Maus-Geräte) */
@media (pointer: fine) {
  html { scrollbar-width: thin; scrollbar-color: oklch(0.18 0.01 60 / 0.22) transparent; }
  ::-webkit-scrollbar { width: 11px; height: 11px; }
  ::-webkit-scrollbar-track { background: transparent; }
  ::-webkit-scrollbar-thumb { background: oklch(0.18 0.01 60 / 0.18); border-radius: 9999px; border: 3px solid var(--background); }
  ::-webkit-scrollbar-thumb:hover { background: oklch(0.18 0.01 60 / 0.34); }
}

/* Produktkarte — luxuriöser, langsamer Zoom + weichere Tiefe */
.product-card { transition: transform 0.4s var(--ease); }
.product-card:hover { transform: translateY(-3px); }
.product-card__image img { transition: transform 1.15s var(--ease); }
.product-card:hover .product-card__image img { transform: scale(1.055); }
.product-card:hover .product-card__media { box-shadow: 0 18px 38px -18px oklch(0 0 0 / 0.24); }

/* Produktgalerie — sanftes Leben beim Hover (wie Featured Object) */
.product-detail__hero img { transition: transform 1.2s var(--ease); }
.product-detail__hero:hover img { transform: scale(1.03); }

/* Chips — taktiles Feedback */
.variant-chip:active, .filter-chip:active { transform: translateY(1px); }

/* Inline-Links — feinerer Unterstrich-Abstand */
.prose a, .footer-col a, .cookie__text a, .product-detail__desc a { text-underline-offset: 3px; text-decoration-thickness: 1px; }

@media (prefers-reduced-motion: reduce) {
  .product-card, .product-card__image img, .product-detail__hero img { transition: none !important; }
}

/* ============================================================
   PREMIUM PASS v2  (2026-06 — Tiefe + Detail-Akzente)
   ============================================================ */

/* Mood-Karten — weiches Oberlicht für Tiefe + lebendigerer Hover */
.mood-card::after {
  background:
    radial-gradient(130% 90% at 50% -8%, oklch(1 0 0 / 0.12), transparent 55%),
    linear-gradient(180deg, transparent 42%, oklch(0 0 0 / 0.24) 100%);
}
.mood-card { transition: transform var(--slow) var(--ease), box-shadow var(--med) var(--ease); }
.mood-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-xl); }
.mood-card__content { transition: transform var(--med) var(--ease); }
.mood-card:hover .mood-card__content { transform: translateY(-3px); }

/* Stats — straffere, edlere Zahlen */
.stat__number { letter-spacing: -0.045em; }

/* Featured-Meta — feiner Akzent beim Hover */
.featured__meta-item { transition: transform var(--med) var(--ease); }
.featured__meta-item:hover { transform: translateY(-2px); }
.featured__meta-item:hover .meta-value { color: var(--destructive); }

/* Sticky-Header — zarte Tiefe beim Scrollen (Premium-Detail) */
.site-header { transition: box-shadow var(--med) var(--ease), border-color var(--med) var(--ease); }
.site-header.is-scrolled { box-shadow: 0 1px 0 var(--border), 0 14px 32px -26px oklch(0 0 0 / 0.55); }

@media (prefers-reduced-motion: reduce) {
  .mood-card, .mood-card__content, .featured__meta-item { transition: none !important; }
}
