:root{font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;color:#e7edf4;background:#111820;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid #394654;border-radius:8px;background:#25313e;color:#e7edf4;padding:10px 13px}button:hover{background:#364554}button.primary{background:#f68b1f;border-color:#f68b1f;color:#171b21;font-weight:800}button.primary:hover{background:#ffa13e}header{height:68px;display:flex;align-items:center;gap:45px;padding:0 30px;background:#1b242d;border-bottom:1px solid #34404c}.brand{font-size:20px;font-weight:900;white-space:nowrap}.brand b{color:#fa8c1c}.brand small{display:block;font-size:9px;letter-spacing:2px;color:#91a0af}.mark{color:#fa8c1c}nav{display:flex;gap:8px}nav button{border:0;background:transparent}nav button.active{color:#fa8c1c;background:#2c3640}.online{margin-left:auto;font-size:11px;color:#68cda3;white-space:nowrap}main{padding:26px 30px;max-width:1900px;margin:auto}.toolbar,.actions,.boardtop,.modalhead,.modalactions{display:flex;align-items:center;justify-content:space-between;gap:12px}.toolbar h1{margin:0;font-size:24px}.toolbar p,.boardtop p{color:#8e9ba8;margin:7px 0 0}.actions #range{min-width:170px;text-align:center;font-weight:700}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin:24px 0}.stats>div{background:#202a35;border:1px solid #33404e;border-radius:12px;padding:18px}.stats span{display:block;font-size:11px;color:#9da9b6;letter-spacing:1px}.stats strong{display:block;font-size:29px;margin-top:8px}.stats strong.demo{font-size:18px;color:#ff9d37}.board{background:#202a35;border:1px solid #33404e;border-radius:12px;overflow:hidden}.boardtop{padding:18px}.boardtop h2{margin:0;font-size:17px}.boardtop label{color:#aeb9c5;font-size:12px}.boardtop input{margin-left:10px;width:230px}.scroll{overflow-x:auto}#timeline{min-width:1020px}.timeline-head,.timeline-row{display:grid;grid-template-columns:250px 1fr}.timeline-head{background:#293542}.driver-head,.driver-cell{padding:14px 15px;border-right:1px solid #43505d}.driver-head{font-weight:700}.days,.slots{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));position:relative}.day{padding:14px 8px;text-align:center;border-right:1px solid #46515d;font-size:12px;color:#d4dce5}.day.today{color:#ff9a2f}.timeline-row{min-height:75px;border-top:1px solid #394653}.driver-cell strong{display:block;font-size:13px}.driver-cell small{display:block;color:#a3b0be;margin-top:5px}.slots{height:75px;background:repeating-linear-gradient(to right,transparent 0,transparent calc(14.285714% - 1px),#3a4653 calc(14.285714% - 1px),#3a4653 14.285714%)}.job{position:absolute;top:13px;height:49px;border-radius:6px;padding:6px 9px;overflow:hidden;white-space:nowrap;cursor:grab;box-shadow:0 2px 5px #0004;user-select:none;border:1px solid #ffffff22}.job:active{cursor:grabbing}.job strong{display:block;font-size:12px;overflow:hidden;text-overflow:ellipsis}.job small{display:block;font-size:10px;margin-top:4px;overflow:hidden;text-overflow:ellipsis}.job.transport{background:#229d79}.job.service{background:#467eb6}.job.pending{background:#b87724}.job.dragging{opacity:.65;z-index:5;outline:2px solid white}.legend{display:flex;gap:20px;padding:14px 18px;border-top:1px solid #394653;color:#a9b6c3;font-size:12px}.legend span{display:flex;align-items:center;gap:7px}.legend i{width:10px;height:10px;border-radius:2px}.green{background:#229d79}.blue{background:#467eb6}.amber{background:#b87724}.legend .hint{margin-left:auto}input,select,textarea{background:#141d26;color:#f2f5f8;border:1px solid #455362;border-radius:7px;padding:10px;min-width:0}input:focus,select:focus,textarea:focus{outline:2px solid #f68b1f}dialog{width:min(620px,calc(100vw - 30px));border:1px solid #4b5a68;border-radius:14px;background:#202a35;color:#e7edf4;padding:25px;box-shadow:0 25px 80px #0009}dialog::backdrop{background:#000b}dialog form{display:grid;gap:16px}dialog label{display:grid;gap:6px;font-size:12px;color:#b6c3cf}dialog input,dialog select,dialog textarea{width:100%}.modalhead h2{margin:0}.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.modalactions{margin-top:8px}.danger{color:#ff9292;margin-right:auto}.error{color:#ff9696;font-size:12px;min-height:14px}.muted{color:#98a6b5}#fleetList{line-height:2}#toast{position:fixed;bottom:20px;right:20px;background:#f68b1f;color:#151b20;padding:12px 18px;border-radius:9px;font-weight:700;display:none;box-shadow:0 4px 30px #0008}@media(max-width:900px){header{padding:12px;height:auto;flex-wrap:wrap;gap:12px}nav{order:3;width:100%;overflow:auto}.online{margin-left:auto}main{padding:15px}.toolbar{align-items:flex-start;flex-direction:column}.actions{flex-wrap:wrap}.stats{grid-template-columns:repeat(2,1fr)}.boardtop{flex-wrap:wrap}.legend .hint{display:none}}@media(max-width:550px){.two{grid-template-columns:1fr}.stats>div{padding:12px}.stats strong{font-size:23px}}

/* v2: tydzień ISO i oś godzinowa */
#timeline{min-width:1800px}.time-head{min-width:0}.week-line{text-align:center;background:#18232d;color:#ff9b38;font-weight:800;letter-spacing:1.5px;padding:9px;border-bottom:1px solid #43505d}.day{padding:8px 0 0;font-weight:700}.hours{display:grid;grid-template-columns:repeat(4,1fr);margin-top:9px;border-top:1px solid #43505d}.hours span{padding:8px 0;font-size:10px;font-weight:500;color:#aebbc9;border-right:1px solid #43505d}.hours span:last-child{border-right:0}.slots{background-color:#1c2834;background-image:linear-gradient(to right,#53606d66 1px,transparent 1px),linear-gradient(to right,#53606d2c 1px,transparent 1px);background-size:calc(100% / 7) 100%,calc(100% / 28) 100%;background-repeat:repeat}.timeline-head{position:sticky;top:0;z-index:3}.driver-head{display:flex;align-items:center}

/* v3: precyzyjnie wyrównana oś X: 24h/dzień, 7 dni/tydzień */
#timeline{min-width:2350px}
.days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));position:relative}
.day{min-width:0;padding:0;display:flex;flex-direction:column;border-right:1px solid #7c8a99;color:#e0e7ef}
.day-title{height:35px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px;background:#293542}
.hours{position:relative;display:block;height:37px;margin-top:0;border-top:1px solid #455564;background:#202b37}
.hour-mark{position:absolute;left:0;top:0;height:100%;width:auto;display:flex;align-items:center;padding-left:4px;border-left:1px solid #6b7b8a;font-size:10px;font-weight:700;color:#d3dce6;white-space:nowrap}
.hour-mark:first-child{color:#ffa43f}
.slots{background-color:#1c2834;background-image:linear-gradient(to right,#8e9eae99 1px,transparent 1px),linear-gradient(to right,#62738755 1px,transparent 1px),linear-gradient(to right,#62738733 1px,transparent 1px);background-size:calc(100% / 7) 100%,calc(100% / 21) 100%,calc(100% / 84) 100%;background-repeat:repeat}
/* pionowe kreski co 8h; dodatkowa kreska 22:00 w każdej dobie */
.slots::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;background:linear-gradient(to right,transparent calc(100% - 1px),#62738788 calc(100% - 1px));background-size:calc(100% / 7) 100%;}
.slots::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;background:linear-gradient(to right,transparent calc(100% - 1px),#62738777 calc(100% - 1px));background-size:calc(100% / 7) 100%;background-position:calc(100% / 7 * 11 / 12) 0;}
.job{z-index:1}

/* v4 — pełna szerokość monitora, bez limitu 1900px */
html,body{width:100%;min-height:100%;}
main{width:100%;max-width:none;margin:0;padding:12px 12px 18px;}
header{padding-left:14px;padding-right:14px;}
.stats{margin:12px 0;gap:10px;}
.stats>div{padding:10px 14px;}
.stats strong{font-size:23px;margin-top:3px;}
.toolbar h1{font-size:21px;}
.boardtop{padding:10px 14px;}
/* 100% szerokości ekranu; dla węższych monitorów przewijanie osi */
#timeline{width:100%;min-width:1900px;}
.timeline-head,.timeline-row{grid-template-columns:250px minmax(0,1fr);}
@media(min-width:2200px){#timeline{min-width:100%;}.timeline-head,.timeline-row{grid-template-columns:280px minmax(0,1fr);}}
@media(max-width:900px){main{padding:8px}.stats{gap:6px}.stats>div{padding:9px}}
body.fullscreen-mode header,body.fullscreen-mode .toolbar,body.fullscreen-mode .stats{display:none;}
body.fullscreen-mode main{padding:0;}
body.fullscreen-mode .board{border-radius:0;border:0;}
body.fullscreen-mode .boardtop{padding:8px 14px;}
body.fullscreen-mode .scroll{max-height:calc(100vh - 115px);overflow:auto;}
#fullscreenBtn{font-weight:700;border-color:#e38b30;color:#ffad56;}

/* v5 — nieruchoma kolumna zestawu podczas poziomego przewijania */
.scroll{position:relative;overflow-x:auto;overflow-y:auto;max-height:min(74vh,1000px);overscroll-behavior:contain;scrollbar-gutter:stable;}
.timeline-head{position:sticky;top:0;z-index:15;}
.driver-head,.driver-cell{position:sticky;left:0;z-index:8;background:#25323f;box-shadow:3px 0 8px #080e1699;border-right:2px solid #f68b1f;}
.driver-head{z-index:25;background:#303f4f;}
.driver-cell{background:#202d39;}
.timeline-row:nth-child(odd) .driver-cell{background:#263441;}
.time-head{position:relative;z-index:1;}
.timeline-row .slots{z-index:1;}
body.fullscreen-mode .scroll{max-height:calc(100vh - 115px);}
@media(max-width:900px){.timeline-head,.timeline-row{grid-template-columns:210px minmax(0,1fr)}.driver-head,.driver-cell{padding:10px}}

/* v6: osobne panele — lewa kolumna NIGDY nie należy do przewijanego poziomo kalendarza */
:root{--fleet-width:300px;--row-height:72px;--scale-width:2100px}
.board{overflow:hidden;border-radius:12px}
.scroll{overflow:hidden!important;max-height:none!important;position:static;scrollbar-gutter:auto}
#timeline{min-width:0!important;width:100%!important;display:flex;flex-direction:column}
.planner-header,.planner-body{display:grid;grid-template-columns:var(--fleet-width) minmax(0,1fr);min-width:0}
.planner-header{background:#283542;border-bottom:2px solid #f68b1f}
.fixed-header{height:104px;padding:16px 18px;display:flex;flex-direction:column;justify-content:center;gap:8px;border-right:2px solid #e68a29;background:#303e4c;z-index:3}
.fixed-header strong{font-size:12px;letter-spacing:.8px;color:#fff}
.fixed-header small{color:#9fb0bf;font-size:11px}
.time-header{min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
.time-header::-webkit-scrollbar{display:none}
.scale,.tracks{width:var(--scale-width);min-width:var(--scale-width)}
.week-line{height:32px;display:flex;align-items:center;justify-content:center;padding:0}
.days{height:72px}.day-title{height:34px}.hours{height:38px}
.planner-body{height:min(66vh,900px);min-height:280px;overflow:hidden}
.fleet-body{min-width:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:none;border-right:2px solid #e68a29;background:#202b36}
.fleet-body::-webkit-scrollbar{display:none}
.time-body{min-width:0;overflow:auto;overscroll-behavior:contain;scrollbar-color:#586878 #1b2530;scrollbar-width:thin}
.fleet-row{height:var(--row-height);display:flex;align-items:center;gap:13px;padding:8px 12px;border-bottom:1px solid #3c4a58;background:#202d39}
.fleet-row.alternate{background:#263340}
.fleet-index{flex:none;width:30px;height:30px;display:grid;place-items:center;border-radius:8px;background:#364655;color:#ffb15e;font-size:11px;font-weight:800}
.fleet-info{min-width:0}.fleet-info strong{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fleet-reg{display:flex;gap:9px;flex-wrap:wrap;margin-top:6px;color:#b9c6d4;font-size:10px}
.slots{height:var(--row-height);border-bottom:1px solid #3c4a58;display:block;position:relative;background-color:#1c2834;background-image:linear-gradient(to right,#8e9eae99 1px,transparent 1px),linear-gradient(to right,#62738755 1px,transparent 1px),linear-gradient(to right,#6273872c 1px,transparent 1px);background-size:calc(100% / 7) 100%,calc(100% / 21) 100%,calc(100% / 84) 100%}
.slots.alternate{background-color:#22303c}
.slots::before,.slots::after{pointer-events:none}
.job{top:12px;height:46px;padding:6px 9px}
.boardtop{background:#202a35}.legend{background:#202a35}
body.fullscreen-mode .planner-body{height:calc(100vh - 195px)}
body.fullscreen-mode .scroll{max-height:none!important}
@media(min-width:2200px){:root{--scale-width:2520px;--fleet-width:325px}}
@media(max-width:800px){:root{--fleet-width:215px;--scale-width:2100px}.fleet-row{padding:6px}.fleet-index{width:24px;height:24px}.fleet-reg{gap:3px;flex-direction:column}.fixed-header{padding:10px}.boardtop input{width:180px}}

/* v7: równoległe zlecenia są układane w oddzielnych pasach */
.fleet-row,.slots{min-height:70px;box-sizing:border-box}
.slots .job{height:42px;touch-action:none;cursor:grab}
.slots .job.dragging{opacity:.8;z-index:100;box-shadow:0 12px 30px #000a;outline:2px solid #ff9d36;pointer-events:none}
.fleet-row{transition:background .12s}

/* v8: kompaktowe podsumowanie pod planerem */
.stats{display:flex;align-items:stretch;justify-content:flex-start;flex-wrap:wrap;gap:7px;margin:9px 0 0;padding:0}
.stats>div{display:flex;align-items:center;gap:9px;min-height:38px;padding:7px 11px;background:#1d2731;border:1px solid #354250;border-radius:7px;flex:0 1 auto}
.stats span{font-size:10px;letter-spacing:.45px;white-space:nowrap;color:#9faebe}
.stats strong{font-size:17px;line-height:1;margin:0;color:#f1f5f9;font-variant-numeric:tabular-nums}
.stats strong.demo{font-size:11px;color:#ffab54;letter-spacing:.5px}
body.fullscreen-mode .stats{display:flex;margin:0;padding:8px 12px;background:#151d26;border-top:1px solid #354250}
body.fullscreen-mode .planner-body{height:calc(100vh - 255px)}
@media(max-width:900px){.stats{display:flex;gap:6px}.stats>div{padding:6px 9px}.stats strong{font-size:15px}}

/* v9 — zwężony panel i szybkie kopiowanie */
:root{--fleet-width:242px}
@media(min-width:2200px){:root{--fleet-width:255px}}
@media(max-width:800px){:root{--fleet-width:200px}}
.fixed-header{padding:10px 12px}
.fixed-header strong{font-size:11px}
.fixed-header small{font-size:10px}
.fleet-row{gap:6px;padding:6px 7px}
.fleet-index{flex:0 0 23px;width:23px;height:23px;font-size:10px}
.fleet-info{flex:1;min-width:0}
.fleet-info strong{font-size:11px}
.fleet-reg{gap:3px 8px;margin-top:4px;font-size:9px}
.quick-copy{flex:0 0 auto;display:grid;place-items:center;width:25px;height:25px;min-width:25px;padding:0;border:1px solid #627486;border-radius:6px;background:#334252;color:#ffab50;font-size:17px;line-height:1}
.quick-copy:hover{background:#f68b1f;color:#121820;border-color:#f68b1f}
.job{display:flex;align-items:center;gap:4px;padding-right:4px}
.job-content{flex:1;min-width:0;overflow:hidden}
.job .quick-copy{width:23px;height:25px;min-width:23px;background:#10202a99;border-color:#ffffff55;color:white}
.job .quick-copy:hover{background:#f68b1f;color:#111820}

/* v10: urlopy i okresy bez wyjazdu */
.fleet-controls{display:flex;align-items:center;gap:4px;flex:0 0 auto}
.availability-button{width:25px;height:25px;min-width:25px;padding:0;border:1px solid #69798a;border-radius:6px;background:#2c3b48;color:#ffba68;font-size:15px}
.availability-button:hover{background:#d88727;color:#141b24}
.driver-unavailable{background:#3c3340!important}
.absence-badge{display:inline-block;font-size:9px;font-weight:800;letter-spacing:.3px;color:#ffd18b;margin-top:3px}
.absence-block{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:flex-end;justify-content:center;overflow:hidden;pointer-events:auto;cursor:pointer;border-left:2px solid #d5a6ff;border-right:2px solid #d5a6ff;background:repeating-linear-gradient(135deg,#ab80d12a 0,#ab80d12a 9px,#7e559020 9px,#7e559020 18px)}
.absence-block.off{border-color:#d5a55e;background:repeating-linear-gradient(135deg,#d3a75c28 0,#d3a75c28 9px,#9473421e 9px,#9473421e 18px)}
.absence-block span{font-size:10px;font-weight:800;letter-spacing:.3px;background:#2d2540ed;color:#f3d9ff;padding:3px 8px;border-radius:4px;margin-bottom:3px;white-space:nowrap}
.absence-block.off span{background:#403324ed;color:#ffe1a9}
.slots .job{z-index:3}
.vacation-key{background:#ac83d3}.off-key{background:#c5a16b}

/* v11 — notatki dyspozytorskie, podgląd na hover i focus */
.note-wrap{position:relative;display:flex;align-items:center;flex:0 0 auto}
.note-button{width:25px;height:25px;min-width:25px;padding:0;border:1px solid #617183;border-radius:6px;background:#293847;color:#a7b5c3;font-size:15px;line-height:1}
.note-button.has-note{color:#ffb24b;border-color:#ad7c3d;background:#4b3b29}
.note-button:hover,.note-button:focus-visible{background:#e88c24;color:#111820;outline:2px solid #ffc178;outline-offset:1px}
.note-preview{display:none;position:absolute;z-index:999;top:calc(100% + 9px);left:0;width:clamp(240px,24vw,360px);padding:13px 15px;border-radius:10px;border:1px solid #df9841;background:#1b2733;color:#eaf0f5;box-shadow:0 12px 35px #000c;pointer-events:none;white-space:normal}
.note-wrap:hover .note-preview,.note-wrap:focus-within .note-preview{display:block}
.note-preview-heading{font-size:10px;font-weight:800;color:#ffb65e;letter-spacing:.8px;margin-bottom:8px}
.note-preview-content{font-size:13px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;max-height:220px;overflow:hidden}
.note-preview-hint{font-size:10px;color:#98aabb;margin-top:10px}
.fleet-body,.fleet-row{overflow:visible}
.fleet-row:has(.note-wrap:hover),.fleet-row:has(.note-wrap:focus-within){position:relative;z-index:50}

/* v12 — notatki do trasy/tygodnia i obowiązkowy zjazd na bazę */
.week-line{display:flex;align-items:center;justify-content:center;gap:12px;position:relative}
.week-note-add{background:#3a4551;color:#ffc081;border:1px solid #7b5d3e;border-radius:5px;padding:4px 9px;font-size:10px;cursor:pointer}
.week-line .planner-note{display:inline-flex;vertical-align:middle}
.planner-note .note-preview{z-index:200;white-space:normal;text-align:left;min-width:230px}
.job .planner-note{flex:0 0 auto;z-index:20}
.job .planner-note .note-button{width:22px;height:24px;min-width:22px}
.route-note-add{flex:0 0 auto;border:1px solid #ffffff70;background:#10232c88;color:#fff;border-radius:4px;width:22px;height:24px;cursor:pointer}
.base-return-button{width:25px;height:25px;min-width:25px;border-radius:6px;border:1px solid #d97070;background:#503039;color:#ffb8b8;cursor:pointer}
.base-return-marker{position:absolute;top:0;bottom:0;z-index:6;transform:translateX(-50%);width:54px;min-width:54px;padding:2px;background:#8e2733a8;border:2px solid #ff6d77;color:white;font-size:10px;font-weight:800;cursor:pointer;writing-mode:vertical-rl;display:flex;align-items:center;justify-content:center;letter-spacing:1px;overflow:hidden}
.base-return-marker:hover{background:#c73545}
.base-key{background:#f0606a}

/* v13: critical scrolling fix — overflow visible disabled scrolling in v11/v12 */
#fleetBody.fleet-body{
  overflow-y:auto !important;
  overflow-x:hidden !important;
  min-height:0;
  overscroll-behavior-y:contain;
  touch-action:pan-y;
}
#timeBody.time-body{
  overflow:auto !important;
  min-height:0;
  overscroll-behavior:contain;
}
.planner-body{min-height:0;overflow:hidden}
.fleet-row{overflow:hidden !important}

/* v14: kolejka zleceń z CSV */
.queue-panel{background:#1b2631;border:1px solid #354352;border-radius:9px;padding:12px;margin:0 0 10px}
.queue-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.queue-heading h2{margin:0;font-size:15px;color:#fff}.queue-heading h2 span{display:inline-block;background:#f18b28;color:#151b23;border-radius:20px;padding:2px 8px;margin-left:6px}.queue-heading p{font-size:11px;color:#a7b7c7;margin:4px 0}.queue-heading button{border:1px solid #e08c35;background:#3d3023;color:#ffd4a0;border-radius:6px;padding:8px 11px;white-space:nowrap;cursor:pointer}
.queue-list{display:flex;gap:8px;overflow-x:auto;max-height:185px;padding-top:9px}.queue-empty{font-size:12px;color:#9faebe;margin:4px}.queue-item{flex:0 0 345px;background:#263441;border:1px solid #485a6b;border-radius:7px;padding:9px;min-width:0}.queue-top{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:#fff}.queue-top span{color:#ffb66c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.queue-meta{font-size:10px;color:#bac7d3;margin:6px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.queue-controls{display:flex;gap:5px}.queue-driver{flex:1;min-width:0;background:#111b24;color:#fff;border:1px solid #516273;border-radius:5px;padding:6px;font-size:11px}.queue-controls button{font-size:11px;border-radius:5px;padding:5px 8px;cursor:pointer}.queue-remove{background:#44323a;border:1px solid #795460;color:#f4c5ca}
.csv-preview{max-height:320px;overflow:auto;margin:10px 0;border:1px solid #4b5a68;border-radius:6px}.csv-preview-row{padding:8px;border-bottom:1px solid #364553;font-size:11px}.csv-preview-row.duplicate{color:#d8a76e}.csv-preview-row.invalid{color:#ff9b9b}
body.fullscreen-mode .queue-panel{display:none}

/* v15: kolejka gotowa na duże ilości transportów */
.queue-toolbar{display:flex;align-items:flex-end;flex-wrap:wrap;gap:8px;margin-top:11px;padding:10px;background:#202e3b;border:1px solid #3b4b5c;border-radius:8px}
.queue-toolbar label{display:flex;flex-direction:column;gap:4px;font-size:10px;color:#b6c6d6;min-width:110px}
.queue-toolbar label:first-child{flex:2 1 230px}
.queue-toolbar input,.queue-toolbar select{min-height:34px;background:#121e29;color:#f4f7fa;border:1px solid #4c6073;border-radius:5px;padding:6px 8px;font-size:12px;max-width:100%;width:100%}
.queue-toolbar button,.queue-pagination button{min-height:34px;border:1px solid #506275;border-radius:6px;background:#2b3b4a;color:#e5edf4;padding:6px 10px;cursor:pointer;font-size:11px}
.queue-toolbar .queue-manual-add{background:#c97521;color:#151c24;font-weight:800;border-color:#e9943a}
.queue-results{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 1px 0;color:#b6c7d5;font-size:11px}
.queue-pagination{display:flex;align-items:center;gap:8px}
.queue-pagination button{min-height:27px}
.queue-pagination button:disabled{opacity:.4;cursor:default}
.queue-list{max-height:215px}
.queue-edit{background:#2c4252;border:1px solid #56738a;color:#d6eaf7}
@media(max-width:800px){.queue-results{flex-wrap:wrap}.queue-toolbar label:first-child{flex-basis:100%}}

/* v16 — cofnięcie zaplanowanego zlecenia do kolejki */
.return-to-queue{background:#364d62;color:#e7f2ff;border:1px solid #81a6c7;border-radius:6px;padding:8px 12px;font-weight:700;cursor:pointer}
.return-to-queue:hover{background:#456982}

/* v17: dyskretna linia aktualnego czasu, nie blokuje transportów ani przewijania */
.current-time-line{
 position:absolute;top:0;bottom:0;width:1px;z-index:2;
 background:rgba(255,171,91,.43);pointer-events:none;
 box-shadow:0 0 3px rgba(255,171,91,.15);
}
.current-time-line::before{
 content:'';position:absolute;top:0;left:-2px;width:5px;height:5px;
 border-radius:50%;background:rgba(255,171,91,.65);
}

/* v18 — minimalistyczny nagłówek i składana kolejka */
.toolbar{justify-content:flex-end;min-height:unset;padding-top:7px;padding-bottom:7px}
.toolbar>.actions{margin-left:auto}
.queue-heading{align-items:center;gap:12px}
.queue-heading h2{margin:0}
.queue-heading-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.queue-heading-actions button{cursor:pointer}
#queueToggle{border:1px solid #53687b;background:#263848;color:#e7edf4;border-radius:6px;padding:7px 12px;min-width:95px}
#queueToggle:hover{border-color:#e78c30;color:#ffbb79}
#queueContent[hidden]{display:none!important}
.queue-panel:not(.queue-is-open){padding-bottom:9px}
@media(max-width:700px){.queue-heading{flex-wrap:wrap}.queue-heading-actions{margin-left:auto}.toolbar{justify-content:flex-start}.toolbar>.actions{margin-left:0}}


/* v19 — minimalistyczna nawigacja i lekkie przyciski */
header{height:56px;gap:24px;padding:0 16px;background:#18222c;border-bottom:1px solid #2d3946}
.brand{font-size:17px;letter-spacing:.1px}.brand small{font-size:8px;letter-spacing:1.5px;color:#8193a5}
nav{display:flex;align-items:center;gap:3px;min-width:0}
nav>button,nav .nav-more>summary{display:flex;align-items:center;justify-content:center;min-height:32px;padding:6px 11px;border:1px solid transparent;border-radius:6px;background:transparent;color:#a9b8c6;font-size:12px;font-weight:500;white-space:nowrap;cursor:pointer;list-style:none}
nav .nav-more>summary::-webkit-details-marker{display:none}
nav>button:hover,nav .nav-more>summary:hover,nav .nav-more[open]>summary{background:#263440;color:#f0f5f8}
nav>button.active{background:#26333f;border-color:#374858;color:#f2a65d;font-weight:650}
nav .nav-more{position:relative}
nav .nav-more summary span{font-size:13px;margin-left:6px;opacity:.65}
.nav-menu{position:absolute;z-index:100;right:0;top:calc(100% + 7px);width:175px;padding:5px;border:1px solid #3c4b59;border-radius:9px;background:#202c38;box-shadow:0 12px 26px #0007;display:flex;flex-direction:column;gap:2px}
.nav-menu button{width:100%;padding:9px 11px;border:0;background:transparent;color:#d8e1e9;text-align:left;font-size:12px;font-weight:500;border-radius:5px}
.nav-menu button:hover{background:#304253}
.online{font-size:9px;letter-spacing:.5px;color:#81b5a0}
button{border-radius:6px;transition:background .14s,border-color .14s;color:#d9e3ec}
.toolbar{padding:6px 0 9px}.toolbar .actions{gap:6px;flex-wrap:wrap}
.toolbar .actions button{min-height:31px;padding:6px 11px;font-size:11px;font-weight:550;border-color:#374756;background:#222f3b}
.toolbar .actions button:hover{background:#304050;border-color:#607286}
.toolbar .actions #prev,.toolbar .actions #next{min-width:31px;padding:4px 8px;font-size:19px;line-height:1}
.toolbar .actions #today{background:transparent;border-color:#415365;color:#d7e1ea}
.toolbar .actions #range{font-size:12px;font-weight:600;color:#cbd6df;min-width:150px}
.toolbar .actions #fullscreenBtn{font-size:17px;padding:4px 9px;color:#c7d4df;border-color:#374756;font-weight:400}
.toolbar .actions #add{background:#d98b3b;border-color:#d98b3b;color:#18202a;font-weight:700}
.toolbar .actions #add:hover{background:#f0a354}
.queue-heading h2{font-size:12px;letter-spacing:.55px;font-weight:750}
.queue-heading h2 span{font-size:10px;background:#3d4b59;color:#e9b77e;padding:2px 7px}
.queue-heading-actions button,#queueToggle{font-size:11px;padding:6px 10px;border:1px solid #3c4e5d;background:#263440;color:#cbd7e1;min-height:30px;min-width:0;font-weight:500}
.queue-heading-actions button:hover,#queueToggle:hover{background:#344553;color:#fff;border-color:#617589}
.boardtop{padding:8px 12px}.boardtop h2{font-size:13px;font-weight:650;color:#e0e8f0}.boardtop label{font-size:11px;color:#91a5b6}.boardtop input{padding:6px 9px;font-size:11px;border-radius:6px}
.queue-toolbar button,.queue-pagination button{font-size:11px;font-weight:500}
button:focus-visible,summary:focus-visible{outline:2px solid #f0a354;outline-offset:2px}
@media(max-width:900px){header{height:auto;min-height:56px;gap:8px;padding:9px 12px}nav{order:3;width:100%;overflow:visible}.online{margin-left:auto}.nav-more .nav-menu{right:auto;left:0}}
@media(max-width:600px){.brand{font-size:15px}.brand small{font-size:7px}.toolbar .actions #range{min-width:0}.toolbar .actions{width:100%}.toolbar .actions #add{margin-left:auto}.queue-heading-actions{gap:5px}}

/* v20 — caly tydzien ND–SO bez poziomego przewijania osi */
:root{--scale-width:100%}
.scale,.tracks{width:100%!important;min-width:0!important}
.time-header,.time-body{min-width:0;overflow-x:hidden!important}
.days{grid-template-columns:repeat(7,minmax(0,1fr))}
.day{min-width:0;overflow:hidden}
.day-title{white-space:nowrap;font-size:11px}
.hours{overflow:hidden}
.hour-mark{font-size:9px!important;padding-left:2px!important;letter-spacing:-.2px}
@media(max-width:1100px){:root{--fleet-width:245px}.day-title{font-size:10px}.hour-mark{font-size:8px!important}}
@media(max-width:720px){:root{--fleet-width:180px}.fixed-header{padding:6px}.fleet-row{padding:4px;gap:5px}.fleet-index{display:none}.fleet-info strong{font-size:10px}.fleet-reg{font-size:9px}.day-title{font-size:9px}.hour-mark{font-size:7px!important;padding-left:1px!important}}

/* v21 — godziny 00, 06, 12, 18 każdego dnia, także linie siatki co 6 h */
.slots{background-image:linear-gradient(to right,#8e9eae99 1px,transparent 1px),linear-gradient(to right,#62738755 1px,transparent 1px),linear-gradient(to right,#6273872c 1px,transparent 1px)!important;background-size:calc(100% / 7) 100%,calc(100% / 28) 100%,calc(100% / 168) 100%!important}
.hour-mark{font-size:9px!important;padding-left:2px!important;font-weight:550!important}
.hour-mark:first-child{font-weight:750!important}
@media(max-width:1100px){.hour-mark{font-size:8px!important;padding-left:1px!important}}
@media(max-width:720px){.hour-mark{font-size:7px!important;padding-left:0!important;letter-spacing:-.4px!important}}

/* v24 — odwzorowanie podanego przykładu: data + 4 równe kolumny 6-godzinne */
.day{padding:0!important}
.day-title{height:34px!important;background:#2a323b!important;color:#f0f3f6!important;font-size:12px!important;font-weight:650!important;letter-spacing:0!important}
.day.today .day-title{color:#f0f3f6!important}
.hours{height:39px!important;display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;position:relative!important;overflow:visible!important;margin:0!important;background:#262f39!important}
.hour-mark{position:static!important;left:auto!important;top:auto!important;width:auto!important;height:100%!important;display:flex!important;align-items:center!important;justify-content:center!important;border-left:1px solid #43505b!important;border-right:0!important;padding:0!important;font-size:clamp(8px,.82vw,13px)!important;font-weight:650!important;letter-spacing:0!important;color:#e1e6eb!important;white-space:nowrap!important}
.hour-mark:first-child{border-left:0!important;color:#e1e6eb!important}
.day.today .hour-mark:first-child{color:#e1e6eb!important}
.slots{background-image:linear-gradient(to right,#8997a45c 1px,transparent 1px)!important;background-size:calc(100% / 28) 100%!important}
.slots::before,.slots::after{display:none!important}

/* v25: dzien tygodnia + data, subtelnie mniejsze liternictwo */
.day-title{font-size:10px!important;font-weight:600!important;letter-spacing:-.1px!important}
.hour-mark{font-size:clamp(7px,.68vw,11px)!important;font-weight:550!important;letter-spacing:-.25px!important}
@media(max-width:1100px){.day-title{font-size:9px!important}.hour-mark{font-size:clamp(6px,.63vw,9px)!important}}
@media(max-width:720px){.day-title{font-size:8px!important}.hour-mark{font-size:7px!important}}

/* v26 — kompaktowa kolumna kierowców i pojazdów */
:root{--fleet-width:204px}
@media(min-width:2200px){:root{--fleet-width:218px}}
@media(max-width:1100px){:root{--fleet-width:190px}}
@media(max-width:720px){:root{--fleet-width:162px}}
.fixed-header{padding:8px 10px!important}
.fixed-header strong{font-size:10px!important;letter-spacing:.3px!important}
.fixed-header small{font-size:9px!important}
.fleet-row{gap:4px!important;padding:5px 6px!important}
.fleet-index{flex:0 0 18px!important;width:18px!important;height:18px!important;font-size:8px!important;border-radius:4px!important}
.fleet-info strong{font-size:10px!important}
.fleet-reg{gap:2px 5px!important;margin-top:3px!important;font-size:8px!important}
.fleet-controls{gap:2px!important}
.fleet-controls .base-return-button,
.fleet-controls .availability-button,
.fleet-controls .quick-copy{width:19px!important;min-width:19px!important;height:19px!important;padding:0!important;border-radius:4px!important;font-size:11px!important;line-height:1!important}
@media(max-width:720px){
 .fleet-index{display:none!important}
 .fleet-row{padding:4px!important}
 .fleet-controls .base-return-button,
 .fleet-controls .availability-button,
 .fleet-controls .quick-copy{width:17px!important;min-width:17px!important;height:17px!important;font-size:10px!important}
}

/* v27 — widok skoncentrowany na planerze; logo i menu dostępne na żądanie */
body>header{display:none!important}
body.menu-open>header{display:flex!important;position:absolute!important;top:42px!important;left:9px!important;right:auto!important;width:min(610px,calc(100vw - 18px))!important;height:auto!important;min-height:52px!important;flex-wrap:wrap!important;gap:8px!important;padding:9px 12px!important;z-index:1000!important;border:1px solid #48586a!important;border-radius:8px!important;box-shadow:0 15px 45px #000a!important}
body.menu-open>header .brand{font-size:15px!important}
body.menu-open>header .brand small{font-size:7px!important;letter-spacing:1px!important}
body.menu-open>header nav{order:3!important;width:100%!important;flex-wrap:wrap!important}
body.menu-open>header .online{margin-left:auto!important}
body.menu-open>header .nav-more .nav-menu{z-index:1100!important}
main{max-width:none!important;width:100%!important;padding:5px 8px 8px!important}
.toolbar{padding:2px 0 6px!important;margin:0!important}
.toolbar .actions{width:100%;gap:5px!important}
.toolbar .actions button{min-height:28px!important;padding:4px 8px!important}
#menuToggle{font-size:16px!important;width:31px!important;min-width:31px!important;padding:2px!important;color:#e5b079!important}
#range{min-width:0!important;font-size:11px!important}
.queue-panel{margin-bottom:5px!important}
.boardtop{padding:5px 10px!important}
.boardtop h2{font-size:12px!important}
.boardtop input{padding:4px 7px!important}
.planner-body{height:calc(100vh - 215px)!important;min-height:320px!important}
.legend{padding:6px 9px!important;gap:12px!important;font-size:10px!important;flex-wrap:wrap!important}
.stats{margin-top:4px!important}
body.fullscreen-mode>header{display:none!important}
body.fullscreen-mode .planner-body{height:calc(100vh - 185px)!important}
@media(max-width:800px){main{padding:4px!important}.planner-body{height:calc(100vh - 230px)!important}.toolbar .actions{flex-wrap:wrap}}

/* v28 — dyskretny dymek podglądu trasy */
.route-tooltip{position:fixed;z-index:99999;pointer-events:none;width:min(310px,calc(100vw - 16px));max-height:calc(100vh - 16px);overflow:hidden;padding:12px 13px;background:#17232e;box-shadow:0 10px 36px #000a;border:1px solid #627080;border-radius:8px;color:#eaf1f7;font-size:11px;line-height:1.45}
.route-tooltip[hidden]{display:none!important}
.route-tooltip-heading{display:flex;flex-direction:column;gap:3px;border-bottom:1px solid #3b4b59;padding-bottom:8px;margin-bottom:8px}
.route-tooltip-heading strong{font-size:13px;color:#ffad60;overflow-wrap:anywhere}
.route-tooltip-heading span{color:#b9c9d6;font-size:10px}
.route-tooltip-row{display:grid;grid-template-columns:92px minmax(0,1fr);gap:8px;margin:4px 0}
.route-tooltip-label{color:#93a7b9}
.route-tooltip-value{color:#edf3f7;font-weight:550;overflow-wrap:anywhere}

/* v29 — szybka wiadomość WhatsApp */
.whatsapp-route{background:#1e5848!important;border:1px solid #348a69!important;color:#e4fff1!important;font-weight:650!important}
.whatsapp-route:hover{background:#26735b!important}

.whatsapp-route{display:inline-flex;align-items:center;justify-content:center;padding:8px 11px;border-radius:6px;text-decoration:none;cursor:pointer;font-size:12px}
.whatsapp-fallback{margin:5px 0 8px;color:#c4e4d6;font-size:12px}
.whatsapp-fallback a{color:#8de8ba;text-decoration:underline}

.copy-driver-message{background:#2b4c63!important;border:1px solid #597f99!important;color:#eef7fc!important;font-weight:600!important}
.copy-driver-message:hover{background:#365e78!important}

.copy-message-status{color:#8ee1af;font-size:12px;min-height:18px}
#copyMessagePreview{white-space:pre-wrap;font:13px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace;resize:vertical;min-height:240px}

/* v35: klient, trasa i numer naczepy bezpośrednio na pasku transportu */
.job{height:45px!important;padding:3px 7px!important}
.job-content{display:flex!important;flex-direction:column!important;justify-content:center!important;gap:1px!important;height:100%!important;min-width:0!important}
.job-content strong{font-size:10px!important;line-height:12px!important;margin:0!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.job-content small{font-size:9px!important;line-height:11px!important;margin:0!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.job-content .job-trailer{font-weight:650!important;opacity:.95!important}

/* v36 — delikatne, naprzemienne odcienie szarości dla kolejnych dni tygodnia.
   Warstwa tła jest pod liniami godzinowymi i pod kartami transportów. */
.slots,.slots.alternate{
  background-color:#202a34!important;
  background-image:
    linear-gradient(to right,#8997a45c 1px,transparent 1px),
    linear-gradient(to right,
      #202b35 0%,#202b35 14.285714%,
      #29333d 14.285714%,#29333d 28.571429%,
      #222d37 28.571429%,#222d37 42.857143%,
      #2b353f 42.857143%,#2b353f 57.142857%,
      #222c36 57.142857%,#222c36 71.428571%,
      #29343e 71.428571%,#29343e 85.714286%,
      #202b35 85.714286%,#202b35 100%)!important;
  background-size:calc(100% / 28) 100%,100% 100%!important;
  background-repeat:repeat-x,no-repeat!important;
}
.day:nth-child(odd) .day-title{background:#303a44!important}
.day:nth-child(even) .day-title{background:#39434d!important}
.day:nth-child(odd) .hours{background:#26313b!important}
.day:nth-child(even) .hours{background:#303a44!important}
.day{border-right-color:#657382!important}

/* v37 — niedziela zawsze w stonowanej czerwieni (tydzień zaczyna się od niedzieli) */
.slots,.slots.alternate{
  background-image:
    linear-gradient(to right,#8997a45c 1px,transparent 1px),
    linear-gradient(to right,
      #473038 0%,#473038 14.285714%,
      #29333d 14.285714%,#29333d 28.571429%,
      #222d37 28.571429%,#222d37 42.857143%,
      #2b353f 42.857143%,#2b353f 57.142857%,
      #222c36 57.142857%,#222c36 71.428571%,
      #29343e 71.428571%,#29343e 85.714286%,
      #202b35 85.714286%,#202b35 100%)!important;
}
.day.sunday .day-title{background:#69434a!important;color:#fff0f0!important}
.day.sunday .hours{background:#50353c!important;color:#f5d9dd!important}
.day.sunday{border-right-color:#93616a!important}

/* v38 — wysuwany kalendarz zakazów ruchu */
#trafficBanToggle{white-space:nowrap;border:1px solid #8c645e!important;background:#493438!important;color:#f1c9c5!important}
#trafficBanToggle:hover{background:#644348!important}
.traffic-ban-backdrop{position:fixed;inset:0;background:#0008;z-index:2100}
.traffic-ban-backdrop[hidden]{display:none!important}
.traffic-ban-panel{position:fixed;right:0;top:0;bottom:0;width:min(480px,100vw);z-index:2101;background:#19232d;border-left:1px solid #465461;box-shadow:-16px 0 42px #0009;display:flex;flex-direction:column;transform:translateX(105%);visibility:hidden;transition:transform .22s ease,visibility .22s;color:#e6edf3}
.traffic-ban-panel.is-open{transform:translateX(0);visibility:visible}
.traffic-ban-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:15px 16px;background:#25313c;border-bottom:1px solid #41505c}
.traffic-ban-head strong{font-size:15px}.traffic-ban-head small{display:block;margin-top:4px;color:#a8b5c1;font-size:11px}
#trafficBanClose{background:#354350;color:#e7edf4;border:1px solid #52616d;border-radius:6px;width:32px;height:32px;cursor:pointer}
.traffic-ban-body{padding:12px;overflow:auto;flex:1;display:flex;flex-direction:column;gap:10px}
.traffic-ban-notice,.traffic-ban-warning{font-size:11px;line-height:1.55;color:#b7c5cf;margin:0}
.traffic-ban-warning{color:#e3bcb0;border-top:1px solid #43515d;padding-top:10px}
#trafficBanFrame{display:block;width:100%;height:100%;min-height:450px;flex:1;border:1px solid #475867;border-radius:7px;background:#fff}
.traffic-ban-links{display:flex;gap:8px;flex-wrap:wrap}
.traffic-ban-links a{display:inline-flex;align-items:center;padding:9px 10px;border-radius:6px;border:1px solid #526579;color:#dbeafa;background:#2b3a49;text-decoration:none;font-size:12px}
.traffic-ban-links a:hover{background:#3a4b5c}
@media(max-width:720px){#trafficBanToggle{font-size:11px;padding:4px 7px!important}.traffic-ban-panel{width:100vw}}

/* v39 — ikona bezpośrednio przy zakresie tygodnia, bez niedziałającego iframe */
.week-ban-group{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
#trafficBanToggle{width:29px!important;min-width:29px!important;height:28px!important;padding:2px!important;font-size:15px!important;line-height:1!important;border-radius:6px!important}
.ban-calendar-info{border:1px solid #475765;border-radius:9px;background:#26343f;padding:17px;display:flex;flex-direction:column;gap:10px}
.ban-calendar-info strong{font-size:15px;color:#edf3f7}.ban-calendar-info span{font-size:14px;color:#f3c6b8;font-weight:650}.ban-calendar-info p{margin:0;color:#bbc8d2;font-size:12px;line-height:1.6}
.traffic-ban-links{flex-direction:column}.traffic-ban-links a{justify-content:center;min-height:42px;font-weight:600}
@media(max-width:720px){.week-ban-group{gap:3px}#trafficBanToggle{width:26px!important;min-width:26px!important}}

/* v40 — oficjalny widżet Trafficban.com w wysuwanym panelu */
.traffic-ban-panel{width:min(590px,100vw)}
.traffic-ban-body{min-height:0}
.traffic-ban-embed{flex:1;min-height:460px;display:flex;flex-direction:column;border:1px solid #455764;border-radius:9px;overflow:hidden;background:#f7f7f7}
.traffic-ban-embed-head{background:#2b3945;color:#eef3f7;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 11px;font-size:12px}
#trafficBanReload{font-size:11px;padding:5px 8px;color:#e8f0f7;background:#405262;border:1px solid #657989;border-radius:5px;cursor:pointer}
#trafficBanFrame{display:block;flex:1;width:100%;min-height:420px;height:55vh;border:0;border-radius:0;background:#fff}
.traffic-ban-embed-help{color:#4b5563;background:#f4f5f6;padding:9px 11px;margin:0;font-size:11px;line-height:1.5}
.traffic-ban-links{flex-direction:row}
.traffic-ban-links a{flex:1}
@media(max-width:720px){.traffic-ban-panel{width:100vw}.traffic-ban-embed{min-height:390px}#trafficBanFrame{min-height:350px}}

/* v41 — czysty panel: sam kalendarz i linki na dole */
.traffic-ban-panel{position:fixed}
.traffic-ban-body-clean{padding:0!important;gap:0!important;overflow:hidden!important;display:flex!important;flex-direction:column!important;height:100%!important;min-height:0!important}
.traffic-ban-body-clean #trafficBanFrame{display:block!important;flex:1 1 auto!important;width:100%!important;height:100%!important;min-height:0!important;border:0!important;border-radius:0!important;background:#fff!important}
.traffic-ban-close-floating{position:absolute;top:8px;right:10px;z-index:5;width:32px;height:32px;background:#263441ed!important;color:#fff!important;border:1px solid #6b7886!important;border-radius:6px!important;box-shadow:0 2px 10px #0006;cursor:pointer}
.traffic-ban-links-bottom{flex:0 0 auto!important;display:flex!important;flex-direction:row!important;gap:8px!important;padding:10px!important;background:#19232d!important;border-top:1px solid #465461!important}
.traffic-ban-links-bottom a{flex:1!important;min-height:37px!important;text-align:center!important;font-size:11px!important;padding:8px 6px!important}
@media(max-width:720px){.traffic-ban-links-bottom{gap:5px!important;padding:7px!important}.traffic-ban-links-bottom a{font-size:10px!important}}

/* v42 — licznik przesunięcia godzin w trakcie przeciągania */
.drag-shift-hint{position:fixed;display:none;z-index:99999;pointer-events:none;background:#f68b1f;color:#18212b;border:1px solid #ffc27b;border-radius:8px;padding:7px 11px;font-size:13px;font-weight:800;letter-spacing:.2px;white-space:nowrap;box-shadow:0 6px 22px #0009}
.drag-shift-hint.shift-backward{background:#cbd4de;color:#1b2936;border-color:#edf1f5}

/* v45 — jeden spójny kolor wszystkich transportów, bez statusów */
.job,.job.transport,.job.service,.job.pending,.slots .job{background:#267e76!important;border-color:#51a89d!important;color:#f5ffff!important}
.job.dragging,.slots .job.dragging{background:#267e76!important}
.legend .green{background:#267e76!important}

/* v46 — menu pod prawym przyciskiem myszy na trasie */
.route-context-menu{position:fixed;z-index:100000;min-width:170px;background:#263541;border:1px solid #5c7180;border-radius:8px;padding:5px;box-shadow:0 10px 28px #0008}
.route-context-copy{display:block;width:100%;border:0;background:transparent;color:#f0f5f8;text-align:left;padding:11px 12px;border-radius:5px;font:inherit;font-size:13px;cursor:pointer}
.route-context-copy:hover,.route-context-copy:focus{background:#3c5361;outline:none}

/* v47 — niezależny rejestr DO ROZŁADUNKU */
.unloading-panel{border-color:#52747a!important}
.unloading-panel .queue-heading h2{color:#d7f0ed}
.unloading-description{margin:4px 0 0;color:#9eafb9;font-size:11px}
.unloading-panel .queue-list{max-height:340px;overflow:auto;padding:8px 12px 12px}
.unloading-item{border-left:3px solid #3d9b92}
.unloading-fields{display:flex;flex-wrap:wrap;align-items:end;gap:9px;margin:9px 0}
.unloading-fields>.queue-driver{flex:2;min-width:190px}
.unloading-date{display:flex;flex-direction:column;gap:4px;color:#aebcc8;font-size:11px;flex:1;min-width:155px}
.unloading-date input{width:100%;box-sizing:border-box;background:#263640;border:1px solid #546775;border-radius:6px;color:#eef3f7;padding:7px;font:inherit}
.unloading-panel .queue-controls{display:flex;gap:7px;flex-wrap:wrap}

/* v48 — rozładunki przejęte przez innego kierowcę */
.slots .job.job-unloading,.job.job-unloading,.job.job-unloading.dragging{background:#7052a1!important;border-color:#ad8bdc!important;color:#fff!important}
.job-unloading-flag{display:block;align-self:flex-start;max-width:100%;font-size:9px;font-weight:850;line-height:11px;letter-spacing:.2px;color:#f6e7ff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.job.job-unloading .job-content{justify-content:flex-start!important;gap:0!important}
.job.job-unloading .job-content strong{font-size:10px!important}

/* v49 — podświetlenie docelowego kierowcy podczas przeciągania transportu */
.fleet-row.fleet-drop-target{background:#3c5348!important;box-shadow:inset 0 0 0 2px #f6a343,inset 4px 0 0 #f6a343!important;position:relative;z-index:3;transition:background .08s ease}
.fleet-row.fleet-drop-target .fleet-info strong{color:#ffe2b5!important}
.fleet-row.fleet-drop-target .fleet-reg{color:#e5efdc!important}
.drag-shift-hint.driver-target-active{max-width:min(360px,80vw);overflow:hidden;text-overflow:ellipsis}

/* v50 — dyspozycja: wyjazd w trasę */
.departure-button{color:#9ce9b9!important;border-color:#3d7661!important;background:#25463b!important}
.departure-marker{position:absolute;top:1px;z-index:12;transform:translateX(-50%);font-size:10px;font-weight:800;padding:3px 5px;border-radius:5px;color:#e8fff1;background:#21664a;border:1px solid #58b986;cursor:pointer;white-space:nowrap;box-shadow:0 1px 6px #0008}
.driver-disposition{display:inline-block;font-size:9px;letter-spacing:.2px;font-weight:750;margin-top:3px;padding:2px 5px;border-radius:4px}
.driver-disposition.route{color:#b3f5cb;background:#23523e}.driver-disposition.base{color:#ffd4d5;background:#673c42}

/* v51 — podpowiedzi dostępnych kierowców w kolejce */
.queue-availability{margin:8px 0 7px;padding:8px 10px;border:1px solid #3b645e;background:#1e3837;border-radius:7px;font-size:12px;line-height:1.5}
.queue-availability-label{font-weight:750;color:#95e6bd}
.queue-availability-names{color:#e0f3e8}
.queue-availability-none{color:#e7b6a5;font-weight:650}
.queue-item .queue-driver optgroup{font-weight:700}

/* v52 — wolni kierowcy widoczni wyłącznie jako podświetlenie po najechaniu na zlecenie */
.queue-item.queue-hovered{outline:1px solid #69c5a0;outline-offset:-1px;background:#273b3b!important}
.fleet-row.queue-free-driver{background:#2b6454!important;box-shadow:inset 4px 0 0 #80e9ac,inset 0 0 0 1px #57b991!important;transition:background .12s ease,box-shadow .12s ease}
.fleet-row.queue-free-driver .fleet-info strong{color:#c9ffdd!important}
.fleet-row.queue-free-driver .fleet-reg{color:#d3efe1!important}

/* v53 — aktywne zaznaczenie kafelka do zaplanowania */
#unplannedList .queue-item{cursor:pointer}
#unplannedList .queue-item button,#unplannedList .queue-item select{cursor:default}
#unplannedList .queue-item.queue-hovered{outline:2px solid #8de8b7!important;box-shadow:inset 0 0 0 1px #54b98b,0 0 0 1px #33795a!important}

/* v54 — kartoteka kierowców */
.driver-register-dialog{width:min(760px,calc(100vw - 30px));max-height:90vh;overflow:auto}
.driver-card-dialog{width:min(650px,calc(100vw - 30px))}
.driver-register-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:16px}
.driver-register-entry{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;min-width:0;padding:13px;background:#253541;border:1px solid #435361;border-radius:9px}
.driver-register-entry strong{font-size:13px}
.driver-register-entry span{font-size:11px;color:#b7c5d0;line-height:1.5}
.driver-register-entry:hover{border-color:#f68b1f;background:#30404d}
@media(max-width:600px){.driver-register-list{grid-template-columns:1fr}}

/* v55 — roczna kartoteka urlopowa */
.driver-card-dialog{width:min(760px,calc(100vw - 30px));max-height:92vh;overflow-y:auto}
.vacation-card-panel{margin:16px 0;padding:14px;border:1px solid #4b5c69;background:#20313d;border-radius:10px}
.vacation-panel-top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.vacation-panel-top>label{display:flex;align-items:center;gap:8px;margin:0}
.vacation-panel-top select{width:115px}
.vacation-totals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0}
.vacation-total{background:#2d414f;border:1px solid #506271;border-radius:8px;padding:10px;display:flex;flex-direction:column;gap:7px}
.vacation-total span{font-size:11px;color:#bfccd5}
.vacation-total strong{font-size:20px;color:#eef4f8}
.vacation-total.vacation-remaining strong{color:#8cddbb}
.vacation-history{max-height:190px;overflow:auto}
.vacation-history-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 4px;border-bottom:1px solid #435462;font-size:12px}
.vacation-history-row button,.vacation-add{background:#344b5a;color:#f2f7fa;border:1px solid #5a7080;border-radius:6px;padding:7px 11px;cursor:pointer}
.vacation-add{margin-top:10px;width:100%}
@media(max-width:540px){.vacation-totals{grid-template-columns:1fr}.vacation-total{flex-direction:row;justify-content:space-between;align-items:center}}

/* v56 — miesięczne dni pracy i zjazdy puste */
.work-month-panel{margin:16px 0;padding:14px;border:1px solid #4b5c69;background:#20313d;border-radius:10px}
.work-month-panel .vacation-panel-top{margin:8px 0 12px}
.work-month-panel input[type=month]{width:155px}
.work-month-totals{padding:10px 12px;background:#2b4352;border-radius:8px;color:#9ee3d2;margin-bottom:10px}
.work-month-days{display:flex;flex-wrap:wrap;gap:5px;max-height:180px;overflow-y:auto;margin-bottom:16px}
.work-day{font-size:11px;padding:5px 8px;background:#344b5b;border:1px solid #526879;border-radius:6px}
#emptyReturnAdd{background:#344b5a;color:#f2f7fa;border:1px solid #5a7080;border-radius:6px;padding:7px 11px;cursor:pointer}
.empty-return-marker{position:absolute;top:3px;z-index:4;height:20px;min-width:55px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:#3c6f9a;color:#fff;border:1px solid #8fc2eb;border-radius:5px;font-size:10px;font-weight:700;cursor:pointer}

/* v57 — szybki wpis „Zjazd pusty” obok kierowcy */
.fleet-controls .empty-return-button{width:19px!important;min-width:19px!important;height:19px!important;padding:0!important;border-radius:4px!important;font-size:12px!important;line-height:1!important;background:#24465b!important;border:1px solid #3d799c!important;color:#a9ddff!important;cursor:pointer}
.fleet-controls .empty-return-button:hover{background:#356682!important;color:white!important}
@media(max-width:720px){.fleet-controls .empty-return-button{width:17px!important;min-width:17px!important;height:17px!important;font-size:10px!important}}

/* v58 — generator miesięcznych raportów PDF */
.reports-dialog{width:min(500px,calc(100vw - 24px));max-height:90vh;overflow:auto}
.reports-dialog>label{display:flex;flex-direction:column;gap:7px;margin:15px 0;font-weight:600}
.reports-dialog input,.reports-dialog select{width:100%}
.reports-dialog [hidden]{display:none!important}

/* v65 — opłacalność tras */
.profit-job-fields{border:1px solid #3c5565;border-radius:9px;padding:12px;margin:14px 0}
.profit-job-fields legend{font-weight:700;padding:0 7px;color:#f69b38}
.profit-dialog{width:min(1250px,calc(100vw - 24px));max-width:1250px;max-height:90vh;overflow:auto}
.profit-settings{padding:12px;background:#243542;border-radius:8px;margin:12px 0}
.profit-settings label{display:flex;flex-direction:column;gap:8px;max-width:300px;font-weight:700}
.profit-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:15px 0}
.profit-summary>div{padding:12px;background:#263a49;border-radius:8px;border-top:2px solid #f58a1f}
.profit-summary small{display:block;font-size:11px;color:#a9bdca;margin-bottom:7px}
.profit-summary strong{font-size:17px;color:#f5f8fa}
.profit-table-wrap{overflow:auto;max-height:52vh}
.profit-table{border-collapse:collapse;width:100%;min-width:900px;font-size:12px}
.profit-table th,.profit-table td{padding:9px;border-bottom:1px solid #385064;text-align:left;white-space:nowrap}
.profit-table th{position:sticky;top:0;background:#1d303e;color:#d7e4ee}
.profit-positive{color:#6fe1b0;font-weight:700}.profit-negative{color:#ff9797;font-weight:700}
@media(max-width:750px){.profit-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v66 — stała stawka paliwowa */
#fuelRateSave{margin-top:10px;background:#f58a1f;color:#1d2931;border:0;border-radius:6px;padding:8px 12px;font-weight:700;cursor:pointer}

/* v67 — natychmiastowy wynik opłacalności w formularzu trasy */
.job-profit-preview{margin:12px 0 4px;padding:14px;background:#1b303d;border:1px solid #486174;border-left:4px solid #f58a1f;border-radius:9px}
.job-profit-preview-head{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#f9a54a;font-weight:800;font-size:12px;letter-spacing:.5px;margin-bottom:12px}
#jobProfitStatus{font-size:11px;color:#b9c9d3;font-weight:500;letter-spacing:0}
.job-profit-preview-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.job-profit-preview-grid>div{padding:9px 8px;background:#2a4252;border-radius:6px;min-width:0}
.job-profit-preview-grid small{display:block;color:#b9c9d3;font-size:11px;margin-bottom:5px}
.job-profit-preview-grid strong{font-size:16px;color:#f4f8fb;overflow-wrap:anywhere}
.job-profit-preview-grid .job-profit-result{background:#354c56;border:1px solid #5c7786}
.job-profit-preview-grid .job-profit-result strong.profit-positive{color:#6fe1b0}
.job-profit-preview-grid .job-profit-result strong.profit-negative{color:#ff9797}
#jobProfitHint{font-size:11px;margin:10px 0 0}
@media(max-width:620px){.job-profit-preview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v70 — cena paliwa dostępna bezpośrednio w zleceniu */
.fuel-price-inline{display:flex;flex-direction:column;gap:6px;margin:12px 0;font-weight:700;color:#e6eff5}
.fuel-price-inline input{max-width:240px}

/* v71 — kompaktowa, zwijana zmiana ceny paliwa */
.fuel-price-settings{margin:9px 0 12px;border:1px solid #385365;border-radius:7px;padding:7px 10px;background:#213340}
.fuel-price-settings summary{cursor:pointer;font-size:12px;color:#b8d3e2;user-select:none}
.fuel-price-settings summary:hover{color:#fff}
#jobFuelPriceCurrent{color:#f3a958;margin-left:5px}
.fuel-price-settings .fuel-price-inline{font-size:12px;margin:10px 0 3px}
.fuel-price-settings .fuel-price-inline input{max-width:170px}

/* v72 — podsumowanie tygodniowe pojazdów */
.weekly-profit-panel{margin:18px 0 22px;padding:15px;border:1px solid #496072;border-radius:10px;background:#1d303d}
.weekly-profit-head{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap}
.weekly-profit-head h3{margin:0;font-size:17px;color:#f5f8fa}
.weekly-profit-head label{display:flex;gap:9px;align-items:center;font-size:12px}
.weekly-profit-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:13px 0}
.weekly-profit-summary>div{background:#283e4e;padding:10px;border-radius:7px}
.weekly-profit-summary small{display:block;color:#acc0cf;font-size:10px;margin-bottom:6px}
.weekly-profit-summary strong{font-size:14px;color:#fff}
.weekly-profit-summary>p{grid-column:1/-1}
@media(max-width:850px){.weekly-profit-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v75 — dodatkowa karta kosztu kierowców w podsumowaniu tygodnia */
.weekly-profit-summary{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:850px){.weekly-profit-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v76: dni tygodnia, szczegóły po najechaniu */
.weekly-day-count{font-weight:800;color:#8ee3cf;cursor:help;text-decoration:underline dotted;text-underline-offset:3px}

/* v77 — widoczne pod planerem zestawienie opłacalności bieżącego tygodnia */
#plannerWeeklyProfit{margin:24px 0 10px;width:100%;box-sizing:border-box}
#plannerWeeklyProfit .profit-table-wrap{overflow-x:auto}
#plannerWeeklyProfit .weekly-profit-summary{grid-template-columns:repeat(auto-fit,minmax(145px,1fr))}

/* v78 — kompaktowy wynik tygodnia na górze planera */
#plannerWeeklyProfit{margin:12px 0 16px;padding:12px 18px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
#plannerWeeklyProfit .weekly-profit-head{flex:1;min-width:200px}
#plannerWeeklyProfit .weekly-profit-summary{display:flex;margin:0;flex:0 0 auto}
#plannerWeeklyProfit .weekly-profit-summary>div{padding:8px 18px;min-width:155px}
#plannerWeeklyProfit .weekly-profit-summary strong{font-size:23px;font-weight:800}
#plannerWeeklyProfit .weekly-profit-summary small{font-size:11px}
@media(max-width:700px){#plannerWeeklyProfit{display:block}#plannerWeeklyProfit .weekly-profit-summary{margin-top:10px}}

/* v79: mały wskaźnik wyniku tygodnia w prawym górnym rogu nagłówka */
header#mainMenu{gap:12px}
#plannerWeeklyProfit{order:3;flex:0 0 auto;margin:0 0 0 auto!important;padding:5px 9px!important;display:flex!important;align-items:center;gap:8px;flex-wrap:nowrap!important;border-radius:7px;background:#17252f;border-color:#3b4b59;max-width:350px}
#plannerWeeklyProfit .weekly-profit-head{display:flex;flex:0 0 auto;min-width:0;gap:7px;align-items:center}
#plannerWeeklyProfit .weekly-profit-head h3{font-size:10px;font-weight:600;color:#aebdca;white-space:nowrap}
#plannerWeeklyProfit #plannerProfitWeek{width:102px;min-width:0;padding:3px 4px;font-size:10px;border-radius:4px}
#plannerWeeklyProfit .weekly-profit-summary{margin:0!important;display:flex;align-items:center;flex:0 0 auto}
#plannerWeeklyProfit .weekly-profit-summary>div{min-width:0!important;padding:0!important;background:transparent}
#plannerWeeklyProfit .weekly-profit-summary small{display:none}
#plannerWeeklyProfit .weekly-profit-summary strong{font-size:15px!important;line-height:1.1;font-weight:800;white-space:nowrap}
#plannerWeeklyProfit .weekly-profit-summary>p{display:none}
header#mainMenu .online{order:4;margin-left:0}
@media(max-width:1100px){#plannerWeeklyProfit{margin-left:auto!important}header#mainMenu .online{display:none}}
@media(max-width:700px){#plannerWeeklyProfit{max-width:100%;gap:5px}#plannerWeeklyProfit .weekly-profit-head h3{font-size:9px}#plannerWeeklyProfit #plannerProfitWeek{width:95px}#plannerWeeklyProfit .weekly-profit-summary strong{font-size:13px!important}}

/* v80 — przełączany widok tabelaryczny */
.planner-view-switch{display:inline-flex;gap:4px;margin-top:10px;padding:3px;border-radius:8px;background:#142634;border:1px solid #395060}
.planner-view-switch button{padding:6px 13px;border-radius:6px;font-size:12px;background:transparent;color:#c4d5e1;border:0;cursor:pointer}
.planner-view-switch button.active{background:#ee8b32;color:#101c25;font-weight:750}
#spreadsheetView{padding:12px;display:grid;gap:14px}
#spreadsheetView[hidden],#calendarScroll[hidden],#calendarLegend[hidden]{display:none!important}
.sheet-driver{border:1px solid #3c5162;border-radius:8px;overflow:hidden;background:#152633}
.sheet-driver-head{background:#0b2854;color:white;display:flex;gap:22px;align-items:center;padding:10px 14px;font-size:13px}
.sheet-driver-head strong{font-size:15px;letter-spacing:.04em}
.sheet-driver-head span{color:#c7d6eb}
.sheet-scroll{overflow-x:auto}
.sheet-table{width:100%;border-collapse:collapse;min-width:1300px;table-layout:auto;font-size:12px}
.sheet-table th,.sheet-table td{padding:9px 10px;border:1px solid #3b5160;white-space:nowrap;text-align:left}
.sheet-table th{background:#31485a;color:#fff;font-size:11px;font-weight:700}
.sheet-table th:nth-child(2),.sheet-table .sheet-load{background:#66492d}
.sheet-table th:nth-child(4),.sheet-table .sheet-unload{background:#275c48}
.sheet-table tbody tr.sheet-job{cursor:pointer}
.sheet-table tbody tr.sheet-job:hover td{filter:brightness(1.35)}
.sheet-table td.sheet-positive{color:#54e5a2;font-weight:750}
.sheet-table td.sheet-negative{color:#ff777f;font-weight:750}
.sheet-table tfoot td{background:#293d4c;font-weight:700}
.sheet-table .sheet-empty,.sheet-empty{color:#a7b8c4;text-align:center;padding:15px}

/* v81 — status wystawienia faktury */
.invoice-checkbox{display:flex!important;align-items:center;gap:12px;margin:14px 0;padding:12px 14px;border:1px solid #4b6577;border-radius:8px;background:#203746;font-weight:700;cursor:pointer}
.invoice-checkbox input{width:18px;height:18px;accent-color:#32c887;flex:0 0 auto}
.sheet-table td.sheet-invoice{font-weight:700;text-align:center}
.sheet-table td.sheet-invoiced{background:#164f3a;color:#81f3b6}
.sheet-table td.sheet-uninvoiced{background:#543a27;color:#ffcb8a}

/* v82 — sztywna siatka Excela, identyczna u każdego kierowcy */
#spreadsheetView{display:flex;flex-direction:column;gap:14px}
.sheet-driver{width:100%;box-sizing:border-box}
.sheet-scroll{width:100%;overflow-x:auto;scrollbar-gutter:stable}
.sheet-table{width:1700px;min-width:1700px;max-width:1700px;table-layout:fixed;border-collapse:collapse;border-spacing:0}
.sheet-table thead tr{height:42px}
.sheet-table tbody tr{height:39px}
.sheet-table tfoot tr{height:42px}
.sheet-table th,.sheet-table td{box-sizing:border-box;height:39px;max-height:39px;padding:7px 9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}
.sheet-table th{height:42px;max-height:42px}
.sheet-table tfoot td{height:42px;max-height:42px}
.sheet-driver-head{height:43px;box-sizing:border-box;overflow:hidden}
.sheet-driver-head strong,.sheet-driver-head span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sheet-driver-head strong{flex:0 0 240px}
.sheet-driver-head span{flex:1}

/* v83: wynik tygodnia wyłącznie ponad tabelą, poza nagłówkiem */
#tableViewContainer[hidden]{display:none!important}
#tableViewContainer{padding:12px}
#tableViewContainer #plannerWeeklyProfit{display:flex!important;position:static!important;max-width:none!important;width:max-content;max-width:100%!important;margin:0 0 12px auto!important;box-sizing:border-box;order:initial;box-shadow:none}
#tableViewContainer #spreadsheetView{padding:0}

/* v84 — symbole tras przygotowane do przyszłego eksportu */
.trip-symbol-field select{min-width:110px}
.sheet-table{width:1785px;min-width:1785px;max-width:1785px}
.sheet-table td.sheet-symbol{text-align:center;font-weight:800;letter-spacing:.05em;color:#f3cb7d}

/* v85 — eksport kierowcy */
.sheet-driver-head .sheet-export-button{flex:0 0 auto;margin-left:auto;padding:7px 11px;border:1px solid #91a9b9;border-radius:6px;background:#1f4759;color:#fff;font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap}
.sheet-driver-head .sheet-export-button:hover{background:#2b667e}
@media(max-width:700px){.sheet-driver-head{height:auto;min-height:43px;flex-wrap:wrap}.sheet-driver-head strong{flex:1 1 150px}.sheet-driver-head span{flex:1 1 100px}.sheet-driver-head .sheet-export-button{margin-left:0}}

/* v88 — wyróżnienie tras zgodnych z numerem zlecenia */
.sheet-table tbody tr.sheet-search-match td{background-color:#74521c!important;color:#fff!important;border-top:2px solid #ffbd4e;border-bottom:2px solid #ffbd4e}
.sheet-table tbody tr.sheet-search-match td:first-child{border-left:4px solid #ffbd4e;font-weight:900}
.sheet-table tbody tr.sheet-search-match td:last-child{border-right:2px solid #ffbd4e}
.slots .job.job-search-match{background:#bc741d!important;border:3px solid #ffe07d!important;box-shadow:0 0 0 3px #ffb53688,0 0 17px #ffb536aa!important;z-index:9!important}

.trailer-history{padding:10px 12px;margin:8px 0;border:1px solid #405768;border-radius:8px;background:#1a2d3a;color:#c4d3df;font-size:12px;max-height:160px;overflow:auto}
.trailer-history strong{display:block;margin-bottom:7px;color:#fff}
.trailer-history div{padding:3px 0;border-top:1px solid #344858}
.driver-copy-button{flex:0 0 auto!important;width:30px!important;min-width:30px!important;height:28px!important;padding:2px!important;border:1px solid #61798a!important;border-radius:6px!important;background:#244053!important;color:#fff!important;cursor:pointer}
.sheet-driver-head .driver-copy-button{margin-left:auto}
.sheet-driver-head .sheet-export-button{margin-left:0}

.trailer-dialog{width:min(850px,95vw);max-height:88vh;overflow:auto}
.trailer-add-form{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin:15px 0}
.trailer-add-form label{flex:1;min-width:220px}
.trailer-registry-table{width:100%;border-collapse:collapse;margin:14px 0}
.trailer-registry-table td,.trailer-registry-table th{border:1px solid #415767;padding:9px;text-align:left}
.trailer-registry-table th{background:#294252}
.trailer-registry-table tr.trailer-selected{background:#254e62}
.trailer-history-entry{padding:9px 4px;border-bottom:1px solid #415767}
.trailer-availability{font-size:12px;margin:5px 0 10px;color:#bacbd6}
.trailer-availability.trailer-free{color:#5de2a5}
.trailer-availability.trailer-busy{color:#ff8989}

/* v91 — wybieralna lista wolnych naczep, kontynuacja przypisania */
#routeTrailerSelect{width:100%;min-height:39px}
.trailer-continuity-note{font-size:12px;color:#b9ccdc;margin:5px 0 9px}

/* v93 — status tras i proporcjonalny postęp czasowy; linia wyznacza aktualną chwilę. */
.slots .job{isolation:isolate;transition:filter .2s,opacity .2s}
.slots .job.job-future{opacity:.55;filter:saturate(.65)}
.slots .job.job-in-progress{opacity:1;filter:none}
.slots .job.job-completed{opacity:.85;filter:saturate(.8)}
.slots .job .job-progress-fill{position:absolute;inset:0 auto 0 0;width:var(--job-progress,0%);background:rgba(255,255,255,.19);border-right:2px solid rgba(255,255,255,.72);z-index:0;pointer-events:none}
.slots .job.job-future .job-progress-fill{width:0;border:0}
.slots .job.job-completed .job-progress-fill{border-right:0;background:rgba(255,255,255,.09)}
.slots .job .job-content,.slots .job .job-unloading-flag{position:relative;z-index:1}
.current-time-line{width:2px!important;background:#ffb24d!important;box-shadow:0 0 9px #ffab5880!important;z-index:4!important}
/* Podświetlenie wyszukiwania ma pierwszeństwo przed przygaszeniem przyszłych zleceń. */
.slots .job.job-search-match{opacity:1!important;filter:none!important}

/* v94 — czytelny podział tras względem linii aktualnego czasu.
   Lewa strona = wykonany czas, prawa = pozostały czas. */
.slots .job.job-completed{
 opacity:.66!important;
 filter:grayscale(.32) saturate(.55)!important;
 box-shadow:inset 0 0 0 1px rgba(183,198,206,.18)!important;
}
.slots .job.job-future{
 opacity:.42!important;
 filter:grayscale(.25) saturate(.55)!important;
 box-shadow:none!important;
}
.slots .job.job-in-progress{
 opacity:1!important;
 filter:none!important;
 outline:2px solid #ffd16b!important;
 outline-offset:1px;
 box-shadow:0 0 0 3px rgba(255,176,55,.24),0 0 18px rgba(255,171,49,.48)!important;
 z-index:5!important;
}
.slots .job.job-in-progress .job-progress-fill{
 background:repeating-linear-gradient(125deg,rgba(255,205,85,.35) 0,rgba(255,205,85,.35) 12px,rgba(255,255,255,.16) 12px,rgba(255,255,255,.16) 22px)!important;
 border-right:3px solid #ffe18a!important;
 box-shadow:3px 0 9px rgba(255,217,119,.55);
}
.slots .job.job-in-progress .job-content strong{
 text-shadow:0 1px 3px rgba(0,0,0,.65);
}
.slots .job.job-completed .job-progress-fill{
 width:100%!important;
 background:rgba(10,26,34,.22)!important;
 border:0!important;
}
.slots .job.job-future .job-progress-fill{width:0!important;border:0!important}
.current-time-line{
 width:3px!important;
 background:#ffc15d!important;
 box-shadow:0 0 0 1px rgba(0,0,0,.35),0 0 14px rgba(255,171,49,.85)!important;
 z-index:8!important;
 pointer-events:none!important;
}
.slots .job.job-search-match{opacity:1!important;filter:none!important}

/* v95 — łagodniejsza, profesjonalna paleta statusów tras */
.slots .job.job-completed{opacity:.78!important;filter:grayscale(.12) saturate(.75)!important;box-shadow:inset 0 0 0 1px rgba(183,198,206,.10)!important}
.slots .job.job-future{opacity:.66!important;filter:grayscale(.08) saturate(.78)!important;box-shadow:none!important}
.slots .job.job-in-progress{opacity:1!important;filter:none!important;outline:1px solid #bd976a!important;outline-offset:0;box-shadow:0 0 0 1px rgba(190,148,97,.15),0 0 8px rgba(190,148,97,.17)!important;z-index:5!important}
.slots .job.job-in-progress .job-progress-fill{background:rgba(214,183,138,.16)!important;border-right:2px solid #c4a47c!important;box-shadow:1px 0 4px rgba(196,164,124,.18)!important}
.slots .job.job-in-progress .job-content strong{text-shadow:none!important}
.current-time-line{width:2px!important;background:#cda274!important;box-shadow:0 0 5px rgba(205,162,116,.35)!important}
/* Wyszukany transport nadal wyróżnia się niezależnie od statusu. */
.slots .job.job-search-match{opacity:1!important;filter:none!important}

/* v99 — widok pojedynczego dnia */
.date-mode-controls{display:inline-flex;gap:4px;align-items:center;margin-left:8px;flex-wrap:wrap}
.date-mode-controls button{padding:7px 10px;border:1px solid #4a5c6b;border-radius:6px;background:#263846;color:#cbd6df;cursor:pointer}
.date-mode-controls button.active{background:#465f70;color:white;border-color:#8b9dac}
#plannerDayPicker{max-width:155px;min-height:32px;background:#263846;color:#e4eaf0;border:1px solid #536779;border-radius:6px;padding:4px 7px}
.single-day-mode .day-slots{background-size:25% 100%!important}
.single-day-mode .day-tracks .slots{background-image:linear-gradient(to right,#8997a45c 1px,transparent 1px)!important;background-size:calc(100% / 24) 100%!important}
.single-day-mode .day-title{font-weight:700}

/* v100: zwarty, przewijany miesięczny harmonogram kierowców */
.monthly-calendar{min-width:max-content;width:100%;padding-bottom:12px;font-size:12px}
.monthly-row{display:grid;grid-template-columns:205px repeat(var(--month-days),minmax(37px,1fr));min-height:54px;border-bottom:1px solid #344553}
.monthly-head{position:sticky;top:0;z-index:4;background:#223342;min-height:52px}
.monthly-driver-label{position:sticky;left:0;z-index:2;background:#233644;padding:7px 8px;display:flex;flex-direction:column;justify-content:center;gap:3px;border-right:1px solid #4b6070;min-width:0}
.monthly-driver-label strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.monthly-driver-label small{font-size:10px;color:#a8bdcc;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.monthly-driver-label .driver-copy-button{position:absolute;right:5px;top:5px;opacity:.7}
.monthly-head .monthly-driver-label{z-index:5;background:#1d303f}
.monthly-day-head{border-right:1px solid #405363;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;color:#d6e2e9}
.monthly-day-head small{font-size:10px;color:#9eb1c0}
.monthly-day-head.weekend,.monthly-cell.weekend{background:rgba(120,137,151,.075)}
.monthly-day-head.today,.monthly-cell.today{box-shadow:inset 0 0 0 1px #bc8053}
.monthly-cell{border-right:1px solid #344553;padding:4px 2px;display:flex;flex-direction:column;gap:3px;align-items:stretch;min-width:0;position:relative}
.monthly-cell.monthly-has-trip{background:rgba(50,126,112,.12)}
.monthly-job{border:1px solid #4c847e;background:#315a57;color:#e1f1ed;border-radius:4px;font-size:10px;padding:4px 2px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.monthly-job:hover{background:#467772}
.monthly-cell.monthly-absence{background:rgba(160,121,66,.13)}
.monthly-absence-label{font-size:9px;letter-spacing:.03em;text-align:center;color:#d9b88a}
.monthly-more{color:#b5c9d5;text-align:center;font-size:10px}

/* v101 — węższy, bardziej uporządkowany pasek kierowcy */
:root{--fleet-width:176px}
@media(min-width:2200px){:root{--fleet-width:190px}}
@media(max-width:1100px){:root{--fleet-width:170px}}
@media(max-width:720px){:root{--fleet-width:154px}}
.fleet-row{position:relative;flex-wrap:wrap!important;align-content:center!important;align-items:center!important;column-gap:5px!important;row-gap:2px!important;padding:5px 7px!important}
.fleet-info{flex:1 1 calc(100% - 27px)!important;min-width:0!important}
.fleet-info strong{font-size:12px!important;font-weight:800!important;letter-spacing:.1px!important;color:#f3f7fc!important}
.fleet-reg{font-size:10px!important;font-weight:700!important;gap:2px 5px!important;margin-top:2px!important;color:#c3d3e0!important}
.fleet-index{flex:0 0 19px!important;width:19px!important;height:21px!important}
.fleet-controls{width:100%!important;justify-content:flex-end!important;gap:4px!important;margin-top:1px!important;flex:0 0 100%!important}
.fleet-controls button,.fleet-controls .base-return-button,.fleet-controls .availability-button,.fleet-controls .quick-copy,.fleet-controls .empty-return-button,.fleet-controls .departure-button{width:23px!important;min-width:23px!important;max-width:23px!important;height:23px!important;min-height:23px!important;padding:0!important;border-radius:5px!important;display:inline-grid!important;place-items:center!important;font-size:12px!important;line-height:1!important}
@media(max-width:720px){.fleet-info strong{font-size:11px!important}.fleet-reg{font-size:9px!important}.fleet-controls{gap:3px!important}.fleet-controls button{width:21px!important;min-width:21px!important;max-width:21px!important;height:21px!important}}
/* Data w górnym pasku: spójne obramowanie i akcent */
#plannerDayPicker{border:1px solid #516478!important;border-radius:8px!important;background:#192a37!important;color:#eaf1f7!important;min-height:34px!important}

#monthModeBtn{display:none!important}

/* v102 — ekran PIN */
body.pin-locked{overflow:hidden!important}body.pin-locked> :not(#pinGate){visibility:hidden!important}body.pin-locked #pinGate{visibility:visible!important}.pin-gate{position:fixed;inset:0;z-index:999999;background:radial-gradient(circle at 50% 25%,#243746 0%,#111c26 55%,#0d151d 100%);display:grid;place-items:center;padding:20px}.pin-panel{width:min(420px,100%);padding:34px;border:1px solid #354c5b;border-radius:18px;background:#182631;box-shadow:0 22px 90px #0008;display:flex;flex-direction:column;gap:13px;color:#e9f1f6}.pin-logo{font-size:23px;font-weight:800;letter-spacing:.8px;color:#f3f6fa}.pin-logo:first-letter{color:#e99453}.pin-logo strong{font-weight:400}.pin-kicker{font-size:11px;letter-spacing:2px;color:#de9a69}.pin-panel h1{font-size:24px;margin:5px 0 0}.pin-panel p{font-size:13px;color:#b6c5d0;margin:0 0 5px;line-height:1.5}.pin-panel label{font-size:12px;font-weight:700;color:#d4e0e9}.pin-panel input{width:100%;height:46px;box-sizing:border-box;background:#0d1b26;border:1px solid #526778;border-radius:9px;color:#fff;text-align:center;letter-spacing:7px;font-size:21px}.pin-panel #pinConfirmWrap{display:flex;flex-direction:column;gap:9px}.pin-panel #pinConfirmWrap[hidden]{display:none}.pin-panel button{height:45px;background:#d8894f;color:#111b24;font-weight:800;border:0;border-radius:9px;cursor:pointer}.pin-panel small{font-size:11px;color:#92a5b3;line-height:1.5}.pin-panel #pinError{font-size:12px;color:#ff9292;min-height:1em}#pinLogout{padding:7px 11px;border:1px solid #4b5d6b;border-radius:7px;background:#223442;color:#c8d9e4;cursor:pointer;font-size:12px}

/* v103 — kartoteka kierowców */
#driverAddBtn{margin:10px 0 14px}
.driver-inactive{opacity:.58;border-style:dashed!important}
.driver-active-toggle{display:flex!important;align-items:center;gap:10px;padding:8px 0}
.driver-active-toggle input{width:18px!important;height:18px!important}

/* v106 — rejestr mandatów */
.fines-dialog{width:min(1120px,96vw);max-width:1120px}
.fine-edit-dialog{width:min(620px,96vw)}
.fine-toolbar{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin:14px 0}
.fine-toolbar label{min-width:190px}
.fine-summary{margin:12px 0;padding:12px 16px;background:#1c2834;border-radius:10px;font-weight:650}
.fine-table-wrap{overflow-x:auto;max-height:58vh}
.fine-table{width:100%;border-collapse:collapse}
.fine-table th,.fine-table td{padding:10px 12px;border-bottom:1px solid #38414d;text-align:left}
.fine-table th{white-space:nowrap;color:#e6a15c}

/* v107 — tygodniowe podsumowanie na dole strony */
.week-kpi-panel{margin:16px 0 26px;padding:20px 22px;border:1px solid #34414d;border-radius:15px;background:#131d27}
.week-kpi-heading{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:15px;flex-wrap:wrap}
.week-kpi-heading h2{margin:4px 0 0;font-size:17px;font-weight:700;color:#f2f5f8}
.week-kpi-eyebrow{font-size:11px;letter-spacing:.12em;color:#f3a14a;font-weight:800}
.week-kpi-caption,.week-kpi-note{color:#a9b6c2;font-size:12px}
.week-kpi-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.week-kpi-card{padding:18px 20px;background:#1e2b37;border:1px solid #334454;border-radius:11px;display:flex;flex-direction:column;gap:9px}
.week-kpi-card span{font-size:11px;letter-spacing:.08em;font-weight:700;color:#aebcc8}
.week-kpi-card strong{font-size:clamp(21px,2.1vw,31px);line-height:1.2;color:#f7f9fc;font-variant-numeric:tabular-nums}
.week-kpi-highlight{border-color:#b56e2e;background:#2b261f}
.week-kpi-highlight strong{color:#ffb76d}
.week-kpi-note{margin:12px 2px 0}
@media(max-width:760px){.week-kpi-grid{grid-template-columns:1fr}.week-kpi-panel{padding:14px}}
