/* WIDOKI — MONTAŻ I ZGŁOSZENIA (tor E, od 27.09.2026).
   Montażyści w oknie „Plan produkcji” (E0); dalsze części toru E dopisują tu swoje klasy (prefiks montaz-, zgloszenie-).
   Kolory wyłącznie z tokenów (00-tokens.css) — jasny i ciemny motyw bez osobnych reguł. */

.montaz-ekipa-osoba { display: flex; align-items: center; gap: var(--s-2); min-height: 32px; cursor: pointer; }

/* E6 — widok „Produkcja i montaż”: zakładki, pasek filtrów, karty zgłoszeń; okno zgłoszenia. */
.hala-strona { display: grid; gap: var(--s-3); align-content: start; min-width: 0; }
.hala-zakladki { justify-self: start; }
.hala-pasek { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2); }
.hala-pasek > .button.primary { margin-left: auto; }
.hala-pasek > :is(select[data-e-montaz-projekt], .combo:has([data-e-montaz-projekt])) { min-width: min(420px, 100%); }
.hala-pusto { padding: var(--s-5) var(--s-3); text-align: center; }
.zgloszenia-lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: var(--s-3); }
.zgloszenie-karta { display: grid; gap: var(--s-1); padding: var(--s-3); border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--surface); box-shadow: var(--cien-1); color: var(--text); text-align: left; cursor: pointer; }
.zgloszenie-karta:hover { border-color: var(--accent); }
/* POPR-n43: pilność = sam znacznik „Pilne” (bez czerwonego paska z lewej); „nieprzeczytane” = kropka przed datą. */
.zgloszenie-karta.is-nowe .zgloszenie-data::before { content: ""; display: inline-block; width: 8px; height: 8px; margin-right: var(--s-1); border-radius: 50%; background: var(--accent); vertical-align: middle; }
.zgloszenie-karta-gora { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2); }
.zgloszenie-data { margin-left: auto; }
.zgloszenie-pilne { padding: 2px var(--s-2); border-radius: var(--r-pill); background: var(--danger-soft); color: var(--danger); font-size: var(--t-sm); font-weight: var(--w-bold); }
/* v15 ZG1: „Do kiedy” na karcie i w oknie zgłoszenia — po terminie czerwono (jak zadania). */
.zgloszenie-termin { padding: 2px var(--s-2); border-radius: var(--r-pill); background: var(--surface-3); color: var(--text-muted); font-size: var(--t-sm); font-weight: var(--w-bold); white-space: nowrap; }
.zgloszenie-termin.is-po { background: var(--danger-soft); color: var(--danger); }
.zgloszenie-skad { color: var(--text-muted); font-size: var(--t-sm); }
.zgloszenie-opis { display: -webkit-box; overflow: hidden; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.zgloszenie-stopka { font-size: var(--t-sm); }
.zgloszenie-szczegoly { display: grid; gap: var(--s-3); padding: var(--s-3) var(--s-4); overflow-y: auto; }
.zgloszenie-opis-pelny { white-space: pre-wrap; }
.zgloszenie-historia-tytul { font-size: var(--t-md); }
.zgloszenie-historia { display: grid; gap: var(--s-2); margin: 0; padding: 0; list-style: none; }
.zgloszenie-wpis { display: grid; gap: 2px; padding: var(--s-2) var(--s-3); background: var(--surface-2); border-radius: var(--r-sm); }
.zgloszenie-wpis p { margin: 0; white-space: pre-wrap; }
/* POPR2-n25: uwaga czekająca w kolejce bez internetu — przerywana ramka i napis „czeka na wysłanie” (błąd wysyłki: czerwony). */
.zgloszenie-wpis.is-czeka { border: 1px dashed var(--line-strong); background: var(--surface); }
.montaz-czeka { padding: 1px var(--s-2); border-radius: var(--r-pill); background: var(--warn-soft); color: var(--warn-strong); font-weight: var(--w-bold); }
.montaz-czeka.is-blad { background: var(--danger-soft); color: var(--danger); }
.montaz-miniatury { display: flex; flex-wrap: wrap; gap: var(--s-2); }
.montaz-miniatura { display: block; width: 88px; height: 88px; overflow: hidden; border: 1px solid var(--line); border-radius: var(--r-sm); background: var(--surface-2); }
.montaz-miniatura img { width: 100%; height: 100%; object-fit: cover; }
.montaz-zdjecia-pole { display: flex; position: relative; flex-wrap: wrap; align-items: center; gap: var(--s-2); }

/* E3 — zakładka „Montaż”: sekcje pracy ekipy i lista usterek. */
.montaz-sekcje { display: grid; grid-template-columns: repeat(auto-fit, minmax(360px, 1fr)); gap: var(--s-3); align-items: start; }
.montaz-sekcja > header h3 { font-size: var(--t-md); }
/* DECYZJA 12 (28.09.2026): „Wczytaj protokół (zdjęcie / skan)” i „Protokół odbioru” — rząd nad listą protokołów, zawija się. */
.montaz-protokol-akcje { display: flex; flex-wrap: wrap; gap: var(--s-2); margin-bottom: var(--s-3); }
.montaz-usterki { display: grid; gap: var(--s-2); }
.montaz-usterka { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: var(--s-2); padding: var(--s-2); border: 1px solid var(--line); border-radius: var(--r-sm); background: var(--surface); }
.montaz-usterka-znacznik { display: grid; place-items: center; width: 32px; height: 32px; border: 2px solid var(--line-strong); border-radius: 50%; background: var(--surface); color: transparent; cursor: pointer; }
.montaz-usterka-znacznik:disabled { cursor: default; opacity: .6; }
.montaz-usterka.is-done .montaz-usterka-znacznik { border-color: var(--ok); background: var(--ok); color: var(--text-invert); }
.montaz-usterka-tresc { display: grid; gap: 2px; min-width: 0; padding: 0; border: 0; background: transparent; color: var(--text); text-align: left; cursor: pointer; }
.montaz-usterka.is-done .montaz-usterka-tresc strong { color: var(--text-muted); text-decoration: line-through; }

/* E4 — dziennik montażu: suma na osobę, wpisy dni, wiersze osób w oknie. */
.montaz-dziennik { display: grid; gap: var(--s-2); margin: 0; padding: 0; list-style: none; }
.montaz-dziennik-wpis { display: grid; gap: 2px; padding: var(--s-2) var(--s-3); border: 1px solid var(--line); border-radius: var(--r-sm); background: var(--surface); }
.montaz-dziennik-wpis p { margin: 0; white-space: pre-wrap; }
.montaz-dziennik-gora { display: flex; align-items: center; gap: var(--s-2); }
.montaz-dziennik-gora .button { margin-left: auto; }
.montaz-dziennik-suma { width: 100%; margin-bottom: var(--s-3); border-collapse: collapse; font-size: var(--t-sm); }
.montaz-dziennik-suma th, .montaz-dziennik-suma td { padding: var(--s-1) var(--s-2); border-bottom: 1px solid var(--line); text-align: right; }
.montaz-dziennik-suma th:first-child, .montaz-dziennik-suma td:first-child { text-align: left; }
.montaz-dziennik-suma th { color: var(--text-muted); font-weight: var(--w-medium); }
.montaz-dziennik-osoby { display: grid; gap: var(--s-2); }
.montaz-dziennik-osoba { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: var(--s-3); }
.montaz-dziennik-byl, .montaz-dziennik-nocleg, .montaz-dziennik-godziny { display: flex; align-items: center; gap: var(--s-1); white-space: nowrap; }
.montaz-dziennik-godziny input { width: 80px; }

/* E1 — „Dziś”, zdjęcia i uwagi, plany montażu. */
.montaz-termin { margin: 0 0 var(--s-2); font-weight: var(--w-medium); }
.montaz-plan { display: grid; gap: var(--s-1); padding: var(--s-2) 0; border-bottom: 1px solid var(--line); }
.montaz-plan:last-child { border-bottom: 0; }
.montaz-plan-pliki { display: grid; gap: var(--s-1); margin: 0; padding: 0; list-style: none; }
.montaz-plan-pliki a { display: inline-flex; align-items: center; gap: var(--s-2); }

/* E2 — protokół odbioru: pole podpisu (kreska w kolorze napisu motywu), zakres i usterki. */
.montaz-podpis { display: block; width: 100%; height: 180px; border: 1px dashed var(--line-strong); border-radius: var(--r-sm); background: var(--surface); color: var(--text); touch-action: none; cursor: crosshair; }
.montaz-protokol-konstrukcje { display: grid; gap: var(--s-1); }
.montaz-protokol-usterki { margin: 0; padding-left: var(--s-5); }

/* E5 — karta pracy hali: projekty w produkcji, rysunki, lista części (tabela przewijana w bok tylko w swoim pudełku). */
.karty-pracy { display: grid; gap: var(--s-3); }
.karta-dzien { display: flex; align-items: center; gap: var(--s-2); font-weight: var(--w-medium); }
.karta-rysunki { display: grid; gap: var(--s-1); margin-bottom: var(--s-3); }
.karta-konstrukcja { border-top: 1px solid var(--line); padding: var(--s-2) 0; }
.karta-konstrukcja > summary { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--s-2); cursor: pointer; }
.karta-czesci-przewijanie { max-width: 100%; margin-top: var(--s-2); overflow-x: auto; }
.karta-czesci { width: 100%; border-collapse: collapse; font-size: var(--t-sm); }
.karta-czesci th, .karta-czesci td { padding: var(--s-1) var(--s-2); border-bottom: 1px solid var(--line); text-align: left; white-space: nowrap; }
.karta-czesci th { color: var(--text-muted); font-weight: var(--w-medium); }
.karta-czesci td:first-child, .karta-czesci th:first-child { width: 1%; color: var(--text-muted); }
.karta-konstrukcja > summary { list-style: none; }
.karta-konstrukcja > summary .icon { transition: transform var(--szybko) ease; }
.karta-konstrukcja[open] > summary .icon { transform: rotate(90deg); }

/* POPR-n25 — „Dziś trwa”: montaże trwające dziś jako duże przyciski nad wyborem projektu (wybrany — tło akcentu). */
.montaz-dzis-trwa { display: flex; flex-wrap: wrap; align-items: stretch; gap: var(--s-2); }
.montaz-dzis-trwa-napis { align-self: center; color: var(--text-muted); font-size: var(--t-sm); font-weight: var(--w-bold); }
.montaz-dzis-projekt { display: grid; gap: 2px; min-width: 0; max-width: 360px; min-height: 44px; padding: var(--s-2) var(--s-3); border: 1px solid var(--line-strong); border-radius: var(--r); background: var(--surface); color: var(--text); text-align: left; cursor: pointer; transition: border-color 160ms ease-out, background-color 160ms ease-out; }
.montaz-dzis-projekt span { overflow: hidden; font-size: var(--t-sm); text-overflow: ellipsis; white-space: nowrap; }
.montaz-dzis-projekt small { color: var(--text-muted); font-size: var(--t-xs); }
.montaz-dzis-projekt:hover { border-color: var(--accent); }
.montaz-dzis-projekt.is-wybrany { border-color: var(--accent); background: var(--accent-soft); }
.montaz-dzis-projekt:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
:root[data-ui="tablet"] .montaz-dziennik-osoba :is(.montaz-dziennik-byl, .montaz-dziennik-nocleg) { min-height: 44px; }   /* POPR-n30: dotyk — kratki „był” i „nocleg” z podpisem 44 px */

/* POPR-n43 — szukajka i filtry zgłoszeń (projekt, pilność). */
.zgloszenia-szukaj-pasek > .zgloszenia-szukaj { flex: 1 1 260px; max-width: 420px; height: var(--h-control); }
.zgloszenia-szukaj-pasek > :is(select, .combo) { min-width: min(240px, 100%); }
.zgloszenie-data { white-space: nowrap; }
.zgloszenia-filtry { display: flex; flex: 1 1 100%; flex-wrap: wrap; gap: var(--s-2); }
.zgloszenia-filtry > :is(select, .combo) { min-width: min(240px, 100%); }
:root[data-ui="tablet"] .zgloszenia-filtry-przycisk { min-height: 44px; }
