// chapters-meta.jsx — Ashfall (German edition)
// Selene Moreau · Eden Veyr · 22 Kapitel

const BOOK = {
  title: "Ashfall",
  author: "V. Drancourt",
  publisher: "Éditions de la Marge Noire",
  warning: "Düstere Psychoromanze — Lesen auf eigene Gefahr.",
};

const CONTENT_WARNINGS = [
  "Tod eines Elternteils (Autounfall)",
  "Brandstiftung, Tod eines Angehörigen",
  "Mafiagewalt, Schusswaffen, psychologische Folter",
  "Stalking, Überwachung, Hausfriedensbruch",
  "Explizite erotische Szenen mit einvernehmlichem Breathplay und Knifeplay",
  "Toxische Machtdynamiken, obsessive Beziehungsmuster",
  "Polizeiliche, medizinische und politische Korruption",
  "Entführung, Erpressung, Drohungen",
  "Gewaltsame Verhörszenen",
  "Angstattacken, Albträume, selbstzerstörerisches Verhalten",
];

const SCENTS = [
  {
    id: "baies",
    name: "Beeren",
    range: [1, 2],
    notes: "Zerdrückte rote Früchte · dunkles Holz · kaltes Metall · unmittelbare Gefahr",
    wax: "#1a0508",
    glow: "#c41e3a",
    moment: "Provokation, Bedrohung, psychologischer Biss, steigende Spannung.",
  },
  {
    id: "roses",
    name: "Rosen",
    range: [3, 4],
    notes: "Dunkelrot · Pfeffer · Oud · Vetiver · Besessenheit",
    wax: "#1f0a12",
    glow: "#c91e4a",
    moment: "Romantische Obsession, Eifersucht, toxische Verführung.",
  },
  {
    id: "figuier",
    name: "Feigenbaum",
    range: [5, 7],
    notes: "Feigenmilch · weißes Holz · warme Haut · sanfte Lügen",
    wax: "#1a1410",
    glow: "#8a7a5a",
    moment: "Falscher Zufluchtsort, trügerische Intimität, Ruhe vor der Gewalt.",
  },
  {
    id: "tubereuse",
    name: "Tuberose",
    range: [8, 9],
    notes: "Fleischliches Weiß · Amber · Moschus · geschlossene Wärme",
    wax: "#1a0a0f",
    glow: "#c96a7a",
    moment: "Verlangen, geschlossener Raum, einvernehmlicher Kontrollverlust.",
  },
  {
    id: "lys",
    name: "Lilie",
    range: [10, 11],
    notes: "Weißes Blütenblatt · Wachs · Weihrauch · feuchte Erde",
    wax: "#0e0a12",
    glow: "#a0a0b8",
    moment: "Tod, Trauer, Offenbarung, kalte Wahrheit.",
  },
];

function scentForChapter(n) {
  const custom = {
    8: SCENTS[3],
    10: SCENTS[4],
    12: SCENTS[0],
    13: SCENTS[4],
    14: SCENTS[1],
    15: SCENTS[4],
    16: SCENTS[3],
    17: SCENTS[0],
    18: SCENTS[4],
    19: SCENTS[2],
    20: SCENTS[3],
    21: SCENTS[1],
    22: SCENTS[2],
  };
  if (custom[n]) return custom[n];
  return SCENTS.find(s => n >= s.range[0] && n <= s.range[1]);
}

const ACTS = [
  { id: 1, name: "Der Eintritt in den Käfig", range: [1, 7] },
  { id: 2, name: "Der Duft der Verräter", range: [8, 14] },
  { id: 3, name: "Die Entfesselung des Chaos", range: [15, 22] },
];

const AUDIO = {
  1:  "Concrete Silence.mp3",
  2:  "Glasslight Rationing.mp3",
  3:  "Watched Pulse.mp3",
  4:  "Cold Circuit.mp3",
  5:  "Glitch Silence.mp3",
  6:  "Pink Waiting.mp3",
  7:  "Salt Lamp Halo.mp3",
  8:  "Servo Lactation.mp3",
  9:  "Circuit Pulse.mp3",
  10: "Endless Overtone.mp3",
  11: "Cedar Cello Grief.mp3",
  12: "Warm Light Escape.mp3",
  13: "Cobalt Countdown.mp3",
  14: "Cedar Cello Grief (1).mp3",
  15: "__Glitch Rivulets__.mp3",
  16: "Weightless Helm.mp3",
  17: "Blue Bilge Choir.mp3",
  18: "Blue Choirglass.mp3",
  19: "Ash Dawn Transit.mp3",
  20: "Pink Waiting (1).mp3",
  21: "FINAL.mp3",
  22: "FINAL 2.mp3",
};

const audioSrc = (n) => `uploads/${encodeURIComponent(AUDIO[n])}`;

const ROMAN = ["", "I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII","XIII","XIV","XV","XVI","XVII","XVIII","XIX","XX","XXI","XXII"];

const actOf = (n) => n <= 7 ? 1 : n <= 14 ? 2 : 3;
const actLabel = (n) => `Akt ${["I","II","III"][actOf(n)-1]} · ${ACTS[actOf(n)-1].name}`;

const CHAPTERS = [
  {
    n: 1,
    name: "Das Haus unter dem Regen",
    epigraph: "Das Erste, was Selene von Ashfall sah, war das Licht.",
    audioTitle: "Concrete Silence",
    soundDesign: "Nächtlicher Regen, langsamer werdender Motor, Reifen auf Schotter, massive Tür, zu reichhaltige Stille.",
    spice: "Tief viszeral. Kloß im Hals. Tachykardie der Erwartung.",
    synopsis: [
      "Selene kommt in Ashfall an, dem Privatclub von Eden Veyr, für einen Launch-Vertrag. Das Haus ist wunderschön, beunruhigend und scheint sie zu erwarten, noch bevor es ihren Namen kennt.",
      "Eden Veyr kommt die Treppe herab, ohne Eile. Er ist ruhig, elegant, kalt. Ihr erstes Gespräch ist eine Verhandlung, getarnt als Begrüßung.",
    ],
    written: true,
  },
  {
    n: 2,
    name: "Die Regeln von Ashfall",
    epigraph: "Hier bezahlt man nicht mit Geld. Man bezahlt mit Vertrauen.",
    audioTitle: "Glasslight Rationing",
    soundDesign: "Summen einer Hochdrucklüftung, sich verriegelnde Türen, aneinandergereihte Gläser.",
    spice: "Keimende Paranoia. Schauer des Unbehagens.",
    synopsis: [
      "Eden stellt seine Bedingungen. Selene erfährt, dass Noé, ihr Bruder, etwas Wichtiges gestohlen hat. Der Aktenkoffer des Überfalls enthielt fünfzehn Jahre alte Beweise.",
      "Der Launch-Vertrag wird zum Vorwand. Der Käfig schließt sich.",
    ],
    written: true,
  },
  {
    n: 3,
    name: "Die fünf Düfte",
    epigraph: "Beeren. Rosen. Feigenbaum. Tuberose. Lilie. Kennen Sie diese Gerüche?",
    audioTitle: "Watched Pulse",
    soundDesign: "Leiser Atem in einem Ohr, Reiben eines Stuhls auf geschliffenem Beton, Herzschlag.",
    spice: "Schwere Tachykardie. Kurze Hypoxie. Erste Nähe.",
    synopsis: [
      "Selene entdeckt, dass die Kerzen, die sie herstellt, nicht einfach nur Düfte sind: Es sind olfaktorische Codes, die ihr Vater hinterlassen hat. Jeder Geruch entspricht einer Nachricht, einer Drohung, einem Ort.",
      "Eden enthüllt ihr, dass ihr Vater für die Veyr-Mafia gearbeitet hat. Selene weigert sich, es zu glauben. Aber die Beweise sind im Aktenkoffer.",
    ],
    written: true,
  },
  {
    n: 4,
    name: "Das offene Schlafzimmer",
    epigraph: "Er bot ihr ein Zimmer an. Sie verstand zu spät, dass es eine Zelle war.",
    audioTitle: "Cold Circuit",
    soundDesign: "Klappern eines Schlosses, Stille eines leeren Flurs, Kloß im Hals.",
    spice: "Kalte Spannung. Langsames Erkennen der Gefangenschaft.",
    synopsis: [
      "Eden bringt Selene in einem Zimmer von Ashfall unter. Alles ist luxuriös, perfekt, aber die Tür hat auf ihrer Seite kein Schloss. Sie ist gefangen.",
      "Noé wird irgendwo im Gebäude festgehalten. Selene versteht, dass sie Edens Vertrauen gewinnen muss, um ihn zu befreien.",
    ],
    written: true,
  },
  {
    n: 5,
    name: "Die weiße Tür",
    epigraph: "Manche Türen öffnen sich nicht. Sie verschwinden.",
    audioTitle: "Glitch Silence",
    soundDesign: "Stockender Atem, eine auf Marmor fallende Akte, zu lange andauernde Stille.",
    spice: "Spannungsabfall. Kalter Schweiß. Schwindel.",
    synopsis: [
      "Selene erkundet Ashfall und entdeckt einen verbotenen Flügel. Hinter einer weißen Tür: Akten, Fotos, Aufnahmen, die ihren Vater mit der Weißen Hand verbinden.",
      "Eden überrascht sie. Anstatt sie zu bestrafen, zeigt er ihr ein Video: Der Unfall ihrer Mutter war kein Unfall.",
    ],
    written: true,
  },
  {
    n: 6,
    name: "Der Name unter der Asche",
    epigraph: "Er zeigte ihr den Namen des Mannes, der gefahren war. Sie wiederholte ihn wie ein rachsüchtiges Gebet.",
    audioTitle: "Pink Waiting",
    soundDesign: "Tiefes Cello, fallende Asche, Stille der Offenbarung.",
    spice: "Kalte Adrenalin. Die Ruhe vor dem Sturm.",
    synopsis: [
      "Doktor Marius Lenoir. Das ist der Name, den Eden aus der Asche der Akte holt. Der Arzt, der den Bericht über Claire Moreau, Selenes Mutter, unterschrieben hat.",
      "Selene beschließt, ihn aufzusuchen. Eden lehnt ab. Sie besteht darauf. Ihre erste wirkliche Konfrontation.",
    ],
    written: true,
  },
  {
    n: 7,
    name: "Das Zimmer ohne Schloss",
    epigraph: "Sie hatte aufgehört, fliehen zu wollen. Das war schlimmer als alles andere.",
    audioTitle: "Salt Lamp Halo",
    soundDesign: "Seide, die sich reibt, zwei Atemzüge, die sich kennenlernen, geteilte Stille.",
    spice: "Muskuläre Anspannung. Niedrige, kontinuierliche Wärme.",
    synopsis: [
      "Selene und Eden verbringen ihren ersten wahren Moment allein. Die Dynamik verändert sich. Es ist keine Feindseligkeit mehr — es ist gegenseitige Faszination.",
      "Er berührt sie zum ersten Mal. Nicht auf der Haut. Am Handgelenk. Genug, um ihren Puls rasen zu lassen.",
    ],
    written: true,
  },
  {
    n: 8,
    name: "Tuberose",
    epigraph: "Er sagte ihr, sie solle sich nicht bewegen. Sie gehorchte. Der Raum wurde zum Schlafzimmer.",
    audioTitle: "Servo Lactation",
    soundDesign: "Sich überlagernde Atemzüge, abschaltende Klimaanlage, Stille eines geschlossenen Raums.",
    spice: "Breathplay. Leichte Hypoxie. Das viszerale Bedürfnis nach einem Kontakt, der kommt.",
    synopsis: [
      "Eden betritt ohne Vorwarnung Selenes Zimmer. Die Spannung bricht aus. Es ist die erste intime Szene: kontrolliert, intensiv, bei brennender Tuberose-Kerze.",
      "Er setzt Grenzen. Sie akzeptiert sie. Das Vertrauen beginnt, sich auf den Ruinen des Misstrauens aufzubauen.",
    ],
    written: true,
  },
  {
    n: 9,
    name: "Das Duftnotizbuch",
    epigraph: "Jede Seite roch anders. Jeder Geruch war ein Code.",
    audioTitle: "Circuit Pulse",
    soundDesign: "Umblätterndes Papier, Atem, aufkeimende Erkenntnis.",
    spice: "Schauer der Entdeckung. Puzzleteile, die sich zusammensetzen.",
    synopsis: [
      "Selene findet das Notizbuch ihres Vaters, versteckt im Futter des Aktenkoffers. Jede Seite ist mit einem Duft markiert. Beeren für Gefahr. Rosen für Lüge. Lilie für Tod.",
      "Sie entschlüsselt den Code: Ihr Vater war im Begriff, die Weiße Hand zu entlarven, als er starb. Er hat alles Selene hinterlassen, ohne dass sie es wusste.",
    ],
    written: true,
  },
  {
    n: 10,
    name: "Die nasse Straße",
    epigraph: "Er fuhr. Sie sah den Regen an. Die Stille zwischen ihnen war ein Geständnis.",
    audioTitle: "Endless Overtone",
    soundDesign: "Nächtliche Straße, Regen gegen die Windschutzscheibe, tiefer Motor, Stille zu zweit.",
    spice: "Gefährliche Intimität. Erzwungene Nähe. Geständnisse im Regen.",
    synopsis: [
      "Eden bringt Selene zu der Straße, auf der ihre Mutter starb. Er erzählt ihr von Irinas Unfall, seiner Schwester. Ihre Traumata antworten einander.",
      "Zum ersten Mal zeigt Eden eine Schwachstelle. Selene ergreift sie, nicht um anzugreifen, sondern um zu verstehen.",
    ],
    written: true,
  },
  {
    n: 11,
    name: "Die Blutschuld",
    epigraph: "Die Familie Veyr vergibt nicht. Sie sammelt.",
    audioTitle: "Cedar Cello Grief",
    soundDesign: "Stimmengewirr, dominierendes Flüstern, lastende Stille.",
    spice: "Extreme Tachykardie. Konfrontation. Die Schuld, die bindet.",
    synopsis: [
      "Althéa Veyr, Edens Mutter, kommt in Ashfall an. Sie verlangt, dass Selene den Orsini ausgeliefert wird. Eden lehnt ab. Der Krieg zwischen Mutter und Sohn bricht aus.",
      "Selene entdeckt, dass Althéa den Tod ihrer Mutter angeordnet hat. Die Weiße Hand — das ist sie.",
    ],
    written: true,
  },
  {
    n: 12,
    name: "Der Orsini-Hafen",
    epigraph: "Der Hafen roch nach Salz, Diesel und dem Tod, den man vorbereitet.",
    audioTitle: "Warm Light Escape",
    soundDesign: "Rückwärtswarner, Ketten, gegen den Rumpf schlagendes Wasser, tragende Stimmen.",
    spice: "Kampfadrenalin. Echte Gefahr. Erste Actionszene.",
    synopsis: [
      "Selene wird von Orsinis Männern entführt. Eden macht sich allein auf die Suche nach ihr. Der Hafen wird zum Schlachtfeld.",
      "Eden tötet zum ersten Mal vor ihren Augen. Sie wendet den Blick nicht ab. Etwas verändert sich in ihr.",
    ],
    written: true,
  },
  {
    n: 13,
    name: "Der Arzt der Toten",
    epigraph: "Ein unschuldiger Mann würde fragen, welcher.",
    audioTitle: "Cobalt Countdown",
    soundDesign: "Sich öffnender Tresor, Stille eines Krankenzimmers, stockender Atem.",
    spice: "Archivkälte. Langsame Übelkeit. Blutgefrierende Offenbarung.",
    synopsis: [
      "Selene und Eden infiltrieren die Lenoir-Stiftung, um den Arzt zu stellen, der die falschen Berichte unterschrieben hat. Lenoir gesteht, das Auto gefahren zu haben, das Claire Moreau von der Straße gedrängt hat.",
      "Irina Veyr starb nicht bei dem Brand: Sie überlebte lange genug, um Eden sehen zu wollen. Althéa ließ ihren Sohn die Überführungspapiere unterschreiben, ohne dass er verstand.",
    ],
    written: true,
  },
  {
    n: 14,
    name: "Karol House",
    epigraph: "Das Publikum liebt wahre Geschichten, wenn es glaubt, sie seien erfunden.",
    audioTitle: "Cedar Cello Grief (1)",
    soundDesign: "Gefiltertes Publikumsgemurmel, umblätternde Seiten, Mikrofontests, Atem vor einer Rede.",
    spice: "Spannung einer kontrollierten Show. Das Buch wird zum Kriegsschauplatz.",
    synopsis: [
      "Die Buchvorstellung in Karol House wird zur Falle. Die Weiße Hand hat die Einladungen, die Kameras und den Titel manipuliert: LYSFALL.",
      "Selene weigert sich abzusagen. Sie beschließt, ihre eigene Buchvorstellung als Falle für die Weiße Hand zu nutzen.",
    ],
    written: true,
  },
  {
    n: 15,
    name: "Das kontrollierte Verschwinden",
    epigraph: "Sie hatten ihre Buchvorstellung geplant. Sie würde ihnen ein Begräbnis ausrichten.",
    audioTitle: "__Glitch Rivulets__",
    soundDesign: "Zerbrechendes Glas, ins Leere klingelndes Telefon, heulender Alarm.",
    spice: "Desorientierungsschwindel. Die sich umkehrende Falle.",
    synopsis: [
      "Selene setzt ihren Plan in die Tat um. Sie verwandelt Karol House in eine Bühne der Gefangennahme. Die Gäste der Weißen Hand treffen ein, ohne zu wissen, dass sie die Ziele sind.",
      "Eden und seine Männer sind in Stellung. Noé spielt den Köder. Maëlys und Livia kümmern sich um Kameras und Livestream.",
    ],
    written: true,
  },
  {
    n: 16,
    name: "Die Zuflucht der vernünftigen Frau",
    epigraph: "Sie hörte auf zu rennen. Der Käfig hatte aufgehört, ein Gefängnis zu sein.",
    audioTitle: "Weightless Helm",
    soundDesign: "Stille nach dem Sturm, sich erholender Atem, ruhiges Wasser.",
    spice: "Remission. Gefährliche Ruhepause. Sich einnistende Liebe.",
    synopsis: [
      "Nach der Konfrontation in Karol House finden Selene und Eden Zuflucht an einem sicheren Ort. Zum ersten Mal sind sie allein, ohne unmittelbare Bedrohung.",
      "Ihre Intimität entwickelt sich weiter. Eden lässt seine Verteidigung fallen. Selene entdeckt den Mann hinter der Maske.",
    ],
    written: true,
  },
  {
    n: 17,
    name: "Die weißen Scheinwerfer",
    epigraph: "Die Scheinwerfer tanzten auf dem Wasser. Die Wahrheit wartete auf sie auf See.",
    audioTitle: "Blue Bilge Choir",
    soundDesign: "Bootsmotor, Hafensirene, Propeller im schwarzen Wasser.",
    spice: "Wettlauf gegen die Zeit. Ozean. Das letzte Geheimnis.",
    synopsis: [
      "Selene und Eden fahren aufs Meer hinaus, um den Lily-Container zu finden, der vom Hafen verschwunden ist. Die Weiße Hand hat die Beweise verlegt.",
      "Sie werden auf See von Althéas Männern angegriffen. Die finale Jagd beginnt.",
    ],
    written: true,
  },
  {
    n: 18,
    name: "Maison Sainte-Isolde",
    epigraph: "Es war ein Ort zum Heilen. Es war ein Ort zum Verschwinden.",
    audioTitle: "Blue Choirglass",
    soundDesign: "Anstaltstür, weißer Flur, Neonlichter, flüsternde Patienten.",
    spice: "Der Zusammenbruch. Die Konfrontation mit der Mutter.",
    synopsis: [
      "Die letzte Konfrontation mit Althéa Veyr findet in Maison Sainte-Isolde statt, einer privaten psychiatrischen Klinik, in der Althéa ihre dunkelsten Geheimnisse versteckt.",
      "Althéa enthüllt die ganze Wahrheit: Sie hat Irina, Claire Moreau und Dutzende andere geopfert, um ihr Imperium zu schützen. Eden muss sich zwischen seiner Mutter und Selene entscheiden.",
    ],
    written: true,
  },
  {
    n: 19,
    name: "Die weiße Fracht",
    epigraph: "Der Container öffnete sich. Der Duft von Lilie stieg daraus hervor wie ein Geist.",
    audioTitle: "Ash Dawn Transit",
    soundDesign: "Metallcontainer, springendes Schloss, weiße Stille, Offenbarung.",
    spice: "Atemstillstand. Endgültige Offenbarung. Der Beweis, der befreit.",
    synopsis: [
      "Der Lily-Container wird gefunden. Darin: die Beweise von fünfzehn Jahren Verbrechen der Weißen Hand — Akten, Videos, Aufnahmen, Leichen.",
      "Selene und Eden sichern alles. Aber Althéa hat ein letztes Ass im Ärmel.",
    ],
    written: true,
  },
  {
    n: 20,
    name: "Die öffentliche Wahl",
    epigraph: "Sie hatte die Welt als Zeugen. Sie wählte, die Welt zu verbrennen.",
    audioTitle: "Pink Waiting (1)",
    soundDesign: "Kameras, Mikrofone, die den Atem anhaltende Menge, Entscheidung live.",
    spice: "Dopaminausschüttung. Die öffentliche Wahl. Erlösung oder Fall.",
    synopsis: [
      "Selene sendet alles live: die Videos, die Geständnisse, die Beweise. Die Weiße Hand bricht innerhalb weniger Stunden zusammen.",
      "Aber Althéa hat Noé als Geisel genommen. Selene muss sich zwischen der Rettung ihres Bruders und der Zerstörung Althéas entscheiden. Eden verspricht ihr, dass sie beides kann.",
    ],
    written: true,
  },
  {
    n: 21,
    name: "Die Namen, die bleiben",
    epigraph: "Es blieb nur noch, die Lebenden zu zählen.",
    audioTitle: "FINAL",
    soundDesign: "Stille nach der Schlacht, Vögel, umblätternde Seiten, Ende, das sich schreibt.",
    spice: "Ruhe nach dem Sturm. Emotionaler Epilog.",
    synopsis: [
      "Die Folgen. Die Weiße Hand wird zerschlagen. Althéa verhaftet. Noé in Sicherheit.",
      "Selene und Eden treffen sich im leeren Ashfall wieder. Keine Geheimnisse mehr. Keine Lügen mehr. Nur sie beide.",
    ],
    written: true,
  },
  {
    n: 22,
    name: "Ashfall",
    epigraph: "Alles fällt irgendwann. Sogar die Asche. Sogar die Liebe.",
    audioTitle: "FINAL 2",
    soundDesign: "Rückkehr der Anfangsstille. Dieselbe, aber in Besitz genommen.",
    spice: "Der finale Erotik: einvernehmlicher, gegenseitiger, befriedeter Besitz.",
    synopsis: [
      "Ein Jahr später. Selene und Eden haben Ashfall gemeinsam wieder aufgebaut. Selenes Buch ist endlich veröffentlicht — ihre Version, nicht die der Weißen Hand.",
      "Die letzte Szene ist ein Zimmer. Eine brennende Kerze. Zwei Körper, die einander ohne Ketten gehören. Das Buch schließt sich mit einem gehaltenen Versprechen.",
    ],
    written: true,
  },
];

window.BOOK = BOOK;
window.CONTENT_WARNINGS = CONTENT_WARNINGS;
window.SCENTS = SCENTS;
window.scentForChapter = scentForChapter;
window.ACTS = ACTS;
window.CHAPTERS = CHAPTERS;
window.AUDIO = AUDIO;
window.audioSrc = audioSrc;
window.ROMAN = ROMAN;
window.actOf = actOf;
window.actLabel = actLabel;
