/* Library — HI-FI. Same content as v2, but with hover lift, glint sweep,
   gold-underline title, scroll-reveal stagger across the cover grid.
*/

const LIBRARY_I18N = {
  library: { en: "Library", tr: "Kütüphane", es: "Biblioteca", de: "Bibliothek", fr: "Bibliothèque", ru: "Библиотека", ja: "ライブラリ", zh: "文库" },
  media: { en: "Media", tr: "Medya", es: "Medios", de: "Medien", fr: "Médias", ru: "Медиа", ja: "メディア", zh: "媒体" },
  texts: { en: "Texts", tr: "Metinler", es: "Textos", de: "Texte", fr: "Textes", ru: "Тексты", ja: "テキスト", zh: "文本" },
  posts: { en: "Posts", tr: "Gönderiler", es: "Publicaciones", de: "Beiträge", fr: "Publications", ru: "Публикации", ja: "投稿", zh: "帖子" },
  articles: { en: "Articles", tr: "Makaleler", es: "Artículos", de: "Artikel", fr: "Articles", ru: "Статьи", ja: "記事", zh: "文章" },
  the_works: { en: "The Works", tr: "Eserler", es: "Las obras", de: "Die Werke", fr: "Les œuvres", ru: "Труды", ja: "著作", zh: "著作" },
  volumes: { en: "Volumes", tr: "Ciltler", es: "Volúmenes", de: "Bände", fr: "Volumes", ru: "Тома", ja: "巻", zh: "卷册" },
  languages: { en: "Languages", tr: "Diller", es: "Idiomas", de: "Sprachen", fr: "Langues", ru: "Языки", ja: "言語", zh: "语言" },
  filter: { en: "Filter", tr: "Filtrele", es: "Filtrar", de: "Filtern", fr: "Filtrer", ru: "Фильтр", ja: "絞り込み", zh: "筛选" },
  showing: { en: "Showing", tr: "Gösterilen", es: "Mostrando", de: "Angezeigt", fr: "Affichage", ru: "Показано", ja: "表示中", zh: "正在显示" },
  of: { en: "of", tr: "/", es: "de", de: "von", fr: "sur", ru: "из", ja: "/", zh: "共" },
  browse_all: { en: "Browse all works", tr: "Tüm eserlere göz at", es: "Ver todas las obras", de: "Alle Werke durchsuchen", fr: "Parcourir toutes les œuvres", ru: "Все труды", ja: "すべての著作を見る", zh: "浏览全部著作" },
  all_media: { en: "All media", tr: "Tüm medya", es: "Todos los medios", de: "Alle Medien", fr: "Tous les médias", ru: "Все медиа", ja: "すべてのメディア", zh: "全部媒体" },
  selected_essays: { en: "Selected essays", tr: "Seçme makaleler", es: "Ensayos seleccionados", de: "Ausgewählte Essays", fr: "Essais choisis", ru: "Избранные эссе", ja: "選りすぐりの随筆", zh: "精选文章" },
  read: { en: "Read", tr: "Oku", es: "Leer", de: "Lesen", fr: "Lire", ru: "Читать", ja: "読む", zh: "阅读" },
  soon: { en: "Soon", tr: "Yakında", es: "Pronto", de: "Bald", fr: "Bientôt", ru: "Скоро", ja: "近日公開", zh: "敬请期待" },
  loading: { en: "Loading…", tr: "Yükleniyor…", es: "Cargando…", de: "Wird geladen…", fr: "Chargement…", ru: "Загрузка…", ja: "読み込み中…", zh: "加载中…" },
  article_soon: { en: "This article will be available soon.", tr: "Bu makale yakında yayınlanacak.", es: "Este artículo estará disponible pronto.", de: "Dieser Artikel ist bald verfügbar.", fr: "Cet article sera bientôt disponible.", ru: "Эта статья скоро будет доступна.", ja: "この記事は近日公開予定です。", zh: "本文即将上线。" },
  spot: { en: "Spot", tr: "Anlık", es: "Destacado", de: "Spot", fr: "Aperçu", ru: "Момент", ja: "スポット", zh: "精选" },
  media_hero_sub: { en: "Esad Cosan's short English excerpts with voiceover. Full Turkish transcripts on record.", tr: "Esad Cosan'ın seslendirmeli kısa İngilizce alıntıları. Tam Türkçe deşifreler kayıt altında.", es: "Breves extractos en inglés de Esad Cosan con voz en off. Transcripciones completas en turco disponibles.", de: "Kurze englische Auszüge von Esad Cosan mit Sprecherstimme. Vollständige türkische Transkripte liegen vor.", fr: "Courts extraits en anglais d'Esad Cosan avec voix off. Transcriptions turques intégrales archivées.", ru: "Короткие английские отрывки Esad Cosan с озвучкой. Полные турецкие расшифровки в архиве.", ja: "Esad Cosan の短い英語抜粋（ナレーション付き）。完全なトルコ語の書き起こしも記録済み。", zh: "Esad Cosan 的英文短摘录，配有旁白。完整土耳其语文字记录已存档。" },
  posts_hero_sub: { en: "Spotlights — short visual excerpts and selected sayings. Custom artwork for each post is in preparation.", tr: "Anlık kareler — kısa görsel alıntılar ve seçme sözler. Her gönderi için özel görseller hazırlanıyor.", es: "Destacados — breves extractos visuales y citas seleccionadas. Las ilustraciones personalizadas de cada publicación están en preparación.", de: "Spotlights — kurze visuelle Auszüge und ausgewählte Aussprüche. Eigene Illustrationen für jeden Beitrag sind in Vorbereitung.", fr: "Aperçus — courts extraits visuels et paroles choisies. Les illustrations propres à chaque publication sont en préparation.", ru: "Моменты — короткие визуальные отрывки и избранные изречения. Авторские иллюстрации к каждой публикации готовятся.", ja: "スポットライト — 短いビジュアル抜粋と選りすぐりの言葉。各投稿の専用アートワークを準備中。", zh: "精选瞬间——简短的视觉摘录与精选语录。每篇帖子的专属插画正在筹备中。" },
  cat_media_sub: { en: "Audio & video — talks, lectures, and social excerpts with voiceover.", tr: "Ses ve video — sohbetler, dersler ve seslendirmeli sosyal alıntılar.", es: "Audio y video — charlas, conferencias y extractos sociales con voz en off.", de: "Audio & Video — Gespräche, Vorträge und soziale Auszüge mit Sprecherstimme.", fr: "Audio et vidéo — causeries, conférences et extraits sociaux avec voix off.", ru: "Аудио и видео — беседы, лекции и социальные отрывки с озвучкой.", ja: "音声と動画 — 講話、講義、ナレーション付きのソーシャル抜粋。", zh: "音频与视频——讲谈、讲座及配旁白的社媒摘录。" },
  cat_media_meta: { en: "Listen & watch", tr: "Dinle ve izle", es: "Escuchar y ver", de: "Hören & ansehen", fr: "Écouter et regarder", ru: "Слушать и смотреть", ja: "聴く・観る", zh: "聆听与观看" },
  cat_texts_sub: { en: "Books, essays and editorials — the written body of work, with covers.", tr: "Kitaplar, makaleler ve başyazılar — kapaklarıyla birlikte yazılı eserler.", es: "Libros, ensayos y editoriales — la obra escrita, con sus portadas.", de: "Bücher, Essays und Leitartikel — das schriftliche Werk, mit Buchumschlägen.", fr: "Livres, essais et éditoriaux — l'œuvre écrite, avec ses couvertures.", ru: "Книги, эссе и передовицы — письменное наследие, с обложками.", ja: "書籍、随筆、論説 — 表紙付きの著述作品。", zh: "书籍、文章与社论——配有封面的文字著作。" },
  cat_texts_meta: { en: "Read", tr: "Oku", es: "Leer", de: "Lesen", fr: "Lire", ru: "Читать", ja: "読む", zh: "阅读" },
  cat_posts_sub: { en: "Spotlights — short visual excerpts and selected sayings.", tr: "Anlık kareler — kısa görsel alıntılar ve seçme sözler.", es: "Destacados — breves extractos visuales y citas seleccionadas.", de: "Spotlights — kurze visuelle Auszüge und ausgewählte Aussprüche.", fr: "Aperçus — courts extraits visuels et paroles choisies.", ru: "Моменты — короткие визуальные отрывки и избранные изречения.", ja: "スポットライト — 短いビジュアル抜粋と選りすぐりの言葉。", zh: "精选瞬间——简短的视觉摘录与精选语录。" },
  cat_posts_meta: { en: "Glance", tr: "Göz at", es: "Vistazo", de: "Blick", fr: "Coup d'œil", ru: "Взгляд", ja: "ひと目", zh: "速览" },
  f_all_works: { en: "All works", tr: "Tüm eserler", es: "Todas las obras", de: "Alle Werke", fr: "Toutes les œuvres", ru: "Все труды", ja: "すべての著作", zh: "全部著作" },
  f_essays: { en: "Essays", tr: "Makaleler", es: "Ensayos", de: "Essays", fr: "Essais", ru: "Эссе", ja: "随筆", zh: "文章" },
  f_tafsir: { en: "Tafsir", tr: "Tefsir", es: "Tafsir", de: "Tafsir", fr: "Tafsir", ru: "Тафсир", ja: "タフスィール", zh: "经注" },
  f_hadith: { en: "Hadith", tr: "Hadis", es: "Hadiz", de: "Hadith", fr: "Hadith", ru: "Хадис", ja: "ハディース", zh: "圣训" },
  f_sohbet: { en: "Sohbet", tr: "Sohbet", es: "Sohbet", de: "Sohbet", fr: "Sohbet", ru: "Сохбет", ja: "ソフベット", zh: "讲谈" },
  f_editorials: { en: "Editorials", tr: "Başyazılar", es: "Editoriales", de: "Leitartikel", fr: "Éditoriaux", ru: "Передовицы", ja: "論説", zh: "社论" },
  f_biography: { en: "Biography", tr: "Biyografi", es: "Biografía", de: "Biografie", fr: "Biographie", ru: "Биография", ja: "伝記", zh: "传记" },
  f_critical: { en: "Critical edition", tr: "Tenkitli neşir", es: "Edición crítica", de: "Kritische Edition", fr: "Édition critique", ru: "Критическое издание", ja: "校訂版", zh: "校勘本" },
};
function libT(key, lang) { const e = LIBRARY_I18N[key]; return (e && (e[lang] || e.en)) || ""; }
const LIB_FILTER_KEYS = { "All works": "f_all_works", "Essays": "f_essays", "Tafsir": "f_tafsir", "Hadith": "f_hadith", "Sohbet": "f_sohbet", "Editorials": "f_editorials", "Biography": "f_biography", "Critical edition": "f_critical" };

const HF_LIB_WORKS = [
  { n: "01", title: "The Upright Path",                          meta: "Hadith Collection · 10 vols", kind: "Hadith" },
  { n: "02", title: "Friday Conversations",                       meta: "Sohbet · 12 vols",            kind: "Sohbet" },
  { n: "03", title: "Questions and Answers",                      meta: "Sohbet · 3 vols",             kind: "Sohbet" },
  { n: "04", title: "The Main Issue in the 21st Century",         meta: "Essays · 1998",               kind: "Essays" },
  { n: "05", title: "The Art of Servanthood in the 21st Century", meta: "Essays · 1999",               kind: "Essays" },
  { n: "06", title: "Without the Sunnah, There Is No Ummah",      meta: "Essays · 2000",               kind: "Essays" },
  { n: "07", title: "Exegesis of Surah Al-Fatiha",                meta: "Tafsīr · 1 vol",              kind: "Tafsir" },
  { n: "08", title: "Exegesis of Surah Al-Baqarah",               meta: "Tafsīr · 5 vols",             kind: "Tafsir" },
  { n: "09", title: "Mehmed Zahid Kotku",                         meta: "Biography",                   kind: "Biography" },
  { n: "10", title: "Hacı Bektâş-ı Veli and Bektāshism",          meta: "Critical · 1972",             kind: "Critical edition" },
  { n: "11", title: "Pioneer Sufis — Ṭabaqāt al-Ṣūfiyya",         meta: "Critical · 3 vols",           kind: "Critical edition" },
  { n: "12", title: "Our Language and Culture",                   meta: "Editorials",                  kind: "Editorials" },
];

const HF_LIB_FILTERS = ["All works", "Essays", "Tafsir", "Hadith", "Sohbet", "Editorials", "Biography", "Critical edition"];

function LibraryHiFi({ mode = "desktop", accent = "#B89968", showPortrait = true }) {
  const mobile = mode === "mobile";
  const rootRef = React.useRef(null);
  const [lang] = (typeof useLang === "function" ? useLang() : ["en"]);
  const lt = (k) => libT(k, lang);
  const [activeFilter, setActiveFilter] = React.useState("All works");
  const works = HF_LIB_WORKS.filter(w => activeFilter === "All works" || w.kind === activeFilter);

  React.useEffect(() => {
    const root = rootRef.current; if (!root) return;
    const targets = root.querySelectorAll(".hf-reveal:not(.is-in)");
    const io = new IntersectionObserver((entries) => {
      entries.forEach((e) => {
        if (e.isIntersecting) { e.target.classList.add("is-in"); io.unobserve(e.target); }
      });
    }, { root, threshold: 0.10, rootMargin: "0px 0px -6% 0px" });
    targets.forEach(t => io.observe(t));
    return () => io.disconnect();
  }, [activeFilter]);

  return (
    <div ref={rootRef} className="cw-frame" style={{ overflowY: "auto" }}>
      <TopNav current="Library" mobile={mobile} accent={accent} />

      {/* Hero */}
      <section style={{
        padding: mobile ? "56px 22px 36px" : "120px 96px 80px",
        display: "grid", gridTemplateColumns: mobile ? "1fr" : "1.2fr 1fr",
        gap: mobile ? 24 : 80, alignItems: "end",
        borderBottom: "1px solid var(--hairline)",
      }}>
        <div>
          <span className="hf-eyebrow-rule hf-rise" style={{ animationDelay: "150ms" }}>03  /  {lt("library")}  /  {lt("texts")}</span>
          <h1 className="serif hf-rise" style={{
            fontWeight: 300, fontSize: mobile ? 64 : 156, lineHeight: 0.94, letterSpacing: "-0.03em",
            margin: "20px 0 0", fontVariationSettings: '"opsz" 144, "SOFT" 30',
            animationDelay: "300ms",
          }}>{lt("the_works")}</h1>
        </div>
        <div style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: mobile ? 16 : 32 }}>
          <div className="hf-rise" style={{ borderTop: `1px solid ${accent}`, paddingTop: 14, animationDelay: "650ms" }}>
            <span className="eyebrow">{lt("volumes")}</span>
            <p className="serif" style={{ fontSize: mobile ? 44 : 76, fontWeight: 350, lineHeight: 1, margin: "8px 0 0", letterSpacing: "-0.02em",
              fontVariationSettings: '"opsz" 144, "SOFT" 30' }}>37</p>
          </div>
          <div className="hf-rise" style={{ borderTop: `1px solid ${accent}`, paddingTop: 14, animationDelay: "850ms" }}>
            <span className="eyebrow">{lt("languages")}</span>
            <p className="serif" style={{ fontSize: mobile ? 44 : 76, fontWeight: 350, lineHeight: 1, margin: "8px 0 0", letterSpacing: "-0.02em",
              fontVariationSettings: '"opsz" 144, "SOFT" 30' }}>TR<span style={{ fontSize: "0.45em", color: "var(--gray-warm)", fontStyle: "italic", verticalAlign: "super" }}>+EN</span></p>
          </div>
        </div>
      </section>

      {/* Filter chips */}
      <section className="hf-reveal" style={{ padding: mobile ? "20px 22px 4px" : "32px 96px 16px", borderBottom: "1px solid var(--hairline)" }}>
        <div style={{ display: "flex", gap: 8, flexWrap: "wrap", alignItems: "center" }}>
          <span className="eyebrow" style={{ marginRight: 8 }}>— {lt("filter")}</span>
          {HF_LIB_FILTERS.map((f) => {
            const sel = f === activeFilter;
            return (
              <span key={f} onClick={() => setActiveFilter(f)}
                className={sel ? "chip active" : "chip"}
                style={{ transition: "all 250ms cubic-bezier(0.22,1,0.36,1)", cursor: "pointer" }}>{lt(LIB_FILTER_KEYS[f] || "f_all_works")}</span>
            );
          })}
        </div>
      </section>

      {/* Cover grid — hover lift + glint sweep + gold underline title */}
      <section style={{ padding: mobile ? "32px 22px 64px" : "60px 96px 100px" }}>
        <div style={{
          display: "grid",
          gridTemplateColumns: mobile ? "1fr 1fr" : "repeat(4, 1fr)",
          gap: mobile ? 24 : 48,
        }}>
          {works.map((w, i) => (
            <article
              key={w.n}
              className="hf-cover hf-reveal"
              style={{
                display: "flex", flexDirection: "column",
                transitionDelay: `${(i % 4) * 50 + Math.floor(i / 4) * 80}ms`,
              }}
            >
              <div style={{
                aspectRatio: "2/3",
                background: showPortrait
                  ? `linear-gradient(160deg, var(--bg-warm) 0%, var(--bg-deep) 60%, ${accent}22 100%)`
                  : "var(--bg-warm)",
                position: "relative",
                marginBottom: 16,
                overflow: "hidden",
                border: "1px solid var(--hairline)",
              }}>
                <span style={{
                  position: "absolute", top: mobile ? 12 : 18, left: mobile ? 12 : 18,
                  fontFamily: "var(--serif)", fontStyle: "italic", color: accent,
                  fontSize: mobile ? 14 : 18, fontVariationSettings: '"opsz" 9, "SOFT" 100',
                }}>№ {w.n}</span>
                <div style={{ position: "absolute", inset: mobile ? 10 : 14, border: "1px solid rgba(15,15,15,0.06)" }} />
                <div style={{ position: "absolute", left: mobile ? 18 : 24, right: mobile ? 18 : 24, bottom: mobile ? 18 : 24 }}>
                  <span className="eyebrow" style={{ fontSize: mobile ? 9 : 10, color: "var(--ink-soft)" }}>— Cosan</span>
                </div>
                {/* Glint sweep */}
                <span className="hf-cover-glint" />
              </div>
              <div style={{ padding: mobile ? "0 8px" : "0 10px" }}>
                <h3 className="serif" style={{
                  fontWeight: 400, fontSize: mobile ? 16 : 19, letterSpacing: "-0.01em",
                  margin: "0 0 4px", lineHeight: 1.25
                }}><span className="hf-cover-title">{w.title}</span></h3>
                <span className="hf-cover-meta" style={{ fontSize: 11, letterSpacing: "0.04em", color: "var(--gray-warm)" }}>{w.meta}</span>
              </div>
            </article>
          ))}
        </div>

        <div className="hf-reveal" style={{ marginTop: mobile ? 56 : 88, paddingTop: mobile ? 22 : 32, borderTop: "1px solid var(--hairline)",
          display: "flex", justifyContent: "space-between", alignItems: "baseline" }}>
          <span className="eyebrow">{lt("showing")} {works.length} {lt("of")} {HF_LIB_WORKS.length}</span>
          <a className="hf-link" style={{ fontSize: mobile ? 14 : 16, letterSpacing: "0.02em", paddingBottom: 2 }}>{lt("browse_all")} →</a>
        </div>
      </section>

      <ArticlesSection mode={mode} accent={accent} />

      <SiteFooter mobile={mobile} accent={accent} />
      <div className="hf-grain" style={{ opacity: 0.04, position: "fixed" }} />
    </div>
  );
}

/* ───── Library index — content shown directly (md.3): Media reels,
   a Texts/books preview, and the readable Articles, instead of category cards. ───── */
function LibraryIndex({ mode = "desktop", accent = "#B89968", showPortrait = true }) {
  const mobile = mode === "mobile";
  const [lang] = (typeof useLang === "function" ? useLang() : ["en"]);
  const lt = (k) => libT(k, lang);
  const heroTitle = (typeof longTitle === "function" && longTitle("library", lang)) || lt("the_works");
  return (
    <div className="cw-frame" style={{ overflowY: "auto" }}>
      <TopNav current="Library" mobile={mobile} accent={accent} />
      <section style={{ padding: mobile ? "56px 22px 36px" : "120px 96px 64px", borderBottom: "1px solid var(--hairline)" }}>
        <span className="hf-eyebrow-rule">03  /  {lt("library")}</span>
        <h1 className="serif" style={{
          fontWeight: 300, fontSize: mobile ? 60 : 140, lineHeight: 0.94, letterSpacing: "-0.03em",
          margin: "20px 0 0", fontVariationSettings: '"opsz" 144, "SOFT" 30',
        }}>{heroTitle}</h1>
      </section>

      {/* Media reels — content shown directly (md.3) */}
      {typeof MediaStrip === "function" && <MediaStrip mode={mode} accent={accent} />}

      {/* Texts / books preview — direct covers, full grid one click away */}
      <section style={{ padding: mobile ? "40px 22px 8px" : "88px 96px 8px", borderTop: "1px solid var(--hairline)" }}>
        <div style={{ display: "flex", justifyContent: "space-between", alignItems: "baseline", marginBottom: mobile ? 20 : 32 }}>
          <span className="hf-eyebrow-rule">{lt("texts")}</span>
          <span onClick={() => { window.location.hash = "#/library/texts"; }} style={{ cursor: "pointer", fontSize: 13, letterSpacing: "0.04em", color: accent }}>{lt("browse_all")} →</span>
        </div>
        <div style={{ display: "grid", gridTemplateColumns: mobile ? "1fr 1fr" : "repeat(4, 1fr)", gap: mobile ? 16 : 32 }}>
          {HF_LIB_WORKS.slice(0, 4).map(w => (
            <article key={w.n} className="hf-cover" data-go="/library/texts" style={{ display: "flex", flexDirection: "column", cursor: "pointer" }}>
              <div style={{ aspectRatio: "2/3", background: `linear-gradient(160deg, var(--bg-warm) 0%, var(--bg-deep) 60%, ${accent}22 100%)`, border: "1px solid var(--hairline)", marginBottom: 12, position: "relative" }}>
                <span style={{ position: "absolute", top: 14, left: 14, fontFamily: "var(--serif)", fontStyle: "italic", color: accent, fontSize: 14, fontVariationSettings: '"opsz" 9, "SOFT" 100' }}>№ {w.n}</span>
              </div>
              <h4 className="serif" style={{ fontWeight: 400, fontSize: mobile ? 14 : 17, margin: "0 0 2px", lineHeight: 1.25 }}>{w.title}</h4>
              <span style={{ fontSize: 11, letterSpacing: "0.04em", color: "var(--gray-warm)" }}>{w.meta}</span>
            </article>
          ))}
        </div>
      </section>

      {/* Articles — the two readable essays (md.14) */}
      {typeof ArticlesSection === "function" && <ArticlesSection mode={mode} accent={accent} />}

      <SiteFooter mobile={mobile} accent={accent} />
    </div>
  );
}

/* ───── Library / Posts — placeholder until spotlight artwork arrives ───── */
function LibraryPosts({ mode = "desktop", accent = "#B89968" }) {
  const mobile = mode === "mobile";
  const [lang] = (typeof useLang === "function" ? useLang() : ["en"]);
  const lt = (k) => libT(k, lang);
  return (
    <div className="cw-frame" style={{ overflowY: "auto" }}>
      <TopNav current="Library" mobile={mobile} accent={accent} />
      <section style={{ padding: mobile ? "56px 22px" : "120px 96px", borderBottom: "1px solid var(--hairline)" }}>
        <span className="hf-eyebrow-rule">03  /  {lt("library")}  /  {lt("posts")}</span>
        <h1 className="serif" style={{
          fontWeight: 300, fontSize: mobile ? 60 : 140, lineHeight: 0.94, letterSpacing: "-0.03em",
          margin: "20px 0 24px", fontVariationSettings: '"opsz" 144, "SOFT" 30',
        }}>{lt("posts")}</h1>
        <p className="serif italic" style={{ fontSize: mobile ? 18 : 26, color: "var(--ink-soft)", margin: 0, maxWidth: 640, fontVariationSettings: '"opsz" 9, "SOFT" 100' }}>
          {lt("posts_hero_sub")}
        </p>
      </section>
      <section style={{ padding: mobile ? "40px 22px 80px" : "80px 96px 140px" }}>
        <div style={{ display: "grid", gridTemplateColumns: mobile ? "1fr" : "repeat(2, 1fr)", gap: mobile ? 20 : 40 }}>
          {Array.from({ length: 6 }).map((_, i) => (
            <div key={i} style={{ aspectRatio: "1/1", background: "var(--bg-warm)", border: "1px solid var(--hairline)", display: "flex", alignItems: "center", justifyContent: "center" }}>
              <span className="eyebrow" style={{ color: "var(--gray-warm)" }}>{lt("spot")} {String(i + 1).padStart(2, "0")}</span>
            </div>
          ))}
        </div>
      </section>
      <SiteFooter mobile={mobile} accent={accent} />
    </div>
  );
}

Object.assign(window, { LibraryHiFi, LibraryIndex, LibraryPosts, libT, LIBRARY_I18N });
