@charset "UTF-8";
/* =============================================================================
   OKOSIRODA.ONLINE — main.css
   -----------------------------------------------------------------------------
   Ez az oldal EGYETLEN stíluslapja. Nincs build-lépés, nincs preprocesszor:
   amit itt látsz, az megy ki élesbe.

   Forrásai (igazságforrások, ebben a sorrendben):
     · docs/design/tokens.css        — a teljes v2.1 token-készlet (1–7. blokk)
     · docs/design/style-tile.html   — a komponens-stílusok mért, élő változata
     · docs/design/design-system.md  — 6.14 (keret-komponensek), 9. (motion), 10. (a11y)

   FELÉPÍTÉS
     A.  @font-face — Plus Jakarta Sans, SELF-HOSTED (latin + latin-ext)
     B.  Tokenek 1–7: primitív · akcent · szemantikus · tipográfia · tér · komponens · motion
     C.  Alapállapot és JS-függetlenség (a rejtést a JS kapcsolja be, nem a CSS)
     D.  Reset és elemi tipográfia
     E.  Elrendezés: konténer, szekció-ritmus, 12 oszlopos rács
     F.  Komponensek (navbar → lábléc)
     G.  Segéd-utility-k
     H.  prefers-reduced-motion

   HÁROM KÖTÖTT SZABÁLY
     1. A komponensben SOHA nincs hexakód — csak token.
     2. A hover nem emel és nem erősít árnyékot: szegély- vagy háttérszínt vált.
     3. Minden kattintható elem legalább 44×44 px (design-system 10.).
   ============================================================================= */


/* =============================================================================
   A. BETŰKÉSZLET — Plus Jakarta Sans, SAJÁT HOSZTOLÁS
   -----------------------------------------------------------------------------
   A Google Fonts a modern böngészőknek EGYETLEN variábilis woff2-t szolgál ki
   nyelvi részhalmazonként (wght 200–800), ezért két fájl elég:
     plus-jakarta-sans-latin.woff2      — alap latin
     plus-jakarta-sans-latin-ext.woff2  — latin-ext: itt él az Ő, Ű, ő, ű
   A latin-ext KÖTELEZŐ: enélkül a magyar kettős vessős glifák pótlásból,
   más betűkészletből jönnének (látható „ugráló" Ő/Ű a szövegben).

   font-display: swap — a szöveg azonnal olvasható a rendszerbetűvel.
   A <head>-ben a latin vágat preload-olandó (l. TEMPLATE-CONTRACT.md).
   ============================================================================= */

@font-face {
  font-family: "Plus Jakarta Sans";
  font-style: normal;
  font-weight: 200 800;              /* variábilis tengely — a 400/500/600/700 mind ebből */
  font-display: swap;
  src: url("../fonts/plus-jakarta-sans-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
                 U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF,
                 U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Plus Jakarta Sans";
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url("../fonts/plus-jakarta-sans-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
                 U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122,
                 U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}


/* =============================================================================
   B.1 PRIMITÍV RÉTEG — nyers értékek, szerep nélkül
   ============================================================================= */

:root {

  /* --- Tinta — a „mélykék" a szövegben. Minden érték #FFFFFF fölött mérve. --- */
  --ink-900: #0A1A2B;   /* 17,57:1  AAA — display, H1–H3                         */
  --ink-800: #12293F;   /* 14,9:1   AAA — erős kiemelt szöveg, idézet            */
  --ink-700: #2A4157;   /* 10,54:1  AAA — TÖRZSSZÖVEG (alapértelmezett)          */
  --ink-600: #42596E;   /*  7,28:1  AAA — másodlagos szöveg, SZÜRKÉSKÉK EYEBROW  */
  --ink-500: #5B7186;   /*  5,06:1  AA  — metaadat, „ma így megy" tompított sor  */
  --ink-400: #7C90A3;   /*  3,29:1  ✗   — CSAK dekoratív / disabled, NEM szöveg  */
  --ink-300: #A8B7C6;   /*              — dekoratív vonal sötétebb változata     */

  /* --- Márka-mélykék — struktúra, sötét sáv, linkek ------------------------- */
  --blue-900: #08213F;  /* legsötétebb sáv (LÁBLÉC) — fehér szöveg 16,16:1 AAA   */
  --blue-800: #0C2E55;  /* SÖTÉT SÁV HÁTTERE (záró CTA) — fehér 13,66:1 AAA      */
  --blue-700: #113C6E;  /* MÁRKA-MÉLYKÉK — 11,08:1 fehéren AAA                   */
  --blue-600: #17508F;  /* hover-világosítás — 8,14:1 fehéren AAA                */
  --blue-500: #2B6BB3;  /* diagram-vonal semleges változata                      */
  --blue-300: #8FB3D8;  /* dekoratív                                             */
  --blue-200: #BBD2EA;  /* erős elválasztó                                       */
  --blue-100: #DCE8F5;  /* halk kitöltés (jelvény, monogram-négyzet)             */
  --blue-50:  #EDF3FA;  /* „Mit jelent ez?" doboz háttere                        */

  /* --- Felületek és vonalak ------------------------------------------------- */
  --paper-canvas: #F5F8FB;  /* törtfehér oldal-háttér (hűvös)                    */
  --paper-white:  #FFFFFF;  /* tiszta fehér — minden tartalmi blokk              */

  /* A „vékony halványkék szegély" — rgba, hogy fehér ÉS törtfehér fölött is
     ugyanolyan finoman üljön. Dekoratív határ, NEM jelentéshordozó UI-határ
     (arra a --line-strong való). Vastagsága MINDIG 1px.                        */
  --line-rgba:    rgba(17, 60, 110, 0.13);
  --line-hex:     #DCE7F2;                  /* ugyanaz fehér fölött — 1,25:1     */
  --line:         var(--line-rgba);         /* KANONIKUS ALIAS — a hajszálvonal  */
  --line-soft:    rgba(17, 60, 110, 0.07);  /* még halkabb belső elválasztó      */
  --line-strong:  #6E8CAC;                  /* 3,49:1 fehéren — UI-határ ✓       */
  --line-inverse: rgba(255, 255, 255, 0.14);/* elválasztó sötét sávon            */

  /* --- Agyag — az EGYETLEN megtűrt harmadik szín.
     Kizárólag az „előtte" panel és a „ezt ne csináld" figyelmeztetés.
     NEM akcent: nem lehet gomb, link vagy ikon-alapszín.                       */
  --clay-700: #8A3B2A;  /* 7,67:1 fehéren AAA — „előtte" panel szövege           */
  --clay-600: #A8442A;  /* 5,96:1 fehéren AA  — jelölő-ikon, figyelmeztetés      */
  --clay-200: #F3CDBF;  /* „előtte" panel szegélye                               */
  --clay-50:  #FDF1ED;  /* „előtte" panel háttere                                */

  /* --- Árnyékok — v2.1-ben VISSZAFOGVA.
     A kártya EGYETLEN 1px-es kontakt-árnyékot kap; a széles szórású árnyék
     már csak a ténylegesen lebegő elemeké (jelvény, legördülő, mobilmenü).     */
  --shadow-1: 0 1px 2px rgba(10, 26, 43, 0.05);           /* KÁRTYA alapállapot  */
  --shadow-2: 0 1px 2px rgba(10, 26, 43, 0.06),
              0 8px 18px -12px rgba(11, 43, 85, 0.16);    /* jelvény, kiemelés   */
  --shadow-3: 0 2px 4px rgba(10, 26, 43, 0.06),
              0 18px 34px -20px rgba(11, 43, 85, 0.22);   /* legördülő, mobilmenü */
  --shadow-inset-line: inset 0 0 0 1px var(--line-rgba);
}


/* =============================================================================
   B.2 AKCENT-RÉTEG — TEAL, VÉGLEGESÍTVE (teal-only, nincs [data-accent])
   -----------------------------------------------------------------------------
   KONTRASZT (a sötét sáv VALÓDI háttere a --bg-inverse #0C2E55):
     #0B7A7A / #FFFFFF ... 5,15:1  AA   ✓ szöveg, eyebrow és teli gomb
     #0B7A7A / #F5F8FB ... 4,83:1  AA   ✓ szöveg és eyebrow a canvason
     #005F60 / #FFFFFF ... 7,48:1  AAA  ✓ ez a FÓKUSZGYŰRŰ színe
     #2FA0A0 / #FFFFFF ... 3,15:1  ✗ szöveghez; dekoratív sávnak ✓
     #6ED4D4 / #0C2E55 ... 7,82:1  AAA  ✓ kisbetűs szöveg + eyebrow a sávon
     #0B7A7A felület / #0C2E55 = 2,65:1 ✗ — ezért kap a sávon álló teli
     akcent-gomb KÖTELEZŐEN --accent-glow belső kontúrt.
   ============================================================================= */

:root {
  --accent:           #0B7A7A;                  /* teli gomb, aktív, adatáramlás */
  --accent-strong:    #005F60;                  /* hover, erős akcent-szöveg     */
  --accent-bright:    #2FA0A0;                  /* sötét sávon NAGY szöveg/ikon  */
  --accent-glow:      #6ED4D4;                  /* sötét sávon kisbetűs szöveg   */
  --accent-line:      #A9D8D8;                  /* akcentes szegély világoson    */
  --accent-soft:      #EAF6F6;                  /* halvány kitöltés („utána")    */
  --accent-tint:      #D8EEEE;
  --accent-underline: var(--accent-bright);     /* élénk folt: aláhúzás, tick    */
  --accent-ring:      var(--accent-strong);     /* FÓKUSZGYŰRŰ — TÖMÖR, 7,48:1   */
  --accent-halo:      rgba(11, 122, 122, 0.28); /* csak derengés, sosem fókusz   */
  --accent-wash:      rgba(11, 122, 122, 0.08);
}


/* =============================================================================
   B.3 SZEMANTIKUS RÉTEG — szerep-aliasok.
   A komponensek MINDIG innen olvasnak, soha nem a primitívekből.
   ============================================================================= */

:root {

  /* --- Szöveg --------------------------------------------------------------- */
  --text-display:   var(--ink-900);
  --text-heading:   var(--ink-900);
  --text-strong:    var(--ink-800);
  --text-body:      var(--ink-700);   /* ALAPÉRTELMEZETT törzsszöveg            */
  --text-muted:     var(--ink-600);
  --text-subtle:    var(--ink-500);
  --text-disabled:  var(--ink-400);   /* NEM olvasandó szöveg                   */
  --text-link:      var(--blue-700);
  --text-link-hover:var(--accent-strong);
  --text-on-accent: var(--paper-white);
  --text-inverse:        rgba(255, 255, 255, 0.94);
  --text-inverse-muted:  rgba(255, 255, 255, 0.78);
  --text-inverse-subtle: rgba(255, 255, 255, 0.66);

  /* --- Felület -------------------------------------------------------------- */
  --bg-canvas:       var(--paper-canvas);  /* szint 0 — oldal                   */
  --bg-surface:      var(--paper-white);   /* szint 1 — kártya, panel, fehér sáv */
  --bg-tint:         var(--blue-50);       /* szint 2 — halk kiemelés           */
  --bg-accent-soft:  var(--accent-soft);   /* szint 2 — akcentes halk kiemelés  */
  --bg-inverse:      var(--blue-800);      /* szint 3 — SÖTÉT SÁV (záró CTA)    */
  --bg-inverse-deep: var(--blue-900);      /* szint 3 — LÁBLÉC                  */

  /* --- Vonal ---------------------------------------------------------------- */
  --border:         var(--line-rgba);
  --border-soft:    var(--line-soft);
  --border-strong:  var(--line-strong);
  --border-accent:  var(--accent-line);
  --border-inverse: var(--line-inverse);
  /* AKTÍV állapot kerete — jelentéshordozó, tehát WCAG 1.4.11 alá esik.
     NEM lehet --accent-underline: az a TÖRTFEHÉR canvason csak 2,96:1.        */
  --border-active:  var(--accent);

  /* --- Státusz -------------------------------------------------------------- */
  --status-problem:      var(--clay-600);
  --status-problem-text: var(--clay-700);
  --status-problem-bg:   var(--clay-50);
  --status-problem-line: var(--clay-200);
  --status-solved:       var(--accent);
  --status-solved-bg:    var(--accent-soft);
  --status-solved-line:  var(--accent-line);
  --status-info:         var(--blue-700);
  --status-info-bg:      var(--blue-50);

  /* --- Fókusz — WCAG 1.4.11 / 2.4.11 szerint ≥3:1 a szomszédos háttérhez ----- */
  --focus-ring:         var(--accent-ring);
  --focus-ring-inverse: var(--paper-white);
  --focus-ring-width:   3px;
  --focus-ring-offset:  2px;
}


/* =============================================================================
   B.4 TIPOGRÁFIA
   -----------------------------------------------------------------------------
   Egy család fut a teljes oldalon. A Plus Jakarta Sans azért, mert a latin-ext
   lefedettségében az Ő és Ű VALÓDI kettős vessős glifa.
   ============================================================================= */

:root {
  --font-sans: "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont,
               "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;

  /* --- Súlyok — NÉGY, nincs több. A 800 v2.1-ben törölve: a hierarchiát a
     4,2×-es MÉRETKONTRASZT viszi, nem a súly.                                 */
  --fw-regular:  400;
  --fw-medium:   500;
  --fw-semibold: 600;
  --fw-bold:     700;

  /* Szerep-aliasok — a komponens EZEKET olvassa, nem a nyers súlyokat. */
  --fw-display:  var(--fw-bold);        /* 700 */
  --fw-h1:       var(--fw-bold);        /* 700 */
  --fw-h2:       var(--fw-semibold);    /* 600 */
  --fw-h3:       var(--fw-semibold);    /* 600 */
  --fw-h4:       var(--fw-semibold);    /* 600 */

  /* --- Méretskála — fluid, 360px → 1440px viewport között.
     Display : Body ≈ 4,2× desktopon.                                          */
  --fs-display: clamp(2.75rem,  1.55rem + 5.00vw, 4.75rem);   /* 44 → 76 px      */
  --fs-h1:      clamp(2.25rem,  1.55rem + 2.90vw, 3.25rem);   /* 36 → 52 px      */
  --fs-h2:      clamp(1.875rem, 1.42rem + 1.90vw, 2.625rem);  /* 30 → 42 px      */
  --fs-h3:      clamp(1.375rem, 1.24rem + 0.57vw, 1.75rem);   /* 22 → 28 px      */
  --fs-h4:      clamp(1.125rem, 1.08rem + 0.19vw, 1.25rem);   /* 18 → 20 px      */
  --fs-lead:    clamp(1.125rem, 1.03rem + 0.40vw, 1.3125rem); /* 18 → 21 px      */
  --fs-body:    clamp(1.0625rem,1.04rem + 0.10vw, 1.125rem);  /* 17 → 18 px      */
  --fs-small:   0.9375rem;                                     /* 15 px          */
  --fs-micro:   0.8125rem;                                     /* 13 px          */

  /* --- Sorköz — a szerep jelzője: cím szűk, törzs bő.
     A magyar ékezetek (Ő, Ű, Á) miatt 1,05 a reális minimum.                  */
  --lh-display: 1.05;
  --lh-h1:      1.06;
  --lh-h2:      1.08;
  --lh-h3:      1.22;
  --lh-h4:      1.35;
  --lh-lead:    1.60;
  --lh-body:    1.65;
  --lh-tight:   1.40;

  /* --- Betűköz — negatív tracking KIZÁRÓLAG a display/H1 szintjén. ---------- */
  --ls-display: -0.01em;
  --ls-h1:      -0.01em;
  --ls-h2:       0em;
  --ls-h3:       0em;
  --ls-h4:       0em;
  --ls-body:     0;
  --ls-button:  -0.01em;
  --ls-eyebrow:  0.1em;
  --ls-eyebrow-lead: 0em;

  /* --- Max sorhossz — magyar szóhossz miatt a felső sáv jobb, mint az angol 60ch */
  --measure-display: 16ch;
  --measure-h2:      24ch;
  --measure-lead:    48ch;
  --measure-body:    66ch;   /* A TÖRZSSZÖVEG KANONIKUS MÉRTÉKE                 */
  --measure-card:    40ch;
  --measure-quote:   34ch;
  --measure-inverse: 56ch;   /* fordított kontraszton rövidebb sor kell         */
}


/* =============================================================================
   B.5 TÉR, RÁCS, SUGÁR
   ============================================================================= */

:root {
  /* --- Térköz-skála (4px-alapú) -------------------------------------------- */
  --space-1:   4px;   --space-2:   8px;   --space-3:  12px;   --space-4:  16px;
  --space-5:  20px;   --space-6:  24px;   --space-8:  32px;   --space-10: 40px;
  --space-12: 48px;   --space-14: 56px;   --space-16: 64px;   --space-20: 80px;
  --space-24: 96px;   --space-30:120px;   --space-32:160px;

  /* --- Szekció-ritmus — HÁROM fokozat, mind fluid clamp().
     A FÜGGŐLEGES RITMUS adja a változatosságot, NEM a háttérszín váltogatása
     (nincs zebra-csíkozás). tight = halk/kiegészítő · base = alap ·
     large = fejezet-nyitó, kiemelt szekció.                                    */
  --section-y-tight: clamp(2.5rem, 1.60rem + 3.60vw, 4.5rem);  /* 40 →  72 px    */
  --section-y:       clamp(4rem,   2.20rem + 7.50vw, 10rem);   /* 64 → 160 px    */
  --section-y-large: clamp(5rem,   2.20rem + 11.70vw, 12.5rem);/* 80 → 200 px    */
  --gutter:          clamp(1.25rem, 0.60rem + 2.60vw, 2.5rem); /* 20 →  40 px    */
  --container:        1200px;
  --container-narrow:  760px;   /* szöveg-vezérelt szekció, űrlap, GYIK          */
  --container-wide:   1360px;   /* rendszer-rács, teljes szélességű ábra         */

  /* --- Rács — 12 oszlop. A rés fluid. -------------------------------------- */
  --grid-columns:    12;
  --grid-gap:        clamp(1.5rem, 1.30rem + 0.80vw, 2rem);   /* 24 → 32 px      */
  --grid-gap-sm:     clamp(1rem, 0.90rem + 0.40vw, 1.25rem);  /* 16 → 20 px      */
  --grid-gap-xl:     clamp(2.5rem, 1.90rem + 2.40vw, 5rem);   /* 40 → 80 px      */

  /* --- Sugár — gomb 4px < kártya 8px. Pill KIZÁRÓLAG a lebegő mini-badge-en. */
  --radius-xs:    2px;   /* hajszál-elem, regiszterjel, apró sarok               */
  --radius-sm:    4px;   /* GOMB, űrlapmező, ikon-konténer, monogram-négyzet     */
  --radius-md:    6px;   /* rendszerkártya, belső panel, „Mit jelent ez?"        */
  --radius-lg:    8px;   /* KÁRTYA — kanonikus                                  */
  --radius-xl:   10px;   /* nagy panel, ábra-keret, képkeret                     */
  --radius-pill: 999px;  /* CSAK a lebegő mini-badge                             */

  /* --- Z-index ------------------------------------------------------------- */
  --z-base: 0; --z-raised: 10; --z-sticky: 100; --z-header: 500;
  --z-overlay: 900; --z-modal: 1000;
}


/* =============================================================================
   B.5b HERO-JELENET — a főoldali „A GÉPHÁZ" hero saját tokenjei
   -----------------------------------------------------------------------------
   Egyetlen ÚJ PRIMITÍV SZÍN SEM születik: minden érték a meglévő --blue-*,
   --accent-* és --text-inverse-* tokenekből jön. Ez a blokk kizárólag méretet,
   arányt és ritmust ad.

   A --fs-hero levezetése. A H1 NÉGY szerzői sorra tördel, és a bal hasáb a
   rács ~48%-a, tehát a mérethatárt a leghosszabb sor szabja meg:
     „kézzel csinálni?" ≈ 8,4em (a −0,036em betűközzel és a teal blokk
     0,2em-es belső margójával együtt)
   1600 px-en a hasáb ~700 px → 700 / 8,4 ≈ 83 px:
     meredekség = (83 − 38) / (1600 − 390) = 0,0372 px/px → 3,72vw  … kerekítve
     4,2vw-re, mert a hasáb a --container-hero fölött tovább nő
   A `min(…, 10,5svh)` a magassági plafon: alacsony laptopon a plakát ad le
   előbb, nem a CTA-pár csúszik a hajtás alá.
   ============================================================================= */

:root {
  --fs-hero:        min(clamp(2.375rem, 0.95rem + 4.5vw, 6.25rem), 9.4svh);  /* 38 → 100 px */
  --lh-hero:        0.93;       /* tömör tipográfiai BLOKK, nem folyószöveg      */
  --ls-hero:        -0.036em;   /* plakát-léptéken szorosabb, mint a -0.01em     */
  --container-hero: 1560px;     /* CSAK a hero rácsa                             */
  --hero-copy-max:  47rem;      /* a plakát-hasáb pontos szélessége               */
  --hero-pad-top:   clamp(1.5rem, 0.9rem + 2.0vw, 3rem);
  --hero-pad-bot:   clamp(1.5rem, 1.1rem + 1.6vw, 2.75rem);
}


/* =============================================================================
   B.6 KOMPONENS-TOKENEK
   ============================================================================= */

:root {

  /* --- KÁRTYA — a kanonikus recept.
     8px sugár, egyrétegű kontakt-árnyék, és a hover CSAK szegélyszínt vált
     (nincs emelkedés, nincs árnyék-erősítés).                                  */
  --card-bg:            var(--bg-surface);
  --card-border:        1px solid var(--border);
  --card-radius:        var(--radius-lg);                        /* 8px         */
  --card-padding:       clamp(1.25rem, 1.05rem + 1.00vw, 2rem);  /* 20 → 32 px  */
  --card-shadow:        var(--shadow-1);
  --card-shadow-hover:  var(--shadow-1);      /* AZONOS — nincs árnyék-hover     */
  --card-lift-hover:    0px;                  /* NINCS emelkedés                 */
  --card-border-hover:  var(--accent-line);   /* a hover EGYETLEN jele           */
  --card-bg-hover:      var(--bg-surface);
  --card-title-color:   var(--text-heading);
  --card-body-color:    var(--text-body);
  --card-accent-bar:    2px;                  /* kiemelt kártya felső csíkja     */

  /* --- GOMB — 4px sugár, font-relatív padding, NINCS árnyék semmilyen
     állapotban, a hover kizárólag háttérszínt vált.                            */
  --btn-radius:       var(--radius-sm);
  --btn-font-size:    var(--fs-body);
  --btn-font-weight:  var(--fw-medium);
  --btn-tracking:     var(--ls-button);
  --btn-padding-y:    0.9rem;
  --btn-padding-x:    1.4rem;
  --btn-min-height:   48px;                   /* ≥44px érintési célfelület       */
  --btn-min-height-compact: 44px;             /* az ABSZOLÚT minimum (§10)       */
  --btn-gap:          10px;

  --btn-primary-bg:         var(--accent);
  --btn-primary-bg-hover:   var(--accent-strong);
  --btn-primary-text:       var(--text-on-accent);
  --btn-primary-shadow:     none;
  --btn-primary-inverse-outline: inset 0 0 0 1px var(--accent-glow);

  --btn-secondary-bg:       var(--bg-surface);
  --btn-secondary-text:     var(--blue-700);
  --btn-secondary-border:   1px solid var(--border-strong);
  --btn-secondary-bg-hover: var(--bg-tint);

  --btn-ghost-text:         var(--blue-700);

  /* .46 alfa → 4,07:1 a sáv-háttéren. A kontúros gomb EGYETLEN látható
     határa ez a vonal, ezért nem lehet a 3:1-es küszöb közelében.              */
  --btn-inverse-border:     1px solid rgba(255,255,255,.46);
  --btn-inverse-text:       var(--paper-white);
  --btn-inverse-bg-hover:   rgba(255,255,255,.12);

  /* --- EYEBROW-RENDSZER — tipográfiai elem, nem pill-címke.
     alap = teal (5,15:1 fehéren / 4,83:1 canvason) · muted = szürkéskék
     (7,28:1) · inverse = --accent-glow a sötét sávon (7,82:1).                 */
  --eyebrow-font-size:    var(--fs-micro);       /* 13px                         */
  --eyebrow-weight:       var(--fw-semibold);    /* 600                          */
  --eyebrow-tracking:     var(--ls-eyebrow);     /* 0,1em                        */
  --eyebrow-line-height:  1.3;
  --eyebrow-color:        var(--accent);
  --eyebrow-color-muted:  var(--ink-600);
  --eyebrow-color-inverse:var(--accent-glow);
  --eyebrow-gap:          clamp(0.625rem, 0.50rem + 0.50vw, 1rem); /* 10 → 16 px */
  --eyebrow-num-color:    var(--ink-400);
  --eyebrow-rail-span:    2;                     /* 2/12 oszlop                  */
  --eyebrow-rail-gap:     var(--grid-gap);

  /* A MÁSODIK variáns — „lead-eyebrow": kevert kis-nagybetűs, 16→20 px, 500.
     A VERZÁL, sorszámozott változat a FŐ FEJEZETEKÉ; a halkabb szekciók és a
     szekción belüli alcímkék ezt kapják (sorszám nélkül).                      */
  --eyebrow-lead-size:      clamp(1rem, 0.94rem + 0.25vw, 1.25rem); /* 16→20 px  */
  --eyebrow-lead-weight:    var(--fw-medium);
  --eyebrow-lead-tracking:  var(--ls-eyebrow-lead);
  --eyebrow-lead-line-height: 1.4;
  --eyebrow-lead-color:     var(--ink-600);

  /* --- SZEKCIÓ-FEJLÉC — a három engedélyezett elrendezés rács-értékei -------- */
  --head-rail-span:    2;
  --head-body-span:    7;
  --head-note-span:    3;
  --head-note-color:   var(--text-subtle);
  --head-note-size:    var(--fs-small);
  --head-note-measure: 32ch;
  --head-gap:          var(--space-10);

  /* --- A BIRTOKOLHATÓ JEL — „hajszálkereszt" regiszterjel -------------------- */
  --tick-width:  2px;
  --tick-height: 20px;
  --tick-color:  var(--accent-underline);

  /* --- IKON-RENDSZER — stroke, sosem fill; 24px-es rácson; szögletes konténer.
     A „doboz méret" tokenek `max(px, em)`-esek: csak-szöveg nagyításnál a
     doboz a szöveggel EGYÜTT nő.                                               */
  --icon-stroke:       1.75px;      /* alap vonalvastagság                       */
  --icon-stroke-bold:  2.25px;      /* pipa, nyíl, chevron kis méretben          */
  --icon-stroke-hair:  1.25px;      /* segédvonal ábrán belül                    */
  --icon-xs:  16px;                 /* soron belüli jelölő                       */
  --icon-sm:  18px;                 /* inline ikon szöveg mellett                */
  --icon-md:  20px;                 /* nav-ikon, gomb-ikon                       */
  --icon-lg:  24px;                 /* kártya-ikon — az ALAPÉRTELMEZETT          */
  --icon-xl:  28px;                 /* szekció-vezető ikon (ritka)               */
  --icon-chip-size:    max(40px, 2.4em);
  --icon-chip-radius:  var(--radius-sm);
  --icon-chip-bg:      transparent;
  --icon-chip-bg-soft: var(--accent-soft);
  --icon-chip-border:  1px solid var(--border);
  --icon-chip-color:   var(--accent);
  --icon-color-info:   var(--blue-700);
  --icon-color-warn:   var(--clay-600);
  --icon-color-inverse:var(--accent-glow);

  /* --- FOLYAMATÁBRA (inline SVG) -------------------------------------------- */
  --flow-stroke-hair:   var(--icon-stroke-hair);
  --flow-stroke-base:   var(--icon-stroke);
  --flow-stroke-accent: 2.5px;                   /* ADATÁRAMLÁS vonala           */
  --flow-radius:        var(--radius-md);
  --flow-box-bg:        var(--bg-surface);
  --flow-box-border:    var(--line-strong);
  --flow-box-text:      var(--ink-800);
  --flow-line:          var(--accent);
  --flow-line-passive:  var(--ink-400);
  --flow-dash-passive:  6 6;                     /* szaggatott — sose csak szín  */
  --flow-label:         var(--ink-600);
  --flow-grid:          var(--line-hex);

  /* --- RENDSZERKÁRTYA ------------------------------------------------------- */
  --syscard-padding:      14px 18px;
  --syscard-radius:       var(--radius-md);
  --syscard-mono-size:    max(30px, 2.2em);
  --syscard-mono-radius:  var(--radius-sm);
  --syscard-mono-bg:      var(--accent-soft);
  --syscard-mono-text:    var(--accent-strong);
  --syscard-label-size:   var(--fs-small);
  --syscard-label-weight: var(--fw-semibold);
  /* KATEGÓRIA-TINTÁK: a monogramot a rendszer FUNKCIÓJA szerint színezzük.
     Felirat mindig van mellette, tehát a szín nem egyedüli jelentéshordozó.    */
  --syscard-kind-szamla-bg:   var(--accent-soft);
  --syscard-kind-szamla-text: var(--accent-strong);
  --syscard-kind-iroda-bg:    var(--blue-100);
  --syscard-kind-iroda-text:  var(--blue-700);
  --syscard-kind-webshop-bg:  var(--accent-tint);
  --syscard-kind-webshop-text:var(--accent-strong);
  --syscard-kind-komm-bg:     var(--blue-50);
  --syscard-kind-komm-text:   var(--blue-700);
  --syscard-active-border:    var(--border-active);
  --syscard-active-bg:        var(--accent-soft);

  /* --- ELŐTTE / UTÁNA PANEL (a brand jelkomponense) ------------------------- */
  --ba-radius:       var(--radius-lg);
  --ba-padding:      var(--card-padding);
  --ba-before-bg:    var(--status-problem-bg);
  --ba-before-line:  var(--status-problem-line);
  --ba-before-text:  var(--status-problem-text);
  --ba-before-label: var(--status-problem);
  --ba-after-bg:     var(--status-solved-bg);
  --ba-after-line:   var(--status-solved-line);
  --ba-after-text:   var(--text-body);
  --ba-after-label:  var(--accent-strong);
  --ba-badge-size:   max(40px, 2.4em);

  /* --- „MIT JELENT EZ?" DOBOZ ----------------------------------------------- */
  --explain-bg:        var(--status-info-bg);
  --explain-bar:       3px;
  --explain-bar-color: var(--status-info);
  --explain-radius:    var(--radius-md);
  --explain-padding:   var(--space-5);
  --explain-label:     var(--status-info);

  /* --- FOLYAMAT-LÉPÉSEK — a lépés-jelvény SZÖGLETES (4px), nem kör. --------- */
  --step-badge-size:      max(40px, 2.4em);
  --step-badge-radius:    var(--radius-sm);
  --step-badge-bg:        var(--accent);
  --step-badge-text:      var(--text-on-accent);
  --step-badge-ring:      0 0 0 5px var(--accent-halo);
  --step-connector:       1.75px;
  --step-connector-color: var(--line-strong);
  --step-connector-dash:  6 7;

  /* --- STATISZTIKA-SOR — VILÁGOS felületen, egy kiemelt csempe + három kisebb */
  --stat-value-size:      var(--fs-h1);
  --stat-value-weight:    var(--fw-h1);
  --stat-columns:         1.6fr 1fr 1fr 1fr;
  --stat-lead-value-size: var(--fs-display);
  --stat-value-color:     var(--ink-900);
  --stat-value-color-inverse: var(--accent-bright);
  --stat-label-color:     var(--text-muted);
  --stat-label-color-inverse: var(--text-inverse-muted);
  --stat-rule:            1px solid var(--border);
  --stat-divider:         var(--border-inverse);

  /* --- NAVBAR — logó + kategorizált legördülők + PONTOSAN KÉT, rangsorolt CTA */
  --nav-height:           68px;
  --nav-bg:               rgba(255, 255, 255, 0.92);
  --nav-border:           1px solid var(--border);
  /* TELJES SZÉLESSÉG (spec 5.2). A sáv tartalma NEM 1200 px-es konténerben ül,
     hanem a viewport széléig fut, ezzel a belső oldalpaddinggal. A 72 px-es
     felső korlát 1440 px fölött a --gutter kétszerese: az érzet edge-to-edge,
     de a logó és a CTA nem tapad a képernyő fizikai éléhez.                   */
  --nav-gutter:           clamp(20px, 4vw, 72px);
  --nav-gutter-sm:        16px;                     /* 1159 px alatt          */
  --nav-bg-scrolled:      rgba(255, 255, 255, 0.97);
  --nav-link-size:        var(--fs-small);
  --nav-link-weight:      var(--fw-semibold);
  --nav-link-color:       var(--text-muted);
  --nav-link-color-hover: var(--text-heading);
  --nav-link-gap:         var(--space-6);
  --nav-mark-size:        20px;
  --nav-mark-radius:      var(--radius-xs);

  /* --- LEBEGŐ MINI-BADGE — az EGYETLEN pill-elem a rendszerben -------------- */
  --badge-radius:  var(--radius-pill);
  --badge-padding: 6px 12px;
  --badge-size:    var(--fs-micro);
  --badge-bg:      var(--bg-surface);
  --badge-border:  1px solid var(--border);

  /* --- ŰRLAP ---------------------------------------------------------------- */
  --field-min-height:   max(52px, 3.0em);   /* min-height, NEM fix height       */
  --field-padding:      0.75em 1em;
  --field-radius:       var(--radius-sm);
  --field-border:       1px solid var(--border-strong);  /* 3,49:1 ✓           */
  --field-bg:           var(--bg-surface);
  --field-border-focus: var(--accent);
  --field-ring-focus:   0 0 0 3px var(--accent-ring);    /* TÖMÖR — 7,48:1 ✓   */
  --field-label-color:  var(--text-body);   /* címke MINDIG a mező fölött      */
  --field-error:        var(--clay-600);

  /* --- RENDSZER-SOR — STATIKUS rács (a marquee törölve) -------------------- */
  --syslist-columns:   1.5fr 1.7fr 1.4fr 1fr;   /* nem négy egyenlő oszlop     */
  --syslist-gap:       var(--grid-gap);
  --syslist-item-gap:  var(--space-2);
  --syslist-cat-color: var(--ink-600);
}


/* =============================================================================
   B.7 MOTION-RÉTEG
   -----------------------------------------------------------------------------
   Nyolc szabály (design-system.md 9.):
     1. Rövid úthossz: 8–24px.  2. Egy easing-nyelv.  3. Egyszeri lejátszás.
     4. Statikus nyugalmi állapot.  5. Az olvasási sorrendet erősíti.
     6. A végállapot JS nélkül is teljes.
     7. Egy szekció VAGY blokként revealel, VAGY a gyerekeit staggereli.
     8. Minden animált elemnek van CSS-alapállapota (.js-reveal / .js-fade).
   ============================================================================= */

:root {
  /* --- Időtartam ------------------------------------------------------------ */
  --dur-instant: 120ms;   /* ikon-szín, apró visszajelzés                        */
  --dur-quick:   200ms;   /* hover, fókusz, gomb-állapot                         */
  --dur-base:    320ms;   /* akkordeon, tab-váltás, mobilmenü                    */
  --dur-reveal:  520ms;   /* scroll-reveal, hero-elem belépése                   */
  --dur-slow:    760ms;   /* számláló, SVG-vonalrajzolás                         */

  /* --- Görbék — CSS és GSAP ugyanaz a nyelv -------------------------------- */
  --ease-out:      cubic-bezier(.22, .61, .36, 1);  /* GSAP "power2.out"  hover  */
  --ease-entrance: cubic-bezier(.16, 1, .30, 1);    /* GSAP "power3.out"  reveal */
  --ease-emphasis: cubic-bezier(.34, 1.30, .64, 1); /* CSAK a lépés-jelvényen!   */
  /* --ease-linear NINCS: az oldalon nincs folyamatos mozgás.                   */

  /* --- Reveal-paraméterek --------------------------------------------------- */
  --reveal-shift:       16px;
  --reveal-stagger:     70ms;
  --hero-word-stagger:  45ms;
  --hero-line-shift:    22px;
  --hover-lift:          0px;   /* NINCS emelkedés                              */
  --hover-arrow-shift:   3px;   /* a nyíl EGYETLEN megengedett elmozdulása       */

  /* --- ScrollTrigger egységes start-értékek (nincs szekciónkénti ad-hoc) ---- */
  --st-start-reveal:  "top 86%";
  --st-start-visual:  "top 80%";
  --st-start-counter: "top 85%";
}


/* =============================================================================
   C. ALAPÁLLAPOT + JS-FÜGGETLENSÉG
   -----------------------------------------------------------------------------
   KÖTELEZŐ: a .js osztályt maga a JS teszi fel a <html>-re, közvetlenül a
   stíluslap után:
     <script>document.documentElement.classList.add("js")</script>
   Így JS nélkül MINDEN LÁTSZIK — az elrejtést a JS kapcsolja be, nem a CSS.
   ============================================================================= */

/* Alapállapot: minden látható. Ez érvényes JS nélkül.
   .js-reveal — a szekció mint blokk érkezik
   .js-fade   — a szekción BELÜLI, staggerelt gyerekelem                        */
.js-reveal,
.js-fade { opacity: 1; visibility: visible; transform: none; }

@media (prefers-reduced-motion: no-preference) {
  /* visibility: hidden (= GSAP autoAlpha), NEM puszta opacity: 0 — különben a
     rejtett blokk linkjei tabbal elérhetők, de láthatatlanok (WCAG 2.4.7).    */
  html.js .js-reveal {
    opacity: 0;
    visibility: hidden;
    transform: translateY(var(--reveal-shift));
  }
  html.js .js-fade {
    opacity: 0;
    visibility: hidden;
  }
  /* A hero szó-reveal maszkolt alapállapota. Szerkezet:
     <h1 class="js-hero-word"><span class="word"><span class="word-in">Szó</span></span>…</h1> */
  html.js .js-hero-word .word-in { transform: translateY(108%); opacity: 0; }
}


/* =============================================================================
   D. RESET ÉS ELEMI TIPOGRÁFIA
   ============================================================================= */

*, *::before, *::after { box-sizing: border-box; }

/* FIGYELEM: NINCS `scroll-behavior: smooth` a html-en. A böngésző saját,
   aszinkron görgetés-animációja elveszi a ScrollTriggertől a pozíció-kezelést.
   A sima görgetés a horgonyokra szűkítve, JS-ből megy (main.js).              */
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body {
  margin: 0;
  background: var(--bg-canvas);
  color: var(--text-body);
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  font-weight: var(--fw-regular);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
}

img, svg, video { max-width: 100%; }
img { height: auto; }

h1, h2, h3, h4, h5, h6 { margin: 0; color: var(--text-heading); text-wrap: balance; }
p  { margin: 0; text-wrap: pretty; }
ul, ol { margin: 0; padding: 0; list-style: none; }
/* Tartalmi (szövegközi) felsorolás — itt a jelölő KELL. */
.prose ul, .prose ol { padding-left: 1.4em; }
.prose ul { list-style: disc; }
.prose ol { list-style: decimal; }
.prose li + li { margin-top: var(--space-2); }
.prose p + p, .prose p + ul, .prose p + ol, .prose ul + p, .prose ol + p { margin-top: var(--space-4); }

a { color: var(--text-link); text-decoration: none; }
a:hover { color: var(--text-link-hover); }
/* Szövegközi link: aláhúzva — a szín önmagában nem elég jelölő (WCAG 1.4.1). */
.prose a, .rich-text a { text-decoration: underline; text-underline-offset: 0.18em; }

strong, b { font-weight: var(--fw-semibold); color: var(--text-strong); }
code { font-family: var(--font-mono); font-size: 0.92em; }
hr { height: 1px; background: var(--border); border: 0; margin: 0; }

button, input, select, textarea { font: inherit; color: inherit; }

/* Fókusz — soha nincs outline:none pótlás nélkül.
   A gyűrű TÖMÖR (7,48:1 világoson), nem áttetsző.                             */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: var(--focus-ring-width) solid var(--focus-ring);
  outline-offset: var(--focus-ring-offset);
  border-radius: var(--radius-xs);
}

/* Sötét sávon a teal gyűrű megbukna (1,82:1) — ott fehér gyűrű megy. */
:where([data-surface="inverse"], .band, .footer)
  :where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline-color: var(--focus-ring-inverse);
}

/* Kihagyó link — billentyűzetes navigáció, WCAG 2.4.1 */
.skip {
  position: absolute; left: -9999px; top: 0;
  background: var(--bg-surface); color: var(--text-heading);
  padding: 12px 18px; border-radius: var(--radius-sm);
  box-shadow: var(--shadow-3); z-index: var(--z-modal);
  font-weight: var(--fw-semibold);
}
.skip:focus { left: 16px; top: 16px; }

/* Tipográfiai szerep-osztályok. A súly és a tracking szerep-tokenből jön:
   display + H1 = 700 és −0,01em; H2–H4 = 600 és 0em.                          */
.display { font-size: var(--fs-display); line-height: var(--lh-display); letter-spacing: var(--ls-display); font-weight: var(--fw-display); }
.h1      { font-size: var(--fs-h1);      line-height: var(--lh-h1);      letter-spacing: var(--ls-h1);      font-weight: var(--fw-h1); }
.h2      { font-size: var(--fs-h2);      line-height: var(--lh-h2);      letter-spacing: var(--ls-h2);      font-weight: var(--fw-h2); }
.h3      { font-size: var(--fs-h3);      line-height: var(--lh-h3);      letter-spacing: var(--ls-h3);      font-weight: var(--fw-h3); }
.h4      { font-size: var(--fs-h4);      line-height: var(--lh-h4);      letter-spacing: var(--ls-h4);      font-weight: var(--fw-h4); }
.lead    { font-size: var(--fs-lead);    line-height: var(--lh-lead);    color: var(--text-muted); max-width: var(--measure-lead); }
.small   { font-size: var(--fs-small);   color: var(--text-subtle); }
.micro   { font-size: var(--fs-micro);   color: var(--text-subtle); }

/* Akcent-aláhúzás a címsorban. A JS ezt animált sávra cseréli, de a
   box-shadow alapállapot JS nélkül is látszik.                                */
.mark { position: relative; display: inline-block; box-shadow: inset 0 -0.14em 0 var(--accent-underline); }


/* =============================================================================
   E. ELRENDEZÉS — konténer, szekció-ritmus, 12 oszlopos rács
   ============================================================================= */

.u-container        { width: 100%; max-width: var(--container);        margin-inline: auto; padding-inline: var(--gutter); }
.u-container-narrow { width: 100%; max-width: var(--container-narrow); margin-inline: auto; padding-inline: var(--gutter); }
.u-container-wide   { width: 100%; max-width: var(--container-wide);   margin-inline: auto; padding-inline: var(--gutter); }

/* Szekció-váz: a ritmust a MAGASSÁG adja, nem a háttérszín. Zebra-sávozás nincs. */
.section        { padding-block: var(--section-y); }
.section--tight { padding-block: var(--section-y-tight); }
.section--large { padding-block: var(--section-y-large); }

/* TELJES SZÉLESSÉGŰ fehér sáv — oldalanként 2–3, tartalmi okkal kiemelve. */
.section--paper { background: var(--bg-surface); border-block: 1px solid var(--border); position: relative; }
/* A regiszterjel a fehér sáv FELSŐ élén metszi a hajszálvonalat. */
.section--paper::before {
  content: ""; position: absolute; top: calc(var(--tick-height) / -2);
  height: var(--tick-height); width: var(--tick-width);
  border-radius: var(--radius-xs); background: var(--tick-color);
  left: var(--gutter); pointer-events: none;
}
@media (min-width: 1281px) {
  .section--paper::before { left: calc((100% - var(--container)) / 2 + var(--gutter)); }
}

/* KONTÉNER-SZÉLESSÉGŰ fehér felület — a fehér blokk halkabb változata. */
.section--paper-inset > .u-container {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-xl);
  padding-block: var(--section-y-tight);
  max-width: calc(var(--container) + 2 * var(--gutter));
}

/* 12 oszlopos rács. A MÉRET-HIERARCHIA kötelező: egy tartalmi rácsban sem lehet
   minden oszlop pontosan egyenlő szélességű 3× vagy 4×. Kivétel: az előtte/utána
   panel 6+6-ja (ott a szimmetria az üzenet) és a hajszálvonalas lista.         */
.row, .u-row {
  display: grid;
  grid-template-columns: repeat(var(--grid-columns), minmax(0, 1fr));
  gap: var(--grid-gap);
}
.row--xl { gap: var(--grid-gap-xl); }
.col-2{grid-column:span 2}  .col-3{grid-column:span 3}  .col-4{grid-column:span 4}
.col-5{grid-column:span 5}  .col-6{grid-column:span 6}  .col-7{grid-column:span 7}
.col-8{grid-column:span 8}  .col-9{grid-column:span 9}  .col-10{grid-column:span 10}
.col-12{grid-column:span 12}
.col-start-8 { grid-column: 8 / -1; }
.u-col-2{grid-column:span 2}  .u-col-3{grid-column:span 3}  .u-col-4{grid-column:span 4}
.u-col-5{grid-column:span 5}  .u-col-6{grid-column:span 6}  .u-col-7{grid-column:span 7}
.u-col-8{grid-column:span 8}  .u-col-10{grid-column:span 10} .u-col-12{grid-column:span 12}

@media (max-width: 900px) {
  .row, .row--xl, .u-row { grid-template-columns: 1fr; gap: var(--grid-gap-sm); }
  [class*="col-"] { grid-column: 1 / -1; }
}


/* =============================================================================
   F.1 IKON-UTILITY-K
   -----------------------------------------------------------------------------
   Az `<svg>` elemeken nincs beégetett stroke-width: a méretet a .ic-* osztályok
   adják, a vonalvastagságot ÖRÖKLÉS (a stroke-width öröklődik, és a <use>
   árnyékfáján is átmegy). Így a vonalvastagság tényleg EGY helyen módosítható.
   Dekoratív használatnál mindig aria-hidden="true".
   ============================================================================= */

.ic    { flex: none; stroke-width: var(--icon-stroke); }
.ic-xs { width: var(--icon-xs); height: var(--icon-xs); }
.ic-sm { width: var(--icon-sm); height: var(--icon-sm); }
.ic-md { width: var(--icon-md); height: var(--icon-md); }
.ic-lg { width: var(--icon-lg); height: var(--icon-lg); }
.ic-xl { width: var(--icon-xl); height: var(--icon-xl); }
/* Vastagabb vonal a pipán, a nyílon és a chevronon — kis méretben az 1,75 vékony. */
.ic-bold { stroke-width: var(--icon-stroke-bold); }
.ic-hair { stroke-width: var(--icon-stroke-hair); }
/* Ikon-színszerepek — tokenből, nem inline `style`-ból. */
.ic-role--action  { color: var(--icon-chip-color); }
.ic-role--info    { color: var(--icon-color-info); }
.ic-role--warn    { color: var(--icon-color-warn); }
.ic-role--inverse { color: var(--icon-color-inverse); }

/* Ikon-konténer — SZÖGLETES, kontúros, átlátszó. Csak ott, ahol az ikon önálló
   vizuális horgony. A kártya tetején NINCS.                                    */
.icon-box {
  min-width: var(--icon-chip-size); min-height: var(--icon-chip-size);
  width: fit-content; border-radius: var(--icon-chip-radius);
  background: var(--icon-chip-bg); border: var(--icon-chip-border);
  color: var(--icon-chip-color); display: grid; place-items: center; padding: 0.35em;
}
.icon-box--soft { background: var(--icon-chip-bg-soft); border-color: var(--border-accent); }


/* =============================================================================
   F.2 EYEBROW-RENDSZER — KÉT variáns
   -----------------------------------------------------------------------------
   1. `.eyebrow`      — verzál, 0,1em tracking, 600, 13 px. A FŐ FEJEZETEKÉ,
                        opcionális sorszámmal (`.eyebrow__num`).
   2. `.eyebrow-lead` — kevert kis-nagybetűs, 16→20 px, 500, szürkéskék.
                        A halkabb szekcióké és az alcímkéké. SORSZÁMOT SOSEM KAP.
   ============================================================================= */

.eyebrow {
  display: block;
  font-size: var(--eyebrow-font-size);
  font-weight: var(--eyebrow-weight);
  letter-spacing: var(--eyebrow-tracking);
  line-height: var(--eyebrow-line-height);
  text-transform: uppercase;
  color: var(--eyebrow-color);
  margin: 0 0 var(--eyebrow-gap);
}
.eyebrow--muted   { color: var(--eyebrow-color-muted); }
.eyebrow--inverse { color: var(--eyebrow-color-inverse); }
.eyebrow__num {
  color: var(--eyebrow-num-color);
  font-variant-numeric: tabular-nums;
  margin-right: 0.35em;
}

.eyebrow-lead {
  display: block;
  font-size: var(--eyebrow-lead-size);
  font-weight: var(--eyebrow-lead-weight);
  letter-spacing: var(--eyebrow-lead-tracking);
  line-height: var(--eyebrow-lead-line-height);
  color: var(--eyebrow-lead-color);
  margin: 0 0 var(--eyebrow-gap);
}
.eyebrow-lead--accent { color: var(--accent); }

/* --- A BIRTOKOLHATÓ JEL: „hajszálkereszt" ------------------------------------
   2 px széles, 20 px magas akcent-szakasz. Soha nem kattintható, soha nem
   animálódik külön. HÁROM megjelenési helye van, és sehol máshol:
     1. szekció-fejléc (a bal, keskeny oszlop tetején)
     2. a teljes szélességű fehér sáv FELSŐ éle (.section--paper::before)
     3. a lábléc fölött, egyszer.
   Képernyőnként legfeljebb kettő látszik belőle.                               */
.tick {
  display: block; width: var(--tick-width); height: var(--tick-height);
  background: var(--tick-color); border-radius: var(--radius-xs);
  margin-bottom: var(--space-4);
}

/* --- SZEKCIÓ-FEJLÉC: BALRA ZÁRT, eyebrow → címsor → lead. HÁROM változat.
   Középre igazított fejléc EGYETLEN helyen van: a záró CTA-nál.                */
.section-head { margin-bottom: var(--head-gap); }
.section-head .h2 { max-width: var(--measure-h2); }
.section-head p { margin-top: var(--space-4); max-width: var(--measure-body); color: var(--text-muted); }

/* (a) RAIL: az eyebrow saját, keskeny oszlopban ül a cím mellett. */
.section-head--rail { display: grid; grid-template-columns: repeat(12, minmax(0,1fr)); gap: var(--grid-gap); }
.section-head--rail .eyebrow,
.section-head--rail .eyebrow-lead { grid-column: span var(--head-rail-span); margin-top: 6px; }
.section-head--rail .h2, .section-head--rail p { grid-column: 3 / span 8; }

/* (b) SPLIT: bal = regiszterjel + eyebrow · közép = cím + lead · jobb = széljegyzet. */
.section-head--split { display: grid; grid-template-columns: repeat(12, minmax(0,1fr)); gap: var(--grid-gap); margin-bottom: var(--head-gap); }
.section-head--split__label { grid-column: span var(--head-rail-span); }
.section-head--split__body  { grid-column: span var(--head-body-span); }
.section-head--split__body .h2 { max-width: var(--measure-h2); }
.section-head--split__body p { margin-top: var(--space-4); max-width: var(--measure-body); color: var(--text-muted); }
.section-head__note {
  grid-column: span var(--head-note-span);
  align-self: end;
  font-size: var(--head-note-size);
  color: var(--head-note-color);
  max-width: var(--head-note-measure);
}

/* (c) CENTER: a rendszerben PONTOSAN EGY helyen — a záró CTA-nál. */
.section-head--center { text-align: center; margin-inline: auto; max-width: var(--measure-inverse); }
.section-head--center .h2 { max-width: none; }

@media (max-width: 900px) {
  .section-head--rail, .section-head--split { grid-template-columns: 1fr; gap: 0; }
  .section-head--rail .eyebrow,
  .section-head--rail .eyebrow-lead { grid-column: 1; margin-top: 0; margin-bottom: var(--eyebrow-gap); }
  .section-head--rail .h2, .section-head--rail p { grid-column: 1; }
  .section-head--split__label, .section-head--split__body, .section-head__note { grid-column: 1; }
  .section-head__note { margin-top: var(--space-5); max-width: none; }
}


/* =============================================================================
   F.3 NAVBAR — teljes szélességű sticky sáv, kategorizált legördülőkkel
   -----------------------------------------------------------------------------
   Nem lebegő sziget (a v1-es minta elvetve). Logó + LEGALÁBB KÉT kategorizált
   legördülő (cím + alcím oszlopokkal) + PONTOSAN KÉT, rangsorolt CTA.

   TÖRÉSPONT: 1160 px. Az öt menüpont + a két CTA teljes szélessége ~1060 px;
   ez a 1200-as konténerben elfér, de 1160 px viewport alatt a törléskor
   keletkező szűk sávban már tördelne. Ezért 1159 px-től MINDEN a hamburger
   mögé kerül. (A main.js ugyanezt a küszöböt figyeli.)

   EDGE-TO-EDGE (spec 5.2): a .nav__in-ről a HTML-ben LEKERÜLT a `u-container`
   osztály mind a 60 oldalon. Ha bárhol visszakerülne, a max-width: 1200px
   felülírná az itteni `max-width: none`-t, és a sáv szigetként ugrana középre.
   ============================================================================= */

.nav {
  position: sticky; top: 0; z-index: var(--z-header);
  background: var(--nav-bg);
  -webkit-backdrop-filter: saturate(160%) blur(10px);
  backdrop-filter: saturate(160%) blur(10px);
  border-bottom: var(--nav-border);
  transition: background-color var(--dur-quick) var(--ease-out),
              box-shadow      var(--dur-quick) var(--ease-out),
              border-color    var(--dur-quick) var(--ease-out);
}
/* 8 px görgetés után. Az osztályt sentinel + IntersectionObserver kapcsolja a
   main.js NEM-GSAP szakaszában — a navbarnak GSAP nélkül is működnie kell.   */
.nav--scrolled {
  background: var(--nav-bg-scrolled);
  border-bottom-color: var(--border-strong);
  box-shadow: var(--shadow-1);
}
.nav__in {
  display: flex; align-items: center; gap: var(--space-6);
  min-height: var(--nav-height);
  width: 100%; max-width: none;              /* a .u-container HELYETT       */
  padding-inline: var(--nav-gutter);
}

.nav__brand {
  display: flex; align-items: center; gap: 9px;
  font-weight: var(--fw-bold); font-size: var(--fs-h4);
  color: var(--text-heading); letter-spacing: var(--ls-h1);
  min-height: var(--btn-min-height-compact);
}
.nav__brand:hover { color: var(--text-heading); }
/* A szóvédjegy szögletes jele — nem kör, nem lekerekített pötty. */
.nav__mark {
  width: var(--nav-mark-size); height: var(--nav-mark-size);
  border-radius: var(--nav-mark-radius); background: var(--accent); flex: none;
}

/* A szélesebb sávban a menü nem tapadhat a logóhoz — a hézag a viewporttal nő. */
.nav__menu {
  display: flex; align-items: center; gap: var(--nav-link-gap);
  margin-left: clamp(var(--space-4), 2.5vw, var(--space-10));
}
.nav__link, .nav__toggle {
  font: inherit; font-size: var(--nav-link-size); font-weight: var(--nav-link-weight);
  color: var(--nav-link-color); background: none; border: 0; padding: 10px 2px;
  min-height: var(--btn-min-height-compact); cursor: pointer;
  display: inline-flex; align-items: center; gap: 6px;
  transition: color var(--dur-quick) var(--ease-out);
}
.nav__link:hover, .nav__toggle:hover { color: var(--nav-link-color-hover); }
.nav__toggle svg { transition: transform var(--dur-quick) var(--ease-out); }
.nav__toggle[aria-expanded="true"] svg { transform: rotate(180deg); }

/* Az aktív menüpont alatt 2 px akcent-sáv + aria-current="page". */
.nav__link[aria-current="page"],
.nav__toggle[aria-current="page"] {
  color: var(--text-heading);
  box-shadow: inset 0 -2px 0 var(--accent-underline);
}

.nav__actions { display: flex; align-items: center; gap: var(--space-3); margin-left: auto; }

/* --- Legördülő: SAJÁT, három oszlopos információs architektúra ------------- */
.nav__drop { position: relative; }
.nav__panel {
  position: absolute; top: calc(100% + 10px); left: -20px;
  min-width: 560px; background: var(--bg-surface);
  border: 1px solid var(--border); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-3); padding: var(--space-6);
  display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-6);
}
.nav__panel[hidden] { display: none; }
.nav__panel--wide { min-width: 720px; }
/* Túlcsordulás-védelem: a szélesebb sávban a menüpontok kijjebb kerülnek, így
   egy 720 px-es panel 1160–1300 px viewporton kilógna jobbra.                */
.nav__panel { max-width: calc(100vw - 2 * var(--nav-gutter)); }
/* A menü JOBB SZÉLSŐ legördülője (Tudástár) a jobb szélhez igazodik.         */
.nav__panel--right { left: auto; right: -20px; }
.nav__group-title {
  font-size: var(--fs-micro); font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-eyebrow); text-transform: uppercase;
  color: var(--eyebrow-color-muted); margin-bottom: var(--space-3);
}
.nav__group li + li { margin-top: 2px; }
/* A mega-menü linkje CÍM + ALCÍM (információs architektúra), nem ikon +
   egysoros felirat — így egy témaikonnal kevesebb fut az oldalon.            */
.nav__group a {
  display: block;
  font-size: var(--fs-small); color: var(--text-heading); font-weight: var(--fw-semibold);
  padding: 8px; margin-inline: -8px; border-radius: var(--radius-sm);
  min-height: var(--btn-min-height-compact);
  transition: background-color var(--dur-quick) var(--ease-out);
}
.nav__group a:hover { background: var(--bg-tint); color: var(--text-heading); }
.nav__sub { display: block; font-size: var(--fs-micro); font-weight: var(--fw-regular); color: var(--text-muted); margin-top: 1px; }
/* A panel alján futó, halkabb átvezető sor. */
.nav__panel-foot {
  grid-column: 1 / -1; margin-top: var(--space-2); padding-top: var(--space-4);
  border-top: 1px solid var(--border); font-size: var(--fs-small); color: var(--text-muted);
}
.nav__panel-foot a { font-weight: var(--fw-semibold); }

/* Mobil mega-menü: SAJÁT fejléc visszalépéssel. Desktopon rejtve. */
.nav__panel-head { display: none; }
.nav__back {
  display: inline-flex; align-items: center; gap: 8px;
  font: inherit; font-size: var(--fs-small); font-weight: var(--fw-semibold);
  color: var(--text-heading); background: none; border: 0; cursor: pointer;
  min-height: var(--btn-min-height-compact); padding: 0;
}
.nav__back svg { transform: rotate(90deg); }

.nav__burger {
  display: none; margin-left: auto;
  min-width: var(--btn-min-height-compact); min-height: var(--btn-min-height-compact);
  border: 1px solid var(--border-strong); border-radius: var(--radius-sm);
  background: var(--bg-surface); color: var(--text-heading); cursor: pointer;
  align-items: center; justify-content: center;
}

@media (max-width: 1159px) {
  .nav__in { padding-inline: var(--nav-gutter-sm); }
  .nav__menu, .nav__actions { display: none; }
  .nav__burger { display: inline-flex; }
  .nav--open .nav__menu,
  .nav--open .nav__actions {
    display: flex; flex-direction: column; align-items: stretch;
    width: 100%; margin: 0 0 var(--space-5); gap: var(--space-2);
  }
  .nav--open .nav__in { flex-wrap: wrap; padding-bottom: var(--space-4); }
  .nav--open .nav__actions { margin-left: 0; }
  /* 100dvh, NEM 100vh: mobil böngészőben a 100vh a kihúzott címsorral számol,
     így a nyitott menü alja a URL-sáv mögé csúszna.                          */
  .nav--open .nav__menu {
    max-height: calc(100dvh - var(--nav-height) - 96px);
    overflow-y: auto;
    overscroll-behavior: contain;      /* a görgetés nem „szökik ki" a törzsre */
    -webkit-overflow-scrolling: touch;
  }
  /* Mobilon a legördülő panel a sáv teljes szélességét használja. */
  .nav__panel, .nav__panel--right { max-width: none; left: auto; right: auto; }
  .nav--open .nav__panel,
  .nav--open .nav__panel--wide {
    position: static; min-width: 0; grid-template-columns: 1fr;
    box-shadow: none; margin-top: var(--space-2);
    border-radius: var(--radius-sm); background: var(--bg-tint);
  }
  .nav__panel-head {
    display: flex; align-items: center; justify-content: space-between;
    gap: var(--space-4); padding-bottom: var(--space-3);
    border-bottom: 1px solid var(--border);
  }
  .nav__panel-title {
    font-size: var(--fs-micro); font-weight: var(--fw-semibold);
    letter-spacing: var(--ls-eyebrow); text-transform: uppercase;
    color: var(--eyebrow-color-muted);
  }
  /* Nyitott mobilmenü mellett a törzs nem görög. A JS teszi fel az osztályt. */
  .nav--open .nav__actions .btn { width: 100%; }
}
body.has-open-nav { overflow: hidden; }


/* =============================================================================
   F.4 GOMBOK — 4px sugár, árnyék nélkül, hoveren csak háttér-/szegélyszín
   ============================================================================= */

.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--btn-gap);
  font: inherit; font-size: var(--btn-font-size); font-weight: var(--btn-font-weight);
  letter-spacing: var(--btn-tracking);
  padding: var(--btn-padding-y) var(--btn-padding-x); min-height: var(--btn-min-height);
  border-radius: var(--btn-radius); border: 1px solid transparent; cursor: pointer;
  text-decoration: none; box-shadow: var(--btn-primary-shadow);
  text-align: center;
  transition: background-color var(--dur-quick) var(--ease-out),
              color var(--dur-quick) var(--ease-out),
              border-color var(--dur-quick) var(--ease-out);
}
.btn--sm { min-height: var(--btn-min-height-compact); padding: 0.6rem 1rem; font-size: var(--fs-small); }
.btn__arrow { display: inline-flex; transition: transform var(--dur-quick) var(--ease-out); }

.btn--primary   { background: var(--btn-primary-bg); color: var(--btn-primary-text); }
.btn--secondary { background: var(--btn-secondary-bg); color: var(--btn-secondary-text); border: var(--btn-secondary-border); }
/* A szöveges gomb is KATTINTHATÓ ELEM: 44×44 px az abszolút minimum. */
.btn--ghost   { background: none; color: var(--btn-ghost-text); padding-inline: 8px; min-height: var(--btn-min-height-compact); }
.btn--inverse { background: transparent; color: var(--btn-inverse-text); border: var(--btn-inverse-border); }

/* A sötét sávon a teli akcent-gomb kontúrja csak 2,65:1 volna a #0C2E55-höz,
   ezért kötelező --accent-glow belső kontúr (7,82:1).                          */
.band .btn--primary, .footer .btn--primary { box-shadow: var(--btn-primary-inverse-outline); }
.band .btn--ghost, .footer .btn--ghost { color: var(--accent-glow); }

.btn[disabled], .btn[aria-disabled="true"] {
  cursor: not-allowed; opacity: 0.72;   /* látható marad, nem tűnik el */
}

@media (hover: hover) {
  .btn--primary:hover   { background: var(--btn-primary-bg-hover); color: var(--btn-primary-text); }
  .btn--secondary:hover { background: var(--btn-secondary-bg-hover); border-color: var(--border-strong); }
  .btn--inverse:hover   { background: var(--btn-inverse-bg-hover); color: var(--btn-inverse-text); }
  .btn--ghost:hover     { color: var(--accent-strong); }
  .btn:hover .btn__arrow { transform: translateX(var(--hover-arrow-shift)); }
}


/* =============================================================================
   F.5 KÁRTYA — a kanonikus recept (8px, lapos, hoveren csak szegélyszín)
   ============================================================================= */

.card {
  background: var(--card-bg);
  border: var(--card-border);
  border-radius: var(--card-radius);
  padding: var(--card-padding);
  box-shadow: var(--card-shadow);
  transition: border-color var(--dur-quick) var(--ease-out),
              background-color var(--dur-quick) var(--ease-out);
  position: relative;
  display: flex; flex-direction: column;
}
@media (hover: hover) {
  .card--interactive:hover { border-color: var(--card-border-hover); }
  .card--interactive:hover .card__link .btn__arrow { transform: translateX(var(--hover-arrow-shift)); }
}
.card:focus-within { outline: var(--focus-ring-width) solid var(--focus-ring); outline-offset: var(--focus-ring-offset); }

/* Kiemelt kártya: 2px akcent-csík FELÜL, a kártya belső szélességének középső
   harmadán — nem teljes élhosszú dekor-szegély.                                */
.card--featured::before {
  content: ""; position: absolute; inset-inline: 40%; top: 0; height: var(--card-accent-bar);
  background: var(--accent);
}
.card--flat { box-shadow: none; }

/* IKON A KÁRTYÁN: kis, INLINE, a címsor MELLETT — nem nagy, centrált chip. */
.card__head { display: flex; align-items: flex-start; gap: 10px; margin-bottom: var(--space-3); }
.card__head svg { flex: none; color: var(--accent); margin-top: 4px; }
.card__body { color: var(--card-body-color); max-width: var(--measure-card); }
.card__result {
  display: flex; gap: 10px; align-items: flex-start;
  margin-top: auto; padding-top: var(--space-5);
  border-top: 1px solid var(--border-soft);
  font-size: var(--fs-small); color: var(--text-muted);
}
.card__result svg { flex: none; color: var(--accent); margin-top: 2px; }
/* A kártya-link KATTINTHATÓ ELEM: 44 px az abszolút minimum. */
.card__link {
  display: inline-flex; align-items: center; gap: 8px;
  margin-top: auto; padding-block: var(--space-3);
  min-height: var(--btn-min-height-compact);
  font-weight: var(--fw-medium); font-size: var(--fs-small);
}
.card__result + .card__link { margin-top: var(--space-1); }

/* A kártya HÁROM tartalmi fokozata. Az egyformaság az, amitől a rács
   „generált"-nak látszik: a nagy tile többletet kap (mini ábra), a kicsi
   pedig csak címet és nyilat.                                                  */
.card--lead { grid-row: span 2; }
.card--lead .card__figure { margin-block: var(--space-5) var(--space-2); }
.card--lead .card__figure svg { display: block; width: 100%; height: auto; }
.card__figure text { font-family: var(--font-sans); }

/* --- BENTO — VALÓDI méret-hierarchia (a MÉRET hordozza a fontosságot) ------ */
.bento { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: var(--grid-gap); }
.bento > .span-2 { grid-column: span 2; }
.bento > .span-3 { grid-column: span 3; }
.bento > .span-4 { grid-column: span 4; }
@media (max-width: 980px) {
  .bento { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .bento > [class*="span-"] { grid-column: span 1; }
  .bento > .card--lead { grid-column: span 2; grid-row: auto; }
}
@media (max-width: 640px) {
  .bento { grid-template-columns: 1fr; }
  .bento > .card--lead { grid-column: span 1; }
}


/* =============================================================================
   F.6 RENDSZERKÁRTYA ÉS RENDSZER-SOR (statikus rács, marquee nincs)
   ============================================================================= */

.syscard {
  display: inline-flex; align-items: center; gap: 10px;
  background: var(--bg-surface); border: 1px solid var(--border);
  border-radius: var(--syscard-radius); padding: var(--syscard-padding);
  box-shadow: none; white-space: nowrap;
  transition: border-color var(--dur-quick) var(--ease-out);
}
.syscard__mono {
  min-width: var(--syscard-mono-size); min-height: var(--syscard-mono-size);
  border-radius: var(--syscard-mono-radius);
  background: var(--syscard-mono-bg); color: var(--syscard-mono-text);
  display: grid; place-items: center; padding: 0.25em;
  font-size: var(--fs-micro); font-weight: var(--fw-bold); letter-spacing: 0.02em;
}
.syscard__mono[data-kind="szamla"]  { background: var(--syscard-kind-szamla-bg);  color: var(--syscard-kind-szamla-text); }
.syscard__mono[data-kind="iroda"]   { background: var(--syscard-kind-iroda-bg);   color: var(--syscard-kind-iroda-text); }
.syscard__mono[data-kind="webshop"] { background: var(--syscard-kind-webshop-bg); color: var(--syscard-kind-webshop-text); }
.syscard__mono[data-kind="komm"]    { background: var(--syscard-kind-komm-bg);    color: var(--syscard-kind-komm-text); }
.syscard__name { font-size: var(--syscard-label-size); font-weight: var(--syscard-label-weight); color: var(--text-strong); }
/* AKTÍV állapot: a keret JELENTÉST hordoz → --border-active (WCAG 1.4.11). */
.syscard--active { border-color: var(--syscard-active-border); background: var(--syscard-active-bg); }
@media (hover: hover) { .syscard:hover { border-color: var(--border-accent); } }

/* A megkülönböztetést a KATEGÓRIA-TAGOLÁS adja, nem a mozgás. */
.syslist { display: grid; grid-template-columns: var(--syslist-columns); gap: var(--syslist-gap); }
.syslist__group { display: flex; flex-direction: column; gap: var(--space-3); }
.syslist__cat {
  font-size: var(--fs-micro); font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-eyebrow); text-transform: uppercase;
  color: var(--syslist-cat-color);
  padding-bottom: var(--space-3); border-bottom: 1px solid var(--border);
}
.syslist__items { display: flex; flex-wrap: wrap; gap: var(--syslist-item-gap); }
@media (max-width: 900px) { .syslist { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .syslist { grid-template-columns: 1fr; } }


/* =============================================================================
   F.7 STATISZTIKA-SOR — világos felületen, egy kiemelt csempe + három kisebb
   ============================================================================= */

.stats { display: grid; grid-template-columns: var(--stat-columns); gap: 0; }
.stat { padding: var(--space-2) var(--space-6); border-left: var(--stat-rule); }
.stat:first-child { padding-left: 0; border-left: 0; }
.stat--lead .stat__value { font-size: var(--stat-lead-value-size); }
.stat--lead .stat__label { font-size: var(--fs-body); color: var(--text-body); max-width: 30ch; }
.stat__value {
  font-size: var(--stat-value-size); font-weight: var(--stat-value-weight);
  line-height: var(--lh-display); letter-spacing: var(--ls-h1);
  color: var(--stat-value-color); font-variant-numeric: tabular-nums;
}
.stat__unit  { font-size: var(--fs-h3); font-weight: var(--fw-bold); color: var(--text-muted); }
.stat__label { margin-top: var(--space-3); font-size: var(--fs-small); color: var(--stat-label-color); }
/* FORRÁS-SOR: minden statisztika mellett kötelező. Amire nincs forrás, azt
   nem írjuk le.                                                                */
.stat__source{ margin-top: 6px; font-size: var(--fs-micro); color: var(--text-subtle); }

@media (max-width: 1024px) {
  .stats { grid-template-columns: 1fr 1fr; }
  .stat { border-left: 0; border-top: var(--stat-rule); padding: var(--space-5) 0; }
  .stat:nth-child(2) { padding-left: var(--space-5); border-left: var(--stat-rule); }
  .stat:nth-child(4) { padding-left: var(--space-5); border-left: var(--stat-rule); }
}
@media (max-width: 560px) {
  .stats { grid-template-columns: 1fr; }
  .stat, .stat:nth-child(2), .stat:nth-child(4) { padding-left: 0; border-left: 0; }
}


/* =============================================================================
   F.8 EYEBROW-RAIL — a kategória-címke mint önálló, keskeny rács-oszlop
   ============================================================================= */

.rail { display: grid; grid-template-columns: repeat(12, minmax(0,1fr)); gap: var(--eyebrow-rail-gap); }
.rail__row {
  grid-column: 1 / -1;
  display: grid; grid-template-columns: subgrid;
  padding-block: var(--space-6);
  border-top: 1px solid var(--border);
}
.rail__row:last-child { border-bottom: 1px solid var(--border); }
.rail__label { grid-column: span var(--eyebrow-rail-span); padding-top: 2px; margin: 0; }
.rail__body  { grid-column: span 6; }
.rail__aside { grid-column: 10 / -1; align-self: center; text-align: right; }
@supports not (grid-template-columns: subgrid) {
  .rail__row { grid-template-columns: repeat(12, minmax(0,1fr)); }
}
/* A rail-sor címe elől ELMARAD a témaikon: a bal oszlopban álló kategória-címke
   már elvégzi a munkát. Ikon ott marad, ahol interakciót vagy állapotot jelöl. */
.rail__title { margin-bottom: 6px; }
.rail__body p { color: var(--text-muted); font-size: var(--fs-small); max-width: 52ch; }
.rail__meta { font-size: var(--fs-micro); color: var(--text-subtle); font-variant-numeric: tabular-nums; }
@media (max-width: 900px) {
  .rail, .rail__row { grid-template-columns: 1fr; gap: var(--space-3); }
  .rail__label, .rail__body, .rail__aside { grid-column: 1 / -1; text-align: left; }
}


/* =============================================================================
   F.9 ELŐTTE / UTÁNA PANEL — az EGYETLEN szimmetrikus (6+6) blokk
   -----------------------------------------------------------------------------
   Mobilon a „ma" van felül — a felismerés jön előbb.
   ============================================================================= */

.ba { display: grid; grid-template-columns: 1fr auto 1fr; gap: var(--space-6); align-items: stretch; }
.ba__panel { border-radius: var(--ba-radius); padding: var(--ba-padding); border: 1px solid transparent; }
.ba__panel--before { background: var(--ba-before-bg); border-color: var(--ba-before-line); }
.ba__panel--after  { background: var(--ba-after-bg);  border-color: var(--ba-after-line); }
.ba__label {
  display: flex; align-items: center; gap: 8px;
  font-size: var(--fs-micro); font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-eyebrow); text-transform: uppercase; margin-bottom: var(--space-5);
}
.ba__panel--before .ba__label { color: var(--ba-before-label); }
.ba__panel--after  .ba__label { color: var(--ba-after-label); }
.ba__list li { display: flex; gap: 12px; align-items: flex-start; padding-block: 10px; }
.ba__list li + li { border-top: 1px solid rgba(0,0,0,.06); }
.ba__list svg { flex: none; margin-top: 3px; }
.ba__panel--before .ba__list { color: var(--ba-before-text); }
.ba__panel--before .ba__list svg { color: var(--ba-before-label); }
.ba__panel--after  .ba__list { color: var(--ba-after-text); }
.ba__panel--after  .ba__list svg { color: var(--accent); }
.ba__badge {
  align-self: center;
  min-width: var(--ba-badge-size); min-height: var(--ba-badge-size);
  border-radius: var(--radius-sm); background: var(--bg-surface); border: 1px solid var(--border-strong);
  display: grid; place-items: center; padding: 0.35em; color: var(--accent);
}
@media (max-width: 900px) {
  .ba { grid-template-columns: 1fr; }
  .ba__badge { transform: rotate(90deg); justify-self: center; }
}


/* =============================================================================
   F.10 „MIT JELENT EZ?" DOBOZ — az edukációs mag
   -----------------------------------------------------------------------------
   --blue-50 háttér, bal oldalon 3 px --blue-700 csík, 6 px sugár, árnyék nincs.
   Alatta 1–2 mondat, max. 40 szó, és innen megy a mélyítő link a szótárra.
   ============================================================================= */

.explain {
  background: var(--explain-bg); border-radius: var(--explain-radius);
  padding: var(--explain-padding); border-left: var(--explain-bar) solid var(--explain-bar-color);
  max-width: var(--measure-body);
}
.explain__head {
  display: flex; align-items: center; gap: 8px; margin-bottom: 8px;
  font-size: var(--fs-micro); font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-eyebrow); text-transform: uppercase; color: var(--explain-label);
}
.explain p { color: var(--text-body); font-size: var(--fs-small); }
.explain a { font-weight: var(--fw-semibold); text-decoration: underline; text-underline-offset: 0.18em; }


/* =============================================================================
   F.11 GYIK — natív <details>/<summary>, JS nélkül is működik
   -----------------------------------------------------------------------------
   Nincs kártya: hajszálvonalak tagolnak. A nyitás CSS grid 0fr → 1fr átmenet,
   --dur-base. Nincs GSAP. A chevron ugyanabban az időben fordul 180°-ot.
   ============================================================================= */

.faq { max-width: var(--container-narrow); }
.faq__item { border-top: 1px solid var(--border); }
.faq__item:last-child { border-bottom: 1px solid var(--border); }

.faq__q {
  display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-4);
  padding-block: var(--space-5); min-height: var(--btn-min-height);
  font-size: var(--fs-h4); font-weight: var(--fw-semibold); color: var(--text-heading);
  cursor: pointer; list-style: none;
}
.faq__q::-webkit-details-marker { display: none; }
.faq__q:hover { color: var(--accent-strong); }
.faq__q svg { flex: none; margin-top: 4px; color: var(--blue-700); transition: transform var(--dur-base) var(--ease-out); }
.faq__item[open] > .faq__q svg { transform: rotate(180deg); }

/* A grid-alapú nyitás: 0fr → 1fr. A belső elemnek overflow:hidden kell. */
.faq__a { display: grid; grid-template-rows: 1fr; }
.faq__a > div { overflow: hidden; padding-bottom: var(--space-5); color: var(--text-body); max-width: var(--measure-body); }
@supports (grid-template-rows: 0fr) {
  .faq__item:not([open]) .faq__a { grid-template-rows: 0fr; }
  .faq__a { transition: grid-template-rows var(--dur-base) var(--ease-out); }
}


/* =============================================================================
   F.12 FOLYAMAT-LÉPÉSEK — az első lépés hangsúlyosabb
   ============================================================================= */

.steps { position: relative; display: grid; grid-template-columns: 1.35fr 1fr 1fr 1fr; gap: var(--space-6); }
.steps--three { grid-template-columns: 1.35fr 1fr 1fr; }
.steps__line {
  position: absolute; top: 20px; left: 6%; right: 6%; height: 0;
  border-top: var(--step-connector) dashed var(--step-connector-color);
  opacity: .8; z-index: 0;
}
.step { position: relative; z-index: 1; }
.step__badge {
  min-width: var(--step-badge-size); min-height: var(--step-badge-size);
  width: fit-content; border-radius: var(--step-badge-radius);
  background: var(--step-badge-bg); color: var(--step-badge-text);
  display: grid; place-items: center; padding: 0.3em 0.5em;
  font-weight: var(--fw-bold); font-size: var(--fs-h4);
  margin-bottom: var(--space-5); font-variant-numeric: tabular-nums;
}
.step--current .step__badge { box-shadow: var(--step-badge-ring); }
.step__title { margin-bottom: 8px; }
.step p { font-size: var(--fs-small); color: var(--text-muted); }
@media (max-width: 860px) {
  .steps, .steps--three { grid-template-columns: 1fr; gap: var(--space-8); }
  .steps__line {
    top: 0; bottom: 0; left: 19px; right: auto; width: 0; height: auto;
    border-top: 0; border-left: var(--step-connector) dashed var(--step-connector-color);
  }
}


/* =============================================================================
   F.13 FOLYAMATÁBRA — fotó helyett ábra, ami magyaráz
   -----------------------------------------------------------------------------
   Három vonalvastagság: hajszál (1,25) · alap (1,75) · kiemelt (2,5). A kiemelt
   KIZÁRÓLAG az adatáramlásé — ez az ábra egyetlen akcent-eleme.
   AZ ÁBRÁK VONALVASTAGSÁGA IS TOKENBŐL JÖN: nincs beégetett szám az SVG-ben.
   ============================================================================= */

.flow-frame { background: var(--bg-surface); border: 1px solid var(--border); border-radius: var(--radius-xl); padding: var(--space-6); overflow-x: auto; }
.flow-svg { display: block; width: 100%; height: auto; }
.flow-svg text, .hero-flow__svg text { font-family: var(--font-sans); }
.flow-svg, .hero-flow__svg, .card__figure svg { stroke-width: var(--flow-stroke-base); }
[stroke="var(--flow-line)"] { stroke-width: var(--flow-stroke-accent); }
[stroke="var(--flow-line-passive)"] { stroke-width: var(--flow-stroke-base); }
.band__deco { stroke-width: var(--flow-stroke-base); }

.flow-box-label     { font-size: 17px;   font-weight: 600; fill: var(--flow-box-text); }
.flow-box-sub       { font-size: 14.5px; font-weight: 500; fill: var(--flow-label); }
.flow-edge-label    { font-size: 14.5px; font-weight: 600; fill: var(--flow-label); }
.flow-passive-label { font-size: 14.5px; font-weight: 500; fill: var(--flow-line-passive); }

/* 720 px alatt HTML-alapú, függőleges változat váltja az SVG-t. */
.flow-stack { display: none; }
@media (max-width: 720px) { .flow-svg { display: none; } .flow-stack { display: grid; gap: var(--space-3); } }
.flow-stack__box { background: var(--flow-box-bg); border: 1px solid var(--flow-box-border); border-radius: var(--flow-radius); padding: var(--space-4); }
.flow-stack__box--work { background: var(--accent-soft); border-color: var(--border-accent); }
.flow-stack__name { font-size: var(--fs-small); font-weight: var(--fw-semibold); color: var(--ink-800); }
.flow-stack__sub  { font-size: var(--fs-micro); color: var(--text-muted); margin-top: 2px; }
.flow-stack__edge { display: flex; align-items: center; gap: 10px; padding-left: var(--space-4); font-size: var(--fs-micro); font-weight: var(--fw-semibold); color: var(--text-muted); }
.flow-stack__edge i { width: 0; height: 20px; flex: none; border-left: var(--flow-stroke-accent) solid var(--flow-line); }
.flow-stack__edge--passive { color: var(--text-subtle); }
.flow-stack__edge--passive i { border-left-style: dashed; border-left-width: var(--flow-stroke-base); border-color: var(--flow-line-passive); }
.flow-legend { display: flex; flex-wrap: wrap; gap: var(--space-5); margin-top: var(--space-5); font-size: var(--fs-small); color: var(--text-muted); }
.flow-legend span { display: inline-flex; align-items: center; gap: 8px; }
.flow-legend i { width: 26px; height: 0; border-top-width: var(--flow-stroke-accent); border-top-style: solid; }


/* =============================================================================
   F.14 HERO — 12 oszlopos, 7 + kifutó ábra, BALRA ZÁRT
   -----------------------------------------------------------------------------
   Az ábra NEM külön dobozolt vizuál a szöveg mellett: keret, árnyék és
   háttérkártya nélkül, szabadon álló vonalas rajzként ül a canvason, és a
   jobb margón KIFUT a rácsból. A hero: eyebrow → H1 → lead → gombpár → egy sor.
   Bejelentés-pill a headline fölött NINCS.
   ============================================================================= */

.hero { padding-block: clamp(3rem, 1.6rem + 6vw, 6.5rem) var(--section-y); }
.hero__text { grid-column: span 7; }
.hero__visual { grid-column: 9 / -1; align-self: center; margin-right: calc(-1 * var(--gutter)); }
@media (max-width: 1100px) { .hero__visual { grid-column: 8 / -1; } }
@media (max-width: 900px) {
  .hero__text, .hero__visual { grid-column: 1 / -1; }
  .hero__visual { margin-right: 0; margin-top: var(--space-10); max-width: 380px; }
}
.hero__title { max-width: var(--measure-display); margin-bottom: var(--space-6); }
.hero__lead { margin-bottom: var(--space-8); }
.hero__actions { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: center; }
.hero__note { margin-top: var(--space-5); font-size: var(--fs-small); color: var(--text-subtle); max-width: 44ch; }

/* Az aloldali, ábra nélküli hero — csak szöveg, morzsamenü alatt. */
.hero--simple { padding-block: clamp(2rem, 1.2rem + 3.5vw, 3.5rem) var(--section-y-tight); }
.hero--simple .hero__text { grid-column: span 8; }


/* -----------------------------------------------------------------------------
   F.14b HERO — TELJES SZÉLESSÉGŰ VÁLTOZAT  (.hero--wide)
   -----------------------------------------------------------------------------
   Spec: docs/design/illusztracio-spec.md 4. — a sáv szegtől szegig fut, a SZÖVEG
   a .u-container-ben marad (balra zárt, max. 8/12 oszlop), a folyamat-jelenet
   pedig alatta, a szélesebb .u-container-wide rácsban ül.

   A régi 5 oszlopos, ÁLLÓ hero-ábra (.hero__visual / .hero-flow) megszűnt a
   főoldalon: 320 × 322-es viewBox-ban a 15 px-es feliratok tényleges mérete
   szűk ablakban 13 px alá csúszott. Helyette a .illu--band (1200 × 260) fut.
   -------------------------------------------------------------------------- */

.hero--wide { position: relative; overflow: hidden; }
/* A rácsréteg KIVÉVE — az abszolút pozíciója nem írható felül. */
.hero--wide > *:not(.hero__grid) { position: relative; z-index: 1; }

/* A halvány hajszálrács. NEM SVG, hanem két gradiens: nulla DOM-elem, nulla KB.
   ALAPÁLLAPOT = VÉGÁLLAPOT (9.6): JS nélkül azonnal .14-en áll.               */
.hero__grid {
  position: absolute; inset: 0; pointer-events: none; z-index: 0;
  opacity: 0.14;
  background-image:
    linear-gradient(to right,  var(--line-hex) 1px, transparent 1px),
    linear-gradient(to bottom, var(--line-hex) 1px, transparent 1px);
  background-size: 64px 64px;
  /* A rács a sticky navbar ALATT „folytatódik", nem duplázza a szegélyvonalát. */
  background-position: 0 calc(var(--nav-height) * -1);
}
@supports (mask-image: radial-gradient(#000, transparent)) {
  .hero__grid {
    -webkit-mask-image: radial-gradient(115% 85% at 50% 25%, #000 38%, transparent 80%);
            mask-image: radial-gradient(115% 85% at 50% 25%, #000 38%, transparent 80%);
  }
}
/* A maszk STATIKUS — soha nem animálódik, az festési költség volna. */
@media (prefers-reduced-motion: no-preference) {
  html.js .hero__grid { opacity: 0; }   /* innen viszi a GSAP .14-re */
}
@media (prefers-reduced-motion: reduce) {
  .hero__grid { opacity: 0.14 !important; }
}

/* A szöveg 7 helyett 8 oszlopot kap: az oldalsáv megszűnt. */
.hero--wide .hero__text { grid-column: span 8; }
@media (max-width: 900px) { .hero--wide .hero__text { grid-column: 1 / -1; } }

/* A jelenet a szélesebb rácsban, a szöveg ALATT. */
.hero__scene { margin-top: clamp(2rem, 1.2rem + 3vw, 3.5rem); }
.hero--wide .illu--band > svg { aspect-ratio: 60 / 13; }

/* Kisebb léptékű változat a hub-oldalakra: ugyanaz a nyelv, halkabb ritmus. */
.hero--wide.hero--simple .hero__scene { margin-top: clamp(1.5rem, 1rem + 2vw, 2.5rem); }

/* A maszk SZIMMETRIKUS ráhagyást kap, kompenzáló negatív margóval — az Ő/Ű
   kettős vesszője és az Á/É éles ékezete különben belelógna a vágásba.        */
.js-hero-word .word { display: inline-block; overflow: hidden; vertical-align: bottom; padding-block: 0.16em 0.08em; margin-block: -0.16em -0.08em; }
.js-hero-word .word-in { display: inline-block; will-change: transform; }

/* Hero-ábra: KERET, ÁRNYÉK ÉS HÁTTÉRKÁRTYA NÉLKÜL. */
.hero-flow { background: none; border: 0; border-radius: 0; box-shadow: none; padding: 0; }
.hero-flow__svg { display: block; width: 100%; height: auto; }
.hero-flow__label   { font-size: 17px; font-weight: 600; fill: var(--flow-box-text); }
.hero-flow__sub     { font-size: 15px; font-weight: 500; fill: var(--flow-label); }
.hero-flow__edge    { font-size: 15px; font-weight: 600; fill: var(--flow-label); }
.hero-flow__passive { font-size: 15px; font-weight: 500; fill: var(--flow-line-passive); }
.hero-flow__legend { display: flex; flex-wrap: wrap; gap: var(--space-5); margin-top: var(--space-4); font-size: var(--fs-small); color: var(--text-muted); }
.hero-flow__legend span { display: inline-flex; align-items: center; gap: 8px; }
.hero-flow__legend i { width: 24px; height: 0; border-top-width: var(--flow-stroke-accent); border-top-style: solid; }

/* A lebegő mini-badge — a rendszer EGYETLEN pill-eleme. A HEROBAN NINCS. */
.pill-badge {
  display: inline-flex; align-items: center; gap: 8px;
  border-radius: var(--badge-radius); padding: var(--badge-padding);
  font-size: var(--badge-size); font-weight: var(--fw-semibold);
  background: var(--badge-bg); border: var(--badge-border); color: var(--text-muted);
}
.pill-badge svg { color: var(--accent); }


/* -----------------------------------------------------------------------------
   F.14c HERO — „A GÉPHÁZ": teljes viewportos MÉLYKÉK JELENET  (.hero--stage)
   -----------------------------------------------------------------------------
   CSAK a főoldal használja; a 60 aloldal .hero--simple / .hero--wide receptje
   ÉRINTETLEN (F.14 / F.14b).

   Miért nem „szöveg + diagram" ez a hero? Mert a megrendelő pontosan azt
   kifogásolta: átrendezett szöveghalmaznak látszott. A javítás nem díszítés,
   hanem KOMPOZÍCIÓVÁLTÁS — a lapon mostantól TÉR van:

     0  .hero__field  — ellenfény + teal derengés + a horizont felé szűkülő
                        PERSPEKTIVIKUS PADLÓRÁCS + scrim + vinyetta
     1  .hero__scene  — a KONZOL: perspektívában döntött, `translateZ`-vel
                        valódi mélységbe állított három panel, ami KIFUT
                        a jobb képszélen (a szekció overflow-ja vágja)
     2  .hero__copy   — a plakát: eyebrow, négysoros H1, lead, CTA-pár, jegyzet
     3  .hero__rail   — szegtől szegig futó záró sáv + izzó teal alsó él

   MÉRETEZÉS: a jelenet MINDEN mérete a `.scene__deck` saját `font-size`-ához
   kötött `em`. A deck betűmérete egyetlen `clamp(… min(vw, svh) …)`, tehát a
   kompozíció szélességre ÉS magasságra is skálázódik — nem kell tucatnyi
   töréspont ahhoz, hogy 1920, 1600, 1280 és 1000 px magas ablakban is
   ugyanaz a kép álljon össze.

   MOZGÁS: itt egyetlen elem láthatósága sem függ a JS-től (lásd F.14d).
   -------------------------------------------------------------------------- */

.hero--stage {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  /* Oszlopirány: sorirányban a `.hero__inner` szélessége a min-content-hez
     tapadna, és a hosszú magyar szavak kitolnák a mobil elrendezést. */
  display: flex; flex-direction: column;
  min-height: 100vh;      /* fallback a régi böngészőknek                       */
  min-height: 100svh;     /* svh: az iOS URL-sáv nem ugráltatja (dvh TILOS)     */
  /* A mező a sticky navbar MÖGÉ fut: a sáv teteje is szegtől szegig sötét. */
  margin-top: calc(-1 * var(--nav-height));
  padding-block: calc(var(--nav-height) + var(--hero-pad-top)) 0;
  color: var(--text-inverse);
  /* A mélykék MEZŐ. Egyetlen új primitív szín sem születik: a három megálló
     a --blue-700 / --blue-800 / --blue-900, a fényforrás a --blue-600. */
  background:
    radial-gradient(112% 82% at 78% 10%, var(--blue-600) 0%, transparent 60%),
    linear-gradient(162deg, var(--blue-700) 0%, var(--blue-800) 46%, var(--blue-900) 100%);

  /* Egyetlen scoped blokk átszínezi az egész meglévő ábra-nyelvet — így
     egyetlen komponenst sem kell duplikálni sötét mezőre. */
  --border:       var(--line-inverse);
  --focus-ring:   var(--focus-ring-inverse);
  --accent-line:  var(--accent-glow);
}

/* AZ ALSÓ ÉL — szegtől szegig futó, a széleken feloldódó izzó teal vonal.
   Ez a lap egyetlen olyan eleme, ami minden felbontáson pontosan 100vw. */
.hero--stage::after {
  content: "";
  position: absolute; left: 0; right: 0; bottom: 0; height: 3px; z-index: 4;
  background: linear-gradient(90deg,
    rgba(47, 160, 160, 0) 0%, var(--accent-bright) 18%,
    var(--accent-glow) 54%, var(--accent-bright) 82%, rgba(47, 160, 160, 0) 100%);
}


/* =========================== 0. réteg — A MEZŐ ============================ */

.hero__field { position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; }

/* Hideg ellenfény balra lent: ez emeli ki a plakátot a lapos mezőből. */
.field__cool {
  position: absolute; left: -20%; bottom: -30%;
  width: min(960px, 76%); aspect-ratio: 1; border-radius: 50%;
  background: radial-gradient(closest-side, rgba(23, 80, 143, 0.62), transparent 72%);
}
/* A teal derengés a KONZOL mögött — ez a jelenet fényforrása. */
.field__aurora {
  position: absolute; right: -12%; top: -14%;
  width: min(1180px, 88%); aspect-ratio: 1 / 0.94; border-radius: 50%;
  background: radial-gradient(closest-side,
    rgba(47, 160, 160, 0.52) 0%, rgba(47, 160, 160, 0.20) 46%, transparent 74%);
}

/* A PERSPEKTIVIKUS PADLÓ. Nem hajszálrács-tapéta: egy `rotateX`-szel
   megdöntött sík, aminek a vonalai a horizont felé sűrűsödnek. Ez az
   egyetlen elem, ami egy pillantás alatt eldönti, hogy a lapon TÉR van. */
.field__floor {
  position: absolute; left: -28%; right: -28%; bottom: -1px; height: 58%;
  perspective: 460px; perspective-origin: 50% 0%;
}
@supports (mask-image: linear-gradient(#000, transparent)) {
  .field__floor {
    -webkit-mask-image: linear-gradient(to top, #000 0%, rgba(0, 0, 0, 0.5) 34%, transparent 86%);
            mask-image: linear-gradient(to top, #000 0%, rgba(0, 0, 0, 0.5) 34%, transparent 86%);
  }
}
.field__floor-grid {
  position: absolute; left: 0; right: 0; bottom: 0; height: 300%;
  transform: rotateX(76deg); transform-origin: 50% 100%;
  background-image:
    linear-gradient(to right,  rgba(126, 206, 214, 0.32) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(126, 206, 214, 0.22) 1px, transparent 1px);
  background-size: 88px 88px;
}

/* A SCRIM a plakát alatt: a H1 és a lead KÖTELEZŐEN AAA marad akkor is, ha
   a konzol fénye a szöveghasáb pereméig ér. */
.field__scrim {
  position: absolute; inset: 0;
  background: linear-gradient(100deg,
    rgba(4, 18, 36, 0.82) 0%, rgba(4, 18, 36, 0.58) 28%,
    rgba(4, 18, 36, 0.10) 55%, transparent 72%);
}
.field__vignette {
  position: absolute; inset: 0;
  background: radial-gradient(132% 108% at 50% 40%, transparent 44%, rgba(3, 14, 28, 0.58) 100%);
}


/* ======================= Tartalom-váz: kéthasábos ========================= */

.hero__inner {
  position: relative; z-index: 1;
  flex: 1 1 auto; min-height: 0;
  width: 100%; max-width: var(--container-hero);
  margin-inline: auto; padding-inline: var(--gutter);
  display: grid;
  grid-template-columns: minmax(0, 1.06fr) minmax(0, 1fr);
  column-gap: clamp(1rem, 2vw, 3rem);
  align-items: center;
}

/* --- 2. réteg: A PLAKÁT ---------------------------------------------------- */
.hero__copy    { grid-column: 1; min-width: 0; }
.hero__copy-in { max-width: min(var(--hero-copy-max), 100%); }

.hero--stage .eyebrow { color: var(--accent-glow); margin-bottom: var(--space-3); }

.hero--stage .hero__title {
  font-size: var(--fs-hero);
  line-height: var(--lh-hero);
  letter-spacing: var(--ls-hero);
  font-weight: var(--fw-display);
  color: var(--paper-white);
  max-width: none;
  margin-bottom: clamp(1.25rem, 2.6svh, 2rem);
  text-wrap: nowrap;
}
/* A SZERZŐI sortörés a kompozíció része: négy sor, a negyediken a kiemelt
   szó. A `.hl-line` egyben a belépő mozgás MASZKJA is — a bőséges
   padding tartja meg az alsó szárakat (g, y, j) és a teal blokkot. */
.hl-line {
  display: block; overflow: hidden;
  padding-block: 0.20em 0.24em; margin-block: -0.20em -0.24em;
}
.hl-in { display: block; }

/* A kiemelt szó NEM aláhúzás, hanem TÖMÖR TEAL BLOKK. A `::before` a
   VÉGállapot; JS nélkül is teljes, a mozgás csak kinyitja balról. */
.mark--block {
  position: relative; display: inline-block; isolation: isolate;
  box-shadow: none;
  color: var(--text-on-accent);
  padding-inline: 0.10em;
}
.mark--block::before {
  content: "";
  position: absolute; inset: -0.06em -0.01em -0.02em;
  background: var(--accent); border-radius: var(--radius-xs);
  transform-origin: left center; z-index: -1;
}

.hero--stage .hero__lead {
  margin: 0 0 clamp(1.25rem, 2.6svh, 1.875rem);
  color: var(--text-inverse-muted);
  max-width: 46ch;
}
.hero--stage .hero__actions { margin: 0; justify-content: flex-start; }
.hero--stage .hero__note {
  margin: var(--space-4) 0 0; color: var(--text-inverse-subtle);
  max-width: 52ch; text-align: left;
}
/* A sávon álló teli akcent-gomb KÖTELEZŐ --accent-glow belső kontúrja. */
.hero--stage .btn--primary { box-shadow: var(--btn-primary-inverse-outline); }
.hero--stage .btn--ghost   { color: var(--accent-glow); }
@media (hover: hover) {
  .hero--stage .btn--ghost:hover { color: var(--paper-white); }
}


/* ========================= 1. réteg — A KONZOL ============================ */

/* A hasáb JOBB SZÉLE a viewport széléig fut: a `margin-right` levonja a
   konténer gutterét és a konténer melletti maradék félsávot is. Így a deck
   valóban KIFUT a képszélen — nem a rácsnál ér véget. */
.hero__scene {
  grid-column: 2; position: relative; align-self: stretch;
  min-width: 0; min-height: 0;
  margin-right: calc(-1 * var(--gutter) - max(0px, (100vw - var(--container-hero)) / 2));
  perspective: 1500px; perspective-origin: 26% 46%;
}
/* A jelenet saját derengése — a panelek MÖGÖTT, a 3D-síkon kívül. */
.scene__glow {
  position: absolute; inset: 4% -14% 0% -8%;
  background: radial-gradient(closest-side, rgba(47, 160, 160, 0.42), transparent 74%);
  pointer-events: none;
}

.scene__deck {
  position: absolute; top: 50%; left: 2em;
  width: 66em; height: 44em;
  /* A JELENET EGYETLEN SKÁLÁJA. Szélességre ÉS magasságra is figyel, hogy
     alacsony laptopon se lógjon ki a záró sáv alá. */
  font-size: clamp(8px, min(0.95vw, 1.42svh), 18px);
  transform-style: preserve-3d;
  transform: translateY(-50%) rotateY(-19deg) rotateX(8deg) rotateZ(-1.2deg);
}

/* A fénypászma, ami átvág a konzolon: a folyamat iránya. */
.deck__beam {
  position: absolute; left: -12em; top: 5em; width: 92em; height: 8em;
  background: linear-gradient(90deg,
    rgba(110, 212, 212, 0) 0%, rgba(110, 212, 212, 0.34) 44%,
    rgba(110, 212, 212, 0.10) 74%, rgba(110, 212, 212, 0) 100%);
  filter: blur(2em);
  transform: rotate(-13deg) translateZ(-6em);
}

/* --- A panelek közös lemeze ------------------------------------------------ */
.panel {
  position: absolute;
  border-radius: 1.1em;
  padding: 1.5em 1.6em;
  color: var(--text-inverse);
  background: linear-gradient(158deg, rgba(24, 74, 128, 0.97) 0%, rgba(11, 40, 74, 0.97) 100%);
  border: 1px solid rgba(160, 200, 236, 0.24);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.12),
    0 1.6em 3em -1.3em rgba(2, 10, 22, 0.88),
    0 4.5em 8em -3.2em rgba(2, 10, 22, 0.95);
}
.panel__head { display: flex; align-items: center; gap: 0.8em; margin-bottom: 1em; }
.panel__eyebrow {
  font-size: 0.82em; font-weight: var(--fw-bold);
  letter-spacing: 0.10em; text-transform: uppercase; line-height: 1.2;
  color: rgba(255, 255, 255, 0.60);
}
.panel__eyebrow--live { color: var(--accent-glow); }
.panel__meta {
  margin-left: auto; font-size: 0.82em; line-height: 1.2;
  color: rgba(255, 255, 255, 0.48);
}
.panel__title {
  margin: 0 0 0.85em; font-size: 1.4em; font-weight: var(--fw-bold);
  letter-spacing: -0.015em; line-height: 1.1; color: var(--paper-white);
}

/* --- 1. ütem: BEÉRKEZIK ---------------------------------------------------- */
.panel--inbox {
  left: 0; top: 0.5em; width: 32em;
  /* A „ma" panel SZÁNDÉKOSAN halkabb: hátrébb van, és nem ez a válasz. */
  background: linear-gradient(158deg, rgba(20, 62, 110, 0.95) 0%, rgba(10, 36, 68, 0.95) 100%);
  border-color: rgba(160, 200, 236, 0.18);
}
.rows { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.6em; }
.row {
  display: flex; align-items: center; gap: 0.8em;
  padding: 0.6em 0.72em; border-radius: 0.6em;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.08);
}
.row--hot {
  background: rgba(47, 160, 160, 0.18);
  border-color: rgba(110, 212, 212, 0.46);
}
.row__ic {
  flex: none; width: 2em; height: 2em; border-radius: 0.45em;
  display: grid; place-items: center;
  background: rgba(255, 255, 255, 0.10); color: rgba(255, 255, 255, 0.70);
}
.row__ic svg { width: 1.1em; height: 1.1em; }
.row--hot .row__ic { background: rgba(110, 212, 212, 0.24); color: var(--accent-glow); }
.row__lines { flex: 1 1 auto; min-width: 0; display: grid; gap: 0.42em; }
.bar { height: 0.42em; border-radius: 0.21em; background: rgba(196, 220, 245, 0.30); }
.bar--sm { height: 0.34em; background: rgba(196, 220, 245, 0.15); }
.row--hot .bar { background: rgba(191, 243, 243, 0.72); }
.row--hot .bar--sm { background: rgba(191, 243, 243, 0.32); }
.bar--w85 { width: 85%; } .bar--w72 { width: 72%; } .bar--w64 { width: 64%; }
.bar--w56 { width: 56%; } .bar--w44 { width: 44%; } .bar--w36 { width: 36%; }
.bar--w30 { width: 30%; }

/* --- 2. ütem: ELOLVASSA ---------------------------------------------------- */
.panel--read { left: 11.5em; top: 16.5em; width: 39em; transform: translateZ(4em); }
.read { display: grid; grid-template-columns: 10.4em minmax(0, 1fr); gap: 1.4em; }
.read__doc {
  position: relative; overflow: hidden;
  border-radius: 0.55em; padding: 0.9em 0.85em;
  display: grid; gap: 0.5em; align-content: start;
  background: linear-gradient(180deg, rgba(240, 246, 252, 0.97), rgba(212, 228, 244, 0.93));
  box-shadow: 0 0.9em 1.8em -1em rgba(2, 10, 22, 0.85);
}
.doc__line { height: 0.32em; border-radius: 0.16em; background: rgba(42, 65, 87, 0.28); }
.doc__line--title {
  height: 0.6em; width: 64%; margin-bottom: 0.3em;
  background: rgba(17, 60, 110, 0.78);
}
.doc__line--short { width: 68%; }
.doc__hit {
  position: absolute; border: 0.16em solid var(--accent); border-radius: 0.26em;
  background: rgba(11, 122, 122, 0.16);
  box-shadow: 0 0 0 0.08em rgba(255, 255, 255, 0.5);
}
.doc__hit--1 { left: 0.65em; top: 2.35em; right: 2.6em; height: 1em; }
.doc__hit--2 { left: 0.65em; top: 4.35em; right: 4.4em; height: 1em; }
/* A PÁSZTÁZÓ VONAL. Alapállapotban NEM LÁTSZIK (tisztán dekoratív), és
   csak egyszer fut le — az oldalon nincs folyamatos mozgás. */
.scan {
  position: absolute; left: 0; right: 0; top: 0; height: 0.22em; opacity: 0;
  background: linear-gradient(90deg, transparent, var(--accent-glow), transparent);
  box-shadow: 0 0 1.2em rgba(110, 212, 212, 0.9);
}
.read__out { margin: 0; display: grid; gap: 0.7em; align-content: center; }
.out {
  display: flex; align-items: baseline; justify-content: space-between; gap: 0.9em;
  padding-bottom: 0.55em; border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}
.out:last-child { border-bottom: 0; padding-bottom: 0; }
.out dt { font-size: 0.86em; line-height: 1.2; color: rgba(255, 255, 255, 0.56); }
.out dd {
  margin: 0; font-size: 1.05em; font-weight: var(--fw-bold); line-height: 1.2;
  letter-spacing: -0.01em; color: var(--paper-white); white-space: nowrap;
}

/* --- 3. ütem: ELINTÉZI ----------------------------------------------------- */
.panel--done {
  left: 31em; top: 34.5em; width: 30em; transform: translateZ(8.5em);
  display: flex; align-items: center; gap: 1.1em;
  background: linear-gradient(135deg, #0F8E8E 0%, #076566 100%);
  border-color: rgba(110, 212, 212, 0.66);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.24),
    0 1.8em 3.4em -1.2em rgba(2, 10, 22, 0.90),
    0 0 5.5em -0.5em rgba(47, 160, 160, 0.75);
}
.panel--done .panel__eyebrow--auto {
  position: absolute; top: -2.1em; left: 0.2em;
  color: var(--accent-glow);
}
.done__tick {
  flex: none; width: 2.9em; height: 2.9em; border-radius: 50%;
  display: grid; place-items: center; color: var(--paper-white);
  background: rgba(255, 255, 255, 0.20);
  border: 1px solid rgba(255, 255, 255, 0.44);
}
.done__tick svg { width: 1.5em; height: 1.5em; }
.done__b {
  display: block; font-size: 1.15em; font-weight: var(--fw-bold);
  letter-spacing: -0.015em; line-height: 1.15; color: var(--paper-white);
}
.done__i {
  display: block; font-size: 0.86em; line-height: 1.2; margin-top: 0.25em;
  color: rgba(255, 255, 255, 0.82);
}


/* ====================== 3. réteg — A ZÁRÓ SÁV ============================= */

.hero__rail {
  position: relative; z-index: 2;
  margin-top: auto;
  border-top: 1px solid var(--line-inverse);
  padding-block: clamp(0.85rem, 1.7svh, 1.35rem) var(--hero-pad-bot);
}
.rail__in {
  width: 100%; max-width: var(--container-hero);
  margin-inline: auto; padding-inline: var(--gutter);
  display: flex; flex-wrap: wrap;
  column-gap: clamp(1.5rem, 4vw, 4.5rem); row-gap: var(--space-2);
}
.rail__item {
  display: inline-flex; align-items: baseline; gap: 0.7em;
  font-size: var(--fs-small); line-height: 1.35;
  color: var(--text-inverse-muted);
}
.rail__num {
  font-size: var(--fs-micro); font-weight: var(--fw-bold);
  letter-spacing: var(--ls-eyebrow); color: var(--accent-glow);
}


/* --- A NAVBAR a mezőn: átlátszó, fordított kontraszton ---------------------
   Csak `html.js` alatt, és csak amíg NEM görgettünk és NEM nyitott a
   mobilmenü — mindkét esetben a megszokott fehér sáv jön vissza. JS nélkül
   a sáv marad fehér: az a fordított állapot, ami magától nem tudna
   visszaváltani, olvashatatlan lenne a törtfehér tartalom fölött. ---------- */
html:is(.js, .js-static) .nav--inverse:not(.nav--scrolled):not(.nav--open) {
  background: transparent;
  -webkit-backdrop-filter: none; backdrop-filter: none;
  border-bottom-color: transparent;
  box-shadow: none;
}
html:is(.js, .js-static) .nav--inverse:not(.nav--scrolled):not(.nav--open) .nav__brand { color: var(--paper-white); }
html:is(.js, .js-static) .nav--inverse:not(.nav--scrolled):not(.nav--open) .nav__link,
html:is(.js, .js-static) .nav--inverse:not(.nav--scrolled):not(.nav--open) .nav__toggle {
  color: var(--text-inverse-muted);
}
html:is(.js, .js-static) .nav--inverse:not(.nav--scrolled):not(.nav--open) .nav__link:hover,
html:is(.js, .js-static) .nav--inverse:not(.nav--scrolled):not(.nav--open) .nav__toggle:hover {
  color: var(--paper-white);
}
html:is(.js, .js-static) .nav--inverse:not(.nav--scrolled):not(.nav--open) .nav__burger {
  background: transparent; color: var(--paper-white);
  border-color: rgba(255, 255, 255, 0.46);
}
html:is(.js, .js-static) .nav--inverse:not(.nav--scrolled):not(.nav--open) .nav__actions .btn--ghost {
  color: var(--accent-glow);
}
html:is(.js, .js-static) .nav--inverse:not(.nav--scrolled):not(.nav--open) .nav__actions .btn--primary {
  box-shadow: var(--btn-primary-inverse-outline);
}
html:is(.js, .js-static) .nav--inverse:not(.nav--scrolled):not(.nav--open)
  :where(a, button):focus-visible { outline-color: var(--focus-ring-inverse); }
/* A legördülő panel VILÁGOS marad — a fenti szabályok nem érhetnek bele. */
html:is(.js, .js-static) .nav--inverse .nav__panel .nav__link { color: var(--nav-link-color); }


/* -----------------------------------------------------------------------------
   F.14d A HERO BELÉPŐ MOZGÁSA — CSS-@KEYFRAMES, NEM GSAP
   -----------------------------------------------------------------------------
   Ez a blokk a v3 legfontosabb szerkezeti javítása. Korábban a hero minden
   eleme `opacity: 0`-ról indult egy GSAP-timeline-ban: ha a GSAP nem töltődött
   le, hibára futott, vagy a böngésző fojtotta a rAF-ot, a hero ÜRES MÉLYKÉK
   MEZŐ maradt. Most:

     · ALAPÁLLAPOT = VÉGÁLLAPOT. Egyetlen hero-elemnek sincs `opacity: 0`
       alapértéke. JS nélkül, hibás JS-sel és `prefers-reduced-motion: reduce`
       mellett a hero azonnal, teljesen kifestődik.
     · A mozgás CSS-@keyframes, `animation-fill-mode: both`-tal. A CSS-animáció
       nem függ a JS-től, tehát nem tud „félúton" megállni.
     · A `html.js` gate csak annyit tesz, hogy JS nélküli böngészőben meg sem
       próbáljuk a belépőt — ott az azonnali végállapot a helyes válasz.

   IDŐZÍTÉS (abszolút, mp): eyebrow 0,02 · H1-sorok 0,06–0,30 · konzol 0,34 /
   0,50 · lead 0,66 · CTA 0,80 · pásztázás 0,86 · teal blokk 0,86 · záró panel
   0,98 · jegyzet 1,02 · sáv 1,10 · kiolvasott mezők 1,30.
   TELJES NYUGALOM 1,8 s-nél — utána a heróban SEMMI nem mozog: nincs
   végtelen ciklus, nincs ébren tartott kompozitor.
   -------------------------------------------------------------------------- */

@keyframes heroLineIn { from { transform: translateY(104%); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes heroRise   { from { transform: translateY(1.1rem); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes heroFade   { from { opacity: 0; } to { opacity: 1; } }
@keyframes heroMark   { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes heroPop    { from { transform: scale(0.88); opacity: 0; } to { transform: none; opacity: 1; } }
/* A három panel Z-mélysége KÜLÖN kulcskockában szerepel: a `transform: none`
   különben kilőné a `translateZ`-t, és a konzol egy síkba lapulna. */
@keyframes heroPanel0 { from { opacity: 0; transform: translate3d(1.4em, 2.6em, 0); }     to { opacity: 1; transform: translate3d(0, 0, 0); } }
@keyframes heroPanel1 { from { opacity: 0; transform: translate3d(1.4em, 2.6em, 4em); }   to { opacity: 1; transform: translate3d(0, 0, 4em); } }
@keyframes heroPanel2 { from { opacity: 0; transform: translate3d(1.4em, 2.6em, 8.5em); } to { opacity: 1; transform: translate3d(0, 0, 8.5em); } }
@keyframes heroScan {
  0%   { top: 0; opacity: 0; }
  14%  { opacity: 1; }
  86%  { opacity: 1; }
  100% { top: calc(100% - 0.22em); opacity: 0; }
}

@media (prefers-reduced-motion: no-preference) {
  html.js .hero--stage .eyebrow { animation: heroRise 0.58s var(--ease-out) both 0.02s; }

  /* A H1 a LEGNAGYOBB szövegblokk, tehát az LCP-jelölt: a négy sor 80 ms-es
     lépcsőben, 0,72 s alatt ér a helyére — 1,02 s-nél a plakát KÉSZ. */
  html.js .hero--stage .hl-in { animation: heroLineIn 0.72s var(--ease-entrance) both; }
  html.js .hero--stage .hl-line:nth-of-type(1) .hl-in { animation-delay: 0.06s; }
  html.js .hero--stage .hl-line:nth-of-type(2) .hl-in { animation-delay: 0.14s; }
  html.js .hero--stage .hl-line:nth-of-type(3) .hl-in { animation-delay: 0.22s; }
  html.js .hero--stage .hl-line:nth-of-type(4) .hl-in { animation-delay: 0.30s; }
  html.js .hero--stage .mark--block::before { animation: heroMark 0.48s var(--ease-entrance) both 0.86s; }

  html.js .hero--stage .hero__lead        { animation: heroRise 0.56s var(--ease-out) both 0.66s; }
  html.js .hero--stage .hero__actions > * { animation: heroRise 0.52s var(--ease-out) both 0.8s; }
  html.js .hero--stage .hero__actions > *:nth-child(2) { animation-delay: 0.88s; }
  html.js .hero--stage .hero__note        { animation: heroRise 0.5s var(--ease-out) both 1.02s; }
  html.js .hero--stage .rail__item        { animation: heroRise 0.5s var(--ease-out) both 1.1s; }
  html.js .hero--stage .rail__item:nth-child(2) { animation-delay: 1.18s; }
  html.js .hero--stage .rail__item:nth-child(3) { animation-delay: 1.26s; }

  html.js .hero--stage .field__aurora     { animation: heroFade 1.4s ease-out both 0s; }
  html.js .hero--stage .field__floor-grid { animation: heroFade 1.5s ease-out both 0.06s; }
  html.js .hero--stage .scene__glow       { animation: heroFade 1.3s ease-out both 0.24s; }
  html.js .hero--stage .deck__beam        { animation: heroFade 1.1s ease-out both 0.6s; }

  html.js .hero--stage .panel--inbox { animation: heroPanel0 0.8s var(--ease-entrance) both 0.34s; }
  html.js .hero--stage .panel--read  { animation: heroPanel1 0.8s var(--ease-entrance) both 0.5s; }
  html.js .hero--stage .panel--done  { animation: heroPanel2 0.8s var(--ease-entrance) both 0.98s; }
  html.js .hero--stage .scan         { animation: heroScan 0.95s ease-in-out both 0.86s; }
  html.js .hero--stage .doc__hit     { animation: heroPop 0.4s var(--ease-out) both 1.22s; }
  html.js .hero--stage .doc__hit--2  { animation-delay: 1.32s; }
  html.js .hero--stage .out          { animation: heroRise 0.44s var(--ease-out) both 1.3s; }
  html.js .hero--stage .out:nth-child(2) { animation-delay: 1.4s; }
  html.js .hero--stage .out:nth-child(3) { animation-delay: 1.5s; }
  html.js .hero--stage .done__tick   { animation: heroPop 0.4s var(--ease-emphasis) both 1.34s; }
}


/* -----------------------------------------------------------------------------
   F.14e A HERO TÖRÉSPONTJAI
   -------------------------------------------------------------------------- */

/* --- Keskenyebb desktop: a konzol beljebb csúszik, a plakát szűkül -------- */
@media (max-width: 1280px) {
  .hero__inner { grid-template-columns: minmax(0, 1fr) minmax(0, 0.94fr); }
  .scene__deck { left: 0.5em; }
}
/* 1150 px alatt a hasáb már keskenyebb, mint a leghosszabb szerzői sor: a
   plakát ad le előbb, és a `nowrap` is felenged — inkább tördeljen a sor,
   mint hogy belefusson a konzolba. */
@media (max-width: 1150px) {
  .hero--stage { --fs-hero: min(clamp(2.375rem, 0.6rem + 4.0vw, 6.25rem), 9.4svh); }
  .hero--stage .hero__title { text-wrap: normal; }
}

/* --- 980 px alatt: a kompozíció 90°-kal elfordul --------------------------
   NEM degradált változat: ugyanaz a mélykék mező, ugyanaz a padló, ugyanaz a
   háromütemű konzol — csak a tengely vízszintesből függőlegesbe fordul, és a
   konzol a plakát ALÁ kerül, továbbra is a jobb képszélen kifutva. */
@media (max-width: 980px) {
  .hero--stage {
    min-height: 0;
    --fs-hero: min(clamp(2.375rem, 1.5rem + 3.6vw, 4rem), 11svh);
    --hero-pad-top: clamp(1.25rem, 2.6svh, 2.25rem);
  }
  .hero__inner {
    display: flex; flex-direction: column; align-items: stretch;
    row-gap: clamp(1.5rem, 4vw, 2.5rem);
  }
  .hero--stage .hero__title { text-wrap: normal; }
  .hero__copy-in { max-width: 100%; }
  .hero--stage .hero__lead { max-width: 60ch; }

  .hero__scene {
    position: relative; align-self: stretch;
    height: clamp(230px, 52vw, 400px);
    margin-right: calc(-1 * var(--gutter));
    perspective: 1100px; perspective-origin: 40% 50%;
  }
  .scene__deck {
    left: 0.5em; font-size: clamp(7px, 1.35vw, 12px);
    transform: translateY(-50%) rotateY(-13deg) rotateX(6deg) rotateZ(-1deg);
  }
  .field__scrim {
    background: linear-gradient(178deg,
      rgba(4, 18, 36, 0.80) 0%, rgba(4, 18, 36, 0.42) 46%, transparent 78%);
  }
  .field__floor { height: 40%; }
}

/* --- 620 px alatt: a konzolból a HÁROM ÜTEM marad, kisebb léptékben ------- */
@media (max-width: 620px) {
  .hero__scene { height: clamp(210px, 62vw, 330px); }
  .scene__deck { font-size: clamp(6.5px, 1.75vw, 10px); left: 0; }
  .hero--stage .hero__actions { flex-direction: column; align-items: stretch; }
  .hero--stage .hero__actions .btn { width: 100%; }
  .hero--stage .hero__lead { font-size: var(--fs-body); }
  .rail__in { flex-direction: column; row-gap: var(--space-2); }
}

/* --- Magasság-érzékeny ritmus --------------------------------------------
   Nem „töréspont", hanem folyamatos leadás: mindig a leghalkabb elem esik ki
   először, hogy a CTA-pár SOHA ne csússzon a hajtás alá. */
@media (max-height: 900px) and (min-width: 981px) {
  .hero--stage {
    --hero-pad-top: clamp(1rem, 2.2svh, 2.25rem);
    --hero-pad-bot: clamp(1.25rem, 3svh, 2.25rem);
  }
  .hero--stage .hero__title { margin-bottom: clamp(0.9rem, 1.9svh, 1.5rem); }
  .hero--stage .hero__lead  { margin-bottom: clamp(1rem, 2.1svh, 1.5rem); }
}
/* A JEGYZET a leghalkabb elem — ez esik ki előbb, hogy a CTA-pár és a záró
   sáv egy 800 px magas laptopon is teljes egészében a hajtás fölött legyen.
   A lead szélességét NEM szűkítjük: attól csak MAGASABB lenne. */
@media (max-height: 830px) and (min-width: 981px) {
  .hero--stage .hero__note { display: none; }
  .hero--stage .hero__lead { font-size: var(--fs-body); }
}
@media (max-height: 660px) and (min-width: 981px) {
  .hero__rail { display: none; }
  .hero--stage { padding-bottom: var(--hero-pad-bot); }
}
@media (max-height: 560px) {
  .hero--stage { min-height: 0; }
}


/* =============================================================================
   F.15 LISTÁK, ÖNTESZT, FOTÓ-KERET, JEGYZET
   ============================================================================= */

/* Sima felsorolás: hajszálvonal tagol, nem ikon. */
.plainlist { margin-top: var(--space-6); color: var(--text-body); }
.plainlist li { padding-block: var(--space-3); border-top: 1px solid var(--border); font-size: var(--fs-small); }
.plainlist li:last-child { border-bottom: 1px solid var(--border); }

/* Szabály-felsorolás: a SORSZÁM hordozza a tagolást, nem témaikon. */
.rulelist { margin-top: var(--space-8); color: var(--text-body); }
.rulelist li { display: flex; gap: 12px; align-items: flex-start; font-size: var(--fs-small); }
.rulelist__num {
  flex: none; font-size: var(--fs-micro); font-weight: var(--fw-semibold);
  color: var(--accent-strong); font-variant-numeric: tabular-nums;
  padding-top: 2px; min-width: 1.4em; border-top: var(--tick-width) solid var(--tick-color);
}

/* Státuszlista — itt a pipa JELENTÉST hordoz, ezért van ikon. */
.checklist li { display: flex; gap: 10px; align-items: flex-start; padding-block: var(--space-2); }
.checklist svg { flex: none; margin-top: 4px; color: var(--accent); }

/* Önteszt — hajszálvonalas SOROK, nem keretes dobozok. Az állapotot a
   jelölőnégyzet + a bal oldali akcent-csík hordozza (nem csak szín).          */
.quiz { border: 0; padding: 0; margin: 0; max-width: 62rem; }
.quiz__legend { padding: 0; margin-bottom: var(--space-5); font-size: var(--fs-h4); font-weight: var(--fw-semibold); color: var(--text-heading); }
.quiz__grid { display: grid; gap: 0; }
.quiz__item {
  display: flex; gap: 12px; align-items: flex-start;
  background: none; border: 0; border-top: 1px solid var(--border);
  padding: var(--space-4) var(--space-5) var(--space-4) var(--space-4);
  min-height: var(--btn-min-height); cursor: pointer;
  transition: background-color var(--dur-quick) var(--ease-out),
              box-shadow var(--dur-quick) var(--ease-out);
}
.quiz__item:last-child { border-bottom: 1px solid var(--border); }
.quiz__item:hover { background: var(--accent-wash); }
.quiz__item input { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--accent); flex: none; }
.quiz__item:has(input:checked) {
  background: var(--accent-soft);
  box-shadow: inset 2px 0 0 var(--border-active);
  color: var(--text-strong);
}
.quiz__item:has(input:focus-visible) { outline: var(--focus-ring-width) solid var(--focus-ring); outline-offset: var(--focus-ring-offset); }
.quiz__result { margin-top: var(--space-6); background: var(--accent-soft); border: 1px solid var(--border-accent); border-radius: var(--radius-lg); padding: var(--space-6); max-width: var(--measure-body); }
.quiz__result strong { color: var(--accent-strong); }

/* Fotó-keret és képaláírás. Valós fotó helye — soha nem stock-kézfogás. */
.photo-frame { position: relative; border-radius: var(--radius-xl); overflow: hidden; background: var(--bg-tint); }
.photo-frame img { display: block; width: 100%; height: auto; }
.photo-caption { margin-top: var(--space-4); font-size: var(--fs-small); color: var(--text-subtle); }

/* Idézet — csak VALÓDI, engedélyezett ügyfélidézettel. Ha nincs, kimarad. */
.quote { max-width: var(--measure-quote); }
.quote__mark { display: block; font-size: var(--fs-display); line-height: 1; color: var(--accent-line); }
.quote__text { font-size: var(--fs-h3); line-height: var(--lh-h3); font-weight: var(--fw-regular); color: var(--ink-800); margin-top: var(--space-3); }
.quote__by { margin-top: var(--space-4); font-size: var(--fs-small); color: var(--text-subtle); }

.note { border: 1px dashed var(--border-strong); border-radius: var(--radius-md); padding: var(--space-5); background: var(--bg-surface); font-size: var(--fs-small); color: var(--text-muted); max-width: var(--measure-body); }
.note strong { color: var(--text-strong); }


/* =============================================================================
   F.16 ŰRLAP — egyhasábos, keskeny konténer, címke MINDIG a mező fölött
   -----------------------------------------------------------------------------
   A hiba szöveges üzenet a mező ALATT, ikonnal, aria-describedby-jal kötve,
   aria-invalid="true"-val. SOSE csak piros keret.
   ============================================================================= */

.form { max-width: var(--container-narrow); }
.form__row { display: grid; gap: var(--space-5); }
.form__row--2 { grid-template-columns: 1fr 1fr; }
@media (max-width: 640px) { .form__row--2 { grid-template-columns: 1fr; } }
.form__field { display: block; margin-bottom: var(--space-5); }
.form__label {
  display: block; margin-bottom: var(--space-2);
  font-size: var(--fs-small); font-weight: var(--fw-semibold); color: var(--field-label-color);
}
.form__req { color: var(--accent-strong); margin-left: 2px; }
.form__hint { display: block; margin-top: var(--space-2); font-size: var(--fs-micro); color: var(--text-subtle); }

.form__input, .form__textarea, .form__select {
  display: block; width: 100%;
  min-height: var(--field-min-height);
  padding: var(--field-padding);
  border-radius: var(--field-radius);
  border: var(--field-border);
  background: var(--field-bg);
  color: var(--text-body);
  font-size: var(--fs-body);
  transition: border-color var(--dur-quick) var(--ease-out),
              box-shadow var(--dur-quick) var(--ease-out);
}
.form__textarea { min-height: 9em; resize: vertical; line-height: var(--lh-body); }
.form__input:focus, .form__textarea:focus, .form__select:focus {
  outline: none;
  border-color: var(--field-border-focus);
  box-shadow: var(--field-ring-focus);
}
.form__input::placeholder, .form__textarea::placeholder { color: var(--text-disabled); }

/* Hibaállapot: keret + ikonos szöveges üzenet. */
.form__input[aria-invalid="true"],
.form__textarea[aria-invalid="true"] { border-color: var(--field-error); }
.form__error {
  display: flex; align-items: flex-start; gap: 8px;
  margin-top: var(--space-2); font-size: var(--fs-small); color: var(--field-error);
}
.form__error svg { flex: none; margin-top: 3px; }

/* Az űrlap tetején álló, összefoglaló hibasáv (a PHP `?hiba=` paramétere). */
.form__alert {
  display: flex; align-items: flex-start; gap: 10px;
  padding: var(--space-4) var(--space-5); margin-bottom: var(--space-6);
  border-radius: var(--radius-md);
  background: var(--status-problem-bg); border: 1px solid var(--status-problem-line);
  color: var(--status-problem-text); font-size: var(--fs-small);
}
.form__alert svg { flex: none; margin-top: 3px; color: var(--status-problem); }

/* Jelölőnégyzetes sor (pl. tájékoztatás tudomásulvétele). */
.form__check { display: flex; gap: 12px; align-items: flex-start; padding-block: var(--space-2); font-size: var(--fs-small); }
.form__check input { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--accent); flex: none; }

/* HONEYPOT — a botok kitöltik, az ember nem látja. `display:none` helyett
   pozicionált elrejtés, hogy a naiv botok is beleessenek. `tabindex="-1"`
   és `aria-hidden="true"` KELL a mezőre a HTML-ben.                           */
.form__hp {
  position: absolute !important; left: -9999px !important; top: auto !important;
  width: 1px !important; height: 1px !important; overflow: hidden !important;
}

.form__actions { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: center; margin-top: var(--space-6); }
.form__note { margin-top: var(--space-4); font-size: var(--fs-small); color: var(--text-subtle); }


/* =============================================================================
   F.17 MORZSAMENÜ — aloldalakon kötelező, a főoldalon nincs
   ============================================================================= */

.crumbs { padding-block: var(--space-5) 0; }
.crumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: var(--fs-micro); color: var(--ink-500); }
.crumbs li { display: inline-flex; align-items: center; gap: 6px; }
.crumbs a { color: var(--ink-500); }
.crumbs a:hover { color: var(--accent-strong); text-decoration: underline; text-underline-offset: 0.18em; }
.crumbs [aria-current="page"] { color: var(--text-muted); }
.crumbs__sep { color: var(--ink-400); }


/* =============================================================================
   F.18 SÖTÉT SÁV ÉS ZÁRÓ CTA — oldalanként PONTOSAN EGY, a lap végén
   ============================================================================= */

.band { background: var(--bg-inverse); color: var(--text-inverse); position: relative; overflow: hidden; }
.band .h2, .band .h3, .band .h1 { color: var(--paper-white); }
.band p { color: var(--text-inverse-muted); }
.band a { color: var(--accent-glow); }
.band__inner { padding-block: var(--section-y); position: relative; z-index: 1; }
/* Az EGYETLEN dekoratív háttérelem a teljes oldalon. */
.band__deco { position: absolute; right: -30px; bottom: -30px; color: rgba(255,255,255,.06); pointer-events: none; }

/* A záró CTA a rendszer EGYETLEN középre zárt blokkja. */
.cta { position: relative; z-index: 1; }
.cta__actions { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-8); justify-content: center; }
.cta__note { margin-top: var(--space-5); color: var(--text-inverse-subtle); text-align: center; }


/* =============================================================================
   F.19 LÁBLÉC — teljes szélességű, legsötétebb sáv (design-system 6.14/c)
   -----------------------------------------------------------------------------
   Négy oszlop + egy vékony záró sor. JOGI LINKEK NINCSENEK: a jogi oldalak
   (impresszum, adatkezelés, ÁSZF, sütik) most nem készülnek, és halott linket
   nem hagyunk sehol.
   ============================================================================= */

.footer { background: var(--bg-inverse-deep); color: var(--text-inverse-muted); position: relative; }
.footer__inner { padding-block: var(--section-y-tight); }
.footer a { color: var(--text-inverse-muted); }
.footer a:hover { color: var(--paper-white); text-decoration: underline; text-underline-offset: 0.18em; }

/* Nem négy egyenlő oszlop: a márka-oszlop szélesebb. */
.footer__grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr 1fr; gap: var(--grid-gap); }
@media (max-width: 1024px) { .footer__grid { grid-template-columns: 1fr 1fr 1fr; } }
@media (max-width: 640px)  { .footer__grid { grid-template-columns: 1fr; gap: var(--space-8); } }

.footer__brand { display: flex; align-items: center; gap: 9px; font-weight: var(--fw-bold); font-size: var(--fs-h4); color: var(--paper-white); }
.footer__brand .nav__mark { background: var(--accent-bright); }
.footer__claim { margin-top: var(--space-4); font-size: var(--fs-small); color: var(--text-inverse-muted); max-width: 34ch; }
.footer__contact { margin-top: var(--space-5); font-size: var(--fs-small); }
.footer__contact a { color: var(--accent-glow); font-weight: var(--fw-semibold); }

.footer__title {
  font-size: var(--fs-micro); font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-eyebrow); text-transform: uppercase;
  color: var(--accent-glow); margin-bottom: var(--space-4);
}
.footer__list li + li { margin-top: var(--space-1); }
.footer__list a {
  display: inline-flex; align-items: center;
  min-height: var(--btn-min-height-compact);
  font-size: var(--fs-small); line-height: 1.35;
}

.footer__bottom {
  margin-top: var(--space-12); padding-top: var(--space-6);
  border-top: 1px solid var(--border-inverse);
  display: flex; flex-wrap: wrap; gap: var(--space-4) var(--space-6);
  align-items: center; justify-content: space-between;
  font-size: var(--fs-small); color: var(--text-inverse-subtle);
}
.footer__closing { color: var(--text-inverse-muted); }


/* =============================================================================
   F.20 404 ÉS KÖSZÖNŐ OLDAL — keskeny, középre zárt, három továbblépéssel
   ============================================================================= */

.endstate { text-align: center; max-width: var(--container-narrow); margin-inline: auto; padding-block: var(--section-y); }
.endstate p { margin-top: var(--space-5); color: var(--text-muted); margin-inline: auto; max-width: 52ch; }
.endstate__actions { display: flex; flex-wrap: wrap; gap: var(--space-3); justify-content: center; margin-top: var(--space-8); }
.endstate__figure { margin: var(--space-10) auto 0; max-width: 320px; color: var(--ink-400); }


/* =============================================================================
   F.21 FŐOLDALI RITMUS — léptékváltás, teljes szélességű színmező, súlyozott rács
   -----------------------------------------------------------------------------
   A panasz a főoldalra az volt, hogy görgetés közben MINDEN szekció ugyanolyan
   súlyú: azonos törtfehér, azonos H2-méret, azonos hajszálvonalas kártya —
   „ugyanolyan unalmas szöveghalmaz". Ez a réteg nem töröl szöveget és nem
   rendez át szekciót, csak SÚLYOZ:

     1. `.h2--display` / `.pull`   egy-egy cím és felütés plakát-léptékben,
     2. `.section--band`           szegtől szegig futó MÉLYKÉK színmező-sáv,
     3. `.stat--display`           a 63% mint önálló grafikai jel,
     4. `.bento--feature`          nagyobb ikon-chip és élénkebb hover a rácson,
     5. `.faq--lg`, `.ba--lg`, …   a szövegtömbök nagyobb kattintható léptéke,
     6. `.home` szekció-ritmus     az azonos hátterű szomszédok közelebb.

   MINDEN osztály ÚJ és opt-in: a másik 59 oldal megjelenése változatlan.
   ============================================================================= */

/* --- 1. LÉPTÉKVÁLTÁS ------------------------------------------------------ */

/* Szekció-cím display-méretben. Nem minden címen — az a régi egyhangúságot
   csak nagyobb betűvel ismételné. Csak a lap három csuklóján. */
.h2--display {
  font-size: var(--fs-display);
  line-height: var(--lh-display);
  letter-spacing: -0.022em;
  font-weight: var(--fw-display);
}
.section-head .h2--display,
.section-head--split__body .h2--display { max-width: 17ch; }
/* Kis kijelzőn a display-lépték leghosszabb szava („modernizálásába?") 44 px-en
   már a csatornáig ér. A plakát-hatás megmarad, csak a szó befér. */
@media (max-width: 620px) {
  .h2--display { font-size: clamp(2rem, 1.05rem + 4.30vw, 2.75rem); letter-spacing: -0.018em; }
}

/* Kiemelt felütő MONDAT: a bekezdés-tömb élére kerül, és ő viszi a súlyt.
   A bekezdések utána ugyanúgy ott vannak — a szöveg nem lett kevesebb. */
.pull {
  font-size: clamp(1.375rem, 0.95rem + 1.80vw, 2.125rem);
  line-height: 1.26;
  letter-spacing: -0.012em;
  font-weight: var(--fw-medium);
  color: var(--ink-800);
  max-width: 22ch;
  text-wrap: balance;
}
.pull + .prose, .pull + p { margin-top: var(--space-6); }


/* --- 2. TELJES SZÉLESSÉGŰ MÉLYKÉK SZÍNMEZŐ-SÁV ---------------------------- */
/* A hero színpada tér vissza a lap közepén: ugyanaz a mélykék mező, ugyanaz a
   hajszálrács és ugyanaz a teal derengés. A záró CTA-sáv (.band) továbbra is
   PONTOSAN EGY marad — ez egy másik komponens, más szereppel: nem cselekvésre
   hív, hanem a skálát mutatja meg.                                            */
.section--band {
  position: relative;
  overflow: hidden;
  background: var(--bg-inverse);
  color: var(--text-inverse);

  --text-heading:    var(--paper-white);
  --text-display:    var(--paper-white);
  --text-strong:     var(--paper-white);
  --text-body:       var(--text-inverse-muted);
  --text-muted:      var(--text-inverse-muted);
  --text-subtle:     var(--text-inverse-subtle);
  --text-link:       var(--accent-glow);
  --text-link-hover: var(--paper-white);

  --border:        var(--line-inverse);
  --border-soft:   rgba(255, 255, 255, 0.08);
  --border-strong: rgba(255, 255, 255, 0.34);
  --border-accent: var(--accent-glow);
  --focus-ring:    var(--focus-ring-inverse);

  --accent:            var(--accent-bright);
  --eyebrow-color:     var(--accent-glow);
  --eyebrow-num-color: rgba(255, 255, 255, 0.42);
  --tick-color:        var(--accent-bright);

  --status-info:          var(--accent-glow);
  --status-info-bg:       rgba(255, 255, 255, 0.055);
  --step-connector-color: rgba(255, 255, 255, 0.28);

  /* FIGYELEM: a `--explain-*` tokenek a :root-on hivatkoznak a --status-info*
     tokenekre, és a var() ott, a DEKLARÁCIÓ helyén oldódik fel — a fenti két
     sor tehát önmagában nem színezné át a „Mit jelent ez?" dobozt. A származtatott
     tokent itt is meg kell adni, különben világoskék doboz maradna a sötét
     sávon, olvashatatlan szöveggel. */
  --explain-bg:        rgba(255, 255, 255, 0.055);
  --explain-bar-color: var(--accent-bright);
  --explain-label:     var(--accent-glow);
}
.section--band::before {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background:
    radial-gradient(60% 130% at 84% 46%, rgba(47, 160, 160, 0.30), transparent 66%),
    linear-gradient(96deg, var(--blue-900) 0%, var(--blue-800) 48%, var(--blue-700) 100%);
}
/* A hajszálrács — ugyanaz a 88 px-es osztás, mint a heróban, középre maszkolva,
   hogy a szélein feloldódjon és ne „elvágott" mintának lássék.                */
.section--band::after {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  opacity: 0.55;
  background-image:
    repeating-linear-gradient(to right,  rgba(255,255,255,.075) 0 1px, transparent 1px 88px),
    repeating-linear-gradient(to bottom, rgba(255,255,255,.075) 0 1px, transparent 1px 88px);
}
@supports (mask-image: radial-gradient(#000, transparent)) {
  .section--band::after {
    -webkit-mask-image: radial-gradient(74% 92% at 50% 42%, #000 0%, transparent 78%);
            mask-image: radial-gradient(74% 92% at 50% 42%, #000 0%, transparent 78%);
  }
}
.section--band > * { position: relative; z-index: 1; }
.section--band .pull { color: var(--paper-white); }

/* A sáv záró éle: egy teal hajszálvonal, ami a színmezőt a lap többi részéhez
   köti (ugyanaz a jel, mint a fehér sáv regiszterjele).                       */
.section--band__edge {
  position: absolute; left: 0; right: 0; bottom: 0; height: 2px; z-index: 2;
  background: linear-gradient(90deg,
    transparent 0%, var(--accent-bright) 18%, var(--accent-glow) 50%,
    var(--accent-bright) 82%, transparent 100%);
  opacity: 0.7; pointer-events: none;
}


/* --- 3. A SZÁM MINT ÖNÁLLÓ GRAFIKAI JEL ----------------------------------- */
/* A 63% eddig H1-méretben, a szövegoszlop mellett ült, és elveszett. Itt a
   szekció második vizuális szereplője lesz — a szöveg és a forrás változatlan. */
.stat--display { padding: 0; border-left: 0; }
.stat--display .stat__value {
  display: flex; align-items: flex-start; gap: 0.02em;
  font-size: clamp(4.5rem, 1.30rem + 12.80vw, 11rem);
  line-height: 0.80;
  letter-spacing: -0.05em;
  color: var(--accent);
}
.stat--display .stat__unit {
  font-size: 0.30em; line-height: 1.5; font-weight: var(--fw-bold);
  color: var(--accent);
}
.stat--display .stat__label {
  margin-top: var(--space-6); padding-top: var(--space-5);
  border-top: 1px solid var(--border);
  font-size: var(--fs-body); color: var(--text-body); max-width: 34ch;
}


/* --- 4. SÚLYOSABB KATEGÓRIA-RÁCS ------------------------------------------ */
/* Nagyobb belső tér, IKON-CHIP a cím mellett, és a hover egyetlen jele helyett
   három, egymást erősítő jel: felső akcent-csík, teli ikon-chip, akcent-szegély.
   Emelkedés (translateY) továbbra sincs — a rendszer tiltja.                   */
.bento--feature { --card-padding: clamp(1.5rem, 1.15rem + 1.40vw, 2.25rem); }
.bento--feature .card { overflow: hidden; }
.bento--feature .card--featured::before { display: none; }
.bento--feature .card::after {
  content: ""; position: absolute; inset-inline: 0; top: 0; height: 3px;
  background: var(--accent);
  transform: scaleX(0); transform-origin: left center;
  transition: transform var(--dur-base) var(--ease-out);
}
.bento--feature .card--featured::after { transform: scaleX(1); }
/* Az ikon a cím FÖLÉ kerül, nem mellé: a keskeny (span-2) kártyákon a 62 px-es
   chip mellett a cím négy sorra tört, és a rács „szűknek" látszott tőle. */
.bento--feature .card__head {
  flex-direction: column; align-items: flex-start;
  gap: var(--space-4); margin-bottom: var(--space-5);
}
.bento--feature .card__link {
  font-size: var(--fs-body); font-weight: var(--fw-semibold); color: var(--accent-strong);
}

.card__icon {
  flex: none; display: grid; place-items: center;
  width: clamp(56px, 2.2rem + 2.4vw, 72px); aspect-ratio: 1;
  border-radius: var(--radius-md);
  background: var(--accent-soft); color: var(--accent);
  box-shadow: inset 0 0 0 1px var(--border-accent);
  transition: background-color var(--dur-quick) var(--ease-out),
              color var(--dur-quick) var(--ease-out),
              box-shadow var(--dur-quick) var(--ease-out);
}
.card__icon svg { width: 50%; height: 50%; margin: 0; stroke-width: var(--icon-stroke-bold); }

@media (hover: hover) and (pointer: fine) {
  .bento--feature .card--interactive:hover::after { transform: scaleX(1); }
  .bento--feature .card--interactive:hover .card__icon {
    background: var(--accent); color: var(--paper-white);
    box-shadow: inset 0 0 0 1px var(--accent);
  }
}


/* --- 5. LÉPCSŐK A SÖTÉT SÁVON --------------------------------------------- */
/* A négy lépcső számai plakát-léptékű, üreges teal számjegyek; a szaggatott
   összekötő vonal helyett minden lépcső fölött egy hajszálvonal fut — így a
   sáv rácsa, nem egy díszvonal tartja össze a sort.                           */
.steps--band { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--grid-gap); }
.steps--band .steps__line { display: none; }
.steps--band .step { border-top: 1px solid rgba(255, 255, 255, 0.24); padding-top: var(--space-5); }
.steps--band .step__badge {
  display: block; width: auto; min-width: 0; min-height: 0; padding: 0;
  background: none; box-shadow: none; color: var(--accent-bright);
  font-size: clamp(3.25rem, 1.10rem + 6.60vw, 6rem);
  line-height: 0.86; letter-spacing: -0.05em;
  margin-bottom: var(--space-4);
}
.steps--band .step--current .step__badge { color: var(--paper-white); box-shadow: none; }
.steps--band .step__title {
  font-size: var(--fs-h3); line-height: var(--lh-h3); margin-bottom: var(--space-3);
}
@media (max-width: 900px) {
  .steps--band { grid-template-columns: 1fr 1fr; row-gap: var(--space-10); }
}
@media (max-width: 560px) { .steps--band { grid-template-columns: 1fr; } }


/* --- 6. NAGYOBB LÉPTÉKŰ SZÖVEGTÖMBÖK -------------------------------------- */

/* Előtte/utána: a két panel a lap egyik jelképe — nem lehet két apró doboz. */
.ba--lg { --ba-padding: clamp(1.5rem, 1.10rem + 1.60vw, 2.5rem); gap: var(--space-8); }
.ba--lg .ba__label { font-size: var(--fs-small); margin-bottom: var(--space-6); }
.ba--lg .ba__label svg { width: var(--icon-md); height: var(--icon-md); }
.ba--lg .ba__list li { padding-block: var(--space-4); font-size: var(--fs-lead); line-height: 1.45; }
.ba--lg .ba__list svg { width: var(--icon-md); height: var(--icon-md); margin-top: 5px; }
.ba--lg .ba__badge { --ba-badge-size: 56px; }

/* GYIK: a kérdés kattintható elem — a mérete is akkora legyen. */
.faq--lg { max-width: 880px; }
.faq--lg .faq__q {
  font-size: clamp(1.1875rem, 1.00rem + 0.78vw, 1.625rem);
  line-height: 1.3; padding-block: var(--space-6);
}
.faq--lg .faq__a > div { font-size: var(--fs-body); padding-bottom: var(--space-6); }

/* Hajszálvonalas lista nagyobb léptékben (iparági belépő). */
.plainlist--lg li { padding-block: var(--space-5); font-size: var(--fs-lead); }
.plainlist--lg a { color: var(--text-heading); font-weight: var(--fw-medium); }
.plainlist--lg a:hover { color: var(--accent-strong); }

/* Sorszámozott szabálylista, nagyobb sorral és tényleg LÁTHATÓ sorszámmal:
   a 13 px-es szám a jelölő-vonal alatt eddig alig volt több pontnál. */
.rulelist--lg { row-gap: var(--space-8); }
.rulelist--lg li { font-size: var(--fs-body); gap: var(--space-4); align-items: flex-start; }
.rulelist--lg .rulelist__num {
  font-size: var(--fs-h4); font-weight: var(--fw-bold);
  min-width: 1.6em; padding-top: var(--space-2);
}

/* A két út: hajszálvonal fut a blokk fölött, ugyanaz a jel, mint a sötét sáv
   lépcsőin — a szövegtömb így ránézésre két blokk, nem egy folyam. */
.path-row { border-top: 1px solid var(--border); padding-top: var(--space-10); }
.path-row + .path-row { margin-top: var(--space-14); }

/* A két út címe: a lap harmadik léptéke a display és a H3 között. */
.pathhead {
  font-size: clamp(1.5rem, 1.10rem + 1.50vw, 2.25rem);
  line-height: 1.14; letter-spacing: -0.018em;
  font-weight: var(--fw-semibold); max-width: 13ch;
}

/* A záró sáv dekorációja eddig 260 px-es volt egy 1600 px-es sávon: nem
   olvasódott ábrának, csak zajnak. Ugyanaz a rajz, kétszeres léptékben. */
.band__deco--lg {
  width: clamp(300px, 30vw, 500px); height: auto;
  right: clamp(-110px, -6vw, -60px); bottom: -84px;
}
@media (max-width: 900px) { .band__deco--lg { display: none; } }


/* --- 7. SZEKCIÓ-RITMUS A FŐOLDALON ---------------------------------------- */
/* Két egymást követő, AZONOS hátterű szekció között eddig kétszer 160 px üres
   törtfehér állt — ez nem ritmus volt, hanem üresség. Ahol a háttér nem vált,
   ott a felső térköz visszavesz; ahol vált (fehér sáv, mélykék sáv), ott
   marad a teljes levegő.                                                      */
.home .section + .section:not(.section--paper):not(.section--band):not(.section--paper-inset) {
  padding-top: calc(var(--section-y) * 0.56);
}


/* =============================================================================
   G. SEGÉD-UTILITY-K
   ============================================================================= */

.u-section       { padding-block: var(--section-y); }
.u-section-tight { padding-block: var(--section-y-tight); }
.u-section-large { padding-block: var(--section-y-large); }
.u-measure   { max-width: var(--measure-body); }
.u-tabular   { font-variant-numeric: tabular-nums; }
.u-balance   { text-wrap: balance; }
.u-pretty    { text-wrap: pretty; }
.u-muted     { color: var(--text-muted); }
.u-mt-4  { margin-top: var(--space-4); }
.u-mt-6  { margin-top: var(--space-6); }
.u-mt-8  { margin-top: var(--space-8); }
.u-mt-10 { margin-top: var(--space-10); }
.u-mt-12 { margin-top: var(--space-12); }
.u-visually-hidden {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;
}


/* =============================================================================
   H. PREFERS-REDUCED-MOTION — kötelező CSS-réteg
   (a GSAP-réteget lásd: main.js — gsap.matchMedia())
   ============================================================================= */

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .js-reveal,
  .js-fade { opacity: 1 !important; visibility: visible !important; transform: none !important; }
  .js-hero-word .word-in { transform: none !important; opacity: 1 !important; }
}


/* =============================================================================
   I. NYOMTATÁS — a lényeg olvasható marad papíron is
   ============================================================================= */

@media print {
  .nav, .footer, .band__deco, .skip { display: none !important; }
  body { background: #fff; color: #000; }
  .band { background: #fff !important; color: #000 !important; }
  .band .h2, .band p { color: #000 !important; }
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 11px; }
  .faq__a { grid-template-rows: 1fr !important; }
}


/* =============================================================================
   G2. ILLUSZTRÁCIÓK  ·  data-illu jelenetek
   -----------------------------------------------------------------------------
   Vezérlő: assets/js/illustrations.js · Kanonikus források:
   assets/illustrations/<nev>.svg.html · Spec: docs/design/illusztracio-spec.md

   A FENTI SZEKCIÓKAT NEM MÓDOSÍTJA. Az F.13 (folyamatábra) szabályai továbbra is
   érvényesek — az itt megnevezett .illu--std / .illu--card konténerek csak azt az
   EGY globális szabályt írják felül, ami 720 px alatt MINDEN .flow-svg-t elrejtene.
   ============================================================================= */

:root {
  --illu-ar:  16 / 10;          /* méretarány — a modifier írja felül            */
  --illu-max: 640px;            /* maximális szélesség                           */
}

/* --- Konténer: fix méretarány, NULLA CLS ---------------------------------- */
.illu { position: relative; width: 100%; max-width: var(--illu-max); margin-inline: auto; }
.illu > svg {
  display: block; width: 100%; height: auto;
  aspect-ratio: var(--illu-ar);
  stroke-width: var(--flow-stroke-base);
}
.illu > svg text { font-family: var(--font-sans); stroke: none; }
/* A `stroke: none` nem kozmetika: a <g> csoportokra tett kontúr különben
   ÖRÖKLŐDNE a bennük álló feliratokra, és a szöveg körberajzolva, kövéren jelenne
   meg. Ezt az egy sort ne vedd ki. */

.illu--band { --illu-ar: 60 / 13; --illu-max: none;  }   /* CSAK a hero-jelenet */
.illu--wide { --illu-ar: 12 / 5;  --illu-max: 860px; }
/* A 720 px NEM önkényes: MINDEN std/wide viewBox 720 EGYSÉG széles, tehát ezen a
   maximumon a skála pontosan 1,0 — az .illu-micro 13,5 px-e valóban 13,5 px-ként
   jelenik meg. A korábbi 640 px 0,889-es skálát adott, azaz 12,0 px-et: a spec
   ≥ 13 px-es felirat-ígérete a std-család MINDEN példányán bukott (chat-ablak,
   flotta-terkep, dashboard-mockup, webshop-termekracs-kosar, ugyfelportal,
   ket-ut-elagazas). Lásd még a .illu--max-* alatti kompenzációt. */
.illu--std  { --illu-ar: 16 / 10; --illu-max: 720px; }
.illu--card { --illu-ar: 4 / 3;   --illu-max: 420px; }   /* kártyán belüli mini */

/* Komponens-szintű szélességkorlátok (spec 2., „max." sorok). */
.illu--max-560 { --illu-max: 560px; }
.illu--max-620 { --illu-max: 620px; }
.illu--max-720 { --illu-max: 720px; }

/* FELIRAT-KOMPENZÁCIÓ a szűkebb konténerekhez.
   A tényleges betűméret = deklarált px × (--illu-max ÷ 720). Ahol a konténer a
   720-nál keskenyebb, ott a 13,5 px 13 px alá esne (560-nál 10,5 px, 620-nál
   11,6 px), ezért ott a deklarált méretet emeljük — a viewBox koordinátái, a
   sortörések és a dobozméretek változatlanok maradnak. */
.illu--max-560 .illu-micro { font-size: 17.5px; }   /* 560/720 × 17,5 ≈ 13,6 px */
.illu--max-620 .illu-micro { font-size: 15.8px; }   /* 620/720 × 15,8 ≈ 13,6 px */

.illu__note {
  margin-top: var(--space-3); font-size: var(--fs-micro);
  color: var(--text-subtle); text-align: left;
}

/* --- SVG-tipográfia (a viewBox-méretek a spec 0.3 táblája szerint) --------- */
.illu-title { font-size: 17px;   font-weight: 600; fill: var(--flow-box-text); }
.illu-label { font-size: 15px;   font-weight: 500; fill: var(--flow-label); }
.illu-micro { font-size: 13.5px; font-weight: 600; fill: var(--flow-label); }
.illu-mono  { font-size: 12px;   font-weight: 700; }
.illu-num   {
  font-size: 30px; font-weight: 700; fill: var(--ink-800);
  font-variant-numeric: tabular-nums; font-feature-settings: "tnum" 1;
}
/* SZÍN-MODIFIEREK a feliratokhoz. FONTOS: ezek a bázis-osztályok UTÁN állnak,
   így azonos fajsúly mellett a forrássorrend dönt — ezért működnek. SVG-ben a
   `fill="…"` prezentációs attribútum GYENGÉBB minden CSS-szabálynál, tehát egy
   .illu-micro elem fill-attribútuma soha nem érvényesülne: mindig modifiert használj. */
.illu-passive { fill: var(--ink-500);      }   /* „ma így megy", metaadat        */
.illu-on      { fill: var(--accent-strong);}   /* akcentes felirat világos alapon */
.illu-invert  { fill: var(--paper-white);  }   /* TELI akcent-felületen           */
.illu-warn    { fill: var(--clay-600);     }   /* lejárt / figyelmeztető          */

/* --- Közös rajzelemek ------------------------------------------------------ */
/* CSAK az alakzatra hat — a .illu-tray-t csoport-horogként is használjuk, és egy
   <g>-re tett fill/stroke leöröklődne minden gyerekre. */
rect.illu-tray { fill: var(--flow-box-bg); stroke: var(--flow-box-border); }
/* .illu-hair: tiszta segédvonal — SOHA nincs kitöltése.                       */
.illu-hair  { fill: none; stroke: var(--flow-grid); stroke-width: var(--flow-stroke-hair); }
/* .illu-hairline: csak a VASTAGSÁGOT adja. Ide olyan alakzat kerül, aminek
   saját fill/stroke attribútuma van (fehér kártyalap hajszálkontúrral).       */
.illu-hairline { stroke-width: var(--flow-stroke-hair); }

.illu-row     { fill: var(--blue-100); }
.illu-row--on { fill: var(--accent-soft); stroke: var(--accent-line); }

.illu-bar     { fill: var(--blue-100); }
.illu-bar--on { fill: var(--accent); }

.illu-seg     { fill: var(--blue-50); stroke: var(--line-hex); stroke-width: var(--flow-stroke-hair); }
.illu-seg--on { fill: var(--accent);  stroke: var(--accent); }

.illu-step     { fill: var(--flow-box-bg); stroke: var(--flow-box-border); }
.illu-step--on { fill: var(--accent);      stroke: var(--accent); }
.illu-step     { transition: fill var(--dur-base) var(--ease-out),
                             stroke var(--dur-base) var(--ease-out); }
.illu-step-label--on { font-weight: var(--fw-semibold); fill: var(--accent-strong); }

.illu-baseline { fill: none; stroke: var(--flow-grid); stroke-width: var(--flow-stroke-hair); }

.illu-scrollbar { fill: var(--flow-box-border); }   /* kartya-pakli --portfolio */

.flow-line--passive { stroke: var(--flow-line-passive); stroke-dasharray: var(--flow-dash-passive); }
/* Lejárt szakasz az idővonalon — szín ÉS szaggatás, sose csak szín. */
.illu-line--late    { fill: none; stroke: var(--clay-600); stroke-dasharray: var(--flow-dash-passive); }

/* --- TISZTA ANIMÁCIÓS HORGOK — szándékosan NINCS stílusuk -----------------
   Ezek az osztályok kizárólag azt mondják meg az illustrations.js-nek, hogy egy
   elem MELYIK szerepet játssza a jelenetben. A megjelenést az elem saját
   fill / stroke attribútuma adja, hogy a partial önmagában is olvasható legyen.
   Ha valamelyikhez CSS kerül, az nem hiba — de ne a színt vigye el az SVG-ből.

     flow-node · flow-line · flow-dot
     illu-tray-head · illu-tray-old · illu-tile · illu-box · illu-card
     illu-bubble · illu-pill · illu-badge · illu-mark · illu-dot
     illu-cell · illu-daynames · illu-prod · illu-listrow · illu-mailrow
     illu-folder · illu-dbrow · illu-filter
   ------------------------------------------------------------------------- */

/* --- JS-alapállapot: MINDEN LÁTSZIK, ha nincs JS (design-system 9.6) ------- */
.illu-part { opacity: 1; visibility: visible; transform: none; }

@media (prefers-reduced-motion: no-preference) {
  html.js:not(.illu-off) .illu-part { opacity: 0; visibility: hidden; }
}

/* Két külön kapu, mindkettő kötelező: a hibaháló ÉS a felhasználó választása.
   A `html:not(.js)` esetet a fenti alapállapot már fedi — ide nem kell szabály. */
html.illu-off .illu-part {
  opacity: 1 !important; visibility: visible !important; transform: none !important;
}
@media (prefers-reduced-motion: reduce) {
  .illu-part {
    opacity: 1 !important; visibility: visible !important; transform: none !important;
  }
}

/* --- A hero sávja: 900 px alatt HTML-változatra vált ----------------------- */
/* A band viewBox 1200 px széles; 900 px alatt a 13,5 px-es feliratok tényleges
   mérete 10 px alá esne, ezért itt korábban váltunk, mint a 720 px-es családnál. */
@media (max-width: 900px) {
  .illu--band > svg { display: none; }
  .illu--band .flow-stack { display: grid; gap: var(--space-3); }
}

/* --- 720 px alatti viselkedés --------------------------------------------- */
@media (max-width: 720px) {
  /* A doboz + nyíl család HTML-változatra vált. */
  .illu--wide > svg { display: none; }
  .illu--wide .flow-stack { display: grid; gap: var(--space-3); }

  /* A tálca-jellegű ábrák NEM törnek: arányt tartva zsugorodnak. Az F.13
     globális `.flow-svg { display:none }` szabályát itt vissza kell venni. */
  .illu--std > svg, .illu--card > svg { display: block; }

  /* …de nem zsugorodhatnak a felirat-olvashatóság alá: a konténer vízszintesen
     görgethető lesz (ugyanaz a minta, mint a .flow-frame-nél). A TÖRZS soha nem
     görög vízszintesen, csak ez a doboz. */
  .illu--std, .illu--card { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .illu--std > svg  { min-width: 600px; }
  .illu--card > svg { min-width: 380px; }

  /* --- .illu--stacks — a std-családba került HTML-fallback ------------------
     A .illu--wide / .illu--band automatikusan a .flow-stack-re vált 720 (ill.
     900) px alatt. A .illu--std alapesete viszont a fenti „arányt tartva
     zsugorodik + vízszintesen görgethető" — ezért ha egy std-konténerbe MÉGIS
     kerül .flow-stack (mert doboz+nyíl szerkezetről van szó, amire a spec 0.4
     kötelezővé teszi a 720 px-es törést), azt KÜLÖN kell kérni ezzel az
     osztállyal. Enélkül a ket-ut-elagazas telefonon KÉTSZER jelent meg:
     egyszer 600 px-re kényszerített, oldalra görgethető SVG-ként, alatta
     ugyanaz doboz-listaként. A szabály a `.illu--std > svg { display: block }`
     UTÁN áll, tehát azonos fajsúly mellett a forrássorrend dönt. */
  .illu--stacks > svg { display: none; }
  .illu--stacks { overflow-x: visible; }
  .illu--stacks > .flow-stack { display: grid; gap: var(--space-3); }
}

/* --- BILLENTYŰZETTEL IS ELÉRHETŐ VÍZSZINTES GÖRGETÉS (WCAG 2.1.1, A) --------
   A fenti `overflow-x: auto` egérrel és érintéssel görgethető dobozt csinál a
   szűk kijelzős .illu--std / .illu--card ábrákból. Egy sima <div> viszont nem
   kap fókuszt, tehát billentyűzettel a 375 px-es telefonon az ábra jobb oldali
   harmada (a naptar-foglalas hétvégi oszlopai, az ugyfelportal státusz-oszlopa)
   elérhetetlen lenne. A markupban ezért `tabindex="0" role="region" aria-label`
   áll a görgethető konténereken — ide csak a LÁTHATÓ fókuszgyűrű tartozik.
   A `.illu--stacks` kimarad: az nem görög, hanem HTML-listára vált.
   A globális `:where(…, [tabindex]):focus-visible` szabály (690. sor) már ad
   gyűrűt; itt csak a lekerekítést és a nagyobb ráhagyást pontosítjuk, hogy a
   gyűrű ne vágja le az ábra szélét.                                          */
.illu[tabindex]:focus-visible {
  outline: var(--focus-ring-width) solid var(--focus-ring);
  outline-offset: 4px;
  border-radius: var(--radius-md);
}
