/* valos/valos.css — a valós réteg saját elemei (a csomag CSS-e változatlan). */
.valos-tolt{padding:40px 24px;color:var(--ink-2);font:500 13px var(--mono)}
.valos-tolt.hiba{color:var(--crit-t)}

/* ── A 8 MUNKAÁLLOMÁS-KÁRTYÁS BELÉPŐ (2026-09-17) ──────────────────────────────────────────────────
   A csomag `.prof` rácsa 3 oszlopos (valtozat_ac.css:166) és 560 px alatt 1 oszlop, sor-elrendezésű
   kártyával (:188). Ha a rácsban 4-nél több kártya van (a SH78_BELEPO 8-a), itt 4×2-re tördelünk,
   400 px-en 2×4-re. A `:has()` miatt nem kell az app.js markupját bővíteni; a csomag 3 kártyájánál
   (régi gateway) ez a blokk nem szól. */
.auth .box:has(.prof > button:nth-child(4)){width:min(920px,100%)}
.auth .prof:has(> button:nth-child(4)){grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.auth .prof:has(> button:nth-child(4)) button{padding:14px 10px;gap:6px;min-height:150px;justify-content:flex-start}
.auth .prof:has(> button:nth-child(4)) button .avatar{width:40px;height:40px;font-size:20px;line-height:1}
.auth .prof:has(> button:nth-child(4)) button b{font-size:14px;line-height:1.25}
.auth .prof:has(> button:nth-child(4)) button>span:not(.avatar){font-size:12px;line-height:1.35;color:var(--ink-2)}
@media (max-width:760px){
  .auth .prof:has(> button:nth-child(4)){grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:560px){
  /* a csomag 560-as szabálya sor-elrendezésre váltana (1 oszlop) — 8 kártyánál 2×4 marad, oszlopos kártyával */
  .auth .prof:has(> button:nth-child(4)){grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .auth .prof:has(> button:nth-child(4)) button{flex-direction:column;text-align:center;padding:12px 8px;min-height:0}
  .auth .prof:has(> button:nth-child(4)) button .avatar{width:34px;height:34px;font-size:17px}
  .auth .box:has(.prof > button:nth-child(4)){padding:18px 14px}
}

/* ── SZÁMLA IRAT-LAP: csatolmány + tételsorok/kontír-dimenziók (2026-09-18) ────────────────────────────────────
   Kétosztatú 1440 px-en (bal: csatolmány + kivonat · jobb: tételsorok + egyezőség + lekönyvelhető), egymás alatt
   1100 px alatt (a 400 px-es nézetben is). A 12 oszlopos tábla és a bontás-tábla vízszintesen görgethető. Színek
   CSAK a csomag tokenjeiből (aigent-tokens: --ok/--warn/--crit/--info + aurora p1–p3); új szín nincs. */
/* 2026-09-18 este (ügyvezetői kép-tény): a tételsor-tábla a BAL (Adatok) oszlopba, az Előnézet marad jobbra, a PDF a kép helyén */
#vs-tetel,#vs-egyez,#vs-lek{margin-top:14px}
.valos-pdf-frame{width:100%;height:560px;border:1px solid var(--line);border-radius:var(--r-s);background:var(--surface-2)}
.valos-pdf-var{min-height:200px;display:grid;place-items:center;text-align:center;color:var(--ink-3)}
.valos-kivonat{margin-top:10px}
.valos-kivonat-pre{max-height:320px;overflow:auto;white-space:pre-wrap;font:12px/1.45 var(--mono);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-s);padding:10px;margin:8px 0 0}
/* ⚠ A CSÚSZKA VALÓDI OKA (2026-09-28): `min-width:1180px` volt BEÉGETVE a táblára, és a
   burok `overflow:auto`-val görgetett. A csempe a jobb oldali oszlopban ennél keskenyebb,
   ezért MINDIG megjelent a vízszintes csúszka — függetlenül az ablak szélességétől.
   Ezért nem fogta meg a rács-mérésem: az a BONTÁST mérte, ez a TÉTELSOR-tábla.
   Ügyvezetői előírás: „ennek egybe kell látszódnia" · „inkább a csempe bukjon be a
   nézet alá" — tehát a lap görgessen függőlegesen, a csempe ne vízszintesen. */
.valos-tetel-wrap{overflow:visible;max-width:100%}
.valos-tetel{min-width:0}
/* ⚠ A RAGADÓ FEJLÉC ELTÁVOLÍTVA (2026-09-29) — SAJÁT REGRESSZIÓM JAVÍTÁSA.
   A `position:sticky` a legközelebbi GÖRGETHETŐ ős dobozához tapad. 2026-09-28-án a
   `.valos-tetel-wrap`-ot `overflow:auto`-ról `overflow:visible`-re állítottam (a csempén
   belüli csúszka megszüntetéséhez) — ezzel a fejléc-sor ELVESZTETTE a görgető tárolóját,
   és a KÉPERNYŐHÖZ tapadt: ott lebegett a tábla fölött, ÁTFEDVE a fölötte álló kártya
   tartalmát. Az ügyvezető 15:28-as fotóján épp a „Bontás" OSZLOPFEJLÉC fedi a
   „Mért adat · forrásból kinyert · bizonyosság" pirulát — ez ugyanez.
   Görgető tároló nélkül a ragadás értelmetlen, ezért kivéve, nem visszaállítva. */
.valos-tetel th{background:var(--surface)}
.valos-tetel td{padding:5px 6px;vertical-align:top}
/* ugyanez az összesítő sorra: ragadva a képernyő aljára fedné az alatta álló kártyát */
.valos-tetel tfoot td{background:var(--surface-2);font-weight:600;border-top:1px solid var(--line-2)}
.valos-tetel input,.valos-tetel select,.valos-bontas-tbl input,.valos-bontas-tbl select{width:100%;min-width:64px;padding:5px 7px;border:1px solid var(--line-2);border-radius:6px;background:var(--surface);font-size:13px;border-left-width:3px}
.valos-tetel input.valos-megnev{min-width:0}   /* H-D 2026-09-29: volt 220px — lásd lent */
.valos-tetel input.num,.valos-bontas-tbl input.num{font-family:var(--mono);text-align:right;min-width:0}   /* H-D: volt 88px */
.valos-tetel [data-eredet="forrasbol"],.valos-bontas-tbl [data-eredet="forrasbol"]{border-left-color:var(--p1)}
.valos-tetel [data-eredet="szamitott"]{border-left-color:var(--p2)}
.valos-tetel [data-eredet="ember_javitotta"]{border-left-color:var(--ok-line)}
.valos-tetel [data-eredet="hianyzik"]{border-left-color:var(--warn-line);background:var(--warn-bg)}
.valos-tetel [aria-invalid="true"],.valos-bontas-tbl [aria-invalid="true"],#vs-fej [aria-invalid="true"]{border-color:var(--crit-t)!important}
.valos-zarolt,.valos-zarolt-mezo input,.valos-zarolt-mezo select{background:var(--surface-3)!important;color:var(--ink-3);cursor:not-allowed;border-left-color:var(--line-2)!important}
.valos-bizonytalan>td{background:var(--warn-bg)}
.valos-sor-hiba>td{box-shadow:inset 3px 0 0 var(--crit-t)}
.valos-bontas>td{background:var(--surface-2);padding:6px 6px 8px 28px}
.valos-bontas-tbl{min-width:1420px}
.valos-bontas-tbl th{font-size:11px;padding:6px}
.valos-bontas-tbl td{padding:4px 6px;border-bottom:0}
.valos-bontas-ossz td{font-family:var(--mono);font-size:12.5px;padding-top:8px;border-top:1px solid var(--line-2)}
.valos-bontas-ossz td.ok{color:var(--ok-t)}
.valos-bontas-ossz td.crit{color:var(--crit-t)}
.valos-bontas-ossz td.na{color:var(--ink-3)}
.valos-elteres{font-weight:600}
.valos-fk{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
/* A KONTÍR-JAVASLAT TÁMASZA (2026-09-26) — ügyvezetői döntés: a gép javasol, az EMBER dönt.
   Ha a jóváhagyó nem látja, mire alapoz a gép (hány tételből, milyen forrásból, mekkora
   bizonyossággal), akkor nem dönt, hanem elfogad. Ezért a szám LÁTHATÓ, nem tooltipben ül. */
.valos-jav-tamasz{font-family:var(--mono,ui-monospace,monospace);font-size:11px;white-space:nowrap;cursor:help}
/* A gyenge javaslat (≤60%) nem bátorít — a réteg saját „gyenge javaslat" fokozatával egyezik. */
.valos-jav-gyenge{color:var(--warn)}

.valos-fk input{min-width:110px;flex:1}
.valos-tetel-lab{display:flex;gap:10px;align-items:center;margin-top:10px;flex-wrap:wrap}
/* ⚠ A TÁVTARTÓ HOLT VOLT: a lábléc `<span class="grow">`-ot használ, de általános
   `.grow{flex:1}` szabály NINCS — csak `.rectb .grow` és `.toolbar .grow`. A span így
   nulla szélességű, és az állás-szöveg + Mentés a „+ sor" gombhoz tapadt balra. */
.valos-tetel-lab .grow{flex:1}
.valos-allas{font:500 12px var(--mono);color:var(--ink-3)}
.valos-allas.ok{color:var(--ok-t)}
.valos-allas.crit{color:var(--crit-t)}
.valos-allas.warn{color:var(--warn-t)}
.valos-egyezoseg{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:var(--r-s);border:1px solid var(--line);background:var(--surface-2);font-size:13px}
.valos-egyezoseg.ok{background:var(--ok-bg);border-color:var(--ok-line);color:var(--ok-t)}
.valos-egyezoseg.crit{background:var(--crit-bg);border-color:var(--crit-line);color:var(--crit-t)}
.valos-egyezoseg.na{border-style:dashed}
.valos-egyezoseg svg.ic{flex:none;margin-top:1px}
.valos-egyezoseg .num{font-family:var(--mono);font-weight:600}
#vs-fej .valos-kontir-mezo label .tag{font-size:10.5px}
#vs-fej .field label .chip{font-size:10.5px;padding:0 6px}
@media (max-width:1100px){.valos-pdf-frame{height:480px}}
@media (max-width:560px){.valos-pdf-frame{height:360px}.valos-tetel-wrap{max-height:none}.valos-tetel-lab{gap:6px}}
.valos-szakasz{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.valos-szakasz-hiba{flex-basis:100%}
.valos-hianylista{margin:4px 0 0 18px;padding:0;font-size:12.5px;color:var(--crit-t)}
.valos-hianylista li{margin:2px 0}
.valos-elonezet-kartya .valos-kivonat{margin-top:10px}

/* ═══ BONTÁS: TÖRDELŐ RÁCS A SZÉLES TÁBLA HELYETT (2026-09-28) ═══════════════════════
   ⚠ MÉRT BAJ (képernyőfotó 09-28 20:01): a bontás 11 OSZLOPA vízszintesen görgetett, a
   szélső mezők levágva. Ügyvezetői előírás: „ennek egybe kell látszódnia" ·
   „inkább a csempe bukjon be a nézet alá".
   A rács FÜGGŐLEGESEN nő: `auto-fill` + `minmax` — szűk nézeten kevesebb oszlop, de
   vízszintes görgetés SOHA. A `minmax` alsó határa (190px) a leghosszabb címkéhez
   igazodik („Szakág / költséghely"), hogy a felirat ne törjön szét. */
.valos-bontas-blokk{display:flex;flex-direction:column;gap:10px;padding:10px 0;max-width:100%;overflow-x:hidden}
.vb-kartya{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--surface)}
.vb-fej{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.vb-sorszam{font-family:var(--mono,ui-monospace,monospace);font-size:11px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em}
.vb-racs{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px 12px}
.vb-mezo{display:flex;flex-direction:column;gap:3px;min-width:0}
.vb-cimke{font-size:10.5px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* ⚠ `min-width:0` + `width:100%`: enélkül az input a saját alapértelmezett szélességével
   feszítené szét a rács-cellát, és a görgetés VISSZATÉRNE — a rács önmagában nem véd. */
.vb-mezo input,.vb-mezo select{width:100%;min-width:0;box-sizing:border-box}
/* A főkönyvi mező a legtartalmasabb (input + javaslat-gomb + támasz): kapjon két hasábot,
   ha van hely — de szűk nézeten visszaesik egyre. */
.vb-fokonyvi_szam{grid-column:span 2}
@media(max-width:560px){.vb-fokonyvi_szam{grid-column:span 1}}
.vb-ossz{margin-top:2px}

/* ═══ A TÉTELSOR-TÁBLA NE GÖRGESSEN VÍZSZINTESEN (2026-09-28) ════════════════════════
   ⚠ SAJÁT HIBA, MÉRÉSSEL ELFEDVE. A bontást ráccsá alakítottam és 7 szélességen 0
     túllógást mértem — de a mérésem SZINTETIKUS rácsot nézett, nem a Tételsorok
     csempét. A csúszka a `.tblwrap{overflow-x:auto}` burokból jött, a 10 oszlopos
     (+ sorszám + gombok = 12) tételsor-táblán, amihez hozzá sem nyúltam.
     Az ügyvezető a 20:42-es fotón bejelölte — és mellé azt is, hogy a bal oldalon
     SZÉLES ÜRES TERÜLET áll kihasználatlanul.

   A megoldás itt NEM rács: a tételsorok ÖSSZEHASONLÍTHATÓ sorok, a táblázat a helyes
   forma. Ehelyett a tábla KITÖLTI a szélességet (`width:100%`), az oszlopok arányosan
   osztoznak (`table-layout:fixed`), és a hosszú szöveg TÖRIK, nem feszít. */
.valos-tetel-wrap{overflow-x:visible;max-width:100%}
.valos-tetel{width:100%;table-layout:fixed}
/* ⚠ A NEM-ZSUGORODÓ OSZLOPOK SZÉLESSÉGE KIMONDVA (2026-09-29) — SAJÁT REGRESSZIÓ.
   A `table-layout:fixed`-et 2026-09-28-án én tettem be (a csúszka ellen), az inputokra
   pedig `min-width:64px` van. Fix elrendezésnél a böngésző NEM a tartalomból számol:
   a 10 input-oszlop elviszi a helyet, és az utolsó kettőnek — `Eredet` (nowrap pirula)
   és `Bontás` (gomb) — MÉRVE 12 px maradt, miközben a tartalmuk 48 és 62 px. Ezek nem
   tudnak zsugorodni, ezért KILÓGTAK a cellájukból (41 px) és EGYMÁSRA CSÚSZTAK (35 px).
   Az ügyvezető 15:28-as fotóján pontosan ez a pár látszik: „gépi" ⟷ „Bontás".
   Fix elrendezésnél az első sor cellaszélességei döntenek — ezért a `th`-kon mondjuk ki. */
.valos-tetel th:first-child{width:32px}
.valos-tetel th:nth-last-child(2){width:140px}   /* Eredet — a pirula ide szorul, ellipszissel */
.valos-tetel th:last-child{width:175px}          /* Bontás (n) + Törlés — MINDKETTŐ nowrap, mérve 165 px */

/* ⚠ A PIRULA NEM TUD ZSUGORODNI, ÉS EZ VOLT A VALÓDI ÁTFEDÉS-OK (2026-09-29).
   Az `eredet` MEZŐNKÉNTI objektum, és a pirula FELSOROLJA a hiányzó mezőneveket
   („gépi · hiányzik: Megnevezés, Menny., Egységár…"), tehát a szélessége a sor
   TARTALMÁTÓL függ. Valódi adatlapon mérve: 345 · 306 · 509 px — egy 88 px-es
   cellában. A `.chip` `white-space:nowrap`, ezért KILÓGOTT (264–427 px) és RÁCSÚSZOTT
   a szomszéd cella gombjaira (átfedés 258–433 px, MIND a három soron).
   ⚠ Az oszlop szélesítése ezt NEM oldja meg: 500 px-et nem lehet adni. A pirula
   szövege viszont TELJES EGÉSZÉBEN ott van a `title`-ben (a `sorChip` mezőnként
   kiírja), tehát a látható alak rövidülhet — információ nem vész el.
   ⚠ A `.chip` `inline-flex`, azon az ellipszis nem hat; ezért a BELSŐ szöveget kell
   zsugoríthatóvá tenni (`min-width:0` + `overflow:hidden`) a pirulán belül. */
.valos-tetel td[data-chip]{overflow:hidden}
.valos-tetel td[data-chip] .chip{max-width:100%;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-block}
.valos-tetel td[data-chip] .chip svg{display:none}   /* az ikon helye is a szövegé */
/* A megnevezés kapja a maradékot, a számoszlopok szűkek és jobbra zártak. */
.valos-tetel th,.valos-tetel td{overflow-wrap:anywhere;word-break:break-word}
.valos-tetel input,.valos-tetel select{width:100%;min-width:0;box-sizing:border-box}
/* ⚠ H-D (2026-09-29, MÉRT) — A FENTI `min-width:0` SZÁNDÉKA HELYES VOLT, DE NEM ÉRT CÉLT.
   Két KORÁBBI, de SPECIFIKUSABB szabály legyőzte: `.valos-tetel input.valos-megnev`
   (220px) és `.valos-tetel input.num` (88px) — mindkettő (0,2,1) fajsúlyú, ez a nullázó
   csak (0,1,1). A CSS-ben a későbbi szabály csak AZONOS fajsúlynál nyer, ezért a
   zsugorítás pont azokon az oszlopokon nem hatott, amelyek a bajt okozták.
   A tábla `table-layout:fixed`, tehát a cella nem tágult ki — a MEZŐ lógott ki BELŐLE,
   rá a szomszédjára. Az ügyvezető ezt „egymásba lógnak a tömbök"-ként látta.
   MÉRVE (valódi CSS, kinyitott bontás-blokkal, csempe-szélességre):
     1512 px: 7 kilógó mező · legnagyobb 139 px · 6 egymásra lógó pár
     1280 px: 7 · 162 px · 6        1024 px: 7 · 188 px · 6
   ⚠ A SZŰK KERESZTMETSZET A CSEMPE, NEM AZ ABLAK — ezért 1512 px-en is túllóg, és ezért
     NEM média-lekérdezés a megoldás: az az ablakot nézi, nem a tárolót.
   ⚠ Vízszintes csúszka NEM jöhet szóba: ügyvezetői előírás, hogy „ennek egybe kell
     látszódnia" · „inkább a csempe bukjon be a nézet alá". Ezért a mezők zsugorodnak.
   A `.num` MONOSPACE és JOBBRA ZÁRT marad — az olvashatóságot az adja, nem a fix szélesség. */
/* ⚠ `min-width:0` az inputokon: enélkül a beviteli mező az alapértelmezett szélességével
   feszíti szét a cellát, és a `table-layout:fixed` sem véd — a csúszka visszatérne. */


/* ── „MIT HAGYOK JÓVÁ?" — a döntési kártya hét blokkja (2026-09-28) ──────────
   A kártya törzse eddig egyetlen szó volt (`dontes`). A hét blokk külön dobozban
   áll, mert HÉT KÜLÖN FORRÁSBÓL jön: ha egy mondatba folynának, egy hiányzó
   forrás némán veszne el. A `.hiany` változat épp a hiányt teszi láthatóvá —
   halványabb, de NEM elrejtve.
   ⚠ `min-width:0` a rács-elemeken: enélkül a hosszú állapotnév (`SPLIT_PROJECT`)
   szétfeszíti a cellát, és visszajön a vízszintes csúszka (mért hiba, ma). */
.grid.g1{grid-template-columns:1fr}
.kb-racs{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,minmax(0,1fr)));gap:10px;margin:12px 0}
.kb{min-width:0;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--surface)}
.kb.hiany{border-style:dashed;background:transparent}
.kb-cim{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-weight:600;font-size:13px;margin-bottom:6px}
.kb-sz{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;
  background:var(--ink-3);color:#fff;font-family:'JetBrains Mono',monospace;font-size:11px;flex:none}
.kb-jel{font-family:'JetBrains Mono',monospace;font-size:11px;padding:1px 6px;border-radius:5px;
  background:var(--surface-2);color:var(--ink-2);min-width:0;overflow-wrap:anywhere}
.kb-jog{font-family:'JetBrains Mono',monospace;font-size:11px;padding:1px 6px;border-radius:5px;
  border:1px solid var(--line);color:var(--ink-2)}
.kb-szoveg{font-size:13px;line-height:1.5;color:var(--ink);overflow-wrap:anywhere}
.kb-nincs{font-size:12.5px;line-height:1.5;color:var(--ink-2);overflow-wrap:anywhere}
.kb-nincs b{font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.02em}

/* ── A DÖNTÉSI SOR — kompakt lista, kinyitható részletekkel (2026-09-28) ─────
   ⚠ ÜGYVEZETŐI DÖNTÉS. A hat blokk tartalma jó volt, az elrendezés nem: egy
   kártya egy teljes képernyőt vitt el, 77 kártya mellett. A mérce: 77 sor legyen
   EGY képernyőn átfutható, a kinyitás NE mozdítsa el a többi sort, és a két
   döntés-gomb a kompakt sorból is elérhető legyen (ezért van a `<details>`-en KÍVÜL). */
.jov-lista{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.jov-sor{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--surface)}
.jov-sor.proba{border-style:dashed;background:transparent}
.jov-fej{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.jov-cim{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0;flex:1}
.jov-cim b{font-size:14px}
.jov-csat{color:var(--ink-2);font-size:13px}
.jov-atm{font-family:'JetBrains Mono',monospace;font-size:11px;padding:2px 7px;border-radius:5px;
  background:var(--surface-2);color:var(--ink-2);overflow-wrap:anywhere}
.jov-proba{display:inline-flex;align-items:center;gap:4px;font-family:'JetBrains Mono',monospace;font-size:11px;
  padding:2px 7px;border-radius:5px;border:1px solid var(--warn-t);color:var(--warn-t)}
.jov-gombok{display:flex;gap:6px;flex:none}
.jov-meta{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-top:5px;min-width:0}
.jov-irat{font-size:11.5px;color:var(--ink-3);overflow-wrap:anywhere;flex:none;max-width:46%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.jov-fugg{font-size:12.5px;color:var(--ink);line-height:1.45;min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.jov-fugg .jov-l{color:var(--ink-3)}
.jov-reszlet{margin-top:6px}
.jov-reszlet>summary{cursor:pointer;font-size:12px;color:var(--ink-2);list-style:none;
  display:inline-flex;align-items:center;gap:4px;padding:2px 0}
.jov-reszlet>summary::-webkit-details-marker{display:none}
.jov-reszlet[open]>summary .chev{transform:rotate(90deg)}
.jov-reszlet .kb-racs{margin:8px 0 2px}
/* ⚠ 2026-09-30: `@media` → `@container`. Az ablak 640 px-e nem a sor 640 px-e: a 264 px-es
   oldalsáv + 48 px lap-padding miatt a sor MÁR 952 px-es ablaknál 640 px alá esik, a régi
   szabály viszont csak 640 px-es ABLAKNÁL sült el — 312 px-es csúszás. */
@container (max-width:640px){ .jov-gombok{width:100%} .jov-gombok .btn{flex:1} }

/* ── AZ IRAT-LAP TELJES SZÉLESSÉGŰ (2026-09-29) ─────────────────────────────
   ⚠ ÜGYVEZETŐI KÉRÉS: „a csempéket szélesítsd ki, hogy látszódjon megfelelően a
   dokumentum metaadatai" — a 22:15-ös fotón a bal oldali ÜRES SÁV bejelölve.

   MÉRT OK, ÉS EGY PONTOSÍTÁS A DIAGNÓZISHOZ: a `latvanyterv.css:152`
   `.page{max-width:1200px;margin:0 auto}` valóban fogja a tartalmat — DE 1512 px-es
   ablaknál a rendelkezésre álló hely MAGA 1200 px (oldalsáv 264 + belső margók),
   tehát ott ez a korlát NEM is szorít. Ott a szűkítő a `.split.wide` 400 px-es jobb
   hasábja: a bal oldalra 784 px marad, és a tételsor 12 oszlopa ezen nem fér el.

   MÉRVE (valódi oszloplista a `valos/nezetek.js:256` SOR_OSZLOP-jából):
     bal hasáb  784 →  5 csonkolt fejléc · Bontás levágva · 10 px túllógás
     bal hasáb  950 →  5 csonkolt · Bontás OK
     bal hasáb 1000 →  3 csonkolt
     bal hasáb 1200 →  0 csonkolt · Bontás OK · csúszka nincs   ⟵ ennyi kell

   A KORLÁT FELOLDÁSA ÍGY 1900 px FÖLÖTT OLDJA MEG TELJESEN — mérve 1920 px-en:
     korláttal:  bal hasáb  824 px · 5 csonkolt · Bontás levágva · csúszka van
     korlát nélkül: bal hasáb 1192 px · 0 csonkolt · Bontás OK · csúszka nincs
   1512 px-es ablakon a hely fizikailag nincs meg (1248 áll rendelkezésre, a tábla
   maga ~1200-at kér) — ott az oldalsáv melletti elrendezés a korlát, nem ez a szabály.

   ⚠ CSAK EZ AZ EGY LAP. A `.page` 1200 px-es korlátja a SZÖVEGES nézeteken indokolt
   (olvasható sorhossz) — globálisan feloldani ott rontana. */
.page.teljes{max-width:none}
/* A fejlécek és az összesítő címke ne törjenek szótagokra — a fotón az „Összesen"
   két sorba tört („Összes / en"), ami nem szélesség-kérdés, hanem tördelés. */
/* ⚠ A FEJLÉC TÖRHET — a tegnapi `nowrap` VISSZAVONVA (2026-09-29). Mérve: 12 oszlop
   1143 px-en, és az utolsó kettő 315 px-et visz (a pirula és a két gomb nem zsugorodik).
   A maradékon a hosszú fejlécek (MEGNEVEZÉS · KEDVEZMÉNY · ÁFA-KULCS) nowrap mellett
   CSONKOLÓDTAK. Törhető fejléccel: 0 csonkolt, a fejlécsor 31 → 45 px (két sor).
   A kéttörés OLVASHATÓ; a csonkolás nem. Az összesítő sor marad egy sorban. */
.page.teljes .tbl th{white-space:normal}
.page.teljes .tbl tfoot td{white-space:nowrap}

/* ── FENT: AZONOSÍTÓ-ADATOK + SZÁMLAKÉP · ALATTA: TELJES SZÉLES TÉTELSOR ──────
   ⚠ EZ FELÜLÍRJA A 2026-09-28-i ELRENDEZÉST. Tegnap az előnézet a tábla ALÁ került,
   hogy a tételsor megkapja a teljes szélességet. Az ügyvezető 2026-09-29-én azt kérte,
   hogy a SZÁMLAKÉP a tételes bontás FÖLÉ, az azonosító adatok MELLÉ kerüljön:
   „akkor marad hely a tételsoros bontásnak, és ott el tudjuk küldeni az OSA-egyezés
   után külön, ha nem megfelelő."
   ⇒ 1. sor: Adatok | Előnézet   ·   2. sortól: minden más TELJES szélességben.

   ⚠ DOM-ÁTRENDEZÉS NÉLKÜL. A tételsor-kártya a bal hasáb DIV-jén BELÜL keletkezik
   (`valos/nezetek.js` a fej-kártya mögé fűzi), tehát rácsban nem tudna sort váltani.
   A `display:contents` a burkoló DIV dobozát megszünteti, így a KÁRTYÁK lesznek a rács
   elemei — és egyenként elhelyezhetők. A tegnapi mérés (1512 px-en 0 csonkolt fejléc)
   mércének megmarad: a tételsor most is a teljes szélességet kapja. */
.page.teljes .split.wide,
.page.teljes .split{display:grid;grid-template-columns:minmax(0,1fr) 400px;align-items:start;gap:16px}
.page.teljes .split > div:first-child{display:contents}
/* 1. sor jobb oldala: az előnézet — az azonosító adatok MELLETT */
/* ⚠ NEM `position:sticky` — MÉRT HIBA, 2026-09-30.
   A ragadó jobb hasáb görgetéskor a helyén marad (mérve: görgetés után is y=0), a bal oldali
   kártyák viszont `grid-column:1 / -1`-gyel a TELJES szélességet elfoglalják — vagyis BEFUTNAK
   a hasáb alá. A `.card-h .r{margin-left:auto}` miatt a kártyák fejléc-jelvénye pont a jobb
   szélre kerül, tehát pont a hasáb alá. A hasáb pozicionált elem, ezért FÖLÉ fest.
   MÉRVE (2000×1250, valódi CSS, böngészőben): 2 jelvény TAKARVA —
     „Mért adat · a gép által kinyert (gep)" (Tételsorok) és „Mért adat · gépi javaslat" (Hova tartozik);
   mind a 4 bal oldali kártya belóg a hasáb sávjába.
   ⚠ MAGÁN A JELVÉNYEN NINCS SEMMI HIBA: se `position`, se `z-index`, se negatív margó.
     Aki a jelvényt javítja, rossz helyen keres.
   MIÉRT ÍGY JAVÍTJUK, és nem a kártyák szűkítésével: az ügyvezető 2026-09-29-i kérése az volt,
   hogy a számlakép az azonosító adatok MELLÉ kerüljön, „akkor marad hely a tételsoros bontásnak" —
   vagyis a teljes szélességű bontás SZÁNDÉKOS. A kép az 1. sorban marad az adatok mellett,
   csak nem tapad oda görgetéskor. */
.page.teljes .split > .side{grid-column:2;grid-row:1;position:static}
/* 1. sor bal oldala: az Adatok kártya */
.page.teljes .valos-fej-kartya{grid-column:1;grid-row:1}
/* minden MÁS kártya a 2. sortól, TELJES szélességben */
.page.teljes .split > div:first-child > *:not(.valos-fej-kartya){grid-column:1 / -1}
@media (max-width:1100px){
  /* ⚠ A TÖRÉSPONT 1100 px, nem 900 (mérve): 1024-es ablaknál a tartalom 760 px, és a
     400 px-es kép mellett az Adatok kártyának 344 px maradna — használhatatlanul szűk.
     1100 alatt tehát minden egymás alá kerül, és a kártyák teljes szélességet kapnak. */
  .page.teljes .split.wide,
  .page.teljes .split{grid-template-columns:minmax(0,1fr)}
  .page.teljes .split > .side{grid-column:1;grid-row:auto;position:static}
  .page.teljes .valos-fej-kartya{grid-column:1;grid-row:auto}
}

/* ── LEVELEZÉS: HÁROM HASÁB (2026-09-30, ügyvezetői kérés) ──────────────────────────────
   Szó szerint: „oldalt jelenjenek meg a levélblokkok" · „a belső csempe továbbra se ér ki
   az oldalsó ikonokig". Eddig a nézet EGY függőleges lista volt, normál (keskeny) lapon.
   Mostantól: `teljes` lap + három hasáb — levelek | kontextus | teendő.

   ⚠ CONTAINER QUERY, NEM MÉDIA-LEKÉRDEZÉS — és ezt MÉRÉS döntötte el, nem ízlés.
     Az első változatom `@media`-val készült, és a mérés kimutatta, hogy 1920 px-es ablaknál
     is EGY hasábra csuklott: a `@media` az ABLAKOT nézi, a szűk keresztmetszet viszont a
     TÁROLÓ (a cockpitban 232 px oldalsáv áll előtte, tehát 1400 px-es ablaknál a hasáb már
     csak ~1170 px). Ugyanaz a hibaosztály, amit 09-29-én a tételsornál mértünk: a szűk
     keresztmetszet a tároló, nem az ablak.
   ⚠ MINDEN hasáb `minmax(0,…)`: enélkül a rács-elem nem zsugorodik a tartalma alá, és a
     mezők egymásra lógnak — ez is mért hiba volt (H-D, 6 átfedő pár). */
.lev3-keret{container-type:inline-size}
.lev3{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr) minmax(0,330px);align-items:start;gap:14px}
.lev3 > *{min-width:0;max-width:100%}
.lev3-lista{max-height:calc(100vh - 230px);overflow:auto;padding-right:2px}
.lev3-lev{display:block;width:100%;text-align:left;border:1px solid var(--line);border-radius:10px;
          background:var(--surface);padding:9px 10px;margin-bottom:8px;cursor:pointer;font:inherit;color:inherit;text-decoration:none}
.lev3-lev:hover{border-color:var(--line-2)}
.lev3-lev.akt{border-color:var(--p1);box-shadow:inset 3px 0 0 var(--p1)}
.lev3-lev b{display:block;font-size:13px;line-height:1.3;overflow-wrap:anywhere}
.lev3-lev .m{display:block;font-size:11.5px;color:var(--ink-3);margin-top:3px;overflow-wrap:anywhere}
.lev3-lev .cs{display:flex;gap:4px;flex-wrap:wrap;margin-top:5px}
/* A teendő-hasáb a kontextus ALÁ kerül (nem tűnik el), majd minden egy hasábba. */
/* ⚠ A TÖRÉSPONTOK MÉRÉSBŐL, NEM KEREK SZÁMOKBÓL (2026-09-30).
   A 7 oszlopos tétel-tábla ~800 px-en fér el csúszka nélkül. Három hasábnál a bal+jobb
   együtt 658 px (300+330+2×14 rés) ⇒ három hasáb CSAK 1460 px-es tárolótól, különben a
   középső 678 px-re szorul és csúszka keletkezik (mérve: 1600 px-es ablaknál).
   Két hasábnál a bal 280+14 ⇒ egy hasábra 920 px alatt kell váltani (mérve: 1100 px-es
   ablaknál 542 px-es közép, 12 kilógó elem). */
@container (max-width:1460px){.lev3{grid-template-columns:minmax(0,280px) minmax(0,1fr)}.lev3-akcio{grid-column:1 / -1}}
@container (max-width:920px){.lev3{grid-template-columns:minmax(0,1fr)}.lev3-lista{max-height:none}}
/* ⚠ A KÖZÉPSŐ HASÁB TÁBLÁJA ZSUGORODJON — MÉRT hiba, 2026-09-30.
   A 7 oszlopos tétel-tábla 1330 px-en FIX volt, és a 998/722 px-es hasábból 353/629 px-t
   lógott ki. A `.tblwrap` `overflow-x:auto`-ja miatt nem a LAP görgött, hanem a csempén
   BELÜL keletkezett vízszintes csúszka — pontosan az, amit az ügyvezető 09-29-én kizárt
   („ennek egybe kell látszódnia" · „inkább a csempe bukjon be a nézet alá").
   A MÉRT HAJTÓ: a hosszú fájlnév `<b>`-je 504 px-es cellát csinált, és a `.tbl th`
   globális `white-space:nowrap`-je fixálta a fejléc-szélességeket.
   ⚠ CSAK a középső hasábra szűkítve — a globális `.tbl` szabályokra MÁS nézetek épülnek,
     azokat nem bántjuk (a ma reggeli tanulság: a fajsúly-verseny némán eldönti a dolgokat). */
.lev3-kozep .tbl{table-layout:fixed}
.lev3-kozep .tbl th{white-space:normal}
.lev3-kozep .tbl td,.lev3-kozep .tbl td b{overflow-wrap:anywhere;word-break:break-word}
.lev3-kozep .tbl .num,.lev3-kozep .tbl td.r{white-space:normal}

/* ── A DÖNTÉSI KÁRTYA ÚJ RENDJE — csoportosítva, @container-rel (2026-09-30) ──
   ⚠ MÉRT HIBA: hat EGYENRANGÚ doboz `auto-fill` rácsban. Hierarchia nélkül a szem
   nem tudta, hol kezdje; és a rács az ABLAK-hoz igazodott, nem a sor szélességéhez.
   Az új rend: ① Mit hagyok jóvá? és ③ Mitől függ? teljes szélességben (ez a döntés
   magja), ④ IGEN | ⑤ NEM szembeállított párként (a következmény), ② Hol áll · ⑥ Meddig
   halvány meta-sávban. A tároló a `.jov-sor` — a 264 px-es oldalsáv és a lap paddingje
   miatt az ablak-szélesség félrevezet (`@media` töréspontja elcsúszik). */
.jov-sor{container-type:inline-size}
.jb{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;margin:8px 0 2px}
.jb-par{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
.jb-oszlop{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;align-content:start}
@container (max-width:560px){ .jb-par{grid-template-columns:minmax(0,1fr)} }
.kb-fo{background:var(--surface-2)}
.kb-fo .kb-szoveg{font-size:13.5px}
.kb-igen{border-color:var(--ok-line);background:var(--ok-bg)}
.kb-igen .kb-sz{background:var(--ok-t)}
.kb-nem{border-color:var(--crit-line);background:var(--crit-bg)}
.kb-nem .kb-sz{background:var(--crit-t)}
.kb-kis{padding:8px 10px}
.kb-kis .kb-cim{font-size:12px;margin-bottom:4px}
.kb-kis .kb-szoveg,.kb-kis .kb-nincs{font-size:12px;color:var(--ink-2)}

/* ── A ZÁRT SORBA KIEMELT KÉT JEL (2026-09-30) ───────────────────────────────
   A határidő 49/68 tételen LEJÁRT volt, és a `<details>` alatt lakott — a
   legcselekvőbb információ nem látszott. A négyszem-lánc pedig sehol. */
.jov-hat{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:2px 7px;border-radius:5px;
  background:var(--surface-2);color:var(--ink-2);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.jov-hat.lejart{background:var(--crit-bg);color:var(--crit-t);border:1px solid var(--crit-line)}
.jov-n4{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:2px 7px;border-radius:5px;
  background:var(--info-bg);color:var(--info-t);border:1px solid var(--info-line);flex:none;white-space:nowrap}
.jov-n4.egy{background:var(--warn-bg);color:var(--warn-t);border-color:var(--warn-line)}
.jov-n4.nincs{background:transparent;color:var(--ink-3);border-color:var(--line-2);border-style:dashed}
.jov-osszeg{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 4px}
.jov-osszeg .jo-m{font-size:12.5px;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line);
  border-radius:8px;padding:5px 10px}
.jov-osszeg .jo-m b{font-family:var(--mono);font-size:13px;color:var(--ink)}
.jov-osszeg .jo-m.hangsuly b{font-size:15px}
.jov-osszeg .jo-m.crit{background:var(--crit-bg);border-color:var(--crit-line);color:var(--crit-t)}
.jov-osszeg .jo-m.crit b{color:var(--crit-t)}
.jov-szuro{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;margin:10px 0;
  padding:8px 12px;border:1px dashed var(--line-2);border-radius:10px;font-size:12.5px;color:var(--ink-2)}
.jov-szuro b{color:var(--ink)}
/* Szűk tárolónál a root_id a legkevésbé döntés-relevans jel — ő megy el elsőként,
   hogy a LEJÁRT-pill és a négyszem-lánc ne törjön új sorba (mérve: +47 px/sor 900 px-en). */
/* A ② állapot-átmenet pill a Részletek »Hol áll most?« blokkjában IS ott van, tehát szűk
   tárolónál ő az első, amit elengedünk — a LEJÁRT-jel és a négyszem-lánc sehol máshol nem
   szerepel a zárt sorban, ezért azok maradnak. */
@container (max-width:720px){ .jov-atm{display:none} }
@container (max-width:620px){ .jov-irat{display:none} }
@container (max-width:520px){ .jov-fugg{white-space:normal} }

/* ── TÉTELSOR: OSZLOPSZÉLESSÉG, TÖRDELŐ MEGNEVEZÉS, Σ-SOR, RAGADÓS ELŐNÉZET (2026-10-06) ─────────────────────────
   Ügyvezetői jelzés (10-06 14:40, képpel): „nem megfelelően tördeli a sorokat, eltűnnek karakterek".
   MÉRT OKOK:
   (1) a `table-layout:fixed` alatt csak a #, az Eredet és a gomb-oszlop kapott szélességet, a többi 10 EGYENLŐ részt —
       a Megnevezés ugyanolyan keskeny volt, mint az „ME" (a 173. sor „a megnevezés kapja a maradékot" szabálya nem élt);
   (2) a megnevezés egysoros <input> volt — ami nem fért ki, levágódott;
   (3) az eredet-pirula `inline-block` alakjában (fent, 09-29) a „Mért adat" és a forrás közti köz kiesett;
   (4) kompakt sűrűségnél a táblacellák félkövér száma BLOKK-elem (latvanyterv.css:57), ezért a Σ-sor „Σ / 0 / 1 db"
       három sorra esett szét;
   (5) a 10-02-i ragadós előnézet (valos/atepites.js) a teljes tételsor-táblát a bal hasábba szorította, ~416 px-et
       elvéve tőle — SAJÁT REGRESSZIÓ: felülírta a fenti 09-29/30-i döntést, hogy a tételsor TELJES szélességet kap.
   ⇒ A szám-oszlopok szélessége ki van mondva, a Megnevezés kapja a MARADÉKOT, és tördel. A ragadós előnézet CSAK ott él,
     ahol a tábla is elfér mellette — CONTAINER QUERY, mert a szűk keresztmetszet a tároló, nem az ablak (09-29/30-i
     mérés, lásd a levelezés hasábjait). Keskenyebb tárolóban a 09-30-i elrendezés: a tábla teljes szélességű. */
.valos-tetel th:nth-child(3){width:72px}     /* Menny. */
.valos-tetel th:nth-child(4){width:56px}     /* ME */
.valos-tetel th:nth-child(5){width:100px}    /* Egységár */
.valos-tetel th:nth-child(6){width:104px}    /* Kedvezmény — a fejléc egy szó, nem törhet szó közben */
.valos-tetel th:nth-child(7){width:104px}    /* Nettó */
.valos-tetel th:nth-child(8){width:84px}     /* ÁFA-kulcs */
.valos-tetel th:nth-child(9){width:108px}    /* Odoo-adó */
.valos-tetel th:nth-child(10){width:96px}    /* ÁFA */
.valos-tetel th:nth-child(11){width:108px}   /* Bruttó */
.valos-tetel th:nth-last-child(2){width:112px}   /* Eredet — 09-29-én 140; a pirula ellipszissel, teljes szöveg a buborékban */
.valos-tetel th:last-child{width:160px}          /* Bontás (n) + Törlés — 09-29-én 175 */
/* a fejléc CSAK szóköznél / kötőjelnél törhet (a 174. sor `overflow-wrap:anywhere`-je szó közben tört: „KEDVEZMÉ|NY", „MENNY|.") */
.valos-tetel th{overflow-wrap:normal;word-break:normal}
.valos-tetel td > textarea{display:block;width:100%;min-width:0;box-sizing:border-box;padding:5px 7px;border:1px solid var(--line-2);border-left-width:3px;border-radius:6px;background:var(--surface);font:inherit;font-size:13px;line-height:1.35;resize:none;overflow:hidden;field-sizing:content;min-height:31px;white-space:pre-wrap;overflow-wrap:anywhere}
.valos-tetel td[data-chip] .chip > .muted{margin-left:.3em}
.vb-ossz td.r{white-space:normal}
.vb-ossz td b{display:inline!important;max-width:none!important;overflow:visible!important}
.vb-ossz .vb-nw,.vb-ossz .valos-elteres{white-space:nowrap}
/* a bontatlan sor gombja: a hiány a SORON látszik (09-18-i szabály), de nem riaszt pirosan — teendő, nem hiba */
.valos-tetel .btn.valos-bontatlan{border-color:var(--warn-line);background:var(--warn-bg);color:var(--warn-t)}
/* keskeny tárolóban (laptop, ragadós előnézet nélkül is ~1200 px) a szám-oszlopok szűkülnek, a fejléc betűje kisebb —
   különben a Megnevezésnek 59 px maradt (v7-mérés, 1512 px-es ablak): teljes volt, de hét sorra tört */
.valos-tetel-wrap{container:sh78tetel / inline-size}
@container sh78tetel (max-width:1399px){
  .valos-tetel th{font-size:10.5px;letter-spacing:0}
  .valos-tetel th:nth-child(3){width:60px}  .valos-tetel th:nth-child(4){width:44px}  .valos-tetel th:nth-child(5){width:90px}
  .valos-tetel th:nth-child(6){width:92px}  .valos-tetel th:nth-child(7){width:90px}  .valos-tetel th:nth-child(8){width:66px}
  .valos-tetel th:nth-child(9){width:88px}  .valos-tetel th:nth-child(10){width:88px} .valos-tetel th:nth-child(11){width:90px}
  .valos-tetel th:nth-last-child(2){width:84px}  .valos-tetel th:last-child{width:144px}
  /* a szám-mező betűje kisebb, hogy a 10 jegyű érték is kiférjen (v7-mérés: 80 px-en a „40297.5" „40297.!"-re vágódott) */
  .valos-tetel input.num{font-size:12px;padding-left:4px;padding-right:4px}
  /* a cella belső margója 2×10 → 2×4 px: oszloponként 12 px vissza a mezőknek (v7-mérés: „27%" és „db" levágva) */
  .valos-tetel th,.valos-tetel td{padding-left:4px;padding-right:4px}
  .valos-tetel select{padding-left:4px;padding-right:2px}
}
/* ⚠ A PROGRAMOZOTT GÖRGETÉS AZONNALI (2026-10-06, v7-mérés): a `.content{scroll-behavior:smooth}` (latvanyterv.css:151)
   miatt a csomag minden útvonal-váltáskor ANIMÁLVA görgetett (irat-lapon a tetejére — ez maga is látható „ugrás"), és
   ha az animáció közben háttér-újrarajzolás jött, a görgetés a FÉLÚTI helyen ragadt (mérve: 850 helyett 378 px).
   A hash-útválasztásban horgonyra görgetés nincs, a simítás itt csak kárt okozott. */
#content.content{scroll-behavior:auto}
/* a ragadós előnézet (10-02-i kérés) — csak ha mellette a tábla is elfér; a küszöb MÉRT (v7 böngészős mérés) */
.page.teljes .split.wide{container:sh78irat / inline-size}
@container sh78irat (min-width:1760px){
  .page.teljes .split.wide > div:first-child{display:block;min-width:0}
  .page.teljes .split.wide > div:first-child > * + *{margin-top:16px}
  .page.teljes .split.wide > .side{grid-column:2;grid-row:1;position:sticky;top:56px;align-self:start;max-height:calc(100vh - 128px);overflow:auto}
  .page.teljes .split.wide > .side #valos-elonezet img{max-height:calc(100vh - 330px)!important;width:auto;max-width:100%}
  .page.teljes .split.wide > .side .valos-pdf-frame{height:calc(100vh - 300px)}
}
