@import '_content/Microsoft.FluentUI.AspNetCore.Components/Microsoft.FluentUI.AspNetCore.Components.lcdo7z9xd2.bundle.scp.css';

/* /Components/Layout/MainLayout.razor.rz.scp.css */
.page[b-5ubp3cp96t] {
    position: relative;
    display: flex;
    flex-direction: column;
    /*
        Rám je vysoký aspoň ako výrez. Na širokej obrazovke to drží `main { min-height: 100dvh }`,
        na telefóne nedržalo nič — a lepiaca lišta úkonov s `margin-top: auto` sa má o čo oprieť
        až vtedy, keď je stĺpec vyšší než jeho obsah (na `/plany/novy` mal `main` pri 375 px
        590 px z 812 px výrezu, takže pod lištou ostalo 165 px holého podkladu; položka #86).
    */
    min-height: 100dvh;
}

main[b-5ubp3cp96t] {
    flex: 1;
    /*
        Bez min-width: 0 sa flex položka nezmenší pod šírku svojho obsahu — široká tabuľka registra
        by potom roztlačila celú stránku do vodorovného posunu namiesto toho, aby sa posúvala len
        vo svojom obale (.gate-table-wrap). WCAG 2.1 AA, 1.4.10 Reflow.
    */
    min-width: 0;
    /*
        Stĺpec: lišta, cesta, obsah — a pod nimi miesto pre lepiacu lištu úkonov formulára
        (`margin-top: auto`). Bez stĺpca by taká lišta na krátkej obrazovke visela hneď pod
        obsahom namiesto pri spodnej hrane okna.
    */
    display: flex;
    flex-direction: column;
}

.sidebar[b-5ubp3cp96t] {
    background-color: var(--gate-nav-bg);
    /*
        Popredie musí byť na paneli deklarované: obsah v ňom (podtitul značky, ikony railu)
        by inak zdedil farbu textu STRÁNKY, ktorá je vo svetlej schéme tmavá — teda tmavé
        písmo na tmavom paneli. Odtiaľ sa odvodzujú aj polopriehľadné odtiene položiek.
    */
    color: var(--gate-nav-fg);
    /*
        Bočný panel je tmavý v OBOCH schémach, ale región dedí `color-scheme: light dark`
        z koreňa — vo svetlej schéme by naň Windows nakreslil svetlý klasický posuvník
        (a svetlé natívne prvky vôbec). Deklarácia tu hovorí prehliadaču pravdu o tejto
        ploche, takže posuvník navigácie kreslí tmavý NATÍVNE — žiadne custom skinovanie.
    */
    color-scheme: dark;
}

/* ── horná lišta ─────────────────────────────────────────────────────────── */

/*
    Lišta je pokračovaním bočného panela, nie prvým pásom obsahu: rovnaká tmavá plocha, žiadna
    linka medzi nimi. Vďaka tomu má rám aplikácie jeden súvislý tvar do „L" a obsah pod ním
    začína čistou plochou. Predtým to bol svetlý pás s linkou, teda tretia vodorovná deliaca
    čiara nad každou obrazovkou.
*/
/*
    Výšku nesie TOKEN, nie súčet odsadení. Prekryvy rámu (paleta Ctrl+K) sa od spodnej hrany
    lišty odrážajú cez `--gate-nav-bar-h`, takže musí platiť — s 12 px odsadením zhora aj zdola
    ju najvyšší prvok radu (odhlásenie) natiahol na 56,59 px a paleta potom začínala o zlomok
    pixela nad ňou (položka #124). Zvislé odsadenie preto ustupuje minimu: rad je zarovnaný na
    stred, takže sa vzhľadom nič nemení, len sa výška prestane počítať z obsahu.
*/
.top-row[b-5ubp3cp96t] {
    background-color: var(--gate-nav-bg);
    color: var(--gate-nav-fg);
    color-scheme: dark;
    display: flex;
    align-items: center;
    gap: 1rem;
    min-height: var(--gate-nav-bar-h);
    padding: 0 1rem;
}

/*
    PREPÍNAČ ŠÍRKY BOČNÉHO PANELA. Je to natívny <input type="checkbox"> (stav drží prehliadač,
    nie server — viď MainLayout.razor), takže ikonu nesie pozadie prvku: do <input> sa potomok
    vložiť nedá. Rovnaká technika ako prepínač navigácie na telefóne.

    Farba ťahov je zapísaná priamo v dátovom URI (`%23f3f2f2` = --gate-nav-fg): pozadie sa
    z premennej poskladať nedá. Je to jediné miesto v ráme, kde farba nie je token — preto je
    hodnota tá istá, akú má panel, a mení sa spolu s ním.

    Rozmer 32 × 32 je nad hranicou 24 × 24 px pre veľkosť cieľa (WCAG 2.2 AA, 2.5.8); na
    telefóne je prepínač skrytý, tam sa panel ovláda prekryvom.
*/
.gate-rail-toggle[b-5ubp3cp96t] {
    appearance: none;
    flex: 0 0 auto;
    width: 32px;
    height: 32px;
    margin: 0;
    border: 1px solid var(--gate-nav-border);
    border-radius: 0;
    background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3cpath fill='none' stroke='%23f3f2f2' stroke-width='2' stroke-linecap='round' d='M3 6h18M3 12h18M3 18h18'/%3e%3c/svg%3e") no-repeat center / 16px;
    cursor: pointer;
    touch-action: manipulation;
    transition: border-color 120ms ease;
}

.gate-rail-toggle:hover[b-5ubp3cp96t] {
    border-color: var(--gate-accent);
}

.gate-rail-toggle:focus-visible[b-5ubp3cp96t] {
    outline: 2px solid var(--gate-accent);
    outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
    .gate-rail-toggle[b-5ubp3cp96t] {
        transition: none;
    }
}

/* Ľavý prepínač a pravý zhluk sa nesmú stretnúť v strede lišty. */
.gate-topbar__spacer[b-5ubp3cp96t] {
    flex: 1 1 auto;
    min-width: 0;
}

/* Monogram a meno držia spolu; skracuje sa len meno, monogram si veľkosť ponechá. */
.gate-topbar__identity[b-5ubp3cp96t] {
    display: flex;
    align-items: center;
    gap: .5rem;
    min-width: 0;
}

/*
    Monogram prihláseného. Je to JEDINÁ akcentová plocha v lište — teda kotva, ku ktorej sa oko
    vracia pri otázke „ako kto som prihlásený". Výplň nesie text, preto `--gate-accent-fill`
    (5,0 : 1 so svetlým písmom), nie čistý akcent.
*/
.gate-topbar__avatar[b-5ubp3cp96t] {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    background-color: var(--gate-accent-fill);
    color: #f3f2f2;
    font-family: var(--gate-font-heading);
    font-size: 12px;
    font-weight: 800;
    /* Bez pevného riadkovania „pláva" monogram vo štvorci o pár pixelov vyššie. */
    line-height: 1;
}

/*
    Meno prihláseného sa skracuje: dlhé meno z Entra ID (meno + priezvisko + útvar) by inak
    roztlačilo lištu a s ňou celú stránku do vodorovného posunu. Tlmené je priehľadnosťou, nie
    vlastnou farbou — plocha lišty je tmavá v oboch schémach, takže by sa token obsahu nehodil
    (70 % svetlej na tmavej lište = 8,4 : 1).
*/
.gate-topbar__user[b-5ubp3cp96t] {
    font-size: 12px;
    opacity: .7;
    max-width: 40ch;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/*
    Odchod z aplikácie. Obrys mu dáva váhu úkonu bez toho, aby súperil s akciou obrazovky —
    plná výplň v lište by bola druhý akcent nad každou stránkou. Nadpisové písmo je zhodné
    s tlačidlami v obsahu, takže sa lišta a obsah nerozídu v hlase.
*/
.gate-topbar__signout[b-5ubp3cp96t] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex: 0 0 auto;
    padding: 6px 9px;
    border: 1px solid var(--gate-nav-border);
    color: var(--gate-nav-fg);
    font-family: var(--gate-font-heading);
    font-weight: 800;
    font-size: 12px;
    text-decoration: none;
    white-space: nowrap;
    touch-action: manipulation;
    transition: border-color 120ms ease, color 120ms ease;
}

.gate-topbar__signout-icon[b-5ubp3cp96t] {
    flex: 0 0 auto;
    display: block;
}

.gate-topbar__signout:hover[b-5ubp3cp96t] {
    border-color: var(--gate-accent);
    color: var(--gate-accent-400);
}

.gate-topbar__signout:focus-visible[b-5ubp3cp96t] {
    outline: 2px solid var(--gate-accent);
    outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
    .gate-topbar__signout[b-5ubp3cp96t] {
        transition: none;
    }
}

/* ── úzka obrazovka: horná lišta aplikácie ───────────────────────────────── */

@media (max-width: 640.98px) {
    /*
        Bočný panel sa na mobile stáva hornou lištou: značka vľavo, prepínač navigácie vpravo
        (obsah lišty kreslí NavMenu). `sticky`, nie `fixed` — lišta si v toku ponechá miesto,
        takže obsah pod ňou nikdy nezmizne pod prekrytím a nemusí sa dorovnávať odsadením.
        Zárez displeja (notch) rieši bezpečná zóna; podklad lišty siaha až pod neho.
    */
    .sidebar[b-5ubp3cp96t] {
        position: sticky;
        top: 0;
        z-index: 20;
        display: flex;
        align-items: center;
        gap: .5rem;
        padding-top: env(safe-area-inset-top, 0px);
        padding-inline-end: .5rem;
        border-bottom: 1px solid var(--gate-nav-border);
    }

    /*
        Lišta rámu je na telefóne DRUHÝ tmavý pás pod app-barom: hľadanie si berie zvyšok
        riadku, identita a odchod sa zmestia vedľa neho. Nie je lepkavá — dva lepkavé pásy nad
        obsahom by na 812 px vysokom displeji zjedli desatinu okna.

        Pás musí byť TENKÝ. Predtým mal 74 px (odmerané) a spolu s 56 px app-barom si dva pásy
        rámu vzali 130 px z 812 px displeja skôr, než začala navigačná cesta — teda šestinu okna
        na chróm (nález Fázy A, potvrdený sweepom 2026-08-18). Výšku určuje najvyšší prvok radu,
        ktorým je odhlásenie (44 px dotykový cieľ), takže odsadenie pásu je len 2 px a celok
        drží 48 px.
    */
    .top-row[b-5ubp3cp96t] {
        gap: .5rem;
        padding: 2px 1rem;
        min-height: 48px;
    }

    /*
        ODHLÁSENIE JE NA TELEFÓNE IKONA. Text „Odhlásiť sa" si v 375 px rade vzal 108 px, teda
        viac než hľadanie — a je to úkon, ktorý sa robí raz za deň, nie prvok, ktorý má vážiť
        najviac v ráme. Slovo sa NEODSTRAŇUJE, len sa skryje pre oko (tá istá technika ako
        `.gate-visually-hidden`): ostáva prístupným menom odkazu pre čítačku obrazovky a ostáva
        aj v DOM-e, kde ho čaká komponentový test `MainLayoutSignOutTests`.

        `box-sizing` je nutné: `<a>` počíta `min-height` do obsahovej krabice, takže 44 px
        + odsadenie + obruba dávalo 58 px a práve tie rozťahovali celý pás.
    */
    .gate-topbar__signout > span[b-5ubp3cp96t] {
        position: absolute;
        width: 1px;
        height: 1px;
        margin: -1px;
        padding: 0;
        overflow: hidden;
        clip: rect(0 0 0 0);
        white-space: nowrap;
        border: 0;
    }

    /* Zbaliť sa dá len panel, ktorý stojí vedľa obsahu — na telefóne je z neho lišta. */
    .gate-rail-toggle[b-5ubp3cp96t] {
        display: none;
    }

    .gate-topbar__spacer[b-5ubp3cp96t] {
        display: none;
    }

    /*
        Meno sa na telefóne skryje — monogram povie to isté a e-mail z Entra ID by si vzal
        celý riadok. Dotykové ciele (44 px) drží odsadenie prvkov v lište.
    */
    .gate-topbar__user[b-5ubp3cp96t] {
        display: none;
    }

    /* Štvorec 44 × 44 px s ikonou (WCAG 2.2 AA, 2.5.8) — bez slova sa odsadenie mení na šírku. */
    .gate-topbar__signout[b-5ubp3cp96t] {
        box-sizing: border-box;
        justify-content: center;
        width: 2.75rem;
        min-height: 2.75rem;
        padding: 0;
    }
}

@media (min-width: 641px) {
    .page[b-5ubp3cp96t] {
        flex-direction: row;
    }

    .sidebar[b-5ubp3cp96t] {
        width: 270px;
        flex: 0 0 auto;
        /*
            `box-sizing` NIE JE kozmetika. Panel má výšku presne výrezu (100dvh) a k tomu 24 px
            odsadenia zdola — v predvolenom `content-box` sa to spočíta na 824 px rámček v 800 px
            okne, takže KAŽDÁ obrazovka mala zvislý posuvník pre 24 px prázdna, aj rozcestník,
            ktorého obsah končí v polovici stránky. A pretože je panel `sticky` a vyšší než
            výrez, pri tomto posune sa hýbal s obsahom: blok značky podliezol pod lepiacu lištu
            a nápis „ProcureSwift Gate" sa prerezal napoly (kontrola 2026-08-19, položka #6).
        */
        box-sizing: border-box;
        height: 100dvh;
        position: sticky;
        top: 0;
        /*
            Žiadna linka na pravej hrane: panel a plocha obsahu majú dosť odlišný jas na to,
            aby ich oko rozoznalo, a linka by bola tretia zvislá hrana v jednom pohľade.
        */
        padding-bottom: 24px;
        /*
            Stĺpec: pod hlavičkou s názvom si zvyšok výšky vezme posúvateľná navigácia
            (.nav-scrollable v NavMenu.razor.css). Bez toho by sa jej výška musela dopočítať
            konštantou a pri zmene hlavičky by sa rozišla.
        */
        display: flex;
        flex-direction: column;
        overflow-y: auto;
    }

    main[b-5ubp3cp96t] {
        min-height: 100dvh;
    }

    /*
        LIŠTA JE NAD OBSAHOM, VŽDY (R28, položka #81). `z-index: 1` bola remíza s pripnutou bunkou
        stĺpca úkonov (`.gate-table__actions`, tiež 1) a pri zhode rozhoduje poradie v strome —
        teda vyhral obsah: po pridaní riadku do opakovateľnej tabuľky sa svetlý obdĺžnik bunky
        vykreslil NA tmavej hlavičke, „Odhlásiť" zmizlo úplne a v tmavej schéme sa na jeho mieste
        objavilo funkčné tlačidlo „Odstrániť" — nezvratný úkon na mieste odhlásenia. Dvadsiatka
        je nad všetkým, čo kreslí stránka (lepiaca lišta úkonov má 2), a pod prekryvmi rámu
        (skratka na obsah 900, dialóg 999, núdzová lišta 1000).
    */
    .top-row[b-5ubp3cp96t] {
        position: sticky;
        top: 0;
        z-index: 20;
        padding-inline: 24px;
    }

    /* To isté pre bočný panel — na telefóne 20 už má, tu ju dostáva aj lepkavý panel na desktope. */
    .sidebar[b-5ubp3cp96t] {
        z-index: 20;
    }

    .content[b-5ubp3cp96t] {
        padding: 24px 24px 0;
    }
}

/*
    Široký monitor (QHD a viac): obsah dostane od bočného panela väčší nádych. Odsadenie 24 px
    je stavané na laptop — na 2560 px pôsobí obsah prilepený k panelu a prázdna plocha vpravo
    ako nedokončená kompozícia. Posúva sa LEN odsadenie, nie šírka panela ani stropy obsahu:
    dátové registre majú plnú šírku využívať (hustota je vlastnosť), stropované stĺpce
    (formuláre, rozcestník) si nádych berú z tohto pravidla.
*/
@media (min-width: 1800px) {
    .top-row[b-5ubp3cp96t] {
        padding-inline: 3.5rem;
    }

    .content[b-5ubp3cp96t] {
        padding-inline: 3.5rem;
    }
}

#blazor-error-ui[b-5ubp3cp96t] {
    /*
        Lišta zostáva svetlá v oboch schémach (`color-scheme: light only`), preto má vlastné,
        PEVNÉ farby z rodiny --gate-warning namiesto tokenov: v tmavej schéme by sa text prepol
        na svetlý a na svetlom podklade by zmizol — a to je práve tá chvíľa, keď ho používateľ
        potrebuje prečítať. Kontrast: text #1a1a1a na #fff4e5 = 16 : 1, odkaz #0b4f8a = 7,7 : 1.
    */
    color-scheme: light only;
    color: #1a1a1a;
    background: #fff4e5;
    border-top: 1px solid #e6c68a;
    bottom: 0;
    /* Jediný tieň mimo prekryvov — lišta musí byť čitateľne oddelená od obsahu pod ňou. */
    box-shadow: 0 -2px 6px rgba(0, 0, 0, 0.12);
    box-sizing: border-box;
    display: none;
    left: 0;
    /* Vpravo miesto pre 44px tlačidlo zatvorenia, aby text nešiel pod neho. */
    padding: 0.625rem 3rem 0.625rem 1rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .reload[b-5ubp3cp96t] {
        color: #0b4f8a;
    }

    #blazor-error-ui .dismiss[b-5ubp3cp96t] {
        cursor: pointer;
        position: absolute;
        /* Dotykový cieľ 44 × 44 px (WCAG 2.2 AA, 2.5.8) — znak „×" sám o sebe má sotva 12 px. */
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 2.75rem;
        height: 2.75rem;
        right: 0.25rem;
        top: 50%;
        translate: 0 -50%;
        font-size: 1.125rem;
        line-height: 1;
        touch-action: manipulation;
    }
/* /Components/Layout/NavMenu.razor.rz.scp.css */
/* ── značka ──────────────────────────────────────────────────────────────── */

.top-row[b-ct2dje5lsj] {
    /* Podklad presvitá z bočného panela — dve rôzne tmavé plochy nad sebou by rám rozbili. */
    background-color: transparent;
    padding: 16px 16px 24px;
    flex: 0 0 auto;
}

.gate-brand[b-ct2dje5lsj] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

/*
    Lockup značky: akcentový štvorec + názov. Štvorec má pevných 30 px a medzeru 10 px, takže
    podtitul pod ním sa odsadzuje o tú istú vzdialenosť (40 px) a názov aj podtitul stoja na
    jednej zvislej osi. `align-self` drží klikateľnú plochu na šírke obsahu — inak by odkaz
    „domov" zaberal celú šírku panela a zaostrenie by orámovalo prázdno.
*/
.navbar-brand[b-ct2dje5lsj] {
    display: flex;
    align-items: flex-start;
    align-self: flex-start;
    gap: 10px;
    min-width: 0;
    color: var(--gate-nav-fg);
    font-family: var(--gate-font-heading);
    font-size: 17px;
    font-weight: 800;
    line-height: 1.15;
    letter-spacing: -0.01em;
    text-decoration: none;
    /* Bez toho čaká dotykový prehliadač na dvojklik a odkaz reaguje s oneskorením ~300 ms. */
    touch-action: manipulation;
}

/* Zaostrenie musí byť vidieť aj na značke (WCAG 2.1 AA, 2.4.7). */
.navbar-brand:focus-visible[b-ct2dje5lsj] {
    outline: 2px solid var(--gate-nav-marker);
    outline-offset: 2px;
}

/*
    Akcentový štvorec so značkou. Je to JEDINÁ akcentová plocha bočného panela — kotva, podľa
    ktorej sa oko zorientuje na obrazovke plnej sivej. Kresba je len ťah (`currentColor`), takže
    nesie farbu popredia panela; nenesie text, preto stačí non-text kontrast (akcent na tmavej
    ploche 4,4 : 1).
*/
.gate-brand__mark[b-ct2dje5lsj] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    background: var(--gate-accent);
    color: var(--gate-nav-fg);
}

.gate-brand__subtitle[b-ct2dje5lsj] {
    display: block;
    /* 30 px štvorec + 10 px medzera — podtitul začína presne pod názvom. */
    margin-inline-start: 40px;
    margin-top: 2px;
    font-size: 12px;
    opacity: .6;
}

/* ── prepínač navigácie (úzka obrazovka) ─────────────────────────────────── */

/*
    Prepínač je natívny <input type="checkbox">, nie tlačidlo: stav navigácie tak drží samotný
    prehliadač (`:checked ~ .nav-scrollable`) — bez JavaScriptu, teda aj skôr, než sa nadviaže
    okruh Blazor Serveru. Ikonu nesie pozadie prvku, lebo do <input> sa potomok vložiť nedá;
    ťahy majú farbu `--gate-nav-fg` (14,5 : 1 na podklade lišty).
*/
.navbar-toggler[b-ct2dje5lsj] {
    appearance: none;
    /* Dotykový cieľ 44 × 44 px (WCAG 2.2 AA, 2.5.8 Target Size). */
    width: 2.75rem;
    height: 2.75rem;
    flex: 0 0 auto;
    margin: 0;
    border: 0;
    border-radius: 0;
    background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3cpath fill='none' stroke='%23f3f2f2' stroke-width='2' stroke-linecap='round' d='M3 6h18M3 12h18M3 18h18'/%3e%3c/svg%3e") no-repeat center / 1.5rem;
    cursor: pointer;
    touch-action: manipulation;
    transition: background-color 120ms ease;
}

.navbar-toggler:hover[b-ct2dje5lsj] {
    background-color: var(--gate-nav-hover);
}

/*
    Otvorený stav nesie tvar ikony (krížik) aj plocha pod ňou — nie iba farba
    (EN 301 549 / WCAG 2.1 AA, 1.4.1 Use of Colour).
*/
.navbar-toggler:checked[b-ct2dje5lsj] {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3cpath fill='none' stroke='%23f3f2f2' stroke-width='2' stroke-linecap='round' d='M6 6L18 18M18 6L6 18'/%3e%3c/svg%3e");
    background-color: var(--gate-nav-active);
}

.navbar-toggler:focus-visible[b-ct2dje5lsj] {
    outline: 2px solid var(--gate-nav-marker);
    outline-offset: -2px;
}

/* ── navigácia ───────────────────────────────────────────────────────────── */

.nav-scrollable[b-ct2dje5lsj] {
    display: none;
    padding-block: 0 1.5rem;
    /*
        Tenký NATÍVNY posuvník (štandardná vlastnosť, žiadne ::-webkit- kreslenie). Klasický
        široký pruh Windowsu by v úzkom stĺpci navigácie pôsobil ako ďalšia zvislá stena;
        farbu mu dáva `color-scheme: dark` na .sidebar (MainLayout.razor.css).
    */
    scrollbar-width: thin;
}

.navbar-toggler:checked ~ .nav-scrollable[b-ct2dje5lsj] {
    display: block;
}

/*
    Skupina nemá vlastné vodorovné odsadenie: plocha zvýraznenej položky siaha od hrany po hranu
    panela (predloha). Odsadenie textu nesie samotný odkaz, takže sa nesčítava a značka aktívnej
    položky môže sedieť presne na ľavej hrane.
*/
.gate-nav__group[b-ct2dje5lsj] {
    padding: 0;
}

/*
    Popis skupiny. Stojí na osi koreňových odkazov (16 px); položky rozbalenej skupiny sú pod ním
    odsadené o stupeň (viď nižšie). VERZÁLKY sa zámerne nepoužívajú (čítačka obrazovky ich
    hláskuje po písmenách):
    skupinu odlíši veľkosť, tlmená farba a rozpalta — tak to má aj predloha.

    Popis je zároveň ovládač zbalenia (`<summary>`), preto sa správa ako odkaz: kurzor ruky,
    plocha pod myšou a viditeľné zaostrenie. Natívny trojuholník sa odstraňuje dvojmo — moderné
    prehliadače rešpektujú `list-style`, staršie WebKit/Blink len `::-webkit-details-marker` —
    stav totiž nesie vlastná šípka, ktorá je zarovnaná k pravému okraju panela.
*/
.gate-nav__label[b-ct2dje5lsj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
    margin-top: 16px;
    padding: 8px 16px;
    border-radius: 0;
    font-size: 12px;
    letter-spacing: .04em;
    color: var(--gate-nav-label);
}

summary.gate-nav__label[b-ct2dje5lsj] {
    cursor: pointer;
    list-style: none;
    /* Bez toho čaká dotykový prehliadač na dvojklik a rozbalenie reaguje s oneskorením ~300 ms. */
    touch-action: manipulation;
    /* Prechod je len na farbe a krátky — zhodne s odkazom nižšie. */
    transition: color 120ms ease;
}

summary.gate-nav__label[b-ct2dje5lsj]::-webkit-details-marker {
    display: none;
}

summary.gate-nav__label:hover[b-ct2dje5lsj] {
    color: var(--gate-nav-fg);
}

/* Záporný odstup, aby zaostrenie neorezal posúvateľný obal navigácie (WCAG 2.1 AA, 2.4.7). */
summary.gate-nav__label:focus-visible[b-ct2dje5lsj] {
    outline: 2px solid var(--gate-nav-marker);
    outline-offset: -2px;
}

/*
    Šípka drží pravý okraj popisu, takže všetky skupiny majú ukazovateľ stavu na jednej zvislej
    osi. Zbalená mieri nadol, rozbalená nahor — otočenie je jediný pohyb v paneli a je to
    `transform`, teda bez prekreslenia rozloženia.
*/
.gate-nav__chevron[b-ct2dje5lsj] {
    flex: 0 0 auto;
    transition: transform 120ms ease;
}

.gate-nav__group[open] > .gate-nav__label .gate-nav__chevron[b-ct2dje5lsj] {
    transform: rotate(180deg);
}

/*
    Odkaz. Plocha siaha cez celú šírku panela a zvýraznená položka ju drží aj s 3 px značkou
    pri ľavej hrane; odsadenie textu sa o tú značku zmenší, aby názov neposkočil.
*/
.gate-nav__group[b-ct2dje5lsj]  .nav-link {
    display: flex;
    align-items: center;
    /*
        ŽIADNE `min-height` NA ŠIROKEJ OBRAZOVKE. Bolo tu 2 rem — lenže odkaz je `content-box`,
        takže sa 32 px minimum počítalo k OBSAHU a odsadenie (2 × 10 px) sa k nemu pripočítalo:
        riadok mal reálne 52 px proti 42 px v predlohe (kontrola 2026-08-19, položka #33).
        Ak za tým bola dotyková podlaha, mala byť 44 a nie 52 — a na desktope sa neuplatňuje
        vôbec. Výšku riadku preto určuje sadzba: 14 px × 1.55 = ~22 px plus 2 × 10 px = 42 px.
        Dotykovú podlahu 44 px má prekryvná navigácia nižšie, kde na ňu naozaj treba.
    */
    padding: 9px 16px;
    border-radius: 0;
    border-left: 3px solid transparent;
    padding-left: 13px;
    color: var(--gate-nav-text);
    font-size: 14px;
    line-height: 1.55;
    text-decoration: none;
    /* Bez toho čaká dotykový prehliadač na dvojklik a odkaz reaguje s oneskorením ~300 ms. */
    touch-action: manipulation;
    /* Prechod je len na farbe a krátky — pohyb v navigácii by pri prechode myšou rušil. */
    transition: background-color 120ms ease, color 120ms ease;
}

/*
    Koreňové položky (Domov, Moje úlohy, Nový dokument) sú o stupeň vzdušnejšie — sú to vrcholy
    navigácie, nie riadky zoznamu. Rozlišuje ich OBAL: skupina s popisom je `<details>`, koreňová
    `<div>` (viď NavMenu.razor).
*/
div.gate-nav__group[b-ct2dje5lsj]  .nav-link {
    padding-block: 10px;
}

/*
    Položky ROZBALENEJ skupiny sú odsadené o stupeň (12 px) pod jej popis. Kým stáli s popisom
    na jednej osi, rozbalená skupina sa čítala ako plochý zoznam bez hierarchie — popis a jeho
    položky splývali (spätná väzba 2026-09-13). Odsadzuje sa TEXT, nie plocha: podklad
    zvýraznenej položky siaha ďalej od hrany po hranu a značka ostáva na ľavej hrane panela,
    preto sa o jej 3 px opäť odpočíta (16 + 12 − 3).
*/
details.gate-nav__group[b-ct2dje5lsj]  .nav-link {
    padding-left: 25px;
}

.gate-nav__group[b-ct2dje5lsj]  .nav-link:hover {
    background-color: var(--gate-nav-hover);
    color: var(--gate-nav-fg);
}

/*
    Otvorená položka. Značka pri ľavej hrane je akcentová — je to ukazovateľ stavu, nie ozdoba,
    a v paneli je to jediná farebná plocha okrem značky aplikácie.
*/
.gate-nav__group[b-ct2dje5lsj]  a.active {
    background-color: var(--gate-nav-active);
    border-left-color: var(--gate-nav-marker);
    color: var(--gate-nav-fg);
    font-weight: 600;
}

/* Záporný odstup, aby zaostrenie neorezal posúvateľný obal navigácie (WCAG 2.1 AA, 2.4.7). */
.gate-nav__group[b-ct2dje5lsj]  .nav-link:focus-visible {
    outline: 2px solid var(--gate-nav-marker);
    outline-offset: -2px;
}

/* ── zbalený panel (rail) ────────────────────────────────────────────────── */

/*
    Kedy sa rail ukazuje, rozhoduje `gate-ui.css` (`:has(#gate-rail:checked)`) — tu je len jeho
    kresba. Značka je štvorec bez textu (názov produktu smie byť v DOM-e práve raz), položky sú
    38 px ikony s bublinou `title`, teda s tým istým názvom, aký nesie rozbalený panel.
*/
.gate-nav__rail-brand[b-ct2dje5lsj] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    margin-bottom: 16px;
    background: var(--gate-accent);
    color: var(--gate-nav-fg);
}

.gate-nav__rail-link[b-ct2dje5lsj] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    color: color-mix(in srgb, var(--gate-nav-fg) 70%, transparent);
    text-decoration: none;
    touch-action: manipulation;
    transition: background-color 120ms ease, color 120ms ease;
}

.gate-nav__rail-link:hover[b-ct2dje5lsj] {
    background-color: var(--gate-nav-hover);
    color: var(--gate-nav-fg);
}

.gate-nav__rail-link.active[b-ct2dje5lsj] {
    background-color: var(--gate-nav-active);
    color: var(--gate-nav-fg);
}

.gate-nav__rail-link:focus-visible[b-ct2dje5lsj] {
    outline: 2px solid var(--gate-nav-marker);
    outline-offset: -2px;
}

/* ── úzka obrazovka: horná lišta a prekryvná navigácia ───────────────────── */

@media (max-width: 640.98px) {
    /*
        Značka a prepínač tvoria hornú lištu aplikácie (samotnú lištu drží `.sidebar`
        v MainLayout.razor.css). Podtitul sa do jedného riadku lišty nezmestí — inštitúciu
        pomenúva úvodná obrazovka aj názov okna.
    */
    .top-row[b-ct2dje5lsj] {
        display: flex;
        align-items: center;
        flex: 1 1 auto;
        min-width: 0;
        min-height: var(--gate-nav-bar-h, 3.5rem);
        padding: 0 0 0 1rem;
    }

    .gate-brand__subtitle[b-ct2dje5lsj] {
        display: none;
    }

    /* Dotykový cieľ aj tu: odkaz „domov" je v lište najčastejším únikom z omylu. */
    .navbar-brand[b-ct2dje5lsj] {
        align-items: center;
        min-height: 2.75rem;
        font-size: 15px;
    }

    /*
        Dotyková plocha odkazu aj popisu skupiny — na širokej obrazovke sa panel ovláda myšou
        a stačí hustejší riadok. Popis je na úzkej obrazovke plnohodnotný ovládač (rozbaľuje
        skupinu), takže potrebuje ten istý cieľ 44 px (WCAG 2.2 AA, 2.5.8 Target Size).
    */
    /*
        `box-sizing` je tu polovica opravy, nie kozmetika: odkaz aj popis skupiny sú prvky
        s predvoleným `content-box`, takže sa 44 px minimum počítalo k OBSAHU a odsadenie
        (2 × 10 px, resp. 2 × 8 px) sa k nemu pripočítalo — riadok mal reálne 64 px a popis
        skupiny 60 px (odmerané pri sweepe 2026-08-18). Celé menu tak žiadalo 1 128 px na
        812 px displeji. S border-boxom je 44 px naozaj 44 px: dotykový cieľ ostáva, prázdno
        okolo neho mizne.
    */
    .gate-nav__group[b-ct2dje5lsj]  .nav-link,
    summary.gate-nav__label[b-ct2dje5lsj] {
        box-sizing: border-box;
        min-height: 2.75rem;
    }

    /*
        Odstup nad popisom skupiny sa na telefóne zmenšuje na polovicu. Na širokej obrazovke je
        16 px správnych — skupiny sú tam vedľa seba s obsahom a odstup ich delí. V prekryve, kde
        má každý riadok 44 px dotykový cieľ, sa z tých istých 16 px stane priepasť: šesť skupín
        odtlačí poslednú položku o 96 px nižšie a na 812 px displeji sa menu nezmestí naraz
        (nález Fázy A, potvrdený sweepom 2026-08-18). Riadky si výšku ponechávajú — skracuje sa
        prázdno medzi nimi, nie cieľ.
    */
    .gate-nav__label[b-ct2dje5lsj] {
        margin-top: 8px;
    }

    /*
        Otvorená navigácia je PREKRYV pod lištou, nie vysunutý blok, ktorý odtlačí obsah dole.
        Zatvorená ostáva `display: none`: posun mimo obrazovky (transform) považuje Playwright
        aj čítačka obrazovky za viditeľný obsah, takže by sa dalo tabovať do skrytého menu.
        Prechod sa zámerne nerobí — okamžité otvorenie pôsobí rýchlo a `@starting-style`
        / `allow-discrete` by v izolovaných štýloch bolo krehké.
    */
    .navbar-toggler:checked ~ .nav-scrollable[b-ct2dje5lsj] {
        position: fixed;
        /* Od spodnej hrany lišty (aj s bezpečnou zónou displeja) po spodok okna. */
        inset: calc(var(--gate-nav-bar-h, 3.5rem) + env(safe-area-inset-top, 0px)) 0 0 0;
        z-index: 1;
        background-color: var(--gate-nav-bg);
        overflow-y: auto;
        /* Posun prstom vnútri panela nesmie „prejsť" na stránku pod ním. */
        overscroll-behavior: contain;
        padding-block: .5rem calc(1.5rem + env(safe-area-inset-bottom, 0px));
    }
}

@media (min-width: 641px) {
    .navbar-toggler[b-ct2dje5lsj] {
        display: none;
    }

    .nav-scrollable[b-ct2dje5lsj] {
        /* Na širokej obrazovke sa panel nikdy nezbaľuje do prekryvu — zbaliť sa dá do railu. */
        display: block;
        /* Zvyšok výšky bočného panela (stĺpec je definovaný v MainLayout.razor.css). */
        flex: 1;
        min-height: 0;
    }
}

/*
    Systémové „obmedziť pohyb" vypína aj tie najkratšie prechody — pre používateľa
    s vestibulárnou poruchou je rušivá už zmena farby pod kurzorom (WCAG 2.1 AAA 2.3.3,
    ktoré tu držíme dobrovoľne, keďže ide o rám na každej obrazovke).
*/
@media (prefers-reduced-motion: reduce) {
    .navbar-toggler[b-ct2dje5lsj],
    .gate-nav__group[b-ct2dje5lsj]  .nav-link,
    .gate-nav__rail-link[b-ct2dje5lsj],
    summary.gate-nav__label[b-ct2dje5lsj],
    .gate-nav__chevron[b-ct2dje5lsj] {
        transition: none;
    }
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
/*
    Viditeľnosť jednotlivých hlásení podľa stavu okruhu. Identifikátory aj triedy sú KONTRAKT
    s blazor.web.js (ten na dialóg vešia triedy `components-reconnect-*`) — smú sa štýlovať,
    nesmú sa premenovať.
*/
.components-reconnect-first-attempt-visible[b-z5pmkwbsvr],
.components-reconnect-repeated-attempt-visible[b-z5pmkwbsvr],
.components-reconnect-failed-visible[b-z5pmkwbsvr],
.components-pause-visible[b-z5pmkwbsvr],
.components-resume-failed-visible[b-z5pmkwbsvr],
.components-rejoining-animation[b-z5pmkwbsvr] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-z5pmkwbsvr],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-z5pmkwbsvr],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-z5pmkwbsvr],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-z5pmkwbsvr],
#components-reconnect-modal.components-reconnect-retrying[b-z5pmkwbsvr],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-z5pmkwbsvr],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-z5pmkwbsvr],
#components-reconnect-modal.components-reconnect-failed[b-z5pmkwbsvr],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-z5pmkwbsvr] {
    display: block;
}

/*
    Dve pravidlá vyššie zapínajú `display: block` na samotnom dialógu (stavy „retrying"
    a „failed"), čím prebijú predvolené `dialog:not([open]) { display: none }` prehliadača —
    zatvorený dialóg by potom ostal visieť v stránke. Šablóna to riešila priehľadnosťou
    (neviditeľný, ale stále chytal kliknutia); tu to hovorí priamo stav dialógu. Pravidlo
    musí stáť AŽ ZA nimi: špecificita je zhodná, rozhoduje poradie.
*/
#components-reconnect-modal:not([open])[b-z5pmkwbsvr] {
    display: none;
}

/* ── dialóg ──────────────────────────────────────────────────────────────── */

#components-reconnect-modal[b-z5pmkwbsvr] {
    /*
        Plocha aj text z Fluent tokenov: v tmavej schéme je text stránky biely, takže na
        natvrdo bielom podklade by hlásenie o strate spojenia zmizlo — a to je práve tá
        chvíľa, keď ho používateľ potrebuje prečítať. Panel je neutrálny ako karty v obsahu,
        líši sa len tým, čím sa prekryv líšiť má: jedným jemným tieňom.
    */
    background-color: var(--neutral-layer-floating, #ffffff);
    color: var(--neutral-foreground-rest, #1a1a1a);
    /* Na displeji telefónu (375 px) sa pevných 20 rem nezmestí — okraj drží `min()`. */
    width: min(22rem, calc(100vw - 2rem));
    box-sizing: border-box;
    margin: 20vh auto;
    padding: 1.5rem;
    border: 1px solid var(--gate-border, #e8e8e8);
    border-radius: var(--gate-radius-panel, 8px);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
    /* Otvorenie je krátke a len cez priehľadnosť — žiadny posun ani zväčšovanie panela. */
    animation: components-reconnect-modal-fadeInOpacity-b-z5pmkwbsvr 150ms ease-out;
}

#components-reconnect-modal[b-z5pmkwbsvr]::backdrop {
    /* Stmavenie stránky pod dialógom: hlásenie o strate spojenia má byť jediná vec v pozornosti. */
    background-color: rgba(0, 0, 0, 0.45);
}

@keyframes components-reconnect-modal-fadeInOpacity-b-z5pmkwbsvr {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

.components-reconnect-container[b-z5pmkwbsvr] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-z5pmkwbsvr] {
    margin: 0;
    text-align: center;
    line-height: 1.45;
}

/* Sekundy do ďalšieho pokusu sa menia každú sekundu — rovnako široké číslice, aby veta neposkakovala. */
#components-seconds-to-next-attempt[b-z5pmkwbsvr] {
    font-variant-numeric: tabular-nums;
}

/*
    Tlačidlá sú akcentové, ako všade v aplikácii. Text NIE je natvrdo biely: v tmavej schéme
    je akcent svetlý (#479ef5) a biele písmo by na ňom malo 2,6 : 1 — token
    `--foreground-on-accent-rest` je práve na to (biely v svetlej schéme, tmavý v tmavej, 6,7 : 1).
*/
#components-reconnect-modal button[b-z5pmkwbsvr] {
    min-height: 32px;
    padding: .35rem 1rem;
    border: 1px solid var(--accent-stroke-control-rest, #0f6cbd);
    border-radius: var(--gate-radius, 6px);
    background-color: var(--accent-fill-rest, #0f6cbd);
    color: var(--foreground-on-accent-rest, #ffffff);
    font: inherit;
    font-weight: 600;
    cursor: pointer;
    touch-action: manipulation;
    transition: background-color 120ms ease;
}

    #components-reconnect-modal button:hover[b-z5pmkwbsvr] {
        background-color: var(--accent-fill-hover, #115ea3);
        border-color: var(--accent-stroke-control-hover, #115ea3);
    }

    #components-reconnect-modal button:active[b-z5pmkwbsvr] {
        background-color: var(--accent-fill-active, #0f548c);
        border-color: var(--accent-stroke-control-active, #0f548c);
    }

    /* Obrys zaostrenia musí byť vidieť aj na akcentovej ploche — preto neutrálny, nie akcentový. */
    #components-reconnect-modal button:focus-visible[b-z5pmkwbsvr] {
        outline: 2px solid var(--focus-stroke-outer, #000000);
        outline-offset: 2px;
    }

/* ── ukazovateľ pokusu o obnovenie ───────────────────────────────────────── */

.components-rejoining-animation[b-z5pmkwbsvr] {
    position: relative;
    width: 40px;
    height: 40px;
}

    /* Prvý kruh je nehybná dráha, druhý pohyblivý oblúk (obidva kreslí šablóna ako prázdne <div>). */
    .components-rejoining-animation div[b-z5pmkwbsvr] {
        position: absolute;
        inset: 0;
        border: 2px solid var(--gate-border-strong, #d0d0d0);
        border-radius: 50%;
    }

        /*
            Animuje sa VÝHRADNE `transform`. Pôvodná šablóna hýbala `top/left/width/height`,
            čo pri každom snímku núti prehliadač prepočítať rozloženie — na kancelárskej stanici
            sa to trhá práve vtedy, keď je spojenie na hrane a procesor už tak nestíha.
        */
        .components-rejoining-animation div:nth-child(2)[b-z5pmkwbsvr] {
            border-color: var(--accent-fill-rest, #0f6cbd) transparent transparent;
            animation: components-rejoining-animation-b-z5pmkwbsvr 900ms linear infinite;
        }

@keyframes components-rejoining-animation-b-z5pmkwbsvr {
    to {
        transform: rotate(360deg);
    }
}

/*
    So systémovým „obmedziť pohyb" ostane oblúk stáť. Stav tým nezaniká: nesie ho text hlásenia
    aj tvar oblúka nad dráhou (WCAG 2.1 AAA 2.3.3 — pri rámovom prvku ho držíme dobrovoľne).
*/
@media (prefers-reduced-motion: reduce) {
    #components-reconnect-modal[b-z5pmkwbsvr],
    .components-rejoining-animation div:nth-child(2)[b-z5pmkwbsvr] {
        animation: none;
    }

    #components-reconnect-modal button[b-z5pmkwbsvr] {
        transition: none;
    }
}
/* /Components/Pages/Auth/Prihlasenie.razor.rz.scp.css */
/*
    Vstupná obrazovka. Farby idú z tokenov (gate-ui.css), aby sa prekreslili s tmavou schémou —
    jedinou výnimkou je biely názov na značkovom paneli: ten je tmavý v OBOCH schémach, takže je
    pevný zámerne (rovnako ako `.navbar-brand` v NavMenu.razor.css). Chróma je neutrálna a akcent
    (--accent-*) nesie JEDINÚ vec: tlačidlo „Prihlásiť sa" a zaostrenie. Žiadny prechod
    (gradient), žiadna ilustrácia, žiadna žiara: plocha značky je jednoliaty grafit, presne ako
    bočný panel aplikácie za ňou.
*/

.prihlasenie[b-mv6yezf195] {
    /*
        Celá výška okna. `dvh` (nie `vh`) kvôli mobilným prehliadačom: pri `vh` sa pod
        vysúvajúcou sa lištou adresy objaví pás pozadia a stránka sa dá zbytočne posúvať.
    */
    min-height: 100dvh;
    display: grid;
    /* Úzka obrazovka: kompaktná hlavička značky NAD kartou, karta si vezme zvyšok výšky. */
    grid-template-rows: auto minmax(0, 1fr);
}

/* ── značkový panel ──────────────────────────────────────────────────────── */

.prihlasenie__znacka[b-mv6yezf195] {
    background-color: var(--gate-nav-bg);
    color: var(--gate-nav-fg);
    /*
        Panel je tmavý v OBOCH schémach, ale dedí `color-scheme: light dark` z koreňa — bez
        tejto deklarácie by naň Windows vo svetlej schéme kreslil svetlé natívne prvky
        (posuvník, zaostrenie). Rovnaký dôvod ako pri `.sidebar` v MainLayout.razor.css.
    */
    color-scheme: dark;
    display: flex;
    /* Nárok sa na mobile zalomí pod názov (flex-basis: 100 % nižšie) — bez `wrap` by ostal
       v jednom rade a stlačil názov. Na širokej obrazovke je obal blok, takže sa neuplatní. */
    flex-wrap: wrap;
    align-items: center;
    /* Zvislú medzeru po zalomení riadi margin nároku, nie medzera mriežky. */
    gap: 0 .625rem;
    padding: .875rem 1rem;
    padding-top: calc(.875rem + env(safe-area-inset-top, 0px));
    /*
        Švík aj na úzkej obrazovke. V tmavej schéme majú lišta (#121110) a plocha pod ňou (#1b1a19)
        takmer rovnaký jas — odmerané 18 proti 27 z 255, teda deväť stupňov —, takže sa hranica
        stráca a z dvoch pásiem je jedno. Tá istá linka a ten istý token, akými sa od obsahu
        oddeľuje mobilná lišta aplikácie (MainLayout.razor.css); `--gate-nav-border` je odvodený
        od SVETLÉHO písma panela, preto je vidieť v oboch schémach — `--gate-divider` by sa vo
        svetlej schéme na grafite stratil.
    */
    border-bottom: 1px solid var(--gate-nav-border);
}

/*
    Na úzkej obrazovke obal nekreslí nič — logo a názov sú priamo položkami lišty, takže sa
    zarovnajú na jednej osi. Na širokej obrazovke sa z neho stane blok so stropom šírky (nižšie).
*/
.prihlasenie__znacka-obsah[b-mv6yezf195] {
    display: contents;
}

/*
    Značka je akcentový štvorec s kresbou — tá istá, akú nesie bočný panel aplikácie. V lište na
    mobile je menší (stojí v jednom riadku s názvom), na širokej obrazovke rastie s kompozíciou.
*/
.prihlasenie__logo[b-mv6yezf195] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    background: var(--gate-accent);
    color: var(--gate-nav-fg);
}

.prihlasenie__produkt[b-mv6yezf195] {
    margin: 0;
    min-width: 0;
    font-family: var(--gate-font-heading);
    font-size: 17px;
    font-weight: 800;
    line-height: 1.15;
    letter-spacing: -0.01em;
}

/*
    Na úzkej obrazovke sa z panela vypúšťa procesný pás — päť krokov by z hlavičky spravilo
    tri riadky nad kartou a odtlačilo by prihlásenie pod ohyb.

    Nárok ZOSTÁVA aj na mobile: bez neho je z panela holý 57 px pruh s logom a názvom, teda
    plocha, ktorá nič nehovorí. Stojí pod názvom v druhom riadku, takže lišta narastie
    o jeden riadok textu, nie o zoznam.
*/
.prihlasenie__fazy[b-mv6yezf195] {
    display: none;
}

@media (max-width: 640.98px) {
    .prihlasenie__claim[b-mv6yezf195] {
        /* Vlastný riadok pod názvom — obal je na mobile `display: contents`, takže sú logo,
           názov aj nárok priamo položkami flexu lišty a bez zalomenia by nárok stál vedľa
           názvu. Odsadenie zľava lícuje s názvom (šírka loga + medzera). */
        flex-basis: 100%;
        margin: .125rem 0 0 calc(30px + .625rem);
        color: var(--gate-nav-label);
        font-size: 12px;
        line-height: 1.35;
    }
}

/* ── prihlasovací panel ──────────────────────────────────────────────────── */

.prihlasenie__panel[b-mv6yezf195] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.5rem 1rem calc(2rem + env(safe-area-inset-bottom, 0px));
    background-color: var(--gate-bg);
}

.prihlasenie__karta[b-mv6yezf195] {
    box-sizing: border-box;
    width: 100%;
    /* Strop drží riadok textu v čitateľnej dĺžke; pod ním je karta na mobile cez celú šírku. */
    max-width: 25rem;
    padding: 1.5rem;
    border: 0;
    /* Karta je plochá plocha bez obrysu aj bez tieňa — rovnako ako .gate-card v gate-ui.css. */
    border-radius: var(--gate-radius-panel);
    background-color: var(--gate-surface);
}

/*
    Vlastná trieda je kvôli špecificite aj kvôli veľkosti: hierarchia nadpisov z app.css sa
    viaže na `.content`, ktorý tento holý rám nemá, takže by nadpis ostal na predvolených 2 em.
*/
.prihlasenie__nadpis[b-mv6yezf195] {
    margin: 0 0 .75rem;
    font-family: var(--gate-font-heading);
    font-size: 25px;
    font-weight: 800;
    line-height: 1.12;
    letter-spacing: -0.015em;
}

.prihlasenie__oznam[b-mv6yezf195] {
    margin-bottom: .875rem;
}

.prihlasenie__text[b-mv6yezf195] {
    margin: 0 0 1.25rem;
    font-size: 14px;
    line-height: 1.5;
    text-wrap: pretty;
}

/*
    JEDINÝ akcent obrazovky. Je to odkaz, ktorý sa má správať ako hlavné tlačidlo: plná šírka
    karty (na vstupnej obrazovke je len jedna cesta ďalej) a dotykový cieľ nad hranicou
    44 × 44 px (WCAG 2.2 AA, 2.5.8 Target Size).

    V predvádzacom režime je to naopak SKUTOČNÉ <button type="submit"> vo formulári — trieda preto
    musí prekryť aj predvolený vzhľad tlačidla od prehliadača: obrubu, šírku podľa obsahu
    a kurzor. Písmo prepisujú deklarácie nižšie (rodina, veľkosť, rez, riadkovanie), takže
    `font: -webkit-small-control` z predvoleného štýlu sa neuplatní.
*/
.prihlasenie__akcia[b-mv6yezf195] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    border: 0;
    cursor: pointer;
    /*
        Bez `border-box` sa 44 px počíta k OBSAHU a odsadenie sa pripočíta zhora — tlačidlo
        vyrastie na 60 px a v karte pôsobí ako panel, nie ako akcia (rovnaký dôvod, prečo majú
        natívne vstupy `box-sizing: border-box` v gate-ui.css).
    */
    box-sizing: border-box;
    min-height: 44px;
    padding: .5rem 1rem;
    border-radius: var(--gate-radius);
    background-color: var(--gate-accent-fill);
    color: #f3f2f2;
    font-family: var(--gate-font-heading);
    font-size: 15px;
    font-weight: 800;
    line-height: 1.25;
    text-align: center;
    text-decoration: none;
    /* Bez toho čaká dotykový prehliadač na dvojklik a odkaz reaguje s oneskorením ~300 ms. */
    touch-action: manipulation;
}

.prihlasenie__akcia:hover[b-mv6yezf195] {
    background-color: var(--gate-accent-fill-hover);
}

.prihlasenie__akcia:active[b-mv6yezf195] {
    background-color: var(--gate-accent-fill-active);
}

/* Zaostrenie musí byť vidieť aj na plnej ploche tlačidla (WCAG 2.1 AA, 2.4.7). */
.prihlasenie__akcia:focus-visible[b-mv6yezf195] {
    outline: 2px solid var(--gate-accent);
    outline-offset: 2px;
}

/*
    Formulár predvádzacieho prostredia (len tam — v Entra režime sa nevykreslí). Polia sú tie isté
    `.gate-field` / `.gate-input` ako v celej aplikácii, mení sa len ich chovanie v úzkej karte:
    plná šírka namiesto 12 rem minima (inak by pole prečnievalo cez kartu na mobile) a tesnejšia
    medzera medzi poľami, aby sa dvojica s tlačidlom zmestila nad ohyb.
*/
.prihlasenie__formular .gate-field[b-mv6yezf195] {
    margin-bottom: .875rem;
    min-width: 0;
}

.prihlasenie__formular .gate-input[b-mv6yezf195] {
    width: 100%;
}

.prihlasenie__formular .prihlasenie__akcia[b-mv6yezf195] {
    margin-top: .25rem;
}

.prihlasenie__poznamka[b-mv6yezf195] {
    margin: 1rem 0 0;
    color: var(--gate-muted);
    font-size: 12px;
    line-height: 1.45;
    text-wrap: pretty;
}

.prihlasenie__pata[b-mv6yezf195] {
    margin: 1.25rem 0 0;
    padding-top: .75rem;
    border-top: 1px solid var(--gate-divider);
    color: var(--gate-muted);
    font-size: 12px;
}

/* ── široká obrazovka: rozdelená kompozícia ──────────────────────────────── */

@media (min-width: 641px) {
    .prihlasenie[b-mv6yezf195] {
        /*
            Značka vľavo, prihlásenie vpravo — 42 : 58, aby obidve polovice niesli váhu.
            `minmax(0, …)` v oboch stĺpcoch je poistka reflow — bez neho by mala mriežka
            minimálnu šírku podľa obsahu a dlhé slovo by stránku roztlačilo do vodorovného
            posunu (WCAG 2.1 AA, 1.4.10).
        */
        grid-template-rows: none;
        grid-template-columns: minmax(0, 42%) minmax(0, 1fr);
    }

    .prihlasenie__znacka[b-mv6yezf195] {
        /*
            Obsah stojí v strede panela, nie pri jeho ľavej hrane: panel rastie so šírkou okna
            a obsah pripnutý k hrane by za sebou nechával rastúcu prázdnu plochu — presne to,
            čo na širokom monitore pôsobí ako nedokončená obrazovka.
        */
        align-items: center;
        justify-content: center;
        padding: 3rem 2.5rem;
        /*
            Švík medzi polovicami — TMAVÁ strana. Vo svetlej schéme ho prekryje kontrast
            grafit/biela, ale v tmavej majú obe plochy takmer rovnaký tón (jas 18 proti 27 z 255)
            a delená kompozícia bez neho zanikne; jediný vlas na deliacej čiare stĺpca širokého
            42 % navyše padne na zlomok pixla a antialiasing mu polovicu kontrastu zoberie
            (kontrola kola 7: „panely sa neoddeľujú"). Druhý vlas preto kreslí SVETLÁ strana
            (`.prihlasenie__panel` nižšie) — spolu je to 2 px, ktoré vidieť aj po zaokrúhlení.

            Token je `--gate-nav-border`, odvodený od svetlého písma panela: je vidieť v OBOCH
            schémach, kým `--gate-divider` (odvodený od farby textu stránky) by sa vo svetlej
            schéme na grafite stratil.
        */
        border-inline-end: 1px solid var(--gate-nav-border);
        /* Vodorovný švík patrí len zloženému rozvrhnutiu — tu by to bola linka pri spodku okna. */
        border-bottom: 0;
    }

    .prihlasenie__znacka-obsah[b-mv6yezf195] {
        display: block;
        width: 100%;
        max-width: 22rem;
    }

    .prihlasenie__logo[b-mv6yezf195] {
        width: 40px;
        height: 40px;
        margin-bottom: 1.25rem;
    }

    .prihlasenie__produkt[b-mv6yezf195] {
        font-size: 1.25rem;
    }

    .prihlasenie__claim[b-mv6yezf195] {
        display: block;
        margin: .35rem 0 0;
        font-size: .9375rem;
        line-height: 1.45;
    }

    /*
        Procesný pás. Je to popis, nie ponuka — preto veľkosť a farba popisu skupiny z bočného
        panela (--gate-nav-label, 6,3 : 1 na podklade panela).
    */
    .prihlasenie__fazy[b-mv6yezf195] {
        margin: 2rem 0 0;
        padding: 0;
        list-style: none;
        color: var(--gate-nav-label);
        line-height: 1.4;
    }

    .prihlasenie__panel[b-mv6yezf195] {
        padding: 3rem 2rem;
        /*
            Švík medzi polovicami — SVETLÁ strana (viď `.prihlasenie__znacka` vyššie). Vnútorný
            tieň, nie `border`: obruba by sa pripočítala k šírke stĺpca mriežky a kartu vpravo
            by o pixel posunula, kým tieň sa kreslí do plochy. `--gate-divider` je tu správny
            token — linka leží na PLOCHE STRÁNKY, nie na tmavom paneli, takže sa má odvodiť od
            farby textu stránky (v tmavej schéme svetlá, v svetlej tmavá).
        */
        box-shadow: inset 1px 0 0 var(--gate-divider);
    }

    .prihlasenie__karta[b-mv6yezf195] {
        padding: 2rem;
    }
}

/*
    Stredná šírka: fázy ako riadok so šípkami. Vertikálny zoznam nižšie by na krátkych
    obrazovkách (telefón naležato) tlačil panel do zvislého posunu.
*/
@media (min-width: 641px) and (max-width: 899.98px) {
    .prihlasenie__fazy[b-mv6yezf195] {
        display: flex;
        flex-wrap: wrap;
        gap: .25rem .5rem;
        font-size: .75rem;
    }

    /*
        Šípka patrí ku kroku ZA ňou, takže na konci riadka po zalomení nikdy nezostane visieť
        (rovnaká úvaha ako pri spojnici procesného pásu na úvodnej obrazovke).
    */
    .prihlasenie__fazy li:not(:first-child)[b-mv6yezf195]::before {
        content: "→";
        margin-inline-end: .5rem;
    }
}

/*
    Široká obrazovka: fázy ako zvislý číslovaný postup. Ten istý obsah, iné rozloženie —
    zvislý zoznam dáva vysokému panelu kostru, riadok so šípkami sa v ňom strácal.
    Číslo kreslí CSS počítadlo, takže čítačka obrazovky číta stále len <ol> s piatimi krokmi.
*/
@media (min-width: 900px) {
    .prihlasenie__fazy[b-mv6yezf195] {
        /* `display` treba vrátiť výslovne — základné (mobilné) pravidlo zoznam skrýva. */
        display: block;
        counter-reset: faza;
        color: var(--gate-nav-text);
        font-size: 14px;
    }

    .prihlasenie__fazy li[b-mv6yezf195] {
        counter-increment: faza;
        display: flex;
        align-items: center;
        gap: .75rem;
    }

    .prihlasenie__fazy li + li[b-mv6yezf195] {
        margin-top: .75rem;
    }

    .prihlasenie__fazy li[b-mv6yezf195]::before {
        content: counter(faza);
        flex: 0 0 auto;
        display: flex;
        align-items: center;
        justify-content: center;
        width: 26px;
        height: 26px;
        /* Obrys je dekorácia, informáciu nesie číslo (--gate-nav-label, 6,3 : 1). */
        /* Hranaté ako celý systém — kruh by tu bol jediný oblý tvar v aplikácii. */
        border: 1px solid var(--gate-nav-border);
        color: var(--gate-nav-label);
        font-size: .75rem;
        font-variant-numeric: tabular-nums;
        line-height: 1;
    }
}

/*
    Veľký monitor: mierka hore, kompozícia sa nemení. Bez tohto stupňa vyzerá obrazovka
    na 1440p/4K ako miniatúra v rohu veľkej plochy — typografia aj karta sú stavané na laptop.
*/
@media (min-width: 1200px) {
    .prihlasenie__znacka-obsah[b-mv6yezf195] {
        max-width: 24rem;
    }

    .prihlasenie__logo[b-mv6yezf195] {
        width: 48px;
        height: 48px;
        margin-bottom: 1.5rem;
    }

    .prihlasenie__produkt[b-mv6yezf195] {
        font-size: 1.5rem;
    }

    .prihlasenie__claim[b-mv6yezf195] {
        margin-top: .5rem;
        font-size: 1rem;
    }

    .prihlasenie__fazy[b-mv6yezf195] {
        margin-top: 3rem;
    }

    .prihlasenie__panel[b-mv6yezf195] {
        padding: 4rem 3rem;
    }

    .prihlasenie__karta[b-mv6yezf195] {
        max-width: 26.5rem;
        padding: 2.5rem;
    }

    .prihlasenie__nadpis[b-mv6yezf195] {
        font-size: 1.5rem;
    }

    .prihlasenie__text[b-mv6yezf195] {
        font-size: .9375rem;
    }
}

/*
    Rebrík mierky pokračuje: stupeň 1200 px je stavaný na laptop a 1440p, ale na QHD/4K monitore
    (CSS viewport 2560/3840 px) z neho ostáva známka uprostred dvoch veľkých prázdnych plôch.
    Prírastky kopírujú pomery stupňa 1200 px — kompozícia sa nemení, len rastie s plochou,
    aby obrazovka na veľkom monitore pôsobila navrhnutá preň, nie zväčšená z malého.
*/
@media (min-width: 1800px) {
    .prihlasenie__znacka-obsah[b-mv6yezf195] {
        max-width: 27rem;
    }

    .prihlasenie__logo[b-mv6yezf195] {
        width: 56px;
        height: 56px;
        margin-bottom: 1.75rem;
    }

    .prihlasenie__produkt[b-mv6yezf195] {
        font-size: 1.75rem;
    }

    .prihlasenie__claim[b-mv6yezf195] {
        margin-top: .625rem;
        font-size: 1.125rem;
    }

    .prihlasenie__fazy[b-mv6yezf195] {
        margin-top: 3.5rem;
        font-size: 1rem;
    }

    .prihlasenie__fazy li + li[b-mv6yezf195] {
        margin-top: .875rem;
    }

    .prihlasenie__fazy li[b-mv6yezf195]::before {
        width: 30px;
        height: 30px;
        font-size: .875rem;
    }

    .prihlasenie__panel[b-mv6yezf195] {
        padding: 5rem 4rem;
    }

    .prihlasenie__karta[b-mv6yezf195] {
        max-width: 30rem;
        padding: 3rem;
    }

    .prihlasenie__nadpis[b-mv6yezf195] {
        margin-bottom: 1rem;
        font-size: 1.75rem;
    }

    .prihlasenie__text[b-mv6yezf195] {
        margin-bottom: 1.5rem;
        font-size: 1.0625rem;
    }

    .prihlasenie__akcia[b-mv6yezf195] {
        min-height: 48px;
        font-size: 1.0625rem;
    }

    .prihlasenie__poznamka[b-mv6yezf195] {
        font-size: .875rem;
    }

    .prihlasenie__pata[b-mv6yezf195] {
        margin-top: 1.5rem;
        font-size: .8125rem;
    }
}

/* Posledný stupeň: 4K a ultraširoké monitory. */
@media (min-width: 2600px) {
    .prihlasenie__znacka-obsah[b-mv6yezf195] {
        max-width: 30rem;
    }

    .prihlasenie__logo[b-mv6yezf195] {
        width: 64px;
        height: 64px;
    }

    .prihlasenie__produkt[b-mv6yezf195] {
        font-size: 2rem;
    }

    .prihlasenie__claim[b-mv6yezf195] {
        font-size: 1.25rem;
    }

    .prihlasenie__fazy[b-mv6yezf195] {
        font-size: 1.125rem;
    }

    .prihlasenie__fazy li[b-mv6yezf195]::before {
        width: 34px;
        height: 34px;
        font-size: 1rem;
    }

    .prihlasenie__karta[b-mv6yezf195] {
        max-width: 34rem;
        padding: 3.5rem;
    }

    .prihlasenie__nadpis[b-mv6yezf195] {
        font-size: 2rem;
    }

    .prihlasenie__text[b-mv6yezf195] {
        font-size: 1.1875rem;
    }

    .prihlasenie__akcia[b-mv6yezf195] {
        min-height: 54px;
        font-size: 1.1875rem;
    }

    .prihlasenie__poznamka[b-mv6yezf195] {
        font-size: 1rem;
    }
}

/*
    Na tejto obrazovke ZÁMERNE nie je žiadny pohyb — ani prelnutie tlačidla pod kurzorom, ani
    nabiehanie karty. Odozva na vstup do aplikácie má byť okamžitá a čo sa nehýbe, netreba
    vypínať cez `prefers-reduced-motion` (WCAG 2.1 AAA, 2.3.3).
*/
/* /Components/Pages/Home.razor.rz.scp.css */
/*
    Úvodný rozcestník. Farby idú výhradne z tokenov dizajnového systému (gate-ui.css), takže sa
    v tmavej schéme prekreslia samy — vlastné hexy by sa s ňou rozišli. Chróma je neutrálna
    a akcent nesie len dve veci: zaostrenie a názov dlaždice pod kurzorom. Nikde nie je akcent
    výplňou plochy a farba nikde nenesie informáciu (WCAG 2.1 AA, 1.4.1).

    Karta (GateCard) sa tu zámerne nepoužíva: dlaždica je odkaz, nie panel s obsahom. Celá plocha
    má byť jeden klikateľný cieľ s jedným zaostrovacím rámčekom — obal <fluent-card> by okolo
    odkazu pridal ďalšiu vrstvu s vlastným odsadením, ktoré by sme mu tu aj tak prebíjali.
*/

/*
    ROZCESTNÍK NEMÁ STROP ŠÍRKY. Mal ho (68 rem / 76 rem) a bol jedinou obrazovkou aplikácie, ktorá
    sa nedržala šírky obsahu: pri 1280 px so zbaleným panelom ostávalo vpravo 110 px prázdna a pri
    1920 px celých 590 px, kým register vedľa (`/suppliers`) šiel na plnú šírku. Rozdiel bol
    najviditeľnejší presne po zbalení bočného panela — teda po úkone, ktorý má priestor získať
    (nález vizuálneho auditu 2026-08-18).

    Čitateľnú dĺžku riadka drží tam, kde na nej záleží, samotný text (viď `.home-note p`);
    dlaždice sú stĺpcová mriežka a tej plná šírka svedčí — počet stĺpcov rastie po pásmach nižšie.
*/

/* ── tiché popisy sekcií ─────────────────────────────────────────────────── */

/*
    Nadpis sekcie je štrukturálny (čítačka obrazovky prechádza obrazovku podľa neho), vizuálne
    však ustupuje obsahu — preto veľkosť popisu, nie veľkosť nadpisu.

    Od redizajnu je to ZNAČKA, nie tlmená veta: 12 px v tlmenej farbe pri bežnej hrúbke bolo pod
    2 px linkou hlavičky sotva čitateľné a pôsobilo ako zabudnutý útržok. Kresba je preto tá istá,
    akou dizajnový systém označuje sekciu formulára (`.gate-form__section-title`) — nadpisové písmo
    hrúbky 800, rozpalta a verzálky v plnej farbe textu. Verzálky robí CSS, takže v DOM-e aj
    v prístupnostnom strome ostáva pôvodné znenie a čítačka ho nehláskuje po písmenách.
*/
/*
    K ZNAČKE PATRÍ AJ LINKA (položka #210). Verzálková značka bez 2 px pravidla pod sebou bola
    jediný nadpis sekcie v aplikácii, ktorý sekciu neotváral — čítal sa ako útržok popisu nad
    mriežkou dlaždíc. Geometria je tá istá ako `.gate-form__section-head` (odsadenie 8 px, 2 px
    linka v tóne predelov); poradové číslo tu nie je, lebo rozcestník má jedinú sekciu a číslovanie
    slúži na odvolávku („doplňte sekciu 03") vnútri dokumentu.
*/
.home-section__title[b-jtnoopkk13] {
    margin: 0 0 var(--gate-space-4);
    padding-bottom: var(--gate-space-2);
    border-bottom: 2px solid var(--gate-divider);
    font-family: var(--gate-font-heading);
    font-size: 12px;
    font-weight: var(--gate-heading-weight);
    letter-spacing: .1em;
    text-transform: uppercase;
    line-height: 1.35;
}

/* Hlavička obrazovky uzatvára linka — obsah pod ňou začína v rytme ostatných plôch. */
.home .gate-page-header[b-jtnoopkk13] {
    margin-bottom: var(--gate-space-6);
}

/* ── rozcestník modulov ──────────────────────────────────────────────────── */

/*
    Mriežka má PEVNÝ počet stĺpcov po pásmach, nie `auto-fill`: dlaždíc je desať a automatické
    napĺňanie nechávalo na hraniciach pásiem osamotený riadok s jednou dlaždicou natiahnutou
    cez celú šírku. `minmax(0, 1fr)` je poistka reflow — bez nej by mriežka mala minimálnu šírku
    podľa najdlhšieho slova a stránku by roztiahla do vodorovného posunu (WCAG 2.1 AA, 1.4.10).

    Medzera je 1 px: dlaždice tvoria jednu plochu rozdelenú linkou, nie desať plávajúcich kariet.
*/
.home-tiles[b-jtnoopkk13] {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1px;
}

/*
    KAŽDÁ DLAŽDICA JE JEDEN STĹPEC (položka #147).

    Neúplný posledný riadok sa predtým „uzatváral" tým, že sa POSLEDNÁ dlaždica roztiahla na
    zvyšok riadku — pri troch stĺpcoch teda na 962 px proti 320 px susedov. Odstránilo to vrub
    v obdĺžniku, ale za cenu horšej chyby: „Administrácia definícií" mala trojnásobnú klikaciu
    plochu s obsahom pri ľavom okraji a čítala sa ako iný druh prvku než jej susedia — teda
    veľkosť niesla informáciu, ktorú nemala niesť.

    Neúplný posledný riadok je bežná vlastnosť mriežky a nič netvrdí; rovnaká šírka všetkých
    vstupov tvrdí, že sú si rovné, a to je pravda. (Uzavretie rohu cez `grid-column: span`
    z kola 2 sa tým vedome ruší.)
*/
@media (min-width: 641px) {
    .home-tiles[b-jtnoopkk13] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1100px) {
    .home-tiles[b-jtnoopkk13] {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (min-width: 1800px) {
    .home-tiles[b-jtnoopkk13] {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

/*
    Dlaždica je PLOCHA, nie orámovaná kartička: odlišuje ju odtieň podkladu a medzera v mriežke,
    ktorou presvitá plocha stránky. Desať orámovaných obdĺžnikov vedľa seba je v hranatom systéme
    mriežka rámov, nie rozcestník.

    Obruba je priehľadná, nie žiadna: pod kurzorom sa prefarbí na akcent a plocha sa pritom
    nesmie o pixel pohnúť.
*/
.home-tile[b-jtnoopkk13] {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    /*
        Dotykový cieľ na telefóne (WCAG 2.2 AA, 2.5.8). Odsadenie a glyf dvíhajú dlaždicu aj tak
        na ~68 px, spodná hranica je poistka pre prípad, že by popis raz vypadol.
    */
    min-height: 44px;
    padding: 12px 16px;
    border: 1px solid transparent;
    border-radius: var(--gate-radius-panel);
    background: var(--gate-surface);
    /* Dlaždica nie je veta v texte, ale plocha — farba odkazu by z desiatich spravila kolotoč. */
    color: var(--gate-text);
    text-decoration: none;
    /* Bez toho čaká dotykový prehliadač na dvojklik a odkaz reaguje s oneskorením ~300 ms. */
    touch-action: manipulation;
}

.home-tile:hover[b-jtnoopkk13] {
    border-color: var(--gate-accent);
}

/*
    Zaostrenie musí byť vidieť aj na hrane mriežky (WCAG 2.1 AA, 2.4.7). Odstup je dovnútra:
    dlaždice sú od seba 1 px, takže prstenec smerom von by prekryl susedku.
*/
.home-tile:focus-visible[b-jtnoopkk13] {
    outline: 2px solid var(--gate-accent);
    outline-offset: -2px;
}

/*
    Glyf ostáva NEUTRÁLNY aj pod kurzorom: desať farebných ikon by z rozcestníka spravilo paletu
    a akcent v tomto systéme znamená „toto je jediná dôležitá vec na obrazovke". Pod kurzorom sa
    prefarbí názov, nie kresba.
*/
.home-tile__glyph[b-jtnoopkk13] {
    display: inline-flex;
    flex: 0 0 auto;
    /* Účaria: glyf sedí na prvom riadku názvu, nie na hornej hrane dlaždice. */
    margin-top: 1px;
    color: var(--gate-muted);
}

.home-tile__text[b-jtnoopkk13] {
    /* Bez toho sa dlhé slovo v popise nezalomí a vytečie z bunky mriežky. */
    min-width: 0;
}

.home-tile__name[b-jtnoopkk13] {
    display: block;
    font-family: var(--gate-font-heading);
    font-size: 16px;
    font-weight: 800;
    line-height: 1.2;
    letter-spacing: -0.015em;
}

.home-tile:hover .home-tile__name[b-jtnoopkk13],
.home-tile:focus-visible .home-tile__name[b-jtnoopkk13] {
    color: var(--gate-accent-text);
}

.home-tile__desc[b-jtnoopkk13] {
    display: block;
    margin-top: .25rem;
    color: var(--gate-muted);
    font-size: 13px;
    line-height: 1.35;
    text-wrap: pretty;
}

/* ── pätičná poznámka ────────────────────────────────────────────────────── */

/*
    Deliaca čiara aj text idú po celej šírke rozcestníka (.home), nie po vlastnej. Vlastný strop
    robil z čiary a pätičky blok, ktorý na širokej ploche končil o 250 px skôr než mriežka dlaždíc
    nad ním — dve rôzne pravé hrany v jednom stĺpci obsahu vyzerali ako chyba vykreslenia (nález
    vizuálneho auditu pri 1440 aj 1920 px). Čitateľnú dĺžku riadka drží strop celej obrazovky;
    obe vety sú krátke a zalomia sa samy.
*/
.home-note[b-jtnoopkk13] {
    margin-top: 2rem;
    padding-top: 1rem;
    border-top: 2px solid var(--gate-divider);
    color: var(--gate-muted);
    font-size: 13px;
}

/*
    Deliaca čiara ide po celej šírke rozcestníka, ale VETA nie: bez stropu by sa na širokouhlom
    monitore tiahla cez 1 700 px a oko by na konci riadka stratilo začiatok nasledujúceho. Strop
    je na texte, nie na bloku — čiara aj tak lícuje s mriežkou dlaždíc nad ňou.
*/
.home-note p[b-jtnoopkk13] {
    margin: 0;
    max-width: 68ch;
}

.home-note p + p[b-jtnoopkk13] {
    margin-top: .4rem;
}

/*
    Na tejto obrazovke ZÁMERNE nie je žiadny pohyb — ani prelnutie plochy dlaždice pod kurzorom,
    ani nabiehanie obsahu pri vykreslení. Sú na to tri dôvody a každý z nich stačí sám:
      1. odozva na prejdenie myšou má byť okamžitá (rovnako ako riadok registra v gate-ui.css),
      2. tie isté vlastnosti (plocha, obruba, farba názvu) sa menia aj pri prepnutí systémovej
         schémy — s prechodom by sa desať dlaždíc do tmavej schémy prelínalo a pôsobí to ako chyba
         vykresľovania, nie ako zámer,
      3. čo sa nehýbe, netreba vypínať cez `prefers-reduced-motion` (WCAG 2.1 AAA, 2.3.3).
*/
