/* ============================================================
   alemanExpress — styles.css
   ============================================================
   Design System uebernommen von e-linguist (colors_and_type.css
   + lesson-v2.css), zu einer zentralen Datei zusammengefuehrt und
   fuer alemanexpress.net angepasst:
   - eine Sprache (Spanisch), kein Sprachumschalter
   - hoechstens 2 geladene Schriftfamilien (Display + Sans)
   - Mono nur als System-Stack, kein zusaetzlicher Webfont
   Warm, erwachsen, strukturiert. Off-white, dunkles Grau, Honiggelb.
   ============================================================ */

/* ---------- Web fonts ----------
   Nur zwei Familien (Display + Sans). Geladen wird nicht hier per @import
   (render-blockierend), sondern nicht-blockierend im <head> jeder Seite
   via <link ... media="print" onload>. Faellt der Font aus, greifen die
   System-Stacks unten. Ladezeit ist ein Feature. */

/* ============================================================
   FUENTES — self-hosted (DSGVO: sin peticiones a Google)
   ============================================================ */
@font-face {
  font-family: "Bricolage Grotesque";
  src: url("/fonts/BricolageGrotesque-Variable.woff2") format("woff2");
  font-weight: 200 800;
  font-stretch: 75% 100%;
  font-display: swap;
}
@font-face {
  font-family: "Inter";
  src: url("/fonts/Inter-Variable.woff2") format("woff2");
  font-weight: 100 900;
  font-display: swap;
}

:root {
  /* ============================================================
     COLOR — Brand
     ============================================================ */
  --honey-50:  #FFF8E5;
  --honey-100: #FDEFC2;
  --honey-200: #FCE294;
  --honey-300: #FCD466;
  --honey-400: #FCC433;   /* brand, aus dem Logo */
  --honey-500: #E8AE1F;
  --honey-600: #C4910F;
  --honey-700: #8E6906;
  --gold: #F6AE07;

  --sand-50:   #FBF5EC;
  --sand-100:  #F5EAD6;
  --sand-200:  #ECD9B7;
  --sand-300:  #DDC089;
  --sand-400:  #C9A35F;
  --sand-500:  #A88542;
  --sand-600:  #7A5F2C;

  --teal-50:   #E6F3F1;
  --teal-100:  #CFE9E5;
  --teal-200:  #BFE0DC;
  --teal-300:  #94CCC4;
  --teal-400:  #6FB7AF;
  --teal-600:  #3F8C84;
  --teal-700:  #28645E;

  --crayon-red:    #E94B3C;
  --crayon-red-100:    #FBE4E1;
  --crayon-blue:   #3FA6E0;
  --crayon-blue-100:   #DCEDF8;
  --crayon-green:  #6FB54F;
  --crayon-green-100:  #E2F0DA;
  --crayon-yellow: #F5C946;
  --crayon-yellow-100: #FDF1CC;
  --crayon-purple-100: #EDE4F6;

  /* ============================================================
     COLOR — Neutrals
     ============================================================ */
  --paper:    #FBFAF7;
  --paper-2:  #F5F2EC;
  --card:     #FFFFFF;
  --card-2:   #FAF7F1;

  --line:     #ECE7DD;
  --line-2:   #DCD5C6;

  --ink:      #1F1B16;
  --ink-2:    #3A332A;
  --ink-3:    #5C5346;
  --ink-4:    #8A8273;
  --ink-5:    #B8B0A0;

  /* ============================================================
     COLOR — Semantic
     ============================================================ */
  --bg:           var(--paper);
  --bg-recessed:  var(--paper-2);
  --surface:      var(--card);
  --surface-alt:  var(--card-2);

  --fg:           var(--ink);
  --fg-muted:     var(--ink-3);
  --fg-subtle:    var(--ink-4);
  --fg-on-honey:  var(--ink);

  --border:        var(--line);
  --border-strong: var(--line-2);

  --accent:       var(--honey-400);
  --accent-hover: var(--honey-500);
  --accent-press: var(--honey-600);
  --accent-soft:  var(--honey-100);

  --link:         var(--ink);
  --link-hover:   var(--honey-600);

  --success:      #4F8F3A;
  --success-bg:   #E7F1DD;
  --warning:      #C97A0F;
  --warning-bg:   #FCEBC8;
  --danger:       #C0392B;
  --danger-bg:    #FAE3DF;
  --info:         var(--teal-600);
  --info-bg:      #DDEEEC;

  --focus-ring:   #FFD460;

  /* ============================================================
     RADIUS
     ============================================================ */
  --r-xs:   6px;
  --r-sm:   10px;
  --r-md:   14px;
  --r-lg:   20px;
  --r-xl:   28px;
  --r-2xl:  36px;
  --r-pill: 999px;

  /* ============================================================
     SPACING
     ============================================================ */
  --space-1:  4px;
  --space-2:  8px;
  --space-3:  12px;
  --space-4:  16px;
  --space-5:  20px;
  --space-6:  24px;
  --space-8:  32px;
  --space-10: 40px;
  --space-12: 48px;
  --space-16: 64px;
  --space-20: 80px;
  --space-24: 96px;

  /* ============================================================
     SHADOWS
     ============================================================ */
  --shadow-xs: 0 1px 2px rgba(60, 45, 20, 0.04);
  --shadow-sm: 0 2px 6px rgba(60, 45, 20, 0.06);
  --shadow-md: 0 6px 18px rgba(60, 45, 20, 0.08);
  --shadow-lg: 0 16px 40px rgba(60, 45, 20, 0.10);
  --shadow-honey: 0 8px 24px rgba(252, 196, 51, 0.30);

  /* ============================================================
     MOTION
     ============================================================ */
  --ease:        cubic-bezier(0.4, 0, 0.2, 1);
  --ease-out:    cubic-bezier(0.16, 1, 0.3, 1);
  --ease-bounce: cubic-bezier(0.34, 1.4, 0.64, 1);
  --dur-fast:    140ms;
  --dur:         220ms;
  --dur-slow:    420ms;

  /* ============================================================
     TYPOGRAPHY
     ============================================================ */
  --font-display: "Bricolage Grotesque", "Fraunces", ui-serif, Georgia, serif;
  --font-sans:    "Inter", system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
  --font-mono:    ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;

  --fs-display: clamp(40px, 6vw, 72px);
  --fs-h1:      clamp(32px, 4.4vw, 52px);
  --fs-h2:      clamp(26px, 3vw, 36px);
  --fs-h3:      22px;
  --fs-h4:      18px;
  --fs-body:    16px;
  --fs-body-lg: 18px;
  --fs-small:   14px;
  --fs-xs:      12.5px;

  --lh-tight:   1.05;
  --lh-snug:    1.2;
  --lh-normal:  1.5;
  --lh-relaxed: 1.65;

  --tracking-tight:  -0.02em;
  --tracking-normal: 0;
  --tracking-wide:   0.02em;
  --tracking-caps:   0.14em;
}

/* ============================================================
   BASE
   ============================================================ */
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
html {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: var(--lh-normal);
  color: var(--fg);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-y: scroll;
  scroll-behavior: smooth;
}
body {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: var(--lh-relaxed);
  color: var(--fg);
  background: var(--bg);
}
img { max-width: 100%; display: block; }

.wrap { width: 100%; max-width: 1240px; margin: 0 auto; padding: 0 var(--space-8); }
.wrap-narrow { width: 100%; max-width: 920px; margin: 0 auto; padding: 0 var(--space-8); }

/* ============================================================
   TYPE HELPERS
   ============================================================ */
h1 {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: var(--fs-h1);
  line-height: var(--lh-snug);
  letter-spacing: var(--tracking-tight);
  color: var(--fg);
  text-wrap: balance;
}
h2 {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: var(--fs-h2);
  line-height: var(--lh-snug);
  letter-spacing: var(--tracking-tight);
  color: var(--fg);
  text-wrap: balance;
}
h3, h4 {
  font-family: var(--font-sans);
  font-weight: 600;
  line-height: var(--lh-snug);
  color: var(--fg);
}
p { text-wrap: pretty; }

a {
  color: var(--link);
  text-decoration: underline;
  text-decoration-color: var(--honey-300);
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
  transition: color var(--dur) var(--ease), text-decoration-color var(--dur) var(--ease);
}
a:hover { color: var(--link-hover); text-decoration-color: var(--honey-500); }

::selection { background: var(--honey-200); color: var(--ink); }
:focus-visible { outline: 3px solid var(--focus-ring); outline-offset: 2px; border-radius: var(--r-sm); }

/* ============================================================
   TOPBAR / NAV
   ============================================================ */
.topbar {
  position: sticky; top: 0; z-index: 40;
  background: var(--paper);
  border-bottom: 1px solid var(--border);
}
.topbar-inner {
  display: flex; align-items: center; gap: 28px;
  max-width: 1240px; margin: 0 auto;
  padding: 16px 32px;
  line-height: 1.5;
}
.brand { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; color: var(--ink); }
.brand img { width: 30px; height: 30px; }
.brand:hover .brand-word { color: var(--gold); }
.brand:hover .brand-word .dot { color: var(--gold); }
.brand-word {
  font-family: var(--font-display); font-weight: 600;
  font-size: 19px; letter-spacing: -0.02em; white-space: nowrap;
}
.brand-word .dot { color: var(--honey-500); font-weight: 700; transition: color var(--dur) var(--ease); }

.topnav { flex: 1; display: flex; gap: 6px; }
.topnav a {
  position: relative;
  padding: 8px 14px; border-radius: var(--r-pill);
  text-decoration: none; color: var(--ink-3);
  font-size: 14px; font-weight: 500;
  transition: background var(--dur) var(--ease), color var(--dur) var(--ease);
}
.topnav a:hover { background: var(--paper-2); color: var(--ink); }
.topnav a.is-active { color: var(--ink); font-weight: 600; }
.topnav a.is-active::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 1px;
  width: 16px; height: 2px; margin: 0 auto;
  background: var(--honey-400); border-radius: 2px;
}
.top-cta {
  display: inline-flex; align-items: center;
  padding: 9px 18px; border-radius: var(--r-pill);
  background: var(--honey-400); color: var(--ink);
  font-size: 14px; font-weight: 600; text-decoration: none;
  transition: background var(--dur) var(--ease), box-shadow var(--dur) var(--ease), transform var(--dur) var(--ease);
}
.top-cta:hover { background: var(--honey-500); color: var(--ink); box-shadow: var(--shadow-honey); transform: translateY(-1px); }

@media (max-width: 880px) { .topnav { display: none; } }

/* ============================================================
   READING-PROGRESS RAIL
   ============================================================ */
.progress-rail {
  position: fixed; top: 0; left: 0; right: 0; height: 3px;
  background: transparent; z-index: 50; pointer-events: none;
}
.progress-rail .fill {
  height: 100%; width: 0%;
  background: var(--honey-400);
  transition: width 80ms linear;
}

/* ============================================================
   EDITORIAL HERO
   ============================================================ */
.hero {
  padding: var(--space-20) 0 var(--space-16);
  position: relative; overflow: hidden;
  background: linear-gradient(180deg, var(--sand-50) 0%, var(--paper) 100%);
}
.hero::before {
  content: ""; position: absolute;
  top: 40px; right: -180px;
  width: 520px; height: 520px; border-radius: 50%;
  background: radial-gradient(circle at center, var(--honey-100) 0%, var(--honey-50) 50%, transparent 75%);
  pointer-events: none; z-index: 0;
}
.hero-grid { display: grid; grid-template-columns: 1fr; gap: var(--space-8); position: relative; z-index: 1; }
.hero-body { max-width: 880px; position: relative; z-index: 1; }
.hero-eyebrow {
  display: inline-flex; align-items: center; flex-wrap: wrap; gap: 10px;
  font-size: 12px; letter-spacing: var(--tracking-caps);
  text-transform: uppercase; font-weight: 600; color: var(--ink-3);
  margin-bottom: var(--space-5);
}
.hero-eyebrow .crumb-sep { color: var(--ink-5); }
.hero-eyebrow a { color: var(--ink-3); text-decoration: none; }
.hero-eyebrow a:hover { color: var(--honey-700); }
.hero-eyebrow .area-pill {
  padding: 4px 12px; border-radius: var(--r-pill);
  background: var(--teal-100); color: var(--teal-700);
  letter-spacing: var(--tracking-caps); font-weight: 700;
}
.hero h1 {
  font-family: var(--font-display); font-weight: 600;
  font-size: clamp(2.5rem, 5.6vw, 4.5rem);
  line-height: 1.12; letter-spacing: -0.025em;
  margin: 0 0 var(--space-8); color: var(--ink); text-wrap: balance;
}
.hero h1 .de { font-style: italic; color: var(--teal-600); }
.hero-lead {
  font-family: var(--font-display);
  font-size: clamp(1.125rem, 1.6vw, 1.375rem);
  line-height: 1.45; color: var(--ink-3); font-weight: 400;
  max-width: 640px; margin: 0 0 var(--space-8); text-wrap: pretty;
}
.hero-meta {
  display: flex; flex-wrap: wrap; gap: var(--space-6); align-items: center;
  padding-top: var(--space-6); border-top: 1px solid var(--border); max-width: 720px;
}
.meta-item { display: flex; flex-direction: column; gap: 2px; }
.meta-item .label {
  font-size: 11px; letter-spacing: var(--tracking-caps);
  text-transform: uppercase; color: var(--ink-4); font-weight: 600;
}
.meta-item .value {
  font-family: var(--font-display); font-size: 18px; font-weight: 600; color: var(--ink);
}

/* ============================================================
   CHAPTER NAV STRIP
   ============================================================ */
.chapter-nav {
  position: sticky; top: 65px; z-index: 20;
  background: color-mix(in oklab, var(--paper) 92%, transparent);
  backdrop-filter: saturate(140%) blur(8px);
  border-top: 1px solid var(--border); border-bottom: 1px solid var(--border);
  padding: var(--space-3) 0;
}
.chapter-nav-inner {
  max-width: 1280px; margin: 0 auto; padding: 0 var(--space-8);
  display: flex; align-items: center; gap: var(--space-2);
  overflow-x: auto; scrollbar-width: none;
}
.chapter-nav-inner::-webkit-scrollbar { display: none; }
.chip-link {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 6px 14px; border-radius: var(--r-pill);
  background: transparent; border: 1px solid var(--border);
  color: var(--ink-3); font-size: 13px; font-weight: 500;
  text-decoration: none; white-space: nowrap;
  transition: all var(--dur) var(--ease);
}
.chip-link:hover { background: var(--paper-2); color: var(--ink); border-color: var(--border-strong); }
.chip-link.is-active { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.chip-link .chip-num { font-family: var(--font-mono); font-size: 11px; opacity: 0.6; }
.chip-link.is-active .chip-num { opacity: 0.9; }

/* ============================================================
   ARTICLE LAYOUT
   ============================================================ */
.article { padding: var(--space-16) 0 var(--space-20); }
.chapter {
  display: grid; grid-template-columns: 80px 1fr; gap: var(--space-8);
  padding: var(--space-12) 0; border-bottom: 1px solid var(--border);
  scroll-margin-top: 140px;
}
.chapter:last-of-type { border-bottom: none; }
.chapter.is-banded {
  background: var(--sand-100);
  border-bottom: 1px solid var(--sand-200); border-top: 1px solid var(--sand-200);
  padding: var(--space-12) var(--space-8);
  margin: var(--space-6) calc(var(--space-8) * -1);
  border-radius: var(--r-xl);
}
.chapter-num {
  font-family: var(--font-display); font-weight: 600;
  font-size: 56px; line-height: 1; color: var(--honey-400);
  letter-spacing: -0.04em; position: sticky; top: 140px; align-self: start;
}
.chapter-num .label {
  display: block; font-family: var(--font-sans); font-size: 10.5px;
  letter-spacing: var(--tracking-caps); text-transform: uppercase;
  color: var(--ink-4); font-weight: 600; margin-top: 8px;
}
.chapter-body { max-width: 760px; min-width: 0; }
.chapter-body h2 {
  font-family: var(--font-display); font-weight: 600;
  font-size: clamp(1.75rem, 3vw, 2.5rem); line-height: 1.1;
  letter-spacing: -0.02em; color: var(--ink);
  margin: 0 0 var(--space-6); text-wrap: balance;
}
.chapter-body p {
  font-size: 17.5px; line-height: 1.7; color: var(--ink-2);
  margin: 0 0 var(--space-5); max-width: 64ch; text-wrap: pretty;
}
.chapter-body p a {
  color: var(--teal-600); text-decoration: underline;
  text-decoration-color: var(--teal-200); text-decoration-thickness: 2px;
  text-underline-offset: 4px;
  transition: color var(--dur) var(--ease), text-decoration-color var(--dur) var(--ease);
}
.chapter-body p a:hover { color: var(--teal-700); text-decoration-color: var(--teal-400); }
.chapter-body p strong { font-weight: 700; }
.chapter-body p em { font-style: italic; color: var(--ink); }
.chapter-body ul { max-width: 64ch; padding-left: 1.2em; margin: 0 0 var(--space-5); }
.chapter-body li { font-size: 17.5px; line-height: 1.7; color: var(--ink-2); margin-bottom: 6px; }

.subhead {
  font-family: var(--font-display); font-weight: 600;
  font-size: 24px; letter-spacing: -0.01em; color: var(--ink);
  margin: var(--space-10) 0 var(--space-4);
  display: flex; align-items: center; gap: 12px;
}
.subhead::before {
  content: ""; display: block; width: 24px; height: 2px;
  background: var(--honey-400); border-radius: 2px; flex-shrink: 0;
}

/* ============================================================
   EXAMPLE CARDS
   ============================================================ */
.examples { display: flex; flex-direction: column; gap: var(--space-3); margin: var(--space-6) 0; }
.ex-card {
  display: grid; grid-template-columns: 1fr auto; align-items: center; gap: var(--space-6);
  background: var(--card); border: 1px solid var(--border);
  border-left: 3px solid var(--honey-400); border-radius: var(--r-md);
  padding: var(--space-4) var(--space-6);
  transition: border-color var(--dur) var(--ease), transform var(--dur) var(--ease);
}
.ex-card:hover { border-color: var(--border-strong); transform: translateX(2px); }
.ex-card .text { font-family: var(--font-display); font-size: 19px; line-height: 1.5; color: var(--ink); font-weight: 400; }
.ex-card .text strong { font-weight: 700; color: var(--teal-700); font-style: normal; }
.ex-card .text .gloss { display: block; font-family: var(--font-sans); font-size: 14px; color: var(--ink-4); margin-top: 2px; font-weight: 400; }
.ex-card .tag {
  font-size: 11.5px; font-weight: 600; letter-spacing: var(--tracking-caps);
  text-transform: uppercase; color: var(--ink-4); white-space: nowrap;
}
@media (max-width: 720px) { .ex-card { grid-template-columns: 1fr; gap: 6px; } }

/* ============================================================
   RULE BOX (dunkel) / TIP BOX (teal) / CONTRAST BOX
   ============================================================ */
.rule-box {
  background: var(--ink); color: var(--paper);
  border-radius: var(--r-xl); padding: var(--space-8);
  margin: var(--space-8) 0;
  display: grid; grid-template-columns: 40px 1fr; gap: var(--space-5); align-items: start;
}
.rule-box .glyph { font-family: var(--font-display); font-weight: 600; font-size: 36px; line-height: 1; color: var(--honey-400); }
.rule-box .text { font-family: var(--font-display); font-size: 20px; line-height: 1.45; color: var(--paper); margin: 0; font-weight: 400; }
.rule-box .text em { color: var(--honey-300); font-style: italic; }
.rule-box .text strong { color: var(--paper); font-weight: 700; }

.tip-box {
  background: var(--info-bg); border: 1px solid var(--teal-200);
  border-radius: var(--r-lg); padding: var(--space-5) var(--space-6); margin: var(--space-6) 0;
  display: grid; grid-template-columns: auto 1fr; gap: var(--space-4); align-items: start;
}
.tip-box .tip-label {
  display: inline-flex; align-items: center; padding: 3px 10px; border-radius: var(--r-pill);
  background: var(--teal-600); color: var(--paper);
  font-size: 10.5px; font-weight: 700; letter-spacing: var(--tracking-caps);
  text-transform: uppercase; white-space: nowrap; margin-top: 2px;
}
.tip-box .text { font-size: 16px; line-height: 1.6; color: var(--ink-2); margin: 0; }
.tip-box .text em { color: var(--teal-600); font-style: italic; font-weight: 600; }
.tip-box .text strong { color: var(--ink); font-weight: 700; }
.tip-box > :nth-child(n+3) { grid-column: 1 / -1; }

/* Kontrast Deutsch/Spanisch — der zentrale didaktische Anker */
.contrast {
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: stretch; gap: 0;
  margin: var(--space-6) 0; border: 1px solid var(--border);
  border-radius: var(--r-lg); overflow: hidden; background: var(--card);
}
.contrast .side { padding: var(--space-5) var(--space-6); }
.contrast .side.es { background: var(--card-2); }
.contrast .side.de { background: var(--card); }
.contrast .side .flag {
  font-size: 10.5px; font-weight: 700; letter-spacing: var(--tracking-caps);
  text-transform: uppercase; color: var(--ink-4); margin-bottom: 8px; display: block;
}
.contrast .side.de .flag { color: var(--teal-700); }
.contrast .side .phrase { font-family: var(--font-display); font-size: 18px; line-height: 1.45; color: var(--ink); }
.contrast .side .phrase strong { color: var(--teal-700); font-weight: 700; }
.contrast .side .phrase .es-mark { color: var(--crayon-red); font-weight: 700; }
.contrast .bridge {
  display: flex; align-items: center; justify-content: center;
  padding: 0 var(--space-4); background: var(--honey-100);
  font-family: var(--font-display); font-size: 22px; color: var(--honey-700);
}
@media (max-width: 640px) {
  .contrast { grid-template-columns: 1fr; }
  .contrast .bridge { padding: var(--space-2); }
}

/* ============================================================
   GRAMMAR TABLE (.table-wrap / .tbl)
   ============================================================ */
.table-wrap { overflow-x: auto; margin: var(--space-5) 0; border-radius: var(--r-md); border: 1px solid var(--line); }
.tbl { width: 100%; border-collapse: collapse; font-size: 14.5px; background: var(--card); }
.tbl th {
  background: var(--ink); color: var(--paper); font-weight: 600; text-align: left;
  padding: var(--space-2) var(--space-4); font-size: 11.5px; letter-spacing: 0.05em;
  text-transform: uppercase; white-space: nowrap;
}
.tbl td { padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--line); vertical-align: top; line-height: 1.5; }
.tbl tr:last-child td { border-bottom: none; }
.tbl tr:nth-child(even) td { background: var(--card-2); }
.tbl .col-focus { background: var(--honey-50); font-family: var(--font-display); font-weight: 600; color: var(--honey-700); }
.tbl tr:nth-child(even) td.col-focus { background: var(--honey-100); }
.tbl .muted { color: var(--ink-4); }
.tbl strong { color: var(--teal-700); }

/* Farbschema-Karten: der/das teilen dem, die-f wird der, Plural wird den */
.case-map { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-3); margin: var(--space-6) 0; }
.case-cell {
  background: var(--card); border: 1px solid var(--border); border-radius: var(--r-lg);
  padding: var(--space-5); text-align: center;
}
.case-cell .from { font-family: var(--font-mono); font-size: 13px; color: var(--ink-4); }
.case-cell .arrow { font-family: var(--font-display); font-size: 20px; color: var(--ink-5); margin: 6px 0; }
.case-cell .to { font-family: var(--font-display); font-size: 30px; font-weight: 700; letter-spacing: -0.02em; }
.case-cell .genus { font-size: 10.5px; letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--ink-4); font-weight: 600; margin-top: 6px; display: block; }
.case-cell.is-m { border-top: 3px solid var(--crayon-blue); }
.case-cell.is-f { border-top: 3px solid var(--crayon-red); }
.case-cell.is-n { border-top: 3px solid var(--crayon-green); }
.case-cell.is-p { border-top: 3px solid var(--honey-500); }
.case-cell.is-m .to { color: #1F6A99; }
.case-cell.is-f .to { color: #9C2E22; }
.case-cell.is-n .to { color: #3A7027; }
.case-cell.is-p .to { color: var(--honey-700); }
.case-map.is-4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 640px) { .case-map, .case-map.is-4 { grid-template-columns: 1fr 1fr; } }

/* Lectura por columnas: una tarjeta por genero con las 4 formas apiladas (no en linea) */
.col-read { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--space-3); margin: var(--space-6) 0; }
.col-read .cr { background: var(--card); border: 1px solid var(--border); border-radius: var(--r-lg); padding: var(--space-5) var(--space-4); text-align: center; }
.col-read .cr-genus { font-size: 10.5px; letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--ink-4); font-weight: 600; }
.col-read .cr-forms { font-family: var(--font-display); font-weight: 600; font-size: 18px; line-height: 1.5; margin: 10px 0; display: flex; flex-direction: column; gap: 2px; }
.col-read .cr-forms .chg { color: var(--honey-700); }
.col-read .cr-note { font-size: 12px; color: var(--ink-3); line-height: 1.4; display: block; }
.col-read .cr.is-m { border-top: 3px solid var(--crayon-blue); }
.col-read .cr.is-f { border-top: 3px solid var(--crayon-red); }
.col-read .cr.is-n { border-top: 3px solid var(--crayon-green); }
.col-read .cr.is-p { border-top: 3px solid var(--honey-500); }
@media (max-width: 640px) { .col-read { grid-template-columns: 1fr 1fr; } }

/* ============================================================
   EXERCISES
   ============================================================ */
.exercises {
  background: var(--sand-50); padding: var(--space-16) 0; margin-top: var(--space-12);
  border-top: 1px solid var(--sand-200); border-bottom: 1px solid var(--sand-200);
}
.exercises-head { display: grid; grid-template-columns: 80px 1fr; gap: var(--space-8); margin-bottom: var(--space-10); }
.exercises-head .num { font-family: var(--font-display); font-weight: 600; font-size: 56px; line-height: 1; color: var(--honey-400); letter-spacing: -0.04em; }
.exercises-head .num .label {
  display: block; font-family: var(--font-sans); font-size: 10.5px;
  letter-spacing: var(--tracking-caps); text-transform: uppercase;
  color: var(--ink-4); font-weight: 600; margin-top: 8px;
}
.exercises-head h2 { font-family: var(--font-display); font-weight: 600; font-size: clamp(1.75rem, 3vw, 2.5rem); line-height: 1.1; margin: 0 0 var(--space-3); letter-spacing: -0.02em; }
.exercises-head p { font-size: 17.5px; color: var(--ink-3); margin: 0; max-width: 60ch; }

.ex-block {
  background: var(--card); border: 1px solid var(--border); border-radius: var(--r-xl);
  padding: var(--space-8); margin: 0 0 var(--space-5) 80px; max-width: 760px;
}
.ex-block-head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-4);
  margin-bottom: var(--space-6); padding-bottom: var(--space-5); border-bottom: 1px dashed var(--border);
}
.ex-block-head .left h3 { font-family: var(--font-display); font-weight: 600; font-size: 22px; margin: 6px 0 4px; letter-spacing: -0.01em; line-height: 1.2; }
.ex-block-head .left p { margin: 0; font-size: 14.5px; color: var(--ink-3); }
.ex-stamp {
  display: inline-flex; align-items: center; padding: 4px 12px; border-radius: var(--r-pill);
  background: var(--teal-100); color: var(--teal-700); font-size: 11px; font-weight: 700;
  letter-spacing: var(--tracking-caps); text-transform: uppercase; white-space: nowrap; flex-shrink: 0;
}
.ex-items { display: flex; flex-direction: column; gap: var(--space-3); }
.ex-row {
  display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-3);
  padding: var(--space-3) var(--space-4); background: var(--card-2); border-radius: var(--r-md);
  transition: background var(--dur) var(--ease);
}
.ex-row.is-correct { background: var(--success-bg); }
.ex-row.is-wrong { background: var(--danger-bg); }
.ex-row .num-pill {
  flex-shrink: 0; width: 26px; height: 26px; border-radius: var(--r-pill);
  background: var(--card); color: var(--ink-3); border: 1px solid var(--border);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-mono); font-size: 12px; font-weight: 600;
}
.ex-row .sentence {
  flex: 1; min-width: 200px; font-size: 16px; line-height: 1.6; color: var(--ink);
  display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 4px;
}
.ex-row .sentence .cue { color: var(--ink-4); font-style: italic; }
.ex-input {
  display: inline-block; min-width: 100px; width: auto; padding: 4px 12px;
  border: 1px solid var(--border-strong); border-radius: var(--r-sm); background: var(--card);
  font-family: var(--font-display); font-size: 16px; font-weight: 500; color: var(--ink);
  transition: border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);
}
.ex-input:focus { outline: none; border-color: var(--honey-400); box-shadow: 0 0 0 3px var(--focus-ring); }
.ex-input.is-correct { border-color: var(--success); background: var(--success-bg); }
.ex-input.is-wrong { border-color: var(--danger); background: var(--danger-bg); }
.choices { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.choice {
  padding: 5px 14px; border-radius: var(--r-pill); background: var(--card); border: 1px solid var(--border-strong);
  font-family: var(--font-display); font-size: 14.5px; font-weight: 500; color: var(--ink); cursor: pointer;
  transition: all var(--dur) var(--ease);
}
.choice:hover { background: var(--honey-50); border-color: var(--honey-300); }
.choice.selected { background: var(--honey-100); border-color: var(--honey-400); font-weight: 600; }
.choice.is-correct { background: var(--success-bg); border-color: var(--success); color: var(--success); font-weight: 600; }
.choice.is-wrong { background: var(--danger-bg); border-color: var(--danger); color: var(--danger); font-weight: 600; }
.fb { font-size: 12.5px; font-weight: 500; margin-left: auto; white-space: nowrap; }
.fb.show-correct { color: var(--success); }
.fb.show-wrong { color: var(--danger); }
.ex-foot {
  display: flex; align-items: center; gap: var(--space-3); margin-top: var(--space-6);
  padding-top: var(--space-4); border-top: 1px dashed var(--border); flex-wrap: wrap;
}
.btn {
  display: inline-flex; align-items: center; gap: 6px; padding: 9px 18px; border-radius: var(--r-pill);
  font-family: var(--font-sans); font-weight: 600; font-size: 13.5px; border: 1px solid transparent;
  cursor: pointer; text-decoration: none; transition: all var(--dur) var(--ease);
}
.btn-primary { background: var(--honey-400); color: var(--ink); }
.btn-primary:hover { background: var(--honey-500); box-shadow: var(--shadow-honey); transform: translateY(-1px); color: var(--ink); }
.btn-primary:active { transform: scale(0.97); background: var(--honey-600); }
.btn-ghost { background: transparent; color: var(--ink-3); }
.btn-ghost:hover { background: var(--paper-2); color: var(--ink); }
.score { font-size: 13.5px; font-weight: 600; color: var(--ink-3); margin-left: auto; }
.score.is-perfect { color: var(--success); }

/* ============================================================
   CTA BAND
   ============================================================ */
.cta {
  background: linear-gradient(135deg, var(--honey-300) 0%, var(--honey-400) 100%);
  border-radius: var(--r-2xl); padding: var(--space-12) var(--space-10);
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-8);
  flex-wrap: wrap;
}
.cta .cta-text { max-width: 560px; }
.cta .cta-text .eyebrow {
  font-size: 11px; letter-spacing: var(--tracking-caps); text-transform: uppercase;
  color: var(--honey-700); font-weight: 700; display: block; margin-bottom: 8px;
}
.cta .cta-text h2 { font-family: var(--font-display); font-weight: 600; font-size: clamp(1.5rem, 2.6vw, 2.1rem); line-height: 1.12; margin: 0 0 8px; color: var(--ink); letter-spacing: -0.02em; }
.cta .cta-text p { margin: 0; font-size: 16px; color: var(--ink-2); }
.cta .btn-cta {
  display: inline-flex; align-items: center; gap: 8px; padding: 14px 26px; border-radius: var(--r-pill);
  background: var(--ink); color: var(--paper); font-family: var(--font-sans); font-weight: 600; font-size: 15px;
  text-decoration: none; white-space: nowrap; transition: transform var(--dur) var(--ease), background var(--dur) var(--ease);
}
.cta .btn-cta:hover { transform: translateY(-2px); background: var(--ink-2); color: var(--paper); }

/* ============================================================
   OPT-IN / LEAD MAGNET
   ============================================================ */
.optin {
  background: var(--honey-50); border: 1px solid var(--honey-200);
  border-radius: var(--r-2xl); padding: var(--space-12) var(--space-10);
  box-shadow: var(--shadow-sm);
}
.optin .eyebrow {
  font-size: 11px; letter-spacing: var(--tracking-caps); text-transform: uppercase;
  color: var(--honey-700); font-weight: 700; display: block; margin-bottom: 8px;
}
.optin h2 {
  font-family: var(--font-display); font-weight: 600; font-size: clamp(1.5rem, 2.6vw, 2.1rem);
  line-height: 1.12; margin: 0 0 var(--space-3); color: var(--ink); letter-spacing: -0.02em;
}
.optin .optin-lead { margin: 0 0 var(--space-5); font-size: 16.5px; color: var(--ink-2); max-width: 60ch; }
.optin-perks { list-style: none; padding: 0; margin: 0 0 var(--space-6); display: grid; gap: 8px; }
.optin-perks li { position: relative; padding-left: 26px; font-size: 15.5px; color: var(--ink-2); }
.optin-perks li::before {
  content: "✓"; position: absolute; left: 0; top: 0; width: 18px; height: 18px; line-height: 18px;
  text-align: center; font-size: 11px; font-weight: 700; color: var(--teal-700);
  background: var(--teal-100); border-radius: var(--r-pill);
}
.optin-form { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: center; }
.optin-email {
  flex: 1 1 260px; min-width: 0; font-family: var(--font-sans); font-size: 16px; color: var(--ink);
  background: var(--card); border: 1.5px solid var(--line-2); border-radius: var(--r-pill);
  padding: 13px 20px; transition: border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);
}
.optin-email:focus { outline: none; border-color: var(--honey-400); box-shadow: 0 0 0 3px var(--focus-ring); }
.optin-form .btn-cta {
  display: inline-flex; align-items: center; gap: 8px; padding: 14px 26px; border-radius: var(--r-pill);
  background: var(--ink); color: var(--paper); font-family: var(--font-sans); font-weight: 600; font-size: 15px;
  border: none; cursor: pointer; white-space: nowrap;
  transition: transform var(--dur) var(--ease), background var(--dur) var(--ease);
}
.optin-form .btn-cta:hover { transform: translateY(-2px); background: var(--ink-2); }
.optin-consent { display: flex; gap: 9px; align-items: flex-start; margin-top: var(--space-4); font-size: 13px; color: var(--ink-3); max-width: 62ch; }
.optin-consent input { margin-top: 3px; accent-color: var(--honey-500); flex: 0 0 auto; }
.optin-consent a { color: var(--teal-700); text-decoration: underline; text-decoration-color: var(--teal-200); text-decoration-thickness: 2px; }
.optin-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.optin-error { color: var(--danger); font-size: 13.5px; font-weight: 600; margin-top: var(--space-3); min-height: 1em; }
.optin-success { display: none; }
.optin.is-done .optin-form, .optin.is-done .optin-consent, .optin.is-done .optin-error, .optin.is-done .optin-perks { display: none; }
.optin.is-done .optin-success { display: block; }
.optin-success .dl { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-5); }
.optin-success .dl a {
  display: inline-flex; align-items: center; gap: 8px; padding: 13px 24px; border-radius: var(--r-pill);
  font-family: var(--font-sans); font-weight: 600; font-size: 15px; text-decoration: none;
  transition: transform var(--dur) var(--ease), background var(--dur) var(--ease);
}
.optin-success .dl .dl-primary { background: var(--honey-400); color: var(--ink); }
.optin-success .dl .dl-primary:hover { background: var(--honey-500); transform: translateY(-2px); box-shadow: var(--shadow-honey); }
.optin-success .dl .dl-ghost { background: var(--card); color: var(--ink-2); border: 1.5px solid var(--line-2); }
.optin-success .dl .dl-ghost:hover { background: var(--paper-2); transform: translateY(-2px); }

/* ============================================================
   NEXT-STEPS / RELATED
   ============================================================ */
.next-up { padding: var(--space-16) 0 var(--space-20); }
.next-up-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-4); margin-bottom: var(--space-8); flex-wrap: wrap; }
.next-up-head h2 { font-family: var(--font-display); font-weight: 600; font-size: clamp(1.5rem, 2.4vw, 2rem); letter-spacing: -0.02em; margin: 0; }
.next-up-head .eyebrow { font-size: 11px; letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--ink-4); font-weight: 600; display: block; margin-bottom: 6px; }
.related-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-4); }
.related-card {
  background: var(--card); border: 1px solid var(--border); border-radius: var(--r-lg);
  padding: var(--space-6); text-decoration: none; color: var(--ink);
  display: flex; flex-direction: column; gap: 8px;
  transition: transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease);
}
.related-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); border-color: var(--honey-300); color: var(--ink); }
.related-card .area {
  font-size: 11px; letter-spacing: var(--tracking-caps); text-transform: uppercase; font-weight: 700;
  display: inline-flex; align-self: flex-start; padding: 3px 10px; border-radius: var(--r-pill);
}
.related-card[data-area="casos"] .area { background: var(--crayon-red-100); color: #9C2E22; }
.related-card[data-area="verbos"] .area { background: var(--crayon-blue-100); color: #1F6A99; }
.related-card[data-area="estructura"] .area { background: var(--crayon-green-100); color: #3A7027; }
.related-card[data-area="sustantivos"] .area { background: var(--crayon-yellow-100); color: #8E6906; }
.related-card[data-area="pronombres"] .area { background: var(--crayon-purple-100); color: #5B3E86; }
.related-card .title { font-family: var(--font-display); font-weight: 600; font-size: 22px; letter-spacing: -0.01em; line-height: 1.2; color: var(--ink); }
.related-card .desc { font-size: 14px; color: var(--ink-3); line-height: 1.5; }
.related-card .arr { align-self: flex-end; font-family: var(--font-display); font-size: 18px; color: var(--teal-600); margin-top: auto; }
@media (max-width: 880px) { .related-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 580px) { .related-grid { grid-template-columns: 1fr; } }

/* ============================================================
   FOOTER
   ============================================================ */
.footer { background: var(--ink); color: var(--paper); padding: var(--space-16) 0 var(--space-6); }
.footer-inner {
  max-width: 1280px; margin: 0 auto; padding: 0 var(--space-8);
  display: grid; grid-template-columns: 1.5fr 1fr 1fr 1fr; gap: var(--space-10);
}
.footer-brand .brand { color: var(--paper); }
.footer-brand .brand-word { color: var(--paper); }
.footer-brand .brand-word .dot { color: var(--honey-300); }
.footer-brand p { margin: var(--space-4) 0 var(--space-5); color: color-mix(in oklab, var(--paper) 65%, transparent); font-size: 14.5px; line-height: 1.6; max-width: 280px; }
.social { display: flex; gap: 8px; }
.social a {
  width: 34px; height: 34px; border-radius: var(--r-pill);
  background: color-mix(in oklab, var(--paper) 8%, transparent); color: var(--paper);
  display: inline-flex; align-items: center; justify-content: center; font-size: 11.5px; font-weight: 600; text-decoration: none;
}
.social a:hover { background: var(--honey-400); color: var(--ink); }
.footer-col h4 {
  font-size: 11.5px; letter-spacing: var(--tracking-caps); text-transform: uppercase;
  color: color-mix(in oklab, var(--paper) 55%, transparent); font-weight: 600; margin: 0 0 var(--space-4);
}
.footer-col ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
.footer-col a { color: var(--paper); text-decoration: none; font-size: 14px; }
.footer-col a:hover { color: var(--honey-400); }
.footer-bottom {
  max-width: 1280px; margin: var(--space-10) auto 0; padding: var(--space-6) var(--space-8) 0;
  border-top: 1px solid color-mix(in oklab, var(--paper) 8%, transparent);
  font-size: 13px; color: color-mix(in oklab, var(--paper) 45%, transparent);
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 820px) {
  .wrap, .wrap-narrow { padding: 0 var(--space-5); }
  .hero-grid { grid-template-columns: 1fr; gap: var(--space-3); }
  .chapter { grid-template-columns: 1fr; gap: var(--space-3); }
  .chapter-num { position: static; font-size: 36px; }
  .exercises-head { grid-template-columns: 1fr; gap: var(--space-3); }
  .exercises-head .num { font-size: 36px; }
  .ex-block { margin-left: 0; padding: var(--space-5); }
  .footer-inner { grid-template-columns: 1fr 1fr; gap: var(--space-8); }
}
@media (max-width: 480px) {
  .footer-inner { grid-template-columns: 1fr; }
  .cta { padding: var(--space-8) var(--space-6); }
}

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

/* ============================================================
   HOMEPAGE + CLUSTER INDEX
   ============================================================ */
.hero.is-home { text-align: center; }
.hero.is-home .hero-body { max-width: 820px; margin: 0 auto; }
.hero.is-home .hero-lead { margin-left: auto; margin-right: auto; }
.hero.is-home .hero-actions { justify-content: center; }
.home-eyebrow {
  display: inline-block; font-size: 12px; letter-spacing: var(--tracking-caps);
  text-transform: uppercase; font-weight: 700; color: var(--teal-700);
  background: var(--teal-100); padding: 5px 14px; border-radius: var(--r-pill);
  margin-bottom: var(--space-5);
}
.hero-actions { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-4); }
.btn-hero {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 14px 26px; border-radius: var(--r-pill);
  font-family: var(--font-sans); font-weight: 600; font-size: 15px; text-decoration: none;
  transition: transform var(--dur) var(--ease), background var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease);
}
.btn-hero.is-primary { background: var(--honey-400); color: var(--ink); }
.btn-hero.is-primary:hover { background: var(--honey-500); box-shadow: var(--shadow-honey); transform: translateY(-2px); color: var(--ink); }
.btn-hero.is-ghost { background: transparent; color: var(--ink); border: 1px solid var(--border-strong); }
.btn-hero.is-ghost:hover { background: var(--card); border-color: var(--honey-300); transform: translateY(-2px); color: var(--ink); }

.home-section { padding: var(--space-16) 0; }
.band { background: var(--sand-50); border-top: 1px solid var(--sand-200); border-bottom: 1px solid var(--sand-200); }
.section-head { max-width: 760px; margin: 0 auto var(--space-10); text-align: center; }
.section-head .eyebrow { font-size: 11px; letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--ink-4); font-weight: 700; display: block; margin-bottom: 10px; }
.section-head h2 { font-family: var(--font-display); font-weight: 600; font-size: clamp(1.75rem, 3vw, 2.5rem); letter-spacing: -0.02em; margin: 0 0 var(--space-3); line-height: 1.1; }
.section-head p { font-size: 17.5px; color: var(--ink-3); margin: 0; }

.pillars { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-5); }
.pillar { background: var(--card); border: 1px solid var(--border); border-radius: var(--r-lg); padding: var(--space-6); }
.pillar .num { font-family: var(--font-display); font-weight: 600; font-size: 32px; color: var(--honey-400); line-height: 1; letter-spacing: -0.03em; }
.pillar h3 { font-family: var(--font-display); font-weight: 600; font-size: 20px; margin: var(--space-3) 0 8px; letter-spacing: -0.01em; }
.pillar p { font-size: 15px; color: var(--ink-3); line-height: 1.6; margin: 0; }
@media (max-width: 780px) { .pillars { grid-template-columns: 1fr; } }

.topics { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }

/* ============================================================
   PROSE PAGES (legal, sobre nosotros)
   ============================================================ */
.prose { max-width: 760px; margin: 0 auto; padding: var(--space-12) var(--space-8) var(--space-20); }
.prose > :first-child { margin-top: 0; }
.prose h2 { font-family: var(--font-display); font-weight: 600; font-size: clamp(1.4rem, 2.2vw, 1.75rem); letter-spacing: -0.01em; color: var(--ink); margin: var(--space-10) 0 var(--space-3); }
.prose h3 { font-family: var(--font-sans); font-weight: 600; font-size: 1.05rem; color: var(--ink); margin: var(--space-6) 0 var(--space-2); }
.prose p, .prose li { font-size: 17px; line-height: 1.75; color: var(--ink-2); margin: 0 0 var(--space-4); }
.prose ul, .prose ol { padding-left: 1.2em; margin: 0 0 var(--space-4); }
.prose li { margin-bottom: 8px; }
.prose a { color: var(--teal-600); text-decoration: underline; text-decoration-color: var(--teal-200); text-decoration-thickness: 2px; text-underline-offset: 3px; }
.prose a:hover { color: var(--teal-700); text-decoration-color: var(--teal-400); }
.prose strong { color: var(--ink); font-weight: 700; }
.prose .muted { color: var(--ink-4); font-size: 14px; }

/* Platzhalter fuer noch fehlende echte Daten */
.placeholder {
  background: var(--honey-100); border: 1px dashed var(--honey-400);
  border-radius: 4px; padding: 0 6px; font-family: var(--font-mono);
  font-size: 0.85em; color: var(--honey-700); white-space: nowrap;
}

/* Hinweisbanner (Entwurf, Affiliate-Offenlegung) */
.notice {
  display: grid; grid-template-columns: auto 1fr; gap: var(--space-3); align-items: start;
  background: var(--warning-bg); border: 1px solid #E9C46A;
  border-radius: var(--r-lg); padding: var(--space-4) var(--space-5); margin: 0 0 var(--space-8);
}
.notice .ico { font-size: 18px; line-height: 1.5; }
.notice p { margin: 0; font-size: 14.5px; line-height: 1.6; color: var(--ink-2); }
.notice.is-info { background: var(--info-bg); border-color: var(--teal-200); }

/* Cluster index: bloque por cluster */
.cluster-block { margin-bottom: var(--space-12); scroll-margin-top: 90px; }
.cluster-block:last-child { margin-bottom: 0; }
.cluster-head { display: flex; align-items: baseline; gap: var(--space-3); margin-bottom: var(--space-5); flex-wrap: wrap; }
.cluster-head h2 { font-family: var(--font-display); font-weight: 600; font-size: clamp(1.5rem, 2.6vw, 2.1rem); letter-spacing: -0.02em; margin: 0; }
.cluster-head h2 a { text-decoration: none; color: var(--ink); }
.cluster-head h2 a:hover { color: var(--honey-700); }
.cluster-head .count { font-size: 13px; color: var(--ink-4); font-weight: 600; }
.related-grid.is-4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 980px) { .related-grid.is-4 { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .related-grid.is-4 { grid-template-columns: 1fr; } }

/* ============================================================
   COOKIE-CONSENT-BANNER
   ============================================================ */
.cookie-banner {
  position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 60;
  max-width: 760px; margin: 0 auto;
  background: var(--ink); color: var(--paper);
  border-radius: var(--r-lg); box-shadow: var(--shadow-lg);
  padding: var(--space-5) var(--space-6);
  display: flex; align-items: center; gap: var(--space-5); flex-wrap: wrap;
}
.cookie-banner p {
  margin: 0; flex: 1; min-width: 240px;
  font-size: 14px; line-height: 1.6;
  color: color-mix(in oklab, var(--paper) 85%, transparent);
}
.cookie-banner p strong { color: var(--paper); font-weight: 700; }
.cookie-banner a { color: var(--honey-300); text-decoration: underline; text-underline-offset: 2px; }
.cookie-banner a:hover { color: var(--honey-200); }
.cookie-actions { display: flex; gap: 10px; }
.btn-cookie {
  padding: 9px 18px; border-radius: var(--r-pill);
  font-family: var(--font-sans); font-weight: 600; font-size: 14px;
  cursor: pointer; border: 1px solid transparent;
  transition: background var(--dur) var(--ease), border-color var(--dur) var(--ease);
}
.btn-cookie.is-accept { background: var(--honey-400); color: var(--ink); }
.btn-cookie.is-accept:hover { background: var(--honey-500); }
.btn-cookie.is-reject { background: transparent; color: var(--paper); border-color: color-mix(in oklab, var(--paper) 30%, transparent); }
.btn-cookie.is-reject:hover { background: color-mix(in oklab, var(--paper) 12%, transparent); }
@media (max-width: 520px) {
  .cookie-banner { flex-direction: column; align-items: stretch; }
  .cookie-actions { justify-content: flex-end; }
}
