/* ══════════════════════════════════════════════════════════════════════════
   SD420IT — vizuální slovník seznamu požadavků (badge stavů/priorit/typů,
   badge služby a zákazníka, zvýraznění řádku po termínu, kurzor j/k).

   Vytažené z templates/base.html, aby to POUŽÍVALA OBĚ UI:
     * Jinja UI  — <link> v base.html,
     * React SPA — frontend/src/main.tsx tenhle soubor importuje.
   Třídy se ve React komponentách píšou stejně (`tkt-badge badge-status-open`),
   takže „Řeší se" má v novém i starém seznamu doslova tutéž barvu — včetně
   deseti odstínů, které nejsou v tokens.css a nedaly by se dopočítat.

   Barvy odsud vycházejí z tokens.css (--tint-*), doplněné o pevné hexy tam,
   kde token neexistuje. Dark varianty jsou na konci souboru.
   ══════════════════════════════════════════════════════════════════════════ */

/* řádek po termínu (list požadavků, dashboard) — třída místo inline stylu kvůli dark.
   Barva na <tr>, aby ji hover (!important na tr) dál přebil. */
tr.row-overdue { background: #FEF2F2; }
[data-bs-theme="dark"] tr.row-overdue { background: #33191D; }

.badge-co { font-size: .72rem; background: var(--ncs-50); color: var(--ncs-800); border: 1px solid var(--ncs-200); border-radius: var(--radius-ctl); padding: 2px 6px; font-weight: 600; }

.tkt-badge { font-size:.72rem; padding:2px 8px; border-radius:var(--radius-ctl); font-weight:600; white-space:nowrap; }
/* status badges carry a small dot in the text colour — state reads even without colour vision */
.tkt-badge[class*="badge-status-"]::before { content:""; display:inline-block; width:.42em; height:.42em;
  border-radius:50%; background:currentColor; margin-right:.38em; vertical-align:.09em; opacity:.75; }
.badge-type-onboarding  { background:var(--tint-success-bg); color:var(--tint-success-fg); }
.badge-type-offboarding { background:var(--tint-danger-bg);  color:var(--tint-danger-fg); }
.badge-type-standard    { background:var(--tint-info-bg);    color:var(--tint-info-fg); }
.badge-type-change      { background:#EDE9FE; color:#5B21B6; }
/* Badge služby — barvu služby nese CSS proměnná --svc (šablony ji jen nastaví),
   takže si světlý i tmavý režim dopočítají čitelný tint a text sám. Inline barvy
   dávaly v dark módu tmavý text na tmavém podkladu = nečitelné. */
.svc-badge { --svc:#6b7280; display:inline-flex; align-items:center; gap:.35em;
  padding:.1em .45em; border-radius:4px; font-size:.78rem; white-space:nowrap;
  max-width:100%; overflow:hidden; text-overflow:ellipsis; vertical-align:middle;
  background:var(--ncs-light); color:var(--text-body); border:1px solid var(--ncs-border); }
[data-bs-theme="dark"] .svc-badge { color:#E8EAE9; }
@supports (color: color-mix(in srgb, red 50%, white)) {
  .svc-badge { background: color-mix(in srgb, var(--svc) 13%, var(--surface-card));
    color: color-mix(in srgb, var(--svc) 78%, black);
    border-color: color-mix(in srgb, var(--svc) 38%, transparent); }
  [data-bs-theme="dark"] .svc-badge {
    background: color-mix(in srgb, var(--svc) 26%, var(--surface-card));
    color: color-mix(in srgb, var(--svc) 40%, white);
    border-color: color-mix(in srgb, var(--svc) 48%, transparent); }
}
.badge-status-new             { background:#E5E7EB; color:#374151; }
.badge-status-open            { background:var(--tint-warning-bg); color:var(--tint-warning-fg); }
.badge-status-in_progress     { background:var(--tint-info-bg); color:var(--tint-info-fg); }
.badge-status-waiting_customer{ background:#EDE9FE; color:#5B21B6; }
.badge-status-waiting_vendor  { background:#FFEDD5; color:#9A3412; }
.badge-status-on_hold         { background:#E5E7EB; color:#4B5563; }
.badge-status-resolved        { background:var(--tint-success-bg); color:var(--tint-success-fg); }
.badge-status-closed          { background:#D1D5DB; color:#374151; }
.badge-status-rejected        { background:var(--tint-danger-bg); color:var(--tint-danger-fg); }
.badge-status-cancelled       { background:#E5E7EB; color:#4B5563; }
.badge-priority-urgent   { background:var(--tint-danger-bg);  color:var(--tint-danger-fg); }
.badge-priority-high     { background:var(--tint-warning-bg); color:var(--tint-warning-fg); }
.badge-priority-normal   { background:#F1F1F1; color:#555; }
.badge-priority-low      { background:#F1F1F1; color:#6B7280; }
.badge-priority-planning { background:#EFF6FF; color:#1D4ED8; }

/* keyboard row cursor (j/k on ticket lists) */
tr.kbd-row td { background: var(--ncs-100) !important; }
tr.kbd-row td:first-child { box-shadow: inset 3px 0 0 var(--ncs-green); }

/* stavové/typové/prioritní badge s napevno danou barvou */
[data-bs-theme="dark"] .badge-type-change,
[data-bs-theme="dark"] .badge-status-waiting_customer { background:#2E2447; color:#C4B5FD; }
[data-bs-theme="dark"] .badge-status-waiting_vendor   { background:#40260E; color:#FDBA74; }
[data-bs-theme="dark"] .badge-status-new              { background:#34343B; color:#D4D4D8; }
[data-bs-theme="dark"] .badge-status-on_hold,
[data-bs-theme="dark"] .badge-status-cancelled        { background:#2C2C33; color:#ABABB4; }
[data-bs-theme="dark"] .badge-status-closed           { background:#3A3A42; color:#D4D4D8; }
[data-bs-theme="dark"] .badge-priority-normal         { background:#2C2C33; color:#C1C1C9; }
[data-bs-theme="dark"] .badge-priority-low            { background:#2C2C33; color:#9C9CA5; }
[data-bs-theme="dark"] .badge-priority-planning       { background:#152743; color:#93C5FD; }
