{% extends "basis.html" %}{% set seiten_module = ("dig",) %}{% block koerperklasse %} class="breit"{% endblock %}{% block hauptklasse %} class="breit"{% endblock %}{% block weich %} data-weich{% endblock %}{% block inhalt %} {% set b = t.bib %}{% from "schalter.html" import schalter %}

{{ t.demo.nav if demo else b.ueberschrift }}

{% if demo %}{% include "demo_band.html" %}{% endif %} {# Hülle der Bibliothek: bibliothek.js füllt sie aus N13 und blendet dafür den Rückfall darunter aus. #}
{% if ue %}{% set ux = ue.texte %}{% set uz = ue.zustimmung_text %} {# Upload in den eigenen Speicher: Fortschritt unter dem Kopf (dazu die Statuszeile oben), Ablegen-Fläche, Dialog in drei Schritten #} {{ ux.knopf }} {% endif %}
{# Energie ohne JavaScript: zwei Auswahlen mit den vier Stufen; die Werte sind die internen Grenzen (1 · 5 · 6 · 7 bzw. 4 · 5 · 6 · 9) #}
{% if not daten.titel %}

{{ t.keine_titel | ohne_desktop if store_app else t.keine_titel }}

{% endif %}
{% for name in t.spalten %}{% endfor %} {% for z in daten.titel %} {% set cam = z.camelot %}{% set cam_stil = cam | camelot_stil %}{% set gem = z.camelot_gemessen %}{% set gem_stil = gem | camelot_stil %} {% endfor %}
{{ name }}
{% if z.interpret or z.titel %}{{ z.interpret or '–' }} – {{ z.titel or '–' }}{% else %}{{ b.ohne_namen }}{% endif %} {{ z.leitgenre or '' }} {{ z.bpm | bpm_liste if z.bpm else '' }} {{ z.bpm_gemessen | bpm_liste if z.bpm_gemessen else '' }} {% if cam_stil %}{{ cam | tonart }}{% elif cam %}{{ cam }}{% endif %} {% if gem_stil %}{{ gem | tonart }}{% elif gem %}{{ gem }}{% endif %} {{ energie_felder(z.energie, t) }} {% if z.dauer_s %}{{ '%d:%02d'|format(z.dauer_s // 60, z.dauer_s % 60) }}{% endif %}
{# labels: Anzeigenamen der Modell- und DJ-Labels (design/labels.json), dieselbe Tabelle wie im Titelblatt. blatt, herkunft: die Texte des Überblicks für das Fly-in (titelblatt.js zeichnet ihn wie auf der Detailseite). #} {# gefuehl (Paket „Gefühl“, 11.11.2026): Texte für „Filter ohne Treffer“ und Tor für die Lade-Silhouetten – nur mit Menü C; App-Hüllen ohne die Fähigkeit bekommen den Schlüssel nicht (#t wie vorher). ort, abspielen: Texte zu „wo liegt die Datei“ und zum Abspielknopf – nur mit verbundenem Onlinespeicher (sonst zeigt die Seite weder Symbol noch Filter). #} {# Store-Blocker B3 (08.11.2026): die iOS-App nennt die Desktop-App nicht – weder in der leeren Library noch am Ort „lokal“ #} {% set lw = b.leer_wege if analyse_live else dict(b.leer_wege, analyse=none) %}{% if store_app %}{% set lw = dict(lw, app=none, ohne_speicher=t.store.leer_ohne_speicher) %}{% endif %} {# menue.js vor bibliothek.js: die Library liest die Wahl des Medium-Schalters beim Start (TimbreMenue.start) #} {% if not demo and menue_c %}{% endif %} {% endblock %}