    /* ===================================================
       AURORA DESIGN-SYSTEM – Teal + Brass
       Farbpalette aus home2.jsx (Direction A · Aurora)
    =================================================== */
    :root {
      --top:        #08222A;   /* tiefster Hintergrund */
      --bg:         #0C2B31;   /* Basis-Hintergrund   */
      --lift:       #16484F;   /* Glow-Highlight      */
      --panel:      #123A40;   /* Karten-Panel        */
      --accent:     #CBA24E;   /* Brass / Gold        */
      --accent-lt:  #E8C97C;   /* helles Brass        */
      --teal:       #3AA39B;   /* Teal-Akzent         */
      --teal-dim:   #1E6B68;   /* gedämpftes Teal     */
      --cream:      #EAF2EE;   /* Text hell           */
      --muted:      #7E978F;   /* Text gedämpft       */
      --line:       #23474D;   /* Trennlinien/Borders */
      --btn-ink:    #0A2127;   /* Text auf Gold-Btn   */
      --col:        330px;     /* Inhalts-Spaltenbreite (Tablet-Breakpoint hebt sie an) */
      /* Kolumbianische Flagge (Identitätszeichen) */
      --col-yellow: #fcd116;
      --col-blue:   #003893;
      --col-red:    #ce1126;
    }

    *, *::before, *::after {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
      -webkit-tap-highlight-color: transparent;
    }

    html, body {
      height: 100%;
      overflow: hidden;
    }

    body {
      font-family: 'Manrope', sans-serif;
      background: var(--top);
      color: var(--cream);
      -webkit-font-smoothing: antialiased;
      text-rendering: optimizeLegibility;
    }

    /* ===================================================
       SCREEN-SYSTEM
       Jeder Screen liegt full-screen übereinander.
       Aufbau:  .screen (Hintergrund-Layer, overflow:hidden)
                 ├─ .screen-frame  (dünner Brass-Rahmen, fix)
                 └─ .scroll        (scrollbarer Layer)
                      └─ .content  (min-height:100% → zentriert,
                                    scrollt aber komplett wenn länger)
       Das .content/.scroll-Pattern behebt die alte
       Flexbox-Scroll-Falle (justify-content:center +
       overflow → unterer Inhalt unerreichbar).
    =================================================== */
    .screen {
      position: fixed;
      inset: 0;
      overflow: hidden;
      opacity: 0;
      pointer-events: none;
      transition: opacity 0.45s ease;
      background:
        radial-gradient(130% 70% at 50% -8%, var(--lift) 0%, transparent 52%),
        radial-gradient(120% 55% at 80% 108%, rgba(30,107,104,0.55) 0%, transparent 60%),
        radial-gradient(90% 50% at 15% 70%, rgba(203,162,78,0.12) 0%, transparent 60%),
        var(--top);
    }
    .screen.active { opacity: 1; pointer-events: auto; }

    .screen-frame {
      display: none; /* goldener Screen-Rahmen entfernt (Design-Wunsch) */
    }

    .scroll {
      position: absolute;
      inset: 0;
      overflow-y: auto;
      -webkit-overflow-scrolling: touch;
      z-index: 3;
    }

    .content {
      min-height: 100%;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      padding: calc(72px + env(safe-area-inset-top)) 34px
               calc(40px + env(safe-area-inset-bottom));
    }
    .content.top { justify-content: flex-start; }

    @keyframes breathe {
      0%, 100% { opacity: 0.55; transform: scale(1);    }
      50%      { opacity: 0.95; transform: scale(1.06); }
    }

    /* ===================================================
       LOGO-LOCKUP
    =================================================== */
    .lockup {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 13px;
      position: relative;
    }
    .lockup-glow {
      position: absolute;
      width: 230px;
      height: 120px;
      top: -18px;
      border-radius: 50%;
      background: radial-gradient(closest-side, rgba(203,162,78,0.33), transparent 70%);
      filter: blur(8px);
      pointer-events: none;
      animation: breathe 4s ease-in-out infinite;
    }
    .wordmark {
      font-family: 'Prata', serif;
      font-size: 58px;
      letter-spacing: 8px;
      color: var(--accent-lt);
      line-height: 1;
      padding-left: 8px;
      position: relative;
      text-shadow: 0 2px 24px rgba(203,162,78,0.4);
    }
    .logo-bar {
      width: 150px;
      height: 2px;
      border-radius: 2px;
      background: linear-gradient(90deg, transparent, var(--accent), var(--accent-lt), var(--accent), transparent);
    }
    .tagline {
      font-size: 11px;
      letter-spacing: 5px;
      color: var(--muted);
      font-weight: 600;
      white-space: nowrap;
      text-transform: uppercase;
    }

    .screen-title {
      font-family: 'Prata', serif;
      font-size: 26px;
      letter-spacing: 3px;
      color: var(--accent-lt);
      text-align: center;
      text-shadow: 0 2px 18px rgba(203,162,78,0.35);
    }

    /* ===================================================
       BUTTON-SYSTEM
    =================================================== */
    .btn {
      position: relative;
      overflow: hidden;
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 11px;
      width: 100%;
      max-width: var(--col);
      border: none;
      border-radius: 5px;
      cursor: pointer;
      font-family: 'Manrope', sans-serif;
      color: var(--cream);
      text-decoration: none;
      transition: transform 0.12s ease, box-shadow 0.2s ease, opacity 0.2s ease;
    }
    .btn:active { transform: scale(0.975); }
    .btn svg       { position: relative; z-index: 1; flex-shrink: 0; }
    .btn-label     { position: relative; z-index: 1; }
    .btn-arrow     { position: relative; z-index: 1; font-size: 17px; line-height: 1; }

    .btn-primary {
      height: 62px;
      color: var(--btn-ink);
      background: linear-gradient(180deg, var(--accent-lt), var(--accent) 60%, #B98E3C);
      box-shadow: 0 12px 30px rgba(203,162,78,0.33), inset 0 1px 0 #FFE6A8;
    }
    .btn-primary::before {
      content: "";
      position: absolute;
      top: 0; left: 0; right: 0;
      height: 45%;
      background: linear-gradient(180deg, rgba(255,255,255,0.45), transparent);
      pointer-events: none;
    }
    .btn-primary .btn-label { font-size: 16px; font-weight: 800; letter-spacing: 2px; }

    .btn-ghost {
      height: 56px;
      background: rgba(255,255,255,0.04);
      border: 1px solid var(--line);
      backdrop-filter: blur(4px);
    }
    .btn-ghost .btn-label { font-size: 14px; font-weight: 600; letter-spacing: 0.5px; }

    .btn-about {
      height: 54px;
      background: rgba(203,162,78,0.06);
      border: 1px solid rgba(203,162,78,0.4);
      color: var(--accent-lt);
    }
    .btn-about .btn-label { font-size: 13.5px; font-weight: 700; letter-spacing: 1px; }

    .btn-mini { width: auto; max-width: none; height: auto; padding: 10px 16px; flex-shrink: 0; white-space: nowrap; }
    .btn-mini .btn-label { font-size: 14px; font-weight: 600; }

    /* ===================================================
       SECTION-HEAD  ("CÓMO FUNCIONA" etc.)
    =================================================== */
    .section-head {
      display: flex;
      align-items: center;
      gap: 14px;
      width: 100%;
      max-width: var(--col);
      margin-bottom: 20px;
    }
    .section-head .dash { width: 22px; height: 1px; background: var(--accent); flex-shrink: 0; }
    .section-head .ln   { flex: 1; height: 1px; background: var(--line); }
    .section-head .lbl  {
      font-size: 11px;
      letter-spacing: 5px;
      color: var(--accent-lt);
      font-weight: 700;
      white-space: nowrap;
      text-transform: uppercase;
    }

    /* ===================================================
       TIMELINE  (Cómo funciona – nummerierte Schritte)
    =================================================== */
    .timeline { position: relative; width: 100%; max-width: var(--col); }
    .timeline::before {
      content: "";
      position: absolute;
      left: 13px; top: 8px; bottom: 8px;
      width: 1.5px;
      background: linear-gradient(180deg, var(--accent), var(--teal-dim));
    }
    .timeline ol {
      list-style: none;
      counter-reset: step;
      display: flex;
      flex-direction: column;
      gap: 16px;
    }
    .timeline li {
      counter-increment: step;
      display: flex;
      align-items: flex-start;
      gap: 16px;
      position: relative;
    }
    .timeline .num {
      width: 27px; height: 27px;
      flex-shrink: 0;
      border-radius: 50%;
      background: var(--bg);
      border: 1.5px solid var(--accent);
      color: var(--accent-lt);
      font-family: 'Prata', serif;
      font-size: 14px;
      display: flex;
      align-items: center;
      justify-content: center;
      box-shadow: 0 0 12px rgba(203,162,78,0.33);
    }
    .timeline .num::before { content: counter(step); }
    .timeline .txt {
      font-size: 14.5px;
      line-height: 1.4;
      color: var(--cream);
      font-weight: 500;
      padding-top: 4px;
    }

    /* ===================================================
       HOME-Layout
    =================================================== */
    .home-actions {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 13px;
      width: 100%;
      max-width: var(--col);
      margin-top: 46px;
    }
    .home-howto { width: 100%; max-width: var(--col); margin-top: 42px; }
    .demo-song   { font-style: italic; font-family: 'Prata', serif; }
    .demo-artist { color: var(--muted); }

    /* ===================================================
       SCANNER  –  Fullscreen-Kamera + dunkles Overlay mit "Loch"
    =================================================== */
    /* Scanner-Screen erscheint SOFORT (kein Einblend-Fade): der Kamera-Start
       (getUserMedia + Video-Mount + 30-fps-Decode-Loop) läuft direkt beim
       Öffnen – eine parallel laufende opacity-Transition auf dem Fullscreen-
       Layer verursacht genau dann sichtbares Ruckeln. Das AUSblenden
       (ohne .active) behält den normalen 0.45-s-Fade. */
    #screen-scanner.active { transition-duration: 0s; }

    /* Kamera füllt den ganzen Screen */
    #qr-reader {
      position: absolute;
      inset: 0;
      /* !important überschreibt die Inline-Höhe, die html5-qrcode anhand des
         (querformatigen) Kamera-Seitenverhältnisses setzt – sonst füllt der
         Reader nur den oberen Teil und unten scheint der Screen-Hintergrund
         (grüner Block) durch. */
      width:  100% !important;
      height: 100% !important;
      overflow: hidden;
      z-index: 1;
    }
    #qr-reader video {
      width:  100% !important;
      height: 100% !important;
      object-fit: cover;
      /* Unsichtbar bis der erste ECHTE Frame gerendert ist (scanner.js setzt
         dann .live): die Belichtungs-/Fokus-Rampe des Sensors und der
         Mount-Ruckler bleiben hinter dem dunklen Scan-Overlay verborgen. */
      opacity: 0;
      transition: opacity 0.2s ease;
    }
    #qr-reader video.live { opacity: 1; }
    #qr-reader img            { display: none; }              /* Library-Logo entfernen */
    #qr-shaded-region         { display: none !important; }  /* Library-Maske unterdrücken */

    /* Scan-Fenster = transparentes Loch; der box-shadow malt den dunklen Rand
       (~75% Schwarz) über den gesamten Screen. Der .screen-Container clippt
       den Schatten via overflow:hidden. */
    .scan-window {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      width:  min(70vw, 280px);
      height: min(70vw, 280px);
      border-radius: 18px;
      box-shadow: 0 0 0 100vmax rgba(0, 0, 0, 0.75);
      z-index: 2;
      pointer-events: none;
    }

    /* Eckmarker (Brass/Gold, passend zum Design-System).
       Bündig auf den Ecken des Scan-Fensters (border-radius 18px), größer und
       mit leichtem Glow. drop-shadow folgt der L-Form, nicht dem Bounding-Box. */
    .scan-corner {
      position: absolute;
      width: 40px;
      height: 40px;
      border: 4px solid var(--accent-lt);
      filter: drop-shadow(0 0 6px rgba(232,201,124,0.85))
              drop-shadow(0 0 2px rgba(232,201,124,0.9));
    }
    .scan-corner.tl { top: 0; left: 0;     border-right: none; border-bottom: none; border-top-left-radius: 18px; }
    .scan-corner.tr { top: 0; right: 0;    border-left: none;  border-bottom: none; border-top-right-radius: 18px; }
    .scan-corner.bl { bottom: 0; left: 0;  border-right: none; border-top: none;    border-bottom-left-radius: 18px; }
    .scan-corner.br { bottom: 0; right: 0; border-left: none;  border-top: none;    border-bottom-right-radius: 18px; }

    /* Schließen-Button: weißes X oben rechts, 44×44, kein Rand/Hintergrund */
    .scan-close {
      position: absolute;
      top:   calc(12px + env(safe-area-inset-top));
      right: calc(12px + env(safe-area-inset-right));
      z-index: 4;
      width: 44px;
      height: 44px;
      display: flex;
      align-items: center;
      justify-content: center;
      background: none;
      border: none;
      color: #fff;
      font-size: 28px;
      line-height: 1;
      cursor: pointer;
    }

    /* Fehler-/Statusmeldung über dem Overlay */
    .scanner-msg {
      position: absolute;
      left: 50%;
      bottom: calc(40px + env(safe-area-inset-bottom));
      transform: translateX(-50%);
      z-index: 3;
      width: 86%;
      max-width: 320px;
      text-align: center;
      font-size: 13px;
      letter-spacing: 0.5px;
      color: var(--accent-lt);
    }

    /* ===================================================
       PLAYING  (Song-Details VERSTECKT)
    =================================================== */
    .play-card {
      position: relative;
      overflow: hidden;
      width: 100%;
      max-width: var(--col);
      background: linear-gradient(180deg, var(--panel), var(--bg));
      border: 1px solid rgba(203,162,78,0.33);
      border-radius: 16px;
      padding: 38px 30px 32px;
      text-align: center;
      box-shadow: 0 22px 40px rgba(0,0,0,0.45);
      cursor: pointer;
      -webkit-tap-highlight-color: transparent;
    }
    .play-card:active { transform: scale(0.99); }

    /* Sichtbarer Fokus-Ring für Tastatur/Switch-Control-Nutzer. Die Karten sind
       role="button"-Divs (keine echten <button>, also KEIN UA-Outline), und der
       Reset setzt tap-highlight transparent → ohne diese Regel gäbe es GAR kein
       Fokus-Feedback auf der Haupt-Interaktionsfläche. outline (statt box-shadow)
       wird von overflow:hidden NICHT geclippt; :focus-visible zeigt ihn nur bei
       Tastatur-Fokus, nicht bei Maus/Touch-Tap. */
    .play-card:focus-visible,
    .reveal-card:focus-visible {
      outline: 3px solid var(--accent-lt);
      outline-offset: 3px;
    }

    /* ── Equalizer-Animation ── */
    .equalizer {
      position: relative;
      display: flex;
      align-items: flex-end;
      justify-content: center;
      gap: 6px;
      height: 60px;
      margin-bottom: 26px;
    }
    .eq-bar {
      width: 8px;
      border-radius: 4px;
      transform-origin: bottom;
      background: linear-gradient(180deg, var(--accent-lt), var(--teal-dim));
      animation: eq var(--d) ease-in-out infinite alternate;
    }
    .eq-bar:nth-child(1) { height: 28px; --d: 0.55s; }
    .eq-bar:nth-child(2) { height: 52px; --d: 0.38s; }
    .eq-bar:nth-child(3) { height: 42px; --d: 0.65s; }
    .eq-bar:nth-child(4) { height: 58px; --d: 0.47s; }
    .eq-bar:nth-child(5) { height: 24px; --d: 0.42s; }
    @keyframes eq {
      from { transform: scaleY(0.15); }
      to   { transform: scaleY(1);    }
    }
    /* Pausiert: Equalizer einfrieren als visuelles Feedback */
    .play-card.is-paused .eq-bar {
      animation-play-state: paused;
      transform: scaleY(0.3);
      opacity: 0.5;
    }
    /* Screens werden per opacity (nicht display:none) umgeschaltet → die Eq-
       Animation liefe auf dem unsichtbaren Playing-Screen weiter (unnötige
       Rechenlast). Auf inaktiven Screens einfrieren. */
    .screen:not(.active) .eq-bar { animation-play-state: paused; }

    .playing-status {
      font-size: 11px;
      letter-spacing: 4px;
      color: var(--teal);
      text-transform: uppercase;
      font-weight: 700;
    }
    .playing-question {
      font-family: 'Prata', serif;
      font-size: 22px;
      letter-spacing: 0.5px;
      color: var(--accent-lt);
      margin-top: 12px;
      line-height: 1.3;
    }
    .preview-note {
      margin-top: 16px;
      font-size: 11px;
      letter-spacing: 1px;
      color: var(--accent);
      opacity: 0.85;
    }
    /* Tipp-Hinweis: nur sichtbar, wenn der Auto-Start blockiert ist (.needs-tap).
       Kein Button – dezenter Call-to-Action; die ganze Karte ist tippbar.
       ERSETZT die preview-note-Zeile (gleiche Maße) → kein Layout-Shift. */
    .tap-hint {
      margin-top: 16px;          /* identisch zu .preview-note */
      font-size: 11px;           /* identisch zu .preview-note */
      letter-spacing: 1px;
      font-weight: 700;
      color: var(--accent-lt);
      display: none;
    }
    .play-card.needs-tap .preview-note { display: none; }
    .play-card.needs-tap .tap-hint     { display: block; }
    .play-card.needs-tap {
      border-color: rgba(232,201,124,0.7);
    }
    .dj-hint {
      margin-top: 6px;
      font-size: 10px;
      letter-spacing: 1px;
      color: var(--muted);
    }

    .play-actions {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 12px;
      width: 100%;
      max-width: var(--col);
      margin-top: 26px;
    }

    /* ===================================================
       REVEAL
    =================================================== */
    /* Apple-Attribution-Link (Pflicht bei iTunes-Previews) */
    .reveal-itunes {
      display: inline-block;
      margin-top: 18px;
      font-size: 12px;
      letter-spacing: 0.4px;
      color: var(--accent-lt);
      text-decoration: underline;
      text-underline-offset: 3px;
      opacity: 0.8;
    }
    .reveal-itunes:active { opacity: 1; }

    .reveal-card {
      position: relative;
      overflow: hidden;
      width: 100%;
      max-width: var(--col);
      background: linear-gradient(180deg, var(--panel), var(--bg));
      border: 1px solid rgba(203,162,78,0.4);
      border-radius: 16px;
      padding: 40px 30px 34px;
      text-align: center;
      box-shadow: 0 22px 44px rgba(0,0,0,0.5);
      cursor: pointer;
      -webkit-tap-highlight-color: transparent;
    }
    .reveal-card:active { transform: scale(0.99); }
    .reveal-genre {
      display: inline-block;
      background: var(--accent);
      color: var(--btn-ink);
      font-size: 10px;
      font-weight: 700;
      letter-spacing: 2px;
      padding: 5px 14px;
      border-radius: 3px;
      text-transform: uppercase;
      margin-bottom: 22px;
    }
    .reveal-year {
      font-family: 'Prata', serif;
      font-size: 80px;
      color: var(--accent-lt);
      line-height: 1;
      margin-bottom: 18px;
      text-shadow: 0 2px 26px rgba(203,162,78,0.4);
    }
    .reveal-title {
      font-family: 'Prata', serif;
      font-size: 30px;
      letter-spacing: 0.5px;
      color: var(--cream);
      line-height: 1.15;
      margin-bottom: 8px;
    }
    .reveal-artist {
      font-size: 13px;
      color: var(--muted);
      line-height: 1.4;
    }
    .reveal-actions {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 12px;
      width: 100%;
      max-width: var(--col);
      margin-top: 30px;
    }

    /* ── Fun-Facts-Panel ──
       Geschlossen: max-height 0. Offen (.open): aufgeklappt.
       Der äußere .scroll-Layer übernimmt das Scrollen, daher
       kann max-height großzügig sein ohne Inhalt zu klippen.   */
    .about-panel {
      width: 100%;
      max-width: var(--col);
      background: rgba(255,255,255,0.03);
      border: 1px solid var(--line);
      border-radius: 16px;
      overflow: hidden;
      max-height: 0;
      opacity: 0;
      transform: translateY(-8px);
      padding: 0 22px;
      margin-top: 14px;
      transition: max-height 0.3s ease, opacity 0.3s ease,
                  transform 0.3s ease, padding 0.3s ease;
    }
    .about-panel.open {
      max-height: 1400px;
      opacity: 1;
      transform: translateY(0);
      padding: 22px;
      transition: max-height 0.5s ease, opacity 0.4s ease,
                  transform 0.4s ease, padding 0.4s ease;
    }
    .about-title {
      font-family: 'Prata', serif;
      font-size: 18px;
      letter-spacing: 1px;
      color: var(--accent-lt);
      margin-bottom: 16px;
      text-align: center;
    }
    .about-facts {
      list-style: none;
      display: flex;
      flex-direction: column;
      gap: 12px;
      margin-bottom: 16px;
      text-align: left;
    }
    .about-facts li {
      position: relative;
      padding-left: 20px;
      font-size: 13px;
      line-height: 1.6;
      color: rgba(234,242,238,0.82);
      overflow-wrap: anywhere;
    }
    .about-facts li::before {
      content: '●';
      position: absolute;
      left: 0; top: 1px;
      color: var(--accent);
      font-size: 10px;
    }

    /* ===================================================
       TEST-SEITE  (?test=true)
    =================================================== */
    .test-topbar {
      display: flex;
      align-items: center;
      gap: 16px;
      width: 100%;
      margin-bottom: 6px;
    }
    .test-topbar h2 {
      font-family: 'Prata', serif;
      font-size: 20px;
      letter-spacing: 2px;
      color: var(--accent-lt);
    }
    .test-info {
      width: 100%;
      background: rgba(255,255,255,0.03);
      border: 1px solid var(--line);
      border-left: 4px solid var(--accent);
      border-radius: 10px;
      padding: 16px 18px;
      font-size: 12px;
      line-height: 1.55;
      color: rgba(234,242,238,0.75);
      margin-top: 16px;
    }
    .test-info .info-url { color: var(--accent-lt); word-break: break-all; font-weight: 700; }
    .test-info code {
      background: rgba(255,255,255,0.08);
      padding: 2px 6px;
      border-radius: 4px;
      color: var(--teal);
    }
    .test-grid {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 16px;
      width: 100%;
      margin-top: 18px;
    }
    @media (max-width: 640px) { .test-grid { grid-template-columns: 1fr; } }
    .test-card {
      background: rgba(255,255,255,0.03);
      border: 1px solid var(--line);
      border-radius: 12px;
      padding: 18px;
      text-align: center;
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 10px;
    }
    .test-qr {
      background: #fff;
      padding: 10px;
      border-radius: 8px;
      width: 200px;
      height: 200px;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    .test-qr img, .test-qr canvas { display: block; width: 180px; height: 180px; }
    .test-card .tc-title { font-family: 'Prata', serif; font-size: 18px; color: var(--accent-lt); }
    .test-card .tc-meta  { font-size: 12px; color: var(--muted); }
    .test-card .tc-id    { font-size: 11px; color: var(--accent); letter-spacing: 2px; }
    .test-card .tc-url   { font-size: 9px; color: rgba(234,242,238,0.35); word-break: break-all; line-height: 1.3; }

    /* ===================================================
       SETTINGS  (VARIACIONES Y CONFIGURACIONES)
    =================================================== */
    /* Langer Titel → Zurück-Button in eigene Zeile, Titel volle Breite darunter */
    #screen-settings .test-topbar { flex-wrap: wrap; }
    #screen-settings .test-topbar h2 { flex-basis: 100%; }
    .settings-list {
      display: flex;
      flex-direction: column;
      gap: 10px;
      width: 100%;
      margin-top: 18px;
    }
    .settings-row {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      padding: 16px 18px;
      background: rgba(255,255,255,0.03);
      border: 1px solid var(--line);
      border-radius: 12px;
      text-decoration: none;
      color: var(--cream);
      transition: background 0.15s ease, border-color 0.15s ease;
    }
    .settings-row:active { background: rgba(255,255,255,0.06); }
    .settings-row-label { font-size: 15px; font-weight: 600; letter-spacing: 0.3px; }
    .settings-chevron   { font-size: 20px; line-height: 1; color: var(--accent-lt); }

    .social-row {
      display: flex;
      align-items: center;
      gap: 14px;
      margin-top: 14px;
    }
    .social-link {
      display: flex;
      align-items: center;
      justify-content: center;
      width: 48px;
      height: 48px;
      border-radius: 12px;
      background: rgba(255,255,255,0.03);
      border: 1px solid var(--line);
      color: var(--accent-lt);
      transition: background 0.15s ease;
    }
    .social-link:active { background: rgba(255,255,255,0.07); }

    .lang-pills {
      display: flex;
      gap: 12px;
      margin-top: 14px;
    }
    .lang-pill {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      min-height: 44px;      /* Touch-Target ≥44px (A11y) */
      padding: 10px 18px;
      border-radius: 999px;
      border: 1px solid var(--accent);
      background: transparent;
      font-family: 'Manrope', sans-serif;
      font-size: 14px;
      font-weight: 600;
      letter-spacing: 0.5px;
      color: var(--accent-lt);
      cursor: pointer;
    }
    .lang-pill.active {
      background: linear-gradient(180deg, var(--accent-lt), var(--accent));
      color: var(--btn-ink);
      border-color: transparent;
    }
    .lang-pill.disabled {
      opacity: 0.45;
      border-color: var(--line);
      color: var(--muted);
      cursor: not-allowed;
      pointer-events: none;
    }
    .lang-soon {
      font-style: normal;
      font-size: 10px;
      letter-spacing: 1px;
      text-transform: uppercase;
      padding: 2px 6px;
      border-radius: 6px;
      background: rgba(255,255,255,0.08);
      color: var(--accent-lt);
    }

    /* ===================================================
       iOS-INSTALL-BANNER
    =================================================== */
    #install-banner {
      position: fixed;
      left: 12px;
      right: 12px;
      bottom: calc(12px + env(safe-area-inset-bottom));
      z-index: 50;
      display: none;
      align-items: center;
      gap: 12px;
      background: linear-gradient(180deg, var(--accent-lt), var(--accent));
      color: var(--btn-ink);
      border-radius: 12px;
      padding: 12px 14px;
      box-shadow: 0 8px 28px rgba(0,0,0,0.45);
      font-size: 12px;
      line-height: 1.4;
    }
    #install-banner.show { display: flex; }
    #install-banner .ib-text { flex: 1; font-weight: 700; }
    #install-banner .ib-close {
      background: rgba(10,10,10,0.15);
      border: none;
      color: var(--btn-ink);
      font-size: 14px;
      width: 28px;
      height: 28px;
      border-radius: 8px;
      cursor: pointer;
      flex-shrink: 0;
    }

    /* ===================================================
       TOAST  –  kurzer Hinweis (z.B. „sin conexión")
    =================================================== */
    #toast {
      position: fixed;
      left: 50%;
      bottom: calc(28px + env(safe-area-inset-bottom));
      transform: translateX(-50%) translateY(12px);
      z-index: 60;
      max-width: 88%;
      text-align: center;
      background: rgba(10,10,10,0.92);
      color: var(--paper, #f4ede4);
      border: 1px solid rgba(255,255,255,0.12);
      border-radius: 12px;
      padding: 12px 18px;
      font-size: 13px;
      line-height: 1.4;
      box-shadow: 0 8px 28px rgba(0,0,0,0.5);
      opacity: 0;
      pointer-events: none;
      transition: opacity 0.25s ease, transform 0.25s ease;
    }
    #toast.show {
      opacity: 1;
      transform: translateX(-50%) translateY(0);
    }

    /* ===================================================
       RESPONSIVE  –  Kleine Bildschirme
    =================================================== */
    @media (max-height: 700px) {
      .wordmark      { font-size: 46px; letter-spacing: 6px; }
      .home-actions  { margin-top: 30px; }
      .home-howto    { margin-top: 28px; }
      .timeline ol   { gap: 12px; }
      .content       { padding-top: calc(48px + env(safe-area-inset-top)); }
      .reveal-year   { font-size: 64px; }
    }

    /* ===================================================
       REDUCED MOTION  (Barrierefreiheit)
       Nutzer mit „Bewegung reduzieren" (iOS/Android/OS) bekommen keine
       Dauer-Animationen mehr: der Equalizer und der atmende Logo-Glow laufen
       nicht endlos, Fades/Scale-Übergänge sind praktisch sofort. Die statische
       ZUSTANDS-Unterscheidung bleibt erhalten: spielend = volle Balken,
       pausiert = kurz + gedimmt (via .is-paused, das ohne Animation greift).
    =================================================== */
    @media (prefers-reduced-motion: reduce) {
      *, *::before, *::after {
        animation-duration: 0.001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.001ms !important;
        scroll-behavior: auto !important;
      }
      /* Glow nicht dauerhaft im hellsten Frame stehen lassen → ruhiger Wert. */
      .lockup-glow { opacity: 0.6; }
    }

    /* ===================================================
       TABLET  –  iPad & größer (Audit #8)
       Ohne diesen Block stünde die 330px-Spalte als schmale Insel in einer
       großen leeren Fläche (wirkt wie ein aufgeblasenes Handy). Hier wird die
       Inhalts-Spalte (--col) verbreitert und die Display-Typografie kohärent
       hochskaliert → wirkt fürs Tablet gemacht statt verloren.
       Gate: min-width 768px UND min-height 700px → erfasst iPads in BEIDEN
       Ausrichtungen (Hoch 768×1024, Quer 1024×768), schließt aber Landscape-
       Phones aus (kurze Höhe → dort greift weiter die max-height:700-Regel;
       durch die 700er-Grenze keine Überschneidung).
    =================================================== */
    @media (min-width: 768px) and (min-height: 700px) {
      :root { --col: 440px; }
      .wordmark      { font-size: 82px; letter-spacing: 12px; }
      .logo-bar      { width: 200px; }
      .tagline       { font-size: 13px; letter-spacing: 6px; }
      .screen-title  { font-size: 32px; }
      .btn-primary   { height: 68px; }
      .btn-primary .btn-label { font-size: 18px; }
      .btn-ghost     { height: 62px; }
      .btn-ghost .btn-label   { font-size: 15px; }
      .btn-about     { height: 60px; }
      .play-card     { padding: 48px 40px 42px; }
      .reveal-card   { padding: 50px 40px 44px; }
      .reveal-year   { font-size: 104px; }
      .content       { padding-top: calc(72px + env(safe-area-inset-top)); }
    }
