/* ============================================================================
   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): zwei Schritte, dunkel ══════════ */
#upgrade-modal .pw-modal {
  width: 100%; max-width: 620px; max-height: 90vh; overflow-y: auto;
  background: #0B0F1A; color: #E8EAF0; border-radius: 32px;
  padding: 28px 26px 24px; box-shadow: 0 20px 60px rgba(0,0,0,0.5);
}
.pw-topbar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 22px; }
.pw-logo { display: flex; align-items: center; gap: 7px; font-family: var(--font-title); font-weight: 800; font-size: 15px; color: #fff; }
.pw-logo img { object-fit: contain; }
.pw-close { color: #8B90A5; background: none; border: none; cursor: pointer; padding: 4px; }
.pw-close:hover { color: #fff; }

.pw-h1 { font-family: var(--font-title); font-weight: 800; font-size: 26px; line-height: 1.2; color: #fff; margin-bottom: 6px; }
.pw-accent { background: linear-gradient(90deg, #7C7BFF, #B78AFF); -webkit-background-clip: text; background-clip: text; color: transparent; }
.pw-sub { font-size: 13px; color: #9AA0B8; margin-bottom: 20px; }

.pw-panel { background: #12172A; border: 1px solid #232A42; border-radius: var(--r-card); padding: 18px; margin-bottom: 16px; }
.pw-panel-title { font-size: 13px; font-weight: 700; color: #fff; margin-bottom: 14px; }
.pw-steplist { display: flex; flex-direction: column; }
.pw-stepitem { display: flex; align-items: flex-start; gap: 12px; padding: 10px 0; position: relative; }
.pw-stepitem:not(:last-child)::after {
  content: ''; position: absolute; left: 12px; top: 36px; bottom: -4px; width: 1px; background: #232A42;
}
.pw-stepitem-marker {
  width: 24px; height: 24px; border-radius: 50%; flex-shrink: 0; z-index: 1;
  background: #7C7BFF; display: flex; align-items: center; justify-content: center;
}
.pw-stepitem-num { font-size: 11px; font-weight: 700; color: #fff; }
.pw-stepitem-icon {
  width: 34px; height: 34px; border-radius: 9px; flex-shrink: 0;
  background: #1A2036; color: #B7BCD6; display: flex; align-items: center; justify-content: center;
}
.pw-stepitem-title { font-size: 13.5px; font-weight: 700; color: #fff; margin-bottom: 2px; }
.pw-stepitem-desc { font-size: 12px; color: #8B90A5; line-height: 1.5; }
.pw-callout {
  display: flex; align-items: flex-start; gap: 8px; margin-top: 14px; padding: 12px 14px;
  background: rgba(124,123,255,0.1); border: 1px solid rgba(124,123,255,0.25); border-radius: var(--r-small);
  font-size: 12.5px; color: #C9CCFF; line-height: 1.5;
}
.pw-callout svg { margin-top: 2px; color: #B78AFF; }
.pw-callout b { color: #fff; }

.pw-btn-primary {
  width: 100%; height: 46px; border: none; border-radius: var(--r-button); cursor: pointer;
  background: linear-gradient(90deg, #6B6AFF, #B478FF); color: #fff;
  font-family: var(--font-body); font-weight: 700; font-size: 14px;
  transition: transform 150ms ease, box-shadow 150ms ease;
}
.pw-btn-primary:hover { transform: translateY(-1px); box-shadow: 0 8px 24px rgba(124,123,255,0.35); }
.pw-btn-primary:active { transform: translateY(0); }

.pw-toggle {
  display: inline-flex; gap: 3px; padding: 3px; background: #12172A; border: 1px solid #232A42;
  border-radius: var(--r-pill); margin-bottom: 16px;
}
.pw-toggle-btn {
  border: none; background: none; cursor: pointer; padding: 7px 16px; border-radius: var(--r-pill);
  font-family: var(--font-body); font-size: 12.5px; font-weight: 600; color: #8B90A5;
  display: flex; align-items: center; gap: 6px;
}
.pw-toggle-btn.pw-toggle-active { background: #232A42; color: #fff; }
.pw-toggle-badge { font-size: 10px; font-weight: 700; color: #6BE39A; background: rgba(107,227,154,0.15); padding: 1px 6px; border-radius: var(--r-pill); }

.pw-plan-card { background: #12172A; border: 1px solid #232A42; border-radius: var(--r-card); padding: 18px; margin-bottom: 12px; }
.pw-plan-featured { border-color: #7C7BFF; background: linear-gradient(180deg, rgba(124,123,255,0.08), #12172A 60%); }
.pw-plan-badge {
  display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 700; color: #C9CCFF;
  background: rgba(124,123,255,0.15); border: 1px solid rgba(124,123,255,0.3);
  padding: 3px 10px; border-radius: var(--r-pill); margin-bottom: 12px;
}
.pw-plan-head { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 14px; }
.pw-plan-name { font-family: var(--font-title); font-weight: 800; font-size: 19px; color: #fff; }
.pw-plan-tagline { font-size: 12px; color: #8B90A5; margin-top: 2px; }
.pw-plan-price { text-align: right; font-family: var(--font-title); font-weight: 800; font-size: 22px; color: #fff; white-space: nowrap; }
.pw-plan-price span:first-child { font-size: 13px; font-weight: 600; color: #8B90A5; }
.pw-plan-price-unit { font-family: var(--font-body); font-size: 11px; font-weight: 500; color: #8B90A5; margin-top: 1px; }

.pw-plan-features { list-style: none; padding: 0; margin: 0 0 16px; font-size: 12.5px; color: #C4C8DA; }
.pw-plan-features li { padding-left: 22px; position: relative; margin-bottom: 8px; line-height: 1.4; }
.pw-plan-features li::before { content: '✓'; position: absolute; left: 0; color: #6BE39A; font-weight: 700; }
.pw-plan-features-free .pw-plan-feature-off { color: #5C6180; }
.pw-plan-features-free .pw-plan-feature-off::before { content: '✕'; color: #5C6180; }

.pw-plan-trust { display: flex; align-items: center; justify-content: center; gap: 6px; font-size: 11px; color: #6B7189; margin-top: 10px; }
.pw-plan-free { padding-bottom: 16px; }
.pw-plan-free .pw-plan-features { margin-bottom: 0; }

.pw-consent { display: block; font-size: 11px; color: #6B7189; line-height: 1.5; margin: 4px 0 18px; }
.pw-consent a { color: #B7BCD6; }
.pw-consent input { accent-color: #7C7BFF; }

.pw-trustrow { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; padding-top: 18px; border-top: 1px solid #1E2338; margin-bottom: 14px; }
.pw-trust-item { display: flex; gap: 8px; font-size: 11px; color: #8B90A5; line-height: 1.4; }
.pw-trust-item b { color: #fff; display: block; margin-bottom: 2px; font-size: 11.5px; }
.pw-trust-icon {
  width: 30px; height: 30px; border-radius: 50%; flex-shrink: 0;
  background: #1A2036; color: #B7BCD6; display: flex; align-items: center; justify-content: center;
}

.pw-footer { text-align: center; font-size: 12px; }
.pw-linkbtn { background: none; border: none; cursor: pointer; color: #8B90A5; font-family: var(--font-body); font-size: 12px; padding: 4px; }
.pw-linkbtn:hover { color: #fff; }
.pw-footer-sep { color: #3A4062; margin: 0 4px; }

@media (max-width: 560px) {
  #upgrade-modal .pw-modal { padding: 22px 18px 18px; }
  .pw-h1 { font-size: 21px; }
  .pw-trustrow { grid-template-columns: 1fr; gap: 12px; }
}

/* 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(--bg-main); 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%, #FFFFFF 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: #fff; 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); }

/* ===== 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: #FBFAFF;
  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; }

/* 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: 24px 0 0; }
.jungle-header {
  display: none;
  position: relative; height: 240px; width: calc(100% + 52px); margin: -26px -26px 0;
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1600 320"><defs><linearGradient id="bg" x1="0" y1="0" x2="1" y2="1"><stop offset="0%" stop-color="%23050B1A"/><stop offset="100%" stop-color="%230B1D3D"/></linearGradient><filter id="glow"><feGaussianBlur stdDeviation="6"/></filter><filter id="glow2"><feGaussianBlur stdDeviation="3"/></filter></defs><rect width="1600" height="320" fill="url(%23bg)"/><g stroke="%2338BDF8" stroke-width="1" opacity="0.12"><line x1="0" y1="40" x2="1600" y2="40"/><line x1="0" y1="120" x2="1600" y2="120"/><line x1="0" y1="200" x2="1600" y2="200"/><line x1="0" y1="280" x2="1600" y2="280"/><line x1="200" y1="0" x2="200" y2="320"/><line x1="500" y1="0" x2="500" y2="320"/><line x1="800" y1="0" x2="800" y2="320"/><line x1="1100" y1="0" x2="1100" y2="320"/><line x1="1400" y1="0" x2="1400" y2="320"/></g><g stroke="%2338BDF8" stroke-width="4" fill="none" opacity="0.45" filter="url(%23glow)"><path d="M20 320 C 50 200, 10 150, 70 60 C 110 10, 70 -20, 110 -60"/><path d="M180 320 C 150 210, 210 160, 160 70 C 120 10, 180 -30, 150 -60"/><path d="M420 320 C 450 220, 400 170, 460 90 C 500 40, 450 0, 490 -40"/><path d="M700 320 C 670 230, 730 190, 680 110 C 650 60, 710 20, 670 -20"/><path d="M950 320 C 980 230, 930 190, 990 110 C 1030 60, 980 20, 1020 -20"/><path d="M1200 320 C 1170 220, 1230 170, 1180 90 C 1140 40, 1200 0, 1160 -40"/><path d="M1420 320 C 1450 210, 1400 160, 1460 70 C 1500 10, 1450 -30, 1490 -60"/><path d="M1560 320 C 1530 210, 1580 160, 1530 70 C 1490 10, 1550 -30, 1510 -60"/></g><g stroke="%237DD3FC" stroke-width="2.5" fill="none" opacity="0.85"><path d="M20 320 C 50 200, 10 150, 70 60 C 110 10, 70 -20, 110 -60"/><path d="M180 320 C 150 210, 210 160, 160 70 C 120 10, 180 -30, 150 -60"/><path d="M420 320 C 450 220, 400 170, 460 90 C 500 40, 450 0, 490 -40"/><path d="M700 320 C 670 230, 730 190, 680 110 C 650 60, 710 20, 670 -20"/><path d="M950 320 C 980 230, 930 190, 990 110 C 1030 60, 980 20, 1020 -20"/><path d="M1200 320 C 1170 220, 1230 170, 1180 90 C 1140 40, 1200 0, 1160 -40"/><path d="M1420 320 C 1450 210, 1400 160, 1460 70 C 1500 10, 1450 -30, 1490 -60"/><path d="M1560 320 C 1530 210, 1580 160, 1530 70 C 1490 10, 1550 -30, 1510 -60"/></g><g fill="%2367E8F9" opacity="0.9"><ellipse cx="70" cy="60" rx="20" ry="9" transform="rotate(-30 70 60)"/><ellipse cx="110" cy="0" rx="16" ry="7" transform="rotate(20 110 0)"/><ellipse cx="160" cy="70" rx="18" ry="8" transform="rotate(35 160 70)"/><ellipse cx="460" cy="90" rx="20" ry="9" transform="rotate(-20 460 90)"/><ellipse cx="680" cy="110" rx="18" ry="8" transform="rotate(25 680 110)"/><ellipse cx="990" cy="110" rx="18" ry="8" transform="rotate(-25 990 110)"/><ellipse cx="1180" cy="90" rx="20" ry="9" transform="rotate(20 1180 90)"/><ellipse cx="1460" cy="70" rx="18" ry="8" transform="rotate(30 1460 70)"/><ellipse cx="1530" cy="70" rx="16" ry="7" transform="rotate(-30 1530 70)"/></g><g fill="%2360A5FA"><circle cx="70" cy="60" r="4"/><circle cx="160" cy="70" r="3.5"/><circle cx="460" cy="90" r="4"/><circle cx="680" cy="110" r="3.5"/><circle cx="990" cy="110" r="4"/><circle cx="1180" cy="90" r="3.5"/><circle cx="1460" cy="70" r="4"/><circle cx="300" cy="180" r="3"/><circle cx="850" cy="200" r="3"/><circle cx="1350" cy="180" r="3"/><circle cx="550" cy="240" r="2.5"/><circle cx="1050" cy="250" r="2.5"/></g><g filter="url(%23glow2)" opacity="0.9"><g transform="translate(230,50) rotate(-6)"><rect x="0" y="0" width="120" height="80" rx="8" fill="%230B1D3D" stroke="%2338BDF8" stroke-width="1.5"/><circle cx="14" cy="14" r="4" fill="%23F87171"/><circle cx="28" cy="14" r="4" fill="%23FBBF24"/><circle cx="42" cy="14" r="4" fill="%2334D399"/><line x1="10" y1="34" x2="90" y2="34" stroke="%2338BDF8" stroke-width="2"/><line x1="10" y1="48" x2="70" y2="48" stroke="%2338BDF8" stroke-width="2" opacity="0.6"/><line x1="10" y1="60" x2="100" y2="60" stroke="%2338BDF8" stroke-width="2" opacity="0.4"/></g><g transform="translate(770,30) rotate(8)"><rect x="0" y="0" width="100" height="68" rx="7" fill="%230B1D3D" stroke="%237DD3FC" stroke-width="1.5"/><circle cx="12" cy="12" r="3.5" fill="%23F87171"/><circle cx="24" cy="12" r="3.5" fill="%23FBBF24"/><line x1="9" y1="30" x2="75" y2="30" stroke="%237DD3FC" stroke-width="1.8"/><line x1="9" y1="42" x2="60" y2="42" stroke="%237DD3FC" stroke-width="1.8" opacity="0.6"/></g><g transform="translate(1080,60) rotate(-10)"><rect x="0" y="0" width="130" height="86" rx="9" fill="%230B1D3D" stroke="%2338BDF8" stroke-width="1.5"/><circle cx="15" cy="15" r="4" fill="%23F87171"/><circle cx="30" cy="15" r="4" fill="%23FBBF24"/><circle cx="45" cy="15" r="4" fill="%2334D399"/><line x1="11" y1="36" x2="100" y2="36" stroke="%2338BDF8" stroke-width="2"/><line x1="11" y1="50" x2="80" y2="50" stroke="%2338BDF8" stroke-width="2" opacity="0.6"/><line x1="11" y1="64" x2="110" y2="64" stroke="%2338BDF8" stroke-width="2" opacity="0.4"/></g><g transform="translate(1300,20) rotate(5)"><rect x="0" y="0" width="90" height="60" rx="7" fill="%230B1D3D" stroke="%237DD3FC" stroke-width="1.5"/><circle cx="11" cy="11" r="3.2" fill="%23FBBF24"/><line x1="8" y1="27" x2="68" y2="27" stroke="%237DD3FC" stroke-width="1.6"/><line x1="8" y1="38" x2="50" y2="38" stroke="%237DD3FC" stroke-width="1.6" opacity="0.6"/></g><g transform="translate(30,150) rotate(-4)"><rect x="0" y="0" width="80" height="20" rx="10" fill="none" stroke="%2367E8F9" stroke-width="1.5"/><line x1="12" y1="10" x2="60" y2="10" stroke="%2367E8F9" stroke-width="1.5"/></g><g transform="translate(900,220) rotate(6)"><rect x="0" y="0" width="70" height="18" rx="9" fill="none" stroke="%2367E8F9" stroke-width="1.5"/><line x1="10" y1="9" x2="52" y2="9" stroke="%2367E8F9" stroke-width="1.5"/></g></g><g stroke="%2338BDF8" stroke-width="1.5" fill="none" opacity="0.3"><path d="M0 300 C 250 280, 450 305, 650 285 C 950 260, 1150 290, 1600 275"/></g></svg>');
  background-size: cover; background-position: center;
}
.jungle-header::before {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(8,18,38,0.3) 0%, rgba(8,18,38,0.6) 100%);
}
.jungle-content { position: relative; z-index: 1; height: 100%; display: flex; flex-direction: column; justify-content: center; padding: 0 40px; }
.jungle-content .greeting { color: rgba(255,255,255,0.72); }
.jungle-content .greeting-mission { color: #fff; margin-bottom: 0; }
.content:has(#page-dashboard.active) .jungle-header { display: block; }

/* ===== 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; 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; }
@media (max-width: 480px) {
  .referral-link-row { flex-direction: column; }
}

/* ══════════════════════════════════════════════════════════════════════
   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; }

/* 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); }
.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 ═ */
.mc-shell-page { background: var(--bg-second); margin: -20px; padding: 20px; min-height: 100%; }
.mc-shell-header {
  display: flex; align-items: center; justify-content: space-between;
  padding-bottom: 12px; margin-bottom: 4px;
}
.mc-shell-header-left { display: flex; align-items: center; gap: 8px; }
.mc-shell-header-left img { height: 20px; width: auto; }
.mc-shell-header-title { font-size: 14.5px; font-weight: 700; color: var(--text); text-align: center; flex: 1; }
.mc-shell-header-right { display: flex; align-items: center; gap: 10px; font-size: 12.5px; color: var(--text-muted); }
.mc-shell-close { cursor: pointer; color: var(--text-muted); font-size: 18px; line-height: 1; transition: color var(--dur-base) var(--ease-out); }
.mc-shell-close:hover { color: var(--text); }
.mc-shell-timer { text-align: center; margin-bottom: 10px; }
.mc-shell-timer-row { display: flex; align-items: center; justify-content: center; gap: 10px; }
#mc-shell-timer-text { font-size: 13px; color: var(--text-muted); font-variant-numeric: tabular-nums; flex-shrink: 0; }
.mc-shell-timebar { flex: 0 1 70%; height: 6px; background: var(--bg-second); border-radius: 3px; overflow: hidden; }
.mc-shell-timebar-fill { height: 100%; background: var(--gold); border-radius: 3px; transition: width 1s linear, background 400ms; width: 100%; }
.mc-shell-timebar-fill.low { background: var(--red); }
.mc-shell-tools { display: flex; gap: 10px; justify-content: flex-end; margin-bottom: 8px; }
.mc-shell-tools svg { cursor: pointer; color: var(--text-muted); transition: color var(--dur-base) var(--ease-out); }
.mc-shell-tools svg:hover { color: var(--gold-text); }
.mc-shell-sheet {
  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);
  padding: 24px; min-height: 220px;
}
.mc-shell-footer {
  display: flex; align-items: center; justify-content: space-between;
  margin-top: 16px; gap: 12px;
}
.mc-shell-footer .btn { min-width: 96px; }
/* 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 { 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 { display: flex; flex-direction: column; gap: 20px; align-items: center; }
.myway-zz-wrap { position: relative; width: 100%; max-width: 340px; overflow: visible; margin: 0 auto; }
.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: -60px; }
.myway-zz-blob-2 { width: 180px; height: 180px; background: #6B7A99; opacity: 0.08; bottom: 20px; right: -50px; }

@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; }

/* Info-Karte zur aktuellen Station - bringt echten Inhalt zurueck statt
   nur des blossen Pfads, den es vorher (aus dem Mobile-Design 1:1
   uebernommen) auf Desktop zu duenn wirken liess. */
.myway-zz-info { width: 100%; max-width: 400px; padding: 22px 26px; text-align: center; }
.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; }
.myway-zz-info-desc { font-size: 13.5px; color: var(--text-muted); line-height: 1.6; margin-bottom: 16px; }

@media (min-width: 860px) {
  .myway-zz-outer { flex-direction: row; align-items: flex-start; justify-content: center; gap: 48px; max-width: 780px; margin: 20px auto 0; }
  .myway-zz-wrap { flex-shrink: 0; }
  .myway-zz-info { position: sticky; top: 24px; text-align: left; }
}

/* Echte Desktop-Groesse statt nur des gestreckten Mobile-Pfads - deutlich
   mehr Raum, groessere Knoten, mehr visuelle Praesenz. */
@media (min-width: 1024px) {
  .myway-zz-outer { max-width: 980px; gap: 64px; margin-top: 32px; }
  .myway-zz-wrap { max-width: 560px; }
  .myway-zz-blob-1 { width: 320px; height: 320px; top: -60px; left: -100px; }
  .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 { max-width: 460px; padding: 28px 32px; }
  .myway-zz-info-title { font-size: 23px; }
  .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 {
  display: block; border-radius: 6px;
  background: linear-gradient(90deg, #ECF0F6 25%, #F7F9FC 40%, #ECF0F6 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; }

/* (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; }
.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; }
