/* ============================================================================
 * dashboard-events.css — die Stile des Termin-Bereichs
 * ----------------------------------------------------------------------------
 * ⚠️ DIESE REGELN WURDEN BIS ZUM 02.09.2026 ZUR LAUFZEIT INJIZIERT
 * (Taskwerk #272, Schritt 1).
 *
 * Sechs `document.createElement('style')`-Bloecke in js/ui/dashboard-events.js
 * und js/ui/dashboard-events-extension.js erzeugten sie beim Laden. Fuer jede
 * Volltextsuche ueber css/ waren sie damit UNSICHTBAR: Wer `.pinned-badge`
 * suchte, fand nichts und hielt die Klasse fuer tot.
 *
 * ⚠️ DIE REIHENFOLGE IST TEIL DER MIGRATION. Injizierte Stile haengen an
 * `document.head` und stehen damit HINTER allen <link>-Elementen. Damit die
 * Kaskade gleich bleibt, muss diese Datei als LETZTES Stylesheet der Seite
 * geladen werden — sie steht in dashboard.html entsprechend am Ende.
 *
 * Die Regeln sind WORTWOERTLICH uebernommen, keine einzige ist veraendert.
 * Der Weg auf Tokens ist Schritt 2 und braucht eine Abnahme: In den Bloecken
 * stehen 157 Hex-Literale, und `--tc-highlight` waere auf dem Dashboard je
 * nach Kernsystem des Spielers eine andere Farbe.
 *
 * Drei Schreibweisen mussten dafuer gelesen werden — Backslash-Fortsetzung,
 * Template-String und Konkatenation mit `+`. Wer hier etwas zurueckbaut,
 * findet die Originale im Git-Stand vor diesem Commit.
 * ========================================================================== */


/* ----------------------------------------------------------------
 * Besondere Termine (config{}) — angepinnt, Banner, PayPal-Link
 * frueher: dashboard-events.js, Zeile 2976 (id="config-event-styles")
 * ---------------------------------------------------------------- */
    .pinned-event { border-color:rgba(201,169,89,0.6) !important; box-shadow:0 0 15px rgba(201,169,89,0.12); position:relative; }
    .pinned-event::after { content:""; position:absolute; top:0; left:0; right:0; height:3px; background:linear-gradient(90deg,#c9a959,#e85d30,#c9a959); }
    .pinned-badge { position:absolute; top:-1px; right:15px; background:linear-gradient(135deg,#c9a959,#b8860b); color:#000; font-size:0.55rem; font-weight:700; padding:3px 10px; border-radius:0 0 8px 8px; text-transform:uppercase; letter-spacing:0.5px; z-index:2; }
    .pinned-row { border-color:rgba(201,169,89,0.4) !important; background:linear-gradient(135deg,rgba(201,169,89,0.06),var(--bg-secondary)) !important; position:relative; }
    .card-banner-preview { width:100%; height:80px; background-size:cover; background-position:center; border-top:1px solid rgba(255,255,255,0.05); opacity:0.85; }
    .config-paypal-link { display:inline-flex; align-items:center; gap:6px; margin-top:8px; padding:8px 16px; background:rgba(0,112,243,0.12); border:1px solid rgba(0,112,243,0.3); border-radius:8px; color:#60a5fa; font-size:0.85rem; font-weight:600; text-decoration:none; transition:all 0.2s; }
    .config-paypal-link:hover { background:rgba(0,112,243,0.2); border-color:rgba(0,112,243,0.5); }
    .cfg-edit-section { border-top:1px solid rgba(255,255,255,0.06); margin-top:16px; padding-top:16px; }
    .cfg-edit-toggle { display:flex; align-items:center; gap:8px; cursor:pointer; padding:10px 14px; background:rgba(201,169,89,0.04); border:1px solid rgba(201,169,89,0.12); border-radius:8px; font-weight:600; color:var(--color-gold,#c9a959); font-size:0.92rem; transition:all 0.2s; }
    .cfg-edit-toggle:hover { background:rgba(201,169,89,0.08); border-color:rgba(201,169,89,0.25); }
    .cfg-edit-active { margin-left:auto; font-size:0.7rem; font-weight:600; color:#4ade80; background:rgba(74,222,128,0.1); padding:2px 8px; border-radius:4px; }
    .cfg-edit-group { margin-top:16px; padding:14px; background:rgba(255,255,255,0.02); border:1px solid rgba(255,255,255,0.05); border-radius:8px; }
    .cfg-edit-group-title { font-size:0.88rem; font-weight:600; color:var(--text-primary); margin-bottom:10px; }
    .cfg-edit-group-title .cfg-hint { font-weight:400; font-size:0.75rem; color:var(--text-muted); }
    .cfg-hint { font-weight:400; font-size:0.72rem; color:var(--text-muted); }
    .cfg-edit-check { display:flex; align-items:center; gap:8px; cursor:pointer; padding:8px 0; font-size:0.88rem; color:var(--text-secondary); }
    .cfg-edit-check input[type=checkbox] { width:18px; height:18px; accent-color:var(--color-gold,#c9a959); flex-shrink:0; }
    .cfg-edit-add-btn { background:rgba(201,169,89,0.08); border:1px dashed rgba(201,169,89,0.3); color:var(--color-gold); padding:6px 14px; border-radius:6px; cursor:pointer; font-size:0.82rem; margin-top:6px; transition:all 0.2s; }
    .cfg-edit-add-btn:hover { background:rgba(201,169,89,0.15); border-style:solid; }
    .config-activities-preview { display:flex; flex-wrap:wrap; gap:6px; padding:2px 0; }
    .config-activity-pip { font-size:0.75rem; color:var(--text-secondary); white-space:nowrap; }
    .badge-special { display:inline-block; font-size:0.72rem; padding:2px 8px; border-radius:4px; font-weight:600; letter-spacing:0.02em; }
    .config-pricing-notice { display:flex; align-items:center; gap:10px; padding:12px 16px; background:rgba(201,169,89,0.08); border:1px solid rgba(201,169,89,0.2); border-radius:8px; margin-bottom:16px; font-size:0.88rem; color:var(--text-secondary); }
    .config-pricing-amount { font-size:1.3rem; font-weight:700; color:var(--color-gold,#c9a959); font-family:Cinzel,serif; }
    .config-activity-chip { display:inline-flex; align-items:center; gap:6px; padding:8px 14px; border-radius:8px; border:1px solid var(--border-color,rgba(255,255,255,0.1)); background:var(--bg-secondary,rgba(255,255,255,0.04)); cursor:pointer; transition:all 0.2s; font-size:0.88rem; }
    .config-activity-chip:hover { border-color:var(--color-gold,#c9a959); }
    .config-activity-chip.selected { background:rgba(201,169,89,0.12); border-color:rgba(201,169,89,0.5); color:var(--color-gold,#c9a959); }
    .config-activity-chip .chip-icon { font-size:1.1rem; }
    .config-activity-chip .chip-cap { font-size:0.72rem; opacity:0.6; }
    .config-guest-section { padding:14px 16px; background:var(--bg-secondary,rgba(255,255,255,0.04)); border-radius:8px; margin:14px 0; }
    .config-guest-toggle { display:flex; align-items:center; gap:10px; cursor:pointer; font-size:0.9rem; color:var(--text-primary); }
    .config-guest-toggle input[type=checkbox] { width:18px; height:18px; accent-color:var(--color-gold,#c9a959); }
    .config-guest-inputs { margin-top:10px; display:flex; flex-direction:column; gap:8px; }
    .config-guest-row { display:flex; align-items:center; gap:8px; }
    .config-guest-row input { flex:1; padding:8px 12px; border-radius:6px; border:1px solid var(--border-color,rgba(255,255,255,0.1)); background:var(--bg-primary,#1a1a1a); color:var(--text-primary); font-size:0.88rem; }
    .config-detail-activities { display:flex; flex-direction:column; gap:8px; }
    .config-detail-activity { display:flex; align-items:center; gap:10px; padding:8px 12px; background:var(--bg-secondary,rgba(255,255,255,0.04)); border-radius:8px; }
    .config-detail-activity .act-icon { font-size:1.2rem; }
    .config-detail-activity .act-label { font-weight:600; color:var(--text-primary); font-size:0.9rem; }
    .config-detail-activity .act-note { font-size:0.78rem; color:var(--text-muted); }
    .config-detail-activity .act-count { margin-left:auto; font-size:0.82rem; color:var(--text-secondary); }
    .config-guest-list { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
    .config-guest-chip { display:inline-flex; align-items:center; gap:4px; padding:4px 10px; border-radius:12px; background:rgba(108,52,131,0.12); border:1px solid rgba(108,52,131,0.25); font-size:0.8rem; color:var(--text-secondary); }
    .config-payment-row { display:flex; align-items:center; justify-content:space-between; padding:6px 0; border-bottom:1px solid rgba(255,255,255,0.05); font-size:0.85rem; }
    .config-payment-row:last-child { border-bottom:none; }
    .config-payment-toggle { cursor:pointer; padding:3px 10px; border-radius:12px; font-size:0.78rem; font-weight:600; border:none; transition:all 0.2s; }
    .config-payment-toggle.paid { background:rgba(74,222,128,0.15); color:#4ade80; }
    .config-payment-toggle.unpaid { background:rgba(255,152,0,0.15); color:#ff9800; cursor:pointer; }
    .config-payment-summary { display:flex; align-items:center; gap:12px; padding:10px 14px; margin-top:8px; background:rgba(201,169,89,0.08); border-radius:8px; font-size:0.85rem; color:var(--text-secondary); }
    .config-payment-summary .amount { font-weight:700; color:var(--color-gold,#c9a959); }
  


/* ----------------------------------------------------------------
 * Slot-Marken im Kalender
 * frueher: dashboard-events.js, Zeile 3037 (id="cal-slot-badge-styles")
 * ---------------------------------------------------------------- */
    .cal-slot-badge {
      display: inline-block;
      font-size: 0.62rem;
      padding: 1px 7px;
      border-radius: 4px;
      margin-left: 6px;
      vertical-align: middle;
      font-weight: 600;
      letter-spacing: 0.02em;
      white-space: nowrap;
    }
    .cal-slot-free {
      background: rgba(201, 169, 89, 0.15);
      border: 1px solid rgba(201, 169, 89, 0.35);
      color: #c9a959;
    }
    .cal-slot-full {
      background: rgba(74, 222, 128, 0.1);
      border: 1px solid rgba(74, 222, 128, 0.3);
      color: #4ade80;
    }
  


/* ----------------------------------------------------------------
 * HIER STAND DAS HERO-MODAL  (entfernt 05.09.2026, Taskwerk #578)
 * ----------------------------------------------------------------
 * `#hero-modal` und die `.hero-mc-*`-Familie waren das dritte
 * Terminfenster: ein eigener Zweispalter fuer Special Events mit
 * Plakat, mit eigenem Kopf, eigenem Kreuz und eigenem Schliessweg.
 * Der gemeinsame Terminkopf vom 05.09. erreichte ihn nicht — er
 * haengt an `.modal-content`, die es dort nicht gab.
 *
 * Das Plakat steht jetzt als Abschnitt IM gemeinsamen Fenster
 * (`.detail-plakat` in css/dashboard.css, `_renderPlakat()` in
 * js/ui/dashboard-events-extension.js). Es gibt damit genau einen
 * Weg in die Termindetails.
 *
 * ⚠️ Entfernt wurde die GANZE Familie, nicht nur die Basisregel —
 * eine halb entfernte Klasse ist schlimmer als eine ganze
 * (CLAUDE.md §7k). Die zweite, nie gerufene Fassung in
 * js/ui/modals.js (`showHero` + `.hero-modal-*`) ist am selben Tag
 * mitgefallen.
 * ---------------------------------------------------------------- */


/* ----------------------------------------------------------------
 * AoS-Armeelisten im Termin-Detail
 * frueher: dashboard-events-extension.js, Zeile 7691 (id="aos-list-dashboard-styles")
 * ---------------------------------------------------------------- */
/* AoS Armeelisten im Event-Detail-Modal */
.aos-lists-section h4 { margin-bottom: 10px; }

.aos-list-blind-info, .aos-list-revealed-info {
  display: flex; align-items: center; gap: 8px;
  padding: 10px 14px; margin-bottom: 14px;
  border-radius: 8px; font-size: 0.85rem;
}
.aos-list-blind-info {
  background: rgba(201,169,89,0.06);
  border: 1px solid rgba(201,169,89,0.2);
  color: var(--text-secondary, #b0b0b0);
}
.aos-list-revealed-info {
  background: rgba(74,222,128,0.06);
  border: 1px solid rgba(74,222,128,0.2);
  color: #4ade80;
}

.aos-list-players { display: flex; flex-direction: column; gap: 10px; }

.aos-list-player-row {
  padding: 14px 16px;
  background: rgba(0,0,0,0.15);
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,0.06);
}
.aos-list-player-row.is-me {
  background: rgba(201,169,89,0.05);
  border-color: rgba(201,169,89,0.15);
}

.aos-list-player-header {
  display: flex; align-items: center; justify-content: space-between;
  gap: 10px; flex-wrap: wrap;
}
.aos-list-player-name {
  font-family: "Cinzel", serif;
  font-size: 0.95rem; font-weight: 600;
  color: var(--text-primary, #e0e0e0);
}
.aos-list-status {
  font-size: 0.78rem; padding: 3px 10px;
  border-radius: 6px;
}
.aos-list-status.submitted {
  background: rgba(74,222,128,0.1); color: #4ade80;
}
.aos-list-status.pending {
  background: rgba(255,150,50,0.08); color: #ff9632;
}

/* Meine Einreichung */
.aos-list-my-sub {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid rgba(255,255,255,0.06);
}
.aos-list-sub-info {
  font-size: 0.88rem; color: var(--text-secondary, #b0b0b0);
  margin-bottom: 8px;
}
.aos-list-sub-info strong { color: var(--text-primary, #e0e0e0); }
.aos-list-sub-actions {
  display: flex; gap: 8px; flex-wrap: wrap;
}

/* CTA Button */
.aos-list-cta { margin-top: 10px; }
/* Hier standen bis zum 04.09.2026 .btn-aos-submit, .btn-gold-outline und
 * .btn-danger-outline — drei Eigenbauten fuer das, was die Library als
 * tc-button--emphatic / --secondary / --danger fuehrt. Sie hatten je 6px
 * Polsterung bei 0.82rem, standen also bei rund 28px und damit unter dem
 * Touch-Target aus Heuristik 5; die Farben waren hartkodiertes #c9a959
 * statt --tc-highlight, wechselten das Systemthema also nicht mit.
 *
 * ⚠️ Und .btn-aos-submit trug eine ENDLOSANIMATION (aosListPulse) ohne
 * jeden prefers-reduced-motion-Block. Der Block weiter unten in dieser
 * Datei nennt drei andere Klassen — ein Grep nach "gibt es eine
 * Motion-Regel?" meldet fuer diese Datei also Erfolg, und die eine Regel,
 * die eine braucht, war nicht dabei. Mit dem Umzug auf tc-button--emphatic
 * faellt sie weg; button.css bringt seinen eigenen Motion-Block mit. */

/* Aufgedeckte Gegnerliste */
.aos-list-revealed {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid rgba(255,255,255,0.06);
}
.aos-list-revealed-meta {
  font-size: 0.88rem; color: var(--text-secondary, #b0b0b0);
  margin-bottom: 8px;
}
.aos-list-revealed-meta strong { color: var(--text-primary, #e0e0e0); }
.aos-list-expand {
  margin-top: 8px;
}
.aos-list-expand summary {
  cursor: pointer; font-size: 0.85rem;
  color: var(--color-gold, #c9a959); user-select: none;
  padding: 6px 0;
}
.aos-list-expand summary:hover { text-decoration: underline; }
.aos-list-content {
  margin-top: 8px;
  padding: 14px;
  background: rgba(0,0,0,0.25);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 8px;
  font-family: "Lato", monospace;
  font-size: 0.82rem;
  line-height: 1.6;
  color: var(--text-secondary, #b0b0b0);
  white-space: pre-wrap;
  word-break: break-word;
  max-height: 400px; overflow-y: auto;
}
.aos-list-notes {
  margin-top: 8px; font-size: 0.82rem;
  color: var(--text-muted, #888); font-style: italic;
}

/* Blind/Waiting Status */
.aos-list-blind, .aos-list-waiting {
  margin-top: 8px; font-size: 0.85rem;
  color: var(--text-muted, #888); font-style: italic;
}

/* Verwaltungslink */
.aos-list-manage-link {
  text-align: center; padding-top: 12px;
  margin-top: 12px;
  border-top: 1px solid rgba(255,255,255,0.06);
}
.aos-list-manage-link a {
  color: var(--color-gold, #c9a959);
  text-decoration: none; font-size: 0.82rem;
  opacity: 0.65; transition: opacity 0.15s;
}
.aos-list-manage-link a:hover { opacity: 1; }

/* Lade-Animation */
.aos-list-loading {
  display: flex; align-items: center; gap: 10px;
  padding: 16px; color: var(--text-muted, #888);
  font-size: 0.88rem;
}
.aos-list-spinner {
  width: 16px; height: 16px;
  border: 2px solid rgba(201,169,89,0.2);
  border-top-color: #c9a959;
  border-radius: 50%;
  animation: aosListSpin 0.8s linear infinite;
}
@keyframes aosListSpin { to { transform: rotate(360deg); } }

/* ⚠️ HIER STAND DIE ZWEITE FASSUNG DES EINREICHEN-FENSTERS (#649,
   12.09.2026) — dieselben Klassen wie auf den Listenseiten, nur in Hex
   (#c9a959, #4ade80, rgba(26,82,118,…)) statt in Tokens. Aus dieser
   Doppelung kam #618: Die Kopie kannte die gesperrte Option nicht, sie
   stand mit voller Deckkraft und Zeiger-Cursor da und tat beim Klick
   nichts. Am 11.09. nachgetragen mit dem Vermerk „wer eine aendert,
   aendert beide" — das war die Zwischenloesung, die die naechste neue
   Klasse wieder gebrochen haette.

   Jetzt: css/list-submit.css, von beiden Seiten geladen. */

.al-form { max-width: 100%; }

/* ⚠️ HIER STANDEN DIE REGELN FUER `.aos-list-card-badge` (entfernt
   04.09.2026). Der Kasten sagte dasselbe wie die Marke `tc-termin-marke`
   oben auf der Karte — Tim: „Wir haben jetzt oben und unten Listen
   einsehbar. Brauchen wir das?" Nein.
   Mit den drei Regeln ist auch ihre Keyframe-Animation weg: Eine halb
   entfernte Klasse ist schlimmer als eine ganze (CLAUDE.md §7k). */
@media (prefers-reduced-motion: reduce) {
  .aos-list-player-row.is-open, .aos-list-spinner, .aos-card-badge {
    animation-duration: 0.01ms; animation-iteration-count: 1;
  }
}


/* ----------------------------------------------------------------
 * Anstupser — Karten und System-Aufteilung
 * frueher: dashboard-events-extension.js, Zeile 8268 (id="nudge-styles")
 * ---------------------------------------------------------------- */
    .nudge-modal { display: flex; flex-direction: column; gap: 12px; }
    .nudge-section-label {
      font-size: 0.78rem; font-weight: 600; color: var(--color-gold, #c9a959);
      text-transform: uppercase; letter-spacing: 0.5px; margin: 4px 0 2px;
    }
    .nudge-players-grid {
      display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
      gap: 8px; max-height: 320px; overflow-y: auto; padding: 2px 0;
    }

    /* Clickable Cards */
    .nudge-card {
      display: flex; flex-direction: column; align-items: center; justify-content: center;
      gap: 4px; padding: 14px 10px; min-height: 56px;
      background: var(--bg-secondary, #242424);
      border: 2px solid var(--border-color, #444); border-radius: 10px;
      font-size: 0.9rem; color: var(--text-primary);
      transition: all 0.15s ease; text-align: center;
      user-select: none; -webkit-user-select: none;
    }
    .nudge-card.selectable { cursor: pointer; }
    .nudge-card.selectable:hover {
      border-color: var(--color-gold, #c9a959);
      background: rgba(201,169,89,0.06);
      transform: translateY(-1px);
    }
    .nudge-card.selectable.selected {
      background: rgba(201,169,89,0.15);
      border-color: var(--color-gold, #c9a959);
      box-shadow: 0 0 12px rgba(201,169,89,0.2);
    }
    .nudge-card.selectable.selected .nudge-card-name::after {
      /* ⚠️ IN CSS HEISST DAS ESCAPE `\2705`, NICHT `\u2705` (05.09.2026, von
         Tim gemeldet: „da stehen so komische Nummern"). CSS kennt kein
         `\u`-Praefix — der Backslash maskiert dort nur das `u`, und `2705`
         bleibt als Text stehen. Im Auswahlfeld des Town Cryers stand hinter
         jedem angeklickten Namen woertlich `u2705`.
         Die Schreibweise ist aus JavaScript uebernommen, wo sie richtig
         ist; CLAUDE.md §6 verlangt fuer `content:` ausdruecklich das
         CSS-Escape. Ein Fehler, den man nur im Browser sieht — im
         Quelltext sieht beides gleich richtig aus. */
      content: ' \2705'; font-size: 0.8em;
    }
    .nudge-card.nudged {
      opacity: 0.55; cursor: default; border-style: dashed;
      border-color: rgba(74,222,128,0.3);
    }
    .nudge-card.declined {
      opacity: 0.4; cursor: default; border-style: dashed;
      border-color: rgba(239,68,68,0.3);
    }
    .nudge-card-icon { font-size: 1rem; }
    .nudge-card-name { font-weight: 600; font-size: 0.92rem; line-height: 1.2; }
    .nudge-card-status {
      font-size: 0.7rem; color: var(--text-muted, #888);
    }
    .nudge-card-status.declined { color: #ef4444; }
    .nudge-card-hint {
      font-size: 0.68rem; color: var(--color-gold, #c9a959);
      line-height: 1.2;
    }
    .nudge-actions { display: flex; justify-content: flex-end; gap: 10px; padding-top: 8px; }

    /* Weitere Spieler (details/summary) */
    .nudge-others-details { margin-top: 4px; }
    .nudge-others-summary {
      font-size: 0.82rem; color: var(--text-muted, #888); cursor: pointer;
      padding: 8px 0; user-select: none; list-style: none;
    }
    .nudge-others-summary::-webkit-details-marker { display: none; }
    .nudge-others-summary::before {
      content: '\25B6'; display: inline-block; margin-right: 6px;   /* CSS-Escape, kein \u — siehe oben */
      font-size: 0.7em; transition: transform 0.2s;
    }
    .nudge-others-details[open] > .nudge-others-summary::before {
      transform: rotate(90deg);
    }
    .nudge-others-summary:hover { color: var(--text-primary); }

    /* Nudge-Received Banner (Event Detail) */
    .nudge-received-banner {
      display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px;
      padding: 12px 16px; margin: 0 0 12px;
      background: linear-gradient(135deg, rgba(201,169,89,0.12) 0%, rgba(201,169,89,0.06) 100%);
      border: 1px solid rgba(201,169,89,0.35); border-radius: 10px;
      animation: nudge-banner-pulse 3s ease-in-out infinite;
    }
    .nudge-received-banner.declined {
      background: rgba(239,68,68,0.08); border-color: rgba(239,68,68,0.25);
      animation: none;
    }
    .nudge-received-text { font-size: 0.92rem; color: var(--text-primary); line-height: 1.4; }
    .nudge-received-actions { display: flex; gap: 8px; flex-shrink: 0; }
    @keyframes nudge-banner-pulse {
      0%, 100% { border-color: rgba(201,169,89,0.35); }
      50% { border-color: rgba(201,169,89,0.6); }
    }
    /* CLAUDE.md Paragraph 9 — das Banner pulsiert endlos (infinite), hoert
       also nie von selbst auf. Genau der Fall, den Reduced Motion meint.
       ACHTUNG: Dieser Kommentar steht INNERHALB eines Template-Literals.
       Ein Backtick darin wuerde die Zeichenkette beenden — genau so ist am
       12.08.2026 profile.html kaputtgegangen. Keine Backticks hier. */
    @media (prefers-reduced-motion: reduce) {
      .nudge-banner { animation-duration: 0.01ms; animation-iteration-count: 1; }
    }

    /* Nudge Status Section (unter Teilnehmer) */
    .nudge-status-section h4 {
      font-size: 0.88rem; color: var(--text-secondary, #b0b0b0); margin-bottom: 8px;
    }
    .nudge-status-chips {
      display: flex; flex-wrap: wrap; gap: 8px;
    }
    .nudge-status-chip {
      display: inline-flex; flex-direction: column; align-items: flex-start;
      padding: 8px 14px; border-radius: 8px;
      font-size: 0.88rem; font-weight: 500; line-height: 1.3;
      cursor: default;
    }
    .nudge-status-chip.open {
      background: rgba(201,169,89,0.08); border: 1px solid rgba(201,169,89,0.25);
      color: var(--text-primary);
    }
    .nudge-status-chip.declined {
      background: rgba(239,68,68,0.06); border: 1px dashed rgba(239,68,68,0.25);
      color: var(--text-muted); text-decoration: line-through;
      opacity: 0.6;
    }
    .nudge-status-by {
      font-size: 0.72rem; color: var(--text-muted, #888); font-weight: 400;
      margin-top: 1px;
    }

    /* AoS Match/Intensity Banners — visuell angleichen */
    .aos-match-ready,
    .aos-intensity-match,
    .aos-intensity-mismatch,
    .aos-match-seeking {
      display: flex; align-items: center; justify-content: center; gap: 8px;
      padding: 10px 16px; margin-top: 8px;
      border-radius: 8px; font-size: 0.88rem; text-align: center;
      min-height: 42px;
    }
    .aos-intensity-match,
    .aos-intensity-mismatch {
      margin-top: 6px;
    }
  


/* ----------------------------------------------------------------
 * Kopfgeld-Erzählung am Termin (FEAT-TC01)
 * frueher: dashboard-events-extension.js, Zeile 8418
 * ---------------------------------------------------------------- */
    .event-bounty-narrative {
      display: flex;
      align-items: flex-start;
      gap: 10px;
      padding: 10px 14px;
      margin-bottom: 12px;
      background: linear-gradient(135deg,
        rgba(139, 0, 0, 0.1) 0%,
        rgba(80, 0, 0, 0.15) 50%,
        rgba(139, 0, 0, 0.1) 100%);
      border: 1px solid rgba(178, 34, 34, 0.3);
      border-radius: 8px;
      font-size: 0.82rem;
      color: #c0b090;
      line-height: 1.5;
      animation: ebn-fade-in 0.4s ease;
    }

    .event-bounty-narrative .ebn-icon {
      font-size: 1.2rem;
      flex-shrink: 0;
      margin-top: 1px;
      filter: drop-shadow(0 0 3px rgba(255, 50, 50, 0.4));
    }

    .event-bounty-narrative .ebn-text {
      flex: 1;
      font-style: italic;
    }

    .event-bounty-narrative .ebn-text strong {
      color: #ff6b6b;
      font-style: normal;
    }

    @keyframes ebn-fade-in {
      from { opacity: 0; transform: translateY(-4px); }
      to { opacity: 1; transform: translateY(0); }
    }
  
