/* Prüfungserfolg-B2 — Studentenbereich */
:root{
  --green:#16a34a; --green-d:#15803d; --green-l:#dcfce7;
  --navy:#0f2040; --navy-2:#1e3a5f;
  --bg:#f6f8fb; --card:#ffffff; --line:#e2e8f0;
  --text:#14213a; --muted:#64748b;
  --amber:#d97706; --amber-l:#fef3c7;
  --red:#b91c1c; --red-l:#fee2e2;
  --radius:16px;
  --shadow:0 8px 28px rgba(15,32,64,.08);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:"Segoe UI",system-ui,-apple-system,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.55}
a{color:var(--green-d)}
button{font:inherit;cursor:pointer}
input,textarea,select{font:inherit}

/* ---------- Demo-Schalter ---------- */
.demo-bar{position:sticky;top:0;z-index:60;background:var(--navy);color:#fff;padding:.45rem 1rem;display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;font-size:.85rem}
.demo-bar .lbl{opacity:.75;margin-right:.25rem}
.demo-bar button{background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.25);border-radius:999px;padding:.25rem .8rem}
.demo-bar button.active{background:var(--green);border-color:var(--green)}
.demo-bar .spacer{flex:1}
.demo-bar .brand-mini{font-weight:700;letter-spacing:.02em}

/* ---------- Kopf ---------- */
.topbar{background:linear-gradient(120deg,var(--navy),var(--navy-2));color:#fff;padding:1.1rem 0 1.3rem}
.wrap{max-width:1060px;margin:0 auto;padding:0 1rem}
.logo{display:flex;align-items:center;gap:.7rem;font-size:1.35rem;font-weight:800}
.logo .mark{width:42px;height:42px;border-radius:12px;background:var(--green);display:grid;place-items:center;font-size:1.25rem;box-shadow:0 6px 18px rgba(22,163,74,.45)}
.logo small{display:block;font-size:.78rem;font-weight:500;opacity:.8}
.topbar nav{margin-top:.9rem;display:flex;gap:.5rem;flex-wrap:wrap}
.topbar nav button{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);color:#fff;border-radius:999px;padding:.35rem .95rem}
.topbar nav button.active,.topbar nav button:hover{background:var(--green);border-color:var(--green)}

main{padding:1.4rem 0 3rem}
.view{display:none;animation:fade .35s ease}
.view.active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ---------- Karten ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.3rem;margin-bottom:1.1rem}
.card h2{margin:.1rem 0 .6rem;font-size:1.25rem}
.card h3{margin:.1rem 0 .5rem}
.muted{color:var(--muted)}
.badge{display:inline-block;border-radius:999px;padding:.15rem .7rem;font-size:.8rem;font-weight:700}
.badge.wait{background:var(--amber-l);color:var(--amber)}
.badge.ok{background:var(--green-l);color:var(--green-d)}
.badge.end{background:var(--red-l);color:var(--red)}
.btn{display:inline-block;background:var(--green);color:#fff;border:none;border-radius:12px;padding:.65rem 1.3rem;font-weight:700;text-decoration:none;transition:.2s}
.btn:hover{background:var(--green-d);transform:translateY(-1px)}
.btn.ghost{background:#fff;color:var(--navy);border:1.5px solid var(--line)}
.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:1rem}
.teil-card{cursor:pointer;transition:.2s;border-top:5px solid var(--green)}
.teil-card:hover{transform:translateY(-3px)}
.teil-card .big{font-size:2rem}
.teil-card .count{font-weight:800;color:var(--green-d)}

/* ---------- Programm ---------- */
.programme{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.7rem}
.programme .week{flex:1;min-width:120px;border:1.5px solid var(--line);border-radius:12px;padding:.6rem .8rem;font-size:.9rem}
.programme .week.now{border-color:var(--green);background:var(--green-l)}
.programme .week b{display:block}

/* ---------- Formulare ---------- */
.field{margin-bottom:.9rem}
.field label{display:block;font-weight:700;margin-bottom:.3rem}
.field input[type=text],.field textarea{width:100%;border:1.5px solid var(--line);border-radius:10px;padding:.6rem .8rem;background:#fff}
.field input:disabled,.field textarea:disabled{background:#f1f5f9;color:var(--muted)}
.lock-note{background:var(--green-l);border:1px solid var(--green);border-radius:10px;padding:.6rem .9rem;font-weight:600}
.ref-box{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.8rem;margin:.8rem 0}
.ref-box div{border:1.5px dashed var(--line);border-radius:12px;padding:.7rem .9rem}
.ref-box b{display:block;font-size:.8rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.upload-box{border:2px dashed var(--green);border-radius:14px;padding:1.1rem;text-align:center;background:#f0fdf4}
.upload-ok{display:none;border:2px solid var(--green);background:var(--green-l);border-radius:14px;padding:1.1rem;text-align:center;font-weight:700}

/* ---------- Themenlisten ---------- */
.search{width:100%;border:1.5px solid var(--line);border-radius:12px;padding:.7rem 1rem;margin-bottom:1rem;background:#fff}
.theme-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.7rem}
.theme-item{background:#fff;border:1px solid var(--line);border-radius:12px;padding:.85rem 1rem;cursor:pointer;display:flex;gap:.7rem;align-items:flex-start;transition:.15s;text-align:left;width:100%}
.theme-item:hover{border-color:var(--green);box-shadow:var(--shadow)}
.theme-item .num{background:var(--navy);color:#fff;border-radius:8px;min-width:34px;height:34px;display:grid;place-items:center;font-weight:800;font-size:.85rem}
.theme-item .cat{font-size:.75rem;color:var(--muted);display:block}
.crumb{margin-bottom:1rem}
.crumb button{background:none;border:none;color:var(--green-d);font-weight:700;padding:0}

/* ---------- Audio-Slot ---------- */
.audio-slot{border:1.5px solid var(--line);border-radius:14px;padding:1rem;background:#fbfcfe}
.audio-slot h4{margin:.1rem 0 .6rem;display:flex;align-items:center;gap:.5rem}
.audio-slot audio{width:100%}
.audio-missing{border-radius:10px;background:var(--amber-l);color:#92400e;padding:.7rem .9rem;font-weight:600}
.audio-demo{margin-top:.6rem}
.transcript{margin-top:.8rem;background:#fff;border:1px solid var(--line);border-radius:10px;padding:.9rem 1rem;font-size:1.02rem;line-height:1.9}
.transcript .w{border-radius:4px;padding:0 .08em;transition:background .12s}
.transcript .w.on{background:#fde047;box-shadow:0 0 0 2px #facc15 inset}
.transcript .w.done{background:var(--green-l)}
.demo-tag{font-size:.72rem;background:#e0e7ff;color:#3730a3;border-radius:999px;padding:.1rem .55rem;font-weight:700;vertical-align:middle}
.darija{border-radius:14px;background:#fffbeb;border:1.5px solid #fde68a;padding:1rem 1.1rem}
.darija h4{margin:.1rem 0 .5rem}
.darija p{direction:rtl;text-align:right;font-size:1.05rem;margin:.2rem 0}
.step-label{display:inline-block;background:var(--navy);color:#fff;border-radius:999px;padding:.2rem .8rem;font-weight:700;font-size:.85rem;margin-bottom:.6rem}
.intro-slot{border:1.5px dashed var(--navy-2);border-radius:14px;padding:1rem;background:#eef2ff}

/* ---------- Themen-PDF (Simulation) ---------- */
.theme-pdf-btn{margin:.15rem 0 .35rem}

/* ---------- Login ---------- */
.login-box{max-width:430px;margin:2.2rem auto}
.login-box input{width:100%;border:1.5px solid var(--line);border-radius:10px;padding:.65rem .8rem;margin-bottom:.8rem}
.center{text-align:center}
footer{border-top:1px solid var(--line);padding:1.2rem 0;color:var(--muted);font-size:.88rem;text-align:center}
@media (max-width:640px){.logo{font-size:1.1rem}.card{padding:1rem}}

/* ============================================================
   Soul-Pass — handwerkliche Details (Studentenbereich)
   Eine Akzentfarbe (Grün) nur für Primäraktionen + Auswahl.
   Ruhige, filmische Easing-Kurve; keine Kipp-/Sprung-Effekte.
   ============================================================ */
:root{
  --ease:cubic-bezier(.22,.61,.21,1);
  --shadow-lift:0 14px 34px rgba(15,32,64,.14);
  --ring:0 0 0 4px rgba(22,163,74,.28);
}

/* ---------- Einheitliches Button-System ---------- */
.btn{
  box-shadow:0 4px 14px rgba(22,163,74,.22);
  transition:transform .22s var(--ease),box-shadow .28s var(--ease),background-color .22s var(--ease),border-color .22s var(--ease),color .22s var(--ease);
  will-change:transform;
}
.btn:hover{background:var(--green-d);transform:translateY(-2px);box-shadow:0 10px 24px rgba(22,163,74,.30)}
.btn:active{transform:translateY(0) scale(.985);box-shadow:0 3px 10px rgba(22,163,74,.20)}
.btn.ghost{box-shadow:0 2px 8px rgba(15,32,64,.06)}
.btn.ghost:hover{background:#f0fdf4;color:var(--green-d);border-color:var(--green);transform:translateY(-2px);box-shadow:0 8px 20px rgba(15,32,64,.10)}
.btn.ghost:active{transform:translateY(0) scale(.985)}
.btn.danger{background:#fff;color:var(--red);border:1.5px solid var(--red-l);box-shadow:0 2px 8px rgba(185,28,28,.08)}
.btn.danger:hover{background:var(--red-l);transform:translateY(-2px);box-shadow:0 8px 20px rgba(185,28,28,.14)}
.btn.danger:active{transform:translateY(0) scale(.985)}
.btn:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}
button{transition:transform .2s var(--ease),box-shadow .25s var(--ease),background-color .2s var(--ease),border-color .2s var(--ease),color .2s var(--ease),opacity .2s var(--ease)}
button:active{transform:scale(.985)}
button:disabled{cursor:not-allowed}
:focus-visible{outline:none;box-shadow:var(--ring);border-radius:8px}
input:focus-visible,textarea:focus-visible,select:focus-visible{box-shadow:var(--ring)}
input[type="file"]::file-selector-button{
  background:var(--green);color:#fff;border:none;border-radius:10px;padding:.55rem 1.1rem;
  font-weight:700;cursor:pointer;margin-right:.7rem;
  box-shadow:0 4px 14px rgba(22,163,74,.22);
  transition:transform .22s var(--ease),box-shadow .28s var(--ease),background-color .22s var(--ease);
}
input[type="file"]::file-selector-button:hover{background:var(--green-d);transform:translateY(-1px);box-shadow:0 8px 20px rgba(22,163,74,.30)}
.topbar nav button:hover{transform:translateY(-1px)}
.topbar nav button.active{box-shadow:0 6px 16px rgba(22,163,74,.35)}
.demo-bar button{transition:background-color .2s var(--ease),transform .2s var(--ease)}
.crumb button:hover{text-decoration:underline;text-underline-offset:3px}

/* ---------- Ansichts-Übergänge (nur Transform/Opazität) ---------- */
.view.active{animation:panelIn .38s var(--ease)}
@keyframes panelIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* ---------- Dashboard-Karten: Tiefe + Mikrobewegung ---------- */
.card{transition:box-shadow .35s var(--ease),transform .35s var(--ease),border-color .35s var(--ease)}
.teil-card{position:relative;overflow:hidden;box-shadow:var(--shadow)}
.teil-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lift);border-color:var(--green)}
.teil-card .count{transition:transform .3s var(--ease)}
.teil-card:hover .count{transform:translateX(3px)}
.programme .week{transition:border-color .3s var(--ease),background-color .3s var(--ease),transform .3s var(--ease)}
.programme .week:hover{transform:translateY(-2px)}

/* ---------- Themenkarten: Hover-Reveal + Auswahl ---------- */
.theme-item{position:relative;overflow:hidden;padding-bottom:1.85rem}
.theme-item::before{
  content:"";position:absolute;left:0;right:0;bottom:0;height:52px;pointer-events:none;
  background:linear-gradient(180deg,rgba(15,32,64,0),rgba(15,32,64,.13));
  opacity:0;transition:opacity .35s var(--ease);
}
.theme-item::after{
  content:"Anhören →";position:absolute;right:.75rem;bottom:.6rem;pointer-events:none;
  background:var(--green);color:#fff;font-size:.78rem;font-weight:800;letter-spacing:.01em;
  border-radius:999px;padding:.28rem .75rem;box-shadow:0 6px 16px rgba(22,163,74,.35);
  opacity:0;transform:translateY(8px);
  transition:opacity .32s var(--ease),transform .32s var(--ease);
}
.theme-item:hover::before,.theme-item:focus-visible::before{opacity:1}
.theme-item:hover::after,.theme-item:focus-visible::after{opacity:1;transform:none}
.theme-item.is-selected{border:1.5px solid var(--green);background:#f0fdf4;box-shadow:0 8px 22px rgba(22,163,74,.16)}
.theme-check{
  position:absolute;top:.55rem;right:.55rem;width:22px;height:22px;border-radius:50%;
  background:var(--green);color:#fff;display:none;place-items:center;font-size:.75rem;font-weight:900;
  box-shadow:0 4px 10px rgba(22,163,74,.4);
}
.theme-item.is-selected .theme-check{display:grid}
@media (hover:none){
  /* Touch: die Primäraktion ist einfach sichtbar, kein Hover nötig. */
  .theme-item::after{opacity:1;transform:none}
  .theme-item::before{opacity:.65}
}

/* ---------- Skeleton-Ladezustand ---------- */
.skel-card{
  display:flex;gap:.7rem;align-items:flex-start;background:#fff;border:1px solid var(--line);
  border-radius:12px;padding:.85rem 1rem;min-height:76px;
  animation:skelPulse 1.5s ease-in-out infinite alternate;
}
.skel-num{flex:0 0 34px;width:34px;height:34px;border-radius:8px;background:#e2e8f0}
.skel-lines{flex:1;display:flex;flex-direction:column;gap:.5rem;padding-top:.2rem}
.skel-lines i{display:block;height:11px;border-radius:99px;background:#e2e8f0}
.skel-lines i:last-child{width:55%;background:#edf2f7}
@keyframes skelPulse{from{opacity:.55}to{opacity:.9}}
body.manifest-loading .teil-card{animation:skelPulse 1.5s ease-in-out infinite alternate}

/* ---------- Transkript: Sprecher-Blöcke ---------- */
.transcript{padding:.7rem .8rem}
.transcript-missing{color:var(--muted);font-size:.98rem;line-height:1.6}
.turn{
  position:relative;border-left:3px solid transparent;border-radius:10px;
  padding:.5rem .65rem .55rem .8rem;margin-bottom:.4rem;
  transition:background-color .35s var(--ease),border-color .35s var(--ease);
}
.turn:last-child{margin-bottom:0}
.turn-active{border-left-color:var(--speaker,#16a34a);background:color-mix(in srgb,var(--speaker,#16a34a) 8%,#ffffff)}
.speaker-chip{
  display:inline-flex;align-items:center;border-radius:999px;padding:.14rem .62rem;
  font-size:.76rem;font-weight:800;letter-spacing:.02em;margin:0 .55rem .3rem 0;
  box-shadow:0 3px 9px rgba(15,32,64,.18);vertical-align:middle;white-space:nowrap;
}
.turn-words{line-height:1.9}

/* ---------- Themen-PDF in der Simulations-Karte ---------- */
.theme-pdf-btn{
  padding:.85rem 1.5rem;font-size:1rem;border-radius:13px;
  box-shadow:0 8px 22px rgba(22,163,74,.32);
}
#simCard .theme-pdf-btn{margin:.3rem 0 .7rem}

/* ---------- Weniger Bewegung respektieren ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}
  .skel-card,body.manifest-loading .teil-card{animation:none;opacity:.75}
  .theme-item::after{opacity:1;transform:none}
}
