:root{
  --ink:#1c2b3a;
  --ink-soft:#4a5a6a;
  --accent:#6d8f3a;
  --accent-dark:#4a6428;
  --bg:#fafbfc;
  --card:#ffffff;
  --line:#e4e9ed;
  --good:#1e7a4c;
  --good-bg:#e7f5ec;
  --warn:#9a6b00;
  --warn-bg:#fff3d9;
  --bad:#a4222c;
  --bad-bg:#fbe9ea;
}
*{box-sizing:border-box;}
body{
  margin:0;font-family:"Segoe UI", Arial, sans-serif;color:var(--ink);
  background:var(--bg);line-height:1.55;
}
a{color:var(--accent);text-decoration:none;}
a:hover{text-decoration:underline;}
.wrap{max-width:1080px;margin:0 auto;padding:0 24px;}

header.nav{background:#fff;border-bottom:1px solid var(--line);}
.nav-inner{max-width:1080px;margin:0 auto;padding:14px 24px;display:flex;align-items:center;justify-content:space-between;}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:1.15rem;}
.brand .mark{width:32px;height:32px;border-radius:8px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:0.85rem;}
.brand-logo{height:36px;width:auto;display:block;}
.nav-actions{display:flex;gap:10px;align-items:center;font-size:0.9rem;}
.nav-actions span{color:var(--ink-soft);}

main{padding:40px 0 60px;}
h1{font-size:1.7rem;margin:0 0 6px;}
h2{font-size:1.25rem;margin:0 0 14px;}
p.lead{color:var(--ink-soft);margin:0 0 28px;}

.btn{display:inline-block;padding:10px 18px;border-radius:8px;background:var(--accent);color:#fff;
  border:none;cursor:pointer;font-size:0.92rem;font-weight:600;text-decoration:none;}
.btn:hover{background:var(--accent-dark);text-decoration:none;}
.btn-outline{background:transparent;border:1.5px solid var(--accent);color:var(--accent);}
.btn-outline:hover{background:var(--accent);color:#fff;}
.btn-sm{padding:6px 12px;font-size:0.82rem;}
.btn-block{display:block;width:100%;text-align:center;}

.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:24px;margin-bottom:20px;}
.card h3{margin:0 0 12px;font-size:1.05rem;}

.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}
.grid-5{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;}
@media (max-width:760px){.grid-2,.grid-3{grid-template-columns:1fr;}}

.cal-table{width:100%;border-collapse:collapse;font-size:0.82rem;border:1px solid var(--line);border-radius:8px;overflow:hidden;}
.cal-table th{text-align:left;color:var(--ink-soft);font-weight:600;font-size:0.7rem;text-transform:uppercase;
   letter-spacing:0.2px;padding:6px 6px;border-bottom:1px solid var(--line);white-space:nowrap;background:#eef1f3;}
.cal-table td{padding:5px 6px;border-bottom:1px solid var(--line);vertical-align:middle;}
.cal-table input[type=number]{padding:5px 6px;font-size:0.82rem;width:64px;}
.cal-table input[type=text]{padding:5px 6px;font-size:0.82rem;}
.cal-table select{padding:5px 6px;font-size:0.78rem;}
.cal-num{font-variant-numeric:tabular-nums;text-align:right;}
.cal-table tr:nth-child(even):not(:first-child){background:#eceff2;}

.equip-row{border-top:1px solid var(--line);padding:18px 24px;margin:0 -24px;}
.equip-row.alt{background:#eceff2;}

table{width:100%;border-collapse:collapse;font-size:0.9rem;border:1px solid var(--line);border-radius:8px;overflow:hidden;}
th{text-align:left;color:var(--ink-soft);font-weight:600;font-size:0.78rem;text-transform:uppercase;
   letter-spacing:0.4px;padding:10px 12px;border-bottom:1px solid var(--line);background:#eef1f3;}
td{padding:12px;border-bottom:1px solid var(--line);border-right:1px solid var(--line);vertical-align:middle;}
td:last-child{border-right:none;}
tr:last-child td{border-bottom:none;}
table tr:nth-child(even):not(:first-child){background:#eceff2;}

/* Tabele, gdzie jeden "rekord" może mieć dodatkowy wiersz-dopisek (np. "w tym: ...") —
   nth-child liczy WSZYSTKIE fizyczne wiersze, więc zmienna liczba dopisków rozjeżdża
   naprzemienne cieniowanie. Tu cieniowanie ustawiane jest jawnie przez Jinja (klasa
   .row-alt na całej grupie wiersz+dopisek), więc wyłączamy dla nich nth-child. */
table.table-grouped tr:nth-child(even){background:transparent !important;}
table.table-grouped tr.row-alt{background:#eceff2 !important;}

.badge{display:inline-block;padding:4px 10px;border-radius:20px;font-size:0.76rem;font-weight:700;letter-spacing:0.2px;}
.badge-nowe{background:#eef2f4;color:var(--ink-soft);}
.badge-przyjete{background:#e6f0f5;color:var(--accent-dark);}
.badge-wtrakcie{background:var(--warn-bg);color:var(--warn);}
.badge-gotowe{background:var(--good-bg);color:var(--good);}
.badge-wydane{background:#e9e9ee;color:#4a4a5a;}
.badge-overdue{background:var(--bad-bg);color:var(--bad);}
.badge-soon{background:var(--warn-bg);color:var(--warn);}
.badge-ok{background:var(--good-bg);color:var(--good);}
.badge-zgodny{background:var(--good-bg);color:var(--good);}
.badge-ryzyko{background:var(--warn-bg);color:var(--warn);}
.badge-niezgodny{background:var(--bad-bg);color:var(--bad);}
.badge-pending{background:#eef2f4;color:var(--ink-soft);}

form .field{margin-bottom:16px;}
label{display:block;font-size:0.85rem;font-weight:600;margin-bottom:6px;color:var(--ink-soft);}
input, select, textarea{
  width:100%;padding:10px 12px;border:1px solid #cdd6dc;border-radius:8px;
  font-family:inherit;font-size:0.92rem;background:#f3f5f7;
}
input:focus, select:focus, textarea:focus{outline:2px solid var(--accent);outline-offset:1px;}

.flash{padding:12px 16px;border-radius:8px;margin-bottom:20px;font-size:0.9rem;}
.flash-success{background:var(--good-bg);color:var(--good);}
.flash-error{background:var(--bad-bg);color:var(--bad);}

.auth-wrap{max-width:420px;margin:40px auto;}
.muted{color:var(--ink-soft);font-size:0.85rem;}
.section-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:12px;}
.empty{color:var(--ink-soft);font-size:0.9rem;padding:20px 0;text-align:center;}

.header-actions{display:flex;gap:10px;flex-wrap:wrap;}
.header-actions form{display:inline;}

.print-sheet{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:32px;}

@media print{
  header.nav, .no-print, .flash{display:none !important;}
  body{background:#fff;}
  main{padding:0;}
  .print-sheet{border:none;padding:0;}
}
