{# Startseiten-Szene „Und was ist mit Vinyl?!“ → „Das ist die Antwort.“ (09.11.2026, Zweig startvinyl). Daten, Geometrie und die zwei Schalter (VINYL_LIVE, MITHOEREN_LIVE): startseite_vinyl.py (`vy`), Texte: texte_vinyl.py (`t.vinyl`), CSS: werkzeuge/tokens_vinyl.py. Vier Takte als SVG (viewBox 240 × 264, oben ein Band mit „Beispiel“ und dem Kennzeichen), links → rechts = Zeit. Leistungsbudget (10.11.2026, Zweig sammel1011a): Die Seite trägt nur Frage, Antwort, Kennzeichen-Satz, aria-label und Bildunterschriften – die Bilder (große Platte und die vier Takte samt Band „Beispiel“/„Kommt bald“, rund 18 KB SVG) kommen über GET /start/vinyl (JSON, gzip, lange gecacht) erst, wenn der Abschnitt einen Bildschirm entfernt ist (static/start.js → static/vinyl.js). Kein Skript in der Vorlage. Platten drehen sich und der Scanstrahl läuft per CSS, nur solange der Abschnitt im Bild ist (.an); was mit .vy-r markiert ist, fliegt beim Scrollen ein (--i = Reihenfolge im Takt, --p = Takt). Das Endbild steht in den Teilen (bei reduzierter Bewegung: alles da, still). #} {% from "start_szenen.html" import keychip, enchip with context %} {# Platte von oben: schwarz in jedem Aussehen (Rillen und Glanz weiß, schwach), Etikett in einer Genre-Farbe; der Glanz zeigt das Drehen #} {% macro platte(cx, cy, r, f) %}{% for q in (0.86, 0.72, 0.58) %}{% endfor %}{% endmacro %} {% macro band(V, p) %}{{ V.s.beispiel }}{% if vy.bald[p] %}{{ V.bald }}{% endif %}{% endmacro %} {% macro papier(x, y, groesse=10, fett=false) %} x="{{ x }}" y="{{ y }}" font-family="JetBrains Mono, ui-monospace, monospace" font-size="{{ groesse }}"{% if fett %} font-weight="700"{% endif %} fill="#2a2320"{% endmacro %} {# ---------- 1 · Scannen: Barcode der Hülle → Tracklist A1–B2 fällt heraus, bekannte Tracks haben sofort BPM · Open Key · Energie ---------- #} {% macro takt_scannen(V) %}{% set s = V.s %} {{ platte(104, 46, 42, 2) }} {% for b in vy.barcode %}{% endfor %} GZR 014Sunny Side UpNachtstrom ● {{ s.kennt }} {% for z in vy.zeilen %}{% if z.kennt %}{% else %}{% endif %}{{ z.seite }}{{ z.titel }} {% if z.kennt %}{{ keychip(z.key, 170, z.y + 3, w=30, h=16) }}{{ enchip(z.en, 206, z.y + 3, w=30, h=16, fs=10) }}{% else %}??{% endif %} {% endfor %}{% endmacro %} {# ---------- 2 · Anspielen: unbekannter Track → Nadel auflegen (Arm schwenkt ein), Platte dreht, B1 erkannt ---------- #} {% macro takt_anspielen(V) %}{% set s = V.s %}{% set z = vy.b1 %} {{ platte(82, 82, 68, 4) }} {{ s.hoert }} {{ z.seite }}{{ z.titel }} {{ z.bpm }}{{ keychip(vy.laeuft, 140, 189, w=30, h=18) }}{{ enchip(z.en, 176, 189, w=30, h=18) }} {% endmacro %} {# ---------- 3 · Einräumen: Platte rutscht in Regal 2 · Fach C, ein Etikett vom A4-Bogen (BPM · Open Key · Energie je Track) ---------- #} {% macro takt_einraeumen(V) %}{% set s = V.s %} {% for r in vy.regal_a + vy.regal_b + vy.regal_c %}{% endfor %} ABC {{ s.fach }} {% for r in range(4) %}{% for c in range(2) %}{% endfor %}{% endfor %} Sunny Side Up EPNachtstrom · GZR 014 {% for z in vy.zeilen %}{% set y = 186 + loop.index0 * 12 %}{{ z.seite }}{{ z.bpm }}{{ z.key.ok }}{{ vy.ez[z.en] }}{% endfor %} {% for q in vy.qr %}{% endfor %} {% endmacro %} {# ---------- 4 · Live Vinyl: Platte läuft, Phrasen nach Energie (oben = mehr), „Breakdown in 0:42“, nächste Platte aus dem Regal ---------- #} {% macro takt_live(V) %}{% set s = V.s %}{% set z = vy.b1 %}{% set n = vy.naechste %} {{ platte(40, 40, 36, 4) }}{{ s.laeuft }} · {{ z.seite }}{{ z.titel }} {{ z.bpm }}{{ keychip(vy.laeuft, 118, 45, w=30, h=17) }}{{ enchip(z.en, 154, 45, w=30, h=17) }} {{ s.breakdown }} {% for p in vy.phrasen %}{% endfor %} ↑ {{ s.naechste }}{{ keychip(n.key, 166, 191, w=30, h=17) }}{{ enchip(n.en, 202, 191, w=30, h=17) }} Pendel{{ s.fach_naechste }} {% endmacro %} {# ---------- Die nachgeladenen Teile (GET /start/vinyl): große Platte, die aus der Hülle rutscht, und die vier Takte ---------- #} {% macro held() %}{{ platte(200, 100, 92, 4) }}{% for r in (22, 40, 58, 76) %}{% endfor %} Sunny Side Up EP{% endmacro %} {% macro takt(V, p) %}{% set takte = [takt_scannen, takt_anspielen, takt_einraeumen, takt_live] %}{{ band(V, p) }}{{ takte[p](V) }}{% endmacro %} {# ---------- Der Abschnitt: Frage als Einwurf, Antwort, Kennzeichen, große Platte, vier Takte (Bilder samt Band leer, data-vy-teil) ---------- #} {% macro abschnitt(V) %}

{{ V.frage }}

{{ V.antwort if vy.bald_text else V.antwort_live }}

{{ V.lead }}

{% if vy.bald_text or vy.mithoeren_text %}

{{ V.bald }} {% if vy.bald_text %}{{ V.bald_text }} {% endif %}{% if vy.mithoeren_text %}{{ V.mithoeren_text }}{% endif %}

{% endif %}
    {% for k in V.schritte %}{% set p = loop.index0 %}
  1. 0{{ loop.index }} · {{ k[0] }}

    {{ k[1] }}

    {{ k[2] }}

  2. {% endfor %}
{% endmacro %}