/* =========================================================================
   Python-Werkstatt · didedi.de
   Layout: Menü links, Inhalt rechts.

   Die Farben und Schriften sind von didedi.de übernommen:
     Schrift   Titillium Web (700 für Überschriften)
     Lila      #65168E, Verlauf nach #A637E0 / #B559E5
     Orange    #FF600A
     Grün      #129B72
     Text      #131313, gedämpft #666666, Flächen #F9F9F9
     Radius    12px, Schaltflächen in VERSALIEN

   >>> Alles davon steht im :root-Block unten. Nur dort anpassen. <<<
   ========================================================================= */

:root{
  /* --- Markenfarben didedi.de --- */
  --lila:#65168E;
  --lila-hell:#A637E0;
  --lila-heller:#B559E5;
  --orange:#FF600A;
  --gruen:#129B72;

  /* --- Abgeleitete Oberflächen, helles Thema --- */
  --papier:#ffffff;
  --flaeche:#f9f9f9;
  --flaeche-2:#f0ecf3;
  --linie:#e2dee6;
  --text:#131313;
  --text-leise:#666666;
  --akzent:var(--orange);
  --akzent-weich:#fff1e8;
  --kuehl:var(--lila);
  --kuehl-weich:#f5edfa;
  --moos:var(--gruen);
  --moos-weich:#e6f5f0;

  --menu-verlauf:linear-gradient(180deg, #B559E5 0%, #A637E0 42%, #65168E 100%);
  --menu-text:rgba(255,255,255,.78);
  --menu-text-hell:#ffffff;
  --menu-linie:rgba(255,255,255,.18);
  --menu-leise:rgba(255,255,255,.55);

  --code-bg:#2b0f3d;
  --code-text:#f0e9f5;
  --code-schl:#ff8d4d;
  --code-zahl:#7fe0bb;
  --code-komm:#a98cbd;
  --code-str:#e6c2ff;

  --schatten:0 1px 2px rgba(19,19,19,.05), 0 12px 30px -18px rgba(101,22,142,.4);

  /* --- Schriften --- */
  --f-titel:"Titillium Web", "Segoe UI", system-ui, sans-serif;
  --f-text:"Titillium Web", "Segoe UI", system-ui, sans-serif;
  --f-code:"JetBrains Mono", ui-monospace, "SF Mono", Consolas, monospace;

  /* --- Maße --- */
  --menu-breite:288px;
  --lese-breite:730px;
  --radius:12px;
}

/* --- Dunkles Thema: nur Farben --- */
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --papier:#16101c;
    --flaeche:#1e1726;
    --flaeche-2:#281f33;
    --linie:#362b44;
    --text:#f0ecf3;
    --text-leise:#a396b0;
    --akzent:#ff7a33;
    --akzent-weich:#341b0d;
    --kuehl:#c489ea;
    --kuehl-weich:#241633;
    --moos:#2fc79a;
    --moos-weich:#10281f;
    --menu-verlauf:linear-gradient(180deg, #6a2093 0%, #4e1170 45%, #300a47 100%);
    --code-bg:#1d0a29;
    --schatten:0 1px 2px rgba(0,0,0,.5), 0 12px 30px -18px rgba(0,0,0,.9);
  }
}
:root[data-theme="dark"]{
  --papier:#16101c; --flaeche:#1e1726; --flaeche-2:#281f33; --linie:#362b44;
  --text:#f0ecf3; --text-leise:#a396b0;
  --akzent:#ff7a33; --akzent-weich:#341b0d;
  --kuehl:#c489ea; --kuehl-weich:#241633;
  --moos:#2fc79a; --moos-weich:#10281f;
  --menu-verlauf:linear-gradient(180deg, #6a2093 0%, #4e1170 45%, #300a47 100%);
  --code-bg:#1d0a29;
  --schatten:0 1px 2px rgba(0,0,0,.5), 0 12px 30px -18px rgba(0,0,0,.9);
}

/* ============================== Grundlage ============================== */
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  background:var(--papier); color:var(--text);
  font-family:var(--f-text); font-size:17px; line-height:1.62;
  -webkit-text-size-adjust:100%;
}
img{max-width:100%}
[hidden]{display:none !important}
a{color:var(--kuehl)}
h1,h2,h3,h4{font-family:var(--f-titel); font-weight:700; text-wrap:balance; margin:0}
code,pre,kbd{font-family:var(--f-code)}
:focus-visible{outline:2px solid var(--orange); outline-offset:2px; border-radius:4px}

.skiplink{position:absolute; left:-9999px; top:0; z-index:100;
  background:var(--orange); color:#fff; padding:10px 16px; border-radius:0 0 8px 0}
.skiplink:focus{left:0}

/* ============================== Kopfzeile (mobil) ============================== */
.kopf{
  display:none; position:sticky; top:0; z-index:40;
  align-items:center; gap:12px; padding:9px 14px;
  background:var(--lila); color:#fff;
}
.burger{display:grid; gap:4px; width:38px; height:34px; padding:8px 7px;
  background:none; border:1px solid rgba(255,255,255,.3); border-radius:8px; cursor:pointer}
.burger span{display:block; height:2px; background:#fff; border-radius:2px}
.theme-btn{margin-left:auto; background:none; border:1px solid rgba(255,255,255,.3); color:#fff;
  width:34px; height:34px; border-radius:8px; cursor:pointer; font-size:16px; line-height:1}

/* --- Logo im DiDeDi-Kachelstil --- */
.marke{display:flex; align-items:center; gap:11px; text-decoration:none; color:inherit}
.marke-logo{
  display:grid; grid-template-columns:repeat(2,1fr); gap:2px;
  background:#fff; padding:3px; border-radius:7px; flex:0 0 auto;
}
.marke-logo i{
  font-style:normal; font-family:var(--f-titel); font-weight:700; font-size:.62rem;
  line-height:1; padding:3px 4px; border-radius:3px; color:#fff; min-width:19px; text-align:center;
}
.marke-logo i:nth-child(1){background:var(--lila)}
.marke-logo i:nth-child(2){background:var(--orange)}
.marke-logo i:nth-child(3){background:var(--orange)}
.marke-logo i:nth-child(4){background:var(--lila)}
.marke-text{display:flex; flex-direction:column; line-height:1.18}
.marke-text b{font-family:var(--f-titel); font-size:1rem; font-weight:700}
.marke-text i{font-style:normal; font-size:.62rem; letter-spacing:.1em; text-transform:uppercase; opacity:.7}

/* ============================== Layout ============================== */
.huelle{display:flex; min-height:100vh; align-items:stretch}

.menu{flex:0 0 var(--menu-breite); width:var(--menu-breite); background:var(--menu-verlauf); color:var(--menu-text)}
.menu-innen{
  position:sticky; top:0; height:100vh; overflow-y:auto;
  display:flex; flex-direction:column; padding:22px 14px 14px;
  scrollbar-width:thin; scrollbar-color:rgba(255,255,255,.3) transparent;
}
.menu-innen::-webkit-scrollbar{width:8px}
.menu-innen::-webkit-scrollbar-thumb{background:rgba(255,255,255,.25); border-radius:8px}
.marke-desktop{margin:0 6px 6px; color:#fff}
.zurueck-site{
  display:inline-block; margin:0 6px 18px; font-size:.72rem; letter-spacing:.09em;
  text-transform:uppercase; color:var(--menu-leise); text-decoration:none;
}
.zurueck-site:hover{color:#fff}

.suche{margin:0 0 16px}
.suche input{
  width:100%; padding:8px 14px; border-radius:99px;
  border:1px solid var(--menu-linie); background:rgba(255,255,255,.12);
  color:#fff; font:inherit; font-size:.88rem;
}
.suche input::placeholder{color:rgba(255,255,255,.6)}

.nav-gruppe{margin-bottom:22px}
.nav-titel{
  font-size:.65rem; letter-spacing:.18em; text-transform:uppercase;
  color:var(--menu-leise); font-weight:700; padding:0 9px; margin-bottom:8px;
}
.nav-liste{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:1px}
.nav-liste a{
  display:flex; align-items:baseline; gap:9px; text-decoration:none;
  color:var(--menu-text); font-size:.9rem; line-height:1.35; padding:7px 10px; border-radius:8px;
}
.nav-liste a:hover{background:rgba(255,255,255,.14); color:#fff}
.nav-liste a[aria-current="page"]{background:var(--orange); color:#fff; font-weight:600}
.nav-liste a[aria-current="page"] .nav-nr{color:rgba(255,255,255,.8)}
.nav-nr{flex:0 0 auto; font-family:var(--f-code); font-size:.71rem; color:var(--menu-leise); min-width:1.9em}
.nav-liste a.fertig .nav-nr::after{content:" ✓"; color:#8ff0cd}
.nav-liste a.geplant{opacity:.4; pointer-events:none}
.nav-datum{display:block; font-size:.7rem; color:var(--menu-leise)}

.menu-fuss{margin-top:auto; padding-top:16px; border-top:1px solid var(--menu-linie)}
.fortschritt{padding:0 9px}
.fortschritt-kopf{display:flex; justify-content:space-between; font-size:.74rem;
  color:var(--menu-leise); margin-bottom:6px; letter-spacing:.04em}
.fortschritt-kopf b{color:#fff; font-variant-numeric:tabular-nums}
.fortschritt-bahn{height:6px; border-radius:99px; background:rgba(255,255,255,.2); overflow:hidden}
.fortschritt-fuell{height:100%; width:0; background:var(--orange); transition:width .45s cubic-bezier(.2,.8,.3,1)}
.reset{
  width:100%; margin-top:12px; padding:7px; border-radius:8px; cursor:pointer;
  background:none; border:1px solid var(--menu-linie); color:var(--menu-leise);
  font:inherit; font-size:.72rem; text-transform:uppercase; letter-spacing:.08em;
}
.reset:hover{color:#fff; border-color:#fff}

.backdrop{position:fixed; inset:0; background:rgba(0,0,0,.5); z-index:30}

/* ============================== Bühne ============================== */
.buehne{flex:1 1 auto; min-width:0}
.seite{max-width:var(--lese-breite); margin:0 auto; padding:46px 28px 90px}

.brotkrumen{font-size:.72rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--orange); font-weight:700; margin-bottom:9px}
.seite h1{font-size:clamp(1.8rem,4.4vw,2.5rem); line-height:1.13; color:var(--kuehl); margin-bottom:10px}
.untertitel{font-size:1.08rem; color:var(--text-leise); margin:0}
.meta{display:flex; flex-wrap:wrap; gap:8px; margin:18px 0 0}
.chip{font-size:.75rem; padding:3px 12px; border-radius:99px;
  background:var(--flaeche); border:1px solid var(--linie); color:var(--text-leise)}
.chip.akz{background:var(--akzent-weich); border-color:var(--orange); color:var(--orange); font-weight:600}

.seite h2{font-size:1.4rem; color:var(--kuehl); margin:40px 0 10px}
.seite h3{font-size:1.05rem; margin:26px 0 6px}
.seite p{margin:.7em 0}
.seite ul,.seite ol{padding-left:22px; margin:.6em 0}
.seite li{margin:.3em 0}
.seite hr{border:none; border-top:1px solid var(--linie); margin:34px 0}
.leise{color:var(--text-leise); font-size:.9rem}
.lueck{border-bottom:1.5px solid var(--text-leise); display:inline-block; min-width:110px}
kbd{background:var(--flaeche-2); border:1px solid var(--linie); border-bottom-width:2px;
  border-radius:5px; padding:1px 6px; font-size:.82em}
.seite p code,.seite li code,.seite td code{background:var(--flaeche-2); padding:1px 5px; border-radius:4px; font-size:.87em}

/* --- Code --- */
.codebox{position:relative; margin:16px 0}
.codebox pre{background:var(--code-bg); color:var(--code-text); margin:0; padding:15px 17px;
  border-radius:var(--radius); overflow-x:auto; font-size:.87rem; line-height:1.6}
.codebox .k{color:var(--code-schl)}
.codebox .z{color:var(--code-zahl)}
.codebox .c{color:var(--code-komm)}
.codebox .s{color:var(--code-str)}
.datei{display:flex; align-items:center; gap:7px; background:var(--flaeche-2);
  border:1px solid var(--linie); border-bottom:none; border-radius:var(--radius) var(--radius) 0 0;
  padding:5px 14px; font-family:var(--f-code); font-size:.75rem; color:var(--text-leise)}
.datei + pre{border-radius:0 0 var(--radius) var(--radius)}
.kopier{position:absolute; top:8px; right:8px; z-index:2; background:rgba(255,255,255,.14);
  border:1px solid rgba(255,255,255,.25); color:#f0e9f5; font:inherit; font-size:.71rem;
  padding:3px 11px; border-radius:7px; cursor:pointer; text-transform:uppercase; letter-spacing:.06em}
.datei ~ .kopier{top:37px}
.kopier:hover{background:rgba(255,255,255,.24)}
.kopier.ok{background:var(--gruen); border-color:var(--gruen); color:#fff}

/* --- Hinweiskästen --- */
.kasten{margin:18px 0; padding:13px 18px; border-radius:0 var(--radius) var(--radius) 0;
  background:var(--kuehl-weich); border-left:4px solid var(--kuehl)}
.kasten > :first-child{margin-top:0} .kasten > :last-child{margin-bottom:0}
.kasten-titel{font-weight:700; margin-bottom:3px; display:block; color:var(--kuehl)}
.kasten.warn{background:var(--akzent-weich); border-left-color:var(--orange)}
.kasten.warn .kasten-titel{color:var(--orange)}
.kasten.tipp{background:var(--moos-weich); border-left-color:var(--moos)}
.kasten.tipp .kasten-titel{color:var(--moos)}

/* --- Aufgabe --- */
.aufgabe{margin:24px 0; border:1px solid var(--linie); border-radius:var(--radius);
  background:var(--flaeche); overflow:hidden; box-shadow:var(--schatten)}
.aufgabe-kopf{display:flex; align-items:flex-start; gap:12px; padding:14px 18px; border-bottom:1px solid var(--linie)}
.aufgabe-nr{flex:0 0 auto; font-family:var(--f-titel); font-size:.67rem; font-weight:700;
  background:var(--lila); color:#fff; padding:4px 10px; border-radius:99px;
  letter-spacing:.09em; text-transform:uppercase; margin-top:3px}
.aufgabe-kopf h3{margin:0; font-size:1.1rem}
.aufgabe-koerper{padding:2px 18px 16px}
.aufgabe-koerper > :first-child{margin-top:10px}
.aufgabe-fuss{display:flex; align-items:center; gap:11px; padding:12px 18px;
  border-top:1px solid var(--linie); background:var(--flaeche-2); cursor:pointer; user-select:none}
.aufgabe-fuss input{width:21px; height:21px; accent-color:var(--gruen); flex:0 0 auto; cursor:pointer}
.aufgabe-fuss span{font-weight:600; font-size:.95rem}
.aufgabe.erledigt{border-color:var(--moos)}
.aufgabe.erledigt .aufgabe-fuss{background:var(--moos-weich)}
.aufgabe.erledigt .aufgabe-fuss span{color:var(--moos)}

/* --- Notizfeld --- */
.notiz{margin:14px 0}
.notiz label{display:block; font-size:.88rem; font-weight:600; margin-bottom:5px}
.notiz textarea,.notiz input[type=text]{width:100%; font:inherit; font-size:.92rem; padding:9px 12px;
  border:1px solid var(--linie); border-radius:8px; background:var(--papier); color:var(--text); resize:vertical}
.notiz textarea{font-family:var(--f-code); font-size:.85rem; line-height:1.55}
.notiz .gespeichert{font-size:.71rem; color:var(--moos); opacity:0; transition:opacity .3s}
.notiz .gespeichert.an{opacity:1}

/* --- Tabelle --- */
.tabwrap{overflow-x:auto; margin:18px 0}
table{border-collapse:collapse; width:100%; font-size:.91rem}
th{text-align:left; padding:8px 12px; background:var(--lila); color:#fff; font-weight:600;
  white-space:nowrap; font-size:.82rem; letter-spacing:.05em; text-transform:uppercase}
th:first-child{border-radius:8px 0 0 0} th:last-child{border-radius:0 8px 0 0}
td{padding:8px 12px; border-bottom:1px solid var(--linie); vertical-align:top}
tbody tr:hover td{background:var(--flaeche)}

/* --- Trick-Karte --- */
.trick{margin:26px 0; padding:20px 22px; border-radius:var(--radius);
  background:var(--flaeche); border:2px dashed var(--orange)}
.trick-nr{font-size:.67rem; letter-spacing:.18em; text-transform:uppercase; color:var(--orange); font-weight:700}
.trick h3{font-size:1.35rem; margin:5px 0 9px; color:var(--kuehl)}
.trick-regel{font-size:1.06rem; font-weight:600; line-height:1.45; margin:0 0 4px}

/* --- Pause --- */
.pause{margin:28px 0; text-align:center; padding:32px 20px; border-radius:var(--radius);
  background:var(--menu-verlauf); color:#fff}
.pause b{font-family:var(--f-titel); font-size:2.4rem; display:block; line-height:1; margin-bottom:8px}
.pause p{margin:.3em 0; color:rgba(255,255,255,.9)}

/* --- Aufklappen --- */
details.klapp{margin:16px 0; border:1px solid var(--linie); border-radius:var(--radius);
  background:var(--flaeche); overflow:hidden}
details.klapp > summary{cursor:pointer; padding:11px 17px; font-weight:600; font-size:.93rem;
  list-style:none; display:flex; align-items:center; gap:9px}
details.klapp > summary::-webkit-details-marker{display:none}
details.klapp > summary::before{content:"▸"; color:var(--orange)}
details.klapp[open] > summary::before{content:"▾"}
details.klapp > summary:hover{background:var(--flaeche-2)}
.klapp-inhalt{padding:0 17px 14px; border-top:1px solid var(--linie)}
.klapp-inhalt > :first-child{margin-top:12px}

/* --- Rosetten-Werkstatt --- */
.labor{margin:20px 0; padding:17px; border-radius:var(--radius);
  background:var(--flaeche); border:1px solid var(--linie); box-shadow:var(--schatten)}
.labor-gitter{display:grid; grid-template-columns:1fr; gap:17px}
@media (min-width:700px){.labor-gitter{grid-template-columns:minmax(0,1fr) 228px}}
.buehne-canvas{background:#1c0a28; border-radius:var(--radius); aspect-ratio:1; width:100%; max-width:100%; display:block}
.regler{display:grid; gap:14px; align-content:start}
.regler label{display:flex; justify-content:space-between; font-size:.82rem; font-weight:600; margin-bottom:4px}
.regler label i{font-style:normal; font-family:var(--f-code); color:var(--orange); font-variant-numeric:tabular-nums}
.regler input[type=range]{width:100%; accent-color:var(--orange)}
.regler .schalter{display:flex; align-items:center; justify-content:flex-start;
  gap:9px; font-size:.86rem; font-weight:600; margin:0; cursor:pointer}
.regler .schalter input{width:18px; height:18px; accent-color:var(--orange); flex:0 0 auto}
.vorgaben{display:flex; flex-wrap:wrap; gap:6px}
.vorgaben button{background:var(--papier); border:1px solid var(--linie); color:var(--text);
  font:inherit; font-size:.75rem; padding:4px 12px; border-radius:99px; cursor:pointer}
.vorgaben button:hover{border-color:var(--orange); color:var(--orange)}

/* --- Detektiv --- */
.beweis{background:var(--code-bg); border-radius:var(--radius); padding:13px 8px; margin:16px 0; overflow-x:auto}
.beweis .zeile{display:flex; gap:11px; padding:3px 9px; border-radius:6px; white-space:pre;
  font-family:var(--f-code); font-size:.86rem; color:var(--code-text); cursor:pointer}
.beweis .zeile:hover{background:rgba(255,255,255,.08)}
.beweis .znr{color:var(--code-komm); width:1.8em; text-align:right; flex:0 0 auto; user-select:none}
.beweis .zeile.markiert{background:rgba(255,96,10,.22); box-shadow:inset 3px 0 0 var(--orange)}
.beweis-hilfe{font-size:.8rem; color:var(--text-leise); margin-top:6px}

/* --- Blättern --- */
.blaettern{display:flex; gap:12px; justify-content:space-between; margin-top:52px; padding-top:22px; border-top:1px solid var(--linie)}
.blaettern a{text-decoration:none; color:var(--text); border:2px solid var(--linie); background:var(--papier);
  padding:10px 20px; border-radius:var(--radius); font-weight:600; font-size:.85rem;
  text-transform:uppercase; letter-spacing:.06em}
.blaettern a:hover{border-color:var(--orange); color:var(--orange)}
.blaettern a.weiter{background:var(--orange); border-color:var(--orange); color:#fff}
.blaettern a.weiter:hover{color:#fff; opacity:.88}

/* --- Kacheln --- */
.kacheln{display:grid; grid-template-columns:repeat(auto-fill,minmax(212px,1fr)); gap:14px; margin:22px 0}
.kachel{display:block; text-decoration:none; color:inherit; padding:17px;
  border:1px solid var(--linie); border-radius:var(--radius); background:var(--flaeche)}
.kachel:hover{border-color:var(--orange)}
.kachel .nr{font-family:var(--f-code); font-size:.71rem; color:var(--orange); font-weight:700}
.kachel h3{font-size:1rem; margin:5px 0 4px; color:var(--kuehl)}
.kachel p{margin:0; font-size:.85rem; color:var(--text-leise)}
.kachel.leer{opacity:.45; pointer-events:none; border-style:dashed}

.treffer{font-size:.84rem; color:var(--menu-leise); margin:0 9px 8px}

/* ============================== Schmale Schirme ============================== */
@media (max-width:860px){
  .kopf{display:flex}
  .marke-desktop,.zurueck-site{display:none}
  .huelle{display:block}
  .menu{position:fixed; top:0; left:0; z-index:35; height:100%;
    width:min(85vw,var(--menu-breite)); transform:translateX(-102%);
    transition:transform .28s cubic-bezier(.2,.8,.3,1)}
  .menu.offen{transform:none}
  .menu-innen{height:100%}
  .seite{padding:26px 18px 70px}
}
@media (prefers-reduced-motion:reduce){.menu{transition:none}}

/* ============================== Druck ============================== */
@media print{
  .kopf,.menu,.backdrop,.blaettern,.kopier,.reset{display:none !important}
  .seite{max-width:none; padding:0}
  body{font-size:11pt}
  .codebox pre{background:#f2f2f2; color:#111; border:1px solid #ccc}
  .codebox .k,.codebox .z,.codebox .c,.codebox .s{color:#111}
  th{background:#eee; color:#111}
  .aufgabe,.kasten,.labor,.trick{break-inside:avoid}
  details.klapp{display:none}
}
