/* ============================================================
   TACTIMAP — Kalendarz / planowanie pracy
   ============================================================
   Wszystkie kolory z zmiennych ze style.css — moduł ma zniknąć w panelu,
   nie wyglądać jak doklejony. Żadnych nowych krojów ani własnej palety. */

#calendar-screen {
  position: fixed; inset: var(--hdr-h, 92px) 0 0 0;
  background: var(--bg-void);
  display: flex; flex-direction: column;
  z-index: 40;
}
#calendar-screen.hidden { display: none; }

/* ---- pasek narzędzi ---- */
.cal-toolbar {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 8px 14px;
  background: var(--bg-panel);
  border-bottom: 1px solid var(--border-dim);
}
.cal-nav { display: flex; align-items: center; gap: 4px; }
.cal-month-label {
  font-family: var(--font-display);
  font-size: 17px; letter-spacing: .04em; text-transform: uppercase;
  color: var(--text-primary);
  min-width: 190px; text-align: center;
}
.cal-spacer { flex: 1 1 auto; }

.cal-search-wrap { position: relative; display: flex; align-items: center; }
.cal-search-wrap > i {
  position: absolute; left: 9px; color: var(--text-muted); font-size: 15px; pointer-events: none;
}
#cal-search {
  background: var(--bg-panel-raised);
  border: 1px solid var(--border-dim);
  color: var(--text-primary);
  font-family: var(--font-body); font-size: 14px;
  padding: 6px 10px 6px 30px; border-radius: 3px;
  min-width: 210px;
}
#cal-search:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-glow); }
#cal-search::placeholder { color: var(--text-muted); }

.cal-viewtabs { display: flex; border: 1px solid var(--border-dim); border-radius: 3px; overflow: hidden; }
.cal-viewtab {
  background: var(--bg-panel-raised); border: 0; cursor: pointer;
  color: var(--text-secondary); font-family: var(--font-display);
  font-size: 13px; letter-spacing: .05em; text-transform: uppercase;
  padding: 6px 12px;
}
.cal-viewtab + .cal-viewtab { border-left: 1px solid var(--border-dim); }
.cal-viewtab:hover { color: var(--text-primary); }
.cal-viewtab.active { background: var(--accent-dim); color: var(--text-primary); }

/* ---- chipy filtrów ---- */
.cal-filters {
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
  padding: 7px 14px;
  background: var(--bg-panel);
  border-bottom: 1px solid var(--border-dim);
}
.cal-type-filter { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.cal-filters-label {
  font-family: var(--font-display); font-size: 12px; letter-spacing: .08em;
  text-transform: uppercase; color: var(--text-muted); margin-right: 2px;
}
.cal-chip {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--bg-panel-raised);
  border: 1px solid var(--border-dim); border-radius: 999px;
  color: var(--text-secondary);
  font-family: var(--font-body); font-size: 13px;
  padding: 3px 11px; cursor: pointer;
}
.cal-chip:hover { border-color: var(--border-strong); color: var(--text-primary); }
.cal-chip.active { border-color: var(--accent); color: var(--text-primary); background: rgba(242,166,35,.12); }
.cal-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--fill, #6b7280); display: inline-block; flex: 0 0 auto; }

/* ---- obszar treści ---- */
.cal-body { flex: 1 1 auto; overflow: auto; padding: 12px 14px 26px; }

.cal-empty {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 10px; padding: 60px 20px; color: var(--text-muted); text-align: center;
}
.cal-empty i { font-size: 34px; opacity: .55; }
.cal-empty p { margin: 0; font-size: 15px; max-width: 380px; }

.cal-hint { color: var(--text-muted); font-size: 13px; margin: 12px 2px 0; display: flex; align-items: center; gap: 6px; }

/* ---- oś zasobów ---- */
.cal-axis {
  --label-w: 210px;
  display: grid;
  grid-template-columns: var(--label-w) repeat(var(--days), minmax(26px, 1fr));
  border: 1px solid var(--border-dim);
  border-radius: 3px; overflow: hidden;
  background: var(--bg-panel);
  min-width: 780px;
}
.cal-axis-head, .cal-axis-row { display: contents; }

.cal-axis-corner, .cal-axis-day {
  background: var(--bg-panel-raised);
  border-bottom: 1px solid var(--border-strong);
  padding: 5px 4px;
  position: sticky; top: 0; z-index: 2;
}
.cal-axis-corner {
  left: 0; z-index: 3;
  font-family: var(--font-display); font-size: 12px; letter-spacing: .08em;
  text-transform: uppercase; color: var(--text-muted);
  padding-left: 10px; display: flex; align-items: center;
}
.cal-axis-day {
  display: flex; flex-direction: column; align-items: center; gap: 1px;
  border-left: 1px solid var(--border-dim);
}
.cal-axis-day.weekend { background: #12100c; }
.cal-axis-day.today { box-shadow: inset 0 -2px 0 var(--accent); }
.cal-dow { font-size: 10px; color: var(--text-muted); text-transform: uppercase; letter-spacing: .04em; }
.cal-dnum { font-family: var(--font-mono); font-size: 12px; color: var(--text-secondary); }
.cal-axis-day.today .cal-dnum { color: var(--accent); }

.cal-axis-label {
  position: sticky; left: 0; z-index: 1;
  min-height: calc(14px + var(--lanes, 1) * 12px);
  box-sizing: border-box;
  background: var(--bg-panel);
  border-bottom: 1px solid var(--border-dim);
  padding: 7px 10px;
  font-size: 14px; color: var(--text-primary);
  display: flex; align-items: center; gap: 7px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.cal-axis-label > i { color: var(--text-muted); flex: 0 0 auto; }
.cal-plate {
  font-family: var(--font-mono); font-size: 11px; color: var(--text-muted);
  border: 1px solid var(--border-dim); border-radius: 2px; padding: 0 4px;
}

.cal-cell {
  border-left: 1px solid var(--border-dim);
  border-bottom: 1px solid var(--border-dim);
  /* Wysokość rośnie z liczbą ścieżek — wpisy nachodzące na siebie muszą się zmieścić obok siebie. */
  min-height: calc(14px + var(--lanes, 1) * 12px);
  display: flex; flex-direction: column; justify-content: center; gap: 2px;
  padding: 3px 0;
  position: relative;
  cursor: crosshair;
  touch-action: none;
}
.cal-lane-empty { display: block; height: 10px; flex: 0 0 auto; }
.cal-cell.weekend { background: rgba(255,255,255,.018); }
.cal-cell.today { box-shadow: inset 1px 0 0 var(--accent-dim); }
.cal-cell:hover { background: rgba(242,166,35,.07); }
.cal-cell.selecting { background: var(--accent-glow); }

.cal-fill {
  display: block; height: 10px; flex: 0 0 auto;
  margin: 0 -1px;
  background: var(--fill, #6b7280);
  opacity: .85; cursor: pointer;
}
/* NAZWA TERMINU NA PASKU (0.4.50). Pasek jest wysoki na 10 px, więc podpis nie zmieści się
   w środku — leży NAD nim i rozciąga się na tyle komórek, ile trwa termin (`--span`).
   Szerokość liczymy w procentach komórki, bo kolumny osi są elastyczne (minmax 26px, 1fr). */
.cal-fill { position: relative; }
.cal-fill-label {
  position: absolute; left: 4px; bottom: 11px;
  width: calc(var(--span, 1) * 100% - 8px);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  pointer-events: none;                 /* klik ma trafiać w pasek, nie w tekst */
  font-size: 10px; line-height: 1.2; letter-spacing: .02em;
  color: var(--text-secondary); text-shadow: 0 1px 2px rgba(0,0,0,.85);
}
.cal-fill.start { margin-left: 3px; border-radius: 3px 0 0 3px; }
.cal-fill.end { margin-right: 3px; border-radius: 0 3px 3px 0; }
.cal-fill:hover { opacity: 1; }

/* ---- lista ---- */
.cal-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.cal-table thead th {
  position: sticky; top: 0; z-index: 1;
  background: var(--bg-panel-raised);
  border-bottom: 1px solid var(--border-strong);
  color: var(--text-muted);
  font-family: var(--font-display); font-size: 12px;
  letter-spacing: .08em; text-transform: uppercase;
  text-align: left; padding: 7px 10px; white-space: nowrap;
}
.cal-th { cursor: pointer; user-select: none; }
.cal-th:hover { color: var(--text-primary); }
.cal-th.active { color: var(--accent); }
.cal-th i { font-size: 13px; opacity: .7; }
.cal-table tbody td {
  border-bottom: 1px solid var(--border-dim);
  padding: 7px 10px; color: var(--text-primary); vertical-align: middle;
}
.cal-table tbody tr:hover { background: rgba(255,255,255,.03); }
.cal-td-res { font-weight: 600; }
.cal-td-range { font-family: var(--font-mono); font-size: 13px; color: var(--text-secondary); white-space: nowrap; }
.cal-td-note { color: var(--text-secondary); }
.cal-dash { color: var(--text-muted); }
.cal-td-act { text-align: right; white-space: nowrap; }

.cal-icon-btn {
  background: transparent; border: 1px solid transparent; border-radius: 3px;
  color: var(--text-muted); cursor: pointer; padding: 4px 6px; font-size: 15px;
}
.cal-icon-btn:hover { color: var(--text-primary); border-color: var(--border-dim); }
.cal-icon-btn.danger:hover { color: var(--danger); border-color: var(--danger); }

/* ---- okno formularza ---- */
.cal-modal-backdrop {
  position: fixed; inset: 0; z-index: 120;
  background: rgba(0,0,0,.62);
  display: flex; align-items: center; justify-content: center; padding: 16px;
}
.cal-modal {
  background: var(--bg-panel);
  border: 1px solid var(--border-strong); border-radius: 4px;
  width: min(520px, 100%); max-height: 90vh; display: flex; flex-direction: column;
  box-shadow: 0 16px 44px rgba(0,0,0,.6);
}
.cal-modal-head {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 10px 14px; border-bottom: 1px solid var(--border-dim);
  background: var(--bg-panel-raised);
  font-family: var(--font-display); font-size: 15px;
  letter-spacing: .04em; text-transform: uppercase; color: var(--text-primary);
}
.cal-modal-body { padding: 14px; overflow: auto; }
.cal-modal-foot {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  padding: 10px 14px; border-top: 1px solid var(--border-dim); background: var(--bg-panel-raised);
}
.cal-foot-right { display: flex; gap: 8px; }
.cal-ghost { background: transparent !important; border-color: var(--border-dim) !important; color: var(--text-secondary) !important; }
.cal-danger-btn { background: transparent !important; border-color: var(--danger) !important; color: var(--danger) !important; }

.cal-label {
  display: block; margin: 12px 0 5px;
  font-family: var(--font-display); font-size: 12px;
  letter-spacing: .08em; text-transform: uppercase; color: var(--text-muted);
}
.cal-modal-body > .cal-label:first-child { margin-top: 0; }
.cal-optional { text-transform: none; letter-spacing: 0; opacity: .8; }

.cal-input {
  width: 100%; box-sizing: border-box;
  background: var(--bg-panel-raised); border: 1px solid var(--border-dim);
  color: var(--text-primary); font-family: var(--font-body); font-size: 14px;
  padding: 7px 9px; border-radius: 3px;
}
.cal-input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-glow); }
.cal-row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.cal-quick { display: flex; gap: 6px; margin-top: 7px; }

.cal-type-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 7px; }
.cal-type-tile {
  display: flex; align-items: center; gap: 7px;
  background: var(--bg-panel-raised); border: 1px solid var(--border-dim);
  border-left: 3px solid var(--fill, #6b7280);
  border-radius: 3px; padding: 8px 9px; cursor: pointer;
  color: var(--text-secondary); font-family: var(--font-body); font-size: 13px; text-align: left;
}
.cal-type-tile:hover { border-color: var(--border-strong); color: var(--text-primary); }
.cal-type-tile.active { background: rgba(242,166,35,.12); border-color: var(--accent); border-left-color: var(--fill); color: var(--text-primary); }
.cal-type-tile i { font-size: 16px; color: var(--fill, #6b7280); flex: 0 0 auto; }
.cal-type-tile span { flex: 1 1 auto; }
.cal-type-soft { font-size: 10px; font-style: normal; color: var(--text-muted); text-transform: uppercase; letter-spacing: .05em; }

.cal-form-msg { display: none; margin: 12px 0 0; font-size: 13px; padding: 8px 10px; border-radius: 3px; }
.cal-form-msg.show { display: block; }
.cal-form-msg.error { color: var(--danger); background: rgba(226,75,74,.1); border: 1px solid rgba(226,75,74,.35); }
.cal-form-msg.info { color: var(--info); background: rgba(55,176,221,.1); border: 1px solid rgba(55,176,221,.35); }

/* ---- plakietki w Planowaniu ---- */
.cal-badge {
  display: inline-flex; align-items: center; gap: 3px;
  font-family: var(--font-display); font-size: 11px;
  letter-spacing: .05em; text-transform: uppercase;
  padding: 1px 6px; border-radius: 2px; vertical-align: middle; white-space: nowrap;
}
.cal-badge i { font-size: 12px; }
.cal-badge-block { color: var(--danger); background: rgba(226,75,74,.14); border: 1px solid rgba(226,75,74,.45); }
.cal-badge-warn { color: var(--accent); background: rgba(242,166,35,.13); border: 1px solid rgba(242,166,35,.4); }
/* Podgląd tego, co zaczyna się PO terminie akcji — najcichszy z trzech poziomów. */
.cal-badge-next { color: var(--info); background: rgba(55,176,221,.1); border: 1px solid rgba(55,176,221,.32); }

/* ---- mniejsze ekrany ---- */
@media (max-width: 860px) {
  .cal-toolbar { gap: 7px; padding: 7px 10px; }
  .cal-month-label { min-width: 140px; font-size: 15px; }
  #cal-search { min-width: 130px; }
  .cal-body { padding: 10px 8px 22px; }
  .cal-axis { --label-w: 140px; }
  .cal-row2 { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .cal-cell, .cal-fill, .cal-chip, .cal-type-tile { transition: none !important; }
}

/* Wpisy odczytane z Planowania: kreskowane, żeby na pierwszy rzut oka odróżniały się
   od rezerwacji wpisanych ręcznie. Nie blokują niczego — to sama informacja. */
.cal-fill-virtual {
  opacity: .55;
  background: repeating-linear-gradient(
    45deg, var(--fill, #a0937d) 0 6px, transparent 6px 12px
  ) !important;
  border-top: 1px solid var(--fill, #a0937d);
  border-bottom: 1px solid var(--fill, #a0937d);
  cursor: default;
}
.cal-fill-virtual:hover { opacity: .8; }
.cal-from-plan {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 11px; color: var(--text-muted);
  font-family: var(--font-display); letter-spacing: .04em; text-transform: uppercase;
}
/* Kolizja między akcjami: to samo auto zaplanowane w dwóch akcjach naraz.
   Fiolet — odróżnia się od blokady (czerwień), ostrzeżenia (bursztyn) i podglądu (błękit),
   a nie wchodzi w barwy zarezerwowane dla dronów. */
.cal-badge-collision { color: #c08ae8; background: rgba(162,89,217,.13); border: 1px solid rgba(162,89,217,.42); }

/* ============================================================
   0.3.96 — kalendarz ludzi: zakładki, urlopy, szkolenia
   ============================================================ */
.cal-kindtabs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;
  padding:8px 14px;border-bottom:1px solid var(--border-dim);background:var(--bg-panel);}
.cal-kindtab,.cal-peopletab{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;cursor:pointer;
  background:transparent;border:1px solid var(--border-dim);border-radius:3px;color:var(--text-muted);
  font-family:var(--font-body);font-size:12px;}
.cal-kindtab:hover,.cal-peopletab:hover{color:var(--text-secondary);border-color:var(--accent-dim);}
.cal-kindtab.active,.cal-peopletab.active{color:var(--accent);border-color:var(--accent);background:rgba(242,166,35,.08);}
.cal-kindsep{width:1px;height:20px;background:var(--border-dim);margin:0 4px;}

.cal-people{display:flex;flex-direction:column;min-height:0;flex:1;}
.cp-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 14px;
  border-bottom:1px solid var(--border-dim);}

/* Tabele urlopów i raportu: liczby wyrównane do prawej, nazwiska czytelne. */
.cp-table .cp-name{font-family:var(--font-display);font-size:12px;letter-spacing:.03em;color:var(--text-primary);}
.cp-table .cp-num{text-align:right;font-family:var(--font-mono);font-size:12px;white-space:nowrap;}
.cp-table .cp-acts{text-align:right;white-space:nowrap;}
.cp-over{color:var(--danger);font-weight:700;}
.cp-zero td{opacity:.72;}
.cp-warn{color:var(--danger);font-size:11px;}
.cp-edit{background:transparent;border:1px dashed var(--border-strong);border-radius:3px;cursor:pointer;
  color:var(--text-primary);font-family:var(--font-mono);font-size:12px;padding:1px 8px;}
.cp-edit:hover{border-color:var(--accent);color:var(--accent);border-style:solid;}
/* Pasek wykorzystania: widać „prawie wyczerpany” bez czytania liczb. */
.cp-bar{display:block;height:3px;margin-top:3px;background:var(--bg-void);border-radius:2px;overflow:hidden;}
.cp-bar-fill{display:block;height:100%;background:var(--accent);}
.cp-bar-fill.over{background:var(--danger);}
.cp-sub td{padding-top:0;}
.cp-entries{display:flex;flex-wrap:wrap;gap:5px;padding:2px 0 6px;}
.cp-entry{display:inline-flex;align-items:center;gap:4px;padding:1px 6px;border-radius:2px;
  background:var(--bg-panel);border:1px solid var(--border-dim);color:var(--text-muted);font-size:10px;}
.cp-clip{font-style:normal;color:var(--accent);border:1px solid var(--accent-dim);border-radius:2px;padding:0 3px;margin-left:3px;}

/* Szkolenia */
.cp-newtrain{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:12px 14px;
  border-bottom:1px solid var(--border-dim);}
.cp-newtrain .cal-input{width:auto;min-width:130px;}
.cp-newtrain .cp-narrow{min-width:70px;width:80px;}
.cp-trainings{display:flex;flex-direction:column;gap:8px;padding:12px 14px;}
.cp-training{background:var(--bg-panel);border:1px solid var(--border-dim);border-radius:4px;}
.cp-training.is-cancelled{opacity:.6;}
.cp-training-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;}
.cp-training-toggle{background:transparent;border:0;color:var(--text-muted);cursor:pointer;font-size:14px;padding:0;}
.cp-training-name{font-family:var(--font-display);font-size:13px;letter-spacing:.03em;color:var(--text-primary);}
.cp-training-when,.cp-training-where,.cp-training-hours,.cp-training-n{display:inline-flex;align-items:center;gap:4px;
  font-size:11px;color:var(--text-muted);font-family:var(--font-mono);}
.cp-training-status{font-size:10px;padding:1px 6px;border-radius:2px;border:1px solid var(--border-dim);color:var(--text-muted);}
.cp-training-status.s-planned{color:var(--accent);border-color:var(--accent-dim);}
.cp-training-status.s-done{color:#9fc47a;border-color:rgba(99,153,34,.4);}
.cp-training-status.s-cancelled{color:var(--danger);border-color:rgba(226,75,74,.4);}
.cp-training-head .cal-icon-btn{margin-left:0;}
.cp-training-head .cal-icon-btn:first-of-type{margin-left:auto;}
.cp-training-body{border-top:1px solid var(--border-dim);padding:10px;}
.cp-parts{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:10px;}
.cp-part{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;border-radius:2px;
  background:var(--bg-panel-raised);border:1px solid var(--border-dim);color:var(--text-secondary);font-size:11px;}
.cp-part-x{background:transparent;border:0;color:var(--text-muted);cursor:pointer;padding:0 2px;font-size:12px;}
.cp-part-x:hover{color:var(--danger);}
.cp-enroll{display:grid;grid-template-columns:minmax(0,260px) 1fr;gap:12px;align-items:start;}
@media (max-width:700px){ .cp-enroll{grid-template-columns:1fr;} }
.cp-enroll-sel{width:100%;}
.cp-report{padding:12px 14px 20px;}
.cp-report-head{display:flex;align-items:center;gap:7px;margin-bottom:8px;
  font-family:var(--font-display);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary);}
.cp-report-head i{color:var(--accent);}

/* --- 0.3.97: czytelność tabel, okna w stylu panelu, filtr sekcji --- */
.cp-secbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 14px;
  border-bottom:1px solid var(--border-dim);}
.cp-section-filter{display:flex;gap:5px;flex-wrap:wrap;}
.cp-sec-btn.active{color:var(--accent);border-color:var(--accent);background:rgba(242,166,35,.08);}
.cp-sec-chip{display:inline-block;padding:0 5px;border-radius:2px;border:1px solid var(--border-dim);
  color:var(--text-muted);font-family:var(--font-mono);font-size:10px;}

/* Nagłówek kolumny liczbowej wyrównany tak jak jej zawartość — inaczej etykieta stoi
   nad sąsiednią kolumną i tabela wygląda na przesuniętą o jedno pole. */
.cp-table th.cp-th-num{text-align:right;}
.cp-table th.cp-th-sec,.cp-table td.cp-sec{width:80px;}
.cp-table th.cp-th-bar{width:150px;}
.cp-table th.cp-th-act{width:70px;}
.cp-table .cp-dim{color:var(--text-muted);}
.cp-carry{color:var(--accent);font-size:10px;margin-left:3px;}
.cp-low{color:var(--accent);}
.cp-bar-fill.low{background:var(--accent);}
.cp-bar{width:100%;}

/* Okna: potwierdzenia, lista wyboru uczestników, lista kolizji. */
.cal-modal-wide{max-width:640px;width:94vw;}
.cal-confirm-text{margin:0;color:var(--text-secondary);font-size:13px;line-height:1.5;}
.cp-pickbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px;}
.cp-pick-secs{display:flex;gap:4px;flex-wrap:wrap;}
.cp-pick-sec.active{color:var(--accent);border-color:var(--accent);}
.cp-picklist{max-height:46vh;overflow:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:4px;
  border:1px solid var(--border-dim);border-radius:4px;padding:6px;background:var(--bg-void);}
.cp-pick{display:flex;align-items:center;gap:6px;padding:4px 7px;border-radius:3px;cursor:pointer;
  border:1px solid transparent;color:var(--text-secondary);font-size:12px;}
.cp-pick:hover{background:var(--bg-panel);}
.cp-pick.on{border-color:var(--accent-dim);background:rgba(242,166,35,.08);color:var(--text-primary);}
.cp-pick-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cp-conflicts{display:flex;flex-direction:column;gap:6px;}
.cp-conflict{display:flex;gap:7px;align-items:flex-start;padding:7px 9px;border-radius:3px;
  background:rgba(226,75,74,.08);border:1px solid rgba(226,75,74,.35);color:var(--text-secondary);
  font-size:12px;line-height:1.45;}
.cp-conflict i{color:var(--danger);margin-top:2px;}
/* UWAGA na nazwy: `.cp-bar` to pasek wykorzystania urlopu (element SPAN w tabeli),
   a pasek narzędzi nad listą szkoleń to `.cp-toolbar-row`. Jedna klasa na oba psuła
   układ tabeli, bo `display:flex` rozbijał komórkę. */
.cp-toolbar-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 14px;
  border-bottom:1px solid var(--border-dim);}
.cp-bar-note{font-size:11px;color:var(--text-muted);}

/* --- 0.4.1: nadchodzące szkolenia + raport szkoleń --- */
.cp-section-head{display:flex;align-items:center;gap:7px;padding:12px 14px 4px;
  font-family:var(--font-display);font-size:11px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--text-secondary);}
.cp-section-head i{color:var(--accent);}
.cp-section-past{color:var(--text-muted);}
.cp-section-past i{color:var(--text-muted);}
.cp-count{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);
  border:1px solid var(--border-dim);border-radius:2px;padding:0 5px;}
.cp-past .cp-training{opacity:.72;}
/* Odliczanie przy nadchodzącym szkoleniu — „za 3 dni” czyta się szybciej niż sama data. */
.cp-training-soon{font-family:var(--font-mono);font-size:10px;color:var(--accent);
  border:1px solid var(--accent-dim);border-radius:2px;padding:0 5px;}
.trep-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0 12px;}
.trep-bar .cal-nav{margin-right:auto;}
#trep-body .cp-entry{max-width:100%;}

/* 0.4.52 — pojazdy przy szkoleniu (okno „Nowe szkolenie"). */
.cp-veh-pick { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.cp-veh-item {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 9px; border: 1px solid var(--border-dim); border-radius: 3px;
  font-size: 12px; color: var(--text-secondary); cursor: pointer;
}
.cp-veh-item:hover { border-color: var(--accent-dim); }
.cp-veh-item.on { border-color: var(--accent); color: var(--text-primary); background: rgba(242,166,35,.08); }

/* 0.4.53 — wpis pochodzący ze szkolenia: powód zablokowany, z wyjaśnieniem dlaczego. */
.cal-locked {
  display: flex; gap: 9px; align-items: flex-start;
  padding: 9px 11px; border: 1px solid var(--border-dim); border-radius: 4px;
  background: rgba(255,255,255,.02);
  font-size: 12px; line-height: 1.55; color: var(--text-secondary);
}
.cal-locked i { color: var(--accent); font-size: 15px; margin-top: 1px; }

/* ============================================================
   0.4.56 — ROCZNY PODGLĄD SZKOLEŃ (12 miesięcy w siatce 6×2).
   Odpowiada na pytanie „kiedy w tym roku coś się dzieje", którego lista terminów nie
   odpowiada. Dni ze szkoleniem są podświetlone, a NACHODZĄCE SIĘ liczone kolorem.
   ============================================================ */
.cy-wrap { margin-bottom: 14px; padding: 10px; border: 1px solid var(--border-dim);
  border-radius: 4px; background: var(--bg-panel); }
.cy-head { display: flex; align-items: center; gap: 9px; margin-bottom: 9px; }
.cy-year { font-family: var(--font-display); font-size: 15px; letter-spacing: 2px; color: var(--accent); }
.cy-months { display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px; }
@media (max-width: 1100px) { .cy-months { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 640px)  { .cy-months { grid-template-columns: repeat(2, 1fr); } }
.cy-month-name { font-family: var(--font-display); font-size: 10px; letter-spacing: .08em;
  text-transform: uppercase; color: var(--text-secondary); margin-bottom: 4px; }
.cy-dow, .cy-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1px; }
.cy-dow span { font-size: 8px; color: var(--text-muted); text-align: center; }
.cy-day { font-size: 9px; line-height: 15px; text-align: center; color: var(--text-muted);
  border-radius: 2px; background: rgba(255,255,255,.02); }
.cy-blank { background: transparent; }
/* Gęstość koloru = liczba szkoleń tego dnia. Nachodzące terminy to najważniejsza
   informacja w tym widoku, więc niosą ją same kafelki, bez legendy do czytania. */
.cy-on-1 { background: rgba(59,130,246,.35); color: #dbeafe; }
.cy-on-2 { background: rgba(59,130,246,.60); color: #fff; }
.cy-on-3 { background: rgba(59,130,246,.85); color: #fff; font-weight: 700; }
.cy-day.cy-on { cursor: pointer; }
.cy-day.cy-on:hover { outline: 1px solid var(--accent); }
.cy-today { box-shadow: inset 0 0 0 1px var(--accent); }


/* 0.4.130 — kalendarz w trybie „operacje": widać wszystko, nie da się nic dodać.
   Chowamy narzędzia zakładania wpisów, żeby nie kusiły; blokada i tak siedzi w formularzu. */
.cal-readonly .cal-add-btn,
.cal-readonly .cal-new-entry,
.cal-readonly .cp-add,
.cal-readonly .cal-people-add { display: none !important; }
.cal-readonly .cal-row-cell { cursor: default; }
