:root{
  --bg:#F3F6F9; --card:#ffffff; --ink:#0F1B2D; --ink2:#5B6B7F; --line:#DCE3EB; --line2:#ECF0F4;
  --accent:#0A8F80; --accent-soft:#E0F4F0; --dark:#0B1F3F; --gold:#0A8FC0; --gold-soft:#E1F3FA;
  --navy:#0B1F3F; --teal:#12C9A4; --cyan:#22B8E6; --grad:linear-gradient(135deg,#12C9A4 0%,#22B8E6 100%);
  --uw:#2f8a4f; --uw-soft:#dff2e5; --l4:#1e5e38; --l4-soft:#bfdcc9;
  --ok:#2f7d4f; --ok-soft:#e5f3ea; --warn:#a86a00; --warn-soft:#fbf1dc; --bad:#b3372f; --bad-soft:#fbe7e5;
  --blue:#2d5f8f; --blue-soft:#e6eef7; --violet:#6b4f9a; --violet-soft:#efe9f7;
  --radius:10px; --shadow:0 1px 2px rgba(0,0,0,.05),0 2px 8px rgba(0,0,0,.04);
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.45 "Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif}
h1{font-size:22px;margin:0 0 4px} h2{font-size:17px;margin:0 0 10px} h3{font-size:15px;margin:0 0 8px}
a{color:var(--blue)}
.hidden{display:none!important}
.muted{color:var(--ink2)} .small{font-size:13px} .right{text-align:right} .nowrap{white-space:nowrap}
.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:16px;background:#fff;color:var(--ink);padding:8px 16px;flex-wrap:wrap;border-bottom:3px solid transparent;border-image:var(--grad) 1;box-shadow:0 1px 6px rgba(11,31,63,.06)}
.wordmark-old{font-weight:900;font-size:20px;letter-spacing:.5px;font-family:Arial,"Segoe UI",sans-serif;white-space:nowrap}
.wordmark .a{color:#4a4a4a} .wordmark .b{color:var(--accent)}
.login-logo{display:block;margin:0 auto 10px;max-width:240px;width:60%;height:auto}
.login-company{font-size:26px;font-weight:800;line-height:1.2;color:var(--navy);margin-bottom:8px}
.brand-logo{height:30px;width:auto;display:block}
.company-name{font-size:19px;font-weight:800;line-height:1.2;color:var(--navy);border-left:1px solid var(--line);padding-left:12px;max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.brand{display:flex;align-items:center;gap:8px;font-weight:700;letter-spacing:.5px}
.logo{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:7px;background:var(--accent);color:#fff;font-weight:800}
nav{display:flex;gap:4px;flex:1;flex-wrap:wrap}
nav a{color:#4a4640;text-decoration:none;padding:6px 10px;border-radius:7px;font-size:14px;font-weight:500}
nav a:hover{background:var(--bg);color:var(--ink)} nav a.on{background:var(--accent-soft);color:var(--accent);font-weight:700}
.who{display:flex;align-items:center;gap:10px;font-size:14px}
main{max-width:1240px;margin:0 auto;padding:18px 16px 60px}
.loading{padding:40px;text-align:center;color:var(--ink2)}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);margin-bottom:16px}
.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.row.between{justify-content:space-between}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:800px){.grid2{grid-template-columns:1fr}}
.btn{border:1px solid var(--line);background:#fff;color:var(--ink);padding:8px 14px;border-radius:8px;cursor:pointer;font:inherit;font-size:14px;display:inline-flex;align-items:center;gap:6px}
.btn:hover{border-color:#cfc9bd}
.btn.primary{background:var(--navy);border-color:var(--navy);color:#fff}
.btn.primary:hover{background:#12345f;border-color:#12345f}
.btn.primary:hover{filter:brightness(.95)}
.btn.dark{background:var(--dark);color:#fff;border-color:var(--dark)}
.btn.danger{color:var(--bad);border-color:#e9c3bf}
.btn.ghost{background:transparent;color:inherit;border-color:var(--line)}
.btn.small{padding:4px 9px;font-size:13px}
.btn:disabled{opacity:.5;cursor:default}
input,select,textarea{font:inherit;font-size:14px;padding:7px 9px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink);min-width:0}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}
input[type=time]{width:120px} input.num{width:110px;text-align:right}
label.f{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--ink2)}
label.f > input, label.f > select{color:var(--ink)}
.form{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;align-items:end}
table{border-collapse:collapse;width:100%}
th,td{padding:7px 7px;border-bottom:1px solid var(--line2);text-align:left;vertical-align:middle}
th{font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--ink2);font-weight:600;background:#F6F9FB}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
tr.click{cursor:pointer} tr.click:hover td{background:#fbfaf7}
tfoot td{font-weight:700;border-top:2px solid var(--line)}
.table-wrap{overflow-x:auto}
.chip{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600;background:var(--line2);color:var(--ink2);white-space:nowrap}
.chip.ok{background:var(--ok-soft);color:var(--ok)} .chip.warn{background:var(--warn-soft);color:var(--warn)}
.chip.bad{background:var(--bad-soft);color:var(--bad)} .chip.blue{background:var(--blue-soft);color:var(--blue)}
.chip.violet{background:var(--violet-soft);color:var(--violet)} .chip.acc{background:var(--accent-soft);color:var(--accent)}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;margin-bottom:14px}
.tile{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px}
.tile .v{font-size:20px;white-space:nowrap;font-weight:700;font-variant-numeric:tabular-nums}
.tile .l{font-size:12px;color:var(--ink2)}
.tile.acc{border-color:var(--accent);background:var(--accent-soft)}
.banner{padding:10px 14px;border-radius:8px;margin-bottom:14px;font-size:14px}
.banner.warn{background:var(--warn-soft);color:#6d4600;border:1px solid #f0d9a8}
.banner.info{background:var(--blue-soft);color:#1f4466;border:1px solid #c9daec}
.banner.bad{background:var(--bad-soft);color:#7d231d;border:1px solid #efc4bf}
/* logowanie */
.login-wrap{max-width:980px;margin:20px auto}
.login-head{text-align:center;margin-bottom:22px}
.login-head .logo{width:52px;height:52px;font-size:26px;border-radius:12px;margin-bottom:8px}
.names{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.name-btn{padding:16px 14px;border-radius:10px;border:1px solid var(--line);background:#fff;font:inherit;font-size:16px;font-weight:600;cursor:pointer;text-align:left;display:flex;align-items:center;gap:10px}
.name-btn:hover{border-color:var(--accent);box-shadow:var(--shadow)}
.name-btn .ini{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-size:13px;flex:none}
.group-title{margin:18px 0 8px;font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--ink2);font-weight:700}
.pin-dots{display:flex;gap:10px;justify-content:center;margin:14px 0}
.pin-dots span{width:16px;height:16px;border-radius:50%;border:2px solid var(--ink2)}
.pin-dots span.on{background:var(--ink);border-color:var(--ink)}
.pinpad{display:grid;grid-template-columns:repeat(3,72px);gap:10px;justify-content:center}
.pinpad button{height:56px;font-size:22px;border-radius:10px;border:1px solid var(--line);background:#fff;cursor:pointer;font-weight:600}
.pinpad button:hover{background:#F5F8FA}
/* modal */
.modal{position:fixed;inset:0;background:rgba(30,28,25,.45);display:flex;align-items:flex-start;justify-content:center;padding:40px 12px;z-index:50;overflow:auto}
.modal-box{background:#fff;border-radius:12px;padding:20px;width:100%;max-width:560px;box-shadow:0 10px 40px rgba(0,0,0,.25)}
.modal-box.wide{max-width:860px}
.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:16px;flex-wrap:wrap}
.err{color:var(--bad);font-size:14px;min-height:20px;margin-top:6px;text-align:center}
.toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:var(--dark);color:#fff;padding:10px 16px;border-radius:8px;z-index:60;font-size:14px}
.toast.bad{background:var(--bad)}
/* kalendarz */
.ts td{padding:5px 6px}
.ts tr.we td{background:#F5F8FA}
.ts tr.hol td{background:#FFF6EC}
.ts tr.today td:first-child{box-shadow:inset 3px 0 0 var(--accent)}
.ts tr.miss td{background:#FFF5F4}
.ts .d{white-space:nowrap;font-weight:600}
.ts .d small{display:block;font-weight:400;color:var(--ink2);font-size:12px}
.ts .ts-mon,.ts .ts-today{display:none}
.ts select.kind{width:210px}
.ts .res{font-size:13px;white-space:nowrap}
.ts small.clk{display:block;font-size:11px;line-height:1.3;color:var(--ink2);margin-top:2px;white-space:nowrap}
.ts .res small.clk{white-space:normal}
small.clk.edit{color:var(--warn)}
a.clk.maplink{display:block;font-size:11px;margin-top:2px;color:var(--blue);font-weight:600}
.route-map{height:440px;border-radius:10px;border:1px solid var(--line);background:#E8EEF3}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;vertical-align:middle;margin-right:2px}
.gps-info{margin-top:8px}
.leaflet-tooltip.stop-tip{padding:1px 6px;font-weight:700}
@media (max-width:700px){.route-map{height:360px}}
.minical small.clk{display:block;font-size:10px;line-height:1.2;color:var(--ink2);margin-top:1px;overflow-wrap:anywhere}
.ts .saved{color:var(--ok);font-size:12px}
.ts input.note{width:150px}
.month-nav{display:flex;align-items:center;gap:8px}
.month-nav .m{font-weight:700;font-size:18px;min-width:170px;text-align:center}
@media(max-width:760px){
  .tiles{grid-template-columns:1fr 1fr}
  /* telefon: każdy dzień to osobna karta z pełną nazwą dnia i opisanymi polami */
  .ts,.ts tbody{display:block;width:100%}
  .ts thead{display:none}
  .ts input[type=time],.ts input.tp{width:100%}
  .ts input.note,.ts select{width:100%}
  .ts input,.ts select{min-height:46px;font-size:16px}
  .ts tr{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px 10px;margin:0 0 14px;padding:14px 14px 16px;border:1px solid var(--line);border-left:6px solid var(--line);border-radius:12px;background:var(--card)}
  .ts tr td{flex:1 1 100%;min-width:0;border:none;padding:0;background:transparent!important;box-shadow:none!important}
  .ts tr td:not(.d):not(.res){order:1}
  .ts tr.we{background:#F5F8FA} .ts tr.hol{background:#FFF6EC} .ts tr.miss{background:#FFF5F4}
  .ts tr.filled{border-left-color:var(--ok)} .ts tr.miss{border-left-color:var(--bad)}
  .ts tr.r-uw{background:var(--uw-soft);border-left-color:var(--uw)} .ts tr.r-l4{background:var(--l4-soft);border-left-color:var(--l4)}
  .ts tr.today{border-color:var(--accent);border-width:2px 2px 2px 6px}
  .ts td.d{flex:1 1 auto;display:flex;flex-wrap:wrap;align-items:baseline;gap:0 6px;font-size:18px;font-weight:700;white-space:normal;line-height:1.25}
  .ts td.d .ts-dn,.ts td.d b{font-weight:800}
  .ts td.d .ts-mon{display:inline;font-weight:600}
  .ts td.d .ts-today{display:inline-block;align-self:center;padding:1px 8px;border-radius:999px;background:var(--accent);color:#fff;font-size:12px;font-weight:700}
  .ts td.d small{flex-basis:100%;font-size:13px}
  .ts td.res{flex:0 1 auto;max-width:48%;text-align:right;font-size:15px;white-space:normal}
  .ts td.c-time{flex:1 1 calc(50% - 5px)}
  .ts td.res:empty{display:none}
  .ts td[data-l]::before{content:attr(data-l);display:block;margin-bottom:5px;font-size:13px;font-weight:600;color:var(--ink2)}
  .ts tr.nowork td.c-time,.ts tr.nowork td.c-reason,.ts tr.nowork td.c-qty,.ts tr.noentry td.c-note,.ts tr.std td.c-reason{display:none}
  .ts select.kind{width:100%;font-weight:600}
  .top{gap:8px} nav a{padding:5px 7px}
}
/* telefon: zwijane menu u góry (przycisk ☰ z nazwą bieżącej strony) */
.menu-btn{display:none}
@media(max-width:760px){
  .top{flex-wrap:nowrap;justify-content:space-between;padding:8px 12px}
  .brand{min-width:0;flex:1 1 0}
  .brand-logo{height:24px;flex:none}
  .company-name{min-width:0;max-width:none;font-size:16px;padding-left:10px}
  .menu-btn{display:inline-flex;align-items:center;gap:6px;flex:none;max-width:52%;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:8px;padding:8px 10px;font:600 14px/1.2 inherit;cursor:pointer}
  .menu-btn #menuCur{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .menu-ico{font-size:17px;line-height:1}
  .top.open .menu-btn{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
  .top #nav,.top .who{display:none}
  .top.open{flex-wrap:wrap}
  .top.open #nav{display:flex;flex-direction:column;gap:2px;flex:0 0 100%;order:3;padding-top:6px;margin-top:2px;border-top:1px solid var(--line2);max-height:70vh;overflow-y:auto}
  .top.open #nav a{padding:12px 10px;font-size:16px}
  .top.open .who{display:flex;justify-content:space-between;flex:0 0 100%;order:4;padding:10px 4px 4px;border-top:1px solid var(--line2)}
  main{padding:14px 12px 70px}
  h1{font-size:20px}
}
/* instalacja jako aplikacja */
.install-bar{position:fixed;left:12px;right:12px;bottom:14px;z-index:45;max-width:560px;margin:0 auto;background:#fff;border:1px solid var(--line);border-left:5px solid var(--accent);border-radius:var(--radius);box-shadow:0 6px 24px rgba(11,31,63,.18);padding:12px 14px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:14px}
.install-bar .ib-text{flex:1 1 220px}
.install-bar .ib-btns{display:flex;gap:8px;margin-left:auto}
/* realizacje */
.real{border:2px solid #C9D4E0;border-left:6px solid var(--accent);border-radius:12px;margin-bottom:22px;background:#fff;overflow:hidden;box-shadow:0 2px 10px rgba(0,0,0,.07)}
.real:hover{border-color:#A9B8C8;border-left-color:var(--accent)}
.real-h{display:flex;justify-content:space-between;gap:10px;padding:14px 16px;background:#f3efe9;border-bottom:2px solid #e2dcd2;flex-wrap:wrap;align-items:center}
.real-h .c{font-weight:800;font-size:21px;letter-spacing:.2px;color:var(--ink)}
.real table td,.real table th{font-size:14px}
.crew-row{display:flex;gap:8px;align-items:center;margin-bottom:6px;flex-wrap:wrap}
/* karta do druku */
.sheet{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow)}
.sheet-h{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid var(--ink);padding-bottom:10px;margin-bottom:14px;gap:10px;flex-wrap:wrap}
.total-line td{font-size:18px;font-weight:800;background:var(--accent-soft)}
.sign{display:flex;justify-content:space-between;gap:40px;margin-top:40px}
.sign div{flex:1;border-top:1px solid var(--ink);padding-top:4px;font-size:12px;color:var(--ink2);text-align:center}
.minical{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;font-size:11px}
.minical div{border:1px solid var(--line2);border-radius:4px;padding:3px;min-height:38px}
.minical .h{border:none;font-weight:700;color:var(--ink2);min-height:0;text-align:center}
.minical .we{background:#EEF2F6}
.minical .abs{background:var(--blue-soft)} .minical .l4{background:var(--bad-soft)} .minical .ot{background:var(--warn-soft)}
.minical b{display:block;font-size:12px}
@media print{
  body{background:#fff} .top,.noprint,.btn,#toast{display:none!important}
  main{padding:0;max-width:none} .sheet{border:none;box-shadow:none;padding:0}
  .card{box-shadow:none;border:none;padding:0}
  @page{size:A4;margin:12mm}
}

/* nieobecnosci: urlop zielony, L4 ciemniejsza zielen */
.chip.uw{background:var(--uw-soft);color:var(--uw)} .chip.l4{background:var(--l4);color:#fff}
.ts tr.r-uw td{background:var(--uw-soft)} .ts tr.r-l4 td{background:var(--l4-soft)}
.minical .uw{background:var(--uw-soft);color:var(--uw)} .minical .l4{background:var(--l4);color:#fff}
.mtabs{display:flex;gap:6px;flex-wrap:wrap}
.mtabs a{padding:6px 11px;border-radius:999px;border:1px solid var(--line);background:#fff;text-decoration:none;color:var(--ink);font-size:13px}
.mtabs a.on{background:var(--accent);border-color:var(--accent);color:#fff}
.mtabs a small{color:inherit;opacity:.7;margin-left:4px}
.btn.gold{background:var(--gold);border-color:var(--gold);color:#fff}
.legend{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--ink2);margin:6px 0 10px}
.legend span{display:inline-flex;align-items:center;gap:5px}
.legend i{display:inline-block;width:14px;height:14px;border-radius:4px;border:1px solid var(--line)}

/* tryb dyskretny – kwoty rozmyte na listach właściciela */
body.discreet .sensitive td.num, body.discreet .sensitive .tile .v, body.discreet .sensitive input.mx,
body.discreet .sensitive .chip:not(.bad):not(.warn):not(.ok) {filter:blur(7px);user-select:none;pointer-events:none}
body.discreet .sensitive input.mx{pointer-events:none}
@media print{body.discreet .sensitive td.num, body.discreet .sensitive .tile .v{filter:none}}

.brand-ico{width:30px;height:30px;display:block}

/* tabele szerokie: nazwiska i naglowki stoja w miejscu */
.table-wrap.freeze{max-height:calc(100vh - 170px);overflow:auto;padding:0}
.freeze > h2,.freeze > p{padding:0 16px}.freeze > h2{padding-top:14px}
.freeze td:first-child,.freeze th:first-child{padding-left:14px}
.freeze table{border-collapse:separate;border-spacing:0}
.freeze thead th{position:sticky;top:0;z-index:3;background:#F6F9FB;box-shadow:0 1px 0 var(--line)}
.freeze tbody td:first-child,.freeze tfoot td:first-child,.freeze tbody th:first-child{position:sticky;left:0;z-index:2;background:var(--card);box-shadow:1px 0 0 var(--line)}
.freeze tbody th[colspan]{background:#F6F9FB}
.freeze thead th:first-child{left:0;z-index:4;box-shadow:1px 1px 0 var(--line)}
.freeze tfoot td{position:sticky;bottom:0;background:#F6F9FB;z-index:2}
.freeze tfoot td:first-child{z-index:3}
.freeze tr.click:hover td{background:#EEF8F6}
@media print{.table-wrap.freeze{max-height:none;overflow:visible}}

/* wybór godziny */
input.tp{width:84px;text-align:center;cursor:pointer;font-variant-numeric:tabular-nums;letter-spacing:.5px}
input.tp:disabled{cursor:default}
.tp-box{position:absolute;z-index:1000;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.18);padding:10px 12px;width:300px;max-width:calc(100vw - 16px)}
.tp-l{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--ink2);margin:4px 0 6px}
.tp-g{display:grid;grid-template-columns:repeat(6,1fr);gap:4px;margin-bottom:6px}
.tp-g button{border:1px solid var(--line);background:#fff;border-radius:7px;padding:7px 0;font:inherit;font-size:14px;cursor:pointer;font-variant-numeric:tabular-nums}
.tp-g button:hover{border-color:var(--accent);color:var(--accent)}
.tp-g button.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}
.tp-g button.dim{color:#a9a39b}
.tp-g button.dim.on{color:#fff}
.tp-a{display:flex;justify-content:space-between;margin-top:6px}

/* karta wypłaty – czytelna dla pracownika */
.pay-month{font-size:22px;font-weight:800}
.pay-sum{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:6px 0 18px}
.pay-sum>div{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#F8FAFC}
.pay-sum .l{font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--ink2)}
.pay-sum .v{font-size:26px;font-weight:800;margin:2px 0;font-variant-numeric:tabular-nums;white-space:nowrap}
.pay-sum .s{font-size:12px;color:var(--ink2)}
.pay-sum .acc{background:linear-gradient(135deg,#0B1F3F 0%,#0B5E73 100%);border-color:var(--navy);color:#fff}
.pay-sum .acc .l,.pay-sum .acc .s{color:rgba(255,255,255,.85)}
h3.step{display:flex;align-items:center;gap:10px;margin:18px 0 6px;font-size:17px}
h3.step span{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--grad);color:#fff;font-size:14px}
.pay-t td{font-size:16px;padding:8px 6px}
.pay-t td.calc{color:var(--ink2);text-align:right;white-space:nowrap;font-size:14px}
.pay-t td.num{width:150px;font-variant-numeric:tabular-nums;white-space:nowrap}
.pay-total td{font-weight:800;border-top:2px solid var(--ink);font-size:18px}
.pay-cash td{font-size:22px;font-weight:800;background:var(--accent-soft);color:var(--navy)}
.facts td{padding:6px}
.minical .work{background:#DDF3EE}
.minical .miss{background:#fff;border:1px dashed var(--bad);color:var(--bad)}
.cal-leg{margin-top:8px;color:var(--ink2);display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center}
.cal-leg .k{display:inline-block;width:12px;height:12px;border-radius:3px;border:1px solid var(--line);vertical-align:middle;margin-right:3px}
.cal-leg .k.work{background:#DDF3EE}.cal-leg .k.ot{background:var(--warn-soft)}.cal-leg .k.uw{background:var(--uw-soft)}.cal-leg .k.l4{background:var(--l4)}.cal-leg .k.miss{border:1px dashed var(--bad)}
.ts tr.filled td{background:#EAF7F4}
.ts tr.filled.we td{background:#DDF1EE}
@media (max-width:760px){.pay-sum{grid-template-columns:1fr 1fr}.pay-sum .v{font-size:20px}}
@media print{.pay-sum .acc{background:#fff;color:var(--ink);border:2px solid var(--ink)}.pay-sum .acc .l,.pay-sum .acc .s{color:var(--ink2)}}
.sheet-logo{height:22px;width:auto;display:block;margin:0 0 6px auto;opacity:.9}

/* numer wersji (zmieniany przy kazdej poprawce) */
.app-version{position:fixed;right:8px;bottom:4px;font-size:10px;color:var(--ink2);opacity:.6;pointer-events:none;z-index:1}
@media print{.app-version{display:none}}

/* v1.1.0: przycisk wejscie/wyjscie, strona Start, ogloszenia */
.clock{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.clock-state{font-size:18px;font-weight:700}
.clock-state.on{color:var(--ok,#0B7A5A)}
.btn.big{font-size:18px;padding:14px 26px;border-radius:12px}
.ann{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:10px;background:var(--card)}
.ann.pinned{border-color:var(--warn,#C98A00);background:var(--warn-soft,#FFF7E6)}
.ann-body{white-space:pre-wrap;margin:6px 0 8px}
details>summary.btn{list-style:none;display:inline-block;cursor:pointer}
details>summary.btn::-webkit-details-marker{display:none}
#cuG input,#cuR input.r-l{width:100%}
/* v1.2.0: oferty AI */
.offer-frame{width:100%;min-height:600px;border:1px solid var(--line);border-radius:10px;background:#fff;display:block}
.f>label{display:block;margin:4px 0}

/* v1.4.0: żetony */
.tok-big{font-size:28px;font-weight:700;line-height:1.1}
td.num.neg{color:var(--bad)} td.num.pos{color:var(--ok)}
/* moduły programu */
.mod-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin-top:12px}
.mod{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;cursor:pointer;background:#fff}
.mod.on{border-color:var(--accent);background:var(--accent-soft)}
.mod input{margin-top:3px;flex:none;width:16px;height:16px}
.mod > span{display:flex;flex-direction:column;gap:2px}
.card.hint{border-style:dashed;box-shadow:none}
a.tile{color:inherit;text-decoration:none;display:block}
a.tile:hover{border-color:var(--accent)}
/* kreator premii */
.rules{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.rule{border:1px solid var(--line);border-radius:var(--radius);padding:12px;background:#fff;display:flex;flex-direction:column;gap:8px}
.rule-text{font-size:14px;color:var(--ink2)}
.rule-editor{border-color:var(--accent)}
.chips-pick{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.pick{border:1px solid var(--line);border-radius:999px;padding:4px 10px;font-size:13px;cursor:pointer;background:#fff;display:inline-flex;gap:6px;align-items:center}
.pick:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
table.compact td{padding:4px 8px}
/* pasek wypłaty pracownika */
.payslip table tr.sec td{background:var(--bg,#f4f6f9);padding-top:10px}
.payslip table tr.total td{border-top:2px solid var(--ink,#0b1f3f)}

/* statystyki roku */
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:800px){.grid3{grid-template-columns:1fr}}
.stat-lead{font-size:16px;line-height:1.6}
.toplist{margin:0;padding-left:20px}
.toplist li{padding:4px 0;border-bottom:1px solid var(--line)}
.toplist li:last-child{border-bottom:none}
.toplist li span{display:inline-block;min-width:55%}
.toplist li b{float:right}
.bars{display:grid;gap:6px}
.bar-row{display:grid;grid-template-columns:110px 1fr 130px;gap:10px;align-items:center;font-size:14px}
.bar-row .bt{background:#EEF3F6;border-radius:6px;height:16px;overflow:hidden}
.bar-row .bf{display:block;height:100%;background:var(--accent);border-radius:6px}
.bar-row .bv{text-align:right;font-variant-numeric:tabular-nums}
@media(max-width:600px){.bar-row{grid-template-columns:80px 1fr 100px;font-size:13px}}
body.discreet .sensitive .sens{filter:blur(7px);user-select:none}
@media print{body.discreet .sensitive .sens{filter:none}.bar-row .bf{-webkit-print-color-adjust:exact;print-color-adjust:exact}}

/* zestawienie dla ksiegowej */
.acct h3{font-size:15px;margin:0 0 8px}
@media print{.acct table,.acct table *{font-size:10px!important}.acct td,.acct th{padding:3px 5px}}

/* Historia zmian: szczegoly w szerokiej kolumnie, na telefonie kazdy wpis jako karta (kiedy i kto, co, szczegoly) */
table.audit td.opis{max-width:560px}
@media (max-width:640px){
  table.audit thead{display:none}
  table.audit tr{display:block;padding:10px 0;border-bottom:1px solid var(--line2)}
  table.audit td{display:block;border:0;padding:2px 6px;max-width:none}
  table.audit td.kiedy,table.audit td.kto{display:inline;color:var(--ink2);font-size:13px}
  table.audit td.kto::before{content:"· "}
  table.audit td.co{font-weight:600;padding-top:4px}
}

/* lista płac: przyciski pod tabelą w dwóch czytelnych rzędach; na telefonie pliki Excel w okienku wyboru */
.pay-acts{display:flex;flex-direction:column;gap:10px;margin-top:4px}
.pay-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.pay-xls-btn{display:none!important}
.xls-list{display:grid;gap:8px}
.xls-opt{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--card,#fff);color:var(--ink);text-decoration:none}
.xls-opt b{font-size:16px}
.xls-opt:hover{border-color:var(--accent);background:var(--accent-soft)}
@media(max-width:760px){
  .pay-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .pay-acts .pay-row .btn{justify-content:center;text-align:center;min-height:48px;padding:10px 8px;font-size:15px;line-height:1.25}
  .pay-row .pay-close,.pay-row > :last-child:nth-child(even){grid-column:1/-1}
  .pay-xls{display:none}
  .pay-xls-btn{display:inline-flex!important}
}

/* Ustawienia: kolumny w „Stawki i procenty” – duże pola i kroki przy dodawaniu kolumny */
.cols{display:flex;flex-direction:column;gap:18px;margin-top:12px}
.cols-sec{border-top:1px solid var(--line2);padding-top:14px}
.cols-sec h3{margin:0 0 4px;font-size:17px}
.cols-fixed{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.cols-fixed .chip{font-size:13px;padding:5px 11px}
.cols-names{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin:12px 0 14px}
.cols-names .f{display:flex;flex-direction:column;gap:5px;font-size:14px;color:var(--ink2)}
.cols-names input,.cols-step input,.qty-card input{font-size:16px;padding:10px 12px}
.cols-own .row{flex-wrap:nowrap;gap:8px} .cols-own input{flex:1;width:100%;color:var(--ink)}
.cols-step{display:flex;gap:12px;align-items:flex-start;margin-top:14px}
.cols-step .n{flex:none;width:30px;height:30px;border-radius:50%;background:var(--accent);color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:2px}
.cols-step > label.f,.cols-step > div{flex:1;min-width:0}
.cols-step > label.f{font-size:15px;color:var(--ink);font-weight:600;max-width:420px}
.cols-q{font-size:15px;font-weight:600}
.cols-step .mod b{font-size:15px}
.qty-card .form{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.qty-card label.f{font-size:15px;color:var(--ink);font-weight:600}
.qty-card label.f .small{font-weight:400}
.qty-card input.num{width:100%;max-width:220px}
/* ilości wykonane w danym dniu (kolumny za sztukę i za m²): małe pola przy godzinach */
.wk-qty-h{font-weight:600;margin-bottom:6px}
.wk-qty{display:flex;flex-wrap:wrap;gap:10px 18px}
.wk-qty .f{min-width:150px}
.wk-qty-in{display:flex;align-items:center;gap:6px}
.wk-qty-in input.num{width:100px}
.wk-qty-in b{font-weight:600;color:var(--ink2)}
td.c-qty{white-space:nowrap}
.ts-qty{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink2)}
.ts-qty + .ts-qty{margin-top:4px}
.ts-qty span{max-width:110px;overflow:hidden;text-overflow:ellipsis}
.ts-qty input.num{width:70px}
.ts-qty input.num:disabled{opacity:.35;background:transparent}
.ts .th-sub{font-weight:500;text-transform:none;letter-spacing:0;color:var(--ink2)}
html.nowy .wk-form .wk-qty-in input.num{width:120px;text-align:right;font-weight:700}
html.nowy .wk-qty-h{font-size:15.5px}

/* Wnioski urlopowe: na telefonie kazdy wniosek jako karta (kto, rodzaj, termin, uwagi), duze przyciski pod spodem */
.lv-m{display:none}
@media (max-width:640px){
  .table-wrap table.leave thead{display:none}
  .table-wrap table.leave,.table-wrap table.leave tbody{display:block}
  .table-wrap table.leave tr{display:block;padding:12px 2px;border-bottom:1px solid var(--line2)}
  .table-wrap table.leave td{display:inline;border:0;padding:0;text-align:left;white-space:normal;font-size:15px}
  .table-wrap table.leave td:first-child{display:block;font-size:16px;font-weight:600;margin-bottom:3px}
  .table-wrap table.leave td.lv-when::before,.table-wrap table.leave td.lv-days::before{content:" · "}
  .table-wrap table.leave td:first-child + td.lv-when::before{content:none}
  .table-wrap table.leave td.lv-st{display:block;margin-top:6px}
  .table-wrap table.leave td.lv-note{display:block;margin-top:4px;font-size:14px}
  .table-wrap table.leave td.lv-note:empty,.table-wrap table.leave td.lv-act:empty{display:none}
  .table-wrap table.leave td.lv-act{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px}
  .table-wrap table.leave td.lv-act .btn{min-height:44px;padding:10px 16px;font-size:15px}
  .lv-m{display:inline}
}

/* komputer: spokojniejsza tabela godzin – bez pustych pól w dniach bez pracy, kolor dnia tylko paskiem przy dacie,
   pola z ramką dopiero po najechaniu na wiersz (lista „Wpis” zawsze widoczna) */
@media (min-width:761px){
  .ts tr.nowork td.c-time input,.ts tr.nowork td.c-reason select,.ts tr.nowork td.c-reason .muted,.ts tr.nowork td.c-qty .ts-qty,
  .ts tr.noentry td.c-note input,.ts tr.std td.c-reason select{visibility:hidden}
  .ts tr.filled td{background:transparent} .ts tr.filled.we td{background:#F5F8FA}
  .ts tr.filled td.d{box-shadow:inset 4px 0 0 var(--ok)} .ts tr.miss td.d{box-shadow:inset 4px 0 0 var(--bad)}
  .ts tr.today td.d{box-shadow:inset 4px 0 0 var(--accent)}
  .ts td.d{padding-left:14px}
}
@media (min-width:761px) and (hover:hover){
  .ts td:not(.c-kind) input:not(:focus),.ts td:not(.c-kind) select:not(:focus){border-color:transparent;background:transparent;box-shadow:none}
  .ts tr:hover td:not(.c-kind) input,.ts tr:hover td:not(.c-kind) select{border-color:var(--line);background:var(--card)}
  .ts input.note:not(:focus)::placeholder{color:transparent}
  .ts tr:hover input.note::placeholder{color:var(--ink2)}
}
