:root {
  --granat: #25377D;
  --granat-ciemny: #1b285d;
  --zielen: #69B32E;
  --tlo: #f4f6fb;
  --panel: #ffffff;
  --tekst: #1f2430;
  --tekst-slaby: #6b7280;
  --obramowanie: #e3e7f0;
  --cien: 0 1px 3px rgba(37, 55, 125, .08), 0 1px 2px rgba(37, 55, 125, .06);
  --radius: 10px;
}

* { box-sizing: border-box; }
body {
  margin: 0;
  font-family: "Segoe UI", Roboto, Arial, sans-serif;
  background: var(--tlo);
  color: var(--tekst);
  font-size: 15px;
  line-height: 1.5;
}
a { color: var(--granat); text-decoration: none; }
a:hover { text-decoration: underline; }

/* Pasek górny */
.topbar {
  background: var(--granat);
  color: #fff;
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 0 1.25rem;
  height: 60px;
  box-shadow: var(--cien);
  position: sticky; top: 0; z-index: 50;
}
.topbar .logo { display: flex; align-items: center; gap: .6rem; font-weight: 700; letter-spacing: .3px; white-space: nowrap; }
.topbar .logo span { font-size: .98rem; }
.topbar .logo img { height: 26px; filter: brightness(0) invert(1); }
.topbar .spacer { flex: 1; }
.topbar a { color: #fff; }
.topbar .user { font-size: .9rem; opacity: .95; }

/* Dzwonek powiadomień */
.bell { position: relative; font-size: 1.3rem; }
.bell .badge {
  position: absolute; top: -6px; right: -8px;
  background: var(--zielen); color: #fff; font-size: .7rem; font-weight: 700;
  min-width: 18px; height: 18px; border-radius: 9px; display: flex;
  align-items: center; justify-content: center; padding: 0 4px;
}

/* Layout */
.container { max-width: 1200px; margin: 1.5rem auto; padding: 0 1.25rem; }
.page-title { font-size: 1.5rem; margin: 0 0 .25rem; color: var(--granat); }
.page-sub { color: var(--tekst-slaby); margin: 0 0 1.5rem; }

/* Kafelki modułów */
.grupa-tytul {
  font-size: .8rem; text-transform: uppercase; letter-spacing: .08em;
  color: var(--granat); font-weight: 700; margin: 1.75rem 0 .75rem;
  border-left: 4px solid var(--zielen); padding-left: .6rem;
}
.kafelki { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 1rem; }
.kafelek {
  background: var(--panel); border: 1px solid var(--obramowanie); border-radius: var(--radius);
  padding: 1rem 1.1rem; box-shadow: var(--cien); display: flex; flex-direction: column; gap: .35rem;
}
.kafelek h3 { margin: 0; font-size: 1.02rem; color: var(--tekst); }
.kafelek p { margin: 0; color: var(--tekst-slaby); font-size: .86rem; }
.status {
  align-self: flex-start; margin-top: .4rem; font-size: .72rem; font-weight: 700;
  padding: .12rem .5rem; border-radius: 20px; text-transform: uppercase; letter-spacing: .04em;
}
.status.gotowy { background: #e7f6db; color: #3d7a12; }
.status.w_budowie { background: #fff2d6; color: #9a6b00; }
.status.planowany { background: #eef0f6; color: #6b7280; }

/* Panele / listy */
.panel {
  background: var(--panel); border: 1px solid var(--obramowanie); border-radius: var(--radius);
  box-shadow: var(--cien); padding: 1.1rem 1.25rem;
}
.lista-powiadomien { list-style: none; margin: 0; padding: 0; }
.lista-powiadomien li {
  display: flex; gap: .75rem; align-items: flex-start; padding: .7rem 0;
  border-bottom: 1px solid var(--obramowanie);
}
.lista-powiadomien li:last-child { border-bottom: none; }
.lista-powiadomien .kropka { width: 9px; height: 9px; border-radius: 50%; margin-top: .45rem; background: var(--obramowanie); }
.lista-powiadomien li.nieprzeczytane .kropka { background: var(--zielen); }
.lista-powiadomien .meta { font-size: .78rem; color: var(--tekst-slaby); }

/* Formularz logowania */
.login-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: var(--granat); }
.login-card { background: #fff; width: 360px; max-width: 92vw; border-radius: 14px; padding: 2rem; box-shadow: 0 10px 40px rgba(0,0,0,.25); }
.login-card img { height: 34px; display: block; margin: 0 auto 1rem; }
.login-card h1 { font-size: 1.1rem; text-align: center; color: var(--granat); margin: 0 0 1.25rem; }
.form-row { margin-bottom: .9rem; }
.form-row label { display: block; font-size: .82rem; font-weight: 600; margin-bottom: .3rem; }
.form-row input { width: 100%; padding: .6rem .7rem; border: 1px solid var(--obramowanie); border-radius: 8px; font-size: .95rem; }
.form-row input:focus { outline: none; border-color: var(--granat); }
.btn {
  display: inline-block; background: var(--granat); color: #fff; border: none; border-radius: 8px;
  padding: .65rem 1.2rem; font-size: .95rem; font-weight: 600; cursor: pointer; width: 100%;
}
.btn:hover { background: var(--granat-ciemny); }
.btn-accent { background: var(--zielen); }
.komunikat { padding: .6rem .8rem; border-radius: 8px; margin-bottom: .8rem; font-size: .88rem; }
.komunikat.error { background: #fde7e7; color: #a12020; }

/* Stopka klasyfikacji */
.klasyfikacja { text-align: center; color: var(--zielen); font-weight: 700; font-size: .72rem; letter-spacing: .04em; padding: 1.5rem 0; }

/* --- Tabele --- */
.tabela { width: 100%; border-collapse: collapse; font-size: .9rem; }
.tabela th, .tabela td { text-align: left; padding: .6rem .8rem; border-bottom: 1px solid var(--obramowanie); vertical-align: top; }
.tabela thead th { background: #f7f9fd; color: var(--granat); font-size: .78rem; text-transform: uppercase; letter-spacing: .03em; }
.tabela tbody tr:hover { background: #f9fbff; }
.tabela-def { width: 100%; border-collapse: collapse; margin-top: .5rem; font-size: .9rem; }
.tabela-def td { padding: .35rem 0; vertical-align: top; }
.tabela-def td:first-child { color: var(--tekst-slaby); width: 42%; }

/* --- Pill (statusy) --- */
.pill { display: inline-block; font-size: .72rem; font-weight: 700; padding: .12rem .55rem; border-radius: 20px; text-transform: uppercase; letter-spacing: .03em; background: #eef0f6; color: #55607a; }
.pill-zaplanowany, .pill-roboczy { background: #eef0f6; color: #55607a; }
.pill-w_trakcie, .pill-do_akceptacji { background: #fff2d6; color: #9a6b00; }
.pill-zakonczony, .pill-zaakceptowany { background: #e7f6db; color: #3d7a12; }
.pill-anulowany { background: #fde7e7; color: #a12020; }
.pill-alarm { background: #fde7e7; color: #a12020; }
.pill-karta-w_przygotowaniu { background: #eef0f6; color: #55607a; }
.pill-karta-w_obiegu, .pill-karta-w_realizacji { background: #fff2d6; color: #9a6b00; }
.pill-karta-zamknieta { background: #e7f6db; color: #3d7a12; }

/* --- Karta niezgodności --- */
.karta { border: 1px solid var(--obramowanie); border-left: 4px solid var(--granat); border-radius: 8px; padding: .75rem .9rem; margin: .6rem 0; background: #fff; }
.karta-po-terminie { border-left-color: #d33; }

/* Kafelek jako link */
a.kafelek-link { color: inherit; text-decoration: none; transition: transform .06s, box-shadow .12s; }
a.kafelek-link:hover { text-decoration: none; transform: translateY(-1px); box-shadow: 0 4px 14px rgba(37,55,125,.14); border-color: var(--zielen); }

/* Pola formularzy w tabelach/gridach */
select, textarea, input[type=date], input[type=text], input[type=number] { font-family: inherit; font-size: .9rem; padding: .4rem .5rem; border: 1px solid var(--obramowanie); border-radius: 6px; }
select:focus, textarea:focus, input:focus { outline: none; border-color: var(--granat); }
.form-row select, .form-row textarea, .form-row input { width: 100%; }

/* Statusy reklamacji */
.pill-nowe, .pill-w_toku { background: #fff2d6; color: #9a6b00; }
.pill-zamkniete { background: #e7f6db; color: #3d7a12; }
.pill-nowa { background: #e3ecff; color: #274690; }
.pill-w_trakcie { background: #fff2d6; color: #9a6b00; }
.pill-oczekuje { background: #f0e6ff; color: #6b3fa0; }
.pill-odpowiedziana { background: #e7f6db; color: #3d7a12; }
.pill-zamknieta { background: #eef0f6; color: #55607a; }

/* Statusy GSR */
.pill-nowe { background: #e3ecff; color: #274690; }
.pill-w_analizie { background: #fff2d6; color: #9a6b00; }
.pill-zamkniete { background: #e7f6db; color: #3d7a12; }

/* Tolerancja ryzyka (IATA) */
.pill-tol-akceptowalne { background: #e7f6db; color: #3d7a12; }
.pill-tol-tolerowane { background: #fff2d6; color: #9a6b00; }
.pill-tol-nieakceptowalne { background: #fde7e7; color: #a12020; }

/* Statusy Efektywności Procesów */
.pill-w_toku { background: #fff2d6; color: #9a6b00; }
.pill-naliczona { background: #e3ecff; color: #274690; }
.pill-w_sporze { background: #fff2d6; color: #9a6b00; }
.pill-zaplacona { background: #e7f6db; color: #3d7a12; }
.pill-odwolana { background: #eef0f6; color: #55607a; }

/* Wiersze punktów inspekcji */
.punkt-wiersz.ocena-niezgodne { background: #fdf1f1; }
.punkt-wiersz.ocena-zgodne { background: #f4fbee; }
.pill-w_trakcie { background: #fff2d6; color: #9a6b00; }
.pill-zakonczona { background: #e7f6db; color: #3d7a12; }

/* Kategorie ryzyka IATA AHM (zielony/żółty/bursztynowy/czerwony) */
.pill-kat-zielony { background: #2e9b3f; color: #fff; }
.pill-kat-zolty { background: #f4d000; color: #3a3000; }
.pill-kat-bursztynowy { background: #f08a00; color: #fff; }
.pill-kat-czerwony { background: #d81f26; color: #fff; }

/* Kod oznaczenia ryzyka np. 3C */
.ryzyko-kod { display:inline-block; min-width: 34px; padding: .12rem .35rem; border-radius: 6px; font-weight: 800; text-align:center; }
.ryzyko-kod.kat-zielony { background: #2e9b3f; color:#fff; }
.ryzyko-kod.kat-zolty { background: #f4d000; color:#3a3000; }
.ryzyko-kod.kat-bursztynowy { background: #f08a00; color:#fff; }
.ryzyko-kod.kat-czerwony { background: #d81f26; color:#fff; }

/* Komórki macierzy ryzyka */
.macierz td.kat-zielony { background: #2e9b3f; color:#fff; }
.macierz td.kat-zolty { background: #f4d000; color:#3a3000; }
.macierz td.kat-bursztynowy { background: #f08a00; color:#fff; }
.macierz td.kat-czerwony { background: #d81f26; color:#fff; }
.macierz th { background:#f7f9fd; }

/* --- Okno modalne (podgląd załączników) --- */
.modal { border: none; border-radius: 12px; padding: 0; width: min(1000px, 94vw); max-height: 92vh; box-shadow: 0 20px 60px rgba(0,0,0,.35); }
.modal::backdrop { background: rgba(20, 28, 60, .55); }
#modal-tresc { padding: 1rem 1.2rem; overflow: auto; max-height: 92vh; }
.podglad-naglowek { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; border-bottom: 1px solid var(--obramowanie); padding-bottom: .6rem; margin-bottom: .8rem; }
.podglad-tekst { white-space: pre-wrap; background: #f7f9fd; padding: .8rem; border-radius: 8px; max-height: 65vh; overflow: auto; font-size: .85rem; }

/* --- Załączniki --- */
.zalaczniki-lista { list-style: none; margin: .6rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .6rem; }
.zalaczniki-lista li { position: relative; }
.zal-kafel { width: 100%; display: flex; flex-direction: column; align-items: center; gap: .25rem; padding: .5rem; border: 1px solid var(--obramowanie); border-radius: 8px; background: #fff; cursor: pointer; font: inherit; text-align: center; }
.zal-kafel:hover { border-color: var(--granat); box-shadow: var(--cien); }
.zal-kafel img { width: 100%; height: 90px; object-fit: cover; border-radius: 6px; }
.zal-ikona { font-size: 2.2rem; line-height: 90px; height: 90px; }
.zal-nazwa { font-size: .78rem; word-break: break-all; }
.zal-usun { position: absolute; top: 4px; right: 4px; border: none; background: rgba(255,255,255,.9); border-radius: 50%; width: 22px; height: 22px; cursor: pointer; color: #a12020; font-weight: 700; }

/* --- Rejestry generyczne --- */
.pasek-akcji { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; margin-bottom: 1rem; }
.pasek-akcji .page-title { margin: 0; }
.pasek-akcji .prawo { margin-left: auto; display: flex; gap: .5rem; flex-wrap: wrap; }
.btn-maly { width: auto !important; padding: .4rem .9rem !important; font-size: .88rem; }
.btn-szary { background: #6b7280; }
.btn-czerwony { background: #c0202a; }
.form-siatka { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: .1rem 1rem; }
.form-siatka .pelna { grid-column: 1 / -1; }
.pill-wazne, .pill-zrealizowane, .pill-obowiazujaca, .pill-wdrozone, .pill-niskie, .pill-zakonczone_zasadne { background: #e7f6db; color: #3d7a12; }
.pill-wygasa, .pill-w_realizacji, .pill-w_aktualizacji, .pill-w_wdrozeniu, .pill-srednie, .pill-weryfikacja, .pill-postepowanie { background: #fff2d6; color: #9a6b00; }
.pill-wygaslo, .pill-zagrozone, .pill-wysokie, .pill-otwarta { background: #fde7e7; color: #a12020; }
.alarm-wiersz td { background: #fdf1f1; }

/* Zdjęcia przy punktach inspekcji */
.foto-punktu .zalaczniki-lista { grid-template-columns: repeat(auto-fill, minmax(64px, 1fr)); gap: .3rem; margin-top: .3rem; }
.foto-punktu .zal-kafel img { height: 48px; }
.foto-punktu .zal-nazwa, .foto-punktu .meta { display: none; }
.foto-punktu .zal-ikona { font-size: 1.4rem; line-height: 48px; height: 48px; }

/* Wydruk raportów */
@media print {
  .topbar, .nie-drukuj, .komunikat { display: none !important; }
  body { background: #fff; }
  .panel, .kafelek { box-shadow: none; break-inside: avoid; }
  .container { max-width: none; margin: 0; }
}

/* Formularz zgłoszenia GSR/OSR — sekcje, wyszukiwarka osób */
.sekcja-formularza { margin-bottom: 1rem; }
.sekcja-formularza > strong { display: block; margin-bottom: .6rem; }
.sekcja-warunkowa[hidden] { display: none; }
.siatka-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1rem; }
@media (max-width: 700px) { .siatka-2 { grid-template-columns: 1fr; } }
.przelacznik { display: flex; align-items: center; gap: .5rem; margin: .3rem 0 .8rem; cursor: pointer; }
.przelacznik input { width: auto; margin: 0; }
.wyniki-osob .lista-osob { list-style: none; margin: .4rem 0 0; padding: 0; display: grid; gap: .25rem; }
.wyniki-osob .btn-maly { width: 100%; text-align: left; }
.plakietki { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .4rem; }
.plakietka { display: inline-flex; align-items: center; gap: .35rem; background: #eef0f6; color: #38415c;
             border-radius: 20px; padding: .2rem .5rem .2rem .7rem; font-size: .85rem; }
.plakietka-usun { border: 0; background: none; cursor: pointer; font-size: 1rem; line-height: 1; color: #8a91a6; }
.plakietka-usun:hover { color: #a12020; }
