/* ============================================================================
   App components: dashboard, tool tiles, tool output, job tracker, settings.
   ============================================================================ */

/* ── Dashboard ───────────────────────────────────────────────────────────────*/
.greeting {
  font-family: var(--font-title);
  font-size: 13px; font-weight: 500;
  color: var(--text-faint);
  margin-bottom: 4px;
}
/* Wird an zwei Stellen mit UNTERSCHIEDLICHER Rolle verwendet: auf Home als
   kleines Label ueber der fetten .greeting-mission-Zeile, auf der Lehrperson-
   Seite (teacher-dash-head) direkt als grosse Ueberschrift. Deshalb hier
   .teacher-dash-head .greeting als eigener Override, statt eine globale
   Klasse fuer zwei widerspruechliche Rollen zu ueberladen. */
.teacher-dash-head .greeting {
  font-size: 22px; font-weight: 800; letter-spacing: -0.01em;
  color: var(--text); margin-bottom: 4px;
}
.greeting-sub {
  font-size: 13.5px; color: var(--text-faint); margin-bottom: 22px;
}

/* tool tiles grid */
.tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px; }
.tile {
  padding: 18px 18px 14px 18px; cursor: pointer; position: relative;
  transition: transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);
  opacity: 0; animation: fadeUp 0.45s ease forwards;
}
.tile:nth-child(1) { animation-delay: 0.05s; }
.tile:nth-child(2) { animation-delay: 0.10s; }
.tile:nth-child(3) { animation-delay: 0.15s; }
.tile:nth-child(4) { animation-delay: 0.20s; }
.tile:nth-child(n+5) { animation-delay: 0.24s; }
.tile:hover {
  transform: translateY(-2px);
  box-shadow: 0 2px 4px rgba(24,24,27,0.05), 0 10px 24px rgba(24,24,27,0.08);
}
.tile-icon {
  width: 38px; height: 38px; border-radius: var(--r-small);
  background: var(--bg-second); border: none;
  display: flex; align-items: center; justify-content: center;
  margin-bottom: 12px; color: var(--text-muted);
  transition: transform var(--dur-base) var(--ease-out), background var(--dur-base) var(--ease-out);
}
.tile:hover .tile-icon { transform: scale(1.06); background: var(--card-border); }
.tile-icon svg { width: 19px; height: 19px; }

/* Farbvarianten: Coaches=Blau (Standard), Werkzeuge=Violett, Generierungen=Amber
   - jetzt an die echten Marken-Tokens angeglichen (vorher hartkodiertes
   Lila 151,117,250, das nicht zu --violet #6B7A99 passte - Rest von vor
   dem Blau-Rebrand). */
.tile-icon.violet { background: rgba(107,122,153,0.1); color: var(--violet-text); }
.tile:hover .tile-icon.violet { background: rgba(107,122,153,0.18); }
.tile-icon.amber { background: #FEF3E8; color: var(--amber-text); }
.tile:hover .tile-icon.amber { background: #FCE4C8; }
.tile h3 { font-family: var(--font-title); font-weight: 700; font-size: 13px; margin-bottom: 5px; }
.tile p { font-size: 11px; color: var(--text-faint); }

/* ── Tool pages ──────────────────────────────────────────────────────────────*/
.tool-head { margin-bottom: 24px; padding-bottom: 20px; border-bottom: 1px solid var(--card-border); }
.tool-head .tool-title {
  font-family: var(--font-title);
  font-size: 22px; font-weight: 800;
  letter-spacing: -0.01em; margin-bottom: 4px;
}
.tool-head p { color: var(--text-faint); font-size: 13px; }

.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip {
  padding: 8px 14px; border-radius: var(--r-pill);
  background: var(--bg-second); border: 1px solid var(--card-border);
  font-size: 12.5px; cursor: pointer; transition: transform 150ms ease, border-color 150ms ease, background 150ms ease, color 150ms ease;
  color: var(--text-muted);
}

/* ===== Toggle-Switch (Ein/Aus), z.B. Zeitanzeige-Einstellung (1.5) ===== */
.toggle-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.toggle-row .field-label { margin: 0; }
.switch { position: relative; display: inline-block; width: 40px; height: 22px; flex-shrink: 0; }
.switch input { opacity: 0; width: 0; height: 0; }
.switch-slider { position: absolute; cursor: pointer; inset: 0; background: var(--card-border); border-radius: 999px; transition: background 150ms ease; }
.switch-slider::before { content: ''; position: absolute; width: 16px; height: 16px; left: 3px; top: 3px; background: #fff; border-radius: 50%; transition: transform 150ms ease; }
.switch input:checked + .switch-slider { background: var(--gold); }
.switch input:checked + .switch-slider::before { transform: translateX(18px); }
.chip:hover { border-color: rgba(17,17,17, 0.16); transform: translateY(-1px); }
.chip:active { transform: scale(0.95); }
.chip.selected { background: rgba(37,99,235, 0.08); border-color: var(--gold); color: var(--gold-text); }

/* Chip-Sheet-Auslöser: standardmässig versteckt (Desktop behält die
   normalen Chips), auf schmalen Bildschirmen ersetzt er die Chip-Reihe
   durch einen Knopf, der die ziehbare Bottom-Sheet öffnet. */
.chip-sheet-trigger {
  display: none; width: 100%; align-items: center; justify-content: space-between;
  padding: 12px 16px; border-radius: var(--r-card);
  background: var(--bg-second); border: 1px solid var(--card-border);
  font-size: 14px; color: var(--text); cursor: pointer;
}
.chip-sheet-trigger:active { transform: scale(0.98); }
@media (max-width: 640px) {
  .chips { display: none; }
  .chip-sheet-trigger { display: flex; }
}

/* Ziehbare Bottom-Sheet (Mobile Chip-Auswahl) */
.sheet-overlay {
  position: fixed; inset: 0; background: rgba(17,17,17,0.4);
  z-index: 300; opacity: 0; pointer-events: none;
  transition: opacity 200ms ease;
}
.sheet-overlay.open { opacity: 1; pointer-events: auto; }
.bottom-sheet {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 301;
  background: var(--card-bg); border-radius: 20px 20px 0 0;
  padding: 10px 20px max(28px, env(safe-area-inset-bottom));
  box-shadow: 0 -8px 30px rgba(17,17,17,0.15);
  will-change: transform;
}
.bottom-sheet.hidden { display: none; }
.bottom-sheet-handle {
  width: 36px; height: 4px; border-radius: 2px;
  background: var(--card-border); margin: 0 auto 18px; cursor: grab; touch-action: none;
}
.bottom-sheet-title { font-size: 13px; font-weight: 600; color: var(--text-faint); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 14px; }
.bottom-sheet-option {
  padding: 15px 4px; font-size: 16px; border-bottom: 1px solid var(--card-border);
  color: var(--text); cursor: pointer;
}
.bottom-sheet-option:last-child { border-bottom: none; }
.bottom-sheet-option.selected { color: var(--gold-text); font-weight: 600; }

/* AI result */
.result-card { margin-top: 18px; }
.result-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.result-actions { display: flex; gap: 8px; }
.result-body { white-space: pre-wrap; font-size: 13.5px; line-height: 1.65; color: var(--text); }
.result-body.fade-in-result { animation: fadeUp 0.4s ease; }
.result-empty { text-align: center; padding: 30px 0; color: var(--text-muted); }
.result-empty .icon { font-size: 30px; margin-bottom: 8px; opacity: 0.5; }

/* ── Job Tracker ─────────────────────────────────────────────────────────────*/
.tracker-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }

/* ===== Job Tracker: Header, Tabs, schwebender Hinzufügen-Button (Mockup-Design) ===== */
#page-tracker { padding-bottom: 90px; position: relative; }
@media (max-width: 480px) {
  /* Bunte Farbverlaeufe pro Seite entfernt: widersprachen dem eigenen
     Designsystem ("keine zufaelligen Farbverlaeufe", "nicht ganze Bereiche
     einfaerben") und wirkten mehr nach KI-generiertem Wow-Effekt als nach
     ruhigem, aufgeraeumtem Produkt. */
}
.tracker-h2 { font-size: 24px; font-weight: 800; letter-spacing: -0.01em; color: var(--text); margin: 0; }
.tracker-sub { font-size: 13.5px; color: var(--text-faint); margin: 3px 0 22px; }
/* Gleiches Pillen-Muster wie .bib-tabs (Bibliothek) - ein Tab-Stil app-weit
   statt zweier unterschiedlicher (Konsistenz statt Einzelanfertigung). */
.tracker-tabs { display: flex; gap: 4px; margin-bottom: 20px; background: var(--bg-second); padding: 4px; border-radius: var(--r-button); width: fit-content; }
.tracker-tab {
  font-size: 13px; font-weight: 600; color: var(--text-muted); padding: 9px 16px;
  border-radius: var(--r-small); cursor: pointer;
  transition: background var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);
}
.tracker-tab:hover { color: var(--text); }
.tracker-tab.selected { background: var(--card-bg); color: var(--text); box-shadow: 0 1px 2px rgba(24,24,27,0.06), 0 2px 6px rgba(24,24,27,0.05); }
.tracker-ministat-row { display: none; }
@media (max-width: 480px) {
  .tracker-ministat-row { display: flex; gap: 10px; margin-bottom: 14px; }
  .tracker-ministat { flex: 1; background: var(--card-bg); border: none; border-radius: var(--r-card); padding: 12px; text-align: center; box-shadow: 0 1px 2px rgba(24,24,27,0.04), 0 4px 10px rgba(24,24,27,0.04); }
  .tracker-ministat-num { font-size: 19px; font-weight: 800; }
  .tracker-ministat-label { font-size: 11px; color: var(--text-faint); margin-top: 2px; }
  .tracker-tabs {
    width: auto; gap: 6px; overflow-x: auto; -webkit-overflow-scrolling: touch;
    margin-left: -20px; margin-right: -20px; padding: 4px 20px; scrollbar-width: none;
  }
  .tracker-tabs::-webkit-scrollbar { display: none; }
  .tracker-tab { flex-shrink: 0; }
}
.tracker-fab {
  position: fixed; bottom: 28px; right: 28px; z-index: 5;
  display: flex; align-items: center; gap: 8px;
  background: var(--gold); color: var(--gold-ink); border: none;
  font: 700 14px var(--font-body); padding: 12px 20px; border-radius: var(--r-card);
  cursor: pointer; box-shadow: 0 4px 14px rgba(37,99,235,0.28);
  transition: background var(--dur-base) var(--ease-out), transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);
}
.tracker-fab:hover { background: var(--gold-hover); transform: translateY(-2px); box-shadow: 0 8px 20px rgba(37,99,235,0.32); }
.tracker-fab:active { transform: translateY(0) scale(0.97); }
@media (max-width: 640px) {
  .tracker-fab span { display: none; }
  .tracker-fab { padding: 14px; border-radius: 50%; bottom: 84px; }
}
.app-card {
  padding: 16px; margin-bottom: 10px;
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
}
.app-card .a-info { min-width: 0; }
.app-card .a-company { font-weight: 600; font-size: 14px; }
.app-card .a-position { font-size: 12.5px; color: var(--text-muted); }
.app-card .a-meta { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.app-card .a-date { font-size: 11px; color: var(--text-muted); }

.status-badge { font-size: 11px; padding: 3px 10px; border-radius: var(--r-pill); font-weight: 500; }
.status-applied   { background: rgba(107, 116, 128, 0.12); color: #9aa3c0; }
.status-interview { background: rgba(217, 119, 6, 0.1); color: var(--amber-text); }
.status-offer     { background: rgba(22, 163, 74, 0.1); color: var(--green); }
.status-rejected  { background: rgba(220, 38, 38, 0.1); color: var(--red); }

.empty-state { text-align: center; padding: 36px 20px; color: var(--text-muted); background: var(--bg-second); border-radius: var(--r-card); border: 1.5px dashed var(--card-border); }

/* ── Settings ────────────────────────────────────────────────────────────────*/
.settings-section { margin-bottom: 26px; overflow: hidden; }
.settings-section > .section-title { margin-bottom: 0; padding: 16px 20px 12px; }
.settings-icon-title { display: flex; align-items: center; gap: 9px; color: var(--text); }
.settings-icon-title svg { color: var(--text-secondary); flex-shrink: 0; }
.settings-danger-section .settings-icon-title svg { color: var(--red); }
.set-row {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 14px 4px;
}
.set-row + .set-row { margin-top: 2px; }
.set-row .set-label { font-size: 13.5px; }
.set-row .set-value { font-size: 13px; color: var(--text-faint); }
.set-row .set-control { display: flex; align-items: center; gap: 10px; }

/* toggle switch (13.6) */
.toggle { width: 36px; height: 19px; border-radius: var(--r-pill); background: var(--text-faint);
  position: relative; cursor: pointer; transition: background 150ms; flex-shrink: 0; }
.toggle::after { content: ''; position: absolute; top: 2px; left: 2px; width: 15px; height: 15px;
  border-radius: 50%; background: #fff; transition: transform 150ms; }
.toggle.on { background: var(--gold); }
.toggle.on::after { transform: translateX(17px); }

.select-sm { width: auto; min-width: 130px; height: 38px; }

/* ── Modal ───────────────────────────────────────────────────────────────────*/
.modal-overlay {
  position: fixed; inset: 0; z-index: 100; display: none;
  align-items: center; justify-content: center; padding: 20px;
  background: rgba(15, 23, 42, 0.4);
}
.modal-overlay.open { display: flex; }

/* ── Teilbarer Erfolgs-Moment ────────────────────────────────────────────── */
.celebrate-overlay {
  position: fixed; inset: 0; z-index: 110; display: none;
  align-items: flex-end; justify-content: center;
  background: rgba(15, 23, 42, 0.35);
}
.celebrate-overlay.open { display: flex; }
.celebrate-confetti { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.celebrate-card {
  position: relative; width: 100%; max-width: 420px;
  background: var(--card-bg); border-radius: var(--r-card) 20px 0 0;
  padding: 32px 24px 28px; text-align: center;
  box-shadow: 0 -8px 30px rgba(0,0,0,0.18);
  animation: celebrateCardIn 450ms cubic-bezier(0.22,1,0.36,1);
}
@media (min-width: 560px) {
  .celebrate-overlay { align-items: center; }
  .celebrate-card { border-radius: var(--r-card); }
}
@keyframes celebrateCardIn {
  from { transform: translateY(40px); opacity: 0; }
  to { transform: translateY(0); opacity: 1; }
}
.celebrate-icon {
  width: 56px; height: 56px; border-radius: 50%;
  background: var(--gold); color: var(--gold-ink);
  display: flex; align-items: center; justify-content: center;
  margin: 0 auto 16px;
}
.celebrate-icon-big { background: var(--amber); }
.celebrate-title { font-family: var(--font-title); font-weight: 700; font-size: 20px; color: var(--text); margin-bottom: 6px; }
.celebrate-sub { font-size: 14px; color: var(--text-muted); line-height: 1.55; margin-bottom: 22px; }
.celebrate-actions { display: flex; gap: 10px; }
.celebrate-actions .btn { flex: 1; }

.celebrate-sheet {
  position: fixed; left: 0; right: 0; bottom: -260px; z-index: 111;
  background: var(--card-bg); border-radius: var(--r-card) 20px 0 0;
  padding: 18px 20px 26px; box-shadow: 0 -8px 24px rgba(0,0,0,0.15);
  transition: bottom 320ms cubic-bezier(0.22,1,0.36,1);
  max-width: 420px; margin: 0 auto;
}
.celebrate-sheet.open { bottom: 0; }
.celebrate-sheet-label { font-size: 12px; color: var(--text-muted); text-align: center; margin-bottom: 14px; }
.celebrate-sheet-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.celebrate-sheet-item {
  display: flex; flex-direction: column; align-items: center; gap: 6px;
  background: none; border: none; cursor: pointer; text-decoration: none;
  font-size: 11px; color: var(--text-muted); font-family: var(--font-body);
}
.celebrate-sheet-dot {
  width: 40px; height: 40px; border-radius: 50%; color: #fff;
  display: flex; align-items: center; justify-content: center; font-weight: 700;
}

.modal { width: 100%; max-width: 420px; max-height: 88vh; overflow-y: auto; }
.modal h2 { font-family: var(--font-title); font-weight: 800; font-size: 19px; margin-bottom: 16px; }
.modal { border-radius: 32px; }
.modal-topbar { border-radius: 32px 32px 0 0; }
.modal-actions { display: flex; gap: 10px; margin-top: 18px; }
.modal-actions .btn { flex: 1; }

.upgrade-plan-desc { font-size: 12px; color: var(--text-muted); margin: 3px 0 16px; }

/* ══════════════════ Paywall (Upgrade-Modal): eigene Buehne in Stellio Blue ══ */
/* Bewusst anders als der Rest der App (beige): tiefer Blau-Verlauf, schwebende
   Lichtkugeln, Glas-Karten, weisse Schrift und ein leuchtender Knopf - damit man
   merkt, dass man auf der Paywall ist. Alles ist auf #upgrade-modal begrenzt.
   Aufbau: .pw-orbs (Licht, dekorativ) + .pw-scroll (scrollt) + .pw-cta-bar
   (Knopf + Verlaengerungszeile, bleibt immer unten sichtbar - auch auf dem Handy).
   Desktop: grosses Panel ueber abgedunkeltem, unscharfem Hintergrund.
   Handy (<= 560px): Vollbild-Sheet, das von unten hereinfaehrt.
   Bewegung nur ueber transform/opacity; Ausgangszustaende stehen nur in den
   Keyframes, damit bei prefers-reduced-motion alles sofort fertig dasteht. */
#upgrade-modal {
  --pw-navy: #0B1B4D;
  --pw-deep: #0F2A7A;
  --pw-blue: #2563EB;
  --pw-royal: #1D4ED8;
  --pw-sky: #7DD3FC;
  --pw-sky-soft: #BAE6FD;
  --pw-cyan: #38BDF8;
  --pw-text: #FFFFFF;
  --pw-text-2: rgba(255, 255, 255, 0.88);
  --pw-glass: rgba(255, 255, 255, 0.12);
  --pw-glass-line: rgba(255, 255, 255, 0.26);
  --pw-ink-glass: rgba(6, 16, 52, 0.5);
  --pw-spring: cubic-bezier(0.34, 1.4, 0.64, 1);
}
#upgrade-modal.modal-overlay {
  background: rgba(3, 8, 28, 0.74);
  -webkit-backdrop-filter: blur(10px) saturate(115%);
  backdrop-filter: blur(10px) saturate(115%);
}
/* Nur der Hintergrund blendet ein (opacity am Overlay wuerde das Panel mit ausblenden) */
#upgrade-modal.open { animation: pw-dim 260ms ease-out both; }

#upgrade-modal .pw-modal {
  position: relative; isolation: isolate;
  width: 100%; max-width: 600px; max-height: min(92vh, 920px);
  display: flex; flex-direction: column; overflow: hidden;
  color: var(--pw-text); border-radius: 32px;
  background: linear-gradient(172deg, var(--pw-navy) 0%, var(--pw-deep) 34%, #1A43BE 70%, var(--pw-royal) 100%);
  border: 1px solid rgba(125, 211, 252, 0.22);
  box-shadow: 0 40px 120px -24px rgba(37, 99, 235, 0.6), 0 0 0 1px rgba(3, 8, 28, 0.4);
  font-family: var(--font-body);
}
#upgrade-modal.open .pw-modal { animation: pw-panel-in 460ms var(--pw-spring) both, pw-fade 180ms ease-out both; }

/* Schwebende Lichtkugeln (weiche Radial-Verlaeufe, kein Filter -> guenstig) */
#upgrade-modal .pw-orbs { position: absolute; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; }
#upgrade-modal .pw-orb { position: absolute; border-radius: 50%; will-change: transform; }
#upgrade-modal .pw-orb-1 {
  width: 420px; height: 420px; top: -170px; right: -130px;
  background: radial-gradient(circle, rgba(56, 189, 248, 0.5) 0%, rgba(56, 189, 248, 0) 68%);
  animation: pw-float-a 15s ease-in-out infinite alternate;
}
#upgrade-modal .pw-orb-2 {
  width: 460px; height: 460px; top: 34%; left: -240px;
  background: radial-gradient(circle, rgba(59, 130, 246, 0.55) 0%, rgba(59, 130, 246, 0) 68%);
  animation: pw-float-b 19s ease-in-out infinite alternate;
}
#upgrade-modal .pw-orb-3 {
  width: 380px; height: 380px; bottom: -120px; right: -170px;
  background: radial-gradient(circle, rgba(125, 211, 252, 0.32) 0%, rgba(125, 211, 252, 0) 68%);
  animation: pw-float-c 17s ease-in-out infinite alternate;
}

#upgrade-modal .pw-scroll {
  position: relative; z-index: 1;
  flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 20px 30px 10px;
  scrollbar-width: thin; scrollbar-color: rgba(255, 255, 255, 0.3) transparent;
}
#upgrade-modal .pw-topbar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 0; }
#upgrade-modal .pw-logo { display: flex; align-items: center; gap: 7px; font-family: var(--font-title); font-weight: 800; font-size: 15px; color: var(--pw-text); }
#upgrade-modal .pw-logo img { object-fit: contain; background: #fff; border-radius: 6px; padding: 2px; }
/* Schliessen: sofort klickbar, nach ca. 1 s voll sichtbar (nie versteckt) */
#upgrade-modal .pw-close {
  width: 38px; height: 38px; padding: 0; justify-content: center; border-radius: 50%;
  color: var(--pw-text); background: rgba(255, 255, 255, 0.14); border: 1px solid rgba(255, 255, 255, 0.24);
  animation: pw-close-in 1000ms ease-out both;
}
#upgrade-modal .pw-close:hover { background: rgba(255, 255, 255, 0.26); color: var(--pw-text); }
#upgrade-modal .pw-close:focus-visible { outline: 2px solid var(--pw-sky); outline-offset: 2px; }

/* ── Hero: Schloss oeffnet sich, Ring zeichnet sich, Funken, danach Pulsieren ── */
#upgrade-modal .pw-hero { display: flex; flex-direction: column; align-items: center; margin: -14px 0 10px; }
#upgrade-modal .pw-hero-svg {
  display: block; overflow: visible;
  filter: drop-shadow(0 10px 26px rgba(56, 189, 248, 0.45));
  animation: pw-hero-pop 560ms 120ms var(--pw-spring) both;
}
#upgrade-modal .pw-hero-svg * { transform-box: fill-box; transform-origin: center; }
#upgrade-modal .pw-hero-halo { animation: pw-halo-burst 760ms 640ms var(--pw-spring) both, pw-halo-pulse 2800ms 1400ms ease-in-out infinite; }
#upgrade-modal .pw-hero-ring { stroke-dasharray: 277; stroke-dashoffset: 0; animation: pw-ring-draw 900ms 260ms ease-out both; transform-origin: center; }
#upgrade-modal .pw-hero-shackle {
  transform-box: view-box; transform-origin: 45px 70px;
  transform: translateY(-10px) rotate(-7deg);
  animation: pw-unlock 620ms 520ms var(--pw-spring) both;
}
#upgrade-modal .pw-hero-hole { animation: pw-hole-flash 500ms 700ms ease-out both; }
#upgrade-modal .pw-hero-spark { animation: pw-spark-in 520ms var(--pw-spring) both, pw-twinkle 2400ms ease-in-out infinite; }
#upgrade-modal .pw-hero-spark-1 { animation-delay: 820ms, 1400ms; }
#upgrade-modal .pw-hero-spark-2 { animation-delay: 920ms, 1900ms; }
#upgrade-modal .pw-hero-spark-3 { animation-delay: 1020ms, 2300ms; }

/* PRO-Badge mit Glanz-Schimmer */
#upgrade-modal .pw-pro-badge {
  position: relative; overflow: hidden; display: inline-block; margin-top: -8px;
  padding: 5px 18px; border-radius: var(--r-pill);
  font-family: var(--font-title); font-weight: 800; font-size: 13px; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--pw-navy); background: linear-gradient(135deg, #FFFFFF 0%, var(--pw-sky-soft) 100%);
  box-shadow: 0 6px 22px rgba(56, 189, 248, 0.55), inset 0 1px 0 #fff;
  animation: pw-pop 480ms 560ms var(--pw-spring) both;
}
#upgrade-modal .pw-pro-badge::after {
  content: ''; position: absolute; top: 0; bottom: 0; left: 0; width: 45%;
  background: linear-gradient(100deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.95) 50%, rgba(255, 255, 255, 0) 100%);
  transform: translateX(-130%) skewX(-20deg);
  animation: pw-shine 3400ms 1300ms ease-in-out infinite;
}

/* ── Titel: gross, fett, Akzentwort leuchtet ── */
#upgrade-modal .pw-h1 {
  font-family: var(--font-title); font-weight: 800; font-size: 40px; line-height: 1.08; letter-spacing: -0.03em;
  color: var(--pw-text); text-align: center; margin: 0 auto 10px; max-width: 520px; text-wrap: balance;
  animation: pw-rise 520ms 220ms var(--pw-spring) both;
}
#upgrade-modal .pw-accent { color: var(--pw-sky); text-shadow: 0 0 22px rgba(125, 211, 252, 0.7), 0 0 2px rgba(186, 230, 253, 0.6); }
#upgrade-modal .pw-sub {
  font-size: 15px; color: var(--pw-text-2); line-height: 1.5; text-align: center;
  max-width: 440px; margin: 0 auto 8px;
  animation: pw-rise 520ms 300ms ease-out both;
}
#upgrade-modal .pw-saved {
  display: flex; align-items: center; justify-content: center; gap: 6px; margin: 0 0 2px;
  font-size: 13px; font-weight: 600; color: var(--pw-text);
  animation: pw-rise 520ms 340ms ease-out both;
}
#upgrade-modal .pw-saved svg { flex-shrink: 0; color: #86EFAC; }

/* ── Monat/Jahr: gleitende Pille ── */
#upgrade-modal .pw-toggle {
  position: relative; display: grid; grid-template-columns: 1fr 1fr; width: fit-content;
  margin: 16px auto 16px; padding: 4px; gap: 0;
  background: rgba(255, 255, 255, 0.12); border: 1px solid rgba(255, 255, 255, 0.24); border-radius: var(--r-pill);
  animation: pw-rise 520ms 360ms ease-out both;
}
#upgrade-modal .pw-toggle-pill {
  position: absolute; top: 4px; bottom: 4px; left: 4px; width: calc(50% - 4px);
  background: #FFFFFF; border-radius: var(--r-pill);
  box-shadow: 0 6px 18px rgba(3, 8, 28, 0.35), 0 0 18px rgba(125, 211, 252, 0.45);
  transition: transform 420ms var(--pw-spring);
}
#upgrade-modal .pw-toggle.pw-toggle-is-yearly .pw-toggle-pill { transform: translateX(100%); }
#upgrade-modal .pw-toggle-btn {
  position: relative; z-index: 1; border: none; background: none; cursor: pointer;
  padding: 9px 20px; border-radius: var(--r-pill);
  font-family: var(--font-body); font-size: 14px; font-weight: 700; color: var(--pw-text);
  display: flex; align-items: center; justify-content: center; gap: 6px; white-space: nowrap;
  transition: color 260ms ease;
}
#upgrade-modal .pw-toggle-btn.pw-toggle-active { color: var(--pw-navy); background: none; box-shadow: none; }
#upgrade-modal .pw-toggle-btn:focus-visible { outline: 2px solid var(--pw-sky); outline-offset: 2px; }
#upgrade-modal .pw-toggle-badge {
  font-size: 11px; font-weight: 800; color: #052E16; background: #4ADE80;
  padding: 2px 7px; border-radius: var(--r-pill);
}

/* ── Pro-Karte: helles Glas ── */
#upgrade-modal .pw-plan-card { border-radius: var(--r-card); padding: 20px; margin-bottom: 14px; }
#upgrade-modal .pw-plan-featured {
  position: relative;
  background: linear-gradient(160deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0.08) 100%);
  border: 1px solid rgba(255, 255, 255, 0.34);
  -webkit-backdrop-filter: blur(18px) saturate(140%);
  backdrop-filter: blur(18px) saturate(140%);
  box-shadow: 0 24px 50px -22px rgba(2, 8, 30, 0.7), inset 0 1px 0 rgba(255, 255, 255, 0.35);
  animation: pw-rise 560ms 380ms var(--pw-spring) both;
}
#upgrade-modal .pw-plan-badge {
  display: inline-flex; align-items: center; gap: 5px; margin-bottom: 12px;
  font-size: 11.5px; font-weight: 800; letter-spacing: 0.02em; color: var(--pw-royal);
  background: #FFFFFF; padding: 4px 11px; border-radius: var(--r-pill);
  box-shadow: 0 4px 14px rgba(56, 189, 248, 0.4);
}
#upgrade-modal .pw-plan-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; margin-bottom: 14px; }
#upgrade-modal .pw-plan-name { font-family: var(--font-title); font-weight: 800; font-size: 22px; color: var(--pw-text); }
#upgrade-modal .pw-plan-tagline { font-size: 13px; color: var(--pw-text-2); margin-top: 2px; }
#upgrade-modal .pw-plan-price { text-align: right; font-family: var(--font-title); font-weight: 800; font-size: 32px; line-height: 1.1; color: var(--pw-text); white-space: nowrap; }
#upgrade-modal .pw-plan-price > span:first-child { font-size: 14px; font-weight: 700; color: var(--pw-text-2); }
#upgrade-modal .pw-plan-price-unit { font-family: var(--font-body); font-size: 12.5px; font-weight: 600; color: var(--pw-text-2); margin-top: 3px; }
/* Preis zaehlt beim Umschalten kurz um: #pw-price-num traegt sofort den echten
   Wert (fuer Vorleser), die Zaehl-Zahl liegt nur waehrenddessen darueber. */
#upgrade-modal .pw-price-wrap { position: relative; display: inline-block; font-variant-numeric: tabular-nums; }
#upgrade-modal .pw-price-count { display: none; position: absolute; right: 0; top: 0; }
#upgrade-modal .pw-price-wrap.pw-counting #pw-price-num { visibility: hidden; }
#upgrade-modal .pw-price-wrap.pw-counting .pw-price-count { display: inline; }
#upgrade-modal .pw-price-wrap.pw-price-pop { animation: pw-price-pop 380ms var(--pw-spring); }

#upgrade-modal .pw-plan-features { list-style: none; padding: 0; margin: 0; font-size: 14.5px; color: var(--pw-text); }
#upgrade-modal .pw-plan-features li { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 10px; line-height: 1.45; font-weight: 600; }
#upgrade-modal .pw-plan-features li:last-child { margin-bottom: 0; }
#upgrade-modal .pw-plan-featured .pw-plan-features li { animation: pw-rise 440ms ease-out both; }
#upgrade-modal .pw-plan-featured .pw-plan-features li:nth-child(1) { animation-delay: 520ms; }
#upgrade-modal .pw-plan-featured .pw-plan-features li:nth-child(2) { animation-delay: 600ms; }
#upgrade-modal .pw-plan-featured .pw-plan-features li:nth-child(3) { animation-delay: 680ms; }
#upgrade-modal .pw-plan-featured .pw-plan-features li:nth-child(4) { animation-delay: 760ms; }
#upgrade-modal .pw-check { flex-shrink: 0; width: 21px; height: 21px; margin-top: 0; }
#upgrade-modal .pw-check circle { fill: rgba(125, 211, 252, 0.28); stroke: rgba(186, 230, 253, 0.6); stroke-width: 1; }
#upgrade-modal .pw-check path {
  fill: none; stroke: #FFFFFF; stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round;
  stroke-dasharray: 16; stroke-dashoffset: 0;
}
#upgrade-modal .pw-plan-featured .pw-plan-features li .pw-check path { animation: pw-check-draw 420ms ease-out both; }
#upgrade-modal .pw-plan-featured .pw-plan-features li:nth-child(1) .pw-check path { animation-delay: 640ms; }
#upgrade-modal .pw-plan-featured .pw-plan-features li:nth-child(2) .pw-check path { animation-delay: 720ms; }
#upgrade-modal .pw-plan-featured .pw-plan-features li:nth-child(3) .pw-check path { animation-delay: 800ms; }
#upgrade-modal .pw-plan-featured .pw-plan-features li:nth-child(4) .pw-check path { animation-delay: 880ms; }

/* ── Ablauf in 3 Punkten: Linie fuellt sich von links nach rechts ── */
#upgrade-modal .pw-timeline {
  position: relative; list-style: none; margin: 6px 0 16px; padding: 0;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px;
  animation: pw-rise 480ms 600ms ease-out both;
}
#upgrade-modal .pw-timeline::before,
#upgrade-modal .pw-timeline::after {
  content: ''; position: absolute; top: 7px; left: calc(100% / 6); right: calc(100% / 6); height: 3px; margin-top: -1.5px;
  border-radius: 3px;
}
#upgrade-modal .pw-timeline::before { background: rgba(255, 255, 255, 0.2); }
#upgrade-modal .pw-timeline::after {
  background: linear-gradient(90deg, var(--pw-sky) 0%, #FFFFFF 100%);
  box-shadow: 0 0 12px rgba(125, 211, 252, 0.7);
  transform-origin: left center;
  animation: pw-line-fill 1000ms 900ms cubic-bezier(0.65, 0, 0.35, 1) both;
}
#upgrade-modal .pw-timeline li {
  position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; gap: 3px;
  text-align: center; padding: 0; background: none; border: none;
}
#upgrade-modal .pw-timeline li::after { content: none; }
#upgrade-modal .pw-tl-dot {
  width: 15px; height: 15px; border-radius: 50%; margin-bottom: 6px;
  background: #FFFFFF; border: 3px solid var(--pw-sky);
  box-shadow: 0 0 0 4px rgba(125, 211, 252, 0.25), 0 0 14px rgba(125, 211, 252, 0.8);
  animation: pw-dot-on 360ms var(--pw-spring) both;
}
#upgrade-modal .pw-timeline li:nth-child(1) .pw-tl-dot { animation-delay: 880ms; }
#upgrade-modal .pw-timeline li:nth-child(2) .pw-tl-dot { animation-delay: 1380ms; }
#upgrade-modal .pw-timeline li:nth-child(3) .pw-tl-dot { animation-delay: 1880ms; }
#upgrade-modal .pw-tl-label { font-size: 11px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; color: var(--pw-sky-soft); }
#upgrade-modal .pw-tl-text { font-size: 13.5px; font-weight: 700; color: var(--pw-text); line-height: 1.35; }

#upgrade-modal .pw-callout {
  display: flex; align-items: flex-start; gap: 9px; margin: 0 0 14px; padding: 13px 15px;
  background: var(--pw-ink-glass); border: 1px solid rgba(125, 211, 252, 0.45); border-radius: 16px;
  font-size: 13.5px; color: var(--pw-text); line-height: 1.5;
  animation: pw-rise 480ms 680ms ease-out both;
}
#upgrade-modal .pw-callout b { color: #FFFFFF; font-weight: 800; }
#upgrade-modal .pw-callout svg { margin-top: 2px; color: var(--pw-sky); }

/* ── Free-Karte: bewusst ruhiger und kleiner, aber gut lesbar ── */
#upgrade-modal .pw-plan-free {
  padding: 14px 16px; border-radius: 18px; margin-top: 4px;
  background: var(--pw-ink-glass); border: 1px solid rgba(255, 255, 255, 0.16);
  animation: pw-fade 500ms 760ms ease-out both;
}
#upgrade-modal .pw-plan-free .pw-plan-head { margin-bottom: 8px; }
#upgrade-modal .pw-plan-free .pw-plan-name { font-size: 16px; }
#upgrade-modal .pw-plan-free .pw-plan-price { font-size: 18px; }
#upgrade-modal .pw-plan-free .pw-plan-price > span:first-child { font-size: 12px; }
#upgrade-modal .pw-plan-features-free { font-size: 13px; color: var(--pw-text-2); }
#upgrade-modal .pw-plan-features-free li { display: block; position: relative; padding-left: 20px; margin-bottom: 5px; font-weight: 500; }
#upgrade-modal .pw-plan-features-free li::before { content: '\2713'; position: absolute; left: 0; color: var(--pw-sky-soft); font-weight: 700; }
#upgrade-modal .pw-plan-features-free .pw-plan-feature-off { color: rgba(255, 255, 255, 0.78); text-decoration: line-through; }
#upgrade-modal .pw-plan-features-free .pw-plan-feature-off::before { content: '\2715'; color: rgba(255, 255, 255, 0.78); }

/* ── Einwilligung: gut lesbar auf dunklem Glas ── */
#upgrade-modal .pw-consent {
  display: flex; align-items: flex-start; gap: 0; cursor: pointer;
  font-size: 13px; color: var(--pw-text); line-height: 1.55;
  margin: 14px 0 6px; padding: 12px 14px;
  background: var(--pw-ink-glass); border: 1.5px solid rgba(255, 255, 255, 0.2); border-radius: 16px;
  transition: border-color var(--dur-base) var(--ease-out), background var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);
}
#upgrade-modal .pw-consent a { color: var(--pw-sky-soft); font-weight: 700; text-decoration: underline; text-underline-offset: 2px; }
#upgrade-modal .pw-consent input[type="checkbox"] {
  flex-shrink: 0; width: 20px; height: 20px; margin: 1px 12px 0 0; padding: 0;
  accent-color: #FFFFFF; cursor: pointer;
}
#upgrade-modal .pw-consent input[type="checkbox"]:focus-visible { outline: 2px solid var(--pw-sky); outline-offset: 2px; }
#upgrade-modal .pw-consent.pw-consent-missing {
  border-color: #FCA5A5; background: rgba(127, 29, 29, 0.55);
  box-shadow: 0 0 0 4px rgba(252, 165, 165, 0.22);
  animation: pw-shake 420ms ease-out;
}
#upgrade-modal .pw-consent-error { font-size: 13.5px; font-weight: 700; color: #FECACA; margin: 0 4px 8px; }

#upgrade-modal .pw-trustline {
  display: flex; align-items: center; justify-content: center; gap: 7px; text-align: center;
  font-size: 12.5px; font-weight: 500; color: var(--pw-text-2); margin: 10px 0 4px;
}
#upgrade-modal .pw-trustline svg { flex-shrink: 0; color: #86EFAC; }

#upgrade-modal .pw-footer { text-align: center; font-size: 12.5px; padding-bottom: 6px; }
#upgrade-modal .pw-linkbtn { background: none; border: none; cursor: pointer; color: var(--pw-text-2); font-family: var(--font-body); font-size: 13px; font-weight: 600; padding: 6px; text-decoration: underline; text-underline-offset: 3px; }
#upgrade-modal .pw-linkbtn:hover { color: #FFFFFF; }

/* ── Unterer Bereich: leuchtender Knopf + Verlaengerungszeile, immer sichtbar ── */
#upgrade-modal .pw-cta-bar {
  position: relative; z-index: 2; flex-shrink: 0; padding: 14px 30px 18px;
  background: linear-gradient(180deg, rgba(8, 20, 64, 0.82) 0%, rgba(6, 16, 52, 0.95) 100%);
  -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
  border-top: 1px solid rgba(255, 255, 255, 0.14);
  box-shadow: 0 -14px 30px -18px rgba(2, 8, 30, 0.8);
  animation: pw-cta-in 520ms 300ms var(--pw-spring) both;
}
#upgrade-modal .pw-btn-primary {
  position: relative; overflow: hidden; width: 100%; height: 58px;
  border: none; border-radius: 18px; cursor: pointer;
  background: linear-gradient(180deg, #FFFFFF 0%, #DCEBFF 100%); color: var(--pw-navy);
  font-family: var(--font-title); font-weight: 800; font-size: 17px; letter-spacing: -0.01em;
  box-shadow: 0 10px 30px -6px rgba(56, 189, 248, 0.7), 0 0 36px rgba(125, 211, 252, 0.35), inset 0 -3px 0 rgba(37, 99, 235, 0.18);
  transition: transform 180ms var(--pw-spring), box-shadow 180ms ease;
  animation: pw-pop 520ms 640ms var(--pw-spring) both;
}
/* Glanz-Streifen, der alle paar Sekunden ueber den Knopf laeuft */
#upgrade-modal .pw-btn-primary::after {
  content: ''; position: absolute; top: 0; bottom: 0; left: 0; width: 40%; pointer-events: none;
  background: linear-gradient(105deg, rgba(147, 197, 253, 0) 0%, rgba(147, 197, 253, 0.55) 40%, rgba(255, 255, 255, 0.95) 50%, rgba(147, 197, 253, 0.55) 60%, rgba(147, 197, 253, 0) 100%);
  transform: translateX(-130%) skewX(-18deg);
  animation: pw-shine 3800ms 1600ms ease-in-out infinite;
}
#upgrade-modal .pw-btn-primary:hover { transform: translateY(-2px); box-shadow: 0 16px 38px -6px rgba(56, 189, 248, 0.85), 0 0 48px rgba(125, 211, 252, 0.5), inset 0 -3px 0 rgba(37, 99, 235, 0.18); }
#upgrade-modal .pw-btn-primary:active { transform: translateY(1px) scale(0.985); box-shadow: 0 4px 14px -4px rgba(56, 189, 248, 0.6), inset 0 2px 4px rgba(37, 99, 235, 0.2); }
#upgrade-modal .pw-btn-primary:focus-visible { outline: 3px solid var(--pw-sky); outline-offset: 3px; }
#upgrade-modal .pw-renew { font-size: 12.5px; font-weight: 500; color: var(--pw-text-2); line-height: 1.5; text-align: center; margin-top: 10px; }

/* ── Handy: Vollbild-Sheet von unten ── */
@media (max-width: 560px) {
  #upgrade-modal.modal-overlay { padding: 0; align-items: stretch; }
  #upgrade-modal .pw-modal {
    max-width: none; height: 100vh; height: 100dvh; max-height: none;
    border-radius: 0; border: none;
    /* Schatten nach unten deckt das kurze Ueberschwingen der Feder-Kurve ab */
    box-shadow: 0 120px 0 0 var(--pw-royal);
  }
  #upgrade-modal.open .pw-modal { animation: pw-sheet-in 480ms cubic-bezier(0.22, 1.12, 0.36, 1) both; }
  #upgrade-modal .pw-scroll { padding: calc(12px + env(safe-area-inset-top, 0px)) 18px 8px; }
  #upgrade-modal .pw-cta-bar { padding: 12px 18px calc(14px + env(safe-area-inset-bottom, 0px)); }
  #upgrade-modal .pw-hero { margin: -10px 0 8px; }
  #upgrade-modal .pw-hero-svg { width: 86px; height: 86px; }
  #upgrade-modal .pw-h1 { font-size: 32px; }
  #upgrade-modal .pw-sub { font-size: 14.5px; }
  #upgrade-modal .pw-plan-card { padding: 16px; }
  #upgrade-modal .pw-plan-free { padding: 13px 14px; }
  #upgrade-modal .pw-plan-price { font-size: 28px; }
  #upgrade-modal .pw-plan-features { font-size: 14px; }
  #upgrade-modal .pw-toggle-btn { padding: 9px 16px; }
  #upgrade-modal .pw-tl-text { font-size: 12.5px; }
  #upgrade-modal .pw-btn-primary { height: 56px; font-size: 16.5px; }
  #upgrade-modal .pw-renew { font-size: 12px; }
}

/* ── Weniger Bewegung gewuenscht: alles aus, nur Einblenden ── */
@media (prefers-reduced-motion: reduce) {
  #upgrade-modal *, #upgrade-modal *::before, #upgrade-modal *::after { animation: none !important; transition: none !important; }
  #upgrade-modal.open .pw-modal { animation: pw-fade 220ms ease-out both !important; }
}

@keyframes pw-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes pw-dim { from { background-color: rgba(3, 8, 28, 0); -webkit-backdrop-filter: blur(0); backdrop-filter: blur(0); } }
@keyframes pw-panel-in { from { transform: translateY(36px) scale(0.92); } to { transform: none; } }
@keyframes pw-sheet-in { from { transform: translateY(100%); } to { transform: none; } }
@keyframes pw-rise { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
@keyframes pw-pop { from { opacity: 0; transform: scale(0.7); } to { opacity: 1; transform: none; } }
@keyframes pw-cta-in { from { opacity: 0; transform: translateY(100%); } to { opacity: 1; transform: none; } }
@keyframes pw-close-in { from { opacity: 0.4; } to { opacity: 1; } }
@keyframes pw-hero-pop { from { opacity: 0; transform: scale(0.5) rotate(-12deg); } to { opacity: 1; transform: none; } }
@keyframes pw-unlock {
  0%   { transform: none; }
  35%  { transform: translateY(2px); }
  100% { transform: translateY(-10px) rotate(-7deg); }
}
@keyframes pw-hole-flash { 0% { opacity: 1; } 40% { opacity: 0.25; } 100% { opacity: 1; } }
@keyframes pw-ring-draw { from { stroke-dashoffset: 277; opacity: 0; } to { stroke-dashoffset: 0; opacity: 1; } }
@keyframes pw-halo-burst { 0% { opacity: 0; transform: scale(0.4); } 60% { opacity: 1; transform: scale(1.18); } 100% { opacity: 1; transform: scale(1); } }
@keyframes pw-halo-pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.72; transform: scale(1.08); } }
@keyframes pw-spark-in { from { opacity: 0; transform: scale(0) rotate(-90deg); } to { opacity: 1; transform: none; } }
@keyframes pw-twinkle { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.45; transform: scale(0.75); } }
@keyframes pw-shine { 0% { transform: translateX(-130%) skewX(-18deg); } 35%, 100% { transform: translateX(330%) skewX(-18deg); } }
@keyframes pw-check-draw { from { stroke-dashoffset: 16; } to { stroke-dashoffset: 0; } }
@keyframes pw-line-fill { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes pw-dot-on {
  from { transform: scale(0.6); background: var(--pw-deep); border-color: rgba(255, 255, 255, 0.45); box-shadow: none; }
  to   { transform: none; }
}
@keyframes pw-price-pop { 0% { transform: scale(1.14); } 100% { transform: none; } }
@keyframes pw-shake { 0%, 100% { transform: none; } 20% { transform: translateX(-6px); } 40% { transform: translateX(5px); } 60% { transform: translateX(-3px); } 80% { transform: translateX(2px); } }
@keyframes pw-float-a { from { transform: translate(0, 0); } to { transform: translate(-70px, 60px); } }
@keyframes pw-float-b { from { transform: translate(0, 0); } to { transform: translate(90px, -50px); } }
@keyframes pw-float-c { from { transform: translate(0, 0); } to { transform: translate(-60px, -80px); } }

/* AGB/Widerrufs-Hinweis: klein, dezent, nicht mehr als grosser Block */
.upgrade-consent-note {
  max-width: 560px; margin: 0 auto 14px !important;
  padding: 9px 12px; border-radius: var(--r-button);
  background: var(--bg-second); font-size: 10.5px !important; line-height: 1.45;
}

/* credits pill in topbar already styled in base (.pill) */

/* ===== Tour-Overlay (Starthilfe) ===== */
#tour-overlay { position: fixed; inset: 0; z-index: 200; pointer-events: none; }
.tour-highlight-ring {
  position: fixed; border-radius: var(--r-card);
  border: 2px solid var(--gold);
  box-shadow: 0 0 0 4px rgba(37,99,235, 0.15), 0 0 0 2000px rgba(15, 23, 42, 0.35);
  transition: all 250ms ease;
}
.tour-card {
  position: fixed; width: 300px;
  background: var(--card-bg); border: 1px solid var(--card-border);
  border-radius: var(--r-card); padding: 18px;
  box-shadow: var(--shadow-lift);
  pointer-events: auto;
  transition: top 250ms ease, left 250ms ease;
}
.tour-step-count { font-size: 11px; color: var(--text-muted); font-weight: 600; letter-spacing: 0.04em; margin-bottom: 6px; }
.tour-card h3 { font-family: var(--font-title); font-weight: 700; font-size: 16px; margin-bottom: 6px; }
.tour-card p { font-size: 13px; color: var(--text-muted); line-height: 1.5; margin-bottom: 14px; }
.tour-actions { display: flex; justify-content: space-between; align-items: center; }
.tour-skip { background: none; border: none; color: var(--text-muted); font-size: 12.5px; cursor: pointer; padding: 4px; }
.tour-skip:hover { color: var(--text); }
.tour-next {
  background: var(--gold); color: var(--gold-ink);
  border: none; border-radius: var(--r-pill); padding: 8px 16px; font-size: 13px; font-weight: 600;
  cursor: pointer; font-family: var(--font-body);
}
.tour-next:hover { background: var(--gold-hover); }

/* ===== Coach-Sitzungs-Liste ===== */
.coach-session-row {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 14px 16px; margin-bottom: 10px; cursor: pointer;
  transition: transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);
}
.coach-session-row:hover { transform: translateY(-1px); }
.coach-session-row-title { font-weight: 700; font-size: 14px; }
.coach-session-row-sub { font-size: 12.5px; color: var(--text-faint); margin-top: 2px; }
.coach-session-delete { color: var(--text-faint); flex-shrink: 0; transition: color var(--dur-base) var(--ease-out), background var(--dur-base) var(--ease-out); }
.coach-session-delete:hover { color: var(--red); background: rgba(220, 38, 38, 0.08); }

/* ===== Tastatur-Fokus für klickbare Divs (Sidebar, Kacheln, Chips) ===== */
.nav-item:focus-visible, .tile:focus-visible, .chip:focus-visible, .bnav-item:focus-visible, .coach-session-row:focus-visible, .sidebar-user:focus-visible, .user-menu-item:focus-visible {
  outline: 2px solid var(--gold); outline-offset: 2px;
}

/* ===== E-Mail-Verifizierungs-Banner ===== */
.verify-banner {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 14px 18px; margin-bottom: 18px;
  background: rgba(217, 119, 6, 0.06); border-color: rgba(217, 119, 6, 0.25);
  flex-wrap: wrap;
}
.verify-banner-text strong { font-size: 13.5px; color: var(--amber-text); }
.verify-banner-text p { font-size: 12.5px; color: var(--text-muted); margin: 2px 0 0; }

/* ===== Dashboard: Section-Label (wiederverwendet für Schnellzugriff/Aktivitäten) ===== */
.bib-tabs { display: flex; gap: 4px; margin-bottom: 20px; background: var(--bg-second); padding: 4px; border-radius: var(--r-button); width: fit-content; }
.bib-tab {
  border: none; background: transparent; cursor: pointer;
  padding: 9px 16px; border-radius: var(--r-small); font-family: var(--font-body);
  font-size: 13px; font-weight: 600; color: var(--text-muted);
  transition: background var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);
}
.bib-tab.active { background: var(--card-bg); color: var(--text); box-shadow: 0 1px 2px rgba(24,24,27,0.06), 0 2px 6px rgba(24,24,27,0.05); }
.bib-tab:not(.active):hover { color: var(--text); }
@media (max-width: 520px) { .bib-tabs { width: 100%; overflow-x: auto; } .bib-tab { white-space: nowrap; } }

.bib-dropzone {
  border: 1.5px dashed var(--card-border); border-radius: var(--r-small);
  padding: 26px 20px; text-align: center; cursor: pointer;
  transition: border-color var(--dur-base) var(--ease-out), background var(--dur-base) var(--ease-out);
}
.bib-dropzone:hover { border-color: var(--gold); background: var(--gold-light); }
.bib-dropzone-active { border-color: var(--gold) !important; background: var(--gold-light) !important; }
.bib-dropzone-title { font-size: 13.5px; font-weight: 600; margin-bottom: 4px; color: var(--text); }
.bib-dropzone-hint { font-size: 12px; color: var(--text-faint); }

.bib-import-card {
  display: flex; align-items: center; gap: 14px; padding: 16px 18px; margin-bottom: 16px;
  cursor: pointer; transition: transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);
}
.bib-import-card:hover { transform: translateY(-1px); box-shadow: 0 2px 4px rgba(24,24,27,0.05), 0 8px 20px rgba(24,24,27,0.08); }
.bib-import-icon {
  width: 38px; height: 38px; border-radius: 10px; background: var(--gold-light);
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.bib-import-title { font-size: 13.5px; font-weight: 700; color: var(--text); }
.bib-import-sub { font-size: 12px; color: var(--text-faint); margin-top: 1px; }

.dash-section-label {
  font-size: 13.5px; font-weight: 700; color: var(--text);
  margin-bottom: 14px;
}

/* ===== Dashboard: Schnellzugriff (4er-Karten-Grid) ===== */
.dash-quick-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; margin-bottom: 24px; }
.dash-quick-card {
  background: var(--card-bg); border: none; border-radius: var(--r-card);
  padding: 18px 16px; cursor: pointer; position: relative;
  box-shadow: 0 1px 2px rgba(24,24,27,0.04), 0 4px 10px rgba(24,24,27,0.04);
  transition: transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);
}
.dash-quick-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 2px 4px rgba(24,24,27,0.05), 0 8px 20px rgba(24,24,27,0.08);
}
.dash-quick-card:active { transform: translateY(0) scale(0.98); transition-duration: var(--dur-fast); }
/* Coach-Karte: eigene Farbwelt statt einer weissen Karte unter vielen -
   bricht bewusst das "alle Karten gleich"-Muster (Anti-Slop-Regel). */
.dash-quick-card-featured {
  background: linear-gradient(155deg, var(--gold) 0%, var(--gold-hover) 100%);
  border: none; padding: 24px 22px; margin-bottom: 24px; overflow: hidden;
  box-shadow: 0 8px 24px rgba(37,99,235,0.22);
}
.dash-quick-card-featured::before {
  content: ''; position: absolute; top: -34px; right: -34px;
  width: 140px; height: 140px; border-radius: 50%; background: rgba(255,255,255,0.08);
}
.dash-quick-card-featured .dash-quick-card-icon {
  width: 40px; height: 40px; background: rgba(255,255,255,0.16); color: #fff; position: relative;
}
.dash-quick-card-featured .dash-quick-card-title { font-family: var(--font-title); font-size: 18px; font-weight: 800; margin-top: 4px; color: #fff; position: relative; }
.dash-hero-eyebrow { font-size: 12px; font-weight: 700; color: rgba(255,255,255,0.75); position: relative; }
.dash-quick-card-featured .dash-quick-card-desc { font-size: 13px; max-width: 480px; color: rgba(255,255,255,0.78); position: relative; }
.dash-quick-card-featured .coach-featured-hint { color: rgba(255,255,255,0.9); position: relative; }
.dash-quick-card-featured .dash-quick-card-arrow {
  display: inline-flex; align-items: center; gap: 6px; background: #fff; color: var(--gold-hover);
  font-size: 12.5px; font-weight: 700; padding: 8px 14px; border-radius: var(--r-pill);
  text-align: left; margin-top: 12px; position: relative;
}
.dash-quick-card-icon {
  width: 38px; height: 38px; border-radius: var(--r-small);
  background: var(--bg-second); color: var(--text-muted);
  display: flex; align-items: center; justify-content: center;
}
.dash-quick-card-icon.violet { background: rgba(107,122,153,0.1); color: #56637E; }
.dash-quick-card-icon.teal { background: rgba(13,148,136,0.1); color: #0F766E; }
.dash-quick-card-icon.amber { background: rgba(180,83,9,0.1); color: #B45309; }
.dash-quick-card-icon.indigo { background: rgba(67,56,202,0.1); color: #4338CA; }
.dash-quick-card-icon.rose { background: rgba(190,24,93,0.1); color: #BE185D; }
.dash-quick-card-title { font-size: 14px; font-weight: 700; color: var(--text); margin-top: 12px; }
.dash-quick-card-desc { font-size: 12px; color: var(--text-muted); line-height: 1.5; margin-top: 3px; }
.dash-quick-card-arrow { text-align: right; font-size: 14px; color: var(--text-faint); margin-top: 10px; transition: transform var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out); }
.dash-quick-card:hover .dash-quick-card-arrow { transform: translateX(3px); color: var(--gold-text); }
@media (max-width: 860px) { .dash-quick-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) {
  /* Hero-Karte kompakter - wirkte ueberdimensioniert auf schmalen Screens. */
  #dash-hero-card { padding: 16px !important; }
  #dash-hero-card .dash-quick-card-icon { width: 30px; height: 30px; }
  #dash-hero-card .dash-quick-card-icon svg { width: 15px; height: 15px; }
  #dash-hero-title { font-size: 16px !important; }
  #dash-hero-desc { font-size: 12px !important; }

  /* Wie im Mockup: horizontal scrollbare Kartenreihe statt gestapeltem 1-Spalten-Grid —
     spart Scroll-Strecke auf dem Handy. NUR Karten INNERHALB des Karussells
     werden schmal - die grosse Coach-Karte steht ausserhalb von .dash-quick-grid
     und darf nicht mitgetroffen werden (frueher ein Bug: die Selektoren waren
     nicht auf .dash-quick-grid beschraenkt, dadurch wurde auch die Coach-Karte
     auf 140px gequetscht und der Text lief ueber den Rand). */
  .dash-quick-grid {
    display: flex; grid-template-columns: none; overflow-x: auto; gap: 12px;
    padding-bottom: 4px; margin-left: -20px; margin-right: -20px; padding-left: 20px; padding-right: 20px;
    -webkit-overflow-scrolling: touch; scrollbar-width: none;
  }
  .dash-quick-grid::-webkit-scrollbar { display: none; }
  .dash-quick-grid .dash-quick-card { width: 140px; flex-shrink: 0; }
}

/* ===== Dashboard: Aktivitäten + Upgrade ===== */
.dash-bottom-row { display: grid; grid-template-columns: 2fr 1fr; gap: 16px; margin-bottom: 24px; align-items: start; }
@media (max-width: 780px) { .dash-bottom-row { grid-template-columns: 1fr; } }

.dash-activity-card { padding: 20px; }
.dash-activity-item {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 0; border-bottom: 1px solid var(--card-border);
}
.dash-activity-item:last-child { border-bottom: none; padding-bottom: 0; }
.dash-activity-icon {
  width: 32px; height: 32px; border-radius: 50%; flex-shrink: 0;
  background: rgba(17,17,17, 0.05); color: var(--text-muted);
  display: flex; align-items: center; justify-content: center;
}
.dash-activity-title {
  flex: 1; min-width: 0; font-size: 13px; font-weight: 600; color: var(--text);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.dash-activity-badge { font-size: 11px; font-weight: 600; padding: 3px 10px; border-radius: var(--r-pill); flex-shrink: 0; }
.dash-activity-badge.status-applied { background: var(--bg-second); color: var(--text-muted); }
.dash-activity-badge.status-interview { background: #FEF3C7; color: #D97706; }
.dash-activity-badge.status-offer { background: #D1FAE5; color: #059669; }
.dash-activity-badge.status-rejected { background: var(--bg-second); color: #6B6055; }
.dash-activity-badge.status-edited { background: var(--bg-second); color: var(--text-muted); }
.dash-activity-time { font-size: 11px; color: var(--text-muted); width: 90px; text-align: right; flex-shrink: 0; }
.dash-activity-empty { font-size: 13px; color: var(--text-muted); padding: 8px 0; }

.dash-upgrade-card {
  padding: 20px;
  background: linear-gradient(135deg, var(--bg-second) 0%, #FFFCF7 100%);
  border: 1.5px solid #EBD4BE;
}
.dash-upgrade-title { font-size: 15px; font-weight: 700; color: var(--text); margin-bottom: 8px; }
.dash-upgrade-text { font-size: 12.5px; color: var(--text-muted); line-height: 1.5; margin-bottom: 16px; }

/* ===== Tile: Pfeil beim Hover ===== */
/* .tile Basis inkl. Hover-Schatten bereits oben definiert */
.tile-arrow {
  position: absolute; bottom: 14px; right: 16px;
  font-size: 16px; color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out);
}
.tile:hover .tile-arrow { transform: translateX(3px); color: var(--text-secondary); }

/* ===== Upgrade-Modal: Pro hervorgehoben ===== */
.upgrade-col-featured {
  border-color: var(--gold) !important;
  box-shadow: 0 0 0 2px rgba(37,99,235,0.15);
  position: relative;
}
.upgrade-recommended-badge {
  display: inline-block; padding: 3px 10px; border-radius: var(--r-pill);
  background: var(--gold); color: var(--gold-ink);
  font-size: 11px; font-weight: 700; letter-spacing: 0.06em;
  text-transform: uppercase; margin-bottom: 8px;
}
.upgrade-col-basic {
  opacity: 0.85;
}
.upgrade-col-basic .upgrade-plan-name { font-size: 15px; }
.upgrade-col-basic .upgrade-price-num { font-size: 28px; }

/* ===== Klassen: Einlade-Link-Zeile ===== */
.class-invite-row {
  display: flex; gap: 8px; margin-top: 12px; align-items: center;
}
.class-invite-row input {
  flex: 1; font-size: 12px; padding: 8px 10px;
  border-radius: var(--r-button); border: 1px solid var(--card-border);
  background: var(--bg-second); color: var(--text-muted);
}

/* ===== Modal: X-Button oben rechts ===== */
.modal-topbar {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 18px;
}
.modal-topbar h2 { margin: 0; }
.modal-close-x {
  background: none; border: none; cursor: pointer;
  color: var(--text-muted); padding: 10px; border-radius: var(--r-small);
  display: flex; align-items: center; transition: background 150ms, color 150ms;
  flex-shrink: 0;
}
.modal-close-x:hover { background: var(--bg-second); color: var(--text); }

/* ===== Fokus-Widget ===== */
.focus-widget {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 14px 16px; margin-bottom: 18px; cursor: pointer;
  border: 1.5px solid var(--card-border);
  background: var(--bg-second);
  box-shadow: var(--shadow-soft);
  transition: border-color 150ms, transform 150ms;
}
.focus-widget:hover { border-color: rgba(17,17,17,0.18); transform: translateY(-1px); }
.focus-widget-inner { display: flex; align-items: center; gap: 12px; flex: 1; min-width: 0; }
.focus-widget-avatar { width: 34px; height: 34px; border-radius: 50%; flex-shrink: 0; background: var(--gold); object-fit: contain; padding: 4px; box-sizing: border-box; }
.focus-widget-label { font-size: 11px; text-transform: uppercase; letter-spacing: .08em; color: var(--text-secondary); font-weight: 700; margin-bottom: 3px; }
.focus-widget-text { font-size: 15px; font-weight: 600; color: var(--text); }


/* ===== Fortschritts-Journey: ausgebaut ===== */
.progress-journey {
  margin-bottom: 24px; background: var(--card-bg); border-radius: var(--r-card);
  padding: 18px 20px; box-shadow: 0 1px 2px rgba(24,24,27,0.04), 0 4px 12px rgba(24,24,27,0.05);
}
.progress-journey-header { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 12px; }
.progress-journey-label { font-size: 13px; font-weight: 700; color: var(--text); }
.progress-journey-right { display: flex; align-items: center; gap: 8px; }
.progress-journey-level {
  display: inline-flex; align-items: center; font-size: 11px; font-weight: 700; color: var(--gold-ink);
  background: var(--gold); padding: 3px 11px; border-radius: var(--r-pill); letter-spacing: 0.01em;
}
.progress-journey-xp { font-size: 12px; font-weight: 600; color: var(--text-muted); }

/* Haupt-Balken */
.progress-bar-track { display: flex; align-items: center; gap: 3px; margin-bottom: 22px; }
.progress-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--card-border); flex-shrink: 0; transition: background var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out); }
.progress-dot-done { background: var(--gold); box-shadow: 0 0 0 4px rgba(37,99,235,0.1); }
.progress-dot-current { width: 13px; height: 13px; background: var(--card-bg); border: 3px solid var(--gold); }
.progress-dot-line { flex: 1; height: 2px; background: var(--card-border); transition: background var(--dur-base) var(--ease-out); }
.progress-dot-line-done { background: var(--gold); }

/* ── Geführter Pfad: klare Phasen, aktueller Schritt hervorgehoben ─────────── */
.progress-path { display: flex; flex-direction: column; gap: 8px; margin-top: 20px; }
.path-row {
  display: flex; align-items: center; gap: 14px;
  padding: 14px 16px; border-radius: var(--r-card);
  border: 1px solid var(--card-border); background: var(--card-bg);
  transition: border-color 200ms, box-shadow 200ms;
}
.path-row-current {
  background: var(--gold-light);
  border-color: transparent;
}
.path-row-upcoming { opacity: 0.55; }
.path-row-circle {
  flex-shrink: 0; width: 32px; height: 32px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; font-weight: 700;
}
.path-row-circle-done { background: var(--green); color: #fff; }
.path-row-circle-current { background: var(--card-bg); border: 2.5px solid var(--gold); }
.path-row-circle-upcoming { background: var(--bg-second); }
.path-row-body { flex: 1; min-width: 0; }
.path-row-label { font-size: 15px; font-weight: 600; color: var(--text); }
.path-row-sub { font-size: 12.5px; color: var(--text-muted); margin-top: 2px; }
.path-row-cta { flex-shrink: 0; white-space: nowrap; }

/* ── Trophäenpfad: Zickzack-Meilensteine im Brawl-Stars-Stil ─────────────── */
.trophy-path { display: flex; align-items: center; justify-content: space-between; position: relative; padding: 22px 4px 6px; gap: 4px; }
.trophy-path-line {
  position: absolute; left: 26px; right: 26px; top: 43px; height: 3px;
  background: var(--card-border); border-radius: var(--r-button); z-index: 0; overflow: hidden;
}
.trophy-path-line-fill { height: 100%; background: var(--gold); border-radius: var(--r-button); transition: width 0.8s cubic-bezier(0.22,1,0.36,1); }

.trophy-node { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; gap: 6px; flex: 1; min-width: 0; }
.trophy-node-up   { transform: translateY(-14px); }
.trophy-node-down { transform: translateY(14px); }

.trophy-node-circle {
  width: 44px; height: 44px; border-radius: 50%; border: 2px solid var(--card-border);
  background: #FFFCF7; cursor: pointer; display: flex; align-items: center; justify-content: center;
  font-size: 15px; font-weight: 700; color: var(--text-muted); transition: all 200ms; flex-shrink: 0;
}
.trophy-node-circle:hover { transform: scale(1.08); }
.trophy-node-done {
  background: var(--gold); border-color: var(--gold); color: var(--gold-ink);
  box-shadow: var(--shadow-lift);
}
.trophy-node-active {
  border-color: var(--gold); border-width: 2.5px; background: rgba(37,99,235,0.08); color: var(--gold);
}
.trophy-node-upcoming { opacity: 0.55; background: var(--bg-second); color: var(--text-faint); }

.trophy-node-label { font-size: 11px; text-align: center; font-weight: 600; white-space: nowrap; }
.trophy-node-label-done { color: var(--gold); }
.trophy-node-label-active { color: var(--text); }
.trophy-node-label-upcoming { color: var(--text-muted); font-weight: 500; }
.trophy-node-xp { font-size: 9.5px; color: var(--text-faint); font-weight: 600; white-space: nowrap; }
.trophy-node-xp-done { color: var(--gold); }
@media (max-width: 560px) {
  .trophy-node-label, .trophy-node-xp { display: none; }
  .trophy-node-up { transform: translateY(-8px); }
  .trophy-node-down { transform: translateY(8px); }
}

/* ===== Firma-Toggle =====
/* ===== Firma-Toggle ===== */
.firma-toggle-btn {
  font-size: 13px; color: var(--gold); background: none; border: none;
  cursor: pointer; padding: 4px 0; font-family: var(--font-body);
  text-align: left;
}
.firma-toggle-btn:hover { text-decoration: underline; }
.firma-toggle-btn.active {
  text-decoration: underline; font-weight: 600;
}
.firma-field { margin-top: 10px; }





/* ===== Ampel-System ===== */
.ampel-dot {
  width: 11px; height: 11px; border-radius: 50%;
  display: inline-block; flex-shrink: 0;
}
.ampel-green  { background: var(--green); box-shadow: 0 0 0 2px rgba(22,163,74,0.15); }
.ampel-yellow { background: var(--amber-text); box-shadow: 0 0 0 2px rgba(180,83,9,0.15); }
.ampel-red    { background: var(--red); box-shadow: 0 0 0 2px rgba(220,38,38,0.15); }
.ampel-legend { display: flex; align-items: center; gap: 5px; font-size: 12px; color: var(--text-muted); flex-wrap: wrap; }

/* ===== Schüler-Zeile (Lehrer-Dashboard) ===== */
.student-row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 12px 16px; margin-bottom: 8px; flex-wrap: wrap; gap: 8px;
}
.student-row-left { display: flex; align-items: center; gap: 12px; }
.student-name { font-size: 13.5px; font-weight: 700; }
.student-meta { font-size: 12px; color: var(--text-faint); margin-top: 1px; }
.student-stats { display: flex; gap: 14px; font-size: 12px; color: var(--text-muted); }

/* Eltern-Einverständnis abhaken (Lehrer-Dashboard) */
.consent-toggle { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--text-muted); cursor:pointer; }
.student-row .consent-toggle { order: 2; }
.student-row:has(.consent-toggle)::after { content: ""; flex-basis: 100%; height: 0; order: 1; }
.consent-toggle input { width:16px; height:16px; accent-color: var(--gold); }
.student-row .student-remove-btn { order: 3; margin-left: auto; color: var(--text-muted); font-size: 12px; }
.student-row .student-remove-btn:hover { color: var(--red); }

/* ===== Freigabe-Button ===== */
.share-session-btn { color: var(--text-muted); transition: color var(--dur-base) var(--ease-out); }
.share-session-btn.shared { color: var(--green); }
.share-session-btn:hover { color: var(--text); }

/* ===== Lehrer-Dashboard ===== */
.teacher-dash-head { margin-bottom: 20px; }
.teacher-summary {
  display: flex; gap: 20px; align-items: center;
  background: var(--card-bg); border: none;
  box-shadow: 0 1px 2px rgba(24,24,27,0.04), 0 4px 12px rgba(24,24,27,0.05);
  border-radius: var(--r-card); padding: 14px 18px; margin-bottom: 20px;
}
.teacher-summary-item {
  display: flex; align-items: center; gap: 8px;
  font-size: 22px; font-weight: 800;
}
.teacher-summary-item .hint { font-size: 12px; font-weight: 500; }
.teacher-class-card {
  display: block; width: 100%; box-sizing: border-box;
  margin-bottom: 10px; cursor: pointer;
  transition: transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);
}
.teacher-class-card:hover { transform: translateY(-1px); box-shadow: 0 2px 4px rgba(24,24,27,0.05), 0 8px 20px rgba(24,24,27,0.08); }
.teacher-class-top { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 10px; }
.teacher-class-name { font-size: 14px; font-weight: 600; margin-bottom: 2px; }
.teacher-class-ampel { display: flex; align-items: center; gap: 6px; font-size: 13px; }

/* ===== Tägliche To-Do-Checkliste ===== */
.todo-banner {
  background: var(--card-bg); border-radius: var(--r-card); padding: 20px; margin-bottom: 16px;
}
.todo-banner-head {
  display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px;
}
.todo-banner-title { font-size: 14px; font-weight: 700; color: var(--text); }
.todo-done-count { font-size: 12px; color: var(--text-muted); }
.todo-item {
  display: flex; align-items: center; gap: 10px;
  padding: 9px 0; cursor: pointer;
  border-bottom: 1px solid var(--card-border);
  transition: opacity 150ms;
}
.todo-item:last-child { border-bottom: none; }
.todo-item:hover { opacity: 0.8; }
.todo-item.todo-done { opacity: 0.5; }
.todo-check {
  width: 18px; height: 18px; border-radius: 50%; flex-shrink: 0;
  border: 1.5px solid var(--card-border);
  display: flex; align-items: center; justify-content: center;
}
.todo-done .todo-check { background: var(--gold); border-color: var(--gold); color: var(--gold-ink); }
.todo-text { font-size: 13.5px; font-weight: 500; flex: 1; }
.todo-done .todo-text { text-decoration: line-through; color: var(--text-muted); }
.todo-arrow { color: var(--text-faint); flex-shrink: 0; }

/* ===== Interaktive Landing-Demo ===== */
.demo-wrap {
  max-width: 540px; margin: 0 auto;
  background: var(--bg-second); border: 1px solid var(--card-border);
  border-radius: var(--r-card); overflow: hidden;
}
.demo-chat {
  min-height: 180px; max-height: 260px;
  overflow-y: auto; padding: 18px 18px 8px;
  display: flex; flex-direction: column; gap: 10px;
}
.demo-input-row {
  display: flex; gap: 8px; padding: 12px 16px;
  border-top: 1px solid var(--card-border);
  background: var(--bg-main);
}
.demo-input {
  flex: 1; padding: 9px 12px; border-radius: var(--r-button);
  border: 1px solid var(--card-border); background: var(--bg-second);
  font-size: 13.5px; color: var(--text); font-family: var(--font-body);
}
.demo-input:focus { outline: none; border-color: var(--gold); }
.demo-cta {
  padding: 20px 18px; text-align: center;
  border-top: 1px solid var(--card-border);
}
.demo-cta p { font-size: 14px; color: var(--text-muted); margin: 0 0 12px; }

/* ===== Coach als Zentrum (Dashboard) ===== */
.coach-center-card {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 22px 24px; margin-bottom: 14px; cursor: pointer;
  background: linear-gradient(135deg, rgba(37,99,235,0.06) 0%, rgba(151,117,250,0.04) 100%);
  border: 1px solid rgba(37,99,235,0.18);
  border-radius: var(--r-card);
}
.coach-center-left { flex: 1; min-width: 0; }
.coach-center-eyebrow {
  font-size: 11px; font-weight: 600; text-transform: uppercase;
  letter-spacing: .08em; color: var(--gold); margin-bottom: 6px;
}
.coach-center-title {
  font-family: var(--font-title); font-size: 17px; font-weight: 700;
  color: var(--text); margin-bottom: 4px; line-height: 1.3;
}
.coach-center-sub { font-size: 13px; color: var(--text-muted); line-height: 1.5; }
.coach-center-arrow {
  width: 40px; height: 40px; border-radius: var(--r-card);
  background: var(--gold); color: var(--gold-ink);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  transition: transform 200ms ease;
}
.coach-center-card:hover .coach-center-arrow { transform: translateX(3px); }

/* ===== Sekundäre Tiles (Werkzeuge + Generierungen) ===== */
.secondary-tiles { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 20px; }
@media (max-width: 500px) { .secondary-tiles { grid-template-columns: 1fr; } }
.secondary-tile {
  display: flex; align-items: center; gap: 12px; padding: 14px 16px; cursor: pointer;
}
.secondary-tile-title { font-size: 13.5px; font-weight: 600; }
.secondary-tile-sub { font-size: 12px; color: var(--text-muted); }

/* ===== Coach als Zentrum der App ===== */
.coach-featured-hint { font-size: 12.5px; color: var(--text-secondary); font-weight: 500; }

/* Sekundäre Tiles etwas kleiner */
.tiles-secondary { gap: 12px; }
.tiles-secondary .tile { padding: 16px 18px; }

/* ===== Micro-Animationen: alle interaktiven Elemente ===== */

/* Buttons: sanftere Hover-Transitions */
.btn {
  transition: background 150ms ease, color 150ms ease, transform 100ms ease,
              box-shadow 150ms ease, border-color 150ms ease;
}
.btn-primary:hover { transform: translateY(-1px); box-shadow: var(--shadow-lift); }
.btn-primary:active { transform: translateY(0); box-shadow: none; }
.btn-ghost:hover { transform: translateY(-1px); }

/* Karten: Lift-Effekt einheitlich */
.card { transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease; }
.card:not(.tile):not(.coach-featured-card):not(.stat-card):hover {
  /* Karten die nicht bereits hover-Effekte haben */
}
.stat-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-soft); }

/* Nav-Items: sanftere Übergänge */
.nav-item { transition: background 150ms ease, color 150ms ease; }
.nav-item:hover { background: rgba(17,17,17,0.04); }

/* Coach-Nachrichten: Einblend-Animation für neue Nachrichten */
.msg-enter {
  animation: msgSlideIn 0.35s cubic-bezier(0.22, 1, 0.36, 1) both;
}
@keyframes msgSlideIn {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Thinking-Dots: lebendiger */
@keyframes thinkingBounce {
  0%, 80%, 100% { transform: translateY(0); opacity: 0.4; }
  40%            { transform: translateY(-5px); opacity: 1; }
}
.thinking-dot {
  display: inline-block;
  animation: thinkingBounce 1.2s infinite;
  font-size: 18px; line-height: 1;
}
.thinking-dot:nth-child(2) { animation-delay: 0.15s; }
.thinking-dot:nth-child(3) { animation-delay: 0.30s; }

/* Seiten-Übergänge: sanfteres Erscheinen */
.page.active {
  animation: pageIn 0.28s cubic-bezier(0.22, 1, 0.36, 1) both;
}
@keyframes pageIn {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Input-Felder: Focus-Ring */
input:focus, textarea:focus, select:focus {
  box-shadow: 0 0 0 3px rgba(37,99,235,0.12);
}

/* Quick-Action-Buttons: Hover mit Icon-Farbe */
.dash-quick-card:active { transform: scale(0.98); }

/* ===== Setup-Card: saubereres Coach-Setup ===== */
.setup-card { padding: 24px 26px; }
.setup-card-title {
  font-family: var(--font-title); font-size: 16px; font-weight: 800;
  margin-bottom: 20px;
}

/* ===== Coach-Gesprächs-Bereich: luftiger ===== */
.coach-block { margin-bottom: 14px; }

/* ===== Fertiger Text: grosse, dokumentartige, editierbare Endansicht =====
   Ersetzt die vorherige kleine Vorschau-Box. Die Card selbst bleibt per
   .hidden verborgen, bis der fertige Text tatsaechlich vorliegt (siehe
   updateCombinedText in coach.js) - waehrend des Prozesses ist hier nichts
   zu sehen, keine Platzhalter-Box mehr. */
.coach-final-card { padding: 32px 36px; }
.coach-final-card .result-head { margin-bottom: 20px; }
.coach-final-card .card-title { font-size: 17px; }
.coach-combined {
  font-size: 14px; line-height: 1.75; color: var(--text);
  white-space: pre-wrap; min-height: 60px;
}
.coach-final-textarea {
  display: block; width: 100%; border: none; outline: none; resize: none;
  background: transparent; color: var(--text); font-family: inherit;
  font-size: 16px; line-height: 1.85; padding: 0;
  min-height: 320px; overflow: hidden; /* Hoehe wird per JS ans Inhalt angepasst */
}
.coach-final-textarea::placeholder { color: var(--text-muted); }
.coach-final-hint { font-size: 12.5px; color: var(--text-muted); margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--card-border); }

/* ===== Sidebar-Logo schöner ===== */
.sidebar-logo { padding: 6px 10px 18px; }

/* ===== Nav-Section-Label ===== */
.nav-section-label {
  font-size: 10.5px; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.1em; color: var(--text-faint);
  padding: 10px 10px 4px; margin-top: 2px;
}

/* ===== Tool-Title grösser ===== */
.tool-title { font-size: 22px !important; margin-bottom: 4px; }

/* ===== Hint-Text lesbarer ===== */
.hint { font-size: 12.5px; color: var(--text-muted); line-height: 1.6; }

/* ===== Auth-Karte (Login/Register) schöner ===== */
.auth-card { box-shadow: var(--shadow-lift); border-radius: var(--r-card) !important; }
.auth-title { font-size: 24px !important; }

/* ================================================================
   COACHING STEPS – geführte Schritte statt Chat-Bubbles
   ================================================================ */

.coaching-step {
  margin-bottom: 14px;
  border-radius: var(--r-card);
  overflow: hidden;
  border: none;
  box-shadow: 0 1px 2px rgba(24,24,27,0.04), 0 4px 10px rgba(24,24,27,0.04);
  transition: opacity var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out);
}
/* Aktiver Schritt: blauer Fokus-Ring statt Rahmen, staerkerer Schichtschatten */
.coaching-step.step-active {
  box-shadow: 0 0 0 2px var(--gold), 0 8px 24px rgba(37,99,235,0.14);
}
/* Erledigter Schritt: grüner Haken, volle Deckkraft, Antwort + Ergebnis sichtbar */
.coaching-step.step-done .step-num-badge { background: var(--green); }
/* Kommender Schritt: eingeklappt (kein Body), ausgegraut */
.coaching-step.step-upcoming { opacity: 0.55; box-shadow: 0 1px 2px rgba(24,24,27,0.03); }
.coaching-step.step-upcoming .step-num-badge { background: var(--bg-second); }
.coaching-step.step-upcoming .step-title { color: var(--text-muted); }

/* Schritt-Header: Punkt/Haekchen statt Zahl + Titel + Position */
.step-header {
  display: flex; align-items: center; gap: 14px;
  padding: 16px 20px;
  background: var(--card-bg);
  border-bottom: none;
}
.coaching-step.step-active .step-header { background: var(--gold-light); }
.step-num-badge {
  width: 28px; height: 28px; border-radius: 50%; flex-shrink: 0;
  background: var(--gold); color: var(--gold-ink);
  display: flex; align-items: center; justify-content: center;
}
.step-header-text { flex: 1; }
.step-title { font-size: 14.5px; font-weight: 700; color: var(--text); }
.step-hint { font-size: 12px; color: var(--text-muted); margin-top: 1px; }
.step-of { font-size: 11px; color: var(--text-faint); font-weight: 600; white-space: nowrap; }

/* Schritt-Body */
.step-body { padding: 18px 20px; background: var(--card-bg); }

/* Coach-Nachricht: Avatar-Bild + Sprechblase */
.step-history { display: flex; flex-direction: column; gap: 4px; margin-bottom: 14px; }
.step-coach-q {
  display: flex; gap: 9px; align-items: flex-start; max-width: 88%;
}
.step-coach-avatar {
  width: 26px; height: 26px; border-radius: 50%; flex-shrink: 0; margin-top: 2px;
  background: var(--gold-light);
  object-fit: contain; padding: 4px; box-sizing: border-box;
}
.step-coach-bubble {
  flex: 1; background: var(--card-bg); border-radius: 4px 16px 16px 16px; padding: 12px 15px;
  box-shadow: 0 1px 2px rgba(24,24,27,0.04), 0 4px 10px rgba(24,24,27,0.04);
}

/* ── Review-Schritt: KI-Entwurf zum Bearbeiten, bevor er final wird ────── */
.step-review-label {
  display: flex; align-items: center; gap: 6px;
  font-size: 12px; font-weight: 600; color: var(--gold); margin-bottom: 10px;
}
.step-review-label::before {
  content: '✎'; font-size: 13px;
}
.step-review-textarea {
  border-color: rgba(37,99,235, 0.35);
  background: #FFFCF7;
  min-height: 110px;
}
/* Label ausgeblendet: die Bubble-Farbe/Ausrichtung sagt schon, wer spricht -
   ein zusaetzliches "COACH"-Etikett ist redundant (Anti-Slop: keine
   unnoetigen Meta-Labels ueber jeder Zeile). */
.step-coach-label { display: none; }
.step-coach-text {
  display: block; font-size: 13.5px; line-height: 1.55; color: var(--text);
}

/* Schüler-Antwort: rechts ausgerichtet, gefuellte Akzentflaeche - spiegelt
   genau die Konversations-Bubble-Grammatik (siehe Redesign-Konzept). */
.step-student-a {
  align-self: flex-end;
  margin: 0; max-width: 82%;
  padding: 12px 15px;
  background: var(--gold);
  border-radius: 16px 4px 16px 16px;
  box-shadow: 0 2px 8px rgba(37,99,235,0.18);
}
.step-student-label { display: none; }
.step-student-text {
  display: block; font-size: 13.5px; line-height: 1.55; color: var(--gold-ink);
}

/* Eingabe-Bereich: grösse Textarea, schreibt sich gut */
.step-textarea {
  width: 100%; min-height: 90px;
  padding: 12px 44px 12px 14px; font-size: 14.5px; line-height: 1.65;
  border: none;
  border-radius: var(--r-small); background: var(--bg-second);
  color: var(--text); font-family: var(--font-body);
  resize: vertical; transition: box-shadow var(--dur-base) var(--ease-out);
}
.step-textarea:focus {
  outline: none;
  box-shadow: 0 0 0 2px var(--gold);
}

/* Eingabe-Zeile braucht position:relative, damit der Mikrofon-Knopf in
   der Ecke des Textfelds schweben kann, ohne das Layout zu verschieben. */
.step-input-row { position: relative; }

/* Mikrofon-Knopf: standardmässig versteckt, erscheint nur wenn der
   Browser die Web Speech API wirklich unterstützt (siehe voice.js) —
   kein kaputter Knopf in Browsern ohne Unterstützung. */
.mic-btn {
  display: none; position: absolute; right: 10px; bottom: 10px;
  width: 32px; height: 32px; border-radius: 50%; border: none;
  background: var(--card-bg); color: var(--text-faint);
  align-items: center; justify-content: center; cursor: pointer;
  box-shadow: 0 1px 3px rgba(17,17,17,0.12);
  transition: color 150ms ease, background 150ms ease;
}
html.voice-supported .mic-btn { display: flex; }
.mic-btn:hover { color: var(--gold); }
.mic-btn.mic-listening {
  color: #fff; background: var(--red);
  animation: mic-pulse 1.4s ease-in-out infinite;
}
@keyframes mic-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(166,65,47,0.35); }
  50% { box-shadow: 0 0 0 7px rgba(166,65,47,0); }
}

/* ── Sprachmodus: Rundknopf im Chat + eigenes Vollbild-Panel ─────────────── */
html:not(.voice-supported) .btn-voice-round { display: none; }
html:not(.voice-supported) #cover-p3-mic { display: none; }
.btn-voice-round {
  width: 40px; height: 40px; border-radius: 50%; border: none; flex-shrink: 0;
  background: var(--gold); color: var(--gold-ink); cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background 150ms ease;
}
.btn-voice-round:hover { background: var(--gold-hover); }

#interview-voice-panel {
  position: fixed; inset: 0; z-index: 300; background: var(--bg-main);
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 24px;
}
#interview-voice-panel.hidden { display: none; }
.voice-panel-close {
  position: absolute; top: 20px; right: 20px; width: 40px; height: 40px;
  border-radius: 50%; border: none; background: var(--card-bg);
  color: var(--text-muted); display: flex; align-items: center; justify-content: center; cursor: pointer;
  box-shadow: 0 1px 2px rgba(24,24,27,0.04), 0 4px 10px rgba(24,24,27,0.06);
  transition: color var(--dur-base) var(--ease-out);
}
.voice-panel-close:hover { color: var(--text); }
.voice-panel-orb {
  width: 96px; height: 96px; border-radius: 50%; background: var(--bg-second);
  box-shadow: 0 0 0 1.5px var(--card-border) inset;
  transition: box-shadow var(--dur-base) var(--ease-out), background var(--dur-base) var(--ease-out);
}
.voice-panel-orb.orb-listening { box-shadow: 0 0 0 2px var(--gold) inset, 0 0 0 8px var(--gold-light); background: var(--gold-light); }
.voice-panel-orb.orb-speaking { box-shadow: 0 0 0 2px var(--violet) inset, 0 0 0 8px rgba(107,122,153,0.1); background: rgba(107,122,153,0.1); }
.voice-panel-status { font-size: 15px; color: var(--text-muted); font-weight: 500; }

/* Aktionen */
.step-actions {
  display: flex; gap: 8px; margin-top: 12px; flex-wrap: wrap; align-items: center;
}
.step-done-btn { color: var(--gold) !important; font-weight: 600; }
.coach-privacy-hint { display: flex; align-items: flex-start; gap: 6px; margin: 8px 0 0; font-size: 12px; line-height: 1.45; color: var(--text-faint); }
.coach-privacy-hint svg { width: 13px; height: 13px; flex-shrink: 0; margin-top: 2px; }

/* Wenn der Coach selbst inhaltlich signalisiert hat, dass genug beisammen
   ist (nicht nur die Antworten-Zaehlung) - kurzer, dezenter Hinweis-Puls,
   damit der Vorschlag auffaellt, ohne aufdringlich zu wirken. */
.step-done-btn-suggested {
  background: rgba(37,99,235, 0.1) !important;
  border-color: var(--gold) !important;
  animation: done-btn-suggest 1.8s ease-in-out 2;
}
@keyframes done-btn-suggest {
  0%, 100% { box-shadow: 0 0 0 0 rgba(37,99,235, 0.25); }
  50% { box-shadow: 0 0 0 5px rgba(37,99,235, 0); }
}
@media (max-width: 480px) {
  /* Wie im Mockup: Buttons untereinander statt nebeneinander — auf schmalen
     Screens sonst zu wenig Tap-Fläche pro Button. */
  .step-actions { flex-direction: column; align-items: stretch; }
  .step-actions .btn { width: 100%; height: 46px; }
  .step-actions .step-done-btn { margin-left: 0 !important; order: -1; }
}

/* ================================================================
   EMPTY STATE – wenn keine Sessions vorhanden
   ================================================================ */
.empty-state-icon {
  width: 52px; height: 52px; border-radius: var(--r-card);
  background: rgba(17,17,17,0.05);
  display: flex; align-items: center; justify-content: center;
  margin: 0 auto 14px; color: var(--text-muted);
}
.empty-state-title { font-size: 15px; font-weight: 700; margin-bottom: 6px; }
.empty-state-sub { font-size: 13px; color: var(--text-muted); line-height: 1.6; }

/* ===== Dashboard: subtile Quick-Links statt Kacheln ===== */
.dash-quick-links {
  display: flex; gap: 8px; margin-top: 16px; flex-wrap: wrap;
}
.dash-quick-link {
  display: flex; align-items: center; gap: 7px;
  padding: 8px 14px; border-radius: var(--r-small);
  background: var(--bg-second); border: 1px solid var(--card-border);
  color: var(--text-muted); font-size: 13px; font-family: var(--font-body);
  cursor: pointer; transition: color 150ms, border-color 150ms, background 150ms;
}
.dash-quick-link:hover {
  color: var(--text-primary); border-color: rgba(17,17,17,0.16);
  background: rgba(17,17,17,0.03);
}

/* ===== Coaching: Block abgeschlossen – Erfolgs-Zustand ===== */
.step-final {
  padding: 14px 16px;
  background: #ECFDF5;
  border: 1px solid #A7F3D0;
  border-radius: var(--r-small);
}
.coach-final-label {
  display: flex; align-items: center; gap: 6px;
  font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em;
  color: #059669; margin-bottom: 6px;
}
.coach-final-check {
  display: inline-flex; width: 16px; height: 16px; border-radius: 50%;
  background: #059669; color: #fff; align-items: center; justify-content: center; flex-shrink: 0;
}
.coach-final-check svg { width: 10px; height: 10px; }
.coach-final-text { font-size: 14px; color: var(--text); font-style: italic; line-height: 1.6; }
/* ===== Sidebar: User-Card besser ===== */
.sidebar-user {
  border: 1px solid var(--card-border) !important;
  background: var(--bg-second) !important;
}

/* ===== Geteilte Session in Klassen-Ansicht ===== */
.joined-class-shared { padding-top: 8px; border-top: 1px solid var(--card-border); }
.shared-item {
  display: flex; justify-content: space-between; align-items: center;
  padding: 8px 0; border-bottom: 1px solid var(--card-border); gap: 8px;
}
.shared-item:last-child { border-bottom: none; }
.shared-item-label { font-size: 13px; font-weight: 600; margin-right: 8px; }
.shared-item-role { font-size: 12px; color: var(--text-muted); }

/* ===== Rückmeldung der Lehrperson zu freigegebenen Texten (keine Noten) ===== */
.feedback-item { margin-top: 8px; padding: 10px 12px; background: var(--gold-light); border-radius: var(--r-small); font-size: 13px; line-height: 1.55; }
.feedback-item-meta { font-size: 11.5px; color: var(--text-muted); margin-bottom: 3px; }
.feedback-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
.feedback-chips .chip { font-family: inherit; cursor: pointer; }

/* ===== Share-Button im Gespräch ===== */
.share-session-btn.shared, .btn.shared { color: #16a34a; }

/* ===== Punkt 14: Tracker visueller ===== */
.app-card-v2 {
  display: flex; justify-content: space-between; align-items: center;
  padding: 16px 18px; margin-bottom: 10px;
  gap: 12px; flex-wrap: wrap;
  transition: transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);
}
.app-card-v2:hover { transform: translateY(-1px); box-shadow: 0 2px 4px rgba(24,24,27,0.05), 0 8px 20px rgba(24,24,27,0.07); }
.a-info-v2 { flex: 1; min-width: 0; }
.a-company-v2 { font-size: 14.5px; font-weight: 700; color: var(--text); }
.a-position-v2 { font-size: 13px; color: var(--text-muted); margin-top: 2px; }
.a-date-v2 { font-size: 12px; color: var(--text-faint); margin-top: 4px; }
.followup-badge { font-size: 11.5px; color: var(--amber-text); font-weight: 600; margin-top: 6px; }
.a-right-v2 { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.status-pill-v2 {
  font-size: 12px; font-weight: 700; padding: 4px 12px;
  border-radius: var(--r-pill); white-space: nowrap;
}
.tracker-chevron-btn {
  width: 32px; height: 32px; background: var(--bg-second);
  border: none; border-radius: var(--r-small);
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; flex-shrink: 0; transition: background var(--dur-base) var(--ease-out);
}
.tracker-chevron-btn:hover { background: var(--card-border); }
.app-card-rejected { opacity: 0.85; }

/* ===== Punkt 10: Kontext vor Fragen ===== */
.step-why {
  font-size: 11.5px; color: var(--text-muted); margin-bottom: 10px;
  padding: 6px 10px; background: rgba(37,99,235,0.04);
  border-radius: var(--r-small); border-left: 3px solid rgba(37,99,235,0.2);
}
.step-why .step-hint { font-style: normal; color: var(--text-muted); }

/* ===== Punkt 6: Setup schlanker ===== */
.setup-card .chips { flex-wrap: wrap; gap: 6px; }
.setup-card .chip { font-size: 12.5px; padding: 5px 12px; }

/* ===== Punkt 13: Motivierende Mission-Zeile (grosse, fette Home-Zeile) ===== */
.greeting-mission {
  font-family: var(--font-title);
  font-size: 22px; font-weight: 800; letter-spacing: -0.01em;
  color: var(--text); line-height: 1.3; margin-bottom: 24px;
}

/* ===== Dschungel-Banner (mit Nutzer abgestimmte Demo, jetzt live) ===== */
#page-dashboard .dashboard-content-pad { padding: 0; }

/* ===== Punkt 18: Fokus-Widget (bereits oben in .focus-widget zusammengeführt) ===== */

/* ===== Punkt 6: To-Do Aufgaben (bereits oben zusammengeführt) ===== */
.todo-item:not(.todo-done):hover {
  background: rgba(37,99,235,0.04);
  border-radius: var(--r-small);
}

/* ===== Punkt 4+11: Premium-Gefühl durch subtile Schatten (bereits oben in .coach-featured-card zusammengeführt) ===== */

/* ================================================================
   MOBILE DASHBOARD (Screen 5): Gradient-Hero + grosse CTAs
   Nur auf schmalen Screens sichtbar; ersetzt dort Stat-Row/Trophäenpfad,
   die auf so wenig Breite zu gedrängt wirken.
   ================================================================ */
.dash-mobile-hero { display: none; }
.dash-mobile-ctas { display: none; }

@media (max-width: 520px) {
  .dash-mobile-hero {
    display: block; margin: 16px 0 20px;
    background: linear-gradient(135deg, #2563EB 0%, #1D4ED8 100%);
    border-radius: var(--r-card); padding: 20px;
    box-shadow: var(--shadow-lift);
  }
  .dash-mobile-hero-label {
    font: 600 11px var(--font-body); color: var(--gold-ink); opacity: 0.75;
    letter-spacing: 0.06em; text-transform: uppercase;
  }
  .dash-mobile-hero-pct { font-size: 32px; font-weight: 800; color: var(--gold-ink); margin: 6px 0; }
  .dash-mobile-hero-track { height: 6px; background: rgba(10,46,34,0.15); border-radius: var(--r-button); overflow: hidden; }
  .dash-mobile-hero-fill { width: 0%; height: 100%; background: var(--gold-ink); border-radius: var(--r-button); transition: width 0.8s cubic-bezier(0.22,1,0.36,1); }
  .dash-mobile-hero-streak { font-size: 13px; font-weight: 500; color: var(--gold-ink); margin-top: 14px; }

  .dash-mobile-ctas { display: flex; flex-direction: column; gap: 10px; margin: 20px 0; }
  .dash-mobile-ctas .btn { width: 100%; height: 48px; font-size: 15px; }

  /* Auf dem Handy ersetzt die Hero-Karte den Stat-Row und den Trophäenpfad —
     zu viele Elemente auf so wenig Breite wirken gedrängt statt klar. */
  #page-dashboard .stat-row,
  #page-dashboard .progress-journey,
  #page-dashboard .focus-widget {
    display: none;
  }
}

/* ================================================================
   GENERIERUNGEN: Mobile-Karten mit Gradient-Header (wie Mockup-Screen "Werkzeuge")
   ================================================================ */
.tile-mobile-banner { display: none; }
.tile-mobile-badge {
  display: inline-block; font: 700 9px 'Inter'; letter-spacing: .03em; text-transform: uppercase;
  padding: 2px 7px; border-radius: var(--r-pill); vertical-align: middle; margin-left: 4px;
}
.tile-mobile-badge-done { background: #F0FAF3; color: #15803D; }
.tile-mobile-badge-new { background: var(--bg-second); color: var(--gold-text); }
@media (max-width: 480px) {
  #generate-tiles { display: flex; flex-direction: column; gap: 12px; }
  #generate-tiles .tile { padding: 0; overflow: hidden; }
  #generate-tiles .tile-icon { display: none; }
  #tools-tiles { display: flex; flex-direction: column; gap: 12px; }
  #tools-tiles .tile { padding: 0; overflow: hidden; }
  #tools-tiles .tile-icon { display: none; }
  .tile-mobile-banner {
    display: flex; align-items: center; justify-content: center; gap: 6px; height: 56px;
  }
  .tile-mobile-banner-violet { background: linear-gradient(135deg, #2563EB, #1D4ED8); }
  .tile-mobile-banner-blue { background: linear-gradient(135deg, #2563EB, #1D4ED8); }
  .tile-mobile-banner-amber { background: linear-gradient(135deg, #D97706, #B45309); }
  #generate-tiles .tile h3 { padding: 14px 16px 0; margin: 0; font-size: 15px; }
  #generate-tiles .tile p { padding: 2px 16px 14px; margin: 0; font-size: 13px; }
  #tools-tiles .tile h3 { padding: 14px 16px 0; margin: 0; font-size: 15px; }
  #tools-tiles .tile p { padding: 2px 16px 14px; margin: 0; font-size: 13px; }
}

/* ================================================================
   PROFIL-SEITE: Mobile-Header, Mini-Stats, Vollstaendigkeit, Tags
   (nur auf schmalen Screens sichtbar — Desktop-Settings bleibt wie gehabt)
   ================================================================ */
.profile-mobile-header, .profile-mobile-stats, .profile-mobile-tags, .profile-mobile-complete {
  display: none;
}
@media (max-width: 480px) {
  .profile-mobile-header { display: flex; align-items: center; gap: 14px; padding: 4px 4px 16px; }
  .profile-mobile-avatar {
    width: 52px; height: 52px; border-radius: 50%; background: var(--gold); color: var(--gold-ink);
    display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 20px; flex-shrink: 0;
  }
  .profile-mobile-name { font-size: 17px; font-weight: 700; color: var(--text); }
  .profile-mobile-plan { font-size: 13px; color: var(--text-faint); margin-top: 2px; }

  .profile-mobile-stats { display: flex; gap: 10px; margin-bottom: 16px; }
  .profile-mobile-stat { flex: 1; text-align: center; padding: 12px; }
  .profile-mobile-stat-num { font-size: 18px; font-weight: 800; }
  .profile-mobile-stat-label { font-size: 11px; color: var(--text-muted); margin-top: 2px; }

  .profile-mobile-tags { display: block; margin-bottom: 16px; padding: 14px 16px; }
  .profile-mobile-tags-label { font: 600 10px 'Inter'; color: var(--text-faint); letter-spacing: .06em; text-transform: uppercase; margin-bottom: 8px; }
  .profile-mobile-tags-row { display: flex; gap: 8px; flex-wrap: wrap; }
  .profile-mobile-tag { font: 600 12px 'Inter'; padding: 5px 12px; border-radius: var(--r-pill); }

  .profile-mobile-complete {
    display: block; background: linear-gradient(135deg, #2563EB, #1D4ED8);
    border-radius: var(--r-card); padding: 16px; margin-bottom: 16px;
  }
  .profile-mobile-complete-head { display: flex; justify-content: space-between; font-size: 13px; font-weight: 600; color: var(--gold-ink); }
  .profile-mobile-complete-track { height: 6px; background: rgba(10,46,34,.15); border-radius: var(--r-button); margin-top: 10px; overflow: hidden; }
  .profile-mobile-complete-fill { height: 100%; background: var(--gold-ink); border-radius: var(--r-button); transition: width .6s ease; }
  .profile-mobile-complete-hint { font-size: 12px; color: rgba(10,46,34,.7); margin-top: 10px; }
}

/* ================================================================
   REFERRAL-KARTE (Einstellungen)
   ================================================================ */
.referral-card { border-color: var(--card-border); }
.referral-link-row { display: flex; align-items: center; gap: 8px; margin: 12px 0 16px; }
.referral-link-input {
  flex: 1; padding: 10px 12px; border-radius: var(--r-small); border: 1px solid var(--card-border);
  background: var(--bg-second); color: var(--text-muted); font-size: 13px; font-family: var(--font-body);
}
.referral-stats-row { display: flex; gap: 24px; flex-wrap: wrap; }
.referral-stat { display: flex; flex-direction: column; }
.referral-stat-num { font-size: 22px; font-weight: 800; color: var(--gold); }
.referral-stat-label { font-size: 12px; color: var(--text-muted); margin-top: 2px; }

/* ══════════════════════════════════════════════════════════════════════
   BERUFS-FINDER — interaktiver Discovery-Flow. Emoji-Icons statt SVG,
   Groesse ueber font-size gesteuert (keine SVG-Breite/Hoehe-Fallstricke).
   ══════════════════════════════════════════════════════════════════════ */

.career-intro-icon { font-size: 38px; margin-bottom: 14px; line-height: 1; }
.career-intro-title { font-size: 22px; font-weight: 800; letter-spacing: -0.02em; margin-bottom: 12px; }
.career-intro-sub { font-size: 14.5px; color: var(--text-muted); line-height: 1.6; margin-bottom: 24px; }
.career-intro-list { display: flex; flex-direction: column; gap: 8px; max-width: 380px; margin: 0 0 26px; }
.career-intro-item { font-size: 14px; font-weight: 500; color: var(--text-muted); display: flex; align-items: center; gap: 8px; padding: 4px 0; }
.career-intro-meta { font-size: 12.5px; color: var(--text-faint); margin-top: 16px; }
.career-intro-hint { font-size: 12.5px; color: var(--text-faint); margin-top: 8px; }

.career-q-progress-label { font-size: 12.5px; color: var(--text-muted); font-weight: 600; margin-bottom: 8px; display: flex; justify-content: space-between; }
.career-q-progress-bar { display: flex; align-items: center; gap: 3px; margin-bottom: 28px; }
.career-q-title { font-size: 19px; font-weight: 700; margin-bottom: 6px; letter-spacing: -0.01em; }
.career-q-sub { font-size: 13.5px; color: var(--text-muted); margin-bottom: 20px; min-height: 1px; }
.career-q-options { display: grid; gap: 10px; }
.career-q-options.grid-2 { grid-template-columns: 1fr 1fr; }
.career-q-opt { background: var(--card-bg); border: 1.5px solid var(--card-border); border-radius: var(--r-card); padding: 18px 14px; text-align: center; cursor: pointer; transition: border-color 150ms ease, background 150ms ease; }
.career-q-opt:hover { border-color: rgba(17,17,17,0.16); background: var(--bg-second); }
.career-q-opt.selected { border-color: var(--gold); background: var(--gold-light); }
.career-q-unsure-link {
  display: inline-block; margin-top: 14px; font-size: 12.5px; color: var(--text-faint);
  text-decoration: underline; text-decoration-color: var(--card-border); cursor: pointer;
}
.career-q-unsure-link:hover { color: var(--text-muted); }
.career-q-unsure-link.selected { color: var(--gold-text); text-decoration-color: var(--gold); font-weight: 600; }
/* Berufs-Finder mit abgestuften Antworten (19.10.2026): Knoepfe statt divs,
   damit Tastatur und Bildschirmleser funktionieren - Aussehen bleibt gleich. */
button.career-q-unsure-link { background: none; border: 0; padding: 0; font-family: inherit; }
button.career-q-opt, button.career-q-opt-row { font: inherit; color: inherit; width: 100%; }
button.career-q-opt-row { text-align: left; }
.career-q-opt:focus-visible, .career-q-opt-row:focus-visible, .career-q-unsure-link:focus-visible, .career-link-btn:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
.career-q-kicker { font-size: 11.5px; font-weight: 700; color: var(--text-muted); text-transform: uppercase; letter-spacing: .04em; margin-bottom: 6px; }
.career-q-scale { grid-template-columns: 1fr; gap: 8px; max-width: 420px; }
.career-q-scale .career-q-opt-row { padding: 14px 16px; min-height: 48px; }
.career-q-enter .career-q-title, .career-q-enter .career-q-sub, .career-q-enter .career-q-options { animation: career-q-in 180ms ease-out; }
@keyframes career-q-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .career-q-enter .career-q-title, .career-q-enter .career-q-sub, .career-q-enter .career-q-options { animation: none; } }
.career-profile-bar-value { color: var(--text-muted); font-weight: 600; }
.career-why-item.fyi { color: var(--text-muted); }
.career-data-note { font-size: 12.5px; line-height: 1.45; color: var(--text-muted); margin: 4px 0 10px; }
.career-pattern .career-data-note { margin: 10px 0 0; }
#career-more-btn { margin-bottom: 8px; }
.career-coverage-note { font-size: 12.5px; color: var(--text-muted); line-height: 1.5; margin: 6px 0 22px; }
/* Kurzprofil-Knopf ist ein Link: sieht aus wie die anderen Knoepfe, ohne Unterstrich */
.career-job-actions a.btn, .career-job-actions a.btn:hover, .career-job-actions a.btn:focus { text-decoration: none; }
.career-link-btn { background: none; border: 0; padding: 0; font: inherit; color: var(--gold-text); text-decoration: underline; cursor: pointer; }

/* Motivationsschreiben-Coach: benannte Etappen (Punkt 4.2) */
.cover-stage-track { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; margin-bottom: 16px; font-size: 12px; }
.cover-stage-dot { color: var(--text-faint); font-weight: 600; padding: 3px 8px; border-radius: 100px; }
.cover-stage-dot.current { color: var(--gold-text); background: var(--gold-light); }
.cover-stage-dot.done { color: var(--text-muted); }
.cover-stage-sep { color: var(--text-faint); }
@media (max-width: 600px) { #cover-letter-progress .cover-stage-sep { display: none; } }
#cover-type-edit-wrap, #cover-type-edit-options { flex-wrap: wrap; max-width: 100%; }
.career-q-opt .career-q-opt-icon { font-size: 24px; margin-bottom: 8px; display: block; line-height: 1; }
.career-q-opt .career-q-opt-label { font-size: 13.5px; font-weight: 600; line-height: 1.35; display: block; }
.career-q-opt-row { background: var(--card-bg); border: 1.5px solid var(--card-border); border-radius: var(--r-button); padding: 13px 15px; display: flex; align-items: center; gap: 11px; cursor: pointer; transition: border-color 150ms ease, background 150ms ease; }
.career-q-opt-row:hover { border-color: rgba(17,17,17,0.16); background: var(--bg-second); }
.career-q-opt-row.selected { border-color: var(--gold); background: var(--gold-light); }
.career-q-opt-row .career-q-opt-icon { font-size: 18px; flex-shrink: 0; line-height: 1; }
.career-q-opt-row .career-q-opt-label { font-size: 13.5px; font-weight: 600; }
.career-q-hint { font-size: 12px; color: var(--text-faint); margin-top: 12px; text-align: center; }
.career-q-nav { display: flex; justify-content: space-between; margin-top: 24px; }

.career-sub-text { font-size: 13.5px; color: var(--text-muted); margin: -6px 0 22px; }
.career-profile-bars { display: flex; flex-direction: column; gap: 15px; margin-bottom: 26px; }
.career-profile-bar-label { display: flex; justify-content: space-between; font-size: 13.5px; font-weight: 600; margin-bottom: 6px; }
.career-profile-bar-track { height: 8px; background: var(--bg-second); border-radius: 5px; overflow: hidden; }
.career-profile-bar-fill { height: 100%; background: var(--gold); border-radius: 5px; transition: width 600ms cubic-bezier(.2,.8,.2,1); }
.career-section-label { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--text-faint); margin: 28px 0 12px; }
.career-env-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 26px; }
.career-env-chip { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600; padding: 7px 13px; border-radius: var(--r-pill); border: 1.5px solid var(--card-border); }
.career-env-chip.good { border-color: var(--green); color: var(--green); background: rgba(22,163,74,0.08); }
.career-env-chip.meh { color: var(--text-faint); }

.career-pattern { background: var(--card-bg); border: none; border-radius: var(--r-card); padding: 16px 18px; margin: 14px 0 22px; box-shadow: 0 1px 2px rgba(24,24,27,0.04), 0 4px 12px rgba(24,24,27,0.05); }
.career-pattern-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--gold); margin-bottom: 7px; }
.career-pattern-text { font-size: 14px; line-height: 1.6; }
.career-pattern-tags { display: flex; gap: 7px; margin-top: 11px; flex-wrap: wrap; }
.career-pattern-tag { font-size: 12px; font-weight: 600; background: var(--card-bg); border-radius: var(--r-pill); padding: 4px 11px; }

.career-job-card { background: var(--card-bg); border: 1.5px solid var(--card-border); border-radius: var(--r-card); padding: 20px; margin-bottom: 14px; }
.career-job-num { font-size: 11.5px; color: var(--text-faint); font-weight: 700; margin-bottom: 4px; }
.career-job-title { font-size: 16.5px; font-weight: 800; margin-bottom: 6px; }
.career-job-badge { display: inline-block; font-size: 11.5px; font-weight: 700; padding: 3px 10px; border-radius: var(--r-pill); margin-bottom: 12px; }
.career-job-badge.strong { background: rgba(22,163,74,0.1); color: var(--green); }
.career-job-badge.mixed { background: rgba(217,119,6,0.1); color: var(--amber); }
.career-why-label { font-size: 11.5px; font-weight: 700; color: var(--text-muted); text-transform: uppercase; letter-spacing: .04em; margin-bottom: 7px; }
.career-why-list { display: flex; flex-direction: column; gap: 5px; margin-bottom: 12px; }
.career-why-item { font-size: 13px; line-height: 1.4; }
.career-why-item.pro { color: var(--text); }
.career-why-item.con { color: var(--text-muted); }
.career-job-actions { margin-top: 12px; }

.career-job-card.surprise { background: var(--card-bg); border: 1.5px dashed var(--card-border); }
.career-job-card.nogo { background: rgba(220,38,38,0.04); border: 1.5px solid rgba(220,38,38,0.25); }
.career-job-card.nogo .career-job-title { color: var(--red); }

.career-schedule-row { display: flex; gap: 14px; padding: 10px 0; border-bottom: 1px solid var(--card-border); font-size: 13.5px; }
.career-schedule-time { font-weight: 700; width: 50px; flex-shrink: 0; color: var(--text-secondary); }
.career-fact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 18px 0; }
.career-fact-item { background: var(--card-bg); border: 1px solid var(--card-border); border-radius: var(--r-button); padding: 11px 13px; }
.career-fact-label { font-size: 10.5px; color: var(--text-faint); font-weight: 700; text-transform: uppercase; letter-spacing: .04em; margin-bottom: 3px; }
.career-fact-value { font-size: 13.5px; font-weight: 600; }
.career-test-actions { display: flex; flex-direction: column; gap: 8px; margin-top: 16px; }
.career-test-action { display: flex; align-items: center; gap: 12px; background: var(--card-bg); border: 1.5px solid var(--card-border); border-radius: var(--r-button); padding: 13px 15px; cursor: pointer; transition: border-color 150ms ease; }
.career-test-action:hover { border-color: rgba(17,17,17,0.16); }
.career-test-ic { font-size: 17px; flex-shrink: 0; line-height: 1; }
.career-test-action span:nth-child(2) { font-size: 13.5px; font-weight: 600; color: var(--text); flex: 1; }

/* ── Echtes Desktop-Layout ab dem bestehenden App-Umbruchpunkt (760px) ───
   Nicht nur die mobile Ansicht skaliert, sondern die Breite wirklich
   genutzt: Top-3-Ergebniskarten als Zwei-Spalten-Raster statt gestapelt,
   Intro-Liste nebeneinander statt untereinander. ─────────────────────── */
@media (min-width: 761px) {
  #career-results-list { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: start; }
  #career-results-list .career-job-card:first-child { grid-column: 1 / -1; }
  .career-intro-list { flex-direction: row; max-width: none; }
  .career-intro-item { flex: 1; }
}

/* ============================================================================
   MOBILE-AUFRAEUMUNG — "kein AI-Slop mehr": ruhig, clean, schnell.
   Steht bewusst ganz am Ende der Datei (components.css laedt als letztes),
   damit diese Regeln alle vorherigen fuer Mobile sicher ueberschreiben.
   Betrifft NUR Mobile (max-width: 760px) — Desktop-Verhalten unveraendert.
   ============================================================================ */
@media (max-width: 760px) {
  /* Seitenwechsel: sofortiges, ruhiges Erscheinen statt 280ms Animation mit
     Ueberschwingen (cubic-bezier(...,1,...,1) mit einem Wert von 1 zieht die
     Seite leicht hoch/rein — auf Mobile fuehlt sich das bei jedem Klick nach
     Verzoegerung an, nicht nach Reaktionsfreude). */
  .page.active { animation: none; }

  /* Karten & Kacheln: kein gestaffeltes Nacheinander-Einfliegen mehr (wirkte
     wie eine kleine Show bei jedem Seitenaufruf), kein Sprungfeder-Ueberschwingen
     beim Antippen (cubic-bezier mit Werten >1 = Bounce-Effekt). Kurze, gleich-
     maessige Uebergaenge statt auffaelliger Bewegung. */
  .tile, .stat-card, .card {
    animation: none !important;
    opacity: 1 !important;
    transition-duration: 120ms !important;
  }
  .tile-icon { transition: background 150ms ease !important; }
  .tile:active .tile-icon, .tile:hover .tile-icon { transform: none !important; }
  .stat-card::before { transition: none; }

  /* Kein "haengender" Hover-Zustand auf Touch-Geraeten — ein Tap loest sonst
     auf manchen mobilen Browsern dauerhaft einen Hover-Effekt aus, bis
     woanders hingetippt wird, was unruhig/fehlerhaft wirkt. */
  .tile:hover, .stat-card:hover, .btn-primary:hover, .tracker-fab:hover,
  .teacher-class-card:hover { transform: none; box-shadow: none; }

  /* Coach-Nachrichten: ruhiges Einblenden statt Sprungfeder-Einflug von unten. */
  .msg-enter { animation: fadeUp 150ms ease both; }

  /* Kein pulsierender Leucht-Ring nach Abschluss eines Blocks — reine
     Dekoration, kein Zusatznutzen, wirkt wie ein KI-Glow-Effekt. */
  .coach-final { animation: none; }
  .coach-final-check { animation: none; transform: scale(1); }

  /* "Denkt nach…"-Punkte: sanftes Pulsieren statt auffaelligem Huepfen —
     erfuellt denselben Zweck (zeigt: es passiert etwas), ohne wie ein
     typisches Chatbot-Klischee zu wirken. */
  .thinking-dot { animation: thinkingFade 1.4s ease-in-out infinite; }
  @keyframes thinkingFade { 0%, 100% { opacity: 0.3; } 50% { opacity: 1; } }

  /* Feiern-Karte: ruhiges Einblenden statt Sprungfeder-Reinschlittern von unten. */
  .celebrate-card { animation: fadeUp 200ms ease both; }

  /* Steckbrief-Kaertchen auf Home ausblenden: das Icon oben rechts in der
     Topbar macht dasselbe (ansehen + bearbeiten), eine grosse, immer offene
     Box mit allen Chips zusaetzlich auf Home war einfach zu viel Text auf
     einmal - "man sieht nicht, was man als naechstes machen muss". */
  #profile-card { display: none; }
}

/* ── "Swoosh"-Hinweis nach dem Onboarding: zeigt kurz, wo die Angaben jetzt
   sind (Steckbrief-Icon oben rechts). Ruhiges Pulsieren statt Sprungfeder-
   Effekt, passend zum restlichen Bewegungs-Prinzip. ── */
.profile-icon-swoosh {
  animation: profileIconPulse 1.6s ease-in-out 2;
}
@keyframes profileIconPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(37,99,235, 0.35); }
  50% { box-shadow: 0 0 0 6px rgba(37,99,235, 0); }
}
.profile-icon-swoosh-hint {
  position: absolute; top: calc(100% + 8px); right: 0;
  background: var(--text); color: #fff;
  font-size: 12px; padding: 8px 12px; border-radius: var(--r-small);
  white-space: nowrap; z-index: 50;
  opacity: 0; animation: fadeUp 250ms ease forwards;
}

/* ══ Multicheck-Training: Typ-/Berufs-Auswahlfelder (Spec 1.1/1.2) ═══════ */
.mc-select-field {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 16px; border: 1px solid var(--card-border); border-radius: var(--r-button);
  background: var(--card-bg); cursor: pointer; font-size: 14.5px; font-weight: 500;
  margin-bottom: 8px; transition: border-color 150ms ease;
}
.mc-select-field:hover { border-color: rgba(17,17,17,0.2); }
.mc-select-field svg { color: var(--text-muted); flex-shrink: 0; }
.mc-select-list {
  border: 1px solid var(--card-border); border-radius: var(--r-button);
  background: var(--card-bg); margin-bottom: 14px; overflow: hidden;
  max-height: 320px; overflow-y: auto;
}
.mc-select-option {
  padding: 12px 16px; font-size: 14px; cursor: pointer;
  border-bottom: 1px solid var(--card-border); transition: background 150ms ease;
}
.mc-select-option:last-child { border-bottom: none; }
.mc-select-option:hover { background: var(--bg-second); }

/* ══ "Ablauf"-Übersicht (Spec 1.3): schlichte Liste, keine Kästen ═══════ */
.mc-ablauf-list { margin-top: 4px; display: flex; flex-direction: column; gap: 8px; }
.mc-ablauf-item {
  display: flex; align-items: center; justify-content: space-between;
  padding: 15px 16px; font-size: 14.5px; color: var(--text-secondary);
  background: var(--card-bg); border-radius: var(--r-button); cursor: pointer;
  box-shadow: 0 1px 2px rgba(24,24,27,0.04), 0 3px 8px rgba(24,24,27,0.03);
  transition: transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);
}
.mc-ablauf-item:hover { transform: translateY(-1px); box-shadow: 0 2px 4px rgba(24,24,27,0.05), 0 6px 16px rgba(24,24,27,0.06); }
.mc-ablauf-item-next { color: var(--text); font-weight: 700; box-shadow: 0 0 0 2px var(--gold), 0 4px 12px rgba(37,99,235,0.1); }
.mc-ablauf-item-next span:first-child::before { content: '› '; color: var(--gold); }
.mc-ablauf-status { font-size: 12.5px; color: var(--text-faint); }
.mc-ablauf-status-done { color: var(--green); font-weight: 600; }
.mc-ablauf-status-next { color: var(--gold-text); font-weight: 700; font-size: 15px; }

/* ══ Multicheck-Übungs-Shell: Blatt mit Schichtschatten auf off-white ═ */
/* lino/multicheck-umbau: kein beiges Rechteck mehr um die Box - nur der normale
   gepunktete Seitenhintergrund und EINE weisse, abgerundete Box (.mc-frame).
   Die Box hat eine feste Hoehe (fuellt den Bildschirm, ohne Scrollen der Seite),
   Kopfzeile + Fusszeile liegen in der Box, nur die Aufgabe selbst scrollt bei
   sehr langen Texten innerhalb der Box. So aendert sich die Groesse beim
   Weiterklicken nie. */
.mc-shell-page { --mc-frame-offset: 108px; }
/* Seite selbst soll nicht scrollen: der Platz fuer schwebende Knoepfe unten
   (padding-bottom von .content) wird im Multicheck nicht gebraucht. */
.content:has(#page-aptitude.active #mc-shell-view:not(.hidden)) { padding-bottom: 24px; }
.mc-frame {
  display: flex; flex-direction: column;
  height: max(520px, calc(100dvh - var(--mc-frame-offset)));
  max-height: 980px;
  background: var(--card-bg); border-radius: var(--r-card);
  box-shadow: 0 1px 2px rgba(24,24,27,0.04), 0 8px 24px rgba(24,24,27,0.07), 0 24px 48px rgba(24,24,27,0.05);
  overflow: hidden;
}
.mc-frame-head {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 12px 10px 24px; border-bottom: 1px solid var(--line-soft, var(--card-border));
  flex-shrink: 0;
}
.mc-frame-titles { flex: 1; min-width: 0; }
.mc-shell-header-title { font-size: 15.5px; font-weight: 700; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mc-shell-subcategory { font-size: 12.5px; color: var(--text-muted); margin-top: 1px; }
.mc-shell-close {
  display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
  width: 44px; height: 44px; border-radius: 12px; border: none; background: transparent;
  color: var(--text-muted); cursor: pointer;
  transition: background var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out);
}
.mc-shell-close:hover { color: var(--text); background: var(--bg-second); }
.mc-shell-tools { display: none; align-items: center; gap: 2px; }
.mc-frame.is-task .mc-shell-tools { display: flex; }
.mc-tool {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: 10px; border: none; background: transparent;
  color: var(--text-muted); cursor: pointer;
  transition: background var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out);
}
.mc-tool:hover { color: var(--gold-text); background: var(--bg-second); }
.mc-tool.active { color: var(--gold-text); }
.mc-eval-btn {
  border: 1px solid var(--card-border); background: transparent; color: var(--text-secondary);
  border-radius: 999px; padding: 7px 14px; margin-right: 6px; font: inherit; font-size: 13px; font-weight: 600; cursor: pointer;
}
.mc-eval-btn:hover { border-color: var(--gold); color: var(--gold-text); }
.mc-eval-btn.not-ready { color: var(--text-faint); }
.mc-shell-timer { padding: 10px 24px 0; flex-shrink: 0; }
.mc-shell-timer-row { display: flex; align-items: center; justify-content: center; gap: 12px; }
#mc-shell-timer-text { font-size: 13.5px; font-weight: 600; color: var(--text-muted); font-variant-numeric: tabular-nums; flex-shrink: 0; min-width: 40px; }
.mc-shell-timebar { flex: 0 1 70%; height: 8px; background: var(--bg-second); border-radius: 4px; overflow: hidden; }
.mc-shell-timebar-fill { height: 100%; background: var(--gold); border-radius: 4px; transition: width 1s linear, background 400ms; width: 100%; }
.mc-shell-timebar-fill.low { background: var(--red); }
.mc-shell-timer.count-up .mc-shell-timebar { display: none; }
.mc-shell-sheet {
  flex: 1; min-height: 0; overflow-y: auto;
  display: flex; flex-direction: column;
  padding: 24px 28px;
}
/* Wenig Inhalt: Aufgabe sitzt in der Mitte der Box statt oben mit leerem Rest.
   Viel Inhalt: margin:auto wird 0, der Inhalt scrollt in der Box. */
.mc-shell-sheet #aptitude-exercise-list { margin: auto; width: 100%; max-width: 880px; }
.mc-shell-footer {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 12px 16px; border-top: 1px solid var(--line-soft, var(--card-border));
  flex-shrink: 0; min-height: 68px; box-sizing: border-box;
}
.mc-shell-footer:empty { display: none; }
.mc-shell-footer .btn { min-width: 110px; flex-shrink: 0; }
/* Aufgaben-Inhalt ohne zweiten Kasten in der Box */
.mc-task { padding: 0; }
.mc-panel { text-align: center; padding: 12px 8px; display: flex; flex-direction: column; align-items: center; }
.mc-panel p { max-width: 520px; }
/* Fortschritt in der Fusszeile: Computer = Zahlen, Handy = "3 / 30" + Balken */
.mc-progress-mobile { display: none; flex-direction: column; align-items: center; gap: 5px; flex: 1; min-width: 0; }
.mc-progress-mobile-text { font-size: 13px; font-weight: 600; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.mc-progress-bar { width: 100%; max-width: 160px; height: 5px; border-radius: 3px; background: var(--bg-second); overflow: hidden; }
.mc-progress-bar span { display: block; height: 100%; background: var(--gold); border-radius: 3px; }
@media (max-width: 760px) {
  .mc-shell-page { --mc-frame-offset: 160px; }
  .mc-frame { height: max(440px, calc(100dvh - var(--mc-frame-offset))); }
  /* Handy: Titel + X oben, Werkzeuge darunter - sonst wird der Titel abgeschnitten */
  .mc-frame-head { padding: 6px 6px 6px 16px; flex-wrap: wrap; row-gap: 0; }
  .mc-frame-titles { order: 0; }
  .mc-shell-close { order: 1; }
  .mc-shell-tools { order: 2; width: 100%; justify-content: flex-end; margin-top: -4px; }
  .mc-shell-sheet { padding: 18px 16px; }
  .mc-shell-footer { padding: 10px 12px; }
  .mc-shell-footer .btn { min-width: 0; padding-left: 16px; padding-right: 16px; }
  .mc-shell-footer .mc-shell-nav-count { display: none; }
  .mc-progress-mobile { display: flex; }
  .mc-eval-btn { padding: 6px 10px; font-size: 12px; margin-right: 2px; }
  .mc-tool { width: 36px; height: 36px; }
  .mc-shell-header-title { font-size: 14.5px; }
}
/* "Frag Stellio" schwebt sonst ueber dem Weiter-Knopf - im Multicheck gibt es
   stattdessen die Aufgaben-Hilfe direkt in der Box. */
body:has(#page-aptitude.active #mc-shell-view:not(.hidden)) #sh-fab { display: none; }
/* Grosse Bildschirme: alles etwas grosser, damit die Box nicht leer wirkt */
@media (min-width: 1100px) and (min-height: 700px) {
  .mc-shell-sheet #aptitude-exercise-list { zoom: 1.15; }
}
@media (min-width: 1440px) and (min-height: 860px) {
  .mc-shell-sheet #aptitude-exercise-list { zoom: 1.25; }
}
@media (min-width: 1800px) and (min-height: 1000px) {
  .mc-shell-sheet #aptitude-exercise-list { zoom: 1.35; }
}
/* Ersetzt die fruehere Zahlen-Pillen-Wand (siehe Historie): bei Kapiteln
   mit 80+ Fragen sprengte die Pillen-Reihe jede vernuenftige Fusszeilen-
   groesse (5 Zeilen Zahlen) - bei dieser Menge hat direktes Zuruecksspringen
   auf eine einzelne Frage per Klick ohnehin kaum praktischen Nutzen, eine
   schlichte "Aktuell / Gesamt"-Angabe reicht. */
.mc-shell-nav-count { font-size: 13.5px; font-weight: 600; color: var(--text-muted); display: flex; align-items: center; gap: 4px; }
.math-fraction { display: inline-flex; flex-direction: column; align-items: center; vertical-align: middle; margin: 0 3px; font-size: 0.9em; line-height: 1.1; }
.math-frac-num { border-bottom: 1.4px solid currentColor; padding: 0 3px 1px; }
.math-frac-den { padding: 1px 3px 0; }
.mc-nav-num { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 50%; color: var(--text-muted); font-weight: 600; }
.mc-nav-num.active { background: var(--gold); color: var(--gold-ink); }
.creativity-toolbar { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.creativity-tool-btn {
  display: flex; align-items: center; justify-content: center; width: 34px; height: 34px;
  border-radius: 8px; border: 1px solid var(--card-border); background: transparent; color: var(--text-muted); cursor: pointer;
}
.creativity-tool-btn.active { background: var(--gold-light); color: var(--gold-text); border-color: var(--gold); }
.mc-nav-ellipsis { color: var(--text-faint); padding: 0 2px; }

/* Multiple-Choice-Optionen ohne Kästen (Spec 4.2) - nur Radio-Button + Text */
.mc-radio-option {
  display: flex; align-items: center; gap: 10px; padding: 9px 4px;
  border: 1px solid transparent; border-radius: var(--r-small);
  cursor: pointer; font-size: 14px;
}
.mc-radio-option input[type="radio"] { width: 17px; height: 17px; flex-shrink: 0; accent-color: var(--gold); }

/* ══ Multicheck-Auswertung: Prozent-Ring pro Kategorie ══════════════════ */
.mc-shell-subcategory { text-align: center; font-size: 12.5px; color: var(--text-muted); margin-bottom: 8px; }
.mc-eval-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 14px; margin: 18px 0; }
.mc-eval-card {
  text-align: center; padding: 14px 10px; border-radius: var(--r-button);
  border: 1.5px solid var(--card-border); cursor: pointer; transition: border-color 150ms ease;
}
.mc-eval-card.weak { border-color: var(--red); background: rgba(166,65,47,0.04); }
.mc-eval-card.weak.selected { border-color: var(--red); background: rgba(166,65,47,0.1); }
.mc-eval-ring {
  width: 64px; height: 64px; border-radius: 50%; margin: 0 auto 8px;
  display: flex; align-items: center; justify-content: center; position: relative;
}
.mc-eval-ring-inner {
  width: 48px; height: 48px; border-radius: 50%; background: var(--card-bg);
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 700; color: var(--text);
}
.mc-eval-cat-name { font-size: 12px; color: var(--text-secondary); line-height: 1.3; margin-bottom: 4px; }
.mc-eval-recommend { font-size: 11px; color: var(--red); font-weight: 600; }
.mc-eval-check { margin-top: 6px; }

.ai-transparency-notice {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  background: var(--bg-second); border: 1px solid var(--card-border); border-radius: var(--r-small);
  padding: 10px 14px; margin-bottom: 14px; font-size: 12.5px; color: var(--text-muted); line-height: 1.4;
}
.ai-transparency-notice button {
  background: none; border: none; color: var(--text-faint); font-size: 18px; line-height: 1;
  cursor: pointer; flex-shrink: 0; padding: 0 2px;
}
.ai-transparency-notice button:hover { color: var(--text); }

/* ── "Mein Weg": vertikaler Fortschrittspfad, siehe app-core.js updateMyWayPath() */
.myway-path { width: 100%; max-width: 780px; margin: 0 auto; }
.myway-station { position: relative; }
.myway-station-row { display: flex; align-items: center; gap: 14px; padding: 8px 0; }
.myway-station-circle {
  width: 26px; height: 26px; border-radius: 50%; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  border: 2px solid var(--card-border); color: var(--text-faint);
}
.myway-station-done .myway-station-circle { background: var(--green); border-color: var(--green); color: #fff; }
.myway-station-current .myway-station-circle { background: var(--gold); border-color: var(--gold); }
.myway-station-label { font-size: 14px; }
.myway-station-done .myway-station-label { color: var(--text-muted); text-decoration: line-through; }
.myway-station-current .myway-station-label { font-weight: 600; }
.myway-station-upcoming .myway-station-label { color: var(--text-muted); }
.myway-station-body {
  margin: 4px 0 4px 40px; padding: 14px 16px; border: 2px solid var(--gold);
  border-radius: var(--r-small); background: var(--gold-light);
}
.myway-station-desc { font-size: 13.5px; color: var(--text-muted); margin-bottom: 10px; line-height: 1.5; }
.myway-line { width: 2px; height: 18px; background: var(--card-border); margin-left: 13px; }
.myway-line-done { background: var(--green); }

/* ── Figurale Analogien (image_analogy): echte Bild-Grafiken statt Text */
.img-analogy-box { width:64px; height:64px; display:flex; align-items:center; justify-content:center; border:1px solid var(--card-border); border-radius:var(--r-small); background:var(--card-bg); }
.img-analogy-question { font-size:24px; font-weight:700; color:var(--text-faint); }
.img-analogy-grid { display:grid; grid-template-columns:repeat(3, 1fr); gap:10px; max-width:340px; margin:0 auto; }
.img-analogy-opt { aspect-ratio:1; display:flex; align-items:center; justify-content:center; border:2px solid var(--card-border); border-radius:var(--r-small); background:var(--card-bg); cursor:pointer; transition:border-color 120ms; }
.img-analogy-opt:hover { border-color: var(--gold); }
.img-analogy-opt.selected { border-color: var(--gold); background: var(--gold-light); }

/* ── Numerische Verarbeitungskapazitaet: animiertes 3x3-Gitter */
.num-chain-grid { display:grid; grid-template-columns:repeat(3, 1fr); gap:8px; max-width:220px; margin:0 auto; }
.num-chain-cell { aspect-ratio:1; border:1px solid var(--card-border); border-radius:8px; background:var(--card-bg); display:flex; align-items:center; justify-content:center; font-size:26px; font-weight:700; transition: opacity 150ms, background 150ms; }
.num-chain-center { display:flex; align-items:center; justify-content:center; font-size:26px; font-weight:700; }
.num-chain-twofield { display:flex; gap:16px; justify-content:center; max-width:280px; margin:0 auto; }
.num-chain-twofield .num-chain-cell { width:110px; }
.num-chain-grid3x3 { display:grid; grid-template-columns:repeat(3, 1fr); gap:10px; max-width:260px; margin:0 auto; }
.num-chain-dim { opacity:0.3; background:var(--bg-second); }

/* ── Geometrie-Zuordnung (label_placement): Klicken statt Ziehen */
.label-zones-row { display:flex; justify-content:center; gap:12px; flex-wrap:wrap; margin-bottom:22px; }
.label-zone { min-width:70px; padding:12px 14px; border:2px dashed var(--card-border); border-radius:var(--r-small); text-align:center; font-size:13.5px; color:var(--text-faint); cursor:pointer; }
.label-zone.filled { border-style:solid; border-color:var(--gold); color:var(--text); background:var(--gold-light); }
.label-terms-row { display:flex; justify-content:center; gap:8px; flex-wrap:wrap; }
.label-term { padding:8px 14px; border:1px solid var(--card-border); border-radius:var(--r-pill); font-size:13px; cursor:pointer; background:var(--card-bg); }
.label-term.selected { border-color:var(--gold); background:var(--gold-light); font-weight:600; }

/* ── Kurzzeitgedaechtnis: Zeichenkombinationen + Farbkombinationen */
.mr-options-grid { display:grid; grid-template-columns:repeat(2, 1fr); gap:8px; max-width:280px; margin:0 auto; }
.mr-option { padding:10px; border:2px solid var(--card-border); border-radius:var(--r-small); text-align:center; font-size:15px; font-weight:600; letter-spacing:1px; cursor:pointer; background:var(--card-bg); }
.mr-option:hover { border-color:var(--gold); }
.mr-option.selected { border-color:var(--gold); background:var(--gold-light); }
.ct-circles-row { display:flex; justify-content:center; gap:14px; }
.ct-circle { width:44px; height:44px; border-radius:50%; }
.ct-circle-tap { cursor:pointer; border:2px solid var(--card-border); }

/* ── Konzentration: Zeitdruck-Schnelligkeitsmodus */
.speed-timer { font-size:22px; font-weight:700; color:var(--gold-text); margin-bottom:16px; }
.speed-compare-batch { display:flex; flex-direction:column; gap:8px; max-width:420px; margin:0 auto; }
.speed-compare-row { display:grid; grid-template-columns:1fr 1fr auto auto; align-items:center; gap:10px; padding:8px 10px; border:1px solid var(--card-border); border-radius:10px; }
.speed-compare-num { font-size:16px; font-family:monospace; letter-spacing:0.5px; text-align:center; }
.speed-compare-btn { padding:6px 12px; font-size:12.5px; }
.speed-compare-btn.selected { background:var(--gold); color:var(--gold-ink); border-color:var(--gold); }
.speed-coords-grid { display:grid; grid-template-columns:repeat(3, 1fr); gap:6px; max-width:210px; margin:0 auto 16px; }
.speed-coords-cell { aspect-ratio:1; border:1px solid var(--card-border); border-radius:6px; background:var(--card-bg); }
.speed-coords-cell.target { background:var(--gold); }
.speed-coords-axis-label { display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; color:var(--text-muted); }
.speed-coords-corner {}
.speed-coords-input { padding:10px; font-size:20px; text-align:center; width:120px; border:1px solid var(--card-border); border-radius:8px; }

/* ── Berufsfeld-Autocomplete (Motivationsschreiben/Lebenslauf/Schnupperlehre) */
.form-group { position: relative; }
.role-autocomplete-wrap {
  position:absolute; z-index:20; left:0; right:0; margin-top:2px;
}
.role-autocomplete-wrap:not(:empty) {
  background:var(--card-bg); border:1px solid var(--card-border); border-radius:var(--r-small);
  box-shadow:var(--shadow-lift); max-height:220px; overflow-y:auto;
}
.role-autocomplete-item { padding:9px 12px; font-size:13.5px; cursor:pointer; }
.role-autocomplete-item:hover { background:var(--bg-second); }

/* ── "Mein Weg": Zickzack-Pfad, exakt wie im Mobile-Design-Mockup */
.myway-zz-outer { margin-top: 8px; }
.myway-zz-wrap { position: relative; width: 100%; height: 760px; overflow: visible; }
.myway-zz-svg { position: absolute; left: 0; top: 0; overflow: visible; }
.myway-zz-blob { position: absolute; border-radius: 50%; filter: blur(30px); pointer-events: none; }
.myway-zz-blob-1 { width: 220px; height: 220px; background: var(--gold); opacity: 0.06; top: -40px; left: 0; }
.myway-zz-blob-2 { width: 180px; height: 180px; background: #6B7A99; opacity: 0.08; bottom: 20px; right: 0; }

@keyframes myway-bounce-in {
  0% { opacity: 0; transform: translate(-50%, -50%) scale(0.3); }
  60% { opacity: 1; transform: translate(-50%, -50%) scale(1.15); }
  100% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}
@keyframes myway-pulse-ring {
  0%, 100% { box-shadow: var(--shadow-lift), 0 0 0 0 rgba(37,99,235,0.35); }
  50% { box-shadow: var(--shadow-lift), 0 0 0 8px rgba(37,99,235,0); }
}
@keyframes myway-line-draw {
  from { stroke-dashoffset: 1000; }
  to { stroke-dashoffset: 0; }
}

.myway-zz-line-done { stroke-dasharray: 0.1 20, 1000; animation: myway-line-draw 900ms ease-out; }

.myway-zz-node {
  position: absolute; transform: translate(-50%, -50%);
  display: flex; flex-direction: column; align-items: center; gap: 6px;
  cursor: pointer; width: 110px;
  opacity: 0; animation: myway-bounce-in 500ms cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
  transition: transform 150ms ease-out;
}
.myway-zz-node:hover { transform: translate(-50%, -50%) scale(1.08); }
.myway-zz-pill {
  position: absolute; top: -26px; background: var(--gold); color: var(--gold-ink);
  font-size: 10.5px; font-weight: 700; padding: 4px 10px; border-radius: var(--r-pill);
  white-space: nowrap;
}
.myway-zz-circle {
  width: 44px; height: 44px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 15px; font-weight: 700; flex-shrink: 0;
}
.myway-zz-circle-done { background: var(--gold); color: var(--gold-ink); box-shadow: var(--shadow-lift); }
.myway-zz-circle-current { background: var(--card-bg); border: 2.5px solid var(--gold); color: var(--gold); box-shadow: var(--shadow-lift); animation: myway-pulse-ring 2s ease-in-out infinite; }
.myway-zz-circle-upcoming { background: var(--card-bg); border: 2px solid var(--card-border); color: var(--text-faint); }
.myway-zz-label { font-size: 11.5px; font-weight: 600; text-align: center; color: var(--text); line-height: 1.3; }
/* Name liegt ueber der Fortschrittslinie (blau und gestrichelt): kleine Pille in
   der Seitenfarbe (.app-main = --bg-second), damit er nicht durchgestrichen wirkt.
   Negativer Rand gleicht den Innenabstand aus -> Umbruch und Lage bleiben gleich. */
.myway-zz-label { position: relative; z-index: 1; background: var(--bg-second); padding: 2px 7px; margin: -2px -7px; border-radius: var(--r-pill); }

/* "Jetzt dran"-Karte steht immer beim aktuellen Kreis (Position setzt
   layoutMyWayPath() in app-core.js): breit daneben mit Verbindungslinie,
   schmal direkt darunter im Weg eingereiht. Liegt ueber der Linie. */
.myway-zz-info { position: absolute; z-index: 2; max-width: none; padding: 20px 22px; text-align: center; animation: myway-card-in 400ms ease-out 250ms both; }
.myway-zz-info-beside { text-align: left; }
.myway-zz-info-eyebrow { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--gold-text); margin-bottom: 6px; }
.myway-zz-info-title { font-family: var(--font-title); font-size: 19px; font-weight: 800; margin-bottom: 8px; overflow-wrap: break-word; -webkit-hyphens: auto; hyphens: auto; }
.myway-zz-info-desc { font-size: 13.5px; color: var(--text-muted); line-height: 1.6; margin-bottom: 16px; }
.myway-zz-info .btn { max-width: 100%; white-space: normal; text-align: center; }
@keyframes myway-card-in { from { opacity: 0; } to { opacity: 1; } }
/* Verbindung Kreis <-> Karte: gestrichelt, mit kleiner Pfeilspitze zum Kreis */
.myway-zz-connector { position: absolute; z-index: 1; pointer-events: none; animation: myway-card-in 400ms ease-out 250ms both; }
.myway-zz-connector-h { border-top: 2px dashed var(--gold); }
.myway-zz-connector-v { border-left: 2px dashed var(--gold); }
.myway-zz-connector::after { content: ''; position: absolute; width: 0; height: 0; border: 6px solid transparent; }
.myway-zz-connector-h.is-left::after { right: -4px; top: -7px; border-left-color: var(--gold); border-right-width: 0; }
.myway-zz-connector-h.is-right::after { left: -4px; top: -7px; border-right-color: var(--gold); border-left-width: 0; }
.myway-zz-connector-v::after { left: -7px; top: -4px; border-bottom-color: var(--gold); border-top-width: 0; }

/* Echte Desktop-Groesse statt nur des gestreckten Mobile-Pfads - deutlich
   mehr Raum, groessere Knoten, mehr visuelle Praesenz. */
@media (min-width: 1024px) {
  .myway-zz-outer { margin-top: 20px; }
  .myway-zz-blob-1 { width: 320px; height: 320px; top: -60px; }
  .myway-zz-blob-2 { width: 260px; height: 260px; }
  .myway-zz-node { width: 150px; gap: 9px; }
  .myway-zz-circle { width: 58px; height: 58px; font-size: 20px; }
  .myway-zz-label { font-size: 14px; }
  .myway-zz-pill { top: -30px; font-size: 11.5px; padding: 5px 12px; }
  .myway-zz-info { padding: 24px 26px; }
  .myway-zz-info-title { font-size: 21px; }
  .myway-zz-info-desc { font-size: 14.5px; }
}

/* ══════════════════════ Home: Desktop-Layout (exakt aus dem Desktop-
   Dashboard-Design uebernommen, Credits-Pille bewusst weggelassen -
   widerspricht dem Free/Pro-Umbau) ══════════════════════════════════ */
.topbar-avatar {
  display: none; width: 36px; height: 36px; border-radius: 50%; flex-shrink: 0;
  background: var(--gold-light); color: var(--gold-text); font-weight: 800; font-family: var(--font-title);
  align-items: center; justify-content: center; font-size: 14px;
}

@media (min-width: 1024px) {
  /* Nur die Home-Seite wird breiter - andere Seiten (Coach-Chat etc.)
     bleiben bewusst auf der bisherigen Lesebreite. */
  .content-inner:has(#page-dashboard.active) { max-width: 1360px; }

  .content:has(#page-dashboard.active) .topbar-avatar { display: flex; }

  /* Fortschritt: horizontales 5er-Raster statt vertikaler Liste - auf
     Desktop ist genug Platz, um alle Schritte auf einen Blick zu zeigen.
     WICHTIG (Korrektur): der aktuelle Schritt behaelt seinen Hinweis, was
     als Naechstes zu tun ist, und die ganze Karte wird klickbar - vorher
     wurde genau das auf Desktop komplett weggeblendet, wodurch niemand
     mehr erkennen konnte, was als Naechstes dran ist (widerspricht dem
     eigenen "nie ueberlegen muessen, was als Naechstes"-Prinzip). */
  #page-dashboard .progress-path {
    display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; margin-top: 0;
  }
  #page-dashboard .path-row {
    flex-direction: column; text-align: center; gap: 8px; padding: 18px 10px 16px;
  }
  #page-dashboard .path-row-body { text-align: center; width: 100%; }
  #page-dashboard .path-row-label { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

  /* Steckbrief: horizontale Leiste mit Label statt gestapelter Karte */
  #page-dashboard #profile-card { display: flex; align-items: center; gap: 18px; }
  #page-dashboard #profile-card::before {
    content: 'Dein Steckbrief'; flex-shrink: 0; font-size: 13px; font-weight: 700; color: var(--text-muted);
  }
  #page-dashboard #profile-card > div:first-child { display: flex; flex: 1; min-width: 0; }
  #page-dashboard #profile-card-view { display: flex; align-items: center; }

  /* Coach-Karte: Icon+Text links, Button rechts statt gestapelt */
  #page-dashboard .dash-quick-card-featured {
    display: flex; align-items: center; justify-content: space-between; gap: 28px; padding: 30px 36px;
  }
  #page-dashboard .dash-quick-card-featured > .dash-quick-card-icon { margin: 0; }
  #page-dashboard .dash-quick-card-featured-body { display: flex; align-items: center; gap: 20px; min-width: 0; }
  #page-dashboard .dash-quick-card-featured .dash-quick-card-title { margin-top: 0; }
  #page-dashboard .dash-quick-card-featured .dash-quick-card-arrow {
    margin-top: 0; flex-shrink: 0; padding: 12px 22px;
  }

  /* Werkzeuge: alle 5 Karten in einer Reihe statt 2/3-Spalten-Grid */
  #dash-tools-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }

  /* Aufgaben/Aktivitaeten/Upgrade: 3 gleich breite Spalten statt 2fr/1fr,
     Todo-Liste wird hier zur ersten von drei Bento-Karten. */
  #page-dashboard .dash-bottom-row { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #page-dashboard .dash-bottom-row .todo-banner { margin-bottom: 0; }
}

/* ══════════════════════ Sidebar/Nav: exakte Desktop-Werte aus dem
   Desktop-Dashboard-Design (Credits-Pille bewusst ausgenommen) ═══════ */
@media (min-width: 1024px) {
  .sidebar { width: 248px; background: var(--bg-second); padding: 22px 14px; }
  .nav-item {
    padding: 10px 12px; border-radius: 12px; gap: 11px;
    font-size: 13.5px; font-weight: 600; color: var(--text-muted); border: none;
  }
  .nav-item:hover { background: var(--card-bg); color: var(--text); }
  .nav-item.active {
    background: var(--gold-light); color: var(--gold-text); border-left: none; padding-left: 12px;
  }
  .nav-section-label { color: var(--text-faint); font-size: 11px; font-weight: 700; letter-spacing: 0.06em; padding: 6px 10px 8px; }
  .sidebar-user { background: transparent; padding: 12px 10px; border-radius: 14px; }
  .sidebar-user .user-avatar { border-radius: 50%; width: 34px; height: 34px; background: var(--gold-light); color: var(--gold-text); }
  #dash-tools-grid .dash-quick-card { padding: 18px; }
  #dash-tools-grid .dash-quick-card-icon { width: 34px; height: 34px; }
  #page-dashboard #profile-card { padding: 20px 24px; }
  .app-main { background: var(--bg-second); }

  .content:has(#page-dashboard.active) { padding: 34px 48px 60px; }
  #page-dashboard .greeting-mission { font-size: 28px; }
  #page-dashboard .progress-journey { padding: 24px 28px; }
  #page-dashboard .progress-journey-header { margin-bottom: 18px; }
  #page-dashboard .progress-bar-track { margin-bottom: 22px; }
  #dash-tools-grid { gap: 14px; }
  #page-dashboard .dash-bottom-row { gap: 20px; }
}

/* ══════════════════════ Ladezustaende: ein einheitliches System ══════════
   Statt nacktem "Lädt …"-Text: (1) Skelett-Zeilen in der Form der echten
   Inhalte, (2) freundliche Leer-/Fehlerzustaende mit "Nochmals versuchen",
   (3) ruhige Warte-Karte fuers Generieren mit wechselnden Statustexten,
   (4) "schreibt gerade"-Punkte in der Coach-Sprechblase. Die HTML-Bausteine
   kommen aus app-core.js (skeletonHtml, loadStateHtml, waitCardHtml,
   thinkingDots). Bei reduzierter Bewegung stehen alle Animationen still. */

/* (1) Skelett ─────────────────────────────────────────────────────────── */
.skel:where(:not(.skel-box)) { display: block; border-radius: 6px; }
.skel {
  background: linear-gradient(90deg, var(--bg-second, #EBE2D3) 25%, var(--card-bg, #F5EFE6) 40%, var(--bg-second, #EBE2D3) 60%);
  background-size: 400% 100%;
  animation: skelShimmer 1.5s ease-in-out infinite;
}
@keyframes skelShimmer { 0% { background-position: 100% 50%; } 100% { background-position: 0 50%; } }
/* Erscheint erst nach einem kurzen Moment: schnelle Antworten blitzen so
   gar nicht erst als Skelett auf, langsame zeigen sofort die Form. */
.skel-list { display: flex; flex-direction: column; animation: skelIn 260ms var(--ease-out) 120ms both; }
@keyframes skelIn { from { opacity: 0; } to { opacity: 1; } }
.skel-row {
  display: flex; align-items: center; gap: 12px;
  padding: 14px 16px; margin-bottom: 10px; pointer-events: none;
}
.skel-row:nth-child(3) { opacity: 0.75; }
.skel-row:nth-child(4) { opacity: 0.5; }
.skel-lines { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 8px; }
.skel-line { height: 11px; }
.skel-line.is-title { height: 13px; width: 52%; }
.skel-line.is-sub { width: 34%; }
.skel-row:nth-child(3) .skel-line.is-title { width: 40%; }
.skel-row:nth-child(4) .skel-line.is-title { width: 46%; }
.skel-row:nth-child(3) .skel-line.is-sub { width: 26%; }
.skel-icon { width: 34px; height: 34px; border-radius: 10px; flex-shrink: 0; }
.skel-dot { width: 28px; height: 28px; border-radius: 50%; flex-shrink: 0; }
.skel-pill { width: 58px; height: 22px; border-radius: var(--r-pill); flex-shrink: 0; }
/* Ohne Karte, z.B. innerhalb einer bestehenden Karte (Dashboard-Logbuch) */
.skel-row.is-flat {
  background: none; box-shadow: none; border-radius: 0;
  padding: 12px 0; margin: 0; border-bottom: 1px solid var(--card-border);
}
.skel-row.is-flat:last-child { border-bottom: none; }

/* Skelett aus dem echten Markup (03.11.2026): Zeilen mit denselben Klassen wie die fertige
   Liste (Karte, Abstaende, Rundungen), nur der Text ist ein Balken. .skel-tx steht in einem
   Element mit der echten Schrift, darum ist jede Zeile genau so hoch wie spaeter der Text.
   .skel-box: echtes Element (Knopf, Status, Symbol) als Flaeche, Inhalt unsichtbar. */
.is-skel { pointer-events: none; cursor: default; }
.is-skel:hover { transform: none; }
.skel.skel-tx { display: inline-block; vertical-align: top; margin-top: calc((1lh - .8em) / 2); width: 60%; max-width: 100%; height: .8em; border-radius: 6px; }
.is-skel .skel, .skel-box.skel {
  background: linear-gradient(90deg, var(--bg-second, #EBE2D3) 25%, var(--card-bg, #F5EFE6) 40%, var(--bg-second, #EBE2D3) 60%) !important;
  background-size: 400% 100% !important;
}
.skel-box { color: transparent !important; border-color: transparent !important; box-shadow: none !important; }
.skel-box > * { visibility: hidden; }
.skel-list > .is-skel:nth-child(4) { opacity: 0.75; }
.skel-list > .is-skel:nth-child(5) { opacity: 0.5; }
/* Balken auf getoenter Flaeche (Kennzahlen, Termine) und auf einem dunklen Knopf */
.is-skel .skel.skel-tint {
  background: linear-gradient(90deg, var(--card-border, #DED2C5) 25%, var(--card-bg, #F5EFE6) 40%, var(--card-border, #DED2C5) 60%) !important;
  background-size: 400% 100% !important;
}
.skel.skel-on-btn { background: rgba(255, 255, 255, .32); animation: none; }
/* Home: dritte Textzeile nur auf breiten Karten (Handy: zwei Zeilen) */
@media (max-width: 760px) { .hn-skel-wide { display: none; } }
/* Listen mit Abstand ueber grid-gap (Bibliothek): das Skelett uebernimmt den Abstand */
.bibn-list > .skel-list { display: grid; gap: 14px; }

/* (2) Leer- und Fehlerzustand ────────────────────────────────────────── */
.load-state {
  display: flex; flex-direction: column; align-items: center; text-align: center;
  gap: 4px; padding: 26px 20px; margin-bottom: 10px;
  background: var(--card-bg); border-radius: var(--r-card);
  box-shadow: 0 1px 2px rgba(24,24,27,0.04), 0 4px 12px rgba(24,24,27,0.05);
  animation: fadeUp 260ms var(--ease-out) both;
}
.load-state.is-plain { background: none; box-shadow: none; padding: 14px 8px; margin: 0; }
.load-state-icon {
  width: 40px; height: 40px; border-radius: 50%; margin-bottom: 6px;
  display: flex; align-items: center; justify-content: center;
  background: var(--gold-light); color: var(--gold);
}
.load-state.is-error .load-state-icon { background: #FFF7ED; color: var(--amber-text); }
.load-state-icon svg { width: 18px; height: 18px; }
.load-state-title { font-size: 14px; font-weight: 700; color: var(--text); }
.load-state-sub { font-size: 12.5px; color: var(--text-muted); line-height: 1.5; max-width: 360px; }
.load-state .btn { margin-top: 10px; gap: 6px; }
.load-state .btn svg { width: 13px; height: 13px; }

/* (3) Warte-Karte fuers Generieren ───────────────────────────────────── */
.wait-card {
  display: flex; flex-direction: column; align-items: center; text-align: center;
  gap: 6px; padding: 30px 20px 26px;
}
.wait-orb {
  position: relative; width: 56px; height: 56px; margin-bottom: 10px; flex-shrink: 0;
  border-radius: 50%; background: var(--gold-light);
  display: flex; align-items: center; justify-content: center;
  animation: waitBreathe 2.4s ease-in-out infinite;
}
.wait-orb img { width: 26px; height: 26px; object-fit: contain; }
/* Blauer Bogen, der ruhig um das Logo kreist */
.wait-orb-ring {
  position: absolute; inset: -4px; border-radius: 50%;
  background: conic-gradient(from 0deg, rgba(37,99,235,0) 0deg, rgba(37,99,235,0) 200deg, var(--gold) 360deg);
  -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 2.5px));
          mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 2.5px));
  animation: spin 1.3s linear infinite;
}
@keyframes waitBreathe {
  0%, 100% { box-shadow: 0 0 0 0 rgba(37,99,235,0.16); }
  50%      { box-shadow: 0 0 0 10px rgba(37,99,235,0); }
}
.wait-text {
  font-size: 14.5px; font-weight: 700; color: var(--text); min-height: 1.5em;
  transition: opacity 220ms var(--ease-out), transform 220ms var(--ease-out);
}
.wait-text.is-swapping { opacity: 0; transform: translateY(3px); }
.wait-sub { font-size: 12.5px; color: var(--text-muted); }
/* Kompakt: fuer kleinere Flaechen (z.B. Feedback unter einer Uebung) */
.wait-card.is-inline { flex-direction: row; text-align: left; gap: 14px; padding: 14px 4px; }
.wait-card.is-inline .wait-orb { width: 40px; height: 40px; margin: 0; }
.wait-card.is-inline .wait-orb img { width: 19px; height: 19px; }
.wait-card.is-inline .wait-text { font-size: 13.5px; }

/* (4) Coach schreibt gerade ─────────────────────────────────────────── */
.typing-indicator { display: inline-flex; align-items: center; gap: 10px; min-height: 21px; }
.typing-dots { display: inline-flex; align-items: center; gap: 4px; }
.typing-dots i {
  width: 7px; height: 7px; border-radius: 50%; background: var(--gold); opacity: 0.55;
  animation: typingWave 1.3s ease-in-out infinite;
}
.typing-dots i:nth-child(2) { animation-delay: 0.16s; }
.typing-dots i:nth-child(3) { animation-delay: 0.32s; }
@keyframes typingWave {
  0%, 60%, 100% { transform: translateY(0); opacity: 0.35; }
  30%           { transform: translateY(-3px); opacity: 1; }
}
.typing-label {
  font-size: 12.5px; color: var(--text-muted);
  transition: opacity 220ms var(--ease-out);
}
.typing-label.is-swapping { opacity: 0; }
/* Freistehend (ausserhalb einer Sprechblase), z.B. im Feedback-Feld */
.loading-row .typing-indicator { gap: 10px; }

@media (max-width: 760px) {
  /* Wie bei den alten Denk-Punkten: auf dem Handy sanftes Pulsieren statt Huepfen. */
  .typing-dots i { animation-name: typingFade; }
  @keyframes typingFade { 0%, 100% { opacity: 0.3; } 50% { opacity: 1; } }
}

@media (prefers-reduced-motion: reduce) {
  .skel, .skel-list, .wait-orb, .wait-orb-ring, .typing-dots i, .load-state { animation: none; }
  .wait-orb-ring { background: conic-gradient(from 0deg, rgba(37,99,235,0) 0deg, rgba(37,99,235,0) 200deg, var(--gold) 360deg); }
  .typing-dots i { opacity: 0.7; }
}
.load-state.is-empty .load-state-title { font-weight: 600; max-width: 380px; line-height: 1.45; }

/* ===== Klassen: Einladung als QR-Code (Beamer-Ansicht + Druckblatt) ===== */
/* Mit dem dritten Knopf braucht die Einlade-Zeile auf dem Handy einen Umbruch,
   sonst wird das Link-Feld unlesbar schmal. */
.class-invite-row { flex-wrap: wrap; }
.class-invite-row input { min-width: 200px; }
/* Handy: Link-Feld über die ganze Breite, die Icon-Knöpfe darunter in einer Reihe */
@media (max-width: 520px) { .class-invite-row input { min-width: 100%; } }
.class-qr-overlay { position: fixed; inset: 0; z-index: 400; background: rgba(15,23,42,0.55); display: flex; align-items: center; justify-content: center; padding: 20px; }
.class-qr-overlay[hidden] { display: none; }
.class-qr-card { background: var(--card-bg); border-radius: var(--r-card); padding: 28px 28px 22px; text-align: center; max-width: 560px; width: 100%; box-shadow: 0 30px 70px rgba(15,23,42,0.25); }
.class-qr-name { font-size: 22px; font-weight: 800; }
.class-qr-hint { font-size: 14px; color: var(--text-muted); margin-top: 4px; }
.class-qr-code { width: min(62vh, 78vw, 420px); margin: 18px auto; }
.class-qr-code svg { width: 100%; height: auto; display: block; }
.class-qr-alt { font-size: 14px; color: var(--text-muted); }
.class-qr-alt strong { color: var(--text); font-size: 20px; letter-spacing: 0.08em; }
.class-qr-actions { display: flex; gap: 8px; justify-content: center; margin-top: 18px; }
@media print {
  body.qr-open > *:not(#class-qr-overlay) { display: none !important; }
  body.qr-open #class-qr-overlay { position: static; background: none; }
  body.qr-open .class-qr-actions { display: none; }
  body.qr-open .class-qr-card { box-shadow: none; }
}

/* ===== Klasse: "Wen ansprechen?" + Gruende pro Person ===== */
.class-attention { margin-bottom: 14px; }
.class-attention-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 12px; padding: 9px 0; border-bottom: 1px solid var(--card-border); font-size: 13.5px; }
.class-attention-row:last-child { border-bottom: none; }
.student-reasons { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.student-reason { font-size: 11.5px; font-weight: 600; color: var(--amber-text); background: #FFF7ED; border-radius: var(--r-pill); padding: 3px 9px; }

/* ===== Klasse beitreten: QR-Code scannen + Code von Hand (Schüleransicht) ===== */
.class-scan-toggle { display: inline-flex; align-items: center; gap: 7px; }
.class-join-invite { margin: 4px 0 10px; padding: 10px 12px; border-radius: 12px; background: rgba(37,99,235,0.08); color: var(--gold-text); font-size: 13.5px; font-weight: 600; line-height: 1.45; }
.class-join-invite[hidden] { display: none; }
.class-scan { margin: 12px 0 4px; }
.class-scan[hidden] { display: none; }
.class-scan-view { position: relative; width: 100%; max-width: 360px; aspect-ratio: 1 / 1; border-radius: 18px; overflow: hidden; background: #0F172A; }
.class-scan-view video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; }
.class-scan.is-live .class-scan-view video { opacity: 1; transition: opacity 200ms ease; }
.class-scan-frame { position: absolute; inset: 16%; border: 3px solid rgba(255,255,255,0.9); border-radius: 18px; box-shadow: 0 0 0 999px rgba(15,23,42,0.35); opacity: 0; pointer-events: none; }
.class-scan.is-live .class-scan-frame { opacity: 1; }
.class-scan-idle { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; color: rgba(255,255,255,0.75); }
.class-scan.is-live .class-scan-idle { display: none; }
.class-scan-status { min-height: 1.4em; margin: 8px 0 6px; font-size: 13px; color: var(--text-muted); line-height: 1.45; }
.class-scan-status.is-warn { color: var(--amber-text); font-weight: 600; }
.class-scan-status.is-ok { color: var(--green); font-weight: 600; }
.class-join-label { display: block; margin: 14px 0 6px; font-size: 13px; font-weight: 600; color: var(--text); }
@media (prefers-reduced-motion: reduce) {
  .class-scan.is-live .class-scan-view video { transition: none; }
}

/* ── Aufträge für die Klasse (Lehrer-Ansicht, classes.js) ─────────────────── */
.assign-row { padding: 12px 0; border-bottom: 1px solid var(--card-border); }
.assign-row:last-child { border-bottom: none; }
.assign-bar { height: 6px; border-radius: 6px; background: var(--bg-second); overflow: hidden; margin: 8px 0 4px; }
.assign-bar > span { display: block; height: 100%; background: var(--gold); }
.assign-meta { font-size: 12.5px; color: var(--text-muted); }
.assign-meta.is-late { color: var(--amber-text); font-weight: 600; }
.assign-row details summary { font-size: 12.5px; color: var(--gold-text); cursor: pointer; margin-top: 4px; }

/* Aufträge – Ansicht für Schülerinnen und Schüler (Startseite + Meine Klasse) */
.assign-mine { display:flex; gap:12px; align-items:flex-start; padding:10px 0; border-bottom:1px solid var(--card-border); cursor:pointer; }
.assign-mine:last-child { border-bottom:none; }
.assign-mine:focus-visible { outline:2px solid var(--gold); outline-offset:2px; border-radius:8px; }
.assign-dot { width:20px; height:20px; border-radius:50%; border:2px solid var(--gold); flex-shrink:0; display:flex; align-items:center; justify-content:center; margin-top:1px; }
.assign-dot.is-done { background:var(--gold); color:#fff; }
.assign-mine-title { font-size:14px; font-weight:700; }
.assign-mine.is-done .assign-mine-title { color: var(--text-muted); text-decoration: line-through; }

/* ===== Offline-Hinweis (App) ===== */
.offline-bar { position: fixed; top: 0; left: 0; right: 0; z-index: 450; display: flex; align-items: center; justify-content: center; gap: 8px; padding: calc(8px + env(safe-area-inset-top)) 16px 8px; background: #18181B; color: #fff; font-size: 13px; font-weight: 600; line-height: 1.4; text-align: center; }
.offline-bar[hidden] { display: none; }
.offline-bar svg { width: 16px; height: 16px; flex-shrink: 0; }

/* ══ "Mein Weg": Checkliste neben dem Punkte-Weg (Ziel "Werkzeuge ordnen") ══
   Handy/Tablet: unter Weg + "Jetzt dran"-Karte. Ab 1200 px: rechts daneben. */
.myway-layout { display: flex; flex-direction: column; gap: 24px; }
.myway-checklist { width: 100%; max-width: 560px; margin: 0 auto; padding: 18px 20px; box-sizing: border-box; }
.checklist-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.checklist-title { font-family: var(--font-title); font-size: 17px; font-weight: 800; margin: 0; }
.checklist-count { font-size: 12px; font-weight: 600; color: var(--text-muted); white-space: nowrap; }
.checklist-intro { margin: 4px 0 10px; }
.checklist-list { display: flex; flex-direction: column; }
.checklist-empty { margin: 6px 0; }
.checklist-item { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--card-border); }
.checklist-item:last-child { border-bottom: none; }
.checklist-check {
  flex-shrink: 0; width: 26px; height: 26px; padding: 0; border-radius: 50%;
  border: 2px solid var(--card-border); background: var(--card-bg); color: transparent;
  display: inline-flex; align-items: center; justify-content: center; cursor: pointer;
  transition: border-color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);
}
.checklist-check svg { width: 14px; height: 14px; }
.checklist-check:hover { border-color: var(--green); }
.checklist-check:focus-visible, .checklist-del:focus-visible, button.checklist-text:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
.checklist-item.is-done .checklist-check { border-color: var(--green); background: #F0FAF3; color: var(--green); }
.checklist-text { flex: 1; min-width: 0; font-size: 14px; line-height: 1.45; color: var(--text); overflow-wrap: anywhere; }
button.checklist-text { background: none; border: none; padding: 0; margin: 0; text-align: left; font: inherit; font-size: 14px; color: inherit; cursor: pointer; }
button.checklist-text:hover { color: var(--gold-text); }
.checklist-item.is-done .checklist-text { color: var(--text-muted); text-decoration: line-through; }
.checklist-del {
  flex-shrink: 0; width: 32px; height: 32px; padding: 0; border: none; border-radius: 50%;
  background: none; color: var(--text-faint); display: inline-flex; align-items: center; justify-content: center; cursor: pointer;
}
.checklist-del svg { width: 14px; height: 14px; }
.checklist-del:hover { background: var(--bg-second); color: var(--red); }
.checklist-add { display: flex; gap: 8px; margin-top: 12px; }
.checklist-add input { flex: 1; min-width: 0; }
@media (min-width: 1200px) {
  .content-inner:has(#page-myway.active) { max-width: 1160px; }
  .myway-layout { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 40px; align-items: start; }
  .myway-layout .myway-path { max-width: none; margin: 0; }
  .myway-checklist { max-width: none; margin: 0; }
}
@media (prefers-reduced-motion: reduce) { .checklist-check { transition: none; } .myway-zz-info, .myway-zz-connector { animation: none; } }

/* ===== Interview: Wahl-Pop-up (Schriftlich/Muendlich) ===== */
/* Zwei gleich grosse Kacheln nebeneinander: grosses Icon, Wort darunter (auch auf dem Handy) */
.ivm-choices { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.ivm-choice {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px;
  width: 100%; min-height: 136px; text-align: center;
  padding: 20px 10px 18px; border-radius: 20px; border: 1.5px solid var(--card-border);
  background: var(--card-bg); color: var(--text); font: inherit; cursor: pointer;
  transition: border-color var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);
}
.ivm-choice:hover, .ivm-choice:focus-visible { border-color: var(--gold); box-shadow: 0 0 0 4px var(--gold-light); outline: none; }
.ivm-choice[disabled] { opacity: 0.55; cursor: not-allowed; border-color: var(--card-border); box-shadow: none; }
.ivm-choice-icon { width: 60px; height: 60px; border-radius: 50%; background: var(--gold-light); color: var(--gold); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.ivm-choice-title { display: block; font-weight: 700; font-size: 16px; line-height: 1.25; }
.ivm-badge { display: inline-block; margin-top: -4px; font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 100px; background: var(--bg-second); color: var(--text-secondary); }
.ivm-badge[hidden], .ivm-note[hidden] { display: none; }
.ivm-note { margin-top: 12px; font-size: 13px; line-height: 1.5; color: var(--text-secondary); background: var(--bg-second); border-radius: 14px; padding: 10px 12px; }
@media (max-width: 560px) {
  #interview-mode-modal { align-items: flex-end; padding: 0; }
  #interview-mode-modal .modal { max-width: none; border-radius: 28px 28px 0 0; padding-bottom: calc(20px + env(safe-area-inset-bottom)); }
}

/* ===== Interview muendlich: Ansicht nach Vorlage Startseite v2 (.voice-card) ===== */
.ivv-card { max-width: 560px; margin: 0 auto; padding: 22px; border-radius: 24px; box-shadow: 0 1px 2px rgba(24,24,27,0.04), 0 30px 70px rgba(24,24,27,0.12); }
.ivv-head { display: flex; justify-content: space-between; gap: 10px; font-size: 12px; font-weight: 700; color: var(--text-muted); margin-bottom: 14px; }
.ivv-head > span:first-child { min-width: 0; overflow-wrap: anywhere; }
.ivv-progress { flex-shrink: 0; font-variant-numeric: tabular-nums; }
.ivv-q { background: var(--bg-second); border-radius: 16px 16px 16px 4px; padding: 12px 16px; font-size: 16px; line-height: 1.5; max-width: 92%; color: var(--text); }
.ivv-stage { display: flex; align-items: center; justify-content: center; gap: 18px; padding: 30px 0 22px; }
.ivv-mic {
  position: relative; width: 88px; height: 88px; border-radius: 50%; border: none; flex-shrink: 0;
  background: var(--gold); color: #fff; display: flex; align-items: center; justify-content: center;
  cursor: pointer; box-shadow: 0 10px 26px rgba(37,99,235,0.35), 0 0 0 0 rgba(237,233,254,0);
  transition: background 250ms var(--ease-out), box-shadow 250ms var(--ease-out), transform var(--dur-base) var(--ease-out);
}
.ivv-mic:hover { background: var(--gold-hover); }
.ivv-mic:focus-visible { outline: 3px solid var(--gold); outline-offset: 4px; }
.ivv-mic svg { width: 32px; height: 32px; position: relative; z-index: 1; transition: opacity 250ms var(--ease-out), transform 250ms var(--ease-out); }
/* Zweites Icon (Lautsprecher) liegt deckungsgleich darueber und wird nur beim Vorlesen eingeblendet */
.ivv-mic .ivv-ico-speak { position: absolute; top: 50%; left: 50%; margin: -16px 0 0 -16px; opacity: 0; transform: scale(0.8); }
.ivv-mic::before, .ivv-mic::after { content: ''; position: absolute; inset: 0; border-radius: 50%; border: 2px solid var(--gold); opacity: 0; pointer-events: none; transition: opacity 250ms var(--ease-out); }
.ivv-mic[aria-disabled="true"] { background: var(--text-muted); box-shadow: none; cursor: progress; }
.ivv-wave { display: flex; align-items: center; gap: 4px; height: 44px; color: var(--gold); opacity: 0.35; transition: color 250ms var(--ease-out), opacity 250ms var(--ease-out); }
.ivv-wave i { display: block; width: 4px; border-radius: 3px; background: currentColor; height: var(--h, 40%); transform: scaleY(0.35); }
.ivv-wave i:nth-child(3n) { animation-delay: -0.3s; }
.ivv-wave i:nth-child(3n+1) { animation-delay: -0.6s; }
#interview-voice-view.is-listening .ivv-wave { opacity: 1; }
#interview-voice-view.is-listening .ivv-wave i { animation: ivvWave 0.8s ease-in-out infinite alternate; }
#interview-voice-view.is-listening .ivv-mic::before { animation: ivvRing 2.4s ease-out infinite; }
#interview-voice-view.is-listening .ivv-mic::after { animation: ivvRing 2.4s ease-out 1.2s infinite; }
/* Coach spricht: violett, Lautsprecher-Icon, heller Ring + langsam drehender Verlaufs-Ring */
#interview-voice-view.is-speaking .ivv-mic { background: #7C3AED; box-shadow: 0 10px 26px rgba(124,58,237,0.35), 0 0 0 9px #EDE9FE; }
#interview-voice-view.is-speaking .ivv-mic:hover { background: #6D28D9; }
#interview-voice-view.is-speaking .ivv-mic:focus-visible { outline-color: #7C3AED; outline-offset: 13px; }
#interview-voice-view.is-speaking .ivv-mic .ivv-ico-mic { opacity: 0; transform: scale(0.8); }
#interview-voice-view.is-speaking .ivv-mic .ivv-ico-speak { opacity: 1; transform: scale(1); }
#interview-voice-view.is-speaking .ivv-mic::before {
  inset: -9px; border: none; opacity: 1;
  background: conic-gradient(from 0deg, #7C3AED, #C4B5FD 40%, rgba(196,181,253,0) 65%, #7C3AED);
  -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
  mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
  animation: ivvSpin 2.8s linear infinite;
}
#interview-voice-view.is-speaking .ivv-wave { color: #7C3AED; opacity: 1; }
#interview-voice-view.is-speaking .ivv-wave i { animation: ivvWave 1.1s ease-in-out infinite alternate; }
#interview-voice-view.is-speaking .ivv-status { color: #6D28D9; } /* ~7:1 auf dem Kartenhintergrund */
/* Wartet auf den Server: neutral */
#interview-voice-view.is-thinking .ivv-wave { color: var(--text-muted); opacity: 0.3; }
#interview-voice-view.is-thinking .ivv-status { color: var(--text-secondary); }
/* Wellen folgen dem echten Ton (interview.js, ivvWaveFrame): CSS-Animation aus,
   alle Balken volle Hoehe, das Skript setzt nur transform (fluessig, 60 fps). */
#interview-voice-view.ivv-wave-live .ivv-wave i { animation: none; height: 100%; transform: scaleY(0.12); will-change: transform; }
@keyframes ivvWave { from { transform: scaleY(0.35); } to { transform: scaleY(1); } }
@keyframes ivvRing { from { transform: scale(1); opacity: 0.5; } to { transform: scale(1.9); opacity: 0; } }
@keyframes ivvSpin { to { transform: rotate(360deg); } }
.ivv-status { font-size: 13.5px; font-weight: 700; color: var(--gold-hover); text-align: center; margin-top: -6px; min-height: 1.4em; transition: color 250ms var(--ease-out); }
.ivv-hint { font-size: 12.5px; color: var(--text-muted); text-align: center; margin-top: 2px; min-height: 1.3em; }
.ivv-transcript { font-size: 14px; line-height: 1.5; color: var(--text-secondary); font-style: italic; text-align: center; margin: 8px auto 0; max-width: 92%; overflow-wrap: anywhere; }
.ivv-transcript:empty { display: none; }
.ivv-note { margin-top: 12px; font-size: 13px; line-height: 1.5; color: var(--text-secondary); background: var(--bg-second); border-radius: 14px; padding: 10px 12px; }
.ivv-error { margin-top: 14px; font-size: 13.5px; line-height: 1.5; color: #7F1D1D; background: #FEF2F2; border-radius: 14px; padding: 12px 14px; }
.ivv-error-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
.ivv-fb { display: flex; gap: 10px; align-items: flex-start; margin-top: 16px; background: #ECFDF3; border-radius: 14px; padding: 12px 14px; font-size: 14px; line-height: 1.5; color: #14532D; }
.ivv-fb[hidden], .ivv-error[hidden], .ivv-note[hidden], .ivv-to-final[hidden], #ivv-retry[hidden] { display: none; }
.ivv-fb svg { width: 18px; height: 18px; flex-shrink: 0; margin-top: 1px; color: var(--green); }
.ivv-fb strong { display: block; font-size: 12px; text-transform: uppercase; letter-spacing: 0.05em; }
.ivv-to-final { margin-top: 14px; }
.ivv-actions { display: flex; justify-content: space-between; gap: 8px; flex-wrap: wrap; margin-top: 16px; }
.ivv-read-btn { display: inline-flex; align-items: center; gap: 6px; margin-bottom: 12px; }
.ivv-read-btn[hidden] { display: none; }
@media (max-width: 560px) {
  .ivv-card { padding: 18px 16px; }
  .ivv-stage { gap: 12px; padding: 24px 0 18px; }
  .ivv-mic { width: 80px; height: 80px; }
  .ivv-wave { gap: 3px; height: 36px; }
  .ivv-wave i { width: 3px; }
  .ivv-actions .btn { flex: 1 1 auto; }
}
@media (prefers-reduced-motion: reduce) {
  #interview-voice-view .ivv-wave i, #interview-voice-view .ivv-mic::before, #interview-voice-view .ivv-mic::after { animation: none !important; }
  #interview-voice-view.is-listening .ivv-wave i { transform: scaleY(1); }
}

/* Berufs-Finder: Knopf "Zur Checkliste hinzufügen" unter dem Berufstitel */
.career-detail-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 16px; }

/* ══ Pop-up "Exportieren" (Word / Canva / PDF) ══
   Kacheln wie beim Interview-Pop-up (.ivm-choice), hier drei nebeneinander. */
.ivm-choices.export-choices { grid-template-columns: repeat(3, 1fr); gap: 10px; }
.export-choices .ivm-choice { min-height: 120px; padding: 18px 6px 16px; }
.export-choices .ivm-choice-icon { width: 52px; height: 52px; }
.export-choices .ivm-choice-title { font-size: 15px; }
.export-canva-steps { margin: 12px 0 0; padding: 10px 12px; border-radius: var(--r-small); background: var(--bg-second); color: var(--text); line-height: 1.5; }
.export-canva-link { display: inline-block; margin-top: 6px; font-weight: 700; color: var(--gold-text); text-decoration: underline; text-underline-offset: 2px; }
.export-canva-link:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; border-radius: 4px; }
/* Erfolgs-Ansicht nach dem Herunterladen: gross und deutlich, wo die Datei jetzt ist */
.export-done { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 6px; padding: 6px 4px 4px; }
.export-done-icon { width: 68px; height: 68px; border-radius: 50%; background: var(--green); color: #fff; display: flex; align-items: center; justify-content: center; margin-bottom: 6px; }
.export-done-title { font-family: var(--font-title); font-size: 19px; font-weight: 800; line-height: 1.3; margin: 0; }
.export-done-file { font-size: 13.5px; font-weight: 600; color: var(--text-secondary); margin: 0; overflow-wrap: anywhere; }
.export-done-hint { font-size: 13.5px; line-height: 1.5; color: var(--text); background: var(--bg-second); border-radius: 14px; padding: 10px 12px; margin: 8px 0 6px; text-align: left; align-self: stretch; }
.export-done .btn { min-height: 44px; }
@media (max-width: 560px) {
  #export-modal { align-items: flex-end; padding: 0; }
  #export-modal .modal { max-width: none; border-radius: 28px 28px 0 0; padding-bottom: calc(20px + env(safe-area-inset-bottom)); }
}
@media (max-width: 360px) {
  .export-choices .ivm-choice { min-height: 108px; }
  .export-choices .ivm-choice-icon { width: 44px; height: 44px; }
  .export-choices .ivm-choice-title { font-size: 14px; }
}

/* Aktionen unter dem fertigen Text (Motivationsschreiben + Lebenslauf): Icon-Reihe */
.coach-final-actions { display: flex; align-items: center; gap: 10px; margin-top: 10px; flex-wrap: wrap; }

/* ══ Icon-Knopf (.icon-action): eine Komponente für alle Neben-Aktionen ══
   44 × 44 px, abgerundet, getönter Hintergrund mit kräftigem Icon (Kontrast
   Icon/Hintergrund >= 4:1). Farbe nach Aktion: .ia-blue Exportieren/Herunterladen,
   (Standard) grau-blau Kopieren, .ia-amber Bibliothek, .ia-green Checkliste,
   .ia-red Löschen, .ia-violet QR-Code. Beschriftung steht in aria-label + title.
   Nach der Aktion ca. 1,5–2,5 s Haken statt Symbol: .is-copied (Kopieren,
   copyWithFeedback in tools.js) bzw. .is-done (Checkliste, checklist.js). */
.icon-action {
  --ia-fg: #475569; --ia-bg: #E8EBF1; --ia-bg-h: #DCE1EA; --ia-bd: #CBD3DF;
  width: 44px; min-width: 44px; height: 44px; padding: 0; flex-shrink: 0;
  border-radius: var(--r-button); border: 1px solid var(--ia-bd);
  background: var(--ia-bg); color: var(--ia-fg);
}
.icon-action:hover { background: var(--ia-bg-h); border-color: var(--ia-fg); transform: translateY(-1px); }
.icon-action:active { transform: scale(0.94); }
.icon-action:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
.icon-action svg { width: 22px; height: 22px; flex-shrink: 0; }
.ia-blue   { --ia-fg: #1D4ED8; --ia-bg: #E4ECFD; --ia-bg-h: #D5E1FB; --ia-bd: #BFD2F8; }
.ia-amber  { --ia-fg: #B45309; --ia-bg: #FCEBD3; --ia-bg-h: #F8DFBC; --ia-bd: #EFCB98; }
.ia-green  { --ia-fg: #15803D; --ia-bg: #DDF1E3; --ia-bg-h: #CDEAD6; --ia-bd: #B3DEC0; }
.ia-red    { --ia-fg: #B91C1C; --ia-bg: #FBE5E2; --ia-bg-h: #F7D4CF; --ia-bd: #EFBDB6; }
.ia-violet { --ia-fg: #5B45B0; --ia-bg: #ECE8F8; --ia-bg-h: #E0DAF3; --ia-bd: #CFC6EE; }
/* Erledigt-Zustand: grüner Haken (bleibt voll sichtbar, auch wenn kurz gesperrt) */
.icon-action.is-copied, .icon-action.is-done { --ia-fg: #15803D; --ia-bg: #DDF1E3; --ia-bg-h: #DDF1E3; --ia-bd: #15803D; }
.icon-action.is-done:disabled { opacity: 1; }
.icon-action .ia-ok { display: none; }
.icon-action.is-done .ia-ico { display: none; }
.icon-action.is-done .ia-ok { display: block; }
/* Reihe aus Icon-Knöpfen: bricht auf dem Handy sauber um */
.icon-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }

/* Kopier-Symbol + Haken (Icon-Knopf und Teilen-Sheet) */
.celebrate-sheet-dot .copy-ico, .celebrate-sheet-dot .copy-ok { width: 19px; height: 19px; }
.copy-swap .copy-ok, .copy-icon-btn .copy-ok { display: none; }
.copy-swap.is-copied .copy-ico, .copy-icon-btn.is-copied .copy-ico { display: none; }
.copy-swap.is-copied .copy-ok { display: block; color: var(--green); }
.copy-icon-btn.is-copied .copy-ok { display: block; }
.result-actions { align-items: center; }

/* Runde 2 (F8): Sprechblase "Stellio ist kurz ausgelastet" (busy-retry.js). Das Maskottchen ersetzt sie spaeter. */
.busy-bubble-wrap { display: flex; align-items: flex-start; gap: 12px; padding: 4px 0 8px; }
.busy-bubble-avatar { width: 40px; height: 40px; flex: 0 0 40px; border-radius: 50%; background: var(--card-bg); box-shadow: 0 0 0 1px var(--card-border); padding: 6px; object-fit: contain; }
.busy-bubble { position: relative; background: var(--card-bg); border: 1.5px solid var(--card-border); border-radius: 16px; padding: 12px 14px; max-width: 440px; }
.busy-bubble::before { content: ''; position: absolute; left: -8px; top: 14px; width: 14px; height: 14px; background: var(--card-bg); border-left: 1.5px solid var(--card-border); border-bottom: 1.5px solid var(--card-border); transform: rotate(45deg); }
.busy-bubble-text { font-size: 14.5px; font-weight: 600; margin: 0; }
.busy-bubble-sub { font-size: 12.5px; color: var(--text-muted); margin: 6px 0 0; }
.busy-bubble .btn { margin-top: 10px; }

/* Runde 2 Etappe 10 (W7): Knopf "Zurück" oben links in den Karten des Motivationsschreiben-Coaches */
.cover-back-btn { margin: -8px 0 10px -10px; padding-left: 10px; padding-right: 10px; }

/* Etappe 7b: Motivationsschreiben im Hintergrund - "wird fertiggestellt" auf Mein Weg und in der
   Checkliste, und die ruhige Benachrichtigungskarte (unten rechts; Handy: ueber der Navigation). */
.myway-zz-circle-pending { background: var(--card-bg); border: 2px dashed var(--gold); color: var(--gold); }
.myway-zz-circle-pending svg { display: block; }
.myway-zz-pending { margin-top: 4px; font-size: 10.5px; font-weight: 600; color: var(--gold-text); text-align: center; position: relative; z-index: 1; background: var(--bg-second); padding: 1px 7px; border-radius: var(--r-pill); }
.checklist-main { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 4px; }
.checklist-main .checklist-text { flex: none; width: 100%; }
.checklist-pending { flex: 0 0 auto; font-size: 11.5px; font-weight: 600; color: var(--gold-text); background: color-mix(in srgb, var(--gold) 10%, transparent); padding: 3px 9px; border-radius: var(--r-pill); }
.checklist-item.is-next { box-shadow: inset 3px 0 0 var(--gold); }
.checklist-item.is-next .checklist-text { font-weight: 600; }
.cover-notices { position: fixed; right: 20px; bottom: 92px; z-index: 1100; display: flex; flex-direction: column; gap: 10px; width: min(380px, calc(100vw - 32px)); pointer-events: none; }
.cover-notice { pointer-events: auto; position: relative; display: flex; align-items: flex-start; gap: 12px; padding: 14px 40px 14px 14px; background: var(--card-bg); border: 1.5px solid var(--card-border); border-radius: 16px; box-shadow: var(--shadow-lift); animation: cover-notice-in 260ms cubic-bezier(0.22, 1, 0.36, 1) both; }
.cover-notice-icon { width: 36px; height: 36px; flex: 0 0 36px; border-radius: 50%; background: var(--card-bg); box-shadow: 0 0 0 1px var(--card-border); padding: 5px; object-fit: contain; }
.cover-notice-body { flex: 1; min-width: 0; }
.cover-notice-title { font-size: 14.5px; font-weight: 700; margin: 0; color: var(--text); }
.cover-notice-sub { font-size: 12.5px; color: var(--text-muted); margin: 3px 0 0; overflow-wrap: anywhere; }
.cover-notice .btn { margin-top: 10px; }
.cover-notice-close { position: absolute; top: 8px; right: 8px; width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; border: none; background: none; color: var(--text-muted); border-radius: 50%; cursor: pointer; }
.cover-notice-close:hover { background: var(--bg-second); }
@keyframes cover-notice-in { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .cover-notice { animation: none; } }
@media (max-width: 760px) { .cover-notices { left: 16px; right: 16px; width: auto; bottom: calc(160px + env(safe-area-inset-bottom)); } }

/* Runde 2 Etappe 11 (K3): "Diktieren" waehrend der Aufnahme deutlich markiert (Knopffarbe des Redesigns). */
#cover-p3-mic.mic-listening { background: var(--btn, var(--gold)); border-color: var(--btn, var(--gold)); color: var(--btn-ink, #fff); }
/* Runde 2 Etappe 11 (K5): Platz unten, damit "Frag Stellio" auf dem Handy nichts verdeckt. */
@media (max-width: 640px) {
  #cover-session-list, #schnupper-session-list, #cvcoach-session-list { padding-bottom: 72px; }
  #cover-final-card, #schnupper-final-card { margin-bottom: 72px; }
}

/* ── Bewerbungsprofil in den Einstellungen (coaches-auftrag Etappe 3) ────────*/
.bp-group-title { font-size:12px; font-weight:600; color:var(--text-muted); margin:14px 0 6px; }
.bp-row { display:flex; flex-wrap:wrap; align-items:center; gap:8px; padding:8px 0; border-bottom:1px solid var(--card-border); }
.bp-row-text { flex:1 1 220px; font-size:13.5px; line-height:1.5; }
.bp-src { font-size:11px; padding:2px 8px; border-radius:999px; background:var(--bg-second); color:var(--text-muted); }
.bp-src--dokument, .bp-src--vermutung { background:#FFF4E5; color:#8A5A00; }

/* ── Gespraechsmotor Motivationsschreiben (coaches-auftrag Etappe 5/6) ─────*/
.cover-e-reflect { font-size:13px; color:var(--text-muted); font-style:italic; margin:0 0 8px; }
/* Ja/Nein-Frage (Korrektur "genug Inhalt"): Ja und Nein gleichwertig, "Weiss ich nicht" als Textlink darunter. */
.cover-e-yn { display:grid; grid-template-columns:1fr 1fr; gap:8px; max-width:320px; }
.cover-e-yn .btn.selected { background:var(--bg-second); border-color:var(--text-muted); }
.cover-e-textlink { background:none; border:0; padding:4px 0; font:inherit; font-size:13px; color:var(--text-muted); text-decoration:underline; text-underline-offset:3px; cursor:pointer; }
.cover-e-textlink:hover, .cover-e-textlink:focus-visible { color:var(--text-secondary); }
.cover-e-statement { font-size:14.5px; line-height:1.55; padding:12px 14px; border-radius:14px; background:var(--bg-second); margin-bottom:12px; }
.cover-e-hint { font-size:12.5px; opacity:.9; }
.cover-pr-list { margin:4px 0 16px; }
.cover-pr-list .bp-row:last-child { border-bottom:none; }

/* ── Motivationsschreiben: Grundlage und Absatz aendern (coaches-auftrag Etappe 7) ─────*/
.cover-used { margin-top:16px; padding-top:16px; border-top:1px solid var(--card-border); }
.cover-used-title { font-size:14.5px; font-weight:700; margin:0 0 4px; }
.cover-part-pick { font:inherit; color:inherit; text-align:left; width:100%; padding:12px 14px; margin-bottom:8px; font-size:13.5px; line-height:1.5; cursor:pointer; }
.cover-part-pick.is-on { outline:2px solid var(--gold); }

/* ── Lebenslauf-Builder (coaches-auftrag Etappe 8, cv-builder.js) ─────────────
   Dokumentorientiert: Abschnitte links, Vorschau als weisses Blatt rechts
   (ab 1024 px nebeneinander, darunter gestapelt, auf dem Handy per Knopf). */
.cvb-layout { display:grid; gap:16px; }
@media (min-width:1024px) { .cvb-layout { grid-template-columns: minmax(0,1fr) minmax(0,1fr); align-items:start; } .cvb-preview { position:sticky; top:16px; } }
.cvb-sections { min-width:0; }
.cvb-sec { padding:16px 18px; margin-bottom:10px; }
.cvb-sec--open { box-shadow: 0 0 0 1.5px var(--btn-line), 0 4px 12px rgba(24,24,27,0.05); }
.cvb-sec-head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.cvb-sec-title { font-family: var(--font-title); font-weight:700; font-size:15px; margin:0; min-width:0; }
.cvb-sec-actions { display:flex; align-items:center; gap:8px; flex-shrink:0; }
.cvb-sec-body { margin-top:12px; }
.cvb-status { font-size:11.5px; padding:2px 9px; border-radius:999px; background:var(--bg-second); color:var(--text-muted); white-space:nowrap; }
.cvb-status--review { background:#FFF4E5; color:#8A5A00; }
.cvb-status--done { background:#E8F5EC; color:#15803D; }
.cvb-row { border-top:1px solid var(--card-border); padding:12px 0; display:grid; gap:8px; }
.cvb-row:first-child { border-top:none; padding-top:0; }
.cvb-row--review { background:#FFFBF2; border-radius:10px; padding:12px; border-top:none; margin-top:8px; border-left:4px solid #F5B400; } /* gelb markiert: zu pruefen (Text cv.upload.done) */
.cvb-row-actions { display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end; }
.cvb-grid { display:grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap:8px 12px; }
.cvb-field { min-width:0; }
.cvb-field .field-label { margin-bottom:4px; }
.cvb-field--wide { grid-column: 1 / -1; }
.cvb-range { display:grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap:8px 12px; align-items:end; }
.cvb-today { grid-column: 1 / -1; display:inline-flex; align-items:center; gap:8px; font-size:13px; color:var(--text-secondary); cursor:pointer; }
.cvb-today input { width:auto; height:auto; accent-color: var(--btn); }
.cvb-today input:focus-visible { outline:2px solid var(--btn); outline-offset:2px; }
.cvb-point { display:flex; gap:8px; align-items:center; margin-bottom:6px; }
.cvb-point input { flex:1; min-width:0; }
.cvb-arts { flex-wrap:wrap; }
/* Etappe 9: Vorschlaege aus dem Profil (oben im Abschnitt) und Coach-Hilfe in der Erfahrung */
.cvb-fromprofile { margin:0 0 10px; }
.cvb-fromprofile .hint { margin:0 0 6px; }
.cvb-help:empty { display:none; }
.cvb-help-line { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.cvb-help-line input { flex:1 1 180px; min-width:0; }
@media (max-width: 600px) { .cvb-help-line input { flex-basis:100%; } } /* Handy: Feld ueber die volle Breite (Platzhalter ganz lesbar), Knopf darunter */
.cvb-suggest { background:var(--bg-second); border-radius:12px; padding:12px 14px; margin-top:8px; }
.cvb-suggest-title { font-size:11.5px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--text-muted); }
.cvb-suggest ul { margin:6px 0 4px; padding-left:18px; font-size:13.5px; }
.cvb-suggest .hint { margin:0 0 8px; }
.cvb-ask { background:var(--bg-second); border-radius:12px; padding:12px 14px; margin-top:8px; display:grid; gap:8px; }
.cvb-ask-q { margin:0; font-weight:600; font-size:13.5px; }
/* Korrektur "Fuellen" (Punkt 6): "Vorschläge mit dem jetzigen Stand" nicht ueber die ganze Breite - auf dem Handy
   lag der blaue Chat-Knopf (rechts unten) darueber. Links ausgerichtet und mit Abstand zum Knopf. */
.cvb-ask > .btn-ghost { justify-self:start; max-width:100%; white-space:normal; text-align:left; }
@media (max-width: 760px) { .cvb-ask > .btn-ghost, .cvb-help-line > .btn { max-width:calc(100% - 72px); } }
.cvb-ask .chip-row { flex-wrap:wrap; }
.cvb-ask .chip { max-width:100%; min-width:0; overflow-wrap:anywhere; word-break:break-word; white-space:normal; text-align:left; } /* sehr langes Wort: umbrechen statt ueber den Rand */
.cvb-tag { justify-self:start; font-size:11.5px; padding:2px 9px; border-radius:999px; background:#FFF4E5; color:#8A5A00; }
.cvb-empty { margin:0 0 10px; }
.cvb-add { margin-top:8px; }
.cvb-finish { margin-top:6px; }
/* Korrektur "genug Inhalt": Hinweis-Karte "Hier fehlt noch …" ueber "Lebenslauf fertig" (links ausgerichtet, Knoepfe umbrechen). */
.cvb-finish .cvb-gaps { padding:16px 18px; margin-bottom:12px; display:grid; gap:10px; }
.cvb-finish .cvb-gaps .hint { margin:0; text-align:left; }
.cvb-gap-row { display:grid; gap:6px; }
.cvb-gaps .btn-ghost { justify-self:start; max-width:100%; white-space:normal; text-align:left; }
.cvb-finish .btn[disabled] { opacity:.55; cursor:not-allowed; }
.cvb-finish .hint { margin-top:8px; text-align:center; }
.cvb-finish .cvb-actions { justify-content:center; margin-top:12px; } /* Etappe 10: Exportieren, Kopieren, Checkliste */
.cvb-preview-toggle { display:none; justify-self:start; }
.cvb-preview-label { font-size:11.5px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--text-muted); margin:0 0 8px 2px; }
.cvb-paper { background:#fff; border:1px solid var(--card-border); border-radius:12px; padding:28px 26px; font-size:12.5px; line-height:1.5; color:#1f2937; box-shadow: 0 1px 2px rgba(24,24,27,0.04), 0 8px 24px -12px rgba(24,24,27,0.18); overflow-wrap:break-word; word-break:normal; hyphens:manual; }
.cvb-paper h4 { font-size:11.5px; letter-spacing:.06em; text-transform:uppercase; margin:16px 0 6px; padding-bottom:3px; border-bottom:1px solid #e5e7eb; }
.cvb-paper .cvb-line { display:grid; grid-template-columns: 110px 1fr; gap:10px; margin-bottom:6px; }
.cvb-paper .cvb-item { margin-bottom:4px; }
.cvb-paper ul { margin:2px 0 0; padding-left:16px; }
.cvb-paper-name { font-family: var(--font-title); font-size:20px; font-weight:800; letter-spacing:-0.01em; color:#111827; }
.cvb-paper-contact { color:#4b5563; margin-top:2px; }
.cvb-paper-date { color:#4b5563; font-variant-numeric: tabular-nums; }
.cvb-paper-main { font-weight:600; }
.cvb-paper-sub { color:#4b5563; }
.cvb-paper-empty { color:#6b7280; margin:0; text-align:center; padding:24px 0; }
/* Etappe 11: Startauswahl und Lebenslauf hochladen */
.cvb-start { display:grid; gap:12px; }
@media (min-width:720px) { .cvb-start { grid-template-columns: repeat(2, minmax(0,1fr)); } }
.cvb-choice { text-align:left; padding:20px; width:100%; margin-bottom:0; font:inherit; color:inherit; cursor:pointer; display:flex; flex-direction:column; gap:6px; }
.cvb-choice:focus-visible { outline:2px solid var(--btn); outline-offset:2px; }
.cvb-choice-title { font-family: var(--font-title); font-weight:700; font-size:16px; color:var(--text); }
.cvb-choice-sub { font-size:13.5px; color:var(--text-secondary); line-height:1.45; }
.cvb-upload { padding:20px; display:grid; gap:12px; justify-items:start; }
.cvb-upload .hint { margin:0; }
.cvb-upload-msg { margin:0; padding:10px 12px; border-radius:10px; background:#FFF4E5; color:#8A5A00; font-size:13.5px; line-height:1.45; justify-self:stretch; }
.cvb-upload-actions { display:flex; flex-wrap:wrap; gap:8px; }
.cvb-lib .hint { margin:0 0 6px; }
.cvb-lib .chip-row { flex-wrap:wrap; }
.cvb-lib .chip { max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cvb-notice { background:#FFF4E5; color:#8A5A00; border-radius:12px; padding:10px 14px; font-size:13.5px; line-height:1.45; margin-bottom:10px; }
.cvb-note { margin:0; font-size:12.5px; color:#8A5A00; line-height:1.45; }
.cvb-personal-review { margin:0 0 12px; }
.cvb-differs { display:flex; flex-wrap:wrap; gap:6px 10px; align-items:center; font-size:13px; }
.cvb-field--review input,
.app-shell .cvb-field--review input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]) { background:#FFF6E3; border-color:#F2C37A; } /* staerker als depth.css */
.export-review-left { margin:0 0 14px; padding:8px 12px; border-radius:var(--r-small); background:#FFF4E5; color:#8A5A00; }
.cvb-choice { text-align:left; padding:20px; width:100%; margin-bottom:12px; }
@media (max-width:767px) {
  .cvb-preview-toggle { display:inline-flex; order:-2; }
  .cvb-preview { order:-1; }
  .cvb-layout:not(.cvb-layout--preview) .cvb-preview { display:none; }
  .cvb-layout { gap:12px; }
  .cvb-sec { padding:14px; }
  .cvb-grid, .cvb-range { grid-template-columns: minmax(0,1fr); }
  .cvb-paper { padding:20px 16px; }
  .cvb-paper .cvb-line { grid-template-columns: 82px 1fr; gap:8px; }
}
#cvb-root:not(.hidden) ~ #cvcoach-final-card { margin-top:16px; }

/* ===== Einführung eingefroren (Lino 29.10.2026): abgedunkelt, kein Scrollen, kein Klick daneben ===== */
html.tour-lock, html.tour-lock body, html.tour-lock .content, html.tour-lock .main { overflow: hidden !important; overscroll-behavior: none; touch-action: none; }
#tour-overlay { pointer-events: auto; z-index: 1000; }
#tour-overlay .tour-dim { position: fixed; inset: 0; }
#tour-overlay.is-center .tour-dim { background: rgba(15, 23, 42, .55); }
#tour-overlay .tour-highlight-ring { border-radius: 14px; box-shadow: 0 0 0 4px rgba(37, 99, 235, .22), 0 0 0 200vmax rgba(15, 23, 42, .55); pointer-events: none; }
#tour-overlay .tour-highlight-ring[hidden] { display: none; }
#tour-overlay .tour-card { width: min(320px, calc(100vw - 32px)); padding: 20px; border-radius: 20px; touch-action: auto; }
#tour-overlay.is-center .tour-card { width: min(360px, calc(100vw - 32px)); text-align: center; }
#tour-overlay.is-center .tour-actions { justify-content: center; gap: 14px; flex-direction: row-reverse; }
#tour-overlay .tour-card h3 { font-size: 18px; margin-bottom: 6px; }
#tour-overlay .tour-card p { font-size: 14.5px; line-height: 1.55; color: var(--text); opacity: .8; }
#tour-overlay .tour-next { padding: 10px 20px; font-size: 14px; }
.tour-dots { display: flex; gap: 5px; margin-bottom: 12px; }
#tour-overlay.is-center .tour-dots { justify-content: center; }
.tour-dots i { width: 6px; height: 6px; border-radius: 3px; background: var(--card-border); transition: width .2s ease, background .2s ease; }
.tour-dots i.done { background: var(--gold); opacity: .45; }
.tour-dots i.on { width: 18px; background: var(--gold); }

/* ── Lebenslauf-Designs (lino/lebenslauf-vorlagen, cv-designs.js) ─────────── */
.cvb-design-btn { display: inline-flex; align-items: center; gap: 8px; margin: 4px 0 10px; }
.cvd-overlay { position: fixed; inset: 0; z-index: 400; background: rgba(15, 23, 42, .5); display: flex; align-items: stretch; justify-content: center; padding: 16px; }
.cvd-shell { background: var(--card-bg); border-radius: 18px; width: min(1200px, 100%); display: flex; flex-direction: column; overflow: hidden; box-shadow: 0 20px 60px rgba(0,0,0,.25); }
.cvd-bar { display: flex; align-items: center; gap: 12px; padding: 10px 12px 10px 18px; border-bottom: 1px solid var(--card-border); }
.cvd-bar strong { font-size: 15px; }
.cvd-bar-hint { flex: 1; font-size: 12.5px; color: var(--text-muted); }
.cvd-close { width: 40px; height: 40px; border-radius: 10px; border: none; background: transparent; color: var(--text-muted); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.cvd-close:hover { background: var(--bg-second); color: var(--text); }
.cvd-layout { flex: 1; min-height: 0; display: grid; grid-template-columns: 300px 1fr; }
.cvd-pick { border-right: 1px solid var(--card-border); padding: 14px; overflow-y: auto; }
.cvd-pick-title { font-size: 12px; font-weight: 700; color: var(--text-muted); text-transform: uppercase; letter-spacing: .08em; margin: 4px 0 8px; }
.cvd-tpls { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; margin-bottom: 16px; }
.cvd-tpl { border: 1.5px solid var(--card-border); border-radius: 10px; background: var(--card-bg); padding: 6px; cursor: pointer; display: flex; flex-direction: column; gap: 6px; }
.cvd-tpl.active { border-color: var(--gold); box-shadow: 0 0 0 2px var(--gold); }
.cvd-tpl-thumb { display: block; height: 170px; overflow: hidden; border-radius: 4px; background: #fff; position: relative; pointer-events: none; }
.cvd-tpl-scale { position: absolute; top: 0; left: 0; transform: scale(.15); transform-origin: 0 0; }
.cvd-tpl-name { font-size: 12.5px; font-weight: 600; }
.cvd-accents { display: flex; gap: 8px; flex-wrap: wrap; }
.cvd-accent { width: 30px; height: 30px; border-radius: 50%; border: 2px solid #fff; box-shadow: 0 0 0 1px var(--card-border); cursor: pointer; }
.cvd-accent.active { box-shadow: 0 0 0 3px var(--text); }
.cvd-stage { overflow: auto; background: var(--bg-second); padding: 12px; }
.cvd-stage-inner { margin: 0 auto; width: 794px; }
.cvd-stage .cvd-page { box-shadow: 0 2px 12px rgba(0,0,0,.12); }
@media (max-width: 760px) {
  .cvd-overlay { padding: 0; }
  .cvd-shell { border-radius: 0; }
  .cvd-bar-hint { display: none; }
  .cvd-bar strong { flex: 1; }
  .cvd-layout { grid-template-columns: 1fr; grid-template-rows: auto 1fr; }
  .cvd-pick { border-right: none; border-bottom: 1px solid var(--card-border); max-height: 210px; }
  .cvd-tpls { grid-template-columns: repeat(5, 92px); overflow-x: auto; }
  .cvd-tpl-thumb { height: 120px; }
  .cvd-tpl-scale { transform: scale(.105); }
}

/* ── Lebenslauf: Vorlage am Anfang aussuchen (29.10.2026) ─────────────────── */
.cvd-start-head { margin-bottom: 12px; }
.cvd-start-title { font-family: var(--font-title); font-size: 24px; font-weight: 700; margin: 0 0 4px; color: var(--text); }
.cvd-start-filter { margin-bottom: 14px; }
.cvd-start-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 14px; }
.cvd-start-tpl { all: unset; box-sizing: border-box; cursor: pointer; display: flex; flex-direction: column; gap: 8px; padding: 8px; border-radius: 14px; background: var(--card-bg); box-shadow: var(--hn-shadow-sm, 0 1px 2px rgba(24,24,27,.04), 0 4px 12px rgba(24,24,27,.05)); transition: transform .15s, box-shadow .15s; }
.cvd-start-tpl:hover, .cvd-start-tpl:focus-visible { transform: translateY(-3px); box-shadow: 0 10px 24px rgba(112, 94, 78, .18); }
.cvd-start-tpl:focus-visible { outline: 2px solid var(--btn); outline-offset: 2px; }
.cvd-start-thumb { display: block; position: relative; width: 100%; aspect-ratio: 210 / 297; overflow: hidden; border-radius: 6px; background: #fff; box-shadow: inset 0 0 0 1px var(--card-border); pointer-events: none; }
.cvd-start-scale { position: absolute; top: 0; left: 0; transform-origin: 0 0; transform: scale(.19); }
.cvd-start-tpl .cvd-tpl-name { text-align: center; font-size: 13.5px; color: var(--text); }
.cvd-start-foot { display: flex; justify-content: center; margin-top: 18px; }
.cvd-shell-start { width: min(900px, 100%); }
.cvd-shell-start .cvd-stage { flex: 1; min-height: 0; }
.cvd-start-actions { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-top: 1px solid var(--card-border); flex-wrap: wrap; }
.cvd-start-actions .cvd-accents { flex: 1; }
.cvd-tpl.active { border-color: var(--btn); box-shadow: 0 0 0 2px var(--btn); }
@media (max-width: 760px) {
  .cvd-start-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .cvd-start-actions .cvd-accents { flex-basis: 100%; }
  .cvd-start-actions .btn-primary { flex: 1; }
}

/* Lebenslauf-Vorlagen: Pro-Schloss (gratis sind die ersten 3) */
.cvd-lock { position: absolute; top: 8px; right: 8px; z-index: 2; display: inline-flex; align-items: center; gap: 4px; padding: 3px 8px; border-radius: 100px; background: rgba(15, 23, 42, .78); color: #fff; font-size: 11px; font-weight: 700; letter-spacing: .02em; }
.cvd-tpl-thumb .cvd-lock, .cvd-start-thumb .cvd-lock { pointer-events: none; }
.cvd-tpl, .cvd-start-tpl { position: relative; }

/* lino/multicheck-umbau: Untermenue-Kacheln und Einleitungen in der Box */
.mc-subcat-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.mc-subcat-tile { display: block; width: 100%; text-align: left; cursor: pointer; padding: 18px 20px; margin: 0; }
.mc-subcat-tile h3 { font-size: 16px; }
.mc-subcat-list > .card:not(.mc-subcat-tile) { grid-column: 1 / -1; }
.mc-intro p { max-width: 560px; }
.mc-timed-intro { margin-top: 12px; }

/* lino/multicheck-umbau: Zeilen-Aufgaben (Grammatik, Rechtschreibung) - Text
   links, Spalten rechts mit Ueberschrift nur einmal oben, keine Trennstriche. */
.mc-story-title { font-size: 17px; font-weight: 700; color: var(--text); margin-bottom: 4px; }
.mc-lines-hint { font-size: 13px; color: var(--text-muted); margin-bottom: 14px; }
.mc-lines { display: grid; grid-template-columns: minmax(0, 1fr) 64px; column-gap: 14px; max-width: 760px; }
.mc-lines-words { grid-template-columns: minmax(0, 1fr) minmax(110px, 150px) 72px; }
.mc-lines-words.no-correction { grid-template-columns: minmax(0, 1fr) 72px; }
.mc-lines-head, .mc-line { display: contents; }
.mc-lines-head span { font-size: 12px; font-weight: 700; color: var(--text-muted); text-align: center; padding-bottom: 6px; }
.mc-line-text { font-size: 15.5px; line-height: 1.6; padding: 5px 0; color: var(--text); min-width: 0; text-align: left; hyphens: none; }
.mc-lines.is-story .mc-line-text { padding: 5px 0; }
.mc-line-num { color: var(--text-muted); margin-right: 6px; }
.mc-line-check { display: flex; align-items: center; justify-content: center; cursor: pointer; min-height: 40px; }
.mc-line-check input { width: 22px; height: 22px; accent-color: var(--gold); cursor: pointer; margin: 0; }
.mc-line-input { align-self: center; width: 100%; box-sizing: border-box; padding: 7px 9px; border: 1.5px solid var(--card-border); border-radius: 8px; font-size: 15px; background: var(--card-bg); }
.mc-gap-input { display: inline-block; margin: 0 4px; padding: 3px 7px; border: 1.5px solid var(--card-border); border-radius: 7px; font: inherit; font-weight: 600; color: var(--gold-text); background: var(--bg-second); max-width: 150px; }
.mc-gap-input:focus, .mc-line-input:focus { outline: none; border-color: var(--gold); background: var(--card-bg); }
.mc-line-result { grid-column: 1 / -1; font-size: 13px; line-height: 1.45; }
.mc-line-result:empty { display: none; }
.mc-line-result { padding: 0 0 8px; }
.mc-line.is-wrong .mc-gap-input, .mc-line.is-wrong .mc-line-input { border-color: var(--red); }
.mc-line.is-right .mc-gap-input, .mc-line.is-right .mc-line-input { border-color: var(--green); }
.mc-res-ok, .mc-res-bad { display: inline-flex; align-items: center; gap: 5px; font-weight: 600; }
.mc-res-ok { color: var(--green); }
.mc-res-bad { color: var(--red); }
.mc-res-why { color: var(--text-muted); }
.mc-res-ico { flex-shrink: 0; }
/* Antippbare Woerter: Hand-Zeiger und leichte Hervorhebung beim Darueberfahren */
.wc-word { cursor: pointer; border-radius: 4px; padding: 1px 2px; transition: background 120ms ease; }
.wc-word:hover { background: var(--gold-light, rgba(37,99,235,0.1)); text-decoration: underline; text-decoration-color: var(--gold); text-underline-offset: 3px; }
.wc-word:focus-visible { outline: 2px solid var(--gold); outline-offset: 1px; }
.wc-word.marked { background: rgba(166,65,47,0.14); color: var(--red); text-decoration: line-through; }
.wc-word.was-wrong { background: rgba(166,65,47,0.14); color: var(--red); font-weight: 600; }
@media (max-width: 760px) {
  .mc-lines { grid-template-columns: minmax(0, 1fr) 52px; column-gap: 8px; }
  /* Handy: Korrektur-Feld unter die Zeile statt daneben (sonst bleibt fuer den
     Text nur ein schmaler Streifen), "fehlerfrei" bleibt rechts. */
  .mc-lines-words { grid-template-columns: minmax(0, 1fr) 52px; grid-auto-flow: row dense; }
  .mc-lines-words .mc-line-text { grid-column: 1; }
  .mc-lines-words .mc-line-input { grid-column: 1; margin-bottom: 6px; }
  .mc-lines-words .mc-line-check { grid-column: 2; grid-row: span 2; }
  .mc-lines-words:not(.no-correction) .mc-lines-head span:nth-child(2) { display: none; }
  .mc-lines-words.no-correction { grid-template-columns: minmax(0, 1fr) 52px; }
  .mc-line-text { font-size: 15px; }
  .mc-lines-head span { font-size: 11px; }
  .mc-line-input { padding: 6px; font-size: 14px; }
}
/* Zahlenkette: beide Felder (A, B) bleiben hell, kleines A/B in der Ecke */
.num-chain-cell { position: relative; }
.num-chain-active { background: var(--gold-light, rgba(37,99,235,0.1)); border-color: var(--gold); color: var(--text); opacity: 1; }
.num-chain-active::before { content: attr(data-label); position: absolute; top: 4px; left: 7px; font-size: 11px; font-weight: 700; color: var(--gold-text); }
/* Zahlenvergleiche: Gleich/Ungleich auf dem Handy gross genug zum Antippen */
@media (max-width: 760px) {
  .speed-compare-btn { min-height: 44px; min-width: 76px; font-size: 14px; }
}
/* Tipps-Fenster: Abschnitte + Fragen-Hilfe zum Antippen */
.mc-subcat-item { position: relative; }
.mc-subcat-item .mc-subcat-tile { padding-right: 52px; height: 100%; }
.mc-subcat-tips { position: absolute; top: 10px; right: 10px; width: 36px; height: 36px; border-radius: 10px; border: none; background: transparent; color: var(--text-muted); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.mc-subcat-tips:hover { background: var(--bg-second); color: var(--gold-text); }
.mc-tips h4 { font-size: 13.5px; font-weight: 700; color: var(--text); margin: 14px 0 6px; }
.mc-tips h4:first-child { margin-top: 0; }
.mc-tips-how { background: var(--bg-second); border-radius: var(--r-small); padding: 10px 12px; margin-bottom: 4px; }
.mc-tips-list { margin: 0 0 4px; padding-left: 20px; }
.mc-tips-list li { margin-bottom: 4px; }
.mc-faq { display: flex; flex-direction: column; gap: 6px; }
.mc-faq-q { text-align: left; border: 1px solid var(--card-border); background: var(--card-bg); color: var(--text); border-radius: 10px; padding: 9px 12px; font: inherit; font-size: 13.5px; font-weight: 600; cursor: pointer; }
.mc-faq-q:hover, .mc-faq-q.open { border-color: var(--gold); }
.mc-faq-a { padding: 4px 12px 8px; color: var(--text-secondary); }
.mc-tile-bar { max-width: none; margin-top: 10px; }
/* Auswertung + "Dein Stand" (wie die Rohwerte im echten Zertifikat) */
.mc-eval-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 10px; margin-bottom: 14px; }
.mc-eval-kpis > div { background: var(--bg-second); border-radius: 12px; padding: 10px 12px; display: flex; flex-direction: column; }
.mc-eval-kpis strong { font-size: 20px; color: var(--text); font-variant-numeric: tabular-nums; }
.mc-eval-kpis span { font-size: 12px; color: var(--text-muted); }
.mc-eval-bar { display: flex; height: 10px; border-radius: 5px; overflow: hidden; background: var(--bg-second); }
.mc-eval-bar span { display: block; height: 100%; }
.mc-eval-bar .right, .mc-eval-legend .right { background: var(--gold); }
.mc-eval-bar .wrong, .mc-eval-legend .wrong { background: color-mix(in srgb, var(--gold) 35%, transparent); }
.mc-eval-bar .open, .mc-eval-legend .open { background: var(--card-border); }
.mc-eval-legend { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 12px; color: var(--text-muted); margin-bottom: 10px; }
.mc-eval-legend span { width: 12px; height: 8px; border-radius: 2px; display: inline-block; margin-left: 6px; }
.mc-eval-rows { display: flex; flex-direction: column; gap: 10px; }
.mc-eval-row { display: block; border: 1px solid var(--card-border); border-radius: 12px; padding: 12px 14px; }
.mc-eval-row.weak { border-color: color-mix(in srgb, var(--red) 45%, var(--card-border)); }
.mc-eval-row-top { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 6px; }
.mc-eval-row .mc-eval-cat-name { font-size: 14px; font-weight: 600; color: var(--text); margin: 0; }
.mc-eval-pct { font-weight: 700; font-variant-numeric: tabular-nums; }
.mc-eval-row-meta { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 4px 12px; font-size: 12.5px; color: var(--text-muted); margin-top: 6px; }
.mc-eval-pick { white-space: nowrap; display: inline-flex; align-items: center; gap: 6px; margin-top: 8px; font-size: 12.5px; font-weight: 600; color: var(--red); cursor: pointer; }
.mc-dash { background: var(--card-bg); border-radius: var(--r-card); box-shadow: 0 1px 2px rgba(24,24,27,0.04), 0 3px 8px rgba(24,24,27,0.03); padding: 16px 18px; margin-bottom: 14px; }
.mc-dash-empty { font-size: 13.5px; color: var(--text-muted); }
.mc-dash-title { font-size: 15px; font-weight: 700; color: var(--text); margin-bottom: 10px; }
.mc-dash .mc-eval-kpis { margin-bottom: 4px; }
.mc-dash-sub { font-size: 12.5px; font-weight: 700; color: var(--text-muted); margin: 10px 0 6px; }
.mc-dash-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.mc-dash-chip { border: 1px solid var(--card-border); background: var(--card-bg); border-radius: 999px; padding: 7px 12px; font: inherit; font-size: 13px; color: var(--text); cursor: pointer; }
.mc-dash-chip:hover { border-color: var(--gold); }
.mc-dash-chip b { margin-left: 4px; }
/* Pruefungsmodus: keine Werkzeuge, keine Loesungen waehrend der Pruefung */
.mc-exam-card { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
@media (max-width: 760px) { .mc-exam-card { flex-direction: column; align-items: stretch; } }
.mc-frame.is-exam .mc-shell-tools { display: none !important; }
.mc-frame.is-exam #step-result, .mc-frame.is-exam .mc-line-result { display: none !important; }
.mc-frame.is-exam .mc-line.is-right .mc-gap-input, .mc-frame.is-exam .mc-line.is-wrong .mc-gap-input,
.mc-frame.is-exam .mc-line.is-right .mc-line-input, .mc-frame.is-exam .mc-line.is-wrong .mc-line-input { border-color: var(--card-border); }
.mc-frame.is-exam .wc-word.was-wrong { background: none; color: inherit; font-weight: inherit; }
.mc-exam-overview { max-width: 520px; margin: 0 auto; }
.mc-exam-overview h3 { color: var(--gold-text); font-size: 22px; margin-bottom: 18px; }
.mc-exam-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 6px; }
.mc-exam-list li { font-size: 15.5px; color: var(--gold-text); padding-left: 22px; position: relative; }
.mc-exam-list li.current { color: var(--gold); font-weight: 700; font-size: 17px; }
.mc-exam-list li.current::before { content: '»'; position: absolute; left: 0; color: var(--gold); }
.mc-exam-list li.done { color: var(--text-faint); }
.mc-exam-done { font-size: 12px; margin-left: 8px; }
.mc-exam-pause-clock { font-size: 40px; font-weight: 700; font-variant-numeric: tabular-nums; margin: 14px 0 6px; color: var(--text); }
.mc-exam-summary-note { background: var(--bg-second); border-radius: 10px; padding: 10px 12px; font-size: 14px; margin-bottom: 12px; }
.mc-frame.is-exam .mc-intro .btn-ghost { display: none; } /* keine Tipps in der Pruefung */
/* "Mein Multicheck-Ergebnis" + Lernplan */
.mc-plan-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 8px 14px; }
.mc-plan-field { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 10px; border: 1px solid var(--card-border); border-radius: 10px; font-size: 14px; }
.mc-plan-field input { width: 72px; padding: 6px 8px; border: 1.5px solid var(--card-border); border-radius: 8px; font-size: 15px; text-align: center; }
.mc-plan-field input.invalid { border-color: var(--red); }
.mc-plan-rows { display: flex; flex-direction: column; gap: 10px; }
.mc-plan-row { border: 1px solid var(--card-border); border-radius: 12px; padding: 12px 14px; }
.mc-plan-row-top { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 6px; }
.mc-plan-topic { font-weight: 600; color: var(--text); }
.mc-plan-tag { font-size: 12px; font-weight: 700; padding: 2px 10px; border-radius: 999px; background: var(--bg-second); }
.mc-plan-row.focus .mc-plan-tag { color: var(--red); }
.mc-plan-row.practice .mc-plan-tag { color: var(--gold-text); }
.mc-plan-row.keep .mc-plan-tag { color: var(--green); }
.mc-plan-row-meta { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 4px 12px; font-size: 12.5px; color: var(--text-muted); margin-top: 6px; }
.mc-plan-more { margin-top: 12px; padding: 12px 14px; border-radius: 12px; background: var(--bg-second); font-size: 14px; }
/* Bestaetigungs-Fenster in der Box (z.B. "Pruefung verlassen?") */
.mc-frame { position: relative; }
.mc-confirm { position: absolute; inset: 0; z-index: 20; display: flex; align-items: center; justify-content: center; padding: 16px; background: rgba(15, 23, 42, 0.28); }
.mc-confirm-card { background: var(--card-bg); border-radius: var(--r-card); box-shadow: 0 12px 40px rgba(15,23,42,0.18); padding: 22px; max-width: 420px; width: 100%; }
.mc-confirm-card p { font-size: 15.5px; line-height: 1.6; color: var(--text); margin-bottom: 16px; }
.mc-confirm-actions { display: flex; gap: 8px; justify-content: flex-end; flex-wrap: wrap; }
/* Pruefung: Restzeit gut sichtbar */
.mc-frame.is-exam #mc-shell-timer-text { color: var(--text); font-size: 15px; }
.mc-frame.is-exam #mc-shell-timer-text::before { content: attr(data-label) ' '; font-weight: 500; color: var(--text-muted); font-size: 13px; } /* Text aus aptitude-exam2.js (mce.timeLeft) */

/* Auswahl-Chips (z.B. Motivationsschreiben): fester Abstand wie in gaengigen Apps
   (Material 3 und Apple: 8 px zwischen Chips, auch zwischen den Zeilen). Vorher klebten
   die Chips aufeinander, weil .chip-row keinen eigenen Abstand hatte (Leandro 03.11.2026). */
.chip-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-start; }
