/* U-14b: logo DigiOffice (nahrazuje CC-8 blok).
   <img> nemá src → obraz přes `content: url()` (prověřený mechanismus projektu). Loga jsou
   337×405 (poměr 0,832), NE čtverec → explicitní width = height × 0,832 (128→106, 40→33);
   width:auto je u content:url() napříč prohlížeči nespolehlivé, proto explicitně + object-fit.
   `background: none / border-radius:0 / padding:0 !important` PŘEBÍJÍ theme CSS: modré kolečko
   (avatar styl na .s-form-title-logo) i barevný background-leak na horní panel („2 loga přes
   sebe") pocházejí z theme (Serenity/Bootstrap), NE z tohoto souboru → přebití přes !important
   funguje bez ohledu na pořadí načítání. Dvouklassové selektory (0,2,0) vyhrají nad theme
   single-class. Login = barevné (bílé pozadí panelu), horní panel = bílé (pruh #006385). */
.s-site-logo-img.s-form-title-logo {
  content: url(digioffice-color.png);
  height: 128px;
  width: 106px;                 /* 128 × 337/405 — poměr stran zachován explicitně */
  object-fit: contain;
  background: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
}
.s-site-logo-img.s-sidebar-header-logo {
  content: url(digioffice-white.png);
  height: 40px;
  width: 33px;                  /* 40 × 337/405 */
  object-fit: contain;
  background: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
}

.s-TranslationGrid input.custom-text {
  width: 100%;
  height: 23px;
  padding: 0 3px;
}

.s-PermissionCheckEditor {
  min-height: 450px;
}

/* bez odsazení gridu na záložce */
label.caption[for$="List"], label.caption[for$="Mount"] {
  display: none !important;
}


/*** GROUPING ***/
/* Základ pro group řádky – jemné odlišení i bez level markeru */
.slick-group .slick-cell {
  background: var(--bs-gray-100);
  font-weight: 600;
  border-top: 1px solid var(--bs-gray-300);
  /* tip: větší vertikální „hmatník“ pro přehlednost */
  padding-top: .35rem;
  padding-bottom: .35rem;
}

/* Plné zvýraznění CELÉ buňky podle úrovně – triggery jsou .sg-l1/.sg-l2/.sg-l3 uvnitř cellu */
@supports selector(:has(*)) {
  .slick-group .slick-cell:has(.sg-l1) {
    background: var(--bs-primary-bg-subtle);
    border-top: 3px solid var(--bs-primary);
    font-weight: 700;
  }

  .slick-group .slick-cell:has(.sg-l2) {
    background: var(--bs-secondary-bg-subtle);
    border-top: 2px solid var(--bs-secondary);
    font-weight: 700;
  }

  .slick-group .slick-cell:has(.sg-l3) {
    /* L3: nebarvit CELÝ řádek, jen ponechat základní vzhled */
    background: transparent;
    border-top: 1px solid var(--bs-gray-300);
    font-weight: 600;

  }
}

/* lehké odsazení textu uvnitř (neovlivňuje „full-row“ barvu) */
.slick-group .sg-l1,
.slick-group .sg-l2,
.slick-group .sg-l3 {
  display: inline-block;
  padding: 2px 8px;
  border-radius: .4rem;
  line-height: 1.25;
}

/* L3 token: zvýrazni JEN textový chip (ne celý řádek) */
.slick-group .sg-l3 {
   background: var(--bs-warning-bg-subtle);
   border-left: 3px solid var(--bs-warning);
   color: var(--bs-warning-text-emphasis);
   font-weight: 700;
 }

/* Odsazení obsahu v prvním textovém sloupci pro datové řádky */
.slick-row .sg-pad {
  display: inline-block;
  width: 100px; /* ← nastav šířku odsazení */
}

/* Odsazení prvního sloupce datových řádků v gridech s groupingem */
.slick-row:not(.slick-group) .slick-cell.l0 {
  padding-left: 50px;
}

/* úkol 9 (2. kolo): v pohledu Manager je výběrový checkbox v PRVNÍM sloupci (.slick-cell.l0). Globální
   odsazení datových řádků výše (padding-left: 50px, příp. .sg-pad spacer) checkbox zatlačovalo doprava,
   takže se schovával za obsah/název firmy. Pro buňku s checkboxem (s-mgr-sel-cell) odsazení vynulujeme
   (checkbox se vycentruje ve své 34px buňce vlevo, PŘED obsahem). Scoped jen na výběrový checkbox sloupec
   → jiné grupované gridy (CMDB Objects ap.) zůstávají beze změny. Vizuál potvrdit v prohlížeči.
   úkol 6 (3. kolo): stejné pravidlo rozšířeno i na Billing (vlastní třída s-bill-sel-cell) – jakmile Billing
   dostane grouping (úkol 7), měl by stejnou kolizi; scoped fix předem srovná i Billing checkbox.
   oprava fáze 3 (bod 3): + s-bb-sel-cell (grid dávek Billing Batches/Billing) a s-bt-sel-cell (sub-grid
   tiketů dávky) — TOHLE globální 50px pravidlo (specificita 0,4,0) přebíjelo scoped CSS gridů dávek
   (0,3,0), proto checkbox „padding-left: 50px" přetrvával; jediné funkční místo opravy je tahle
   výjimka (přesně jak ji mají Manager a BillingTickets). */
.slick-row .slick-cell.l0.s-mgr-sel-cell,
.slick-row .slick-cell.l0.s-bill-sel-cell,
.slick-row .slick-cell.l0.s-bb-sel-cell,
.slick-row .slick-cell.l0.s-bt-sel-cell,
.slick-row .slick-cell.l0.s-ddsp-sel-cell, /* DDSP MVP: výběrový sloupec Sales Manageru — JEDNA definice výjimky (anti-drift) */
.slick-row .slick-cell.l0.s-state-cell { /* sloupec „Stav" s ikonou v sub-gridech detailu tiketu (Tasks / Items / Deposits): 50 px by
                                             14px ikonu vytlačilo z 60px buňky (overflow: hidden) — ikona nebyla vidět */
  padding-left: 0;
}
.slick-row .slick-cell.l0.s-mgr-sel-cell .sg-pad,
.slick-row .slick-cell.l0.s-bill-sel-cell .sg-pad,
.slick-row .slick-cell.l0.s-bb-sel-cell .sg-pad,
.slick-row .slick-cell.l0.s-bt-sel-cell .sg-pad,
.slick-row .slick-cell.l0.s-ddsp-sel-cell .sg-pad,
.slick-row .slick-cell.l0.s-state-cell .sg-pad {
  display: none; /* pokud by spacer dopadl i do checkbox buňky, ať checkbox nezakrývá */
}

/* ===== U-12 (UX-4): dark override pro Serenity layout prvky, které nativní BS 5.3 data-bs-theme
   nepřebarví (mají ve Serenity 10.3 bundle vlastní světlé pozadí nezávislé na --bs-*). Vše přes --bs-*
   proměnné (BS je v dark režimu přepne) → ladí s tématem, žádné natvrdo barvy. Scoped na [data-bs-theme="dark"]
   → světlý režim beze změny. Sidebar třídy z _Sidebar.cshtml markupu; .editor + select2 = standardní
   Serenity/select2 v4 konvence (přesné třídy ověřit vizuálně, při odchylce upravit). ===== */

/* 1) Levý sidebar panel + menu + hledání */
[data-bs-theme="dark"] .s-sidebar-pane {
  background: var(--bs-secondary-bg);
  color: var(--bs-body-color);
}
[data-bs-theme="dark"] .s-sidebar-link,
[data-bs-theme="dark"] .s-sidebar-link-text,
[data-bs-theme="dark"] .s-sidebar-icon {
  color: var(--bs-body-color);
}
[data-bs-theme="dark"] .s-sidebar-link:hover,
[data-bs-theme="dark"] .s-sidebar-item.active > .s-sidebar-link {
  background: var(--bs-tertiary-bg);
  color: var(--bs-emphasis-color, var(--bs-body-color));
}
[data-bs-theme="dark"] .s-sidebar-search-input {
  background: var(--bs-body-bg);
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}
[data-bs-theme="dark"] .s-sidebar-search-input::placeholder {
  color: var(--bs-secondary-color);
}

/* 2) Formulářová pole (Serenity editory .editor) */
[data-bs-theme="dark"] .editor,
[data-bs-theme="dark"] input.editor,
[data-bs-theme="dark"] textarea.editor,
[data-bs-theme="dark"] select.editor {
  background: var(--bs-body-bg);
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}
[data-bs-theme="dark"] .editor::placeholder {
  color: var(--bs-secondary-color);
}

/* 3) Select2 (v3 — Serenity renderuje select2 v3, NE v4! Ověřeno v @serenity-is/corelib/dist/index.js:
   zavřený box <a.select2-choice><span.select2-chosen>, multi <ul.select2-choices><li.select2-search-choice>,
   dropdown <div.select2-drop><ul.select2-results>, search <input.select2-search-field>, zvýrazněná
   .select2-highlighted). Původní v4 třídy (.select2-selection/-dropdown/-results__option) Serenity do DOM
   NIKDY nevkládá → nepřebarvovaly nic (nebyl to specificity problém, byly to neexistující třídy). */

/* zavřený selectbox (single) — .select2-choice */
[data-bs-theme="dark"] .select2-container .select2-choice {
  background: var(--bs-body-bg);
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}
[data-bs-theme="dark"] .select2-container .select2-choice .select2-chosen {
  color: var(--bs-body-color);
}
[data-bs-theme="dark"] .select2-container .select2-choice > .select2-arrow {
  background: var(--bs-tertiary-bg);
  border-color: var(--bs-border-color);
}
/* placeholder v zavřeném boxu (select2-default = zobrazený placeholder) */
[data-bs-theme="dark"] .select2-container .select2-choice > .select2-chosen.select2-default,
[data-bs-theme="dark"] .select2-container.select2-default .select2-chosen {
  color: var(--bs-secondary-color);
}

/* multi-select box (.select2-choices) + tagy (.select2-search-choice) */
[data-bs-theme="dark"] .select2-container-multi .select2-choices {
  background: var(--bs-body-bg);
  border-color: var(--bs-border-color);
}
[data-bs-theme="dark"] .select2-container-multi .select2-choices .select2-search-choice {
  background: var(--bs-tertiary-bg);
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}

/* rozbalený dropdown (.select2-drop) — připojen na <body>, ale data-bs-theme je na <html> (předek body) → scope platí */
[data-bs-theme="dark"] .select2-drop {
  background: var(--bs-body-bg);
  border-color: var(--bs-border-color);
  color: var(--bs-body-color);
}
[data-bs-theme="dark"] .select2-drop .select2-results {
  color: var(--bs-body-color);
}
/* zvýrazněná položka ve výsledcích (.select2-highlighted) */
[data-bs-theme="dark"] .select2-drop .select2-results .select2-highlighted {
  background: var(--bs-primary);
  color: #fff;
}
/* search pole uvnitř dropdownu (.select2-search-field) */
[data-bs-theme="dark"] .select2-drop .select2-search .select2-search-field,
[data-bs-theme="dark"] .select2-search input.select2-search-field {
  background: var(--bs-body-bg);
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}

/* 4) Grid quick search (hlavní vyhledávací pole nad gridy) — .s-QuickSearchInput v .s-QuickSearchBar (ověřeno corelib) */
[data-bs-theme="dark"] .s-QuickSearchBar .s-QuickSearchInput,
[data-bs-theme="dark"] input.s-QuickSearchInput {
  background: var(--bs-body-bg);
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}
[data-bs-theme="dark"] .s-QuickSearchInput::placeholder {
  color: var(--bs-secondary-color);
}

/* ===== U-12 doladění #2: dark override pro QUICK FILTER BAR nad gridy (Serenity QuickFilter komponenta —
   samostatná od formulářových .editor z doladění #1). Textová filtrovací pole i select2 filtry zůstaly
   světlé. Vše přes --bs-* proměnné, jen pod [data-bs-theme="dark"] (světlý režim beze změny).
   Třídy OVĚŘENY v @serenity-is/corelib (dist/index.js): kontejner `.quick-filters-bar`, položka
   `.quick-filter-item[data-qffield]`, label je `<span class="quick-filter-label">` (NE <label> element).
   Select2 DROPDOWN filtru (rozbalený seznam) se renderuje do <body> → pokrývá ho už globální
   `.select2-dropdown` z doladění #1. ===== */

/* kontejner filtrovacího řádku — průhledný, ať dědí tmavé pozadí gridu/stránky */
[data-bs-theme="dark"] .quick-filters-bar {
  background: transparent;
  color: var(--bs-body-color);
}
/* label filtru (Firma/Stav/…) = <span class="quick-filter-label"> */
[data-bs-theme="dark"] .quick-filters-bar .quick-filter-label {
  color: var(--bs-body-color);
}

/* textová filtrovací pole (Company Alias, Order State Name… = prosté <input>, ne .editor) uvnitř .quick-filter-item */
[data-bs-theme="dark"] .quick-filters-bar input,
[data-bs-theme="dark"] .quick-filters-bar input.editor,
[data-bs-theme="dark"] .quick-filters-bar select {
  background: var(--bs-body-bg);
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}
[data-bs-theme="dark"] .quick-filters-bar input::placeholder {
  color: var(--bs-secondary-color);
}

/* select2 filtry uvnitř baru (Firma, Stav, Active…) pokrývají globální v3 pravidla výše
   (.select2-container .select2-choice / .select2-choices) — filtr je běžný select2-v3 widget.
   (Původní v4 .quick-filters-bar .select2-selection odstraněn — Serenity v4 třídy nerenderuje.) */

/* dark-checkbox v2 (oprava dávky 3): v1 měnila jen barvu výplně — owner chce JASNOU SVĚTLOU FAJFKU.
   v2 kreslí bílou fajfku EXPLICITNĚ vlastním SVG data-uri přes background-image (BS vzor; kryje i
   případ, kdy checkbox v bundlu jede přes appearance:none bez check obrázku — pak byla vidět právě
   jen změna barvy). Na NATIVNÍM checkboxu (bez appearance:none) se background-image ignoruje a
   světlou fajfku kreslí prohlížeč sám přes accent-color (bílá na primary). Scope jen dark; light
   beze změny. Pozn.: bílá fajfky je v SVG záměrně natvrdo (%23fff) — kreslí se na --bs-primary,
   kontrast je daný dvojicí, ne tématem. Vizuální doladění: owner. */
[data-bs-theme="dark"] input[type="checkbox"],
[data-bs-theme="dark"] .form-check-input {
  background-color: var(--bs-body-bg);
  border-color: var(--bs-border-color);
  accent-color: var(--bs-primary); /* nativní checkbox: primary box + bílá fajfka od prohlížeče */
}
[data-bs-theme="dark"] input[type="checkbox"]:checked,
[data-bs-theme="dark"] .form-check-input:checked {
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
  /* dark-checkbox v2: explicitní bílá fajfka (BS 5 check SVG) — nesmí ji přebít theme bundle */
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* ===== U-24 (F-005): zřetelný AKTIVNÍ stav toggle tlačítek toolbaru. Třídu .pressed přepíná
   toggleClass v gridech (MyTickets „+ nedávno dokončené", Operator „Včetně dokončených", Manager
   „Včetně schválených", Billing „Včetně fakturovaných", All Tickets „Pouze dokončené", MyShifts
   „Show history", Absences „Pending only", WorkReports Archive „Awaiting approval") — dosud jen
   nevýrazné výchozí odlišení. JEDNA sdílená definice v CSS (anti-drift D9): pokryje všech 8 gridů
   bez zásahu do TS. Markup tlačítka (corelib Toolbar): <div class="tool-button …"><span
   class="button-inner">…</span></div>. Barvy VÝHRADNĚ přes --bs-* proměnné → funguje light i dark
   (U-12, data-bs-theme je přepíná). Rámeček přes inset box-shadow (ne border) — nemění rozměry,
   layout toolbaru neposkočí. Fajfka ::before = stav čitelný i bez vnímání barvy. ===== */
.tool-button.pressed {
  background: var(--bs-primary-bg-subtle);
  box-shadow: inset 0 0 0 1px var(--bs-primary);
  border-radius: .25rem;
}
.tool-button.pressed .button-inner {
  color: var(--bs-primary-text-emphasis);
  font-weight: 600;
}
.tool-button.pressed .button-inner::before {
  content: "\2713\00a0"; /* ✓ + nezlomitelná mezera */
  font-weight: 700;
}

/* ===== N-44: scroll levého menu. Aplikace ani Serenity theme (bundle) nedefinují pro
   .s-sidebar-pane žádný overflow → dlouhé menu (Projects, WorkReports…) přeteklo mimo viewport
   bez možnosti scrollu. Skrolovací kontejner dle Serene konvence = .s-sidebar-pane (obaluje
   hledání #s-sidebar-search i menu #s-sidebar-menu, viz _Sidebar.cshtml). max-height jistí
   případ, kdy pane nemá výšku z rodiče. Vizuální doladění (výška vs. hlavička) ověřit po
   nasazení — základ theme je v bundlu, ne v repu. ===== */
.s-sidebar .s-sidebar-pane {
  overflow-y: auto;
  overflow-x: hidden;
  max-height: 100vh;
  scrollbar-width: thin; /* Firefox; WebKit nechává default — jen kosmetika */
}


/* ===== CC-8: barva horního pruhu navbaru DigiOffice (#006385, brand petrolejová).
   Theme azure-light dává .s-sidebar-header background-color: #3c8dbc (ověřeno F12 na běžící appce).
   Přebarvujeme cíleně JEN tento selektor — NE globální --bs-primary (ten barví i tlačítka, checkboxy,
   group řádky; nechceme rebrand všeho). Obě větve selektoru (light i dark) mají specificitu (0,2,1) — o té je z CC-8 PROKÁZANÉ,
   že porazí theme pravidlo; holý .s-sidebar-header (0,1,0) by mohl prohrát. Dark override
   .s-sidebar-pane (U-12) zůstává netknutý — měníme jen header, ne pane. Bílé logo v navbaru (výše) drží kontrast na
   #006385. Login page žádný .s-sidebar-header nerenderuje (_LayoutNoNavigation) → tam se neprojeví,
   což je správně (login pruh nemá). ===== */
:root:not([data-bs-theme="dark"]) .s-sidebar-header,
:root[data-bs-theme="dark"] .s-sidebar-header {
  background-color: #006385;
}

