/*
  StarshipOS — Medizin-Labor, Werkbank (templates/medical/lab.html)

  Links die Warteschlange (Karten mit Triage-Streifen und 5-Schritt-Fortschritt), rechts die
  Werkbank des gewaehlten Auftrags, darunter Energie und zuletzt freigegebene Befunde.
  Baut auf medical-ui.css auf (.med-panel, .med-badge, .med-stages, .tone-*); die Seite braucht
  medical-chart.css nicht mehr — alles Labor-Eigene steht hier.

  Farben der Schritte wie im Entwurf: erledigt = Stationsfarbe, aktuell = je Schritt
  (Probe grau, Analyse blau, Handarbeit/Auswertung violett, Freigabe gruen).
*/

.lab {
    --lab-violet: var(--med-violet, #a78bfa);
    --lab-step-0: var(--text-muted);
    --lab-step-1: var(--med-blue);
    --lab-step-2: var(--lab-violet);
    --lab-step-3: var(--lab-violet);
    --lab-step-4: var(--med-green);
    display: flex;
    flex-direction: column;
    gap: 16px;
    min-width: 0;
}

/* Tonklassen mit hoeherer Spezifitaet: Karte und Werkbank setzen hier ein Standard-(--tone), und
   diese Datei laedt nach medical-ui.css — ohne .lab-Praefix gewaenne der Standard. */
.lab .tone-red    { --tone: var(--med-red); }
.lab .tone-orange { --tone: var(--med-orange); }
.lab .tone-yellow { --tone: var(--med-yellow); }
.lab .tone-green  { --tone: var(--med-green); }
.lab .tone-blue   { --tone: var(--med-blue); }
.lab .tone-black  { --tone: var(--med-black); }
.lab .tone-violet { --tone: var(--med-violet); }

.lab-muted { margin: 0; font-size: var(--text-sm); color: var(--text-muted); line-height: 1.5; }

/* ── Hinweiszeilen nach Aktionen ─────────────────────────────────────── */
.lab-flash {
    padding: 8px 12px;
    border: 1px solid var(--med-green);
    background: var(--tint-green);
    border-radius: 3px;
    font-size: var(--text-sm);
    color: var(--text-primary);
}
.lab-flash.is-error { border-color: var(--med-red); background: var(--tint-red); color: #fca5a5; }

/* ── Raster: Warteschlange | Werkbank ─────────────────────────────────── */
.lab-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 16px;
    align-items: start;
}
@media (min-width: 1100px) {
    .lab-grid { grid-template-columns: minmax(0, 300px) minmax(0, 1fr); }
}

/* ── Warteschlange ───────────────────────────────────────────────────── */
.lab-cards {
    padding: 16px;
    display: grid;
    gap: 6px;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr));
}
@media (min-width: 1100px) {
    .lab-cards { display: flex; flex-direction: column; }
}
/* Lange Warteschlange auf breiten Schirmen: Karten zweispaltig, die Spalte wird breiter,
   statt die Seite unter der Werkbank leer nach unten zu ziehen. */
@media (min-width: 1500px) {
    .lab-grid:has(.lab-card:nth-of-type(7)) { grid-template-columns: minmax(0, 480px) minmax(0, 1fr); }
    .lab-grid:has(.lab-card:nth-of-type(7)) .lab-cards {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        align-items: start;
    }
}

.lab-card {
    --tone: var(--text-muted);
    all: unset;
    box-sizing: border-box;
    cursor: pointer;
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
    padding: 10px 12px 10px 14px;
    border: 1px solid var(--med-line);
    border-left: 4px solid var(--tone);
    border-radius: 4px;
    background: var(--bg-secondary);
    font-family: inherit;
    color: var(--text-primary);
}
.lab-card:hover { border-color: color-mix(in srgb, var(--med-accent) 55%, var(--med-line)); border-left-color: var(--tone); }
.lab-card:focus-visible { outline: 2px solid var(--med-accent); outline-offset: 2px; }
.lab-card.is-selected {
    border-color: var(--med-accent);
    border-left-color: var(--tone);
    background: color-mix(in srgb, var(--med-accent) 10%, var(--bg-secondary));
}
.lab-card.htmx-request { opacity: 0.7; }
.lab-card-row { display: flex; gap: 8px; align-items: baseline; justify-content: space-between; min-width: 0; }
.lab-card-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--text-md); }
.lab-card-sub { font-size: var(--text-xs); color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lab-card-foot { font-size: var(--text-xs); }
.lab-card-step { min-width: 0; }
.lab-card-timer { color: var(--text-muted); white-space: nowrap; font-variant-numeric: tabular-nums; }

/* Schrittfarbe fuer Karte, Punktleiste und Stufenbalken */
.lab-at-0 { --lab-cur: var(--lab-step-0); }
.lab-at-1 { --lab-cur: var(--lab-step-1); }
.lab-at-2 { --lab-cur: var(--lab-step-2); }
.lab-at-3 { --lab-cur: var(--lab-step-3); }
.lab-at-4 { --lab-cur: var(--lab-step-4); }
.lab-card-step { color: var(--lab-cur); }

.lab-pips { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 2px; }
.lab-pips > span { height: 4px; border-radius: 1px; background: var(--bg-panel); }
.lab-pips > span.is-done { background: var(--med-accent); }
.lab-pips > span.is-current { background: var(--lab-cur); }

/* ── Werkbank ────────────────────────────────────────────────────────── */
.lab-bench {
    --tone: var(--text-muted);
    min-width: 0;
    background: var(--bg-panel);
    border: 1px solid var(--med-line);
    border-left: 3px solid var(--tone);
    border-radius: 4px;
    display: flex;
    flex-direction: column;
}
.lab-bench-empty {
    padding: 48px 24px;
    text-align: center;
    border: 1px dashed var(--med-line);
    border-radius: 4px;
    color: var(--text-muted);
}

.lab-bench-head {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px 14px;
    padding: 14px 18px;
    border-bottom: 1px solid var(--med-line);
}
.lab-flask { color: var(--lab-violet); flex: none; }
.lab-bench-titles { display: flex; flex-direction: column; gap: 4px; flex: 1; min-width: min(100%, 200px); }
.lab-bench-title { margin: 0; font-size: var(--text-xl); font-weight: 700; line-height: 1.2; }
.lab-bench-meta { font-size: var(--text-xs); color: var(--text-muted); overflow-wrap: anywhere; }
.lab-bench-triage { font-size: var(--text-sm); padding: 4px 10px; border-radius: 3px; }

.lab-facts {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 20px;
    padding: 10px 18px;
    background: var(--bg-secondary);
    border-bottom: 1px solid var(--med-line);
    font-size: var(--text-xs);
    color: var(--text-muted);
}
.lab-facts b { color: var(--text-primary); }
.lab-facts b.is-ep { color: var(--accent-yellow); }

/* Stufenbalken: .med-stages aus medical-ui.css, hier dicker und mit Nummer */
.lab-stages {
    --stages: 5;
    list-style: none;
    margin: 0;
    padding: 16px 18px 0;
    gap: 6px;
}
.lab-stages .med-stage::before { height: 6px; border-radius: 2px; background: var(--bg-secondary); }
.lab-stages .med-stage.is-done::before { background: var(--med-accent); }
.lab-stages .med-stage.is-current::before { background: var(--lab-cur); }
.lab-stages .med-stage b { color: var(--text-muted); }
.lab-stages .med-stage.is-done b,
.lab-stages .med-stage.is-current b { color: var(--med-accent); }
.lab-stages .med-stage { letter-spacing: 0.04em; overflow-wrap: anywhere; }

.lab-bench-body { padding: 18px; display: flex; flex-direction: column; gap: 16px; min-width: 0; }

/* Laufende Analyse */
.lab-run {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 10px 12px;
    background: var(--bg-secondary);
    border: 1px solid var(--med-line);
    border-radius: 4px;
}
.lab-run-head {
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 4px 12px;
    font-size: var(--text-xs);
    text-transform: uppercase;
    letter-spacing: var(--tracking-label, 0.12em);
    color: var(--text-muted);
}
.lab-run-head b { color: var(--lab-violet); font-variant-numeric: tabular-nums; }
.lab-run.is-done .lab-run-head b { color: var(--med-green); }
.lab-bar {
    display: block;
    height: 8px;
    background: var(--bg-panel);
    border: 1px solid var(--med-line);
    border-radius: 2px;
    overflow: hidden;
}
.lab-bar > span { display: block; height: 100%; background: var(--lab-violet); transition: width 1s linear; }
.lab-run.is-done .lab-bar > span { background: var(--med-green); }

/* Schritt-Inhalte */
.lab-stepbox { display: flex; flex-direction: column; gap: 14px; align-items: flex-start; min-width: 0; }
.lab-stepbox form { margin: 0; }
.lab-lead { margin: 0; font-size: var(--text-lg); }
.lab-warn {
    margin: 0;
    padding: 8px 12px;
    border: 1px solid var(--accent-yellow);
    background: var(--tint-yellow);
    color: var(--accent-yellow);
    border-radius: 3px;
    font-size: var(--text-sm);
}

.lab-task {
    align-self: stretch;
    padding: 14px;
    border: 1px solid var(--lab-violet);
    background: color-mix(in srgb, var(--lab-violet) 8%, transparent);
    border-radius: 4px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.lab-task-label { font-size: var(--text-xs); color: var(--lab-violet); text-transform: uppercase; letter-spacing: var(--tracking-label, 0.12em); }
.lab-task p { margin: 0; font-size: var(--text-md); line-height: 1.5; }

.lab-manual { align-self: stretch; display: flex; flex-direction: column; gap: 14px; }
.lab-manual-sim {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 16px;
    align-items: center;
    padding: 12px;
    border: 1px dashed var(--med-line);
    border-radius: 4px;
}
.lab-manual-sim output { color: var(--text-primary); font-weight: 700; text-transform: none; }
.lab-manual-sim input[type=range] { accent-color: var(--lab-violet); width: 100%; }
.lab-ok-chip { white-space: nowrap; }

/* Handarbeit-Zeile + Material drucken */
.lab-handline { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; font-size: var(--text-xs); }
.lab-handline .lab-muted { font-size: var(--text-xs); }
.lab-spacer { flex: 1; }
.lab-print {
    color: var(--accent-blue);
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: var(--tracking-label, 0.12em);
    white-space: nowrap;
}
.lab-print:hover { color: var(--accent-cyan); }

/* Auswertung: Messmaterial (SVG aus LabPuzzle*.kt) im dunklen Sichtfeld */
.lab-eval { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.lab-material {
    margin: 0;
    position: relative;
    background: #000510;
    border: 1px solid var(--med-line);
    border-radius: 4px;
    padding: 10px 10px 32px;
    min-width: 0;
    overflow-x: auto;
}
.lab-material-svg { display: flex; justify-content: center; }
.lab-material .lab-svg { display: block; width: 100%; height: auto; max-height: 420px; border-radius: 3px; }
.lab-material .lab-smear, .lab-material .lab-plate { max-width: 400px; }
.lab-material .lab-imaging { max-width: 260px; }
.lab-material .lab-ct { max-width: 380px; }
.lab-material .lab-sono { max-width: 540px; }
.lab-material .lab-dosimetry, .lab-material .lab-tox { max-width: 640px; }
.lab-material figcaption {
    position: absolute;
    left: 14px;
    bottom: 9px;
    font-size: var(--text-xs);
    color: var(--text-muted);
}
.lab-instructions { max-width: 90ch; }

.lab-eval-form { display: flex; flex-direction: column; gap: 14px; margin: 0; }
.lab-fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 160px), 1fr)); gap: 10px; }
.lab-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
    font-size: var(--text-xs);
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.lab-fields input,
.lab-fields select {
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    background: var(--bg-secondary);
    border: 1px solid var(--med-line);
    color: var(--text-primary);
    padding: 9px 10px;
    border-radius: 3px;
    font-family: var(--font-mono);
    font-size: var(--text-md);
    text-transform: none;
    letter-spacing: 0;
}
.lab-fields select { font-size: var(--text-sm); }
.lab-fields input:focus, .lab-fields select:focus { outline: none; border-color: var(--med-accent); }

.lab-actions { display: flex; gap: 10px; flex-wrap: wrap; }

.lab-done-line { margin: 0; font-size: var(--text-xs); font-weight: 700; text-transform: uppercase; letter-spacing: var(--tracking-label, 0.12em); }
.lab-done-line.q-excellent, .lab-done-line.q-good { color: var(--med-green); }
.lab-done-line.q-poor { color: var(--accent-yellow); }
.lab-done-line.q-failed { color: var(--med-red); }

/* Freigabe */
.lab-result {
    --tone: var(--med-green);
    align-self: stretch;
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 14px;
    border: 1px solid var(--tone);
    background: color-mix(in srgb, var(--tone) 10%, transparent);
    border-radius: 4px;
}
.lab-result.is-path { --tone: var(--med-red); }
.lab-result-flag { font-size: var(--text-xs); font-weight: 700; color: var(--tone); text-transform: uppercase; letter-spacing: var(--tracking-label, 0.12em); }
.lab-result p { margin: 0; font-size: var(--text-md); line-height: 1.5; }

/* Knoepfe (eigene, damit die Seite nicht an Stations-CSS haengt) */
.lab-btn {
    --tone: var(--med-blue);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 40px;
    padding: 8px 20px;
    border: 1px solid var(--tone);
    border-radius: 3px;
    background: var(--tone);
    color: #fff;
    font-family: var(--font-mono);
    font-size: var(--text-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    cursor: pointer;
    max-width: 100%;
    white-space: normal;
    text-align: center;
}
.lab-btn:hover { filter: brightness(1.12); }
.lab-btn.is-success { --tone: var(--med-green); color: #0a0e17; }
.lab-btn.is-outline { background: transparent; --tone: var(--med-line); color: var(--text-muted); }
.lab-btn.is-outline:hover { color: var(--text-primary); filter: none; border-color: var(--text-muted); }
.lab-btn.is-wide { width: 100%; }
.lab-btn:disabled { opacity: 0.45; cursor: not-allowed; filter: grayscale(0.6); }

/* ── Energie + Zuletzt freigegeben ───────────────────────────────────── */
.lab-side {
    display: grid;
    gap: 16px;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
    align-items: stretch;
}

/* Energie-Fragment (fragments/power-demand.html) steht im Panel; sein Bereichsname doppelt
   den Panel-Titel, die Belegung daneben bleibt. */
.lab-energy .med-power-head > b { display: none; }
.lab-energy .med-power-used { font-size: var(--text-sm); }
.lab-energy .med-power-segs > span { height: 16px; }

.lab-recent-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.lab-recent-list li {
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr);
    gap: 10px;
    padding: 10px 0;
    border-bottom: 1px solid var(--med-line);
}
.lab-recent-time { font-size: var(--text-xs); color: var(--text-muted); padding-top: 2px; }
.lab-recent-main { display: flex; flex-direction: column; gap: 6px; min-width: 0; font-size: var(--text-sm); }
.lab-recent-meta { display: flex; gap: 6px 8px; align-items: center; flex-wrap: wrap; }
.lab-recent-meta .lab-muted { font-size: var(--text-xs); }

/* ── Schmal: gestapelt, kompaktere Innenabstaende ────────────────────── */
@media (max-width: 600px) {
    .lab-cards { padding: 12px; }
    .lab-bench-head, .lab-facts { padding-left: 12px; padding-right: 12px; }
    .lab-stages { padding: 12px 12px 0; gap: 4px; }
    .lab-stages .med-stage { font-size: 0.6rem; letter-spacing: 0; }
    .lab-bench-body { padding: 12px; }
    .lab-manual-sim { grid-template-columns: minmax(0, 1fr); }
    .lab-btn { width: 100%; }
}
