/* ==========================================================================
   cv.css — Ján Halanda · Online CV (samostatný, bez závislostí)
   Design system "Control Panel" · HTML5 + CSS3, žiadny preprocesor
   ========================================================================== */

:root {
  --paper:#F3F5F4; --ink:#0E1F19; --ink-60:#41534b; --panel:#FFFFFF;
  --signal:#0E8A5F; --signal-dark:#0A6B4A; --signal-soft:#E3F1EA;
  --amber:#E8A13C; --line:#C7D1CB; --line-soft:#DFE6E2;
  --font-display:"Archivo",system-ui,sans-serif;
  --font-body:"IBM Plex Sans",system-ui,sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,monospace;
  --radius:12px; --container:1160px; --nav-h:68px;
  --shadow-card:0 1px 2px rgba(14,31,25,.04), 0 8px 24px -12px rgba(14,31,25,.10);
  --shadow-lift:0 2px 4px rgba(14,31,25,.05), 0 22px 44px -16px rgba(14,31,25,.20);
  --spring:linear(0,.084 5.9%,.291 11.9%,.559 18.2%,.817 24.6%,1.006 31.4%,1.079 38.2%,1.098 42.6%,1.091 47.5%,1.014 63.8%,.998 80.6%,1);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-h) + 74px)}
body{
  font-family:var(--font-body);font-size:1.0625rem;line-height:1.68;color:var(--ink);
  background-color:var(--paper);
  background-image:linear-gradient(rgba(14,138,95,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(14,138,95,.045) 1px,transparent 1px);
  background-size:32px 32px;-webkit-font-smoothing:antialiased;
}
::selection{background:var(--signal);color:#fff}
#bgCircuit{position:fixed;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}
.container{max-width:var(--container);margin-inline:auto;padding-inline:24px}
.container--narrow{max-width:860px}
.mono{font-family:var(--font-mono)}
h1,h2,h3{font-family:var(--font-display);line-height:1.1;letter-spacing:-.015em;text-wrap:balance}
h1{font-size:clamp(2.1rem,5vw,3.5rem);font-weight:850}
h1 em{font-style:normal;color:var(--signal-dark);background:linear-gradient(transparent 68%,rgba(232,161,60,.38) 68%)}
h2{font-size:clamp(1.6rem,3.4vw,2.4rem);font-weight:760;margin-bottom:.5em}
h3{font-size:1.2rem;font-weight:650;margin-bottom:.45em}
a{color:var(--signal-dark);text-underline-offset:3px}
a:hover{color:var(--signal)}
:focus-visible{outline:2px solid var(--signal);outline-offset:3px;border-radius:3px}
.eyebrow{display:flex;align-items:center;gap:14px;font-size:.78rem;letter-spacing:.16em;color:var(--signal-dark);margin-bottom:16px;font-family:var(--font-mono)}
.eyebrow::after{content:"";flex:0 1 180px;height:7px;background-image:repeating-linear-gradient(90deg,var(--line) 0 1px,transparent 1px 12px);border-bottom:1px solid var(--line)}
.section{padding:96px 0}
.section--alt{background:rgba(255,255,255,.72);border-block:1px solid var(--line)}
.section__lead{max-width:660px;color:var(--ink-60);margin-bottom:44px}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:.92rem;padding:14px 26px;border-radius:var(--radius);text-decoration:none;border:1.5px solid var(--ink);cursor:pointer;transition:transform .16s ease,box-shadow .16s ease,background .16s ease,color .16s ease}
.btn--primary{background:var(--signal);border-color:var(--signal);color:#fff;box-shadow:0 4px 14px -4px rgba(14,138,95,.45)}
.btn--primary:hover{background:var(--signal-dark);color:#fff;transform:translateY(-2px)}
.btn--ghost{color:var(--ink);background:rgba(255,255,255,.6)}
.btn--ghost:hover{background:var(--ink);color:var(--paper)}

/* LEDs */
.led{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--line);margin-right:6px}
.led--on{background:var(--signal);box-shadow:0 0 7px rgba(14,138,95,.8)}
.led--pulse{background:var(--amber);animation:pulse 1.4s ease-in-out infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(232,161,60,.55)}50%{box-shadow:0 0 0 6px rgba(232,161,60,0)}}

/* NAV */
.nav{position:fixed;inset:0 0 auto 0;z-index:100;height:var(--nav-h);background:rgba(243,245,244,.88);backdrop-filter:blur(12px) saturate(1.4);border-bottom:1px solid var(--line)}
.nav__progress{position:absolute;bottom:-1px;left:0;height:2px;width:0;background:linear-gradient(90deg,var(--signal),var(--amber))}
.nav__inner{height:100%;display:flex;align-items:center;justify-content:space-between;gap:20px}
.nav__logo{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--ink)}
.nav__led{width:10px;height:10px;border-radius:50%;background:var(--signal);box-shadow:0 0 8px rgba(14,138,95,.8)}
.nav__name{font-family:var(--font-display);font-weight:800;letter-spacing:.04em;font-size:.98rem}
.nav__tag{font-size:.72rem;color:var(--ink-60)}
.nav__links{display:flex;align-items:center;gap:24px}
.nav__links a{font-family:var(--font-mono);font-size:.86rem;text-decoration:none;color:var(--ink);padding:6px 2px;border-bottom:2px solid transparent}
.nav__links a:hover,.nav__links a.is-active{border-bottom-color:var(--signal);color:var(--signal-dark)}
.nav__cta{background:var(--ink);color:var(--paper)!important;padding:9px 18px!important;border-radius:var(--radius);border-bottom:none!important}
.nav__cta:hover{background:var(--signal)}
.nav__burger{display:none;background:none;border:0;width:42px;height:42px;cursor:pointer}
.nav__burger span{display:block;width:22px;height:2px;background:var(--ink);margin:5px auto;transition:transform .25s,opacity .25s}

/* Reveal */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .65s ease,transform .65s ease}
.reveal.is-visible{opacity:1;transform:none}

/* HERO */
.cvhero{position:relative;padding:calc(var(--nav-h) + 60px) 0 68px}
.cvhero__grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr);gap:48px;align-items:center}
.cvhero__lead{margin:18px 0 30px;max-width:620px;color:var(--ink-60);font-size:1.05rem}
.cvhero__actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.fxtoggle{display:inline-flex;align-items:center;gap:8px;background:var(--panel);border:1.5px solid var(--line);border-radius:var(--radius);padding:12px 18px;font-size:.74rem;letter-spacing:.04em;color:var(--ink-60);cursor:pointer;font-family:var(--font-mono);transition:border-color .15s,color .15s,background .15s}
.fxtoggle:hover{border-color:var(--signal);color:var(--signal-dark)}
.fxtoggle[aria-pressed="true"]{border-color:var(--signal);background:var(--signal-soft);color:var(--signal-dark)}
.fxtoggle b{color:inherit}

/* STATUS PANEL */
.statuspanel{position:relative;background:linear-gradient(160deg,#12271F 0%,var(--ink) 55%,#0A1712 100%);color:#DCEDE4;border-radius:16px;padding:24px 26px 26px;box-shadow:0 30px 70px -22px rgba(14,31,25,.55),inset 0 1px 0 rgba(220,237,228,.14);border:1px solid rgba(220,237,228,.12);overflow:hidden}
.statuspanel::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 42%,rgba(220,237,228,.06) 50%,transparent 58%);transform:translateX(-100%);animation:sheen 7s ease-in-out infinite;pointer-events:none}
@keyframes sheen{0%,60%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
.statuspanel__head{display:flex;justify-content:space-between;font-size:.74rem;letter-spacing:.12em;color:#8FB3A3;border-bottom:1px solid rgba(220,237,228,.14);padding-bottom:12px;margin-bottom:14px}
.statuspanel__clock::after{content:"▌";color:var(--signal);animation:cursor 1.1s step-end infinite;margin-left:2px}
@keyframes cursor{50%{opacity:0}}
.statuspanel__rows{list-style:none;font-size:.8rem}
.statuspanel__rows li{display:flex;align-items:center;padding:8px 0;letter-spacing:.03em;border-bottom:1px dashed rgba(220,237,228,.08)}
.statuspanel__rows li:last-child{border-bottom:none}
.statuspanel__rows b{margin-left:auto;color:#fff;font-weight:500}
.statuspanel__metrics{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:18px;padding-top:18px;border-top:1px solid rgba(220,237,228,.14)}
.statuspanel__metrics div{text-align:center}
.metric{font-family:var(--font-display);font-size:1.6rem;font-weight:820;color:var(--amber);display:block;font-variant-numeric:tabular-nums}
.statuspanel__metrics small{font-size:.68rem;color:#8FB3A3;line-height:1.3;display:block;margin-top:3px}

/* CHART */
.cvchart{position:relative;background:var(--panel);border:1px solid var(--line-soft);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:20px 20px 8px;touch-action:pan-y}
.cvchart svg{width:100%;height:auto;display:block;overflow:visible}
#cvChartDots circle{fill:var(--panel);stroke:var(--ink-60);stroke-width:1.6;cursor:pointer;transition:r .15s ease,stroke .15s ease,fill .15s ease}
#cvChartDots circle:hover,#cvChartDots circle.is-active{stroke:var(--amber);fill:var(--amber)}
#cvChartPlayhead{filter:drop-shadow(0 0 5px rgba(232,161,60,.85));cursor:grab}
#cvChartPlayhead:active{cursor:grabbing}
.cvchart__years{display:flex;justify-content:space-between;font-size:.7rem;color:var(--ink-60);letter-spacing:.08em;padding:6px 2px}
.cvchart__tip{position:absolute;pointer-events:none;background:var(--ink);color:#ECF5F0;font-family:var(--font-mono);font-size:.74rem;line-height:1.4;padding:8px 12px;border-radius:8px;max-width:230px;z-index:5;transform:translate(-50%,-118%);box-shadow:0 10px 24px -8px rgba(14,31,25,.45)}
.cvchart__tip b{display:block;font-family:var(--font-body);font-size:.8rem;margin-bottom:2px;color:#fff}
.cvchart__tip::after{content:"";position:absolute;left:50%;top:100%;transform:translateX(-50%);border:6px solid transparent;border-top-color:var(--ink)}

/* FILTERS */
.cvfilters-wrap{padding:16px 0;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border-block:1px solid var(--line);position:sticky;top:var(--nav-h);z-index:40}
.cvfilters{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.cvfilter{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.06em;padding:8px 14px;border-radius:999px;border:1.5px solid var(--line);background:var(--paper);color:var(--ink-60);cursor:pointer;transition:border-color .15s,color .15s,background .15s}
.cvfilter__dot{width:8px;height:8px;border-radius:50%;background:currentColor}
.cvfilter:hover{border-color:var(--ink-60);color:var(--ink)}
.cvfilter.is-active{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.cvfilter--all.is-active{background:var(--signal);border-color:var(--signal)}

/* TIMELINE */
/* ==========================================================================
   KARIÉRNY REGISTER (sekcia 02)
   Jeden stĺpec, kompaktné riadky, zoskupené po obdobiach. Striedavý
   zig-zag tu bol schválne zrušený: pri 27 položkách zdvojnásoboval pohyb
   očí a rozbíjal chronologické čítanie. Rovnaké rozloženie na mobile aj
   na desktope — mení sa len hustota.
   ========================================================================== */
.cvtimeline-wrap{position:relative;display:flex;align-items:flex-start;gap:0;margin-top:34px}
.cvtimeline{flex:1;min-width:0;list-style:none;position:relative}

/* ---------- hlavička obdobia ---------- */
.cvgrp{list-style:none;margin-bottom:28px}
.cvgrp[hidden]{display:none}
.cvgrp__head{
  display:flex;align-items:baseline;gap:12px;
  padding:0 0 9px;margin-bottom:12px;
  border-bottom:1px solid var(--line);
  position:sticky;top:calc(var(--nav-h) + var(--filters-h, 58px));z-index:12;
  background:linear-gradient(var(--paper) 78%,transparent);
}
.section--alt .cvgrp__head{background:linear-gradient(#EDF1EF 78%,transparent)}
.cvgrp__years{font-size:.68rem;letter-spacing:.1em;color:var(--signal-dark);flex:none}
.cvgrp__label{
  font-family:var(--font-display);font-size:.98rem;font-weight:700;
  letter-spacing:-.01em;margin:0;color:var(--ink);line-height:1.2;
}
.cvgrp__count{margin-left:auto;font-size:.66rem;color:var(--ink-60);flex:none}
.cvgrp__count b{color:var(--ink);font-weight:500}
.cvgrp__items{list-style:none;position:relative;padding-left:26px}

/* zvislá os vedie len vnútri obdobia */
.cvgrp__items::before{
  content:"";position:absolute;left:6px;top:6px;bottom:6px;width:2px;
  background:var(--line);border-radius:2px;
}

/* ---------- riadok ---------- */
.cvrow{position:relative;opacity:0;transform:translateY(10px);transition:opacity .45s ease,transform .45s ease}
.cvrow.is-visible{opacity:1;transform:none}
.cvrow[hidden]{display:none}

.cvrow__node{
  position:absolute;left:-24px;top:19px;
  width:11px;height:11px;border-radius:50%;
  background:var(--paper);border:2px solid var(--track-color,var(--signal));
  z-index:2;transition:transform .25s ease,background .25s ease,box-shadow .25s ease;
}
.cvrow.is-reached .cvrow__node{background:var(--track-color,var(--signal));box-shadow:0 0 0 3px rgba(14,138,95,.12)}
.cvrow--key .cvrow__node{width:14px;height:14px;left:-25px;top:17px;border-width:3px}

.cvrow__d{border-bottom:1px solid var(--line-soft)}
.cvrow:last-child .cvrow__d{border-bottom:0}

.cvrow__sum{
  list-style:none;cursor:pointer;user-select:none;
  display:grid;grid-template-columns:88px 1fr auto 26px;
  align-items:center;gap:14px;
  padding:11px 4px 11px 0;
  border-radius:8px;
  transition:background .15s ease;
}
.cvrow__sum::-webkit-details-marker{display:none}
.cvrow__sum:hover{background:rgba(14,138,95,.05)}
.cvrow__d[open] .cvrow__sum{background:rgba(14,138,95,.06)}
.cvrow__sum:focus-visible{outline:2px solid var(--signal);outline-offset:2px}

.cvrow__years{font-size:.7rem;letter-spacing:.03em;color:var(--track-color,var(--ink-60));font-variant-numeric:tabular-nums;white-space:nowrap}
.cvrow__text{min-width:0}
.cvrow__title{
  display:block;font-family:var(--font-display);font-size:.96rem;font-weight:650;
  line-height:1.3;color:var(--ink);
}
.cvrow--key .cvrow__title{font-weight:800}
.cvrow__org{display:block;font-size:.78rem;color:var(--ink-60);line-height:1.35;margin-top:1px}

.cvrow__tag{
  font-size:.6rem;letter-spacing:.08em;white-space:nowrap;
  padding:3px 9px;border-radius:999px;
  color:var(--track-color,var(--ink-60));
  background:color-mix(in srgb,var(--track-color,#0E8A5F) 10%,transparent);
  border:1px solid color-mix(in srgb,var(--track-color,#0E8A5F) 26%,transparent);
}
@supports not (color:color-mix(in srgb,red 10%,transparent)){
  .cvrow__tag{background:var(--paper);border-color:var(--line)}
}

.cvrow__toggle{
  width:24px;height:24px;display:grid;place-items:center;
  font-size:1rem;line-height:1;color:var(--track-color,var(--signal));
  border:1px solid var(--line);border-radius:7px;background:var(--panel);
  transition:transform .25s ease,background .18s ease,color .18s ease;
}
.cvrow__d[open] .cvrow__toggle{transform:rotate(45deg);background:var(--track-color,var(--signal));color:#fff;border-color:transparent}

/* ---------- rozbalený detail ---------- */
.cvrow__body{
  padding:4px 4px 20px 0;
  animation:cvBodyIn .28s ease both;
}
.cvrow__meta{font-size:.64rem;letter-spacing:.08em;color:var(--ink-60);margin-bottom:10px}
.cvrow__key{color:var(--amber);font-weight:500}

/* ---------- počítadlo pri filtroch ---------- */
.cvfilters__count{
  margin-left:auto;align-self:center;font-size:.66rem;letter-spacing:.08em;
  color:var(--ink-60);white-space:nowrap;flex:none;
}
.cvfilter:disabled{opacity:.32;cursor:not-allowed}
.cvfilter__n{opacity:.6;font-size:.62rem}

.cv-card__text{color:var(--ink-60);font-size:.92rem;margin-bottom:14px}
.cv-card__list{list-style:none;display:grid;gap:8px;margin-bottom:16px}
.cv-card__list li{position:relative;padding-left:18px;font-size:.88rem;line-height:1.5}
.cv-card__list li::before{content:"▸";position:absolute;left:0;color:var(--track-color,var(--signal))}
.cv-card__metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:9px;margin-bottom:14px}
.cv-card__metric{text-align:center;background:var(--paper);border:1px solid var(--line-soft);border-radius:8px;padding:10px 6px}
.cv-card__metric b{display:block;font-family:var(--font-display);font-size:1.2rem;font-weight:800;color:var(--track-color,var(--signal-dark));font-variant-numeric:tabular-nums}
.cv-card__metric span{font-size:.64rem;color:var(--ink-60);line-height:1.25;display:block;margin-top:2px}
.cv-card__stack{list-style:none;display:flex;flex-wrap:wrap;gap:6px}
.cv-card__stack li{font-size:.66rem;border:1px solid var(--line-soft);border-radius:5px;padding:3px 8px;color:var(--ink-60);background:var(--paper);font-family:var(--font-mono)}
@keyframes cvBodyIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.cvrow__d[open] .cvrow__body{animation:cvBodyIn .28s ease both}

/* SCRUBBER */
.cvscrub[hidden]{display:none}
.cvscrub{width:16px;position:sticky;top:calc(var(--nav-h) + 110px);align-self:start;height:62vh;margin-left:14px;flex:0 0 16px}
.cvscrub::before{content:"";position:absolute;left:7px;top:0;bottom:0;width:2px;background:var(--line)}
.cvscrub__tick{position:absolute;left:4px;width:8px;height:8px;padding:0;border-radius:50%;background:var(--line);border:2px solid var(--paper);cursor:pointer;transform:translateY(-50%);transition:background .15s,transform .15s}
.cvscrub__tick:hover{transform:translateY(-50%) scale(1.6)}
.cvscrub__tick.is-active{background:var(--amber);box-shadow:0 0 7px rgba(232,161,60,.8);transform:translateY(-50%) scale(1.4)}

/* CERTS */
.certgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:14px;margin-top:36px}
.certbadge{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line-soft);border-radius:10px;padding:14px 16px;transition:border-color .15s,transform .15s,box-shadow .15s}
.certbadge:hover{transform:translateY(-3px);border-color:var(--signal);box-shadow:var(--shadow-card)}
.certbadge--highlight{border-left:3px solid var(--amber)}
.certbadge__icon{flex:0 0 auto;width:34px;height:34px;border-radius:8px;display:grid;place-items:center;background:var(--signal-soft);color:var(--signal-dark);font-family:var(--font-mono);font-size:.9rem}
.certbadge--highlight .certbadge__icon{background:#FBEFDA;color:#B7791F}
.certbadge__name{font-size:.86rem;font-weight:600;line-height:1.3}
.certbadge__meta{font-size:.7rem;color:var(--ink-60);font-family:var(--font-mono);margin-top:2px}

/* SKILLS */
.skillgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px;margin-top:36px}
.skillcard{background:var(--paper);border:1px solid var(--line);border-left:3px solid var(--track-color,var(--signal));border-radius:var(--radius);padding:22px}
.skillcard h3{font-size:.98rem;margin-bottom:14px}
.skillcard ul{list-style:none;display:flex;flex-wrap:wrap;gap:7px}
.skillcard li{font-size:.76rem;padding:5px 11px;border-radius:999px;background:var(--panel);border:1px solid var(--line-soft);color:var(--ink-60)}

/* LANGUAGES */
.langlist{display:grid;gap:22px;margin-top:30px}
.langrow{display:grid;grid-template-columns:140px 1fr 48px;align-items:center;gap:16px}
.langrow__name{font-weight:600;font-size:.95rem}
.langbar{height:9px;border-radius:5px;background:var(--line-soft);overflow:hidden}
.langbar__fill{height:100%;border-radius:5px;background:linear-gradient(90deg,var(--signal),var(--amber));width:0;transition:width 1.1s cubic-bezier(.2,.8,.2,1)}
.langrow__cefr{font-family:var(--font-mono);font-weight:700;color:var(--signal-dark);text-align:right}
.langrow__level{grid-column:1/-1;font-size:.78rem;color:var(--ink-60);margin-top:-14px}

/* CTA + FOOTER */
.cvcta{display:flex;flex-wrap:wrap;gap:24px;align-items:center;justify-content:space-between}
.cvcta__actions{display:flex;gap:12px;flex-wrap:wrap}
.footer{background:var(--ink);color:#8FB3A3;padding:34px 0}
.footer__inner{display:flex;flex-wrap:wrap;gap:14px 30px;align-items:center;justify-content:space-between;font-size:.78rem}
.footer a{color:#DCEDE4}
.footer__priv a{text-decoration:none;border-bottom:1px solid rgba(220,237,228,.35)}
.footer__priv a:hover{color:#fff;border-bottom-color:var(--signal)}
.footer__top{text-decoration:none;border:1px solid rgba(220,237,228,.3);padding:8px 14px;border-radius:8px}
.footer__top:hover{background:var(--signal);color:#fff;border-color:var(--signal)}

/* RESPONSIVE */
@media (max-width:980px){
  .cvhero__grid{grid-template-columns:1fr;gap:36px}
  .cvscrub{display:none}
  .section{padding:72px 0}
}
@media (max-width:720px){
  .nav__links{position:fixed;top:var(--nav-h);left:0;right:0;flex-direction:column;background:var(--panel);border-bottom:1px solid var(--line);padding:20px 24px 26px;gap:18px;transform:translateY(-140%);transition:transform .3s ease}
  .nav__links.is-open{transform:translateY(0)}
  .nav__burger{display:block}
  .nav__burger.is-open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .nav__burger.is-open span:nth-child(2){opacity:0}
  .nav__burger.is-open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .nav__tag{display:none}
  /* Register: riadok sa zlomí na dva — rok a oblasť hore, názov pod tým.
     Trojstĺpcová mriežka by na 360 px nechala na názov ~120 px. */
  .cvgrp__items{padding-left:22px}
  .cvrow__sum{grid-template-columns:auto 1fr 26px;gap:3px 10px;padding:12px 2px 12px 0}
  .cvrow__years{grid-row:1;grid-column:1}
  .cvrow__tag{grid-row:1;grid-column:2;justify-self:start;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis}
  .cvrow__text{grid-row:2;grid-column:1/3}
  .cvrow__toggle{grid-row:1/3;grid-column:3;align-self:center}
  .cvrow__node{left:-20px;top:16px}
  .cvrow--key .cvrow__node{left:-21px;top:14px}
  .cvrow__title{font-size:.92rem}
  .cvgrp__label{font-size:.9rem}
  /* Filtre zabrali na telefóne štyri riadky a sedeli sticky pod menu.
     Teraz je to jeden riadok, ktorý sa posúva do strany. */
  .cvfilters{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-bottom:2px}
  .cvfilters::-webkit-scrollbar{display:none}
  .cvfilter{flex:none}
  .cvfilters__count{position:sticky;right:0;padding-left:10px;background:linear-gradient(90deg,transparent,var(--panel) 30%)}
  .langrow{grid-template-columns:104px 1fr 40px}
}

/* PRINT */
@media print{
  #bgCircuit,.nav,.cvfilters-wrap,.cvscrub,.fxtoggle,#printBtn,.footer__top,.cvcta,.cvchart__tip{display:none!important}
  body{background:#fff!important;background-image:none!important;font-size:10.5pt}
  .section{padding:18px 0}
  .section--alt{background:#fff}
  .statuspanel{background:#fff!important;color:#000;border:1px solid #bbb;box-shadow:none}
  .statuspanel__rows b,.metric{color:#000}
  .statuspanel__metrics small,.statuspanel__head{color:#444}
  /* Do tlače ide register vždy celý a rozbalený, aj keď je nastavený filter */
  .cvrow{opacity:1!important;transform:none!important;page-break-inside:avoid;display:list-item!important}
  .cvgrp{display:list-item!important}
  .cvgrp__head{position:static;background:none;border-bottom:1px solid #999}
  .cvrow__toggle,.cvfilters__count{display:none}
  .cvrow__sum{background:none!important;padding-bottom:4px}
  .cvrow__body{display:block!important;animation:none}
}

/* REDUCED MOTION */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .reveal,.cvrow{opacity:1!important;transform:none!important;transition:none}
  .statuspanel::after{display:none}
  .led--pulse,.statuspanel__clock::after{animation:none}
  *{transition-duration:.01ms!important;animation-duration:.01ms!important}
}

/* ================= REZERVÁCIA HOVORU ================= */
.calendar-modal{position:fixed;inset:0;background:rgba(14,31,25,.62);backdrop-filter:blur(3px);z-index:200;display:none;align-items:center;justify-content:center;padding:20px}
.calendar-modal.is-open{display:flex;animation:calFade .22s ease}
.calendar-modal[hidden]{display:none}
@keyframes calFade{from{opacity:0}to{opacity:1}}
.calendar-box{background:var(--panel);border-radius:16px;padding:26px;box-shadow:0 30px 70px -22px rgba(14,31,25,.55);width:min(460px,100%);max-height:88vh;overflow-y:auto;animation:calUp .26s ease}
@keyframes calUp{from{transform:translateY(16px);opacity:0}to{transform:none;opacity:1}}
.calendar-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}
.calendar-title{font-family:var(--font-display);font-size:1.25rem;font-weight:760}
.calendar-close{background:none;border:0;font-size:1.1rem;cursor:pointer;color:var(--ink-60);width:34px;height:34px;border-radius:8px;display:grid;place-items:center}
.calendar-close:hover{background:var(--paper);color:var(--ink)}
.calendar-hint{font-size:.72rem;letter-spacing:.05em;color:var(--ink-60);margin:2px 0 16px}

.js-warning{background:rgba(196,84,75,.09);border:1px solid #C4544B;border-radius:10px;padding:13px 15px;font-size:.86rem;margin-bottom:16px}
.js-check{display:flex;align-items:center;gap:4px;font-size:.74rem;font-family:var(--font-mono);letter-spacing:.04em;color:var(--signal-dark);background:var(--signal-soft);border-radius:8px;padding:8px 12px;margin-bottom:14px}
.js-check[hidden]{display:none}

.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:20px}
.calendar-weekday{text-align:center;font-family:var(--font-mono);font-size:.68rem;letter-spacing:.06em;color:var(--ink-60);padding:4px 0}
.calendar-day{aspect-ratio:1;display:grid;place-items:center;border:1.5px solid var(--line);border-radius:9px;background:var(--paper);cursor:pointer;font-size:.85rem;font-weight:500;font-family:var(--font-body);color:var(--ink);transition:border-color .15s,background .15s,transform .15s}
.calendar-day:hover:not(:disabled){border-color:var(--signal);transform:translateY(-2px)}
.calendar-day.is-today{border-color:var(--signal);color:var(--signal-dark);font-weight:700}
.calendar-day.is-selected{background:var(--signal);color:#fff;border-color:var(--signal)}
.calendar-day:disabled,.calendar-day.is-past{opacity:.3;cursor:not-allowed;background:transparent}
.calendar-day.is-blank{border:0;background:none;pointer-events:none}

.calendar-times{margin-bottom:16px}
.calendar-times-label{display:block;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.06em;color:var(--ink-60);margin-bottom:9px}
.calendar-timegrid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;max-height:190px;overflow-y:auto}
.calendar-time{padding:10px 6px;border:1.5px solid var(--line);border-radius:8px;background:var(--paper);cursor:pointer;font-family:var(--font-mono);font-size:.8rem;color:var(--ink);transition:border-color .15s,background .15s,transform .15s}
.calendar-time:hover{border-color:var(--signal);transform:translateY(-2px)}
.calendar-time.is-selected{background:var(--signal);color:#fff;border-color:var(--signal)}
.calendar-empty{grid-column:1/-1;font-size:.84rem;color:var(--ink-60);padding:10px 2px}

.calendar-chosen{font-size:.78rem;color:var(--signal-dark);background:var(--signal-soft);border-radius:8px;padding:10px 12px;margin-bottom:14px}
.calendar-chosen[hidden]{display:none}
.calendar-error{display:none;color:#9B3D35;font-size:.83rem;background:rgba(196,84,75,.09);border-radius:8px;padding:11px 13px;margin-bottom:14px}
.calendar-error.is-visible{display:block}
.calendar-actions{display:flex;gap:10px}
.calendar-actions .btn{flex:1;justify-content:center;padding:13px 18px}
.calendar-actions .btn:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}

@media (max-width:420px){
  .calendar-box{padding:20px}
  .calendar-timegrid{grid-template-columns:repeat(3,1fr)}
}
@media print{.calendar-modal{display:none!important}}

/* ---------- polia vo formulároch modálov (V4) ---------- */
.calendar-fields{display:grid;gap:10px;margin-bottom:14px}
.calendar-fields label{display:block;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.08em;color:var(--ink-60)}
.calendar-fields input,.calendar-fields textarea{
  width:100%;margin-top:5px;padding:9px 11px;border:1px solid var(--line);border-radius:8px;
  background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:.92rem;
  transition:border-color .16s ease,box-shadow .16s ease}
.calendar-fields textarea{resize:vertical;line-height:1.5}
.calendar-fields input:focus,.calendar-fields textarea:focus{
  outline:none;border-color:var(--signal);box-shadow:0 0 0 3px rgba(14,138,95,.18)}
.calendar-fields input:invalid:not(:placeholder-shown){border-color:#C4544B}

/* Honeypot — pole pre robotov. Nesmie sa dať vidieť ani vytabovať. */
.hp-field{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0;pointer-events:none}

/* Stav overenia prostredia (guard.js) */
.js-check[data-jh-status]{font-family:var(--font-mono);font-size:.7rem;color:var(--ink-60);margin-bottom:10px}

/* ==========================================================================
   VÝSLEDKY V ČÍSLACH + ČO HĽADÁM  (v7)

   Dve nové sekcie hneď pod hero. Dovtedy boli najsilnejšie čísla schované
   v rozbaľovacích riadkoch registra a to, akú prácu Ján hľadá, nebolo na
   stránke nikde.
   ========================================================================== */

.cvsig { padding: 56px 0 8px; }

.cvsig__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 14px;
  margin-top: 26px;
  padding: 0;
  list-style: none;
}

.cvsig__item {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 20px 18px;
  border: 1px solid var(--line, #C7D1CB);
  border-left: 3px solid var(--signal, #0E8A5F);
  border-radius: var(--radius, 12px);
  background: var(--panel, #fff);
}

.cvsig__num {
  font-family: var(--font-display, "Archivo", system-ui, sans-serif);
  font-size: clamp(2rem, 4vw, 2.7rem);
  font-weight: 800;
  line-height: 1;
  color: var(--signal-dark, #0A6B4A);
  font-variant-numeric: tabular-nums;
}

.cvsig__label {
  font-size: .92rem;
  line-height: 1.35;
  color: var(--ink, #0E1F19);
}

.cvsig__src {
  margin-top: 6px;
  font-family: var(--font-mono, "IBM Plex Mono", ui-monospace, monospace);
  font-size: .66rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ink-60, #41534b);
  text-decoration: none;
  border-bottom: 1px dotted var(--line, #C7D1CB);
  align-self: flex-start;
}
.cvsig__src:hover { color: var(--signal-dark, #0A6B4A); border-bottom-color: currentColor; }

/* ---------- čo hľadám ---------- */

.cvask { padding: 40px 0 8px; }

.cvask__inner {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) 2fr;
  gap: 28px;
  align-items: start;
  padding: 26px;
  border: 1px solid var(--line, #C7D1CB);
  border-radius: var(--radius, 12px);
  background: var(--signal-soft, #E3F1EA);
}

.cvask__lead { margin-top: 8px; font-size: .94rem; color: var(--ink-60, #41534b); }

.cvask__grid { display: grid; gap: 2px; margin: 0; }

.cvask__row {
  display: grid;
  grid-template-columns: 150px 1fr;
  gap: 14px;
  padding: 11px 0;
  border-top: 1px solid rgba(14, 31, 25, .1);
}
.cvask__row:first-child { border-top: 0; }

.cvask__row dt {
  margin: 0;
  font-size: .66rem;
  letter-spacing: .12em;
  color: var(--ink-60, #41534b);
  padding-top: 3px;
}
.cvask__row dd { margin: 0; font-size: .98rem; color: var(--ink, #0E1F19); }

@media (max-width: 720px) {
  .cvask__inner { grid-template-columns: 1fr; gap: 18px; padding: 20px; }
  .cvask__row { grid-template-columns: 1fr; gap: 3px; }
  .cvsig__grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 480px) {
  .cvsig__grid { grid-template-columns: 1fr; }
}

@media print {
  .cvsig__src { display: none; }
  .cvask__inner { background: none; }
}
