{# Timbre-Speicher (Beta, 25.10.2026) unter Quellen – nur für freigeschaltete Konten (`beta` = beta_speicher.stand, sonst fehlt die Karte ganz). Gestaltung nach dem Prototyp .superpowers/sdd/2026-10-25-timbrecloud/prototypen/upload.html: Kopf mit Belegung, drei Leitsätze, Pflicht-Hinweis mit DJ-Schalter (ohne JavaScript nutzbar), danach Ablegen/Wählen, Prüfen, Upload mit Restzeit und Pause (static/beta_upload.js, Texte als JSON #beta-t), unten Beenden mit Rückfrage. Kein Inline-Skript. #} {% from "schalter.html" import schalter %} {# Bereich „Upload“ (Vorgabe Maintainer 27.10.2026): steht IMMER unter Quellen, mit Anker #upload und Sprungmarke oben auf der Seite. (a) freigeschaltet → Karte mit Ablage und „Nach neuer Musik suchen“; (b) Hinweis fehlt → Pflicht-Hinweis in der Karte; (c) nicht freigeschaltet → ehrlicher Satz mit Kontakt; (d) Verwaltung → zusätzlich „Timbre-Speicher für mich einrichten“ (gleicher Ablauf wie Freischalten in der Verwaltung, als zweiter Speicher neben dem eigenen) und Link zur Verwaltung. #} {% set up = t.tspeicher.upload %}

{{ up.titel }}

{% if beta_hinweis == 'selbst' %}

{{ up.selbst_ok }}

{% endif %} {% if beta_selbst_fehler %}{% endif %} {% if not beta %}

{{ up.aus }}

{% if verwaltung %}{% if beta_selbst %}

{{ up.selbst_text.replace("{g}", beta_selbst.vorgabe_gb | string) }}

{% endif %}

{{ up.verwaltung_link }}

{% endif %}
{% endif %} {% if beta %}{% set b = t.tspeicher %}{% set pz = beta.prozent %}

{{ b.eyebrow }}

{{ b.titel }} {{ b.beta }}

{{ b.zustaende[beta.zustand] }}

{% if beta_hinweis == 'beendet' %}

{{ b.loescht }}

{% endif %}

{{ beta.belegt | gb(sprache) }} {{ b.belegt.replace("{b}", "").replace("{k}", beta.kontingent | gb(sprache)) | trim }} {{ b.frei.replace("{f}", beta.frei | gb(sprache)) }}

{{ b.platz.prozent.replace("{p}", pz | string) }} · {{ b.datei_eins if beta.dateien == 1 else b.dateien.replace("{n}", beta.dateien | zahl(sprache)) }}

{% if beta.zustand == 'aktiv' %}{% if beta.voll %}

{{ b.platz.voll }}

{% elif pz >= 80 %}

{{ b.platz.fast_voll.replace("{f}", beta.frei | gb(sprache)) }}

{% endif %}{% endif %}
{% if beta.zustand in ('anlegen', 'wartet') %}

{{ b.einrichten }}

{% elif beta.zustand == 'fehler' %}

{{ b.hakt }}

{% elif beta.zustand == 'entziehen' %}

{{ b.loescht }}

{% else %}{% if not beta.zustimmung %} {# Pflicht-Hinweis vor dem ersten Upload: ohne den Schalter auf OK geht es nicht weiter (auch der Server lehnt ab). Mit JavaScript ohne Neuladen (beta_upload.js) – abgelegte Dateien bleiben gemerkt und werden danach geprüft. #}

{{ b.hinweis_titel }}

    {% for satz in b.hinweis %}
  • {{ satz }}
  • {% endfor %}
{{ schalter(b.hinweis_taste, b.hinweis_schalter, name="ok", id="btk-ok", klasse="btk-legal", hilfe_id="btk-ok-hilfe") }} {% if beta_hinweis == 'zustimmung-fehlt' %}{% else %}

{{ b.hinweis_fehlt }}

{% endif %}
{% endif %}
{# „Nach neuer Musik suchen“ (25.10.2026): Musikordner → Timbre-Speicher → Analyse. Chromium/Edge merken sich den Ordner (File System Access, Handle nur in diesem Browser); Safari/Firefox wählen ihn bei jedem Suchen neu. Pfade bleiben im Browser. #}

{{ b.scan_titel }}

    {% for schritt in b.weg_schritte %}
  1. {{ schritt }}
  2. {% endfor %}

{{ b.hilfe_ohne }}

{{ b.drop_titel }}
{{ b.drop_text }}

{{ b.formate }}

{% if beta.zustimmung %}{% endif %} {% endif %}

{{ b.weg }}

{# Beenden und Trennen nur durch die Verwaltung (Vorgabe Maintainer 25.10.2026); die Kontolöschung löscht den Speicher weiterhin #}

{{ b.verwaltet }}

{% endif %}