/*
 * SHK-Rechner — Designsystem (dunkel, 3D-Akzente)
 * Leitbild: ein Werkzeug für den Fachplaner — dunkel, ruhig in der Bedienung,
 * mit spürbarer Tiefe (3D-Neigeeffekte, weiche Animationen) statt Marketing-
 * Glanz. Hoher Kontrast, große Klickflächen, jederzeit ohne Maus bedienbar.
 * Alle Bewegung respektiert prefers-reduced-motion.
 */

:root {
  --shk-bg: #0b0e13;
  --shk-bg-erhoben: #10141b;
  --shk-flaeche: #161b23;
  --shk-flaeche-2: #1c2229;
  --shk-flaeche-glas: rgba(28, 34, 43, 0.72);
  --shk-text: #eef1f4;
  --shk-text-schwach: #99a3ad;
  --shk-rand: #2b323c;
  --shk-rand-hell: #3a4350;
  --shk-akzent: #4fc3f7;
  --shk-akzent-2: #8b7bf0;
  --shk-akzent-dunkel: #8fd8ff;
  --shk-akzent-glueh: rgba(79, 195, 247, 0.35);

  --shk-gruen: #4fd08a;
  --shk-gruen-bg: rgba(79, 208, 138, 0.14);
  --shk-blau: #5cb3e8;
  --shk-blau-bg: rgba(92, 179, 232, 0.14);
  --shk-orange: #eab04a;
  --shk-orange-bg: rgba(234, 176, 74, 0.14);
  --shk-rot: #ef7a72;
  --shk-rot-bg: rgba(239, 122, 114, 0.14);

  --shk-warnung: #eab04a;
  --shk-warnung-bg: rgba(234, 176, 74, 0.14);
  --shk-fehler: #ef7a72;
  --shk-fehler-bg: rgba(239, 122, 114, 0.16);
  --shk-hinweis: #b9c7d6;
  --shk-hinweis-bg: rgba(185, 199, 214, 0.1);

  --shk-schatten: 0 1px 2px rgba(0,0,0,0.4), 0 10px 24px -12px rgba(0,0,0,0.55);
  --shk-schatten-hoch: 0 2px 4px rgba(0,0,0,0.45), 0 22px 40px -16px rgba(0,0,0,0.65), 0 0 0 1px rgba(255,255,255,0.02);

  --shk-dauer: 0.5s;
  --shk-kurz: 0.18s;
}

/* Erzwungen dunkel als Standard — es gibt in dieser Anwendung bewusst keinen
   hellen Modus, damit Zahlen bei Baustellenlicht auf dunklen Geräten ruhig
   und blendfrei bleiben. */
@media (prefers-color-scheme: light) {
  :root { color-scheme: dark; }
}

* { box-sizing: border-box; }

html {
  color-scheme: dark;
}

html, body {
  margin: 0;
  padding: 0;
  background: var(--shk-bg);
  color: var(--shk-text);
  font-family: -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  font-size: 16px;
  line-height: 1.45;
  min-height: 100%;
}

/* --- Ambiente: ruhiger, animierter Verlaufshintergrund ----------------- */
body {
  position: relative;
  background:
    radial-gradient(1100px 620px at 8% -8%, rgba(79, 195, 247, 0.16), transparent 60%),
    radial-gradient(900px 560px at 108% 8%, rgba(139, 123, 240, 0.14), transparent 55%),
    radial-gradient(1000px 700px at 50% 118%, rgba(79, 208, 138, 0.07), transparent 60%),
    var(--shk-bg);
  background-attachment: fixed;
}
body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background-image:
    linear-gradient(rgba(255,255,255,0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.025) 1px, transparent 1px);
  background-size: 34px 34px;
  mask-image: radial-gradient(1100px 620px at 50% 0%, #000 0%, transparent 75%);
  -webkit-mask-image: radial-gradient(1100px 620px at 50% 0%, #000 0%, transparent 75%);
}

a { color: var(--shk-akzent-dunkel); }
a:hover { color: var(--shk-akzent); }

h1, h2, h3 { line-height: 1.25; margin: 0.6em 0 0.4em; letter-spacing: -0.01em; }
h1 { font-size: 1.6rem; }
h2 { font-size: 1.15rem; }
h3 { font-size: 1rem; }

/* --- Kopfleiste mit 3D-Würfel-Marke ------------------------------------ */
.shk-kopfleiste {
  position: sticky; top: 0; z-index: 50;
  background: rgba(16, 20, 27, 0.82);
  backdrop-filter: blur(10px) saturate(1.2);
  -webkit-backdrop-filter: blur(10px) saturate(1.2);
  border-bottom: 1px solid var(--shk-rand);
  padding: 10px 16px;
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
}
.shk-kopfleiste a.shk-logo {
  font-weight: 700; text-decoration: none; color: var(--shk-text); font-size: 1.1rem;
  display: inline-flex; align-items: center; gap: 10px;
}
.shk-wuerfel {
  width: 22px; height: 22px; position: relative;
  transform-style: preserve-3d;
  animation: shk-wuerfel-dreh 14s linear infinite;
  flex: none;
}
.shk-wuerfel span {
  position: absolute; inset: 0;
  border: 1px solid rgba(143, 216, 255, 0.55);
  background: linear-gradient(135deg, rgba(79,195,247,0.35), rgba(139,123,240,0.22));
  box-shadow: inset 0 0 6px rgba(143,216,255,0.25);
}
.shk-wuerfel span:nth-child(1) { transform: translateZ(11px); }
.shk-wuerfel span:nth-child(2) { transform: rotateY(180deg) translateZ(11px); }
.shk-wuerfel span:nth-child(3) { transform: rotateY(90deg) translateZ(11px); }
.shk-wuerfel span:nth-child(4) { transform: rotateY(-90deg) translateZ(11px); }
.shk-wuerfel span:nth-child(5) { transform: rotateX(90deg) translateZ(11px); }
.shk-wuerfel span:nth-child(6) { transform: rotateX(-90deg) translateZ(11px); }
@keyframes shk-wuerfel-dreh {
  from { transform: rotateX(-22deg) rotateY(0deg); }
  to   { transform: rotateX(-22deg) rotateY(360deg); }
}

.shk-kopfleiste nav { display: flex; gap: 4px; flex-wrap: wrap; }
.shk-kopfleiste nav a {
  text-decoration: none; color: var(--shk-text-schwach); font-size: 0.94rem;
  padding: 8px 10px; border-radius: 7px; transition: color var(--shk-kurz), background var(--shk-kurz);
}
.shk-kopfleiste nav a:hover, .shk-kopfleiste nav a:focus { color: var(--shk-text); background: var(--shk-flaeche-2); }
.shk-kopfleiste nav a.shk-aktiv { color: var(--shk-akzent-dunkel); background: var(--shk-blau-bg); font-weight: 600; }

.shk-inhalt { max-width: 960px; margin: 0 auto; padding: 16px; position: relative; z-index: 1; }
.shk-inhalt-breit { max-width: 1200px; margin: 0 auto; padding: 16px; position: relative; z-index: 1; }

.shk-haftungshinweis {
  font-size: 0.85rem;
  color: var(--shk-text-schwach);
  border-top: 1px solid var(--shk-rand);
  padding: 14px 16px 30px;
  text-align: center;
  position: relative; z-index: 1;
}

/* --- Bewegung: Basisdefinitionen ---------------------------------------- */
@keyframes shk-ein {
  from { opacity: 0; transform: translateY(10px) scale(0.99); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes shk-pop {
  0%   { transform: scale(0.94); opacity: 0.5; }
  60%  { transform: scale(1.015); opacity: 1; }
  100% { transform: scale(1); }
}
@keyframes shk-glueh-puls {
  0%, 100% { box-shadow: 0 0 0 0 rgba(239,122,114,0.0), var(--shk-schatten); }
  50%      { box-shadow: 0 0 0 6px rgba(239,122,114,0.12), var(--shk-schatten); }
}
.shk-anim-ein { animation: shk-ein var(--shk-dauer) cubic-bezier(.2,.7,.25,1) both; }

/* Neigbare 3D-Karten: JS setzt --rx/--ry via Pointer-Bewegung, CSS liefert
   den Rest (Tiefe, Übergang, Glanzkante). Ohne JS bleiben die Karten flach
   nutzbar — die Neigung ist reine Zugabe. */
.shk-3d {
  --rx: 0deg; --ry: 0deg; --tz: 0px;
  transform: perspective(900px) rotateX(var(--rx)) rotateY(var(--ry)) translateZ(var(--tz));
  transition: transform var(--shk-kurz) ease-out, box-shadow var(--shk-kurz) ease-out, border-color var(--shk-kurz) ease-out;
  will-change: transform;
}
.shk-3d.shk-3d-aktiv { box-shadow: var(--shk-schatten-hoch); border-color: var(--shk-rand-hell); }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; }
  .shk-wuerfel { animation: none; }
}

/* --- Rechner-Suche Startseite ---------------------------------------- */
.shk-suchleiste-box { background: var(--shk-flaeche); border: 1px solid var(--shk-rand); border-radius: 12px; padding: 14px 16px; margin: 16px 0; box-shadow: var(--shk-schatten); }
.shk-suchleiste-box label { display: block; margin-bottom: 8px; }
.shk-suchfeld { width: 100%; min-height: 48px; font-size: 1.05rem; padding: 8px 14px; border-radius: 10px; border: 1px solid var(--shk-rand); background: var(--shk-flaeche-2); color: var(--shk-text); box-sizing: border-box; }
.shk-suchfeld:focus { outline: none; border-color: var(--shk-akzent); box-shadow: 0 0 0 3px var(--shk-akzent-schatten, rgba(0,120,255,0.15)); }
#shk-suche-status { margin: 8px 0 0; }

/* --- Gewerke-Navigation Startseite ---------------------------------- */
/* Jede Kategorie ist ein aufklappbares <details> (wie shk-erklaerbox), UNTER-
   EINANDER gestapelt (nicht als Karten-Raster nebeneinander) statt einer
   immer offenen Karte: bei vielen Rechnern (v. a. Heizung, 17+ Einträge)
   wäre die Seite sonst endlos lang. Zugeklappt bleibt nur eine schmale
   Kopfzeile mit Rechner-Anzahl sichtbar (kompakt); aufgeklappt nutzt die
   Liste die GESAMTE Seitenbreite über CSS-Mehrspaltigkeit aus, statt in
   einer schmalen, geteilten Spalte zu bleiben ("geht in die Breite"). */
.shk-gewerke-grid { display: flex; flex-direction: column; gap: 10px; margin: 20px 0; }
.shk-gewerk-karte {
  display: block; background: linear-gradient(160deg, var(--shk-flaeche), var(--shk-bg-erhoben));
  border: 1px solid var(--shk-rand);
  border-radius: 12px; text-decoration: none; color: var(--shk-text);
  min-height: 48px; box-shadow: var(--shk-schatten); overflow: hidden;
}
.shk-gewerk-karte:hover, .shk-gewerk-karte:focus-within { border-color: var(--shk-akzent); }
.shk-gewerk-karte { animation: shk-ein var(--shk-dauer) cubic-bezier(.2,.7,.25,1) both; }
.shk-gewerke-grid .shk-gewerk-karte:nth-child(1) { animation-delay: 0.02s; }
.shk-gewerke-grid .shk-gewerk-karte:nth-child(2) { animation-delay: 0.06s; }
.shk-gewerke-grid .shk-gewerk-karte:nth-child(3) { animation-delay: 0.10s; }
.shk-gewerke-grid .shk-gewerk-karte:nth-child(4) { animation-delay: 0.14s; }
.shk-gewerke-grid .shk-gewerk-karte:nth-child(5) { animation-delay: 0.18s; }
.shk-gewerk-karte > summary {
  cursor: pointer; list-style: none; padding: 14px 18px; min-height: 48px;
  display: flex; align-items: center; gap: 10px;
}
.shk-gewerk-karte > summary::-webkit-details-marker { display: none; }
.shk-gewerk-karte > summary::before { content: "▸"; transition: transform var(--shk-kurz); color: var(--shk-akzent); flex: none; }
.shk-gewerk-karte[open] > summary::before { transform: rotate(90deg); }
.shk-gewerk-karte h3 { margin: 0; color: var(--shk-akzent-dunkel); display: flex; align-items: center; gap: 8px; flex: 1; }
.shk-gewerk-anzahl { font-size: 0.78rem; font-weight: 600; color: var(--shk-text-schwach); background: var(--shk-bg-erhoben); border: 1px solid var(--shk-rand); border-radius: 20px; padding: 2px 10px; white-space: nowrap; }
.shk-gewerk-inhalt { padding: 0 18px 16px; }
.shk-rechnerliste { list-style: none; padding: 0; margin: 8px 0 0; }
.shk-rechnerliste li { margin: 4px 0; break-inside: avoid; }
.shk-rechnerliste a { display: block; min-height: 48px; display: flex; align-items: center; padding: 8px 10px; border-radius: 6px; text-decoration: none; color: var(--shk-text); border: 1px solid transparent; transition: background var(--shk-kurz), border-color var(--shk-kurz), transform var(--shk-kurz); }
.shk-rechnerliste a:hover, .shk-rechnerliste a:focus { border-color: var(--shk-rand); background: var(--shk-flaeche-2); transform: translateX(2px); }
/* Mehrspaltiger Fluss innerhalb einer aufgeklappten Kategorie — die Liste
   nutzt jetzt die volle Seitenbreite (Kategorien liegen untereinander, nicht
   mehr nebeneinander), dadurch entstehen bei Heizung/Sanitär auf normalen
   Bildschirmen automatisch mehrere Spalten. */
.shk-gewerk-karte[open] .shk-rechnerliste { column-width: 300px; column-gap: 22px; }
@media (max-width: 640px) {
  .shk-gewerk-karte[open] .shk-rechnerliste { columns: 1; }
}
/* Rechnerketten (z. B. Heizlast-Bausteine, Hydraulischer Abgleich): mehrere
   zusammengehörende Rechner in ihrer festen, sinnvollen Reihenfolge — bleiben
   als ein Block zusammen und werden nicht durch die Alphabetisierung der
   übrigen Einträge auseinandergerissen. */
.shk-rechner-kette { background: var(--shk-flaeche-glas); border: 1px solid var(--shk-rand); border-radius: 8px; padding: 8px 10px 10px; margin: 6px 0; }
.shk-rechner-kette > strong { display: block; font-size: 0.82rem; color: var(--shk-akzent-dunkel); margin-bottom: 4px; }
.shk-rechner-kette ol { list-style: decimal; margin: 0; padding-left: 20px; }
.shk-rechner-kette ol li { margin: 2px 0; }
.shk-rechner-kette a { min-height: 40px; padding: 6px 8px; font-size: 0.95rem; }

/* --- Einstellungsschalter Startseite ---------------------------------- */
.shk-einstellungen-box { background: var(--shk-flaeche); border: 1px solid var(--shk-rand); border-radius: 12px; padding: 14px 16px; margin: 16px 0; box-shadow: var(--shk-schatten); }
.shk-schalter-zeile { display: flex; align-items: center; gap: 10px; min-height: 48px; }
.shk-hinweistext { font-size: 0.88rem; color: var(--shk-text-schwach); }
.shk-btn-gefahr { background: var(--shk-rot-bg); color: var(--shk-rot); border: 1px solid var(--shk-rot); }

/* --- Rechnerseite ------------------------------------------------------ */
.shk-projektkopf { display: flex; flex-wrap: wrap; gap: 10px 16px; align-items: end; background: var(--shk-flaeche); border: 1px solid var(--shk-rand); border-radius: 12px; padding: 10px 14px; margin-bottom: 14px; box-shadow: var(--shk-schatten); }
.shk-projektkopf > strong { align-self: center; color: var(--shk-text-schwach); font-weight: 600; }
.shk-projekt-feld { display: flex; flex-direction: column; font-size: 0.82rem; color: var(--shk-text-schwach); gap: 2px; }
.shk-projekt-eingabe { min-height: 40px; padding: 4px 8px; border: 1px solid var(--shk-rand); border-radius: 5px; background: var(--shk-bg); color: var(--shk-text); font-size: 0.95rem; }
.shk-projekt-eingabe:focus { outline: 2px solid var(--shk-akzent); outline-offset: 1px; }

.shk-rechner-kopf { margin-bottom: 6px; }
.shk-verfahren { color: var(--shk-text-schwach); margin: 2px 0; }
.shk-meta { font-size: 0.85rem; color: var(--shk-text-schwach); }
.shk-meta span { margin-right: 4px; }

/* --- Fachliche Erläuterung / Legende (Drei-Klassen-Prinzip) ------------ */
.shk-erklaerbox {
  background: var(--shk-flaeche-glas);
  backdrop-filter: blur(6px);
  border: 1px solid var(--shk-rand);
  border-radius: 12px;
  margin: 12px 0 16px;
  box-shadow: var(--shk-schatten);
  overflow: hidden;
}
.shk-erklaerbox summary {
  cursor: pointer; list-style: none; padding: 12px 14px; min-height: 48px;
  display: flex; align-items: center; gap: 8px; font-weight: 600; color: var(--shk-akzent-dunkel);
}
.shk-erklaerbox summary::-webkit-details-marker { display: none; }
.shk-erklaerbox summary::before { content: "▸"; transition: transform var(--shk-kurz); color: var(--shk-akzent); }
.shk-erklaerbox[open] summary::before { transform: rotate(90deg); }
.shk-erklaer-inhalt { padding: 0 16px 14px; font-size: 0.9rem; color: var(--shk-text-schwach); }
.shk-erklaer-inhalt p { margin: 0.5em 0; }
.shk-legende { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px,1fr)); gap: 8px; margin-top: 8px; }
.shk-legende-eintrag { display: flex; gap: 8px; align-items: flex-start; padding: 8px 10px; border-radius: 8px; background: var(--shk-bg-erhoben); border: 1px solid var(--shk-rand); }
.shk-legende-eintrag .shk-marke { margin-top: 2px; }
.shk-legende-eintrag span.shk-legende-text { color: var(--shk-text-schwach); font-size: 0.85rem; }

/* --- Beispielwerte-Leiste (Schnellauswahl typischer/Muster-Werte) ------ */
.shk-beispielleiste {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px;
  background: var(--shk-flaeche-glas); border: 1px solid var(--shk-rand); border-radius: 12px;
  padding: 10px 14px; margin: 0 0 14px;
}
.shk-beispielleiste strong { color: var(--shk-akzent-dunkel); font-size: 0.88rem; margin-right: 2px; }
.shk-beispiel-btn { font-size: 0.85rem; padding: 6px 12px; min-height: 34px; }
.shk-beispielleiste .shk-hinweistext { flex-basis: 100%; margin: 2px 0 0; font-size: 0.8rem; }

.shk-streifen-slot:empty { display: none; }
.shk-streifen { padding: 10px 14px; border-radius: 8px; margin: 10px 0; font-weight: 600; border: 1px solid transparent; }
.shk-streifen-warnung { background: var(--shk-warnung-bg); color: var(--shk-warnung); border-color: rgba(234,176,74,0.3); }
.shk-streifen-fehler { background: var(--shk-fehler-bg); color: var(--shk-fehler); border-color: rgba(239,122,114,0.35); animation: shk-glueh-puls 2.4s ease-in-out infinite; }
.shk-streifen-hinweis { background: var(--shk-hinweis-bg); color: var(--shk-hinweis); border-color: var(--shk-rand); }

@media (min-width: 900px) {
  /* #shk-rechner-app (nicht das umschließende <main>) ist der eigentliche
     Grid-Container — renderRechnerSeite() hängt Projektkopf, Kopfzeile,
     Erläuterung, Formular, Ergebnis und Exportleiste direkt hinein. */
  body.shk-hat-rechner #shk-rechner-app { display: grid; grid-template-columns: 1fr 380px; gap: 20px; align-items: start; }
  body.shk-hat-rechner #shk-rechner-app > .shk-projektkopf,
  body.shk-hat-rechner #shk-rechner-app > .shk-rechner-kopf,
  body.shk-hat-rechner #shk-rechner-app > .shk-erklaerbox,
  body.shk-hat-rechner #shk-rechner-app > .shk-streifen-slot,
  body.shk-hat-rechner #shk-rechner-app > .shk-beispiel-slot,
  body.shk-hat-rechner #shk-rechner-app > .shk-formular { grid-column: 1; }
  body.shk-hat-rechner #shk-rechner-app > .shk-ergebnis-slot,
  body.shk-hat-rechner #shk-rechner-app > .shk-exportleiste { grid-column: 2; position: sticky; top: 68px; }
}

.shk-formular { display: flex; flex-direction: column; gap: 12px; margin: 14px 0; }
.shk-formular-abschnitt {
  margin: 10px 0 -2px; padding-bottom: 4px; border-bottom: 2px solid var(--shk-akzent-2);
  font-size: 1rem; font-weight: 700; color: var(--shk-text);
  display: flex; align-items: center; gap: 8px;
}
.shk-formular-abschnitt:first-child { margin-top: 0; }
.shk-feld {
  border-radius: 10px; padding: 10px 12px; border: 1px solid var(--shk-rand);
  background: var(--shk-flaeche); border-left-width: 4px;
  box-shadow: var(--shk-schatten);
}
.shk-feld-kopf { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; font-size: 0.92rem; }
.shk-feld-kopf label { flex: 1; font-weight: 600; }

.shk-feld-gruen { border-left-color: var(--shk-gruen); }
.shk-feld-blau { border-left-color: var(--shk-blau); }
.shk-feld-blau-leer { border-left-color: var(--shk-blau); background: linear-gradient(180deg, var(--shk-blau-bg), var(--shk-flaeche) 70%); }
.shk-feld-orange { border-left-color: var(--shk-orange); }

.shk-marke { font-size: 0.72rem; font-weight: 700; padding: 2px 7px; border-radius: 20px; white-space: nowrap; }
.shk-marke-gruen { background: var(--shk-gruen-bg); color: var(--shk-gruen); }
.shk-marke-blau, .shk-marke-blau-leer { background: var(--shk-blau-bg); color: var(--shk-blau); }
.shk-marke-orange { background: var(--shk-orange-bg); color: var(--shk-orange); }

.shk-info { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: 50%; background: var(--shk-rand-hell); color: var(--shk-text); font-size: 0.75rem; font-style: italic; font-weight: 700; cursor: help; position: relative; flex: none; transition: background var(--shk-kurz); }
.shk-info:hover, .shk-info:focus { background: var(--shk-akzent); color: #06222f; }
.shk-info .shk-tooltip { display: none; position: absolute; right: 0; top: 26px; width: 270px; background: #05070a; border: 1px solid var(--shk-rand-hell); color: var(--shk-text); padding: 9px 11px; border-radius: 8px; font-size: 0.8rem; font-weight: 400; font-style: normal; z-index: 20; line-height: 1.4; box-shadow: var(--shk-schatten-hoch); }
.shk-info:hover .shk-tooltip, .shk-info:focus .shk-tooltip { display: block; animation: shk-ein 0.15s ease-out both; }

.shk-eingabe { width: 100%; min-height: 48px; font-size: 1.05rem; padding: 8px 10px; border: 1px solid var(--shk-rand); border-radius: 8px; background: var(--shk-bg); color: var(--shk-text); transition: border-color var(--shk-kurz), box-shadow var(--shk-kurz); }
.shk-eingabe:focus { outline: 2px solid var(--shk-akzent); outline-offset: 1px; border-color: var(--shk-akzent); box-shadow: 0 0 0 4px var(--shk-akzent-glueh); }

/* --- Wiederholbare Feldgruppen (Schichten, Teilstrecken, Bauteile, …) --- */
.shk-gruppe { background: var(--shk-flaeche-glas); backdrop-filter: blur(6px); border: 1px solid var(--shk-rand); border-radius: 12px; padding: 12px 14px 14px; box-shadow: var(--shk-schatten); }
.shk-gruppe-titel { display: flex; align-items: center; gap: 8px; }
.shk-gruppe-titel h3 { margin: 0; color: var(--shk-akzent-dunkel); }
.shk-gruppe-zeilen { display: flex; flex-direction: column; gap: 10px; margin: 10px 0; }
.shk-gruppe-zeile { border: 1px solid var(--shk-rand); border-radius: 10px; padding: 10px 12px; background: var(--shk-bg-erhoben); }
.shk-gruppe-zeile-kopf { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.shk-gruppe-zeile-nr { font-weight: 700; color: var(--shk-text); }
.shk-gruppe-unterfelder { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px; }
.shk-gruppe-unterfelder .shk-feld { margin: 0; }
.shk-btn-entfernen {
  min-height: 36px; min-width: 36px; padding: 0 10px; border-radius: 7px; border: 1px solid var(--shk-rot);
  background: var(--shk-rot-bg); color: var(--shk-rot); font-weight: 700; cursor: pointer;
  transition: filter var(--shk-kurz), transform var(--shk-kurz);
}
.shk-btn-entfernen:hover:not(:disabled) { filter: brightness(1.15); transform: translateY(-1px); }
.shk-btn-entfernen:disabled { opacity: 0.35; cursor: not-allowed; }
.shk-btn-hinzu { align-self: flex-start; margin-top: 2px; }
.shk-btn-hinzu:disabled { opacity: 0.45; cursor: not-allowed; }
@media (max-width: 480px) {
  .shk-gruppe-unterfelder { grid-template-columns: 1fr; }
}

.shk-ergebnispanel { background: linear-gradient(165deg, var(--shk-flaeche), var(--shk-bg-erhoben)); border: 1px solid var(--shk-rand); border-radius: 12px; padding: 14px 16px; margin-top: 14px; box-shadow: var(--shk-schatten-hoch); }
.shk-ergebnis { font-size: 1.7rem; font-weight: 700; padding: 10px 0; animation: shk-pop var(--shk-dauer) cubic-bezier(.2,.8,.2,1) both; }
.shk-ergebnis-wert { background: linear-gradient(90deg, var(--shk-akzent-dunkel), var(--shk-akzent-2)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.shk-ergebnis-einheit { font-size: 1.1rem; font-weight: 500; color: var(--shk-text-schwach); }
.shk-ergebnis-unvollstaendig { color: var(--shk-fehler); font-size: 1.1rem; font-weight: 600; }

.shk-warnliste { list-style: none; padding: 0; margin: 8px 0; display: flex; flex-direction: column; gap: 6px; }
.shk-warnliste li { padding: 8px 10px; border-radius: 8px; font-size: 0.9rem; border: 1px solid transparent; animation: shk-ein var(--shk-kurz) ease-out both; }
.shk-warn-hinweis { background: var(--shk-hinweis-bg); color: var(--shk-hinweis); border-color: var(--shk-rand); }
.shk-warn-warnung { background: var(--shk-warnung-bg); color: var(--shk-warnung); border-color: rgba(234,176,74,0.3); }
.shk-warn-fehler { background: var(--shk-fehler-bg); color: var(--shk-fehler); border-color: rgba(239,122,114,0.35); }

.shk-fehlende-werte table, .shk-quellenverzeichnis table { width: 100%; border-collapse: collapse; font-size: 0.88rem; }
.shk-fehlende-werte td { padding: 4px 6px; border-bottom: 1px solid var(--shk-rand); vertical-align: top; }

.shk-rechenweg { margin-top: 12px; border-top: 1px solid var(--shk-rand); padding-top: 8px; }
.shk-rechenweg summary { cursor: pointer; font-weight: 600; min-height: 48px; display: flex; align-items: center; }
.shk-rechenweg-liste { display: flex; flex-direction: column; gap: 2px; }
.shk-schritt-gruppe {
  margin-top: 14px; padding: 6px 10px; border-radius: 6px;
  background: var(--shk-bg-erhoben); border-left: 3px solid var(--shk-akzent-2);
  font-weight: 700; font-size: 0.88rem; letter-spacing: 0.01em;
}
.shk-schritt-gruppe:first-child { margin-top: 0; }
.shk-schritt { padding: 8px 0 8px 4px; border-bottom: 1px dashed var(--shk-rand); font-size: 0.9rem; }
.shk-schritt-gruppiert { padding-left: 14px; border-left: 2px solid var(--shk-rand); margin-left: 4px; }
.shk-schritt-label { font-weight: 600; }
.shk-schritt-formel, .shk-schritt-eingesetzt, .shk-schritt-ergebnis { color: var(--shk-text-schwach); font-family: "Cascadia Code", Consolas, monospace; font-size: 0.85rem; }
.shk-schritt-formel { display: flex; flex-wrap: wrap; align-items: center; gap: 0; line-height: 1.3; }

/* --- Echte Bruchdarstellung in Formeln (statt nur "/") ------------------ */
.shk-bruch {
  display: inline-flex; flex-direction: column; align-items: center; justify-content: center;
  vertical-align: middle; text-align: center; margin: 1px 4px; line-height: 1.25;
}
.shk-bruch-zaehler { display: block; padding: 0 4px 2px; border-bottom: 1.4px solid currentColor; }
.shk-bruch-nenner { display: block; padding: 2px 4px 0; }
.shk-bruch .shk-bruch { font-size: 0.82em; margin: 0 2px; }

.shk-quellenverzeichnis { margin-top: 12px; }
.shk-quellenverzeichnis ul { list-style: none; padding: 0; margin: 8px 0; display: flex; flex-direction: column; gap: 6px; }
.shk-quellen-eintrag { padding: 9px 11px; border-radius: 8px; background: var(--shk-bg-erhoben); border: 1px solid var(--shk-rand); font-size: 0.85rem; }
.shk-quellen-eintrag .shk-quellen-titel { font-weight: 600; color: var(--shk-text); }
.shk-quellen-eintrag .shk-quellen-meta { color: var(--shk-text-schwach); display: block; margin-top: 2px; }
.shk-quellen-eintrag a { font-size: 0.82rem; }

.shk-exportleiste { display: flex; gap: 10px; margin-top: 14px; flex-wrap: wrap; }
.shk-btn {
  min-height: 48px; padding: 0 18px; border-radius: 9px; border: 1px solid var(--shk-akzent);
  background: linear-gradient(135deg, var(--shk-akzent), var(--shk-akzent-2)); color: #06121a; font-size: 1rem; font-weight: 700; cursor: pointer;
  box-shadow: var(--shk-schatten), 0 0 0 0 var(--shk-akzent-glueh);
  transition: transform var(--shk-kurz) ease-out, box-shadow var(--shk-kurz) ease-out, filter var(--shk-kurz);
}
.shk-btn:hover { filter: brightness(1.08); transform: translateY(-1px); box-shadow: var(--shk-schatten-hoch), 0 0 0 5px var(--shk-akzent-glueh); }
.shk-btn:active { transform: translateY(0); filter: brightness(0.97); }
.shk-btn-sekundaer { background: var(--shk-flaeche-2); color: var(--shk-akzent-dunkel); border: 1px solid var(--shk-rand-hell); }

table { border-collapse: collapse; width: 100%; }
th, td { text-align: left; padding: 6px 8px; border-bottom: 1px solid var(--shk-rand); font-size: 0.9rem; }
th { color: var(--shk-text-schwach); font-weight: 600; }

.shk-tabelle-wrapper { overflow-x: auto; }

.shk-hinweisbox { background: var(--shk-hinweis-bg); color: var(--shk-hinweis); border: 1px solid var(--shk-rand); border-radius: 10px; padding: 12px 14px; margin: 14px 0; font-size: 0.92rem; }

/* --- Fokus & Tastaturbedienung ---------------------------------------- */
a:focus, button:focus, input:focus, summary:focus { outline: 2px solid var(--shk-akzent); outline-offset: 2px; }

/* --- Tests ------------------------------------------------------------ */
.shk-test-bestanden { color: var(--shk-gruen); font-weight: 700; }
.shk-test-gescheitert { color: var(--shk-fehler); font-weight: 700; }
.shk-testfall { border: 1px solid var(--shk-rand); border-radius: 8px; padding: 10px 12px; margin: 8px 0; background: var(--shk-flaeche); box-shadow: var(--shk-schatten); }
.shk-testfall pre { white-space: pre-wrap; font-size: 0.82rem; background: var(--shk-bg); padding: 8px; border-radius: 6px; border: 1px solid var(--shk-rand); }

/* --- Druckansicht (Rückfallebene, wenn PDF-Bibliothek fehlt) ----------- */
#shk-druckbereich { display: none; }
body.drucke-nur-berechnung > *:not(#shk-druckbereich) { display: none !important; }
body.drucke-nur-berechnung #shk-druckbereich { display: block; }

@media print {
  .shk-kopfleiste, .shk-exportleiste, .shk-projektkopf, .shk-einstellungen-box { display: none !important; }
  body, body::before { background: #fff !important; color: #000; }
  .druckansicht h1 { font-size: 18pt; }
  .druckansicht h2 { font-size: 13pt; border-bottom: 1px solid #999; padding-bottom: 2px; }
  .druck-meta { font-size: 9pt; color: #333; }
  .druck-ergebnis { font-size: 16pt; font-weight: 700; }
  .druck-fehler { color: #a3251f; }
  .druck-warnkasten { background: #a3251f; color: #fff; padding: 8px; margin-bottom: 10px; font-weight: 700; }
  .druck-schritt { font-size: 9.5pt; border-bottom: 1px dashed #ccc; padding: 4px 0; }
  .druck-warn-warnung { color: #a15c00; }
  .druck-warn-fehler { color: #a3251f; }
  .druck-fuss { font-size: 8pt; color: #555; margin-top: 20px; border-top: 1px solid #999; padding-top: 6px; }
  table { font-size: 9pt; }
}

/* --- Nachschlagewerk (Tabellenbuch) ------------------------------------- */
.shk-nachschlage-quellen { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 14px; margin: 14px 0 20px; }
.shk-nachschlage-karte { background: var(--shk-flaeche); border: 1px solid var(--shk-rand); border-radius: 12px; padding: 14px 16px; box-shadow: var(--shk-schatten); }
.shk-nachschlage-karte h3 { margin-top: 0; color: var(--shk-akzent-dunkel); }
.shk-nachschlage-karte p { font-size: 0.9rem; color: var(--shk-text-schwach); }
.shk-nachschlage-tabelle-kategorie { font-weight: 700; background: var(--shk-bg-erhoben); }

/* --- Nachschlagewerk-Tabellenseiten ------------------------------------ */
.shk-suchfeld { width: 100%; min-height: 48px; font-size: 1rem; padding: 8px 12px; border: 1px solid var(--shk-rand); border-radius: 8px; margin-bottom: 12px; background: var(--shk-flaeche); color: var(--shk-text); }
.shk-suchfeld:focus { outline: 2px solid var(--shk-akzent); outline-offset: 1px; border-color: var(--shk-akzent); }

.shk-klasse-a { color: var(--shk-gruen); font-weight: 700; }
.shk-klasse-b { color: var(--shk-blau); font-weight: 700; }
.shk-klasse-c { color: var(--shk-orange); font-weight: 700; }

/* --- Einheiten-Umrechner (live, alle Größen) --------------------------- */
.shk-umrechner-seite { display: flex; flex-direction: column; gap: 14px; margin: 14px 0; }
.shk-umrechner-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 14px; }
.shk-umrechner-kategorie.shk-gruppe { animation: shk-ein var(--shk-dauer) cubic-bezier(.2,.7,.25,1) both; }
.shk-umrechner-kategorie[hidden] { display: none; }
.shk-feld-neutral { border-left-color: var(--shk-akzent); }
.shk-umrechner-zeile { display: flex; align-items: center; gap: 10px; }
.shk-umrechner-zeile label { flex: 0 0 220px; font-weight: 600; font-size: 0.92rem; }
.shk-umrechner-zeile input.shk-eingabe { flex: 1; }
.shk-umrechner-kurz { color: var(--shk-text-schwach); font-size: 0.8rem; font-weight: 400; }

/* --- Taschenrechner & Funktionsplotter ---------------------------------- */
.shk-taschenrechner { display: grid; grid-template-columns: minmax(260px, 380px) 1fr; gap: 16px; align-items: start; }
@media (max-width: 760px) { .shk-taschenrechner { grid-template-columns: 1fr; } }
.shk-tr-block { background: var(--shk-flaeche-glas); backdrop-filter: blur(6px); border: 1px solid var(--shk-rand); border-radius: 12px; padding: 12px 14px 14px; box-shadow: var(--shk-schatten); }
.shk-tr-display { background: var(--shk-bg-erhoben); border: 1px solid var(--shk-rand); border-radius: 10px; padding: 14px 16px; margin-bottom: 10px; text-align: right; min-height: 76px; display: flex; flex-direction: column; justify-content: flex-end; gap: 2px; }
.shk-tr-ausdruck { color: var(--shk-text-schwach); font-size: 0.95rem; min-height: 1.2em; word-break: break-all; font-family: "Cascadia Code", Consolas, monospace; }
.shk-tr-ergebnis { font-size: 1.9rem; font-weight: 700; color: var(--shk-akzent-dunkel); word-break: break-all; font-family: "Cascadia Code", Consolas, monospace; }
.shk-tr-tasten { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; }
.shk-tr-taste { min-height: 46px; border-radius: 8px; border: 1px solid var(--shk-rand-hell); background: var(--shk-flaeche-2); color: var(--shk-text); font-size: 0.95rem; font-weight: 600; cursor: pointer; transition: filter var(--shk-kurz), transform var(--shk-kurz); }
.shk-tr-taste:hover { filter: brightness(1.2); transform: translateY(-1px); }
.shk-tr-taste:active { transform: translateY(0); filter: brightness(0.95); }
.shk-tr-taste-op { background: rgba(79, 195, 247, 0.16); color: var(--shk-akzent-dunkel); border-color: var(--shk-akzent); }
.shk-tr-taste-gleich { background: linear-gradient(135deg, var(--shk-akzent), var(--shk-akzent-2)); color: #06121a; grid-column: span 2; }
.shk-tr-taste-loeschen { background: rgba(239, 122, 114, 0.16); color: var(--shk-rot); border-color: var(--shk-rot); }
.shk-tr-taste-breit { grid-column: span 2; }
.shk-tr-verlauf { margin-top: 10px; max-height: 140px; overflow-y: auto; font-size: 0.82rem; color: var(--shk-text-schwach); font-family: "Cascadia Code", Consolas, monospace; border-top: 1px solid var(--shk-rand); padding-top: 8px; }
.shk-tr-verlauf div { padding: 2px 0; cursor: pointer; }
.shk-tr-verlauf div:hover { color: var(--shk-akzent-dunkel); }
.shk-plot-eingabe { display: flex; flex-wrap: wrap; gap: 8px 12px; margin-bottom: 10px; align-items: end; }
.shk-plot-eingabe label { display: flex; flex-direction: column; font-size: 0.82rem; color: var(--shk-text-schwach); gap: 3px; }
.shk-plot-eingabe input { min-height: 42px; padding: 6px 8px; border: 1px solid var(--shk-rand); border-radius: 6px; background: var(--shk-bg); color: var(--shk-text); font-family: "Cascadia Code", Consolas, monospace; }
.shk-plot-eingabe input:focus { outline: 2px solid var(--shk-akzent); outline-offset: 1px; }
.shk-plot-canvas-wrapper { background: var(--shk-bg-erhoben); border: 1px solid var(--shk-rand); border-radius: 10px; padding: 6px; overflow: hidden; }
#shk-plot-canvas { width: 100%; height: 340px; display: block; touch-action: none; }
.shk-plot-fehler { color: var(--shk-fehler); font-size: 0.85rem; margin-top: 6px; min-height: 1.2em; }

html.shk-hoher-kontrast .shk-umrechner-kategorie,
html.shk-hoher-kontrast .shk-tr-block,
html.shk-hoher-kontrast .shk-tr-display,
html.shk-hoher-kontrast .shk-plot-canvas-wrapper {
  border-width: 2px; backdrop-filter: none; background: #0a0a0a;
}
html.shk-hoher-kontrast .shk-tr-taste-gleich { background: var(--shk-akzent); color: #000; border: 2px solid #fff; }

/* --- Hoher Kontrast (zuschaltbar, Einstellungen auf der Startseite) -----
   Reines Schwarz/Weiß mit kräftigen, klar unterscheidbaren Signalfarben,
   2px-Rahmen statt weicher Schatten, kein Blur, kein Bewegungs-Ambiente —
   für Baustellenlicht, direkte Sonne oder Sehbeeinträchtigung. */
html.shk-hoher-kontrast {
  --shk-bg: #000000;
  --shk-bg-erhoben: #000000;
  --shk-flaeche: #0a0a0a;
  --shk-flaeche-2: #161616;
  --shk-flaeche-glas: #0a0a0a;
  --shk-text: #ffffff;
  --shk-text-schwach: #e8e8e8;
  --shk-rand: #ffffff;
  --shk-rand-hell: #ffffff;
  --shk-akzent: #6fe6ff;
  --shk-akzent-2: #c3b6ff;
  --shk-akzent-dunkel: #a8edff;
  --shk-akzent-glueh: rgba(111, 230, 255, 0.55);

  --shk-gruen: #4dff9e;
  --shk-gruen-bg: #002d16;
  --shk-blau: #6fe6ff;
  --shk-blau-bg: #00222c;
  --shk-orange: #ffc866;
  --shk-orange-bg: #2e1f00;
  --shk-rot: #ff9a90;
  --shk-rot-bg: #2e0805;

  --shk-warnung: #ffc866;
  --shk-warnung-bg: #2e1f00;
  --shk-fehler: #ff9a90;
  --shk-fehler-bg: #2e0805;
  --shk-hinweis: #ffffff;
  --shk-hinweis-bg: #1a1a1a;

  --shk-schatten: none;
  --shk-schatten-hoch: none;
}
html.shk-hoher-kontrast body { background: #000 !important; }
html.shk-hoher-kontrast body::before { display: none; }
html.shk-hoher-kontrast .shk-wuerfel { animation: none; }
html.shk-hoher-kontrast .shk-kopfleiste { backdrop-filter: none; background: #000; border-bottom-width: 2px; }
html.shk-hoher-kontrast .shk-feld,
html.shk-hoher-kontrast .shk-gewerk-karte,
html.shk-hoher-kontrast .shk-ergebnispanel,
html.shk-hoher-kontrast .shk-projektkopf,
html.shk-hoher-kontrast .shk-einstellungen-box,
html.shk-hoher-kontrast .shk-erklaerbox,
html.shk-hoher-kontrast .shk-gruppe,
html.shk-hoher-kontrast .shk-gruppe-zeile,
html.shk-hoher-kontrast .shk-quellen-eintrag,
html.shk-hoher-kontrast .shk-legende-eintrag,
html.shk-hoher-kontrast .shk-testfall,
html.shk-hoher-kontrast .shk-streifen,
html.shk-hoher-kontrast .shk-warnliste li {
  border-width: 2px; backdrop-filter: none; background: #0a0a0a;
}
html.shk-hoher-kontrast .shk-ergebnis-wert { background: none; -webkit-text-fill-color: unset; color: var(--shk-akzent); }
html.shk-hoher-kontrast .shk-btn { background: var(--shk-akzent); color: #000; border: 2px solid #fff; font-weight: 800; }
html.shk-hoher-kontrast .shk-btn-sekundaer { background: #000; color: var(--shk-akzent); }
html.shk-hoher-kontrast a { text-decoration: underline; }
html.shk-hoher-kontrast .shk-streifen-fehler { animation: none; }
html.shk-hoher-kontrast .shk-marke { border: 1px solid currentColor; }
