/* ============================================================================
   ESIR felület v3 („Lendületes") — tokenek + alapkomponensek
   Forrás: _design-upgrade/atadas/ (esir-tokens.css, Design System v3, README 2–4. pont)

   SCOPE: minden szabály a `.v3` gyökér-osztály alatt él. A régi felület CSS-e (esir-app-base/theme,
   Tailwind) érintetlen marad, amíg egy képernyő át nem áll; az átállt képernyő `<div className="v3">`-ba
   kerül, és csak az itt definiált `v3-*` osztályokat használja (Tailwind-színosztályt nem — azokat a régi
   dark-mode !important szabályok felülírnák).
   Téma: a html[data-theme="light|dark"] (a meglévő témaváltó). Márkaszín: --accent (SaaS-fióknál felülírható).
   Betű: Plus Jakarta Sans (500–800), JetBrains Mono csak azonosítóra. Nagybetűs, ritkított felirat nincs.
   ============================================================================ */

/* a tokenek az <html>-en is élnek (html.v3-ui): a body háttere és betűje a .v3-on kívül is a v3-é — a régi Tailwind-alap nélkül (&nolegacycss=1) sincs 8 px-es keret / fehér sáv */
.v3, .v3[data-theme="light"], html.v3-ui {
  /* felületek */
  --app: #f3f3f7; --card: #ffffff; --field: #f3f3f7; --tile: rgba(0,0,0,.04);
  --ico-bg: #e6e6eb; --ico-fg: #0b0b0f; --sig: #1d3fa8;
  /* szöveg */
  --fg: #0b0b0f; --fg-2: #4a4a55; --fg-3: #6e6e7a;
  --line: rgba(0,0,0,.07); --line-2: rgba(0,0,0,.14);
  /* márka és állapot */
  --accent: #e11d2a; --accent-tint: rgba(225,29,42,.09);
  --accent-2: #b3121d;
  /* piros SZÖVEG (és szöveges gomb): ≥ 4,5 : 1 a kártyán, az alapon és a piros-tinten (5. kör F1/J3). A kitöltött gomb / jelölés marad a --accent; az ikon is (≥ 3 : 1) */
  --accent-fg: #c8141f;
  --hero: linear-gradient(135deg,#e11d2a 0%,#b3121d 100%);
  --ok: #0f9d58; --ok-t: rgba(15,157,88,.12);
  --warn: #d97706; --warn-t: rgba(217,119,6,.13);
  --err: #e11d2a; --err-t: rgba(225,29,42,.10);
  --focus: #2563eb;
  /* modulszínek (azonos világosság/telítettség, eltérő árnyalat) */
  --m-vbf: oklch(0.62 0.21 25); --m-eph: oklch(0.70 0.17 60); --m-kab: oklch(0.60 0.17 250);
  --m-pv: oklch(0.76 0.16 85); --m-vv: oklch(0.58 0.19 295); --m-etc: oklch(0.55 0.02 260);
  /* mélység */
  --shadow: 0 1px 2px rgba(0,0,0,.04), 0 8px 24px rgba(20,20,40,.07);
  --btn-sh: 0 8px 20px rgba(225,29,42,.32);
  --scrim: rgba(10,10,15,.5);
  /* mező belső kerete: világosban nincs, sötétben a --line-2 (a mező a kártyától alig válik el) — 5. kör F3/J3 */
  --field-line: transparent;
  /* forma („B" középút) */
  --r-sm: 7px; --r: 8px; --r-card: 12px; --r-hero: 14px; --r-sheet: 20px; --r-full: 9999px;
  --r-card-sm: 10px; /* belső kártya, sor, lista-elem */
  --r-xs: 6px;       /* jelölőnégyzet, naptár-sáv, apró chip */
  --h-ctl: 52px; --h-ctl-l: 56px; --h-chip: 44px; --tap-min: 44px;
  /* betű */
  --f: 'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --mono: 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;
}
/* márkaszín-származékok: a --accent felülírásakor (SaaS-arculat) a tint, a hero és a gomb-árnyék követi */
@supports (color: color-mix(in srgb, red 50%, blue)) {
  .v3 {
    --accent-tint: color-mix(in srgb, var(--accent) 9%, transparent);
    --accent-2: color-mix(in srgb, var(--accent) 74%, black);
    --hero: linear-gradient(135deg, var(--accent) 0%, var(--accent-2) 100%);
    --btn-sh: 0 8px 20px color-mix(in srgb, var(--accent) 32%, transparent);
  }
  [data-theme="dark"] .v3, .v3[data-theme="dark"] {
    --accent-tint: color-mix(in srgb, var(--accent) 18%, transparent);
    --hero: linear-gradient(135deg, color-mix(in srgb, var(--accent) 88%, black) 0%, color-mix(in srgb, var(--accent) 50%, black) 100%);
  }
  /* márka-akcentszínű (SaaS) fióknál a V3Root inline `--accent`-et ír → a piros-szöveg token is a márkaszínből származik (az alapértelmezett piros fix értéke fent / lent marad) */
  .v3[style*="--accent:"] { --accent-fg: color-mix(in srgb, var(--accent) 86%, black); }
  [data-theme="dark"] .v3[style*="--accent:"], .v3[data-theme="dark"][style*="--accent:"] { --accent-fg: color-mix(in srgb, var(--accent) 70%, white); }
}
[data-theme="dark"] .v3, .v3[data-theme="dark"], html.v3-ui[data-theme="dark"] {
  --app: #0b0b0f; --card: #17171d; --field: #22222a; --tile: rgba(255,255,255,.05);
  --ico-bg: #e6e6eb; --ico-fg: #0b0b0f; --sig: #93b4ff;
  --fg: #f5f5f7; --fg-2: #c4c4ce; --fg-3: #9a9aa6;
  --line: rgba(255,255,255,.08); --line-2: rgba(255,255,255,.18);
  --accent-tint: rgba(225,29,42,.18);
  --accent-fg: #ff5a63; /* piros szöveg sötéten: ≈ 5,9 : 1 a --card-on (a --accent #e11d2a csak ≈ 3,8 : 1) */
  --field-line: var(--line-2); /* a mező (--field) alig válik el a kártyától: 1 px belső keret */
  --hero: linear-gradient(135deg,#c81824 0%,#7f0d15 100%);
  --ok: #34d399; --ok-t: rgba(52,211,153,.14);
  --warn: #fbbf24; --warn-t: rgba(251,191,36,.14);
  --err: #fb7185; --err-t: rgba(251,113,133,.15);
  --focus: #60a5fa;
  --shadow: 0 0 0 1px rgba(255,255,255,.06);
  --btn-sh: none;
  --scrim: rgba(0,0,0,.7);
  --on-ok: #052e1a; --on-err: #3f0a14; /* sötétben a világos állapotszínen sötét felirat (kontraszt) */
}

/* ── alap ─────────────────────────────────────────────────────────────────── */
.v3 {
  font-family: var(--f); font-weight: 600; font-size: 16px; line-height: 24px;
  color: var(--fg); background: var(--app);
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
  text-transform: none; letter-spacing: 0;
}
.v3 *, .v3 *::before, .v3 *::after { box-sizing: border-box; }
.v3 button { font: inherit; color: inherit; }
.v3 :focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.v3 .v3-mono { font-family: var(--mono); font-weight: 600; letter-spacing: 0; }
.v3 .v3-num { font-variant-numeric: tabular-nums; }

/* típus-skála (Design System 2.) */
.v3 .v3-t-display { font: 800 30px/36px var(--f); letter-spacing: -.035em; }
.v3 .v3-t-page    { font: 800 28px/32px var(--f); letter-spacing: -.035em; }
.v3 .v3-t-section { font: 800 18px/24px var(--f); letter-spacing: -.01em; }
.v3 .v3-t-body    { font: 600 16px/24px var(--f); }
.v3 .v3-t-label   { font: 700 13px/18px var(--f); color: var(--fg-2); }
.v3 .v3-t-meta    { font: 600 12px/16px var(--f); color: var(--fg-3); }
.v3 .v3-t-number  { font: 800 22px/24px var(--f); font-variant-numeric: tabular-nums; }
.v3 .v3-muted { color: var(--fg-3); }

/* ── ikon ─────────────────────────────────────────────────────────────────── */
.v3 .v3-ico { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; line-height: 1; }
.v3 .v3-ico svg { display: block; stroke-width: 2; }
/* Material Symbols Rounded (eszköz / modul / objektum, kitöltött) */
.v3 .v3-msym {
  font-family: 'Material Symbols Rounded'; font-weight: 400; font-style: normal; line-height: 1;
  letter-spacing: normal; text-transform: none; white-space: nowrap; direction: ltr; display: inline-block;
  font-variation-settings: 'FILL' 1, 'wght' 500, 'opsz' 24;
  -webkit-font-feature-settings: 'liga'; font-feature-settings: 'liga'; -webkit-font-smoothing: antialiased;
  width: 1em; overflow: hidden; /* ha a betű nem töltött be (offline), a ligatúra-szöveg ne csússzon ki */
}
html:not(.v3-fonts) .v3 .v3-msym { color: transparent !important; }
/* ikon-csempe: semleges (világosszürke + sötét ikon, mindkét témában) · modul (modulszín + fehér) · eszköz állapot nélkül */
.v3 .v3-tile-ico {
  display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto;
  width: 44px; height: 44px; border-radius: var(--r); background: var(--ico-bg); color: var(--ico-fg);
}
/* modul-csempe (5. kör J5 / E9): világosszürke alap + közel fekete ikon (--ico-bg / --ico-fg, mindkét témában), a modulszín csak egy 3 px-es csík a csempe bal szélén
   (a számozott jelvényen — S1, 2 … — is: a fehér szám a sárga / narancs alapon nem volt olvasható) */
.v3 .v3-tile-ico--mod { position: relative; overflow: hidden; background: var(--ico-bg); color: var(--ico-fg); }
.v3 .v3-tile-ico--mod::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--mod, var(--m-etc)); }
.v3 .v3-tile-ico--soft { background: var(--tile); color: var(--fg-2); }
.v3 .v3-tile-ico--sm { width: 36px; height: 36px; border-radius: var(--r-sm); }
.v3 .v3-tile-ico--lg { width: 52px; height: 52px; border-radius: var(--r-card-sm); }

/* ── gomb ─────────────────────────────────────────────────────────────────── */
.v3 .v3-btn {
  appearance: none; border: 0; cursor: pointer; text-decoration: none;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  height: var(--h-ctl-l); min-width: var(--tap-min); padding: 0 22px; border-radius: var(--r); /* a nagyon rövid felirat („Újra", „OK") gombja is ≥ 44 px széles */
  font: 700 16px/1 var(--f); white-space: nowrap; user-select: none; -webkit-user-select: none;
  background: var(--card); color: var(--fg); box-shadow: var(--shadow);
  transition: transform .08s ease, opacity .15s ease, background-color .15s ease;
}
.v3 .v3-btn:active:not(:disabled) { transform: scale(.98); }
.v3 .v3-btn:disabled, .v3 .v3-btn[aria-disabled="true"] { opacity: .45; cursor: not-allowed; box-shadow: none; }
.v3 .v3-btn--primary { background: var(--accent); color: #fff; box-shadow: var(--btn-sh); }
/* tiltott elsődleges gomb (5. kör D8 / E34): nem halványpiros, hanem csendes csempe — --tile háttér, --fg-3 felirat (a „mi hiányzik" sor a gomb alatt a nézeteké) */
.v3 .v3-btn--primary:disabled, .v3 .v3-btn--primary[aria-disabled="true"] { background: var(--tile); color: var(--fg-3); box-shadow: none; opacity: 1; }
.v3 .v3-btn--strong  { background: var(--fg); color: var(--app); box-shadow: none; }
.v3 .v3-btn--secondary { background: var(--card); color: var(--fg); box-shadow: var(--shadow); }
.v3 .v3-btn--danger  { background: var(--err-t); color: var(--accent-fg); box-shadow: none; }
.v3 .v3-btn--icon    { width: var(--h-ctl-l); padding: 0; }
.v3 .v3-btn--md      { height: var(--h-ctl); padding: 0 18px; }
.v3 .v3-btn--sm      { height: var(--tap-min); padding: 0 14px; font-size: 14px; }
.v3 .v3-btn--block   { display: flex; width: 100%; }
.v3 .v3-btn--chip    { height: var(--tap-min); padding: 0 14px; border-radius: var(--r-full); font-size: 14px; }
.v3 .v3-btn--text    { height: var(--tap-min); padding: 0 6px; background: transparent; box-shadow: none; color: var(--accent-fg); font-size: 14px; gap: 6px; }
.v3 .v3-btn--text:hover { text-decoration: underline; }

/* ── mező ─────────────────────────────────────────────────────────────────── */
.v3 .v3-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.v3 .v3-field__label { font: 700 13px/18px var(--f); color: var(--fg-2); }
.v3 .v3-field__req { color: var(--accent-fg); margin-left: 2px; }
.v3 .v3-field__hint { font: 600 12px/16px var(--f); color: var(--fg-3); }
/* a „mi hiányzik" sor a tiltott elsődleges gomb alatt (5. kör D8) */
.v3 .v3-why { text-align: center; margin: 0; }
.v3 .v3-signpad__why { margin-top: 6px; }
.v3 .v3-users__numrow > .v3-why { grid-column: 1 / -1; text-align: left; }
@media (min-width: 640px) { .v3 .v3-users__form > .v3-why { text-align: right; } }
.v3 .v3-field__err { display: flex; align-items: center; gap: 6px; font: 700 12px/16px var(--f); color: var(--accent-fg); }
.v3 .v3-input, .v3 .v3-select, .v3 .v3-textarea {
  appearance: none; -webkit-appearance: none; width: 100%; border: 0; outline: 0; margin: 0;
  height: var(--h-ctl); padding: 0 16px; border-radius: var(--r);
  background: var(--card); color: var(--fg); box-shadow: var(--shadow);
  font: 600 16px/24px var(--f); /* min. 16 px: iOS ne nagyítson */
  transition: box-shadow .12s ease;
}
.v3 .v3-input::placeholder, .v3 .v3-textarea::placeholder { color: var(--fg-3); opacity: .8; font-weight: 500; }
.v3 .v3-input:focus, .v3 .v3-select:focus, .v3 .v3-textarea:focus { box-shadow: 0 0 0 2px var(--focus); }
.v3 .v3-input[aria-invalid="true"], .v3 .v3-select[aria-invalid="true"], .v3 .v3-textarea[aria-invalid="true"] { box-shadow: 0 0 0 2px var(--err); }
.v3 .v3-input:disabled, .v3 .v3-select:disabled, .v3 .v3-textarea:disabled { opacity: .5; cursor: not-allowed; }
.v3 .v3-input[readonly], .v3 .v3-textarea[readonly] { background: var(--tile); box-shadow: none; color: var(--fg-2); }
.v3 .v3-select.is-ro:disabled { opacity: 1; cursor: default; background-color: var(--tile); box-shadow: none; color: var(--fg-2); -webkit-text-fill-color: var(--fg-2); } /* csak olvasható választó: a kiválasztott érték olvasható marad */
.v3 .v3-textarea { height: auto; min-height: 96px; padding: 14px 16px; resize: vertical; }
.v3 .v3-select {
  padding-right: 44px; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%236e6e7a' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 14px center;
}
/* kártyán belüli mező: kitöltött (--field); sötétben 1 px belső keret (--field-line), mert a --field alig válik el a --card-tól (5. kör F3) */
.v3 .v3-on-card .v3-input, .v3 .v3-on-card .v3-select, .v3 .v3-on-card .v3-textarea { background-color: var(--field); box-shadow: inset 0 0 0 1px var(--field-line); }
.v3 .v3-on-card .v3-input:focus, .v3 .v3-on-card .v3-select:focus, .v3 .v3-on-card .v3-textarea:focus { box-shadow: 0 0 0 2px var(--focus); }
.v3 .v3-on-card .v3-input[aria-invalid="true"], .v3 .v3-on-card .v3-select[aria-invalid="true"] { box-shadow: 0 0 0 2px var(--err); }
.v3 .v3-input-wrap { position: relative; display: flex; align-items: center; }
.v3 .v3-input-wrap .v3-input { padding-right: 52px; }
.v3 .v3-input-wrap__unit { position: absolute; right: 16px; font: 700 13px/1 var(--f); color: var(--fg-3); pointer-events: none; }

/* ── mérési mező (MeasureField): címke fent, nagy szám, mértékegység ──────────── */
.v3 .v3-measure {
  position: relative; display: flex; flex-direction: column; justify-content: space-between; gap: 2px;
  height: 66px; padding: 8px 10px; border-radius: var(--r); background: var(--card); box-shadow: var(--shadow);
  border: 2px solid transparent; cursor: text; min-width: 0;
}
.v3 .v3-on-card .v3-measure { background: var(--field); box-shadow: 0 0 0 1px var(--field-line); }
.v3 .v3-measure__label { font: 700 12px/16px var(--f); color: var(--fg-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.v3 .v3-measure__row { display: flex; align-items: baseline; gap: 4px; min-width: 0; }
.v3 .v3-measure__input {
  appearance: none; border: 0; outline: 0; background: transparent; padding: 0; min-width: 0; flex: 0 1 auto;
  height: var(--tap-min); margin: -10px 0; /* a beviteli mező 44 px magas; a negatív margó miatt a csempe elrendezése és magassága változatlan */
  font: 800 22px/24px var(--f); color: var(--fg); font-variant-numeric: tabular-nums;
}
.v3 .v3-measure__input::placeholder { color: var(--fg-3); opacity: .55; font-weight: 700; }
.v3 .v3-measure__unit { font: 700 12px/16px var(--f); color: var(--fg-3); flex: 0 0 auto; }
.v3 .v3-measure:focus-within { border-color: var(--focus); }
.v3 .v3-measure--err { background: var(--err-t) !important; border-color: var(--err); box-shadow: none; }
.v3 .v3-measure--err .v3-measure__label, .v3 .v3-measure--err .v3-measure__input { color: var(--accent-fg); }
.v3 .v3-measure--ro { background: var(--tile) !important; box-shadow: none; cursor: default; }
.v3 .v3-measure--ro .v3-measure__input { color: var(--fg-2); }
.v3 .v3-measure--off { opacity: .45; cursor: not-allowed; }
.v3 .v3-measure--off .v3-measure__input { color: var(--fg-3); cursor: not-allowed; }
.v3 .v3-measure-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }

/* ── választók ────────────────────────────────────────────────────────────── */
/* fül / szegmentált (csúszó pirula, állapotponttal) */
.v3 .v3-tabs {
  /* a fül legalább a felirata szélességű (min-content; a nem tördelődő feliratnál = a teljes felirat), és kitölti a sávot (1fr):
     ha nem fér ki, a sáv vízszintesen görgethető, a kijelölt fület a Tabs a látómezőbe görgeti. Korábban (1fr + min-width: 0)
     telefonon a fülek egyforma keskenyre nyomódtak, és a hosszú felirat a szomszéd fülre lógott (élesben jelezve, 2026-10-02). */
  display: grid; grid-auto-flow: column; grid-auto-columns: minmax(min-content, 1fr); gap: 0; padding: 4px; border-radius: var(--r-card-sm);
  background: var(--card); box-shadow: var(--shadow); overflow-x: auto; scrollbar-width: none; flex-shrink: 0; /* flex-oszlopban ne nyomódjon össze (a fülek levágódnának) */
}
.v3 .v3-tabs::-webkit-scrollbar { display: none; }
.v3 .v3-tab {
  appearance: none; border: 0; cursor: pointer; background: transparent; color: var(--fg-2);
  height: var(--tap-min); min-width: 0; padding: 0 12px; border-radius: var(--r); white-space: nowrap;
  display: flex; align-items: center; justify-content: center; gap: 6px;
  font: 700 14px/1 var(--f); transition: background-color .15s ease, color .15s ease;
}
.v3 .v3-tab[aria-selected="true"], .v3 .v3-tab.is-active { background: var(--fg); color: var(--app); }
.v3 .v3-tab:disabled { cursor: default; } /* csak olvasható módban az ADATOT író választó (Segmented / Tabs data): a kijelölés látszik, de nem változtatható */
.v3 .v3-tab:disabled:not([aria-selected="true"]) { opacity: .55; }
.v3 .v3-tab__dot { width: 7px; height: 7px; border-radius: 50%; background: var(--line-2); flex: 0 0 auto; }
.v3 .v3-tab__dot--ok { background: var(--ok); } .v3 .v3-tab__dot--warn { background: var(--warn); } .v3 .v3-tab__dot--err { background: var(--err); }
/* minősítés MF / NEM / NA / NV */
.v3 .v3-rating { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
.v3 .v3-rate {
  appearance: none; border: 0; cursor: pointer; height: 48px; padding: 0; border-radius: var(--r);
  background: var(--tile); color: var(--fg-2); font: 800 14px/1 var(--f);
  display: flex; align-items: center; justify-content: center; gap: 6px;
}
.v3 .v3-rate[aria-pressed="true"].v3-rate--ok  { background: var(--ok); color: var(--on-ok, #fff); }
.v3 .v3-rate[aria-pressed="true"].v3-rate--err { background: var(--err); color: var(--on-err, #fff); }
.v3 .v3-rate[aria-pressed="true"].v3-rate--na  { background: var(--fg-2); color: var(--app); }
.v3 .v3-rate[aria-pressed="true"].v3-rate--nv  { background: var(--fg-3); color: var(--app); }
.v3 .v3-rate[aria-pressed="true"].v3-rate--warn { background: var(--warn); color: #fff; }
.v3 .v3-rate:disabled { opacity: .45; cursor: not-allowed; }
.v3 .v3-rate[aria-pressed="true"]:disabled { opacity: 1; cursor: default; } /* csak olvasható / zárolt: a kiválasztott minősítés teljes színnel olvasható */
/* chip (helyiség számlálóval) */
.v3 .v3-chip {
  appearance: none; border: 0; cursor: pointer; display: inline-flex; align-items: center; gap: 8px;
  height: var(--h-chip); padding: 0 14px; border-radius: var(--r-full);
  background: var(--card); color: var(--fg); box-shadow: var(--shadow); font: 700 14px/1 var(--f); white-space: nowrap;
}
.v3 .v3-chip--count { padding-right: 6px; }
.v3 .v3-chip[aria-pressed="true"], .v3 .v3-chip.is-active { background: var(--fg); color: var(--app); box-shadow: none; }
/* csak olvasható mód (megtekintő): a letiltott chip és a nézetek saját, adatot író gombjai (WriteButton / Chip writes) — a kijelölés teljes színnel látszik, a többi halványabb */
/* az átlátszóság :where()-ben (nulla specificitás): a nézetek saját szabálya (pl. egy olvasható felirat-gomb `opacity: 1`) egyszerűen felülírhatja; a kurzor nem (a nézetek `cursor: pointer`-ét le kell nyomnia) */
.v3 button.is-ro:disabled { cursor: default; }
.v3 :where(button.is-ro:disabled:not(.is-on):not(.is-active):not([aria-pressed="true"]):not([aria-checked="true"]):not([aria-selected="true"])) { opacity: .55; }
.v3 .v3-chip__count {
  min-width: 28px; height: 28px; padding: 0 8px; border-radius: var(--r-full);
  display: inline-flex; align-items: center; justify-content: center; background: var(--tile); font: 700 12px/1 var(--f); color: inherit;
}
.v3 .v3-chip[aria-pressed="true"] .v3-chip__count, .v3 .v3-chip.is-active .v3-chip__count { background: var(--accent); color: #fff; }
/* kapcsoló */
.v3 .v3-toggle {
  appearance: none; border: 0; cursor: pointer; position: relative; flex: 0 0 auto;
  width: 50px; height: 30px; padding: 3px; border-radius: var(--r-full); background: var(--line-2);
  display: flex; align-items: center; justify-content: flex-start; transition: background-color .15s ease;
}
.v3 .v3-toggle__knob { width: 24px; height: 24px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.25); transition: transform .15s ease; }
.v3 .v3-toggle[aria-checked="true"] { background: var(--accent); }
.v3 .v3-toggle[aria-checked="true"] .v3-toggle__knob { transform: translateX(20px); }
.v3 .v3-toggle:disabled { opacity: .45; cursor: not-allowed; }
.v3 .v3-toggle[aria-checked="true"]:disabled { opacity: .7; cursor: default; }
/* találati felület ≥ 44 px (a kapcsoló vizuálisan 50×30 marad) */
.v3 .v3-toggle::after { content: ''; position: absolute; inset: -8px -4px; }
/* jelölőnégyzet-sor */
.v3 .v3-check { display: flex; align-items: center; gap: 12px; min-height: var(--tap-min); cursor: pointer; font: 600 15px/20px var(--f); }
.v3 .v3-check__box {
  width: 24px; height: 24px; flex: 0 0 auto; border-radius: var(--r-xs); background: var(--card); box-shadow: inset 0 0 0 2px var(--line-2);
  display: inline-flex; align-items: center; justify-content: center; color: #fff;
}
.v3 .v3-check[aria-checked="true"] .v3-check__box { background: var(--accent); box-shadow: none; }
.v3 .v3-check[aria-disabled="true"] { cursor: default; }
.v3 .v3-check[aria-disabled="true"]:not([aria-checked="true"]) { opacity: .6; }

/* ── kártya, csempe, állapot ──────────────────────────────────────────────── */
.v3 .v3-card { background: var(--card); border-radius: var(--r-card); box-shadow: var(--shadow); padding: 16px; }
.v3 .v3-card--flush { padding: 0; overflow: hidden; }
.v3 .v3-row {
  display: flex; align-items: center; gap: 12px; min-height: 58px; padding: 8px 12px;
  border-radius: var(--r-card-sm); background: var(--card); box-shadow: var(--shadow);
}
.v3 .v3-row__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.v3 .v3-row__title { font: 700 15px/20px var(--f); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v3 .v3-row__meta { font: 600 12px/16px var(--f); color: var(--fg-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v3 .v3-progress { height: 5px; border-radius: 3px; background: var(--tile); overflow: hidden; }
.v3 .v3-progress > i { display: block; height: 100%; border-radius: 3px; background: var(--mod, var(--accent)); }
.v3 .v3-badge {
  display: inline-flex; align-items: center; gap: 5px; height: 24px; padding: 0 9px; border-radius: var(--r-full);
  font: 700 12px/1 var(--f); white-space: nowrap; background: var(--tile); color: var(--fg-2);
}
.v3 .v3-badge--ok   { background: var(--ok-t);   color: var(--ok); }
.v3 .v3-badge--warn { background: var(--warn-t); color: var(--warn); }
.v3 .v3-badge--err  { background: var(--err-t);  color: var(--accent-fg); }
.v3 .v3-badge--draft{ background: var(--tile);   color: var(--fg-2); }
.v3 .v3-notice {
  display: flex; align-items: flex-start; gap: 10px; padding: 12px 14px; border-radius: var(--r);
  background: var(--tile); color: var(--fg); font: 600 14px/20px var(--f);
}
.v3 .v3-notice__ico { flex: 0 0 auto; margin-top: 1px; }
.v3 .v3-notice__body { flex: 1; min-width: 0; }
/* gombos értesítő (InlineNotice „action"): ha a gombok mellett nem fér el legalább ~220 px szöveg, a gombok a saját sorukba kerülnek,
   a szöveg alá igazítva (ikon 18 + rés 10 = 28 px). Enélkül telefonon a 4 gombos „Ismételt felülvizsgálat" kártya a szöveget
   egy-szó-széles oszlopba nyomta, és a gombok rácsúsztak (élesben jelezve, 2026-10-02). */
.v3 .v3-notice--act { flex-wrap: wrap; }
.v3 .v3-notice--act > .v3-notice__body { flex: 1 1 220px; }
.v3 .v3-notice--act > .v3-notice__body ~ * { flex: 0 1 auto; max-width: calc(100% - 28px); margin-left: 28px; }
.v3 .v3-notice__title { font-weight: 800; }
.v3 .v3-notice--ok   { background: var(--ok-t);   } .v3 .v3-notice--ok   .v3-notice__ico { color: var(--ok); }
.v3 .v3-notice--warn { background: var(--warn-t); } .v3 .v3-notice--warn .v3-notice__ico { color: var(--warn); }
.v3 .v3-notice--err  { background: var(--err-t);  } .v3 .v3-notice--err  .v3-notice__ico { color: var(--err); }
/* kritikus hibasáv az oldal tetején („Újra" gombbal) */
.v3 .v3-errbar {
  display: flex; align-items: center; gap: 10px; padding: 6px 8px 6px 14px; min-height: 56px; background: var(--err); color: #fff; font: 700 14px/20px var(--f);
}
.v3 .v3-errbar .v3-btn { height: var(--tap-min); padding: 0 14px; font-size: 14px; background: rgba(255,255,255,.18); color: #fff; box-shadow: none; }
/* sötétben a sáv --err (#fb7185) alapú: a fehér felirat csak ≈ 2,6 : 1 volt → sötét felirat (--on-err ≈ 6,2 : 1), ahogy a .v3-hold gombnál (5. kör F2) */
[data-theme="dark"] .v3 .v3-errbar, .v3[data-theme="dark"] .v3-errbar { color: var(--on-err); }
[data-theme="dark"] .v3 .v3-errbar .v3-btn, .v3[data-theme="dark"] .v3-errbar .v3-btn { background: color-mix(in srgb, var(--on-err) 14%, transparent); color: var(--on-err); }
/* visszavonás-sáv a lista tetején törlés után */
.v3 .v3-undobar {
  display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 6px 8px 6px 14px; min-height: 56px; border-radius: var(--r);
  background: var(--fg); color: var(--app); font: 700 14px/20px var(--f);
}
.v3 .v3-undobar .v3-btn { height: var(--tap-min); padding: 0 12px; background: transparent; color: var(--app); box-shadow: none; text-decoration: underline; }

/* ── hero (napi kártya / belépés) + KPI ───────────────────────────────────── */
.v3 .v3-hero {
  position: relative; overflow: hidden; border-radius: var(--r-hero); padding: 20px; color: #fff; background: var(--hero);
}
.v3 .v3-hero::after {
  content: ''; position: absolute; right: -60px; top: -60px; width: 220px; height: 220px; border-radius: 50%;
  border: 36px solid rgba(255,255,255,.10); pointer-events: none;
}
.v3 .v3-hero > * { position: relative; z-index: 1; }
.v3 .v3-kpi { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.v3 .v3-kpi__n { font: 800 28px/32px var(--f); letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.v3 .v3-kpi__l { font: 600 12px/16px var(--f); color: var(--fg-3); }
.v3 .v3-hero .v3-kpi__l { color: rgba(255,255,255,.82); }

/* ── haladásjelző (12 szegmens) + lépéslista ──────────────────────────────── */
.v3 .v3-stepbar { display: flex; align-items: center; gap: 10px; }
.v3 .v3-stepbar__segs { flex: 1; display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 3px; min-width: 0; }
.v3 .v3-stepbar__seg { height: 6px; border-radius: 3px; background: var(--line-2); }
.v3 .v3-stepbar__seg--ok   { background: var(--ok); }
.v3 .v3-stepbar__seg--warn { background: var(--warn); }
.v3 .v3-stepbar__seg--err  { background: var(--err); }
.v3 .v3-stepbar__seg--cur  { background: var(--fg); }
.v3 .v3-stepbar__pct { font: 800 13px/1 var(--f); color: var(--fg-2); font-variant-numeric: tabular-nums; min-width: 36px; text-align: right; }
.v3 .v3-step {
  appearance: none; border: 0; width: 100%; text-align: left; cursor: pointer;
  display: flex; align-items: center; gap: 12px; min-height: 58px; padding: 8px 12px; border-radius: var(--r-card-sm);
  background: var(--card); color: var(--fg); box-shadow: var(--shadow);
}
.v3 .v3-step--cur { background: var(--fg); color: var(--app); }
.v3 .v3-step--cur .v3-row__meta { color: inherit; opacity: .75; }
.v3 .v3-step--hidden { display: none; }
.v3 .v3-step__num {
  width: 36px; height: 36px; flex: 0 0 auto; border-radius: var(--r-sm); display: flex; align-items: center; justify-content: center;
  background: var(--tile); color: var(--fg-2); font: 800 14px/1 var(--f); font-variant-numeric: tabular-nums;
}
.v3 .v3-step__num--ok   { background: var(--ok);   color: #fff; }
.v3 .v3-step__num--warn { background: var(--warn); color: #fff; }
.v3 .v3-step__num--err  { background: var(--err);  color: #fff; }
.v3 .v3-step__num--cur  { background: var(--accent); color: #fff; }
.v3 .v3-phase { font: 800 12px/16px var(--f); color: var(--fg-3); padding: 12px 4px 4px; }
.v3 .v3-rail { display: flex; flex-direction: column; gap: 6px; width: 296px; }

/* ── lebegő navigáció (telefon) ───────────────────────────────────────────── */
.v3 .v3-nav {
  display: flex; align-items: center; justify-content: space-between; gap: 4px; height: 64px; padding: 6px 10px; border-radius: var(--r-full);
  background: var(--nav, #0b0b0f); color: var(--nav-fg, #fff); box-shadow: 0 10px 30px rgba(0,0,0,.28);
}
[data-theme="dark"] .v3 .v3-nav, .v3[data-theme="dark"] .v3-nav { --nav: #22222a; }
.v3 .v3-nav__item {
  appearance: none; border: 0; background: transparent; color: inherit; opacity: .62; cursor: pointer;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; flex: 1; min-width: 0;
  height: 52px; border-radius: var(--r-full); font: 700 11px/1 var(--f);
}
.v3 .v3-nav__item[aria-current="page"] { opacity: 1; background: rgba(255,255,255,.12); }
.v3 .v3-nav__plus {
  appearance: none; border: 0; flex: 0 0 auto; width: 52px; height: 52px; border-radius: 50%; cursor: pointer;
  background: var(--accent); color: #fff; box-shadow: var(--btn-sh); display: flex; align-items: center; justify-content: center;
}
.v3 .v3-nav__plus:disabled { opacity: .4; cursor: not-allowed; box-shadow: none; }

/* ── lap / panel ──────────────────────────────────────────────────────────── */
.v3 .v3-sheet { background: var(--card); border-radius: var(--r-sheet) var(--r-sheet) 0 0; box-shadow: var(--shadow); padding: 16px; }
.v3 .v3-scrim { background: var(--scrim); }
.v3 .v3-divider { height: 1px; background: var(--line); border: 0; margin: 0; }

/* ── nyomtatás: a v3 felület sosem kerül a PDF-be ─────────────────────────── */
@media print { .v3 .v3-nav, .v3 .v3-errbar, .v3 .v3-undobar { display: none !important; } }

/* ============================================================================
   ALKALMAZÁS-KERET (fejléc, navigáció, lapok, varázsló-keret)
   ============================================================================ */
html.v3-ui #esir-settings-launcher-btn, html.v3-ui #esir-logout-btn, html.v3-ui #esir-theme-toggle-btn, html.v3-ui #esir-beta-badge { display: none !important; } /* a régi, fix-pozíciós gombok: a v3 fejléc vezérli */
html.v3-ui body { margin: 0; background: var(--app); font-family: var(--f); }
.v3.v3-app { min-height: 100vh; display: flex; flex-direction: column; }

/* fejléc */
.v3 .v3-header {
  position: sticky; top: 0; z-index: 40; display: flex; align-items: center; gap: 12px;
  padding: 10px 16px; background: color-mix(in srgb, var(--app) 88%, transparent); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
}
@supports not (color: color-mix(in srgb, red 50%, blue)) { .v3 .v3-header { background: var(--app); } }
.v3 .v3-brand { appearance: none; border: 0; background: transparent; cursor: pointer; display: flex; align-items: center; gap: 10px; padding: 0; min-height: var(--tap-min); min-width: 0; flex: 0 1 auto; color: var(--fg); }
.v3 .v3-brand__mark { display: inline-flex; align-items: center; justify-content: center; border-radius: var(--r); background: var(--accent); color: #fff; font: 800 18px/1 var(--f); }
.v3 .v3-brand__name { font: 800 17px/1 var(--f); letter-spacing: -.02em; min-width: 0; max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v3 .v3-pillnav { display: flex; flex: 0 0 auto; align-items: center; gap: 2px; margin: 0 auto 0 8px; padding: 4px; border-radius: var(--r-full); background: var(--card); box-shadow: var(--shadow); }
.v3 .v3-pill {
  appearance: none; border: 0; cursor: pointer; background: transparent; color: var(--fg-2);
  display: inline-flex; align-items: center; gap: 7px; height: 38px; padding: 0 14px; border-radius: var(--r-full); font: 700 14px/1 var(--f); white-space: nowrap; position: relative;
}
.v3 .v3-pill::after { content: ''; position: absolute; inset: -3px 0; } /* találati felület ≥ 44 px (a pirula 38 px marad; a pirula-sáv 4 px-es belső margójában) */
.v3 .v3-pill[aria-current="page"] { background: var(--fg); color: var(--app); }
.v3 .v3-header__right { display: flex; align-items: center; gap: 8px; margin-left: auto; min-width: 0; flex: 0 1 auto; }
.v3 .v3-header__right .v3-btn--icon.v3-btn--md { width: 44px; height: 44px; border-radius: var(--r-full); }
.v3 .v3-searchbtn {
  appearance: none; border: 0; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; height: 44px; padding: 0 14px; border-radius: var(--r-full);
  background: var(--card); box-shadow: var(--shadow); color: var(--fg-3); font: 600 14px/1 var(--f);
}
.v3 .v3-kbd { font: 700 12px/1 var(--mono); padding: 3px 6px; border-radius: 5px; background: var(--tile); color: var(--fg-3); }
.v3 .v3-syncpill {
  appearance: none; border: 0; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; height: 36px; padding: 0 12px; border-radius: var(--r-full);
  background: var(--card); box-shadow: var(--shadow); color: var(--fg); font: 700 12px/1 var(--f); max-width: 190px;
  min-width: var(--tap-min); flex: 0 1 auto; position: relative; /* szűk fejlécben a felirat rövidül (…), a gomb nem lóg ki */
}
.v3 .v3-syncpill::after { content: ''; position: absolute; inset: -4px 0; } /* találati felület ≥ 44 px (a jelző 36 px marad) */
.v3 .v3-syncpill__label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v3 .v3-syncpill__dot { width: 8px; height: 8px; border-radius: 50%; flex: 0 0 auto; background: var(--line-2); }
.v3 .v3-syncpill__dot--ok { background: var(--ok); } .v3 .v3-syncpill__dot--warn { background: var(--warn); } .v3 .v3-syncpill__dot--err { background: var(--err); }
/* hiba-állapot (pl. „Nincs mentve" a mentés-hiba sávval együtt): a pirula maga is piros-tintes, felirata --accent-fg (5. kör E33) */
.v3 .v3-syncpill:has(.v3-syncpill__dot--err) { background: var(--card); background: color-mix(in srgb, var(--err) 12%, var(--card)); color: var(--accent-fg); box-shadow: none; } /* a --card-ra keverve (nem a mögötte lévő oldalra): a felirat ≥ 4,8 : 1 */
.v3 .v3-avatar { appearance: none; border: 0; cursor: pointer; width: 40px; height: 40px; border-radius: 50%; background: var(--fg); color: var(--app); font: 800 13px/1 var(--f); position: relative; }
.v3 .v3-avatar::after { content: ''; position: absolute; inset: -2px; } /* találati felület ≥ 44 px (az avatar 40 px marad) */
/* 900–1099 px: a teljes fejléc (márka + 5 pirula + keresés + jelző + téma + avatar ≈ 1020 px) nem fér el → a keresés ikon-gomb, a pirulák szűkebbek (nincs vízszintes görgetés) */
@media (max-width: 1099px) {
  .v3 .v3-searchbtn { padding: 0; width: 44px; justify-content: center; }
  .v3 .v3-searchbtn > span:not(.v3-ico) { display: none; }
  .v3 .v3-pill { padding: 0 10px; gap: 5px; }
  .v3 .v3-brand__name { max-width: 110px; }
}
.v3 .v3-menu {
  position: absolute; top: calc(100% + 8px); left: 0; z-index: 50; min-width: 220px; padding: 6px; border-radius: var(--r-card);
  background: var(--card); box-shadow: 0 14px 40px rgba(0,0,0,.18), var(--shadow);
}
.v3 .v3-menu--right { left: auto; right: 0; }
.v3 .v3-menu__who { display: flex; flex-direction: column; padding: 8px 10px 10px; border-bottom: 1px solid var(--line); margin-bottom: 4px; }
.v3 .v3-menu__item { appearance: none; border: 0; background: transparent; cursor: pointer; width: 100%; display: flex; align-items: center; gap: 10px; height: 44px; padding: 0 10px; border-radius: var(--r); color: var(--fg); font: 700 14px/1 var(--f); text-align: left; }
.v3 .v3-menu__item:hover, .v3 .v3-menu__item.is-active { background: var(--tile); }
.v3 .v3-menu__item.is-danger { color: var(--accent-fg); }

/* lap + tartalom */
.v3 .v3-main { flex: 1; width: 100%; max-width: 1280px; margin: 0 auto; padding: 8px 16px 120px; }
.v3 .v3-main--wiz { padding-bottom: 24px; }
.v3 .v3-page { padding: 8px 0; }
.v3 .v3-navwrap { position: fixed; left: 12px; right: 12px; bottom: 12px; z-index: 35; max-width: 520px; margin: 0 auto; }

/* előugró lap (Több, +, Lépések) */
.v3 .v3-overlay { position: fixed; inset: 0; z-index: 60; display: flex; align-items: flex-end; justify-content: center; background: var(--scrim); }
.v3 .v3-sheet--bottom { width: 100%; max-width: 560px; max-height: 88vh; overflow-y: auto; border-radius: var(--r-sheet) var(--r-sheet) 0 0; padding: 16px 16px 24px; background: var(--app); box-shadow: none; }
@media (min-width: 640px) { .v3 .v3-overlay { align-items: center; } .v3 .v3-sheet--bottom { border-radius: var(--r-sheet); } }
/* sötét téma (5. kör F4): a lap háttere (--app) ugyanolyan sötét volt, mint a (sötétített) oldal mögötte, a széle nem látszott → a lap széle --line-2 vonalat kap; a „Több" / „+" lap (soros lista) --card hátteret,
   a sorai --field-et (a --card sorok nem válnának el a --card laptól). A takarás: --scrim (sötétben rgba(0,0,0,.7)) — a .v3-overlay-en alkalmazva */
[data-theme="dark"] .v3 .v3-sheet--bottom, .v3[data-theme="dark"] .v3-sheet--bottom { box-shadow: 0 0 0 1px var(--line-2); }
[data-theme="dark"] .v3 .v3-sheet--bottom:has(> .v3-sheet__list), .v3[data-theme="dark"] .v3-sheet--bottom:has(> .v3-sheet__list) { background: var(--card); }
[data-theme="dark"] .v3 .v3-sheet--bottom > .v3-sheet__list .v3-sheetrow:not(.is-active), .v3[data-theme="dark"] .v3-sheet--bottom > .v3-sheet__list .v3-sheetrow:not(.is-active) { background: var(--field); box-shadow: none; }
[data-theme="dark"] .v3 .v3-sheet--bottom:has(> .v3-sheet__list) .v3-sheet__head .v3-btn, .v3[data-theme="dark"] .v3-sheet--bottom:has(> .v3-sheet__list) .v3-sheet__head .v3-btn { background: var(--field); box-shadow: none; }
.v3 .v3-sheet__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.v3 .v3-sheet__list { display: flex; flex-direction: column; gap: 6px; }
.v3 .v3-sheetrow { appearance: none; border: 0; cursor: pointer; width: 100%; display: flex; align-items: center; gap: 12px; min-height: 56px; padding: 8px 14px; border-radius: var(--r-card-sm); background: var(--card); box-shadow: var(--shadow); color: var(--fg); text-align: left; font: 700 15px/20px var(--f); }
.v3 .v3-sheetrow.is-active { background: var(--fg); color: var(--app); }
.v3 .v3-sheetrow.is-danger { color: var(--accent-fg); }
.v3 .v3-sheetrow__ico { width: 36px; height: 36px; flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; border-radius: var(--r-sm); background: var(--tile); }
.v3 .v3-sheetrow__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }

/* régi nézetek kerete az átállásig */
.v3 .v3-legacy { min-width: 0; }
.v3 .v3-legacy .step-card { animation: none; }

/* varázsló-keret */
.v3 .v3-wiz { display: flex; flex-direction: column; gap: 14px; }
.v3 .v3-wiz__top { display: flex; align-items: center; gap: 10px; padding: 4px 0; }
.v3 .v3-wiz__head { display: flex; align-items: center; gap: 12px; padding: 4px 0; }
.v3 .v3-wiz__title { margin: 0; overflow: hidden; text-overflow: ellipsis; }
.v3 .v3-wiz__foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding-top: 6px; }
.v3 .v3-wiz__foot .v3-btn--primary { flex: 1; max-width: 360px; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.v3 .v3-wiz__foot .v3-btn { min-width: 0; }
.v3 .v3-wiz__body { min-width: 0; }
.v3 .v3-savepill { display: inline-flex; align-items: center; gap: 8px; height: 32px; padding: 0 12px; border-radius: var(--r-full); background: var(--card); box-shadow: var(--shadow); font: 700 12px/1 var(--f); }
.v3 .v3-wiz--wide { display: grid; grid-template-columns: 296px minmax(0, 1fr); gap: 20px; align-items: start; }
.v3 .v3-wiz--wide .v3-wiz__rail { position: sticky; top: 76px; display: flex; flex-direction: column; gap: 12px; max-height: calc(100vh - 92px); overflow-y: auto; padding-bottom: 12px; }
.v3 .v3-wiz--wide .v3-wiz__main { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.v3 .v3-wiz__proj { display: flex; align-items: center; gap: 10px; }
.v3 .v3-wiz__prog { display: flex; flex-direction: column; gap: 8px; }

/* ── kezdőlap ─────────────────────────────────────────────────────────────── */
.v3 .v3-ellip { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v3 .v3-stack { display: flex; flex-direction: column; gap: 8px; }
.v3 .v3-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; }
.v3 .v3-chiprow { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.v3 .v3-home { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; padding-top: 4px; }
.v3 .v3-home__side { display: flex; flex-direction: column; gap: 14px; }
.v3 .v3-home__main { display: flex; flex-direction: column; gap: 22px; min-width: 0; }
@media (min-width: 1000px) { .v3 .v3-home { grid-template-columns: 360px minmax(0, 1fr); align-items: start; } .v3 .v3-home__side { position: sticky; top: 76px; } }
.v3 .v3-greet h1 { margin: 2px 0 0; }
.v3 .v3-hero__top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.v3 .v3-hero__chip { padding: 5px 10px; border-radius: var(--r-full); background: rgba(255,255,255,.18); font: 700 12px/1 var(--f); white-space: nowrap; }
.v3 .v3-hero__big { display: flex; align-items: baseline; gap: 10px; margin: 6px 0 12px; }
.v3 .v3-hero__num { font: 800 64px/64px var(--f); letter-spacing: -.045em; font-variant-numeric: tabular-nums; }
.v3 .v3-hero__segs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin-bottom: 14px; }
.v3 .v3-hero__segs i { height: 5px; border-radius: 3px; background: rgba(255,255,255,.28); } .v3 .v3-hero__segs i.on { background: #fff; }
.v3 .v3-hero__kpis { display: flex; gap: 22px; margin-bottom: 16px; }
.v3 .v3-hero .v3-kpi__n { font-size: 24px; line-height: 28px; }
.v3 .v3-resume { display: flex; align-items: stretch; gap: 6px; }
.v3 .v3-resume__main { appearance: none; border: 0; cursor: pointer; flex: 1; min-width: 0; display: flex; align-items: center; gap: 12px; text-align: left; padding: 12px 12px 12px 16px; border-radius: var(--r-card-sm); background: var(--card); color: var(--fg); }
.v3 .v3-resume__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.v3 .v3-resume__title { font: 800 16px/22px var(--f); overflow-wrap: anywhere; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } /* két sor (5. kör D3): a megrendelő neve nem vágódik le egyetlen sorban */
.v3 .v3-resume__sub { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; }
.v3 .v3-resume__play { width: 44px; height: 44px; flex: 0 0 auto; border-radius: var(--r); background: var(--accent); color: #fff; display: inline-flex; align-items: center; justify-content: center; }
.v3 .v3-resume__x { appearance: none; border: 0; cursor: pointer; width: var(--tap-min); border-radius: var(--r-card-sm); background: rgba(255,255,255,.16); color: #fff; display: inline-flex; align-items: center; justify-content: center; }
.v3 .v3-quick { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 8px; }
.v3 .v3-quick__item { appearance: none; border: 0; cursor: pointer; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; min-height: 76px; padding: 8px 4px; border-radius: var(--r-card-sm); background: var(--card); box-shadow: var(--shadow); color: var(--fg); font: 700 12px/16px var(--f); text-align: center; }
.v3 .v3-quick__item .v3-ico { color: var(--accent); }
.v3 .v3-section__head { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.v3 .v3-section__head h2 { margin: 0; }
.v3 .v3-empty { display: flex; align-items: center; gap: 10px; padding: 16px; border-radius: var(--r-card-sm); border: 1.5px dashed var(--line-2); color: var(--fg-3); font: 600 14px/20px var(--f); }
.v3 .v3-projcard { display: flex; flex-direction: column; gap: 12px; }
.v3 .v3-projcard__head { display: flex; align-items: flex-start; gap: 10px; }
.v3 .v3-projcard__id { font-size: 12px; white-space: nowrap; }
.v3 .v3-projcard__rows { display: flex; flex-direction: column; gap: 6px; }
.v3 .v3-modrow { appearance: none; border: 0; cursor: pointer; width: 100%; display: flex; align-items: center; gap: 10px; padding: 6px 8px; border-radius: var(--r); background: var(--field); color: var(--fg); text-align: left; }
.v3 .v3-modrow__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.v3 .v3-modrow__title { font: 700 14px/18px var(--f); }
.v3 .v3-modrow__pct { font: 700 13px/1 var(--f); color: var(--fg-2); min-width: 34px; text-align: right; }
/* el nem kezdett modul: csak chip (ikon + név), %-csík nélkül (5. kör D2) */
.v3 .v3-modchips { display: flex; flex-wrap: wrap; gap: 6px; }
.v3 .v3-modchip { appearance: none; border: 0; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; min-height: var(--tap-min); max-width: 100%; padding: 4px 14px 4px 4px; border-radius: var(--r-full); background: var(--field); box-shadow: inset 0 0 0 1px var(--field-line); color: var(--fg); font: 700 14px/18px var(--f); text-align: left; }
.v3 .v3-modchip .v3-tile-ico { flex: 0 0 auto; }
.v3 .v3-modchip__t { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v3 .v3-row--btn { appearance: none; border: 0; cursor: pointer; width: 100%; text-align: left; color: var(--fg); }
.v3 .v3-notice__actions { display: flex; flex-wrap: wrap; gap: 6px; }

/* ============================================================================
   RÉGI NÉZETEK BŐRE (ÁTMENETI — az átállásig, a képernyők új nézetre cserélésével szűnik meg)
   A meglévő, Tailwind-osztályos tartalom (`.v3-legacy`) az új tokeneket, betűt és formát kapja. A jegyzőkönyv-előnézet
   (`.v3-legacy-report`) NEM kap bőrt: az a dokumentum kinézete.
   ============================================================================ */
/* típus: nincs nagybetűs, ritkított felirat; min. 12 px */
.v3 .v3-legacy .uppercase:not(.report-page *) { text-transform: none !important; }
.v3 .v3-legacy [class*="tracking-"]:not(.report-page *) { letter-spacing: 0 !important; }
.v3 .v3-legacy .text-\[8px\]:not(.report-page *),
.v3 .v3-legacy .text-\[9px\]:not(.report-page *),
.v3 .v3-legacy .text-\[10px\]:not(.report-page *),
.v3 .v3-legacy .text-\[11px\]:not(.report-page *) { font-size: 12px !important; line-height: 16px; }
.v3 .v3-legacy .text-xs:not(.report-page *) { font-size: 13px; line-height: 18px; }
.v3 .v3-legacy .text-sm:not(.report-page *) { font-size: 14px; line-height: 20px; }
.v3 .v3-legacy .font-black:not(.report-page *),
.v3 .v3-legacy .font-extrabold:not(.report-page *) { font-weight: 800; }
.v3 .v3-legacy h1:not(.report-page *),
.v3 .v3-legacy h2:not(.report-page *),
.v3 .v3-legacy h3:not(.report-page *) { font-family: var(--f); letter-spacing: -.01em; }
.v3 .v3-legacy h2.text-xl:not(.report-page *),
.v3 .v3-legacy h2.text-2xl:not(.report-page *) { font-size: 20px; line-height: 26px; }
/* felületek */
.v3 .v3-legacy .bg-white:not(.report-page *),
.v3 .v3-legacy .bg-white\/90:not(.report-page *),
.v3 .v3-legacy .bg-white\/80:not(.report-page *) { background-color: var(--card) !important; }
.v3 .v3-legacy .bg-slate-50:not(.report-page *),
.v3 .v3-legacy .bg-slate-100:not(.report-page *),
.v3 .v3-legacy .bg-gray-50:not(.report-page *) { background-color: var(--field) !important; }
.v3 .v3-legacy .bg-slate-900:not(.report-page *),
.v3 .v3-legacy .bg-slate-950:not(.report-page *) { background-color: var(--fg) !important; color: var(--app) !important; }
.v3 .v3-legacy .step-card:not(.report-page *),
.v3 .v3-legacy .shadow-soft:not(.report-page *) { box-shadow: var(--shadow); }
/* szöveg */
.v3 .v3-legacy .text-slate-900:not(.report-page *),
.v3 .v3-legacy .text-slate-800:not(.report-page *),
.v3 .v3-legacy .text-black:not(.report-page *) { color: var(--fg) !important; }
.v3 .v3-legacy .text-slate-700:not(.report-page *),
.v3 .v3-legacy .text-slate-600:not(.report-page *) { color: var(--fg-2) !important; }
.v3 .v3-legacy .text-slate-500:not(.report-page *),
.v3 .v3-legacy .text-slate-400:not(.report-page *),
.v3 .v3-legacy .text-slate-300:not(.report-page *) { color: var(--fg-3) !important; }
.v3 .v3-legacy .text-red-600:not(.report-page *),
.v3 .v3-legacy .text-red-700:not(.report-page *),
.v3 .v3-legacy .text-red-500:not(.report-page *) { color: var(--accent-fg) !important; }
.v3 .v3-legacy .text-amber-700:not(.report-page *),
.v3 .v3-legacy .text-amber-800:not(.report-page *),
.v3 .v3-legacy .text-orange-700:not(.report-page *) { color: var(--warn) !important; }
.v3 .v3-legacy .text-emerald-700:not(.report-page *),
.v3 .v3-legacy .text-emerald-600:not(.report-page *),
.v3 .v3-legacy .text-green-700:not(.report-page *) { color: var(--ok) !important; }
.v3 .v3-legacy .text-sky-700:not(.report-page *),
.v3 .v3-legacy .text-sky-600:not(.report-page *),
.v3 .v3-legacy .text-cyan-700:not(.report-page *),
.v3 .v3-legacy .text-indigo-600:not(.report-page *) { color: var(--fg-2) !important; }
/* keret + sarok */
.v3 .v3-legacy .border-slate-100:not(.report-page *),
.v3 .v3-legacy .border-slate-200:not(.report-page *),
.v3 .v3-legacy .border-slate-300:not(.report-page *),
.v3 .v3-legacy .border-gray-200:not(.report-page *) { border-color: var(--line-2) !important; }
.v3 .v3-legacy .rounded:not(.report-page *),
.v3 .v3-legacy .rounded-md:not(.report-page *),
.v3 .v3-legacy .rounded-lg:not(.report-page *) { border-radius: var(--r) !important; }
.v3 .v3-legacy .rounded-xl:not(.report-page *),
.v3 .v3-legacy .rounded-2xl:not(.report-page *),
.v3 .v3-legacy .rounded-\[2rem\]:not(.report-page *) { border-radius: var(--r-card) !important; }
/* állapot-felületek */
.v3 .v3-legacy .bg-red-50:not(.report-page *),
.v3 .v3-legacy .bg-red-100:not(.report-page *) { background-color: var(--err-t) !important; }
.v3 .v3-legacy .border-red-100:not(.report-page *),
.v3 .v3-legacy .border-red-200:not(.report-page *),
.v3 .v3-legacy .border-red-300:not(.report-page *) { border-color: var(--err) !important; }
.v3 .v3-legacy .bg-amber-50:not(.report-page *),
.v3 .v3-legacy .bg-orange-50:not(.report-page *),
.v3 .v3-legacy .bg-yellow-50:not(.report-page *) { background-color: var(--warn-t) !important; }
.v3 .v3-legacy .border-amber-200:not(.report-page *),
.v3 .v3-legacy .border-amber-300:not(.report-page *),
.v3 .v3-legacy .border-orange-200:not(.report-page *) { border-color: var(--warn) !important; }
.v3 .v3-legacy .bg-emerald-50:not(.report-page *),
.v3 .v3-legacy .bg-emerald-100:not(.report-page *),
.v3 .v3-legacy .bg-green-50:not(.report-page *) { background-color: var(--ok-t) !important; }
.v3 .v3-legacy .border-emerald-100:not(.report-page *),
.v3 .v3-legacy .border-emerald-200:not(.report-page *) { border-color: var(--ok) !important; }
.v3 .v3-legacy .bg-sky-50:not(.report-page *),
.v3 .v3-legacy .bg-sky-100:not(.report-page *),
.v3 .v3-legacy .bg-cyan-50:not(.report-page *),
.v3 .v3-legacy .bg-indigo-50:not(.report-page *) { background-color: var(--tile) !important; }
.v3 .v3-legacy .border-sky-100:not(.report-page *),
.v3 .v3-legacy .border-sky-200:not(.report-page *),
.v3 .v3-legacy .border-cyan-200:not(.report-page *) { border-color: var(--line-2) !important; }
/* elsődleges gomb (piros) */
.v3 .v3-legacy .bg-red-600:not(.report-page *),
.v3 .v3-legacy .bg-red-500:not(.report-page *) { background-color: var(--accent) !important; color: #fff !important; border-color: transparent !important; box-shadow: var(--btn-sh); }
.v3 .v3-legacy .hover\:bg-red-700:not(.report-page *):hover,
.v3 .v3-legacy .hover\:bg-red-600:not(.report-page *):hover { background-color: var(--accent-2) !important; color: #fff !important; }
/* beviteli mezők: 52 px, 16 px betű, kitöltött */
.v3 .v3-legacy input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="color"]):not([type="hidden"]):not(.report-page *),
.v3 .v3-legacy select:not(.report-page *),
.v3 .v3-legacy textarea:not(.report-page *) {
  min-height: var(--h-ctl); font: 600 16px/24px var(--f) !important; color: var(--fg) !important; background-color: var(--field) !important;
  border: 0 !important; border-radius: var(--r) !important; box-shadow: none; outline: 0;
}
.v3 .v3-legacy textarea:not(.report-page *) { min-height: 96px; padding-top: 12px; padding-bottom: 12px; }
.v3 .v3-legacy input:not(.report-page *):focus,
.v3 .v3-legacy select:not(.report-page *):focus,
.v3 .v3-legacy textarea:not(.report-page *):focus { box-shadow: 0 0 0 2px var(--focus) !important; }
.v3 .v3-legacy input:not(.report-page *)::placeholder,
.v3 .v3-legacy textarea:not(.report-page *)::placeholder { color: var(--fg-3); opacity: .8; font-weight: 500; }
.v3 .v3-legacy input[type="checkbox"]:not(.report-page *),
.v3 .v3-legacy input[type="radio"]:not(.report-page *) { accent-color: var(--accent); width: 20px; height: 20px; }
.v3 .v3-legacy button:not(.report-page *) { min-height: var(--tap-min); }
.v3 .v3-legacy button.text-xs:not(.report-page *),
.v3 .v3-legacy button.text-sm:not(.report-page *),
.v3 .v3-legacy button[class*="px-"]:not(.report-page *) { border-radius: var(--r); font-weight: 700; }
/* a legacy kártyák és panelek lekerekítése */
.v3 .v3-legacy .measure-panel:not(.report-page *),
.v3 .v3-legacy .measure-room:not(.report-page *),
.v3 .v3-legacy .section-panel:not(.report-page *) { border-radius: var(--r-card) !important; background: var(--card) !important; box-shadow: var(--shadow) !important; border: 0 !important; }
.v3 .v3-legacy .filter-chip:not(.report-page *) { border-radius: var(--r-full) !important; min-height: var(--h-chip); font-weight: 700; }
.v3 .v3-legacy .filter-chip.is-active:not(.report-page *) { background: var(--fg) !important; color: var(--app) !important; border-color: transparent !important; }

/* ── keresés + szűrősor + lista-sorok ─────────────────────────────────────── */
.v3 .v3-search { position: relative; display: flex; align-items: center; flex: 1; min-width: 220px; }
.v3 .v3-search .v3-search__ico { position: absolute; left: 16px; color: var(--fg-3); pointer-events: none; }
.v3 .v3-search .v3-input { padding-left: 44px; padding-right: 44px; }
.v3 .v3-search input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; appearance: none; display: none; } /* a saját, 44 px-es törlés-gomb van helyette */
.v3 .v3-search__clear { appearance: none; border: 0; background: transparent; color: var(--fg-3); cursor: pointer; position: absolute; right: 4px; top: 50%; transform: translateY(-50%); width: var(--tap-min); height: var(--tap-min); border-radius: var(--r-full); display: inline-flex; align-items: center; justify-content: center; }
.v3 .v3-search__clear:hover { color: var(--fg); }
.v3 .v3-filterrow { display: flex; flex-wrap: wrap; gap: 8px; }
.v3 .v3-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.v3 .v3-pagehead { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.v3 .v3-pagehead h1 { margin: 0; }
.v3 .v3-listcard { display: flex; flex-direction: column; gap: 10px; }
.v3 .v3-listcard__head { display: flex; align-items: flex-start; gap: 12px; }
.v3 .v3-listcard__title { font: 800 17px/22px var(--f); letter-spacing: -.01em; }
.v3 .v3-listcard__actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
/* 5. kör D5 / D6: a „Frissítve" és a JKV-dátum nem tördelődik; a lista-kártya gombjai egy sorban (a ⋯ menü gombja fix méretű, a többi kitölti a sort) */
.v3 .v3-listcard__meta { white-space: nowrap; }
.v3 .v3-listcard__actions--fill { flex-wrap: nowrap; }
.v3 .v3-listcard__actions--fill > .v3-btn { flex: 1 1 0; min-width: 0; padding: 0 12px; }
.v3 .v3-listcard__actions--fill > .v3-btn--icon, .v3 .v3-listcard__actions--fill > .v3-ovf { flex: 0 0 auto; }
.v3 .v3-jkvline { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 2px 12px; }
.v3 .v3-jkvline__id { min-width: 0; font-size: 12px; line-height: 18px; color: var(--fg-2); overflow-wrap: anywhere; }
.v3 .v3-jkvline__date { white-space: nowrap; }
.v3 .v3-jkvline__sum { min-width: 0; }
.v3 .v3-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.v3 .v3-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 8px; }
.v3 .v3-fact { padding: 8px 10px; border-radius: var(--r); background: var(--field); min-width: 0; }
.v3 .v3-fact__l { font: 700 12px/16px var(--f); color: var(--fg-3); }
.v3 .v3-fact__v { font: 700 14px/20px var(--f); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v3 .v3-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 10px; }
.v3 .v3-kpicard { padding: 14px 16px; border-radius: var(--r-card); background: var(--card); box-shadow: var(--shadow); }
.v3 .v3-stack--lg { gap: 16px; }
.v3 .v3-cards--wide { grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); }
.v3 .v3-empty--big { padding: 28px 20px; flex-direction: row; align-items: flex-start; }

/* ── VBF mérések ──────────────────────────────────────────────────────────── */
.v3 .v3-grid2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.v3 .v3-measure-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 640px) { .v3 .v3-measure-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.v3 .v3-roomchips { display: flex; gap: 8px; overflow-x: auto; padding: 2px 2px 6px; scrollbar-width: none; }
.v3 .v3-roomchips::-webkit-scrollbar { display: none; }
.v3 .v3-roomchips .v3-chip { flex: 0 0 auto; }
.v3 .v3-roomhead__row { display: flex; align-items: center; gap: 12px; }
.v3 .v3-roomhead__name { appearance: none; border: 0; outline: 0; background: transparent; width: 100%; padding: 0; min-height: var(--tap-min); font: 800 22px/28px var(--f); letter-spacing: -.02em; color: var(--fg); }
.v3 .v3-roomhead__name:focus { box-shadow: 0 2px 0 var(--focus); }
.v3 .v3-device__head, .v3 .v3-gen__head, .v3 .v3-rcd__head { appearance: none; border: 0; cursor: pointer; width: 100%; display: flex; align-items: center; gap: 12px; padding: 12px; background: transparent; color: var(--fg); text-align: left; }
.v3 .v3-device__body, .v3 .v3-rcd__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.v3 .v3-device__title, .v3 .v3-rcd__title { font: 700 15px/20px var(--f); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v3 .v3-device__edit, .v3 .v3-gen__body { display: flex; flex-direction: column; gap: 12px; padding: 14px 12px 14px; border-top: 1px solid var(--line); }
.v3 .v3-rcdlist { display: flex; flex-direction: column; gap: 8px; }
.v3 .v3-rcd { border-radius: var(--r); background: var(--card); box-shadow: var(--shadow); }
.v3 .v3-on-card .v3-rcd { background: var(--field); box-shadow: none; }
.v3 .v3-rcd__head { padding: 10px 12px; }
.v3 .v3-rcd__edit { display: flex; flex-direction: column; gap: 10px; padding: 10px 12px 12px; border-top: 1px solid var(--line); }
.v3 .v3-photo-slot { min-width: 0; }

/* ── ellenőrző listák, opciókártyák ───────────────────────────────────────── */
.v3 .v3-check-list { display: flex; flex-direction: column; }
.v3 .v3-check-item { display: flex; flex-direction: column; gap: 10px; padding: 14px 0; border-top: 1px solid var(--line); }
.v3 .v3-check-item:first-child { border-top: 0; }
.v3 .v3-check-item__top { display: flex; align-items: flex-start; gap: 10px; }
.v3 .v3-check-item__idx { flex: 0 0 auto; min-width: 24px; font: 800 13px/20px var(--f); color: var(--fg-3); }
.v3 .v3-check-item__text { font: 600 15px/21px var(--f); }
.v3 .v3-check-item__more { align-self: flex-start; height: var(--tap-min); }
.v3 .v3-check-item__note { display: flex; flex-direction: column; gap: 10px; padding: 12px; border-radius: var(--r); background: var(--field); }
.v3 .v3-check-item__note .v3-textarea { background: var(--card); box-shadow: none; }
.v3 .v3-opts { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 8px; }
.v3 .v3-opt { appearance: none; border: 0; cursor: pointer; display: flex; align-items: center; gap: 12px; min-height: 56px; padding: 10px 14px; border-radius: var(--r-card-sm); text-align: left; background: var(--card); color: var(--fg); box-shadow: var(--shadow); font: 700 15px/20px var(--f); }
.v3 .v3-on-card .v3-opt { background: var(--field); box-shadow: none; }
.v3 .v3-opt.is-active { background: var(--fg); color: var(--app); box-shadow: none; }
.v3 .v3-opt.is-active .v3-t-meta { color: inherit; opacity: .75; }
.v3 .v3-opt__mark { width: 22px; height: 22px; flex: 0 0 auto; border-radius: 50%; box-shadow: inset 0 0 0 2px var(--line-2); display: inline-flex; align-items: center; justify-content: center; }
.v3 .v3-opt.is-active .v3-opt__mark { background: var(--accent); box-shadow: none; color: #fff; }
.v3 .v3-opt[role="checkbox"] .v3-opt__mark { border-radius: var(--r-xs); }
.v3 .v3-opt__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }

/* a régi nézetek betűje is a v3 betű (a régi „nagybetű → monospace" szabály ne érvényesüljön); kód/azonosító marad monospace */
.v3 .v3-legacy *:not(.report-page *):not(.font-mono):not(.v3-mono):not(code):not(pre):not(svg):not(svg *) { font-family: var(--f) !important; }

/* ── Naptár (FullCalendar) — nyers kép a v3-tokenekkel ──────────────────────── */
.v3 .v3-raw .fc { --fc-border-color: var(--line); --fc-page-bg-color: var(--card); --fc-neutral-bg-color: var(--tile);
  --fc-today-bg-color: var(--accent-tint); --fc-button-bg-color: var(--fg); --fc-button-border-color: var(--fg);
  --fc-button-hover-bg-color: var(--fg-2); --fc-button-hover-border-color: var(--fg-2);
  --fc-button-active-bg-color: var(--accent); --fc-button-active-border-color: var(--accent);
  font-family: var(--f); color: var(--fg); background: var(--card); border-radius: var(--r-card); box-shadow: var(--shadow); padding: 16px; }
.v3 .v3-raw .fc .fc-toolbar-title { font: 800 22px/28px var(--f); letter-spacing: -.02em; }
.v3 .v3-raw .fc .fc-button { font: 700 14px/1 var(--f); border-radius: var(--r-sm); color: var(--app); text-transform: none; padding: 10px 14px; box-shadow: none; }
.v3 .v3-raw .fc .fc-button:disabled { opacity: .45; }
.v3 .v3-raw .fc .fc-col-header-cell-cushion, .v3 .v3-raw .fc .fc-daygrid-day-number { color: var(--fg); font-weight: 700; text-decoration: none; }
.v3 .v3-raw .fc .fc-day-other .fc-daygrid-day-number { color: var(--fg-3); }
.v3 .v3-raw .fc .fc-event, .v3 .v3-raw .fc .fc-event-main { font-weight: 600; color: var(--fg); }
.v3 .v3-raw .fc .fc-list { border-color: var(--line); }
.v3 .v3-raw .fc .fc-list-day-cushion { background: var(--tile); }

/* ── visszajelzés (nincs lebegő üzenet): hibasáv + visszavonás-sáv, gomb-„Mentve", mezőhiba, jelző-villanás ─────────── */
.v3 .v3-feedback { position: sticky; top: 64px; z-index: 35; display: flex; flex-direction: column; gap: 8px; padding: 8px 16px 0; }
.v3 .v3-feedback .v3-errbar { border-radius: var(--r); }
.v3 .v3-errbar .v3-btn--icon, .v3 .v3-undobar .v3-btn--icon { width: var(--tap-min); padding: 0; text-decoration: none; }
.v3 .v3-syncpill--flash { max-width: 300px; animation: v3-flash .25s ease-out; }
@keyframes v3-flash { from { transform: scale(.96); opacity: .6; } to { transform: none; opacity: 1; } }
/* a megnyomott gombon rövid „Mentve" (a gomb saját tartalmához nem nyúlunk: takaró-réteg) */
.v3 button[data-v3-saved] { position: relative; }
.v3 button[data-v3-saved]::after {
  content: '✓ ' attr(data-v3-saved); position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  border-radius: inherit; background: var(--ok); color: #fff; font: 700 15px/1 var(--f); animation: v3-flash .2s ease-out;
}
[data-theme="dark"] .v3 button[data-v3-saved]::after { color: var(--on-ok, #052e1a); }
.v3 .v3-field-error { margin: 6px 2px 0; color: var(--accent-fg); font: 700 13px/18px var(--f); display: block; }
.v3 input[aria-invalid="true"], .v3 textarea[aria-invalid="true"], .v3 select[aria-invalid="true"] { outline: 2px solid var(--err); outline-offset: 1px; }
.v3 .v3-measure__input[aria-invalid="true"], .v3 .v3-eph__titleinput[aria-invalid="true"] { outline: 0; } /* a mérési csempe (v3-measure--err) már jelzi a hibát */

/* ── párbeszéd (megerősítés / tartsd-nyomva / másolható szöveg / értesítő) — src/v3/esir-v3-dialog.js ────────────────── */
.v3 .v3-overlay--top { z-index: 99999; }
.v3 .v3-dlg { display: flex; flex-direction: column; gap: 10px; background: var(--card); box-shadow: var(--shadow); }
.v3 .v3-dlg__title { display: flex; align-items: center; gap: 10px; font: 800 18px/24px var(--f); letter-spacing: -.01em; color: var(--fg); }
.v3 .v3-dlg__title.is-danger { color: var(--accent-fg); }
.v3 .v3-dlg__label { font: 800 16px/22px var(--f); color: var(--fg); }
.v3 .v3-dlg__msg { font: 600 14px/21px var(--f); color: var(--fg-2); }
.v3 .v3-dlg__actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: flex-end; margin-top: 6px; }
.v3 .v3-dlg__actions .v3-btn { height: 48px; }
.v3 .v3-dlg__cancel { width: 100%; height: 48px; }
.v3 .v3-dlg__text { width: 100%; border: 0; border-radius: var(--r); background: var(--field); color: var(--fg); padding: 12px; font-size: 12px; line-height: 18px; resize: vertical; }
.v3 .v3-btn--danger-solid { background: var(--err); color: #fff; box-shadow: none; }
[data-theme="dark"] .v3 .v3-btn--danger-solid { color: var(--on-err, #3f0a14); }
.v3 .v3-hold {
  appearance: none; border: 0; cursor: pointer; position: relative; overflow: hidden; width: 100%; height: 56px; border-radius: var(--r);
  background: var(--err); color: #fff; font: 800 16px/1 var(--f); touch-action: none; user-select: none; -webkit-user-select: none; margin-top: 4px;
}
[data-theme="dark"] .v3 .v3-hold { color: var(--on-err, #3f0a14); }
.v3 .v3-hold__fill { position: absolute; left: 0; top: 0; bottom: 0; width: 0; background: rgba(255,255,255,.28); }
.v3 .v3-hold__label { position: relative; z-index: 1; }

/* ── Jegyzőkönyv lépés: JKV-választó, aláírás + bélyegző, díjazás ─────────────────────────────────────────────────── */
.v3 .v3-jkvpick { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 10px; }
.v3 .v3-jkvpick__item {
  appearance: none; border: 2px solid transparent; cursor: pointer; background: var(--tile); border-radius: var(--r-card); padding: 12px 8px;
  display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; color: var(--fg); font: 700 13px/17px var(--f);
}
.v3 .v3-jkvpick__item.is-active { border-color: var(--accent); background: var(--accent-tint); }
.v3 .v3-jkvpick__name { max-width: 100%; white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.v3 .v3-grid4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
@media (max-width: 640px) { .v3 .v3-grid4 { grid-template-columns: 1fr 1fr; } }
.v3 .v3-sigview { position: relative; min-height: 96px; border-radius: var(--r); background: var(--field); display: flex; align-items: center; justify-content: center; gap: 16px; padding: 10px; flex-wrap: wrap; }
.v3 .v3-sigview img { max-height: 84px; max-width: 70%; object-fit: contain; }
.v3 .v3-sigview .v3-sigview__stamp { max-height: 64px; max-width: 120px; transform: rotate(-4deg); opacity: .92; }
.v3 .v3-sigactions { display: flex; flex-wrap: wrap; gap: 4px 14px; }
.v3 .v3-stamprow { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: var(--r); background: var(--app); }
.v3 .v3-stamprow__img { width: 72px; height: 44px; object-fit: contain; flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; border-radius: 8px; }
.v3 .v3-stamprow__img--empty { background: var(--tile); color: var(--fg-3); }
.v3 .v3-signpad__area { position: relative; border-radius: var(--r); background: var(--field); overflow: hidden; border: 2px dashed var(--line-2); }
.v3 .v3-signpad__ph { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: var(--fg-3); font: 600 14px/20px var(--f); pointer-events: none; text-align: center; padding: 8px; }
.v3 .v3-signpad__bar { display: flex; align-items: center; gap: 8px; margin-top: 8px; }
.v3 .v3-checkrow { display: flex; align-items: center; gap: 10px; min-height: var(--tap-min); font: 600 14px/20px var(--f); color: var(--fg); cursor: pointer; }
.v3 .v3-checkrow input { width: 18px; height: 18px; accent-color: var(--accent); flex: 0 0 auto; }
.v3 .v3-feeunit { display: grid; grid-template-columns: 1fr 1fr 1fr auto; gap: 10px; align-items: end; padding: 12px; border-radius: var(--r); background: var(--app); }
@media (max-width: 640px) { .v3 .v3-feeunit { grid-template-columns: 1fr 1fr; } }
.v3 .v3-feeunit__sum { font: 800 15px/20px var(--f); text-align: right; padding-bottom: 14px; }
.v3 .v3-feesum { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.v3 .v3-feesum__gross { font: 800 20px/24px var(--f); }
.v3 .v3-notice__list { margin: 4px 0 0; padding-left: 18px; list-style: disc; font: 600 14px/20px var(--f); }
.v3 .v3-preview { width: 100%; border: 0; border-radius: var(--r); background: #fff; min-height: 600px; }
.v3 .v3-wiz__footgroup { display: flex; gap: 10px; flex-wrap: wrap; justify-content: flex-end; }

/* ── fotó a ponthoz kötve: bélyegképek + nézegető ─────────────────────────────────────────────────────────────────── */
.v3 .v3-photoattach { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.v3 .v3-photoattach .v3-btn--chip { cursor: pointer; }
.v3 .v3-btn--quiet { background: var(--tile); box-shadow: none; }
.v3 .v3-photothumb { appearance: none; border: 0; padding: 0; position: relative; width: 44px; height: 44px; border-radius: var(--r); overflow: hidden; cursor: pointer; background: var(--tile); box-shadow: var(--shadow); }
.v3 .v3-photothumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.v3 .v3-photothumb.is-hidden img { opacity: .45; filter: grayscale(1); }
.v3 .v3-photothumb--more { font: 800 13px/1 var(--f); color: var(--fg-2); display: inline-flex; align-items: center; justify-content: center; }
.v3 .v3-photothumb__st { position: absolute; right: 2px; bottom: 2px; }
.v3 .v3-photoview { display: flex; flex-direction: column; gap: 12px; background: var(--card); }
.v3 .v3-photoview__img { position: relative; background: var(--field); border-radius: var(--r); display: flex; align-items: center; justify-content: center; max-height: 46vh; overflow: hidden; }
.v3 .v3-photoview__img img { max-width: 100%; max-height: 46vh; object-fit: contain; display: block; }
.v3 .v3-photoview__nav { position: absolute; top: 50%; transform: translateY(-50%); width: var(--tap-min); height: var(--tap-min); border-radius: 50%; border: 0; background: rgba(0,0,0,.45); color: #fff; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; }
.v3 .v3-photoview__nav--prev { left: 8px; } .v3 .v3-photoview__nav--next { right: 8px; }

/* összecsukott ponton csak a már meglévő fotók bélyegképei látszanak (a felvétel-gombok a lenyitott „Megjegyzés / fotó" alatt) */
.v3 .v3-photo-slot.is-compact .v3-photoattach > label, .v3 .v3-photo-slot.is-compact .v3-photoattach > input { display: none; }
.v3 .v3-photo-slot.is-compact .v3-photoattach:not(:has(.v3-photothumb)) { display: none; }

/* ── Feladatok / JKV-k lépés ────────────────────────────────────────────────────────────────────────────────────── */
.v3 .v3-chiprow { display: flex; flex-wrap: wrap; gap: 8px; }
.v3 .v3-objgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; }
.v3 .v3-objcard {
  appearance: none; border: 2px solid transparent; cursor: pointer; background: var(--tile); border-radius: var(--r-card); padding: 12px 14px; color: var(--fg);
  display: flex; align-items: center; gap: 12px; text-align: left; font: 700 15px/20px var(--f);
}
.v3 .v3-objcard.is-on { border-color: var(--accent); background: var(--accent-tint); }
.v3 .v3-activeobj {
  appearance: none; border: 0; cursor: pointer; width: 100%; display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: var(--r-card);
  background: var(--card); box-shadow: var(--shadow); color: var(--fg); text-align: left;
}
.v3 .v3-linkish { color: var(--accent-fg); font: 700 14px/20px var(--f); }
.v3 .v3-modgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 10px; }
.v3 .v3-modcard {
  appearance: none; border: 2px solid transparent; cursor: pointer; text-align: left; color: var(--fg); background: var(--card); box-shadow: var(--shadow);
  border-radius: var(--r-card); padding: 12px; display: flex; align-items: center; gap: 12px; min-height: 68px;
}
.v3 .v3-modcard.is-on { border-color: var(--accent); background: var(--accent-tint); }
.v3 .v3-modcard.is-locked { opacity: .5; cursor: not-allowed; }
.v3 .v3-modcard__check { width: 24px; height: 24px; border-radius: 8px; border: 2px solid var(--line-2); display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; color: var(--fg-3); }
.v3 .v3-modcard__check.is-on { background: var(--accent); border-color: var(--accent); color: #fff; }
.v3 .v3-task { display: flex; flex-direction: column; gap: 10px; padding: 12px; border-radius: var(--r); background: var(--app); }
.v3 .v3-input--sm { height: 44px; padding: 0 10px; border-radius: var(--r); font: 700 13px/1 var(--f); }
.v3 .v3-choice {
  appearance: none; border: 2px solid transparent; cursor: pointer; text-align: left; color: var(--fg); background: var(--tile); border-radius: var(--r-card); padding: 12px 14px;
  display: flex; flex-direction: column; gap: 2px; align-items: flex-start;
}
.v3 .v3-choice.is-on { border-color: var(--accent); background: var(--accent-tint); }
.v3 .v3-choice__t { font: 800 15px/20px var(--f); }
/* a régi oldal- és szekció-címek (h1/h2 piros) az új felületen sima szöveg-színűek (a hangsúly a márkaszínű gombokon / jelzéseken van) */
.v3 .v3-legacy h1.text-red-600:not(.report-page *), .v3 .v3-legacy h2.text-red-600:not(.report-page *) { color: var(--fg) !important; }

/* ── Szinkron állapot lap (esir-v3-syncsheet.jsx): összegző kártya + fülek ───────────────────────────── */
.v3 .v3-sync { max-width: 640px; display: flex; flex-direction: column; gap: 12px; }
.v3 .v3-sync .v3-sheet__head { margin-bottom: 0; }
.v3 .v3-sync__hero { display: flex; gap: 14px; align-items: center; padding: 14px 16px; border-radius: var(--r-card); background: var(--card); box-shadow: var(--shadow); }
.v3 .v3-sync__hero-ico { flex: none; width: 48px; height: 48px; border-radius: var(--r-card); display: inline-flex; align-items: center; justify-content: center; background: var(--tile); color: var(--fg-2); }
.v3 .v3-sync__hero.is-ok .v3-sync__hero-ico { background: var(--ok-t); color: var(--ok); }
.v3 .v3-sync__hero.is-warn .v3-sync__hero-ico { background: var(--warn-t); color: var(--warn); }
.v3 .v3-sync__hero.is-err .v3-sync__hero-ico { background: var(--err-t); color: var(--err); }
.v3 .v3-sync__hero-body { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.v3 .v3-sync__hero-title { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font: 800 18px/24px var(--f); letter-spacing: -.01em; }
.v3 .v3-sync__pane { display: flex; flex-direction: column; gap: 10px; min-height: 120px; }
.v3 .v3-sync__list { display: flex; flex-direction: column; gap: 8px; }
.v3 .v3-sync__item { display: flex; flex-direction: column; gap: 10px; padding: 12px 14px; border-radius: var(--r-card); background: var(--card); box-shadow: var(--shadow); border-left: 4px solid var(--line-2); }
.v3 .v3-sync__item.is-ok { border-left-color: var(--ok); }
.v3 .v3-sync__item.is-warn { border-left-color: var(--warn); }
.v3 .v3-sync__item.is-err { border-left-color: var(--err); }
.v3 .v3-sync__item-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; overflow-wrap: anywhere; }
.v3 .v3-sync__item-main > strong { font: 800 15px/20px var(--f); }
.v3 .v3-sync__item-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.v3 .v3-sync__rows { margin: 0; display: flex; flex-direction: column; border-radius: var(--r-card); background: var(--card); box-shadow: var(--shadow); overflow: hidden; }
.v3 .v3-sync__row { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 10px 14px; border-top: 1px solid var(--line); min-width: 0; }
.v3 .v3-sync__row:first-child { border-top: 0; }
.v3 .v3-sync__row dt { margin: 0; font: 600 13px/18px var(--f); color: var(--fg-2); }
.v3 .v3-sync__row dd { margin: 0; font: 800 13px/18px var(--f); text-align: right; overflow-wrap: anywhere; }
.v3 .v3-sync__row.is-ok dd { color: var(--ok); }
.v3 .v3-sync__row.is-warn dd { color: var(--warn); }
.v3 .v3-sync__row.is-danger dd { color: var(--accent-fg); }
.v3 .v3-sync__row.is-muted dd { color: var(--fg-2); }
.v3 .v3-sync__row.is-wrap { flex-direction: column; align-items: flex-start; gap: 2px; }
.v3 .v3-sync__row.is-wrap dd { text-align: left; font-weight: 600; }
.v3 .v3-sync__empty { display: flex; align-items: center; gap: 10px; padding: 18px 14px; border-radius: var(--r-card); background: var(--card); box-shadow: var(--shadow); color: var(--fg-2); font: 600 14px/20px var(--f); }
.v3 .v3-sync__disc { display: flex; flex-direction: column; gap: 8px; }
.v3 .v3-sync__disc-btn { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: var(--tap-min); padding: 0 14px; border: 0; border-radius: var(--r-card); background: var(--card); box-shadow: var(--shadow); cursor: pointer; font: 700 14px/20px var(--f); }
.v3 .v3-sync__disc-btn > span { display: inline-flex; align-items: center; gap: 10px; }
.v3 .v3-sync__disc-body { display: flex; flex-direction: column; gap: 10px; padding-left: 4px; }
.v3 .v3-sync__filters { display: flex; flex-wrap: wrap; gap: 8px; }
.v3 .v3-sync__input { flex: 1 1 200px; min-width: 0; height: var(--tap-min); border: 0; border-radius: var(--r); background: var(--field); color: var(--fg); padding: 0 12px; font: 600 14px var(--f); }
.v3 .v3-sync__tog { height: var(--tap-min); border: 0; border-radius: var(--r-full); padding: 0 14px; background: var(--card); box-shadow: var(--shadow); font: 700 13px var(--f); cursor: pointer; }
.v3 .v3-sync__tog.is-on { background: var(--fg); color: var(--app); }
.v3 .v3-sync__admin-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.v3 .v3-sync__foot { display: flex; flex-wrap: wrap; gap: 10px; position: sticky; bottom: -24px; padding: 12px 0 0; background: linear-gradient(to top, var(--app) 70%, transparent); }
.v3 .v3-sync__foot .v3-btn { flex: 1 1 180px; }
.v3 .v3-sync__lock { position: fixed; left: 12px; right: 12px; bottom: 96px; z-index: 55; max-width: 460px; margin-left: auto; }
@media (min-width: 640px) { .v3 .v3-sync__item { flex-direction: row; align-items: center; justify-content: space-between; } .v3 .v3-sync__item-actions { justify-content: flex-end; flex: none; max-width: 55%; } }
.v3 .v3-sync .v3-tabs { grid-auto-columns: max-content; }
/* 5. kör D7: a görgethető fül-sáv szélén elhalványulás (balra / jobbra, ha van még fül) — a fül nem levágottnak látszik, hanem kifut a sávból */
.v3 .v3-sync__tabs { position: relative; flex-shrink: 0; }
.v3 .v3-sync__tabs::before, .v3 .v3-sync__tabs::after { content: ''; position: absolute; top: 0; bottom: 0; z-index: 2; pointer-events: none; opacity: 0; transition: opacity .15s ease; }
.v3 .v3-sync__tabs::before { left: 0; width: 20px; border-radius: var(--r-card-sm) 0 0 var(--r-card-sm); background: linear-gradient(to right, var(--card), transparent); }
.v3 .v3-sync__tabs::after { right: 0; width: 36px; border-radius: 0 var(--r-card-sm) var(--r-card-sm) 0; background: linear-gradient(to left, var(--card) 35%, transparent); }
.v3 .v3-sync__tabs[data-fade-l="1"]::before, .v3 .v3-sync__tabs[data-fade-r="1"]::after { opacity: 1; }
.v3 .v3-sync__tabs .v3-tab[aria-selected="true"] { position: relative; z-index: 3; } /* az aktív fület az elhalványulás sem takarja (a sáv végén, ahol a mélyebb igazítás nem fér ki) */
.v3 .v3-sync .v3-tab { flex: none; min-width: auto; }

/* ── Keresés (⌘K) lap (esir-v3-palette.jsx) ──────────────────────────────────────────────────────────── */
.v3 .v3-cmd-backdrop { position: fixed; inset: 0; z-index: 70; display: flex; align-items: flex-start; justify-content: center; padding: 10vh 12px 12px; background: var(--scrim); }
.v3 .v3-cmd { width: 100%; max-width: 640px; max-height: 76vh; display: flex; flex-direction: column; overflow: hidden; border-radius: var(--r-sheet); background: var(--card); box-shadow: var(--shadow); }
.v3 .v3-cmd__head { display: flex; align-items: center; gap: 12px; padding: 0 12px 0 18px; height: 60px; border-bottom: 1px solid var(--line); color: var(--fg-3); flex: none; }
.v3 .v3-cmd__head input { flex: 1; min-width: 0; height: 100%; border: 0; outline: 0; background: transparent; color: var(--fg); font: 700 16px var(--f); }
.v3 .v3-cmd__head input::placeholder { color: var(--fg-3); font-weight: 600; }
.v3 .v3-cmd__esc { height: 32px; padding: 0 10px; border: 0; border-radius: var(--r); background: var(--field); color: var(--fg-2); font: 700 12px var(--f); cursor: pointer; position: relative; }
.v3 .v3-cmd__esc::after { content: ''; position: absolute; inset: -6px -4px; } /* találati felület ≥ 44 px (a gomb 32 px marad) */
.v3 .v3-cmd__list { overflow-y: auto; padding: 8px; display: flex; flex-direction: column; gap: 2px; }
.v3 .v3-cmd__item { display: flex; align-items: center; gap: 12px; width: 100%; min-height: 56px; padding: 8px 10px; border: 0; border-radius: var(--r-card); background: transparent; text-align: left; cursor: pointer; }
.v3 .v3-cmd__item:hover, .v3 .v3-cmd__item:focus-visible, .v3 .v3-cmd__item.is-active { background: var(--accent-tint); }
.v3 .v3-cmd__ico { flex: none; width: 40px; height: 40px; border-radius: var(--r); display: inline-flex; align-items: center; justify-content: center; background: var(--tile); color: var(--fg-2); }
.v3 .v3-cmd__item.is-active .v3-cmd__ico { background: var(--accent); color: #fff; }
.v3 .v3-cmd__txt { min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.v3 .v3-cmd__title { font: 800 15px/20px var(--f); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v3 .v3-cmd__meta { font: 600 12px/16px var(--f); color: var(--fg-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v3 .v3-cmd__empty { padding: 28px 14px; text-align: center; color: var(--fg-3); font: 600 14px var(--f); }
@media (max-width: 639px) { .v3 .v3-cmd-backdrop { padding-top: 12px; } .v3 .v3-cmd { max-height: 86vh; } }

/* ── Hibaszótár lap (esir-v3-defectpicker.jsx) ───────────────────────────────────────────────────────── */
.v3 .v3-defpick { max-width: 640px; display: flex; flex-direction: column; gap: 12px; max-height: 88vh; }
.v3 .v3-defpick .v3-sheet__head { margin-bottom: 0; }
.v3 .v3-defpick__search { display: flex; align-items: center; gap: 10px; padding: 0 14px; height: var(--h-ctl); border-radius: var(--r-card); background: var(--card); box-shadow: var(--shadow); color: var(--fg-3); flex: none; }
.v3 .v3-defpick__search input { flex: 1; min-width: 0; height: 100%; border: 0; outline: 0; background: transparent; color: var(--fg); font: 700 15px var(--f); }
.v3 .v3-defpick .v3-chiprow { flex: none; }
.v3 .v3-defpick__list { display: flex; flex-direction: column; gap: 8px; overflow-y: auto; min-height: 0; padding-bottom: 8px; }
.v3 .v3-defpick__item { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; padding: 12px 14px; border: 0; border-radius: var(--r-card); background: var(--card); box-shadow: var(--shadow); cursor: pointer; color: var(--fg); }
.v3 .v3-defpick__item:hover, .v3 .v3-defpick__item:focus-visible { box-shadow: 0 0 0 2px var(--accent); }
.v3 .v3-defpick__main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.v3 .v3-defpick__title { font: 800 15px/20px var(--f); }
.v3 .v3-defpick__tags { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.v3 .v3-defpick__note { font: 600 13px/18px var(--f); color: var(--fg-2); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.v3 .v3-defpick { overflow: hidden; }
.v3 .v3-defpick > * { flex: none; }
.v3 .v3-defpick > .v3-defpick__list { flex: 1 1 auto; min-height: 0; }
.v3 .v3-defpick__item { flex: none; }

/* ── 5. kör: varázsló-váz v4 ──────────────────────────────────────────────────────────────────────────────────
   Claude Design 3. átadás („ESIR Telefon varazslo v4"): A1–A6, B1–B4, C4, E1, E5, E7, E8, E11 (K1), F5, F8.
   Csak tokenek (var(--…)), nincs nyomatékos (felülíró) szabály, nincs hexa / rgb szín. A szakasz a fájl VÉGÉN áll; a fenti szabályokat felülírja (azonos specificitásnál a későbbi nyer).
   ──────────────────────────────────────────────────────────────────────────────────────────────────────────── */

/* piros SZÖVEG: az --accent-fg token (K, 5. kör F1 / J3: témánként külön érték, a márkaszínhez igazodik) */

/* A1 — telefon: a varázslóban NINCS ESIR-sáv. Fent egyetlen 56 px-es sor + 4 px-es haladáscsík (WizardTopBar), lent rögzített sáv (WizardBottomBar). */
.v3 .v3-main--wizphone { padding: 0 16px; }
.v3 .v3-wiz--phone { --v3-wtop-h: calc(max(14px, env(safe-area-inset-top, 0px)) + 70px); gap: 0; min-height: 100vh; min-height: 100dvh; }
.v3 .v3-wiz--phone > .v3-wiz__body { flex: 1 1 auto; }
.v3.v3-app--wizphone { --v3-wtop-h: calc(max(14px, env(safe-area-inset-top, 0px)) + 70px); } /* (a .v3 és a .v3-app--wizphone ugyanaz az elem: V3Root) */
.v3.v3-app--wizphone .v3-feedback { position: fixed; top: var(--v3-wtop-h); left: 0; right: 0; } /* hibasáv / visszavonás-sáv a vékony fejléc alatt, a tartalom fölött lebegve (nem tolja le a fejlécet) */
.v3 .v3-wtop { position: sticky; top: 0; z-index: 31; margin: 0 -16px; padding: max(14px, env(safe-area-inset-top, 0px)) 16px 10px; background: var(--app); }
.v3 .v3-wtop__row { height: 56px; display: flex; align-items: center; gap: 10px; }
.v3 .v3-wtop__close { appearance: none; border: 0; cursor: pointer; flex: 0 0 auto; width: var(--tap-min); height: var(--tap-min); border-radius: var(--r-full); background: var(--card); color: var(--fg); box-shadow: var(--shadow); display: inline-flex; align-items: center; justify-content: center; }
.v3 .v3-wtop__titles { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.v3 .v3-wtop__ctx { font: 700 12px/16px var(--f); color: var(--fg-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v3 .v3-wtop__title { margin: 0; font: 800 17px/22px var(--f); letter-spacing: -.01em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v3 .v3-wtop__pill { appearance: none; border: 0; cursor: pointer; position: relative; flex: 0 0 auto; height: 30px; max-width: 132px; padding: 0 10px; border-radius: var(--r-full); background: var(--card); color: var(--fg); box-shadow: var(--shadow); display: inline-flex; align-items: center; gap: 6px; font: 700 12px/1 var(--f); }
.v3 .v3-wtop__pill::after { content: ''; position: absolute; inset: -7px -2px; } /* találati felület ≥ 44 px (a pirula 30 px marad) */
.v3 .v3-wtop__pilltxt { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v3 .v3-wtop__bar { height: 4px; border-radius: 2px; background: var(--line-2); overflow: hidden; }
.v3 .v3-wtop__bar > i { display: block; height: 100%; border-radius: 2px; background: var(--accent); }

/* A2 / E1 — rögzített alsó sáv: ‹ · lépésgomb · › (telefon) · Vissza · állapot · Tovább (gép, a tartalomoszlopban) */
.v3 .v3-wbar { position: sticky; bottom: 0; z-index: 30; display: grid; align-items: center; gap: 8px; background: var(--card); border-top: 1px solid var(--line); }
.v3 .v3-wiz--phone .v3-wbar { margin: 12px -16px 0; padding: 8px 16px max(22px, env(safe-area-inset-bottom, 0px)); }
.v3 .v3-wbar--steps { grid-template-columns: 52px minmax(0, 1fr) 52px; }
.v3 .v3-wbar--list { grid-template-columns: 52px 52px minmax(0, 1fr); }
.v3 .v3-wbar--report { grid-template-columns: 52px minmax(0, 1fr) minmax(0, 1fr); }
.v3 .v3-wbar__btn, .v3 .v3-wbar__center {
  appearance: none; border: 0; cursor: pointer; min-width: 0; height: 52px; padding: 0 12px; border-radius: 12px; background: var(--tile); color: var(--fg);
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; font: 700 14px/1 var(--f); white-space: nowrap;
}
.v3 .v3-wbar__center { width: 100%; }
.v3 .v3-wbar__centertxt { min-width: 0; overflow: hidden; text-overflow: ellipsis; font-variant-numeric: tabular-nums; }
.v3 .v3-wbar__sq { width: 52px; padding: 0; }
.v3 .v3-wbar__sq--next { background: var(--fg); color: var(--app); }
.v3 .v3-wbar__btn:disabled { opacity: .4; cursor: not-allowed; }
.v3 .v3-wbar .v3-btn { height: 52px; min-width: 0; padding: 0 14px; border-radius: 12px; font-size: 15px; }
.v3 .v3-wbar .v3-btn--secondary { background: var(--tile); box-shadow: none; }
.v3 .v3-wbar .v3-btn--primary:disabled { box-shadow: none; }
.v3 .v3-wbar--wide { grid-template-columns: auto minmax(0, 1fr) auto; gap: 12px; padding: 10px 14px; margin-top: 4px; border: 0; border-radius: var(--r-card) var(--r-card) 0 0; box-shadow: var(--shadow); }
.v3 .v3-wbar--wide .v3-btn { padding: 0 22px; }
.v3 .v3-wbar__state { text-align: center; font: 700 13px/18px var(--f); color: var(--fg-3); font-variant-numeric: tabular-nums; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v3 .v3-wbar__pair { display: flex; gap: 8px; }
.v3 .v3-wbar__pair .v3-btn { padding: 0 18px; }
/* E1 — gép: a lépéslista ragad, saját görgetéssel */
.v3 .v3-wiz--wide .v3-wiz__rail { top: 72px; max-height: calc(100vh - 88px); overscroll-behavior: contain; }

/* A5 — az alfülek (lépés-szintű fül-sáv): vízszintesen görgethető pirulasor, a felirat sosem vágódik, a szélén elhalványul (a fülön a kész / összes szám marad) */
.v3 .v3-tabs[data-steplevel] { display: flex; gap: 6px; padding: 2px 0; border-radius: 0; background: transparent; box-shadow: none; }
.v3 .v3-tabs[data-steplevel] .v3-tab { position: relative; flex: 0 0 auto; height: 40px; padding: 0 14px; border-radius: var(--r-full); background: var(--card); box-shadow: var(--shadow); font-size: 13px; }
.v3 .v3-tabs[data-steplevel] .v3-tab::after { content: ''; position: absolute; inset: -2px 0; } /* találati felület 44 px (a pirula 40 px marad) */
.v3 .v3-tabs[data-steplevel] .v3-tab[aria-selected="true"] { background: var(--fg); color: var(--app); box-shadow: none; }
.v3 .v3-tabs[data-fade="right"] { -webkit-mask-image: linear-gradient(to right, var(--fg) calc(100% - 28px), transparent); mask-image: linear-gradient(to right, var(--fg) calc(100% - 28px), transparent); }
.v3 .v3-tabs[data-fade="left"] { -webkit-mask-image: linear-gradient(to left, var(--fg) calc(100% - 28px), transparent); mask-image: linear-gradient(to left, var(--fg) calc(100% - 28px), transparent); }
.v3 .v3-tabs[data-fade="both"] { -webkit-mask-image: linear-gradient(to right, transparent, var(--fg) 28px, var(--fg) calc(100% - 28px), transparent); mask-image: linear-gradient(to right, transparent, var(--fg) 28px, var(--fg) calc(100% - 28px), transparent); }

/* F5 / E5 — lépéslista: az aktív sor --accent-tint háttér + --accent alapú számjelvény + --fg felirat (mindkét témában); al-sorok az aktív lépés alatt */
.v3 .v3-step--cur { background: var(--accent-tint); color: var(--fg); box-shadow: none; }
.v3 .v3-step--cur .v3-row__meta { color: var(--fg-2); opacity: 1; }
.v3 .v3-substeps { display: flex; flex-direction: column; gap: 2px; margin: -2px 0 4px 18px; padding-left: 10px; border-left: 2px solid var(--line-2); }
.v3 .v3-substep { appearance: none; border: 0; cursor: pointer; width: 100%; min-height: var(--tap-min); padding: 0 10px; border-radius: var(--r); background: transparent; color: var(--fg-2); display: flex; align-items: center; gap: 10px; text-align: left; font: 700 14px/18px var(--f); }
.v3 .v3-substep--cur { background: var(--card); color: var(--fg); box-shadow: var(--shadow); }
.v3 .v3-substep__idx { flex: 0 0 auto; min-width: 26px; font: 800 12px/16px var(--f); color: var(--fg-3); }
.v3 .v3-substep__label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v3 .v3-substep__dot { flex: 0 0 auto; width: 8px; height: 8px; border-radius: 50%; background: var(--line-2); }
.v3 .v3-substep__dot--ok { background: var(--ok); } .v3 .v3-substep__dot--warn { background: var(--warn); } .v3 .v3-substep__dot--err { background: var(--err); }
.v3 .v3-step__here { flex: 0 0 auto; font: 700 12px/16px var(--f); color: var(--accent-fg); }
/* a lépéslistában a hosszú lépésnév / hiányzó-tétel szöveg legfeljebb két sorba tör (a „Hiányos" jelvény mellett nem vágódik le: „Felülvizsgálói a…") */
.v3 .v3-rail .v3-step .v3-row__title, .v3 .v3-rail .v3-step .v3-row__meta { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; white-space: normal; overflow: hidden; }
/* telefonos lépéslista (lap): lapos sorok, kerek jelvény, a „nincs elkezdve" jelvény körvonalas */
.v3 .v3-rail--sheet { gap: 2px; }
.v3 .v3-rail--sheet .v3-step { min-height: 54px; padding: 0 10px; background: transparent; box-shadow: none; }
.v3 .v3-rail--sheet .v3-step--cur { background: var(--accent-tint); }
.v3 .v3-rail--sheet .v3-step__num { width: 30px; height: 30px; border-radius: 50%; font: 800 12px/1 var(--f); }
.v3 .v3-rail--sheet .v3-step__num:not(.v3-step__num--ok):not(.v3-step__num--warn):not(.v3-step__num--err):not(.v3-step__num--cur) { background: transparent; box-shadow: inset 0 0 0 2px var(--line-2); color: var(--fg-3); }
.v3 .v3-rail--sheet .v3-step--err .v3-row__meta { color: var(--accent-fg); }
.v3 .v3-rail--sheet .v3-substeps { margin-left: 14px; }

/* C / D — a lépéslista lap és a „Tovább hiányos lépésnél" lap */
.v3 .v3-overlay--wiz { z-index: 62; }
/* a lap a viewporthoz rögzített: a régi CSS a [role=dialog] tartóra 8 px belső margót kényszerít (nyomatékos szabály), azt így nem örökli */
.v3 .v3-wsheet { position: fixed; left: 0; right: 0; bottom: 0; margin: 0 auto; width: 100%; max-width: 560px; max-height: 88vh; max-height: 88dvh; display: flex; flex-direction: column; background: var(--card); border-radius: var(--r-sheet) var(--r-sheet) 0 0; box-shadow: 0 -1px 0 var(--line-2); outline: 0; }
@media (min-width: 640px) { .v3 .v3-wsheet { top: 50%; bottom: auto; transform: translateY(-50%); border-radius: var(--r-sheet); } }
.v3 .v3-wsheet__handle { flex: 0 0 auto; align-self: center; width: 40px; height: 5px; margin: 10px 0 4px; border-radius: 3px; background: var(--line-2); }
.v3 .v3-wsheet__head { flex: 0 0 auto; display: flex; flex-direction: column; gap: 8px; padding: 6px 18px 10px; }
.v3 .v3-wsheet__row { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.v3 .v3-wsheet__title { font: 800 22px/28px var(--f); letter-spacing: -.02em; }
.v3 .v3-wsheet__pct { font: 800 22px/28px var(--f); color: var(--accent-fg); font-variant-numeric: tabular-nums; }
.v3 .v3-wsheet__bar { height: 6px; border-radius: 3px; background: var(--line-2); overflow: hidden; }
.v3 .v3-wsheet__bar > i { display: block; height: 100%; border-radius: 3px; background: var(--accent); }
.v3 .v3-wsheet__sum { font: 600 13px/18px var(--f); color: var(--fg-3); }
.v3 .v3-wsheet__list { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 0 12px 8px; overscroll-behavior: contain; }
.v3 .v3-wsheet__actions { display: flex; flex-direction: column; gap: 2px; padding-top: 2px; }
.v3 .v3-wsheet__action { appearance: none; border: 0; cursor: pointer; min-height: 48px; padding: 0 12px; border-radius: var(--r-card-sm); background: transparent; color: var(--fg); display: flex; align-items: center; gap: 12px; text-align: left; font: 700 15px/20px var(--f); }
.v3 .v3-wsheet__action:hover { background: var(--tile); }
.v3 .v3-wsheet__action.is-danger { color: var(--accent-fg); }
.v3 .v3-wsheet__foot { flex: 0 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding: 10px 16px max(22px, env(safe-area-inset-bottom, 0px)); border-top: 1px solid var(--line); }
.v3 .v3-wsheet__foot .v3-btn { height: 52px; border-radius: 12px; font-size: 15px; padding: 0 14px; }
.v3 .v3-wsheet__foot .v3-btn--secondary { background: var(--tile); box-shadow: none; }
.v3 .v3-wsheet--gap { padding: 0 18px max(22px, env(safe-area-inset-bottom, 0px)); gap: 14px; }
.v3 .v3-wgap__head { display: flex; flex-direction: column; gap: 4px; }
.v3 .v3-wgap__title { margin: 0; font: 800 22px/28px var(--f); letter-spacing: -.02em; }
.v3 .v3-wgap__text { margin: 0; font: 500 15px/22px var(--f); color: var(--fg-2); }
.v3 .v3-wgap__chips { display: flex; flex-wrap: wrap; gap: 6px; }
.v3 .v3-wgap__chip { display: inline-flex; align-items: center; height: 36px; padding: 0 12px; border-radius: var(--r-full); background: var(--warn-t); color: var(--fg); font: 800 14px/1 var(--f); }
.v3 .v3-wgap__chip--more { background: var(--tile); color: var(--fg-2); }
.v3 .v3-wgap__acts { display: flex; flex-direction: column; gap: 8px; }
.v3 .v3-wgap__btn { appearance: none; border: 0; cursor: pointer; min-width: 0; height: 52px; padding: 0 14px; border-radius: 12px; background: var(--tile); color: var(--fg); display: flex; align-items: center; justify-content: center; gap: 8px; font: 700 15px/1 var(--f); }
.v3 .v3-wgap__btn--strong { height: 56px; background: var(--fg); color: var(--app); font-size: 16px; }
.v3 .v3-wgap__btn--ok { background: var(--ok-t); color: var(--fg); }
.v3 .v3-wgap__btn--ok .v3-ico { color: var(--ok); }
.v3 .v3-wgap__btn:disabled { opacity: .5; cursor: not-allowed; }

/* B2 — értékelő lista, telefon: a fej (fülek + mód + Többi MF) a vékony fejléc alatt ragad */
.v3 .v3-rblock { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.v3 .v3-rblock__head { position: sticky; top: var(--v3-wtop-h, 0px); z-index: 20; margin: 0 -16px; padding: 2px 16px 8px; background: var(--app); display: flex; flex-direction: column; gap: 8px; }
.v3 .v3-rblock__bar { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.v3 .v3-rseg { display: inline-flex; padding: 3px; border-radius: var(--r-full); background: var(--tile); }
.v3 .v3-rseg__btn { appearance: none; border: 0; cursor: pointer; position: relative; height: 34px; padding: 0 14px; border-radius: var(--r-full); background: transparent; color: var(--fg-2); font: 700 13px/1 var(--f); }
.v3 .v3-rseg__btn::after { content: ''; position: absolute; inset: -5px 0; } /* találati felület 44 px (a váltó 34 px marad) */
.v3 .v3-rseg__btn[aria-pressed="true"] { background: var(--card); color: var(--fg); box-shadow: var(--shadow); }
/* B3 — „Többi MF" pirula (--ok-t háttér); a szöveg --fg: a 13 px-es szöveg kontrasztja a zöld árnyalaton nem elég, az ikon jelzi a zöldet */
.v3 .v3-rmf { appearance: none; border: 0; cursor: pointer; position: relative; flex: 0 0 auto; height: 40px; padding: 0 14px; border-radius: var(--r-full); background: var(--ok-t); color: var(--fg); display: inline-flex; align-items: center; gap: 6px; font: 700 13px/1 var(--f); white-space: nowrap; }
.v3 .v3-rmf::after { content: ''; position: absolute; inset: -2px 0; } /* találati felület 44 px */
.v3 .v3-rmf .v3-ico { color: var(--ok); }
.v3 .v3-rmf:disabled { cursor: not-allowed; }
.v3 .v3-rmf:disabled:not(.is-ro) { opacity: .5; }
/* a tételek csíkja: EGY csúszka-vezérlő (≥ 44 px magas találati felület), koppintásra / húzásra ugrik */
.v3 .v3-rdots { display: grid; grid-template-columns: repeat(var(--rdots-n, 16), minmax(0, 1fr)); gap: 3px; align-items: center; height: var(--tap-min); cursor: pointer; touch-action: pan-y; user-select: none; -webkit-user-select: none; border-radius: var(--r); }
.v3 .v3-rdots:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.v3 .v3-rdots__seg { display: block; height: 10px; border-radius: 3px; background: var(--line-2); }
.v3 .v3-rdots__seg.is-ok { background: var(--ok); } .v3 .v3-rdots__seg.is-err { background: var(--err); } .v3 .v3-rdots__seg.is-na, .v3 .v3-rdots__seg.is-nv { background: var(--fg-2); }
.v3 .v3-rdots__seg.is-cur { height: 22px; background: var(--fg); }
/* Egyenként: egy tétel 21 px-es szöveggel, alul 2×2 nagy gomb */
.v3 .v3-rfocus { display: flex; flex-direction: column; gap: 12px; min-height: calc(100vh - 300px); min-height: calc(100dvh - 300px); }
.v3 .v3-rfocus__card { flex: 1 1 auto; display: flex; flex-direction: column; gap: 10px; min-width: 0; padding: 18px; border-radius: 14px; background: var(--card); box-shadow: var(--shadow); }
.v3 .v3-rfocus__top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.v3 .v3-rfocus__pos { font: 800 15px/20px var(--f); color: var(--accent-fg); white-space: nowrap; }
.v3 .v3-rfocus__ref { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 600 12px/16px var(--mono); color: var(--fg-3); }
.v3 .v3-rfocus__text { margin: 0; font: 700 21px/29px var(--f); letter-spacing: -.01em; text-wrap: pretty; overflow-wrap: anywhere; }
.v3 .v3-rfocus__hint { margin: 0; font: 600 13px/18px var(--f); color: var(--fg-3); }
.v3 .v3-rfocus__grow { flex: 1 1 auto; }
.v3 .v3-rfocus__done { display: flex; align-items: center; gap: 8px; font: 700 14px/20px var(--f); color: var(--fg); }
.v3 .v3-rfocus__done--ok .v3-ico { color: var(--ok); } .v3 .v3-rfocus__done--err .v3-ico { color: var(--accent-fg); } .v3 .v3-rfocus__done--na .v3-ico, .v3 .v3-rfocus__done--nv .v3-ico { color: var(--fg-2); }
.v3 .v3-rfocus__panel { display: flex; flex-direction: column; gap: 10px; padding: 12px; border-radius: var(--r); background: var(--field); }
.v3 .v3-rfocus__panel .v3-textarea { background: var(--card); box-shadow: none; }
.v3 .v3-rfocus__acts { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.v3 .v3-rfocus__act { appearance: none; border: 0; cursor: pointer; height: 48px; padding: 0 10px; border-radius: var(--r-card-sm); background: var(--tile); color: var(--fg); display: flex; align-items: center; justify-content: center; gap: 8px; font: 700 14px/1 var(--f); }
.v3 .v3-rfocus__act[aria-expanded="true"] { background: var(--fg); color: var(--app); }
.v3 .v3-rfocus__dot { flex: 0 0 auto; width: 8px; height: 8px; border-radius: 50%; background: var(--warn); }
.v3 .v3-rfocus__cnt { flex: 0 0 auto; min-width: 22px; height: 22px; padding: 0 6px; border-radius: var(--r-full); background: var(--card); color: var(--fg); font: 800 12px/22px var(--f); text-align: center; }
.v3 .v3-rbtns { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.v3 .v3-rbtn { appearance: none; border: 0; cursor: pointer; height: 68px; padding: 0 6px; border-radius: 12px; background: var(--card); color: var(--fg); box-shadow: var(--shadow); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; user-select: none; -webkit-user-select: none; }
.v3 .v3-rbtn__k { font: 800 20px/24px var(--f); }
.v3 .v3-rbtn__d { font: 600 12px/16px var(--f); }
.v3 .v3-rbtn--ok { background: var(--ok-t); color: var(--fg); } .v3 .v3-rbtn--ok .v3-rbtn__k { color: var(--ok); }
.v3 .v3-rbtn--err { background: var(--err-t); color: var(--fg); } .v3 .v3-rbtn--err .v3-rbtn__k { color: var(--err); }
.v3 .v3-rbtn--ok[aria-pressed="true"] { background: var(--ok); color: var(--on-ok, var(--card)); box-shadow: none; } .v3 .v3-rbtn--ok[aria-pressed="true"] .v3-rbtn__k { color: inherit; }
.v3 .v3-rbtn--err[aria-pressed="true"] { background: var(--err); color: var(--on-err, var(--card)); box-shadow: none; } .v3 .v3-rbtn--err[aria-pressed="true"] .v3-rbtn__k { color: inherit; }
.v3 .v3-rbtn--na[aria-pressed="true"], .v3 .v3-rbtn--nv[aria-pressed="true"] { background: var(--fg-2); color: var(--app); box-shadow: none; }
.v3 .v3-rbtn:disabled { cursor: default; }
.v3 .v3-rbtn:disabled:not([aria-pressed="true"]) { opacity: .55; }
/* Lista: soronként 64 px, 2 sorra vágott szöveg, jobbra 60×46-os állapotgomb */
.v3 .v3-rlist { display: flex; flex-direction: column; gap: 6px; }
.v3 .v3-rrow { display: flex; align-items: center; min-height: 64px; border-radius: 12px; background: var(--card); box-shadow: var(--shadow); }
.v3 .v3-rrow.is-flash { animation: v3-rrow-flash 1.5s ease-out; }
@keyframes v3-rrow-flash { 0%, 55% { box-shadow: 0 0 0 3px var(--focus); } 100% { box-shadow: var(--shadow); } }
.v3 .v3-rrow__main { appearance: none; border: 0; background: transparent; cursor: pointer; flex: 1; min-width: 0; min-height: 64px; padding: 8px 4px 8px 12px; display: flex; align-items: center; gap: 10px; text-align: left; color: var(--fg); border-radius: 12px; }
.v3 .v3-rrow__idx { flex: 0 0 auto; min-width: 18px; font: 800 14px/20px var(--f); color: var(--fg-3); }
.v3 .v3-rrow__text { flex: 1; min-width: 0; font: 600 14px/19px var(--f); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; }
.v3 .v3-rrow__ind { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 2px; color: var(--fg-3); }
.v3 .v3-rrow__indn { font: 800 12px/16px var(--f); }
.v3 .v3-rrow__state { appearance: none; border: 0; cursor: pointer; flex: 0 0 auto; width: 60px; height: 46px; margin: 0 8px 0 4px; padding: 0; border-radius: var(--r-card-sm); display: flex; align-items: center; justify-content: center; font: 800 15px/1 var(--f); user-select: none; -webkit-user-select: none; touch-action: manipulation; }
.v3 .v3-rrow__state--empty { background: var(--app); color: var(--fg-3); box-shadow: inset 0 0 0 1px var(--line-2); }
.v3 .v3-rrow__state--ok { background: var(--ok-t); color: var(--fg); }
.v3 .v3-rrow__state--err { background: var(--err); color: var(--on-err, var(--card)); }
.v3 .v3-rrow__state--na, .v3 .v3-rrow__state--nv { background: var(--tile); color: var(--fg); }
.v3 .v3-rrow__state:disabled { cursor: default; }
.v3 .v3-rsheet__text { margin: 0 0 10px; font: 600 15px/21px var(--f); }
.v3 .v3-rsheet .v3-rfocus { min-height: 0; }
/* E11 — gép: táblázatsor (kb. 56 px): betű · szöveg · 4 gombos szegmens (64 px) · megjegyzés- és fotóikon */
.v3 .v3-rtable__keys { margin-top: -2px; }
.v3 .v3-rtable__rows { display: flex; flex-direction: column; }
.v3 .v3-trow { border-top: 1px solid var(--line); }
.v3 .v3-trow:first-child { border-top: 0; }
.v3 .v3-trow__line { display: grid; grid-template-columns: 28px minmax(0, 1fr) auto 44px 44px; align-items: center; gap: 10px; min-height: 56px; padding: 6px 0; border-radius: var(--r); }
.v3 .v3-trow__line:focus-visible { outline: 2px solid var(--focus); outline-offset: -2px; }
.v3 .v3-trow__idx { font: 800 13px/20px var(--f); color: var(--fg-3); }
.v3 .v3-trow__text { min-width: 0; font: 600 15px/21px var(--f); }
.v3 .v3-trow__hint { display: block; margin-top: 2px; font: 600 12px/16px var(--f); color: var(--fg-3); }
.v3 .v3-rating--seg { grid-template-columns: repeat(4, 64px); gap: 4px; }
.v3 .v3-rating--seg .v3-rate { height: 44px; }
.v3 .v3-trow__ico { appearance: none; border: 0; cursor: pointer; position: relative; width: 44px; height: 44px; padding: 0; border-radius: var(--r); background: transparent; color: var(--fg-3); display: inline-flex; align-items: center; justify-content: center; }
.v3 .v3-trow__ico:hover, .v3 .v3-trow__ico.is-open { background: var(--tile); }
.v3 .v3-trow__ico.has-data { color: var(--fg); }
.v3 .v3-trow__dot { position: absolute; top: 8px; right: 8px; width: 8px; height: 8px; border-radius: 50%; background: var(--warn); }
.v3 .v3-trow__badge { position: absolute; top: 4px; right: 2px; min-width: 18px; height: 18px; padding: 0 4px; border-radius: var(--r-full); background: var(--fg); color: var(--app); font: 800 11px/18px var(--f); text-align: center; }
.v3 .v3-trow__panel { display: flex; flex-direction: column; gap: 10px; margin: 0 0 10px 38px; padding: 12px; border-radius: var(--r); background: var(--field); }
.v3 .v3-trow__panel .v3-textarea { background: var(--card); box-shadow: none; }

/* F8 — a kiválasztott állapot színei: MF --ok, NEM --err, NA és NV --fg-2 alapon --app felirat (az NV eddig --fg-3 volt) */
.v3 .v3-rate[aria-pressed="true"].v3-rate--nv { background: var(--fg-2); color: var(--app); }

/* E8 — egy tartalomszélesség minden lépésre: a Kábel / Napelem (.v3-tf, 820 px) kártyái ugyanolyan szélesek, mint a fejléc és a gombsor */
.v3 .v3-wiz__body .v3-tf { max-width: none; }

/* A1 — a lépések saját ragadó sávjai (VV fülsáv, Kábel / Napelem fülek) a vékony telefonos fejléc alá igazodnak (a régi 64 / 76 px az ESIR-sáv magassága volt) */
.v3 .v3-wiz--phone .v3-vv__tabsbar { top: var(--v3-wtop-h, 64px); }
.v3 .v3-wiz--phone .v3-tf__tabs { scroll-margin-top: var(--v3-wtop-h, 76px); }

/* a nagy MF / NEM felirat a 2×2 gombon: az állapotszín az --fg felé keverve (≥ 3 : 1 a halvány háttéren mindkét témában; a kiválasztott gomb a teljes színt kapja) */
.v3 { --w-ok-text: var(--ok); }
@supports (color: color-mix(in srgb, red 50%, blue)) { .v3 { --w-ok-text: color-mix(in srgb, var(--ok) 70%, var(--fg)); } }
.v3 .v3-rbtn--ok .v3-rbtn__k { color: var(--w-ok-text); }
.v3 .v3-rbtn--err .v3-rbtn__k { color: var(--accent-fg); }
