/* Org dashboard overlay (docs/backlog.md, Krok 3 prestavby, 2026-08-07) —
   samostatné súbory/triedy (sd-dash-*), NIE zdieľané s admin.css, aby sa
   predišlo kolízii s .sd-modal-overlay/.sd-admin-* (index.html si drží
   vlastnú definíciu .sd-modal-overlay v style.css pre confirm dialógy —
   načítanie admin.css na tejto stránke by ju prebilo). Bez resize/drag
   (rozhodnuté v diskusii 2026-08-07) — jednoduchý fixný overlay panel. */

.sd-dash-overlay {
  position: fixed;
  inset: 0;
  background: rgba(26, 26, 46, 0.5);
  /* Nad #sd-topbar (z-index 999, style.css) — inak by topbar prekresľoval
     horný okraj tohto veľkého panelu (na rozdiel od malého .sd-modal-
     overlay, ktorý má z-index 100 a v strede obrazovky to nevadí). */
  z-index: 1000;
  align-items: center;
  justify-content: center;
  padding: 24px;
}
.sd-dash-overlay:not([hidden]) { display: flex; }

.sd-dash-panel {
  background: #fff;
  border-radius: 14px;
  width: 100%;
  max-width: 920px;
  max-height: 90vh;
  box-shadow: 0 12px 40px rgba(20, 40, 35, 0.28);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.sd-dash-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 24px;
  border-bottom: 1px solid #22a08a33;
  flex-shrink: 0;
}
.sd-dash-title-row {
  display: flex;
  align-items: center;
  gap: 10px;
}
/* Len ikonka, bez textu "SureDocs" (2026-08-10, používateľská voľba) —
   logo-topbar.png je jeden spojený obrázok ikonka+text bez samostatného
   ikonka-only assetu, orezané cez overflow:hidden na užší wrapper
   (ikonka je ľavá ~30 % šírky pôvodného 250×80 obrázka). */
.sd-dash-title-logo-wrap {
  height: 28px;
  width: 27px;
  overflow: hidden;
  display: block;
}
.sd-dash-title-logo {
  height: 28px;
  width: auto;
  display: block;
}
.sd-dash-header h2 {
  margin: 0;
  font-size: 1.15rem;
  color: var(--sd-navy);
}
/* Doplnok v hlavičke pri impersonácii (2026-08-07, nápad používateľa) —
   rovnaký tón ako .sd-impersonation-banner (style.css), len bez rámu
   navyše (žije v hlavičke, nie ako samostatný pruh). */
.sd-dash-impersonation-notice {
  margin: 4px 0 0;
  font-size: 0.8rem;
  font-weight: 600;
  color: #856404;
}
.sd-dash-impersonation-notice[hidden] { display: none; }
.sd-dash-close {
  background: none;
  border: none;
  font-size: 1.2rem;
  color: #888;
  cursor: pointer;
  line-height: 1;
  padding: 4px 8px;
  border-radius: 6px;
}
.sd-dash-close:hover { background: #f0f0f0; color: #333; }

/* Org filter (appka-admin, Krok 4) + selektor obdobia (2026-08-07
   doladenie, presunuté sem z Prehľadu na nápad používateľa) v jednom
   riadku nad záložkami — filter vľavo (premietne sa do všetkých
   záložiek, skrytý pre org-adminov), obdobie vpravo (margin-left:auto,
   ovplyvňuje len Prehľad, ale zostáva viditeľné a použiteľné odvšadiaľ). */
.sd-dash-controls-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 16px;
  padding: 12px 24px 0;
  flex-shrink: 0;
}
.sd-dash-filter-wrap, .sd-dash-period-wrap {
  display: flex;
  align-items: center;
  gap: 8px;
}
.sd-dash-filter-wrap[hidden] { display: none; }
.sd-dash-period-wrap { margin-left: auto; }
.sd-dash-filter-wrap label, .sd-dash-period-wrap label {
  font-size: 0.78rem;
  font-weight: 700;
  color: #4a4a5a;
  text-transform: uppercase;
  letter-spacing: .03em;
}
.sd-dash-filter-wrap select, .sd-dash-period-wrap select {
  font-size: 0.85rem;
  padding: 5px 8px;
  border-radius: 5px;
  border: 1px solid #22a08a55;
  color: var(--sd-navy);
  cursor: pointer;
}
.sd-dash-filter-wrap select { max-width: 260px; }

.sd-dash-tabs {
  display: flex;
  gap: 4px;
  padding: 10px 24px 0;
  border-bottom: 1px solid #22a08a33;
  flex-shrink: 0;
  flex-wrap: wrap;
}
.sd-dash-tab {
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  padding: 8px 4px 10px;
  margin-right: 16px;
  font-size: 0.9rem;
  font-weight: 600;
  color: #888;
  cursor: pointer;
  white-space: nowrap;
}
.sd-dash-tab[hidden] { display: none; }
.sd-dash-tab:hover { color: var(--sd-navy); }
.sd-dash-tab-active {
  color: var(--sd-teal);
  border-bottom-color: var(--sd-teal);
}

.sd-dash-body {
  padding: 20px 24px 28px;
  overflow-y: auto;
  flex: 1;
}
/* Prázdny #sd-org-dash-msg/#sd-user-dash-msg (<p class="sd-msg">) medzi
   tabs a obsahom mal veľkú medzeru z prehliadačového default <p> marginu
   (~1em hore aj dole), ktorý .sd-msg (style.css) nerušil — spätná väzba
   2026-08-10. Scopnuté na priame deti .sd-dash-body, nie globálne
   .sd-msg (to sa používa aj vo formulároch/modáloch, kde je default
   odsadenie žiadané). */
.sd-dash-body > .sd-msg {
  margin: 0 0 6px;
}
.sd-dash-section[hidden] { display: none; }
.sd-dash-section h3 {
  font-size: 0.95rem;
  color: var(--sd-navy);
  margin: 24px 0 10px;
}

/* Grid namiesto flex-wrap (2026-08-10, používateľská požiadavka) — flex-
   wrap necháva posledný riadok "dotiecť" nerovnomerne (menej položiek,
   zarovnané doľava). auto-fit + minmax urobí presne to, čo bolo pýtané:
   všetky štatistiky na jeden riadok, ak sa zmestia, inak rovnomerne
   rozdelené stĺpce na viac riadkov podľa šírky okna. */
.sd-dash-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 12px 14px;
}
/* Jemné farebné pozadie na kartu (2026-08-10) — vždy svetlý tón (10-15%)
   tej istej farby, akú má číslo v nej, nech pôsobia ako spárovaná
   dvojica, nie náhodne priradené. */
.sd-dash-stat {
  padding: 10px 14px 12px;
  border-radius: 10px;
}
.sd-dash-stat-orgs { background: #eef0f7; }
.sd-dash-stat-active { background: #e6f7ee; }
.sd-dash-stat-inactive { background: #f0f0f3; }
.sd-dash-stat-total { background: #e8f7f4; }
.sd-dash-stat-period { background: #eaf2fa; }
.sd-dash-stat span {
  display: block;
  font-size: 1.7rem;
  font-weight: 800;
  color: var(--sd-teal);
  font-variant-numeric: tabular-nums;
}
/* Farebné odlíšenie podľa druhu štatistiky (2026-08-10) — odvodené z
   existujúcej palety appky (--sd-teal/--sd-navy + tie isté zelená/sivá,
   aké appka už používa pre sd-dash-status-ok/neutral pilulky), nie nové
   nesúrodé farby. Modrá pre "za obdobie" je jediný skutočne nový odtieň
   — zámerne v rovnakej tón. rodine (chladné farby), aby pôsobil ako
   súčasť tej istej škály, nie cudzí prvok. */
#sd-org-dash-stat-orgs { color: var(--sd-navy); }
#sd-org-dash-stat-active { color: #1a7a3e; }
#sd-org-dash-stat-inactive { color: #767686; }
#sd-org-dash-stat-docs-total, #sd-org-dash-stat-pages-total { color: var(--sd-teal); }
#sd-org-dash-stat-docs-period, #sd-org-dash-stat-pages-period { color: #3d7ab5; }
#sd-user-dash-stat-docs-period, #sd-user-dash-stat-pages-period { color: #3d7ab5; }
.sd-dash-stat label {
  font-size: 0.76rem;
  color: #4a4a5a;
}

/* Dashboard používateľa — riadok s e-mailom/rolou/organizáciou/kódom na
   pečiatke (2026-08-10, Krok 9). Doladené (2026-08-10, spätná väzba na
   šetrenie miesta): text vľavo na DVOCH riadkoch, "Obdobie" vpravo —
   toto NAHRÁDZA pôvodný samostatný `.sd-dash-controls-row` s Obdobím
   (org dashboard ho stále používa nezmenené, len user dashboard toto
   zlúčil do jedného riadku, aby sa uvoľnil priestor pre graf/tabuľku
   nižšie). Ďalej doladené: "Detail používateľa" presunuté HNEĎ VEDĽA
   textu (nie až k Obdobiu) a naťahuje sa (`align-items: stretch`) na
   skutočnú výšku dvojriadku vedľa neho. */
.sd-dash-user-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 4px 0 0;
  padding: 0 24px;
}
.sd-dash-user-meta-left {
  display: flex;
  align-items: stretch;
  gap: 14px;
  min-width: 0;
}
.sd-dash-user-meta-lines {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 2px;
  text-align: left;
  min-width: 0;
}
.sd-dash-user-meta-lines p {
  margin: 0;
  font-size: 0.84rem;
  color: #5a5a6a;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Vlastný rozsah (kalendár) — vlastný riadok POD .sd-dash-controls-row
   (nápad používateľa 2026-08-07), nie vnútri Prehľadu; zarovnaný vpravo
   pod selektorom obdobia, ktorý ho zobrazuje/skrýva. */
.sd-dash-period-custom {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  padding: 8px 24px 0;
  flex-shrink: 0;
}
.sd-dash-period-custom[hidden] { display: none; }
.sd-dash-period-custom input[type="date"] {
  /* Natívny <input type="date"> je bez explicitnej šírky zbytočne
     široký — stačí miesto na "01/02/1234" (10 znakov) + ikonka
     kalendára (nápad používateľa 2026-08-07). */
  width: 118px;
  flex-shrink: 0;
  font-size: 0.82rem;
  padding: 4px 6px;
  border-radius: 5px;
  border: 1px solid #22a08a55;
  color: var(--sd-navy);
}
/* Prebíja globálne `button { padding: 0.6rem 1rem; margin-top: 0.4rem;
   font-size: 1rem }` (style.css) — v tomto riadku má byť "Použiť" vo
   výške riadku a minimálnej šírke, nie plnotučné tlačidlo (nápad
   používateľa 2026-08-07). */
#sd-org-dash-period-apply {
  width: auto;
  margin-top: 0;
  padding: 4px 10px;
  font-size: 0.82rem;
}

.sd-dash-chart {
  width: 100%;
  height: 140px;
  display: block;
  background: #f8fdfc;
  border: 1px solid #22a08a22;
  border-radius: 8px;
  cursor: pointer;
}
/* Dashboard používateľa (2026-08-10) — vyšší graf, priestor uvoľnený
   zlúčením meta/Obdobie riadku vyššie (.sd-dash-user-meta-actions). */
.sd-dash-chart-tall { height: 190px; }
.sd-dash-chart-bar { fill: var(--sd-teal); }
.sd-dash-chart-bar:hover { fill: #1a7a68; }
.sd-dash-chart-empty {
  font-size: 0.82rem;
  fill: #999;
}
/* Deliace čiary osí (2026-08-10) — len vodorovné (os Y), škálované na
   "pekné" okrúhle hodnoty (desiatky/stovky/tisícky podľa rozsahu dát,
   pozri niceStep() v org-dashboard.js), 1px čiarkované, aby nepôsobili
   výraznejšie než samotné stĺpce. Zvislé (os X) čiary boli odstránené —
   len textové popisky dátumov, čiara tam pôsobila rušivo. */
.sd-dash-chart-grid {
  stroke: #7fa9a0;
  stroke-width: 1;
  stroke-dasharray: 2 2;
  shape-rendering: crispEdges;
}
/* Nulová (základná) čiara zostáva plná — vizuálne slúži ako os, nie len
   pomocná mriežková čiara. */
.sd-dash-chart-grid-zero {
  stroke-dasharray: none;
}
/* Zvýraznené popisky osí (2026-08-10, spätná väzba) — pôvodné 8px/#8a8a9a
   boli príliš slabé na prečítanie na prvý pohľad. Platí spoločne pre
   všetky 3 miesta, kde sa graf vykresľuje (org dashboard Prehľad,
   dashboard používateľa, zväčšený sd-chart-expand-svg modál) — všetky tri
   zdieľajú túto triedu cez buildChartSvg() v org-dashboard.js. */
.sd-dash-chart-axis-label {
  font-size: 9.5px;
  font-weight: 700;
  fill: #5a5a6a;
  font-variant-numeric: tabular-nums;
}

/* Zväčšený graf na celú obrazovku (2026-08-10) — klik na graf otvorí
   tento modál, s možnosťou kopírovať ako obrázok do schránky. */
.sd-modal-chart {
  max-width: min(96vw, 1300px);
  width: 100%;
}
.sd-chart-expand-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 14px;
}
.sd-chart-expand-head h3 { margin: 0; }
.sd-chart-expand-actions {
  display: flex;
  gap: 8px;
}
.sd-chart-expand-actions button { width: auto; }
.sd-dash-chart-expanded {
  height: min(70vh, 640px);
  cursor: default;
}

.sd-dash-appadmin-badge {
  display: inline-block;
  font-size: 0.68rem;
  font-weight: 700;
  color: var(--sd-teal);
  background: #f0faf8;
  border: 1px solid #22a08a55;
  border-radius: 10px;
  padding: 1px 7px;
  vertical-align: middle;
}

/* Meno organizácie za userom v tabuľke pri org filtri "Všetky"
   (2026-08-07 doladenie). */
.sd-dash-org-suffix {
  font-size: 0.8rem;
  color: #888;
}

.sd-dash-subtabs {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 14px;
}
/* "Pridať používateľa" v Používatelia tabe (2026-08-10) — zarovnané
   napravo od subtab pilulkiek. */
.sd-dash-add-user-btn {
  width: auto;
  margin-left: auto;
  padding: 5px 14px;
  font-size: 0.8rem;
  font-weight: 700;
}
.sd-dash-subtab {
  background: #f0faf8;
  border: 1px solid #22a08a33;
  border-radius: 20px;
  padding: 4px 14px;
  font-size: 0.8rem;
  color: var(--sd-navy);
  cursor: pointer;
}
.sd-dash-subtab-active {
  background: var(--sd-teal);
  border-color: var(--sd-teal);
  color: #fff;
}

.sd-dash-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.85rem;
}
.sd-dash-table th {
  text-align: left;
  color: #4a4a5a;
  font-weight: 600;
  border-bottom: 2px solid #22a08a33;
  padding: 8px 10px;
}
.sd-dash-table td {
  padding: 8px 10px;
  border-bottom: 1px solid #f0f0f0;
}
.sd-dash-table[hidden] { display: none; }
/* Odkazy v tabuľkách (Objednávky/Faktúry "Zobraziť", odkaz faktúry na
   objednávku) — doteraz bez triedy, takže default prehliadačová modrá/
   fialová (navštívené) mimo palety appky (nájdené 2026-09-18). Rovnaký
   vizuál ako `.sd-invoice-link` v billing.css. */
.sd-dash-table a {
  color: var(--sd-teal);
  text-decoration: none;
}
.sd-dash-table a:hover { text-decoration: underline; }
/* Faktúry k objednávke (Objednávky tab, 2026-09-18) — viac faktúr pod
   sebou, každá suma + stavový pill. */
.sd-dash-contract-invoice { display: block; white-space: nowrap; }
.sd-dash-contract-invoice + .sd-dash-contract-invoice { margin-top: 4px; }

.sd-org-dash-users-search { margin-bottom: 10px; }

/* Skupinové riadky organizácií v appka-admin "Všetky" pohľade
   (docs/backlog.md, 2026-09-17, nápad používateľa) — prvotne zvinuté,
   klik na hlavičku prepína zoznam členov danej organizácie. */
.sd-dash-org-group-row { background: #f7fbfa; cursor: pointer; }
.sd-dash-org-group-row:hover { background: #eef8f6; }
.sd-dash-org-group-row td { padding: 8px 10px; font-weight: 600; color: var(--sd-navy); }
.sd-dash-org-group-chevron {
  display: inline-block;
  margin-right: 6px;
  transition: transform 0.15s ease;
}
.sd-dash-org-group-row[data-expanded="true"] .sd-dash-org-group-chevron { transform: rotate(90deg); }
.sd-dash-org-group-count { font-weight: 400; color: #888; margin-left: 6px; }
.sd-dash-org-group-member td:first-child { padding-left: 26px; }

/* Riadky Aktívnych používateľov klikateľné → Detail používateľa
   (2026-08-10, prepojenie s org dashboardom). */
.sd-dash-table-row-clickable { cursor: pointer; }
.sd-dash-table-row-clickable:hover { background: #f0faf8; }
/* Ikonka zmazania (2026-08-10) — len org-admin/appka-admin, cez
   confirmAction() (žiadny native confirm, zaužívaný vzor appky). */
.sd-dash-row-delete-btn {
  background: none;
  border: none;
  cursor: pointer;
  font-size: 0.95rem;
  padding: 2px 6px;
  border-radius: 4px;
  opacity: 0.6;
}
.sd-dash-row-delete-btn:hover { opacity: 1; background: #fbe7e6; }

/* Pridať používateľa formulár v Používatelia tabe (2026-08-10). */
/* Pridať používateľa — samostatné okno v štýle Detail používateľa
   (2026-08-10, spätná väzba "sprav ako samostatné okno"). 7 polí v
   jednom riadku (rovnaký duch ako `.sd-user-detail-name-grid`, ktorá má
   6 — tu navyše e-mail). */
.sd-org-dash-add-user-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 4px 10px;
  margin-bottom: 12px;
}

/* Dashboard používateľa — "Detail používateľa" tlačidlo (2026-08-10,
   doladené po spätnej väzbe "trocha výraznejšie") — plný sd-btn-primary
   namiesto outline, len zmenšený a zarovnaný napravo (cez flex v
   .sd-dash-user-meta vyššie). */
.sd-dash-detail-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: auto;
  height: auto;
  padding: 0 16px;
  font-size: 0.8rem;
  font-weight: 700;
  box-shadow: 0 2px 8px #22a08a3d;
  flex-shrink: 0;
}

/* "Detail organizácie" tlačidlo v hlavičkovom controls-row (2026-08-10,
   doladené — vystredené a naťahuje sa presne na výšku riadku, v ktorom
   je, cez `align-self: stretch` namiesto pevnej zvislej výšky/paddingu). */
.sd-dash-org-detail-btn:not([hidden]) {
  display: flex;
  align-items: center;
  justify-content: center;
  align-self: stretch;
  width: auto;
  padding: 0 14px;
  font-size: 0.8rem;
  font-weight: 700;
  flex-shrink: 0;
}

/* Detail používateľa modál (2026-08-10, redizajn po spätnej väzbe
   "dizajnovo atraktívnejšie") — avatar s iniciálami + meno/e-mail ako
   hlavička, fakty v prehľadnej mriežke kariet (nie stohované riadky
   label+hodnota), meno na úpravu oddelené jemným deliacim nadpisom. */
.sd-user-detail-header {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 18px;
  padding-bottom: 16px;
  border-bottom: 1px solid #22a08a22;
}
/* ✕ zavrieť v pravom hornom rohu Detail organizácie (2026-08-12,
   spätná väzba) — dopĺňa existujúce "Zavrieť" tlačidlo dole, rovnaký
   vzhľad ako .sd-dash-close v hlavičkách dashboardov. */
.sd-user-detail-header-close { margin-left: auto; flex-shrink: 0; }
.sd-user-detail-avatar {
  flex-shrink: 0;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--sd-teal), #1a7a68);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.15rem;
  font-weight: 800;
  letter-spacing: 0.02em;
}
.sd-user-detail-eyebrow {
  margin: 0 0 2px;
  font-size: 0.68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: #999;
}
.sd-user-detail-header h3 {
  margin: 0;
  font-size: 1.2rem;
  color: var(--sd-navy);
}
.sd-user-detail-email {
  margin: 2px 0 0;
  font-size: 0.85rem;
  color: #5a5a6a;
}
/* "Auditor platný do..." v hlavičke Detailu (nápad používateľa
   2026-08-17) — pri mene/e-maile, nie zakopané v info-gride. */
.sd-user-detail-auditor-until-header {
  margin: 2px 0 0;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--sd-teal);
}

.sd-user-detail-info-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 12px 20px;
  margin-bottom: 20px;
}
.sd-user-detail-info-item[hidden] { display: none; }
/* Adresa/AI providery potrebujú viac miesta než ostatné krátke polia
   (Detail organizácie, 2026-08-10). */
.sd-user-detail-info-item-wide { grid-column: span 2; }
.sd-user-detail-info-item label {
  display: block;
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: #999;
  margin-bottom: 3px;
}
.sd-user-detail-info-item p {
  margin: 0;
  font-size: 0.92rem;
  color: var(--sd-navy);
  font-weight: 600;
}
/* `.sd-user-detail-info-item label/p` je mienené pre NADPIS a HODNOTU
   poľa (uppercase drobné sivé / navy bold). Checkbox-skupina "Povolené AI
   providery" (2026-09-17) vnútri tej istej bunky má vlastné <label> a
   nápovedu — tie to nesmú zdediť, inak sa názvy providerov vypíšu
   verzálkami s letter-spacingom a nápoveda ako tmavý bold text na
   úrovni hodnoty (živo nájdené 2026-09-18). */
.sd-user-detail-info-item .sd-set-checkbox-group label {
  text-transform: none;
  letter-spacing: normal;
  margin-bottom: 0;
}
.sd-user-detail-info-item p.sd-hint {
  margin: 4px 0 0;
  font-size: 0.78rem;
  font-weight: 400;
  color: #6b6b7a;
}
.sd-user-detail-checkbox-label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 0.92rem;
  color: var(--sd-navy);
  font-weight: 600;
  cursor: pointer;
}
.sd-user-detail-checkbox-label:has(input:disabled) { cursor: default; opacity: 0.7; }

/* "Účet vytvorený" + "Auditor platný do" v jednom riadku (nápad
   používateľa 2026-08-17) — oba dátumy rovnakým string-parse formátom
   (user-dashboard.js fmtDateOnly), expirácia zostáva editovateľná cez
   <input type="date"> na tom istom mieste. */
.sd-user-detail-dates-row {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.sd-user-detail-dates-row input[type="date"] {
  font-size: 0.85rem;
  padding: 3px 6px;
}

.sd-user-detail-divider {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 14px;
}
.sd-user-detail-divider span {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: #999;
  white-space: nowrap;
}
.sd-user-detail-divider::after {
  content: "";
  flex: 1;
  height: 1px;
  background: #22a08a22;
}
/* Divider s akčným tlačidlom napravo (2026-08-10, "Načítať" pri Detail
   organizácie) — `order` presunie čiaru (::after) MEDZI label a
   tlačidlo, nech tlačidlo zostane úplne vpravo bez zmeny DOM poradia. */
.sd-user-detail-divider-with-action::after { order: 1; }
.sd-user-detail-divider-with-action button {
  order: 2;
  width: auto;
  padding: 3px 12px;
  font-size: 0.72rem;
  font-weight: 700;
  flex-shrink: 0;
}

/* Skladateľné (accordion) bloky v Detail organizácie (2026-09-15) —
   zjednotenie Registrácia+Detail organizácie do jedného formulára
   odhalilo, že plochý zoznam sekcií je na jednej stránke príliš dlhý a
   neprehľadný. Rovnaký vzor ako existujúci FAQ accordion (web/style.css
   .sd-faq-*, web/landing-faq.js) — vlastný <button>+hidden div toggle,
   NIE <details> (konzistentnosť s celou appkou) — len prispôsobené
   vizuálu Detail-* modálov (nahrádza .sd-user-detail-divider, nie
   kartový FAQ vzhľad) a s podporou voliteľného akčného tlačidla
   (Upraviť/Načítať) v hlavičke VEDĽA prepínača, nie vnútri neho — klik
   naň teda nesmie prepnúť zbalenie/rozvinutie.
   Zdieľaný JS initializer: initDetailAccordions() v org-dashboard.js. */
.sd-accordion-item { margin-bottom: 14px; }
.sd-accordion-header {
  display: flex;
  align-items: center;
  gap: 8px;
}
.sd-accordion-toggle {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 6px 0;
  background: transparent;
  border: none;
  margin: 0;
  text-align: left;
  cursor: pointer;
  min-width: 0;
}
.sd-accordion-toggle:hover .sd-accordion-label { color: var(--sd-teal); }
.sd-accordion-label {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: #999;
  white-space: nowrap;
  transition: color .15s ease;
}
.sd-accordion-toggle::after {
  content: "";
  flex: 1;
  height: 1px;
  background: #22a08a22;
}
.sd-accordion-chevron {
  flex: 0 0 auto;
  width: 16px;
  height: 16px;
  color: var(--sd-teal);
  transition: transform .15s ease;
}
.sd-accordion-toggle[aria-expanded="true"] .sd-accordion-chevron { transform: rotate(90deg); }
.sd-accordion-body:not([hidden]) { display: block; }
.sd-accordion-body { padding-top: 10px; }

/* Registrové polia v Detail organizácie (2026-08-10) — vizuálne disabled
   input (nie plain text), aby jasne komunikovali "needitovateľné tu",
   konzistentné s ostatnými Detail-* modálmi. Adresa potrebuje viac
   miesta než ostatné krátke polia. */
.sd-org-detail-registry-grid { margin-bottom: 20px; }
.sd-org-detail-field-wide { grid-column: span 2; }
/* Edit-mode Uložiť/Zrušiť pre Adresa/DIČ/IČ DPH (2026-08-12) — appka-
   admin výnimočná ručná korekcia, keď register lookup zlyhá/chýba dané
   pole. Presunuté z admin.html — pozri org-dashboard.js
   toggleOrgRegistryEdit(). */
.sd-org-detail-registry-edit-actions:not([hidden]) { display: flex; gap: 8px; margin: -8px 0 12px; }

/* Všetky položky mena + rola v JEDNOM riadku (2026-08-10, spätná väzba) —
   pevný počet stĺpcov namiesto auto-fit, ktorý by pri 6 poliach v 980px
   širokom modáli zalomil na dva riadky. */
.sd-user-detail-name-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 4px 10px;
}
.sd-user-detail-field { margin-bottom: 12px; min-width: 0; }
.sd-user-detail-field label {
  display: block;
  margin-bottom: 4px;
  font-size: 0.7rem;
  font-weight: 700;
  color: #4a4a5a;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
/* Zvýraznené editovateľné polia (2026-08-10, spätná väzba) — bázový
   vzhľad o čosi výraznejší než predtým (tmavší rámik, jemný podklad),
   POVINNÉ polia (tie s "*" v labeli, `required` atribút) ešte navyše —
   hrubší teal rámik + jemné teal podfarbenie, nech sú na prvý pohľad
   odlíšiteľné od nepovinných. */
.sd-user-detail-field input,
.sd-user-detail-field select {
  width: 100%;
  font-size: 0.9rem;
  padding: 8px 10px;
  border-radius: 6px;
  border: 1.5px solid #22a08a88;
  box-sizing: border-box;
  background: #fbfffe;
}
.sd-user-detail-field input:required:not([hidden]):not(:disabled),
.sd-user-detail-field select:required:not([hidden]):not(:disabled) {
  border: 2px solid var(--sd-teal);
  background: #eefaf7;
}
.sd-user-detail-field input:disabled,
.sd-user-detail-field select:disabled { background: #f5f5f7; color: #888; border-color: #ddd; }

/* IBAN zoznam v Detail organizácie (2026-08-11) — editovateľné riadky,
   organizácia môže mať viac účtov naraz (organizations.iban je pole).
   Každý riadok sa potvrdzuje/maže SAMOSTATNE ikonkami na konci riadku
   (✓ potvrdiť neuložené, ✕ odstrániť uložené ALEBO zrušiť rozrobenú
   zmenu) — pozri org-dashboard.js handleIbanConfirm()/handleIbanCancel().
   Banka pod poľom je len orientačný odhad podľa kódu banky v IBAN, nie
   overenie účtu. */
.sd-org-detail-iban-list { display: flex; flex-direction: column; gap: 8px; margin-bottom: 8px; }
.sd-org-detail-iban-row { display: flex; align-items: flex-start; gap: 8px; }
.sd-org-detail-iban-field { flex: 1; min-width: 0; }
.sd-org-detail-iban-row input {
  width: 100%;
  font-size: 0.9rem;
  padding: 8px 10px;
  border-radius: 6px;
  border: 1.5px solid #22a08a88;
  box-sizing: border-box;
  background: #fbfffe;
  font-family: monospace;
}
.sd-org-detail-iban-bank {
  margin: 3px 0 0 2px;
  font-size: 0.76rem;
  color: #6b7a78;
  min-height: 1em;
}
.sd-org-detail-iban-action {
  background: none;
  border: none;
  cursor: pointer;
  font-size: 1rem;
  padding: 8px 8px;
  border-radius: 4px;
  color: #888;
  flex-shrink: 0;
}
.sd-org-detail-iban-cancel:hover { background: #fbe7e6; color: #c0392b; }
.sd-org-detail-iban-confirm { color: #22a08a; }
.sd-org-detail-iban-confirm:hover { background: #e3f7f2; color: #178068; }
.sd-org-detail-iban-add-btn { font-size: 0.78rem; padding: 5px 12px; margin-bottom: 10px; }

/* Tabuľka "Moje dokumenty" — hľadanie + zoraditeľné hlavičky (2026-08-10,
   spätná väzba). */
.sd-dash-table-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
/* Nadpis nesmie zalomiť (spätná väzba 2026-08-10) — vyhľadávacie pole
   namiesto pevnej šírky vyplní zvyšok riadku až po pravý okraj. */
.sd-dash-table-toolbar h3 { margin: 0; white-space: nowrap; flex-shrink: 0; }
.sd-dash-table-search {
  flex: 1;
  min-width: 0;
  padding: 6px 10px;
  border-radius: 6px;
  border: 1px solid #22a08a55;
  font-size: 0.85rem;
}
.sd-dash-th-sortable {
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
}
.sd-dash-th-sortable::after {
  content: "↕";
  margin-left: 4px;
  color: #b8b8c4;
  font-size: 0.78em;
}
.sd-dash-th-sortable.sd-dash-th-sort-asc::after { content: "↑"; color: var(--sd-teal); }
.sd-dash-th-sortable.sd-dash-th-sort-desc::after { content: "↓"; color: var(--sd-teal); }

.sd-dash-hint {
  font-size: 0.82rem;
  color: #888;
  margin: 0 0 14px;
}

/* Nastavenia organizácie — pevný grid layout (2026-09-17, spätná väzba
   "zarovnane do stlpcov a riadkov... pre zobrazenie a editaciu na
   rovnakych miestach") — nahrádza predošlý flex-wrap `.sd-dash-deflist`,
   kde sa pri edit móde (viac checkboxov vedľa seba) layout rozhadzoval
   a hodnoty pretekali mimo svojho "stĺpca". Každé pole je vlastná grid
   bunka s labelom navrchu a hodnotou/ovládacím prvkom pod ním — POZÍCIA
   poľa je rovnaká v zobrazení aj editácii, mení sa len obsah bunky. */
.sd-set-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 28px;
  row-gap: 18px;
  margin: 0 0 8px;
}
.sd-set-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.sd-set-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 700px) {
  .sd-set-grid-3, .sd-set-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 480px) {
  .sd-set-grid, .sd-set-grid-3, .sd-set-grid-4 { grid-template-columns: 1fr; }
}

.sd-set-field {
  display: flex;
  flex-direction: column;
  gap: 7px;
  min-width: 0;
}
.sd-set-field-label {
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .03em;
  color: #4a4a5a;
}
.sd-set-field-value {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  min-height: 24px;
  font-size: 0.88rem;
  color: var(--sd-navy);
}
.sd-set-field-value select,
.sd-set-field-value input[type="number"],
.sd-set-field-value input[type="text"] {
  width: 100%;
  max-width: 220px;
  padding: 5px 8px;
  border: 1px solid #d7dbe0;
  border-radius: 8px;
  font-family: inherit;
  font-size: 0.85rem;
  color: var(--sd-navy);
  background: #fff;
}
.sd-set-field-value select:focus,
.sd-set-field-value input:focus {
  outline: none;
  border-color: var(--sd-teal);
}

/* Checkbox skupina v edit móde (napr. "Povolené AI providery") —
   vertikálny zoznam v RÁMCI vlastnej stĺpcovej bunky, nie voľne
   plávajúce inline prvky ako predtým (`.sd-inline-check`), ktoré sa
   pri viacerých položkách roztiahli mimo svoj stĺpec do susedného poľa. */
.sd-set-checkbox-group {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.sd-set-checkbox-group label,
.sd-set-checkbox {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 0.85rem;
  font-weight: 400;
  color: var(--sd-navy);
  cursor: pointer;
}
.sd-set-checkbox-group input,
.sd-set-checkbox input {
  /* Globálne pravidlo `input:not([hidden]) { width:100%; padding:0.6rem;
     border:1px solid... }` (style.css) je mienené pre textové polia a
     bez resetu naťahuje aj checkbox na plnú šírku stĺpca (rovnaký reset
     ako existujúci `.sd-check-row input`). */
  width: auto;
  height: auto;
  padding: 0;
  margin: 0;
  border: none;
  flex-shrink: 0;
}

#sd-org-detail-oper-settings h4,
#sd-org-detail-billing-settings h4 {
  margin: 20px 0 12px;
  padding-top: 16px;
  border-top: 1px solid #22a08a22;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: #8895a7;
}
#sd-org-detail-oper-settings h4:first-child,
#sd-org-detail-billing-settings h4:first-child { margin-top: 0; padding-top: 0; border-top: none; }

#sd-org-detail-settings-actions {
  margin: 10px 0 22px;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}
#sd-org-detail-settings-actions:not([hidden]) { display: flex; }
/* .sd-btn-primary má globálne width: 100% — Uložiť/Zrušiť majú byť dve rovnako široké tlačidlá (50 % / 50 %) vedľa seba. */
#sd-org-detail-settings-actions { flex-wrap: nowrap; }
#sd-org-detail-settings-actions > button,
.sd-org-detail-registry-edit-actions > button { flex: 1 1 0; width: auto; margin-top: 0; }

.sd-dash-component-badge {
  display: inline-block;
  font-size: 0.75rem;
  background: #f0faf8;
  border: 1px solid #22a08a55;
  border-radius: 10px;
  padding: 1px 8px;
  margin: 0 4px 4px 0;
  color: var(--sd-navy);
}

.sd-dash-status-pill {
  display: inline-block;
  font-size: 0.75rem;
  font-weight: 600;
  border-radius: 10px;
  padding: 2px 9px;
}
.sd-dash-status-ok { background: #e6f7ee; color: #1a7a3e; }
.sd-dash-status-warn { background: #fff4e0; color: #a86a00; }
.sd-dash-status-bad { background: #fbe7e6; color: #c0392b; }
.sd-dash-status-neutral { background: #f1f2f4; color: #52606d; }
.sd-dash-status-accent { background: #f0faf8; color: var(--sd-teal); border: 1px solid #22a08a55; }

/* Malý kruhový avatar s iniciálami pri mene (napr. "Hlavný admin" v
   Detaile organizácie, docs/backlog.md 2026-09-17) — zmenšená varianta
   .sd-user-detail-avatar (rovnaký farebný prechod), na riadok s menom. */
.sd-dash-admin-inline { display: inline-flex; align-items: center; gap: 6px; }
.sd-dash-mini-avatar {
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--sd-teal), #1a7a68);
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.62rem;
  font-weight: 700;
}

/* Info banner pre needitovateľné polia (Objednávkové a fakturačné v
   Detaile organizácie, docs/backlog.md 2026-09-17) — nahrádza obyčajný
   .sd-hint odstavec výraznejším ohraničeným boxom. */
.sd-info-banner {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.82rem;
  color: #4a4a5a;
  background: #f6f7f8;
  border: 1px solid #e9ebee;
  border-radius: 8px;
  padding: 9px 14px;
  margin: 0 0 16px;
}
.sd-info-banner::before {
  content: "🔒";
  font-size: 0.85rem;
  flex-shrink: 0;
}

/* Vystavenie dobropisu appka-adminom, Faktúry tab (2026-08-10). */
#sd-org-dash-credit-note-wrap {
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid #22a08a22;
}
/* :not([hidden]) — inak `display:flex` prebije UA `[hidden]{display:none}`
   a zbalený formulár dobropisu je viditeľný hneď (9. výskyt tejto
   triedy chyby, nájdené 2026-09-18 pri prechode Faktúry tabu). */
.sd-dash-credit-note-form:not([hidden]) {
  display: flex;
  align-items: flex-end;
  gap: 12px;
  margin-top: 10px;
}
.sd-dash-credit-note-form label {
  display: flex;
  flex-direction: column;
  gap: 3px;
  font-size: 0.78rem;
  color: #4a4a5a;
}
.sd-dash-credit-note-form input {
  border: 1px solid #22a08a55;
  border-radius: 6px;
  padding: 6px 8px;
  font-size: 0.88rem;
  color: var(--sd-navy);
}
#sd-org-dash-credit-note-amount { width: 110px; }
#sd-org-dash-credit-note-description { width: 240px; }
.sd-dash-status-neutral { background: #f0f0f0; color: #666; }

/* Klikateľný nenulový kredit v Faktúry tabe → vystaví dobropis na celý
   zostatok (2026-08-10). */
.sd-dash-credit-claim {
  color: var(--sd-teal);
  text-decoration: underline;
  cursor: pointer;
  font-weight: 600;
}
.sd-dash-credit-claim:hover { color: #1a7a68; }

/* Ručné potvrdenie prijatého bankového prevodu (2026-08-25), rovnaký
   klikateľný-text vzor ako .sd-dash-credit-claim vyššie. */
.sd-dash-mark-paid {
  color: var(--sd-teal);
  text-decoration: underline;
  cursor: pointer;
  font-weight: 600;
}
.sd-dash-mark-paid:hover { color: #1a7a68; }
/* Storno/zmazanie dokladu či objednávky (2026-09-18) — rovnaký
   klikateľný-text vzor ako .sd-dash-mark-paid, "Zmazať" červené. */
.sd-dash-inv-action {
  color: var(--sd-teal);
  text-decoration: underline;
  cursor: pointer;
  font-weight: 600;
}
.sd-dash-inv-action:hover { color: #1a7a68; }
.sd-dash-inv-action-danger { color: #b3261e; }
.sd-dash-inv-action-danger:hover { color: #8a1c16; }
.sd-dash-inv-note { color: #888; font-size: 0.8rem; }

/* Návody (Issue #74) — appka-admin runbooks, docs/runbooks/*.md. Buttons are
   reset explicitly: the global `button` rule would stretch/offset them (same
   trap as .sd-crz-btn). No `display` on [hidden]-toggled elements here. */
.sd-rb-layout {
  display: grid;
  grid-template-columns: 230px minmax(0, 1fr);
  gap: 20px;
  align-items: start;
  margin-top: 8px;
}
@media (max-width: 760px) {
  .sd-rb-layout { grid-template-columns: minmax(0, 1fr); }
}
.sd-rb-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
  position: sticky;
  top: 0;
}
.sd-rb-item {
  width: 100%;
  margin: 0;
  padding: 8px 10px;
  text-align: left;
  font-size: 0.86rem;
  font-weight: 500;
  color: var(--sd-navy);
  background: transparent;
  border: 1px solid transparent;
  border-radius: 6px;
  cursor: pointer;
}
.sd-rb-item:hover { background: #eef7f4; }
.sd-rb-item-active {
  background: var(--sd-bg);
  border-color: var(--sd-teal);
  color: var(--sd-navy);
}
.sd-rb-content {
  min-width: 0;
  font-size: 0.9rem;
  line-height: 1.55;
  color: #2b2b3a;
}
.sd-rb-content h2 { font-size: 1.15rem; color: var(--sd-navy); margin: 0 0 12px; }
.sd-rb-content h3 { font-size: 1rem; color: var(--sd-navy); margin: 22px 0 8px; }
.sd-rb-content h4 { font-size: 0.92rem; color: var(--sd-navy); margin: 16px 0 6px; }
.sd-rb-content p { margin: 0 0 10px; }
.sd-rb-content ul, .sd-rb-content ol { margin: 0 0 10px; padding-left: 22px; }
.sd-rb-content li { margin: 3px 0; }
.sd-rb-content code {
  font-family: Consolas, "Courier New", monospace;
  font-size: 0.85em;
  background: #f1f3f5;
  padding: 1px 4px;
  border-radius: 4px;
}
.sd-rb-content a { color: var(--sd-teal); }
.sd-rb-code {
  position: relative;
  margin: 6px 0 14px;
  padding: 12px 14px;
  padding-right: 110px;
  background: var(--sd-navy);
  color: #e8eef2;
  border-radius: 8px;
  overflow-x: auto;
  white-space: pre;
}
.sd-rb-code code { background: none; padding: 0; color: inherit; font-size: 0.82rem; }
.sd-rb-copy {
  position: absolute;
  top: 8px;
  right: 8px;
  width: auto;
  margin: 0;
  padding: 3px 9px;
  font-size: 0.75rem;
  color: #e8eef2;
  background: rgba(255, 255, 255, 0.12);
  border: 1px solid rgba(255, 255, 255, 0.25);
  border-radius: 5px;
  cursor: pointer;
}
.sd-rb-copy:hover { background: rgba(255, 255, 255, 0.22); }
.sd-rb-note {
  margin: 6px 0 14px;
  padding: 10px 12px;
  background: #fff8e6;
  border-left: 3px solid #e0a100;
  border-radius: 4px;
}
.sd-rb-table { border-collapse: collapse; margin: 6px 0 14px; font-size: 0.86rem; }
.sd-rb-table th, .sd-rb-table td { border: 1px solid #dde3e8; padding: 6px 10px; text-align: left; vertical-align: top; }
.sd-rb-table th { background: #f4f7f9; color: var(--sd-navy); }

/* Editor ponuky Lokálnej AI v Detaile organizácie (#32 krok 2b). */
.sd-laq-block { margin: 14px 0 6px; padding: 12px 14px; border: 1px solid #e3e6ee; border-radius: 8px; }
.sd-laq-row { display: grid; grid-template-columns: 1fr 120px auto; gap: 8px; margin-bottom: 6px; align-items: center; }
.sd-laq-row input { width: 100%; box-sizing: border-box; }
.sd-laq-total { margin: 8px 0; }
.sd-laq-list { margin: 6px 0; padding-left: 18px; }

/* Odpoveď na ponuku Lokálnej AI (#32 krok 2c, web/local-ai-quote.js). */
.sd-laq-respond { margin-top: 10px; }
.sd-laq-respond-btns { display: flex; flex-wrap: wrap; gap: 8px; }
.sd-laq-note { width: 100%; min-height: 60px; margin-top: 8px; box-sizing: border-box; }

/* Tickets tab (#358): message thread and technical context. */
.sd-tickets-thread { display: flex; flex-direction: column; gap: 8px; margin: 12px 0; }
.sd-tickets-msg { border: 1px solid #e3e6ea; border-radius: 8px; padding: 8px 12px; background: #fff; }
.sd-tickets-msg-support { background: #f0faf8; border-color: #22a08a55; }
.sd-tickets-msg-head { font-size: 0.75rem; color: #52606d; margin-bottom: 4px; }
.sd-tickets-msg-body { white-space: pre-wrap; font-size: 0.9rem; }
.sd-tickets-diag { font-size: 0.78rem; background: #f6f7f9; border-radius: 6px; padding: 8px 10px; white-space: pre-wrap; }
.sd-tickets-filter { width: auto; min-width: 200px; margin-bottom: 10px; }
#sd-tickets-msg:empty { display: none; }

/* Žiadosti o zmenu administrátora (#408 krok 4) — blok v zálohe Tickety. */
.sd-oar-admin-block { margin-bottom: 20px; }
.sd-oar-admin-block > summary { cursor: pointer; font-weight: 700; margin-bottom: 8px; }
.sd-oar-admin-panel:not([hidden]) { margin-top: 12px; padding: 12px 14px; border: 1px solid #22a08a33; border-radius: 10px; background: #fff; }
.sd-oar-admin-facts { display: grid; grid-template-columns: max-content 1fr; gap: 4px 14px; margin: 8px 0 12px; }
.sd-oar-admin-facts dt { font-weight: 600; color: #52606d; }
.sd-oar-admin-facts dd { margin: 0; word-break: break-word; }
.sd-oar-admin-panel .sd-check-row[hidden] { display: none; }
.sd-oar-admin-panel label:not(.sd-check-row) { display: block; margin: 10px 0 4px; font-weight: 600; }
.sd-oar-admin-panel textarea { display: block; width: 100%; box-sizing: border-box; }
.sd-oar-admin-panel button { margin: 8px 8px 0 0; }
.sd-oar-admin-block > .sd-msg:empty { display: none; }

/* Kvalita analýzy (#431 krok 2) — blok v zálohe Systém. */
.sd-quality-block { margin: 16px 0; }
.sd-quality-block > summary { cursor: pointer; font-weight: 700; margin-bottom: 8px; }
.sd-quality-block h4 { margin: 14px 0 6px; }
.sd-quality-summary { font-weight: 600; }
.sd-quality-block > .sd-msg:empty { display: none; }
