/* DENTIM — dochádzkový systém.
   Farby a písmo prevzaté z dentim.eu: námornícka modrá, akcentová modrá,
   krémové logo, svetlé karty. Písmo Plus Jakarta Sans, rovnaké ako web.
   Terminál musí fungovať aj bez siete, preto má všade poctivý systémový záskok. */
:root{
  color-scheme: light;
  /* značka */
  --navy:#0c1a35; --navy-2:#112240; --navy-3:#1a2c4e;
  --modra:#3b6ff6; --modra-tm:#2e61fb; --modra-sv:#90c9f4;
  --krem:#f4f3e1;
  /* svetlá schéma */
  --page:#f2f2ef; --surface:#fff; --surface-2:#f8f8f6; --band:#ececeA;
  --ink:#141b2d; --ink-2:#4a5568; --muted:#667697;
  --line:#e4e4df; --rule:#cdcdc6;
  --zelena:#0f9d58; --cervena:#d64545; --zlta:#e0a30c;
  --r:14px; --r-s:10px;
  --sans:"Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --tien:0 1px 2px rgba(20,27,45,.06), 0 10px 28px -18px rgba(20,27,45,.30);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    color-scheme: dark;
    --page:#0b1832; --surface:#112240; --surface-2:#16294a; --band:#16294a;
    --ink:#f2f4f8; --ink-2:#b9c4d8; --muted:#8496b4;
    --line:#1e3157; --rule:#2a3f6b;
    --modra:#6e9bff; --zelena:#3ec27a; --cervena:#f07070; --zlta:#f0be3c;
    --tien:0 1px 2px rgba(0,0,0,.4), 0 10px 28px -18px rgba(0,0,0,.9);
  }
}
*{box-sizing:border-box}
body{margin:0;background:var(--page);color:var(--ink);font-family:var(--sans);
  font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:var(--modra)}
.mono{font-family:var(--mono);font-size:.93em}
.cisla{font-variant-numeric:tabular-nums}

/* ---------- hlavička so značkou ---------- */
header.top{background:var(--navy);border-bottom:1px solid rgba(244,243,225,.10);position:relative}
.top .in{max-width:1240px;margin:0 auto;padding:0 20px;display:flex;align-items:center;
  gap:20px;flex-wrap:wrap;min-height:64px}
.znacka{display:flex;align-items:center;gap:12px;text-decoration:none;flex:none}
.znacka img{height:27px;width:auto;display:block}
.znacka .pod{color:rgba(244,243,225,.6);font-size:9.5px;letter-spacing:.12em;
  text-transform:uppercase;font-weight:700;border-left:1px solid rgba(244,243,225,.22);
  padding-left:10px;line-height:1.25;white-space:nowrap}
.top nav{display:flex;gap:1px;flex-wrap:wrap;flex:1;justify-content:flex-end}
.top nav a{color:rgba(244,243,225,.72);text-decoration:none;font-size:13.5px;font-weight:500;
  padding:6px 10px;border-radius:999px;white-space:nowrap}
.top nav a:hover{color:var(--krem);background:rgba(244,243,225,.08)}
.top nav a.sel{color:#fff;background:var(--modra)}
.top .odhlas{color:rgba(244,243,225,.6);font-size:13px;text-decoration:none}
.top .odhlas:hover{color:var(--krem)}

main{max-width:1240px;margin:0 auto;padding:30px 20px 90px}
h1{font-size:27px;margin:0 0 4px;letter-spacing:-.02em;font-weight:800}
h2{font-size:18px;margin:30px 0 10px;font-weight:700;letter-spacing:-.01em}
.lede{color:var(--ink-2);font-size:14.5px;margin:0 0 20px;max-width:76ch}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  padding:20px;margin-bottom:16px;box-shadow:var(--tien)}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.spread{display:flex;justify-content:space-between;align-items:baseline;gap:14px;flex-wrap:wrap}

table{border-collapse:collapse;width:100%;font-size:14px}
.tw{overflow-x:auto;-webkit-overflow-scrolling:touch;
  /* Tiene na krajoch napovedia, že tabuľka pokračuje bokom. Bez nich
     človek na mobile netuší, že vpravo je ešte saldo. */
  background:
    linear-gradient(to right, var(--surface) 30%, rgba(255,255,255,0)),
    linear-gradient(to right, rgba(255,255,255,0), var(--surface) 70%) 100% 0,
    radial-gradient(farthest-side at 0 50%, rgba(20,27,45,.16), rgba(20,27,45,0)),
    radial-gradient(farthest-side at 100% 50%, rgba(20,27,45,.16), rgba(20,27,45,0)) 100% 0;
  background-repeat:no-repeat;
  background-size:40px 100%, 40px 100%, 14px 100%, 14px 100%;
  background-attachment:local, local, scroll, scroll}
th,td{text-align:right;padding:9px 11px;border-bottom:1px solid var(--line);white-space:nowrap}
th:first-child,td:first-child{text-align:left}
thead th{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;
  font-weight:700;border-bottom:1px solid var(--rule)}
td,th{font-variant-numeric:tabular-nums}
tbody tr:hover{background:var(--surface-2)}
tfoot td{font-weight:700;border-top:1px solid var(--rule);border-bottom:none}
tr.ticho td:not(.kto){color:var(--muted)}
/* Meno je vždy plné, skupina vedľa neho tichšia — rovnako v každej tabuľke. */
td.kto{font-weight:600;white-space:nowrap}
td.kto small{color:var(--muted);font-weight:400;font-size:12px;margin-left:3px}

input,select,textarea,button{font-family:inherit;font-size:14px}
input,select,textarea{background:var(--surface-2);color:var(--ink);border:1px solid var(--rule);
  border-radius:var(--r-s);padding:8px 10px}
input:focus,select:focus,textarea:focus{outline:2px solid var(--modra);outline-offset:1px;
  border-color:var(--modra)}
label{font-size:12px;color:var(--muted);display:block;margin-bottom:4px;font-weight:600}
.pole{display:flex;flex-direction:column;gap:0}
button,.btn{background:var(--modra);color:#fff;border:none;border-radius:999px;
  padding:9px 18px;cursor:pointer;font-weight:700;text-decoration:none;display:inline-block;
  font-size:14px}
button:hover,.btn:hover{background:var(--modra-tm)}
button.tichy,.btn.tichy{background:transparent;color:var(--ink-2);border:1px solid var(--rule);font-weight:600}
button.tichy:hover,.btn.tichy:hover{background:var(--band);color:var(--ink)}
button.zly{background:var(--cervena)}
button.zly:hover{filter:brightness(.92)}
.znak{display:inline-block;font-size:11px;padding:3px 10px;border-radius:999px;font-weight:700;
  border:1px solid var(--rule);color:var(--ink-2)}
.znak.in{background:rgba(15,157,88,.13);border-color:transparent;color:var(--zelena)}
.znak.out{background:rgba(59,111,246,.13);border-color:transparent;color:var(--modra)}
.znak.zle{background:rgba(214,69,69,.14);border-color:transparent;color:var(--cervena)}
.znak.praca{background:var(--zelena);border-color:transparent;color:#fff}
.znak.rucne{background:rgba(224,163,12,.16);border-color:transparent;color:#8a6100}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .znak.rucne{color:var(--zlta)}}
.vystraha{border-left:3px solid var(--zlta);padding:12px 16px;background:var(--surface);
  border-radius:0 var(--r-s) var(--r-s) 0;margin-bottom:16px;font-size:14px;box-shadow:var(--tien)}
.vystraha.zla{border-left-color:var(--cervena)}
.vystraha.info{border-left-color:var(--modra)}
.len-uzke{display:none}
.mini{font-size:12px;color:var(--muted)}
.kladne{color:var(--zelena)} .zaporne{color:var(--cervena)}
details summary{cursor:pointer;font-size:13px;color:var(--ink-2);font-weight:600}
.psub{font-size:12px;color:var(--muted);margin-top:6px}
.pcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  padding:18px;box-shadow:var(--tien);border-top:3px solid var(--c,var(--modra))}
.pcard .role{font-size:10.5px;color:var(--muted);font-weight:700;
  text-transform:uppercase;letter-spacing:.08em}
.pcard .big{font-family:var(--sans);font-weight:800;font-size:25px;letter-spacing:-.02em}
.split{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:14px;margin-top:16px}

/* ---------- príloha dokladu (fotka z mobilu) ---------- */
.subor{display:flex;gap:12px;align-items:center;padding:12px 14px;border:1.5px dashed var(--rule);
  border-radius:var(--r-s);background:var(--surface-2);cursor:pointer;font-size:14px;font-weight:500;
  color:var(--ink);text-transform:none;letter-spacing:0;margin:0}
.subor:hover{border-color:var(--modra)}
.subor.ma{border-style:solid;border-color:var(--zelena);background:rgba(15,157,88,.07)}
.subor input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.subor .ikona{font-size:22px;line-height:1}
.subor .mini{font-weight:400}
.prilozit{display:inline-block;margin-left:6px}
.prilozit .btn{padding:4px 12px;font-size:12px;cursor:pointer}

/* ---------- dialóg (úprava dňa) ---------- */
dialog.dialog{border:0;border-radius:var(--r);padding:0;width:min(560px,calc(100vw - 24px));
  background:var(--surface);color:var(--ink);box-shadow:0 30px 80px -20px rgba(12,26,53,.5)}
dialog.dialog-siroky{width:min(760px,calc(100vw - 24px))}
dialog.dialog form .row{align-items:flex-start}
details.normy-cas{margin-top:8px}
details.normy-cas summary{cursor:pointer;font-weight:600}
dialog.dialog::backdrop{background:rgba(12,26,53,.55);backdrop-filter:blur(2px)}
dialog.dialog form{padding:20px 22px 18px}
dialog.dialog h3{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:18px 0 8px}
.dhlava{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.dhlava h2{font-size:22px}
.zavri{padding:6px 11px;line-height:1}
.pipzoznam{display:grid;gap:8px}
.pipriadok{display:grid;grid-template-columns:auto auto auto 1fr auto;gap:8px;align-items:center;padding:8px 10px;
  border:1px solid var(--line);border-radius:var(--r-s);background:var(--surface-2)}
.pipriadok .znak{min-width:64px;text-align:center}
.pipriadok input[type=time]{padding:5px 8px;font-variant-numeric:tabular-nums;font-weight:600}
.pipriadok input[name^=dovod]{width:100%;padding:6px 9px;min-width:0}
.pipriadok input[name^=dovod]:disabled{opacity:.45}
.pipzrus{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;margin:0;
  border-radius:999px;border:1px solid var(--rule);color:var(--muted);cursor:pointer;font-size:13px;font-weight:700}
.pipzrus input{position:absolute;opacity:0;width:1px;height:1px}
.pipzrus:hover{color:var(--cervena);border-color:var(--cervena)}
.pipriadok.zrusene{background:rgba(214,69,69,.06);border-color:rgba(214,69,69,.35)}
.pipriadok.zrusene .pipzrus{background:var(--cervena);color:#fff;border-color:var(--cervena)}
.pipriadok.zrusene input[type=time]{text-decoration:line-through;opacity:.5}
.dpata{display:flex;justify-content:flex-end;gap:10px;margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
@media (max-width:560px){.pipriadok{grid-template-columns:auto 1fr auto auto} .pipriadok input[name^=dovod]{grid-column:1/-1;order:10} .dpata button{flex:1}}
button.upravit{padding:5px 12px;font-size:12.5px}

/* ---------- prihlásenie ---------- */
.prihlas{min-height:100dvh;display:flex;align-items:center;justify-content:center;
  padding:24px;background:var(--navy)}
.prihlas .box{width:100%;max-width:400px}
.prihlas .hlava{text-align:center;margin-bottom:22px}
.prihlas .hlava img{height:40px;width:auto}
.prihlas .hlava div{color:rgba(244,243,225,.62);font-size:11.5px;letter-spacing:.16em;
  text-transform:uppercase;font-weight:600;margin-top:12px}
.prihlas .card{background:var(--surface);margin:0}

/* ---------- terminál ---------- */
body.term{background:var(--navy);color:var(--krem);height:100dvh;overflow:hidden;
  -webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
.term-wrap{height:100dvh;display:flex;flex-direction:column;align-items:center;
  justify-content:center;text-align:center;padding:24px;gap:18px}
.term-logo{height:34px;width:auto;opacity:.92}
.term-hodiny{font-variant-numeric:tabular-nums;font-size:clamp(40px,11vw,84px);font-weight:700;
  letter-spacing:-.02em;color:#fff}
.term-datum{color:rgba(244,243,225,.55);font-size:clamp(14px,3.4vw,19px);margin-top:-8px}
.term-vyzva{font-size:clamp(20px,5vw,30px);font-weight:800;margin-top:8px;color:#fff}
.term-mini{color:rgba(244,243,225,.5);font-size:14px}
.term-btn{background:rgba(244,243,225,.08);color:var(--krem);
  border:1px solid rgba(244,243,225,.18);border-radius:999px;
  padding:16px 28px;font-size:18px;font-weight:700;cursor:pointer;font-family:var(--sans)}
.term-btn.hlavny{background:var(--modra);border-color:var(--modra);color:#fff}
.prekryv{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:10px;padding:24px;text-align:center;z-index:50;color:#fff}
.prekryv.in{background:#0f7a44} .prekryv.out{background:#2e61fb}
.prekryv.zle{background:#a32a2a} .prekryv.info{background:#8a6a12}
.prekryv .meno{font-size:clamp(34px,10vw,70px);font-weight:800;letter-spacing:-.03em}
.prekryv .co{font-size:clamp(20px,5.5vw,32px);opacity:.94;font-weight:600}
.prekryv .cas{font-variant-numeric:tabular-nums;font-size:clamp(28px,8vw,52px);font-weight:700}
.mriezka{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;
  width:100%;max-width:760px}
.mriezka button{background:rgba(244,243,225,.08);border:1px solid rgba(244,243,225,.18);
  color:var(--krem);border-radius:var(--r);padding:20px 12px;font-size:19px;font-weight:700}
.pin{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;width:100%;max-width:320px}
.pin button{background:rgba(244,243,225,.08);border:1px solid rgba(244,243,225,.18);
  color:var(--krem);border-radius:var(--r);padding:20px;font-size:26px;font-weight:700}
.pin-body{font-size:34px;letter-spacing:.3em;min-height:44px;color:#fff}
.fronta{position:fixed;left:12px;bottom:12px;background:#8a6a12;color:#fff;
  padding:7px 13px;border-radius:999px;font-size:13px;z-index:60}
.skryte{display:none!important}
/* ---------- úzke obrazovky ---------- */
nav.spodna{display:none}
@media (max-width:760px){
  /* Menu sa nezalamuje do stĺpca — stane sa z neho posuvný pás,
     takže hlavička zaberie jeden riadok namiesto celej obrazovky. */
  /* min-width:0 je nutné — bez neho položka vo flexe nepustí obsah pod svoju
     prirodzenú šírku a posuvný pás by roztiahol celú stránku. */
  .top .in{flex-direction:column;align-items:stretch;gap:0;padding:12px 0 0;
    min-height:0;min-width:0;max-width:100%}
  .znacka{padding:0 16px}
  .znacka img{height:24px}
  .top .odhlas{order:2;margin-left:auto;padding:0 16px;white-space:nowrap}
  .top .in{flex-direction:row;flex-wrap:wrap;align-items:center}
  .top .znacka{order:1}
  .top nav{order:3;flex:0 0 100%;width:100%}
  .len-siroke{display:none}
  .len-uzke{display:initial}
  td.len-uzke,th.len-uzke{display:table-cell}
  .top nav{margin-top:12px;padding:0 16px 12px;gap:4px;
    flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;
    min-width:0;max-width:100%;
    scrollbar-width:none;-webkit-overflow-scrolling:touch;
    -webkit-mask-image:linear-gradient(to right,#000 88%,transparent);
    mask-image:linear-gradient(to right,#000 88%,transparent)}
  .top nav::-webkit-scrollbar{display:none}
  .top nav a{padding:7px 13px}
  main{padding:22px 16px 70px}
  h1{font-size:23px}
  .card{padding:16px 12px}
  .split{grid-template-columns:1fr}
  /* Prepínač dňa/mesiaca na mobile: jeden pás na celú šírku, šípky po krajoch,
     stred sa roztiahne. Predtým to boli tri pilulky voľne pod nadpisom. */
  .spread .datnav{display:grid;grid-template-columns:auto 1fr auto;width:100%;gap:6px;margin:2px 0 6px}
  .spread .datnav .btn{text-align:center;padding:10px 14px}
  .spread .datnav .btn:not(:first-child):not(:last-child){background:var(--surface);color:var(--ink);border:1px solid var(--rule);font-weight:700}
  .spread .datnav .btn:first-child,.spread .datnav .btn:last-child{background:var(--surface);color:var(--modra);border:1px solid var(--rule)}
  /* Formuláre na mobile: každé pole na celú šírku, nech sa nelámu na polovice. */
  .card .row > .pole,
  dialog .row > .pole,
  .card .row:has(> .pole) > button{width:100%;flex:1 1 100%;min-width:0}
  dialog .row > .pole input,dialog .row > .pole select{width:100%!important}
  .card .row > .pole input,
  .card .row > .pole select{width:100%}
  /* Tabuľka neprítomností sa na mobile poskladá do kariet — riadok pod riadkom,
     každá hodnota so svojím popisom. Posúvanie do boku by schovalo práve to
     tlačidlo, kvôli ktorému človek z telefónu prišiel: priložiť doklad. */
  table.stoh{display:block}
  table.stoh thead{display:none}
  table.stoh tbody,table.stoh tr,table.stoh td{display:block;text-align:left;white-space:normal}
  table.stoh tr{border:1px solid var(--line);border-radius:var(--r-s);padding:6px 12px;margin-bottom:10px;background:var(--surface)}
  table.stoh tr:hover{background:var(--surface)}
  table.stoh td{border:0;padding:5px 0;display:flex;gap:10px;align-items:baseline;justify-content:space-between;flex-wrap:wrap}
  table.stoh td::before{content:attr(data-l);color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.07em;font-weight:700;flex:none;min-width:70px}
  table.stoh td:not([data-l])::before{content:none}
  table.stoh td.prazdne{display:none}
  table.stoh td[data-l="Typ"]{font-weight:700;font-size:16px}
  table.stoh .prilozit{margin:4px 0 0;width:100%}
  table.stoh .prilozit .btn{width:100%;text-align:center;padding:9px 12px;font-size:14px}
  table.stoh td[colspan]{display:block}
  table.stoh td.akcie{display:block}
  table.stoh td.akcie .row{flex-direction:column;align-items:stretch;gap:8px;margin-top:4px}
  table.stoh td.akcie form{display:flex;gap:8px}
  table.stoh td.akcie form input{flex:1;width:auto!important}
  table.stoh td.akcie button{padding:10px 14px;flex:1;width:100%;font-size:14px}
  table.stoh td.len-siroke{display:none}

  /* Zamestnanec: hlavička len logo + odhlásiť, menu ako spodná lišta pod palcom. */
  .top.zam nav.horna{display:none}
  .top.zam .in{padding:12px 0;min-height:0}
  .top.zam .znacka .pod{font-size:9px}
  body:has(nav.spodna) main{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
  nav.spodna{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;
    background:var(--navy);border-top:1px solid rgba(244,243,225,.12);
    padding:6px 8px calc(6px + env(safe-area-inset-bottom));
    box-shadow:0 -6px 20px rgba(12,26,53,.18)}
  nav.spodna a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;
    padding:6px 4px;border-radius:12px;color:rgba(244,243,225,.62);text-decoration:none;
    font-size:11px;font-weight:600;letter-spacing:.01em}
  nav.spodna a.sel{color:#fff;background:var(--modra)}
  nav.spodna svg{display:block}
  th,td{padding:9px 8px}
  /* Tabuľka na mobile ide až po okraj karty — každý pixel šírky sa ráta. */
  .card > .tw{margin:0 -6px}
  .card > .tw > table{width:calc(100% - 0px)}
  td.den{white-space:normal;max-width:104px}
  td.den .pozn{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:112px}
  td.cas2 .mini{display:block}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
