/* ============================================================
   WAFFLE TOKEN LAYER
   Design language: waffle. These values are placeholders that
   mirror the Fire on the Land concept palette. Replace the values below
   1:1 with waffle's token output — components reference only
   these custom properties, so no component code needs to change.
   ============================================================ */
@font-face{
  font-family:"Stoke";
  src:url("fonts/Stoke/Stoke-Light.woff2") format("woff2");
  font-weight:300; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Stoke";
  src:url("fonts/Stoke/Stoke-Regular.woff2") format("woff2");
  font-weight:400; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Public Sans";
  src:url("fonts/PublicSans/PublicSans-Regular.woff2") format("woff2");
  font-weight:400; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Public Sans";
  src:url("fonts/PublicSans/PublicSans-Medium.woff2") format("woff2");
  font-weight:500; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Public Sans";
  src:url("fonts/PublicSans/PublicSans-Bold.woff2") format("woff2");
  font-weight:700; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Public Sans";
  src:url("fonts/PublicSans/PublicSans-Italic.woff2") format("woff2");
  font-weight:400; font-style:italic; font-display:swap;
}
@font-face{ font-family:"Dehcho Regular"; src:url("fonts/Dehcho/ASDehchoTestAg01-Regular.woff2") format("woff2"); font-display:swap; }
@font-face{ font-family:"Dehcho RegularSlanted"; src:url("fonts/Dehcho/ASDehchoTestAg01-RegularSlanted.woff2") format("woff2"); font-display:swap; }
@font-face{ font-family:"Dehcho Medium"; src:url("fonts/Dehcho/ASDehchoTestAg01-Medium.woff2") format("woff2"); font-display:swap; }
@font-face{ font-family:"Dehcho MediumSlanted"; src:url("fonts/Dehcho/ASDehchoTestAg01-MediumSlanted.woff2") format("woff2"); font-display:swap; }
@font-face{ font-family:"Dehcho MediumSemiSlanted"; src:url("fonts/Dehcho/ASDehchoTestAg01-MediumSemiSlanted.woff2") format("woff2"); font-display:swap; }
@font-face{ font-family:"Dehcho MediumRough"; src:url("fonts/Dehcho/ASDehchoTestAg01-MediumRough.woff2") format("woff2"); font-display:swap; }
@font-face{ font-family:"Dehcho Bold"; src:url("fonts/Dehcho/ASDehchoTestAg01-Bold.woff2") format("woff2"); font-display:swap; }
@font-face{ font-family:"Dehcho BoldSlanted"; src:url("fonts/Dehcho/ASDehchoTestAg01-BoldSlanted.woff2") format("woff2"); font-display:swap; }
@font-face{ font-family:"Dehcho BoldSemiSlanted"; src:url("fonts/Dehcho/ASDehchoTestAg01-BoldSemiSlanted.woff2") format("woff2"); font-display:swap; }
@font-face{ font-family:"Dehcho Narrow"; src:url("fonts/Dehcho/ASDehchoTestAg01-Narrow.woff2") format("woff2"); font-display:swap; }
@font-face{ font-family:"Dehcho NarrowSlanted"; src:url("fonts/Dehcho/ASDehchoTestAg01-NarrowSlanted.woff2") format("woff2"); font-display:swap; }
@font-face{ font-family:"Dehcho NarrowSemiBold"; src:url("fonts/Dehcho/ASDehchoTestAg01-NarrowSemiBold.woff2") format("woff2"); font-display:swap; }
@font-face{ font-family:"Dehcho NarrowBold"; src:url("fonts/Dehcho/ASDehchoTestAg01-NarrowBold.woff2") format("woff2"); font-display:swap; }
@font-face{ font-family:"Dehcho NarrowBoldSlanted"; src:url("fonts/Dehcho/ASDehchoTestAg01-NarrowBoldSlanted.woff2") format("woff2"); font-display:swap; }
@font-face{ font-family:"Dehcho Megular"; src:url("fonts/Dehcho/ASDehchoTestAg01-Megular.woff2") format("woff2"); font-display:swap; }
:root{
  /* color — light — waffle primary tier (blueberry/grape/lemon + vanilla/cappuccino
     surfaces), ported 2026-08-07. --pine/--neo stay Fire on the Land's own: they're
     functional (scenario lines, native/neophyte origin tags), not brand color. */
  --bg:#eae8e0;          /* vanilla */
  --surface:#d9d7ce;     /* cappuccino */
  --surface-2:#f2f1eb;
  --ink:#1f1934;         /* blueberry */
  --muted:#66655f;
  --line:rgba(31,25,52,.14);
  --accent:#5100ff;      /* grape */
  --highlight:#d8ff01;   /* lemon */
  --on-accent:#1f1934;         /* text on a --highlight fill */
  --on-accent-solid:#eae8e0;   /* text on a solid --accent fill */
  --pine:#42605a;
  --neo:#77853f;
  --accent-wash:#5100ff14;
  --pine-wash:#42605a1a;
  --neo-wash:#77853f1f;

  /* space */
  --sp-1:.35rem; --sp-2:.6rem; --sp-3:1rem; --sp-4:1.5rem; --sp-5:2.25rem;

  /* radius */
  --r-s:6px; --r-m:12px; --r-l:18px; --r-pill:999px;

  /* elevation */
  --shadow:0 1px 0 #ffffff40, 0 12px 30px -22px #21201a66;

  /* type — Stoke for headlines (h1/h2), Public Sans for paragraphs and
     eyebrows/labels (everything already on --font-sans). --font-serif
     stays for the few deliberate serif accents (thesis pull-quote,
     italic Latin species names), not general body copy. */
  --font-sans:"Public Sans",ui-sans-serif,system-ui,"Segoe UI",Helvetica,Arial,sans-serif;
  --font-serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
  --font-headline:"Stoke",Georgia,serif;

  /* layout */
  --tabbar-h:64px;
  --maxw:560px;
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#14101f; --surface:#221c33; --surface-2:#1b1628; --ink:#f1efe8; --muted:#b3aec4;
    --line:rgba(241,239,232,.14); --accent:#b298ff; --highlight:#d8ff01;
    --on-accent:#1f1934; --on-accent-solid:#1f1934;
    --pine:#7fa098; --neo:#a9b96c;
    --accent-wash:#b298ff1e; --pine-wash:#7fa09818; --neo-wash:#a9b96c1c;
    --shadow:0 1px 0 #ffffff08, 0 16px 36px -24px #000000cc;
  }
}
:root[data-theme="light"]{
  color-scheme:light;
  --bg:#eae8e0; --surface:#d9d7ce; --surface-2:#f2f1eb; --ink:#1f1934; --muted:#66655f;
  --line:rgba(31,25,52,.14); --accent:#5100ff; --highlight:#d8ff01;
  --on-accent:#1f1934; --on-accent-solid:#eae8e0;
  --pine:#42605a; --neo:#77853f;
  --accent-wash:#5100ff14; --pine-wash:#42605a1a; --neo-wash:#77853f1f;
  --shadow:0 1px 0 #ffffff40, 0 12px 30px -22px #21201a66;
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#14101f; --surface:#221c33; --surface-2:#1b1628; --ink:#f1efe8; --muted:#b3aec4;
  --line:rgba(241,239,232,.14); --accent:#b298ff; --highlight:#d8ff01;
  --on-accent:#1f1934; --on-accent-solid:#1f1934;
  --pine:#7fa098; --neo:#a9b96c;
  --accent-wash:#b298ff1e; --pine-wash:#7fa09818; --neo-wash:#a9b96c1c;
}

/* ============================================================
   BASE
   ============================================================ */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:var(--font-sans);font-size:1rem;line-height:1.55;
  -webkit-font-smoothing:antialiased;
  padding-bottom:env(safe-area-inset-bottom);
  position:relative;
}
h1,h2{font-family:var(--font-headline);font-weight:400;letter-spacing:-.01em;text-wrap:balance}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-s)}

/* ============================================================
   TOP BAR (app bar + tab nav, stuck together at the top)
   ============================================================ */
.topbar{position:sticky;top:0;z-index:6}
.appbar{
  display:flex;align-items:center;justify-content:space-between;
  gap:var(--sp-2);padding:calc(env(safe-area-inset-top) + .7rem) var(--sp-3) .7rem;
  background:color-mix(in srgb, var(--bg) 88%, transparent);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
}
.brand{display:flex;align-items:center;gap:.55rem}
.brand-mark{width:16px;height:16px;border-radius:4px;
  background:linear-gradient(135deg,var(--accent),var(--neo) 60%,var(--pine));box-shadow:var(--shadow)}
.brand-name{font-family:var(--font-headline);font-weight:400;letter-spacing:-.01em;font-size:1.25rem}
.appbar-end{display:flex;align-items:center;gap:var(--sp-2);min-width:0}
.appbar-site{font-family:var(--font-sans);font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;white-space:nowrap}

/* language switcher */
.langsw{display:inline-flex;gap:2px;background:var(--surface-2);border:1px solid var(--line);
  border-radius:var(--r-pill);padding:2px}
.lang-btn{font-family:var(--font-sans);font-size:.7rem;font-weight:700;letter-spacing:.04em;
  color:var(--muted);background:transparent;border:0;border-radius:var(--r-pill);
  padding:.24rem .5rem;min-height:28px;cursor:pointer}
.lang-btn.is-on{color:var(--on-accent-solid);background:var(--accent)}
@media (max-width:420px){.appbar-site{display:none}}

/* ============================================================
   VIEWS
   ============================================================ */
main{max-width:var(--maxw);margin:0 auto;padding:var(--sp-3)}
.view[hidden]{display:none}
.view{animation:fade .35s ease}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.view{animation:none}}
.view-title{font-size:clamp(1.5rem,1.2rem + 3vw,2rem);font-weight:400;margin:.2rem 0 .3rem}
.view-sub{color:var(--muted);margin:0 0 var(--sp-3);font-size:.98rem}
.lede{margin:0 0 var(--sp-3);line-height:1.55}
.kicker{font-family:var(--font-sans);font-size:.68rem;text-transform:uppercase;letter-spacing:.13em;font-weight:700;color:var(--accent)}
.h-sec{font-size:1.05rem;font-weight:700;margin:var(--sp-4) 0 0}
.note{font-family:var(--font-sans);font-size:.82rem;color:var(--muted);margin-top:var(--sp-3)}

/* ============================================================
   COMPOSITE
   ============================================================ */
.composite{margin:0;position:relative}
#composite-canvas{width:100%;height:auto;display:block;border:1px solid var(--line);border-radius:var(--r-m);box-shadow:var(--shadow);background:var(--surface-2)}
.badge-placeholder{position:absolute;left:.6rem;bottom:.6rem;font-family:var(--font-sans);font-size:.68rem;
  background:color-mix(in srgb,var(--ink) 78%, transparent);color:var(--bg);padding:.28rem .55rem;border-radius:var(--r-pill)}
.channels{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2);margin-top:var(--sp-3)}
.channel{display:flex;flex-direction:column;gap:.3rem;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-s);padding:.5rem .6rem}
.channel-key{font-family:var(--font-sans);font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;font-weight:700}
.c-r .channel-key{color:var(--accent)} .c-g .channel-key{color:var(--neo)} .c-b .channel-key{color:var(--pine)}
.channel-select{font-family:var(--font-sans);font-size:1rem;font-variant-numeric:tabular-nums;
  background:transparent;color:var(--ink);border:0;border-radius:var(--r-s);padding:.15rem 0;min-height:32px}
.readout{list-style:none;margin:var(--sp-3) 0 0;padding:0;display:grid;gap:.4rem;
  font-family:var(--font-sans);font-size:.85rem;color:var(--muted)}
.readout li{display:flex;align-items:center;gap:.5rem}
.swatch{width:.9rem;height:.9rem;border-radius:3px;flex:0 0 auto;border:1px solid #0002}

/* ============================================================
   SCORECARD
   ============================================================ */
.cols-key{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:var(--sp-3);font-family:var(--font-sans);font-size:.74rem;font-weight:700}
.tag-pine,.tag-neo,.tag-archaeo{padding:.28rem .6rem;border-radius:var(--r-pill);border:1px solid}
.tag-pine{color:var(--pine);background:var(--pine-wash);border-color:var(--pine)}
.tag-neo{color:var(--neo);background:var(--neo-wash);border-color:var(--neo)}
.tag-archaeo{color:var(--accent);background:var(--accent-wash);border-color:var(--accent)}
.scorelist{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}
.scard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:var(--sp-3);box-shadow:var(--shadow)}
.scard-top{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);margin-bottom:.5rem}
.scard-axis{font-family:var(--font-sans);font-weight:700;font-size:1rem}
.verdict{font-family:var(--font-sans);font-size:.68rem;font-weight:700;letter-spacing:.02em;padding:.26rem .55rem;
  border-radius:var(--r-pill);border:1px solid;white-space:nowrap}
.v-neo{color:var(--neo);background:var(--neo-wash);border-color:var(--neo)}
.v-pine{color:var(--pine);background:var(--pine-wash);border-color:var(--pine)}
.v-split{color:var(--muted);background:var(--surface-2);border-color:var(--line)}
.v-ctx{color:var(--accent);background:var(--accent-wash);border-color:var(--accent)}
.scard-rows{display:grid;gap:.4rem}
.scrow{display:grid;grid-template-columns:auto 1fr;gap:.55rem;font-size:.9rem;line-height:1.4}
.scrow .side{font-family:var(--font-sans);font-size:.64rem;text-transform:uppercase;letter-spacing:.08em;
  font-weight:700;padding-top:.15rem;white-space:nowrap}
.scrow.pine .side{color:var(--pine)} .scrow.neo .side{color:var(--neo)}

/* ============================================================
   CONCEPT
   ============================================================ */
.thesis-line{font-family:var(--font-serif);font-size:1.15rem;line-height:1.4;border-left:3px solid var(--accent);
  padding-left:var(--sp-3);margin:var(--sp-3) 0}
.thesis-line em{color:var(--accent);font-style:italic}
.canon{margin:var(--sp-2) 0 0;padding-left:1.1rem;display:grid;gap:.5rem;font-size:.94rem}
.canon strong{font-family:var(--font-sans)}

/* ============================================================
   MEASURES
   ============================================================ */
.segmented{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:var(--sp-3)}
.seg-btn{font-family:var(--font-sans);font-size:.8rem;font-weight:700;color:var(--muted);
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-pill);padding:.4rem .8rem;cursor:pointer;min-height:36px}
.seg-btn.is-on{color:var(--on-accent-solid);background:var(--accent);border-color:var(--accent)}
.measures{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}
.measure{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:var(--sp-3);box-shadow:var(--shadow)}
.measure .m-actor{font-family:var(--font-sans);font-size:.64rem;text-transform:uppercase;letter-spacing:.1em;font-weight:700;color:var(--muted)}
.measure p{margin:.3rem 0 .55rem;font-size:.95rem;line-height:1.42}
.m-tags{display:flex;flex-wrap:wrap;gap:.35rem}
.mtag{font-family:var(--font-sans);font-size:.66rem;font-weight:700;letter-spacing:.02em;padding:.22rem .5rem;border-radius:var(--r-pill);border:1px solid}
.mtag.p{color:var(--pine);background:var(--pine-wash);border-color:var(--pine)}
.mtag.n{color:var(--neo);background:var(--neo-wash);border-color:var(--neo)}
.mtag.a{color:var(--accent);background:var(--accent-wash);border-color:var(--accent)}

/* ============================================================
   SPECIES (Arten)
   ============================================================ */
#species-mix .tag-pine,#species-mix .tag-neo,#species-mix .tag-archaeo{display:inline-block;margin:var(--sp-2) 0 var(--sp-2)}
.species{list-style:none;margin:0 0 var(--sp-3);padding:0;display:grid;gap:var(--sp-2)}
.spcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);
  box-shadow:var(--shadow);overflow:hidden;display:flex;gap:var(--sp-3);align-items:flex-start;padding:var(--sp-3)}
.sp-fig{margin:0;flex:0 0 84px;width:84px}
.sp-fig img{width:84px;height:84px;object-fit:cover;display:block;border-radius:var(--r-s);
  border:1px solid var(--line);background:var(--surface-2)}
.sp-credit{font-family:var(--font-sans);font-size:.54rem;line-height:1.3;color:var(--muted);
  margin-top:.3rem;word-break:break-word}
.sp-credit a{color:inherit;text-decoration:none}
.sp-credit a:hover{text-decoration:underline}
.sp-body{min-width:0;flex:1}
.sp-head{display:flex;align-items:baseline;gap:.4rem;flex-wrap:wrap;margin-bottom:.3rem}
.sp-name{font-family:var(--font-sans);font-weight:700;font-size:1rem}
.sp-latin{font-family:var(--font-serif);font-style:italic;font-size:.82rem;color:var(--muted)}
.spcard p{margin:.3rem 0 .55rem;font-size:.95rem;line-height:1.42}
.excluded{border-left:2px solid var(--muted);padding-left:var(--sp-2)}
.gloss{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;
  border-bottom:1px dotted var(--accent);line-height:inherit}
.gloss:hover{color:var(--accent)}
.gloss[aria-expanded="true"]{color:var(--accent);border-bottom-style:solid}
.gloss-def{display:block;margin:.5rem 0;padding:.5rem .7rem;font-family:var(--font-sans);
  font-size:.82rem;line-height:1.45;color:var(--ink);background:var(--surface-2);
  border-left:2px solid var(--accent);border-radius:var(--r-s)}
.rad-badge{font-family:var(--font-sans);font-size:.6rem;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted);border:1px solid var(--line);border-radius:var(--r-pill);
  padding:.1rem .4rem;vertical-align:.1em}
.rad-box{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--neo);
  border-radius:var(--r-m);padding:var(--sp-3);margin:var(--sp-4) 0 0;box-shadow:var(--shadow)}
.rad-box p{font-size:.95rem;line-height:1.5;margin:0 0 var(--sp-2)}
.rad-box p:last-child{margin-bottom:0}
.hypo{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--accent);
  border-radius:var(--r-m);padding:var(--sp-3);margin:var(--sp-4) 0 0;box-shadow:var(--shadow)}
.hypo-title{font-size:1.05rem;font-weight:700;margin:.2rem 0 var(--sp-2)}
.hypo p{font-size:.95rem;line-height:1.5;margin:0 0 var(--sp-2)}
.hypo p:last-child{margin-bottom:0}
.species-map{position:relative;margin:var(--sp-3) 0 0;border:1px solid var(--line);border-radius:var(--r-m);
  overflow:hidden;box-shadow:var(--shadow);background:var(--surface-2)}
.species-map canvas{width:100%;height:auto;display:block}
.species-map-pins{position:absolute;inset:0}
.sp-pin{position:absolute;width:13px;height:13px;border-radius:50%;border:2px solid var(--surface);
  transform:translate(-50%,-50%);box-shadow:0 1px 3px #00000066}

/* ============================================================
   SCENARIOS (Szenarien)
   ============================================================ */
.chart{margin:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);
  padding:var(--sp-3) var(--sp-3) .5rem;box-shadow:var(--shadow)}
#scenario-chart svg{width:100%;height:auto;display:block}
.chart-axis{font-family:var(--font-sans);font-size:8px;fill:var(--muted)}
.chart-phase{font-family:var(--font-sans);font-size:6px;letter-spacing:.02em;fill:var(--muted)}
.chart-caption{font-family:var(--font-sans);font-size:.7rem;color:var(--muted);text-align:center;margin:.4rem 0 0}
.scenario-legend{list-style:none;margin:var(--sp-3) 0 0;padding:0;display:grid;gap:var(--sp-2)}
.scenario-item{display:flex;align-items:flex-start;gap:.6rem}
.scenario-dot{width:.7rem;height:.7rem;border-radius:50%;flex:0 0 auto;margin-top:.3rem}
.scenario-name{display:block;font-family:var(--font-sans);font-weight:700;font-size:.92rem}
.scenario-note{margin:.15rem 0 0;font-size:.85rem;color:var(--muted);line-height:1.4}

.scenario-readout{display:flex;flex-wrap:wrap;gap:.5rem var(--sp-3);margin:.5rem 0 0;
  font-family:var(--font-sans);font-size:.78rem;color:var(--muted)}
.scenario-readout .ro-year{font-weight:700;color:var(--ink)}
.scenario-readout .ro-item b{font-weight:700}
.scenario-readout .ro-item i{font-style:normal;color:var(--ink);font-variant-numeric:tabular-nums}

.scrub{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-3)}
.scrub-range{flex:1;min-width:0;accent-color:var(--accent);height:28px}
#scenario-play{white-space:nowrap;min-width:6.5em}

/* ============================================================
   LEGAL PAGE (Impressum & Datenschutz)
   ============================================================ */
.legal-back{font-family:var(--font-sans);font-size:.78rem;color:var(--muted);text-decoration:none;white-space:nowrap}
.legal-back:hover{color:var(--accent)}
.legal{padding-bottom:var(--sp-5)}
.legal p{font-size:.95rem;line-height:1.6;margin:0 0 var(--sp-3)}
.legal a{color:var(--accent)}
.legal code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em;
  background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-s);padding:.05rem .3rem}
.legal-h3{font-family:var(--font-sans);font-size:.95rem;font-weight:700;margin:var(--sp-4) 0 .4rem}
.legal-rule{border:0;border-top:1px solid var(--line);margin:var(--sp-5) 0 var(--sp-4)}

/* ============================================================
   FOOTER
   ============================================================ */
.site-foot{max-width:var(--maxw);margin:var(--sp-5) auto 0;padding:var(--sp-3);
  border-top:1px solid var(--line);font-family:var(--font-sans);font-size:.74rem;color:var(--muted);
  display:flex;gap:var(--sp-3);flex-wrap:wrap;justify-content:space-between}
.site-foot a{color:var(--muted)}
.site-foot a:hover{color:var(--accent)}

/* ============================================================
   MAIN NAV (Graphic Novel / Font / Adoption Scenarios)
   ============================================================ */
.mainnav{
  display:flex;height:52px;
  background:color-mix(in srgb,var(--bg) 90%, transparent);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
}
.mainnav-btn{
  flex:1;min-width:0;display:flex;align-items:center;justify-content:center;
  background:none;border:0;color:var(--muted);font-family:var(--font-sans);
  font-size:.82rem;font-weight:700;letter-spacing:.01em;cursor:pointer;min-height:44px;padding:.3rem .4rem;
  box-shadow:inset 0 -2px 0 transparent;
}
.mainnav-btn.is-active{color:var(--accent);box-shadow:inset 0 -2px 0 var(--accent)}

.site-picker{
  display:flex;align-items:center;gap:.6rem;padding:.6rem var(--sp-3);
  background:color-mix(in srgb,var(--surface) 92%, transparent);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.site-picker[hidden]{display:none}
.site-picker .channel-key{white-space:nowrap}
.site-picker .channel-select{flex:1;background:var(--surface-2);border:1px solid var(--line);
  border-radius:var(--r-s);padding:.35rem .5rem;color:var(--ink);font-weight:700}

/* ============================================================
   GRAPHIC NOVEL
   ============================================================ */
.novel-hero{margin:var(--sp-2) 0 0;border-radius:var(--r-m);overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow)}
.novel-hero img{width:100%;height:auto;display:block;background:var(--surface-2)}
.novel-status{font-family:var(--font-sans);font-size:.78rem;color:var(--muted);margin:var(--sp-2) 0 0}
.novel-team{list-style:none;margin:var(--sp-2) 0 0;padding:0;display:grid;gap:var(--sp-2);grid-template-columns:repeat(3,1fr)}
.novel-team li{text-align:center}
.novel-team img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--r-s);border:1px solid var(--line);display:block;background:var(--surface-2)}
.novel-team .n{font-family:var(--font-sans);font-weight:700;font-size:.76rem;margin-top:.4rem;line-height:1.25}
.novel-team .r{font-size:.68rem;color:var(--muted);line-height:1.3;margin-top:.1rem}
.novel-gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:.4rem;margin:var(--sp-2) 0 0}
.novel-gallery img{width:100%;aspect-ratio:18/25;object-fit:cover;border-radius:var(--r-s);border:1px solid var(--line);background:var(--surface-2)}
.novel-photos{display:grid;grid-template-columns:repeat(4,1fr);gap:.4rem;margin:var(--sp-2) 0 0}
.novel-photos img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--r-s);border:1px solid var(--line);background:var(--surface-2)}
.novel-press{list-style:none;margin:var(--sp-2) 0 0;padding:0;display:grid;gap:.6rem}
.novel-press a{font-family:var(--font-sans);font-weight:700;font-size:.9rem;color:var(--accent);text-decoration:none}
.novel-press a:hover{text-decoration:underline}
.novel-press span{display:block;font-size:.78rem;color:var(--muted);margin-top:.1rem}
.novel-cta{display:inline-flex;align-items:center;gap:.4rem;font-family:var(--font-sans);font-weight:700;font-size:.85rem;
  color:var(--on-accent);background:var(--highlight);padding:.6rem 1rem;border-radius:var(--r-pill);text-decoration:none;
  margin:var(--sp-3) .5rem 0 0}
.novel-cta:hover{filter:brightness(.95)}
.novel-cta.ghost{color:var(--ink);background:var(--surface);border:1px solid var(--line)}

/* ============================================================
   FONT
   ============================================================ */
.font-style-picker{display:flex;align-items:center;gap:.6rem;margin-top:var(--sp-3)}
.font-style-picker .channel-select{flex:1;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-s);padding:.4rem .5rem}
#font-specimen{font-family:"Dehcho Regular";margin-top:var(--sp-3);border-top:1px solid var(--line);padding-top:var(--sp-3)}
#font-specimen > div{border-bottom:1px solid var(--line);padding:.5rem 0}
#font-specimen > div:last-child{border-bottom:0}
.font-l1{font-size:clamp(2.6rem,11vw,4.2rem);line-height:.95;text-wrap:balance}
.font-l2{font-size:clamp(1.7rem,7vw,2.4rem);line-height:1.05;text-wrap:balance}
.font-l3{font-size:clamp(1.1rem,4vw,1.4rem);line-height:1.2}
.font-l4{font-size:1.3rem;letter-spacing:.06em;color:var(--accent)}
.font-l5{font-size:16px;line-height:1.5}

/* ============================================================
   ADOPTION SCENARIOS — intro above the existing sub-app
   ============================================================ */
.app-intro{max-width:var(--maxw);margin:0 auto;padding:var(--sp-3) 0 var(--sp-4)}
.app-intro p{color:var(--muted);font-size:.92rem;margin:.3rem 0 0}

/* ============================================================
   TAB BAR
   ============================================================ */
.tabbar{
  display:flex;height:var(--tabbar-h);
  background:color-mix(in srgb,var(--surface) 92%, transparent);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.tabbar[hidden]{display:none}
.tab{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;
  background:none;border:0;color:var(--muted);font-family:var(--font-sans);cursor:pointer;padding:.4rem .5rem;min-height:44px}
.tab-lbl{font-size:.78rem;font-weight:700;letter-spacing:.005em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.tab.is-active{color:var(--accent)}

/* ============================================================
   WIDER SCREENS (progressive enhancement over mobile-first)
   ============================================================ */
@media (min-width:720px){
  :root{--maxw:680px}
  .channels{gap:var(--sp-3)}
}
