/* ============================================================
   Karlix QMS — higijenski nadzor (M11, plan 115)

   Razredi ovog modula pisani su ZAJEDNO s pogledima, ne poslije njih: ograda
   `RazrediImajuStilTests` od plana 113 ne dopušta razred bez pravila, a nulu
   drži apsolutno. Prije te ograde nastalo ih je 52 upravo tako — pogled se
   napiše, pravilo se „doda kasnije", i kasnije ne dođe.
   ============================================================ */

/* ------------------------------------------------------------
   1. Šifra zone i sredstva

   Šifra se čita okomito kroz stupac i uspoređuje se — zato tabularne brojke i
   jednaka širina znamenke.
   ------------------------------------------------------------ */

.qms-hig-sifra {
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    color: var(--ink-strong);
    white-space: nowrap;
}

.qms-hig-ugasena {
    display: inline-block;
    margin-left: 7px;
    padding: 1px 7px;
    border-radius: 999px;
    background: var(--surface-3);
    color: var(--ink-3);
    font-size: 10.5px;
    letter-spacing: .03em;
    white-space: nowrap;
}

/* ------------------------------------------------------------
   2. Razina rizika

   Tri razine, tri tona — i NIJE crveno-žuto-zeleno po sreći nego po značenju:
   visoki rizik je mjesto gdje kontaminacija ide ravno na proizvod, pa nosi ton
   upozorenja. Niski nije „dobro", nego „nije dio lanca" — zato prigušeno, a ne
   zeleno: zeleno bi značilo da je ondje nešto u redu, a ondje se ništa i ne
   mjeri.

   Tema je specifičnija od razreda, pa boje idu istim oblikom
   (`body[class*="qms-theme"]`) — inače pravilo ne prolazi (CLAUDE.md).
   ------------------------------------------------------------ */

.qms-hig-rizik {
    display: inline-block;
    padding: 1px 8px;
    border-radius: 999px;
    border: 1px solid transparent;
    font-size: 11.5px;
    font-weight: 600;
    white-space: nowrap;
}

body[class*="qms-theme"] .qms-hig-rizik--visoka {
    border-color: var(--bad);
    color: var(--bad-text);
}

body[class*="qms-theme"] .qms-hig-rizik--osnovna {
    border-color: var(--warn);
    color: var(--warn-text);
}

body[class*="qms-theme"] .qms-hig-rizik--niska {
    border-color: var(--line-strong);
    color: var(--ink-3);
}

body[class*="qms-theme"] .qms-hig-rizik--nema {
    border-color: var(--line-strong);
    color: var(--ink-3);
}

/* Preporuka ide ispod oznake, prigušeno: to je mjera koju sustav predlaže, a ne
   podatak koji je netko upisao. */
.qms-hig-preporuka {
    margin-top: 3px;
    font-size: 11.5px;
    color: var(--ink-3);
}

/* ------------------------------------------------------------
   3. Pažnja

   Zona bez razine rizika i sredstvo bez izjave o prikladnosti NISU greške koje
   treba odbiti — nego nepotpuni zapisi koji se moraju vidjeti. Ton je
   upozorenje, ne kvar.
   ------------------------------------------------------------ */

.qms-hig-paznja {
    display: flex;
    align-items: baseline;
    gap: 6px;
    margin-top: 4px;
    font-size: 11.5px;
    line-height: 1.45;
    text-wrap: pretty;
}

body[class*="qms-theme"] .qms-hig-paznja { color: var(--warn-text); }
.qms-hig-paznja i { flex: 0 0 auto; font-size: 11px; }

/* ------------------------------------------------------------
   4. Sredstvo — dezinficira i odobreno
   ------------------------------------------------------------ */

/* Oznaka „dezinficira" je ČINJENICA o sredstvu, ne stanje — zato obrub nosi ton
   obavijesti, a tekst ostaje običan. Nije prigušen (`--ink-3`): to je podatak
   koji se čita, a ne dopuna.

   Prvo je ovdje pisalo `color: var(--info-text)`. Taj token NE POSTOJI — kuća
   ima `--info` i `--info-soft`, ali ne i ton za tekst, iako CLAUDE.md kaže da
   svaka obitelj boja ima sva tri. Pravilo se nikad nije primijenilo, a oznaka je
   izgledala uredno jer je naslijedila boju tijela teksta. Izmjereno, ne
   pretpostavljeno: omjer je bio identičan običnom tekstu (17,97 : 1). */
.qms-hig-dezinf {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 7px;
    border-radius: 999px;
    border: 1px solid var(--info);
    font-size: 10.5px;
    white-space: nowrap;
}

body[class*="qms-theme"] .qms-hig-dezinf { color: var(--ink-2); }

.qms-hig-odobreno {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12.5px;
    font-weight: 600;
    white-space: nowrap;
}

body[class*="qms-theme"] .qms-hig-odobreno { color: var(--good-text); }
.qms-hig-odobreno i { font-size: 12px; }

/* ------------------------------------------------------------
   5. Kvačica s objašnjenjem

   Potvrdni okvir uz koji stoji ZAŠTO. Izjava o prikladnosti za hranu nije
   formalnost — po njoj se zna smije li se sredstvo uopće naći u planu
   proizvodne zone.
   ------------------------------------------------------------ */

.qms-hig-kvacica {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    cursor: pointer;
}

.qms-hig-kvacica input { margin-top: 3px; flex: 0 0 auto; }
.qms-hig-kvacica > span { display: flex; flex-direction: column; gap: 3px; min-width: 0; }

/* ------------------------------------------------------------
   6. Radnje u retku
   ------------------------------------------------------------ */

.qms-hig-radnje {
    display: flex;
    align-items: center;
    gap: 7px;
    justify-content: flex-end;
}

/* Obrazac oko gumba „Ugasi" ne smije razmaknuti redak — on je samo nosač
   anti-forgery tokena. */
.qms-hig-radnje form { display: inline-flex; margin: 0; }

@media (max-width: 900px) {
    .qms-hig-radnje { justify-content: flex-start; }
}

/* ------------------------------------------------------------
   7. Stanje programa (M11-1)

   Nacrt i program na snazi na papiru izgledaju isto, a ne znače isto — isti
   razlog zbog kojeg zapisnik uprave nosi oznaku nacrta.
   ------------------------------------------------------------ */

.qms-hig-stanje {
    display: inline-block;
    margin-left: 8px;
    padding: 2px 9px;
    border-radius: 999px;
    border: 1px solid transparent;
    font-size: 11.5px;
    font-weight: 600;
    white-space: nowrap;
    vertical-align: middle;
}

body[class*="qms-theme"] .qms-hig-stanje--snaga {
    border-color: var(--good);
    color: var(--good-text);
}

body[class*="qms-theme"] .qms-hig-stanje--nacrt {
    border-color: var(--line-strong);
    color: var(--ink-3);
}

/* ------------------------------------------------------------
   8. Zapreka uz gumb

   Zaključan gumb kaže ZAŠTO, uz sebe, PRIJE klika — ne nakon njega
   (pravilo iz CLAUDE.md). Zato ovo stoji na mjestu gumba, a ne u poruci.
   ------------------------------------------------------------ */

.qms-hig-zapreka {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 7px 13px;
    border: 1px dashed var(--line-strong);
    border-radius: var(--r-sm, 8px);
    font-size: 12.5px;
    line-height: 1.4;
    text-wrap: pretty;
}

body[class*="qms-theme"] .qms-hig-zapreka { color: var(--ink-3); }
.qms-hig-zapreka i { flex: 0 0 auto; font-size: 12px; }

/* ------------------------------------------------------------
   9. Što je sustav izbrojio nad planom

   Nije popis grešaka nego pitanja — zato nosi isti oblik kao upozorenje o
   nalazu na opremi, a ne crveni okvir.
   ------------------------------------------------------------ */

.qms-hig-nalazi {
    margin: 8px 0 0;
    padding-left: 20px;
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.qms-hig-nalazi li { text-wrap: pretty; }

/* ------------------------------------------------------------
   10. Stanje dospijeća (M11-2)

   Pet stanja, i boja im nije po stupnju nego po ZNAČENJU:

     kasni   — rok je prošao, crveno
     nikad   — rupa u registru; TEŽE od kašnjenja jer se ne zna ni je li ikad
               obavljeno, pa nosi isti ton
     uskoro  — dospijeva, upozorenje
     bezroka — NIJE propust nego svojstvo stavke („po potrebi", „po smjeni"):
               prigušeno, ne šareno. Da je crveno, popis bi bio pun lažnog
               alarma; da ga nema, obveza bi se izbjegavala baš tako.
     uredno  — zeleno
   ------------------------------------------------------------ */

.qms-hig-dosp {
    display: inline-block;
    padding: 2px 9px;
    border-radius: 999px;
    border: 1px solid transparent;
    font-size: 11.5px;
    font-weight: 600;
    white-space: nowrap;
}

body[class*="qms-theme"] .qms-hig-dosp--kasni {
    border-color: var(--bad);
    color: var(--bad-text);
}

body[class*="qms-theme"] .qms-hig-dosp--nikad {
    border-color: var(--bad);
    color: var(--bad-text);
}

body[class*="qms-theme"] .qms-hig-dosp--uskoro {
    border-color: var(--warn);
    color: var(--warn-text);
}

body[class*="qms-theme"] .qms-hig-dosp--bezroka {
    border-color: var(--line-strong);
    color: var(--ink-3);
}

body[class*="qms-theme"] .qms-hig-dosp--uredno {
    border-color: var(--good);
    color: var(--good-text);
}

/* ------------------------------------------------------------
   11. Presuda provjere (M11-3)

   Dvije vrijednosti, i razlika mora biti vidljiva na prvi pogled: pala provjera
   znači da je površina bila prljava nakon čišćenja, a to je dokaz koji auditor
   traži prvi.
   ------------------------------------------------------------ */

.qms-hig-presuda {
    display: inline-block;
    padding: 2px 9px;
    border-radius: 999px;
    border: 1px solid transparent;
    font-size: 11.5px;
    font-weight: 600;
    white-space: nowrap;
}

body[class*="qms-theme"] .qms-hig-presuda--prolazi {
    border-color: var(--good);
    color: var(--good-text);
}

body[class*="qms-theme"] .qms-hig-presuda--pala {
    border-color: var(--bad);
    color: var(--bad-text);
}

/* „Čeka nalaz" (M11-7): TREĆE stanje, i ne smije izgledati ni kao prolaz ni kao
   pad. Dok ga nije bilo, ekran je bojio sve što nije „prolazi" kao palo — pa bi
   uzorak poslan u laboratorij izgledao kao dokaz da čišćenje nije djelovalo.
   Obitelj `--warn` je ista koju kuća koristi za ono što traži pažnju. */
body[class*="qms-theme"] .qms-hig-presuda--ceka {
    border-color: var(--warn);
    color: var(--warn-text);
}

/* ------------------------------------------------------------
   12. Opasan otpad (M11-5)

   Oznaka nosi pravnu posljedicu, ne ton: opasan otpad se smije predati samo
   ovlaštenom skupljaču, uz prateći list. Zato ista obitelj boja kao CCP
   oznaka — oboje su izjave koje nose obvezu.
   ------------------------------------------------------------ */

.qms-otp-opasan {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 7px;
    border-radius: 999px;
    border: 1px solid var(--bad);
    font-size: 10.5px;
    font-weight: 600;
    white-space: nowrap;
}

body[class*="qms-theme"] .qms-otp-opasan { color: var(--bad-text); }
