/* ═══════════════════════════════════════════════════════════════════════════════
 * ViCore — GEBÄUDEBETRIEB · Anlagenakte A3b (public/betrieb/betrieb-akte.css)
 * Neubau 04.09.2026 · Karten-Umbau 05.09.2026
 * ───────────────────────────────────────────────────────────────────────────────
 * Namespace `.gb-ak-`. Nur Tokens aus css/design-system.css — keine Hexwerte, keine
 * rohen Pixel außer 0/1px. Trägt nur, was vi-components.css und betrieb.css nicht
 * schon liefern.
 *
 * SEIT DEM KARTEN-UMBAU (Nutzerentscheidung 05.09.2026) sind die Fachblöcke der
 * Akte KARTEN (`VIComponents.card`, Namespace `.vic-cd-`), keine Flächen mit
 * Trennlinie mehr. Was hier steht, ist die EINBETTUNG: der zweispaltige
 * Kartenstapel der Übersicht, die randlose Liste in der Karte, das Kartenpaar des
 * Maßnahmenreiters und das Inline-Edit-Zubehör. Alles, was eine Karte selbst
 * kann (Kopf, Zähler, Zustand, Hinweis, Aktionen, Fuß), steht NICHT hier.
 *
 * ZWEITE RUNDE 05.09.2026 („hübsche separate Boxen, die nicht aneinanderkleben"):
 * Der Reiter „Maßnahmen" hat KEIN Master/Detail mehr. Oben wählt eine Reihe frei
 * stehender Karten (`VIComponents.chooser`), darunter stehen zwei getrennte Karten
 * nebeneinander (`.gb-ak-duo`), darunter das Soll. Die Einbettungsregeln für
 * `.vi-tbl-md*` sind damit ersatzlos entfallen — die verschiebbare Trennlinie
 * bleibt in VITable und wird von der Ticketliste weiter genutzt.
 *
 * Entfallen mit dem Umbau (nicht wieder anlegen): `.gb-ak-hb*` (Handlungsbedarf =
 * `VIComponents.attentionList`), `.gb-ak-sum*` (Kurzstandzeilen = Fachkarten),
 * `.gb-ak-kv*`/`.gb-ak-det*`/`.gb-ak-hist*` (Maßnahmendetail = DetailCard),
 * `.gb-ak-h3*` (Soll-Überschrift = Kartenkopf), `.gb-tl-i`-Überschreibungen
 * (Zeitleiste = `VIComponents.timeline`), `.gb-ak-1l` (ohne Erzeuger).
 * ═══════════════════════════════════════════════════════════════════════════════ */

/* ── Grundraster: dichter als der Kern-Standard (§37/§69: alles auf 1920 × 1080) ── */
.gb-ak { max-width: var(--content-max-width); gap: var(--space-2); padding-bottom: var(--space-5); }
.gb-ak .vic-eh { margin-bottom: 0; }
/* Ein Reiter trägt mehrere Blöcke (Auswahl · Kartenpaar · Soll). Sie brauchen
   denselben Abstand wie zwei Karten — vorher klebten sie kantenbündig aufeinander. */
.gb-ak-sec { min-width: 0; display: flex; flex-direction: column; gap: var(--space-3); }

/* ── Akten-Navigation: die gemeinsame Reiterleiste, direkt unter dem Kopf ─────
   Optik und Verhalten kommen aus ui-standard.css §3 (.vi-tabs/.vi-tab) und
   vi-components.css §10 („Mehr"-Menü) — hier steht nur die Einbettung.
   Die Leiste scrollt schmal quer und bricht NIE in eine zweite Zeile. */
.gb-ak-nav { min-width: 0; margin-top: calc(-1 * var(--space-1)); }
.gb-ak-panel { min-width: 0; display: flex; flex-direction: column; gap: var(--space-3); }
/* Aktionszeile eines Reiters: keine Überschrift (die steht am Reiter), nur Handlungen. */
.gb-ak-tabacts { display: flex; align-items: center; justify-content: flex-end; gap: var(--space-2); flex-wrap: wrap; min-height: var(--control-h-sm); }

/* ── Übersicht: ZWEI KARTENSTAPEL, kein Kartenraster ──────────────────────────
   Ein Raster gleich hoher Zeilen erzeugt bei unterschiedlich langen Karten genau
   die Leerflächen, die der Umbau abschaffen soll. Links steht die Anlage und ihre
   Arbeit, rechts Vertrag, Zuständigkeit und Chronologie. Unter 1280 px werden
   daraus zwei Stapel untereinander — links zuerst, weil dort das Dringende steht. */
.gb-ak-cols {
  display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
  gap: var(--space-3); align-items: start; min-width: 0;
}
.gb-ak-col { display: flex; flex-direction: column; gap: var(--space-3); min-width: 0; }
@media (max-width: 1279px) { .gb-ak-cols { grid-template-columns: minmax(0, 1fr); } }

/* Eine randlose Liste IN einer Karte: die Karte bringt ihre Polsterung mit,
   die Listenzeilen ziehen sich bis an den Kartenrand (Trennlinien laufen durch). */
.gb-ak-cdlist { margin: calc(-1 * var(--space-3)); }
.vic-cd-b--flush .gb-ak-cdlist { margin: 0; }
.gb-ak-cdrest { margin: var(--space-2) 0 0; font-size: var(--text-xs); color: var(--gray-500); }
.gb-ak-cdrest button { margin: 0; }

.gb-ak-sec-a { display: inline-flex; align-items: center; gap: var(--space-2); flex-wrap: wrap; }
.gb-ak-hint { font-size: var(--text-xs); color: var(--gray-500); }
.gb-ak-more { font-size: var(--text-sm); white-space: nowrap; }
.gb-ak-ctx-sep { color: var(--gray-400); margin: 0 var(--space-1); }
.gb-ak-back { white-space: nowrap; }

/* ── Anlagenstammdaten: Inline-Edit (§39) in der FieldList der Karte ────────── */
.gb-ak .vic-fl-v { line-height: var(--lh-snug); }
.gb-ak .gb-inline-edit { display: inline-flex; align-items: baseline; gap: var(--space-1); max-width: 100%; min-width: 0; }
.gb-ak .gb-inline-edit--1l { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gb-ak .gb-inline-edit:focus-visible { outline: none; box-shadow: var(--focus-ring); border-radius: var(--radius-sm); }
.gb-ak-pen { font-size: var(--text-xxs); color: var(--gray-400); opacity: 0; transition: opacity var(--transition-fast); }
.gb-inline-edit:hover .gb-ak-pen, .gb-inline-edit:focus-visible .gb-ak-pen { opacity: 1; }
.gb-ak-edit { display: inline-block; max-width: 100%; }
.gb-ak .gb-inline-input { font-size: var(--text-sm); background: var(--color-surface); color: var(--gray-900); }
.gb-ak .gb-inline-input:focus { outline: none; border-color: var(--brand-primary); box-shadow: var(--focus-ring); }
.gb-inline-sel { padding-right: var(--space-4); }
.gb-inline-area { height: auto; min-height: 56px; padding: var(--space-1); resize: vertical; }
.gb-inline-err { display: inline-block; margin-left: var(--space-2); font-size: var(--text-xs); color: var(--color-danger-ink); }
#gb-ak-resp { display: inline-flex; align-items: center; gap: var(--space-2); flex-wrap: wrap; max-width: 100%; }
/* Personen-Picker in der Zelle (G-05): nimmt die Zellbreite, Aufklappliste liegt über dem Raster */
.gb-ak-pick { display: block; flex: 1 1 200px; min-width: 0; position: relative; }
.gb-ak-pick .vi-obj-picker-input { font-size: var(--text-sm); }

/* Sammelbestand: Standortbereiche + Einzelstücke — Zeilen, keine Kästen */
.gb-ak-inv { margin-top: var(--space-3); display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-2) var(--space-6); }
.gb-ak-inv-b { min-width: 0; display: flex; flex-direction: column; gap: var(--space-1); }
.gb-ak-inv-h { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-2); }
.gb-ak-inv-t { font-size: var(--text-sm); font-weight: var(--fw-semibold); color: var(--gray-900); }
@media (max-width: 1279px) { .gb-ak-inv { grid-template-columns: minmax(0, 1fr); } }

/* ── Kompakte Listen (Standortbereiche, Einzelstücke) ──────────────────────── */
.gb-ak-list { list-style: none; margin: 0; padding: 0; }
.gb-ak-list-i { display: flex; align-items: baseline; gap: var(--space-2); min-height: 28px; padding: var(--space-1) 0; border-bottom: 1px solid var(--gray-200); min-width: 0; font-size: var(--text-sm); }
.gb-ak-list-i:last-child { border-bottom: 0; }
.gb-ak-list-t { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gb-ak-list-m { color: var(--gray-500); font-size: var(--text-xs); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gb-ak-list-i .vic-fl-act { margin-left: auto; white-space: nowrap; }
.gb-ak-empty { margin: 0; font-size: var(--text-sm); color: var(--gray-500); }
.gb-ak-ok { margin: 0; font-size: var(--text-sm); color: var(--color-success-ink); }

/* ── Maßnahmen: erst wählen, dann zwei getrennte Karten ──────────────────────
   Nutzerentscheidung 05.09.2026 (zweite Runde). Die Reihe der Auswahlkarten kommt
   fertig aus `VIComponents.chooser` — hier steht nur, wie das Gewählte darunter
   liegt: ZWEI gleich breite Karten mit echtem Abstand, links die Vereinbarung,
   rechts die Nachweise. Nicht gleich hoch gezogen (align-items: start): eine
   gestreckte Karte erzeugt genau den Leerraum, den der Umbau abschaffen soll. */
.gb-ak-dev { color: var(--color-warning-ink); }
.gb-ak-wahl { min-width: 0; }
.gb-ak-duo {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: var(--space-3); align-items: start; min-width: 0;
}
.gb-ak-duo:empty { display: none; }
/* Unter 1280 px stehen die beiden Karten untereinander — die Angaben zuerst. */
@media (max-width: 1279px) { .gb-ak-duo { grid-template-columns: minmax(0, 1fr); } }

/* ── Soll laut Fachkatalog (§66/§76): fehlend · zu prüfen · entschieden (ausgegraut) ── */
.gb-ak-soll-wrap { margin-top: var(--space-3); }
.gb-ak-soll { list-style: none; margin: 0; padding: 0; }
.gb-ak-soll-i { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: var(--space-1) var(--space-4); align-items: center; padding: var(--space-1) 0; border-bottom: 1px solid var(--gray-100); min-height: 32px; }
.gb-ak-soll-i:last-child { border-bottom: 0; }
.gb-ak-soll-i.is-decided { color: var(--gray-500); }
.gb-ak-soll-i.is-decided .gb-ak-soll-n { color: var(--gray-600); }
.gb-ak-soll-tx { display: flex; flex-direction: column; gap: 0; min-width: 0; }
.gb-ak-soll-n { font-size: var(--text-sm); font-weight: var(--fw-medium); color: var(--gray-900); }
.gb-ak-soll-m, .gb-ak-soll-r { font-size: var(--text-xs); color: var(--gray-500); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gb-ak-soll-st { white-space: nowrap; }
.gb-ak-soll-a { display: inline-flex; gap: var(--space-2); white-space: nowrap; }
.gb-ak-soll-a:empty { display: none; }

/* ── Verlauf: „mehr" als leiser Knopf unter der Zeitleiste ─────────────────── */
.gb-tl-more { margin: var(--space-2) 0 0; }

/* ── Fokus-Hervorhebung (?fokus=…): zwei Sekunden, dann Ruhe ───────────────── */
.gb-ak-focus { box-shadow: 0 0 0 2px var(--brand-primary); border-radius: var(--radius-sm); transition: box-shadow var(--transition-slow); }
tr.gb-ak-focus > .vi-tbl-td { box-shadow: inset 0 0 0 2px var(--brand-primary); }
tr.gb-ak-focus { box-shadow: none; }

/* ── Zwischenbreiten und Mobil ─────────────────────────────────────────────── */
@media (max-width: 1280px) {
  /* Der Titel bleibt lesbar: die Kopfaktionen rücken auf eine eigene Zeile, statt ihn zu kürzen. */
  .gb-ak .vic-eh-top { flex-wrap: wrap; }
  .gb-ak .vic-eh-acts { margin-left: 0; width: 100%; }
}
@media (max-width: 767px), (max-height: 540px) and (pointer: coarse) {
  .gb-ak { gap: var(--space-3); }
  .gb-ak-cols, .gb-ak-col { gap: var(--space-2); }
  .gb-ak-soll-i { grid-template-columns: minmax(0, 1fr); }
  .gb-ak-soll-st, .gb-ak-soll-a { justify-self: start; }
  .gb-ak-list-i { flex-wrap: wrap; }
  .gb-ak-list-m { white-space: normal; }
  /* Kartenaktionen sind mobil vollwertige Ziele — sie stapeln, statt zu schrumpfen. */
  .gb-ak .vic-cd-a { width: 100%; }
  .gb-ak .vic-cd-a > .btn-primary, .gb-ak .vic-cd-a > .btn-secondary, .gb-ak .vic-cd-a > .btn-ghost { flex: 1 1 auto; min-height: var(--control-h-md); }
}
