/* ==========================================================================
   Vlastné ovládacie prvky formulárov
   Všade, kde by prehliadač kreslil vlastné UI (rozbaľovací zoznam, kalendár,
   číselník, zaškrtávacie pole), sa použije náš vzhľad. Pôvodný prvok vždy
   zostáva v stránke ako zdroj pravdy — bez JavaScriptu funguje natívne.
   ========================================================================== */

:root {
  --ui-dark: var(--dark, #1d1d1b);
  --ui-accent: var(--accent, #8b7355);
  --ui-cream: var(--cream, #f5f0e8);
  --ui-cream-tmava: var(--cream-dark, #e8e0d4);
  --ui-muted: var(--muted, #6b6b6b);
  --ui-line: #e5ded2;
}

/* Skrytý pôvodný prvok — ostáva prístupný pre formulár, nie pre myš. */
.ui-povodny {
  position: absolute;
  opacity: 0;
  pointer-events: none;
  width: 1px; height: 1px;
  margin: 0; padding: 0; border: 0;
}

/* Spoločné pole (tlačidlo, ktoré vyzerá ako input) */
.ui-pole {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  width: 100%;
  padding: .75rem 1rem;
  background: #fff;
  border: 1px solid transparent;
  color: var(--ui-dark);
  font: inherit;
  text-align: left;
  cursor: pointer;
  border-radius: 0;
  transition: border-color .25s ease;
}
.ui-pole:hover { border-color: var(--ui-cream-tmava); }
.ui-pole:focus-visible { outline: 2px solid var(--ui-accent); outline-offset: 2px; }
.je-otvorene > .ui-pole { border-color: var(--ui-accent); }
.ui-pole--prazdne { color: var(--ui-muted); }

.ui-ikona {
  flex: none;
  width: 1rem; height: 1rem;
  fill: none;
  stroke: var(--ui-muted);
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* Vysúvací panel — spoločný pre zoznam aj kalendár */
.ui-panel {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  z-index: 60;
  background: #fff;
  border: 1px solid var(--ui-accent);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-4px);
  /* `visibility` sa prepína skokom, nie plynule: pri otváraní hneď (0s), pri
     zatváraní až po dobehnutí prechodu. Plynulý prechod by nechal panel v tom
     istom tiku ešte `hidden` a prehliadač by doň odmietol presunúť fokus —
     kalendár by sa potom nedal ovládať klávesnicou. */
  transition: opacity .18s ease, transform .18s ease, visibility 0s linear .18s;
}
.je-otvorene > .ui-panel {
  opacity: 1;
  visibility: visible;
  transform: none;
  transition: opacity .18s ease, transform .18s ease, visibility 0s;
}

/* ---------- Rozbaľovací zoznam ---------- */
.vd { position: relative; }
.vd .ui-panel { right: 0; max-height: 16rem; overflow-y: auto; padding: .25rem; margin: 0; list-style: none; }
.vd .ui-ikona { transition: transform .25s ease; }
.vd.je-otvorene .ui-ikona { transform: rotate(180deg); }

.vd__polozka {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .5rem;
  padding: .625rem .875rem;
  font-size: .9375rem;
  cursor: pointer;
}
.vd__polozka:hover,
.vd__polozka.je-zvyraznena { background: var(--ui-cream); }
.vd__polozka.je-vybrana { color: var(--ui-accent); font-weight: 600; }
.vd__polozka.je-vybrana::after {
  content: "";
  flex: none;
  width: .875rem; height: .5rem;
  border-left: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(-45deg) translate(1px, -2px);
}
.vd__polozka[aria-disabled="true"] { opacity: .45; cursor: default; }

/* ---------- Kalendár ---------- */
.vk { position: relative; }
.vk .ui-panel { width: 19.5rem; padding: .875rem; }

.vk__hlavicka {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .5rem;
  margin-bottom: .75rem;
}
.vk__mesiac {
  font-family: var(--font-serif, 'Marcellus', serif);
  font-size: 1rem;
  letter-spacing: .02em;
  text-align: center;
  flex: 1;
}
.vk__krok {
  flex: none;
  width: 2rem; height: 2rem;
  display: grid;
  place-items: center;
  background: none;
  border: 1px solid var(--ui-line);
  cursor: pointer;
  color: var(--ui-dark);
  transition: background .2s ease, border-color .2s ease;
}
.vk__krok:hover:not(:disabled) { background: var(--ui-cream); border-color: var(--ui-cream-tmava); }
.vk__krok:disabled { opacity: .3; cursor: default; }
.vk__krok:focus-visible { outline: 2px solid var(--ui-accent); outline-offset: 1px; }
.vk__krok svg { width: .75rem; height: .75rem; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }

.vk__tyzden, .vk__dni { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.vk__tyzden {
  margin-bottom: .375rem;
  font-size: .625rem;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--ui-muted);
  text-align: center;
}
.vk__den {
  aspect-ratio: 1;
  display: grid;
  place-items: center;
  background: none;
  border: 0;
  font: inherit;
  font-size: .8125rem;
  color: var(--ui-dark);
  cursor: pointer;
  transition: background .15s ease, color .15s ease;
}
.vk__den:hover:not(:disabled) { background: var(--ui-cream); }
.vk__den:focus-visible { outline: 2px solid var(--ui-accent); outline-offset: -2px; }
.vk__den--mimo { color: var(--ui-muted); opacity: .45; }
.vk__den:disabled { opacity: .25; cursor: default; }
.vk__den--dnes { box-shadow: inset 0 0 0 1px var(--ui-cream-tmava); font-weight: 600; }
.vk__den--vybrany { background: var(--ui-accent); color: #fff; }
.vk__den--vybrany:hover { background: var(--ui-accent); }

.vk__spodok {
  display: flex;
  justify-content: space-between;
  gap: .5rem;
  margin-top: .75rem;
  padding-top: .75rem;
  border-top: 1px solid var(--ui-line);
}
.vk__odkaz {
  background: none;
  border: 0;
  padding: .25rem;
  font: inherit;
  font-size: .75rem;
  letter-spacing: .04em;
  color: var(--ui-accent);
  cursor: pointer;
  text-transform: uppercase;
}
.vk__odkaz:hover { color: var(--ui-dark); }

/* ---------- Číselník ---------- */
.vc { display: flex; align-items: stretch; background: #fff; border: 1px solid transparent; transition: border-color .25s ease; }
.vc:hover { border-color: var(--ui-cream-tmava); }
.vc:focus-within { border-color: var(--ui-accent); }
.vc input[type="number"] {
  flex: 1; min-width: 0;
  border: 0; background: none;
  padding: .75rem .5rem;
  text-align: center;
  font: inherit;
  -moz-appearance: textfield;
  appearance: textfield;
}
.vc input[type="number"]::-webkit-outer-spin-button,
.vc input[type="number"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.vc input[type="number"]:focus { outline: none; }
.vc__krok {
  flex: none;
  width: 2.5rem;
  background: none;
  border: 0;
  color: var(--ui-muted);
  font: inherit;
  font-size: 1.125rem;
  line-height: 1;
  cursor: pointer;
  transition: background .2s ease, color .2s ease;
}
.vc__krok:hover:not(:disabled) { background: var(--ui-cream); color: var(--ui-dark); }
.vc__krok:disabled { opacity: .3; cursor: default; }
.vc__krok:focus-visible { outline: 2px solid var(--ui-accent); outline-offset: -2px; }

/* Vstup ponechaný natívny (data-bez-ui) nemá mať systémové šípky —
   v hustej tabuľke by rozťahovali stĺpce. */
input[type="number"][data-bez-ui] {
  -moz-appearance: textfield;
  appearance: textfield;
  text-align: right;
}
input[type="number"][data-bez-ui]::-webkit-outer-spin-button,
input[type="number"][data-bez-ui]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* ---------- Zaškrtávacie pole (bez JS, iba CSS) ---------- */
input[type="checkbox"].ui-zaskrt,
.ui-zaskrt input[type="checkbox"] {
  appearance: none;
  -webkit-appearance: none;
  width: 1.125rem;
  height: 1.125rem;
  flex: none;
  margin: 0;
  padding: 0;
  background: #fff;
  border: 1px solid var(--ui-line);
  cursor: pointer;
  display: inline-grid;
  place-content: center;
  transition: background .2s ease, border-color .2s ease;
}
input[type="checkbox"].ui-zaskrt::before,
.ui-zaskrt input[type="checkbox"]::before {
  content: "";
  width: .625rem; height: .375rem;
  border-left: 2px solid #fff;
  border-bottom: 2px solid #fff;
  transform: rotate(-45deg) scale(0) translate(1px, -1px);
  transition: transform .15s ease;
}
input[type="checkbox"].ui-zaskrt:checked,
.ui-zaskrt input[type="checkbox"]:checked { background: var(--ui-accent); border-color: var(--ui-accent); }
input[type="checkbox"].ui-zaskrt:checked::before,
.ui-zaskrt input[type="checkbox"]:checked::before { transform: rotate(-45deg) scale(1) translate(1px, -1px); }
input[type="checkbox"].ui-zaskrt:hover,
.ui-zaskrt input[type="checkbox"]:hover { border-color: var(--ui-accent); }
input[type="checkbox"].ui-zaskrt:focus-visible,
.ui-zaskrt input[type="checkbox"]:focus-visible { outline: 2px solid var(--ui-accent); outline-offset: 2px; }

@media (prefers-reduced-motion: reduce) {
  .ui-panel, .ui-ikona, .vk__den, .vc__krok,
  input[type="checkbox"].ui-zaskrt::before { transition: none; }
}
