/**
 * agenic Komponenten-CSS — Reiter (Atom).
 *
 * Quelle: Figma `tab-item`, Set 853:2836 (Seite 0.5), 16 Varianten,
 * gemessen 19.08.2026. Theme light·dark × Size M·L × Status
 * aktiv·default·hover·disabled. Status ist CSS-State, nie Control.
 * Kontrakt: KONTRAKT-ag-tabs-bar-pill-19-08.md, §5 / Entscheidung E2.
 *
 * Gemessene Werte der Quelle:
 *   Size M   Polster 8/0/8/8 (spacing/s), Text 16/21, letterSpacing -2 %
 *            default Copy/M (Inter Light) · aktiv Headline/S (Inter Medium)
 *            Grundlinie 1 px Border · aktiv 2 px Fusion-Verlauf
 *   Size L   Polster 8/12/12/12 (spacing/s, spacing/ms), Text 24/32
 *            default Copy/L · aktiv Headline/M
 *
 * Zwei dokumentierte Abweichungen von der Quelle (Kontrakt A2, Finding F9):
 *   1. Im dunklen Theme kennt die Quelle KEINEN Gewichtswechsel — aktiv, hover
 *      und default laufen dort alle in Inter Light und unterscheiden sich nur
 *      durch die Textfarbe. Das verstoesst gegen die CD-Grundregel „Farbe ist nie
 *      der einzige Bedeutungstraeger". Der Gewichtswechsel gilt hier in BEIDEN
 *      Themes — so haelt es `ag_tabs` seit 3.19.0 bereits.
 *   2. Die dunklen Varianten binden ihre Grundlinie an `Border` (#18181e), was
 *      auf dunkler Flaeche unsichtbar waere. Hier laeuft sie ueber
 *      --color-border-inverse. Beides ist Rueckspielpunkt nach 0.5, nicht
 *      eigenmaechtige Aenderung der Quelle.
 *
 * Das Polster rechts ist in der Quelle 0 bei 8 links (Finding F3). Es wird
 * unveraendert uebernommen — die Asymmetrie ist gemessen, nicht geraten.
 */

.ag-tab-item,
.ag-tab-item * { box-sizing: border-box; }

/* ── Grundzustand (Theme=light, Size=M, Status=default) ──────────────────── */

/* Doppelklasse zwingend (0,2,0). Der Elementor-Kit stylt JEDEN `button` mit
   `.elementor-kit-7 button` — Spezifitaet (0,1,1) — und setzt dabei
   background-image (Fusion-Verlauf), background-color, border-radius 999,
   font-family, font-size und color. Das Atom rendert ohne Link ein `<button>`
   und verlor deshalb gegen den Kit: gemessen am 19.08.2026 auf
   /brandhub/atome/ waren alle vier Reiter verlaufsgefuellte Pillen mit
   Radius 999 statt flacher Text mit Grundlinie.
   In `ag_tabs` fiel es nicht auf, weil dort eine Regel mit (0,2,0) davorstand.
   Gleiche Fehlerklasse wie die Kit-Linkfarbe im Skill — nur ueber `button`
   statt ueber `a`. Kein !important. */
.ag-tab-item.ag-tab-item {
    /* L3 — Komponenten-Variablen, Defaults aus L2. Konsumenten ueberschreiben
       ausschliesslich hier, nie die Regeln darunter. */
    --ag-tab-item-fg:              var(--color-text-standard);   /* Figma Text/standard */
    --ag-tab-item-fg-aktiv:        var(--color-text-standard);   /* Quelle: identisch mit default */
    --ag-tab-item-fg-disabled:     var(--color-text-disabled);   /* Figma Text/disabled */
    --ag-tab-item-linie:           var(--color-border);          /* Figma Border */
    --ag-tab-item-linie-disabled:  var(--color-border-disabled);
    --ag-tab-item-linie-aktiv:     var(--gradient-fusion-basic);
    --ag-tab-item-linie-staerke:       var(--border-width-xs);   /* 1 */
    --ag-tab-item-linie-staerke-aktiv: var(--border-width-s);    /* 2 */
    /* Deckkraft der Grundlinie je Zustand. Die Quelle kennt nur „sichtbar";
       die Stufen existieren, damit `ag_tabs` seine seit 3.19.0 freigegebene
       Fusion-Mechanik (Linie ruht schwach, aktiver Abschnitt blendet ein)
       ueber L3 einstellen kann, statt sie ein zweites Mal auszuschreiben. */
    --ag-tab-item-linie-deckkraft:       1;
    --ag-tab-item-linie-deckkraft-hover: 1;
    --ag-tab-item-linie-deckkraft-aktiv: 1;
    --ag-tab-item-pad-block-start:  var(--spacing-s);            /* 8 */
    --ag-tab-item-pad-block-end:    var(--spacing-s);            /* 8 */
    --ag-tab-item-pad-inline-start: var(--spacing-s);            /* 8 */
    --ag-tab-item-pad-inline-end:   0px;                         /* Figma: 0 — F3 */
    --ag-tab-item-fs:  var(--fs-300);                            /* 16 */
    --ag-tab-item-lh:  calc(21 / 16);
    --ag-tab-item-fw:        var(--fw-light);                    /* Copy/M */
    --ag-tab-item-fw-aktiv:  var(--fw-medium);                   /* Headline/S */
    --ag-tab-item-fokus-flaeche: rgba(128, 128, 128, .08);

    position: relative;                 /* traegt den eigenen Linienabschnitt */
    display: inline-flex;
    align-items: center;
    appearance: none;
    background: none;
    border: 0;
    border-radius: 0;                   /* Kit-Button-Radius neutralisieren */
    box-shadow: none;
    margin: 0;
    padding: var(--ag-tab-item-pad-block-start) var(--ag-tab-item-pad-inline-end)
             var(--ag-tab-item-pad-block-end)   var(--ag-tab-item-pad-inline-start);
    text-align: left;
    text-decoration: none;
    cursor: pointer;
    font-family: var(--font-sans);
    font-size: var(--ag-tab-item-fs);
    line-height: var(--ag-tab-item-lh);
    font-weight: var(--ag-tab-item-fw);
    letter-spacing: -0.02em;
}

/* Farbe getrennt und auf Doppelklasse (0,2,0): Elementor-Kit- und Theme-Regeln
   fuer Links haben Spezifitaet (0,1,1) und schlagen jede Einzelklasse, sobald
   der Reiter ein <a> ist. Gemessen 19.08.2026 im Render-Abgleich: mit
   Einzelklasse faerbte die simulierte Kit-Regel alle passiven Reiter rot,
   waehrend der aktive (0,2,0) korrekt blieb. `:visited` gehoert dazu — sonst
   kippt die Farbe erst nach dem ersten Besuch. Kein !important. */
.ag-tab-item.ag-tab-item,
.ag-tab-item.ag-tab-item:visited,
.ag-tab-item.ag-tab-item:link {
    color: var(--ag-tab-item-fg);
}

/* Der Text bricht innerhalb eines Reiters nie um — Regel des Quellregals
   („Beschriftungen kurz halten, die Pillenform vertraegt keine Umbrueche").
   Der Umbruch der LEISTE ist davon unberuehrt und Sache des Konsumenten. */
.ag-tab-item__label {
    display: block;
    white-space: nowrap;
}

/* ── Grundlinie ──────────────────────────────────────────────────────────── */

.ag-tab-item::after {
    content: '';
    position: absolute;
    inset-inline: 0;
    bottom: 0;
    height: var(--ag-tab-item-linie-staerke);
    background: var(--ag-tab-item-linie);
    opacity: var(--ag-tab-item-linie-deckkraft);
    pointer-events: none;
    transition:
        height     var(--motion-duration-xs) var(--motion-ease-standard),
        opacity    var(--motion-duration-xs) var(--motion-ease-standard),
        background var(--motion-duration-xs) var(--motion-ease-standard);
}

/* `tabs-bar--pill` haelt die Reiter linienlos — gemessener Instanz-Override
   in allen sechs Reitern von 2750:42132. */
.ag-tab-item--linie-aus::after { display: none; }

/* ── Size L ──────────────────────────────────────────────────────────────── */

/* Quelle Size L: Text 24/32, Polster 8/12/12/12 — oben 8, unten 12,
   asymmetrisch. Ergibt Reiterhoehe 52 (gemessen an 1665:32756). */
.ag-tab-item--l {
    --ag-tab-item-fs: var(--fs-600);                             /* 24 */
    --ag-tab-item-lh: calc(32 / 24);
    --ag-tab-item-pad-block-end:    var(--spacing-ms);           /* 12 */
    --ag-tab-item-pad-inline-start: var(--spacing-ms);           /* 12 */
    --ag-tab-item-pad-inline-end:   var(--spacing-ms);           /* 12 */
}

/* ── Status: hover ───────────────────────────────────────────────────────── */

.ag-tab-item.ag-tab-item:hover:not(.is-disabled):not([disabled]),
.ag-tab-item.ag-tab-item:focus-visible {
    color: var(--ag-tab-item-fg-aktiv);
}
.ag-tab-item:hover:not(.is-disabled):not([disabled])::after {
    height: var(--ag-tab-item-linie-staerke-aktiv);              /* 1 -> 2 px */
    opacity: var(--ag-tab-item-linie-deckkraft-hover);
}

/* ── Status: aktiv ───────────────────────────────────────────────────────── */

.ag-tab-item.ag-tab-item.is-aktiv,
.ag-tab-item.ag-tab-item[aria-selected="true"],
.ag-tab-item.ag-tab-item[aria-current="true"] {
    color: var(--ag-tab-item-fg-aktiv);
    font-weight: var(--ag-tab-item-fw-aktiv);                    /* A2: in BEIDEN Themes */
}

.ag-tab-item.is-aktiv::after,
.ag-tab-item[aria-selected="true"]::after,
.ag-tab-item[aria-current="true"]::after {
    height: var(--ag-tab-item-linie-staerke-aktiv);
    background: var(--ag-tab-item-linie-aktiv);
    opacity: var(--ag-tab-item-linie-deckkraft-aktiv);
}

/* ── Status: disabled ────────────────────────────────────────────────────── */

.ag-tab-item.ag-tab-item.is-disabled,
.ag-tab-item.ag-tab-item[disabled],
.ag-tab-item.ag-tab-item[aria-disabled="true"] {
    color: var(--ag-tab-item-fg-disabled);
    cursor: not-allowed;
    font-weight: var(--ag-tab-item-fw);
}
.ag-tab-item.is-disabled::after,
.ag-tab-item[disabled]::after,
.ag-tab-item[aria-disabled="true"]::after {
    height: var(--ag-tab-item-linie-staerke);
    background: var(--ag-tab-item-linie-disabled);
    opacity: var(--ag-tab-item-linie-deckkraft);
}

/* ── Fokus ───────────────────────────────────────────────────────────────── */

/* Flaeche statt harter outline: eine 2-px-Linie allein erfuellt WCAG 2.4.11
   nicht sicher, und im linienlosen Pill-Zustand gibt es sie gar nicht.
   Gleiche Mechanik wie ag_tabs seit 3.19.0. */
/* Doppelklasse aus demselben Grund wie am Grundblock: der Kit setzt
   background auf jedem `button` mit (0,1,1). */
.ag-tab-item.ag-tab-item:focus-visible {
    outline: none;
    background: var(--ag-tab-item-fokus-flaeche);
}
.ag-tab-item:focus-visible::after {
    height: var(--ag-tab-item-linie-staerke-aktiv);
    background: var(--ag-tab-item-linie-aktiv);
    opacity: var(--ag-tab-item-linie-deckkraft-aktiv);
}
/* Im linienlosen Zustand traegt der Fokus einen Ring, sonst waere er unsichtbar. */
.ag-tab-item--linie-aus:focus-visible {
    outline: var(--border-width-s) solid currentColor;
    outline-offset: calc(var(--border-width-s) * -1);
    border-radius: var(--radius-xs);
}

/* ── Theme dark ──────────────────────────────────────────────────────────── */

.ag-tab-item--dark,
.ag-theme-dark .ag-tab-item {
    --ag-tab-item-fg:          var(--color-text-grey-inverse);   /* Figma Text/grey--inverse */
    --ag-tab-item-fg-aktiv:    var(--color-text-inverse-soft);   /* Figma Text/inverse #ebf1f2 */
    --ag-tab-item-fg-disabled: var(--color-text-grey-inverse);   /* Quelle: identisch mit default — F9 */
    --ag-tab-item-linie:       var(--color-border-inverse);      /* A2/2: Quelle bindet Border — unsichtbar */
    --ag-tab-item-linie-disabled: var(--color-border-inverse);
    --ag-tab-item-fokus-flaeche: rgba(235, 241, 242, .12);
}

/* ── Huelle des Einzel-Widgets `ag_tab_item` ─────────────────────────────── */

/* Nur fuer den Atom-Solobetrieb im Editor. Konsumenten (ag_tabs,
   ag_tabs_bar_pill) setzen den Reiter direkt in ihre Leiste, ohne diese Huelle. */
.ag-tab-item-wrap {
    --ag-tab-item-wrap-space-before: 0px;
    --ag-tab-item-wrap-space-after:  0px;

    display: flex;
    margin-block-start: var(--ag-tab-item-wrap-space-before);
    margin-block-end:   var(--ag-tab-item-wrap-space-after);
}

/* ── Bewegung aus ────────────────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
    .ag-tab-item::after { transition: none; }
}

/* ── Innenabstand steuerbar (3.88.0) ─────────────────────────────────────
   Entscheidung Vincent, 24.08.2026: Der Innenabstand soll bei jedem Widget
   am Control liegen, nicht nur der Außenabstand. Dieses Widget führt im
   Design kein Blockpolster — die Vorgabe ist deshalb 0, und die Regel wird
   erst wirksam, wenn jemand am Control etwas wählt.
   Steht bewusst am Dateiende: gleiche Spezifität wie die Regeln oben, die
   spätere gewinnt. Nur oben und unten; seitlich begrenzt die Content-Breite. */
.ag-tab-item-wrap {
    padding-block: var(--ag-tab-item-wrap-pad-oben, 0px) var(--ag-tab-item-wrap-pad-unten, 0px);
}
