/*
 * Sazba — pravidla, která Filament sám nedodržuje.
 *
 * SLOVO SE NIKDY NELÁME UPROSTŘED. Zalamuje se jen v mezerách. Filament dává
 * `word-break: break-word` na popisky ve výběrech a v buňkách tabulek, takže
 * z dlouhého e-mailu nebo názvu udělá svislý sloupec písmen. Když se obsah
 * nevejde, má se posunout nebo zkrátit, ne rozsypat.
 */
.fi-body :where(*) {
    word-break: normal;
    overflow-wrap: normal;
    hyphens: manual;
}

/*
 * Ve výběru je na text málo místa z podstaty — zkrátí se třemi tečkami.
 * Celá hodnota zůstává v title i po rozbalení seznamu.
 */
.fi-select-input-value-label {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/*
 * Vlastní tabulky na stránkách, které nejsou jeden model (controlling).
 *
 * Tailwind třídy v šabloně tu NEFUNGUJÍ: Filament přibaluje jen CSS pro třídy,
 * které sám používá, a vlastní theme se tu nebuildí. `border-b` nebo `text-end`
 * v šabloně proto tiše nedělají nic. Odtud vlastní třídy.
 *
 * Každý sloupec má šířku (table-layout: fixed) a tabulka min-width — bez toho
 * dostane sloupec bez šířky jen zbytek, a když se pevné šířky sečtou do celku,
 * zbude nula a text vyteče přes sousední buňku.
 */
.crm-obal { overflow-x: auto; }

.crm-tabulka {
    width: 100%;
    table-layout: fixed;
    border-collapse: collapse;
    font-size: 12.5px;
}

.crm-tabulka th,
.crm-tabulka td {
    padding: 7px 12px 7px 0;
    text-align: left;
    vertical-align: top;
}

.crm-tabulka th {
    font-weight: 500;
    font-size: 11px;
    color: var(--crm-slaby);
    border-bottom: 1px solid var(--crm-okraj);
}

.crm-tabulka tbody td {
    border-bottom: 1px solid var(--crm-linka);
}

.crm-tabulka .cislo {
    text-align: right;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.crm-tabulka tfoot td {
    padding-top: 0.75rem;
    font-weight: 600;
}

.crm-vedlejsi {
    display: block;
    font-size: 11.5px;
    color: var(--crm-slaby);
}

.crm-pozor { color: var(--crm-chyba); font-weight: 600; }

.crm-dobre { color: var(--crm-ok); }

.crm-prazdne {
    margin: 0;
    font-size: 12.5px;
    color: var(--crm-slaby);
}

/* ---------- ovládání kalendáře ---------- */

.crm-kal-ovladani {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

/* ---------- odkazy a tisk ---------- */

.crm-odkaz { color: var(--crm-akcent-text); text-decoration: underline; text-decoration-color: color-mix(in srgb, currentColor 40%, transparent); }
.crm-odkaz:hover { text-decoration-color: currentColor; }

/* Při tisku bez panelu a tlačítek. */
@media print {
    .fi-sidebar, .fi-topbar, .fi-header-actions, .fi-breadcrumbs { display: none !important; }
    .fi-main { padding: 0 !important; }
}

/* ---------- kalendář: týden s časovou osou ---------- */



/*
 * Jedna mřížka: sloupec s hodinami + 7 dní. Řádky: hlavička, pruh „celý den",
 * časová část. --h je výška hodiny, --hodin počet hodin, --radku počet řádků
 * pruhu nahoře (kolik se tam naskládalo událostí nad sebe).
 */
.crm-kal {
    --h: 3rem;
    --linka: var(--crm-okraj);
    --linka-slaba: var(--crm-linka);
    display: grid;
    grid-template-columns: 3.5rem repeat(7, minmax(7rem, 1fr));
    min-width: 56rem;
    font-size: 0.8125rem;
    border-top: 1px solid var(--linka);
}


.crm-kal-roh { border-bottom: 1px solid var(--linka); }

.crm-kal-den {
    padding: 0.4rem 0.5rem;
    border-left: 1px solid var(--linka);
    border-bottom: 1px solid var(--linka);
    white-space: nowrap;
}

.crm-kal-den-nazev { font-weight: 600; margin-right: 0.3rem; }
.crm-kal-den-cislo { color: var(--crm-slaby); }

.crm-kal-dnes { box-shadow: inset 0 3px 0 rgb(37 99 235); }
.crm-kal-dnes .crm-kal-den-cislo { color: rgb(37 99 235); font-weight: 600; }

.crm-kal-vikend { background: rgb(0 0 0 / 0.02); }
.dark .crm-kal-vikend { background: var(--crm-karta-2); }

/* --- pruh „celý den" --- */

.crm-kal-stitek {
    font-size: 0.7rem;
    color: var(--crm-slaby);
    padding: 0.35rem 0.4rem 0 0;
    text-align: right;
    border-bottom: 2px solid var(--linka);
}

.crm-kal-celodenni {
    grid-column: 2 / span 7;
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    grid-template-rows: repeat(var(--radku), 1.6rem);
    row-gap: 2px;
    padding: 3px 0;
    min-height: 2rem;
    border-bottom: 2px solid var(--linka);
}

.crm-kal-celodenni-pozadi {
    border-left: 1px solid var(--linka);
    z-index: 0;
}
.crm-kal-celodenni-pozadi:hover { background: rgb(59 130 246 / 0.06); }

.crm-kal-pruh {
    z-index: 1;
    margin: 0 2px;
    padding: 0.15rem 0.45rem;
    border-radius: 0.3rem;
    /* Název se nezalamuje uprostřed slova — zkrátí se třemi tečkami. */
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.3;
}

.crm-kal-pruh small { opacity: 0.75; margin-right: 0.2rem; }

/* Pokračuje z minulého / do dalšího týdne: rovný okraj místo zaobleného. */
.crm-kal-zleva { border-top-left-radius: 0; border-bottom-left-radius: 0; margin-left: 0; }
.crm-kal-doprava { border-top-right-radius: 0; border-bottom-right-radius: 0; margin-right: 0; }

/* --- časová mřížka --- */

.crm-kal-osa { height: calc(var(--h) * var(--hodin)); }

.crm-kal-hodina-popis {
    height: var(--h);
    padding-right: 0.4rem;
    text-align: right;
    font-size: 0.7rem;
    color: var(--crm-slaby);
    /* Popisek sedí na čáře hodiny, ne pod ní. */
    transform: translateY(-0.55em);
}

.crm-kal-sloupec {
    position: relative;
    height: calc(var(--h) * var(--hodin));
    border-left: 1px solid var(--linka);
}

.crm-kal-policko {
    display: block;
    height: var(--h);
    border-top: 1px solid var(--linka-slaba);
}
a.crm-kal-policko:hover { background: rgb(59 130 246 / 0.06); }

.crm-kal-udalost {
    position: absolute;
    z-index: 2;
    overflow: hidden;
    padding: 0.15rem 0.35rem;
    border-radius: 0.3rem;
    border-left: 3px solid currentColor;
    line-height: 1.25;
}

.crm-kal-udalost:hover { z-index: 3; filter: brightness(0.97); }

.crm-kal-cas { display: block; font-size: 0.7rem; opacity: 0.8; white-space: nowrap; }
/* Zalamuje se jen v mezerách (pravidlo projektu); co se nevejde, useknne okraj. */
.crm-kal-nazev { display: block; font-weight: 500; }

.crm-kal-ted {
    position: absolute;
    left: 0;
    right: 0;
    z-index: 4;
    height: 2px;
    background: rgb(220 38 38);
    pointer-events: none;
}
.crm-kal-ted::before {
    content: "";
    position: absolute;
    left: -4px;
    top: -3px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: rgb(220 38 38);
}

/* --- barvy podle typu --- */

.crm-kal-t-SCHUZKA       { background: rgb(219 234 254); color: rgb(30 64 175); }
.crm-kal-t-TERMIN        { background: rgb(254 243 199); color: rgb(146 64 14); }
.crm-kal-t-DODAVKA,
.crm-kal-t-REVIZE,
.crm-kal-t-KONTROLNI_DEN { background: rgb(224 231 255); color: rgb(55 48 163); }
.crm-kal-t-ROZPIS_PRACE  { background: rgb(243 244 246); color: var(--crm-tlumeny); }
.crm-kal-t-ABSENCE       { background: rgb(255 237 213); color: rgb(154 52 18); }
.crm-kal-t-JINE          { background: rgb(243 244 246); color: var(--crm-tlumeny); }

.dark .crm-kal-t-SCHUZKA       { background: rgb(30 58 138 / 0.55); color: rgb(191 219 254); }
.dark .crm-kal-t-TERMIN        { background: rgb(120 53 15 / 0.55); color: rgb(253 230 138); }
.dark .crm-kal-t-DODAVKA,
.dark .crm-kal-t-REVIZE,
.dark .crm-kal-t-KONTROLNI_DEN { background: rgb(49 46 129 / 0.55); color: rgb(199 210 254); }
.dark .crm-kal-t-ROZPIS_PRACE,
.dark .crm-kal-t-JINE          { background: rgb(255 255 255 / 0.08); color: var(--crm-text-2); }
.dark .crm-kal-t-ABSENCE       { background: rgb(124 45 18 / 0.55); color: rgb(254 215 170); }

/* Nejisté (i čekající žádost o volno): čárkovaně a kurzívou. */
.crm-kal-nejiste {
    background: transparent !important;
    outline: 1px dashed currentColor;
    outline-offset: -1px;
    font-style: italic;
}

/* ---------- kalendář: dny jako řádky, čas zleva doprava ---------- */

.crm-kalv {
    --linka: var(--crm-okraj);
    --linka-slaba: var(--crm-linka);
    --radek: 4.5rem;
    /*
     * Pevná šířka hodiny, jako v rezervačním systému. Nacpat 16 hodin do šířky
     * obrazovky dělalo z hodinové schůzky proužek, do kterého se nevešel ani
     * název. Radši vodorovné posouvání uvnitř kalendáře.
     */
    --hodina: 4.5rem;
    min-width: calc(12.5rem + var(--hodin) * var(--hodina));
    font-size: 0.8125rem;
    border: 1px solid var(--linka);
    border-radius: 0.5rem;
    /* BEZ overflow: hidden — ořez by zrušil přilepení sloupců se dny. */
    user-select: none;
}

/*
 * Název dne a „celý den" zůstávají vlevo, když se osa posouvá. Bez toho by
 * po posunu na odpoledne nebylo vidět, na který den se kouká.
 */
.crm-kalv-den { position: sticky; left: 0; z-index: 6; }
.crm-kalv-celodenni {
    position: sticky;
    left: 3.5rem;
    z-index: 6;
    background: var(--pozadi-kalendare);
}
.crm-kalv { --pozadi-kalendare: var(--crm-karta); }

.crm-kalv-radek {
    display: grid;
    grid-template-columns: 3.5rem 9rem 1fr;
    height: var(--radek);
    border-bottom: 1px solid var(--linka);
}
.crm-kalv-radek:last-child { border-bottom: none; }

.crm-kalv-hlava { height: 1.75rem; background: var(--crm-karta-2); }
.dark .crm-kalv-hlava { background: var(--crm-karta-2); }

.crm-kalv-den {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    border-right: 1px solid var(--linka);
    background: var(--crm-karta-2);
    white-space: nowrap;
}
.dark .crm-kalv-den { background: var(--crm-karta-2); }
.crm-kalv-den-nazev { font-size: 0.65rem; font-weight: 700; color: var(--crm-ikona); }
.crm-kalv-den-cislo { font-size: 0.75rem; font-weight: 700; }

.crm-kalv-dnes .crm-kalv-den { background: rgb(219 234 254); }
.crm-kalv-dnes .crm-kalv-den-nazev,
.crm-kalv-dnes .crm-kalv-den-cislo { color: rgb(29 78 216); }
.dark .crm-kalv-dnes .crm-kalv-den { background: rgb(30 58 138 / 0.5); }
.dark .crm-kalv-dnes .crm-kalv-den-nazev,
.dark .crm-kalv-dnes .crm-kalv-den-cislo { color: rgb(191 219 254); }
.crm-kalv-dnes .crm-kalv-osa { background: rgb(59 130 246 / 0.03); }

.crm-kalv-vikend .crm-kalv-osa { background: rgb(0 0 0 / 0.018); }
.dark .crm-kalv-vikend .crm-kalv-osa { background: var(--crm-karta-2); }

/* --- celý den --- */

.crm-kalv-celodenni {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 2px;
    padding: 0.2rem 0.3rem;
    border-right: 2px solid var(--linka);
    min-width: 0;
}

.crm-kalv-stitek {
    font-size: 0.65rem;
    color: var(--crm-slaby);
    align-items: flex-start;
}

.crm-kalv-cip {
    padding: 0.1rem 0.4rem;
    border-radius: 0.3rem;
    /* Neláme uprostřed slova — zkrátí se třemi tečkami, celé je v bublině. */
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    font-size: 0.75rem;
    line-height: 1.35;
}
.crm-kalv-cip small { opacity: 0.75; margin-right: 0.2rem; }

.crm-kalv-vice { font-size: 0.7rem; color: var(--crm-slaby); padding-left: 0.4rem; cursor: help; }

.crm-kalv-pridat {
    align-self: center;
    color: var(--crm-ikona);
    font-size: 1rem;
    line-height: 1;
    padding: 0.2rem 0.6rem;
    border-radius: 0.3rem;
    opacity: 0;
}
.crm-kalv-radek:hover .crm-kalv-pridat { opacity: 1; }
.crm-kalv-pridat:hover { background: rgb(59 130 246 / 0.1); color: rgb(37 99 235); }

/* --- časová osa --- */

.crm-kalv-osa-hlava { position: relative; }
.crm-kalv-osa-hlava span {
    position: absolute;
    top: 0.35rem;
    font-size: 0.65rem;
    font-weight: 600;
    color: var(--crm-slaby);
    padding-left: 0.2rem;
    border-left: 1px solid var(--linka);
    height: 1.4rem;
}

.crm-kalv-osa { position: relative; cursor: crosshair; }

.crm-kalv-carka {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 1px;
    background: var(--linka-slaba);
    pointer-events: none;
}

.crm-kalv-blok {
    position: absolute;
    z-index: 2;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    overflow: hidden;
    padding: 0 0.5rem;
    margin: 3px 1px;
    box-sizing: border-box;
    border-radius: 0.5rem;
    border: 1px solid currentColor;
    box-shadow: 0 1px 2px rgb(0 0 0 / 0.06);
    text-align: center;
    line-height: 1.25;
}
/* Odečíst okraje z výšky/šířky, jinak blok přeteče do souseda. */
.crm-kalv-blok { max-height: calc(100% - 6px); }
.crm-kalv-tahnutelny { cursor: grab; }
.crm-kalv-tahnutelny:active { cursor: grabbing; }
.crm-kalv-blok:hover { box-shadow: 0 2px 6px rgb(0 0 0 / 0.12); z-index: 3; }
.crm-kalv-tazeno { opacity: 0.3; }

.crm-kalv-blok-cas { font-size: 0.7rem; font-weight: 700; white-space: nowrap; }
.crm-kalv-blok-nazev {
    font-weight: 600;
    max-width: 100%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Úchyty pro změnu délky — jen při najetí na blok, jako v rezervacích. */
.crm-kalv-uchyt {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 0.5rem;
    cursor: ew-resize;
    opacity: 0;
    background: currentColor;
    transition: opacity 0.1s;
}
.crm-kalv-uchyt-l { left: 0; }
.crm-kalv-uchyt-p { right: 0; }
.crm-kalv-blok:hover .crm-kalv-uchyt { opacity: 0.35; }

.crm-kalv-nahled {
    position: absolute;
    top: 3px;
    bottom: 3px;
    z-index: 5;
    border-radius: 0.5rem;
    background: rgb(16 185 129 / 0.15);
    border: 2px dashed rgb(5 150 105);
    pointer-events: none;
}
.crm-kalv-nahled span {
    position: absolute;
    top: -1.35rem;
    left: 50%;
    transform: translateX(-50%);
    padding: 0.05rem 0.35rem;
    border-radius: 0.25rem;
    background: rgb(5 150 105);
    color: white;
    font-size: 0.65rem;
    font-family: ui-monospace, monospace;
    white-space: nowrap;
}

.crm-kalv-ted {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 2px;
    z-index: 4;
    background: rgb(220 38 38);
    pointer-events: none;
}

/* Krokovník zakázky, podřízené pipeline a čísla zakázky: crm-tema.css (Detail zakázky). */

/* ---------- výběr data: šipky na měsíce (public/js/simren.js) ---------- */

.fi-fo-date-time-picker-panel-header {
    gap: 0.25rem;
}

.crm-mesic-sipka {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: none;
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 0.5rem;
    color: var(--crm-slaby);
    cursor: pointer;
}

.crm-mesic-sipka:hover {
    background: var(--gray-100);
    color: var(--gray-950);
}

.dark .crm-mesic-sipka {
    color: var(--crm-slaby);
}

.dark .crm-mesic-sipka:hover {
    background: rgb(255 255 255 / 0.05);
    color: #fff;
}

.crm-mesic-sipka svg {
    width: 1rem;
    height: 1rem;
}

/* ---------- výběr místo nativní roletky (public/js/vyber.js) ----------
   Stránkování, měsíc v kalendáři, seskupení a řazení tabulky – kde Filament
   kreslí <select> natvrdo. Select zůstává kvůli wire:model, jen schovaný. */

select:has(+ .crm-vyber) {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    opacity: 0 !important;
    pointer-events: none !important;
    overflow: hidden;
    clip-path: inset(50%);
}

.crm-vyber {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    width: 100%;
    min-width: 0;
    padding: 5px 8px 5px 10px;
    border: 0;
    background: transparent;
    color: var(--crm-text);
    font: inherit;
    font-size: 13px;
    line-height: 20px;
    text-align: left;
    cursor: pointer;
}


.crm-vyber:disabled {
    color: var(--crm-slaby);
    cursor: not-allowed;
}

.crm-vyber:focus-visible {
    outline: none;
}

.crm-vyber-hodnota {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.crm-vyber-sipka {
    flex: none;
    width: 1rem;
    height: 1rem;
    color: var(--crm-ikona);
    transition: transform 0.15s;
}

.crm-vyber[aria-expanded="true"] .crm-vyber-sipka {
    transform: rotate(180deg);
}

/* Měsíc v hlavičce kalendáře: bez rámečku, jako původní roletka Filamentu. */
.crm-vyber.is-mesic {
    flex: 1 1 auto;
    width: auto;
    padding: 0.125rem 0.25rem;
    border-radius: 0.375rem;
    font-weight: 500;
}

.crm-vyber.is-mesic:hover,
.crm-vyber.is-mesic:focus-visible {
    background: var(--gray-100);
}

.dark .crm-vyber.is-mesic:hover,
.dark .crm-vyber.is-mesic:focus-visible {
    background: rgb(255 255 255 / 0.05);
}

.crm-vyber-panel {
    position: fixed;
    z-index: 60;
    max-width: calc(100vw - 1rem);
    max-height: 18rem;
    overflow-y: auto;
    padding: 0.25rem;
    border-radius: 9px;
    background: var(--crm-karta);
    box-shadow: var(--crm-stin-okno);
    font-size: 13px;
}

.crm-vyber-panel[hidden] {
    display: none;
}

.crm-vyber-moznost {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.375rem 0.5rem;
    border-radius: 0.375rem;
    color: var(--gray-700);
    line-height: 1.25rem;
    cursor: pointer;
}

.crm-vyber-moznost > span {
    flex: 1 1 auto;
    min-width: 0;
}

.dark .crm-vyber-moznost {
    color: var(--gray-200);
}

.crm-vyber-moznost.is-aktivni {
    background: var(--gray-50);
    color: var(--gray-950);
}

.dark .crm-vyber-moznost.is-aktivni {
    background: rgb(255 255 255 / 0.05);
    color: #fff;
}

.crm-vyber-moznost[aria-selected="true"] {
    color: var(--primary-600);
    font-weight: 500;
}

.dark .crm-vyber-moznost[aria-selected="true"] {
    color: var(--primary-400);
}

.crm-vyber-moznost[aria-disabled="true"] {
    opacity: 0.5;
    cursor: not-allowed;
}

.crm-vyber-fajfka {
    flex: none;
    width: 1rem;
    height: 1rem;
    visibility: hidden;
}

.crm-vyber-moznost[aria-selected="true"] .crm-vyber-fajfka {
    visibility: visible;
}

/* Číselná pole bez šipek prohlížeče (množství, ceny, rok a čas v kalendáři). */
input[type="number"] {
    -moz-appearance: textfield;
    appearance: textfield;
}

input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}


/* Na počítači je menu jen tak široké, jak je nejdelší položka (dřív pevných 15rem);
   obsah stránky se posune za ním. Na mobilu zůstává výsuvné menu Filamentu.
   Hustotu a barvy menu drží crm-tema.css. */
@media (min-width: 1024px) {
    .fi-main-sidebar { width: max-content !important; min-width: 13rem; max-width: 15rem; }
}

/* Odmítnutý znak v poli s omezenými znaky (data-povolene-znaky, simren.js) – krátké zablikání okraje. */
.crm-znak-odmitnut { box-shadow: 0 0 0 2px var(--danger-500) !important; transition: box-shadow .1s; }

/* Okénko na kód z Google Authenticatoru (potvrzení zařízením po kliknutí, simren.js). */
.crm-kod-obal { position: absolute; inset: 0; z-index: 50; display: flex; align-items: center; justify-content: center; background: rgb(0 0 0 / .35); border-radius: inherit; padding: 1rem; }
.crm-kod-okno { background: #fff; border-radius: .75rem; box-shadow: 0 10px 30px rgb(0 0 0 / .2); padding: 1.25rem; width: 100%; max-width: 20rem; display: flex; flex-direction: column; gap: .6rem; font-size: .875rem; }
.crm-kod-nadpis { font-weight: 600; font-size: 1rem; color: var(--gray-950); }
.crm-kod-text { color: var(--gray-600); }
.crm-kod-pole { width: 100%; border: 1px solid var(--gray-300); border-radius: .5rem; padding: .55rem .75rem; font-size: 1.15rem; letter-spacing: .3em; text-align: center; background: #fff; color: var(--gray-950); }
.crm-kod-pole:focus { outline: none; border-color: var(--primary-500); box-shadow: 0 0 0 3px var(--primary-100); }
.crm-kod-chyba { color: var(--danger-600); }
.crm-kod-akce { display: flex; justify-content: flex-end; gap: .5rem; margin-top: .25rem; }
.crm-kod-akce button { border-radius: .5rem; padding: .45rem .9rem; font-weight: 600; font-size: .875rem; cursor: pointer; }
.crm-kod-zrusit { background: #fff; color: var(--gray-700); border: 1px solid var(--gray-300); }
.crm-kod-potvrdit { background: var(--primary-600); color: #fff; border: 0; }
.dark .crm-kod-okno { background: var(--gray-900); }
.dark .crm-kod-nadpis { color: #fff; }
.dark .crm-kod-text { color: var(--crm-slaby); }
.dark .crm-kod-pole { background: var(--gray-950); color: #fff; border-color: var(--gray-700); }
.dark .crm-kod-zrusit { background: var(--gray-800); color: var(--gray-200); border-color: var(--gray-700); }

/* Katalog šablon projektů – karty v okně „Realizace: projekt a web“
   (filament/zakazky/vyber-sablony) a náhled v Nastavení firmy → Vývoj. */
.crm-sablony {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr));
    gap: 0.75rem;
}
.crm-sablona {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.4rem;
    width: 100%;
    padding: 0.75rem 0.9rem;
    border: 1px solid var(--crm-okraj);
    border-radius: 0.75rem;
    background: white;
    color: inherit;
    font: inherit;
    font-size: 0.875rem;
    text-align: left;
    cursor: pointer;
    transition: border-color 0.15s, box-shadow 0.15s;
}
button.crm-sablona:hover { border-color: var(--primary-400); }
button.crm-sablona:focus-visible { outline: 2px solid var(--primary-500); outline-offset: 2px; }
.crm-sablona.je-vybrana {
    border-color: var(--primary-600);
    box-shadow: 0 0 0 1px var(--primary-600);
}
.crm-sablona-nahled { cursor: default; }
.dark .crm-sablona { background: var(--crm-karta-2); border-color: var(--crm-okraj); }
.dark .crm-sablona.je-vybrana { border-color: var(--primary-400); box-shadow: 0 0 0 1px var(--primary-400); }
.crm-sablona-nazev { font-weight: 600; }
.crm-sablona-popis { color: var(--crm-tlumeny); line-height: 1.4; }
.dark .crm-sablona-popis { color: var(--crm-tlumeny); }
.crm-sablona-stitky { display: flex; flex-wrap: wrap; gap: 0.25rem; }
.crm-sablona-stitek {
    padding: 0.05rem 0.5rem;
    border-radius: 999px;
    background: rgb(0 0 0 / 0.05);
    color: var(--crm-tlumeny);
    font-size: 0.75rem;
    white-space: nowrap;
}
.dark .crm-sablona-stitek { background: rgb(255 255 255 / 0.08); color: var(--crm-text-2); }
.crm-sablona-repo { color: var(--crm-slaby); font-size: 0.75rem; }

/* Detail poptávky (ViewPoptavka): štítky pod názvem, popis z portálu, přílohy. */
.crm-pop-stitky { display: inline-flex; flex-wrap: wrap; gap: 0.35rem; margin-top: 0.25rem; }
.crm-pop { line-height: 1.55; }
.crm-pop-nadpis {
    margin: 1rem 0 0.25rem;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--crm-slaby);
}
.crm-pop-nadpis:first-child { margin-top: 0; }
.dark .crm-pop-nadpis { color: var(--crm-ikona); }
.crm-pop-odstavec { margin: 0.15rem 0; }
.crm-pop-seznam { list-style: disc; padding-left: 1.25rem; margin: 0.15rem 0; }
.crm-pop-seznam li { margin: 0.1rem 0; }
.crm-pop-prilohy { list-style: none; padding: 0; margin: 0; }
.crm-pop-prilohy li { display: flex; justify-content: space-between; gap: 1rem; padding: 0.4rem 0; border-bottom: 1px solid var(--crm-linka); }
.crm-pop-prilohy li:last-child { border-bottom: 0; }
.dark .crm-pop-prilohy li { border-bottom-color: var(--crm-linka); }
.crm-pop-prilohy .crm-vedlejsi { white-space: nowrap; }

/* ---------- Mo.one: nástěnka (kanban) obchodníků a franšízantů ---------- */

.crm-kanban-souhrn {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
    gap: 0.75rem;
}
.crm-kanban-cislo {
    display: flex; flex-direction: column; gap: 0.15rem;
    padding: 9px 12px; border-radius: 10px;
    background: var(--crm-karta); box-shadow: 0 0 0 1px var(--crm-okraj);
}
.dark .crm-kanban-cislo { background: var(--crm-karta-2); box-shadow: 0 0 0 1px rgb(255 255 255 / 0.08); }
.crm-kanban-cislo strong { font-size: 17px; font-weight: 600; line-height: 1.3; }
.crm-kanban-cislo-popis, .crm-kanban-cislo small { font-size: 0.75rem; color: var(--crm-slaby); }
.crm-kanban-cislo.je-hlavni { grid-column: span 2; background: var(--crm-akcent-bg); box-shadow: 0 0 0 1px color-mix(in srgb, var(--crm-akcent) 40%, transparent); }

.crm-kanban {
    display: flex; gap: 0.75rem; align-items: flex-start;
    overflow-x: auto; padding-bottom: 0.5rem;
}
.crm-kanban-sloupec {
    flex: 0 0 15rem; min-width: 15rem;
    border-radius: 0.75rem; padding: 0.5rem;
    background: var(--crm-karta-2);
    box-shadow: 0 0 0 1px rgb(15 23 42 / 0.06);
    transition: box-shadow .15s;
}
.dark .crm-kanban-sloupec { background: var(--crm-karta-2); box-shadow: 0 0 0 1px rgb(255 255 255 / 0.06); }
.crm-kanban-sloupec.je-nad { box-shadow: 0 0 0 2px var(--crm-akcent); }
.crm-kanban-sloupec.je-stranou { opacity: 0.7; }
.crm-kanban-hlava {
    display: flex; align-items: center; gap: 0.4rem;
    padding: 0.25rem 0.35rem 0.6rem; font-weight: 600; font-size: 0.875rem;
}
.crm-kanban-ikona { width: 1rem; height: 1rem; color: var(--crm-slaby); }
.crm-kanban-pocet { margin-left: auto; font-weight: 500; color: var(--crm-slaby); }
.crm-kanban-karty { display: flex; flex-direction: column; gap: 0.5rem; min-height: 3rem; }
.crm-kanban-karta {
    display: flex; flex-direction: column; gap: 0.4rem;
    padding: 0.65rem 0.75rem; border-radius: 0.6rem;
    background: #fff; box-shadow: 0 1px 2px rgb(15 23 42 / 0.08), 0 0 0 1px rgb(15 23 42 / 0.06);
    cursor: grab;
}
.dark .crm-kanban-karta { background: var(--crm-karta); box-shadow: 0 0 0 1px rgb(255 255 255 / 0.08); }
.crm-kanban-karta:active { cursor: grabbing; }
.crm-kanban-nazev { font-weight: 600; font-size: 0.875rem; }
.crm-kanban-nazev:hover { text-decoration: underline; }
.crm-kanban-podtitul { font-size: 0.75rem; color: var(--crm-slaby); }
.crm-kanban-stitky { display: flex; flex-wrap: wrap; gap: 0.3rem; }
.crm-kanban-stitek {
    font-size: 0.7rem; font-weight: 500; padding: 0.1rem 0.5rem; border-radius: 999px;
    background: rgb(100 116 139 / 0.12); color: var(--crm-tlumeny);
}
.dark .crm-kanban-stitek { color: var(--crm-text-2); }
.crm-kanban-stitek.je-danger { background: rgb(239 68 68 / 0.12); color: rgb(220 38 38); }
.crm-kanban-stitek.je-warning { background: rgb(245 158 11 / 0.14); color: rgb(180 83 9); }
.crm-kanban-stitek.je-info { background: rgb(59 130 246 / 0.12); color: rgb(37 99 235); }
.crm-kanban-stitek.je-success { background: rgb(34 197 94 / 0.12); color: rgb(22 163 74); }
.dark .crm-kanban-stitek.je-danger { color: rgb(252 165 165); }
.dark .crm-kanban-stitek.je-warning { color: rgb(252 211 77); }
.dark .crm-kanban-stitek.je-info { color: rgb(147 197 253); }
.dark .crm-kanban-stitek.je-success { color: rgb(134 239 172); }
.crm-kanban-dalsi {
    align-self: flex-start; font-size: 0.75rem; font-weight: 600;
    padding: 0.3rem 0.7rem; border-radius: 0.45rem;
    background: var(--crm-akcent); color: #fff; cursor: pointer;
}
.crm-kanban-dalsi:hover { filter: brightness(1.1); }
.crm-kanban-prazdno { text-align: center; color: var(--crm-slaby); font-size: 0.8rem; padding: 0.75rem 0; }
.crm-kanban-karta.je-duch { opacity: 0.35; }
.crm-kanban-karty:empty::after { content: '—'; display: block; text-align: center; color: var(--crm-slaby); font-size: 0.8rem; padding: 0.75rem 0; }
.crm-kanban-dalsi.je-doplnit { background: transparent; color: rgb(180 83 9); box-shadow: inset 0 0 0 1px rgb(217 119 6); }
.dark .crm-kanban-dalsi.je-doplnit { color: rgb(252 211 77); }
.crm-kanban-dalsi.je-odmena { background: rgb(22 163 74); }
.crm-kanban-dalsi.je-odmena:hover { background: rgb(21 128 61); }
.crm-kanban-ceka { font-size: 0.75rem; color: var(--crm-slaby); }

/* ---------- Mo.one: moje odkazy ---------- */

.crm-odkazy-uvod { color: var(--crm-slaby); font-size: 0.875rem; }
.crm-odkazy-kod { margin-top: 0.5rem; color: inherit; }
.crm-odkazy-kod code { font-weight: 600; }
.crm-odkazy-kod.je-chybi { color: rgb(180 83 9); font-weight: 600; }
.dark .crm-odkazy-kod.je-chybi { color: rgb(252 211 77); }
.crm-odkazy-skupina {
    border-radius: 0.75rem; padding: 1rem 1.25rem; background: #fff;
    box-shadow: 0 0 0 1px rgb(15 23 42 / 0.08);
}
.dark .crm-odkazy-skupina { background: var(--crm-karta-2); box-shadow: 0 0 0 1px rgb(255 255 255 / 0.08); }
.crm-odkazy-skupina header h2 { font-size: 1rem; font-weight: 700; }
.crm-odkazy-skupina header p { font-size: 0.8rem; color: var(--crm-slaby); margin-bottom: 0.5rem; }
.crm-odkazy-skupina header:not(:has(p)) { margin-bottom: 0.5rem; }
.crm-odkazy-radek {
    display: flex; align-items: center; gap: 1rem; padding: 0.65rem 0;
    border-top: 1px solid var(--crm-linka);
}
.dark .crm-odkazy-radek { border-top-color: var(--crm-linka); }
.crm-odkazy-text { display: flex; flex-direction: column; gap: 0.1rem; min-width: 0; flex: 1; }
.crm-odkazy-text span { font-size: 0.8rem; color: var(--crm-slaby); }
.crm-odkazy-text a { font-size: 0.8rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.crm-odkazy-kopirovat {
    flex: none; font-size: 0.8rem; font-weight: 600; padding: 0.35rem 0.8rem; border-radius: 0.5rem;
    box-shadow: inset 0 0 0 1px rgb(100 116 139 / 0.4); cursor: pointer;
}
.crm-odkazy-kopirovat.je-hlavni { background: var(--crm-akcent); color: #fff; box-shadow: none; }
.crm-odkazy-zprava {
    display: flex; align-items: center; gap: 1rem; margin-top: 0.5rem; padding: 0.75rem;
    border-radius: 0.5rem; background: var(--crm-akcent-bg); font-size: 0.8rem;
}
.crm-odkazy-zprava p { flex: 1; }
@media (max-width: 640px) {
    .crm-odkazy-radek, .crm-odkazy-zprava { flex-direction: column; align-items: stretch; }
}

/* ---- Rozložení administrace (jednotné pro všechny aplikace firmy, 11. 10. 2026) ----
   Logo a název v menu nahoře, horní lišta vedle menu (HorniLista v obsahu, ne
   Filamentova přes celou šířku): vlevo drobečky, vpravo firma a avatar. Mobil:
   vlevo logo, vpravo zkrácená firma a ☰ úplně vpravo, menu vyjede zprava a nahoře
   má účet (jméno, Zabezpečení, Odhlásit). */

/* Samostatné tlačítko menu, které Filament kreslí bez lišty – ☰ je v liště. */
.fi-layout-sidebar-toggle-btn-ctn { display: none !important; }

.fi-topbar { column-gap: 0.75rem; }
.fi-topbar-start { display: flex !important; flex: 1 1 auto; min-width: 0; margin-inline-end: 0 !important; }
.fi-topbar-start .fi-logo { margin-inline-start: 0 !important; white-space: nowrap; }
.fi-topbar-end { flex: 0 1 auto; min-width: 0; column-gap: 0.75rem !important; }

/* Drobečky: jeden řádek, dlouhý název se zkrátí třemi tečkami, slovo se neláme. */
.crm-drobecky { display: none; min-width: 0; overflow: hidden; }
.crm-drobecky .fi-breadcrumbs { display: block !important; min-width: 0; }
.crm-drobecky .fi-breadcrumbs-list { flex-wrap: nowrap !important; min-width: 0; }
.crm-drobecky .fi-breadcrumbs-item { min-width: 0; flex: 0 1 auto; }
.crm-drobecky .fi-breadcrumbs-item:last-child { flex-shrink: 1; }
.crm-drobecky .fi-breadcrumbs-item-label { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.crm-drobecky .fi-breadcrumbs-item:last-child .fi-breadcrumbs-item-label { color: var(--gray-950); }
.dark .crm-drobecky .fi-breadcrumbs-item:last-child .fi-breadcrumbs-item-label { color: var(--gray-100); }

/* Firma v liště – název se zkracuje třemi tečkami, nikdy se neláme. */
.crm-firma-spoustec { min-width: 0; }
.crm-firma-nazev { min-width: 0; }

/* Správa aplikace (jen superadmin): dole v menu, oddělená čarou. */
.fi-sidebar-nav-groups { flex-grow: 1; }
.fi-sidebar-group[data-group-label="Správa aplikace"] {
    margin-top: auto; padding-top: 12px; border-top: 1px solid var(--gray-200);
}
.dark .fi-sidebar-group[data-group-label="Správa aplikace"] { border-top-color: var(--gray-800); }

/* Účet nahoře ve výsuvném menu (jen mobil). */
.crm-menu-ucet { display: none; }

@media (min-width: 1024px) {
    /* Logo je v menu, v liště jen drobečky. ☰ a ✕ lišty na počítači nejsou. */
    .fi-topbar-start > a, .fi-topbar-start > .fi-logo { display: none !important; }
    .crm-drobecky { display: block; }
    .fi-topbar-open-sidebar-btn, .fi-topbar-close-sidebar-btn { display: none !important; }
    /* Hlavička menu stejně vysoká jako lišta, s čarou na stejné výšce. */
    .fi-sidebar-header { height: var(--topbar-height) !important; padding-inline: 20px !important; justify-content: flex-start !important; border-bottom: 1px solid var(--gray-200); }
    .dark .fi-sidebar-header { border-bottom-color: var(--gray-800); }
    .fi-sidebar-header .fi-logo { margin-inline-start: 0 !important; white-space: nowrap; }
}

@media (max-width: 1023.98px) {
    /* Pořadí v liště: logo – firma – ☰ úplně vpravo. */
    .fi-topbar { padding-inline: 16px !important; }
    .fi-topbar-start { order: 1; flex: 0 0 auto; }
    .fi-topbar-end { order: 2; margin-inline-start: auto; }
    .fi-topbar-open-sidebar-btn, .fi-topbar-close-sidebar-btn { order: 3; }
    /* Avatar je na mobilu nahoře ve výsuvném menu. */
    .fi-topbar .fi-user-menu { display: none !important; }
    .crm-firma-spoustec { max-width: 10rem !important; padding-inline-start: 0.6rem !important; }
    .crm-firma > .crm-firma-nazev { max-width: 10rem; }

    /* Menu vyjede zprava, přes lištu. */
    .fi-sidebar.fi-main-sidebar {
        inset-inline-start: auto !important; inset-inline-end: 0 !important;
        width: min(20rem, 85vw) !important; z-index: 40 !important;
        background-color: var(--crm-panel);
    }
    .fi-sidebar.fi-main-sidebar:not(.fi-sidebar-open) { translate: 100% 0 !important; }
    .fi-sidebar-close-overlay { z-index: 35 !important; }
    /* Logo je v liště, v menu nahoře účet. */
    .fi-sidebar-header-ctn { display: none; }
    .crm-menu-ucet {
        display: flex; flex-direction: column; gap: 2px; flex-shrink: 0;
        padding: 12px 12px 10px; border-bottom: 1px solid var(--gray-200);
    }
    .dark .crm-menu-ucet { border-bottom-color: var(--gray-800); }
}

.crm-menu-ucet-hlava { display: flex; align-items: center; gap: 10px; padding: 4px 8px 8px; min-width: 0; }
.crm-menu-ucet-jmeno {
    flex: 1; min-width: 0; font-weight: 600; font-size: 14px; color: var(--gray-950);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.dark .crm-menu-ucet-jmeno { color: #fff; }
.crm-menu-zavrit {
    flex: none; display: inline-flex; align-items: center; justify-content: center;
    width: 2.25rem; height: 2.25rem; border-radius: 0.5rem; color: var(--crm-slaby); background: transparent; border: 0; cursor: pointer;
}
.crm-menu-zavrit:hover { background: var(--gray-100); }
.dark .crm-menu-zavrit:hover { background: var(--gray-800); }
.crm-menu-zavrit .fi-icon { width: 1.5rem; height: 1.5rem; }
.crm-menu-ucet-odkaz {
    display: flex; align-items: center; gap: 9px; width: 100%; padding: 6px 8px; border-radius: 6px;
    font-size: 13px; line-height: 18px; font-weight: 500; color: var(--gray-700);
    background: transparent; border: 0; cursor: pointer; text-align: start;
}
.crm-menu-ucet-odkaz:hover { background: var(--gray-100); }
.dark .crm-menu-ucet-odkaz { color: var(--gray-200); }
.dark .crm-menu-ucet-odkaz:hover { background: rgb(255 255 255 / 0.05); }
.crm-menu-ucet-odkaz .fi-icon { width: 17px; height: 17px; color: var(--crm-slaby); }

/*
 * Vysvětlivka pod ikonou ⓘ (App\Support\Vysvetlivka, bublina v simren.js).
 * Ikona je tlačítko vedle nadpisu nebo popisku; bublina leží v <body>
 * (position: fixed), max. 320 px a nikdy širší než obrazovka.
 */
.crm-info {
    display: inline-flex;
    vertical-align: middle;
    margin-left: 0.25rem;
    line-height: 0;
}

.crm-info-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.125rem;
    margin: -0.125rem;
    border: 0;
    border-radius: 9999px;
    background: transparent;
    color: var(--crm-slaby);
    cursor: help;
}

.crm-info-btn:hover,
.crm-info-btn[aria-expanded="true"] { color: var(--primary-600); }
.dark .crm-info-btn:hover,
.dark .crm-info-btn[aria-expanded="true"] { color: var(--primary-400); }

.crm-info-btn:focus-visible {
    outline: 2px solid var(--primary-500);
    outline-offset: 1px;
}

.crm-info-ikona { width: 1rem; height: 1rem; }

/* Ikona za popiskem pole (hint Filamentu) hned u popisku, ne na konci řádku. */
.fi-fo-field-label-ctn:has(.crm-info),
.fi-in-entry-label-ctn:has(.crm-info) { justify-content: flex-start; }
.fi-fo-field-label-ctn > .fi-sc:has(.crm-info),
.fi-in-entry-label-ctn > .fi-sc:has(.crm-info) { margin-inline-start: 0; flex: none; width: auto; }

.crm-info-bublina {
    position: fixed;
    z-index: 1000;
    max-width: min(20rem, calc(100vw - 16px));
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--crm-okraj-2);
    border-radius: 0.5rem;
    background: var(--crm-karta);
    color: var(--crm-text-2);
    font-size: 12.5px;
    font-weight: 400;
    line-height: 1.45;
    text-align: left;
    white-space: normal;
    box-shadow: var(--crm-stin-okno);
    pointer-events: none;
}

.crm-info-bublina[hidden] { display: none; }

.crm-info-odrazka {
    display: block;
    position: relative;
    padding-left: 0.875rem;
}

.crm-info-odrazka::before {
    content: "•";
    position: absolute;
    left: 0.125rem;
}

.crm-info-odrazka + .crm-info-odrazka { margin-top: 0.125rem; }

/* Klienti v aplikaci (SaaS): štítek licence a platby se zalomí v mezerách, nepřeteče do sousedního sloupce. */
[data-klienti-aplikace] .crm-pill { white-space: normal; line-height: 1.35; border-radius: 8px; }
