/* Valach System (VS) v2 — EGYSÉGES ÜZENET-HELY + a közös apró-osztályok (NOT-01, D-VS-434).

   OPERÁTORI KÖTÉS (2026-08-19): „legyen az ilyen üzeneteknek egy egységes felugró ablakos, vagy egy
   külön kijelölt notification hely … ez vonatkozik az összes üzenet/hibaüzenetre VS szinten!!!!"

   ITT CSAK TOKENEK szerepelhetnek (a design-token őr ezt méri) — új szín, új sugár nem születik,
   a meglévő palettát használjuk.

   A második fele azokat a KÖZÖS apró-osztályokat öltözteti, amiket a felületek régóta használnak
   (`vs-note`, `vs-blocker`, `vs-pre`), de amiknek eddig SEHOL nem volt szabályuk — ezért néztek ki
   nyers szövegként, és ezért nyomta szét a hosszú válasz a táblázatot. */

/* ── az üzenet-sávok helye: jobb felül, a tartalom fölött ─────────────────────────────────────── */
.vs-notify-host {
  position: fixed; top: .75rem; right: .75rem; z-index: 90;
  display: flex; flex-direction: column; gap: .5rem;
  width: min(26rem, calc(100vw - 1.5rem)); pointer-events: none;
}
.vs-notify {
  pointer-events: auto;
  background: var(--vs-surface); border: 1px solid var(--vs-border); border-left-width: 4px;
  border-radius: var(--vs-radius); box-shadow: var(--vs-shadow-md);
  padding: .5rem .6rem;
}
.vs-notify-head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.vs-notify-close {
  border: none; background: transparent; color: var(--vs-muted);
  font-size: 1.1rem; line-height: 1; padding: 0 .2rem;
}
.vs-notify-msg { margin: .3rem 0 .2rem; color: var(--vs-ink); overflow-wrap: anywhere; }
/* HOL keletkezett — saját soron, tagolva, tördelve (nem ömlesztve a cím mellé) */
.vs-notify-where {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem .35rem;
  margin: .15rem 0 .1rem; color: var(--vs-muted); font-size: .85em;
}
.vs-notify-sep { color: var(--vs-border-strong); }
.vs-notify-foot {
  display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .4rem;
  margin-top: .35rem; padding-top: .3rem; border-top: 1px solid var(--vs-border);
}
.vs-notify-when { color: var(--vs-muted); font-size: .82em; font-variant-numeric: tabular-nums; }
.vs-notify-info  { border-left-color: var(--vs-accent); }
.vs-notify-ok    { border-left-color: var(--vs-ok);   background: var(--vs-ok-weak); }
.vs-notify-warn  { border-left-color: var(--vs-warn); background: var(--vs-warn-weak); }
.vs-notify-error { border-left-color: var(--vs-bad);  background: var(--vs-bad-weak); }

/* ── a RÉSZLETEK a közös modálisban (editor-modal burok) ──────────────────────────────────────── */
.vs-notify-detail h3 { margin: 0 0 .5rem; }
.vs-notify-pre {
  max-height: 60vh; overflow: auto; margin: 0 0 .6rem;
  background: var(--vs-surface-2); border: 1px solid var(--vs-border); border-radius: var(--vs-radius-sm);
  padding: .5rem .6rem; font: 12px/1.45 var(--vs-mono); white-space: pre-wrap; overflow-wrap: anywhere;
}

/* ── KÖZÖS APRÓ-OSZTÁLYOK — eddig SEHOL nem voltak öltöztetve ─────────────────────────────────── */
.vs-note { color: var(--vs-muted); font-size: .92em; }
.vs-blocker { color: var(--vs-bad); }
/* A hosszú gépi szöveg SOHA ne nyújtsa meg a szülőjét: saját görgetője van. Ez az a szabály, aminek
   a hiánya miatt a válasz „óriásivá" nyomta a szinkron-táblát. */
.vs-pre {
  display: block; max-width: 100%; max-height: 18rem; overflow: auto; margin: .3rem 0;
  background: var(--vs-surface-2); border: 1px solid var(--vs-border); border-radius: var(--vs-radius-sm);
  padding: .4rem .5rem; font: 12px/1.4 var(--vs-mono); white-space: pre-wrap; overflow-wrap: anywhere;
}

/* ── ÖSSZERENDELÉS-TÁBLA — EGY alak minden fajtára (a duplikáció-tiltás felületi alakja) ───────── */
.vs-maptable { table-layout: fixed; width: 100%; }
.vs-maptable td, .vs-maptable th { vertical-align: top; overflow-wrap: anywhere; }
.vs-maptable .vs-map-c-flag { width: 5.5rem; text-align: center; }
.vs-maptable .vs-map-c-msg { width: 12rem; }
.vs-maptable select, .vs-maptable input[type="text"] { max-width: 100%; }
/* a párosítás állapota egy szó, nem mondat — a sor ne nőjön tőle */
.vs-map-state { color: var(--vs-muted); font-size: .92em; }
.vs-map-summary { font-weight: 400; }
.vs-map-note { margin: .2rem 0 .4rem; }
.vs-map-gone { color: var(--vs-muted); text-decoration: line-through; }
.vs-map-notemark { color: var(--vs-warn); cursor: help; font-weight: 700; }

/* ── SZINKRON TÁBLA: a JELEK (D-VS-436) ──────────────────────────────────────────────────────────
   Operátori kérés: „legyen kiszürkítve az a mező, ami nem releváns · pirosítva az, ami még nincs kész
   · ami kattintható, az működjön is · hagyjuk el a fölösleges szövegeket … max a mező fölé menve
   jöjjenek fel tooltip-el az üzenetek". A magyarázat MINDENÜTT `title`, a cellában csak jel áll. */
.vs-acx-synctable td, .vs-acx-synctable th { padding: .3rem .45rem; vertical-align: middle; }
.vs-acx-synctable { font-size: .95em; }
.vs-cell-off { background: var(--vs-surface-2); color: var(--vs-muted); text-align: center; cursor: help; }
.vs-cell-todo { background: var(--vs-bad-weak); text-align: center; cursor: help; }
/* a letiltott pipa is LÁTHATÓ maradjon (ne halványuljon el teljesen) — az állapotot mutatja */
.vs-cell-off input[type="checkbox"], .vs-cell-todo input[type="checkbox"] { opacity: .75; }
.vs-cell-pick { margin-left: .3rem; }
/* ── A PIPA, AMI MA NEM KAPU (D-VS-480) ──────────────────────────────────────────────────────────
   Operátori lelet: „mi értelme van, ha nem működik … majd a tenant-ok fognak szólni". 19 kapcsolóból
   6-nak van valódi olvasója; a többi elmentődik és semmit nem billent. A pipa MARAD (előre-beállítás
   a jövendő automata-futtatónak), de LÁTSZANIA kell, hogy ma nem kapu — a tooltip mondja meg, miért. */
.vs-cell-nogate { background: var(--vs-surface-2); cursor: help; }
.vs-cell-nogate input[type="checkbox"] { opacity: .6; }
.vs-cell-nogate::after {
  content: '⚑'; margin-left: .25rem; color: var(--vs-muted); font-size: .85em;
}

/* ── KÉTFÉLE VÁLASZTÁS EGY LISTÁN (D-VS-446) ─────────────────────────────────────────────────────
   Operátori kötés: „kétféleképpen lehessen választani. checkboxos listából választva / vagy minden
   újat (amit még nem töltött le)". A két mód EGY sorban áll, hogy a választás egy pillantás legyen. */
.vs-pickmode { display: flex; flex-wrap: wrap; gap: .9rem; margin: .3rem 0 .5rem; }
.vs-pickmode-opt { cursor: pointer; }

/* ── TENNIVALÓ ÉS KÉSZ: KÉT CSOPORT EGY TÁBLÁZATBAN (D-VS-449) ───────────────────────────────────
   Operátori lelet: „minden sor elején checkbox becheckolva…" — 18 egyforma pipa EGY listában akkor is
   munka-listának olvasódik, ha a jobb szélen ott az állapot. A csoport-fejléc az ELSŐ pillantás. */
.vs-map-group td {
  background: var(--vs-surface-2); color: var(--vs-ink);
  font-size: .85em; font-weight: 600; letter-spacing: .02em;
  padding: .35rem .5rem; border-top: 1px solid var(--vs-border-strong);
}
.vs-map-group-done td { color: var(--vs-muted); font-weight: 400; }
/* a „SOHA" csoport LÁTSZIK, és látszik rajta, hogy kivétel — de nem tűnik el (D-VS-455) */
.vs-map-group-never td { color: var(--vs-warn); font-weight: 400; background: var(--vs-warn-weak); }
/* a KÉSZ sorok halkabbak — de olvashatók maradnak (nem kikapcsolt sorok, csak nincs velük teendő) */
.vs-map-donerow td { color: var(--vs-muted); }

/* ── A KÖZÖS SOR-VÁLOGATÓ (SRP-01, D-VS-450) — ugyanaz az alak a letöltésen és a feltöltésen ───── */
.vs-picker-bar {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: .6rem;
  margin: .1rem 0 .5rem; padding-bottom: .35rem; border-bottom: 1px solid var(--vs-border);
}
.vs-picker-count { color: var(--vs-muted); font-size: .9em; font-variant-numeric: tabular-nums; }
.vs-picker-table { margin-top: .2rem; }

/* ── EMBERI JELENTÉS a próbákhoz (SRP-02, D-VS-462) — a mondat elöl, a nyersanyag hátul ─────────── */
.vs-report-head { margin: 0 0 .5rem; font-size: 1.02em; font-weight: 600; color: var(--vs-ink); }
.vs-report-lines { margin: 0 0 .6rem; padding-left: 1.1rem; color: var(--vs-ink); }
.vs-report-lines li { margin-bottom: .25rem; }
.vs-report-table { margin-bottom: .6rem; }
.vs-report-raw > summary { cursor: pointer; color: var(--vs-muted); font-size: .9em; margin-bottom: .3rem; }
/* a TÉTELES listák behúzva, saját címmel és görgetővel — a hosszú lista ne nyomja szét az ablakot */
.vs-report-more { margin-bottom: .5rem; }
.vs-report-more > summary { cursor: pointer; font-weight: 600; font-size: .92em; margin-bottom: .35rem; }
.vs-report-scroll { max-height: 22rem; overflow: auto; border: 1px solid var(--vs-border); border-radius: var(--vs-radius-sm); }

/* ── KÉZI CSALÁDI RENDRAKÁS (D-VS-481) — a kinevező ablak ────────────────────────────────────────
   Operátori kérés: „látnánk az összes gyerek arra a mezőre vonatkozó értékeit úgy, hogy a
   különbségek jelölve lennének". A szöveget SZÖVEGKÉNT mutatjuk (nem bolti HTML-ként) — az
   összehasonlításhoz az a hasznos, és így idegen jelölés sem futhat be a felületbe. */
.vs-promote { min-width: min(52rem, 90vw); }
.vs-promote-list { display: flex; flex-direction: column; gap: .6rem; margin: .5rem 0; }
.vs-promote-item {
  border: 1px solid var(--vs-border); border-radius: var(--vs-radius-sm);
  padding: .5rem .6rem; background: var(--vs-surface);
}
.vs-promote-picked { border-color: var(--vs-ok); background: var(--vs-ok-weak); }
.vs-promote-head { display: flex; align-items: baseline; gap: .3rem; cursor: pointer; margin-bottom: .35rem; }
.vs-diff {
  max-height: 14rem; overflow: auto;
  font: 12px/1.5 var(--vs-mono); white-space: pre-wrap; overflow-wrap: anywhere;
  background: var(--vs-surface-2); border-radius: var(--vs-radius-sm); padding: .4rem .5rem;
}
/* a KÜLÖNBSÉG jelölve — a többi szöveg halkabb, hogy az eltérés ugorjon ki */
.vs-diff-mark { background: var(--vs-warn-weak); color: var(--vs-ink); font-weight: 600; }
.vs-diff-all { border-left: 3px solid var(--vs-warn); }

/* ── AZ ÍRÁS-ZÁR SÁVJA (D-VS-456) — panel-szintű tény, panel-szintű helyen ──────────────────────── */
.vs-lockbar {
  margin: .2rem 0 .5rem; padding: .4rem .55rem;
  background: var(--vs-bad-weak); border: 1px solid var(--vs-bad); border-radius: var(--vs-radius-sm);
}
/* ami tooltipet hordoz, azt jelezzük is — különben nem derül ki, hogy van mit megnézni */
.vs-acx-synctable td[title] { cursor: help; }
.vs-notify-bell { margin-left: auto; }
.vs-notify-logrow { margin-bottom: .4rem; }

/* ── TENANT-ŐRJÁRAT TÁBLA (PTR-01, D-VS-503) ─────────────────────────────────────────────────────
   Operátori kötés: „Készüljön az őrjárathoz egy olyan felület, mint a board". Rács: soronként CÉG,
   oszloponként MÉRÉS. A JEL mellett mindig ott a SZÓ — a szín önmagában nem üzenet (a11y + KUKA-012). */
.vs-patrol-head { display: flex; align-items: baseline; justify-content: space-between; gap: .6rem; }
.vs-patrol-table { width: 100%; }
.vs-patrol-table th, .vs-patrol-table td { vertical-align: top; padding: .35rem .45rem; }
.vs-patrol-cell { text-align: center; min-width: 7.5rem; }
.vs-patrol-ok   { background: var(--vs-ok-weak); }
.vs-patrol-bad  { background: var(--vs-bad-weak); }
.vs-patrol-info { background: var(--vs-surface-2); }
.vs-patrol-none { background: var(--vs-warn-weak); }
.vs-patrol-th { margin-top: .25rem; font-size: .82em; color: var(--vs-muted); }
.vs-patrol-input { width: 4.5rem; max-width: 100%; }
.vs-patrol-detail {
  margin-top: .8rem; padding: .6rem .7rem;
  border: 1px solid var(--vs-border); border-left-width: 4px; border-radius: var(--vs-radius-sm);
  background: var(--vs-surface);
}
.vs-patrol-state { font-weight: 600; margin: .2rem 0 .4rem; }
/* A TE MONDATOD kiemelten — ez az, amit el kell olvasni; a fejlesztői külön nyílik. */
.vs-patrol-hu { margin: .2rem 0 .5rem; color: var(--vs-ink); }
.vs-patrol-more > summary { cursor: pointer; color: var(--vs-muted); font-size: .9em; margin-bottom: .3rem; }

/* AZ ŐRJÁRAT TÉTEL-LISTÁJA (D-VS-552) — 65 sorral a panel nem tolhatja el az oldalt: a lista SAJÁT
   görgetőt kap, a magassága rögzített. A másoló-sáv alatta áll, hogy a lista végét ne kelljen
   megkeresni. */
.vs-patrol-items { max-height: 22rem; overflow-y: auto; border: 1px solid var(--vs-border); border-radius: var(--vs-radius-sm); padding: .4rem .4rem .4rem 1.4rem; }
.vs-patrol-itembar { display: flex; gap: .5rem; align-items: center; margin: .4rem 0 .2rem; flex-wrap: wrap; }
.vs-patrol-copyfallback { width: 100%; font-family: monospace; font-size: .85em; }

/* A SÚLY ÉS A TUDOMÁSUL-VÉTEL JELEI (D-VS-555) — a szín mellett mindig ott a SZÓ is (KUKA-012). */
.vs-patrol-sev { font-size: .85em; font-weight: 600; margin: .1rem 0 .3rem; }
.vs-patrol-sev-critical { color: var(--vs-bad); }
.vs-patrol-sev-warn { color: var(--vs-warn); }
.vs-patrol-sev-info { color: var(--vs-muted); }
.vs-patrol-newbadge { color: var(--vs-bad); font-weight: 700; }
.vs-patrol-item-new, .vs-patrol-item-changed { margin-right: .4rem; font-size: .8em; padding: 0 .3rem; border-radius: var(--vs-radius-sm); }
.vs-patrol-item-new { color: var(--vs-bad); border: 1px solid var(--vs-bad); }
.vs-patrol-item-changed { color: var(--vs-warn); border: 1px solid var(--vs-warn); }
.vs-patrol-item-acked { color: var(--vs-muted); }
.vs-patrol-fix { margin-left: .5rem; font-size: .85em; }

/* A ragadós első oszlop + a fejléc-gomb szabálya a system.css-ben él (SYP05: a rendszer-fülek
   öltözetének EGY otthona van — oda költözött, hogy a mérő lássa). */

/* A KÖZÖS HIBA-LISTA az Őrjárat oldalba ágyazva (D-VS-561): a lista maga a KÖZÖS gépezet (a termék/
   partner-listák eszköztára + rácsa) — saját szűrő-sáv/lapozó stílus itt SZÁNDÉKOSAN nincs (KUKA-055);
   a befogadó (.vs-patrol-itemshost) öltözete a system.css-ben él (SYP05 otthona). */
.vs-editor-navstrip { display: flex; gap: .6rem; align-items: center; margin: .2rem 0 .5rem; }
.vs-editor-navpos { color: var(--vs-muted); font-size: .9em; }
