:root{--nav:#0f172a;--nav2:#1e2f55;--bg:#f3f6fb;--card:#fff;--line:#dbe3ef;--text:#0f172a;--muted:#64748b;--blue:#2563eb;--green:#16a34a;--orange:#f59e0b;--red:#dc2626;--shadow:0 10px 28px rgba(15,23,42,.08);--r:16px}
*{box-sizing:border-box}body{margin:0;font-family:Arial,Helvetica,sans-serif;background:var(--bg);color:var(--text);font-size:15px}.layout{display:flex;min-height:100vh}.sidebar{width:240px;background:var(--nav);color:#fff;padding:24px 14px;position:fixed;inset:0 auto 0 0}.brand{font-weight:800;font-size:20px;line-height:1.05;margin-bottom:28px}.brand small{display:block;color:#b9c5df;font-size:12px;margin-top:5px}.menu a{display:block;color:#fff;text-decoration:none;padding:11px 13px;border-radius:9px;margin:5px 0}.menu a.active,.menu a:hover{background:var(--nav2)}.main{margin-left:240px;flex:1}.topbar{height:68px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:5}.content{padding:24px 28px 50px}.alert-ok{background:#e8fff0;border:1px solid #b8efc8;color:#087334;border-radius:12px;padding:14px 16px;margin-bottom:20px;font-weight:700}.grid{display:grid;gap:16px}.stats{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:18px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:18px}.compact-card{box-shadow:none}.stat-title{color:var(--muted);font-size:13px}.stat-num{font-size:32px;font-weight:800;margin-top:4px}.two-col{grid-template-columns:1fr 1fr}.dashboard-grid{align-items:start;margin-bottom:18px}.quick-card{order:1}.today-card{order:2}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--blue);color:#fff;border:0;border-radius:10px;padding:12px 16px;font-weight:800;text-decoration:none;cursor:pointer;min-height:44px}.btn.green{background:var(--green)}.btn.dark{background:var(--nav)}.btn.light{background:#eef3fb;color:#10203d}.btn.full{width:100%}input,select,textarea{width:100%;border:1px solid #ccd6e6;border-radius:10px;padding:12px;font-size:16px;background:#fff}label{font-weight:700;font-size:13px;display:block;margin:10px 0 6px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.badge{display:inline-block;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:800}.badge-soft{background:#eef2f7}.badge-warn{background:#fff3d6;color:#9a5b00}.badge-ok{background:#dcfce7;color:#087334}.badge-info{background:#dbeafe;color:#1d4ed8}.badge-dark{background:#e5e7eb;color:#111827}.badge-bad{background:#fee2e2;color:#b91c1c}.calendar-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.calendar-head h1{margin:0 0 5px}.calendar-nav{display:flex;align-items:center;gap:10px}.calendar-week{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-bottom:8px;color:var(--muted);font-size:13px}.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.day{min-height:140px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:8px}.day.today{outline:2px solid var(--blue)}.day.empty{background:#f8fafc;box-shadow:none}.day-num{font-weight:800;margin-bottom:6px;display:flex;align-items:center;justify-content:space-between}.mobile-day-name{display:none;color:var(--muted);font-weight:700}.event{display:block;background:#eef3ff;border-left:4px solid var(--blue);border-radius:8px;padding:7px;font-size:12px;margin:5px 0;text-decoration:none;color:#0f172a}.event.badge-warn{border-left-color:var(--orange)}.event.badge-ok{border-left-color:var(--green)}.event.badge-info{border-left-color:var(--blue)}.event.badge-bad{border-left-color:var(--red)}.free-slot{font-size:12px;color:#16a34a;background:#effff4;border:1px solid #c7f2d2;border-radius:8px;padding:6px}.today-item{display:grid;gap:5px;padding:12px;border:1px solid var(--line);border-radius:12px;text-decoration:none;color:var(--text);margin-bottom:10px;background:#fff}.today-item small{color:var(--muted)}.mobile-actions{display:none}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 18px}.tab{padding:10px 13px;border-radius:10px;background:#eef3fb;text-decoration:none;color:#10203d;font-weight:800}.timeline{display:grid;gap:8px}.step{padding:10px;border:1px solid var(--line);border-radius:10px;background:#fff}.step.done{background:#e8fff0;border-color:#b8efc8}.client-wrap{max-width:780px;margin:0 auto;padding:20px}.client-card{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:22px}.big-status{font-size:22px;font-weight:800}.muted{color:var(--muted)}
@media(max-width:900px){body{font-size:16px}.layout{display:block}.sidebar{position:static;width:auto;padding:14px}.brand{margin-bottom:10px}.menu{display:flex;overflow:auto;gap:6px;padding-bottom:4px}.menu a{white-space:nowrap;font-size:14px}.main{margin-left:0}.topbar{height:auto;padding:12px 14px;align-items:flex-start;gap:8px}.content{padding:14px}.stats{grid-template-columns:repeat(2,1fr)}.two-col{grid-template-columns:1fr}.dashboard-grid{display:flex;flex-direction:column}.quick-card{order:1;width:100%}.today-card{order:2;width:100%}.form-row{grid-template-columns:1fr}.calendar-head{display:block}.calendar-nav{margin-top:12px;justify-content:space-between}.calendar-week{display:none}.calendar{grid-template-columns:1fr}.day{min-height:auto}.day.empty{display:none}.mobile-day-name{display:inline}.free-slot{display:inline-block}.table-wrap{overflow-x:auto}.mobile-actions{display:grid;grid-template-columns:1fr;gap:8px;margin-bottom:12px}.hide-mobile{display:none!important}.card{padding:14px}.stat-num{font-size:28px}input,select,textarea{font-size:16px;min-height:50px}.btn{min-height:50px}.content>.card:first-child h1{font-size:24px}}
.vehicle-item{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:14px;padding:12px;margin-bottom:10px;background:#fff}.vehicle-actions{display:flex;gap:8px;align-items:center}.check-row{display:flex;gap:8px;align-items:center;font-size:14px}.check-row input{width:auto;min-height:auto}.inline-filter{display:grid;grid-template-columns:160px minmax(220px,360px);gap:10px;align-items:end}.vehicle-filter{margin-bottom:16px}
@media(max-width:900px){.vehicle-item{display:block}.vehicle-actions{margin-top:10px;display:grid;grid-template-columns:1fr 1fr}.inline-filter{grid-template-columns:1fr}.vehicle-filter{margin-bottom:12px}}
.alert-bad{background:#fff1f2;border:1px solid #fecdd3;color:#be123c;border-radius:12px;padding:14px 16px;margin-bottom:20px;font-weight:800}.availability-dashboard{margin-bottom:18px}.availability-form{display:grid;grid-template-columns:1.2fr 1fr 1fr 190px;gap:12px;align-items:end}.availability-button{align-self:end}.availability-ok{border-color:#bbf7d0}.availability-bad{border-color:#fecdd3}.quick-create-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr 1fr 1fr 190px;gap:12px;align-items:end}.big-status{font-size:24px;font-weight:900;margin-bottom:8px}
@media(max-width:900px){.availability-form,.quick-create-grid{grid-template-columns:1fr}.availability-dashboard{order:0}.big-status{font-size:22px}}
.price-box{border:1px solid var(--line);background:#f8fafc;border-radius:14px;padding:12px;margin-top:12px}.reservation-money{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:12px 0}.reservation-money div{background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:12px}.reservation-money span{display:block;color:var(--muted);font-size:13px}.reservation-money strong{font-size:22px}.daily-net{background:#dcfce7;color:#087334;border-radius:10px;padding:8px;font-weight:900;text-align:center}.stat-day{min-height:100px}.js-net[readonly],.js-gross[readonly]{background:#eef3fb;color:#344054}
@media(max-width:900px){.reservation-money{grid-template-columns:1fr}.quick-create-grid{grid-template-columns:1fr!important}.price-box{padding:10px}.stat-day{min-height:auto}}
/* v0.2.3 - statystyki: niebieskie paski proporcjonalne do godzin */
.calendar-legend{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:8px 0 12px;font-size:13px}.legend-dot{display:inline-block;width:14px;height:14px;border-radius:5px;margin-right:6px;vertical-align:-2px}.stats-reservation-calendar .day{overflow:hidden}.reservation-stat-day{min-height:122px}.day-bars{display:grid;gap:5px;margin-top:6px}.reservation-period{display:flex;align-items:center;justify-content:center;min-height:42px;padding:5px 8px;text-decoration:none;color:#0f172a;font-weight:900;border:1px solid rgba(37,99,235,.28);box-shadow:0 2px 7px rgba(37,99,235,.12);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reservation-period .period-label{display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.05;max-width:100%;overflow:hidden;text-overflow:ellipsis}.reservation-period small{font-size:11px;font-weight:900;opacity:.95}.reservation-period strong{font-size:13px;font-weight:950}.reservation-period em{font-style:normal;font-size:11px;font-weight:750;opacity:.9;max-width:100%;overflow:hidden;text-overflow:ellipsis}.reservation-period.period-start{border-radius:10px 3px 3px 10px}.reservation-period.period-mid{border-radius:3px}.reservation-period.period-end{border-radius:3px 10px 10px 3px}.reservation-period.period-start.period-end{border-radius:10px}.bar-blue-1{background:#dbeafe}.bar-blue-2{background:#bfdbfe}.bar-blue-3{background:#c7d2fe}.bar-blue-4{background:#e0e7ff}.bar-blue-5{background:#dbeafe}.bar-blue-6{background:#bfdbfe}.day-allocated{font-size:11px;margin-top:6px;text-align:center}.stats-reservation-calendar .free-slot{margin-top:4px;text-align:center}.stats-reservation-calendar .free-slot{background:#f8fafc;border-color:#e2e8f0;color:#94a3b8}
@media(max-width:900px){.calendar-legend{display:block}.calendar-legend span{display:block;margin:5px 0}.reservation-period{justify-content:flex-start;min-height:46px}.reservation-period .period-label{align-items:flex-start}.reservation-stat-day{min-height:auto}}

/* v0.2.4 - poprawiony kalendarz statystyk: jeden ciagly pasek przez dni */
.modern-stats-calendar{padding:18px 18px 20px;overflow:hidden}.stats-hero{margin-bottom:16px}.stats-calendar-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.stats-calendar-title-row h2{margin:0 0 8px}.view-switch{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}.view-switch span{padding:10px 12px;border-left:1px solid var(--line);font-weight:800;color:#334155}.view-switch span:first-child{border-left:0}.view-switch .active{background:#eaf2ff;color:#1d4ed8;box-shadow:inset 0 0 0 1px #93c5fd}.stats-week-header{gap:0;margin:0}.stats-week-header strong{border:1px solid var(--line);border-bottom:0;padding:10px;text-align:center;background:#f8fafc;color:#334155}.stats-month-grid{border-left:1px solid var(--line);border-top:1px solid var(--line)}.stats-week-row{position:relative;display:grid;grid-template-columns:repeat(7,1fr);min-height:132px}.stats-day-cell{position:relative;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff;padding:8px;min-width:0}.stats-day-cell.outside-month{background:#fbfdff;color:#cbd5e1}.stats-day-number{font-weight:900;font-size:15px}.stats-day-allocation{position:absolute;left:8px;right:8px;bottom:8px;text-align:center;font-size:11px;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stats-week-bars{position:absolute;inset:0;pointer-events:none}.stats-row-bar{position:absolute;height:32px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-decoration:none;color:#071632;border:1px solid #60a5fa;border-radius:8px;background:#bfdbfe;box-shadow:0 4px 12px rgba(37,99,235,.16);overflow:hidden;white-space:nowrap;text-align:center;line-height:1.03;pointer-events:auto;z-index:2}.stats-row-bar:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.42),rgba(255,255,255,0));pointer-events:none}.stats-row-bar span{position:relative;z-index:1;display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis}.stats-row-bar .bar-line-one{font-size:11px;font-weight:900}.stats-row-bar .bar-line-two{font-size:13px;font-weight:950}.stats-row-bar .bar-line-three{font-size:11px;font-weight:800;opacity:.9}.rowbar-blue-1{background:#bfdbfe}.rowbar-blue-2{background:#dbeafe}.rowbar-blue-3{background:#c7d2fe;border-color:#818cf8}.rowbar-blue-4{background:#bae6fd;border-color:#38bdf8}.rowbar-blue-5{background:#cfe8ff}.calendar-note{margin:12px 0 0;color:#64748b;font-size:13px}.legend-dot.rowbar-blue-1{background:#bfdbfe;border:1px solid #60a5fa}
@media(max-width:900px){.stats-calendar-title-row{display:block}.view-switch{margin-top:10px}.stats-week-header{display:none}.stats-month-grid{border:0}.stats-week-row{display:block;min-height:auto!important;border:1px solid var(--line);border-radius:14px;margin-bottom:12px;overflow:hidden;background:#fff}.stats-day-cell{min-height:78px;border-right:0}.stats-week-bars{position:static;padding:8px;display:grid;gap:8px}.stats-row-bar{position:relative!important;left:auto!important;top:auto!important;width:auto!important;height:auto;min-height:46px;padding:8px}.stats-day-allocation{text-align:left;left:auto;right:8px}}


/* v0.2.5 - statystyki: wyzsze paski, zielone wolne dni, podzialka godzinowa */
.modern-stats-calendar .stats-hour-ruler{
  position:relative;
  height:26px;
  margin:0 0 4px 0;
  border-left:1px solid #dbe3ef;
  border-right:1px solid #dbe3ef;
  background:linear-gradient(90deg, rgba(37,99,235,.08) 1px, transparent 1px);
  background-size:calc(100% / 12) 100%;
  color:#64748b;
  font-size:11px;
}
.modern-stats-calendar .stats-hour-ruler span{
  position:absolute;
  top:6px;
  transform:translateX(-50%);
  white-space:nowrap;
}
.modern-stats-calendar .stats-hour-ruler span:first-child{transform:translateX(0)}
.modern-stats-calendar .stats-hour-ruler span:last-child{transform:translateX(-100%)}
.modern-stats-calendar .stats-row-bar{
  min-height:48px !important;
  height:48px !important;
  padding:6px 10px !important;
  line-height:1.12 !important;
  overflow:visible !important;
  z-index:3;
}
.modern-stats-calendar .stats-row-bar .bar-line-one,
.modern-stats-calendar .stats-row-bar .bar-line-two,
.modern-stats-calendar .stats-row-bar .bar-line-three{
  display:block;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.modern-stats-calendar .stats-row-bar .bar-line-one{font-size:11px;font-weight:900;}
.modern-stats-calendar .stats-row-bar .bar-line-two{font-size:14px;font-weight:950;}
.modern-stats-calendar .stats-row-bar .bar-line-three{font-size:11px;font-weight:800;}
.modern-stats-calendar .stats-day-cell{
  background:#effff4;
  border-color:#c7f2d2;
}
.modern-stats-calendar .stats-day-cell.outside-month{
  background:#f8fafc;
  border-color:#dbe3ef;
}
.modern-stats-calendar .stats-day-cell:not(.outside-month)::after{
  content:'wolne';
  position:absolute;
  right:8px;
  bottom:8px;
  color:#16a34a;
  font-size:11px;
  font-weight:800;
  opacity:.7;
}
.modern-stats-calendar .stats-day-cell:has(.stats-day-allocation)::after{content:'';display:none;}
.modern-stats-calendar .stats-day-allocation{
  color:#087334;
  background:#dcfce7;
  border:1px solid #bbf7d0;
  border-radius:8px;
  padding:4px 6px;
  display:inline-block;
}
@media(max-width:900px){
  .modern-stats-calendar .stats-hour-ruler{display:none;}
  .modern-stats-calendar .stats-row-bar{min-height:54px!important;height:auto!important;}
}

/* v0.2.9 - admin timeline */
.timeline-head{display:flex;align-items:center;justify-content:space-between;gap:16px;}
.timeline-date-nav{display:flex;align-items:center;gap:10px;white-space:nowrap;}
.timeline-filter{display:grid;grid-template-columns:2fr 1fr auto;gap:12px;align-items:end;}
.timeline-filter label,.timeline-check-form label{display:flex;flex-direction:column;gap:6px;font-weight:700;color:#0f172a;}
.timeline-filter select,.timeline-filter input,.timeline-check-form input{height:42px;border:1px solid #cbd5e1;border-radius:10px;padding:0 12px;background:#fff;}
.timeline-stats{grid-template-columns:repeat(3,1fr);}
.timeline-check-form{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end;}
.availability-result{margin-top:14px;border-radius:12px;padding:12px 14px;font-weight:600;}
.availability-result.ok{background:#dcfce7;border:1px solid #86efac;color:#166534;}
.availability-result.bad{background:#fee2e2;border:1px solid #fca5a5;color:#991b1b;}
.conflict-list{margin-top:8px;font-weight:500;line-height:1.5;}
.timeline-card{overflow-x:auto;}
.timeline-legend{display:flex;gap:18px;align-items:center;margin-bottom:12px;flex-wrap:wrap;font-size:13px;color:#334155;}
.timeline-legend i{display:inline-block;width:14px;height:14px;border-radius:4px;margin-right:6px;vertical-align:-2px;border:1px solid rgba(15,23,42,.12);}
.timeline-legend .free{background:#ecfdf5;}
.timeline-legend .confirmed{background:#bfdbfe;}
.timeline-legend .waiting{background:#fed7aa;}
.timeline-legend .closed{background:#e5e7eb;}
.timeline-hours{display:grid;grid-template-columns:repeat(24,80px);min-width:1920px;border:1px solid #dbe4f0;border-bottom:0;border-radius:12px 12px 0 0;overflow:hidden;background:#f8fafc;}
.timeline-hours span{font-size:11px;font-weight:700;color:#475569;text-align:center;padding:9px 0;border-right:1px solid #dbe4f0;}
.timeline-hours span:last-child{border-right:0;}
.timeline-track{position:relative;min-width:1920px;height:170px;border:1px solid #dbe4f0;border-radius:0 0 12px 12px;overflow:hidden;background:repeating-linear-gradient(to right,#ecfdf5 0,#ecfdf5 79px,#dbe4f0 80px);}
.timeline-free-bg{position:absolute;inset:0;background:linear-gradient(180deg,rgba(236,253,245,.85),rgba(240,253,244,.55));}
.timeline-booking{position:absolute;top:44px;height:84px;border-radius:12px;padding:12px 14px;text-decoration:none;color:#0f172a;box-shadow:0 8px 18px rgba(37,99,235,.16);display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;overflow:hidden;border:2px solid #60a5fa;background:#bfdbfe;}
.timeline-booking b{font-size:14px;line-height:1.1;}
.timeline-booking span{font-size:13px;font-weight:800;margin-top:3px;line-height:1.1;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.timeline-booking small{font-size:12px;margin-top:5px;color:#1e3a8a;font-weight:700;white-space:nowrap;}
.timeline-booking.tl-waiting{background:#fed7aa;border-color:#fb923c;box-shadow:0 8px 18px rgba(249,115,22,.16);}
.timeline-booking.tl-confirmed,.timeline-booking.tl-issued{background:#bfdbfe;border-color:#3b82f6;}
.timeline-booking.tl-closed{background:#e5e7eb;border-color:#94a3b8;box-shadow:none;}
.timeline-booking.tl-cancelled{background:#fecaca;border-color:#ef4444;}
.timeline-booking.tl-draft{background:#ddd6fe;border-color:#8b5cf6;}
.badge{display:inline-flex;padding:5px 8px;border-radius:999px;font-weight:800;font-size:12px;}
.badge.tl-waiting{background:#ffedd5;color:#9a3412;}.badge.tl-confirmed,.badge.tl-issued{background:#dbeafe;color:#1d4ed8;}.badge.tl-closed{background:#e5e7eb;color:#374151;}.badge.tl-cancelled{background:#fee2e2;color:#991b1b;}.badge.tl-draft{background:#ede9fe;color:#5b21b6;}
.btn.light{background:#eef4ff;color:#0f172a;border:1px solid #dbeafe;}

@media (max-width: 900px){
  .timeline-head{align-items:flex-start;flex-direction:column;}
  .timeline-filter,.timeline-check-form{grid-template-columns:1fr;}
  .timeline-stats{grid-template-columns:1fr;}
  .timeline-hours{grid-template-columns:repeat(24,64px);min-width:1536px;}
  .timeline-track{min-width:1536px;height:150px;}
  .timeline-booking{height:76px;top:38px;padding:10px;}
}

/* v0.3.1 - poprawiona os czasu admina: bez nachodzacych tekstow */
.text-ok{color:#15803d}.text-warn{color:#b45309}
.timeline-head{align-items:flex-start}.timeline-head h1{margin:0 0 6px}.timeline-head p{margin:0;color:#475569}.timeline-filter-card{margin-bottom:14px}.timeline-stats{margin:0 0 14px!important}.timeline-stats .stat-card strong{font-size:22px;line-height:1.1;white-space:normal}.timeline-check-form input[type="datetime-local"]{font-size:16px}.timeline-card-v2{padding:20px;overflow:visible}.timeline-card-title{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px}.timeline-card-title h2{margin:0 0 4px}.timeline-card-title p{margin:0;color:#64748b;font-weight:700}.timeline-card-v2 .timeline-legend{margin:0;justify-content:flex-end}.timeline-scale-2h{position:relative;height:34px;margin:0 0 0 0;border:1px solid #dbe4f0;border-bottom:0;border-radius:12px 12px 0 0;background:#f8fafc;overflow:hidden}.timeline-scale-2h span{position:absolute;top:9px;transform:translateX(-50%);font-size:11px;font-weight:800;color:#475569;white-space:nowrap}.timeline-scale-2h span:first-child{transform:translateX(6px)}.timeline-scale-2h span:last-child{transform:translateX(calc(-100% - 6px))}.timeline-track-v2{position:relative;min-height:280px;border:1px solid #dbe4f0;border-radius:0 0 12px 12px;overflow:hidden;background:linear-gradient(180deg,rgba(236,253,245,.94),rgba(240,253,244,.78)),repeating-linear-gradient(to right,transparent 0,transparent calc((100% / 12) - 1px),#cbd5e1 calc((100% / 12) - 1px),#cbd5e1 calc(100% / 12));}.timeline-track-v2:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(to right,transparent 0,transparent calc((100% / 24) - 1px),rgba(148,163,184,.25) calc((100% / 24) - 1px),rgba(148,163,184,.25) calc(100% / 24));pointer-events:none}.timeline-free-label{position:absolute;right:14px;bottom:12px;color:#15803d;background:#dcfce7;border:1px solid #bbf7d0;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:900;letter-spacing:.02em}.timeline-booking-v2{position:absolute;min-height:68px;padding:8px 10px;border-radius:12px;text-decoration:none;color:#0f172a;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:2px;overflow:hidden;border:2px solid #3b82f6;background:#bfdbfe;box-shadow:0 10px 20px rgba(37,99,235,.18);z-index:3}.timeline-booking-v2 .tl-time{font-size:12px;font-weight:950;line-height:1.1}.timeline-booking-v2 strong{font-size:13px;line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-booking-v2 .tl-client{font-size:12px;font-weight:850;line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-booking-v2 em{font-style:normal;font-size:11px;font-weight:800;color:#1e3a8a;line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-booking-v2.tl-waiting{background:#fed7aa;border-color:#fb923c;box-shadow:0 10px 20px rgba(249,115,22,.16)}.timeline-booking-v2.tl-confirmed,.timeline-booking-v2.tl-issued{background:#bfdbfe;border-color:#3b82f6}.timeline-booking-v2.tl-closed{background:#e5e7eb;border-color:#94a3b8;box-shadow:none}.timeline-booking-v2.tl-cancelled{background:#fecaca;border-color:#ef4444}.timeline-booking-v2.tl-draft{background:#ddd6fe;border-color:#8b5cf6}.timeline-hours,.timeline-track{display:none!important}
@media(max-width:900px){.timeline-card-title{display:block}.timeline-card-v2 .timeline-legend{justify-content:flex-start;margin-top:10px}.timeline-scale-2h{min-width:900px}.timeline-track-v2{min-width:900px}.timeline-card-v2{overflow-x:auto}.timeline-booking-v2{min-height:74px}.timeline-stats .stat-card strong{font-size:19px}.timeline-filter,.timeline-check-form{grid-template-columns:1fr!important}}

/* v0.3.2 - karta rezerwacji + link klienta */
.reservation-header-card{background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:20px;display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:16px}.reservation-header-card h1{margin:4px 0 8px;font-size:30px}.reservation-meta{margin:5px 0;color:#334155;line-height:1.45}.reservation-actions-box{display:grid;grid-template-columns:1fr;gap:9px;min-width:210px}.reservation-stats{margin-bottom:16px}.client-link-card{margin-bottom:14px}.copy-row{display:grid;grid-template-columns:1fr auto;gap:10px}.reservation-tabs{position:sticky;top:76px;z-index:4;background:rgba(243,246,251,.92);padding:8px 0}.reservation-card-grid{align-items:start}.reservation-side-card{position:sticky;top:134px}.info-list{display:grid;gap:8px}.info-list p{margin:0;padding:10px;border:1px solid var(--line);border-radius:12px;background:#f8fafc}.info-list span{display:block;color:#64748b;font-size:12px;font-weight:700}.info-list strong{display:block;margin-top:3px;word-break:break-word}.history-line{border-bottom:1px solid var(--line);padding-bottom:10px}.document-upload-form input[type=file]{padding:10px;background:#f8fafc}.client-page-body{background:linear-gradient(180deg,#eef4ff,#f8fafc)}.modern-client-card{max-width:860px;margin:0 auto}.client-brand-block{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}.client-summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0}.client-summary-grid div{background:#f8fafc;border:1px solid var(--line);border-radius:14px;padding:14px}.client-summary-grid span,.bank-box span{display:block;color:#64748b;font-size:13px;font-weight:800;margin-bottom:4px}.client-summary-grid strong{font-size:18px}.client-payment-box{background:#eff6ff;border:1px solid #bfdbfe;border-radius:16px;padding:18px;margin:16px 0}.client-big-amount{font-size:36px;font-weight:950;margin:8px 0}.bank-box{display:grid;gap:10px;margin-top:12px}.bank-box p{margin:0;background:#fff;border:1px solid #dbeafe;border-radius:12px;padding:12px}.bank-box strong{font-size:17px;word-break:break-word}.client-info-card{border:1px solid var(--line);border-radius:16px;padding:16px;margin:16px 0;background:#fff}.client-info-card ul{margin:10px 0 0;padding-left:22px}.client-info-card li{margin:8px 0;line-height:1.45}
@media(max-width:900px){.reservation-header-card{display:block}.reservation-header-card h1{font-size:24px}.reservation-actions-box{margin-top:14px;min-width:0}.reservation-stats{grid-template-columns:1fr 1fr}.copy-row{grid-template-columns:1fr}.reservation-tabs{top:0;overflow:auto;white-space:nowrap}.reservation-side-card{position:static}.client-summary-grid{grid-template-columns:1fr}.client-big-amount{font-size:32px}.client-brand-block{display:block}.client-brand-block .badge{margin-top:10px}.modern-client-card{padding:18px}.reservation-card-grid{grid-template-columns:1fr!important}}

/* v0.6.6 - documents upload wizard */
.section-head-row{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;flex-wrap:wrap}.documents-workflow-grid{display:grid;grid-template-columns:1.4fr .8fr;gap:16px;margin-top:14px}.upload-card,.qr-card{border:1px solid #dbe5f3;border-radius:16px;background:#f8fbff;padding:16px}.qr-card img{display:block;width:190px;height:190px;margin:10px auto;border-radius:12px;border:1px solid #dbe5f3;background:white;padding:8px}.small-copy-row{margin-top:10px}.documents-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:14px}.doc-thumb{display:block;text-decoration:none;color:#0f172a;border:1px solid #dbe5f3;border-radius:14px;background:#fff;overflow:hidden;box-shadow:0 4px 14px rgba(15,23,42,.05)}.doc-thumb img{display:block;width:100%;height:120px;object-fit:cover;background:#eef4ff}.doc-thumb strong{display:block;font-size:13px;padding:10px 10px 2px}.doc-thumb span{display:block;font-size:11px;color:#64748b;padding:0 10px 10px}.doc-file-icon{height:120px;display:flex;align-items:center;justify-content:center;background:#eef4ff;color:#2563eb;font-weight:900;font-size:26px}.wizard-body{margin:0;background:#eef3fa;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:#0f172a}.wizard-card{max-width:560px;margin:0 auto;min-height:100vh;background:#fff;padding:22px;box-sizing:border-box}.wizard-top{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #dbe5f3;padding-bottom:12px;margin-bottom:14px}.wizard-card h1{font-size:28px;line-height:1.12;margin:18px 0 10px}.wizard-progress span{font-size:13px;color:#64748b}.wizard-progress div{height:10px;background:#e8eef8;border-radius:999px;overflow:hidden;margin-top:6px}.wizard-progress b{display:block;height:100%;background:#16a34a;border-radius:999px}.capture-big-button{display:flex;align-items:center;justify-content:center;text-align:center;min-height:150px;border:2px dashed #93c5fd;background:#eff6ff;border-radius:18px;color:#1d4ed8;font-weight:900;font-size:20px;margin:18px 0;cursor:pointer;padding:18px}.capture-big-button input{display:none}.phone-capture-form .btn{font-size:18px;padding:15px}.wizard-nav{display:flex;justify-content:space-between;margin-top:20px}.wizard-nav a{color:#2563eb;font-weight:800;text-decoration:none}.wizard-success{display:inline-flex;background:#dcfce7;color:#166534;border-radius:999px;padding:8px 14px;font-weight:900;margin-top:12px}.alert.bad{background:#fee2e2;border:1px solid #fecaca;color:#991b1b;border-radius:12px;padding:12px;margin:12px 0}@media(max-width:760px){.documents-workflow-grid{grid-template-columns:1fr}.qr-card img{width:220px;height:220px}.wizard-card{padding:18px}.wizard-card h1{font-size:25px}}

/* v0.6.7 - dokumenty: małe miniatury, podgląd i usuwanie */
.documents-gallery-small {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(135px, 1fr));
  gap: 12px;
}
.doc-thumb-manage {
  display: flex;
  flex-direction: column;
  gap: 6px;
  align-items: stretch;
  text-decoration: none;
  color: inherit;
  background: #fff;
  border: 1px solid #dbe5f1;
  border-radius: 14px;
  padding: 8px;
  min-height: 0;
}
.doc-preview-button {
  display: block;
  width: 100%;
  border: 0;
  padding: 0;
  background: transparent;
  cursor: zoom-in;
}
.doc-thumb-manage img,
.doc-preview-button .doc-file-icon {
  width: 100%;
  height: 88px;
  object-fit: cover;
  border-radius: 10px;
  border: 1px solid #e4edf7;
  background: #f5f8fc;
}
.doc-thumb-manage strong {
  font-size: 12px;
  line-height: 1.2;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.doc-thumb-manage span {
  font-size: 11px;
  color: #64748b;
}
.btn.tiny {
  padding: 6px 8px;
  font-size: 12px;
  width: 100%;
}
.btn.danger {
  background: #fee2e2;
  color: #991b1b;
  border: 1px solid #fecaca;
}
.btn.danger:hover {
  background: #fecaca;
}
.doc-lightbox {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: rgba(15, 23, 42, .82);
  padding: 28px;
  align-items: center;
  justify-content: center;
}
.doc-lightbox.open {
  display: flex;
}
.doc-lightbox-inner {
  max-width: min(94vw, 980px);
  max-height: 92vh;
  background: #fff;
  border-radius: 18px;
  padding: 14px;
  box-shadow: 0 30px 80px rgba(0,0,0,.35);
}
.doc-lightbox-inner h3 {
  margin: 0 0 10px;
  font-size: 16px;
}
.doc-lightbox-inner img {
  display: block;
  max-width: 100%;
  max-height: 78vh;
  object-fit: contain;
  border-radius: 12px;
}
.doc-lightbox-close {
  position: fixed;
  top: 18px;
  right: 22px;
  width: 44px;
  height: 44px;
  border-radius: 999px;
  border: 0;
  background: #fff;
  color: #0f172a;
  font-size: 30px;
  line-height: 1;
  cursor: pointer;
}
@media (max-width: 720px) {
  .documents-gallery-small { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .doc-lightbox { padding: 12px; }
}

/* v0.8.0 - pojazdy, eksploatacja i GPS */
.vehicle-card-pro{align-items:flex-start}
.vehicle-mini-grid{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:8px;margin-top:12px}
.vehicle-mini-grid p{margin:0;padding:10px;border:1px solid var(--line);border-radius:12px;background:#f8fafc}
.vehicle-mini-grid span{display:block;color:#64748b;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.02em}
.vehicle-mini-grid strong{display:block;margin-top:3px;font-size:14px;word-break:break-word}
.gps-reservation-card .section-head-row{align-items:center}
.gps-mini-grid{grid-template-columns:repeat(6,minmax(110px,1fr))}
@media(max-width:1100px){.vehicle-mini-grid,.gps-mini-grid{grid-template-columns:repeat(2,minmax(120px,1fr))}.vehicle-card-pro .vehicle-actions{margin-top:12px}}
@media(max-width:650px){.vehicle-mini-grid,.gps-mini-grid{grid-template-columns:1fr}.gps-reservation-card .section-head-row{display:block}.gps-reservation-card .section-head-row .btn{margin-top:10px;width:100%}}


/* v0.8.4 - mobile UX fix: no PHP notices, better phone layout. Does not touch upload wizard. */
@media(max-width:900px){
  html,body{width:100%;max-width:100%;overflow-x:hidden;background:#eef3fa;}
  .layout{width:100%;max-width:100%;overflow-x:hidden;}
  .sidebar{width:100%;max-width:100%;position:relative;inset:auto;padding:16px 16px 10px;border-bottom:1px solid rgba(255,255,255,.08);}
  .brand{font-size:20px;margin-bottom:14px;}
  .brand small{font-size:13px;}
  .menu{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;padding:0 0 10px;margin:0 -4px;}
  .menu a{flex:0 0 auto;scroll-snap-align:start;padding:12px 16px;border-radius:14px;font-size:16px;}
  .main{width:100%;max-width:100%;margin:0;}
  .topbar{display:grid;grid-template-columns:1fr auto;width:100%;gap:12px;padding:14px 18px;background:#fff;position:relative;top:auto;font-size:15px;}
  .topbar strong{line-height:1.25;word-break:break-word;}
  .content{width:100%;max-width:100%;padding:16px 14px 96px;}
  .card{width:100%;max-width:100%;border-radius:22px;padding:22px 20px;margin:0 0 16px;box-shadow:0 12px 28px rgba(15,23,42,.08);}
  .card h1{font-size:34px;line-height:1.05;margin:0 0 14px;letter-spacing:-.04em;}
  .muted{font-size:17px;line-height:1.35;}
  .availability-form{display:grid!important;grid-template-columns:1fr!important;gap:14px!important;}
  .availability-form label,.quick-create-grid label{font-size:15px;margin-top:12px;}
  .availability-form input,.availability-form select,.quick-create-grid input,.quick-create-grid select,.quick-create-grid textarea{min-height:58px;border-radius:16px;font-size:20px;padding:15px 16px;}
  .availability-button{margin-top:6px;}
  .btn{min-height:58px;border-radius:16px;font-size:17px;}
  .availability-ok,.availability-bad{border-radius:22px;}
  .big-status{font-size:30px;line-height:1.12;margin-bottom:10px;}
  .quick-create-grid{display:grid!important;grid-template-columns:1fr!important;gap:12px!important;}
  .customer-autocomplete{grid-column:1!important;}
  .customer-suggestions{max-height:260px;overflow:auto;border-radius:16px;}
  .alert-bad,.alert-ok{border-radius:18px;font-size:16px;line-height:1.35;}
}

@media(max-width:480px){
  .topbar{grid-template-columns:1fr;}
  .topbar div{font-size:15px;}
  .content{padding-left:12px;padding-right:12px;}
  .card h1{font-size:32px;}
  .menu a{font-size:15px;padding:11px 14px;}
}

/* v0.9.0 - użytkownicy, pojazdy, protokół foto/video */
.dashboard-actions-card{margin-bottom:16px}.dashboard-actions-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}.dash-action{display:flex;flex-direction:column;gap:4px;text-decoration:none;color:#0f172a;border:1px solid #dbe5f3;background:#fff;border-radius:16px;padding:16px;box-shadow:0 8px 20px rgba(15,23,42,.05);font-weight:800}.dash-action:first-letter{font-size:22px}.dash-action strong{font-size:16px}.dash-action span{font-size:12px;color:#64748b;font-weight:700}.dash-action.green{background:#ecfdf5;border-color:#bbf7d0;color:#065f46}.vehicle-card-photo{width:132px;height:92px;object-fit:cover;border-radius:14px;border:1px solid #dbe5f3;background:#f1f5f9;margin-right:12px}.vehicle-card-pro{align-items:flex-start}.vehicle-file-list{margin-top:18px}.client-vehicle-main-photo{width:100%;max-height:330px;object-fit:cover;border-radius:18px;border:1px solid #dbe5f3;margin:10px 0 14px;background:#f1f5f9}.client-vehicle-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px;margin-top:12px}.client-vehicle-gallery a{display:block;text-decoration:none}.client-vehicle-gallery img{width:100%;height:92px;object-fit:cover;border-radius:12px;border:1px solid #dbe5f3;background:#f8fafc}.client-video-tile{display:flex;align-items:center;justify-content:center;height:92px;border-radius:12px;border:1px solid #bfdbfe;background:#eff6ff;color:#1d4ed8;font-weight:900;text-align:center;padding:8px}.vehicle-public-card h3{margin-top:14px}.communication-log-row strong:before{content:'• ';color:#16a34a}.doc-file-icon{font-size:16px}.alert-bad{background:#fee2e2;border:1px solid #fecaca;color:#991b1b;border-radius:14px;padding:12px;margin:12px 0}.alert.ok{background:#dcfce7;border:1px solid #bbf7d0;color:#166534;border-radius:14px;padding:12px;margin:12px 0}
@media(max-width:900px){.vehicle-card-pro{display:block}.vehicle-card-photo{width:100%;height:170px;margin:0 0 12px}.dashboard-actions-grid{grid-template-columns:1fr 1fr}.dash-action{padding:13px}.client-vehicle-gallery{grid-template-columns:repeat(2,1fr)}}
