/* ================================================================
   JKZM Admin — Cinematic Light Professional (v8.0)

   Light dashboard variant matching public cinematic site:
   - Off-white body (#f8f9fb) — komfortné pre dlhú prácu
   - Dark navy sidebar (zachováva fokus + brand consistency)
   - Biele karty s jemnými borders
   - Gold akcent #d4b170 (matching public)
   - Inter sans, Fraunces serif pre nadpisy
   - Žiadne detské emoji, iba funkčné symboly (✓ ✕ ★)
   ================================================================ */

:root {
    /* Light admin palette */
    --bg: #f7f8fb !important;
    --bg-2: #ffffff !important;
    --bg-3: #f1f3f7 !important;
    --surface: #ffffff !important;
    --surface-hi: #fafbfd !important;
    --border: #e5e7eb !important;
    --border-hi: #d1d5db !important;
    --ink: #0f172a !important;
    --ink-2: #334155 !important;
    /* --ink-3 bolo #64748b (slate-500). Na bielej má 4,76:1, čiže prešlo —
       lenže admin ho používa aj na tónovaných podkladoch a tam padá pod prah:
       #f7f8fb 4,48:1, #eef2f6 4,23:1, #e5e7eb 3,84:1. Audit admin rozhrania
       (31. 8. 2026) tak našiel 348 prvkov pod AA jedinou premennou. Nová
       hodnota drží ≥ 4,99:1 na najtmavšom z tých podkladov. */
    --ink-3: #576273 !important;
    --gold: #b8954e !important;
    /* Zlatá na TEXT, nie na výplň. `--gold` je odladená ako akcent (rámiky,
       ikony na tmavom); ako farba písmen na bielej má 2,82:1. Rovnaký rozdiel
       drží aj verejný web — tam je `#826418`. */
    --gold-text: #826418 !important;
    --gold-hi: #d4b170 !important;
    --gold-soft: rgba(184, 149, 78, 0.12) !important;

    /* Zelený akcent klubu (Zelená míľa) — primárny od redizajnu v7.7.390.
       Zladené s login obrazovkou. Zlatá ostáva sekundárny premium detail. */
    --accent: #15803d !important;
    --accent-hi: #22c55e !important;
    --accent-text: #86efac !important;
    --accent-soft: rgba(34, 139, 34, 0.14) !important;

    /* Legacy variable overrides */
    --primary: #15803d !important;
    --primary-dark: #166534 !important;
    --primary-light: #22c55e !important;
    --dark: #0f172a !important;
    --gray: #576273 !important;
    --gray-light: #e5e7eb !important;
    --light: #f7f8fb !important;
    --white: #ffffff !important;
    --danger: #dc2626 !important;
    --error: #dc2626 !important;
    /* Farby stavu sa používajú ako TEXT (veta pod licenciami, suma
       „Neuhradené“, „Končí o N dní“) aj ako podklad s bielym textom (toast).
       #059669 mal na bielej 3,76:1 a #d97706 3,07:1 — merané axe nad
       administráciou s dátami (USER-244); bez dát boli tie vety skryté. */
    --success: #047857 !important;
    --warning: #b45309 !important;
    --info: #2563eb !important;
    --muted: #576273 !important;
    --text: #0f172a !important;
    --secondary: #b8954e !important;
    --bg-light: #f7f8fb !important;
    --shadow: 0 1px 2px rgba(15, 23, 42, 0.04), 0 2px 8px rgba(15, 23, 42, 0.04) !important;
    --radius: 12px !important;
}

/* Body — light off-white */
body {
    background: #f7f8fb !important;
    color: var(--ink) !important;
    font-family: 'Inter', system-ui, -apple-system, sans-serif !important;
    -webkit-font-smoothing: antialiased;
    min-height: 100vh;
}

/* Headings — Fraunces pre profesionálny look, tmavá navy */
h1, h2, h3, h4, h5, h6 {
    color: var(--ink) !important;
    letter-spacing: -0.015em !important;
}

/* Sidebar — svetlý (štýl YetiForce): biely podklad, tmavý text,
   aktívna položka ako plný zelený pill. Klubové farby ostávajú. */
.sidebar {
    background: #ffffff !important;
    border-right: 1px solid var(--border) !important;
    color: #1e293b !important;
    box-shadow: 4px 0 20px rgba(15, 23, 42, 0.05);
    z-index: 100 !important;
}
.sidebar-header {
    border-bottom: 1px solid var(--border) !important;
}
.sidebar-header img {
    height: 44px !important;
    filter: none !important;
    background: #f1f5f9;
    padding: 3px;
    border-radius: 50%;
}
.sidebar-header h2 {
    font-size: 0.95rem !important;
    font-weight: 700 !important;
    color: var(--ink) !important;
}
.sidebar-header small {
    font-size: 0.66rem !important;
    letter-spacing: 0.12em !important;
    text-transform: uppercase;
    color: var(--ink-3) !important;
    /* Inline štýl v index.html má `opacity: 0.7`. Na bielom sidebare (ktorý
       tento súbor nastavuje s !important — komentár o „dark navy“ je zastaraný)
       to z --ink-3 spraví efektívnych #939eae, teda 2,71:1 pri 0,66rem texte.
       Prah je 4,5:1. Bez priehľadnosti má tá istá farba 4,78:1.
       Namerané auditom admin rozhrania 31. 8. 2026, 1146 výskytov naprieč
       sekciami — sidebar je na každej obrazovke. */
    opacity: 1 !important;
}

/* Nav items — tmavý text, hover svetlé pozadie, aktívna = zelený pill */
.nav-item {
    color: #33415c !important;
    font-size: 0.88rem !important;
    font-weight: 500 !important;
    padding: 0.52rem 1rem !important;
    border-radius: 8px !important;
    transition: all 0.15s ease !important;
}
.nav-item:hover {
    background: #eef2f6 !important;
    color: var(--ink) !important;
}
.nav-item.active {
    background: var(--accent) !important;
    color: #ffffff !important;
    font-weight: 600 !important;
}
.nav-item:focus-visible {
    outline: 2px solid var(--accent) !important;
    outline-offset: -2px;
    background: #eef2f6 !important;
}
.nav-item .badge {
    background: #dc2626 !important;
    color: #ffffff !important;
    font-weight: 700 !important;
}
.nav-item.active .badge {
    background: rgba(255, 255, 255, 0.25) !important;
}
.nav-section-title {
    color: var(--ink-3) !important;
    font-size: 0.66rem !important;
    letter-spacing: 0.18em !important;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    padding: 0.5rem 1rem !important;
}
.nav-section-title:hover {
    color: var(--ink) !important;
    background: #eef2f6 !important;
}
.nav-section-arrow {
    opacity: 0.45;
    font-size: 0.65em;
    margin-left: 0.5rem;
}
.nav-favorite-star {
    color: #c3cbd6 !important;
    font-size: 0.95em;
    transition: color 0.2s ease, opacity 0.2s ease;
}
.nav-item.active .nav-favorite-star {
    color: rgba(255, 255, 255, 0.7) !important;
}
.nav-favorite-star:hover,
.nav-favorite-star.active {
    color: var(--gold) !important;
    opacity: 1;
}

/* Mode switcher (Klub/Web) — svetlý segmented control */
.mode-switcher {
    background: #eef2f6 !important;
    border: 1px solid var(--border);
    border-radius: 10px !important;
}
.mode-btn {
    color: var(--ink-3) !important;
}
.mode-btn:hover { color: var(--ink) !important; }
.mode-btn.active {
    background: var(--accent) !important;
    color: #fff !important;
}

/* Nav search v sidebari — svetlý input */
.nav-search input {
    background: #f4f6f9 !important;
    border: 1px solid var(--border) !important;
    color: var(--ink) !important;
}
.nav-search input::placeholder { color: #94a3b8 !important; }
.nav-search input:focus {
    background: #fff !important;
    border-color: var(--accent) !important;
    box-shadow: 0 0 0 3px rgba(34, 139, 34, 0.12) !important;
}

/* Obľúbené — svetlý zvýraznený blok */
.nav-section-favorites {
    background: #f2f7f2 !important;
    border: 1px solid #dceadd !important;
}
.nav-section-favorites .nav-section-title { color: var(--accent) !important; }
.nav-section-favorites .nav-item { background: transparent !important; }
.nav-section-favorites .nav-item:hover { background: #e3efe3 !important; }
.nav-section-favorites .nav-item.active { background: var(--accent) !important; }

/* Spodné odkazy sidebaru (Zobraziť web, Odhlásiť…) — inline biele oddeľovače
   z tmavej éry sú na svetlom podklade neviditeľné → prefarbi na border token */
.sidebar div[style*="border-top"] {
    border-top-color: var(--border) !important;
}

/* Main content area */
.main {
    padding: 2rem 2.5rem !important;
    background: #f7f8fb !important;
}

/* Header (page topbar) */
.header {
    background: transparent !important;
    border-bottom: 1px solid var(--border) !important;
    padding: 1rem 0 !important;
    margin-bottom: 1.5rem !important;
}
.header h1 {
    font-size: 1.45rem !important;
    font-weight: 500 !important;
    color: var(--ink) !important;
    font-family: 'Fraunces', 'Inter', serif !important;
    letter-spacing: -0.02em !important;
}

/* Buttons */
.btn {
    font-family: 'Inter', system-ui, sans-serif !important;
    font-weight: 500 !important;
    letter-spacing: 0.01em !important;
    border-radius: 10px !important;
    transition: all 0.2s ease !important;
    padding: 0.6rem 1.1rem !important;
}
.btn-primary {
    background: var(--accent) !important;
    color: #ffffff !important;
    border: 1px solid var(--accent) !important;
    font-weight: 600 !important;
}
.btn-primary:hover {
    background: #166534 !important;
    border-color: #166534 !important;
    transform: translateY(-1px);
    box-shadow: 0 6px 16px rgba(21, 128, 61, 0.24);
}
.btn-outline,
.btn-secondary {
    background: #ffffff !important;
    border: 1px solid var(--border-hi) !important;
    color: var(--ink-2) !important;
}
/* Text na zlatej je `--gold-text` a podklad nepriehľadný (USER-244): `--gold`
   na priesvitnom `--gold-soft` mal 2,26:1 nad zelenou dlaždicou rozvrhu —
   a na dotykovej obrazovke stav „hover“ po ťuknutí ostáva. */
.btn-outline:hover,
.btn-secondary:hover {
    border-color: var(--accent) !important;
    color: var(--gold-text) !important;
    background: #f7f2ea !important;
}
.btn-gold {
    background: var(--gold-hi) !important;
    color: var(--ink) !important;
    border: 1px solid var(--gold-hi) !important;
    font-weight: 600 !important;
}
.btn-gold:hover {
    background: var(--gold) !important;
    border-color: var(--gold) !important;
    color: #fff !important;
    transform: translateY(-1px);
}
.btn-danger {
    background: #fff !important;
    border: 1px solid #fecaca !important;
    color: #b91c1c !important;
}
.btn-danger:hover {
    background: #fef2f2 !important;
    border-color: #ef4444 !important;
    color: #991b1b !important;
}
.btn-sm {
    font-size: 0.78rem !important;
    padding: 0.4rem 0.85rem !important;
}

/* Cards */
.card {
    background: #ffffff !important;
    border: 1px solid var(--border) !important;
    border-radius: var(--radius) !important;
    box-shadow: var(--shadow) !important;
    color: var(--ink) !important;
}
.card-header {
    background: #fafbfd !important;
    border-bottom: 1px solid var(--border) !important;
    padding: 1rem 1.25rem !important;
}
.card-header h3 {
    font-size: 0.98rem !important;
    font-weight: 600 !important;
    color: var(--ink) !important;
    font-family: 'Fraunces', 'Inter', serif !important;
}
.card-body {
    padding: 1.25rem !important;
    color: var(--ink-2) !important;
}

/* Stats cards */
.stat-card {
    background: #ffffff !important;
    border: 1px solid var(--border) !important;
    border-radius: var(--radius) !important;
    box-shadow: var(--shadow) !important;
    padding: 1.25rem !important;
    transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease !important;
}
.stat-card:hover {
    transform: translateY(-2px) !important;
    box-shadow: 0 12px 28px -10px rgba(15, 23, 42, 0.18) !important;
    border-color: rgba(34, 139, 34, 0.28) !important;
}
.stat-card .icon,
.stat-card .icon.green {
    background: var(--accent-soft) !important;
    color: var(--accent) !important;
    border-radius: 10px !important;
}
.stat-card .value {
    color: var(--ink) !important;
    font-weight: 600 !important;
    font-family: 'Fraunces', 'Inter', serif !important;
    letter-spacing: -0.02em !important;
}
.stat-card .label {
    color: var(--ink-3) !important;
    font-size: 0.76rem !important;
    text-transform: uppercase !important;
    letter-spacing: 0.09em !important;
    font-weight: 600 !important;
}

/* Tables */
.table {
    background: #ffffff !important;
    border-radius: var(--radius) !important;
    overflow: hidden;
    border: 1px solid var(--border) !important;
    box-shadow: var(--shadow) !important;
}
.table th {
    background: #f7f8fb !important;
    color: var(--ink-3) !important;
    font-size: 0.72rem !important;
    text-transform: uppercase !important;
    letter-spacing: 0.1em !important;
    font-weight: 600 !important;
    border-bottom: 1px solid var(--border) !important;
    padding: 0.6rem 0.9rem !important;
}
.table td {
    border-bottom: 1px solid var(--border) !important;
    font-size: 0.86rem !important;
    padding: 0.65rem 0.9rem !important;
    color: var(--ink-2) !important;
}
.table tbody tr:hover {
    background: var(--accent-soft) !important;
}
.table tbody tr:hover td {
    color: var(--ink) !important;
}

/* Badges */
.badge {
    font-size: 0.72rem !important;
    font-weight: 600 !important;
    padding: 0.25rem 0.6rem !important;
    border-radius: 999px !important;
    letter-spacing: 0.03em !important;
    /* Bez !important (USER-244): odznak počtu v menu sa skrýva vložením
       `style.display = 'none'` a !important ho prebíjal — pri každej položke
       s odznakom svietila prázdna červená bodka, aj keď nič nečakalo. */
    display: inline-flex;
    align-items: center !important;
}
.badge-success {
    background: #d1fae5 !important;
    color: #065f46 !important;
    border: 1px solid #a7f3d0 !important;
}
.badge-warning {
    background: #fef3c7 !important;
    color: #92400e !important;
    border: 1px solid #fde68a !important;
}
.badge-danger {
    background: #fee2e2 !important;
    color: #991b1b !important;
    border: 1px solid #fecaca !important;
}
.badge-info {
    background: #dbeafe !important;
    color: #1e40af !important;
    border: 1px solid #bfdbfe !important;
}

/* Modals */
.modal-content {
    background: #ffffff !important;
    border-radius: 14px !important;
    border: 1px solid var(--border) !important;
    box-shadow: 0 30px 80px rgba(15, 23, 42, 0.2) !important;
    color: var(--ink) !important;
}
.modal-header {
    background: #fafbfd !important;
    border-bottom: 1px solid var(--border) !important;
    color: var(--ink) !important;
}
.modal-header h3,
.modal-header h2 {
    color: var(--ink) !important;
    font-family: 'Fraunces', 'Inter', serif !important;
    font-weight: 500 !important;
}
.modal-footer {
    background: #f7f8fb !important;
    border-top: 1px solid var(--border) !important;
}
.modal-body {
    color: var(--ink-2) !important;
}

/* Form controls */
.form-control,
input[type="text"], input[type="email"], input[type="tel"],
input[type="password"], input[type="number"], input[type="date"],
input[type="time"], input[type="datetime-local"], input[type="search"],
input[type="url"],
textarea, select {
    background: #ffffff !important;
    border: 1px solid var(--border-hi) !important;
    border-radius: 8px !important;
    color: var(--ink) !important;
    font-size: 0.9rem !important;
    padding: 0.65rem 0.85rem !important;
    font-family: inherit !important;
    transition: border-color 0.2s ease, box-shadow 0.2s ease !important;
}
.form-control:focus,
input:focus, textarea:focus, select:focus {
    border-color: var(--accent) !important;
    outline: none !important;
    box-shadow: 0 0 0 3px rgba(34, 139, 34, 0.14) !important;
}
.form-control::placeholder,
input::placeholder, textarea::placeholder {
    color: #94a3b8 !important;
}
/* Vysvetlivka pod poľom. Farba je --ink-3 (#576273), ktorá má na bielej aj
   na najtmavšom admin podklade (#e5e7eb) nad 4,5:1 — pozri CLAUDE.md,
   premenná farby platí naprieč podkladmi, prah nie. */
.form-hint {
    display: block;
    margin-top: 0.3rem;
    color: var(--ink-3) !important;
    font-size: 0.78rem;
    line-height: 1.4;
}
label {
    color: var(--ink-2) !important;
    font-weight: 500 !important;
    font-size: 0.86rem !important;
}

/* Tabs */
.tabs,
.tab-bar {
    border-bottom: 1px solid var(--border) !important;
}
.tab {
    font-size: 0.88rem !important;
    font-weight: 500 !important;
    letter-spacing: 0.01em !important;
    color: var(--ink-3) !important;
    padding: 0.75rem 1rem !important;
    transition: color 0.2s ease, border-color 0.2s ease !important;
}
/* Záložka ako <button> (Úhrady, USER-102) nesmie niesť sivý podklad
   prehliadača — na #efefef mala zelená 4,36:1, pod prahom 4,5:1. */
button.tab {
    background: transparent;
    border: 0;
    border-bottom: 2px solid transparent;
    font-family: inherit;
}
.tab:hover { color: var(--ink-2) !important; }
.tab.active {
    color: var(--accent) !important;
    border-bottom: 2px solid var(--accent) !important;
    font-weight: 600 !important;
}

/* Alerts */
.alert {
    border-radius: var(--radius) !important;
    font-size: 0.88rem !important;
    padding: 0.85rem 1rem !important;
    line-height: 1.55;
}
.alert-info {
    background: #eff6ff !important;
    border-left: 3px solid #2563eb !important;
    color: #1e40af !important;
}
.alert-warning {
    background: #fffbeb !important;
    border-left: 3px solid #d97706 !important;
    color: #92400e !important;
}
.alert-success {
    background: #ecfdf5 !important;
    border-left: 3px solid #059669 !important;
    color: #065f46 !important;
}
.alert-danger {
    background: #fef2f2 !important;
    border-left: 3px solid #dc2626 !important;
    color: #991b1b !important;
}

/* Quick actions */
.quick-action {
    background: #ffffff !important;
    border: 1px solid var(--border) !important;
    border-radius: var(--radius) !important;
    box-shadow: var(--shadow) !important;
    color: var(--ink) !important;
    transition: all 0.25s ease !important;
    padding: 1.25rem !important;
}
.quick-action:hover {
    border-color: var(--accent) !important;
    transform: translateY(-2px);
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.1) !important;
}

/* Toast */
.toast {
    background: var(--ink) !important;
    color: #f5f6f9 !important;
    border-radius: 10px !important;
    font-size: 0.88rem !important;
    padding: 0.8rem 1.1rem !important;
    box-shadow: 0 12px 30px rgba(15, 23, 42, 0.3) !important;
}
.toast.success { background: #059669 !important; color: #fff !important; }
.toast.error, .toast.danger { background: #dc2626 !important; color: #fff !important; }
.toast.warning { background: #d97706 !important; color: #fff !important; }
.toast.info { background: #2563eb !important; color: #fff !important; }

/* Login page */
.login-page {
    background: linear-gradient(135deg, #0a1628 0%, #112240 100%) !important;
    color: #f5f6f9;
    min-height: 100vh;
}
.login-box {
    background: #ffffff !important;
    border-radius: 16px !important;
    box-shadow: 0 30px 80px rgba(0, 0, 0, 0.35) !important;
    border: 1px solid var(--border) !important;
    color: var(--ink) !important;
}
.login-box h1, .login-box h2 { color: var(--ink) !important; }

/* Fieldset */
.fieldset,
fieldset {
    background: #fafbfd !important;
    border: 1px solid var(--border) !important;
    border-radius: var(--radius) !important;
    padding: 1rem 1.25rem !important;
}
/* Menovka rámčeka je TEXT, takže platí `--gold-text` (#826418, 5,55:1 na
   bielej), nie akcentová `--gold` (#b8954e, 2,81:1) — tá je odladená na
   rámiky a ikony. Pri 0,72 rem a váhe 700 nejde o „veľký text“, čiže platí
   prah 4,5:1.

   Nález nebolo dovtedy z čoho vidieť: každý `fieldset` v admine žil vnútri
   zavretého modálu a axe hodnotí len viditeľné prvky. Prvý, ktorý je
   viditeľný bez otvorenia modálu, pribudol vo v7.9.43 v sekcii „Arény
   a časy“ — a hneď to ohlásil. Oprava je preto centrálna: týka sa všetkých
   rámčekov, nielen toho jedného. */
.fieldset legend,
fieldset legend {
    color: var(--gold-text) !important;
    font-size: 0.72rem !important;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-weight: 700;
    padding: 0 0.5rem;
    background: #fff;
}

/* Sort indicators */
.jkzm-sort-indicator {
    color: var(--accent) !important;
}

/* Links */
a { color: var(--accent); text-decoration: none; }
a:hover { color: var(--primary-dark); text-decoration: underline; }
/* WCAG 1.4.1: odkaz vnútri súvislého textu sa nesmie od okolia líšiť IBA
   farbou — kto farby nerozlišuje, nemá ako zistiť, že tam odkaz je. Mimo
   textových blokov (tlačidlá, akcie v tabuľke, navigácia) to neplatí, tam
   odkaz nesie tvar sám. Verejný web má rovnaké pravidlo v cinematic.css. */
p a:not(.btn), small a:not(.btn), li a:not(.btn),
.prose-note a:not(.btn) { text-decoration: underline; }

/* Scrollbar */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: #f1f3f7; }
::-webkit-scrollbar-thumb {
    background: #cbd5e1;
    border-radius: 5px;
    border: 2px solid #f1f3f7;
}
::-webkit-scrollbar-thumb:hover { background: var(--gold-hi); }

/* Print */
@media print {
    .sidebar, .toast, .btn, .header { display: none !important; }
    .main { margin-left: 0 !important; padding: 0 !important; }
    body { background: #fff !important; }
    .card { box-shadow: none !important; border: 1px solid #ddd !important; }

    /* Tlač jedného výsledku (tréningový plán). Bez tohto sa na papier dostal
       aj zadávací formulár so selectmi — teda pol strany, ktorá na vytlačenom
       pláne nemá čo hľadať. Triedu nasadzuje tlačidlo tesne pred `print()`
       a po `afterprint` ju zase odoberá. */
    body.tg-tlac .section.active > *:not(#tgResult) { display: none !important; }
    body.tg-tlac #tgResult { margin-top: 0 !important; }
    /* Upravené polia sa tlačia ako text, nie ako editovateľné okienka. */
    body.tg-tlac [contenteditable] { outline: none !important; border: 0 !important; }
}

/* Miesta, ktoré tréner môže priamo prepísať, musia byť rozpoznateľné —
   inak o tej možnosti nevie. Rám sa ukáže až pri prejdení myšou a pri fokuse,
   aby plán vyzeral pokojne. */
.tg-upravitelne {
    border-radius: 4px;
    padding: 0 0.15rem;
    margin: 0 -0.15rem;
    transition: background 0.15s ease, box-shadow 0.15s ease;
}
.tg-upravitelne:hover { background: #f1f5f9; }
.tg-upravitelne:focus {
    outline: none;
    background: #fff;
    box-shadow: 0 0 0 2px var(--accent);
}

/* Loading state animations — pridáva animované bodky za "Načítavam" text */
@keyframes loading-pulse {
    0%, 80%, 100% { opacity: 0.3; }
    40% { opacity: 1; }
}
p[data-loading], .loading-state {
    position: relative;
}
p[data-loading]::after, .loading-state::after {
    content: '...';
    display: inline-block;
    animation: loading-pulse 1.4s infinite;
    margin-left: 2px;
}

/* Skeleton placeholder — pre tabuľky pri načítavaní */
.skeleton {
    background: linear-gradient(90deg, var(--ink-subtle) 0%, var(--border) 50%, var(--ink-subtle) 100%);
    background-size: 200% 100%;
    animation: skeleton-shimmer 1.5s infinite;
    border-radius: 6px;
    min-height: 1rem;
}
@keyframes skeleton-shimmer {
    0% { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* Vodorovné pretečenie (WCAG 1.4.10 Reflow): pole so šírkou zapísanou v pixeloch
   sa na úzkom displeji samo nezmenší a rozťahuje celý dokument do strán.
   `max-width` je poistka pre celý admin — zapísaná šírka ostáva v platnosti,
   len prestane pretláčať rodiča. Nájdené auditom admin rozhrania 31. 8. 2026
   (pokladňa: dve dátumové polia po 150 px vo flexe bez zalomenia). */
.form-control,
input:not([type="checkbox"]):not([type="radio"]),
select,
textarea {
    max-width: 100%;
}

/* Mobile table scrolling — každá .card-body s tabuľkou dostane horizontal scroll na malých displejoch */
@media (max-width: 900px) {
    .card-body:has(> table.table),
    .card-body:has(> div > table.table) {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
    .card-body table.table {
        min-width: 640px; /* aby sa neskalilo nečitateľne */
    }
    .card-body table.table th,
    .card-body table.table td {
        white-space: nowrap;
    }
    /* Actions column — zabezpečiť dostatok miesta pre tlačidlá */
    .card-body table.table td:last-child {
        white-space: nowrap;
        min-width: 180px;
    }
}

/* Tooltip style pre title atribút (pomôže kde sme pridali title + label) */
[title]:hover { cursor: help; }
button[title]:hover { cursor: pointer; }

/* Toast pridanie slide-in animácie */
.toast {
    transform: translateY(30px);
    opacity: 0;
    transition: transform 0.3s ease, opacity 0.3s ease;
}
.toast.show {
    transform: translateY(0);
    opacity: 1;
}

/* ================================================================
   TOPBAR — breadcrumbs + globálne hľadanie + používateľ
   (rozloženie v štýle YetiForce, farby ostávajú klubové)
   ================================================================ */
.topbar {
    position: sticky;
    top: 0.5rem;
    z-index: 60;
    display: flex;
    align-items: center;
    gap: 1.25rem;
    background: #ffffff;
    border: 1px solid var(--border);
    border-radius: 12px;
    box-shadow: var(--shadow);
    padding: 0.5rem 1rem;
    margin-bottom: 1.5rem;
}
.topbar-breadcrumb {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    font-size: 0.85rem;
    color: var(--ink-3);
    white-space: nowrap;
}
.topbar-breadcrumb strong { color: var(--ink); font-weight: 600; }
.topbar-breadcrumb .bc-sep { opacity: 0.45; }
.topbar-breadcrumb .bc-root { color: var(--accent); font-weight: 600; }
.topbar-search {
    position: relative;
    flex: 1;
    max-width: 520px;
    display: flex;
    align-items: center;
}
.topbar-search svg {
    position: absolute;
    left: 0.75rem;
    color: var(--ink-3);
    pointer-events: none;
}
.topbar-search input {
    width: 100%;
    padding: 0.5rem 0.9rem 0.5rem 2.3rem !important;
    border-radius: 9px !important;
    font-size: 0.88rem !important;
}
.topbar-search-results {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    right: 0;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 10px;
    box-shadow: 0 16px 40px rgba(15, 23, 42, 0.14);
    overflow: hidden;
    z-index: 80;
}
.topbar-search-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    width: 100%;
    border: 0;
    background: #fff;
    padding: 0.6rem 0.9rem;
    font-family: inherit;
    font-size: 0.88rem;
    color: var(--ink);
    cursor: pointer;
    text-align: left;
}
.topbar-search-item:hover,
.topbar-search-item.active { background: var(--accent-soft); }
.topbar-search-item small { color: var(--ink-3); font-size: 0.74rem; }
.topbar-search-empty { padding: 0.75rem 0.9rem; font-size: 0.85rem; color: var(--ink-3); }
.topbar-right { margin-left: auto; display: flex; align-items: center; gap: 0.5rem; }
.topbar-icon-btn {
    width: 36px;
    height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--border);
    border-radius: 9px;
    background: #fff;
    color: var(--ink-2);
    cursor: pointer;
    transition: all 0.15s ease;
}
.topbar-icon-btn:hover { border-color: var(--accent); color: var(--accent); }
.topbar-user {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    border: 1px solid var(--border);
    border-radius: 999px;
    padding: 0.25rem 0.85rem 0.25rem 0.3rem;
    background: #fafbfd;
}
.topbar-user-avatar {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: var(--accent);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.78rem;
    font-weight: 700;
}
.topbar-user-meta { display: flex; flex-direction: column; line-height: 1.15; }
.topbar-user-name { font-size: 0.82rem; font-weight: 600; color: var(--ink); }
.topbar-user-role { font-size: 0.68rem; color: var(--ink-3); text-transform: uppercase; letter-spacing: 0.06em; }
@media (max-width: 1023px) {
    /* Pod fixným horným pruhom (68px) na tablete/mobile */
    .topbar { position: static; flex-wrap: wrap; gap: 0.6rem; padding: 0.5rem 0.75rem; }
    .topbar-breadcrumb { width: 100%; overflow-x: auto; order: 2; }
    .topbar-search { order: 0; flex: 1 1 200px; max-width: none; }
    .topbar-right { order: 1; }
    .topbar-user-meta { display: none; }
}
@media print { .topbar { display: none !important; } }
