/* CodeRifts — design system v1 · 2026-09-15
 *
 * A SZABÁLY, AMI MINDENT KÖT:
 *   A FORMA A KIMENETET KÖVETI. A SZÍN A REGISZTERT.
 *   Ha egy elem mező-érték (evidence_tier: NOT_RUN), akkor .pill — akkor is, ha
 *   a jelentése más regiszterbe tartozik. Ha nem mező-érték, nem lehet .pill.
 *
 * ÉS EGY ESZKÖZ, EGY JELENTÉS:
 *   az üres keret a WITH_MONITORING-é ("ugyanaz az állapot, más fokozat").
 *   Ne használd más jelentésre.
 *
 * A VERDIKT-TENGELY LEZÁRT: négy hely van rajta, és mind a négy foglalt.
 *   Színvakon négy árnyalat a felső határ (mérve: Viénot 1999 + CIEDE2000,
 *   protan/deutan/tritan, tíz jelölttel). Bármi, ami ötödikként jelentkezik,
 *   MÁS ESZKÖZT KAP — formát, regisztert vagy tipográfiát.
 */

:root{
  /* ---- felületek és tinta ---------------------------------------------- */
  --base:      #F7F7F5;   /* a lap alapja — NEM #F4F1EA (az a Claude-paletta) */
  --surface:   #FFFFFF;   /* kiemelt panel */
  --ink:       #33332F;   /* főszöveg ÉS a null állapot ÉS a NOT_RUN */
  --rift:      #EC3A13;   /* ⚠ A MÁRKAJEL pirosa — KIZÁRÓLAG a rés és a „rifts" szó.
                             NEM verdikt-szín (#0F6E56 · #D18E1A · #8C3A1C külön tengely)
                             és NEM link-szín. A 13. kapuszabály őrzi a szivárgást. */
  --ink-2:     #4A4A45;   /* másodlagos szöveg */
  --ink-3:     #6B6B66;   /* címkék, jegyzetek */
  --rule:      #DEDED9;   /* hajszálvonal */
  --rule-2:    #CFCFC9;   /* erősebb vonal, keretek */

  /* ---- terminál — itt a bátorság --------------------------------------- */
  --term:      #0D1512;   /* zöldes near-black, a verdikt-tengelyhez köt */
  --term-ink:  #E8E8E4;
  --term-dim:  #7D8C85;   /* prompt-sorok, kommentek */
  --term-go:   #4FBF9B;   /* az állítás, amit a parancs kérdezett */
  --term-ev:   #93B5D6;   /* evidence_tier a terminálban */

  /* ---- 1. TENGELY: verdikt (execution_action) — LEZÁRT ------------------ */
  --go:        #0F6E56;   /* CONTINUE — telt.  WITH_MONITORING: UGYANEZ, üresen */
  --appr:      #D18E1A;   /* REQUEST_APPROVAL — ⚠ SÖTÉT szöveggel, nem fehérrel */
  --appr-ink:  #0D1512;   /*   a világosság menti a STOP-tól: ΔE 26,6 a legrosszabb
                              szimulációban. SÖTÉTÍTVE ÖSSZEOLVAD (#A9690F → 12,9) */
  --stop:      #8C3A1C;   /* STOP — rozsda, nem tűzpiros */
  /* null / not decided = var(--ink) telten. NINCS saját színe: a felület
     alap-tintája, világos lapon és terminálban egyaránt. Egy szabály, két felület. */

  /* ---- 2. TENGELY: bizonyíték-minőség ----------------------------------- */
  --live:      #1B4A78;   /* LIVE — telt */
  --rec:       #BDD0E2;   /* RECORDED — halvány */
  --rec-ink:   #12395C;
  /* NOT_RUN = var(--ink) TELTEN, "no evidence" címke alatt — ugyanúgy, ahogy a null.
     KILÉP a kék skálából: a RECORDED-tal ΔE 11,1 ÉP LÁTÁSSAL IS, és a jelentése
     ellentétes. NOT_RUN ≠ NOT_COVERED — nem gyengébb bizonyíték, hanem nem bizonyíték.
     ⚠ ÉS AZÉRT TELT, NEM ÜRES: a null és a NOT_RUN UGYANAZ A FAJTA DOLOG — hiány,
     ÁLLÍTÁSKÉNT. Nem üres cella, hanem amit a rendszer KIMOND arról, amije nincs.
     Hogy vizuálisan testvérek, nem hiba: igaz.
     MÉRVE: LIVE vs NOT_RUN 16,8 a legrosszabb szimulációban — határeset, de a két
     csoport a valós kimenetben nem keveredik, és ott az elválasztó + a címke.
     RECORDED vs NOT_RUN 55,5. null vs a négy verdikt 20,8–45,2. */

  /* ---- 3. REGISZTER: does_not_prove ------------------------------------- */
  /* NINCS SZÍNE. Azonos betűméret az állítással, hajszálvonallal elválasztva.
     Nem állapot, hanem a rendszer beszél önmagáról. */

  /* ---- tipográfia ------------------------------------------------------- */
  --sans: system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --mono: ui-monospace,'SF Mono','Cascadia Mono',Menlo,Consolas,monospace;
  /* ⚠ NULLA külső hoszt. A lap állítása: "No account, no key, no callback to us."
     Élesben önhosztolt woff2 jöhet a saját domainről — Google Fonts SOHA. */

  /* type scale 1.25 */
  --t-xs: 13px;  --t-s: 14px;  --t-b: 16px;  --t-l: 19px;
  --t-xl: 21px;  --t-h3: 20px; --t-h2: 31px; --t-h1: 48px;

  /* ritmus */
  --w-wide: 1000px;  --w-text: 720px;
  --pad: 28px;  --sec: 76px;  --r: 7px;  --r-lg: 11px;
  --nav-h: 62px;   /* a sticky fejlec magassaga — a .navrow ES a .docs-sidebar hasznalja */
}

/* ====================================================================== */
/* ALAP                                                                    */
/* ====================================================================== */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--base);color:var(--ink);font-family:var(--sans);
     font-size:var(--t-b);line-height:1.65;-webkit-font-smoothing:antialiased}

h1,h2,h3{margin:0;font-weight:500;letter-spacing:-0.015em;line-height:1.18}
h1{font-size:clamp(34px,5.2vw,var(--t-h1))}
h2{font-size:clamp(25px,3.4vw,var(--t-h2));letter-spacing:-0.012em}
h3{font-size:var(--t-h3);letter-spacing:-0.008em}
p{margin:0 0 1em}
a{color:var(--live);text-decoration:none;border-bottom:1px solid rgba(27,74,120,.3)}
a:hover{border-bottom-color:var(--live)}
/* ⚠ SOHA nem teszünk "→"-t link vagy gomb szövegébe. Mért tell, 5/5 CTA-n volt. */

.wrap{max-width:var(--w-wide);margin:0 auto;padding:0 var(--pad)}
.narrow{max-width:var(--w-text)}
h1.narrow{max-width:none}
/* ⚠ A hero-mondat 34 karakter, 48px-en ~816px — a --w-text 720px-en KETTE TORIK.
   MERVE 2026-09-17: a .narrow 107 helyen fut 87 lapon, tehat a --w-text szelesitese
   MINDENHOL hatna es elrontana az olvasasi merteket. Az egesz site-on EGYETLEN
   h1.narrow van (a homepage hero), ezert a H1 kap sajat mertekét: a .wrap 944px-e,
   amiben a 816px elfer. Egy elem, nulla kockazat a torzs-szovegre. */
section{padding:var(--sec) 0}
/* ⚠ Két egymást követő szakasz KÉTSZER fizette a --sec-et: 152px minden párnál,
   az átállított homepage-en HATSZOR mérve. Egy elválasztás egy --sec. A felezés
   a vonalas szakaszoknál is jó: 38px a hajszálvonal fölött és alatt. */
section + section{padding-top:calc(var(--sec) / 2)}
section:not(:last-of-type){padding-bottom:calc(var(--sec) / 2)}
.rule-top{border-top:1px solid var(--rule)}

.eyebrow{font-size:var(--t-xs);color:var(--ink-3);margin:0 0 20px;letter-spacing:0}
/* ⚠ MONDATKEZDŐ, nem ALL-CAPS, nem kiritkított. A címke marad, a tipográfia nem. */
.lead{font-size:var(--t-l);line-height:1.6;color:var(--ink-2)}
.lead-strong{font-size:var(--t-xl);line-height:1.5;color:var(--ink)}
.small{font-size:var(--t-xs);color:var(--ink-3)}
.mono{font-family:var(--mono)}

/* ====================================================================== */
/* GOMBOK                                                                  */
/* ====================================================================== */
.btnrow{display:flex;gap:12px;flex-wrap:wrap;margin-top:32px}
.btn{display:inline-block;padding:11px 20px;border-radius:var(--r);
     font-size:15px;border:0;background:var(--live);color:#fff}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--rule-2)}
.btn--sm{padding:7px 14px;font-size:var(--t-s)}
/* ⚠ A navbar 62px magas (--nav-h); a teljes meretu .btn 11px-es paddingja ott tul magas. */

/* ---- lablec: kozossegi ikonok ---------------------------------------- */
.social{display:flex;gap:18px;align-items:center;margin-top:34px}
.social a{display:inline-flex;color:var(--ink-3);border:0}
.social a:hover{color:var(--ink)}
.social svg{width:18px;height:18px;fill:currentColor}
/* ⚠ Visszahozva a 6ce6d4e elotti lablecbol: a sablon-csere elvitte oket. */

/* ====================================================================== */
/* TERMINÁL — a bátorság egy helye                                         */
/* ====================================================================== */
/* A rendszer sajat szabalya: „wide content scrolls inside its own overflow-x:auto
 * container, so the page body never scrolls sideways." A .term ezt eddig is teljesitette,
 * a CSUPASZ <pre> viszont nem — es 180 pre-bol 85-nek nem volt gorgetese, kozuluk 7 tenylegesen
 * szelesebb a 944px hasznalhato savnal (a leghosszabb 179 karakter).
 * MERVE 2026-09-17: egyetlen <pre> sem tartalmaz abszolut pozicionalt gyereket, tehat az uj
 * block formatting context nem vag le semmit; az `auto` csak akkor gorget, ha kell.
 * ⚠ A PARANCSOKAT NEM TORDELJUK: egy sorokra tort parancs nem masolhato ki helyesen. */
pre{overflow-x:auto}
.term{background:var(--term);border-radius:9px;padding:22px 24px;overflow-x:auto;
      font-family:var(--mono);font-size:var(--t-s);line-height:1.75;color:var(--term-ink)}
.term .c{color:var(--term-dim)}      /* prompt, komment */
.term .ok{color:var(--term-go)}       /* az állítás, amit a parancs kérdezett */
.term .ev{color:var(--term-ev)}       /* evidence_tier — CSAK az */
/* ⚠ minden más PLAIN. A status: VERIFIED_CURRENT nem kap színt: aláírás-életciklus,
   nincs a három tengelyen. A null sem: a felület alap-tintája. */

/* ====================================================================== */
/* PIRULA — csak mező-értékre                                              */
/* ====================================================================== */
.pill{display:inline-block;padding:5px 11px;border-radius:6px;
      font-family:var(--mono);font-size:var(--t-xs);line-height:1.5;white-space:nowrap}
.pill--hollow{padding:3.5px 9.5px;border-width:1.5px;border-style:solid;background:transparent}
/* HÁROM ESZKÖZ, HÁROM JELENTÉS — nincs átfedés, és bővíthető:
 *   SZÍN        az érték a SAJÁT tengelyén áll            (p-go · p-appr · p-stop · p-live · p-rec)
 *   ÜRES KERET  ugyanaz a család, más fokozat             (CSAK p-mon)
 *   TELT TINTA  nincs a tengelyen — a rendszer KIMOND egy hiányt  (p-null · p-nr)
 * Ha később kell egy RECORDED_PARTIAL, az ÜRES KÉK KERET lesz, és az magától érthető. */

.p-go{background:var(--go);color:#fff}
.p-mon{border-color:var(--go);color:var(--go)}        /* + .pill--hollow */
.p-appr{background:var(--appr,#D18E1A);color:var(--appr-ink,#0D1512)}
/* ⚠ Kifejezett tartalék, nem új érték: ha a --appr-ink bármiért nem oldódik fel
   (részleges token-állapot, elavult gyorsítótár), a color érvénytelenné válna és
   ÖRÖKLŐDNE — világos felületen világos szöveget adva. 2026-09-16-i mérés: a
   szállított lapon FEHÉR szöveg látszott okkeren (2,76:1), miközben a lapban és
   a commitban is a helyes szabály áll. A tartalék ezt a kimenetet lehetetlenné teszi. */
.p-stop{background:var(--stop);color:#fff}
.p-null{background:var(--ink);color:#fff}

.p-live{background:var(--live);color:#fff}
.p-rec{background:var(--rec);color:var(--rec-ink)}
.p-nr{background:var(--ink);color:#fff}               /* telt — mint a p-null */

/* ====================================================================== */
/* KÉT REGISZTER — az állítás és a plafonja, azonos súllyal                */
/* ====================================================================== */
.two{display:grid;grid-template-columns:1fr 1fr;gap:0;background:var(--surface);
     border:1px solid var(--rule);border-radius:var(--r-lg);overflow:hidden}
.two>div{padding:26px 28px}
.two>div+div{border-left:1px solid var(--rule)}
.two .val{font-family:var(--mono);font-size:22px;line-height:1.3;margin:0 0 12px}
.two .val.y{color:var(--go)}
.two .val.n{color:var(--ink)}
.two p{font-size:var(--t-s);color:var(--ink-2);margin:0}
/* ⚠ MINDKÉT OLDAL UGYANARRA AZ ÁLLÍTÁSRA vonatkozzon. Ha a bal az offline
   ellenőrzésről szól és a jobb a host-megkerülésről, a panel nem működik. */

@media(max-width:700px){
  .two{grid-template-columns:1fr}
  .two>div+div{border-left:0;border-top:1px solid var(--rule)}
  /* ⚠ 380px-en egymás alá kerül. A jobb oldal betűmérete NEM csökkenhet —
     különben visszakapjuk a lábjegyzetet, csak nagyobb betűvel. */
}

/* ====================================================================== */
/* LÁNC — egy folyamatos oszlop, NEM hat kártya (az a (d) klaszter)        */
/* ====================================================================== */
.chain{border-left:1px solid var(--rule-2);padding-left:30px;margin-top:40px}
.step{padding:0 0 38px;position:relative}
.step:last-child{padding-bottom:0}
.step::before{content:'';position:absolute;left:-34.5px;top:9px;width:8px;height:8px;
              border-radius:50%;background:var(--rule-2)}
.step h3{margin:0 0 9px}
.step p{font-size:15px;color:var(--ink-2);margin:0 0 14px;max-width:60ch}
.stepline{font-family:var(--mono);font-size:var(--t-xs);color:var(--ink-3)}

/* ====================================================================== */
/* CLAIM CLASS — a NEGYEDIK tengely, es SZANDEKOSAN nincs jeloloje         */
/* ====================================================================== */
/* MERVE 2026-09-17: a negyedik tengelyre NINCS szabad jelolo-eszkoz.
 *   SZIN        lezart — negy arnyalat a felso hatar szinvakon (Vienot 1999 + CIEDE2000)
 *   URES KERET  a CONTINUE_WITH_MONITORING-e
 *   TELT TINTA  a null es a NOT_RUN-e
 *   a szaggatott keret az URES KERET variansa -> egy eszkoz, ket jelentes
 *   az opacity utkozne a bizonyitek-tengellyel (RECORDED = halvany)
 *   a text-transform + letter-spacing TILTOTT (a kapu 2d szabalya)
 *
 * EZERT: a capability-nek NINCS SZINE. Strukturalt mono-sor, a .stepline
 * regiszterben — ugyanaz az alak, amit a rendszer mar 32 helyen hasznal
 * ertek-listakra. "Egy eszkoz, egy jelentes": sertetlen.
 *
 * A HAROM CIMKE OLVASATA, es ez minden sorra all:
 *   1. MILYEN KONTROLL ez      ENFORCING - ADVISORY - EVIDENCE
 *   2. MI A HATOKORE           GUARDED TABLE - PR - MERGE - PUSH
 *   3. MI A CLOSURE CONDITION  MEASURED BOUNDARY - REQUIRES 4 CONDITIONS -
 *      vagy a korlat           INSTALLED LOCAL HOOK - DOES NOT EXECUTE
 * Az EVIDENCE TIER (LIVE / RECORDED / NOT_RUN) KULON TENGELY, es AZ kap pirulat.
 * Igy az ENFORCING sem valik ujabb, burkolt "inescapable" allitassa. */
.claimclass{margin:2px 0 0}
/* ⚠ NINCS 01/02/03 marker. A tartalom sorozat, de a pont elég. */

/* ====================================================================== */
/* ÁLLAPOT-SKÁLA — a tengelyek elválasztva                                 */
/* ====================================================================== */
.scale{display:flex;gap:26px;align-items:flex-start;flex-wrap:wrap}
.scale .lbl{font-size:12px;color:var(--ink-3);margin:0 0 8px}
.scale .grp{display:flex;gap:8px;flex-wrap:wrap}
.scale .sep{width:1px;align-self:stretch;background:var(--rule-2);margin:0 4px}
/* A .val-t eddig CSAK a .two definialta. A closure-szamlalo a .scale racsat hasznalja
 * (harom csempe + elvalasztok), es ott a .val stilus nelkul maradt volna: a szam a proza
 * meretevel jelent volna meg. MERVE 2026-09-17: a .scale-en beluli .val EGYETLEN helyen
 * fordul elo (what-each-path-does), tehat ez a szabaly nem oszt meg semmit mas lappal.
 * A szinek ugyanazok, mint a .two-ban -> egy eszkoz, egy jelentes. */
.scale .val{font-family:var(--mono);font-size:22px;line-height:1.3;margin:0 0 4px}
.scale .val.y{color:var(--go)}
.scale .val.n{color:var(--ink)}
.scale>div>p:last-child{font-size:var(--t-xs);color:var(--ink-3);margin:0}
/* ⚠ A "no evidence" címke KELL a NOT_RUN fölé: enélkül a telt→halvány→üres
   folytonos lejtőnek látszik, és a NOT_RUN "kicsit kevésbé bizonyított" lesz. */

/* ====================================================================== */
/* HOSZT-LISTA — mindegyik megmondja, mit NEM lát                          */
/* ====================================================================== */
.host{padding:22px 0;border-top:1px solid var(--rule)}
.host h3{font-size:17px;margin:0 0 6px}
.host p{font-size:var(--t-s);color:var(--ink-2);margin:0 0 6px;max-width:64ch}
.host .lim{font-size:var(--t-s);color:var(--ink-2);margin:0}
.host .lim b{font-weight:500;color:var(--ink)}

/* ====================================================================== */
/* FEJLÉC ÉS LÁBLÉC                                                        */
/* ====================================================================== */
header{border-bottom:1px solid var(--rule);background:var(--base);position:sticky;top:0;z-index:10}
.navrow{display:flex;align-items:center;justify-content:space-between;height:var(--nav-h)}
/* A MÁRKAJEL a fejlécben. A jel SVG, a szókép ÉLŐ SZÖVEG — így a lap saját
   betűjét használja, kijelölhető, és nem kell külön zárvány-raszter.
   ⚠ A 16px-es mikro CSAK favicon: a fejlécben soha (a legkisebb itt 24px). */
.brand{display:inline-flex;align-items:center;gap:11px;font-family:var(--mono);
  font-size:22px;font-weight:700;letter-spacing:-.4px;line-height:1;color:var(--ink);border:0}
.brand__mark{display:block;flex:0 0 auto;width:32px;height:32px}
.brand__word{white-space:nowrap}
.brand__rift{color:var(--rift)}
@media(max-width:720px){
  /* ⚠ A fejléc MINDKÉT töréspontja ≤32px, ezért mindkettő a KOMPAKT jelet viszi
     (egyenes rés). Renderelve mérve 32px-en: az elcsúszott hasadás ott már nem
     elcsúszásnak olvasódik, hanem bizonytalan vonalnak. A teljes jel 40px-től él. */
  .brand{gap:8px;font-size:19px}
  .brand__mark{width:24px;height:24px}
}
@media(max-width:380px){
  /* Nagyon keskenyen csak a jel. A hozzáférhető nevet az <a aria-label> hordozza. */
  .brand__word{display:none}
}
.navrow nav{display:flex;gap:26px}
/* ⚠ .navrow-ra szukitve 2026-09-17: a csupasz nav{display:flex} MINDEN nav-ra hatott,
   az oldalsav tartalomjegyzeket is beleertve — ott a linkek egymas melle kerultek es
   betunkent tordelodtek. A fejlec navja az egyetlen, ami vizszintes. */
.docs-sidebar nav{display:block}
.navrow nav a{font-size:var(--t-s);color:var(--ink-2);border:0}
.navrow nav a:hover{color:var(--ink)}
@media(max-width:720px){
  /* A nav NEM tunik el: a fejlec ketsorosra bomlik.
     Merve: az ot cimke 42 karakter (~330px 13px-en), a hasznalhato szelesseg
     380 - 2*--pad = 324px. flex-wrap-pel a Pricing atcsuszik a masodik sorba.
     Nulla JS: a regi mobil-menu kezeloje halott volt, es negy lapon DOBOTT
     (null.addEventListener, a blokk elso utasitasa) - 4cdd804. */
  .navrow{height:auto;flex-direction:column;align-items:flex-start;
          gap:10px;padding:14px 0}
  .navrow nav{display:flex;flex-wrap:wrap;gap:8px 18px;width:100%}
}

/* ====================================================================== */
/* DOKUMENTÁCIÓS OLDALSÁV — valódi oldalsáv, balra, a szöveg mellett       */
/* ====================================================================== */
/* ⚠ MIÉRT EZ A SZÉLESSÉG. A .wrap 1000px, border-box, 2×28px padding ->
   944px használható. A törzs marad a --w-text olvasási mértéken (720px),
   a rés --pad (28px), és az oldalsáv a MARADÉK: 944−720−28 = 196px.
   Nincs beírva sehova: a rács számolja ki. Egyetlen bűvös szám sincs benne.
   MÉRVE: a leghosszabb címke 30 karakter („Claim table (today vs roadmap)"),
   ami 13px-en ~195px — a határon egy sor, a leghosszabbnál kettő. ⚠ EGY
   FÜGGŐLEGES tartalomjegyzékben a kétsoros címke NORMÁLIS; a hiba az volt,
   hogy VÍZSZINTESEN próbált elférni nyolc elem. */
.docs-layout{display:grid;gap:var(--pad);
             grid-template-columns:minmax(180px,1fr) minmax(0,var(--w-text));
             align-items:start}

.docs-sidebar{position:sticky;top:calc(var(--nav-h) + 18px);min-width:0;
              padding-right:var(--pad);border-right:1px solid var(--rule)}
/* ⚠ A top a --nav-h-ra all, nem 62-re: a fejlec sticky es ugyanilyen magas.
   Ha a nav magassaga valtozik, ez VELE valtozik. */

.docs-sidebar .lbl{font-size:var(--t-xs);color:var(--ink-3);margin:0 0 10px}
/* ⚠ Az „On this page" a .small regiszter: 13px, --ink-3 — nem félkövér, nem kiritkított. */

.docs-sidebar a{display:block;font-size:var(--t-s);line-height:1.45;
                color:var(--ink-2);border:0;padding:5px 0;overflow-wrap:anywhere}
.docs-sidebar a:hover{color:var(--ink)}
.docs-sidebar a[aria-current="true"]{color:var(--ink)}
.docs-sidebar .sep{height:1px;background:var(--rule);margin:12px 0}

/* ⚠ 1000px ALATT (= --w-wide) az oldalsáv nem fér el a törzs mellé. Ekkor a rács
   EGY oszlop lesz, és az oldalsáv a törzs FÖLÉ kerül — ez a markup sorrendje is,
   tehát nem kell átrendezni. A sticky megszűnik: egy lap tetején ragadó
   tartalomjegyzék pont azt a fedést okozná, ami ezt a kört elindította. */
@media(max-width:1000px){
  .docs-layout{grid-template-columns:1fr}
  .docs-sidebar{position:static;top:auto;border-right:0;padding-right:0;
                border-bottom:1px solid var(--rule);padding-bottom:18px;margin-bottom:8px}
}
/* ⚠ 380px-en: a linkek FÜGGŐLEGESEK maradnak (display:block), a hosszú címke
   tördelődik (overflow-wrap:anywhere). Nincs vízszintes sáv, nincs rövidítés. */

footer{border-top:1px solid var(--rule);padding:56px 0 64px;margin-top:20px}
.fcta{font-size:var(--t-l);margin:0 0 16px;color:var(--ink)}
.fgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:28px;margin-top:48px}
.fgrid h4{font-size:var(--t-xs);font-weight:500;margin:0 0 12px;color:var(--ink)}
.fgrid a{display:block;font-size:var(--t-s);color:var(--ink-2);margin-bottom:8px;border:0}
@media(max-width:700px){.fgrid{grid-template-columns:1fr 1fr}}

.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}

/* ======================================================================
 * A KAPU, AMIT EZ A FÁJL MEGKÖVETEL — scripts/check-design-system.mjs
 *
 *  1. Tiltott hex bárhol:  #8E3A5D (szilva, kiesett)  ·  #A9690F (sötét okker,
 *     összeolvad a STOP-pal)  ·  #60a5fa (Tailwind-kék)  ·  #F4F1EA (Claude-krém)
 *  2. Tiltott tell:  "→" <a> vagy .btn szövegében  ·  " · " középpont törzsszövegben
 *     ·  "WORD — " spaced em dash mondatkezdő nagybetűs szó után
 *     ·  letter-spacing + text-transform:uppercase együtt egy elemen
 *  3. ⚠ A FŐSZABÁLY:  minden .pill tartalma ILLESZKEDJEN egy mező-érték alakra
 *     (NAGYBETŰS_ALÁHÚZÁSOS, "null", vagy egy ismert enum-érték).
 *     Ha egy .pill prózát tartalmaz, a kapu piros.
 *  4. Nulla külső hoszt:  se <link href="http...">, se <script src="http...">,
 *     se url(http...) a CSS-ben.
 *  5. HÁROM ESZKÖZ, HÁROM JELENTÉS — egy eszköz nem mondhat két dolgot:
 *       SZÍN        az érték a SAJÁT tengelyén áll
 *       ÜRES KERET  ugyanaz a család, más fokozat   -> .pill--hollow CSAK .p-mon mellett
 *       TELT TINTA  nincs a tengelyen, a rendszer kimond egy hiányt -> .p-null, .p-nr
 *     ⚠ A korábbi szabály ('hollow = .p-mon VAGY .p-nr') azon az általánosításon állt,
 *     hogy 'az érték nem a saját skáláján áll'. Az a WITH_MONITORING-ra HAMIS: az
 *     ott van a skáláján, egy a négy kimenetből. Egy szabály, ami az egyik esetére
 *     hamis, nem szabály. A NOT_RUN ezért TELT alap-tinta lett, mint a null.
 * ====================================================================== */
