/*
 * Custom RAL status colours for Service / WorkQueue status enum labels.
 * EspoCRM 9.0.4 enum fields only support named styles, so the entityDefs
 * status "style" map points each status value at a unique custom style name
 * (ralPlanned, ralInProgress, ...). These rules apply the exact RAL hex.
 * Injected app-wide via custom metadata app.client.cssList.
 */

/* Planned  – RAL 5015 modrá */
.label-ralPlanned {
    background-color: #007cb0 !important;
    color: #ffffff !important;
    border-color: #007cb0 !important;
}

/* InProgress / Probíhá – RAL 2011 oranžová
   [Markéta 31. 7. 2026: „rozpracovanej bych dala oranžovej"; do 31. 7. žlutá RAL 1016] */
.label-ralInProgress {
    background-color: #e25303 !important;
    color: #ffffff !important;
    border-color: #e25303 !important;
}

/* Completed – RAL 6018 zelená */
.label-ralCompleted {
    background-color: #57a639 !important;
    color: #ffffff !important;
    border-color: #57a639 !important;
}

/* ReadyForInvoicing / K fakturaci – RAL 4005 fialová */
.label-ralReadyForInvoicing {
    background-color: #6c4675 !important;
    color: #ffffff !important;
    border-color: #6c4675 !important;
}

/* Cancelled / Zrušený – RAL 7046 šedá */
.label-ralCancelled {
    background-color: #7e868c !important;
    color: #ffffff !important;
    border-color: #7e868c !important;
}

/*
 * NOTE: RAL 3020 červená #c1121c is reserved for the "Další výjezd" status
 * from the opakovaný-výjezd feature, which does not yet exist. Style name
 * reserved as .label-ralNextTrip for when that status is added.
 */
.label-ralNextTrip {
    background-color: #c1121c !important;
    color: #ffffff !important;
    border-color: #c1121c !important;
}

/*
 * Podsvícení dlaždic ve frontě práce podle stavu (přání z meetu ~47:41 —
 * Markéta chtěla poznat stav na první pohled). Jemná verze RAL barvy stavu
 * jako pozadí + barevný proužek vlevo. Text zůstává tmavý a čitelný.
 */
.work-queue-service-card.status-planned            { background: rgba(0,124,176,.08);  border-left: 3px solid #007cb0; }
.work-queue-service-card.status-inprogress         { background: rgba(226,83,3,.13);   border-left: 3px solid #e25303; }
.work-queue-service-card.status-customerapproved   { background: rgba(108,70,117,.09);  border-left: 3px solid #6c4675; }
.work-queue-service-card.status-nexttrip           { background: rgba(193,18,28,.09);  border-left: 3px solid #c1121c; }
.work-queue-service-card.status-completed          { background: rgba(87,166,57,.11);  border-left: 3px solid #57a639; }
.work-queue-service-card.status-readyforinvoicing  { background: rgba(108,70,117,.14); border-left: 3px solid #6c4675; }
.work-queue-service-card.status-cancelled          { background: rgba(126,134,140,.10); border-left: 3px solid #7e868c; opacity: .75; }

/* Měsíční pohled ve frontě práce – stejné barvy stavů jako u týdenních dlaždic. */
.work-queue-month-card.status-planned            { background: rgba(0,124,176,.08);  border-left: 3px solid #007cb0; }
.work-queue-month-card.status-inprogress         { background: rgba(226,83,3,.13);   border-left: 3px solid #e25303; }
.work-queue-month-card.status-customerapproved   { background: rgba(108,70,117,.09); border-left: 3px solid #6c4675; }
.work-queue-month-card.status-nexttrip           { background: rgba(193,18,28,.09);  border-left: 3px solid #c1121c; }
.work-queue-month-card.status-completed          { background: rgba(87,166,57,.11);  border-left: 3px solid #57a639; }
.work-queue-month-card.status-readyforinvoicing  { background: rgba(108,70,117,.14); border-left: 3px solid #6c4675; }
.work-queue-month-card.status-cancelled          { background: rgba(126,134,140,.10); border-left: 3px solid #7e868c; opacity: .75; }

/* víceřádkový název v panelu Servis */
.panel[data-name^="services"] td.cell[data-name="name"],
.panel[data-name^="services"] td.cell[data-name="name"] a{white-space:normal;word-break:break-word;}

/* Sloučený panel Servis – 3 sekce */
.service-combined-panel .sc-section{margin-bottom:18px;}
.service-combined-panel .sc-section:last-child{margin-bottom:0;}
.service-combined-panel .sc-section-title{display:flex;align-items:center;justify-content:space-between;gap:8px;font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.03em;opacity:.75;padding:4px 0 6px;margin-bottom:4px;border-bottom:1px solid rgba(0,0,0,.08);}
.service-combined-panel .sc-add{padding:0 4px;line-height:1;opacity:.8;text-decoration:none;}
.service-combined-panel .sc-add:hover{opacity:1;}

/* Tab-panely bez polí (Servis, dřív i Zařízení) nemají zobrazovat prázdný rámec –
   obsah tabu tvoří spodní panely. Panel s poli se zobrazí normálně, proto :has(.cell).
   Fotodokumentace a Přílohy jsou od 30. 7. 2026 v tabu Zařízení. */
.detail[data-scope="ServiceOrder"] .panel[data-name^="panel-"]:not(:has(.cell)){display:none;}

/* === Roční přehled === */
.rocni-prehled{padding:12px 16px;}
.rp-header{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap;}
.rp-title{font-size:20px;font-weight:700;}
.rp-total{margin-left:6px;font-size:13px;}
.rp-loading{padding:24px 4px;}
.rp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;}
.rp-month{border:1px solid rgba(0,0,0,.1);border-radius:6px;padding:8px 10px;background:rgba(0,0,0,.012);}
.rp-month-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px;}
.rp-month-name{font-weight:700;font-size:14px;}
.rp-month-stat{font-size:12px;opacity:.7;font-variant-numeric:tabular-nums;}
.rp-load{height:4px;background:rgba(0,0,0,.07);border-radius:2px;overflow:hidden;margin-bottom:8px;}
.rp-load-bar{height:100%;background:#007cb0;width:0;transition:width .3s ease;}
.rp-items{display:flex;flex-direction:column;gap:4px;}
.rp-item{display:block;padding:4px 7px;border-radius:4px;border-left:3px solid #ccc;background:rgba(0,0,0,.02);text-decoration:none;color:inherit;}
.rp-item:hover{background:rgba(0,0,0,.06);text-decoration:none;}
.rp-item-name{display:block;font-size:12.5px;font-weight:600;line-height:1.25;}
.rp-item-meta{display:block;font-size:11px;opacity:.65;}
.rp-empty{opacity:.35;text-align:center;padding:6px;}
.rp-item.status-planned{border-left-color:#007cb0;}
.rp-item.status-inprogress{border-left-color:#e25303;}
.rp-item.status-customerapproved{border-left-color:#6c4675;}
.rp-item.status-nexttrip{border-left-color:#c1121c;}
.rp-item.status-completed{border-left-color:#57a639;}
.rp-item.status-readyforinvoicing{border-left-color:#6c4675;}
.rp-item.status-cancelled{border-left-color:#7e868c;opacity:.7;}

/* === Roční přehled v2: měsíce pod sebou === */
.rocni-prehled .rp-monthfilter{display:flex;flex-wrap:wrap;gap:5px;align-items:center;margin:0 0 16px;}
.rocni-prehled .rp-monthfilter-label{font-size:12px;opacity:.7;margin-right:4px;}
.rocni-prehled .rp-chip{border:1px solid rgba(0,0,0,.15);background:transparent;border-radius:20px;
  padding:2px 10px;font-size:12px;color:inherit;opacity:.45;cursor:pointer;line-height:1.6;}
.rocni-prehled .rp-chip:hover{opacity:.8;}
.rocni-prehled .rp-chip.is-on{opacity:1;border-color:#007cb0;background:rgba(0,124,176,.10);font-weight:600;}
.rocni-prehled .rp-chip-count{opacity:.55;font-variant-numeric:tabular-nums;margin-left:2px;}
.rocni-prehled .rp-chip-all{border-style:dashed;opacity:.85;}

.rocni-prehled .rp-months{display:flex;flex-direction:column;gap:18px;}
.rocni-prehled .rp-month-block{border:1px solid rgba(0,0,0,.1);border-radius:8px;overflow:hidden;}
.rocni-prehled .rp-month-header{display:flex;align-items:baseline;justify-content:space-between;gap:10px;
  padding:8px 12px;background:rgba(0,0,0,.035);border-bottom:1px solid rgba(0,0,0,.08);}
.rocni-prehled .rp-month-name{margin:0;font-size:15px;font-weight:700;}
.rocni-prehled .rp-month-stat{font-size:12px;opacity:.7;font-variant-numeric:tabular-nums;}

.rocni-prehled .rp-rows{display:flex;flex-direction:column;}
/* Proužek stavu vlevo je od 7. 8. 2026 výrazně silnější — v seznamu se zelená
   mezi modrými ztrácela [Markéta: „ta zelená mezi modrýma se docela ztrácí"]. */
.rocni-prehled .rp-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;
  padding:8px 12px 8px 16px;border-bottom:1px solid rgba(0,0,0,.06);
  border-left:7px solid rgba(0,0,0,.10);text-decoration:none;color:inherit;}
.rocni-prehled .rp-row:last-child{border-bottom:none;}
.rocni-prehled .rp-row:hover{background:rgba(0,0,0,.035);text-decoration:none;}
.rocni-prehled .rp-row-main{flex:1 1 320px;min-width:0;display:flex;flex-direction:column;}
.rocni-prehled .rp-row-name{font-weight:600;font-size:13.5px;line-height:1.3;}
.rocni-prehled .rp-row-order{font-size:11.5px;opacity:.6;}
.rocni-prehled .rp-row-tags{display:flex;flex-wrap:wrap;gap:4px;flex:1 1 260px;}
.rocni-prehled .rp-row-meta{display:flex;flex-wrap:wrap;gap:10px;align-items:center;font-size:11.5px;opacity:.75;
  margin-left:auto;font-variant-numeric:tabular-nums;}

.rocni-prehled .rp-tag{font-size:10.5px;padding:1px 7px;border-radius:20px;border:1px solid rgba(0,0,0,.14);white-space:nowrap;}
.rocni-prehled .rp-tag-device{background:rgba(0,124,176,.12);border-color:rgba(0,124,176,.3);}
.rocni-prehled .rp-tag-kind{background:rgba(108,70,117,.12);border-color:rgba(108,70,117,.3);}
.rocni-prehled .rp-tag-task{background:rgba(201,138,0,.14);border-color:rgba(201,138,0,.35);}
.rocni-prehled .rp-time{font-weight:600;}
.rocni-prehled .rp-empty{padding:10px 12px;opacity:.4;font-size:12.5px;}

.rocni-prehled .rp-row.status-planned{border-left-color:#007cb0;}
.rocni-prehled .rp-row.status-inprogress{border-left-color:#e25303;}
.rocni-prehled .rp-row.status-customerapproved{border-left-color:#6c4675;}
.rocni-prehled .rp-row.status-nexttrip{border-left-color:#c1121c;}
.rocni-prehled .rp-row.status-completed{border-left-color:#57a639;}
.rocni-prehled .rp-row.status-readyforinvoicing{border-left-color:#6c4675;}
.rocni-prehled .rp-row.status-cancelled{border-left-color:#7e868c;opacity:.65;}

.rocni-prehled .rp-tag-count{background:rgba(0,0,0,.05);}

.rocni-prehled .rp-deadline{color:#c1121c;font-weight:600;}

/* Širší hlavní obsah na detailech servisu — boční panel užší (přání Markéty).
   .record-grid je CSS grid (.left | .side), takže přenastavíme sloupce. */
.detail[data-scope="ServiceOrder"] .record-grid,
.detail[data-scope="Service"] .record-grid,
.detail[data-scope="ServiceProtocol"] .record-grid{ grid-template-columns:79% 21% !important; }

/* === Kalendář v poli data === */
/* Mapa realizace (Leaflet) drží vysoký z-index na svých vrstvách, takže
   rozbalený kalendář končil pod ní a od 16. dne v měsíci nešel den vybrat
   [Markéta 7. 8. 2026 – „nezobrazuje se mi celý kalendář, nemůžu vybrat
   termín 16+"]. Mapa na detailu dostane vlastní kontext s nízkým z-indexem,
   kalendář se zvedne nad ni. */
.detail .leaflet-container,
.record .leaflet-container { z-index: 1; }

.datepicker.datepicker-dropdown,
.datepicker.dropdown-menu,
.bootstrap-datetimepicker-widget.dropdown-menu { z-index: 1100 !important; }


/* === Termín revize v Ročním přehledu — barevně podle naléhavosti ===
   [Markéta 7. 8. 2026: „pokud by byl aktuální, tak ho nechat zelenej, a kdyby
   se to blížilo třeba 14 dní před ukončením, tak aby začal bejt červenej".
   Když má servis víc zařízení, počítá se s nejbližším termínem.] */
.rocni-prehled .rp-deadline{font-weight:600;padding:1px 7px;border-radius:20px;
  border:1px solid transparent;white-space:nowrap;}
.rocni-prehled .rp-deadline.is-ok{color:#3d7a2c;background:rgba(87,166,57,.12);
  border-color:rgba(87,166,57,.35);}
.rocni-prehled .rp-deadline.is-soon{color:#a13a00;background:rgba(226,83,3,.13);
  border-color:rgba(226,83,3,.4);}
.rocni-prehled .rp-deadline.is-expired{color:#fff;background:#c1121c;border-color:#c1121c;}

/* === Panel Zařízení na servisní akci — filtr podle typu ===
   [Markéta 7. 8. 2026: „buď to bude vše, a nebo bude klimatizace, vzduchotechnika,
   PPK, CHÚC a bude se to řídit tady tím typem zařízení". U akcí s 20–50 zařízeními
   technik na tabletu jinak listuje donekonečna.] */
.device-type-filter{display:flex;flex-wrap:wrap;gap:5px;margin:0 0 10px;}
.device-type-chip{border-radius:20px;padding:2px 11px;opacity:.55;}
.device-type-chip:hover{opacity:.85;}
.device-type-chip.is-on{opacity:1;font-weight:600;border-color:#007cb0;
  background:rgba(0,124,176,.10);color:#00587c;}
