/*
 * KALM UI theme – token layer (MSD RVT, B-03)
 * Spec: docs/superpowers/specs/2026-09-03-kalm-ui-redesign-design.md
 *
 * CSS-only: tokeny + overrides Bootstrap 4.1 / style.css. Bez zmeny HTML štruktúry stránok.
 * Tmavý režim = kalm-theme-dark.css (prepis tokenov na :root), nie druhý Bootstrap.
 * Špecificita max. `.dashboard-wrapper .card`; !important len tam, kde ho má už style.css.
 */

/* ---------- Písmo: Ubuntu (Ubuntu Font Licence, ako omnius.sk), woff2 400/500/700, latin + latin-ext ---------- */
@font-face {
    font-family: 'Ubuntu';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('/assets/vendor/fonts/ubuntu/Ubuntu-400-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Ubuntu';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('/assets/vendor/fonts/ubuntu/Ubuntu-400-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'Ubuntu';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('/assets/vendor/fonts/ubuntu/Ubuntu-500-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Ubuntu';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('/assets/vendor/fonts/ubuntu/Ubuntu-500-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'Ubuntu';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('/assets/vendor/fonts/ubuntu/Ubuntu-700-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Ubuntu';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('/assets/vendor/fonts/ubuntu/Ubuntu-700-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ---------- Tokeny ---------- */
/* Paleta omnius.sk (4.9.2026): navy #212170 / #0c0c3a, blue #2a81ff (hover #0153ff), cyan #3ce7fc, amber #f7a90c, emerald #00bb7f (v UI ako --k-moss #007F57 kvôli AA kontrastu bieleho textu) */
:root {
    --k-ground:   #F0F2F6;
    --k-surface:  #FFFFFF;
    --k-ink:      #212170;
    --k-ink-2:    #5F5F94;
    --k-line:     #EDEDF4;
    --k-spruce:   #0C0C3A;   /* sidebar a login panel – omnius deep navy */
    --k-spruce-2: #161653;   /* submenu / hover plocha v sidebari */
    --k-snow:     #FFFFFF;   /* text na navy */
    --k-snow-2:   #9A9AC4;   /* sekundárny text na navy */
    --k-navy:     #212170;
    --k-cyan:     #3CE7FC;   /* aktívna položka, akcent */
    --k-glacier:  #0B6BE6;   /* primárna akcia – omnius blue #2A81FF stmavená, aby biely text mal AA (4.9:1; pôvodná 3.7:1) */
    --k-glacier-2:#0153FF;   /* hover primárnej akcie (biely text 5.7:1) */
    --k-on-glacier:#FFFFFF;  /* text na ploche --k-glacier / --k-glacier-2 (tlačidlá, badge, aktívne položky); tmavý režim ho mení na tmavý */
    --k-link:     #0153FF;   /* textové odkazy (a, .btn-link, .page-link, .text-primary): AA 5.7:1 na bielej, 5.1:1 na --k-ground; inštancia ich prepisuje bez zásahu do tlačidiel */
    --k-link-2:   #0040C4;   /* hover odkazu */
    --k-moss:     #007F57;   /* emerald stmavený – biely text AA 5.0:1 (.bg-success/.btn-success/.badge-success) */
    --k-amber:    #F7A90C;
    --k-signal:   #DC2626;   /* biely text aj text na bielej AA 4.8:1 (pôvodná #EF4444 mala 3.8:1) */
    --k-signal-2: #A33526;   /* hover .btn-danger */
    --k-on-signal:#FFFFFF;   /* text na ploche --k-signal */
    --k-on-ink-2: #FFFFFF;   /* text na ploche --k-ink-2 (.badge-secondary, .bg-secondary) */
    --k-enter:    #2A81FF;
    --k-leave:    #2CBEFB;   /* blue → cyan pár ako omnius blades */
    --k-moss-ink: #006B4A;   /* emerald ako text na svetlom podklade (AA 5.9:1) */
    --k-amber-ink:#7A4A00;   /* amber ako text na svetlom podklade (omnius) */
    --k-on-amber: #0C0C3A;   /* text na amber ploche */
    --k-hover:    rgba(42, 129, 255, 0.06);
    --k-focus:    rgba(42, 129, 255, 0.30);

    --k-font: 'Ubuntu', system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;
    --k-fs-12: 12px;
    --k-fs-13: 13px;
    --k-fs-14: 14px;
    --k-fs-17: 17px;
    --k-fs-20: 20px;
    --k-fs-24: 24px;
    --k-fs-29: 29px;

    --k-radius: 6px;
    --k-radius-sm: 4px;
    --k-space-1: 4px;
    --k-space-2: 8px;
    --k-space-3: 12px;
    --k-space-4: 16px;
    --k-space-5: 24px;
    --k-sidebar-w: 232px;
}

/* ---------- Základ ---------- */
html { background-color: var(--k-ground); }
body {
    font-family: var(--k-font);
    font-size: var(--k-fs-14);
    font-weight: 400;
    line-height: 1.45;
    color: var(--k-ink);
    background-color: var(--k-ground);
    -webkit-font-smoothing: antialiased;
}
h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
    font-family: var(--k-font);
    color: var(--k-ink);
    font-weight: 600;
    margin: 0 0 var(--k-space-3);
}
h1, .h1 { font-size: var(--k-fs-29); }
h2, .h2 { font-size: var(--k-fs-24); }
h3, .h3 { font-size: var(--k-fs-20); }
h4, .h4 { font-size: var(--k-fs-17); }
h5, .h5 { font-size: var(--k-fs-14); }
h6, .h6 { font-size: var(--k-fs-12); font-weight: 500; }
.k-page-title { font-size: var(--k-fs-24); font-weight: 600; }
a { color: var(--k-link); }
a:hover { color: var(--k-link-2); }
hr { border-top-color: var(--k-line); }
code { color: var(--k-ink); background: var(--k-ground); padding: 1px 4px; border-radius: 3px; }
.text-primary { color: var(--k-link) !important; }
.text-success { color: var(--k-moss-ink) !important; }
.text-warning { color: var(--k-amber-ink) !important; }
.text-danger  { color: var(--k-signal) !important; }
.text-muted, .text-secondary { color: var(--k-ink-2) !important; }
.text-dark    { color: var(--k-ink) !important; }
.bg-light     { background-color: var(--k-ground) !important; }
.bg-white     { background-color: var(--k-surface) !important; }
.border, .border-top, .border-bottom, .border-left, .border-right { border-color: var(--k-line) !important; }
.tabular, .k-num, .table td.num, .table th.num { font-variant-numeric: tabular-nums; text-align: right; }
.k-enter { color: var(--k-enter) !important; }
.k-leave { color: var(--k-leave) !important; }

/* ---------- Layout ---------- */
.dashboard-main-wrapper { padding-top: 0; background-color: var(--k-ground); }
.dashboard-content { padding: var(--k-space-4) 20px 48px; }
@media only screen and (min-width: 769px) {
    .nav-left-sidebar { width: var(--k-sidebar-w); top: 0; height: 100%; }
    .dashboard-wrapper, .dashboard-main-wrapper .main-content { margin-left: var(--k-sidebar-w); }
}

/* ---------- Sidebar: jediná sýta plocha ---------- */
.nav-left-sidebar, .sidebar-dark, .nav-left-sidebar.sidebar-dark {
    background-color: var(--k-spruce);
    background-image: linear-gradient(180deg, var(--k-spruce-2) 0%, var(--k-spruce) 40%, #04040E 100%);   /* omnius: navy → deep */
    box-shadow: none;
    -webkit-box-shadow: none;
    border-right: 1px solid rgba(0, 0, 0, 0.12);
}
.nav-left-sidebar .navbar { padding: var(--k-space-3) var(--k-space-2); }
.nav-left-sidebar .navbar-nav > a img { margin: var(--k-space-2) auto var(--k-space-3); display: block; }
.sidebar-dark .nav-divider, .nav-divider {
    color: var(--k-snow-2);
    text-transform: none;
    letter-spacing: 0;
    font-size: var(--k-fs-12);
    font-weight: 500;
    line-height: 1.4;
    padding: var(--k-space-2) var(--k-space-3);
    border-color: rgba(255, 255, 255, 0.12) !important;
}
.nav-left-sidebar .navbar-nav .nav-link,
.sidebar-dark.nav-left-sidebar .navbar-nav .nav-link,
.sidebar-dark.nav-left-sidebar .nav-link i,
.nav-left-sidebar .nav-link i {
    color: var(--k-snow) !important;
}
.nav-left-sidebar .navbar-nav .nav-link {
    font-size: var(--k-fs-14);
    font-weight: 500;
    padding: 9px var(--k-space-3);
    border-radius: 0 var(--k-radius-sm) var(--k-radius-sm) 0;
    transition: background-color .15s ease;
    box-shadow: inset 3px 0 0 transparent;
}
.nav-left-sidebar .nav-link i { font-size: var(--k-fs-14); opacity: .85; }
.nav-left-sidebar .navbar-nav .nav-link:hover,
.nav-left-sidebar .navbar-nav .nav-link:focus,
.sidebar-dark.nav-left-sidebar .navbar-nav .nav-link:hover,
.sidebar-dark.nav-left-sidebar .navbar-nav .nav-link:focus,
.nav-left-sidebar .submenu .nav .nav-item .nav-link:hover,
.sidebar-dark.nav-left-sidebar .submenu .nav .nav-item .nav-link:hover {
    background-color: rgba(255, 255, 255, 0.07);
    color: var(--k-snow) !important;
    box-shadow: inset 3px 0 0 transparent;
    border-radius: 0 var(--k-radius-sm) var(--k-radius-sm) 0;
}
.nav-left-sidebar .navbar-nav .nav-link.active,
.sidebar-dark.nav-left-sidebar .navbar-nav .nav-link.active {
    background-color: rgba(255, 255, 255, 0.05);
    color: var(--k-snow) !important;
    box-shadow: inset 3px 0 0 var(--k-cyan);     /* cyan pruh vľavo (omnius akcent) namiesto vyplneného obdĺžnika */
    border-radius: 0 var(--k-radius-sm) var(--k-radius-sm) 0;
}
.nav-left-sidebar .submenu { background-color: var(--k-spruce-2); padding: var(--k-space-1) 0 var(--k-space-1) var(--k-space-3); z-index: 1; border-radius: 0; }
.nav-left-sidebar .submenu .nav .nav-item .nav-link { font-size: var(--k-fs-13); font-weight: 400; padding: 6px var(--k-space-3); }
.nav-left-sidebar .submenu .submenu { padding-left: var(--k-space-3); }
.nav-left-sidebar .nav-link[data-toggle=collapse]::after { right: var(--k-space-3); opacity: .6; }
.nav-left-sidebar .navbar-toggler { background-color: transparent; border-color: rgba(255, 255, 255, 0.3); }
.nav-left-sidebar .navbar-toggler-icon { filter: invert(1); }

/* ---------- Karty: hairline, bez tieňa, neutrálna hlavička + 3 px modulový akcent ---------- */
.dashboard-wrapper .card, .card {
    background-color: var(--k-surface);
    border: 1px solid var(--k-line);
    border-radius: var(--k-radius);
    box-shadow: none;
    -webkit-box-shadow: none;
    -moz-box-shadow: none;
    margin-bottom: var(--k-space-4);
}
.dashboard-wrapper .card .card-header, .card .card-header,
.dashboard-wrapper .card-header {
    background-color: var(--k-surface);
    color: var(--k-ink);
    border: 0;
    border-bottom: 1px solid var(--k-line);
    border-radius: var(--k-radius) var(--k-radius) 0 0;
    font-size: var(--k-fs-17);
    font-weight: 600;
    padding: 10px 14px;
}
.dashboard-wrapper .card .card-header:first-child { border-radius: calc(var(--k-radius) - 1px) calc(var(--k-radius) - 1px) 0 0; }
.dashboard-wrapper .card-body, .card-body { border: 0; margin-top: 0; }
.dashboard-wrapper .card-footer, .card-footer { background-color: var(--k-ground); border-top: 1px solid var(--k-line); }
.card-header-title { font-size: var(--k-fs-17); font-weight: 600; line-height: 1.6; color: inherit; }
.card-header .text-white, .card-header.bg-primary .text-white, .card-header.bg-secondary .text-white, .card-header.bg-danger .text-white { color: var(--k-ink) !important; }
.card-header .btn .text-white { color: inherit !important; }   /* ikony text-white v tlačidlách hlavičky (env_station_map) berú farbu tlačidla, nie --k-ink */
.card-header a.text-white { color: var(--k-link) !important; }
.card-header .text-light { color: var(--k-ink-2) !important; }
.card-header .card-header-title, .card-header h4, .card-header h5, .card-header strong { color: var(--k-ink); }

/* dnešné celoplošné farebné hlavičky → neutrál + akcent podľa modulu (trieda na sidebari, sibling .dashboard-wrapper) */
.dashboard-wrapper .card-header.bg-primary,
.dashboard-wrapper .card-header.bg-secondary,
.dashboard-wrapper .card-header.bg-danger,
.dashboard-wrapper .card-header.bg-dark,
.dashboard-wrapper .card-header.bg-success,
.dashboard-wrapper .card-header.bg-warning,
.dashboard-wrapper .card-header.bg-info {
    background-color: var(--k-surface) !important;
    color: var(--k-ink) !important;
    box-shadow: inset 3px 0 0 var(--k-glacier);
}
.k-module-env ~ .dashboard-wrapper .card-header.bg-primary,
.k-module-env ~ .dashboard-wrapper .card-header.bg-dark,
.k-module-env ~ .dashboard-wrapper .card-header.bg-success { box-shadow: inset 3px 0 0 var(--k-moss); }
.k-module-parking ~ .dashboard-wrapper .card-header.bg-primary,
.k-module-parking ~ .dashboard-wrapper .card-header.bg-dark { box-shadow: inset 3px 0 0 var(--k-amber); }
.dashboard-wrapper .card-header.bg-secondary,
.dashboard-wrapper .card-header.bg-warning { box-shadow: inset 3px 0 0 var(--k-amber); }
.dashboard-wrapper .card-header.bg-danger { box-shadow: inset 3px 0 0 var(--k-signal); }
.card.k-accent-traffic > .card-header, .card.k-accent-traffic > .card-header.bg-primary { box-shadow: inset 3px 0 0 var(--k-glacier); }
.card.k-accent-env > .card-header,     .card.k-accent-env > .card-header.bg-primary     { box-shadow: inset 3px 0 0 var(--k-moss); }
.card.k-accent-parking > .card-header, .card.k-accent-parking > .card-header.bg-primary { box-shadow: inset 3px 0 0 var(--k-amber); }
.card.k-accent-alert > .card-header,   .card.k-accent-alert > .card-header.bg-primary   { box-shadow: inset 3px 0 0 var(--k-signal); }
.dashboard-wrapper .card-header.bg-primary .form-control,
.dashboard-wrapper .card-header.bg-primary .bootstrap-select .dropdown-toggle { color: var(--k-ink); }
.dashboard-wrapper .card-header.bg-primary p, .dashboard-wrapper .card-header.bg-primary label { color: var(--k-ink); }

/* ostatné .bg-* mimo hlavičiek kariet nesú význam podľa tokenov */
.bg-primary:not(.card-header):not(.modal-header) { background-color: var(--k-glacier) !important; color: var(--k-on-glacier) !important; }
.bg-secondary:not(.card-header) { background-color: var(--k-ink-2) !important; color: var(--k-on-ink-2) !important; }
.bg-success:not(.card-header) { background-color: var(--k-moss) !important; color: #fff !important; }
.bg-danger:not(.card-header)  { background-color: var(--k-signal) !important; color: var(--k-on-signal) !important; }
.bg-warning:not(.card-header) { background-color: var(--k-amber) !important; color: var(--k-on-amber) !important; }
.bg-info:not(.card-header)    { background-color: var(--k-glacier) !important; color: var(--k-on-glacier) !important; }
.bg-dark:not(.card-header)    { background-color: var(--k-spruce) !important; color: var(--k-snow) !important; }
.processing.bg-warning { background-color: var(--k-amber) !important; }
.processing .progress-bar { background-color: var(--k-amber) !important; color: var(--k-on-amber) !important; }
.processing .text-dark { color: var(--k-on-amber) !important; }

/* ---------- Dlaždice s číslom ---------- */
.k-metric { text-align: center; padding: var(--k-space-4) var(--k-space-3); }
.k-metric .k-metric-value { font-size: var(--k-fs-29); font-weight: 600; line-height: 1.1; font-variant-numeric: tabular-nums; color: var(--k-ink); }
.k-metric .k-metric-unit  { font-size: var(--k-fs-14); font-weight: 400; margin-left: var(--k-space-1); color: var(--k-ink-2); }
.k-metric .k-metric-label { font-size: var(--k-fs-12); font-weight: 500; color: var(--k-ink-2); margin-top: var(--k-space-1); }
.k-metric .k-metric-sub   { font-size: var(--k-fs-12); color: var(--k-ink-2); margin-top: 2px; }
.k-metric.k-stale .k-metric-value, .k-stale { color: var(--k-signal) !important; }

/* ---------- Tabuľky: 13 px, hover, bez zebry, čísla vpravo ---------- */
.dashboard-wrapper .table, .table { font-size: var(--k-fs-13); color: var(--k-ink); margin-bottom: 0; }
.dashboard-wrapper .table td, .dashboard-wrapper .table th, .table td, .table th {
    padding: 8px 10px;
    vertical-align: middle;
    border-top: 1px solid var(--k-line);
    font-weight: 400;
}
.dashboard-wrapper .table thead th, .table thead th, .table th {
    font-family: var(--k-font);
    color: var(--k-ink-2);
    font-weight: 500;
    font-size: var(--k-fs-12);
    border-bottom: 1px solid var(--k-line);
    text-transform: none;
}
.table-bordered, .table-bordered td, .table-bordered th { border-color: var(--k-line); }
.table-striped tbody tr:nth-of-type(odd) { background-color: transparent; }
.table-hover tbody tr:hover, .dashboard-wrapper .table tbody tr:hover { background-color: var(--k-hover); }
.table .thead-light th { background-color: var(--k-ground); color: var(--k-ink-2); border-color: var(--k-line); }
.table-sm td, .table-sm th { padding: 5px 8px; }
.row.bg_white, .bg_white { background-color: var(--k-surface); }

/* ---------- Tlačidlá ---------- */
.btn {
    font-family: var(--k-font);
    font-size: var(--k-fs-13);
    font-weight: 500;
    padding: 6px 12px;
    border-radius: var(--k-radius-sm);
    height: auto;
    width: auto;
    box-shadow: none;
}
.btn-block { width: 100%; }   /* .btn { width:auto } vyššie by inak prebil Bootstrap .btn-block (login, filtre, exporty) */
.btn:focus, .btn.focus { box-shadow: 0 0 0 3px var(--k-focus); }
.btn-xs { padding: 3px 8px; font-size: var(--k-fs-12); }
.btn-sm { padding: 4px 10px; font-size: var(--k-fs-13); }
.btn-lg { padding: 10px 18px; font-size: var(--k-fs-14); }
.btn-primary, .btn-primary.dropdown-toggle { color: var(--k-on-glacier); background-color: var(--k-glacier); border-color: var(--k-glacier); }
.btn-primary:hover, .btn-primary:focus, .btn-primary.focus, .btn-primary:not(:disabled):not(.disabled).active, .btn-primary:not(:disabled):not(.disabled):active, .show > .btn-primary.dropdown-toggle {
    color: var(--k-on-glacier); background-color: var(--k-glacier-2); border-color: var(--k-glacier-2);
}
.btn-secondary, .btn-secondary.dropdown-toggle { color: var(--k-ink); background-color: var(--k-surface); border-color: var(--k-line); }
.btn-secondary:hover, .btn-secondary:focus, .show > .btn-secondary.dropdown-toggle { color: var(--k-ink); background-color: var(--k-ground); border-color: var(--k-ink-2); }
.btn-success, .btn-success.dropdown-toggle { color: #fff; background-color: var(--k-moss); border-color: var(--k-moss); }
.btn-success:hover, .btn-success:focus { color: #fff; background-color: #337A4C; border-color: #337A4C; }
.btn-danger, .btn-danger.dropdown-toggle { color: var(--k-on-signal); background-color: var(--k-signal); border-color: var(--k-signal); }
.btn-danger:hover, .btn-danger:focus { color: var(--k-on-signal); background-color: var(--k-signal-2); border-color: var(--k-signal-2); }
.btn-warning, .btn-warning.dropdown-toggle { color: var(--k-on-glacier); background-color: var(--k-glacier); border-color: var(--k-glacier); } /* legacy „brand orange" = primárna akcia (Filtrovať, Exportovať, Uložiť) – nie varovanie */
.btn-warning:hover, .btn-warning:focus, .btn-warning:not(:disabled):not(.disabled).active, .btn-warning:not(:disabled):not(.disabled):active, .show > .btn-warning.dropdown-toggle { color: var(--k-on-glacier); background-color: var(--k-glacier-2); border-color: var(--k-glacier-2); }
.btn-info, .btn-info.dropdown-toggle { color: var(--k-on-glacier); background-color: var(--k-glacier); border-color: var(--k-glacier); }
.btn-light { color: var(--k-ink); background-color: var(--k-ground); border-color: var(--k-line); }
.btn-light:hover { color: var(--k-ink); background-color: var(--k-line); border-color: var(--k-line); }
.btn-dark { color: var(--k-snow); background-color: var(--k-spruce); border-color: var(--k-spruce); }
.btn-dark:hover, .btn-dark:focus { color: var(--k-snow); background-color: var(--k-spruce-2); border-color: var(--k-spruce-2); }
.btn-outline-primary { color: var(--k-link); border-color: var(--k-glacier); background-color: transparent; }
.btn-outline-primary:hover { color: var(--k-on-glacier); background-color: var(--k-glacier); border-color: var(--k-glacier); }
.btn-outline-secondary { color: var(--k-ink-2); border-color: var(--k-line); background-color: transparent; }
.btn-outline-secondary:hover, .btn-outline-secondary:focus, .btn-outline-secondary.dropdown-toggle { color: var(--k-ink); background-color: var(--k-ground); border-color: var(--k-ink-2); }
.btn-outline-success { color: var(--k-moss); border-color: var(--k-moss); }
.btn-outline-success:hover { color: #fff; background-color: var(--k-moss); border-color: var(--k-moss); }
.btn-outline-danger { color: var(--k-signal); border-color: var(--k-signal); }
.btn-outline-danger:hover { color: var(--k-on-signal); background-color: var(--k-signal); border-color: var(--k-signal); }
.btn-outline-warning { color: var(--k-link); border-color: var(--k-glacier); background-color: transparent; }
.btn-outline-warning:hover, .btn-outline-warning:focus, .btn-outline-warning:not(:disabled):not(.disabled).active, .btn-outline-warning:not(:disabled):not(.disabled):active, .show > .btn-outline-warning.dropdown-toggle { color: var(--k-on-glacier); background-color: var(--k-glacier); border-color: var(--k-glacier); }
.btn-outline-info { color: var(--k-link); border-color: var(--k-glacier); }
.btn-outline-info:hover, .btn-outline-info:focus { color: var(--k-on-glacier); background-color: var(--k-glacier); border-color: var(--k-glacier); }
.btn-outline-light { color: var(--k-ink-2); border-color: var(--k-line); }
.btn-outline-light:hover { color: var(--k-ink); background-color: var(--k-ground); border-color: var(--k-line); }
.btn-outline-dark { color: var(--k-ink); border-color: var(--k-ink); }
.btn-link, .btn-primary-link { color: var(--k-link) !important; }
.btn-link:hover { color: var(--k-link-2) !important; }
.btn-group > .btn, .btn-group-vertical > .btn { flex: 1 1 auto; }
.dropdown-item.active, .dropdown-item:active { background-color: var(--k-glacier); color: var(--k-on-glacier); }

/* ---------- Formuláre ---------- */
.form-control, .custom-select, select.form-control, textarea.form-control {
    font-family: var(--k-font);
    font-size: var(--k-fs-14);
    color: var(--k-ink);
    background-color: var(--k-surface);
    border: 1px solid var(--k-line);
    border-radius: var(--k-radius-sm);
    padding: 6px 10px;
    height: auto;
    line-height: 1.45;
    box-shadow: none;
}
.form-control-sm { font-size: var(--k-fs-13); padding: 4px 8px; }
.form-control-lg { font-size: var(--k-fs-14); padding: 10px 12px; }
.form-control:focus, .custom-select:focus {
    color: var(--k-ink);
    background-color: var(--k-surface);
    border-color: var(--k-glacier);
    box-shadow: 0 0 0 3px var(--k-focus);
    outline: 0;
}
.form-control::placeholder { color: var(--k-ink-2); opacity: .8; }
.form-control:disabled, .form-control[readonly] { background-color: var(--k-ground); color: var(--k-ink-2); }
.form-control.bg-warning, .form-control.btn-warning, .form-control.btn-warning.text-dark { background-color: var(--k-surface) !important; color: var(--k-ink) !important; border-color: var(--k-glacier) !important; box-shadow: inset 0 0 0 1px var(--k-glacier); font-weight: 500; } /* aktívny filter / rozsah dátumu: zvýraznený okraj, nie oranžová výplň */
.form-control.bg-warning:focus, .form-control.btn-warning:focus { box-shadow: inset 0 0 0 1px var(--k-glacier), 0 0 0 3px var(--k-focus); } /* fokusový prstenec ostáva (a11y) */
label, .col-form-label { color: var(--k-ink-2); font-size: var(--k-fs-13); font-weight: 500; }
.input-group-text { background-color: var(--k-ground); border-color: var(--k-line); color: var(--k-ink-2); border-radius: var(--k-radius-sm); }
.custom-control-input:checked ~ .custom-control-label::before { background-color: var(--k-glacier); border-color: var(--k-glacier); }
.switch input[type=checkbox]:checked + label::before { background-color: var(--k-glacier); }
.switch input[type=checkbox]:focus + label::before { box-shadow: 0 0 0 3px var(--k-focus); }

/* ---------- Badge / alert / pagination / dropdown / modal ---------- */
.badge { font-family: var(--k-font); font-weight: 500; font-size: var(--k-fs-12); padding: 3px 7px; border-radius: var(--k-radius-sm); }
.badge-primary   { background-color: var(--k-glacier); color: var(--k-on-glacier); }
.badge-secondary { background-color: var(--k-ink-2); color: var(--k-on-ink-2); }
.badge-success   { background-color: var(--k-moss); color: #fff; }
.badge-danger    { background-color: var(--k-signal); color: var(--k-on-signal); }
.badge-warning   { background-color: var(--k-amber); color: var(--k-on-amber); }
.badge-info      { background-color: var(--k-glacier); color: var(--k-on-glacier); }
.badge-light     { background-color: var(--k-ground); color: var(--k-ink); border: 1px solid var(--k-line); }
.badge-dark      { background-color: var(--k-spruce); color: var(--k-snow); }
.alert { border-radius: var(--k-radius); border: 1px solid var(--k-line); }
.alert-primary, .alert-info { color: var(--k-ink); background-color: rgba(28, 122, 191, 0.08); border-color: rgba(28, 122, 191, 0.35); }
.alert-success { color: var(--k-ink); background-color: rgba(63, 143, 91, 0.10); border-color: rgba(63, 143, 91, 0.4); }
.alert-warning { color: var(--k-ink); background-color: rgba(217, 132, 13, 0.10); border-color: rgba(217, 132, 13, 0.4); }
.alert-danger  { color: var(--k-ink); background-color: rgba(194, 64, 47, 0.10); border-color: rgba(194, 64, 47, 0.4); }
.alert-secondary, .alert-light { color: var(--k-ink); background-color: var(--k-ground); border-color: var(--k-line); }
.page-link { color: var(--k-link); border-color: var(--k-line); background-color: var(--k-surface); font-size: var(--k-fs-13); }
.page-link:hover { color: var(--k-link-2); background-color: var(--k-ground); border-color: var(--k-line); }
.page-item.active .page-link { color: var(--k-on-glacier); background-color: var(--k-glacier); border-color: var(--k-glacier); }
.page-item.disabled .page-link { color: var(--k-ink-2); background-color: var(--k-surface); border-color: var(--k-line); }
.dropdown-menu { font-family: var(--k-font); font-size: var(--k-fs-13); color: var(--k-ink); background-color: var(--k-surface); border: 1px solid var(--k-line); border-radius: var(--k-radius); box-shadow: 0 8px 24px rgba(24, 34, 44, 0.10); }
.dropdown-item { color: var(--k-ink); padding: 6px 14px; }
.dropdown-item:hover, .dropdown-item:focus { color: var(--k-ink); background-color: var(--k-hover); }
.dropdown-divider { border-top-color: var(--k-line); }
.modal-content { background-color: var(--k-surface); color: var(--k-ink); border: 1px solid var(--k-line); border-radius: var(--k-radius); box-shadow: 0 16px 40px rgba(24, 34, 44, 0.20); }
.modal-header { border-bottom: 1px solid var(--k-line); padding: 12px 16px; }
.modal-header.bg-primary, .modal-header.bg-secondary, .modal-header.bg-danger, .modal-header.bg-dark { background-color: var(--k-surface) !important; color: var(--k-ink) !important; box-shadow: inset 3px 0 0 var(--k-glacier); border-radius: calc(var(--k-radius) - 1px) calc(var(--k-radius) - 1px) 0 0; }
.modal-header.bg-danger { box-shadow: inset 3px 0 0 var(--k-signal); }
.modal-header .text-white, .modal-header.bg-primary .text-white, .modal-header .modal-title { color: var(--k-ink) !important; }
.modal-header .close, .modal-header.bg-primary .close { color: var(--k-ink); opacity: .6; text-shadow: none; }
.modal-title { font-size: var(--k-fs-17); font-weight: 600; }
.modal-footer { border-top: 1px solid var(--k-line); }
.modal-backdrop.show { opacity: .35; }
.list-group-item { background-color: var(--k-surface); border-color: var(--k-line); color: var(--k-ink); }
.nav-tabs { border-bottom-color: var(--k-line); }
.nav-tabs .nav-link { color: var(--k-ink-2); border-radius: var(--k-radius-sm) var(--k-radius-sm) 0 0; }
.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link { color: var(--k-ink); background-color: var(--k-surface); border-color: var(--k-line) var(--k-line) var(--k-surface); }
.nav-pills .nav-link.active, .nav-pills .show > .nav-link, .pills-regular .nav.nav-pills .nav-item .nav-link.active { background-color: var(--k-glacier); color: var(--k-on-glacier); }
.popover, .tooltip-inner { font-family: var(--k-font); }
.tooltip-inner { background-color: var(--k-ink); border-radius: var(--k-radius-sm); }
.progress { background-color: var(--k-line); border-radius: var(--k-radius-sm); }
.progress-bar { background-color: var(--k-glacier); }
.dashboard-spinner { border-top-color: var(--k-glacier); border-left-color: var(--k-glacier); }
.b-overlay .bg-light { background-color: var(--k-surface) !important; }
.close { color: var(--k-ink); text-shadow: none; }

/* ---------- daterangepicker / bootstrap-select – minimálne zladenie ---------- */
.daterangepicker { font-family: var(--k-font); font-size: var(--k-fs-13); color: var(--k-ink); background-color: var(--k-surface); border: 1px solid var(--k-line); border-radius: var(--k-radius); box-shadow: 0 8px 24px rgba(24, 34, 44, 0.10); }
.daterangepicker .calendar-table { background-color: var(--k-surface); border-color: var(--k-line); }
.daterangepicker td.available:hover, .daterangepicker th.available:hover { background-color: var(--k-hover); }
.daterangepicker td.in-range { background-color: rgba(28, 122, 191, 0.10); color: var(--k-ink); }
.daterangepicker td.active, .daterangepicker td.active:hover { background-color: var(--k-glacier); color: var(--k-on-glacier); }
.daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date { background-color: var(--k-surface); color: var(--k-ink-2); }
.daterangepicker .ranges li:hover { background-color: var(--k-hover); }
.daterangepicker .ranges li.active { background-color: var(--k-glacier); color: var(--k-on-glacier); }
.daterangepicker .drp-buttons { border-top-color: var(--k-line); }
.daterangepicker .drp-buttons .btn { font-size: var(--k-fs-12); }
.daterangepicker:before, .daterangepicker:after { border-bottom-color: var(--k-line); }
.daterangepicker .calendar-table .next span, .daterangepicker .calendar-table .prev span { border-color: var(--k-ink-2); }
.datetimes.form-control { border: 1px solid var(--k-line) !important; border-radius: var(--k-radius-sm); padding: 6px 10px !important; }
.bootstrap-select > .dropdown-toggle, .bootstrap-select > .btn.dropdown-toggle {
    font-family: var(--k-font);
    background-color: var(--k-surface);
    color: var(--k-ink);
    border: 1px solid var(--k-line);
    border-radius: var(--k-radius-sm);
    font-weight: 400;
}
.bootstrap-select > .dropdown-toggle:hover, .bootstrap-select > .dropdown-toggle:focus { background-color: var(--k-surface); color: var(--k-ink); border-color: var(--k-glacier); box-shadow: 0 0 0 3px var(--k-focus); }
.bootstrap-select > .dropdown-toggle.btn-light { background-color: var(--k-surface); color: var(--k-ink); border-color: var(--k-line); }
.bootstrap-select > .dropdown-toggle.btn-warning { background-color: var(--k-surface); color: var(--k-ink); border-color: var(--k-glacier); box-shadow: inset 0 0 0 1px var(--k-glacier); font-weight: 500; } /* aktívny filter (data-style=btn-warning) rozoznateľný aj bez hover/focus */
.bootstrap-select > .dropdown-toggle.btn-warning:focus { box-shadow: inset 0 0 0 1px var(--k-glacier), 0 0 0 3px var(--k-focus); }
.bootstrap-select .dropdown-menu li a { color: var(--k-ink); }
.bootstrap-select .dropdown-menu li a:hover, .bootstrap-select .dropdown-menu li a:focus { background-color: var(--k-hover); }
.bootstrap-select .dropdown-menu li.selected a, .bootstrap-select .dropdown-item.active, .bootstrap-select .dropdown-item:active { background-color: var(--k-glacier); color: var(--k-on-glacier); }
.bootstrap-select .bs-searchbox .form-control { font-size: var(--k-fs-13); }
.bootstrap-select .status, .bootstrap-select .no-results { background-color: var(--k-ground); color: var(--k-ink-2); }
.bootstrap-select .bs-actionsbox .btn { font-size: var(--k-fs-12); }

/* ---------- Leaflet ---------- */
.leaflet-container { font-family: var(--k-font); border-radius: var(--k-radius); }
.leaflet-popup-content-wrapper, .leaflet-popup-tip { background-color: var(--k-surface); color: var(--k-ink); border-radius: var(--k-radius); box-shadow: 0 8px 24px rgba(24, 34, 44, 0.16); }
.leaflet-popup-content { font-size: var(--k-fs-13); }
.leaflet-bar a, .leaflet-bar a:hover { background-color: var(--k-surface); color: var(--k-ink); border-bottom-color: var(--k-line); }

/* ---------- Status pás (B-04) ---------- */
.k-status-strip {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0 var(--k-space-2);
    font-size: var(--k-fs-13);
    color: var(--k-ink-2);
    background-color: var(--k-surface);
    border-bottom: 1px solid var(--k-line);
    padding: 6px 20px;
    min-height: 34px;
    position: sticky;
    top: 0;
    z-index: 1010;
    margin-left: 0;
}
@media only screen and (min-width: 769px) {
    .k-status-strip { margin-left: var(--k-sidebar-w); }
}
.k-status-strip .k-status-item { white-space: nowrap; }
.k-status-strip .k-status-item strong { color: var(--k-ink); font-weight: 500; }
.k-status-strip .k-status-sep { color: var(--k-line); }
.k-status-strip .k-status-sep::before { content: "\00B7"; color: var(--k-ink-2); opacity: .6; }
.k-status-strip .k-dot {
    display: inline-block;
    width: 9px; height: 9px;
    border-radius: 50%;
    background-color: var(--k-ink-2);
    margin-right: var(--k-space-1);
    vertical-align: middle;
    position: relative;
    top: -1px;
}
.k-status-strip .k-dot.k-ok    { background-color: var(--k-moss);   box-shadow: 0 0 0 0 rgba(63, 143, 91, 0.6);  animation: k-pulse 2s infinite; }
.k-status-strip .k-dot.k-warn  { background-color: var(--k-amber);  animation: none; }
.k-status-strip .k-dot.k-alert { background-color: var(--k-signal); animation: none; }
.k-status-strip .k-alive-ok    { color: var(--k-moss-ink); }
.k-status-strip .k-alive-bad   { color: var(--k-signal); }
@keyframes k-pulse {
    0%   { box-shadow: 0 0 0 0 rgba(63, 143, 91, 0.55); }
    70%  { box-shadow: 0 0 0 7px rgba(63, 143, 91, 0); }
    100% { box-shadow: 0 0 0 0 rgba(63, 143, 91, 0); }
}
@media (prefers-reduced-motion: reduce) {
    .k-status-strip .k-dot.k-ok { animation: none; }
    .nav-left-sidebar .navbar-nav .nav-link { transition: none; }
}

/* ---------- Drobnosti z pôvodných schém, ktoré zostávajú funkčné ---------- */
.main-logo { content: url("/assets/images/logo_full.png"); }
.footer-sticky-bottom { border-top-color: var(--k-line); color: var(--k-ink-2); }

/* ---------- Overlay „Prebieha spracovanie" (footer.php .processing) ----------
   Prenesené z new-color-scheme.css (už sa nenačítava): bez visibility:hidden je pás
   trvalo viditeľný. Zobrazuje ho loading.js cez body.loading (ajaxStart/ajaxStop). */
.processing { visibility: hidden; position: fixed; top: 0; z-index: 1111; width: 100%; text-align: center; padding: .65em; transition: visibility 0s, opacity 0.5s linear; }
body.loading { overflow: hidden; }
body.loading .processing { visibility: visible; }
.processing .progress { font-size: 1.25em; line-height: inherit; height: auto; width: 100%; }
.anidot { animation: elipsemargin steps(4, end) 1200ms infinite; margin-right: 1em; }
.anidot:after { overflow: hidden; display: inline-block; vertical-align: bottom; animation: ellipsis steps(4, end) 1200ms infinite; content: "\2026"; width: 0; }
@keyframes elipsemargin { to { margin-right: 0; } }
@keyframes ellipsis { to { width: 1em; } }

/* ---------- Konzistencia legacy stránok s novými (B-03 dodatok) ----------
   Legacy stránky (Záznamy, Udalosti, Zdržania, Scenáre, Meranie…) majú hlavičku .page-header
   s tlačidlami btn-block v gridových stĺpcoch a filtre v .card-header.bg-primary s <p><strong>
   popiskami. Nové stránky (Prehľad, Otvorené údaje) majú titulok vľavo + kompaktné akcie vpravo. */
@media (min-width: 768px) {
    .dashboard-content .page-header > .row { display: flex; flex-wrap: wrap; align-items: center; }
    .dashboard-content .page-header > .row > [class*="col-"] { flex: 0 0 auto; width: auto; max-width: none; }
    .dashboard-content .page-header > .row > [class*="col-"]:first-child { flex: 1 1 auto; }
    .dashboard-content .page-header .btn-block { display: inline-block; width: auto; }
    .dashboard-content .page-header .btn { margin-bottom: 0 !important; }
    .dashboard-content .page-header .dropdown { display: inline-block; }
}
.dashboard-content .page-header { margin-bottom: var(--k-space-3); }
.pageheader-title { font-size: var(--k-fs-24); font-weight: 600; margin-bottom: 0; }
.pageheader-title small, .k-page-title small { font-size: var(--k-fs-14); font-weight: 400; color: var(--k-ink-2); }
.page-header .btn-sm { padding: 6px 12px; font-size: var(--k-fs-13); }

/* filtre v hlavičke karty: popisky ako bežné form labels, nie 17px nadpisy */
.dashboard-wrapper .card-header p { font-size: var(--k-fs-12); font-weight: 600; color: var(--k-ink-2); margin-bottom: 4px; line-height: 1.4; }
.dashboard-wrapper .card-header p strong { font-weight: 600; }
.dashboard-wrapper .card-header .form-control, .dashboard-wrapper .card-header .bootstrap-select > .dropdown-toggle { font-size: var(--k-fs-13); }
.dashboard-wrapper .card-header .lead { font-size: var(--k-fs-17); font-weight: 600; }
.dashboard-wrapper .card-header .filter-icon, .dashboard-wrapper .card-header .card-header-title + .col i.fa-filter { color: var(--k-ink-2); }

/* zoznamové riadky (recordline, eventline…): zebra neutrálna v oboch témach, rovnaká veľkosť písma ako tabuľky */
.dashboard-wrapper .row.bg-light, .dashboard-wrapper .row.bg-dark { background-color: var(--k-ground) !important; color: var(--k-ink) !important; }
.dashboard-wrapper .row.p-2.bg-light, .dashboard-wrapper .row.p-2.bg-dark, .dashboard-wrapper .row.p-2 { font-size: var(--k-fs-13); }
.dashboard-wrapper .row.p-2 .h5, .dashboard-wrapper .row.p-2 h5 { font-size: var(--k-fs-14); }

/* stránkovanie: aktuálna strana primárnou farbou, nie tmavou */
.dashboard-content a.btn.btn-xs.btn-dark, .dashboard-content a.btn.btn-xs.btn-dark:hover { color: var(--k-on-glacier); background-color: var(--k-glacier); border-color: var(--k-glacier); }
.dashboard-content a.btn.btn-xs.btn-outline-light, .dashboard-content a.btn.btn-xs.btn-light { color: var(--k-ink-2); border-color: var(--k-line); background-color: var(--k-surface); }
.dashboard-content a.btn.btn-xs.btn-outline-light:hover, .dashboard-content a.btn.btn-xs.btn-light:hover { color: var(--k-ink); background-color: var(--k-ground); }

/* sekundárne akcie (Späť, Vyčistiť filter, prepínače) jedným štýlom */
.btn-outline-secondary, .btn-outline-light, .btn-light { font-weight: 500; }
.btn-group .btn.live-minutes.btn-light { color: var(--k-link); background-color: transparent; border-color: var(--k-glacier); } /* prepínač 15/60 min (zone.php): neaktívny = outline */
.btn-group .btn.live-minutes.btn-warning.active { color: var(--k-on-glacier); background-color: var(--k-glacier); border-color: var(--k-glacier); }

/* výnimky: btn-warning, ktoré nie sú primárnou akciou (fileupload „Zrušiť“) → sekundárny vzhľad */
.btn-warning.cancel, .fileupload-buttonbar .btn-warning, .template-upload .btn-warning { color: var(--k-ink); background-color: var(--k-surface); border-color: var(--k-line); }
.btn-warning.cancel:hover, .btn-warning.cancel:focus, .btn-warning.cancel:not(:disabled):not(.disabled):active, .fileupload-buttonbar .btn-warning:hover, .fileupload-buttonbar .btn-warning:focus, .fileupload-buttonbar .btn-warning:not(:disabled):not(.disabled):active, .template-upload .btn-warning:hover, .template-upload .btn-warning:focus, .template-upload .btn-warning:not(:disabled):not(.disabled):active { color: var(--k-ink); background-color: var(--k-ground); border-color: var(--k-ink-2); }
