/* Die Fabrik traegt dieselbe Handschrift wie die Plaene, die aus ihr kommen:
   Papier und Petrol aus dem Salonimpuls-Satz, Archivo fuer Ueberschriften,
   Public Sans fuer Text, IBM Plex Mono fuer alles, was gezaehlt wird. */
:root{
  --papier:#fdf9f5; --papier-2:#f6efe7; --karte:#ffffff;
  --tinte:#12201f; --tinte-2:#4a5c59; --tinte-3:#7d8c89;
  --linie:#e3dbd1; --linie-2:#cfc4b6;
  --petrol:#004348; --mint:#93ccb3; --rot:#ea6268; --beige:#d29d65;
  --warn:#c2452f; --gut:#2f7d5e;
  --schatten:0 1px 2px rgba(18,32,31,.06), 0 10px 30px -14px rgba(18,32,31,.22);
  --r:8px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --papier:#0d1817; --papier-2:#121f1e; --karte:#162422;
    --tinte:#eee6dc; --tinte-2:#a8b7b3; --tinte-3:#768783;
    --linie:#243330; --linie-2:#33443f;
    --petrol:#6fb3ac; --rot:#f0838a; --beige:#dcae7c;
    --warn:#f08a76; --gut:#79c9a4;
    --schatten:0 1px 2px rgba(0,0,0,.4), 0 10px 30px -14px rgba(0,0,0,.7);
  }
}
*{box-sizing:border-box}
body{margin:0;background:var(--papier);color:var(--tinte);
  font-family:"Public Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:Archivo,"Helvetica Neue",Arial,sans-serif;margin:0;
  text-wrap:balance;letter-spacing:-.022em;font-weight:800}
a{color:var(--petrol)}
.mono{font-family:"IBM Plex Mono",ui-monospace,Menlo,monospace;font-variant-numeric:tabular-nums}
.eyebrow{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--tinte-3)}
.raum{max-width:820px;margin:0 auto;padding:clamp(28px,6vw,64px) clamp(18px,4vw,28px) 90px}
.raum.weit{max-width:1080px}
header.kopf{margin-bottom:34px}
header.kopf h1{font-size:clamp(30px,5.4vw,46px);line-height:1.02;margin:6px 0 0}
header.kopf h1 span{color:var(--petrol)}
header.kopf p{color:var(--tinte-2);margin:12px 0 0;max-width:56ch}

button,.knopf{font:inherit;font-weight:600;font-size:15px;padding:11px 22px;border-radius:100px;
  cursor:pointer;background:var(--karte);border:1px solid var(--linie-2);color:var(--tinte-2);
  text-decoration:none;display:inline-flex;align-items:center;gap:9px}
button:hover,.knopf:hover{border-color:var(--petrol);color:var(--petrol)}
button.haupt,.knopf.haupt{background:var(--petrol);border-color:var(--petrol);color:var(--papier)}
:root:not([data-theme="light"]) button.haupt,:root:not([data-theme="light"]) .knopf.haupt{color:#0d1817}
@media (prefers-color-scheme: light){:root:not([data-theme="dark"]) button.haupt{color:var(--papier)}}
button.haupt:hover{filter:brightness(1.12)}
button:disabled{opacity:.45;cursor:not-allowed}
button:focus-visible,input:focus-visible,textarea:focus-visible,a:focus-visible{
  outline:2px solid var(--petrol);outline-offset:2px}

.feld{margin-bottom:18px}
.feld label{display:block;font-family:"IBM Plex Mono",monospace;font-size:11px;
  letter-spacing:.12em;text-transform:uppercase;color:var(--tinte-3);margin-bottom:6px}
input[type=text],input[type=password],textarea{width:100%;font:inherit;font-size:15px;
  padding:11px 14px;border-radius:var(--r);border:1px solid var(--linie-2);
  background:var(--karte);color:var(--tinte)}
textarea{min-height:110px;resize:vertical;line-height:1.5}

.karte{background:var(--karte);border:1px solid var(--linie);border-radius:var(--r);
  padding:22px;box-shadow:var(--schatten)}
.hinweis{font-size:13.5px;color:var(--tinte-3);line-height:1.5}
.warn{border-left:3px solid var(--warn);padding:8px 0 8px 13px;font-size:14px;color:var(--tinte-2);margin:14px 0}
.gut{border-left:3px solid var(--gut);padding:8px 0 8px 13px;font-size:14px;color:var(--tinte-2);margin:14px 0}

/* ── Mikrofon */
.buehne{display:flex;flex-direction:column;align-items:center;gap:18px;
  padding:40px 20px 34px;background:var(--papier-2);border:1px solid var(--linie);
  border-radius:18px;margin-bottom:26px}
.mikro{width:132px;height:132px;border-radius:50%;border:2px solid var(--petrol);
  background:var(--karte);display:grid;place-items:center;cursor:pointer;padding:0;
  transition:transform .16s ease, background .16s ease, box-shadow .16s ease;position:relative}
.mikro svg{width:46px;height:46px;fill:var(--petrol);position:relative;z-index:2}
.mikro:hover{transform:scale(1.04)}
.mikro.laeuft{background:var(--rot);border-color:var(--rot)}
.mikro.laeuft svg{fill:#fff}
.mikro .puls{position:absolute;inset:-6px;border-radius:50%;border:2px solid var(--rot);
  opacity:0;pointer-events:none}
.mikro.laeuft .puls{animation:puls 1.5s ease-out infinite}
@keyframes puls{0%{transform:scale(1);opacity:.7}100%{transform:scale(1.35);opacity:0}}
.pegel{width:min(340px,80vw);height:44px;display:flex;align-items:center;justify-content:center;gap:3px}
.pegel i{display:block;width:4px;border-radius:2px;background:var(--linie-2);height:4px;
  transition:height .09s linear, background .09s linear}
.uhr{font-family:"IBM Plex Mono",monospace;font-size:28px;font-weight:600;
  font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.buehne .sagt{font-size:14.5px;color:var(--tinte-2);text-align:center;max-width:44ch;min-height:44px}

.stuecke{display:flex;flex-direction:column;gap:8px;margin:20px 0}
.stueck{display:flex;align-items:center;gap:12px;background:var(--karte);
  border:1px solid var(--linie);border-left:3px solid var(--petrol);
  border-radius:var(--r);padding:10px 14px;font-size:14px}
.stueck .nr{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--tinte-3);flex:none}
.stueck .txt{flex:1;min-width:0}
.stueck .dauer{font-family:"IBM Plex Mono",monospace;font-size:12.5px;color:var(--tinte-3);flex:none}

/* ── Schritte auf der Warteseite */
.schritte{list-style:none;padding:0;margin:26px 0 0;display:flex;flex-direction:column;gap:0}
.schritte li>span:last-child{flex:1;min-width:0}
.schritte li{display:flex;gap:15px;align-items:flex-start;padding:13px 0;
  border-bottom:1px solid var(--linie)}
.schritte li:last-child{border-bottom:0}
.punkt{width:22px;height:22px;border-radius:50%;border:2px solid var(--linie-2);flex:none;
  margin-top:2px;display:grid;place-items:center;font-size:12px;color:var(--tinte-3)}
.schritte li.fertig .punkt{background:var(--gut);border-color:var(--gut);color:#fff}
.schritte li.jetzt .punkt{border-color:var(--petrol);border-style:solid;
  animation:atmen 1.5s ease-in-out infinite}
@keyframes atmen{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--petrol) 45%,transparent)}
  50%{box-shadow:0 0 0 7px transparent}}
.schritte li.fehler .punkt{background:var(--warn);border-color:var(--warn);color:#fff}
.schritte .was,.schritte .dazu{display:block}
.schritte .was{font-weight:600;font-size:15px}
.schritte .dazu{font-size:13.5px;color:var(--tinte-3);margin-top:2px}
.schritte li.blass{opacity:.45}

/* ── Liste der Plaene */
.plaene{display:flex;flex-direction:column;gap:10px;margin-top:14px}
.plan{display:flex;align-items:center;gap:14px;background:var(--karte);
  border:1px solid var(--linie);border-radius:var(--r);padding:14px 18px;
  text-decoration:none;color:inherit}
.plan:hover{border-color:var(--linie-2);box-shadow:var(--schatten)}
.plan .pt{flex:1;min-width:0}
.plan .pn,.plan .pd{display:block}
.plan .pn{font-weight:700;font-size:15.5px;font-family:Archivo,sans-serif;letter-spacing:-.015em}
.plan .pd{font-size:12.5px;color:var(--tinte-3);font-family:"IBM Plex Mono",monospace}
.marke{font-family:"IBM Plex Mono",monospace;font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase;padding:4px 10px;border-radius:100px;border:1px solid var(--linie-2);
  color:var(--tinte-3);flex:none}
.marke.fertig{border-color:var(--gut);color:var(--gut)}
.marke.laeuft{border-color:var(--petrol);color:var(--petrol)}
.marke.fehler{border-color:var(--warn);color:var(--warn)}
.leer{color:var(--tinte-3);font-style:italic;padding:22px 0}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
