/* ============================================================
   BASTARD ADMIN – badm-* prefix, BEM konvence
   blok:       badm-blok
   element:    badm-blok__element
   modifier:   badm-blok--modifier / badm-blok__element--modifier
   ============================================================ */

/* ---------- Reset & Base ---------- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
    /* -- Font -- */
    --badm-font: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;

    /* -- Pozadi a povrchy (Neutral paleta) -- */
    --badm-bg: #fafafa;
    --badm-surface: #ffffff;
    --badm-surface-hover: #f5f5f5;
    --badm-surface-elevated: #ffffff;

    /* -- Text (Neutral paleta) -- */
    --badm-text: #0a0a0a;
    --badm-text-muted: #737373;

    /* -- Hranice a vstup (Neutral paleta) -- */
    --badm-border: #e5e5e5;
    --badm-input: #e5e5e5;
    --badm-ring: #ff8014;

    /* -- Primarni (Orange theme) -- */
    --badm-primary: #ff8014;
    --badm-primary-hover: #e06800;
    --badm-primary-light: #fff7ed;
    --badm-primary-foreground: #fff;

    /* -- Sekundarni (Neutral paleta) -- */
    --badm-secondary: #f5f5f5;
    --badm-secondary-hover: #e5e5e5;
    --badm-secondary-foreground: #0a0a0a;

    /* -- Accent -- */
    --badm-accent: #f5f5f5;
    --badm-accent-foreground: #0a0a0a;

    /* -- Stavove barvy -- */
    --badm-success: #16a34a;
    --badm-success-light: #f0fdf4;
    --badm-danger: #dc2626;
    --badm-danger-light: #fef2f2;
    --badm-warning: #f59e0b;
    --badm-warning-light: #fffbeb;
    --badm-info: #2563eb;
    --badm-info-light: #eff6ff;

    /* -- Grafy -- */
    --badm-chart-1: #ff8014;
    --badm-chart-2: #2563eb;
    --badm-chart-3: #16a34a;
    --badm-chart-4: #8b5cf6;
    --badm-chart-5: #ec4899;

    /* -- Seda skala (dark mode ji prevraci: 50 je vzdy "skoro pozadi",
       900 vzdy "skoro text" – proto ji pouzivat semanticky, ne dle odstinu) -- */
    --badm-gray-50: #f9fafb;
    --badm-gray-100: #f3f4f6;
    --badm-gray-200: #e5e7eb;
    --badm-gray-300: #d4d4d8;
    --badm-gray-400: #9ca3af;
    --badm-gray-500: #6b7280;
    --badm-gray-600: #4b5563;
    --badm-gray-700: #374151;
    --badm-gray-800: #1f2937;
    --badm-gray-900: #111827;

    /* -- Inverzni povrch (tooltip, tmavy chip) a text na sytem podkladu -- */
    --badm-inverse-bg: #171717;
    --badm-inverse-surface: #262626;
    --badm-inverse-text: #fff;
    --badm-on-accent: #fff;

    /* -- Stavove odstiny pro badge a panely (bg/border/text trojice) -- */
    --badm-success-bg: #dcfce7;
    --badm-success-border: #bbf7d0;
    --badm-success-text: #15803d;
    --badm-danger-bg: #fee2e2;
    --badm-danger-border: #fecaca;
    --badm-danger-text: #b91c1c;
    --badm-warning-bg: #fef3c7;
    --badm-warning-border: #fde68a;
    --badm-warning-text: #92400e;
    --badm-info-bg: #dbeafe;
    --badm-info-border: #bfdbfe;
    --badm-info-text: #1e40af;

    /* -- Shell (header + sidebar) – zamerne tmavy v OBOU tematech,
       proto ma vlastni tokeny mimo invertujici sedou skalu -- */
    --badm-shell-bg: #0a0a0a;
    --badm-shell-surface: #171717;
    --badm-shell-border: #262626;
    --badm-shell-text: #a3a3a3;
    --badm-shell-text-hover: #e5e5e5;
    --badm-shell-text-active: #fff;
    --badm-shell-text-dim: #525252;
    --badm-shell-text-disabled: #404040;

    /* -- Doplnkove odstiny (stitky, badge, akcenty) -- */
    --badm-purple: #8b5cf6;
    --badm-purple-bg: #ede9fe;
    --badm-purple-text: #6d28d9;
    --badm-indigo: #6366f1;
    --badm-indigo-bg: #e0e7ff;
    --badm-indigo-text: #3730a3;
    --badm-pink: #ec4899;
    --badm-pink-bg: #fce7f3;
    --badm-pink-text: #9d174d;

    /* -- Layout (Mira = kompaktni) -- */
    --badm-radius: 6px;
    --badm-radius-sm: 4px;
    --badm-radius-lg: 10px;
    --badm-shadow: 0 1px 2px rgba(0,0,0,.05);
    --badm-shadow-md: 0 8px 24px rgba(0,0,0,.12);
    --badm-shadow-lg: 0 4px 12px rgba(0,0,0,.08);
    --badm-primary-soft: rgba(255,128,20,.06);
    --badm-gap: 16px;
    --badm-sidebar-width: 192px;

    color-scheme: light;
}

/* ============================================================
   DARK MODE – prepis tokenu. Prepina se atributem data-theme
   na <html> (nastavuje anti-FOUC skript v head.tpl + core.js).
   Seda skala je INVERTOVANA (50 = skoro pozadi, 900 = skoro text),
   proto svetly kod psany semanticky funguje bez uprav.
   Shell (header + sidebar) se neprepisuje – je tmavy v obou tematech.
   ============================================================ */
html[data-theme="dark"] {
    color-scheme: dark;

    --badm-bg: #1c1c1e;
    --badm-surface: #242427;
    --badm-surface-hover: #2c2c30;
    --badm-surface-elevated: #2f2f33;

    --badm-text: #ececed;
    --badm-text-muted: #a6a6ad;

    --badm-border: #3a3a3f;
    --badm-input: #3a3a3f;

    --badm-primary-hover: #ffa14d;
    --badm-primary-light: #382512;

    --badm-secondary: #2e2e32;
    --badm-secondary-hover: #38383d;
    --badm-secondary-foreground: #ececed;

    --badm-accent: #2e2e32;
    --badm-accent-foreground: #ececed;

    --badm-success: #22c55e;
    --badm-success-light: #1a3324;
    --badm-danger: #ef4444;
    --badm-danger-light: #371a1d;
    --badm-warning: #f59e0b;
    --badm-warning-light: #342a0e;
    --badm-info: #3b82f6;
    --badm-info-light: #1a2942;

    --badm-gray-50: #29292d;
    --badm-gray-100: #313135;
    --badm-gray-200: #3d3d42;
    --badm-gray-300: #4b4b51;
    --badm-gray-400: #8b8b92;
    --badm-gray-500: #a8a8af;
    --badm-gray-600: #c3c3c9;
    --badm-gray-700: #d8d8dd;
    --badm-gray-800: #e6e6ea;
    --badm-gray-900: #f0f0f3;

    --badm-inverse-bg: #e8e8ec;
    --badm-inverse-surface: #d4d4da;
    --badm-inverse-text: #1a1a1d;

    --badm-success-bg: #1c3f2a;
    --badm-success-border: #2a5c3d;
    --badm-success-text: #4ade80;
    --badm-danger-bg: #442023;
    --badm-danger-border: #602b30;
    --badm-danger-text: #f87171;
    --badm-warning-bg: #3d3012;
    --badm-warning-border: #5c4a18;
    --badm-warning-text: #fbbf24;
    --badm-info-bg: #1d3049;
    --badm-info-border: #294467;
    --badm-info-text: #60a5fa;

    --badm-purple: #a78bfa;
    --badm-purple-bg: #2e2346;
    --badm-purple-text: #c4b5fd;
    --badm-indigo: #818cf8;
    --badm-indigo-bg: #262b4e;
    --badm-indigo-text: #a5b0fc;
    --badm-pink: #f472b6;
    --badm-pink-bg: #451f34;
    --badm-pink-text: #f9a8d4;

    --badm-shadow: 0 1px 2px rgba(0,0,0,.4);
    --badm-shadow-md: 0 8px 24px rgba(0,0,0,.55);
    --badm-shadow-lg: 0 4px 12px rgba(0,0,0,.5);
    --badm-primary-soft: rgba(255,128,20,.1);
}

/* Dark mode – komponentove overrides (elevace vrstvenych povrchu).
   V dark chybi prirozeny kontrast stinu, proto modaly/dropdowny dostavaji
   svetlejsi povrch (--badm-surface-elevated), border a tezsi stin. */
/* pastelove chipy z DB v dark lehce ztlumit, at nesviti */
html[data-theme="dark"] .badm-status { filter: brightness(.92) saturate(.88); }

html[data-theme="dark"] .badm-modal__overlay { background: rgba(0, 0, 0, .65); }
html[data-theme="dark"] .badm-modal__dialog {
    border: 1px solid var(--badm-gray-300);
    box-shadow: 0 12px 48px rgba(0, 0, 0, .7);
}
html[data-theme="dark"] .badm-msel__dropdown {
    border-color: var(--badm-gray-300);
    box-shadow: 0 4px 16px rgba(0, 0, 0, .6);
}
html[data-theme="dark"] .badm-glosa__potisk-results {
    border-color: var(--badm-gray-300);
    box-shadow: 0 4px 12px rgba(0, 0, 0, .6);
}

/* ---------- Button vypadajici jako inline link ----------
   Pouziti tam, kde semanticky potrebujeme <button> (ne navigace na URL),
   ale vizualne ma pusobit jako text-link (napr. uvnitr vety, v info panelu). */
.badm-btn-link {
    background: none;
    border: 0;
    padding: 0;
    font: inherit;
    color: var(--badm-primary);
    cursor: pointer;
    text-decoration: none;
}
.badm-btn-link:hover { color: var(--badm-primary-hover); text-decoration: underline; }

/* ---------- Back link (sdilena navigace zpet) ----------
   Pouziti nad .badm-page-header na sub-strance / detail strance.
   Vyhradne pro navigaci na primy nadrazeny seznam (Bible -> slozky,
   Orders -> Order detail). Vice viz docs/styles.md. */
.badm-back-link {
    display: inline-block;
    font-size: 12px;
    font-weight: 500;
    color: var(--badm-primary);
    text-decoration: none;
    margin-bottom: 12px;
}
.badm-back-link:hover {
    text-decoration: underline;
}

/* ---------- Skeleton loading (sdilena komponenta) ----------
   Pouziti: .badm-skeleton pro loading placeholder (shimmer animace).
   Pridat tridu .is-loaded kdyz je obsah nacten (nebo odebrat .badm-skeleton).
   Pracuje jako pozadi – obsah (img, text) se nad nim kresli normalne. */
.badm-skeleton {
    background: linear-gradient(110deg, rgba(0,0,0,.03) 30%, rgba(0,0,0,.08) 50%, rgba(0,0,0,.03) 70%);
    background-size: 200% 100%;
    animation: badm-skeleton-shimmer 1.4s linear infinite;
}
.badm-skeleton.is-loaded { background: none; animation: none; }
@keyframes badm-skeleton-shimmer {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}
/* Skeleton stav pro lazy KPI boxy – pulzace textovych "…" placeholderu.
   Box ma plnou strukturu (vyska se nemeni), jen text bliká. */
.badm-skeleton-data .badm-box__value,
.badm-skeleton-data .badm-box__comp-abs,
.badm-skeleton-data .badm-table__delta {
    color: rgba(0,0,0,0.18);
    animation: badm-skeleton-pulse 1.4s ease-in-out infinite;
}
@keyframes badm-skeleton-pulse {
    0%, 100% { opacity: 1; }
    50%      { opacity: 0.4; }
}

/* ---------- Body / Shell ---------- */
.badm {
    font-family: var(--badm-font);
    font-size: 12px;
    line-height: 1.45;
    color: var(--badm-text);
    background: var(--badm-bg);
    min-height: 100vh;
}

/* Globalni odkazy – oranzove dle --badm-primary
   :where() = 0 specificita, kazda komponenta s vlastnim colorem prepise (sidebar, card__link, btn...) */
/* Vyjimka: `.badm-btn` ma vlastni color/hover (vc. tlacitkovych <a>) – globalni a:hover prepisoval bilou na oranzovou.
   Pouzivame `:where(:not(.badm-btn))` aby `:not()` nepridal specificitu (zustava 1 = element). */
:where(.badm) a:where(:not(.badm-btn)) { color: var(--badm-primary); text-decoration: none; }
:where(.badm) a:where(:not(.badm-btn)):hover { color: var(--badm-primary-hover); text-decoration: underline; }

.badm-shell {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

/* ---------- Layout (sidebar + main) ---------- */
.badm-layout {
    display: flex;
    flex: 1;
    min-height: 0;
    background: var(--badm-bg);
}

/* ---------- Sidebar ---------- */
.badm-sidebar {
    width: var(--badm-sidebar-width);
    flex-shrink: 0;
    background: var(--badm-shell-bg);
    border-right: 1px solid var(--badm-shell-border);
    overflow-y: auto;
    padding: 12px 0;
    position: sticky;
    top: 48px;
    height: calc(100vh - 48px);
}

.badm-sidebar__nav {
    display: flex;
    flex-direction: column;
}

.badm-sidebar__group {
    margin-bottom: 4px;
}

.badm-sidebar__group-title {
    padding: 12px 16px 4px;
    font-size: 10px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .5px;
    color: var(--badm-shell-text-dim);
}

.badm-sidebar__link {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 7px 16px;
    font-size: 12px;
    color: var(--badm-shell-text);
    text-decoration: none;
    transition: background .15s, color .15s;
    border-left: 2px solid transparent;
}

.badm-sidebar__link:hover {
    background: var(--badm-shell-surface);
    color: var(--badm-shell-text-hover);
}

.badm-sidebar__link--active {
    background: var(--badm-shell-surface);
    color: var(--badm-shell-text-active);
    border-left-color: var(--badm-primary);
}

.badm-sidebar__link--disabled {
    color: var(--badm-shell-text-disabled);
    pointer-events: none;
    opacity: .5;
}

.badm-sidebar__link i {
    width: 16px;
    text-align: center;
    font-size: 13px;
    flex-shrink: 0;
}

.badm-sidebar-backdrop {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,.5);
    z-index: 149;
}
.badm-sidebar-backdrop.is-visible {
    display: block;
}

/* ---------- Header ---------- */
.badm-header {
    display: flex;
    align-items: center;
    gap: var(--badm-gap);
    padding: 0 var(--badm-gap);
    height: 48px;
    background: var(--badm-shell-bg);
    border-bottom: 1px solid var(--badm-shell-border);
    box-shadow: none;
    position: sticky;
    top: 0;
    z-index: 100;
}

.badm-header__brand { flex-shrink: 0; }

.badm-header__logo {
    font-weight: 700;
    font-size: 14px;
    letter-spacing: -.3px;
    color: var(--badm-shell-text-active);
    text-decoration: none;
    display: flex;
    align-items: center;
    gap: 8px;
}

.badm-header__mascot {
    width: 28px;
    height: 28px;
    object-fit: contain;
    flex-shrink: 0;
}

.badm-header__dev {
    font-size: 9px;
    font-weight: 600;
    text-transform: uppercase;
    background: var(--badm-warning);
    color: var(--badm-on-accent);
    padding: 1px 4px;
    border-radius: 3px;
    vertical-align: middle;
    letter-spacing: .5px;
}

.badm-header--dev {
    background: #ffba20;
    border-bottom-color: #cc9410;
}
.badm-header--dev .badm-header__logo { color: #0a0a0a; }
.badm-header--dev .badm-header__user-name { color: #0a0a0a; }
.badm-header--dev .badm-header__user-name:hover { color: #000; }
.badm-header--dev .badm-header__logout { color: #0a0a0a; }
.badm-header--dev .badm-header__logout:hover { color: #000; }
.badm-header--dev .badm-header__dev { background: #0a0a0a; color: #ffba20; }

.badm-header__user {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 12px;
}

.badm-header__theme {
    background: none;
    border: 0;
    padding: 4px 6px;
    cursor: pointer;
    color: var(--badm-shell-text);
    font-size: 13px;
    line-height: 1;
    border-radius: var(--badm-radius-sm);
    transition: color .15s, background .15s;
}
.badm-header__theme:hover {
    color: var(--badm-shell-text-active);
    background: var(--badm-shell-surface);
}
.badm-header--dev .badm-header__theme { color: #0a0a0a; }
.badm-header--dev .badm-header__theme:hover { color: #000; background: rgba(0,0,0,.08); }

.badm-header__user-name {
    color: var(--badm-shell-text);
    text-decoration: none;
}
.badm-header__user-name:hover { color: var(--badm-shell-text-active); text-decoration: underline; }

.badm-header__logout {
    color: var(--badm-primary);
    text-decoration: none;
    font-weight: 500;
}
.badm-header__logout:hover { color: var(--badm-primary-hover); text-decoration: underline; }

/* ---------- Nav ---------- */
.badm-nav {
    display: flex;
    gap: 2px;
    align-items: center;
}

.badm-nav__link {
    display: inline-flex;
    align-items: center;
    padding: 4px 10px;
    border-radius: var(--badm-radius);
    font-size: 12px;
    font-weight: 500;
    color: var(--badm-text-muted);
    text-decoration: none;
    transition: background .15s, color .15s;
}
.badm-nav__link:hover {
    background: var(--badm-bg);
    color: var(--badm-text);
}
.badm-nav__link--active {
    background: var(--badm-primary);
    color: var(--badm-on-accent);
}
.badm-nav__link--active:hover {
    background: var(--badm-primary-hover);
    color: var(--badm-on-accent);
}

/* ---------- Main ---------- */
.badm-main {
    position: relative;
    flex: 1;
    min-width: 0;
    padding: var(--badm-gap);
    max-width: 1200px;
    width: 100%;
    margin: 0 auto;
}

/* ---------- Buttons ---------- */
.badm-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4em;
    padding: 5px 12px;
    border-radius: var(--badm-radius);
    font-size: 12px;
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
    border: 1px solid transparent;
    font-family: var(--badm-font);
    line-height: 1.4;
    transition: background .15s, border-color .15s, box-shadow .15s;
    white-space: nowrap;
}

.badm-btn--sm {
    padding: 4px 8px;
    font-size: 11px;
    height: 26px;
    box-sizing: border-box;
}

.badm-btn--small {
    font-size: 11px;
    padding: 3px 8px;
    height: 24px;
}

.badm-btn--primary {
    background: var(--badm-primary);
    color: var(--badm-on-accent);
}
.badm-btn--primary:hover {
    background: var(--badm-primary-hover);
}

.badm-btn--success {
    background: var(--badm-success);
    color: var(--badm-on-accent);
}
.badm-btn--success:hover {
    background: var(--badm-success-text);
}

.badm-btn--secondary {
    background: var(--badm-surface);
    color: var(--badm-text);
    border-color: var(--badm-border);
}
.badm-btn--secondary:hover {
    background: var(--badm-bg);
}

.badm-btn--danger {
    background: var(--badm-danger);
    color: var(--badm-on-accent);
}
.badm-btn--danger:hover {
    background: var(--badm-danger-text);
}

.badm-btn--icon {
    padding: 4px;
    width: 28px;
    height: 28px;
    background: var(--badm-surface);
    color: var(--badm-text-muted);
    border-color: var(--badm-border);
    border-radius: var(--badm-radius);
}
.badm-btn--icon:hover {
    background: var(--badm-bg);
    color: var(--badm-text);
}
.badm-btn--icon.badm-btn--sm {
    width: 24px;
    height: 24px;
    padding: 2px;
    font-size: 11px;
}

/* Disabled stav vsech badm-btn variant – neutralizujeme barvy varianty na sedy
   tlumeny vzhled (jinak --secondary disabled vypada skoro stejne jako enabled,
   bily na bilem pozadi). !important porazi i variantni :hover pravidla bez
   nutnosti je vsechny prepisovat. Title tooltip z HTML atributu funguje nadale. */
.badm-btn:disabled,
.badm-btn[disabled],
.badm-btn:disabled:hover,
.badm-btn[disabled]:hover {
    background: var(--badm-bg) !important;
    color: var(--badm-text-muted) !important;
    border-color: var(--badm-border) !important;
    cursor: not-allowed !important;
    box-shadow: none !important;
    opacity: 0.65;
}

/* ---------- Forms (global) ---------- */

/* Honeypot */
.badm-hp {
    position: absolute;
    left: -9999px;
    top: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
    opacity: 0;
    pointer-events: none;
}

.badm input[type="text"],
.badm input[type="email"],
.badm input[type="password"],
.badm input[type="number"],
.badm input[type="search"],
.badm input[type="tel"],
.badm input[type="url"],
.badm input[type="date"],
.badm input[type="datetime-local"],
.badm input[type="time"],
.badm select,
.badm textarea {
    display: block;
    width: 100%;
    padding: 5px 8px;
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    font-size: 12px;
    font-family: var(--badm-font);
    line-height: 1.4;
    color: var(--badm-text);
    background: var(--badm-surface);
    outline: none;
    transition: border-color .15s, box-shadow .15s;
    -webkit-appearance: none;
    appearance: none;
}

.badm input[type="text"]:focus,
.badm input[type="email"]:focus,
.badm input[type="password"]:focus,
.badm input[type="number"]:focus,
.badm input[type="search"]:focus,
.badm input[type="tel"]:focus,
.badm input[type="url"]:focus,
.badm input[type="date"]:focus,
.badm input[type="datetime-local"]:focus,
.badm input[type="time"]:focus,
.badm select:focus,
.badm textarea:focus {
    border-color: var(--badm-primary);
    box-shadow: 0 0 0 2px var(--badm-primary-light);
}

.badm input::placeholder,
.badm textarea::placeholder {
    color: var(--badm-text-muted);
}

.badm input:disabled,
.badm select:disabled,
.badm textarea:disabled {
    background: var(--badm-bg);
    color: var(--badm-text-muted);
    cursor: not-allowed;
}

.badm-textarea--mono {
    width: 100%;
    font-family: monospace;
    font-size: .8rem;
    padding: .5rem;
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    resize: vertical;
}

.badm select {
    padding-right: 30px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none'%3E%3Cpath d='M1 1.5l5 5 5-5' stroke='%236b7a8d' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 10px;
}

.badm textarea {
    min-height: 80px;
    resize: vertical;
}

/* ---------- Switch (segmented control) ---------- */
.badm-switch {
    display: inline-flex;
    gap: 2px;
    background: var(--badm-gray-200);
    border-radius: 5px;
    padding: 2px;
}
.badm-switch__item {
    padding: 4px 12px;
    font-size: 12px;
    line-height: 1;
    cursor: pointer;
    border-radius: 3px;
    border: none;
    background: none;
    color: var(--badm-gray-600);
    white-space: nowrap;
    transition: background .15s, color .15s;
    font-family: var(--badm-font);
}
.badm-switch__item input { display: none; }
.badm-switch__item.is-active,
.badm-switch__item:has(input:checked) {
    background: var(--badm-primary);
    color: var(--badm-on-accent);
    font-weight: 600;
    box-shadow: 0 1px 2px rgba(0,0,0,.15);
}

.badm input[type="checkbox"],
.badm input[type="radio"] {
    accent-color: var(--badm-primary);
}

/* :not vyjimky = checkbox-style labely, ktere MUSI zustat flex (jinak by
   display:block rozbil vertikalni centrovani checkboxu s textem) */
.badm label:not(.badm-checkbox):not(.badm-switch__item):not(.badm-nl__subject-item):not(.badm-mkt__checkbox):not(.badm-multiselect__opt):not(.badm-chip) {
    display: block;
    font-size: 11px;
    font-weight: 600;
    color: var(--badm-text);
    margin-bottom: 3px;
}

.badm-form-group {
    margin-bottom: 10px;
}

.badm-form-hint {
    font-size: 10px;
    color: var(--badm-text-muted);
    margin-top: 2px;
}

/* Form row – ovladaci radek: select/input + tlacitko + checkbox na jedne lince.
   Select/input vyplni volne misto, tlacitko a checkbox drzi svou sirku. */
.badm-form-row {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
}
.badm-form-row select,
.badm-form-row input[type="text"],
.badm-form-row input[type="number"] {
    flex: 1;
    width: auto;
    min-width: 0;
}
.badm-form-row .badm-checkbox { white-space: nowrap; }
/* stejna sirka tlacitek + checkboxu napric radky → selecty konci na stejne lince */
.badm-form-row .badm-btn { min-width: 96px; justify-content: center; }
.badm-form-row .badm-checkbox { min-width: 128px; }

/* ---------- Inline edit – uprava hodnoty primo na miste ---------- */
/* <span class="badm-inline-edit" data-action="api_action" data-params='{"id":1}'>
       <span class="badm-inline-edit__value">hodnota</span>
       <button class="badm-inline-edit__pen"><i class="fa-solid fa-pen"></i></button>
       <span class="badm-inline-edit__form" hidden>
           <input class="badm-inline-edit__input" value="hodnota">
           <button class="badm-inline-edit__save">...</button>
           <button class="badm-inline-edit__cancel">...</button>
       </span>
   </span>
   JS: badmInlineEdit v js/core.js (delegovane, funguje i pro dodatecne vlozeny obsah) */
.badm-inline-edit {
    display: inline-flex;
    align-items: center;
}
/* obalem muze byt i cely radek tabulky (tuzka v prvni bunce, hodnota ve druhe) */
tr.badm-inline-edit { display: table-row; }
.badm-inline-edit__pen {
    margin-left: 10px;      /* odsazeni od hodnoty – tuzka se nesmi lepit na text */
    /* zadny vertikalni padding a dedena vyska radku: tuzka nesmi zvetsit
       radkovy box popisku, jinak by popisek nelicoval s prvnim radkem hodnoty */
    padding: 0 2px;
    line-height: inherit;
    vertical-align: baseline;
    background: none;
    border: none;
    cursor: pointer;
    color: var(--badm-text-muted);
    font-size: 11px;
    opacity: .5;            /* nenapadna dokud na ni uzivatel nemiri */
    transition: color .15s, opacity .15s;
}
.badm-inline-edit__pen:hover { color: var(--badm-primary); opacity: 1; }
/* tuzka pred popiskem (sjednocena pozice ve sloupci – nedela "zuby") */
.badm-inline-edit__pen:first-child { margin-left: 0; margin-right: 6px; }
/* Prepinani zobrazeni resi trida is-editing na obalu (ne atribut hidden –
   autorsky display by ho stejne prebil). */
.badm-inline-edit__form {
    display: none;
    align-items: center;
    gap: 4px;
    flex-wrap: wrap;
}
/* flex pres celou sirku bunky – input si vezme zbytek mista po tlacitkach,
   at se formular v uzke karte nerozpadne na vic radku */
.badm-inline-edit.is-editing .badm-inline-edit__form { display: flex; width: 100%; }
.badm-inline-edit.is-editing .badm-inline-edit__value { display: none; }
/* tuzka jen zprumerni – kdyby zmizela uplne, poskocil by popisek vedle ni */
.badm-inline-edit.is-editing .badm-inline-edit__pen { visibility: hidden; }

/* Doplnkove pole formulare na vlastnim radku pod hlavnim prvkem
   (napr. kod vydejniho mista pod vyberem dopravy) */
.badm-inline-edit__extra {
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex-basis: 100%;
}
.badm-inline-edit__extra[hidden] { display: none; }
.badm .badm-inline-edit__input {
    display: inline-block;
    /* zaklad 0 + grow: input si vezme zbytek radku po tlacitkach. Nesmi mit
       vlastni sirku – pri flex-wrap se polozka, ktera se nevejde, ZALOMI
       misto aby se zuzila, a formular by se rozpadl na vic radku.
       width:0 (ne auto) je klicovy i pro tabulku: sirka obsahu selectu by
       jinak vstupovala do vypoctu sirky sloupce a roztahla celou kartu. */
    flex: 1 1 0%;
    width: 0;
    min-width: 0;
    max-width: 100%;
    padding: 3px 6px;
    font-size: 12px;
}
/* v doplnkovem poli je smer sloupcovy – flex-basis by tam ridil VYSKU */
.badm-inline-edit__extra .badm-inline-edit__input { flex: none; width: 100%; }
.badm-inline-edit__extra label { margin-bottom: 0; }

/* [hidden] na radku – autorsky display:table-row vyse by ho jinak prebil */
tr.badm-inline-edit[hidden] { display: none; }

/* Navazany radek (badm-inline-edit--linked): edituje se spolu s predchozim
   radkem, uklada se v jednom requestu pres jeho data-extra-scope. Ve stavu
   is-slave proto skryva vlastni tuzku i potvrzovaci tlacitka – potvrzuje se
   nahore u nadrazeneho radku. */
/* tuzka jen zprumerni (drzi misto – popisky sloupce zustanou zarovnane),
   potvrzovaci tlacitka mizi z toku uplne */
tr.badm-inline-edit--linked.is-slave .badm-inline-edit__pen { visibility: hidden; }
tr.badm-inline-edit--linked.is-slave .badm-inline-edit__save,
tr.badm-inline-edit--linked.is-slave .badm-inline-edit__cancel { display: none; }
/* select potrebuje misto vpravo na sipku (badm select ma padding-right 30px) */
.badm select.badm-inline-edit__input { padding-right: 28px; }
.badm-inline-edit__form .badm-btn { flex: 0 0 auto; }
.badm-inline-edit__form .badm-btn { padding: 3px 8px; }
/* Na stred jen PRI EDITACI, aby popisek sedel k inputu. Ve vypisu zustava
   vertical-align:top z badm-table--text – dlouha hodnota se zalomi na vic
   radku a popisek ma zustat u prvniho, ne uprostred. */
.badm-table--text tr.badm-inline-edit.is-editing td,
.badm-table--text tr:has(.badm-inline-edit.is-editing) td { vertical-align: middle; }

.badm-input--compact,
.badm select.badm-input--compact {
    width: auto;
    min-width: 160px;
}

/* ---------- Form grid (2 sloupce na desktopu) ---------- */
.badm-form-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0 var(--badm-gap);
    max-width: 560px;
}

@media (min-width: 640px) {
    .badm-form-grid {
        grid-template-columns: 1fr 1fr;
    }
}

.badm-form-grid__footer {
    grid-column: 1 / -1;
    padding-top: 4px;
}

/* ---------- Page Header & Title ---------- */
.badm-page-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: var(--badm-gap);
    flex-wrap: wrap;
}

.badm-page-title {
    font-size: 18px;
    font-weight: 700;
    margin: 0 0 var(--badm-gap);
}

.badm-page-header .badm-page-title {
    margin-bottom: 0;
}

/* ---------- Box (stat karticky) ---------- */
.badm-box-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: var(--badm-gap);
}

.badm-box {
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    padding: 12px 16px;
    text-align: center;
    min-width: 120px;
}

.badm-box__value {
    display: block;
    font-size: 18px;
    font-weight: 700;
    color: var(--badm-gray-900);
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.badm-box__label {
    display: block;
    font-size: 11px;
    color: var(--badm-text-muted);
    margin-top: 2px;
}

/* Toggle – klikaci box ovladajici graf */
.badm-box--toggle {
    cursor: pointer;
    transition: box-shadow .15s, opacity .15s;
    user-select: none;
    opacity: .5;
}

.badm-box--toggle.is-active {
    opacity: 1;
    box-shadow: 0 1px 4px rgba(0,0,0,.08);
}

.badm-box--toggle:not(.is-active):hover {
    opacity: .8;
}

/* Barevne modifikatory */
.badm-box--accent {
    border-color: var(--badm-primary);
    border-width: 2px;
}

.badm-box--warn .badm-box__value { color: var(--badm-danger); }

/* Porovnani (delty) */
.badm-box__comps {
    display: flex;
    gap: 8px;
    justify-content: center;
    margin-top: 6px;
}

.badm-box__comp {
    text-align: center;
}

.badm-box__comp .badm-table__delta {
    display: block;
    font-size: .72rem;
}

.badm-box__comp-abs {
    display: block;
    font-size: .68rem;
    color: var(--badm-gray-700);
    white-space: nowrap;
}

/* Warn text pod boxem */
.badm-box__warn {
    color: var(--badm-danger);
    font-size: 10px;
    margin-top: 4px;
}

/* ---------- Card ---------- */
.badm-card {
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    padding: var(--badm-gap);
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-bottom: var(--badm-gap);
    transition: box-shadow .15s;
}
/* display:flex prebiji UA styl atributu hidden – bez tohoto by karta
   s hidden zustala viditelna (stejny fix jako .badm-multiselect__menu) */
.badm-card[hidden] { display: none; }
.badm-btn[hidden] { display: none; }
.badm-half-grid .badm-card { margin-bottom: 0; }
.badm-card:hover {
    box-shadow: 0 2px 8px rgba(0,0,0,.05);
}

.badm-card__title {
    font-size: 14px;
    font-weight: 600;
    margin: 0 0 12px;
}

.badm-card__text {
    color: var(--badm-text-muted);
    font-size: 12px;
    flex: 1;
}
.badm-card__note { font-size: .78rem; color: var(--badm-text-muted); margin: -8px 0 14px; }

/* badm-card extensions – header s ikonou, meta text, action row */
.badm-card__header { display: flex; align-items: center; gap: .75rem; margin-bottom: .5rem; font-weight: 600; font-size: .95rem; flex-wrap: wrap; }
.badm-card__meta { font-size: .8rem; color: var(--badm-text-muted); margin-bottom: .6rem; line-height: 1.6; }
.badm-card__actions { display: flex; gap: .4rem; flex-wrap: wrap; margin-top: .75rem; }
.badm-card__actions--stack { flex-direction: column; align-items: stretch; }
.badm-card__actions--stack .badm-btn { justify-content: flex-start; }
/* --split: tlacitka si rovnym dilem rozdeli sirku karty (2 = po 50 %) */
.badm-card__actions--split .badm-btn { flex: 1 1 0; min-width: 0; text-align: center; }

/* Barevne modifikatory karty – border-left pro stavove podbarveni */
.badm-card--warn   { border-left: 4px solid var(--badm-warning); }
.badm-card--danger { border-left: 4px solid var(--badm-danger); background: var(--badm-danger-bg); }
.badm-card--ok     { border-left: 4px solid var(--badm-success); }

/* ---------- Card stack – vertikalni seznam karet ---------- */
.badm-card-stack { display: flex; flex-direction: column; gap: 12px; margin-top: var(--badm-gap); }
.badm-card-stack .badm-card { margin-bottom: 0; }

/* ---------- Half grid – 2-sloupcovy layout pro karty ---------- */
.badm-half-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--badm-gap); margin-bottom: var(--badm-gap); }
@media (max-width: 900px) { .badm-half-grid { grid-template-columns: 1fr; } }

/* ---------- Third grid – 3-sloupcovy layout pro karty ---------- */
.badm-third-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: var(--badm-gap); margin-bottom: var(--badm-gap); }
.badm-third-grid .badm-card { margin-bottom: 0; }
.badm-third-grid .badm-box { min-width: 0; flex: 1 1 0; }
@media (max-width: 1100px) { .badm-third-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 700px) { .badm-third-grid { grid-template-columns: 1fr; } }

/* ---------- Quarter grid – 4-sloupcovy layout pro karty ---------- */
.badm-quarter-grid { display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; gap: var(--badm-gap); margin-bottom: var(--badm-gap); }
.badm-quarter-grid .badm-card { margin-bottom: 0; }
.badm-quarter-grid .badm-box { min-width: 0; flex: 1 1 0; }
@media (max-width: 1200px) { .badm-quarter-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .badm-quarter-grid { grid-template-columns: 1fr; } }

/* ---------- Fifth grid – 5-sloupcovy layout pro karty ---------- */
.badm-fifth-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--badm-gap); margin-bottom: var(--badm-gap); }
.badm-fifth-grid .badm-card { margin-bottom: 0; }
.badm-fifth-grid .badm-box { min-width: 0; flex: 1 1 0; }
@media (max-width: 1400px) { .badm-fifth-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 900px)  { .badm-fifth-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px)  { .badm-fifth-grid { grid-template-columns: 1fr; } }

/* min-width:0 na grid items – jinak default min-width:auto necha siroky obsah
   (tabulka, dlouhy text, select) roztahnout 1fr track nad sirku gridu a cela
   stranka pak preteka vodorovne. S min-width:0 se track smrsti a vnitrni
   scroll-kontejner (.badm-table-wrap) scrolluje misto pretekani stranky. */
.badm-half-grid > *,
.badm-third-grid > *,
.badm-quarter-grid > *,
.badm-fifth-grid > * { min-width: 0; }

/* ---------- Card grid – responzivni grid pro karet ---------- */
/* Vychozi: auto-fill minmax(300px) – karta se "rozleje" na volny prostor */
.badm-card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: var(--badm-gap); margin-bottom: var(--badm-gap); }
.badm-card-grid .badm-card { margin-bottom: 0; }
/* Grid polozky maji vychozi min-width:auto = nesmrsti se pod sirku obsahu.
   Dlouhy select nebo siroka tabulka uvnitr karty by tak roztahli cely sloupec
   nad ramec 1fr. min-width:0 to vraci do rezie gridu. */
.badm-card-grid > * { min-width: 0; }
/* Fixni pocty sloupcu */
.badm-card-grid--cols-3 { grid-template-columns: repeat(3, 1fr); }
.badm-card-grid--cols-4 { grid-template-columns: repeat(4, 1fr); }
/* Auto-fill varianty pro ruzne sirky karet */
.badm-card-grid--wide   { grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); }
.badm-card-grid--narrow { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.badm-card-grid--tight  { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
/* Responzivni breakpointy pro fixni sloupce */
@media (max-width: 1200px) { .badm-card-grid--cols-4 { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 1024px) { .badm-card-grid--cols-3 { grid-template-columns: repeat(2, 1fr); } .badm-card-grid--cols-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 800px)  { .badm-card-grid--cols-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px)  { .badm-card-grid--cols-3, .badm-card-grid--cols-4 { grid-template-columns: 1fr; } }
@media (max-width: 600px)  { .badm-card-grid { grid-template-columns: 1fr; } .badm-card-grid--wide, .badm-card-grid--narrow { grid-template-columns: 1fr; } }
/* Modifikator: i na uzkem mobilu drzet 2 karty na radek (male karty – napr. reklamy konkurence).
   Az za pravidly vyse, aby pri shodne specificite vyhral poradim. */
@media (max-width: 640px) {
    .badm-card-grid--mobile-2 { grid-template-columns: 1fr 1fr; gap: 8px; }
}

/* ---------- Section label – uppercase muted nadpis skupiny prvku ---------- */
.badm-section-label { font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--badm-text-muted); margin: 0 0 .6rem; }

/* ---------- Page section – margin wrapper pro skupiny karet na strance ---------- */
.badm-page-section { margin-top: 1.5rem; margin-bottom: 1.75rem; }

/* ---------- Percent bar – sdileny progress bar pro tabulky ---------- */
/* Pouziti: <div class="badm-pct-bar"><div class="badm-pct-bar__fill badm-pct-bar--good" style="width:75%"></div><span class="badm-pct-bar__val">75 %</span></div> */
/* Modifikatory: --good (zelena), --ok (zluta), --bad (cervena). --sm pro mensi vysku. */
.badm-pct-bar       { position: relative; width: 100%; min-width: 80px; height: 22px; background: var(--badm-bg); border-radius: 4px; overflow: hidden; }
.badm-pct-bar__fill  { position: absolute; top: 0; right: 0; height: 100%; border-radius: 4px; transition: width .3s; }
.badm-pct-bar__val   { position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: flex; align-items: center; justify-content: flex-end; padding-right: 6px; font-size: .75rem; font-weight: 600; color: var(--badm-gray-800); }
.badm-pct-bar--good  { background: var(--badm-success-border); }
.badm-pct-bar--ok    { background: var(--badm-warning-border); }
.badm-pct-bar--bad   { background: var(--badm-danger-border); }
.badm-pct-bar--sm    { min-width: 60px; height: 18px; }
.badm-pct-bar--sm .badm-pct-bar__val { font-size: .7rem; }

/* ---------- Panel ---------- */
.badm-panel {
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    margin-bottom: var(--badm-gap);
    overflow: hidden;
}

.badm-panel__meta {
    font-size: 12px;
    color: var(--badm-text-muted);
}

/* ---------- Footer ---------- */
.badm-footer {
    padding: 10px var(--badm-gap);
    text-align: center;
    font-size: 12px;
    color: var(--badm-text-muted);
    border-top: 1px solid var(--badm-border);
    margin-top: auto;
}

/* ---------- Hamburger Toggle ---------- */
.badm-header__toggle {
    display: none;
    flex-direction: column;
    justify-content: center;
    gap: 4px;
    width: 32px;
    height: 32px;
    padding: 6px;
    background: none;
    border: none;
    cursor: pointer;
    flex-shrink: 0;
}
.badm-header__toggle span {
    display: block;
    height: 2px;
    background: var(--badm-gray-400);
    border-radius: 2px;
    transition: transform .2s, opacity .2s;
}
.badm-header__toggle.is-active span:nth-child(1) {
    transform: translateY(6px) rotate(45deg);
}
.badm-header__toggle.is-active span:nth-child(2) {
    opacity: 0;
}
.badm-header__toggle.is-active span:nth-child(3) {
    transform: translateY(-6px) rotate(-45deg);
}

/* ============================================================
   RESPONSIVE
   ============================================================ */

@media (max-width: 960px) {
    :root {
        --badm-gap: 12px;
    }

    .badm-header {
        gap: 10px;
        padding: 0 12px;
    }

    .badm-header__toggle {
        display: flex;
    }

    .badm-sidebar {
        position: fixed;
        top: 0;
        left: 0;
        height: 100vh;
        z-index: 150;
        transform: translateX(-100%);
        transition: transform .25s ease;
    }
    .badm-sidebar.is-open {
        transform: translateX(0);
    }

    .badm-hero {
        flex-direction: column;
        align-items: flex-start;
        padding: 16px 12px;
    }

    .badm-hero__actions {
        width: 100%;
    }

    .badm-hero__actions .badm-btn {
        flex: 1;
        text-align: center;
    }

    .badm-grid {
        grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    }
}

@media (max-width: 640px) {
    .badm-main {
        padding: 3px;
    }
    .badm-page-title {
        padding-left: 6px;
    }
    /* Akcni tlacitka v hlavicce stranky stackovat pod nadpis – jinak se na uzkem
       viewportu podsunou pod absolutni odkaz "Napoveda" (top-right) a prekryvaji se.
       padding-right na nadpisu rezervuje misto pro Napovedu na jeho radku. */
    .badm-page-header {
        flex-direction: column;
        align-items: stretch;
    }
    .badm-page-header .badm-page-title {
        padding-right: 88px;
    }
    .badm-header {
        flex-wrap: wrap;
        height: auto;
        padding: 8px 12px;
        gap: 6px;
    }

    .badm-header__toggle {
        display: flex;
    }

    .badm-header__brand {
        flex: 1;
    }

    .badm-nav {
        display: none;
        flex-direction: column;
        width: 100%;
        order: 10;
        gap: 2px;
        padding-top: 6px;
        border-top: 1px solid var(--badm-border);
    }
    .badm-nav.is-open {
        display: flex;
    }

    .badm-nav__link {
        width: 100%;
        padding: 8px 10px;
        border-radius: var(--badm-radius);
    }

    .badm-header__user {
        margin-left: 0;
        order: 2;
    }

    .badm-header__user-name {
        display: none;
    }

    .badm-hero {
        padding: 14px 12px;
    }

    .badm-hero__title {
        font-size: 18px;
    }

    .badm-hero__actions {
        flex-direction: column;
    }

    .badm-grid {
        grid-template-columns: 1fr;
    }

    .badm-card {
        padding: 12px;
    }

    .badm-panel__header {
        padding: 8px 12px;
    }
}

/* ============================================================
   LOGIN PAGE
   ============================================================ */

.badm-login-page .badm-main {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 1;
    padding: var(--badm-gap);
}

.badm-login {
    width: 100%;
    max-width: 380px;
}

.badm-login__card {
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    padding: 32px 24px 24px;
    box-shadow: 0 4px 24px rgba(0, 0, 0, .08);
}

.badm-login__header {
    text-align: center;
    margin-bottom: 20px;
}

.badm-login__header .badm-header__logo {
    font-size: 18px;
}

.badm-login__error {
    background: var(--badm-danger-light);
    color: var(--badm-danger-text);
    border: 1px solid var(--badm-danger-border);
    border-radius: var(--badm-radius);
    padding: 6px 10px;
    font-size: 12px;
    margin-bottom: 12px;
}

.badm-login__form {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.badm-login__field {
    display: flex;
    flex-direction: column;
}

.badm-login__submit {
    width: 100%;
    padding: 7px;
    font-size: 12px;
    margin-top: 2px;
}

/* ============================================================
   ALERTS
   ============================================================ */

.badm-alert {
    border-radius: var(--badm-radius);
    padding: 6px 10px;
    font-size: 12px;
    margin-bottom: 10px;
}

.badm-alert--error {
    background: var(--badm-danger-light);
    color: var(--badm-danger-text);
    border: 1px solid var(--badm-danger-border);
}

.badm-alert--success {
    background: var(--badm-success-light);
    color: var(--badm-success-text);
    border: 1px solid var(--badm-success-border);
}

.badm-alert--warning {
    background: var(--badm-warning-bg);
    color: var(--badm-warning-text);
    border: 1px solid var(--badm-warning-border);
}

/* ============================================================
   ACCOUNT PAGE (ucet)
   ============================================================ */

.badm-account {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--badm-gap);
    max-width: 720px;
}

@media (min-width: 640px) {
    .badm-account {
        grid-template-columns: 1fr 1fr;
    }
}

.badm-account__title {
    grid-column: 1 / -1;
    font-size: 18px;
    font-weight: 700;
}

.badm-account .badm-card {
    padding: 14px var(--badm-gap) var(--badm-gap);
}

.badm-account .badm-card__title {
    padding-bottom: 8px;
    border-bottom: 1px solid var(--badm-border);
}

.badm-account .badm-form-group {
    margin-bottom: 12px;
}

.badm-account__token-form {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--badm-border);
}
/* Kroky pro zprovozneni rozsireni Bible v Claude Desktop (modal noveho tokenu) */
.badm-account__token-steps {
    margin: 8px 0 16px;
    padding-left: 20px;
    font-size: 13px;
    line-height: 1.6;
    color: var(--badm-text);
}
.badm-account__token-steps li {
    margin-bottom: 6px;
}

/* ============================================================
   SECTION (spolecny layout pro sekce na strankach)
   ============================================================ */

.badm-section {
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    padding: var(--badm-gap);
    margin-bottom: var(--badm-gap);
}

.badm-section__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--badm-border);
    flex-wrap: wrap;
}

.badm-section__title {
    font-size: 14px;
    font-weight: 600;
    margin: 0 0 12px;
}

.badm-section__header .badm-section__title {
    margin-bottom: 0;
}
.badm-section__subtitle {
    font-size: 11px;
    color: var(--badm-gray-400);
    margin: 2px 0 6px;
}

/* ── Rozbalovaci sekce (collapsible box) ────────────── */
.badm-section__toggle {
    display: flex;
    align-items: center;
    gap: 8px;
    background: none;
    border: none;
    padding: 0;
    margin: 0;
    cursor: pointer;
    color: var(--badm-text);
    font: inherit;
    text-align: left;
}
.badm-section__toggle .badm-section__title { margin: 0; }
.badm-section__arrow {
    font-size: 10px;
    color: var(--badm-text-muted);
    transition: transform 0.15s;
    display: inline-block;
}
.badm-section__toggle.is-open .badm-section__arrow { transform: rotate(90deg); }
.badm-section__count { color: var(--badm-text-muted); font-weight: 400; }
.badm-section--collapsible > .badm-section__header {
    margin-bottom: 0;
    border-bottom: none;
    padding-bottom: 0;
}
.badm-section__body { display: none; }
.badm-section__body.is-open {
    display: block;
    margin-top: 12px;
    padding-top: 14px;
    border-top: 1px solid var(--badm-border);
}

/* ============================================================
   USERS PAGE (sprava spravcu a roli)
   ============================================================ */

/* ── Roles (rozbalovaci layout) ────────────── */

.badm-roles {
    display: flex;
    flex-direction: column;
    gap: 1px;
    background: var(--badm-border);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    overflow: hidden;
}

.badm-roles__item {
    background: var(--badm-surface);
}

.badm-roles__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 12px;
}

.badm-roles__toggle {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    color: var(--badm-text);
}

.badm-roles__arrow {
    font-size: 9px;
    transition: transform 0.15s;
    display: inline-block;
}

.badm-roles__toggle.is-open .badm-roles__arrow {
    transform: rotate(90deg);
}

.badm-roles__header-actions {
    display: flex;
    gap: 4px;
}

.badm-roles__body {
    display: none;
    padding: 0 12px 10px;
}

.badm-roles__body.is-open {
    display: block;
}

.badm-roles__pages {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 6px 16px;
}

.badm-roles__footer {
    margin-top: 8px;
}

.badm-roles__widgets-form {
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px solid var(--badm-border);
}

/* ── Checkbox ──────────────────────────────── */

.badm-checkbox {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 11px;
    cursor: pointer;
    white-space: nowrap;
}

/* [hidden] je jen UA pravidlo display:none – autorsky display:inline-flex vyse
   ho prebiji, takze skryvani checkboxu z JS by jinak nefungovalo */
.badm-checkbox[hidden] { display: none; }

.badm-checkbox input {
    margin: 0;
    vertical-align: middle;
}

/* ── Table ─────────────────────────────────── */

.badm-table-wrap {
    overflow-x: auto;
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    background: var(--badm-surface);
}

/* Mobil: tabulku v scroll-wrapu nedrtit do sirky viewportu (sloupce se lamou do
   uzkych svislych proužků) – misto toho nezalamovat a nechat vodorovne scrollovat.
   .badm-table-wrap existuje prave kvuli overflow-x:auto, takze scroll je zamer. */
@media (max-width: 640px) {
    .badm-table-wrap .badm-table th,
    .badm-table-wrap .badm-table td {
        white-space: nowrap;
    }
}

/* Scroll-x jen na mobilu – pro tabulky se sticky-header. Klasicky .badm-table-wrap
   by udelal ze sebe scroll-kontext a rozbil sticky thead i na desktopu; tady je
   na desktopu overflow:visible (sticky funguje), na mobilu overflow-x:auto (scroll,
   sticky se obetuje – mobil = horizontalni scroll je prioritou). */
@media (max-width: 640px) {
    .badm-scroll-x-mobile { overflow-x: auto; }
    .badm-scroll-x-mobile .badm-table th,
    .badm-scroll-x-mobile .badm-table td { white-space: nowrap; }
}

.badm-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}

.badm-table th,
.badm-table td {
    padding: 5px 8px;
    text-align: left;
    border-bottom: 1px solid var(--badm-border);
    vertical-align: middle;
    height: 32px;
}

.badm-table tbody tr:last-child td {
    border-bottom: none;
}

.badm-table thead {
    background: var(--badm-bg);
}

.badm-table th {
    font-weight: 600;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: .4px;
    color: var(--badm-text-muted);
}

.badm-table tbody tr:hover {
    background: var(--badm-gray-50);
}

.badm-table__actions {
    display: flex;
    gap: 4px;
    flex-wrap: wrap;
    align-items: center;
}

.badm-inline-form {
    display: inline-flex;
    gap: 3px;
    align-items: center;
}

/* Users: inline prejmenovani modulu – pencil se objevi pri hoveru radku */
.badm-module-label {
    margin-right: 6px;
}
.badm-module-edit {
    opacity: 0;
    transition: opacity .15s;
}
tr:hover .badm-module-edit,
.badm-module-edit:focus-within {
    opacity: 1;
}
.badm-module-delete__btn:hover {
    color: var(--badm-danger);
    border-color: var(--badm-danger);
}
.badm-module-icon {
    width: 18px;
    margin-right: 6px;
    color: var(--badm-text-muted);
    text-align: center;
}
.badm-module-toggle.is-open {
    background: var(--badm-inverse-bg);
    color: var(--badm-inverse-text);
}
/* Edit panel modulu (rozbalovaci radek pod modulem) */
.badm-module-editrow > td {
    background: var(--badm-bg);
    padding: 12px 14px;
}
.badm-module-editform {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 14px;
}
.badm-module-editform .badm-form-group {
    margin: 0;
}
.badm-module-iconwrap {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
.badm-module-iconpreview {
    width: 18px;
    text-align: center;
    color: var(--badm-gray-900);
}
/* Sprava skupin menu – zarovnany grid (form ma display:contents, deti tvori bunky).
   Pevne sirky sloupcu (zadne auto), aby hlavicka i radky byly zarovnane. */
.badm-grouplist {
    display: flex;
    flex-direction: column;
    gap: 4px;
    max-width: 760px;
}
.badm-grouplist__head,
.badm-grouplist__row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 120px 72px 88px 36px;
    align-items: center;
    gap: 10px;
    padding: 2px 0;
}
.badm-grouplist__head {
    font-size: .7rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--badm-text-muted);
    padding-bottom: 4px;
    border-bottom: 1px solid var(--badm-border);
}
.badm-grouplist__form,
.badm-grouplist__del { display: contents; }
.badm-grouplist__name { display: flex; align-items: center; gap: 6px; min-width: 0; }
/* Inputy uvnitr gridu vyplni bunku (prebiji min-width:160px z badm-input--compact) */
.badm-grouplist .badm-input--compact { min-width: 0; width: 100%; }
.badm-grouplist__row .badm-btn { width: 100%; }

.badm-text-center, td.badm-text-center, th.badm-text-center { text-align: center; }
.badm-text-right, td.badm-text-right, th.badm-text-right { text-align: right; }
.badm-text-left, td.badm-text-left, th.badm-text-left { text-align: left; }
td.badm-table__num, th.badm-table__num { text-align: right; }
/* Sloupec siroky jen podle obsahu (datum, id, badge) – zbytek mista dostanou ostatni. */
td.badm-table__fit, th.badm-table__fit { width: 1%; white-space: nowrap; }

/* ── Table sort (sortovatelne hlavicky) ────── */

.badm-sort {
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
}

.badm-sort::after {
    content: "⇅";
    margin-left: 3px;
    opacity: .3;
    font-size: 9px;
}

.badm-sort:hover::after {
    opacity: .6;
}

.badm-sort--asc::after {
    content: "↑";
    opacity: .8;
}

.badm-sort--desc::after {
    content: "↓";
    opacity: .8;
}

/* Server-side sort: obal tabulky behem AJAX swapu (core.js data-sort-region) */
[data-sort-region].is-loading { opacity: .5; pointer-events: none; transition: opacity .15s; }

/* ── Table modifikatory ───────────────────── */

/* Vetsi pismo (13px misto base 12px) */
.badm-table--lg { font-size: 13px; }
.badm-table--lg th { font-size: 11px; }

/* Relaxed tabulka (vetsi padding, napr. finance) */
.badm-table--relaxed td,
.badm-table--relaxed th { padding: 8px 12px; }
.badm-table--relaxed tr:last-child td { border-bottom: none; }

/* Default right-align (numericke tabulky) */
.badm-table--right-align td,
.badm-table--right-align th { text-align: right; }
.badm-table--right-align td.badm-text-left,
.badm-table--right-align th.badm-text-left { text-align: left; }

/* Sticky prvni sloupec */
.badm-table--sticky-first th:first-child,
.badm-table--sticky-first td:first-child {
    position: sticky; left: 0; z-index: 1;
    background-color: var(--badm-surface);
}
.badm-table--sticky-first thead th:first-child { z-index: 3; background-color: var(--badm-gray-50); }

/* Svisle delici cary mezi skupinami sloupcu – gradient misto border-left kvuli sticky+border-collapse */
.badm-table__divider { background-image: linear-gradient(to right, var(--badm-border) 2px, transparent 2px); }

/* Souhrn na konci tabulky */
.badm-table__summary { border-top: 2px solid var(--badm-gray-700); background: var(--badm-gray-50); }
.badm-table__summary td { font-weight: 600; }

/* Delta barveni (pozitivni/negativni zmena) */
.badm-table__delta { font-weight: 600; }
.badm-table__delta--pos { color: var(--badm-success); }
.badm-table__delta--neg { color: var(--badm-danger); }

/* Sticky zahlavi (thead zustane navrchu pri scrollu) */
.badm-table--sticky-header thead { position: sticky; top: 0; z-index: 2; }

/* Doplnek k --sticky-header pro tabulky lepici se ke STRANCE (ne uvnitr
   scroll wrapu): top = vyska sticky topbaru (48px), jinak thead klouze
   schovany pod horni listou. OPT-IN per tabulka – globalne by top:48px
   rozbil tabulky se sticky headerem uvnitr .badm-table-wrap. */
.badm-table--sticky-topbar thead { top: 48px; }

/* Nowrap (bunky se nezalamou) */
.badm-table--nowrap td,
.badm-table--nowrap th { white-space: nowrap; }

/* Dvouradkove zahlavi se skupinami sloupcu */
.badm-table__header-groups th {
    text-align: left;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    padding: 6px 8px;
}
.badm-table__header-sub th {
    font-size: 11px;
    text-align: right;
    padding: 4px 8px;
    color: var(--badm-gray-500);
    font-weight: 500;
    cursor: pointer;
    user-select: none;
}
.badm-table__header-sub th:hover { color: var(--badm-gray-700); }
.badm-table__header-sub th:first-child { text-align: right; position: static; }

/* Barevne skupiny sloupcu (border-bottom na group header) */
.badm-table__group { border-bottom: 2px solid; }
.badm-table__group--revenue { border-color: var(--badm-success); background-color: rgba(22, 163, 74, 0.04); }
.badm-table__group--costs   { border-color: var(--badm-danger); background-color: rgba(220, 38, 38, 0.04); }
.badm-table__group--pno     { border-color: var(--badm-info); background-color: rgba(37, 99, 235, 0.04); }
.badm-table__group--weather { border-color: var(--badm-indigo); background-color: rgba(99, 102, 241, 0.04); }
.badm-table__group--sales   { border-color: var(--badm-info); background-color: rgba(37, 99, 235, 0.04); }
.badm-table__group--margin  { border-color: var(--badm-success); background-color: rgba(22, 163, 74, 0.04); }
.badm-table__group--perf    { border-color: var(--badm-purple); background-color: rgba(139, 92, 246, 0.04); }
.badm-table__group--orders  { border-color: var(--badm-info); background-color: rgba(14, 165, 233, 0.04); }

/* Sort indikatory (data-sort-dir atribut na th) */
.badm-table th[data-sort-dir]::after { font-size: 9px; color: var(--badm-primary); margin-left: 3px; }
.badm-table th[data-sort-dir="asc"]::after { content: ' ▲'; }
.badm-table th[data-sort-dir="desc"]::after { content: ' ▼'; }

/* Textova/key-value tabulka (bez borderu, hover, tightsi padding) */
.badm-table--text td {
    padding: 2px 0;
    vertical-align: top;
    border-bottom: none;
    height: auto;
}
.badm-table--text tbody tr:hover { background: none; }
.badm-table--text td:first-child {
    color: var(--badm-text-muted);
    padding-right: 10px;
    white-space: nowrap;
    width: 1%;
}

/* ── Badge ─────────────────────────────────── */

.badm-badge {
    display: inline-block;
    font-size: 10px;
    font-weight: 600;
    padding: 1px 6px;
    border-radius: 10px;
    background: var(--badm-border);
    color: var(--badm-text);
    white-space: nowrap;
}

.badm-badge--super {
    background: var(--badm-purple-text);
    color: var(--badm-on-accent);
}

.badm-badge--active {
    background: var(--badm-success-bg);
    color: var(--badm-success-text);
}

.badm-badge--inactive {
    background: var(--badm-danger-light);
    color: var(--badm-danger-text);
}

.badm-badge--none {
    background: var(--badm-gray-100);
    color: var(--badm-gray-400);
}
.badm-badge--success { background: var(--badm-success-bg); color: var(--badm-success-text); }
.badm-badge--new { background: var(--badm-success); color: var(--badm-on-accent); }
.badm-badge--danger { background: var(--badm-danger-light); color: var(--badm-danger-text); }
.badm-badge--error { background: var(--badm-danger-bg); color: var(--badm-danger-text); }
.badm-badge--warn, .badm-badge--warning { background: var(--badm-warning-bg); color: var(--badm-warning-text); }
.badm-badge--info { background: var(--badm-info-bg); color: var(--badm-info-text); }
.badm-badge--muted { background: var(--badm-gray-100); color: var(--badm-gray-400); }
.badm-badge--neutral { background: var(--badm-gray-100); color: var(--badm-gray-500); }
/* Klikatelny badge (otevira modal) – jen kurzor a jemny hover, zadny ramecek.
   Pouziva se <span role="button">, ne <button>: nativni button si nese vlastni
   styl prohlizece (3D ramecek), ktery se bije s CI. */
.badm-badge--clickable { cursor: pointer; }
.badm-badge--clickable:hover { filter: brightness(1.08); }
/* Vysledek hlasovani se lisi od aktualniho zarazeni potisku – hlavni
   reportovaci signal ve vypisu digi potisku (viz PrintVote::badge).
   Podtrzeni misto obrysu – v hustem radku tabulky nedela vizualni sum. */
.badm-badge--mismatch { text-decoration: underline; text-decoration-style: wavy; text-underline-offset: 2px; }
.badm-badge--tshirt { background: var(--badm-info-bg); color: var(--badm-info-text); }
.badm-badge--mug { background: var(--badm-warning-bg); color: var(--badm-warning-text); }
.badm-badge--underwear { background: var(--badm-pink-bg); color: var(--badm-pink-text); }
.badm-badge--slippers { background: var(--badm-success-bg); color: var(--badm-success-text); }

/* ── Tag – obdelnikovy chip s borderem (ne pill) ── */
.badm-tag {
    display: inline-block;
    padding: 4px 12px;
    background: var(--badm-gray-50);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius-sm);
    font-size: 13px;
    color: var(--badm-gray-600);
}

/* ── Chipset – vicenasobny vyber jako toggle pilulky ──
   Nahrazuje dlouhe rady checkboxu ve filtrech (druhy digitisku, kategorie).
   Checkbox ZUSTAVA v DOM (odesila se s formularem, text chipu najde Ctrl+F),
   je jen vizualne skryty – aktivni stav se kresli pres :has(:checked).
   Varianta --grouped prida levy sloupec se jmenem skupiny. */
.badm-chipset {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 2px 4px;
    padding: 2px 0;
    min-width: 0;
}
.badm-chipset--grouped {
    flex-direction: column;
    align-items: stretch;
    gap: 2px;
}
/* Skupina = radek gridu: label ma JEDNOTNOU sirku sloupce napric vsemi
   skupinami, chipy ve vlastnim wrap kontejneru – lícuji pod sebou i v
   zalomenych radach (zadny zub, label se nikdy neodtrhne na konec radku) */
.badm-chipset__group {
    display: grid;
    grid-template-columns: 110px 1fr;
    gap: 10px;
    align-items: start;
}
.badm-chipset__group-label {
    justify-self: start;
    margin-top: 2px;
    white-space: nowrap;
    font-size: .65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .5px;
    color: var(--badm-text-muted);
    background: var(--badm-bg);
    padding: 1px 6px;
    border-radius: var(--badm-radius);
}
.badm-chipset__items {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 2px 4px;
    min-width: 0;
}

/* Vyska chipu je zamerne utazena (padding 1px, line-height 1.35): filtr druhu
   ma ~16 radek a kazdy usetreny pixel na radku se projevi 16x. Pill tvar drzi
   citelnost i pri teto vysce, protoze border oddeluje sousedni chipy. */
.badm-chip {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 1px 8px;
    border: 1px solid var(--badm-border);
    border-radius: 999px;
    background: var(--badm-surface);
    color: var(--badm-text);
    font-size: 12px;
    line-height: 1.35;
    white-space: nowrap;
    cursor: pointer;
    user-select: none;
    transition: background .15s, border-color .15s, color .15s;
}
.badm-chip:hover {
    border-color: var(--badm-primary);
    background: var(--badm-surface-hover);
}
/* Checkbox je pruhledny a roztazeny pres cely chip – neni videt, ale zustava
   hit-targetem i fokusovatelnym prvkem. Diky tomu funguje klik kamkoli na chip,
   ovladani klavesnici i programaticky .check() (Playwright, JS). Varianta
   "1x1 px sr-only" by nechala ikonu prekryvat misto kliku. */
.badm-chip input[type="checkbox"] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    opacity: 0;
    appearance: none;
    cursor: pointer;
}
.badm-chip:has(input:checked) {
    background: var(--badm-primary);
    border-color: var(--badm-primary);
    color: var(--badm-on-accent);
}
.badm-chip:has(input:focus-visible) {
    outline: 2px solid var(--badm-primary);
    outline-offset: 2px;
}
/* Doplnkovy udaj v chipu (dodavatel, pocet kusu) – tlumeny, ale citelny */
.badm-chip__meta {
    font-size: 11px;
    opacity: .6;
}
.badm-chip:has(input:checked) .badm-chip__meta { opacity: .8; }
/* Piktogram druhu: v chipu mensi a bez posunu. Na akcentovanem pozadi musi byt
   bily – invert(1) z cerneho PNG. Specificita tohoto pravidla je vyssi nez
   dark-mode invert vyse, takze plati v obou rezimech. */
.badm-chip .badm-analytics__druh-icon {
    width: 15px;
    height: 15px;
    top: 0;
}
.badm-chip:has(input:checked) .badm-analytics__druh-icon { filter: invert(1); }

/* ── Dot ──────────────────────────────────── */
.badm-dot {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    flex-shrink: 0;
    /* Dvojity ring (data-driven barvy z DB, tokeny nelze pouzit): svetly vnitrni
       zviditelni cernou tecku v dark modu, tmavy vnejsi bilou tecku v light modu */
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .3), 0 0 0 1px rgba(0, 0, 0, .15);
}

/* ── Toolbar ──────────────────────────────── */
.badm-toolbar {
    display: flex;
    align-items: center;
    gap: .75rem;
    flex-wrap: wrap;
    margin-bottom: var(--badm-gap);
}
/* Akcni tlacitka nad obsahem patri doprava (primarni akce uplne vpravo) */
.badm-toolbar--right { justify-content: flex-end; }

/* ── Select small ──────────────────────────── */

.badm select.badm-select--small {
    font-size: 11px;
    padding: 0 20px 0 6px;
    height: 24px;
    line-height: 24px;
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    background: var(--badm-surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5' fill='none'%3E%3Cpath d='M.5.5l3.5 4 3.5-4' stroke='%236b7a8d' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 5px center / 8px;
    -webkit-appearance: none;
    appearance: none;
    width: auto;
}

/* ── Utility ───────────────────────────────── */

.badm-text-muted {
    color: var(--badm-text-muted);
    font-size: 11px;
}
.badm-text-warn    { color: var(--badm-warning); }
.badm-text-sm      { font-size: .8rem; }         /* sjednocuje .7rem / .75rem / .8rem inline fonty */
.badm-clickable    { cursor: pointer; }
.badm-dim          { opacity: .4; }              /* zeslabit sekundarni obsah (byl .35) */
.badm-inactive     { opacity: .5; }              /* neaktivni/ignorovany radek */
.is-hidden         { display: none !important; }
.is-msel-hidden    { display: none !important; }

/* ============================================================
   STATUS BADGE (barevne statusy objednavek, reusable)
   ============================================================ */

.badm-status {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 10px;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 10px;
    white-space: nowrap;
    /* pozadi chipu je pastel z DB (data-driven) -> text musi zustat tmavy i v dark mode */
    color: #1a1a1a;
}

/* ============================================================
   FILTER BAR (vyhledavani a filtrace, reusable)
   ============================================================ */

.badm-filter {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-bottom: var(--badm-gap);
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    padding: 10px 14px;
}
.badm-section .badm-filter {
    border: none;
    padding: 0;
    margin-bottom: 12px;
}
.badm-filter__row {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}
/* Orders filtr drzi vse na jednom radku (vc. tlacitka Hledat); inputy se misto
   zalomeni smrsti. Mobil prebiji column layoutem v breakpointu nize. */
.badm-filter--collapsible .badm-filter__row { flex-wrap: nowrap; }
.badm-filter__group { display: inline-flex; align-items: center; gap: 6px; height: 26px; }
.badm-filter__sep { width: 1px; height: 20px; background: var(--badm-border); margin: 0 4px; flex-shrink: 0; }

.badm-filter__more-btn {
    background: none; border: none; cursor: pointer;
    font-size: 11px; color: var(--badm-text-muted);
    display: inline-flex; align-items: center; gap: 4px;
    padding: 0; font-family: var(--badm-font);
}
.badm-filter__more-btn:hover { color: var(--badm-primary); }
.badm-filter__more-btn .fa-chevron-down { font-size: 9px; transition: transform .2s; }
.badm-filter__more-btn.is-open .fa-chevron-down { transform: rotate(180deg); }

.badm-filter__secondary { display: none; }
.badm-filter__secondary.is-open {
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
    padding-top: 8px; border-top: 1px solid var(--badm-border);
}

.badm-filter input[type="date"],
.badm-filter input[type="month"] { width: auto; padding: 2px 8px; font-size: 12px; height: 26px; box-sizing: border-box; border: 1px solid var(--badm-border); border-radius: var(--badm-radius); }
.badm-filter input[type="date"] { min-width: 120px; flex: 0 0 auto; }
.badm-filter input[type="month"] { min-width: 150px; font-family: var(--badm-font); }
.badm-filter label.badm-mkt__checkbox { font-size: 12px; margin-bottom: 0; display: inline-flex; white-space: nowrap; }
.badm-filter label.badm-filter__label { margin-bottom: 0; display: inline; }
.badm-filter .badm-switch { height: 26px; box-sizing: border-box; }
.badm-filter .badm-switch__item { height: 22px; padding: 0 10px; font-size: 12px; line-height: 22px; }
.badm-filter input:not([type="radio"]):not([type="checkbox"]),
.badm-filter select {
    width: auto;
    display: inline-block;
    flex: 0 1 140px;
    height: 26px;
    padding: 2px 8px;
    box-sizing: border-box;
}
.badm-filter input.badm-filter__input--narrow { flex: 0 1 90px; }
.badm-filter select {
    flex: 0 0 auto;
}
/* Filtr roztazeny na celou sirku radku (sklad): textove inputy vyplni volne
   misto a selecty maji vetsi min-sirku (v uzkem selectu je text namackany).
   Dvojita trida kvuli specificite – zakladni pravidlo vyse ma :not():not()
   = (0,3,1), samotny .badm-filter--stretch input[type] by prohral. */
.badm-filter.badm-filter--stretch input[type="text"] { flex: 1 1 120px; min-width: 0; }
.badm-filter.badm-filter--stretch select { min-width: 150px; }
/* Sirsi text input – dostane 2x vetsi podil volneho mista nez ostatni. */
.badm-filter.badm-filter--stretch input.badm-filter__input--wide { flex: 2 1 180px; }
/* --narrow musi fungovat i ve stretch filtru (kratke hodnoty typu velikost). */
.badm-filter.badm-filter--stretch input.badm-filter__input--narrow { flex: 0 1 90px; }
/* Stretch filtr drzi vse na jednom radku – inputy se pri nedostatku mista
   smrsti (min-width: 0) misto zalomeni. Mobil vraci wrap v breakpointu nize. */
.badm-filter--stretch .badm-filter__row { flex-wrap: nowrap; }
.badm-filter__label {
    font-weight: 600;
    color: var(--badm-text-muted);
    white-space: nowrap;
}
/* Checkbox ve filtrove liste – text stejne velky/vyrazny jako filter labely,
   vycentrovany s inputy (badm-checkbox ma default 11px, tady dedi 13px). */
.badm-filter .badm-checkbox {
    font-size: inherit;
    font-weight: 600;
    color: var(--badm-text-muted);
    gap: 6px;
}
.badm-filter__date {
    display: flex;
    align-items: center;
    gap: 6px;
}
.badm-filter__toggle {
    display: none;
}
@media (max-width: 640px) {
    .badm-filter__toggle {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
        width: 100%;
        padding: 10px;
        margin-bottom: 6px;
        background: var(--badm-bg);
        border: 1px solid var(--badm-border);
        border-radius: var(--badm-radius);
        font-size: 14px;
        font-weight: 600;
        color: var(--badm-text-muted);
        cursor: pointer;
    }
    .badm-filter__toggle .fa-chevron-down {
        transition: transform .2s;
    }
    .badm-filter__toggle.is-open .fa-chevron-down {
        transform: rotate(180deg);
    }
    .badm-filter--collapsible {
        display: none;
    }
    .badm-filter--collapsible.is-open {
        display: flex;
    }
    /* Plain filtr (marketing/analytics/kpi): kompaktni wrap-row – skupiny (Zeme, granularita
       switch, datumy) se zalamuji, switch zustava uzky, Zobrazit+Vice se sbali k sobe.
       Vychazi z mobilniho mockupu (desktop = jeden radek, nemenime). */
    .badm-filter__row {
        flex-wrap: wrap;
        align-items: center;
        gap: 8px 12px;
    }
    /* Orders filtr (collapsible) naopak stackovat do sloupce s full-width inputy –
       text inputy (cislo/VS/jmeno/email) maji byt pres celou sirku. */
    .badm-filter--collapsible .badm-filter__row {
        flex-direction: column;
        align-items: stretch;
    }
    /* Stretch filtr (sklad) na mobilu opet wrapuje – desktop nowrap by inputy udrtil. */
    .badm-filter--stretch .badm-filter__row { flex-wrap: wrap; }
    .badm-filter__group { flex-wrap: wrap; }
    .badm-filter__sep { display: none; }
    /* Stejna specificita jako desktop pravidlo (.badm-filter input:not()...:not()),
       jinak by se neaplikovalo a flex-basis 140px by ve sloupci delal vysku 140px.
       flex:0 0 auto = flex-basis auto → vysku urci height, ne flex-basis. */
    .badm-filter input:not([type="radio"]):not([type="checkbox"]),
    .badm-filter select {
        flex: 0 0 auto;
        height: 38px;
    }
    /* Datumy v orders (collapsible) vedle sebe pres celou sirku radku. */
    .badm-filter--collapsible input[type="date"]:not([type="radio"]),
    .badm-filter--collapsible input[type="month"]:not([type="radio"]) {
        flex: 1 1 0;
        min-width: 0;
        width: auto;
    }
    .badm-filter__label--desktop {
        display: none;
    }
    /* Hledat v orders vycentrovat; v plain filtru zustava inline vedle Vice. */
    .badm-filter--collapsible .badm-btn {
        align-self: center;
    }

    /* ── Plain filtr: stlacit na 2 radky (Zeme+switch / Od-Do+Zobrazit+Vice) ──
       Na 354px se skupiny tesne vejdou po dvou, kdyz: zmensime gap, mirne zuzime
       switch a u datumove skupiny skryjeme popisky Od/Do (rozsah je zrejmy)
       + zuzime datumova pole. :has() cili jen skupinu s datumy (Zeme/Porovnani zustanou). */
    .badm-filter:not(.badm-filter--collapsible) .badm-filter__row { gap: 6px 8px; }
    /* Skupina ma v zakladu height:26px – s 30px datumem/switchem by obsah pretekal
       a svisle se rozhodil (datum o 2px niz nez Zobrazit). Necht roste dle obsahu. */
    .badm-filter:not(.badm-filter--collapsible) .badm-filter__group { height: auto; }
    /* Jednotna vyska vsech ovladacu v radku (30px): datumy, switch, Zobrazit –
       at datum neni vyssi nez tlacitko a cara po rozkliknuti Vice neprekryva datumy. */
    .badm-filter:not(.badm-filter--collapsible) input[type="date"] {
        min-width: 0;
        width: 104px;
        height: 30px;
        padding: 2px 6px;
    }
    .badm-filter:not(.badm-filter--collapsible) .badm-switch { height: 30px; }
    .badm-filter:not(.badm-filter--collapsible) .badm-btn { height: 30px; }
    /* Switch: text vertikalne vycentrovat flexem (line-height to nedrzel presne). */
    .badm-filter:not(.badm-filter--collapsible) .badm-switch__item {
        display: inline-flex;
        align-items: center;
        height: 100%;
        padding: 0 9px;
        line-height: 1;
    }
    .badm-filter:not(.badm-filter--collapsible) .badm-filter__group:has(input[type="date"]) .badm-filter__label {
        display: none;
    }
}
.badm-filter-results {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 8px 12px;
    margin-top: 6px;
    margin-bottom: var(--badm-gap);
    background: var(--badm-primary-light);
    border-radius: var(--badm-radius);
    font-size: 12px;
    color: var(--badm-text);
}

/* ============================================================
   PAGINATION (strankovani, reusable)
   ============================================================ */

.badm-pagination {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 12px 0 4px;
}

.badm-pagination__link {
    font-size: 12px;
    font-weight: 500;
    color: var(--badm-primary);
    text-decoration: none;
}

.badm-pagination__link:hover {
    text-decoration: underline;
}

.badm-pagination__link--disabled {
    color: var(--badm-text-muted);
    pointer-events: none;
}

.badm-pagination__info {
    font-size: 12px;
    color: var(--badm-text-muted);
}

/* ============================================================
   ORDERS LIST (seznam objednavek)
   ============================================================ */

.badm-orders__row:hover {
    background: var(--badm-primary-light) !important;
}

.badm-orders__date {
    white-space: nowrap;
    color: var(--badm-text-muted);
}

.badm-table--orders .badm-orders__status {
    text-align: center;
}

.badm-orders__amount {
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.badm-table--orders .badm-orders__amount {
    text-align: right;
}

.badm-table--orders .badm-orders__flag {
    text-align: center;
}

.badm-orders__flag {
    font-size: 16px;
}

.badm-table--orders .badm-orders__paid {
    text-align: center;
}

.badm-table--orders .badm-text-center {
    text-align: center;
}

/* ── Poznamky (ikonky v seznamu) ──────────────────── */

.badm-orders__notes {
    white-space: nowrap;
}

.badm-orders__notes-btn {
    display: inline-flex;
    gap: 3px;
    cursor: pointer;
}

.badm-orders__note--pozn { color: var(--badm-success); font-size: 13px; }
.badm-orders__note--comment { color: var(--badm-info); font-size: 13px; }
.badm-orders__note--zaznam { color: var(--badm-warning); font-size: 13px; }

.badm-hidden { display: none; }

/* ============================================================
   ORDER DETAIL (detail objednavky)
   ============================================================ */

.badm-order-detail__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: var(--badm-gap);
    flex-wrap: wrap;
}

.badm-order-detail__badges {
    display: flex;
    gap: 6px;
    align-items: center;
    flex-wrap: wrap;
}

/* ── Info grid (dva sloupce – zakaznik + doruceni) ── */

.badm-info-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--badm-gap);
    margin-bottom: var(--badm-gap);
}

@media (min-width: 640px) {
    .badm-info-grid {
        grid-template-columns: 1fr 1fr;
    }
}

/* Priplatkova sluzba k polozce (prodlouzena lhuta) – vlastni radek, aby
   sloupce licovaly i u polozek s rozpadem nakladu, ale vizualne navazany na
   produkt nad sebou: bez oddelovaci linky a s odsazenim. */
/* Zadny vlastni padding ani border – radek se chova stejne jako radek darku,
   ktery sedi spravne. Drivejsi override (padding-top: 0 + border-top: none)
   ho vyosil vuci ostatnim bunkam. */
/* skutecna ikona misto zastupneho obdelniku (dysko) – stejna stopa */
.badm-product-cell__noimg-icon {
    width: 68px;
    height: 22px;
    flex-shrink: 0;
    object-fit: contain;
}

/* vic darku vedle sebe – oddelene svislitkem, ne carkou */
.badm-order-gifts__list { display: inline-flex; gap: 12px; }
.badm-order-gifts__list > span + span::before {
    content: "|";
    margin-right: 12px;
    color: var(--badm-border);
}

/* naklady na polozku pod cenou v tabulce polozek (jen pro adminy) */
.badm-order-item-cost {
    margin-top: 3px;
    font-size: 10px;
    font-weight: 400;
    color: var(--badm-text-muted);
    cursor: pointer;
    text-decoration: underline dotted;
}
/* Rozpad nakladu – dvousloupcova mrizka siroka presne podle obsahu
   a vycentrovana (roztazena by zbytecne nafoukla sloupec tabulky polozek
   a nebylo by poznat, ktera hodnota patri ke kteremu popisku). */
.badm-order-cost-breakdown {
    display: grid;
    grid-template-columns: auto auto;
    column-gap: 12px;
    width: max-content;
    margin: 2px auto 0;
    font-size: 10px;
    font-weight: 400;
    line-height: 1.5;
    color: var(--badm-text-muted);
}
.badm-order-cost-breakdown[hidden] { display: none; }
.badm-order-cost-breakdown > div { display: contents; }
.badm-order-cost-breakdown span:last-child { text-align: right; }

/* U celkovych nakladu je potreba obal pres celou sirku (zalomi cenovou
   radku), ale mrizka uvnitr si drzi sirku podle obsahu – proto obal, ne
   flex-basis primo na mrizce (ten by width:max-content prebil). */
.badm-order-pricing__detail {
    flex-basis: 100%;
    display: flex;
    justify-content: center;
    margin-top: 6px;
}
.badm-order-pricing__detail[hidden] { display: none; }

/* ── Historie objednavek zakaznika (karta Zakaznik) ─────────── */
/* badm-table--text ma nulovy horizontalni padding – tady potrebujeme mezery
   mezi sloupci, jinak se stavovy chip lepi primo na castku */
.badm-order-history td { padding: 3px 8px; vertical-align: middle; }
.badm-order-history td:first-child { padding-left: 0; }
.badm-order-history td:last-child { padding-right: 0; }
/* prvni sloupec textove tabulky je jinak muted a uzky (width:1%) */
.badm-order-history td:first-child { color: inherit; width: auto; }
/* Radky za zobrazenou sestkou. Viditelnost prepina trida na TABULCE – drive
   se to resilo atributem `hidden` na radcich, coz je krehke (kdejake CSS
   pravidlo s display ho prebije a zavirani pak tise nefunguje). */
.badm-order-history tr[data-history-more] { display: none; }
.badm-order-history.is-expanded tr[data-history-more] { display: table-row; }

/* prave otevrena objednavka – at je v seznamu na prvni pohled videt */
.badm-order-history__current { font-weight: 700; text-decoration: underline; }
/* rozbalena historie se roztahne cela dolu (klient chce videt vsechny radky,
   ne scrollbox uvnitr karty) */

/* ── Order pricing (cenovy souhrn v karte) ─────────── */

.badm-order-pricing {
    display: flex;
    flex-wrap: wrap;   /* rozpad nakladu se zalomi na vlastni radek pod dlazdice */
    justify-content: space-between;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid var(--badm-border);
}
.badm-order-pricing__item {
    display: flex;
    flex-direction: column;
    align-items: center;
    flex: 1;
    text-align: center;
}
.badm-order-pricing__item strong {
    font-size: 13px;
    color: var(--badm-text);
}
.badm-order-pricing__item small {
    font-size: 10px;
    color: var(--badm-text-muted);
    margin-top: 2px;
}
.badm-order-pricing__item--minor {
    opacity: 0.35;
}
.badm-order-pricing__item--total strong {
    font-weight: 700;
}

/* ── Card divider (oddelovac v karte) ──────────────── */

.badm-card__divider {
    border-top: 1px solid var(--badm-border);
    margin: 10px 0;
}

/* ── Notes (poznamky v detailu) ────────────────────── */

.badm-note {
    margin-bottom: 18px;
}

.badm-note:last-child {
    margin-bottom: 0;
}

.badm-note__label {
    font-size: 11px;
    font-weight: 600;
    color: var(--badm-text-muted);
    margin-bottom: 7px;
}
/* Hlavicka note bloku – label vlevo, akce (napr. Otevrit kontrolu) vpravo */
.badm-note__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 7px;
}
.badm-note__head .badm-note__label { margin-bottom: 0; }

/* QC historie kontrol – kompaktni zaznam s barevnym pozadim (ok zelena /
   problem cervena), cely text v barve vysledku. Grid na kontejneru => sloupce
   ikona | datum | jmeno | note se auto-sdili napric radky (sirka = nejdelsi obsah),
   jmeno vycentrovane ve svem sloupci. column-gap 0 kvuli souvislemu pozadi radku. */
.badm-qc-log { display: grid; grid-template-columns: auto auto auto 1fr; row-gap: 6px; }
.badm-qc-log__c {
    display: flex;
    align-items: center;
    padding: 6px 0;
    font-size: 12px;
    line-height: 1.3;
}
.badm-qc-log__c--ok { background: var(--badm-success-bg); color: var(--badm-success-text); }
.badm-qc-log__c--problem { background: var(--badm-danger-bg); color: var(--badm-danger-text); }
.badm-qc-log__c--first { padding-left: 10px; border-radius: var(--badm-radius) 0 0 var(--badm-radius); }
.badm-qc-log__c--last { padding-right: 10px; border-radius: 0 var(--badm-radius) var(--badm-radius) 0; }
.badm-qc-log__date { padding-left: 8px; font-size: 11px; opacity: .75; white-space: nowrap; }
.badm-qc-log__name { padding: 6px 12px; justify-content: center; font-weight: 600; }
.badm-qc-log__note { padding-left: 4px; min-width: 0; word-break: break-word; }

/* Log poznamek/zaznamu k objednavce – stejne zarovnani jako QC log (sdilene
   auto sloupce datum | jmeno | text | akce), ale bez ikony a barevneho pozadi.
   Radek je display:contents, takze bunky participuji na gridu kontejneru. */
.badm-note-log { display: grid; grid-template-columns: auto auto 1fr auto; row-gap: 5px; column-gap: 10px; align-items: baseline; font-size: 12px; line-height: 1.4; }
.badm-note-log__row { display: contents; }
.badm-note-log__date { font-size: 11px; color: var(--badm-text-muted); white-space: nowrap; }
.badm-note-log__author { font-weight: 600; text-align: center; }
.badm-note-log__text { min-width: 0; word-break: break-word; }
.badm-note-log__actions { display: inline-flex; gap: 2px; align-items: center; }
.badm-note-log__act { background: none; border: none; cursor: pointer; padding: 2px 3px; font-size: 11px; line-height: 1; color: var(--badm-text-muted); opacity: .45; }
.badm-note-log__act:hover { opacity: 1; color: var(--badm-text); }
.badm-note-log__row:hover .badm-note-log__act { opacity: .85; }

/* Hlavicka karty Poznamky – titulek + tlacitka Pridat vpravo */
.badm-notes__head { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-bottom: 6px; }
.badm-notes__head .badm-card__title { margin: 0; }
.badm-notes__add { display: flex; gap: 6px; flex-wrap: wrap; }

/* Inline composer pro pridani/editaci poznamky/zaznamu i komentare */
.badm-note-compose { margin: 4px 0 10px; }
.badm-note-compose__input { width: 100%; box-sizing: border-box; resize: vertical; font-family: inherit; font-size: 12px; padding: 6px 8px; border: 1px solid var(--badm-border); border-radius: var(--badm-radius); }
.badm-note-compose__actions { display: flex; justify-content: flex-end; gap: 6px; margin-top: 6px; }

.badm-note__text {
    font-size: 12px;
    line-height: 1.5;
    white-space: pre-wrap;
    background: var(--badm-bg);
    border-radius: var(--badm-radius);
    padding: 8px 10px;
}

/* ============================================================
   MODAL (univerzalni, reusable)
   ============================================================ */

.badm-modal {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 1000;
    align-items: center;
    justify-content: center;
}

.badm-modal.is-open {
    display: flex;
}

.badm-modal__overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, .4);
}

.badm-modal__dialog {
    position: relative;
    background: var(--badm-surface-elevated);
    border-radius: var(--badm-radius);
    box-shadow: 0 8px 32px rgba(0, 0, 0, .15);
    width: 90%;
    max-width: 520px;
    max-height: 80vh;
    display: flex;
    flex-direction: column;
}

.badm-modal__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    border-bottom: 1px solid var(--badm-border);
    flex-shrink: 0;
}

.badm-modal__title {
    font-size: 13px;
    font-weight: 600;
}

.badm-modal__close {
    background: none;
    border: none;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
    color: var(--badm-text-muted);
    padding: 0 2px;
}
.badm-modal__close:hover {
    color: var(--badm-text);
}

.badm-modal__body {
    padding: 16px;
    overflow-y: auto;
    font-size: 12px;
}

/* ── Modal poznamky (obsah modalu pro objednavky) ── */

.badm-modal-note {
    margin-bottom: 12px;
}

.badm-modal-note:last-child {
    margin-bottom: 0;
}

.badm-modal-note__label {
    font-size: 11px;
    font-weight: 600;
    margin-bottom: 4px;
    display: flex;
    align-items: center;
    gap: 5px;
}

.badm-modal-note__text {
    font-size: 12px;
    line-height: 1.5;
    background: var(--badm-bg);
    border-radius: var(--badm-radius);
    padding: 8px 10px;
}

/* ── Formatovane zaznamy (autor + cas + text) ──── */

.badm-modal-entry {
    padding: 2px 0;
    line-height: 1.5;
}

.badm-modal-entry__meta {
    font-weight: 700;
    color: var(--badm-text-muted);
    font-size: 10px;
}

/* ============================================================
   ANALYTICS (statistiky prodeju)
   ============================================================ */

.badm-analytics__filter {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: var(--badm-gap);
    flex-wrap: wrap;
}

.badm-analytics__filter input[type="date"],
.badm-analytics__filter select {
    width: auto;
    min-width: 140px;
}

.badm-chart-wrap {
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    padding: var(--badm-gap);
    margin-bottom: var(--badm-gap);
    position: relative;
    height: 360px;
}
/* Loading overlay pro lazy-nacitane grafy (dash_chart_lazy) – vycentrovany spinner.
   JS ho odstrani po vykresleni grafu. */
.badm-chart-wrap__loading {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    color: var(--badm-text-muted);
    font-size: 12px;
}
.badm-chart-wrap__loading .badm-spinner {
    margin: 0;
}
/* Graf uvnitr existujici karty – bez dekorace, nizsi */
.badm-chart-wrap--flush {
    background: none;
    border: none;
    border-radius: 0;
    padding: 0;
    margin-bottom: 0;
    height: 280px;
    overflow: hidden;
}

@media (max-width: 640px) {
    .badm-analytics__filter {
        flex-direction: column;
        align-items: stretch;
    }
    .badm-analytics__filter input[type="date"] {
        width: 100%;
    }
    .badm-chart-wrap {
        height: 280px;
    }
}

.badm-analytics__charts-row {
    display: flex;
    flex-wrap: wrap;
    gap: 1.5rem;
}
.badm-analytics__chart-col {
    flex: 1 1 calc(25% - 1.2rem);
    min-width: 260px;
}
.badm-analytics__chart-col h3 {
    text-align: center;
    margin: 0 0 0.5rem;
    font-size: 0.95rem;
    font-weight: 500;
    color: var(--badm-text-muted);
}
.badm-analytics__chart-col canvas {
    max-height: 250px;
}

.badm-analytics__druh-icon {
    width: 24px;
    height: 24px;
    object-fit: contain;
    flex-shrink: 0;
    position: relative;
    top: 5px;
}
/* piktogramy druhu jsou cerne PNG -> v dark rezimu invertovat */
html[data-theme="dark"] .badm-analytics__druh-icon { filter: invert(1); }

/* ── Univerzalni tabs ─────────────────────────────────── */
.badm-tabs {
    display: flex;
    gap: 0;
    border-bottom: 2px solid var(--badm-border);
    margin-bottom: var(--badm-gap);
    /* Pri uzkem viewportu se taby nezalamuji ani neorezavaji, ale scrolluji vodorovne.
       touch-action: pan-x – povoli jen vodorovne tahove gesto, svisle gesto projde na
       stranku (jinak sly taby tahat i nahoru/dolu). overflow-y nedavame na hidden, aby
       se neoreznul aktivni podtrzeni tabu (sedi v poslednich 2px pres margin-bottom:-2px). */
    overflow-x: auto;
    touch-action: pan-x;
    scrollbar-width: none; /* Firefox */
}
.badm-tabs::-webkit-scrollbar { display: none; } /* WebKit */

/* Scroll-shadow fade – sticky pseudo prvky pripnute k okrajum viditelne casti.
   Trida is-overflow-start/end se nastavuje z badmInitScrollShadow() v core.js. */
.badm-tabs.is-overflow-start::before,
.badm-tabs.is-overflow-end::after {
    content: "";
    position: sticky;
    align-self: stretch;
    flex: 0 0 28px;
    pointer-events: none;
    z-index: 1;
}
.badm-tabs.is-overflow-start::before {
    left: 0;
    margin-right: -28px; /* overlay – nezvetsuje scroll sirku */
    background: linear-gradient(to right, var(--badm-bg), rgba(250, 250, 250, 0));
}
.badm-tabs.is-overflow-end::after {
    right: 0;
    margin-left: -28px;
    background: linear-gradient(to left, var(--badm-bg), rgba(250, 250, 250, 0));
}

.badm-tabs__btn {
    padding: 8px 20px 2px;
    font-size: 13px;
    font-weight: 600;
    color: var(--badm-text-muted);
    text-decoration: none;
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    cursor: pointer;
    transition: color .15s, border-color .15s;
    white-space: nowrap;  /* nezalamovat text tabu na 2 radky */
    flex-shrink: 0;       /* nezuzovat taby pod jejich obsah */
}

.badm-tabs__btn:hover {
    color: var(--badm-text);
}

.badm-tabs__btn.is-active {
    color: var(--badm-primary);
    border-bottom-color: var(--badm-primary);
}

/* Vnorene taby uvnitr karty (badm-tabs--inset):
   spodni linka zustava, ale aktivni tab se NEpodtrhava – pozna se jen barvou
   textu. Tlacitka se rovnomerne deli o celou sirku karty. */
.badm-tabs--inset {
    gap: 4px;
}
.badm-tabs--inset .badm-tabs__btn {
    flex: 1 1 0;
    padding: 4px 6px 6px;
    text-align: center;
}
.badm-tabs--inset .badm-tabs__btn.is-active {
    border-bottom-color: transparent;
}

.badm-tabs__panel {
    display: none;
}

.badm-tabs__panel.is-active {
    display: block;
}

.badm-text-danger { color: var(--badm-danger); }

/* Digitoo – expand sipka */
.badm-digitoo-arrow {
    display: inline-block;
    width: 1em;
    color: var(--badm-text-muted);
    user-select: none;
}

/* Digitoo – month override select */
.badm-digitoo-month-select {
    font-family: inherit;
    font-size: inherit;
    width: auto;
    padding: 2px 4px;
}

/* Digitoo – indikator v P&L bunce (tecka v pravem hornim rohu) */
.badm-pnl__cell--digitoo {
    position: relative;
}
.badm-pnl__cell--digitoo::after {
    content: '';
    position: absolute;
    top: 4px;
    right: 4px;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--badm-text-muted);
    opacity: .45;
}

/* Multiselect filtr v zahlavi tabulky */
.badm-msel { position: relative; display: inline-flex; align-items: center; gap: 4px; }
.badm-msel__trigger {
    font: inherit;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--badm-text);
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    border-radius: 4px;
    padding: 4px 10px;
    cursor: pointer;
    white-space: nowrap;
    max-width: 180px;
    overflow: hidden;
    text-overflow: ellipsis;
}
.badm-msel__trigger::after {
    content: ' \25BE';
    font-size: 0.7em;
    opacity: 0.5;
}
.badm-msel__trigger:hover { border-color: var(--badm-primary); }
.badm-msel__trigger.is-filtered {
    border-color: var(--badm-primary);
    background: var(--badm-primary-light);
    color: var(--badm-primary-hover);
}
.badm-msel__dropdown {
    display: none;
    position: fixed;
    z-index: 100;
    background: var(--badm-surface-elevated);
    border: 1px solid var(--badm-border);
    border-radius: 6px;
    box-shadow: 0 4px 16px rgba(0,0,0,0.12);
    padding: 6px 0;
    min-width: 180px;
    max-height: 280px;
    overflow-y: auto;
    text-align: left;
}
.badm-msel.is-open .badm-msel__dropdown { display: block; }
.badm-msel__option {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 12px;
    cursor: pointer;
    font-size: 0.8rem;
    font-weight: 400;
    white-space: nowrap;
}
.badm-msel__option:hover { background: var(--badm-surface-hover); }
.badm-msel__option input[type="checkbox"] {
    margin: 0;
    accent-color: var(--badm-primary);
}
.badm-msel__sort {
    background: none;
    border: none;
    cursor: pointer;
    font-size: 0.85rem;
    color: var(--badm-text-muted);
    padding: 2px 4px;
    line-height: 1;
    border-radius: 3px;
}
.badm-msel__sort:hover { color: var(--badm-primary); background: var(--badm-surface-hover); }
/* Skryt sort pseudo-element na th s multiselect (sort ma vlastni tlacitko) */
th:has(.badm-msel)::after { display: none !important; }
th:has(.badm-msel) { cursor: default; }

/* Stav skladu – barevne tecky */
.badm-stock-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    margin-right: 5px;
    vertical-align: middle;
}
.badm-stock-dot--1  { background: var(--badm-success); }       /* Skladem */
.badm-stock-dot--0  { background: var(--badm-gray-400); }                   /* Vyprodano */
.badm-stock-dot--10 { background: var(--badm-warning); }       /* Na ceste */
.badm-stock-dot--11 { background: var(--badm-primary); }                   /* Posledni sance */
.badm-stock-dot--12 { background: var(--badm-gray-300); }                   /* Historie */

/* Nowrap utilita */
.badm-text-nowrap { white-space: nowrap; }

/* ---------- Toast (badm-toast) ---------- */
/* Kratke potvrzeni akce v pravem dolnim rohu. Vyvolava se z JS: badmToast().
   Kontejner si vytvori JS sam, sablony nic pridavat nemusi. */
.badm-toast-wrap {
    position: fixed;
    right: 16px;
    bottom: 16px;
    z-index: 2000;
    display: flex;
    flex-direction: column;
    gap: 8px;
    pointer-events: none;
}
.badm-toast {
    max-width: 360px;
    padding: 10px 14px;
    border-radius: var(--badm-radius);
    background: var(--badm-inverse-surface);
    color: var(--badm-inverse-text);
    font-size: 12px;
    font-weight: 500;
    line-height: 1.35;
    box-shadow: 0 4px 16px rgba(0, 0, 0, .25);
    opacity: 0;
    transform: translateY(8px);
    transition: opacity .2s, transform .2s;
}
.badm-toast.is-visible { opacity: 1; transform: none; }
.badm-toast--success { background: var(--badm-success); color: #fff; }
.badm-toast--error   { background: var(--badm-danger);  color: #fff; }
.badm-toast--warn    { background: var(--badm-warning); color: #1a1a1a; }

/* ---------- Tooltip (badm-tip) ---------- */
/* Vlastni bublina misto nativniho title – zobrazi se hned (nativni tooltip ma
   ~1s prodlevu a nektere prohlizece ho u tlacitek nevykresli vubec).
   Pouziti: <button class="badm-tip" data-tip="Cely popis">Zkraceny text</button> */
.badm-tip { position: relative; }
.badm-tip::after {
    content: attr(data-tip);
    position: absolute;
    left: 50%;
    bottom: calc(100% + 6px);
    transform: translateX(-50%);
    padding: 4px 8px;
    background: var(--badm-inverse-surface);
    color: var(--badm-inverse-text);
    border-radius: var(--badm-radius);
    font-size: 11px;
    font-weight: 500;
    line-height: 1.3;
    white-space: nowrap;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity .12s;
    z-index: 100;
}
.badm-tip:hover::after,
.badm-tip:focus-visible::after { opacity: 1; visibility: visible; }

/* Odkaz bez vzhledu odkazu – pouziva se tam, kde je proklik jen doplnkovy
   a barevny podtrzeny text by v hustem vypisu rusil (napr. cisla objednavek
   v historii zakaznika). Kliknutelnost naznacuje az hover. */
.badm-link-plain { color: inherit; text-decoration: none; }
.badm-link-plain:hover { color: var(--badm-primary); }

/* Duo karty (zakaznici – novi vs stari) */
.badm-analytics__duo {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--badm-gap);
}

.badm-analytics__duo-row span {
    color: var(--badm-text-muted);
}

/* Split (digitisk vs sitotisk) */
.badm-analytics__split {
    display: flex;
    gap: var(--badm-gap);
    flex-wrap: wrap;
}

@media (max-width: 640px) {
    .badm-analytics__duo {
        grid-template-columns: 1fr;
    }
    .badm-analytics__split-item {
        min-width: 0;
    }
}

/* ── Digitisk pivot tabulka ────────────────────────── */

.badm-analytics__digi-filter {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: var(--badm-gap);
    flex-wrap: nowrap;
}

.badm-analytics__digi-filter span {
    white-space: nowrap;
}

.badm-analytics__digi-filter input {
    width: auto;
    min-width: 240px;
}

.badm-table-wrap--scroll {
    overflow-x: auto;
}

.badm-analytics__pivot {
    font-size: 12px;
    white-space: nowrap;
}

.badm-analytics__pivot-color {
    width: 32px;
    min-width: 32px;
    max-width: 32px;
    padding: 6px 2px !important;
    border: 1px solid var(--badm-border);
}

/* Datove bunky pod barevnymi hlavickami – stejna sirka, zarovnani */
.badm-analytics__pivot td.badm-text-center {
    width: 32px;
    min-width: 32px;
    max-width: 32px;
    text-align: center;
    padding: 4px 2px !important;
}

.badm-analytics__pivot-th-potisk {
    min-width: 160px;
}

.badm-analytics__pivot-potisk {
    font-weight: 600;
    vertical-align: top;
}

.badm-analytics__pivot-pid {
    color: var(--badm-text-muted);
    font-size: 11px;
    vertical-align: top;
}

.badm-analytics__pivot-subtotal {
    background: var(--badm-bg) !important;
    border-bottom: 2px solid var(--badm-primary);
}
.is-sorted .badm-analytics__pivot-subtotal {
    border-bottom: none;
}

.badm-analytics__pivot-row.is-hidden,
.badm-analytics__pivot-subtotal.is-hidden {
    display: none;
}

/* Druh segment skryty – zobrazit jen subtotaly, schovat druh radky */
.is-druh-collapsed .badm-analytics__pivot-row { display: none !important; }
.is-druh-collapsed .badm-analytics__pivot-subtotal .badm-pivot-repeat { display: inline; }

/* Opakovany potisk/PID – ve vychozim stavu skryte, zobrazit pri razeni */
.badm-pivot-repeat { display: none; }
.is-sorted .badm-pivot-repeat { display: inline; }

/* Reset razeni */
.badm-pivot-reset {
    display: none;
    margin-left: 12px;
    color: var(--badm-danger);
    cursor: pointer;
    font-size: 13px;
    white-space: nowrap;
}
.badm-pivot-reset.is-active { display: inline; }
.badm-pivot-reset:hover { text-decoration: underline; }

.badm-text-bold {
    font-weight: 600;
}

@media (max-width: 640px) {
    .badm-analytics__digi-filter {
        flex-direction: column;
        align-items: stretch;
    }
    .badm-analytics__digi-filter input {
        width: 100%;
        min-width: 0;
    }
    .badm-analytics__pivot-color,
    .badm-analytics__pivot td.badm-text-center {
        width: 24px;
        min-width: 24px;
        max-width: 24px;
    }
}

/* ── Srovnani obdobi (comp badges pod stat kartami) ─── */
.badm-comp-badge {
    display: inline-block;
    font-size: 11px;
    font-weight: 600;
    margin-top: 4px;
    padding: 1px 6px;
    border-radius: 3px;
}

/* ── Tabulka footer ────────────────────────────────── */
.badm-table__footer td {
    background: var(--badm-bg);
    border-top: 2px solid var(--badm-border);
    font-weight: 600;
}

/* ── Barevne marze ─────────────────────────────────── */
.badm-text-success { color: var(--badm-success); }

/* ── Time-series chart controls ────────────────────── */
.badm-analytics__ts-controls {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: flex-start;
    margin-bottom: var(--badm-gap);
}

.badm-analytics__ts-druhy {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 12px;
    font-size: 12px;
    overflow: hidden;
}
.badm-analytics__ts-druhy.is-collapsed {
    max-height: 36px;
}
.badm-analytics__ts-druhy .badm-mkt__checkbox {
    padding: 0 2px 2px;
    border-bottom: 2px solid transparent;
    transition: border-bottom-color 0.15s;
}
.badm-analytics__ts-actions {
    display: flex;
    gap: 12px;
    justify-content: center;
    margin-top: 4px;
    margin-bottom: 12px;
}
.badm-analytics__ts-toggle,
.badm-analytics__ts-clear {
    font-size: 11px;
    color: var(--badm-text-muted);
    cursor: pointer;
    text-decoration: underline;
}
.badm-analytics__ts-toggle:hover {
    color: var(--badm-primary);
}
.badm-analytics__ts-clear:hover {
    color: var(--badm-danger);
}

@media (max-width: 640px) {
    .badm-analytics__ts-controls {
        flex-direction: column;
    }
}

/* ============================================================
   RFM Analyza
   ============================================================ */

/* -- Přepínače země + období -- */

.badm-rfm__controls {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 20px;
}

.badm-rfm__tabs {
    display: flex;
    gap: 4px;
}

.badm-rfm__tab {
    padding: 6px 14px;
    border-radius: var(--badm-radius);
    font-size: 13px;
    font-weight: 500;
    text-decoration: none;
    color: var(--badm-text-muted);
    background: var(--badm-secondary);
    transition: background .15s, color .15s;
}
.badm-rfm__tab:hover { background: var(--badm-secondary-hover); color: var(--badm-text); }
.badm-rfm__tab--active {
    background: var(--badm-primary);
    color: var(--badm-primary-foreground);
}
.badm-rfm__tab--active:hover { background: var(--badm-primary-hover); color: var(--badm-primary-foreground); }

.badm-rfm__periods {
    display: flex;
    align-items: center;
    gap: 4px;
}

.badm-rfm__periods-label {
    font-size: 12px;
    color: var(--badm-text-muted);
    margin-right: 4px;
}

.badm-rfm__period {
    padding: 4px 10px;
    border-radius: var(--badm-radius-sm);
    font-size: 12px;
    font-weight: 500;
    text-decoration: none;
    color: var(--badm-text-muted);
    background: var(--badm-secondary);
    transition: background .15s, color .15s;
}
.badm-rfm__period:hover { background: var(--badm-secondary-hover); color: var(--badm-text); }
.badm-rfm__period--active {
    background: var(--badm-text);
    color: var(--badm-surface);
}
.badm-rfm__period--active:hover { background: var(--badm-text); color: var(--badm-surface); }

/* -- Souhrn segmentu s CSS bary -- */

.badm-rfm__segments {
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin-bottom: 20px;
}

.badm-rfm__segment-row {
    display: grid;
    grid-template-columns: 240px 1fr 56px;
    align-items: center;
    gap: 12px;
    padding: 8px 12px;
    border-radius: var(--badm-radius);
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    text-decoration: none;
    color: inherit;
    cursor: pointer;
    transition: border-color .15s, box-shadow .15s;
}
.badm-rfm__segment-row:hover {
    border-color: var(--badm-primary);
    box-shadow: 0 0 0 1px var(--badm-primary);
}
.badm-rfm__segment-row--active {
    border-color: var(--badm-primary);
    box-shadow: 0 0 0 1px var(--badm-primary);
    background: color-mix(in srgb, var(--badm-primary) 6%, var(--badm-surface));
}

.badm-rfm__segment-meta {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}

.badm-rfm__segment-icon {
    flex-shrink: 0;
    width: 20px;
    text-align: center;
    font-size: 13px;
}

.badm-rfm__segment-name {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.badm-rfm__segment-label {
    font-size: 12px;
    font-weight: 600;
    color: var(--badm-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.3;
}

.badm-rfm__segment-desc {
    font-size: 10px;
    color: var(--badm-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.3;
}

.badm-rfm__segment-bar-wrap {
    position: relative;
    height: 22px;
    background: var(--badm-secondary);
    border-radius: var(--badm-radius-sm);
    overflow: hidden;
}

.badm-rfm__segment-bar {
    position: absolute;
    inset: 0;
    border-radius: var(--badm-radius-sm);
    transition: width .3s ease;
}

.badm-rfm__segment-bar-label {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    height: 100%;
    padding-left: 8px;
    font-size: 11px;
    font-weight: 600;
    color: var(--badm-text);
}

.badm-rfm__segment-count {
    flex-shrink: 0;
    text-align: right;
    font-size: 13px;
    font-weight: 600;
    color: var(--badm-text-muted);
}

.badm-rfm__segment-pct {
    font-size: 12px;
}

.badm-rfm__total {
    font-size: 12px;
    color: var(--badm-text-muted);
    padding: 4px 12px;
}

/* -- Filtr segmentu info bar -- */

.badm-rfm__filter-info {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 8px 14px;
    margin-bottom: 16px;
    border-radius: var(--badm-radius);
    background: color-mix(in srgb, var(--badm-primary) 8%, var(--badm-surface));
    border: 1px solid color-mix(in srgb, var(--badm-primary) 25%, var(--badm-border));
    font-size: 13px;
    color: var(--badm-text);
}

.badm-rfm__filter-info i:first-child { color: var(--badm-primary); margin-right: 4px; }

.badm-rfm__filter-clear {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    font-weight: 500;
    color: var(--badm-text-muted);
    text-decoration: none;
    padding: 3px 8px;
    border-radius: var(--badm-radius-sm);
    transition: background .15s, color .15s;
}
.badm-rfm__filter-clear:hover {
    background: var(--badm-secondary);
    color: var(--badm-text);
}

@media (max-width: 640px) {
    .badm-rfm__segment-row {
        grid-template-columns: 160px 1fr 48px;
        gap: 8px;
        padding: 4px 8px;
    }
    .badm-rfm__segment-desc { display: none; }
}

/* -- Hranice kvintilu (collapsible) -- */

.badm-rfm__bounds {
    margin-bottom: 20px;
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius-lg);
    background: var(--badm-surface);
}

.badm-rfm__bounds-toggle {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 10px 16px;
    font-size: 13px;
    font-weight: 600;
    color: var(--badm-text);
    cursor: pointer;
    list-style: none;
    user-select: none;
}
.badm-rfm__bounds-toggle::-webkit-details-marker { display: none; }
.badm-rfm__bounds-toggle i:first-child { color: var(--badm-text-muted); }

.badm-rfm__bounds-chevron {
    margin-left: auto;
    font-size: 11px;
    color: var(--badm-text-muted);
    transition: transform .2s;
}
.badm-rfm__bounds[open] .badm-rfm__bounds-chevron { transform: rotate(180deg); }

.badm-rfm__bounds-grid {
    padding: 0 16px 16px;
}

.badm-rfm__bounds-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
}

@media (max-width: 860px) {
    .badm-rfm__bounds-grid { grid-template-columns: 1fr; }
}

.badm-rfm__bounds-table { font-size: 12px; }
.badm-rfm__bounds-table thead tr:first-child th {
    font-size: 13px;
    font-weight: 600;
    padding-bottom: 2px;
    border-bottom: none;
}
.badm-rfm__bounds-table thead tr:first-child th .badm-text-muted { font-weight: 400; font-size: 11px; }
.badm-rfm__bounds-table th,
.badm-rfm__bounds-table td { padding: 4px 8px; }

/* -- Tabulka: RFM skóre -- */

.badm-table--rfm td { font-size: 13px; }

.badm-rfm__score {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: var(--badm-radius-sm);
    font-size: 11px;
    font-weight: 700;
    line-height: 1;
}

.badm-rfm__score--5 { background: var(--badm-success-bg); color: var(--badm-success-text); }
.badm-rfm__score--4 { background: var(--badm-info-bg); color: var(--badm-info-text); }
.badm-rfm__score--3 { background: var(--badm-warning-bg); color: var(--badm-warning-text); }
.badm-rfm__score--2 { background: var(--badm-primary-light); color: var(--badm-warning-text); }
.badm-rfm__score--1 { background: var(--badm-danger-bg); color: var(--badm-danger); }

/* -- Segment badge v tabulce -- */

.badm-rfm__badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 3px 8px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
    color: var(--badm-on-accent);
    white-space: nowrap;
}

.badm-rfm__badge i { font-size: 10px; }

/* -- Rozbalitelny detail zakaznika -- */

.badm-rfm__col-toggle { width: 28px; padding: 0 !important; }

.badm-rfm__cell-toggle {
    width: 28px;
    text-align: center;
    padding: 0 4px !important;
    color: var(--badm-text-muted);
}

.badm-rfm__chevron {
    font-size: 10px;
    transition: transform .2s;
}

.badm-rfm__row {
    cursor: pointer;
    transition: background .1s;
}
.badm-rfm__row:hover { background: var(--badm-secondary); }
.badm-rfm__row--open { background: color-mix(in srgb, var(--badm-primary) 4%, var(--badm-surface)); }
.badm-rfm__row--open .badm-rfm__chevron { transform: rotate(90deg); }

.badm-rfm__detail td {
    padding: 0 0 12px !important;
    border-top: none !important;
    background: var(--badm-bg);
}

.badm-rfm__detail-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    padding: 12px 16px 16px;
}

.badm-rfm__detail-card {
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    padding: 12px 14px;
}

.badm-rfm__detail-card-header {
    font-size: 11px;
    font-weight: 500;
    color: var(--badm-text-muted);
    margin-bottom: 6px;
}
.badm-rfm__detail-card-header i {
    margin-right: 4px;
    font-size: 11px;
}

.badm-rfm__detail-card-value {
    font-size: 18px;
    font-weight: 700;
    color: var(--badm-text);
    line-height: 1.2;
}

.badm-rfm__detail-card-sub {
    font-size: 11px;
    color: var(--badm-text-muted);
    margin-top: 2px;
}

/* -- Casova osa objednavek -- */

.badm-rfm__timeline {
    margin: 12px 16px 0;
    padding: 12px 14px 10px;
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
}

.badm-rfm__timeline-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 11px;
    font-weight: 600;
    color: var(--badm-text);
    margin-bottom: 10px;
}

.badm-rfm__timeline-count {
    font-weight: 400;
    color: var(--badm-text-muted);
}

.badm-rfm__timeline-track {
    position: relative;
    height: 20px;
    margin: 0 6px;
}

.badm-rfm__timeline-line {
    position: absolute;
    top: 50%;
    left: 0;
    right: 0;
    height: 3px;
    margin-top: -1.5px;
    background: var(--badm-border);
    border-radius: 2px;
}

.badm-rfm__timeline-dot {
    position: absolute;
    top: 50%;
    width: 8px;
    height: 8px;
    margin: -4px 0 0 -4px;
    border-radius: 50%;
    background: var(--badm-primary);
    border: 2px solid var(--badm-surface);
    box-shadow: 0 0 0 1px var(--badm-primary);
    z-index: 1;
    cursor: default;
}
.badm-rfm__timeline-dot:first-of-type {
    background: var(--badm-success);
    box-shadow: 0 0 0 1px var(--badm-success);
    width: 10px;
    height: 10px;
    margin: -5px 0 0 -5px;
}
.badm-rfm__timeline-dot:last-of-type {
    background: var(--badm-danger);
    box-shadow: 0 0 0 1px var(--badm-danger);
    width: 10px;
    height: 10px;
    margin: -5px 0 0 -5px;
}

.badm-rfm__timeline-labels {
    display: flex;
    justify-content: space-between;
    font-size: 10px;
    color: var(--badm-text-muted);
    margin-top: 4px;
    padding: 0 2px;
}

@media (max-width: 860px) {
    .badm-rfm__detail-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 480px) {
    .badm-rfm__detail-grid {
        grid-template-columns: 1fr;
    }
}

/* ---------- Marketing Dashboard (badm-mkt) ---------- */

.badm-mkt__checkbox {
    display: flex;
    align-items: center;
    gap: 3px;
    font-size: 13px;
    cursor: pointer;
}
.badm-mkt__checkbox input { margin: 0; }

/* Sync */
.badm-mkt__sync-status { font-size: 13px; color: var(--badm-gray-500); }
.badm-mkt__sync-status--ok { color: var(--badm-success); }
.badm-mkt__sync-status--error { color: var(--badm-danger); }

/* Graf (chart section) */
.badm-mkt__chart-section { padding: 0; }

/* Layout: metric boxy nad grafem – plynuly tok, label nad prvnim boxem skupiny */
.badm-mkt__metrics {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: flex-end;
    padding: 12px 0;
    margin-bottom: 12px;
}
.badm-mkt__metric-first {
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.badm-mkt__metric-group-label {
    font-size: 9px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--badm-text-muted);
}
/* Metric selector boxy – pouzivaji standard badm-box padding, text nesmí zalamovat */
.badm-mkt__metrics .badm-box--toggle { min-width: 0; }
.badm-mkt__metrics .badm-box--toggle .badm-box__value { white-space: nowrap; }
.badm-mkt__metrics .badm-box--toggle .badm-box__label { white-space: nowrap; }
/* Liska pod metriky: granularita vpravo */
.badm-mkt__chart-header {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    padding: 8px 16px;
    border-bottom: 1px solid var(--badm-border);
}

/* Marketing – tabulkove specificke tridy (zbytek presunuto do sdilenych badm-table modifikatoru) */
.badm-mkt__weather-dev { font-weight: 600; white-space: nowrap; }
.badm-mkt__td-period { font-weight: 600; white-space: nowrap; }
.badm-mkt__th-period { cursor: pointer; user-select: none; }
/* Druhy sloupec (Den) – sticky vedle sticky prvniho sloupce */
.badm-mkt__td-day { text-align: left; }
/* Sticky sloupce v summary radku – nepruhledne pozadi */
.badm-table__summary td:first-child { background: var(--badm-gray-50); }

/* Podbarveni radku podle platformy */
.badm-mkt__row--facebook    { background: rgba(66, 103, 178, 0.06); }
.badm-mkt__row--google      { background: rgba(52, 168, 83, 0.06); }
.badm-mkt__row--sklik       { background: rgba(204, 0, 0, 0.06); }
.badm-mkt__row--tiktok      { background: rgba(128, 128, 128, 0.06); }
/* Sticky sloupce – nepruhledne barvy (rgba by prosvitalo pri scrollu) */
.badm-mkt__row--facebook td:first-child { background: var(--badm-gray-50); }
.badm-mkt__row--google td:first-child   { background: var(--badm-success-bg); }
.badm-mkt__row--sklik td:first-child    { background: var(--badm-danger-bg); }
.badm-mkt__row--tiktok td:first-child   { background: var(--badm-gray-50); }

/* Disabled taby */
.badm-tabs__btn--disabled {
    opacity: 0.4;
    pointer-events: none;
}

/* Poznamky k tydnum – ikona v period bunce */
.badm-mkt__note-icon {
    opacity: 0.15;
    font-size: 13px;
    cursor: pointer;
    margin-left: 4px;
    transition: opacity 0.15s;
}
.badm-mkt__note-icon:hover {
    opacity: 0.5;
}
.badm-mkt__note-icon--active {
    opacity: 1;
    color: var(--badm-primary);
}
.badm-mkt__note-icon--active:hover {
    opacity: 0.8;
}

/* Modal pro poznamky */
.badm-mkt__note-overlay {
    position: fixed;
    inset: 0;
    z-index: 100;
    background: rgba(0, 0, 0, 0.4);
    display: flex;
    align-items: center;
    justify-content: center;
}
.badm-mkt__note-modal {
    background: var(--badm-surface);
    border-radius: var(--badm-radius, 6px);
    padding: 20px;
    width: 420px;
    max-width: 90vw;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
}
.badm-mkt__note-modal h3 {
    margin: 0 0 12px;
    font-size: 15px;
    font-weight: 600;
}
.badm-mkt__note-field {
    margin-bottom: 12px;
}
.badm-mkt__note-field label {
    display: block;
    font-size: 12px;
    font-weight: 600;
    margin-bottom: 4px;
    color: var(--badm-gray-600);
}
.badm-mkt__note-field textarea {
    width: 100%;
    height: 60px;
    resize: vertical;
    font-size: 13px;
    padding: 6px 8px;
    border: 1px solid var(--badm-border);
    border-radius: 4px;
    font-family: inherit;
}
.badm-mkt__note-field textarea:focus {
    outline: none;
    border-color: var(--badm-primary);
}
.badm-mkt__note-actions {
    display: flex;
    gap: 8px;
    justify-content: flex-end;
}

/* ── Segment toggle (gear ikona + dropdown) ─────── */
.badm-mkt__section-header {
    display: flex;
    justify-content: flex-end;
    padding: 4px 8px 0;
}
.badm-mkt__segment-toggle {
    position: relative;
}
.badm-mkt__gear-btn {
    background: none;
    border: none;
    cursor: pointer;
    font-size: 18px;
    color: var(--badm-gray-400);
    padding: 4px;
}
.badm-mkt__gear-btn:hover {
    color: var(--badm-gray-700);
}
.badm-mkt__segment-dropdown {
    display: none;
    position: absolute;
    right: 0;
    top: 100%;
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    border-radius: 6px;
    padding: 8px 12px;
    z-index: 10;
    box-shadow: 0 4px 12px rgba(0, 0, 0, .1);
    min-width: 160px;
}
.badm-mkt__segment-dropdown.is-open {
    display: block;
}
.badm-mkt__segment-dropdown label {
    display: block;
    padding: 4px 0;
    cursor: pointer;
    font-size: 13px;
    white-space: nowrap;
}

/* ══════════════════════════════════════════════════ */
/* AI Analyza kampani                                */
/* ══════════════════════════════════════════════════ */

.badm-mkt__analysis-intro {
    color: var(--badm-text-muted);
    font-size: 12px;
    line-height: 1.5;
    margin: 0 0 1rem;
}

.badm-mkt__analysis-buttons {
    display: flex;
    justify-content: center;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

.badm-mkt__analysis-run {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.6rem 1.5rem;
    font-size: 13px;
    font-weight: 600;
    border: none;
    border-radius: var(--badm-radius);
    color: var(--badm-on-accent);
    cursor: pointer;
    transition: opacity 0.15s;
}

.badm-mkt__analysis-run:hover { opacity: 0.85; }
.badm-mkt__analysis-run:disabled { opacity: 0.5; cursor: not-allowed; }

.badm-mkt__analysis-run[data-platform="facebook"] { background: #1877f2; }
.badm-mkt__analysis-run[data-platform="google"] { background: #34a853; }

/* Blok jedne platformy */
.badm-mkt__analysis-block {
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    padding: 1rem;
    margin-bottom: 1rem;
}

.badm-mkt__analysis-block-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.75rem;
}

.badm-mkt__analysis-block-title {
    font-size: 13px;
    font-weight: 600;
    margin: 0;
    color: var(--badm-text);
}

.badm-mkt__analysis-actions {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.badm-mkt__analysis-refresh {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
}

.badm-mkt__analysis-status {
    font-size: 11px;
    color: var(--badm-text-muted);
}

/* Loading spinner */
.badm-mkt__analysis-loading {
    text-align: center;
    padding: 2rem 1rem;
    color: var(--badm-text-muted);
}

.badm-mkt__analysis-loading p {
    margin: 0.5rem 0;
    font-size: 12px;
}

.badm-spinner {
    width: 1.5rem;
    height: 1.5rem;
    border: 3px solid var(--badm-border);
    border-top-color: var(--badm-primary);
    border-radius: 50%;
    animation: badm-spin 0.8s linear infinite;
    margin: 0 auto 0.75rem;
}

@keyframes badm-spin {
    to { transform: rotate(360deg); }
}

/* Error stav */
.badm-mkt__analysis-error {
    padding: 0.75rem 1rem;
    background: var(--badm-danger-light);
    border: 1px solid var(--badm-danger-border);
    border-radius: var(--badm-radius);
    color: var(--badm-danger-text);
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 12px;
}

.badm-mkt__analysis-error i {
    color: var(--badm-danger);
    font-size: 1rem;
}

/* Obsah analyzy (vygenerovany HTML z Claude) */
.badm-mkt__analysis-content {
    font-size: 12px;
    line-height: 1.5;
    color: var(--badm-text);
    max-width: 900px;
}

.badm-mkt__analysis-content h3 {
    font-size: 13px;
    font-weight: 600;
    margin: 1.25rem 0 0.4rem;
    color: var(--badm-text);
}

.badm-mkt__analysis-content h3:first-child {
    margin-top: 0;
}

/* AI-generovany obsah – tabulky dostavaji .badm-table pres JS, jen margin navic */
.badm-mkt__analysis-content table {
    margin: 0.5rem 0 1rem;
}

.badm-mkt__analysis-content ul {
    margin: 0.5rem 0;
    padding-left: 1.25rem;
}

.badm-mkt__analysis-content li {
    margin-bottom: 0.3rem;
}

.badm-mkt__analysis-content p {
    margin: 0.5rem 0;
    line-height: 1.5;
}

/* Semanticke CSS tridy pro zvyrazneni */
.badm-mkt__good { color: var(--badm-success); font-weight: 600; }
.badm-mkt__bad { color: var(--badm-danger); font-weight: 600; }
.badm-mkt__warn { color: var(--badm-primary-hover); font-weight: 600; }

/* ---------- Marketing Targets (Plneni cilu) ---------- */
.badm-mkt__target-cell { cursor: pointer; min-width: 70px; }
.badm-mkt__target-cell:hover { background: rgba(37,99,235,0.06); outline: 1px dashed rgba(37,99,235,0.3); }
.badm-mkt__target-cell:empty::after { content: '–'; color: var(--badm-gray-300); }
.badm-mkt__target-cell--default { color: var(--badm-gray-400); font-style: italic; }
.badm-mkt__target-cell--override { font-weight: 600; }
.badm-mkt__target-cell--saving { opacity: 0.5; }
.badm-mkt__target-cell--saved { animation: badm-target-flash 1.5s ease-out; }
@keyframes badm-target-flash { 0% { background: rgba(22,163,74,0.15); } 100% { background: transparent; } }

.badm-mkt__target-input {
    width: 80px; padding: 2px 4px; border: 1px solid var(--badm-primary);
    border-radius: 3px; font-size: 13px; text-align: right;
    outline: none; background: var(--badm-surface);
}
.badm-mkt__target-input:focus { box-shadow: 0 0 0 2px rgba(255,128,20,0.25); }

.badm-mkt__achievement--good { color: var(--badm-success); font-weight: 600; }
.badm-mkt__achievement--close { color: var(--badm-primary-hover); font-weight: 600; }
.badm-mkt__achievement--bad { color: var(--badm-danger); font-weight: 600; }

.badm-mkt__defaults-bar {
    display: flex; flex-direction: column; gap: 0.5rem;
    padding: 0.75rem 1rem; background: var(--badm-gray-50); border: 1px solid var(--badm-gray-200);
    border-radius: 6px; margin-bottom: 1rem; font-size: 0.82rem;
}
.badm-mkt__defaults-row { display: flex; flex-wrap: wrap; gap: 0.3rem 1rem; align-items: center; }
.badm-mkt__defaults-row--eshop { font-size: 0.88rem; }
.badm-mkt__defaults-row--platforms {
    padding-left: 1rem; border-left: 2px solid var(--badm-gray-200);
    display: flex; flex-wrap: wrap; gap: 0.3rem 1.5rem; align-items: center;
}
.badm-mkt__defaults-platform { display: inline-flex; gap: 0.4rem; align-items: center; white-space: nowrap; }
.badm-mkt__defaults-platform-name { color: var(--badm-gray-500); font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.03em; }
.badm-mkt__target-cell--default-bar {
    display: inline-block; cursor: pointer; min-width: 50px;
    padding: 1px 6px; border-radius: 3px; color: var(--badm-gray-600);
    border-bottom: 1px dashed var(--badm-gray-400);
}
.badm-mkt__target-cell--default-bar:hover { background: rgba(37,99,235,0.06); }
.badm-mkt__target-cell--default-bar:empty::after { content: '–'; color: var(--badm-gray-300); }

/* ============================================================
   SOCIAL PAGE (socialni site)
   ============================================================ */

/* ── Alert info ── */
.badm-alert--info { background: var(--badm-info-light); color: var(--badm-info-text); border: 1px solid var(--badm-info-border); }

/* ── Publish form ── */
.badm-social__publish { max-width: 700px; }
.badm-social__form { display: flex; flex-direction: column; gap: 1rem; }
.badm-social__field { display: flex; flex-direction: column; gap: 0.3rem; }
.badm-social__label { font-weight: 600; font-size: 0.85rem; color: var(--badm-text); }
.badm-social__textarea { resize: vertical; min-height: 80px; }
.badm-social__hint { font-size: 0.75rem; color: var(--badm-text-muted); }
.badm-social__actions { padding-top: 0.5rem; }

/* ── Platform select chips ── */
.badm-social__platforms { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.badm-social__platform-btn input { display: none; }
.badm-social__platform-chip {
    display: inline-flex; align-items: center; gap: 0.4rem;
    padding: 0.4rem 0.8rem; border-radius: 6px; cursor: pointer;
    border: 2px solid var(--badm-border); font-size: 0.85rem; font-weight: 500;
    transition: border-color 0.15s, background 0.15s;
}
.badm-social__platform-chip:hover { background: var(--badm-surface-hover); }
.badm-social__platform-btn input:checked + .badm-social__platform-chip {
    border-color: var(--platform-color, var(--badm-primary));
    background: color-mix(in srgb, var(--platform-color, var(--badm-primary)) 8%, transparent);
}

/* ── Connection cards ── */
/* badm-social__connections migrovano na badm-card-grid--wide */
.badm-social__conn-card {
    background: var(--badm-surface); border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius); overflow: hidden;
}
.badm-social__conn-header strong { display: block; font-size: 0.95rem; }
.badm-social__conn-header small { color: var(--badm-text-muted); font-size: 0.75rem; }

/* ── History table ── */
.badm-social__history { overflow-x: auto; }
.badm-social__history-content { max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ==========================================================
   ADMIN HELP – rollout napoveda s markdown obsahem
   ========================================================== */
.badm-help { position: relative; z-index: 10; }

.badm-help__trigger {
    position: absolute;
    top: 4px;
    right: 0;
    background: none;
    border: none;
    cursor: pointer;
    font-size: 0.85rem;
    color: var(--badm-primary);
    padding: 4px 8px;
    transition: opacity 0.2s;
    z-index: 11;
}
.badm-help__trigger i { font-size: 1.1rem; vertical-align: -1px; margin-left: 2px; }
.badm-help__trigger:hover { opacity: 0.8; }
.badm-help__trigger--empty { opacity: 0.3; color: var(--badm-text-muted); }
.badm-help__trigger--empty:hover { opacity: 0.6; }

.badm-help__panel {
    display: none;
    border: 1px dashed var(--badm-border);
    border-radius: 6px;
    padding: 12px 16px;
    margin-bottom: 16px;
    background: var(--badm-warning-bg);
    font-size: 0.8rem;
    line-height: 1.45;
}
.badm-help.is-open .badm-help__panel,
.badm-help__panel.is-open { display: block; }

/* Markdown obsah */
.badm-help__content p { margin: 0 0 6px; }
.badm-help__content p:last-child { margin-bottom: 0; }
.badm-help__content ul,
.badm-help__content ol { margin: 0 0 6px; padding-left: 20px; }
.badm-help__content li { margin-bottom: 1px; }
.badm-help__content h2 { font-size: 0.88rem; margin: 10px 0 4px; }
.badm-help__content h3 { font-size: 0.84rem; margin: 8px 0 3px; }
.badm-help__content code {
    background: rgba(0,0,0,0.06);
    padding: 1px 3px;
    border-radius: 3px;
    font-size: 0.85em;
}
.badm-help__content strong { font-weight: 600; }
.badm-help__content table {
    width: 100%;
    border-collapse: collapse;
    margin: 8px 0;
    font-size: inherit;
}
.badm-help__content th,
.badm-help__content td {
    border: 1px solid var(--badm-border);
    padding: 4px 8px;
    text-align: left;
    vertical-align: top;
}
.badm-help__content tr:first-child th,
.badm-help__content tr:first-child td { border-top: none; }
.badm-help__content tr:last-child th,
.badm-help__content tr:last-child td { border-bottom: none; }
.badm-help__content th:first-child,
.badm-help__content td:first-child { border-left: none; }
.badm-help__content th:last-child,
.badm-help__content td:last-child { border-right: none; }
.badm-help__content th {
    background: rgba(0,0,0,0.04);
    font-weight: 600;
}
.badm-help__content tr:hover td {
    background: rgba(0,0,0,0.02);
}

/* Akce (tlacitko Upravit) */
.badm-help__actions { margin-top: 10px; text-align: right; }
.badm-help__actions .badm-btn i,
.badm-help__editor-actions .badm-btn i { margin-right: 4px; }

/* Editor */
.badm-help__textarea {
    width: 100%;
    min-height: 150px;
    font-family: "SFMono-Regular", "Consolas", "Liberation Mono", "Menlo", monospace;
    font-size: 0.82rem;
    line-height: 1.5;
    padding: 10px;
    border: 1px solid var(--badm-border);
    border-radius: 4px;
    resize: vertical;
    background: var(--badm-surface);
    color: var(--badm-text);
}
.badm-help__textarea:focus {
    outline: none;
    border-color: var(--badm-primary);
    box-shadow: 0 0 0 2px rgba(255, 128, 20, 0.15);
}
.badm-help__editor-actions {
    margin-top: 8px;
    display: flex;
    gap: 8px;
}

/* ============================================================
   WEB ANALYTICS TAB (GA4 + GSC)
   ============================================================ */

.badm-wa__reauth {
    margin-bottom: 16px;
}

/* badm-wa__site-badge migrovano na badm-tag */

.badm-wa__page-url {
    max-width: 400px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ============================================================
   KREATIVY (badm-crv)
   ============================================================ */

/* -- Hledani potisku -- */
.badm-crv__search { position: relative; max-width: 500px; margin-bottom: 1rem; }
.badm-crv__search-results {
    position: absolute; top: 100%; left: 0; right: 0; z-index: 100;
    background: var(--badm-surface); border: 1px solid var(--badm-border);
    border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,.12);
    max-height: 320px; overflow-y: auto;
}
.badm-crv__search-item {
    display: flex; align-items: center; gap: .5rem;
    padding: .5rem .75rem; cursor: pointer; text-decoration: none; color: inherit;
}
.badm-crv__search-item:hover { background: var(--badm-surface-hover); }
.badm-crv__search-color {
    width: 20px; height: 20px; border-radius: 4px; flex-shrink: 0;
    border: 1px solid rgba(0,0,0,.1);
}
/* Nahled potisku ve vysledku hledani – pozadi (vychozi barva textilu) se
   nastavuje inline z DB, contain + padding = cely motiv bez orezu */
.badm-crv__search-thumb {
    width: 28px; height: 28px; object-fit: contain; border-radius: 4px;
    flex-shrink: 0; padding: 2px; box-sizing: border-box;
}
.badm-crv__search-empty { padding: .75rem; color: var(--badm-text-muted); }

/* -- Vybrany potisk -- */
.badm-crv__selected { margin: 1rem 0; }
.badm-crv__selected-info { margin-bottom: .5rem; }
.badm-crv__preview img { max-width: 300px; max-height: 300px; border-radius: 6px; border: 1px solid var(--badm-border); }

/* -- Posledni potisky grid -- */
.badm-crv__recent { margin-top: 1rem; }
.badm-crv__recent h3 { font-size: .9rem; margin-bottom: .5rem; }
.badm-crv__recent-grid {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(80px, 1fr));
    gap: .5rem;
}
.badm-crv__recent-item {
    position: relative;
    display: flex; flex-direction: column; align-items: center;
    text-decoration: none; color: inherit; padding: .25rem;
    border-radius: 6px; transition: background .15s;
}
.badm-crv__badge {
    position: absolute; top: 0; right: 0; z-index: 1;
    min-width: 18px; height: 18px; line-height: 18px;
    padding: 0 5px; border-radius: 9px;
    background: var(--badm-success); color: var(--badm-surface);
    font-size: .65rem; font-weight: 700; text-align: center;
}
.badm-crv__recent-item:hover { background: var(--badm-surface-hover); }
.badm-crv__recent-item img {
    width: 60px; height: 60px; object-fit: contain;
    border-radius: 4px; border: 1px solid var(--badm-border);
    margin-bottom: .25rem;
}
.badm-crv__recent-item small { font-size: .7rem; text-align: center; word-break: break-word; }

/* -- Color picker -- */
.badm-crv__color-picker { display: flex; align-items: center; gap: .75rem; }
.badm-crv__color-picker input[type="color"] {
    width: 44px; height: 36px; padding: 2px; border: 1px solid var(--badm-border);
    border-radius: 4px; cursor: pointer;
}

/* -- Vyber sablon -- */
.badm-crv__templates { display: flex; flex-wrap: wrap; gap: .5rem; }
.badm-crv__template-option {
    display: flex; align-items: center; gap: .5rem;
    padding: .5rem .75rem; border: 1px solid var(--badm-border);
    border-radius: 6px; cursor: pointer; transition: border-color .15s;
}
.badm-crv__template-option:hover { border-color: var(--badm-primary); }
.badm-crv__template-option input:checked + .badm-crv__template-label {
    color: var(--badm-primary); font-weight: 600;
}
.badm-crv__template-label { display: flex; flex-direction: column; align-items: flex-start; }
.badm-crv__template-label small { color: var(--badm-text-muted); font-weight: 400; }
.badm-crv__template-thumb {
    display: block; border: 1px solid var(--badm-gray-300); border-radius: 3px; background: var(--badm-gray-100);
    margin-bottom: .3rem; position: relative; overflow: hidden;
}
.badm-crv__template-thumb-layer {
    position: absolute; border-radius: 2px; opacity: .6;
}

/* -- Vysledky generovani -- */
/* badm-crv__results-grid migrovano na badm-card-grid--narrow */
.badm-crv__result {
    border: 1px solid var(--badm-border); border-radius: 8px;
    overflow: hidden; background: var(--badm-surface);
}
.badm-crv__result img { width: 100%; display: block; }
.badm-crv__result-meta { padding: .5rem .75rem; }
.badm-crv__result-meta small { color: var(--badm-text-muted); }
.badm-crv__result-actions { padding: .5rem .75rem; display: flex; gap: .5rem; border-top: 1px solid var(--badm-border); }

/* -- Knihovna grid -- */
/* badm-crv__library-grid migrovano na badm-card-grid--tight */
.badm-crv__library-item {
    border: 1px solid var(--badm-border); border-radius: 8px;
    overflow: hidden; background: var(--badm-surface); position: relative;
}
.badm-crv__library-item img { width: 100%; display: block; object-fit: contain; cursor: pointer; }
.badm-crv__library-item video { width: 100%; display: block; }
.badm-crv__library-meta { padding: .5rem .75rem; }
.badm-crv__library-meta strong { display: block; font-size: .85rem; }
.badm-crv__library-meta small { display: block; color: var(--badm-text-muted); font-size: .75rem; }
.badm-crv__library-actions { position: absolute; top: .4rem; right: .4rem; padding: 0; border: none; opacity: 0; transition: opacity .15s; }
.badm-crv__library-actions--left { right: auto; left: .4rem; }
.badm-crv__library-item:hover .badm-crv__library-actions { opacity: 1; }
.badm-crv__library-actions .badm-btn { box-shadow: 0 1px 3px rgba(0,0,0,.3); }

/* -- Upload formular -- */
.badm-crv__upload-form { margin-bottom: .5rem; }
.badm-crv__upload-row { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }

/* -- Social picker modal -- */
.badm-modal__dialog--wide { max-width: 1050px; }
.badm-crv-picker__grid {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: .75rem; max-height: 60vh; overflow-y: auto; padding: .5rem 0;
}
.badm-crv-picker__item {
    border: 2px solid transparent; border-radius: 8px; overflow: hidden;
    cursor: pointer; transition: border-color .15s;
}
.badm-crv-picker__item:hover { border-color: var(--badm-primary); }
.badm-crv-picker__item img { width: 100%; display: block; aspect-ratio: 1; object-fit: cover; }
.badm-crv-picker__meta { padding: .25rem .5rem; }
.badm-crv-picker__meta small { display: block; font-size: .7rem; color: var(--badm-text-muted); }

/* Editor sablon */
.badm-crv-tpl-editor__row { display: flex; flex-wrap: wrap; gap: .75rem; align-items: flex-end; margin-bottom: .75rem; }
.badm-crv-tpl-editor__row label { display: flex; flex-direction: column; gap: .2rem; font-size: .85rem; font-weight: 500; }
.badm-crv-tpl-editor__input--sm { width: 90px !important; }
.badm-crv-tpl-editor__layer {
    border: 1px solid var(--badm-border); border-radius: 6px;
    margin-bottom: .5rem; background: var(--badm-gray-50);
}
.badm-crv-tpl-editor__layer-header {
    display: flex; justify-content: space-between; align-items: center;
    padding: .5rem .75rem; border-bottom: 1px solid var(--badm-border);
    background: var(--badm-surface-hover); border-radius: 6px 6px 0 0;
}
.badm-crv-tpl-editor__layer-header strong { font-size: .85rem; }
.badm-crv-tpl-editor__layer-body {
    padding: .75rem; display: flex; flex-wrap: wrap; gap: .5rem; align-items: flex-end;
}
.badm-crv-tpl-editor__layer-body label { display: inline-flex !important; align-items: center; gap: .3rem; font-size: .8rem !important; font-weight: 500 !important; white-space: nowrap; margin-bottom: 0 !important; }
.badm-crv-tpl-editor__layer-body label > input,
.badm-crv-tpl-editor__layer-body label > select { display: inline-block !important; }
.badm-crv-tpl-editor__layer-body label > input:not([class*="__input--sm"]):not([type="color"]),
.badm-crv-tpl-editor__layer-body label > select:not([class*="__input--sm"]) { width: auto !important; }
.badm-crv-tpl-editor__layer-body label > textarea { display: block !important; width: 100%; }
.badm-crv-tpl-editor__layer-body br { width: 100%; }
.badm-crv-tpl-editor__druhy { display: flex; flex-wrap: wrap; gap: .25rem .75rem; margin-top: .25rem; }
.badm-crv-tpl-editor__druh-label { font-size: .8rem; display: inline-flex; align-items: center; gap: .2rem; }

/* Video animace */
.badm-crv__video-progress { padding: 1.5rem; background: var(--badm-gray-50); border-radius: 8px; text-align: center; }
.badm-crv__video-progress i { margin-right: .5rem; color: var(--badm-primary); }
.badm-crv__video-progress-bar { margin-top: .75rem; height: 6px; background: var(--badm-border); border-radius: 3px; overflow: hidden; }
.badm-crv__video-progress-bar > div { height: 100%; width: 0; background: var(--badm-primary); border-radius: 3px; transition: width .5s ease; }
.badm-crv__video-result { text-align: center; }
.badm-crv__video-result video { border-radius: 8px; border: 1px solid var(--badm-border); }
.badm-crv__vtpl-list { display: flex; flex-wrap: wrap; gap: .5rem; }
.badm-crv__vtpl-option { display: flex; align-items: flex-start; gap: .5rem; padding: .75rem 1rem; border: 2px solid var(--badm-border); border-radius: 8px; cursor: pointer; transition: border-color .15s; }
.badm-crv__vtpl-option:hover { border-color: var(--badm-primary); }
.badm-crv__vtpl-option input:checked + .badm-crv__vtpl-option-body { color: var(--badm-primary); }
.badm-crv__vtpl-option input { margin-top: .15rem; }
.badm-crv__vtpl-option-body { display: flex; flex-direction: column; }
.badm-crv__vtpl-option-body small { color: var(--badm-text-muted); font-weight: 400; }
.badm-crv-vtpl-editor .badm-crv-tpl-editor__row { display: flex; flex-wrap: wrap; gap: .75rem; align-items: flex-end; margin-bottom: .75rem; }
.badm-crv-vtpl-editor .badm-crv-tpl-editor__row label { display: flex; flex-direction: column; gap: .2rem; font-size: .85rem; font-weight: 500; }
.badm-crv-vtpl-editor .badm-input-unit { display: inline-flex; align-items: center; gap: .35rem; }
.badm-crv-vtpl-editor .badm-input-unit > span { color: var(--badm-text-muted); font-weight: 400; }

/* -- Outro picker grid v modalu -- */
.badm-crv-outro-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: .75rem; }
.badm-crv-outro-card { border: 2px solid var(--badm-border); border-radius: 8px; padding: .5rem; cursor: pointer; transition: border-color .15s, transform .15s; background: var(--badm-surface); }
.badm-crv-outro-card:hover { border-color: var(--badm-primary); transform: translateY(-2px); }
.badm-crv-outro-card video { width: 100%; height: 140px; object-fit: cover; background: #000; border-radius: 4px; display: block; }
.badm-crv-outro-card__meta { padding-top: .4rem; font-size: .8rem; line-height: 1.3; }

/* -- Knihovna: play overlay na videu -- */
.badm-crv__library-thumb { position: relative; cursor: pointer; }
.badm-crv__library-thumb video { width: 100%; display: block; }
.badm-crv__library-play {
    position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
    background: rgba(0,0,0,.25); opacity: 0; transition: opacity .15s;
    font-size: 2rem; color: var(--badm-on-accent);
}
.badm-crv__library-thumb:hover .badm-crv__library-play { opacity: 1; }

/* -- Lightbox -- */
.badm-crv-lightbox__dialog { max-width: 90vw; width: auto; max-height: 90vh; }
.badm-crv-lightbox__body { padding: 0; display: flex; align-items: center; justify-content: center; background: #000; }
.badm-crv-lightbox__body video,
.badm-crv-lightbox__body img { max-width: 85vw; max-height: 80vh; display: block; border-radius: 0; }

/* ═══════════════════════════════════════════════════════
   Advisor – chatbot UI
   ═══════════════════════════════════════════════════════ */
.badm-advisor__meta { font-size: .8rem; color: var(--badm-gray-400); font-weight: 400; }

/* Centrovani */
.badm-advisor { max-width: 640px; margin: 0 auto; }

.badm-advisor__chat {
    border: 1px solid var(--badm-gray-300); border-radius: 8px; background: var(--badm-bg);
    display: flex; flex-direction: column; min-height: 500px; max-height: 70vh;
}
.badm-advisor__msgs {
    flex: 1; overflow-y: auto; padding: 16px; display: flex; flex-direction: column; gap: 12px;
}
.badm-advisor__msg { max-width: 85%; display: flex; flex-direction: column; }
.badm-advisor__msg--user { align-self: flex-end; }
.badm-advisor__msg--assistant { align-self: flex-start; }

.badm-advisor__msg-text {
    padding: 10px 14px; border-radius: 12px; font-size: .95rem; line-height: 1.5;
    word-wrap: break-word;
}
.badm-advisor__msg--user .badm-advisor__msg-text {
    background: var(--badm-info); color: var(--badm-surface); border-bottom-right-radius: 4px;
}
.badm-advisor__msg--assistant .badm-advisor__msg-text {
    background: var(--badm-surface); border: 1px solid var(--badm-gray-300); border-bottom-left-radius: 4px;
}
.badm-advisor__msg-text em { font-style: italic; color: inherit; opacity: .85; }
.badm-advisor__sep { border: none; border-top: 1px solid var(--badm-gray-200); margin: 8px 0; }
.badm-advisor__examples { font-size: .85rem; color: var(--badm-gray-400); }

/* Produktove karty */
.badm-advisor__products { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 10px; }
.badm-advisor__product {
    display: flex; flex-direction: column; padding: 8px; background: var(--badm-gray-100); border-radius: 8px;
    border: 1px solid var(--badm-gray-200); text-decoration: none; color: inherit; transition: border-color .15s;
}
.badm-advisor__product:hover { border-color: var(--badm-info); }
.badm-advisor__product-img {
    width: 100%; aspect-ratio: 1; object-fit: contain; border-radius: 6px; background: #fff;
}
.badm-advisor__product-info { padding-top: 6px; }
.badm-advisor__product-name { font-weight: 600; font-size: .85rem; }
.badm-advisor__product-reason { font-size: .8rem; color: var(--badm-gray-500); margin-top: 2px; }

/* Akcni tlacitka po doporuceni */
.badm-advisor__actions {
    display: flex; gap: 8px; padding: 12px; border-top: 1px solid var(--badm-gray-300);
    background: var(--badm-bg); border-radius: 0 0 8px 8px; justify-content: center;
}
.badm-advisor__actions .badm-btn { flex: 0 1 auto; min-width: 100px; }

/* Loading – bublina s rotujici hlaskou (maskuje latenci, vzor z Adamova editoru) */
.badm-advisor__loading {
    align-self: flex-start; padding: 10px 14px; background: var(--badm-surface); border: 1px solid var(--badm-gray-300);
    border-radius: 12px; border-bottom-left-radius: 4px; color: var(--badm-gray-400); font-size: .9rem;
    animation: badm-loading-pulse 2s ease-in-out infinite;
}
@keyframes badm-loading-pulse { 0%,100% { opacity: .55; } 50% { opacity: 1; } }

/* Input */
.badm-advisor__input {
    display: flex; gap: 8px; padding: 12px; border-top: 1px solid var(--badm-gray-300); background: var(--badm-surface);
    border-radius: 0 0 8px 8px;
}
.badm-advisor__input .badm-input { flex: 1; }

/* Stats bar */
.badm-advisor__stats {
    display: flex; gap: 16px; padding: 8px 12px; margin-top: 8px;
    font-size: .75rem; color: var(--badm-gray-400); font-family: monospace; justify-content: center;
    flex-wrap: wrap; /* na mobilu se polozky vejdou pod sebe misto pretekani */
}
.badm-advisor__stats-item { white-space: nowrap; }

/* ═══════════════════════════════════════════════════════════
   Error Log
   ═══════════════════════════════════════════════════════════ */
.badm-errlog { max-width: 1100px; }
.badm-errlog__empty { color: var(--badm-gray-400); font-style: italic; padding: 24px 0; }

/* Analyzy – karty */
/* badm-errlog__analyses → badm-card-stack, badm-errlog__card → badm-card + badm-card--warn/danger/ok */
/* badm-errlog__card-header → badm-card__header */
.badm-errlog__date { font-size: .8rem; color: var(--badm-gray-500); }
.badm-errlog__period { font-size: .8rem; color: var(--badm-gray-400); }
.badm-errlog__meta { display: flex; gap: 6px; margin-left: auto; }
.badm-errlog__summary { margin: 0 0 6px; font-size: .9rem; color: var(--badm-gray-700); }

/* Severity badges */
.badm-severity {
    display: inline-block; padding: 2px 8px; border-radius: 4px;
    font-size: .75rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em;
}
.badm-severity--ok { background: var(--badm-success-bg); color: var(--badm-success-text); }
.badm-severity--warning { background: var(--badm-warning-bg); color: var(--badm-warning-text); }
.badm-severity--critical { background: var(--badm-danger-bg); color: var(--badm-danger-text); }

/* Details – rozbalovaci */
.badm-errlog__details { margin-top: 8px; }
.badm-errlog__details summary { cursor: pointer; font-size: .82rem; color: var(--badm-gray-500); }
.badm-errlog__analysis {
    font-size: .82rem; line-height: 1.7; color: var(--badm-gray-700);
    padding: 12px 16px; margin: 6px 0 0;
    background: var(--badm-gray-50); border: 1px solid var(--badm-gray-200); border-radius: 6px;
    max-height: 500px; overflow-y: auto;
}
.badm-errlog__pre {
    background: var(--badm-gray-50); border: 1px solid var(--badm-gray-200); border-radius: 4px;
    padding: 10px 12px; font-size: .78rem; white-space: pre-wrap; word-break: break-word;
    margin: 6px 0 0; max-height: 400px; overflow-y: auto;
}
.badm-errlog__pre--sm { max-height: 200px; font-size: .72rem; }

/* Raw data – tlacitka v karte analyzy */
.badm-errlog__raw {
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px dashed var(--badm-gray-200);
    display: flex;
    gap: 6px;
    align-items: center;
    flex-wrap: wrap;
}
.badm-errlog__raw-label {
    font-size: .75rem;
    color: var(--badm-gray-500);
    text-transform: uppercase;
    letter-spacing: .05em;
    font-weight: 600;
}

/* Raw data – obsah modalu */
.badm-errlog__raw-header {
    background: var(--badm-gray-50);
    border: 1px solid var(--badm-gray-200);
    border-radius: 6px;
    padding: 10px 14px;
    margin-bottom: 12px;
    font-size: .82rem;
    line-height: 1.6;
    color: var(--badm-gray-700);
}
.badm-errlog__raw-totals {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    margin-top: 8px;
}
.badm-errlog__raw-table-wrap {
    max-height: 60vh;
    overflow-y: auto;
    margin-top: 8px;
}
.badm-errlog__raw-code {
    display: block;
    font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
    font-size: .72rem;
    color: var(--badm-gray-700);
    white-space: pre-wrap;
    word-break: break-word;
    max-width: 600px;
}

/* Globalni banner bezicich cronu (fixni dole) */
.badm-cron-banner {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 900;
    padding: 8px 20px;
    background: var(--badm-info-text);
    color: var(--badm-on-accent);
    font-size: .82rem;
    text-align: center;
    box-shadow: 0 -2px 8px rgba(0,0,0,.15);
}
.badm-cron-banner.is-hidden { display: none; }
/* Kdyz je banner viditelny, pridat padding dole na sidebar a content */
body:has(.badm-cron-banner:not(.is-hidden)) .badm-sidebar { padding-bottom: 40px; }
body:has(.badm-cron-banner:not(.is-hidden)) main { padding-bottom: 40px; }
.badm-cron-banner__time { opacity: .7; font-size: .75rem; }

/* Bezici crony – alert v Error Log */
.badm-errlog__running-crons {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
    padding: 8px 14px;
    margin-bottom: 12px;
    background: var(--badm-info-light);
    border: 1px solid var(--badm-info-border);
    border-radius: var(--badm-radius);
    font-size: .82rem;
    color: var(--badm-info);
}

/* Timeline – hodinove sbery */
.badm-errlog__timeline {
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    padding: 10px 14px;
    margin-bottom: 16px;
}
.badm-errlog__timeline-dot {
    width: 14px;
    height: 14px;
    border-radius: 2px;
    cursor: pointer;
    transition: transform .1s;
    border: 1px solid transparent;
}
.badm-errlog__timeline-dot:hover {
    transform: scale(1.4);
    border-color: var(--badm-text);
}
/* Collect popup – prepinace zdroju */
.badm-errlog__collect-tabs {
    display: flex;
    gap: 4px;
    flex-wrap: wrap;
    align-items: center;
    margin-bottom: 12px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--badm-border);
}

/* Hodinovy sber – kategorie (frontend / sentry / admin / mozek)
   Kazda kategorie ma vlastni 48h timeline na strance Error Log */
.badm-errlog__cat {
    border: 1px solid var(--badm-border);
    border-left-width: 4px;
    border-radius: var(--badm-radius);
    padding: 8px 10px;
    background: var(--badm-bg);
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
}
.badm-errlog__cat-title {
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.4px;
}
/* 12 sloupcu × 8 radku = 96 dotu (LIMIT=96 v controlleru).
   Kazdy radek = 12 hodin, 8 radku = 4 dni. minmax(0,1fr) zajisti, ze se
   dot vzdy vejde do sirky karty (nepretece) – velikost se prizpusobi sirce
   sloupce, ktera se odvozuje z aktualni sirky bloku. */
.badm-errlog__cat-row {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    gap: 3px;
    overflow: hidden;
}
.badm-errlog__cat-row > .badm-errlog__timeline-dot {
    width: auto;
    height: auto;
    min-width: 0;
    min-height: 0;
    aspect-ratio: 1;
}

/* Barvy per kategorie – akcent vlevo + barva titulku */
.badm-errlog__cat--frontend     { border-left-color: var(--badm-info); }
.badm-errlog__cat--frontend     .badm-errlog__cat-title { color: var(--badm-info); }
.badm-errlog__cat--sentry       { border-left-color: var(--badm-warning); }
.badm-errlog__cat--sentry       .badm-errlog__cat-title { color: var(--badm-warning); }
.badm-errlog__cat--admin        { border-left-color: var(--badm-purple); }
.badm-errlog__cat--admin        .badm-errlog__cat-title { color: var(--badm-purple); }
.badm-errlog__cat--mozek        { border-left-color: var(--badm-success); }
.badm-errlog__cat--mozek        .badm-errlog__cat-title { color: var(--badm-success); }
.badm-errlog__cat--external_api { border-left-color: var(--badm-pink); }
.badm-errlog__cat--external_api .badm-errlog__cat-title { color: var(--badm-pink); }

.badm-errlog__timeline-dot--ok       { background: var(--badm-success); }
.badm-errlog__timeline-dot--warning   { background: var(--badm-warning); }
.badm-errlog__timeline-dot--critical  { background: var(--badm-danger); }

/* Cron logy – status pills */
.badm-cron-status {
    display: inline-block; padding: 1px 7px; border-radius: 3px;
    font-size: .72rem; font-weight: 600; letter-spacing: .03em;
}
.badm-cron-status--ok { background: var(--badm-success-bg); color: var(--badm-success-text); }
.badm-cron-status--warning { background: var(--badm-warning-bg); color: var(--badm-warning-text); }
.badm-cron-status--error { background: var(--badm-danger-bg); color: var(--badm-danger-text); }
.badm-cron-status--running { background: var(--badm-indigo-bg); color: var(--badm-indigo-text); }

.badm-errlog__cron-time { font-size: .78rem; white-space: nowrap; color: var(--badm-gray-500); }
.badm-errlog__cron-name { font-family: monospace; font-size: .82rem; }
.badm-errlog__cron-row--error td { background: var(--badm-danger-bg); }
.badm-errlog__cron-row--warning td { background: var(--badm-warning-light); }
.badm-errlog__running { color: var(--badm-gray-400); font-style: italic; }
.badm-errlog__error-msg {
    background: var(--badm-danger-bg); border: 1px solid var(--badm-danger-border); border-radius: 3px;
    padding: 6px 10px; font-size: .8rem; color: var(--badm-danger-text); margin-bottom: 6px;
}
.badm-errlog__inline-details summary { cursor: pointer; font-size: .78rem; color: var(--badm-gray-400); }

/* ── Error log: zivy tail (tab Zivy log) ─────────────────── */
.badm-errlog-live__toolbar {
    display: flex; align-items: center; gap: .6rem; flex-wrap: wrap;
    margin-bottom: .75rem;
}
.badm-errlog-live__status {
    display: inline-flex; align-items: center; gap: .4rem;
    font-size: .78rem; color: var(--badm-gray-500);
}
.badm-errlog-live__dot {
    width: 8px; height: 8px; border-radius: 50%;
    background: var(--badm-success);
    animation: badm-errlog-live-pulse 1.6s ease-in-out infinite;
}
.badm-errlog-live__status.is-paused .badm-errlog-live__dot { background: var(--badm-gray-400); animation: none; }
.badm-errlog-live__status.is-error .badm-errlog-live__dot { background: var(--badm-danger); animation: none; }
@keyframes badm-errlog-live-pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: .3; }
}
.badm-errlog-live__counters { display: inline-flex; gap: .35rem; flex-wrap: wrap; margin-left: auto; }
.badm-errlog-live__counter {
    cursor: pointer; border: 1px solid transparent;
    font-family: inherit; line-height: inherit; appearance: none;
}
.badm-errlog-live__counter:hover { border-color: var(--badm-gray-400); }
.badm-errlog-live__counter.is-active {
    border-color: var(--badm-primary);
    color: var(--badm-primary);
    font-weight: 700;
}
.badm-errlog-live__feed {
    background: var(--badm-surface); border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius); padding: .5rem .65rem;
    max-height: 70vh; overflow-y: auto;
    font-size: .78rem;
}
.badm-errlog-live__row {
    display: grid;
    /* klient = maskovana IPv4 (max 15 znaku "255.255.255.xxx"), IPv6 zatim neni;
       zdroj 5rem kvuli nejdelsimu labelu "External API" */
    grid-template-columns: 8.6rem 5rem 4.4rem 6.6rem 1fr;
    align-items: baseline; gap: .5rem;
    padding: .3rem .35rem; border-bottom: 1px solid var(--badm-gray-100);
}
.badm-errlog-live__row:last-child { border-bottom: none; }
.badm-errlog-live__row.is-new { animation: badm-errlog-live-flash 1.5s ease-out; }
@keyframes badm-errlog-live-flash {
    0% { background: var(--badm-warning-bg); }
    100% { background: transparent; }
}
.badm-errlog-live__time { white-space: nowrap; color: var(--badm-gray-500); font-size: .74rem; }
.badm-errlog-live__src { text-align: center; }
.badm-errlog-live__level { text-align: center; }
.badm-errlog-live__client {
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    color: var(--badm-gray-400); font-size: .72rem;
}
.badm-errlog-live__msgwrap { min-width: 0; }
.badm-errlog-live__msg {
    font-family: monospace; font-size: .76rem; line-height: 1.45;
    color: var(--badm-gray-800); white-space: pre-wrap; word-break: break-word;
    background: none; padding: 0; display: block;
}
.badm-errlog-live__trace { margin-top: .2rem; }
.badm-errlog-live__trace summary {
    cursor: pointer; font-size: .72rem; color: var(--badm-gray-400);
    user-select: none;
}
.badm-errlog-live__trace summary:hover { color: var(--badm-gray-700); }
.badm-errlog-live__trace pre {
    margin: .25rem 0 0; padding: .4rem .6rem;
    background: var(--badm-gray-50); border: 1px solid var(--badm-gray-200);
    border-radius: 4px;
    font-size: .72rem; line-height: 1.5; color: var(--badm-gray-700);
    white-space: pre-wrap; word-break: break-word;
}
@media (max-width: 900px) {
    .badm-errlog-live__row { grid-template-columns: 8.6rem 5rem 4.4rem 1fr; }
    .badm-errlog-live__client { display: none; }
}

/* ── Error log: access dashboard (tab Access log) ────────── */
.badm-errlog-acc .badm-box-grid { margin-bottom: .75rem; }
.badm-errlog-acc__timeline {
    display: flex; align-items: flex-end; gap: 2px;
    height: 90px; padding: .4rem .5rem;
    background: var(--badm-surface); border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    margin-bottom: 1rem;
    overflow: hidden;
}
.badm-errlog-acc__bar {
    flex: 1; max-width: 14px; height: 100%;
    display: flex; flex-direction: column; justify-content: flex-end;
}
.badm-errlog-acc__bar-ok  { background: var(--badm-gray-300); border-radius: 2px 2px 0 0; }
.badm-errlog-acc__bar-err { background: var(--badm-danger); }
.badm-errlog-acc__tablewrap {
    max-height: 30rem; overflow-y: auto;
    background: var(--badm-surface); border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius); padding: .35rem .5rem;
}
.badm-errlog-acc__tablewrap .badm-table { font-size: .76rem; }
.badm-errlog-acc__tablewrap .badm-pct-bar.badm-pct-bar--sm { min-width: 52px; }
.badm-errlog-acc__sechead {
    display: flex; align-items: center; gap: .75rem; margin-bottom: .5rem;
}
.badm-errlog-acc__sechead .badm-section__title { margin-bottom: 0; }
.badm-errlog-acc__cell-path {
    display: block;
    font-family: monospace; font-size: .72rem;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    max-width: 44rem;
}
/* Raw UA – zalamovat, at je videt cely string (radek muze byt vyssi) */
.badm-errlog-acc__cell-ua {
    display: block;
    font-family: monospace; font-size: .72rem;
    white-space: normal; word-break: break-word;
    max-width: 60rem;
}
.badm-errlog-acc__cell-ua code { background: none; padding: 0; }
.badm-errlog-acc__iprow { cursor: pointer; }
.badm-errlog-acc__iprow:hover td { background: var(--badm-surface-hover); }
.badm-errlog-acc__samplerow {
    display: grid;
    grid-template-columns: 4.4rem 4rem 2.6rem 7.6rem 1fr;
    align-items: baseline; gap: .5rem;
    padding: .25rem .3rem; border-bottom: 1px solid var(--badm-gray-100);
    font-size: .76rem;
}
.badm-errlog-acc__samplerow:last-child { border-bottom: none; }
.badm-errlog-acc__samplerow .badm-badge { text-align: center; }
.badm-errlog-acc__samplerow code { background: none; padding: 0; }

/* ═══════════════════════════════════════════════════════════
   CREATIVE BANK – Banka kreativ (vlastni Meta kreativy)
   ═══════════════════════════════════════════════════════════ */

/* Toolbar */
/* Filtry na jednom radku: selecty jen tak siroke, jak potrebuji (badm-input--compact
   ma jinak min-width 160px a 7 filtru by preteklo), hledani dobira zbytek mista. */
.badm-bank__toolbar { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: var(--badm-gap); }
.badm-bank__toolbar select.badm-input--compact,
.badm .badm-bank__toolbar select.badm-input--compact { min-width: 0; width: auto; }
.badm-bank__toolbar #bankSearch { flex: 1 1 120px; min-width: 100px; }
.badm-bank__toolbar .badm-multiselect { flex: 0 0 auto; }

/* Stavy gridu */
.badm-bank__loading { grid-column: 1/-1; text-align: center; color: var(--badm-text-muted); padding: 2rem; }
.badm-bank__empty { grid-column: 1/-1; text-align: center; color: var(--badm-text-muted); padding: 2.5rem 1rem; }

/* Karta */
.badm-bank__card { background: var(--badm-surface); border: 1px solid var(--badm-border); border-radius: var(--badm-radius); overflow: hidden; cursor: pointer; transition: box-shadow .2s, transform .15s; }
.badm-bank__card:hover { box-shadow: var(--badm-shadow-lg); transform: translateY(-2px); }
.badm-bank__thumb { aspect-ratio: 4/5; overflow: hidden; background: #f5f5f5; position: relative; }
.badm-bank__thumb img { width: 100%; height: 100%; object-fit: contain; display: block; }
.badm-bank__thumb-placeholder { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; color: var(--badm-gray-300); font-size: 2rem; }
.badm-bank__thumb-badge { position: absolute; left: 6px; bottom: 6px; font-size: 10px; font-weight: 600; padding: 1px 6px; border-radius: 10px; background: var(--badm-inverse-bg); color: var(--badm-inverse-text); opacity: .9; }
.badm-bank__thumb-live { position: absolute; right: 6px; top: 6px; font-size: 10px; font-weight: 600; padding: 1px 6px; border-radius: 10px; background: var(--badm-success); color: var(--badm-on-accent); }
.badm-bank__card-body { padding: 8px 10px 10px; }
.badm-bank__card-name { font-size: 11px; font-weight: 600; color: var(--badm-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-bottom: 1px; }
.badm-bank__card-spend { font-size: 14px; font-weight: 700; color: var(--badm-text); }
.badm-bank__card-metrics { display: flex; gap: 4px; flex-wrap: wrap; margin: 4px 0 6px; }
.badm-bank__metric { font-size: 10px; padding: 1px 5px; border-radius: var(--badm-radius-sm); font-weight: 600; }
.badm-bank__metric--roas,
.badm-bank__metric--pno { background: var(--badm-secondary); color: var(--badm-text-muted); }
/* Priznak vykonu vuci prumeru filtru – ROAS i PNO nesou stejny stav (jsou inverzni) */
.badm-bank__metric.is-good { background: var(--badm-success-bg); color: var(--badm-success-text); }
.badm-bank__metric.is-avg  { background: var(--badm-secondary); color: var(--badm-text-muted); }
.badm-bank__metric.is-bad  { background: var(--badm-danger-bg); color: var(--badm-danger-text); }
.badm-bank__metric--conv { background: var(--badm-info-bg); color: var(--badm-info-text); }
.badm-bank__card-campaign { font-size: 11px; color: var(--badm-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.badm-bank__card-meta { font-size: 10px; color: var(--badm-text-muted); margin-top: 2px; }
.badm-bank__card-tags { display: flex; gap: 3px; flex-wrap: wrap; margin-top: 6px; }
.badm-bank__card-tag { font-size: 10px; padding: 1px 6px; border-radius: 999px; background: var(--badm-purple-bg); color: var(--badm-purple-text); }

/* Detail modal */
.badm-bank__modal-dialog { max-height: 90vh; }
.badm-bank__detail { display: grid; grid-template-columns: 320px 1fr; gap: var(--badm-gap); align-items: start; }
@media (max-width: 900px) { .badm-bank__detail { grid-template-columns: 1fr; } }
.badm-bank__detail-left { display: flex; flex-direction: column; gap: 8px; }
.badm-bank__detail-imgwrap { background: #f5f5f5; border-radius: var(--badm-radius); overflow: hidden; min-height: 320px; display: flex; align-items: center; justify-content: center; }
.badm-bank__detail-imgwrap img { width: 100%; max-height: 460px; object-fit: contain; display: block; }
/* badge typu + doba behu na jednom radku (setri vysku leveho sloupce) */
.badm-bank__detail-badges { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.badm-bank__detail-lifetime { font-size: 11px; color: var(--badm-text-muted); }
/* akce v zahlavi modalu – hned vedle titulku vlevo (margin-right: auto odsune krizek) */
.badm-bank__modal-actions { margin-left: 12px; margin-right: auto; }
.badm-bank__detail-right { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.badm-bank__modal-metrics { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
@media (max-width: 640px) { .badm-bank__modal-metrics { grid-template-columns: repeat(2, 1fr); } }
.badm-bank__modal-metric { background: var(--badm-bg); border: 1px solid var(--badm-border); border-radius: var(--badm-radius); padding: 5px 8px; }
.badm-bank__modal-metric__label { font-size: 10px; color: var(--badm-text-muted); }
.badm-bank__modal-metric__val { font-size: 14px; font-weight: 700; color: var(--badm-text); }
.badm-bank__chart-wrap { height: 200px; }
.badm-bank__modal-sub { font-size: 12px; color: var(--badm-text-muted); }
.badm-bank__modal-body { font-size: 12px; color: var(--badm-text); line-height: 1.5; max-height: 120px; overflow-y: auto; white-space: pre-line; margin-top: 4px; }
.badm-bank__modal-section-label { font-size: 10px; font-weight: 600; color: var(--badm-text-muted); text-transform: uppercase; letter-spacing: .4px; margin-bottom: 4px; }
.badm-bank__ads-table { max-height: 220px; overflow-y: auto; }

/* Tag editor v modalu */
.badm-bank__tag-input-row { display: flex; gap: 4px; margin-top: 6px; }
.badm-bank__tag-input-row input { flex: 1; }
.badm-bank__tag-list { display: flex; gap: 4px; flex-wrap: wrap; min-height: 20px; }
.badm-bank__modal-tag { font-size: 11px; padding: 2px 8px; border-radius: 999px; background: var(--badm-purple-bg); color: var(--badm-purple-text); cursor: pointer; }
.badm-bank__modal-tag:hover { background: var(--badm-danger-bg); color: var(--badm-danger-text); }

/* ── Newsletter ─────────────────────────────────────── */
.badm-nl__th-campaign { min-width: 20rem; }
.badm-nl__campaign-name { }
.badm-nl__subject { font-size: .82rem; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.badm-nl__title { font-size: .7rem; color: var(--badm-text-muted); margin-top: .15rem; }
.badm-nl__gloss-toggle {
    font-size: .72rem; color: var(--badm-text-muted); margin-top: .15rem;
    cursor: pointer; display: inline-flex; align-items: center; gap: .3rem;
}
.badm-nl__gloss-toggle:hover { color: var(--badm-primary); }
.badm-nl__gloss-icon { font-size: .65rem; }
.badm-nl__gloss-preview {
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    font-style: italic; max-width: 25rem;
}
.badm-nl__gloss-toggle.is-open .badm-nl__gloss-preview { display: none; }
.badm-nl__gloss-toggle.is-open ~ .badm-nl__gloss-full { display: block; }
.badm-nl__gloss-full {
    display: none; font-size: .78rem; color: var(--badm-text-muted);
    font-style: italic; margin-top: .3rem; line-height: 1.5;
    padding: .4rem .6rem; background: var(--badm-surface-hover); border-radius: 4px;
}
.badm-nl__date { white-space: nowrap; color: var(--badm-text-muted); }
.badm-nl__rate { font-weight: 500; white-space: nowrap; min-width: 4rem; }
.badm-nl__or { position: relative; min-width: 5.5rem; }
.badm-nl__or-bar {
    position: absolute; inset: 2px auto 2px 2px; border-radius: 3px; opacity: .18;
    width: calc(var(--or-pct, 0) * 1%);
    background: hsl(calc(clamp(0, var(--or-pct, 0), 30) * 4), 70%, 50%);
}
.badm-nl__or-val { position: relative; font-weight: 600; }

/* ── Newsletter Plan ──────────────────────────────── */
.badm-nl__plan-section { margin-bottom: 1.5rem; }
.badm-nl__plan-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: .75rem; }
.badm-nl__plan-table { table-layout: fixed; width: 100%; }
/* Mobil: fixed layout cpe 7 sloupcu do viewportu (cca 54px/sloupec) a obsah se drti.
   Prepnout na auto layout – sloupce dle obsahu (vc. nowrap z globalniho mobil pravidla)
   → tabulka prirozene prereste viewport a scrolluje vodorovne, misto drceni. */
@media (max-width: 640px) {
    .badm-table-wrap .badm-nl__plan-table { table-layout: auto; width: auto; min-width: 100%; }
}
.badm-nl__plan-row--today { box-shadow: inset 3px 0 0 var(--badm-primary); }
.badm-nl__plan-date { white-space: nowrap; line-height: 1.1; min-width: 82px; }
.badm-nl__plan-week { font-size: 15px; font-weight: 700; color: var(--badm-text); }
.badm-nl__plan-day { font-size: 12px; color: var(--badm-text-muted); }
.badm-nl__plan-potisk-cell { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* Vetsi nahledy bez zvyseni radku: 40px obrazek + snizeny vertikalni padding
   bunky = stejna vyska jako 24px nahled s plnym paddingem (radek drzi sloupec Datum) */
.badm-nl__plan-table td.badm-nl__plan-potisk-cell,
.badm-nl__plan-table td.badm-nl__plan-digi-cell { padding-top: .2rem; padding-bottom: .2rem; }
.badm-nl__plan-potisk-cell img { width: 40px; height: 40px; object-fit: contain; vertical-align: middle; margin-right: .35rem; border-radius: 2px; }
.badm-nl__plan-edit, .badm-nl__plan-edit-row td { background: var(--badm-surface); border: 1px solid var(--badm-border); border-radius: var(--badm-radius); }
.badm-nl__plan-edit-row td { padding: 1rem !important; }
.badm-nl__plan-form-row--3col { grid-template-columns: 1fr 1fr 1fr; }
.badm-nl__plan-field label { display: block; font-size: .7rem; font-weight: 600; color: var(--badm-text-muted); text-transform: uppercase; letter-spacing: .3px; margin-bottom: .2rem; }
/* Digi potisky – multi-select */
.badm-nl__plan-multi-wrap { position: relative; }
.badm-nl__plan-multi-chips { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .35rem; }
.badm-nl__plan-digi-cell { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.badm-nl__plan-digi-cell img { width: 40px; height: 40px; object-fit: contain; vertical-align: middle; margin-right: .15rem; border-radius: 2px; }
/* Potisk autocomplete */
.badm-nl__plan-potisk-wrap { position: relative; }
.badm-nl__plan-potisk-results { position: absolute; top: 100%; left: 0; right: 0; z-index: 50; background: var(--badm-surface); border: 1px solid var(--badm-border); border-radius: var(--badm-radius); max-height: 200px; overflow-y: auto; box-shadow: 0 4px 12px rgba(0,0,0,.12); }
.badm-nl__plan-potisk-item { display: flex; align-items: center; gap: .4rem; padding: .4rem .6rem; cursor: pointer; font-size: .8rem; }
.badm-nl__plan-potisk-item:hover { background: var(--badm-bg); }
/* Pozadi (vychozi barva textilu potisku) se nastavuje inline z DB – contain
   + padding drzi cely motiv bez orezu i u sirokych "nudli" */
.badm-nl__plan-potisk-thumb { width: 28px; height: 28px; object-fit: contain; border-radius: 2px; flex-shrink: 0; padding: 2px; box-sizing: border-box; }
.badm-nl__plan-potisk-chip { display: flex; align-items: center; gap: .35rem; background: var(--badm-bg); border: 1px solid var(--badm-border); border-radius: var(--badm-radius); padding: .25rem .5rem; font-size: .8rem; }
.badm-nl__plan-potisk-clear { background: none; border: none; cursor: pointer; font-size: 1rem; color: var(--badm-text-muted); padding: 0 .15rem; line-height: 1; }
.badm-nl__plan-potisk-clear:hover { color: var(--badm-danger); }
/* Potisk hover preview – presunuto do sdileneho .badm-img-preview (viz vyse) */

/* ── Sdileny layout: obsah + sticky sidebar ─── */
/* Pouziva se pro: detail stranky s akcema (save/delete), Nastaveni modulu, atd. */
.badm-page-layout { display: grid; grid-template-columns: 1fr 240px; gap: 1.5rem; align-items: start; }
@media (max-width: 768px) { .badm-page-layout { grid-template-columns: 1fr; } }
.badm-page-layout__main { display: flex; flex-direction: column; gap: 1rem; min-width: 0; }
.badm-page-layout__sidebar { position: sticky; top: 70px; display: flex; flex-direction: column; gap: .75rem; }
.badm-page-layout__header { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.25rem; }
/* Akcni box v sidebaru (sticky save + status + odkazy) */
.badm-page-layout__actions { display: flex; flex-direction: column; gap: .35rem; padding: .85rem; background: var(--badm-surface); border: 1px solid var(--badm-border); border-radius: var(--badm-radius); }
.badm-page-layout__actions-row { display: flex; gap: .35rem; }
.badm-page-layout__actions-row > .badm-btn:first-child { flex: 1; }
.badm-page-layout__save-status { font-size: .75rem; color: var(--badm-text-muted); min-height: 1rem; text-align: center; }
.badm-page-layout__delete-link { display: block; text-align: center; font-size: .75rem; color: var(--badm-text-muted); text-decoration: none; margin-top: .35rem; }
.badm-page-layout__delete-link:hover { color: var(--badm-danger); text-decoration: underline; }
.badm-btn--block { width: 100%; justify-content: center; }

/* ── Newsletter Detail Workflow – modul-specificke prvky ── */
.badm-nl__detail-section .badm-section__header { display: flex; align-items: center; gap: .5rem; }
.badm-nl__check--done { color: var(--badm-success); font-size: .8rem; }
.badm-nl__detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; }

/* Narozeniny grafika – hlavicka behu + grid 6 produktovych slotu */
.badm-nl__nar-head {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 12px;
    font-size: 13px;
}
.badm-nl__nar-head code { font-size: 12px; }
.badm-nl__nar-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
}
@media (max-width: 700px) {
    .badm-nl__nar-grid { grid-template-columns: repeat(2, 1fr); }
}
.badm-nl__nar-slot {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
}
.badm-nl__nar-thumb {
    width: 100%;
    height: 110px;
    object-fit: contain;
    background: var(--badm-gray-100);
    border: 1px solid var(--badm-border);
    border-radius: 6px;
}
.badm-nl__detail-grid--3col { grid-template-columns: 1fr 1fr 1fr; }
/* Mobil: sloupce pod sebe – jinak uzky sloupec utne obsah (napr. tlacitko "Vybrat maskota") */
@media (max-width: 640px) {
    .badm-nl__detail-grid,
    .badm-nl__detail-grid--3col { grid-template-columns: 1fr; }
}
.badm-nl__detail-field label { display: block; font-size: .7rem; font-weight: 600; color: var(--badm-text-muted); text-transform: uppercase; letter-spacing: .3px; margin-bottom: .2rem; }
.badm-nl__detail-gloss-linked { padding: .75rem; background: var(--badm-bg); border-radius: var(--badm-radius); border: 1px solid var(--badm-border); }
.badm-nl__detail-gloss-text { font-size: .85rem; line-height: 1.5; white-space: pre-wrap; }
.badm-nl__detail-gloss-actions { display: flex; gap: .5rem; }

/* ── Newsletter Basty picker (faze 3) ─────────────────────── */
.badm-nl__basty-picker { display: flex; gap: .75rem; align-items: center; }
.badm-nl__basty-preview { width: 80px; height: 91px; flex-shrink: 0; border: 1px solid var(--badm-border); border-radius: var(--badm-radius); background: repeating-conic-gradient(var(--badm-gray-100) 0% 25%, var(--badm-bg) 0% 50%) 50% / 12px 12px; display: flex; align-items: center; justify-content: center; overflow: hidden; }
.badm-nl__basty-thumb { max-width: 100%; max-height: 100%; object-fit: contain; display: block; }
.badm-nl__basty-placeholder { color: var(--badm-text-muted); opacity: .4; font-size: 1.5rem; }
.badm-nl__basty-actions { display: flex; flex-direction: column; gap: .35rem; align-items: flex-start; }
.badm-nl__basty-name { font-size: .8rem; color: var(--badm-text-muted); font-family: monospace; }

/* Modal grid pro picker */
.badm-nl__basty-modal-search { margin-bottom: .75rem; }
.badm-nl__basty-modal-count { margin-left: .5rem; font-size: .75rem; color: var(--badm-text-muted); }
.badm-nl__basty-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: .6rem; max-height: 60vh; overflow-y: auto; padding: .25rem; }
.badm-nl__basty-item { display: flex; flex-direction: column; align-items: center; gap: .25rem; padding: .4rem; border: 1px solid var(--badm-border); border-radius: var(--badm-radius); background: var(--badm-surface); cursor: pointer; transition: border-color .15s; }
.badm-nl__basty-item:hover { border-color: var(--badm-primary); }
.badm-nl__basty-item.is-selected { border-color: var(--badm-primary); background: var(--badm-primary-light); }
.badm-nl__basty-item-thumb { width: 90px; height: 102px; object-fit: contain; background: repeating-conic-gradient(var(--badm-gray-100) 0% 25%, var(--badm-bg) 0% 50%) 50% / 10px 10px; border-radius: 3px; }
.badm-nl__basty-item-name { font-size: .65rem; color: var(--badm-text-muted); font-family: monospace; word-break: break-all; text-align: center; line-height: 1.2; }

/* ── Newsletter Obrazky kampane (faze 4) ──────────────────── */
.badm-nl__images-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 1rem; }
.badm-nl__image-slot { display: flex; flex-direction: column; gap: .4rem; }
.badm-nl__image-preview { background: repeating-conic-gradient(var(--badm-gray-100) 0% 25%, var(--badm-bg) 0% 50%) 50% / 16px 16px; border: 1px solid var(--badm-border); border-radius: var(--badm-radius); overflow: hidden; display: flex; align-items: center; justify-content: center; }
.badm-nl__image-thumb { max-width: 100%; max-height: 100%; display: block; object-fit: contain; }
.badm-nl__image-placeholder { color: var(--badm-text-muted); font-size: 2rem; opacity: .4; }
.badm-nl__image-meta { display: flex; flex-direction: column; font-size: .75rem; line-height: 1.3; }
.badm-nl__image-meta .badm-text-muted { font-size: .7rem; }
.badm-nl__image-actions { display: flex; gap: .3rem; flex-wrap: wrap; }
.badm-nl__image-actions .badm-btn { flex: 1 1 auto; min-width: 0; }
.nlDetImgUploadLabel { cursor: pointer; }

/* Readiness sidebar */
.badm-nl__readiness-bar { height: 6px; background: var(--badm-border); border-radius: 3px; overflow: hidden; margin-bottom: .35rem; }
.badm-nl__readiness-fill { height: 100%; background: var(--badm-success); border-radius: 3px; transition: width .3s; }
.badm-nl__readiness-list { list-style: none; padding: 0; margin: .75rem 0 0; font-size: .8rem; }
.badm-nl__readiness-list li { padding: .25rem 0; color: var(--badm-text-muted); display: flex; align-items: center; gap: .4rem; }
.badm-nl__readiness-list li::before { content: '\f111'; font-family: 'Font Awesome 6 Free'; font-weight: 400; font-size: .5rem; color: var(--badm-border); }
.badm-nl__readiness-list li.is-done { color: var(--badm-text); }
.badm-nl__readiness-list li.is-done::before { content: '\f058'; font-weight: 900; color: var(--badm-success); font-size: .7rem; }
.badm-nl__readiness-list a { color: inherit; text-decoration: none; }
.badm-nl__readiness-list a:hover { color: var(--badm-primary); }

/* ── Sdileny nav list pro sidebar ────────────── */
.badm-nav-list { list-style: none; padding: 0; margin: 0; font-size: .8rem; }
.badm-nav-list li { padding: 0; }
.badm-nav-list a { color: var(--badm-text); text-decoration: none; display: block; padding: .3rem .5rem; border-radius: 3px; }
.badm-nav-list a:hover { background: var(--badm-bg); color: var(--badm-primary); }

/* ── Newsletter Settings – specificke ────────── */
.badm-nl__settings-tuner-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: .6rem; }
@media (max-width: 900px) { .badm-nl__settings-tuner-grid { grid-template-columns: 1fr; } }
.badm-nl__settings-lang-bar { display: flex; align-items: center; gap: .75rem; margin-bottom: 1rem; }

/* ── Newsletter Plan Quick form ───────────────── */
.badm-nl__plan-quick { background: var(--badm-surface); border: 1px solid var(--badm-border); border-radius: var(--badm-radius); padding: .75rem 1rem; margin-bottom: .75rem; }
.badm-nl__plan-quick-row { display: flex; align-items: flex-end; gap: .75rem; flex-wrap: wrap; }
.badm-nl__plan-quick-actions { display: flex; gap: .5rem; margin-left: auto; }

/* ── Newsletter Subject AI ────────────────────── */
.badm-nl__subject-ai { display: flex; align-items: center; gap: .75rem; }
.badm-nl__subject-suggestions { display: flex; flex-direction: column; gap: .4rem; margin-top: .75rem; }
/* Override globalniho .badm label { display: block } */
label.badm-nl__subject-item { display: flex; flex-direction: row; align-items: center; gap: .75rem; padding: .6rem .75rem; border: 1px solid var(--badm-border); border-radius: var(--badm-radius); cursor: pointer; background: var(--badm-surface); font-size: inherit; font-weight: normal; color: inherit; margin-bottom: 0; }
.badm-nl__subject-item:hover { background: var(--badm-bg); border-color: var(--badm-primary); }
.badm-nl__subject-item input[type="radio"] { flex-shrink: 0; }
.badm-nl__subject-item-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .2rem; }
.badm-nl__subject-item-text { font-size: .85rem; font-weight: 500; line-height: 1.3; }
.badm-nl__subject-item-rationale { font-size: .75rem; color: var(--badm-text-muted); font-style: italic; font-weight: 400; }
.badm-nl__subject-item-preheader { font-size: .78rem; color: var(--badm-text); }
.badm-nl__subject-item-pre-icon { font-size: .65rem; opacity: .55; transform: scaleX(-1); }
.badm-nl__subject-item-meta { font-size: .7rem; margin-left: .35rem; flex-shrink: 0; font-weight: 400; }
.badm-nl__subject-len--ok { color: var(--badm-success); }
.badm-nl__subject-len--warn { color: var(--badm-warning); }

/* ── Newsletter Glosa generator – krokove odsazeni ─ */
.badm-nl__glosa-step { margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid var(--badm-border); }
.badm-nl__glosa-step:first-child { margin-top: .75rem; padding-top: 0; border-top: none; }
.badm-nl__glosa-step-label { font-weight: 600; font-size: .75rem; color: var(--badm-text-muted); text-transform: uppercase; letter-spacing: .5px; margin-bottom: .6rem; }
.badm-nl__glosa-tuner { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1rem; padding-top: .75rem; border-top: 1px solid var(--badm-border); align-items: center; }

/* ── Newsletter Glosa ──────────────────────────────── */
.badm-glosa__actions-bar { display: flex; gap: .5rem; margin-bottom: 1rem; }
.badm-glosa__step { margin-bottom: 1.25rem; }
.badm-glosa__step-label { font-weight: 600; font-size: .85rem; color: var(--badm-text-muted); margin-bottom: .5rem; display: block; }
.badm-glosa__field { margin-top: .75rem; }
.badm-glosa__field label { font-size: .8rem; font-weight: 500; display: block; margin-bottom: .25rem; }
.badm-glosa__field--inline { display: inline-flex; align-items: center; gap: .5rem; margin-right: 1.5rem; }
.badm-glosa__field--inline label { display: inline; margin-bottom: 0; }
.badm-glosa__topics { display: flex; flex-direction: column; gap: .35rem; margin-top: .75rem; }
.badm-glosa__topic { display: flex; align-items: center; gap: .4rem; font-size: .85rem; padding: .35rem .5rem; border-radius: var(--badm-radius); cursor: pointer; }
.badm-glosa__topic:hover { background: var(--badm-surface-hover); }
.badm-glosa__topic input[type="checkbox"] { margin: 0; }
.badm-glosa__source-link { color: var(--badm-text-muted); font-size: .7rem; margin-left: .25rem; }
.badm-glosa__source-link:hover { color: var(--badm-primary); }
.badm-glosa__textarea { width: 100%; font-family: inherit; font-size: .9rem; padding: .6rem; border: 1px solid var(--badm-border); border-radius: var(--badm-radius); resize: vertical; min-height: 80px; }

.badm-glosa__meta-row { display: flex; flex-wrap: wrap; align-items: center; margin: .75rem 0; }
.badm-glosa__tuner { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: .75rem; align-items: center; }
.badm-glosa__save-row { display: flex; gap: .5rem; align-items: center; margin-top: .75rem; }
.badm-glosa__status-msg { font-size: .75rem; color: var(--badm-text-muted); margin-top: .4rem; min-height: 1rem; }
.badm-glosa__row { cursor: pointer; }
.badm-glosa__row:hover { background: var(--badm-surface-hover); }
.badm-glosa__preview { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.4; font-size: .85rem; white-space: normal; }
.badm-glosa__row td { vertical-align: top; padding-top: .6rem; padding-bottom: .6rem; }
.badm-glosa__actions { display: flex; gap: .25rem; margin-top: .25rem; }
.badm-glosa__full-text { white-space: pre-wrap; font-size: .85rem; line-height: 1.5; padding: .5rem 0; }
.badm-glosa__potisk-wrap { position: relative; }
.badm-glosa__potisk-results { position: absolute; z-index: 10; background: var(--badm-surface-elevated); border: 1px solid var(--badm-border); border-radius: var(--badm-radius); width: 100%; max-height: 250px; overflow-y: auto; box-shadow: 0 4px 12px rgba(0,0,0,.1); }
.badm-glosa__potisk-item { display: flex; align-items: center; gap: .5rem; padding: .5rem .75rem; cursor: pointer; font-size: .85rem; }
.badm-glosa__potisk-item:hover { background: var(--badm-surface-hover); }
.badm-glosa__potisk-thumb { width: 32px; height: 32px; object-fit: contain; border-radius: 4px; background: var(--badm-gray-100); padding: 2px; box-sizing: border-box; }
.badm-glosa__potisk-chip { display: inline-flex; align-items: center; gap: .5rem; background: var(--badm-surface-hover); border: 1px solid var(--badm-border); border-radius: var(--badm-radius); padding: .3rem .6rem; font-size: .85rem; margin-top: .5rem; }
.badm-glosa__potisk-chip img { width: 24px; height: 24px; object-fit: contain; border-radius: 3px; }
.badm-glosa__potisk-chip button { background: none; border: none; cursor: pointer; font-size: 1.1rem; color: var(--badm-text-muted); padding: 0 0 0 .25rem; line-height: 1; }
.badm-glosa__potisk-chip button:hover { color: var(--badm-danger); }

/* ── Settings panel – sdilene prvky pro nastaveni modulu ── */
.badm-set { max-width: 700px; }
.badm-set__field { margin-bottom: .75rem; }
.badm-set__label { font-size: .8rem; font-weight: 500; display: block; margin-bottom: .25rem; }
.badm-set__hint { font-size: .8rem; color: var(--badm-text-muted); margin: 0 0 .5rem; }
.badm-set__radio-group { display: flex; gap: 1.25rem; }
.badm-set__radio-group label { font-size: .85rem; cursor: pointer; display: flex; align-items: center; gap: .3rem; }
.badm-set__save { margin-top: 1rem; display: flex; gap: .75rem; align-items: center; }
.badm-set__row { display: flex; gap: 1.25rem; flex-wrap: wrap; }
.badm-set__subtitle { font-size: 13px; font-weight: 600; margin: 4px 0 8px; color: var(--badm-text-muted); }
.badm-textarea--mono + .badm-btn { margin-top: .5rem; }
.badm-crvset__preset-row { padding: .75rem; margin-bottom: .5rem; border: 1px solid var(--badm-border); border-radius: var(--badm-radius); background: var(--badm-bg); cursor: grab; }
.badm-crvset__preset-row:active { cursor: grabbing; }
.badm-crvset__preset-handle { color: var(--badm-text-muted); cursor: grab; padding: 0 .25rem; }

/* Preset tlacitka ve video tabu */
.badm-crv__presets { display: flex; flex-wrap: wrap; gap: .4rem; }
.badm-crv__preset-btn {
    padding: .4rem .75rem; font-size: .82rem; border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius, 6px); background: var(--badm-surface);
    cursor: pointer; transition: border-color .15s, background .15s; display: inline-flex; align-items: center; gap: .3rem;
}
.badm-crv__preset-btn:hover { border-color: var(--badm-primary); background: var(--badm-surface-hover); }
.badm-crv__preset-btn.is-active { border-color: var(--badm-primary); background: var(--badm-primary); color: var(--badm-on-accent); }

/* ── Integrace ──────────────────────────────────────── */
/* badm-integrace__section → badm-page-section, badm-integrace__section-title → badm-section-label */
/* badm-integrace__grid/card migrovano na badm-half-grid / badm-card (viz hlavni blok) */

/* ── Sdileny sync progress bar ────────────────────────────── */
.badm-sync__group    { display: flex; flex-direction: row; align-items: center; gap: .5rem; }
.badm-sync__last     { font-size: .72rem; color: var(--badm-text-muted); }
.badm-sync__progress { display: flex; flex-direction: column; gap: .2rem; min-width: 260px; }
.badm-sync__row1     { display: flex; align-items: center; gap: .5rem; }
.badm-sync__row2     { display: flex; align-items: center; gap: .4rem; }
.badm-sync__info     { font-size: .85rem; color: var(--badm-gray-700); flex-shrink: 0; }
.badm-sync__bar-wrap { flex: 1; height: 6px; background: var(--badm-gray-200); border-radius: 3px; overflow: hidden; }
.badm-sync__bar-fill { height: 100%; width: 0; background: var(--badm-primary); border-radius: 3px; transition: width .3s ease; }
.badm-sync__timer    { font-size: .72rem; color: var(--badm-text-muted); flex-shrink: 0; }

/* ── Competitors ─────────────────────────────────────────── */
/* badm-comp__grid migrovano na badm-card-grid badm-card-grid--cols-3 */
.badm-comp__card          { background: var(--badm-surface); border: 1px solid var(--badm-border); border-radius: var(--badm-radius); overflow: hidden; display: flex; flex-direction: column; cursor: pointer; transition: box-shadow .15s, transform .15s; }
.badm-comp__card[data-ad-id]:hover { box-shadow: 0 4px 14px rgba(0,0,0,.1); transform: translateY(-1px); }
/* 4:5 ramecek (vetsi nez puvodnich 16:9), object-fit:contain - nikdy nekrop */
.badm-comp__card-img      { position: relative; aspect-ratio: 4/5; background: var(--badm-gray-100); display: flex; align-items: center; justify-content: center; border-bottom: 1px solid var(--badm-border); overflow: hidden; }
.badm-comp__card-thumb    { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; display: block; }
.badm-comp__card-reach    { position: absolute; top: .5rem; right: .5rem; background: rgba(0,0,0,.75); color: #fff; font-size: .72rem; padding: .15rem .4rem; border-radius: 4px; pointer-events: none; z-index: 2; }
.badm-comp__card-reach i  { margin-right: .2rem; }
.badm-comp__card-reach-rpd { margin-left: .35rem; padding-left: .35rem; border-left: 1px solid rgba(255,255,255,.35); font-size: .68rem; opacity: .85; }
.badm-comp__card-mtype    { position: absolute; top: .5rem; left: .5rem; background: rgba(0,0,0,.75); color: #fff; font-size: .68rem; padding: .15rem .4rem; border-radius: 4px; pointer-events: none; z-index: 2; }
.badm-comp__card-mtype--catalog { background: rgba(168,85,247,.85); }
.badm-comp__card-mtype i  { margin-right: .2rem; }
.badm-comp__card-days     { color: var(--badm-text-muted); }
.badm-comp__card-target   { margin-top: .4rem; font-size: .72rem; color: var(--badm-text-muted); }
.badm-comp__card-target i { margin-right: .25rem; opacity: .7; }
.badm-comp__card-img a    { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; text-decoration: none; color: var(--badm-text-muted); }
.badm-comp__card-img--landscape { aspect-ratio: 4/3; }

/* Demograficky breakdown na karte (skutecny reach z DSA breakdown) */
.badm-comp__card-demo     { margin-top: .5rem; display: flex; flex-direction: column; gap: .25rem; }
.badm-comp__card-demo-item { font-size: .7rem; color: var(--badm-text-muted); display: flex; align-items: center; gap: .4rem; }
.badm-comp__card-demo-item i { opacity: .7; }
.badm-comp__gender-bar    { display: inline-flex; width: 50px; height: 6px; border-radius: 3px; overflow: hidden; background: var(--badm-border); flex-shrink: 0; }
.badm-comp__gender-bar > span { display: block; height: 100%; }
.badm-comp__gender-bar--f { background: var(--badm-pink); }
.badm-comp__gender-bar--m { background: var(--badm-info); }
.badm-comp__gender-bar--lg { width: 100%; height: 16px; border-radius: 4px; }

/* ── Detail modal ────────────────────────────────────────── */
.badm-comp__detail        { display: grid; grid-template-columns: 380px 1fr; gap: 1.5rem; }
.badm-comp__detail-loading { text-align: center; padding: 3rem; color: var(--badm-text-muted); }
.badm-comp__detail-left   { display: flex; flex-direction: column; gap: .75rem; }
.badm-comp__detail-imgwrap { background: var(--badm-gray-100); border-radius: var(--badm-radius); display: flex; align-items: center; justify-content: center; min-height: 380px; max-height: 500px; overflow: hidden; }
.badm-comp__detail-img    { max-width: 100%; max-height: 500px; width: auto; height: auto; object-fit: contain; display: block; }
.badm-comp__detail-noimg  { color: var(--badm-gray-500); font-size: .9rem; text-align: center; padding: 2rem; }
.badm-comp__detail-noimg i { font-size: 2rem; display: block; margin-bottom: .5rem; }
.badm-comp__detail-badges { display: flex; gap: .4rem; flex-wrap: wrap; }
.badm-comp__detail-duration { font-size: .8rem; color: var(--badm-text-muted); }
.badm-comp__detail-platforms { display: flex; gap: .3rem; flex-wrap: wrap; }
.badm-comp__detail-actions { margin-top: .5rem; }

.badm-comp__detail-right  { display: flex; flex-direction: column; gap: 1rem; min-width: 0; }
.badm-comp__detail-section { padding-bottom: .85rem; border-bottom: 1px solid var(--badm-border); }
.badm-comp__detail-section:last-child { border-bottom: none; padding-bottom: 0; }
.badm-comp__detail-label  { font-size: .7rem; text-transform: uppercase; letter-spacing: .04em; color: var(--badm-text-muted); font-weight: 600; margin-bottom: .5rem; }
.badm-comp__detail-reach  { font-size: .82rem; color: var(--badm-text-muted); padding: .25rem 0 .5rem; display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; }
.badm-comp__detail-reach strong { color: var(--badm-text); font-weight: 600; }
.badm-comp__detail-reach i { color: var(--badm-text-muted); margin-right: .15rem; }
.badm-comp__detail-reach-sep { opacity: .4; }
.badm-comp__detail-textnote { font-size: .7rem; color: var(--badm-text-muted); font-style: italic; margin-top: .35rem; }
.badm-comp__detail-adtitle { font-size: 1rem; font-weight: 600; margin-bottom: .35rem; }
.badm-comp__detail-adtext { font-size: .85rem; line-height: 1.5; color: var(--badm-text); white-space: pre-wrap; max-height: 280px; overflow-y: auto; padding-right: .5rem; }
.badm-comp__detail-cta    { display: inline-flex; align-items: center; gap: .4rem; font-size: .82rem; color: var(--badm-primary); word-break: break-all; text-decoration: none; }
.badm-comp__detail-cta:hover { text-decoration: underline; }
.badm-comp__detail-target { font-size: .85rem; line-height: 1.7; color: var(--badm-text); }

/* Gender section uvnitr modal */
.badm-comp__detail-gender { display: flex; flex-direction: column; gap: .4rem; }
.badm-comp__detail-gender-labels { display: flex; justify-content: space-between; font-size: .8rem; color: var(--badm-text-muted); }

/* Age histogram */
.badm-comp__detail-agelist { display: flex; flex-direction: column; gap: .35rem; }
.badm-comp__detail-agerow  { display: grid; grid-template-columns: 60px 1fr 120px; gap: .5rem; align-items: center; font-size: .8rem; }
.badm-comp__detail-agelabel { font-weight: 600; color: var(--badm-text); }
.badm-comp__detail-agebar  { background: var(--badm-border); height: 10px; border-radius: 5px; overflow: hidden; }
.badm-comp__detail-agebar > span { display: block; height: 100%; background: var(--badm-primary); border-radius: 5px; }
.badm-comp__detail-ageval  { text-align: right; color: var(--badm-text-muted); font-size: .75rem; }

/* Catalog items (DPA) seznam */
.badm-comp__detail-catalog { list-style: decimal inside; padding: 0; margin: 0; max-height: 320px; overflow-y: auto; }
.badm-comp__detail-catalog li { padding: .4rem 0; border-bottom: 1px solid var(--badm-border); font-size: .82rem; }
.badm-comp__detail-catalog li:last-child { border-bottom: none; }
.badm-comp__detail-catalog-title { display: inline; font-weight: 500; color: var(--badm-text); }
.badm-comp__detail-catalog-caption { display: block; margin-left: 1.1rem; font-size: .72rem; color: var(--badm-text-muted); }

/* Card catalog count suffix v header */
.badm-comp__card-cat-count { font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--badm-purple); margin-left: .25rem; }

/* Responzivni: na mobile stacknout */
@media (max-width: 900px) {
    .badm-comp__detail { grid-template-columns: 1fr; }
    .badm-comp__detail-imgwrap { min-height: 280px; }
}
.badm-comp__card-img a:hover { background: var(--badm-gray-200); }
.badm-comp__card-placeholder { display: flex; flex-direction: column; align-items: center; gap: .4rem; color: var(--badm-text-muted); font-size: .8rem; }
.badm-comp__card-placeholder i { font-size: 1.5rem; }
.badm-comp__card-body     { padding: .75rem; flex: 1; }
.badm-comp__card-competitor { font-size: .72rem; color: var(--badm-text-muted); margin-bottom: .25rem; text-transform: uppercase; letter-spacing: .03em; }
.badm-comp__card-title    { font-size: .88rem; font-weight: 600; line-height: 1.3; color: var(--badm-text); margin-bottom: .35rem; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.badm-comp__card-text     { font-size: .72rem; line-height: 1.35; color: var(--badm-text-muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.badm-comp__card-domain   { margin-top: .4rem; font-size: .72rem; color: var(--badm-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.badm-comp__card-domain i { margin-right: .25rem; opacity: .7; }
.badm-comp__card-meta     { padding: .5rem .75rem; border-top: 1px solid var(--badm-border); font-size: .72rem; color: var(--badm-text-muted); display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.badm-comp__filters       { margin-bottom: 1rem; }
.badm-comp__filter-form   { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.badm-comp__filter-form .badm-input--compact { min-width: 160px; }
.badm-comp__filter-count  { font-size: .82rem; color: var(--badm-text-muted); }
.badm-comp__filter-action { margin-left: auto; }

/* ── Multi-select dropdown s checkboxy ── */
.badm-multiselect          { position: relative; display: inline-block; }
.badm-multiselect__btn     {
    display: inline-flex; align-items: center; gap: .5rem;
    min-width: 180px; padding: 5px 8px;
    border: 1px solid var(--badm-border); border-radius: var(--badm-radius);
    background: var(--badm-surface); color: var(--badm-text);
    font-size: 12px; font-family: var(--badm-font); line-height: 1.4;
    cursor: pointer; text-align: left;
}
.badm-multiselect__btn:hover { border-color: var(--badm-primary); }
.badm-multiselect__label   { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.badm-multiselect__btn i   { font-size: .65rem; opacity: .6; }
.badm-multiselect.is-open .badm-multiselect__btn i { transform: rotate(180deg); }
.badm-multiselect__menu    {
    position: absolute; top: calc(100% + 4px); left: 0; z-index: 50;
    min-width: 100%; max-height: 320px; overflow-y: auto;
    background: var(--badm-surface); border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius); box-shadow: 0 4px 12px rgba(0,0,0,.1);
    padding: .25rem 0;
}
.badm-multiselect__menu[hidden] { display: none; }
.badm-multiselect__opt     {
    display: flex !important; align-items: center; gap: .5rem;
    padding: .35rem .75rem; font-size: 12px; font-weight: normal !important;
    color: var(--badm-text); cursor: pointer; margin: 0 !important;
    white-space: nowrap;
}
.badm-multiselect__opt:hover { background: var(--badm-bg); }
.badm-multiselect__opt input[type="checkbox"] { margin: 0; flex-shrink: 0; }
.badm-multiselect__opt span { flex: 1; }

/* Platform split bar v Prehledu (FB/IG/Messenger/AN) */
.badm-comp__platform-split { display: flex; width: 120px; height: 8px; background: var(--badm-border); border-radius: 4px; overflow: hidden; }
.badm-comp__platform-bar--fb  { background: #1877f2; }
.badm-comp__platform-bar--ig  { background: linear-gradient(135deg, #f58529, #dd2a7b, #8134af); }
.badm-comp__platform-bar--msg { background: var(--badm-info); }
.badm-comp__platform-bar--an  { background: var(--badm-gray-500); }

/* Competitors modal */
.badm-comp__modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.4); z-index: 1000; display: none; align-items: center; justify-content: center; }
.badm-comp__modal-overlay.is-visible { display: flex; }
.badm-comp__modal         { background: var(--badm-surface); border-radius: 8px; padding: 1.5rem; width: 100%; max-width: 480px; box-shadow: 0 8px 30px rgba(0,0,0,.15); }
.badm-comp__modal-header  { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; }
.badm-comp__modal-header h3 { margin: 0; font-size: 1.1rem; }
.badm-comp__modal-close   { background: none; border: none; font-size: 1.5rem; cursor: pointer; color: var(--badm-text-muted); line-height: 1; }

/* Finance tab */
.badm-comp__fin-table th[colspan]  { text-align: center; border-bottom: none; padding-bottom: .2rem; }
.badm-comp__fin-subheader th       { font-size: .7rem; font-weight: 500; color: var(--badm-text-muted); padding-top: .2rem; }
.badm-comp__fin-negative           { color: var(--badm-danger); }
.badm-comp__fin-positive           { color: var(--badm-success); }
.badm-comp__fin-note               { font-size: .75rem; color: var(--badm-text-muted); margin-top: .75rem; }
.badm-comp__fin-sticky             { position: sticky; left: 0; z-index: 1; background: var(--badm-surface); min-width: 140px; box-shadow: 2px 0 4px rgba(0,0,0,.06); }
.badm-comp__fin-table thead .badm-comp__fin-sticky { z-index: 3; }
.badm-comp__fin-empty td           { color: var(--badm-text-muted); }
.badm-comp__fin-empty td:first-child strong { font-weight: 400; }

/* Logo konkurenta */
.badm-comp__logo { width: 20px; height: 20px; object-fit: contain; vertical-align: middle; margin-right: 6px; border-radius: 3px; }
.badm-comp__card-logo { width: 14px; height: 14px; object-fit: contain; vertical-align: middle; margin-right: 4px; border-radius: 2px; }
.badm-comp__detail-logo { width: 20px; height: 20px; object-fit: contain; vertical-align: middle; margin-right: 8px; border-radius: 3px; }

/* Recenze – progress bar: migrovano na sdileny badm-pct-bar (viz sekce Percent bar) */
.badm-comp__overview-actions { white-space: nowrap; }
.badm-comp__row-own > td    { background: var(--badm-primary-soft); font-weight: 500; }
.badm-comp__name-link       { color: inherit; text-decoration: none; }
.badm-comp__name-link:hover { color: var(--badm-primary); }

/* Bestsellery – produktove karty */
/* badm-comp__grid--4 migrovano na badm-card-grid badm-card-grid--cols-4 */
.badm-comp__best-section   { margin-bottom: 2rem; }
.badm-comp__best-header    { font-size: 1rem; font-weight: 600; margin: 0 0 .75rem; display: flex; align-items: center; gap: .5rem; }
.badm-comp__best-count     { font-size: .8rem; font-weight: 400; color: var(--badm-text-muted); }
.badm-comp__best-card      { background: var(--badm-surface); border: 1px solid var(--badm-border); border-radius: 8px; overflow: hidden; display: flex; flex-direction: column; }
.badm-comp__best-img       { aspect-ratio: 1/1; background: #fff; display: flex; align-items: center; justify-content: center; border-bottom: 1px solid var(--badm-border); padding: .5rem; }
.badm-comp__best-img img   { max-width: 100%; max-height: 100%; object-fit: contain; }
.badm-comp__best-body      { padding: .65rem; flex: 1; display: flex; flex-direction: column; gap: .35rem; position: relative; }
.badm-comp__best-name      { font-size: .82rem; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.badm-comp__best-name a    { color: var(--badm-text); text-decoration: none; }
.badm-comp__best-name a:hover { color: var(--badm-primary); text-decoration: underline; }
.badm-comp__best-meta      { display: flex; align-items: center; gap: .65rem; font-size: .78rem; color: var(--badm-text-muted); margin-top: auto; }
.badm-comp__best-price     { font-weight: 600; color: var(--badm-text); }
.badm-comp__best-badge     { display: inline-block; font-size: .65rem; font-weight: 700; padding: .15rem .4rem; border-radius: 4px; background: var(--badm-gray-200); color: var(--badm-gray-700); margin-right: .3rem; margin-bottom: .2rem; }
.badm-comp__best-badge--top { background: var(--badm-warning); color: var(--badm-warning-text); }
.badm-comp__best-badge--new { background: var(--badm-success); color: var(--badm-success-text); }
.badm-comp__best-badge--gone { background: var(--badm-danger); color: var(--badm-danger-text); }
.badm-comp__best-card--inactive { opacity: .5; }
.badm-comp__best-brand { font-size: .7rem; background: var(--badm-gray-200); padding: .1rem .35rem; border-radius: 3px; color: var(--badm-gray-500); }

/* SimilarWeb top 3 highlight – per-column ranking v prehledove tabulce (jen Navstevy) */
.badm-sw__rank-1 { background: var(--badm-warning-bg); color: var(--badm-warning-text); font-weight: 600; }
.badm-sw__rank-2 { background: var(--badm-gray-100); color: var(--badm-gray-700); font-weight: 600; }
.badm-sw__rank-3 { background: var(--badm-primary-light); color: var(--badm-warning-text); font-weight: 600; }

/* responzivni breakpointy pro comp gridy presunuto do badm-card-grid */

/* ═══════════════════════════════════════
   KPI Prehled – porovnavaci grid (badm-kpi-grid)
   ═══════════════════════════════════════ */
.badm-kpi-grid { overflow-x: auto; margin-bottom: var(--badm-gap); background: var(--badm-surface); border: 1px solid var(--badm-border); border-radius: var(--badm-radius); }
.badm-kpi-grid table { width: 100%; border-collapse: collapse; }
.badm-kpi-grid__corner { width: 100px; border: none; }
.badm-kpi-grid__period { text-align: center; padding: 14px 8px 6px; border-left: 1px solid var(--badm-border); }
.badm-kpi-grid__period-name { font-size: 1rem; font-weight: 700; color: var(--badm-gray-900); }
.badm-kpi-grid__period-range { font-size: .72rem; color: var(--badm-gray-400); margin-top: 2px; }
.badm-kpi-grid__legend td { text-align: center; padding: 0 8px 8px; border-left: 1px solid var(--badm-border); border-bottom: 2px solid var(--badm-border); }
.badm-kpi-grid__legend-cols { display: flex; justify-content: space-around; font-size: .68rem; color: var(--badm-gray-400); text-transform: uppercase; letter-spacing: .3px; }
.badm-kpi-grid__label { font-size: .82rem; font-weight: 600; color: var(--badm-gray-700); padding: 12px 14px; white-space: nowrap; vertical-align: middle; border-bottom: 1px solid var(--badm-gray-100); }
.badm-kpi-grid__cell { text-align: center; padding: 10px 12px; border-left: 1px solid var(--badm-border); border-bottom: 1px solid var(--badm-gray-100); vertical-align: top; min-width: 200px; }
.badm-kpi-grid__value { font-size: 18px; font-weight: 700; color: var(--badm-gray-900); }
.badm-kpi-grid__value-pct { display: block; font-size: .85rem; font-weight: 600; color: var(--badm-gray-500); margin-bottom: 2px; }
.badm-kpi-grid__comp { display: flex; justify-content: space-between; gap: 8px; margin-top: 6px; }
.badm-kpi-grid__side { flex: 1; text-align: center; }
.badm-kpi-grid__side .badm-table__delta { display: block; font-size: .78rem; margin-bottom: 2px; }
.badm-kpi-grid__abs { display: block; font-size: .72rem; color: var(--badm-gray-700); white-space: nowrap; }
.badm-kpi-grid__abs-pct { color: var(--badm-gray-500); }
.badm-kpi-grid__abs-sep { color: var(--badm-gray-400); margin: 0 2px; }
.badm-kpi-grid__empty { color: var(--badm-gray-300); font-size: .85rem; padding: 16px 0; }
.badm-kpi-grid__expandable { cursor: pointer; }
.badm-kpi-grid__arrow { font-size: .65rem; color: var(--badm-gray-400); transition: transform .15s; margin-right: 2px; }
.badm-kpi-grid__expandable.is-open .badm-kpi-grid__arrow { transform: rotate(90deg); }
.badm-kpi-grid__sub .badm-kpi-grid__label { padding-left: 28px; }
.badm-kpi-grid__sub .badm-kpi-grid__value { font-size: .95rem; font-weight: 600; }
.badm-kpi-grid__sub td { background: var(--badm-gray-50); }
.badm-kpi-grid__country-indent { font-weight: 500; color: var(--badm-gray-500); }

/* ═══════════════════════════════════════
   KPI Objednavky (badm-orders)
   ═══════════════════════════════════════ */
/* badm-card, badm-orders-duo, badm-orders-stat* migrovano na badm-card / badm-half-grid / badm-box (viz hlavni blok) */
.badm-orders-deltas { margin-top: 10px; display: flex; gap: 6px; }
.badm-orders-icon { width: 24px; height: 24px; vertical-align: middle; margin-right: 4px; object-fit: contain; }

/* badm-cust-seg*, badm-comm-duo – migrovano na badm-half-grid / badm-card / badm-badge */

/* ═══════════════════════════════════════
   P&L Dashboard (badm-pnl)
   ═══════════════════════════════════════ */

.badm-pnl { position: relative; }
.badm-pnl__table { width: max-content; min-width: 100%; border-collapse: collapse; font-size: .82rem; white-space: nowrap; table-layout: fixed; }
.badm-pnl__table th,
.badm-pnl__table td { padding: 5px 10px; border-bottom: 1px solid var(--badm-border); }
.badm-pnl__table thead th { background: var(--badm-surface); font-weight: 600; font-size: .75rem; color: var(--badm-gray-500); text-transform: uppercase; letter-spacing: .3px; position: sticky; top: 0; z-index: 2; }

/* Sirky sloupcu */
.badm-pnl__sticky { position: sticky; left: 0; z-index: 1; background: var(--badm-surface); width: 190px; min-width: 190px; }
.badm-pnl__month { width: 95px; min-width: 95px; }
.badm-pnl__year { width: 105px; min-width: 105px; }
.badm-pnl__total { width: 105px; min-width: 105px; }
.badm-pnl__table thead .badm-pnl__sticky { z-index: 3; }

/* Labely */
.badm-pnl__label { font-weight: 500; }
.badm-pnl__label--child { padding-left: 28px; font-weight: 400; color: var(--badm-gray-500); font-size: .78rem; }
.badm-pnl__label--subchild { padding-left: 48px; font-weight: 400; color: var(--badm-gray-400); font-size: .75rem; }

/* Sipka pro expand */
.badm-pnl__arrow { display: inline-block; width: 14px; margin-right: 2px; cursor: pointer; color: var(--badm-gray-400); transition: transform .15s; }
[data-pnl-toggle] { cursor: pointer; }
[data-pnl-toggle]:hover .badm-pnl__sticky { background: var(--badm-gray-50); }
.badm-pnl__table tbody tr:not(.badm-pnl__row--subtotal):not(.badm-pnl__row--total):hover { background: var(--badm-gray-50); }
.badm-pnl__table tbody tr:not(.badm-pnl__row--subtotal):not(.badm-pnl__row--total):hover .badm-pnl__sticky { background-color: var(--badm-gray-50); }

/* Typy radku */
.badm-pnl__row--income td { color: var(--badm-success-text); }
.badm-pnl__row--income .badm-pnl__label { color: var(--badm-gray-900); }
.badm-pnl__row--expense td { color: var(--badm-danger); }
.badm-pnl__row--expense .badm-pnl__label { color: var(--badm-gray-900); }
.badm-pnl__row--adjustment td { color: var(--badm-warning-text); }
.badm-pnl__row--adjustment .badm-pnl__label { color: var(--badm-gray-900); }
.badm-pnl__row--info td { color: var(--badm-gray-500); font-style: italic; }
.badm-pnl__row--income-minor td { color: var(--badm-success-text); }
.badm-pnl__row--income-minor .badm-pnl__label { color: var(--badm-gray-900); }
.badm-pnl__row--computed td { color: var(--badm-gray-500); }

.badm-pnl__row--subtotal { background: var(--badm-gray-100); }
.badm-pnl__row--subtotal td { font-weight: 600; color: var(--badm-gray-700); border-top: 2px solid var(--badm-gray-300); }
.badm-pnl__row--subtotal .badm-pnl__sticky { background: var(--badm-gray-100); }

.badm-pnl__row--total { background: var(--badm-inverse-bg); }
.badm-pnl__row--total td { font-weight: 700; color: var(--badm-inverse-text); border-top: 2px solid var(--badm-gray-700); }
.badm-pnl__row--total .badm-pnl__sticky { background: var(--badm-inverse-bg); color: var(--badm-inverse-text); }

.badm-pnl__row--pct td { font-size: .75rem; color: var(--badm-gray-500); font-style: italic; }

.badm-pnl__row--kpi { border-top: 2px solid var(--badm-gray-200); }
.badm-pnl__row--kpi td { color: var(--badm-gray-500); font-size: .78rem; }

/* Rocni a celkove sloupce */
.badm-pnl__year { background: var(--badm-bg); font-weight: 600; }
.badm-pnl__table thead .badm-pnl__year { background: var(--badm-gray-100); }
.badm-pnl__total { background: var(--badm-info-bg); font-weight: 700; }
.badm-pnl__table thead .badm-pnl__total { background: var(--badm-info-bg); }

/* Subtotal/total override pro year/total sloupce */
.badm-pnl__row--subtotal .badm-pnl__year { background: var(--badm-gray-200); }
.badm-pnl__row--subtotal .badm-pnl__total { background: var(--badm-info-bg); }
.badm-pnl__row--total .badm-pnl__year { background: var(--badm-inverse-surface); }
.badm-pnl__row--total .badm-pnl__total { background: #1e3a5f; }

/* Editovatelne bunky v P&L tabulce */
.badm-pnl__cell--editable { cursor: pointer; position: relative; }
.badm-pnl__cell--editable:hover { background: var(--badm-warning-bg); }
.badm-pnl__child--editable td:first-child { font-style: normal; }
.badm-pnl__input {
    width: 100%; padding: 2px 4px; border: 1px solid var(--badm-info);
    border-radius: 3px; font-size: .78rem; text-align: right;
    outline: none; background: var(--badm-surface); box-sizing: border-box;
    -moz-appearance: textfield;
}
.badm-pnl__input::-webkit-outer-spin-button,
.badm-pnl__input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.badm-pnl__input:focus { box-shadow: 0 0 0 2px rgba(59,130,246,.3); }

/* Forecast bunky */
.badm-pnl__cell--forecast { color: var(--badm-info) !important; }
.badm-pnl__cell--has-forecast { color: var(--badm-info) !important; }

/* Edit wrapper (input + checkbox odhad) */
.badm-pnl__edit-wrap { display: flex; flex-direction: column; gap: 2px; }
.badm-pnl__forecast-label { display: flex; align-items: center; gap: 3px; font-size: .68rem; color: var(--badm-gray-400); cursor: pointer; white-space: nowrap; user-select: none; }
.badm-pnl__forecast-check { width: 12px; height: 12px; margin: 0; cursor: pointer; }

/* ── Video Feed ─────────────────────────────────────────── */
.badm-crv-feed__actions { display: flex; justify-content: space-between; align-items: center; margin: 1rem 0; flex-wrap: wrap; gap: .5rem; }
.badm-crv-feed__stats { color: var(--badm-text-muted); font-size: .9rem; }
.badm-crv-feed__btns { display: flex; gap: .5rem; }
.badm-crv-feed__table { table-layout: fixed; }
/* Mobil: fixed layout cpe 9 sloupcu do viewportu a obsah (vc. nowrap z globalniho
   mobil pravidla) pretece/prekryva sousedni bunky. Auto layout → sloupce dle obsahu,
   tabulka scrolluje vodorovne (stejne jako .badm-nl__plan-table). */
@media (max-width: 640px) {
    .badm-table-wrap .badm-crv-feed__table { table-layout: auto; width: auto; min-width: 100%; }
}
.badm-crv-feed__thumb { width: 40px; height: 40px; object-fit: cover; border-radius: 4px; }
.badm-crv-feed__pill {
    display: inline-block; padding: 2px 8px; border-radius: 10px;
    font-size: .75rem; font-weight: 600; text-align: center; min-width: 36px;
}
.badm-crv-feed__pill--done { background: var(--badm-success-bg); color: var(--badm-success-text); }
.badm-crv-feed__pill--pending { background: var(--badm-gray-100); color: var(--badm-gray-500); }
.badm-crv-feed__pill--submitted,
.badm-crv-feed__pill--processing { background: var(--badm-warning-bg); color: var(--badm-warning-text); animation: badm-pulse 1.5s ease-in-out infinite; }
.badm-crv-feed__pill--failed { background: var(--badm-danger-bg); color: var(--badm-danger-text); cursor: help; }
@keyframes badm-pulse { 0%,100% { opacity: 1; } 50% { opacity: .5; } }

/* ── Tvoric ────────────────────────────────────────────── */

/* Formular novy brainstorming */
.badm-tvoric__new-batch { background: var(--badm-surface); border: 1px solid var(--badm-border); border-radius: var(--badm-radius); padding: var(--badm-gap); }
.badm-tvoric__new-batch h3 { margin: 0 0 12px; font-size: 13px; font-weight: 600; }
.badm-tvoric__form-row { display: flex; gap: 1rem; margin-bottom: .75rem; }
.badm-tvoric__field { flex: 1; }
.badm-tvoric__field--main { flex: 2; }
.badm-tvoric__batch-link { color: var(--badm-text); text-decoration: none; }
.badm-tvoric__batch-link:hover { color: var(--badm-primary); }
.badm-tvoric__batch-actions { display: flex; gap: .25rem; justify-content: flex-end; }

/* Batch info bar */
.badm-tvoric__batch-info { display: flex; justify-content: space-between; align-items: center; margin-bottom: .75rem; padding: .5rem .75rem; background: var(--badm-surface); border: 1px solid var(--badm-border); border-radius: 6px; }

/* Kreativni brief */
.badm-tvoric__brief { margin-bottom: 1rem; border: 1px solid var(--badm-border); border-radius: 6px; background: var(--badm-surface); }
.badm-tvoric__brief-toggle { padding: .5rem .75rem; cursor: pointer; font-size: .85rem; font-weight: 500; color: var(--badm-text-muted); list-style: none; }
.badm-tvoric__brief-toggle::-webkit-details-marker { display: none; }
.badm-tvoric__brief-toggle::before { content: '\f0da'; font-family: 'Font Awesome 6 Free'; font-weight: 900; margin-right: .5rem; transition: transform .2s; display: inline-block; }
.badm-tvoric__brief[open] > .badm-tvoric__brief-toggle::before { transform: rotate(90deg); }
.badm-tvoric__brief-toggle i { margin-right: .35rem; }
.badm-tvoric__brief-body { padding: 0 .75rem .75rem; font-size: .85rem; }
.badm-tvoric__brief-section { margin-bottom: .5rem; }
.badm-tvoric__brief-section:last-child { margin-bottom: 0; }
.badm-tvoric__brief-tags { display: flex; flex-wrap: wrap; gap: .25rem; margin-top: .25rem; }
.badm-tvoric__brief-tag { display: inline-block; padding: .1rem .4rem; border-radius: 3px; font-size: .75rem; background: var(--badm-info-bg); color: var(--badm-info-text); }
.badm-tvoric__brief-tag--wp { background: var(--badm-warning-bg); color: var(--badm-warning-text); }
.badm-tvoric__brief-tag--ref { background: var(--badm-purple-bg); color: var(--badm-purple-text); }
.badm-tvoric__brief-tag--prop { background: var(--badm-success-bg); color: var(--badm-success-text); }
.badm-tvoric__brief-wp-group { margin: .25rem 0; }
.badm-tvoric__brief-log-wrap { margin-top: .5rem; }
.badm-tvoric__brief-log { background: var(--badm-bg); padding: .5rem; border-radius: 4px; font-size: .75rem; max-height: 300px; overflow-y: auto; white-space: pre-wrap; word-break: break-word; margin-top: .25rem; }

/* Grid karet konceptu */
/* badm-tvoric__grid migrovano na badm-card-grid */

/* Karta konceptu */
.badm-tvoric__card { background: var(--badm-surface); border: 1px solid var(--badm-border); border-radius: var(--badm-radius); padding: var(--badm-gap); display: flex; flex-direction: column; gap: .5rem; transition: border-color .2s; }
.badm-tvoric__card--approved { border-color: var(--badm-success); border-width: 2px; }
.badm-tvoric__card--rejected { opacity: .5; border-color: var(--badm-danger); }
.badm-tvoric__card--generating { border-color: var(--badm-warning); animation: badm-pulse 1.5s ease-in-out infinite; }

.badm-tvoric__card-head { display: flex; justify-content: space-between; align-items: flex-start; gap: .5rem; }
.badm-tvoric__card-name { font-weight: 600; font-size: .95rem; line-height: 1.3; }

/* Score badge */
.badm-tvoric__score { display: inline-flex; align-items: center; justify-content: center; min-width: 36px; height: 24px; border-radius: 12px; font-size: .75rem; font-weight: 700; flex-shrink: 0; }
.badm-tvoric__score--high { background: var(--badm-success-bg); color: var(--badm-success-text); }
.badm-tvoric__score--mid { background: var(--badm-warning-bg); color: var(--badm-warning-text); }
.badm-tvoric__score--low { background: var(--badm-gray-100); color: var(--badm-gray-500); }

/* Styl dropdown */
.badm-tvoric__card-style { }
.badm-tvoric__style-select { width: 100%; }

/* Text na triku */
.badm-tvoric__card-text { font-style: italic; color: var(--badm-text); font-size: .9rem; }

/* Vizualni popis */
.badm-tvoric__card-desc { font-size: .85rem; color: var(--badm-text-muted); line-height: 1.4; }
.badm-tvoric__card-more { background: none; border: none; color: var(--badm-primary); cursor: pointer; font-size: .8rem; padding: 0; text-decoration: underline; }

/* Obrazek */
.badm-tvoric__card-img {
    background: repeating-conic-gradient(var(--badm-gray-200) 0% 25%, var(--badm-surface) 0% 50%) 50% / 16px 16px;
    border-radius: 6px; overflow: hidden; min-height: 180px; display: flex; align-items: center; justify-content: center;
}
.badm-tvoric__card-img img { max-width: 100%; max-height: 300px; object-fit: contain; }

/* Akce */
.badm-tvoric__card-actions { display: flex; gap: .5rem; align-items: center; margin-top: auto; padding-top: .25rem; }
.badm-tvoric__card-edit-row { margin-top: .25rem; }
.badm-tvoric__card-desc-edit { width: 100%; font-size: .85rem; resize: vertical; }
.badm-tvoric__card--editing .badm-tvoric__card-text-edit { width: 100%; }

/* Nastaveni: modely grid */
.badm-tvoric__models-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: .75rem; }

/* Nastaveni: styl karty */
.badm-tvoric__style-card { background: var(--badm-bg); border: 1px solid var(--badm-border); border-radius: 6px; padding: .75rem; margin-bottom: .75rem; }
.badm-tvoric__style-card-row { display: flex; gap: .75rem; align-items: flex-start; margin-bottom: .5rem; }
.badm-tvoric__style-remove-wrap { flex: 0 0 auto; margin-bottom: 0; }

/* ══════════════════════════════════════════════════════════
   Google Campaigns breakdown tab
   ══════════════════════════════════════════════════════════ */
.badm-gc__th-period { white-space: nowrap; }
.badm-gc__th-seg { white-space: nowrap; font-size: .82rem; min-width: 80px; cursor: pointer; }
.badm-gc__th-seg:hover { color: var(--badm-gray-700); }
.badm-gc__td-period { white-space: nowrap; font-size: .82rem; }
.badm-gc__td-metric { white-space: nowrap; font-size: .82rem; color: var(--badm-text-muted); }
.badm-gc__td-num { font-variant-numeric: tabular-nums; font-size: .82rem; white-space: nowrap; }
.badm-gc__td--warn { color: var(--badm-danger); font-weight: 600; }

/* Detail segmenty (non-Celkem) – muted jako porovnavaci sloupce v rek. systemech */
#gcCampaignTable .badm-gc__th-seg:not(.badm-table__divider) { color: var(--badm-text-muted); font-weight: 400; font-size: 11px; }
#gcCampaignTable .badm-gc__td-num:not(.badm-table__divider) { color: var(--badm-text-muted); font-size: 11px; }
#gcCampaignTable .badm-gc__td-num:not(.badm-table__divider) strong { color: var(--badm-text-muted); font-size: 11px; }
#gcCampaignTable .badm-gc__td-num.badm-gc__td--warn { color: var(--badm-danger); }
/* Zakladni (Celkem) segmenty – tucne pro zvyrazneni */
#gcCampaignTable .badm-gc__td-num.badm-table__divider { font-weight: 600; }

/* Skupinove barvy v zahlavi */
.badm-gc__group--neutral { border-color: var(--badm-gray-500); background-color: rgba(107, 114, 128, 0.04); }
.badm-gc__group--brand   { border-color: var(--badm-warning-text); background-color: rgba(217, 119, 6, 0.04); }
.badm-gc__group--vp      { border-color: var(--badm-success); background-color: rgba(22, 163, 74, 0.04); }
.badm-gc__group--ost     { border-color: var(--badm-info); background-color: rgba(37, 99, 235, 0.04); }
.badm-gc__group--extra   { border-color: var(--badm-indigo); background-color: rgba(99, 102, 241, 0.04); }

/* Oddeleni periody – silnejsi cara nad prvnim radkem obdobi (td kvuli border-collapse precedenci) */
.badm-gc__period-first td { border-top: 2px solid var(--badm-gray-400); }
#gcCampaignTable tfoot .badm-gc__period-first td { border-top: 3px solid var(--badm-gray-500); }

/* Info panel (segment definitions) */
.badm-gc__info { margin-top: 1.5rem; border: 1px solid var(--badm-border); border-radius: var(--badm-radius); }
.badm-gc__info-title { padding: .75rem 1rem; cursor: pointer; font-weight: 500; font-size: .9rem; color: var(--badm-text-muted); }
.badm-gc__info-title i { margin-right: .4rem; }
.badm-gc__info-body { padding: 0 1rem 1rem; }
.badm-gc__info-body p { margin-bottom: .75rem; font-size: .85rem; color: var(--badm-text-muted); }
.badm-gc__info-table td:first-child { width: 180px; white-space: nowrap; }

/* Override mkt table right-align – GC tab pouziva left-align jako analytics */
#gcCampaignTable td,
#gcCampaignTable th { text-align: left; }
#gcCampaignTable .badm-gc__td-num { font-variant-numeric: tabular-nums; }

/* ── Sdileny collapse pattern ──────────────────────────── */
.badm-collapse__header {
    cursor: pointer;
    user-select: none;
    display: flex;
    align-items: center;
    gap: .4rem;
}
.badm-collapse__header:hover { color: var(--badm-primary); }
.badm-collapse__chevron {
    font-size: .7rem;
    transition: transform .2s;
    width: 14px;
    text-align: center;
}
.badm-collapse__chevron.is-collapsed { transform: rotate(-90deg); }
.badm-collapse__body.is-collapsed { display: none; }

/* ── Tabulka – fixed layout modifikator ───────────────── */
.badm-table--fixed { table-layout: fixed; }

/* ── Checkbox grid (filtry s hodne checkboxu) ─────────── */
.badm-checkbox-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 4px 12px;
    padding: 4px 0;
}

/* ── Replenishment – modul-specificke ─────────────────── */
/* Add-radky (ZID/poznamka/Pridat, nahrada produktu) maji inline display:flex bez
   wrapu – na uzkem viewportu pretekaji. Na mobilu zalomit pod sebe. */
@media (max-width: 640px) {
    #replSubstAdd, #replExclAdd { flex-wrap: wrap; }
}

/* Vyber druhu a kategorii migrovan na sdileny .badm-chipset (viz nahore) */

.badm-repl__table td:first-child { white-space: nowrap; }
.badm-repl__vel-cell {
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    padding-left: 4px !important;
    padding-right: 4px !important;
}
.badm-repl__vel-obj { color: var(--badm-success); font-weight: 600; display: block; font-size: .75rem; }
.badm-repl__vel-obj--zero { color: var(--badm-text-muted); font-weight: 400; }
.badm-repl__mape { font-size: .7rem; margin-left: .3rem; padding: 1px 5px; border-radius: var(--badm-radius); cursor: help; }
.badm-repl__mape--good { color: var(--badm-success); background: rgba(34,197,94,.08); }
.badm-repl__mape--ok { color: var(--badm-warning); background: rgba(234,179,8,.08); }
.badm-repl__mape--bad { color: var(--badm-danger); background: rgba(239,68,68,.08); }

/* Alerty – mini rozpad velikosti (klicove tucne, vyprodane cervene) */
.badm-repl__alert-sizes { display: inline-flex; flex-wrap: wrap; gap: 2px 8px; }
.badm-repl__alert-size {
    font-size: 11px;
    color: var(--badm-text-muted);
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
    cursor: help;
}
.badm-repl__alert-size--core { color: var(--badm-text); font-weight: 600; }
.badm-repl__alert-size--zero { color: var(--badm-danger); }

/* ── SimilarWeb tabulka ────────────────────────────── */
.badm-sw__comp-first td { border-top: 2px solid var(--badm-gray-400); }

/* ── Product cell – produkt v tabulce (obrazek + info) ── */
.badm-product-cell {
    display: flex;
    gap: 10px;
    align-items: center;
}
.badm-product-cell__img {
    width: 68px;
    height: 68px;
    border-radius: 4px;
    object-fit: contain;
    flex-shrink: 0;
}

/* ── Img preview – sdilena lupa (hover popup) ────────────── */
/* Pouziti: <img class="badm-img-preview" data-preview-src="URL" data-preview-name="nazev"> */
/* JS v main.js vytvori popup a zobrazi ho pod obrazkem pri hoveru. */
/* Pokud data-preview-src chybi, pouzije se img.src. */
.badm-img-preview { cursor: zoom-in; }
.badm-img-preview-popup {
    position: absolute;
    z-index: 800;
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    box-shadow: 0 8px 24px rgba(0,0,0,.15);
    padding: .5rem;
    max-width: 320px;
    text-align: center;
}
.badm-img-preview-popup img {
    width: 300px;
    height: 300px;
    object-fit: contain;
    display: block;
    margin: 0 auto;
}
.badm-img-preview-popup__name {
    font-size: .75rem;
    color: var(--badm-text-muted);
    margin-top: .35rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.badm-product-cell__icon {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    opacity: .6;
}
/* Zastupny obdelnik misto obrazku (vzor z ai_pozadavky) – pro radky, ktere
   nejsou zbozi: prodlouzena lhuta, darky. Sirku ma jako obrazek produktu,
   aby nazev licoval s nazvy zbozi, ale je vysoky jen na JEDEN radek. */
.badm-product-cell__noimg {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    width: 68px;
    height: 22px;
    flex-shrink: 0;
    border: 1px dashed var(--badm-border);
    border-radius: 4px;
    color: var(--badm-text-muted);
    font-size: 10px;
}
.badm-product-cell__info {
    min-width: 0;
}
.badm-product-cell__name {
    font-weight: 600;
    font-size: .85rem;
    line-height: 1.3;
    color: var(--badm-text);
    text-decoration: none;
}
.badm-product-cell__name:hover { text-decoration: underline; }
a.badm-product-cell__name { color: var(--badm-primary); }
.badm-product-cell__meta {
    font-size: .72rem;
    color: var(--badm-text-muted);
    line-height: 1.3;
    margin-top: 1px;
}
.badm-product-cell__return { color: var(--badm-danger); font-weight: 600; }
.badm-product-cell__jobs { display: flex; flex-wrap: wrap; gap: 3px; margin-top: 4px; }

/* Dual obrazek – rotace hrud/zada (fade in/out) */
.badm-product-cell__dual {
    position: relative;
    display: inline-block;
    width: 68px;
    height: 68px;
    flex-shrink: 0;
    cursor: zoom-in;
}
.badm-product-cell__dual .badm-product-cell__img {
    position: absolute;
    top: 0; left: 0;
}
.badm-product-cell__rotate-a {
    animation: badmRotateImg 4s ease-in-out infinite;
}
.badm-product-cell__rotate-b {
    animation: badmRotateImg 4s ease-in-out infinite;
    animation-delay: 2s;
    opacity: 0;
}
@keyframes badmRotateImg {
    0%, 40% { opacity: 1; }
    50%, 90% { opacity: 0; }
    100% { opacity: 1; }
}
.badm-product-cell__meta-link { color: var(--badm-text-muted); text-decoration: none; }
.badm-product-cell__meta-link:hover { color: var(--badm-text); }

/* ═══════════════════════════════════════════════════════════════
   PLANOVAC KAMPANI – gantt a mockup styly (Faze 0)
   ═══════════════════════════════════════════════════════════════ */

/* ── Toolbar s prepinacem roku + legendou ── */
.badm-plan__toolbar {
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
}
.badm-plan__year-switch { display: flex; align-items: center; gap: 6px; }
.badm-plan__legend-item { display: inline-flex; align-items: center; gap: 6px; }

/* ── Tabulka: ikony kanalu ── */
/* Ikony kanalu – wrapper s flex layoutem zaruci, ze jsou vzdy zleva */
td.badm-plan__channel-icons,
th.badm-plan__channel-icons {
    padding-left: 0;
}
td.badm-plan__channel-icons {
    font-size: 13px;
    color: var(--badm-text-muted);
    line-height: 1;
    vertical-align: middle;
}
.badm-plan__channel-icons__wrap {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    gap: 10px;
}
.badm-plan__channel-icons__wrap > i {
    width: 16px;
    text-align: center;
    flex-shrink: 0;
}

/* Tag small varianta */
.badm-tag--sm {
    padding: 1px 6px;
    font-size: 10px;
    margin-right: 2px;
}

/* ── Tab udalosti: 2-sloupcovy grid ── */
.badm-plan__events-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}
@media (max-width: 1100px) {
    .badm-plan__events-grid { grid-template-columns: 1fr; }
}
/* min-width:0 – aby tabulka udalosti (byt v .badm-table-wrap) neroztahla 1fr track
   pres sirku gridu a nepretekla stranku vodorovne */
.badm-plan__events-grid > * { min-width: 0; }

/* ── Vertikalni kalendar (per-tyden radky) ── */
.badm-plan-v {
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    overflow: hidden;
    font-size: 13px;
}
.badm-plan-v__header,
.badm-plan-v__row {
    display: grid;
    grid-template-columns: 160px 200px 1fr;
    border-bottom: 1px solid var(--badm-border);
}
.badm-plan-v__row:last-child { border-bottom: none; }
.badm-plan-v__header {
    background: var(--badm-bg);
    font-weight: 600;
    font-size: 12px;
    color: var(--badm-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    position: sticky;
    top: 0;
    z-index: 2;
}
.badm-plan-v__header > div {
    padding: 10px 12px;
    border-right: 1px solid var(--badm-border);
}
.badm-plan-v__header > div:last-child { border-right: none; }

.badm-plan-v__col-week,
.badm-plan-v__col-ctx,
.badm-plan-v__col-camp {
    padding: 10px 12px;
    border-right: 1px solid var(--badm-border);
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.badm-plan-v__col-camp { border-right: none; }

/* Mobil: 7denni timeline se nevejde – misto orezani umoznit vodorovny scroll.
   min-width drzi sloupce ctitelne (160+200 + ~320 na timeline). */
@media (max-width: 860px) {
    .badm-plan-v { overflow-x: auto; }
    .badm-plan-v__header,
    .badm-plan-v__row { min-width: 680px; }
}

/* Dnesni tyden – jen levy oranzovy pruh (background by koldidoval s barvou kampane "V pripave") */
.badm-plan-v__row--today { box-shadow: inset 3px 0 0 var(--badm-primary); }

/* Timeline sloupec Kampane = 7-denni grid (po-ne) */
.badm-plan-v__timeline {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    grid-template-rows: repeat(var(--tracks, 1), minmax(28px, auto));
    gap: 3px;
    padding: 6px 8px;
}

/* ── Fronta automatizaci: overlay naplanovanych prispevku v kalendari ──
   Zapina se togglem "Zobrazit prispevky na socky" (trida .is-show-posts na .badm-plan-v).
   7-denni grid zarovnany na stejne dny jako .badm-plan-v__timeline. */
.badm-plan-v__posts { display: none; }
.badm-plan-v.is-show-posts .badm-plan-v__posts {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 3px;
    padding: 2px 8px 6px;
    border-top: 1px dashed var(--badm-border);
}
/* min-width:0 – aby denni bunka smela zmensit pod sirku obsahu (jinak dlouhy popisek
   roztahne 1fr track a rozbije zarovnani karet pod dny) */
.badm-plan-v__day-posts {
    display: flex; flex-direction: column; align-items: stretch;
    gap: 5px; min-height: 20px; min-width: 0;
}
/* karta prispevku = vodorovna: nahled vlevo, cas + flow vpravo; klik otevre run-detail modal */
.badm-plan-v__post {
    position: relative; cursor: pointer;
    display: flex; flex-direction: row; align-items: center; gap: 7px;
    width: 100%; min-width: 0; text-align: left;
    padding: 2px; border-radius: 6px;
}
.badm-plan-v__post:hover { background: var(--badm-bg); }
/* thumb = pozicni kontext bez orezu (aby badge v rohu prekryl stroke); orezava az inner wrapper */
.badm-plan-v__post-thumb {
    position: relative; display: block; flex: 0 0 auto;
    width: 40px; height: 40px;
}
.badm-plan-v__post-thumb-img {
    display: block; width: 100%; height: 100%;
    border-radius: 5px; overflow: hidden;
    border: 2px solid var(--badm-border);
    background: var(--badm-surface-2, #2a2a2a);
}
.badm-plan-v__post-thumb-img img,
.badm-plan-v__post-thumb-img video { width: 100%; height: 100%; object-fit: cover; display: block; }
/* placeholder pro nepripravene runy (jeste bez kreativy) */
.badm-plan-v__post-ph {
    display: block; width: 100%; height: 100%;
    background: repeating-linear-gradient(45deg,
        var(--badm-surface-2, #2a2a2a), var(--badm-surface-2, #2a2a2a) 5px,
        var(--badm-bg) 5px, var(--badm-bg) 10px);
}
.badm-plan-v__post-meta { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1 1 auto; }
.badm-plan-v__post-time { font-size: 11px; line-height: 1.2; font-weight: 700; color: var(--badm-text); }
.badm-plan-v__post-flow {
    font-size: 10px; line-height: 1.15; color: var(--badm-text-muted);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* maly stitek trhu (CZ/SK/HU) za nazvem – badge trh neukazuje */
.badm-plan-v__post-mk {
    display: inline-block; font-size: 8px; font-weight: 700; letter-spacing: .3px;
    color: var(--badm-text-muted); border: 1px solid var(--badm-border);
    border-radius: 3px; padding: 0 3px; vertical-align: middle;
}
/* stav = barva prstence na nahledu (border na inner wrapperu) */
.badm-plan-v__post--published  .badm-plan-v__post-thumb-img { border-color: var(--badm-success, #22c55e); }
.badm-plan-v__post--ready      .badm-plan-v__post-thumb-img { border-color: var(--badm-text-muted); }
.badm-plan-v__post--pending    .badm-plan-v__post-thumb-img,
.badm-plan-v__post--preparing  .badm-plan-v__post-thumb-img { border-color: var(--badm-text-muted); border-style: dotted; }
.badm-plan-v__post--publishing .badm-plan-v__post-thumb-img { border-color: var(--badm-warning, #f59e0b); }
.badm-plan-v__post--failed     .badm-plan-v__post-thumb-img { border-color: var(--badm-danger, #ef4444); }
/* rohovy badge v samotnem rohu nahledu – zaporny offset prekryje i stavovy stroke;
   surface halo cine cisty rez do prstence. Barva = platforma (brand barvy – vyjimka
   dle styles.md), ikona = format. */
.badm-plan-v__post-ch {
    position: absolute; right: -3px; bottom: -3px;
    width: 15px; height: 15px; border-radius: 4px;
    display: flex; align-items: center; justify-content: center;
    color: #fff; box-shadow: 0 0 0 1.5px var(--badm-surface);
}
.badm-plan-v__post:hover .badm-plan-v__post-ch { box-shadow: 0 0 0 1.5px var(--badm-bg); }
.badm-plan-v__post-ch i { font-size: 8.5px; line-height: 1; }
.badm-plan-v__post--fb .badm-plan-v__post-ch { background: #1877f2; }
.badm-plan-v__post--ig .badm-plan-v__post-ch { background: #f97316; }
.badm-plan-v__post--yt .badm-plan-v__post-ch { background: #ff0000; }

/* Den-of-week header nad sloupcem Kampane */
.badm-plan-v__dow {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 3px;
    font-size: 10px;
    font-weight: 600;
    color: var(--badm-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.badm-plan-v__dow > span {
    text-align: center;
    padding: 0 2px;
}

.badm-plan-v__week-num { font-weight: 700; font-size: 14px; }
.badm-plan-v__week-range { color: var(--badm-text-muted); font-size: 11px; }
/* Meziroci historie – linky na kampane z minulych let ve stejnem ISO tydnu */
.badm-plan-v__history {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 6px;
    padding-top: 6px;
    border-top: 1px dashed var(--badm-border);
}
.badm-plan-v__history-link {
    display: flex;
    align-items: baseline;
    gap: 4px;
    font-size: 11px;
    line-height: 1.25;
    color: var(--badm-text-muted);
    text-decoration: none;
    padding: 1px 0;
}
.badm-plan-v__history-link:hover {
    color: var(--badm-primary);
}
.badm-plan-v__history-year {
    font-weight: 600;
    font-size: 10px;
    padding: 1px 4px;
    background: var(--badm-bg);
    border-radius: 3px;
    color: var(--badm-text-muted);
    flex-shrink: 0;
}
.badm-plan-v__history-name {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}

/* Sdileny label "dnes" (aktualni tyden) – pouziva Planovac (kalendar) i Newsletter (tabulka planu) */
.badm-plan-v__today-label,
.badm-today-label {
    margin-top: 2px;
    display: inline-block;
    align-self: flex-start;
    font-size: 10px;
    font-weight: 600;
    padding: 1px 6px;
    background: var(--badm-primary);
    color: var(--badm-on-accent);
    border-radius: 10px;
}

/* Event chip uvnitr kontextu */
.badm-plan-v__event {
    display: inline-flex;
    align-items: baseline;
    gap: 4px;
    padding: 3px 8px;
    border-radius: var(--badm-radius);
    font-size: 11px;
    line-height: 1.3;
    max-width: 100%;
    align-self: flex-start;
    box-sizing: border-box;
}
.badm-plan-v__event-name {
    white-space: normal;
    overflow-wrap: anywhere;
    flex: 1 1 auto;
    min-width: 0;
}
.badm-plan-v__event-icon {
    flex: 0 0 auto;
}
.badm-plan-v__event-date {
    flex: 0 0 auto;
}
.badm-plan-v__event--svatek { background: var(--badm-warning-bg); color: var(--badm-warning-text); }
.badm-plan-v__event--bastard { background: var(--badm-indigo-bg); color: var(--badm-indigo-text); }
.badm-plan-v__event--akce { background: var(--badm-success-bg); color: var(--badm-success-text); }
.badm-plan-v__event-icon { font-size: 13px; }
.badm-plan-v__event-date {
    font-size: 10px;
    opacity: 0.7;
    margin-left: 2px;
}

/* Timeline chip (siroky podle poctu dnu, pozice podle dne v tydnu) */
.badm-plan-v__chip {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 5px 8px;
    border-radius: var(--badm-radius);
    background: var(--badm-primary-light);
    border-left: 3px solid var(--badm-primary);
    text-decoration: none;
    color: var(--badm-text);
    font-size: 12px;
    line-height: 1.25;
    min-height: 40px;
    overflow: hidden;
    transition: transform 0.08s, box-shadow 0.08s;
    position: relative;
    z-index: 1;
}
.badm-plan-v__chip:hover {
    transform: translateY(-1px);
    box-shadow: 0 2px 6px rgba(0,0,0,0.08);
    z-index: 2;
}

.badm-plan-v__chip-row1 {
    display: flex;
    align-items: baseline;
    gap: 6px;
    white-space: nowrap;
    overflow: hidden;
    min-width: 0;
}
.badm-plan-v__chip-row2 {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 11px;
    color: var(--badm-text-muted);
    white-space: nowrap;
    overflow: hidden;
    min-width: 0;
}

.badm-plan-v__chip-name {
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
}
.badm-plan-v__chip-status {
    font-size: 11px;
    font-weight: 500;
    color: var(--badm-text-muted);
    flex-shrink: 0;
}
.badm-plan-v__chip-status::before {
    content: '· ';
    opacity: 0.6;
}

.badm-plan-v__chip-dates {
    font-variant-numeric: tabular-nums;
    flex-shrink: 0;
}
.badm-plan-v__flag { font-size: 12px; line-height: 1; }
.badm-plan-v__chip-markets { display: inline-flex; gap: 2px; flex-shrink: 0; }
.badm-plan-v__chip-channels {
    display: inline-flex;
    gap: 4px;
    opacity: 0.6;
    flex-shrink: 0;
}
.badm-plan-v__chip-disk {
    color: var(--badm-text-muted);
    font-size: 13px;
    margin-left: auto;
    padding: 1px 3px;
    border-radius: 3px;
    flex-shrink: 0;
    transition: color 0.1s, background 0.1s;
}
.badm-plan-v__chip-disk:hover {
    color: var(--badm-primary);
    background: rgba(255, 128, 20, 0.1);
}

/* "Pokracuje" konektory: bez zaobleni na hranach navazujicich radku */
.badm-plan-v__chip--continues {
    border-left: none;
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
    padding-left: 10px;
}
.badm-plan-v__chip-prefix {
    font-size: 12px;
    color: var(--badm-text-muted);
    opacity: 0.5;
    flex-shrink: 0;
}
.badm-plan-v__chip--ongoing {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}
.badm-plan-v__chip-continues {
    font-size: 12px;
    color: var(--badm-text-muted);
    opacity: 0.6;
    margin-left: auto;
    flex-shrink: 0;
}

/* Status varianty – pozadi + left border */
.badm-plan-v__chip--uzavreno    { background: var(--badm-success-bg); border-left-color: var(--badm-success); }
.badm-plan-v__chip--vyhodnoceni { background: var(--badm-gray-100); border-left-color: var(--badm-gray-500); }
.badm-plan-v__chip--nasazeni    { background: var(--badm-info-bg); border-left-color: var(--badm-info); }
.badm-plan-v__chip--priprava    { background: var(--badm-primary-light); border-left-color: var(--badm-primary); }
.badm-plan-v__chip--zadani      { background: var(--badm-warning-bg); border-left-color: var(--badm-warning); }
/* Narozeninova akce v timeline (misto Kontextu) – zeleny chip s 🎂 */
.badm-plan-v__chip--akce        { background: var(--badm-success-bg); border-left-color: var(--badm-success); }
.badm-plan-v__chip--akce .badm-plan-v__chip-name { color: var(--badm-success-text); font-weight: 600; }
/* Narozeninova akce jako radek v tabulkovem prehledu kampani – jemny zeleny akcent vlevo */
.badm-plan__action-row td:first-child { box-shadow: inset 3px 0 0 var(--badm-success); }

.badm-plan-v__empty {
    color: var(--badm-text-muted);
    font-size: 12px;
    opacity: 0.5;
    padding: 4px 0;
}

/* Range event chip – rozlisitelny od single (jemna barevnost) */
.badm-plan-v__event--range {
    opacity: 0.9;
}
.badm-plan-v__event--range.badm-plan-v__event--svatek {
    background: var(--badm-warning-bg);  /* svetlejsi varianta svatku */
}
.badm-plan-v__event--range.badm-plan-v__event--bastard {
    background: var(--badm-indigo-bg);  /* svetlejsi varianta bastard */
}
.badm-plan-v__event--range.badm-plan-v__event--akce {
    background: var(--badm-success-bg);
}

/* Primary button napravo v toolbar radku */
.badm-plan__toolbar-action {
    margin-left: auto;
}

/* Dropzone pro nahravani obrazku (drag/paste/browse) */
.badm-plan__dropzone {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 16px 12px;
    border: 2px dashed var(--badm-border);
    border-radius: var(--badm-radius);
    background: var(--badm-bg);
    color: var(--badm-text-muted);
    text-align: center;
    transition: border-color 0.15s, background 0.15s;
}
.badm-plan__dropzone.is-dragover {
    border-color: var(--badm-primary);
    border-style: solid;
    background: var(--badm-primary-light);
    color: var(--badm-primary);
}
.badm-plan__dropzone-icon {
    font-size: 28px;
    opacity: 0.5;
}
.badm-plan__dropzone-hint {
    display: flex;
    flex-direction: column;
    gap: 2px;
    font-size: 12px;
    line-height: 1.4;
}
.badm-plan__dropzone-hint strong {
    color: var(--badm-text);
    font-weight: 600;
}
.badm-plan__dropzone-hint kbd {
    display: inline-block;
    padding: 1px 5px;
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    border-radius: 3px;
    font-size: 10px;
    font-family: inherit;
    color: var(--badm-text);
}
.badm-plan__dropzone--hero { min-height: 180px; }
.badm-plan__dropzone--banner {
    aspect-ratio: 2.4 / 1;
    padding: 10px;
    gap: 4px;
}
.badm-plan__dropzone--banner .badm-plan__dropzone-icon { font-size: 20px; }
.badm-plan__dropzone--banner .badm-plan__dropzone-hint { font-size: 11px; }

/* Sdeleni a obsah – text vlevo, vizual vpravo nahore */
.badm-plan__sdeleni {
    display: flex;
    gap: 16px;
    align-items: flex-start;
}
.badm-plan__sdeleni-text { flex: 1; min-width: 0; }
.badm-plan__sdeleni-text .badm-section__title { margin-top: 0; }
.badm-plan__sdeleni-visual {
    order: 2;
    width: 200px;
    flex-shrink: 0;
}
.badm-plan__sdeleni-visual .badm-plan__visual-thumb {
    width: 100%;
    height: 140px;
}
.badm-plan__sdeleni-visual-caption strong {
    display: block;
    font-size: 11px;
    font-weight: 600;
    color: var(--badm-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.3px;
    margin-bottom: 3px;
}
@media (max-width: 900px) {
    .badm-plan__sdeleni { flex-direction: column; }
    .badm-plan__sdeleni-visual { width: 100%; order: 0; }
}

/* Klicovy vizual thumbnail (sdileny) */
.badm-plan__visual-thumb {
    border: 1px dashed var(--badm-border);
    border-radius: var(--badm-radius);
    background: var(--badm-bg);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--badm-text-muted);
    font-size: 28px;
    opacity: 0.5;
}
.badm-plan__edit-visual {
    display: flex;
    gap: 10px;
}
.badm-plan__edit-visual-preview i { font-size: 24px; opacity: 0.5; }

/* Edit form detailu kampane */
.badm-plan__edit-form { display: flex; flex-direction: column; gap: 14px; }
.badm-plan__edit-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.badm-plan__edit-grid--3 { grid-template-columns: 1fr 1fr 1fr; }
@media (max-width: 900px) { .badm-plan__edit-grid { grid-template-columns: 1fr; } }
@media (max-width: 700px) { .badm-plan__edit-grid--3 { grid-template-columns: 1fr 1fr; } }
.badm-plan__edit-checkboxes {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 16px;
    padding: 6px 0;
}
.badm-plan__edit-checkboxes label {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 13px;
    cursor: pointer;
}
.badm-plan__edit-chip-input .badm-tag i {
    cursor: pointer;
    opacity: 0.5;
    margin-left: 4px;
}
.badm-plan__edit-chip-input input {
    flex: 1;
    min-width: 100px;
    border: none;
    padding: 2px 4px;
    background: transparent;
    outline: none;
}

/* Sekce Zobrazeni na webu – 4 typy x N trhu, rozbalovaci details */
.badm-plan__web-row {
    border-top: 1px solid var(--badm-border);
    padding: 10px 0;
}
.badm-plan__web-row:first-of-type { border-top: none; padding-top: 4px; }
.badm-plan__web-row > summary {
    list-style: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    padding: 4px 0;
}
.badm-plan__web-row > summary::-webkit-details-marker { display: none; }
.badm-plan__web-row > summary::marker { content: ''; }
.badm-plan__web-row-chevron {
    font-size: 11px;
    color: var(--badm-text-muted);
    transition: transform 0.15s;
    width: 12px;
}
.badm-plan__web-row[open] > summary .badm-plan__web-row-chevron {
    transform: rotate(90deg);
}
.badm-plan__web-row-stav {
    margin-left: auto;
    display: inline-flex;
    gap: 4px;
}
.badm-plan__web-row[open] > summary .badm-plan__web-row-stav { display: none; }
.badm-plan__web-row > .badm-plan__web-trhy {
    margin-top: 8px;
}
.badm-plan__web-trhy {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 10px;
}

.badm-plan__web-slot {
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    padding: 8px;
    background: var(--badm-bg);
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.badm-plan__web-slot--unset {
    border-style: dashed;
    background: transparent;
}
.badm-plan__web-slot-add i { font-size: 20px; opacity: 0.5; }
.badm-plan__web-slot-head {
    display: flex;
    align-items: center;
    gap: 6px;
}
/* Nahled promo listy (barevny pruh s textem) */
.badm-plan__web-slot-lista {
    border-radius: var(--badm-radius);
    padding: 10px 12px;
    color: var(--badm-on-accent);
    font-size: 12px;
    line-height: 1.4;
    text-align: center;
    min-height: 38px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.badm-plan__web-slot-lista-text u { text-decoration: underline; }
.badm-plan__web-slot-lista-text strong { font-weight: 700; }

/* Color swatch pro barvu pozadi listy */
.badm-plan__web-color-swatch {
    display: inline-block;
    width: 12px;
    height: 12px;
    border-radius: 2px;
    vertical-align: middle;
    border: 1px solid rgba(0,0,0,0.1);
    margin-right: 2px;
}
.badm-plan__web-slot-image { margin-top: 10px; }
.badm-plan__web-slot-image .badm-plan__dropzone { min-height: 80px; }
.badm-plan__web-slot-meta {
    font-size: 11px;
    line-height: 1.4;
    color: var(--badm-text);
}
.badm-plan__web-slot-meta strong { color: var(--badm-text); }

/* Sidebar: propagacni kanaly chipy */
.badm-plan__sidebar-channels { display: flex; flex-wrap: wrap; gap: 3px; }
.badm-plan__sidebar-channels .badm-tag { display: inline-flex; align-items: center; gap: 4px; }

/* Kompaktni sidebar sekce v detailu kampane */
.badm-plan__sidebar-section { padding: 12px; }
.badm-plan__sidebar-section .badm-section__title { margin-bottom: 8px; }
.badm-plan__sidebar-field { margin-bottom: 10px; }
.badm-plan__sidebar-field:last-child { margin-bottom: 0; }
.badm-plan__sidebar-field > label {
    display: block;
    font-size: 11px;
    font-weight: 600;
    color: var(--badm-text-muted);
    margin-bottom: 3px;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}
.badm-plan__sidebar-value {
    font-size: 12px;
    color: var(--badm-text);
    line-height: 1.3;
}
.badm-plan__copy-row {
    display: flex;
    align-items: center;
    gap: 4px;
}
.badm-plan__copy-label {
    font-size: 11px;
    font-weight: 600;
    color: var(--badm-text-muted);
    flex: 0 0 auto;
}
.badm-plan__copy-flag {
    flex: 0 0 auto;
    font-size: 14px;
    line-height: 1;
}
.badm-plan__copy-input {
    flex: 1 1 0;
    min-width: 0;
    font-size: 11px;
    padding: 4px 6px;
    background: var(--badm-bg);
    cursor: text;
}
.badm-plan__copy-input:focus { background: var(--badm-surface); }
.badm-plan__copy-btn {
    flex: 0 0 auto;
    padding: 4px 8px;
    color: var(--badm-text-muted);
}
.badm-plan__copy-btn:hover { color: var(--badm-primary); }
.badm-plan__copy-btn--ok { color: var(--badm-success) !important; }
.badm-plan__sidebar-empty {
    font-size: 11px;
    color: var(--badm-text-muted);
    padding: 8px 10px;
    background: var(--badm-bg);
    border: 1px dashed var(--badm-border);
    border-radius: var(--badm-radius);
    line-height: 1.4;
}
.badm-plan__sidebar-empty-hint { font-size: 10px; margin-top: 2px; opacity: 0.8; }

/* Navigace rozsahem */
.badm-plan__range-switch,
.badm-plan__nav {
    display: flex;
    align-items: center;
    gap: 6px;
}
.badm-plan__anchor-label {
    font-size: 12px;
    color: var(--badm-text-muted);
    padding: 0 8px;
    min-width: 180px;
    text-align: center;
}

/* ── Detail: komentare ── */
.badm-plan__comments {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.badm-plan__comment {
    background: var(--badm-bg);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    padding: 10px 12px;
}
.badm-plan__comment-head {
    display: flex;
    justify-content: space-between;
    margin-bottom: 4px;
    font-size: 12px;
}
.badm-plan__comment-body {
    font-size: 13px;
    line-height: 1.4;
    color: var(--badm-text);
}
.badm-plan__comment-new {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-top: 6px;
    align-items: flex-end;
}
.badm-plan__comment-new textarea {
    width: 100%;
    min-height: 60px;
    resize: vertical;
}

/* ══════════════════════════════════════════════════════════
   Nastenka (dashboard) – sdilene boxy na metriky
   ══════════════════════════════════════════════════════════ */
.badm-dash__metrics-stack {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 0;
    min-width: 0; /* grid item nesmi rust nad 1fr track kvuli flex obsahu */
}
.badm-dash__metrics {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 8px;
    align-items: stretch;
    padding: 12px 0;
}
.badm-dash__metrics-stack .badm-dash__metrics { padding: 0; }
.badm-dash__metrics .badm-box--toggle { min-width: 0; }
.badm-dash__metrics .badm-box--toggle .badm-box__value { white-space: nowrap; }
.badm-dash__metrics .badm-box--toggle .badm-box__label { white-space: nowrap; }
/* Mobil: horizontalni scroll – boxy zustanou stejne siroke jako na desktopu,
   swipe vodorovne odkryje dalsi. Scroll-snap drzi boxy v zakrytu. */
@media (max-width: 640px) {
    .badm-dash__metrics {
        display: flex;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        -webkit-overflow-scrolling: touch;
        padding-bottom: 4px; /* prostor pro native scrollbar */
        /* Fade edge na pravem okraji – napoveda "jde scrollovat dal" */
        mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 24px), transparent 100%);
    }
    .badm-dash__metrics .badm-box--toggle {
        flex: 0 0 45%;
        scroll-snap-align: start;
    }
    .badm-dash__metrics-stack > .badm-dash__metrics + .badm-dash__metrics { margin-top: 8px; }
    /* Grafy na mobilu: skryt Y osu (vertikalni hodnoty berou misto) */
    .badm-half-grid > .badm-chart-wrap { height: 180px; }
}
/* Nastenka – nizsi chart wrap vedle KPI stacku (prekryva default 360px + margin) */
.badm-half-grid > .badm-chart-wrap { height: 240px; margin-bottom: 0; }

/* Rank list (top N potisky / produkty) s horizontalnim bar grafem na pozadi */
.badm-dash__rank-list { display: flex; flex-direction: column; gap: 2px; }
.badm-dash__rank-row {
    display: grid;
    grid-template-columns: 24px 1fr auto auto;
    gap: 8px;
    padding: 4px 8px;
    font-size: 12px;
    background-image: linear-gradient(to right, rgba(245, 158, 11, 0.18) var(--bar, 0%), transparent var(--bar, 0%));
    border-radius: 4px;
    align-items: center;
}
.badm-dash__rank-pos { color: var(--badm-text-muted); font-variant-numeric: tabular-nums; }
.badm-dash__rank-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.badm-dash__rank-val { font-weight: 600; font-variant-numeric: tabular-nums; }
.badm-dash__rank-pct { color: var(--badm-text-muted); font-variant-numeric: tabular-nums; min-width: 48px; text-align: right; }
.badm-dash__pie-wrap { height: 260px; position: relative; }

/* ── Widget Zpetna vazba (fronta k reakci + puls + novinka tydne) ──
   Hvezdy a pomerovy bar reusuji tridy feedback modulu (badm-fb__stars,
   badm-fb__ratio), zde jen layout kompaktnich radku v tretinove karte. */
.badm-dash__fb-list { display: flex; flex-direction: column; }
.badm-dash__fb-row {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 8px 0;
    border-bottom: 1px solid var(--badm-border);
}
.badm-dash__fb-row:last-child { border-bottom: 0; }
.badm-dash__fb-thumb { width: 40px; height: 40px; object-fit: contain; border-radius: var(--badm-radius-sm); background: var(--badm-gray-100); flex-shrink: 0; }
.badm-dash__fb-body { flex: 1; min-width: 0; }
.badm-dash__fb-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; font-size: 12px; }
.badm-dash__fb-name { font-size: 12px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.badm-dash__fb-text { font-size: 12px; color: var(--badm-text-muted); }
/* Proklik na detail zpetne vazby – vizualne zustava text, link se prizna az hoverem */
a.badm-dash__fb-open { display: block; text-decoration: none; }
a.badm-dash__fb-open:hover { color: var(--badm-text); text-decoration: underline; }
a.badm-dash__fb-name.badm-dash__fb-open { color: var(--badm-text); }
/* Datum = proklik na detail objednavky (cisla objednavek se ve widgetu nezobrazuji) */
a.badm-dash__fb-date { color: var(--badm-text-muted); text-decoration: none; }
a.badm-dash__fb-date:hover { color: var(--badm-text); text-decoration: underline; }
.badm-dash__fb-col { display: flex; flex-direction: column; gap: var(--badm-gap); min-width: 0; }
/* Hlavicka karty widgetu: nadpis vlevo, odkaz vpravo na stejnem radku (setri vysku) */
.badm-dash__fb-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-bottom: 12px; }
.badm-dash__fb-head .badm-card__title { margin: 0; flex: 1; min-width: 0; }
.badm-dash__fb-head .badm-card__link { white-space: nowrap; font-size: 12px; }
.badm-dash__fb-novelty { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.badm-dash__fb-novelty-img { width: 64px; height: 64px; object-fit: contain; border-radius: var(--badm-radius-sm); background: var(--badm-gray-100); flex-shrink: 0; }
.badm-dash__fb-novelty-info { min-width: 0; }
/* Dvojita trida kvuli specificite – zakladni .badm-fb__ratio (160px) je v CSS az za timto blokem */
.badm-fb__ratio.badm-dash__fb-ratio { width: 100%; height: 24px; }
.badm-dash__fb-novelty-meta { margin-top: 4px; font-size: 12px; }

/* ── Nove potisky – hlasovani o zarazeni (badm-third-grid uvnitr karty) ── */
/* Tesnejsi gap nez default badm-third-grid (16px) – kompaktni list radku. */
.badm-pending__grid { margin-bottom: 0; gap: 0 8px; }
.badm-pending__head { justify-content: flex-start; }
.badm-pending__head .badm-card__title { margin: 0; }
.badm-pending__history { margin-left: auto; font-size: 12px; white-space: nowrap; }
.badm-pending__row {
    display: grid;
    grid-template-columns: 56px 1fr;
    gap: 12px;
    padding: 6px 8px;
    border-radius: 6px;
    text-decoration: none;
    color: inherit;
}
.badm-pending__row:hover { background: var(--badm-surface-hover); text-decoration: none; }
.badm-pending__thumb {
    width: 56px;
    height: 56px;
    border-radius: 6px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}
.badm-pending__thumb img { max-width: 80%; max-height: 80%; object-fit: contain; }
.badm-pending__info { display: flex; flex-direction: column; gap: 2px; min-width: 0; align-self: center; }
.badm-pending__header { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
.badm-pending__name { font-weight: 600; font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.badm-pending__date { color: var(--badm-text-muted); font-size: 10px; white-space: nowrap; flex-shrink: 0; }
.badm-pending__shop { color: var(--badm-text-muted); font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Hlasovaci varianta karty – radek je klikatelny (otevira modal), nahled
   uvnitr ma vlastni hover lupu, tuzka vede do nahravace. */
.badm-pending__row--vote { cursor: pointer; align-items: start; }
.badm-pending__row--vote:hover { background: var(--badm-surface-hover); }
.badm-pending__row--vote[data-vote-state="tie"] { background: var(--badm-danger-light); }
.badm-pending__edit { color: var(--badm-text-muted); font-size: 11px; flex-shrink: 0; }
.badm-pending__edit:hover { color: var(--badm-primary); }
.badm-pending__meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 10px; }
.badm-pending__proposal { color: var(--badm-text-muted); font-size: 10px; white-space: nowrap; }
.badm-pending__votes { display: flex; align-items: center; gap: 5px; margin-top: 3px; flex-wrap: wrap; }
.badm-pending__myvote { font-size: 10px; color: var(--badm-text-muted); }

/* Tecka per volic: iniciala rika KDO, barva JAK. Prazdna = nehlasoval,
   sedivá plna = hlasoval ale nesmim jeste videt jak, barevna = odhalene
   (vlastni hlas nebo dohlasovano). */
.badm-pending__dot {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    border: 1.5px solid var(--badm-border);
    background: transparent;
    color: var(--badm-text-muted);
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 10px;
    font-weight: 700;
    line-height: 1;
}
.badm-pending__dot.is-voted { background: var(--badm-gray-200); border-color: var(--badm-gray-300); }
/* Barevne varianty MUSI prebit `.is-voted` – ta ma 2 tridy, proto se tady
   `.is-voted` opakuje. Bez toho zustaly tecky sede i po odhaleni hlasu. */
.badm-pending__dot.is-voted.badm-pending__dot--success { background: var(--badm-success); border-color: var(--badm-success); color: var(--badm-on-accent); }
.badm-pending__dot.is-voted.badm-pending__dot--info    { background: var(--badm-info);    border-color: var(--badm-info);    color: var(--badm-on-accent); }
.badm-pending__dot.is-voted.badm-pending__dot--warn    { background: var(--badm-warning); border-color: var(--badm-warning); color: var(--badm-on-accent); }

/* ── Hlasovaci modal (print-vote-modal.js) ─────────────────────── */
#badmModal .badm-modal__dialog.badm-pv-dialog { max-width: 860px; }
.badm-pv__body { display: grid; grid-template-columns: minmax(0, 380px) minmax(0, 1fr); gap: 24px; }
.badm-pv__art-wrap {
    position: relative;
    border-radius: 8px;
    aspect-ratio: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}
.badm-pv__art-wrap img { max-width: 88%; max-height: 88%; object-fit: contain; }
.badm-pv__art-tools { display: flex; align-items: center; gap: 10px; margin-top: 8px; }

.badm-pv__name { margin: 0 0 4px; font-size: 16px; font-weight: 600; }
.badm-pv__desc { margin: 0 0 10px; font-size: 12px; line-height: 1.45; color: var(--badm-text-muted); white-space: pre-wrap; }
.badm-pv__meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 6px; font-size: 12px; }
.badm-pv__meta-item { color: var(--badm-text-muted); }
.badm-pv__links { font-size: 12px; margin-bottom: 14px; }
.badm-pv__state { border-top: 1px solid var(--badm-border); padding-top: 12px; margin-bottom: 12px; }
.badm-pv__result { font-size: 13px; margin-bottom: 8px; }
.badm-pv__result--success { color: var(--badm-success); }
.badm-pv__result--info    { color: var(--badm-info); }
.badm-pv__result--warn    { color: var(--badm-warning); }
.badm-pv__dots { display: flex; gap: 6px; align-items: center; }
.badm-pv__hint { font-size: 11px; color: var(--badm-text-muted); margin: 6px 0 0; }
.badm-pv__actions { border-top: 1px solid var(--badm-border); padding-top: 12px; }
.badm-pv__note { width: 100%; margin-bottom: 8px; }
.badm-pv__buttons { display: flex; gap: 8px; flex-wrap: wrap; }
.badm-pv__vote-btn { flex: 1 1 0; min-width: 110px; }
.badm-pv__vote-btn.is-active { background: var(--badm-primary); color: var(--badm-primary-foreground); border-color: var(--badm-primary); }
.badm-pv__history { border-top: 1px solid var(--badm-border); margin-top: 12px; padding-top: 12px; }
.badm-pv__history-label { font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: var(--badm-text-muted); margin-bottom: 6px; }
.badm-pv__history-row { font-size: 12px; margin-bottom: 6px; }
.badm-pv__history-note { color: var(--badm-text-muted); font-size: 12px; margin: 2px 0 0 4px; }
.badm-pv__nav { display: flex; justify-content: space-between; gap: 8px; margin-top: 16px; }

@media (max-width: 720px) {
    .badm-pv__body { grid-template-columns: minmax(0, 1fr); }
}

/* ── QC widget – vlastni potisky kontrola ───────────────────────── */
.badm-dash__qc-header { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px 12px; margin-bottom: 12px; }
.badm-dash__qc-leaderboard { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; font-size: 11px; color: var(--badm-text-muted); font-variant-numeric: tabular-nums; }
.badm-dash__qc-leaderboard-icon { font-size: 13px; }
.badm-dash__qc-leaderboard-sep { opacity: .5; }
.badm-dash__qc-leader.is-me { color: var(--badm-text); font-weight: 600; }
/* Mobile: title nahore, leaderboard pod h2 (cela sirka), switch dolu (cela sirka) */
@media (max-width: 700px) {
    .badm-dash__qc-header .badm-card__title { flex: 1 1 100%; }
    .badm-dash__qc-header .badm-dash__qc-leaderboard { flex: 1 1 100%; order: 2; }
    .badm-dash__qc-header #dashQcFilter { flex: 1 1 100%; order: 3; }
}
.badm-dash__qc-grid { display: grid; grid-template-columns: repeat(8, 1fr); gap: 8px; }
/* Loading/empty/error stav QC gridu – pres celou sirku, vycentrovany spinner/text.
   min-height nastavuje JS na vysku jednoho radku produktu (aby layout neskocil). */
.badm-dash__qc-loading { grid-column: 1 / -1; display: flex; align-items: center; justify-content: center; padding: 2.5rem; }
@media (max-width: 1400px) { .badm-dash__qc-grid { grid-template-columns: repeat(6, 1fr); } }
@media (max-width: 1100px) { .badm-dash__qc-grid { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 700px)  { .badm-dash__qc-grid { grid-template-columns: repeat(3, 1fr); } }
.badm-dash__qc-card { position: relative; background: var(--badm-surface); border: 1px solid var(--badm-border); border-radius: var(--badm-radius); overflow: hidden; cursor: pointer; transition: box-shadow .15s, background .15s; aspect-ratio: 440 / 590; display: flex; flex-direction: column; }
.badm-dash__qc-card:hover { box-shadow: 0 2px 8px rgba(0,0,0,.12); }
.badm-dash__qc-card.badm-skeleton { cursor: default; background-color: var(--badm-surface); }
/* Jemne obarveni karty podle stavu kontroly (+ barevne spodni cislo objednavky) */
.badm-dash__qc-card[data-result="ok"]      { background: var(--badm-success-light); border-color: var(--badm-success-border); }
.badm-dash__qc-card[data-result="problem"] { background: var(--badm-danger-light);  border-color: var(--badm-danger-border); }
.badm-dash__qc-card[data-result="ok"]      .badm-dash__qc-cislo { background: var(--badm-success-light); }
.badm-dash__qc-card[data-result="problem"] .badm-dash__qc-cislo { background: var(--badm-danger-light); }
.badm-dash__qc-card[data-result="ok"]      .badm-dash__qc-thumb,
.badm-dash__qc-card[data-result="problem"] .badm-dash__qc-thumb { background: transparent; }
.badm-dash__qc-thumb { width: 100%; flex: 1; object-fit: contain; display: block; background: var(--badm-gray-100); }
.badm-dash__qc-thumb--empty { display: flex; align-items: center; justify-content: center; color: var(--badm-text-muted); font-size: 24px; }
.badm-dash__qc-count { position: absolute; top: 6px; right: 6px; background: rgba(0,0,0,0.65); color: #fff; padding: 2px 6px; border-radius: 10px; font-size: 10px; font-weight: 600; }
.badm-dash__qc-badge { position: absolute; top: 6px; left: 6px; width: 22px; height: 22px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700; color: var(--badm-on-accent); }
.badm-dash__qc-badge--ok { background: var(--badm-success); }
.badm-dash__qc-badge--problem { background: var(--badm-danger); }
/* "Schvaleno, ale stale odlozeno" – oranzove zvyrazneni; dvojity class selektor
   kvuli specificite nad [data-result="ok"] pravidly vyse (karta ma result=ok) */
.badm-dash__qc-card.badm-dash__qc-card--postponed { background: var(--badm-warning-bg); border-color: var(--badm-warning-border); }
.badm-dash__qc-card.badm-dash__qc-card--postponed .badm-dash__qc-cislo { background: var(--badm-warning-bg); }
.badm-dash__qc-card.badm-dash__qc-card--postponed .badm-dash__qc-thumb { background: transparent; }
.badm-dash__qc-badge--postponed { background: var(--badm-warning); font-size: 10px; }
.badm-dash__qc-cislo { padding: 4px 6px; font-size: 11px; text-align: center; color: var(--badm-text-muted); border-top: 1px solid var(--badm-border); background: var(--badm-surface); }
.badm-dash__qc-loadmore { text-align: center; margin-top: 12px; }

/* QC Modal – landscape 3-column layout (grafika | mockup | info panel) */
/* Pri Pixian tmp preview se rozsiruje na 4 sloupce: grafika | Po Pixian | mockup | info */
#badmModal .badm-modal__dialog.badm-dash__qc-dialog { max-width: 1200px; }
#badmModal .badm-modal__dialog.badm-dash__qc-dialog:has(.badm-dash__qc-modal-body--with-pixian) { max-width: 1480px; }
.badm-dash__qc-modal-body {
    display: grid;
    grid-template-columns: 1fr 1fr 320px;
    gap: 16px;
    align-items: stretch;
}
.badm-dash__qc-modal-body--with-pixian {
    grid-template-columns: 1fr 1fr 1fr 320px;
}
@media (max-width: 900px) {
    .badm-dash__qc-modal-body,
    .badm-dash__qc-modal-body--with-pixian { grid-template-columns: 1fr; }
}

/* Pixian preview – rosa ramecek pro odliseni od originalu */
.badm-dash__qc-modal-preview--pixian {
    outline: 2px solid var(--badm-pink);
    outline-offset: -2px;
}
.badm-dash__qc-modal-pixian-actions {
    display: flex;
    gap: 6px;
    width: 100%;
    margin-top: 8px;
}
.badm-dash__qc-modal-pixian-actions .badm-btn { padding-inline: 8px; }
.badm-dash__qc-modal-preview {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    background: var(--qc-bg, var(--badm-gray-100));
    border-radius: var(--badm-radius);
    padding: 12px;
    height: 460px;
    transition: background .15s;
}
.badm-dash__qc-modal-preview-imgwrap {
    position: relative; /* anchor pro absolute bg-toggle buttons uvnitr (aby nezasahovali do akci pod imgwrap) */
    flex: 1;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 0;
    border-radius: var(--badm-radius);
}
.badm-dash__qc-modal-preview-imgwrap > a { display: contents; } /* anchor neprerusi flex layout, img ziska max-width z imgwrap */
.badm-dash__qc-modal-preview img { max-width: 100%; max-height: 100%; object-fit: contain; display: block; }
.badm-dash__qc-bg-toggle {
    position: absolute;
    bottom: 10px;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    border: 2px solid var(--badm-surface);
    box-shadow: 0 0 0 1px rgba(0,0,0,.2), 0 1px 3px rgba(0,0,0,.15);
    cursor: pointer;
    padding: 0;
    transition: transform .15s;
}
.badm-dash__qc-bg-toggle:hover { transform: scale(1.15); }
.badm-dash__qc-bg-toggle--black { left: 10px; background: #000; }
.badm-dash__qc-bg-toggle--white { left: 10px; background: #fff; }
/* swatch ukazuje SKUTECNOU aplikovanou barvu (data-bg), ne theme token */
.badm-dash__qc-bg-toggle--pink  { right: 10px; background: #f4b6d2; }
.badm-dash__qc-modal-preview-label { font-size: 11px; color: var(--badm-text-muted); margin-top: 6px; text-transform: uppercase; letter-spacing: .06em; }
.badm-dash__qc-manual-badge {
    margin-top: 6px;
    padding: 4px 12px;
    border-radius: 999px;
    background: var(--badm-warning);
    color: var(--badm-on-accent);
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
    box-shadow: 0 1px 4px rgba(245,158,11,.4);
}
.badm-dash__qc-manual-badge i { margin-right: 4px; }
.badm-dash__qc-modal-info { display: flex; flex-direction: column; gap: 10px; font-size: 12px; }
.badm-dash__qc-modal-info h4 { margin: 0; font-size: 11px; text-transform: uppercase; color: var(--badm-text-muted); letter-spacing: .06em; }
.badm-dash__qc-modal-info a { display: block; padding: 4px 0; }
.badm-dash__qc-modal-info-links { display: flex; flex-wrap: wrap; gap: 4px 12px; }
.badm-dash__qc-modal-info-links a { display: inline; padding: 0; }
/* Poznamky z detailu objednavky (komentar zakaznika / interni / zaznam) v Objednavka sekci */
.badm-dash__qc-modal-note-block { margin-top: 6px; padding: 6px 8px; border-left: 2px solid var(--badm-border); background: var(--badm-surface); border-radius: 2px; }
.badm-dash__qc-modal-note-label { font-size: 10px; text-transform: uppercase; color: var(--badm-text-muted); letter-spacing: .05em; margin-bottom: 2px; }
.badm-dash__qc-modal-note-text  { font-size: 12px; line-height: 1.35; color: var(--badm-text); word-break: break-word; }
.badm-dash__qc-modal-status { padding: 8px 12px; border-radius: var(--badm-radius); font-size: 12px; }
.badm-dash__qc-modal-status--ok { background: var(--badm-success-bg); color: var(--badm-success-text); }
.badm-dash__qc-modal-status--problem { background: var(--badm-danger-bg); color: var(--badm-danger-text); }
.badm-dash__qc-modal-btnrow { display: flex; gap: 6px; margin-top: 8px; }
.badm-dash__qc-modal-btnrow > .badm-btn { flex: 1; }
.badm-dash__qc-modal-actions { display: flex; flex-direction: column; gap: 8px; padding-top: 10px; border-top: 1px solid var(--badm-border); }
.badm-dash__qc-modal-actions-row { display: flex; gap: 8px; }
.badm-dash__qc-modal-actions-row .badm-btn { flex: 1; }
.badm-dash__qc-modal-actions-row .badm-btn:disabled { opacity: .4; cursor: not-allowed; }
.badm-dash__qc-modal-note { width: 100%; min-height: 60px; padding: 6px 10px; border: 1px solid var(--badm-border); border-radius: var(--badm-radius); font-size: 13px; resize: vertical; box-sizing: border-box; }
.badm-dash__qc-modal-nav { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 8px 12px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--badm-border); }
.badm-dash__qc-modal-nav > span { text-align: center; min-width: 0; }
/* Mobile: tlacitka prev/next vedle sebe v 1. radku, counter+jumpLast pod nimi */
@media (max-width: 600px) {
    .badm-dash__qc-modal-nav { grid-template-columns: 1fr 1fr; }
    .badm-dash__qc-modal-nav > .badm-btn:first-child { order: 1; }
    .badm-dash__qc-modal-nav > .badm-btn:last-child  { order: 2; }
    .badm-dash__qc-modal-nav > span { grid-column: 1 / -1; order: 3; }
}

/* ========== Markdown rendering (sdilene .badm-md) ========== */
.badm-md p { margin: 0 0 6px; }
.badm-md p:first-child { margin-top: 0; }
.badm-md p:last-child { margin-bottom: 0; }
.badm-md ul, .badm-md ol { margin: 6px 0; padding-left: 20px; }
.badm-md li { margin-bottom: 2px; }
.badm-md h1, .badm-md h2, .badm-md h3 { font-size: 0.95rem; margin: 10px 0 4px; font-weight: 600; }
.badm-md code {
    background: rgba(0,0,0,0.06);
    padding: 1px 5px;
    border-radius: 3px;
    font-size: 0.88em;
    font-family: "SFMono-Regular", "Consolas", "Liberation Mono", monospace;
}
.badm-md pre {
    background: rgba(0,0,0,0.05);
    padding: 8px 10px;
    border-radius: 4px;
    overflow-x: auto;
    font-size: 0.88em;
    margin: 6px 0;
}
.badm-md pre code { background: transparent; padding: 0; }
.badm-md a { color: var(--badm-primary); }
.badm-md strong { font-weight: 600; }
.badm-md blockquote {
    border-left: 3px solid var(--badm-border);
    padding-left: 10px;
    margin: 6px 0;
    color: var(--badm-text-muted);
}
.badm-md table {
    border-collapse: collapse;
    margin: 8px 0;
    width: 100%;
}
.badm-md th,
.badm-md td {
    border: 1px solid var(--badm-border);
    padding: 5px 8px;
    font-size: 12px;
    text-align: left;
    vertical-align: top;
}
.badm-md th {
    background: var(--badm-bg);
    font-weight: 600;
}

/* Hint pod labelem (napoveda formatu, MD apod.) */
.badm-set__hint {
    font-size: 11px;
    color: var(--badm-text-muted);
    margin-top: 4px;
    line-height: 1.4;
}
.badm-set__hint code {
    background: rgba(0,0,0,0.05);
    padding: 0 4px;
    border-radius: 3px;
    font-size: 10px;
}

/* Hero vizual nahrany – obrazek na cele plose */
.badm-plan__sdeleni-visual-img {
    max-width: 100%;
    max-height: 240px;
    border-radius: var(--badm-radius);
    display: block;
    object-fit: contain;
    background: var(--badm-bg);
}

/* Dropzone – disabled/placeholder stav */
.badm-plan__dropzone--disabled {
    opacity: 0.6;
    cursor: not-allowed;
    pointer-events: none;
}

/* Upload progress overlay */
.badm-plan__dropzone.is-uploading {
    border-style: solid;
    border-color: var(--badm-primary);
    background: var(--badm-primary-light);
}
.badm-plan__dropzone.is-drag-over {
    border-style: solid;
    border-color: var(--badm-primary);
    background: rgba(255, 128, 20, 0.08);
}

/* Dropzone – hotovy preview obrazek */
.badm-plan__dropzone {
    position: relative;
}
.badm-plan__dropzone-preview {
    max-width: 100%;
    max-height: 180px;
    border-radius: 4px;
    display: block;
    object-fit: contain;
    margin: 0 auto;
}
.badm-plan__dropzone-remove {
    position: absolute;
    top: 6px;
    right: 6px;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    border: none;
    background: rgba(0, 0, 0, 0.6);
    color: var(--badm-on-accent);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 11px;
    z-index: 2;
}
.badm-plan__dropzone-remove:hover { background: var(--badm-danger); }
.badm-plan__dropzone-input {
    position: absolute;
    opacity: 0;
    width: 1px; height: 1px;
    pointer-events: none;
}
.badm-plan__dropzone-browse { position: relative; margin-top: 6px; cursor: pointer; }

/* Edit form: hero layout (dropzone + popis vedle sebe) */
.badm-plan__edit-visual-row {
    display: grid;
    grid-template-columns: 280px 1fr;
    gap: 16px;
    align-items: start;
}
.badm-plan__edit-visual-zone { min-width: 0; }
.badm-plan__edit-visual-text { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
@media (max-width: 720px) {
    .badm-plan__edit-visual-row { grid-template-columns: 1fr; }
}

/* Promo tabulka (tab Bannery / Listy) */
.badm-plan__promo-table td { vertical-align: middle; }
.badm-plan__promo-thumb {
    max-width: 140px;
    max-height: 80px;
    border-radius: 3px;
    object-fit: contain;
    display: block;
    background: var(--badm-bg);
}
.badm-plan__promo-table tbody tr { cursor: pointer; }
.badm-plan__promo-table tbody tr:hover td { background: var(--badm-surface-hover); }
/* Lista preview (modal i radek tabulky) – renderovany HTML obsah na barvenem pozadi */
.badm-plan__lista-preview {
    display: block;
    padding: 10px 14px;
    border-radius: 4px;
    color: var(--badm-on-accent);
    font-size: 13px;
    line-height: 1.4;
    min-height: 36px;
    word-break: break-word;
}
.badm-plan__lista-preview--inline {
    padding: 4px 10px;
    font-size: 11px;
    min-height: 0;
    margin-top: 4px;
}
/* Tabulka List – sloupec "Interní název" chceme co nejsirsi */
.badm-plan__promo-table col[data-col="title"], .badm-plan__promo-table th[data-col="title"] { width: 45%; }
/* Color picker + hex input vedle sebe */
.badm-plan__color-row {
    display: flex;
    gap: 6px;
    align-items: center;
}
.badm-plan__color-picker {
    width: 40px;
    height: 32px;
    padding: 2px;
    border: 1px solid var(--badm-border);
    border-radius: 4px;
    cursor: pointer;
    background: none;
}
.badm-plan__color-row .badm-input { flex: 1; min-width: 100px; max-width: 120px; }

/* Potisk tydne – tab */
.badm-plan__potisk-table td { vertical-align: middle; padding: 8px 10px; }
.badm-plan__potisk-cell { cursor: pointer; }
.badm-plan__potisk-cell:hover { background: var(--badm-surface-hover); }
.badm-plan__potisk-week strong { font-size: 14px; }
.badm-plan__potisk-row--today { box-shadow: inset 3px 0 0 var(--badm-primary); }
/* Minule tydny – jen ztlumit label tydne, chip zustava plnou barvou */
.badm-plan__potisk-row--past .badm-plan__potisk-week { opacity: 0.5; }
.badm-plan__potisk-row--past .badm-plan__potisk-empty { opacity: 0.35; border-style: dotted; }
.badm-plan__potisk-chip {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 10px;
    border-radius: 4px;
    font-size: 12px;
    font-weight: 500;
}
.badm-plan__potisk-thumb {
    width: 36px; height: 36px;
    object-fit: contain;
    flex: 0 0 auto;
    padding: 2px; box-sizing: border-box; border-radius: 3px;
}
.badm-plan__potisk-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.badm-plan__potisk-empty {
    background: none;
    border: 1px dashed var(--badm-border);
    border-radius: 4px;
    padding: 8px 12px;
    color: var(--badm-text-muted);
    cursor: pointer;
    width: 100%;
    font-size: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
}
.badm-plan__potisk-empty:hover { border-color: var(--badm-primary); color: var(--badm-primary); }

/* Panel "Prave bezi na eshopu" – zivy stav potisk_tydne nad planovaci tabulkou */
.badm-plan__live { margin-bottom: 18px; }
.badm-plan__live-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 10px;
}
.badm-plan__live .badm-plan__potisk-chip { margin: 8px 0 6px; }

/* Modal search */
.badm-plan__potisk-results {
    max-height: 320px;
    overflow-y: auto;
    border: 1px solid var(--badm-border);
    border-radius: 4px;
    margin-top: 4px;
    background: var(--badm-surface);
}
.badm-plan__potisk-result {
    display: flex; align-items: center; gap: 10px;
    padding: 8px 12px;
    cursor: pointer;
    border-bottom: 1px solid var(--badm-border);
}
.badm-plan__potisk-result:last-child { border-bottom: none; }
.badm-plan__potisk-result:hover { background: var(--badm-bg); }
.badm-plan__potisk-result img {
    width: 40px; height: 40px; object-fit: contain;
    background: var(--badm-bg); border-radius: 3px;
    padding: 2px; box-sizing: border-box;
}

/* Selected in modal */
.badm-plan__potisk-selected {
    display: flex; align-items: center; gap: 12px;
    padding: 10px;
    border: 1px solid var(--badm-border);
    border-radius: 4px;
    background: var(--badm-bg);
    margin-bottom: 10px;
}
.badm-plan__potisk-selected-img {
    width: 60px; height: 60px; object-fit: contain;
    background: var(--badm-surface); border-radius: 4px;
    padding: 2px; box-sizing: border-box;
}

/* Preview in modal */
.badm-plan__potisk-preview {
    padding: 20px;
    border-radius: 4px;
    border: 1px solid var(--badm-border);
    display: flex;
    align-items: center;
    gap: 16px;
    min-height: 80px;
    background: var(--badm-warning); /* default fallback, prepise se inline stylem */
}
.badm-plan__potisk-preview-img {
    width: 60px; height: 60px; object-fit: contain;
    flex: 0 0 auto;
}
.badm-plan__potisk-preview-text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.badm-plan__potisk-preview-title { font-size: 18px; font-weight: 600; line-height: 1.2; }
.badm-plan__potisk-preview-popis { font-size: 13px; line-height: 1.4; opacity: 0.92; }
.badm-plan__color-palette {
    display: flex;
    gap: 4px;
    flex-wrap: wrap;
}
.badm-plan__color-swatch {
    width: 28px;
    height: 28px;
    border: 1px solid var(--badm-border);
    border-radius: 4px;
    cursor: pointer;
    padding: 0;
    transition: transform 0.1s;
}
.badm-plan__color-swatch:hover { transform: scale(1.1); border-color: var(--badm-primary); }
/* Multiselect filtr v zahlavi tabulky – pouzij .badm-msel (viz nahore v style.css) */
.badm-plan__promo-camp-link {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
}
.badm-plan__promo-camp-link i { font-size: 10px; color: var(--badm-text-muted); }

/* Web sloty – editacni form uvnitr slot */
.badm-plan__web-slot--editable .badm-plan__web-slot-edit {
    display: grid;
    gap: 6px;
    margin-top: 8px;
    padding-top: 8px;
    border-top: 1px dashed var(--badm-border);
}
.badm-plan__web-slot-edit-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
}
.badm-plan__web-slot-edit textarea,
.badm-plan__web-slot-edit input[type="text"],
.badm-plan__web-slot-edit input[type="url"],
.badm-plan__web-slot-edit input[type="color"],
.badm-plan__web-slot-edit input[type="datetime-local"] {
    font-size: 12px;
}
.badm-plan__web-slot-edit-actions {
    display: flex;
    gap: 6px;
    justify-content: flex-end;
    margin-top: 4px;
}
.badm-plan__web-slot-lista-preview {
    padding: 10px 14px;
    border-radius: 4px;
    color: var(--badm-on-accent);
    font-weight: 500;
    font-size: 13px;
    line-height: 1.4;
    /* Bez display:flex – flex kolabuje whitespace kolem inline <a>, takze "text <a>link</a> text" by ztratil mezery. */
}

/* ══════════════════════════════════════════════════════════
   Knowledge base (UI: "Bible") – knowledge.tpl + knowledge_folders.tpl

   Pouziva sdilene prvky: .badm-page-header, .badm-section, .badm-nav-list,
   .badm-toolbar, .badm-modal, .badm-btn, .badm-badge, .badm-set, .badm-table.
   Module-specific zustavaji jen: 2-sloupcovy layout, sticky sidebar,
   ProseMirror styly editoru, history rows, diff coloring.
   ══════════════════════════════════════════════════════════ */

.badm-knowledge__layout {
    display: grid;
    grid-template-columns: 52px 1fr;
    gap: var(--badm-gap);
    align-items: start;
    transition: grid-template-columns 200ms ease;
}
.badm-knowledge[data-sidebar="expanded"] .badm-knowledge__layout {
    grid-template-columns: 280px 1fr;
}

/* ── NAV wrapper (rail + sidebar) ──────────────────────── */
.badm-knowledge__nav {
    position: sticky;
    top: 70px;
    align-self: start;
}

/* ── RAIL (uzka lista s ikonami, viditelna v collapsed stavu) ── */
.badm-knowledge__rail {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 8px 6px;
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    width: 52px;
    position: relative;
    z-index: 60; /* nad sidebar overlay (z-index: 50), aby hamburger byl vzdy klikatelny */
}
.badm-knowledge[data-sidebar="expanded"] .badm-knowledge__rail {
    display: none;
}
.badm-knowledge__rail-btn {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border: none;
    background: transparent;
    border-radius: var(--badm-radius);
    color: var(--badm-text);
    font-size: 16px;
    cursor: pointer;
    transition: background 120ms ease, color 120ms ease;
}
.badm-knowledge__rail-btn:hover {
    background: var(--badm-bg);
    color: var(--badm-primary);
}
.badm-knowledge__rail-btn--toggle {
    margin-top: auto;
    border-top: 1px solid var(--badm-border);
    border-radius: 0;
    padding-top: 8px;
}
.badm-knowledge__rail-badge {
    position: absolute;
    top: 2px;
    right: 2px;
    min-width: 14px;
    height: 14px;
    padding: 0 3px;
    background: var(--badm-bg);
    color: var(--badm-text-muted);
    border: 1px solid var(--badm-border);
    font-size: 9px;
    line-height: 12px;
    border-radius: 7px;
    text-align: center;
    font-weight: 600;
}

/* ── SIDEBAR (plna lista) ─────────────────────────────── */
.badm-knowledge__sidebar {
    display: flex;
    flex-direction: column;
    gap: 0;
}

/* Collapsed: sidebar je skryta defaultne, ale pri hover na rail se vysune VEDLE rail jako overlay.
   Sidebar je primo nalepena na rail (left: 52px, zadny gap), navic ma neviditelnou bridge
   `::before` doleva pres rail – aby pri prejezdu z rail na sidebar nedoslo k zaniku hoveru. */
.badm-knowledge[data-sidebar="collapsed"] .badm-knowledge__sidebar {
    position: absolute;
    top: 0;
    left: 52px;
    width: 280px;
    z-index: 50;
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    padding: 8px;
    box-shadow: var(--badm-shadow-md);
    opacity: 0;
    pointer-events: none;
    transform: translateX(-8px);
    transition: opacity 120ms ease, transform 120ms ease;
}
/* Bridge zone: kryje gap mezi rail a sidebar; predehrava jako prodlouzeni hover oblasti */
.badm-knowledge[data-sidebar="collapsed"] .badm-knowledge__sidebar::before {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: -12px;
    width: 12px;
    z-index: -1;
}
.badm-knowledge[data-sidebar="collapsed"] .badm-knowledge__nav:hover .badm-knowledge__sidebar,
.badm-knowledge[data-sidebar="collapsed"] .badm-knowledge__nav:focus-within .badm-knowledge__sidebar,
.badm-knowledge[data-sidebar="collapsed"] .badm-knowledge__sidebar:hover,
.badm-knowledge[data-sidebar="collapsed"] .badm-knowledge__sidebar:focus-within {
    opacity: 1;
    pointer-events: auto;
    transform: translateX(0);
}

.badm-knowledge__sidebar-header {
    display: flex;
    justify-content: flex-end;
    margin-bottom: 4px;
}
.badm-knowledge[data-sidebar="collapsed"] .badm-knowledge__sidebar-header {
    display: none;
}
.badm-knowledge__sidebar-collapse {
    border: none;
    background: transparent;
    color: var(--badm-text-muted);
    cursor: pointer;
    padding: 4px 8px;
    border-radius: var(--badm-radius);
    font-size: 12px;
}
.badm-knowledge__sidebar-collapse:hover {
    background: var(--badm-bg);
    color: var(--badm-primary);
}

.badm-knowledge__sidebar > .badm-section {
    margin-bottom: 0;
}
.badm-knowledge__sidebar > .badm-section + .badm-section {
    margin-top: var(--badm-gap);
}
.badm-knowledge__sidebar .badm-section__header {
    cursor: pointer;
}
.badm-knowledge__sidebar .badm-section__title .badm-badge {
    margin-left: 6px;
    vertical-align: middle;
}

.badm-knowledge__search-input {
    width: 100%;
    padding: 5px 8px;
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    font-size: 12px;
    background: var(--badm-surface);
}
.badm-knowledge__search-input:focus {
    outline: none;
    border-color: var(--badm-primary);
}
.badm-knowledge__search-results {
    margin-top: 8px;
    max-height: 240px;
    overflow-y: auto;
    border-top: 1px solid var(--badm-border);
}
.badm-knowledge__search-result {
    padding: 6px 4px;
    border-bottom: 1px solid var(--badm-border);
    cursor: pointer;
}
.badm-knowledge__search-result:last-child { border-bottom: none; }
.badm-knowledge__search-result:hover { background: var(--badm-bg); }
.badm-knowledge__search-result-title {
    font-weight: 600;
    font-size: 12px;
}
.badm-knowledge__search-result-meta {
    color: var(--badm-text-muted);
    font-size: 10px;
    margin-top: 2px;
}

.badm-knowledge__new-doc {
    padding: 2px 6px;
}

/* Aktivni dokument v badm-nav-list */
.badm-nav-list a.is-active {
    background: var(--badm-primary-light);
    color: var(--badm-primary);
    font-weight: 600;
}

/* ── Main – empty state + doc viewer/editor ──────────── */

.badm-knowledge__empty {
    display: flex;
    flex-direction: column;
    gap: var(--badm-gap);
}
.badm-knowledge__empty[hidden] {
    display: none !important;
}

/* ── Textovy outline (soupis vsech dokumentu po slozkach) ── */

.badm-knowledge__outline {
    display: flex;
    flex-direction: column;
    gap: 18px;
}
.badm-knowledge__outline-folder {
    /* nic – jen prirozeny rozestup */
}
.badm-knowledge__outline-title {
    font-size: 14px;
    font-weight: 600;
    margin: 0 0 6px;
    color: var(--badm-text);
    display: flex;
    align-items: center;
    gap: 8px;
}
.badm-knowledge__outline-title i {
    color: var(--badm-primary);
    font-size: 13px;
}
.badm-knowledge__outline-list {
    list-style: none;
    margin: 0;
    padding: 0 0 0 22px;
}
.badm-knowledge__outline-list li {
    padding: 3px 0;
    font-size: 13px;
}
.badm-knowledge__outline-list a {
    color: var(--badm-text);
    text-decoration: none;
}
.badm-knowledge__outline-list a:hover {
    color: var(--badm-primary);
    text-decoration: underline;
}
.badm-knowledge__outline-empty {
    margin: 0 0 0 22px;
    font-size: 12px;
    font-style: italic;
}

/* ── Naposledy upraveno (sekundarni sekce dole) ────────── */

.badm-knowledge__recent {
    margin-top: 8px;
    padding-top: 16px;
    border-top: 1px solid var(--badm-border);
}
.badm-knowledge__recent-title-h {
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--badm-text-muted);
    margin: 0 0 8px;
}
.badm-knowledge__recent-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.badm-knowledge__recent-list li + li {
    margin-top: 2px;
}
.badm-knowledge__recent-list a {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 12px;
    padding: 4px 0;
    color: var(--badm-text);
    text-decoration: none;
    font-size: 12px;
}
.badm-knowledge__recent-list a:hover {
    color: var(--badm-primary);
}
.badm-knowledge__recent-doc-title {
    font-weight: 500;
}
.badm-knowledge__recent-meta {
    font-size: 10px;
    color: var(--badm-text-muted);
}
.badm-knowledge__recent-meta code {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 10px;
    background: none;
    padding: 0;
}

/* ── Folder settings: icon input + nahled ──────────────── */

.badm-knowledge-folders__icon-row {
    display: flex;
    align-items: center;
    gap: 12px;
}
.badm-knowledge-folders__icon-row input {
    flex: 1;
    max-width: 280px;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12px;
}
.badm-knowledge-folders__icon-preview {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    background: var(--badm-bg);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    color: var(--badm-primary);
    font-size: 16px;
}

.badm-knowledge__doc-actions {
    display: flex;
    gap: 6px;
}
.badm-knowledge__doc-meta {
    display: flex;
    gap: 12px;
    align-items: center;
    flex-wrap: wrap;
    font-size: 10px;
    color: var(--badm-text-muted);
    margin-bottom: 12px;
}
.badm-knowledge__doc-path {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
}

/* ── TipTap toolbar (rozsireni .badm-toolbar) ──────────── */

.badm-knowledge__toolbar {
    gap: 2px;
    padding: 6px;
    background: var(--badm-bg);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    margin-bottom: 8px;
    flex-wrap: wrap;
    /* Sticky aby pri editaci dlouhych dokumentu zustaval pristupny.
       top: 70px = pod admin headerem (stejna hodnota jako .badm-knowledge__nav). */
    position: sticky;
    top: 70px;
    z-index: 5;
}
.badm-knowledge__toolbar .badm-btn.is-active {
    background: var(--badm-primary-light);
    color: var(--badm-primary);
}
.badm-toolbar__sep {
    width: 1px;
    background: var(--badm-border);
    margin: 0 4px;
    align-self: stretch;
}
.badm-knowledge__toolbar-wysiwyg {
    display: flex;
    align-items: center;
    gap: 2px;
    flex-wrap: wrap;
}

/* ── Mode switch (WYSIWYG / MD) ────────────────────────── */

.badm-knowledge__mode-switch {
    display: inline-flex;
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    padding: 2px;
    gap: 0;
}
.badm-knowledge__mode-btn {
    background: transparent;
    border: none;
    padding: 4px 10px;
    font-size: 11px;
    color: var(--badm-text-muted);
    cursor: pointer;
    border-radius: var(--badm-radius-sm);
    transition: background 120ms ease, color 120ms ease;
}
.badm-knowledge__mode-btn:hover {
    color: var(--badm-text);
}
.badm-knowledge__mode-btn.is-active {
    background: var(--badm-primary);
    color: var(--badm-on-accent);
    font-weight: 600;
}

/* ── Read mode viewer (Parsedown HTML output) ─────────── */

.badm-knowledge__viewer {
    font-size: 13px;
    line-height: 1.6;
    color: var(--badm-text);
    min-height: 200px;
}
.badm-knowledge__viewer h1 { font-size: 18px; font-weight: 700; margin: 16px 0 10px; }
.badm-knowledge__viewer h2 { font-size: 15px; font-weight: 700; margin: 14px 0 8px; }
.badm-knowledge__viewer h3 { font-size: 13px; font-weight: 600; margin: 12px 0 6px; }
.badm-knowledge__viewer p { margin: 8px 0; }
.badm-knowledge__viewer ul,
.badm-knowledge__viewer ol { padding-left: 24px; margin: 8px 0; }
.badm-knowledge__viewer blockquote {
    border-left: 3px solid var(--badm-border);
    padding-left: 12px;
    color: var(--badm-text-muted);
    margin: 8px 0;
}
.badm-knowledge__viewer code {
    background: var(--badm-secondary);
    padding: 1px 6px;
    border-radius: var(--badm-radius-sm);
    font-size: 11px;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
}
.badm-knowledge__viewer pre {
    background: var(--badm-secondary);
    padding: 10px 14px;
    border-radius: var(--badm-radius);
    overflow-x: auto;
}
.badm-knowledge__viewer pre code {
    background: none;
    padding: 0;
}
.badm-knowledge__viewer img {
    max-width: 100%;
    height: auto;
    border-radius: var(--badm-radius);
}
.badm-knowledge__viewer table {
    border-collapse: collapse;
    margin: 8px 0;
    width: 100%;
}
.badm-knowledge__viewer th,
.badm-knowledge__viewer td {
    border: 1px solid var(--badm-border);
    padding: 5px 8px;
    font-size: 12px;
}
.badm-knowledge__viewer th {
    background: var(--badm-bg);
    font-weight: 600;
    text-align: left;
}
.badm-knowledge__viewer a {
    color: var(--badm-primary);
    text-decoration: underline;
}

/* ── MD source textarea ───────────────────────────────── */

.badm-knowledge__md-source {
    width: 100%;
    min-height: 500px;
    padding: 12px 14px;
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12px;
    line-height: 1.6;
    background: var(--badm-surface);
    color: var(--badm-text);
    resize: vertical;
}
.badm-knowledge__md-source:focus {
    outline: none;
    border-color: var(--badm-primary);
}

/* Save button highlight pri neulozenych zmenach */
#knSaveBtn.is-dirty {
    box-shadow: 0 0 0 2px var(--badm-primary-light);
}

/* Mode-based viditelnost tlacitek – CSS je source-of-truth */
.badm-knowledge__doc[data-mode="read"] #knSaveBtn,
.badm-knowledge__doc[data-mode="read"] #knCancelBtn,
.badm-knowledge__doc[data-mode="read"] #knEditWrap {
    display: none !important;
}
.badm-knowledge__doc[data-mode="edit"] #knEditBtn,
.badm-knowledge__doc[data-mode="edit"] #knViewer {
    display: none !important;
}

/* Edit-flavor: WYSIWYG vs MD source – v edit modu se vzdy zobrazuje
   pouze jeden z dvojice (TipTap editor / textarea s raw MD). */
.badm-knowledge__edit-wrap[data-flavor="wysiwyg"] #knMdSource,
.badm-knowledge__edit-wrap[data-flavor="md"] #knEditor,
.badm-knowledge__edit-wrap[data-flavor="md"] .badm-knowledge__toolbar-wysiwyg {
    display: none !important;
}

/* V edit modu zruseni hover-expand sidebaru (overlay by prekryval editor).
   Klik na rail ikonu (slozky / hamburger) sidebar otevre normalne. */
.badm-knowledge[data-doc-mode="edit"] .badm-knowledge__nav:hover .badm-knowledge__sidebar,
.badm-knowledge[data-doc-mode="edit"] .badm-knowledge__nav:focus-within .badm-knowledge__sidebar,
.badm-knowledge[data-doc-mode="edit"] .badm-knowledge__sidebar:hover,
.badm-knowledge[data-doc-mode="edit"] .badm-knowledge__sidebar:focus-within {
    opacity: 0;
    pointer-events: none;
    transform: translateX(-8px);
}

/* ── ProseMirror (TipTap editor obsah) ─────────────────── */

.badm-knowledge__editor .ProseMirror {
    min-height: 400px;
    outline: none;
    font-size: 13px;
    line-height: 1.55;
    color: var(--badm-text);
}
.badm-knowledge__editor .ProseMirror h1 { font-size: 18px; font-weight: 700; margin: 16px 0 10px; }
.badm-knowledge__editor .ProseMirror h2 { font-size: 15px; font-weight: 700; margin: 14px 0 8px; }
.badm-knowledge__editor .ProseMirror h3 { font-size: 13px; font-weight: 600; margin: 12px 0 6px; }
.badm-knowledge__editor .ProseMirror p { margin: 8px 0; }
.badm-knowledge__editor .ProseMirror ul,
.badm-knowledge__editor .ProseMirror ol { padding-left: 24px; }
.badm-knowledge__editor .ProseMirror blockquote {
    border-left: 3px solid var(--badm-border);
    padding-left: 12px;
    color: var(--badm-text-muted);
    margin: 8px 0;
}
.badm-knowledge__editor .ProseMirror code {
    background: var(--badm-secondary);
    padding: 1px 6px;
    border-radius: var(--badm-radius-sm);
    font-size: 11px;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
}
.badm-knowledge__editor .ProseMirror pre {
    background: var(--badm-secondary);
    padding: 10px 14px;
    border-radius: var(--badm-radius);
    overflow-x: auto;
}
.badm-knowledge__editor .ProseMirror pre code {
    background: none;
    padding: 0;
}
.badm-knowledge__editor .ProseMirror img {
    max-width: 100%;
    height: auto;
    border-radius: var(--badm-radius);
}
.badm-knowledge__editor .ProseMirror table {
    border-collapse: collapse;
    margin: 8px 0;
    width: 100%;
}
.badm-knowledge__editor .ProseMirror th,
.badm-knowledge__editor .ProseMirror td {
    border: 1px solid var(--badm-border);
    padding: 5px 8px;
    font-size: 12px;
}
.badm-knowledge__editor .ProseMirror th {
    background: var(--badm-bg);
    font-weight: 600;
    text-align: left;
}
.badm-knowledge__editor .ProseMirror a {
    color: var(--badm-primary);
    text-decoration: underline;
}

/* ── Modal historie a diff ────────────────────────────── */

.badm-knowledge__history-row {
    display: grid;
    grid-template-columns: 80px 1fr 130px;
    gap: 12px;
    padding: 8px 0;
    border-bottom: 1px solid var(--badm-border);
    cursor: pointer;
    align-items: center;
    font-size: 12px;
}
.badm-knowledge__history-row:last-child { border-bottom: none; }
.badm-knowledge__history-row:hover { background: var(--badm-bg); }
.badm-knowledge__history-sha {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 10px;
    color: var(--badm-text-muted);
}
.badm-knowledge__history-meta {
    font-size: 10px;
    color: var(--badm-text-muted);
    text-align: right;
}

.badm-knowledge__diff pre {
    background: var(--badm-bg);
    padding: 10px 14px;
    border-radius: var(--badm-radius);
    font-size: 11px;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    overflow-x: auto;
    line-height: 1.5;
}
.badm-knowledge__diff .diff-add {
    background: var(--badm-success-light);
    color: var(--badm-success);
    display: block;
}
.badm-knowledge__diff .diff-del {
    background: var(--badm-danger-light);
    color: var(--badm-danger);
    display: block;
}

/* ── Responsive: pod 768px sidebar nad obsah ─────────── */

@media (max-width: 768px) {
    .badm-knowledge__layout,
    .badm-knowledge[data-sidebar="expanded"] .badm-knowledge__layout {
        grid-template-columns: 1fr;
    }
    .badm-knowledge__nav {
        position: static;
    }
    .badm-knowledge__rail {
        flex-direction: row;
        width: auto;
        flex-wrap: wrap;
    }
    .badm-knowledge__rail-btn--toggle {
        margin-top: 0;
        margin-left: auto;
        border-top: none;
        border-left: 1px solid var(--badm-border);
        padding-top: 0;
        padding-left: 8px;
    }
    .badm-knowledge[data-sidebar="collapsed"] .badm-knowledge__sidebar {
        position: static;
        width: auto;
        opacity: 1;
        pointer-events: auto;
        transform: none;
        box-shadow: none;
        margin-top: 8px;
    }
}

/* Tabulka automatizaci – neaktivni radek je ztlumeny */
.badm-row--inactive td { color: var(--badm-text-muted); opacity: .65; }
.badm-row--inactive td strong { color: var(--badm-text-muted); }

/* ── Vazbeni digiproduktu (log) ─────────────────────────── */
.badm-vazb__note { margin: 0; line-height: 1.5; }
.badm-vazb__empty { text-align: center; padding: 12px 8px; }
.badm-vazb__counts { font-variant-numeric: tabular-nums; white-space: nowrap; }
.badm-vazb__counts span { margin-left: 6px; }
.badm-vazb__ins { color: var(--badm-success); }
.badm-vazb__del { color: var(--badm-danger); }
.badm-vazb__upd { color: var(--badm-text-muted); }
/* Detail: dtid + pocty zarovnat na prvni radek zmen (radek je vysoky 22px) */
.badm-vazb__detail td { vertical-align: top; }
.badm-vazb__detail td.badm-table__num,
.badm-vazb__potisk { line-height: 22px; }
.badm-vazb__potisk { white-space: nowrap; }
.badm-vazb__dtid { font-weight: 600; color: var(--badm-text-muted); margin-right: 6px; }
.badm-vazb__combos { padding-top: 5px; padding-bottom: 5px; }
.badm-vazb__col-changes,
.badm-vazb__col-marks { width: 1%; white-space: nowrap; }
.badm-vazb__marks .badm-badge { margin-left: 4px; }
.badm-vazb__marks .badm-badge[title] { cursor: help; }
.badm-vazb__rowaction { white-space: nowrap; }
.badm-vazb__dtid-input {
    width: 130px;
    padding: 5px 8px;
    font-size: 12px;
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    background: var(--badm-surface);
    color: var(--badm-text);
}

/* Detail: co druh, to radek – zarovnane sloupce [znak] [ikona+nazev] [tecky] */
.badm-vazb__line { display: flex; align-items: center; gap: 10px; margin: 0 0 3px; min-height: 22px; }
.badm-vazb__lbl { width: 56px; flex-shrink: 0; font-weight: 600; font-size: 11px; text-align: center; }
.badm-vazb__druh { width: 200px; flex-shrink: 0; display: inline-flex; align-items: center; gap: 7px; }
.badm-vazb__druh-icon { width: 22px; height: 22px; object-fit: contain; flex-shrink: 0; }
.badm-vazb__druh-id { color: var(--badm-text-muted); font-variant-numeric: tabular-nums; flex-shrink: 0; }
.badm-vazb__druh-name { white-space: normal; line-height: 1.2; }
.badm-vazb__dots { display: flex; flex-wrap: wrap; gap: 4px; }
.badm-vazb__dots .badm-dot { width: 12px; height: 12px; box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .18); }

/* Prokliknutelne radky tabulky */
tr[data-href] { cursor: pointer; }

/* ---------- Grafici (mesicni prehledy) ---------- */
/* Select typu prehledu: dlouhy text se musi vejit a nesmi narazit na sipku
   (.badm-filter select prepisuje padding na 2px 8px – obnovime padding-right). */
.badm-filter select.badm-grafici__select {
    flex: 0 0 auto;
    min-width: 210px;
    padding-right: 28px;
}

/* ---------- Zpetna vazba (feedback) ---------- */
/* Hvezdickovy rating 1-5 (plne = warning, prazdne = utlumene) */
.badm-fb__stars { color: var(--badm-warning); font-size: 13px; letter-spacing: 1px; white-space: nowrap; }
.badm-fb__stars-off { color: var(--badm-gray-300); }
/* Odstupnovani dle znamky: 5 = zelena, 4 = jantarova (base), 1-3 = cervena */
.badm-fb__stars--top { color: var(--badm-success); }
.badm-fb__stars--mid { color: var(--badm-warning); }
.badm-fb__stars--low { color: var(--badm-danger); }
/* Dilci hodnoceni zbozi (kvalita/potisk/velikost) pod hvezdami */
.badm-fb__subs { font-size: 10px; color: var(--badm-text-muted); white-space: nowrap; }
/* Delsi texty zpetne vazby v tabulce – omezena sirka, at nerozbiji layout */
.badm-fb__text { max-width: 420px; white-space: normal; }
/* Negativni hodnoceni (<= 3) – jemne podbarveni radku, funguje v obou tematech */
.badm-fb__row--neg > td { background: rgba(220, 38, 38, .05); }
/* Tlacitko poznamky s ulozenou poznamkou */
.badm-fb-note.is-noted { color: var(--badm-primary); }
/* Rozbalovaci podradky s hodnocenim zbozi objednavky */
.badm-fb-expand .fa-chevron-right { transition: transform .15s; font-size: 10px; }
.badm-fb-expand.is-open .fa-chevron-right { transform: rotate(90deg); }
.badm-fb__sub > td { background: var(--badm-surface-hover); }
.badm-fb__sub-items { display: flex; flex-direction: column; gap: 8px; padding: 2px 0 2px 24px; }
.badm-fb__sub-item { display: flex; gap: 10px; align-items: flex-start; }
.badm-fb__sub-item img { width: 40px; height: 40px; border-radius: var(--badm-radius-sm); object-fit: cover; flex-shrink: 0; }
/* Agregace hodnoceni podle druhu (tab Zbozi) */
.badm-fb__druh-wrap { max-height: 420px; overflow-y: auto; }
.badm-fb__druh-period { font-size: 12px; font-weight: 400; color: var(--badm-text-muted); margin-left: 8px; }
.badm-fb__trend { font-weight: 600; white-space: nowrap; }
.badm-fb__trend--up { color: var(--badm-success); }
.badm-fb__trend--down { color: var(--badm-danger); }
.badm-fb__druh-row--active > td { background: var(--badm-primary-light); }
/* Radek "Celkem N hodnoceni" – odsazeni od tabulky pod nim */
.badm-fb__total { margin: 4px 0 12px; }
/* Fotka od zakaznika v tabulce (plna velikost pres lupu / detail) */
.badm-fb__photo { width: 40px; height: 40px; object-fit: cover; border-radius: var(--badm-radius-sm); }
/* Vyrenderovany markdown digest */
.badm-fb__digest h2 { font-size: 13px; font-weight: 600; margin: 12px 0 4px; }
.badm-fb__digest ul, .badm-fb__digest ol { margin: 4px 0 8px 18px; }
.badm-fb__digest li { margin-bottom: 2px; }
/* Hlavicka zobrazeneho digestu: zdurazdene obdobi + meta */
.badm-fb__digest-head { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin: 4px 0 8px; }
.badm-fb__digest-period { font-size: 13px; }
/* Summary digestu jako nadpis (misto driveho modreho alert boxu) */
.badm-fb__digest-summary { font-size: 15px; font-weight: 600; line-height: 1.45; margin: 0 0 12px; }
/* Odkazy na dalsi nevyrizena negativni – odsazeni od tabulky */
.badm-fb__attention-links { margin-top: 12px; }
/* Ovladani AI digestu v hlavicce sekce – na mobilu se zalamuje */
.badm-fb__digest-controls { display: inline-flex; flex-wrap: wrap; gap: 6px; align-items: center; justify-content: flex-end; min-width: 0; }
.badm-fb__digest-controls input[type="date"] { width: auto; flex: 0 0 auto; }
/* Pomerovy bar hlasu o potisku tydne (bozi/fajn/nicmoc) – sirka segmentu
   dle poctu hlasu (flex-grow z tpl). Text na sytem podkladu = on-accent. */
.badm-fb__ratio { display: flex; width: 160px; height: 20px; border-radius: var(--badm-radius-sm); overflow: hidden; }
.badm-fb__ratio-seg { flex-basis: 0; min-width: 16px; display: flex; align-items: center; justify-content: center; font-size: 10px; font-weight: 600; color: var(--badm-on-accent); white-space: nowrap; }
.badm-fb__ratio-seg--bozi { background: var(--badm-success); }
.badm-fb__ratio-seg--fajn { background: var(--badm-warning); }
.badm-fb__ratio-seg--nicmoc { background: var(--badm-danger); }
.badm-fb__ratio-seg--other { background: var(--badm-gray-400); }

/* ── Finance / tab Prijate faktury ─────────────────────────── */
.badm-faktury { position: relative; }
.badm-faktury.is-uploading { opacity: .7; pointer-events: none; }

/* Horni toolbar: akce zarovnane vpravo (jako ostatni moduly) */
.badm-faktury__toolbar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: flex-end; margin-bottom: var(--badm-gap); }

/* Drag & drop overlay pres cely modul */
.badm-faktury__drop {
    position: absolute;
    inset: 0;
    z-index: 6;
    display: none;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, .38);
    border: 2px dashed var(--badm-accent);
    border-radius: var(--badm-radius);
    pointer-events: none;
}
.badm-faktury.is-dragover .badm-faktury__drop,
.badm-faktury.is-flash .badm-faktury__drop { display: flex; }
.badm-faktury__drop-inner {
    font-size: 15px;
    font-weight: 600;
    color: var(--badm-accent);
    background: var(--badm-surface-elevated);
    padding: 14px 22px;
    border-radius: var(--badm-radius);
    box-shadow: 0 4px 16px rgba(0, 0, 0, .2);
}
/* Uspesne nahrani – zeleny flash */
.badm-faktury__drop.is-success { background: rgba(0, 0, 0, .18); border-color: var(--badm-success); animation: badmFakturyPop .2s ease; }
.badm-faktury__drop.is-success .badm-faktury__drop-inner { color: var(--badm-success); }
@keyframes badmFakturyPop { from { transform: scale(.96); opacity: .4; } to { transform: scale(1); opacity: 1; } }

/* Akce nahledu v hlavicce modalu (Lupa + Otevřít) – stejny styl */
.badm-faktury__pvactions { display: inline-flex; align-items: center; gap: 6px; margin-left: 12px; }

/* Spodni drop plocha (jen filtr Ke kontrole) */
.badm-faktury__bottomzone {
    margin-top: 14px;
    min-height: 150px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px dashed var(--badm-border);
    border-radius: var(--badm-radius);
    color: var(--badm-text-muted);
    cursor: pointer;
    transition: border-color .15s, background .15s, color .15s;
}
.badm-faktury__bottomzone:hover,
.badm-faktury__bottomzone:focus-visible { border-color: var(--badm-accent); color: var(--badm-text); background: rgba(127, 127, 127, .04); outline: none; }
.badm-faktury__bottomzone-inner { display: flex; flex-direction: column; align-items: center; gap: 8px; font-size: 13px; }
.badm-faktury__bottomzone-inner i { font-size: 22px; }

.badm-faktury__row:hover { background: rgba(127, 127, 127, .06); }

/* Sortovatelna zahlavi tabulky */
.badm-faktury__table th.is-sortable { cursor: pointer; user-select: none; white-space: nowrap; }
.badm-faktury__table th.is-sortable:hover { color: var(--badm-text); }
.badm-faktury__table th.is-sortable::after { content: "\2195"; opacity: .3; margin-left: 4px; font-size: 10px; }
.badm-faktury__table th.is-sorted-asc::after { content: "\2191"; opacity: .9; }
.badm-faktury__table th.is-sorted-desc::after { content: "\2193"; opacity: .9; }

/* Detail modal – velky, aby byla videt cela faktura; split nahled + formular */
#fakturyModal .badm-modal__dialog--wide { max-width: 1500px; width: 96%; max-height: 94vh; }
.badm-faktury__nav { display: flex; align-items: center; gap: 6px; margin-left: auto; margin-right: 12px; }
.badm-faktury__navpos { font-size: 12px; color: var(--badm-text-muted); min-width: 46px; text-align: center; }
.badm-faktury__nav .badm-btn[disabled] { opacity: .4; pointer-events: none; }
.badm-faktury__detail { display: flex; gap: 16px; align-items: flex-start; }
.badm-faktury__preview { flex: 1 1 58%; min-width: 0; }
.badm-faktury__embed {
    width: 100%;
    height: 82vh;
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    background: var(--badm-surface);
}
/* Nahled jako obrazek: default fit cele A4, lupa = zvetseni + scroll */
.badm-faktury__imgwrap {
    width: 100%;
    height: 82vh;
    overflow: auto;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    background: var(--badm-surface);
}
.badm-faktury__img { max-width: 100%; max-height: 100%; object-fit: contain; cursor: zoom-in; }
.badm-faktury__imgwrap.is-zoomed { justify-content: flex-start; }
.badm-faktury__imgwrap.is-zoomed .badm-faktury__img { max-width: none; max-height: none; width: 190%; cursor: zoom-out; }
/* Vicestrankove PDF: strany pod sebou, fit sirka, scroll */
.badm-faktury__imgwrap--multi { flex-direction: column; align-items: center; justify-content: flex-start; gap: 10px; padding: 8px 0; }
.badm-faktury__imgwrap--multi .badm-faktury__img { max-height: none; width: 100%; max-width: 920px; box-shadow: 0 1px 4px rgba(0, 0, 0, .12); }
.badm-faktury__imgwrap--multi.is-zoomed .badm-faktury__img { max-width: none; width: 150%; }
.badm-faktury__morepages { padding: 8px; font-size: 12px; text-align: center; }
.badm-faktury__form { flex: 1 1 42%; min-width: 0; }
/* 6sloupcovy grid: default pole = pulka radku (span 3), --3 = tretina (span 2) */
.badm-faktury__grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 8px; }
.badm-faktury__fld { grid-column: span 3; display: flex; flex-direction: column; gap: 2px; font-size: 11px; color: var(--badm-text-muted); min-width: 0; }
.badm-faktury__fld--3 { grid-column: span 2; }
.badm-faktury__fld span { font-weight: 600; }
/* Zpusob platby – barevne pole podle hodnoty */
.badm-faktury__pm { font-weight: 600; border-left-width: 4px; }
.badm-faktury__pm.is-prevod { background: var(--badm-info-bg); border-color: var(--badm-info-border); border-left-color: var(--badm-info); color: var(--badm-info-text); }
.badm-faktury__pm.is-karta { background: var(--badm-warning-bg); border-color: var(--badm-warning-border); border-left-color: var(--badm-warning); color: var(--badm-warning-text); }
.badm-faktury__pm.is-hotovost { background: var(--badm-success-bg); border-color: var(--badm-success-border); border-left-color: var(--badm-success); color: var(--badm-success-text); }
.badm-faktury__paid { display: flex; align-items: center; gap: 8px; font-size: 12px; margin: 10px 0 2px; color: var(--badm-text); cursor: pointer; }
.badm-faktury__paid input { width: 15px; height: 15px; cursor: pointer; }
.badm-faktury__actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; align-items: center; }
/* Rozdeli listu: prace se zaznamem vlevo, hlavni CTA vpravo */
.badm-faktury__actions-spacer { flex: 1 1 auto; min-width: 0; }
/* Smazat = vzdy samostatny radek, oddeleny oddelovacem (ochrana proti omylu vedle CTA) */
.badm-faktury__actions-danger { display: flex; justify-content: flex-start; margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--badm-border); }
.badm-faktury__warn {
    background: var(--badm-warning-bg);
    color: var(--badm-warning-text);
    padding: 6px 10px;
    border-radius: var(--badm-radius);
    font-size: 12px;
    margin-bottom: 10px;
}

/* Sloupec „Zdroj" (kdo/odkud nahral) – jen na tabu Ke kontrole (toggle .is-src-visible na .badm-faktury) */
.badm-faktury__col-src { display: none; }
.badm-faktury.is-src-visible .badm-faktury__col-src { display: table-cell; }
th.badm-faktury__col-src { white-space: nowrap; }

/* Radek se zdrojem dokladu v detailu (nahrano DD.M.RRRR · kdo/odkud) */
.badm-faktury__meta { font-size: 11px; margin: 0 0 10px; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }

/* ── QR platba (SPD) – nahore v pravem sloupci detailu, aby se platilo bez
   scrollovani v PDF. QR vykresluje badmQr (js/qr.js) do dlazdice.
   Vyjimka dark mode: QR MUSI byt cerna na bile (skenery potrebuji kontrast),
   proto ma dlazdice pevne bilé pozadi i v dark rezimu – viz docs/styles.md. */
.badm-faktury__qr {
    display: flex; flex-wrap: wrap; align-items: center; gap: 12px;
    margin: 0 0 12px; padding: 10px;
    border: 1px solid var(--badm-border); border-radius: var(--badm-radius);
    background: var(--badm-surface-hover);
}
.badm-faktury__qr-tile {
    flex: 0 0 auto; padding: 3px; line-height: 0;
    background: #ffffff;          /* vyjimka: pevna bila kvuli kontrastu QR */
    border: 1px solid #e5e5e5;    /* vyjimka: viz komentar vyse */
    border-radius: var(--badm-radius-sm);
}
.badm-faktury__qr-tile canvas { display: block; }
.badm-faktury__qr-info { flex: 1 1 180px; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.badm-faktury__qr-title { font-size: 13px; font-weight: 700; color: var(--badm-text); display: flex; align-items: center; gap: 6px; margin-bottom: 1px; }
.badm-faktury__qr-hint { font-size: 10px; font-weight: 600; padding: 1px 6px; border-radius: 999px; background: var(--badm-info-bg); color: var(--badm-info-text); }
.badm-faktury__qr-row { display: flex; align-items: center; gap: 6px; font-size: 12px; min-width: 0; }
.badm-faktury__qr-lbl { flex: 0 0 46px; color: var(--badm-text-muted); font-weight: 600; }
.badm-faktury__qr-val { min-width: 0; overflow-wrap: anywhere; }
.badm-faktury__qr-val code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; }
.badm-faktury__qr-msg { display: inline-block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom; color: var(--badm-text-muted); }
.badm-faktury__qr-copy { flex: 0 0 auto; background: transparent; border: 0; color: var(--badm-text-muted); cursor: pointer; padding: 2px 4px; border-radius: var(--badm-radius-sm); }
.badm-faktury__qr-copy:hover { color: var(--badm-text); background: var(--badm-surface); }
.badm-faktury__qr--empty { display: block; font-size: 12px; padding: 8px 10px; }

/* Stav + nahrani v hlavicce modalu (vedle tlacitek Otevřít/Stáhnout) */
.badm-faktury__headmeta { display: inline-flex; align-items: center; gap: 6px; margin-left: 12px; font-size: 12px; flex-wrap: wrap; }

/* Vyber FIO uctu k parovani plateb (Finance > Nastaveni) */
.badm-fio-accts { display: flex; flex-direction: column; gap: 4px; }
.badm-fio-accts__item { display: flex; align-items: center; gap: 8px; padding: 5px 8px; border: 1px solid var(--badm-border); border-radius: var(--badm-radius-sm); font-size: 13px; cursor: pointer; }
.badm-fio-accts__item.is-disabled { opacity: .55; cursor: not-allowed; }
.badm-fio-accts__label { flex: 1 1 auto; min-width: 0; }
.badm-fio-accts__foot { display: flex; align-items: center; gap: 12px; margin-top: 10px; }

/* Ikonka krizove kontroly platby (FIO) ve sloupci Stav */
.badm-faktury__reconicon { margin-left: 5px; font-size: 11px; }
.badm-faktury__reconicon.is-confirmed { color: var(--badm-success); }
.badm-faktury__reconicon.is-missing { color: var(--badm-danger); }
.badm-faktury__reconicon.is-pending { color: var(--badm-text-muted); }

/* Typ dokladu – maly badge v seznamu (proforma / DD k zaloze / dobropis) */
.badm-faktury__doctype { font-size: 10px; padding: 1px 6px; vertical-align: middle; }
/* Ikona sparovani v seznamu */
.badm-faktury__pairicon { color: var(--badm-success); margin-left: 4px; }

/* Parovaci blok v detailu (proforma <-> vyuctovaci danovy doklad) */
.badm-faktury__pairbox {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
    margin: 10px 0 2px;
    padding: 8px 10px;
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    font-size: 12px;
}
.badm-faktury__pairbox.is-paired {
    background: var(--badm-success-bg);
    border-color: var(--badm-success-border);
}
.badm-faktury__pairmain { color: var(--badm-text); font-weight: 600; }
/* Odkaz na protejsi doklad je na zelenem podkladu (.is-paired) – proto success-text,
   NE --badm-accent: ten je podkladova barva (light #f5f5f5 / dark #2e2e32), jako text
   by v obou tematech splynul s pozadim. */
.badm-faktury__pairmain a { color: var(--badm-success-text); text-decoration: underline; }
.badm-faktury__pairnote { flex-basis: 100%; font-size: 11px; }
.badm-faktury__pairbox .badm-btn { margin-left: auto; }
.badm-faktury__paircand { max-width: 260px; }

@media (max-width: 720px) {
    .badm-faktury__detail { flex-direction: column; }
    .badm-faktury__embed,
    .badm-faktury__imgwrap { height: 60vh; }
    .badm-faktury__grid { grid-template-columns: 1fr; }
    .badm-faktury__fld,
    .badm-faktury__fld--3 { grid-column: auto; }
}

/* ═══════════════ Transakcni emaily (emaily.php) ═══════════════ */

/* Vypis sablon – jednoradkove, klik na radek edituje (tr[data-href]) */
.badm-em__list .badm-em__col-nazev { width: 26%; }
.badm-em__list .badm-em__col-od { width: 24%; }
.badm-em__list .badm-em__col-mut { width: 120px; }
.badm-em__cell-clip { overflow: hidden; text-overflow: ellipsis; }

/* Obalove sablony defaultne schovane, ukaze je checkbox ve filtru */
.badm-em__row-obal { display: none; }
.badm-em__list.is-show-all .badm-em__row-obal { display: table-row; }

/* Chybovy banner fronty (nad taby / nastenka) */
.badm-em__errbanner-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.badm-em__errbanner-action { margin-left: auto; }
.badm-em__errtable { margin-top: 8px; }
.badm-em__errtable td:first-child { white-space: nowrap; font-weight: 600; width: 1%; }

/* Editor se zvyraznenim syntaxe: <pre> s obarvenou kopii lezi pod
   transparentnim <textarea> – obe vrstvy MUSI mit shodny font, padding
   a line-height, jinak se text rozjede. */
.badm-em__editor { position: relative; }
.badm-em__editor .badm-em__hl,
.badm-em__editor .badm-em__code {
    margin: 0;
    width: 100%;
    min-height: 360px;
    max-height: 620px;
    padding: 8px;
    box-sizing: border-box;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 12px;
    line-height: 1.5;
    white-space: pre-wrap;
    word-break: break-word;
    overflow: auto;
    tab-size: 4;
}
.badm-em__hl {
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: var(--badm-surface);
    border: 1px solid transparent; /* zrcadli border textarea kvuli zarovnani */
    border-radius: var(--badm-radius);
    color: var(--badm-text);
}
.badm-em__editor .badm-em__code {
    position: relative;
    resize: vertical;
    background: transparent;
    color: transparent;
    caret-color: var(--badm-text);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
}
/* Tokeny zvyrazneni – HTML tagy ustoupi (jmeno tagu o stupen vyraznejsi,
   aby byla videt kostra), komentare vc. MSO bloku jeste vic, sablonova
   syntaxe vystoupi. Seda skala semanticky – v dark mode se prevrati sama. */
.badm-em__tok-tag { color: var(--badm-gray-400); }
.badm-em__tok-tagname { color: var(--badm-gray-500); font-weight: 600; }
.badm-em__tok-comment { color: var(--badm-gray-300); font-style: italic; }
.badm-em__tok-var { color: var(--badm-primary); font-weight: 600; }
.badm-em__tok-cond { color: var(--badm-info); font-weight: 600; }
.badm-em__tok-loop { color: var(--badm-success); font-weight: 600; }
.badm-em__tok-partial { color: var(--badm-purple, #8b5cf6); font-weight: 600; }

/* Sbalitelne bloky: hlavicka bez spodniho marginu (sbaleny stav nema mit
   vetsi mezeru pod sebou nez nad sebou), odsazeni dodava az rozbalene telo */
.badm-em__collapse-head { margin-bottom: 0; }
.badm-em__collapse-body { margin-top: 10px; }

/* Podnadpis sbaliteneho alt textu – vyraznejsi odstup od HTML editoru */
.badm-em__sub { margin-top: 20px; }

/* Input/textarea pres celou sirku bloku */
.badm-em__full { width: 100%; box-sizing: border-box; }

/* Nadpis druhe skupiny v napovede (Syntaxe pod promennymi) */
.badm-em__help-label { margin-top: 14px; }

/* Oznaceni chybejici mutace v tabech editoru */
.badm-em__missing { opacity: .45; font-weight: 400; font-size: 11px; }

/* Status testovaciho odeslani – odsadit od tlacitka, prazdny nezabira misto */
.badm-em__test-status { margin-top: 8px; }
.badm-em__test-status:empty { display: none; }

/* Nahled emailu – stoji volne mezi sekcemi (bez obalove karty), drzi
   stejny rytmus odsazeni jako .badm-section */
.badm-em__mail { margin-bottom: var(--badm-gap); }

/* Simulace hlavicky mailu – srostla s iframe do jednoho "emailoveho" celku */
.badm-em__mailhead {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 8px 10px;
    font-size: 12px;
    background: var(--badm-bg);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius) var(--badm-radius) 0 0;
    border-bottom: 0;
}

/* Zivy nahled – iframe s bilym podkladem (email klienti nemaji dark mode
   admina, nahled zustava svetly zamerne – media vyjimka dle styles.md).
   Vysku nastavuje JS podle skutecneho obsahu (zadny prazdny bily zbytek). */
.badm-em__preview {
    display: block;
    width: 100%;
    height: 320px;
    border: 1px solid var(--badm-border);
    border-radius: 0 0 var(--badm-radius) var(--badm-radius);
    background: #fff;
}

/* Nastaveni – nazev/od jmeno/od email na tretiny pres cely radek */
.badm-em__meta { display: flex; gap: 12px; }
.badm-em__meta .badm-set__field { flex: 1 1 0; min-width: 0; }
.badm-em__meta input { width: 100%; box-sizing: border-box; }

/* Sidebar – chipy globalnich promennych (klik vlozi do editoru) */
.badm-em__vars { display: flex; flex-wrap: wrap; gap: 4px; }
.badm-em__var {
    font-size: 11px;
    padding: 1px 6px;
    background: var(--badm-secondary);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius-sm);
}
.badm-em__var:hover { border-color: var(--badm-primary); color: var(--badm-primary); }

/* Sidebar – napoveda syntaxe: kod na vlastnim radku, popis pod nim */
.badm-em__syntax { list-style: none; margin: 0; padding: 0; }
.badm-em__syntax li { padding: 6px 0; border-bottom: 1px solid var(--badm-border); }
.badm-em__syntax li:last-child { border-bottom: 0; }
.badm-em__syntax li > code {
    display: block;
    margin-bottom: 2px;
    font-size: 11px;
    word-break: break-all;
}
.badm-em__syntax li > span { font-size: 11px; color: var(--badm-text-muted); }

/* Fronta – sloupec s chybou muze byt dlouhy, orezat s wrapem */
.badm-em__error { max-width: 340px; white-space: normal; }

/* ── Sklad (sklad.tpl, tab Sklad) ───────────────────────── */

/* Bunka matice: aktualni stav (read-only) + kompaktni DELTA input
   (prebiji globalni width:100% inputu) */
.badm-sklad__stav {
    display: inline-block;
    min-width: 16px;
    margin-right: 3px;
    text-align: right;
    font-weight: 600;
}
.badm input.badm-sklad__input {
    width: 32px;
    display: inline-block;
    height: 22px;
    padding: 2px 2px;
    text-align: center;
    font-size: 11px;
    box-sizing: border-box;
}
/* Nahled noveho stavu po pricteni/odecteni delty */
.badm-sklad__preview {
    margin-left: 2px;
    font-size: 11px;
    font-weight: 700;
}
.badm-sklad__preview--pos { color: var(--badm-success); }
.badm-sklad__preview--neg { color: var(--badm-danger); }
.badm input.badm-sklad__input.is-changed {
    border-color: var(--badm-primary);
    background: var(--badm-primary-light);
    font-weight: 700;
}
.badm-sklad__sum { font-weight: 600; }
.badm-sklad__sum.is-changed { color: var(--badm-primary); }

/* Bunka digi produktu: stav + delta input + kod artiklu pod nimi */
.badm-sklad__cell { display: inline-block; }
.badm-sklad__kod {
    display: block;
    margin-top: 1px;
    font-size: 9px;
    color: var(--badm-text-muted);
    text-align: center;
}

/* Barevny vzorek barvy digi produktu pres celou vysku radku
   (data-driven barva z DB = povolena vyjimka dark mode) */
.badm-sklad__artikl { white-space: nowrap; }
.badm-sklad__swatch {
    display: inline-block;
    width: 16px;
    height: 38px;
    margin-right: 8px;
    vertical-align: middle;
    border-radius: 4px;
    border: 1px solid var(--badm-border);
}
.badm-sklad__artikl-text { display: inline-block; vertical-align: middle; }
/* Pracovni nazev barvy na druhem radku pod nazvem produktu (setri sirku sloupce) */
.badm-sklad__pracovni { display: block; font-size: 10px; }

/* Regal – autosave input (uklada se mimo logbook), maly a vycentrovany */
.badm input.badm-sklad__regal {
    width: 70px;
    display: inline-block;
    height: 22px;
    padding: 2px 2px;
    text-align: center;
    font-size: 11px;
    box-sizing: border-box;
}
.badm input.badm-sklad__regal.is-saved { border-color: var(--badm-success); }
.badm input.badm-sklad__regal.is-error { border-color: var(--badm-danger); }

/* Oddeleni bloku Kategorie skladovek a Druhy digitisku ve filtru */
.badm-sklad__filter-block {
    margin-bottom: 12px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--badm-border);
}

/* Sticky lista ulozeni – drzi se u spodni hrany pri scrollu dlouhych matic */
.badm-sklad__bar {
    position: sticky;
    bottom: 0;
    z-index: 20;
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: var(--badm-gap);
    padding: 10px 14px;
    background: var(--badm-surface);
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
    box-shadow: 0 -2px 8px rgba(0, 0, 0, .08);
}
.badm-sklad__bar-row {
    display: flex;
    align-items: center;
    gap: 8px 12px;
    flex-wrap: wrap;
}
.badm input.badm-sklad__komentar {
    flex: 1 1 240px;
    min-width: 0;
    height: 26px;
    padding: 2px 8px;
    box-sizing: border-box;
}
.badm-sklad__counter { font-weight: 600; white-space: nowrap; }
.badm-sklad__stitky { gap: 4px 14px; }

/* Logbook – rozbalovaci detail zmen */
.badm-sklad__log-detail summary {
    cursor: pointer;
    color: var(--badm-primary);
    font-weight: 600;
}
.badm-sklad__log-detail[open] summary { margin-bottom: 4px; }

/* ── Sklad – tab Vratky (VRATID) ────────────────────────── */

/* Selecty v radku seznamu pouzivaji sdileny .badm-select--small */

/* Modal slev – kompaktni ciselny input (prebiji globalni width:100% inputu),
   "%" zustava inline vedle */
.badm input.badm-sklad-vratky__sleva-input {
    width: 56px;
    display: inline-block;
    height: 26px;
    padding: 2px 6px;
    text-align: center;
    font-size: 12px;
    box-sizing: border-box;
    margin-right: 4px;
}

/* Zalistovaci radek – responzivni grid poli + info s nahledem potisku */
.badm-sklad-vratky__new-row {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--badm-border);
}
.badm-sklad-vratky__new-row:last-child { border-bottom: none; }
/* Nahled zbozi PRED poli radku – rezervovane misto, at layout neskace */
.badm-sklad-vratky__new-nahled {
    flex: 0 0 64px;
    min-height: 64px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--badm-border);
    border-radius: var(--badm-radius);
}
.badm-sklad-vratky__new-nahled img {
    max-width: 62px;
    max-height: 62px;
    border-radius: var(--badm-radius);
}
.badm-sklad-vratky__new-main { flex: 1 1 auto; min-width: 0; }
.badm-sklad-vratky__new-grid {
    display: flex;
    flex-wrap: wrap;
    align-items: end;
    gap: 8px 12px;
}
/* Popisky poli maji vlastni tridu – bare `label` by rozbil checkboxy zemi
   (sloupcovy layout + sizing inputu se aplikoval i na checkbox) */
.badm-sklad-vratky__new-grid .badm-sklad-vratky__field {
    display: flex;
    flex-direction: column;
    gap: 2px;
    font-size: 11px;
    font-weight: 600;
    color: var(--badm-text-muted);
    margin-bottom: 0;
}
/* :not(checkbox) – jinak by sizing dopadl i na checkboxy v multiselect menu */
.badm-sklad-vratky__field input:not([type="checkbox"]),
.badm-sklad-vratky__field select {
    width: auto;
    min-width: 110px;
    height: 26px;
    padding: 2px 6px;
    font-size: 12px;
    box-sizing: border-box;
}
/* Select potisku umi byt extremne dlouhy – orezat, at se radek nelame */
.badm-sklad-vratky__field select.vratkyDtid { max-width: 220px; }
/* Velikost je kratky kod – staci uzky select */
.badm-sklad-vratky__field select.vratkyVelikost { min-width: 64px; }
/* Zeme multiselect – kompaktni (default btn min-width 180px je tu zbytecny) */
.badm-sklad-vratky__field .badm-multiselect__btn {
    min-width: 90px;
    height: 26px;
    padding: 2px 8px;
    box-sizing: border-box;
}
.badm-sklad-vratky__new-info {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 6px;
}

/* Tlacitka mimo tok filtru/radku – prilepena doprava */
