/* ===========================================================
   Kalendár / rozvrh
   =========================================================== */
.legend{display:flex;gap:16px;flex-wrap:wrap}
.lg{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--ink-soft)}
.lgdot{width:10px;height:10px;border-radius:3px;flex:none}

.cal-card{padding:0;overflow:hidden;overflow-x:auto}
.cal{width:100%;min-width:780px;border-collapse:collapse;table-layout:fixed}
.cal th{padding:14px 8px 12px;border-bottom:1px solid var(--line);text-align:center;font-weight:600}
.cal th.cal-emp{text-align:left;padding-left:20px;width:184px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);vertical-align:bottom}
.cal th.cal-sum{width:74px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);vertical-align:bottom}
.cal-dow{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}
.cal-num{font-family:var(--serif);font-size:20px;font-weight:700;margin-top:2px}
.cal th.is-today .cal-num{color:var(--orange)}
.cal th.is-today{background:var(--orange-tint)}

.cal td{border-bottom:1px solid var(--line-soft);border-left:1px solid var(--line-soft);padding:6px;vertical-align:middle}
.cal td.cal-emp{border-left:none;padding:10px 12px 10px 20px;width:184px}
.cal td.cal-sum{text-align:center;font-size:14px;background:var(--cream)}
.cal tr:last-child td{border-bottom:none}
.cal td.is-today{background:rgba(224,112,15,.045)}

.cal-slot{
  width:100%;min-height:50px;border-radius:9px;border:1px dashed var(--line);
  display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:1px;
  padding:7px 8px;position:relative;transition:.13s;background:var(--paper);overflow:hidden;
}
.cal-slot:hover{border-color:var(--ink-faint)}
.cal-slot.filled{border-style:solid}
.cal-slot.filled:hover{filter:brightness(.97);transform:translateY(-1px)}
.slot-bar{position:absolute;left:0;top:7px;bottom:7px;width:3px;border-radius:3px}
.slot-name{font-size:12px;font-weight:700;padding-left:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;line-height:1.25}
.slot-time{font-size:10px;color:var(--ink-soft);padding-left:8px;white-space:nowrap}
.slot-add{color:var(--ink-faint);opacity:0;transition:.13s;margin:0 auto}
.cal-slot:hover .slot-add{opacity:1}

/* shift picker popover */
.shift-pop{
  background:var(--paper);border:1px solid var(--line);border-radius:13px;
  box-shadow:var(--shadow-lg);padding:7px;width:222px;
}
.pop-title{font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint);padding:7px 10px 8px}
.pop-opt{display:flex;align-items:center;gap:9px;width:100%;padding:9px 10px;border-radius:8px;font-size:13.5px;color:var(--ink);transition:.12s;text-align:left}
.pop-opt:hover{background:var(--cream-2)}
.pop-opt.on{background:var(--sage-tint)}
.pop-opt.clear{color:var(--ink-soft);border-top:1px solid var(--line-soft);margin-top:4px;border-radius:0 0 8px 8px}
.pop-opt.clear:hover{background:var(--late-tint);color:var(--late)}

/* my schedule rows */
.sched-row{display:flex;align-items:center;gap:16px;padding:14px 16px;border-radius:11px;transition:.12s}
.sched-row:hover{background:var(--cream)}
.sched-date{text-align:center;width:48px;flex:none}
.sched-dow{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}
.sched-num{font-size:22px;font-weight:700;line-height:1}
.sched-mon{font-size:11px;color:var(--ink-faint)}
.slot-bar2{width:4px;align-self:stretch;border-radius:4px;flex:none;margin:2px 0}

/* ===========================================================
   Absence chips & badges
   =========================================================== */
.badge.abs{border:1px solid;background:transparent}
.abs-chip{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:19px;padding:0 5px;border-radius:6px;border:1px solid;font-weight:800;letter-spacing:.02em;line-height:1;flex:none}

/* legend extras */
.lgsq{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:18px;padding:0 4px;border:1px solid;border-radius:5px;font-size:10.5px;font-weight:800;flex:none}
.lg-sep{width:1px;height:18px;background:var(--line);margin:0 2px}
.mcal-legend{padding:14px 2px 18px;align-items:center}

/* ===========================================================
   Generovanie — pásik pokrytia
   =========================================================== */
.cov-bar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:11px 16px;border-radius:11px;font-size:13.5px;font-weight:500;margin-bottom:16px;border:1px solid}
.cov-bar svg{flex:none}
.cov-bar.ok{background:var(--ok-tint);border-color:#C6DBC4;color:var(--sage-dark)}
.cov-bar.warn{background:var(--late-tint);border-color:#E9C9AE;color:var(--late)}
.cov-bar b{font-weight:800}
.cov-days{display:flex;gap:5px;flex-wrap:wrap;flex-basis:100%;margin-left:25px;margin-top:1px}
.cov-pill{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:23px;padding:0 6px;border-radius:7px;background:#fff;border:1px solid #E5C4A8;font-size:12px;font-weight:700;cursor:pointer;font-variant-numeric:tabular-nums;transition:.12s}
.cov-pill:hover{background:var(--orange);color:#fff;border-color:var(--orange)}
.cov-pill.more{cursor:default;background:transparent;border-style:dashed}
.cov-pill.more:hover{background:transparent;color:var(--late);border-color:#E5C4A8}

.btn.orange svg{stroke-width:2}
.btn.ghost.sm svg,.btn.orange.sm svg{width:15px;height:15px}

/* ===========================================================
   Mesačná mrieža tímu
   =========================================================== */
.mgrid-card{padding:0;overflow:hidden}
.mgrid-scroll{overflow-x:auto;overflow-y:hidden}
.mgrid{border-collapse:separate;border-spacing:0;width:100%;font-size:13px}
.mgrid th,.mgrid td{border-bottom:1px solid var(--line-soft)}
.mgrid thead th{position:sticky;top:0;z-index:3;background:var(--cream);padding:8px 0 9px;text-align:center;font-weight:700;vertical-align:bottom}
.mgrid th.mg-emp,.mgrid td.mg-emp{position:sticky;left:0;z-index:2;background:var(--paper);text-align:left;width:188px;min-width:188px;padding:9px 14px;border-right:1px solid var(--line)}
.mgrid thead th.mg-emp{z-index:4;background:var(--cream);font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-faint)}
.mgrid th.mg-day{width:40px;min-width:40px}
.mg-dow{font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint)}
.mg-num{font-family:var(--serif);font-size:16px;font-weight:700;margin-top:1px}
.mgrid th.we .mg-dow,.mgrid th.we .mg-num{color:var(--gold)}
.mgrid th.hol{background:var(--gold-tint)}
.mgrid th.hol .mg-num{color:#A8761A}
.mgrid th.today .mg-num{color:var(--orange)}
.mgrid th.today{background:var(--orange-tint)}
.mgrid th.mg-sum,.mgrid td.mg-sum{width:54px;min-width:54px;text-align:center;background:var(--cream);border-left:1px solid var(--line);font-size:13px}
.mgrid thead th.mg-sum{font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint)}

.mgrid td.mg-cell{padding:3px;text-align:center;vertical-align:middle;border-left:1px solid var(--line-soft)}
.mgrid td.mg-cell.we{background:var(--cream)}
.mgrid td.mg-cell.hol{background:rgba(207,152,42,.07)}
.mgrid td.mg-cell.today{background:rgba(224,112,15,.05)}
.mgrid tbody tr:hover td.mg-cell{background:rgba(126,144,130,.05)}
.mgrid tbody tr:hover td.mg-cell.we{background:rgba(207,152,42,.08)}
.mg-slot{width:34px;height:34px;border-radius:8px;border:1px dashed transparent;display:inline-flex;align-items:center;justify-content:center;transition:.1s;position:relative}
.mg-slot:hover{border-color:var(--ink-faint);background:var(--paper)}
.mg-empty{color:transparent;font-size:16px;font-weight:400}
.mg-slot:hover .mg-empty{color:var(--ink-faint)}
.mg-sh{display:inline-flex;align-items:center;justify-content:center;width:28px;height:24px;border-radius:7px;border:1px solid;font-size:11px;font-weight:800;letter-spacing:-.01em}
.mg-sh.done{box-shadow:inset 0 0 0 1.5px currentColor}
.mg-sh.prog{animation:mgpulse 1.6s ease-in-out infinite}
@keyframes mgpulse{0%,100%{opacity:1}50%{opacity:.55}}
.mg-abs{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:24px;padding:0 4px;border-radius:7px;border:1px solid;font-size:10.5px;font-weight:800}

.mgrid tfoot td{border-top:1.5px solid var(--line);border-bottom:none}
.mg-cov .mg-emp{font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-faint);font-weight:700;background:var(--cream)}
.cov-cell{font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--sage-dark)}
.cov-cell.off{color:var(--ink-faint)}
.mg-cell.cov{padding:7px 2px;background:var(--cream)}
.mg-cell.cov.bad .cov-cell{color:var(--late)}
.mg-cell.cov.bad{background:var(--late-tint)}
.mg-cell.cov.zero{background:repeating-linear-gradient(135deg,transparent,transparent 4px,rgba(176,171,160,.12) 4px,rgba(176,171,160,.12) 8px)}

.pop-sect{font-size:10px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint);padding:9px 10px 5px;margin-top:2px}
.shift-pop{max-height:none}

/* toast */
.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);z-index:90;background:var(--ink);color:#fff;padding:13px 20px;border-radius:12px;box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:10px;font-size:14px;font-weight:500;max-width:560px;animation:toastin .3s cubic-bezier(.2,.9,.3,1)}
.toast svg{color:#9FCB9C;flex:none}
@keyframes toastin{from{opacity:0;transform:translate(-50%,14px)}to{opacity:1;transform:translate(-50%,0)}}

/* ===========================================================
   Nástenný mesačný kalendár (jeden zamestnanec)
   =========================================================== */
.mcal{--gap:7px}
.mcal-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--gap);margin-bottom:8px}
.mcal-dow>div{text-align:center;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);padding-bottom:2px}
.mcal-dow>div.we{color:var(--gold)}
.mcal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--gap)}
.mc-cell{min-height:78px;border:1px solid var(--line);border-radius:10px;background:var(--paper);padding:7px 8px;display:flex;flex-direction:column;gap:5px}
.mc-cell.empty{border:none;background:transparent}
.mc-cell.weekend{background:var(--cream)}
.mc-cell.holiday{background:var(--gold-tint);border-color:#EBD9AE}
.mc-cell.today{border-color:var(--orange);box-shadow:0 0 0 1px var(--orange)}
.mc-num{display:flex;align-items:center;justify-content:space-between;font-family:var(--serif);font-size:15px;font-weight:700}
.mc-cell.today .mc-num{color:var(--orange)}
.mc-hol{font-family:var(--sans);font-size:9px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#A8761A}
.mc-shift{border-left:3px solid;background:var(--cream);border-radius:6px;padding:4px 7px;flex:1;display:flex;flex-direction:column;gap:1px;justify-content:center}
.mc-shift.planned{background:repeating-linear-gradient(135deg,var(--cream),var(--cream) 5px,var(--cream-2) 5px,var(--cream-2) 10px)}
.mc-shift-name{font-size:11.5px;font-weight:700;line-height:1.1}
.mc-shift-time{font-size:10px;color:var(--ink-soft)}
.mc-shift-h{font-size:11px;font-weight:800;color:var(--sage-dark);margin-top:1px}
.mc-shift-h.work{color:var(--orange)}
.mc-shift-h.plan{color:var(--ink-faint);font-weight:600}
.mc-late{color:var(--late);margin-left:2px}
.mc-abs{border:1px solid;border-radius:6px;padding:4px 7px;flex:1;display:flex;flex-direction:column;justify-content:center;gap:0}
.mc-abs b{font-size:13px;font-weight:800;line-height:1}
.mc-abs span{font-size:10px;font-weight:600;opacity:.85;margin-top:1px}

.emp-cal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 8px}
.seg.sm button{padding:6px 11px;font-size:12.5px;display:inline-flex;align-items:center;gap:5px}
.seg.sm svg{width:14px;height:14px}
