/* UNOS DATUMA (`dateinput.js`) — izgled vlastitog pickera koji je zamijenio nativni
   `<input type="date">`. Ponašanje i razlog postojanja su u JS modulu.

   NAČELO: widget se UKLAPA u temu, ne nameće joj se. Vidljivo polje je obični `<input>` unutar
   istog `.field`/`.ap-cj-field` okvira u kojem je stajao nativni, pa ga hvataju POSTOJEĆA pravila
   teme (`.field input { … }`) i izgleda točno kao susjedna polja. Ovaj file zato ne postavlja ni
   rub, ni pozadinu, ni font polja — samo ono što tema ne može znati: mjesto ikone kalendara i
   izgled samog popupa.

   Boje popupa nasljeđuju `currentColor` i vlastite varijable s neutralnim defaultima, iz istog
   razloga kao kod loadera: widget stoji nad temom klijenta, a svaka tema ima svoju paletu. */

:root {
  --ap-date-bg: #fff;
  --ap-date-fg: inherit;
  --ap-date-line: rgba(0, 0, 0, .14);
  --ap-date-hover: rgba(0, 0, 0, .06);
  --ap-date-accent: currentColor;
  /* ODABRANI DAN NE SMIJE BITI `currentColor`. Pozadina se razrješava prema `color` ISTOG
     elementa, a njemu je bojom slova upravo zadano `#fff` — pa bi ispalo bijelo na bijelom i
     odabrani dan bi nestao. Zato konkretna boja, uz kuku na akcent teme ako ga ima (isti hook
     kojim se služi i cjenik). */
  --ap-date-sel-bg: var(--ap-cj-accent, #1f6feb);
  --ap-date-sel-fg: #fff;
  --ap-date-muted: rgba(0, 0, 0, .38);
  --ap-date-radius: 8px;
}

/* IZVORNO POLJE — ostaje u DOM-u kao nosilac ISO vrijednosti (o njemu ovisi svaki zatečeni
   potrošač), pa se ne smije ukloniti ni `display:none`-ati: `.focus()` na njemu mora imati kamo
   sletjeti. Zato okvir bez piksela, ali mjerljiv. */
.ap-date-src {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: 0;
  border: 0;
  opacity: 0;
  pointer-events: none;
}

/* Omotač preuzima mjesto koje je u rasporedu teme imao nativni input. `block`, jer je polje
   forme (`.field input { width: 100% }` bez ovoga nema što ispuniti).

   `opacity: 1` je OBRANA, ne ukras: prigušenje na omotaču ne bi samo izblijedilo widget nego bi
   mu stvorilo vlastiti stacking context i time zarobilo `z-index` kalendara — popup bi pao ispod
   sadržaja stranice. Kvar se vidi kao „proziran kalendar", a uzrok mu je drugdje, pa se pravilo
   drži ovdje umjesto da se svaki put traži iznova. */
.ap-date {
  position: relative;
  display: block;
  opacity: 1;
}

/* Namjerno povišena specifičnost (`.ap-date input.ap-date-view`): vidljivo polje NASLJEĐUJE klase
   izvornog, pa ga stiliziraju i pravila teme (`.field input`) i magic edita (`.magic-input`) —
   a među njima ima i `padding` skraćenica, koja bi inače pojela mjesto za ikonu. Osim desnog
   razmaka se NE dira ništa, pa polje ostaje vizualno istovjetno susjednima. */
.ap-date input.ap-date-view {
  padding-right: 2.6em;
}

.ap-date-btn {
  position: absolute;
  top: 50%;
  right: .55em;
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  justify-content: center;
  width: 1.9em;
  height: 1.9em;
  padding: 0;
  border: 0;
  border-radius: 4px;
  background: none;
  color: inherit;
  opacity: .55;
  cursor: pointer;
  transition: opacity .15s, background .15s;
}

.ap-date-btn:hover,
.ap-date-btn:focus-visible {
  opacity: 1;
  background: var(--ap-date-hover);
}

/* ------------------------------------------------------------------ kalendar */

.ap-date-pop {
  position: absolute;
  z-index: 60;              /* iznad sadržaja forme u kojoj polje stoji (cjenik popup, MEFB) */
  top: calc(100% + 6px);
  left: 0;
  width: 17.5rem;
  max-width: calc(100vw - 2rem);
  padding: .6rem;
  border: 1px solid var(--ap-date-line);
  border-radius: var(--ap-date-radius);
  background: var(--ap-date-bg);
  color: var(--ap-date-fg);
  box-shadow: 0 8px 26px rgba(0, 0, 0, .16);
  font-size: .875rem;
  line-height: 1.2;
  text-align: left;
  cursor: default;
}

/* Polje uz desni rub okvira koji reže sadržaj (zadnja kolona cjenik forme) — popup se tada
   sidri DESNIM rubom. Odluku MJERI `align()` u JS-u; ovdje je samo ishod. */
.ap-date-pop--right { left: auto; right: 0; }

.ap-date-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .25rem;
  margin-bottom: .45rem;
}

.ap-date-title {
  flex: 1;
  text-align: center;
  font-weight: 700;
  text-transform: capitalize;   /* `toLocaleDateString` daje „kolovoz", naslov traži „Kolovoz" */
}

.ap-date-nav {
  width: 1.9rem;
  height: 1.9rem;
  padding: 0;
  border: 0;
  border-radius: 4px;
  background: none;
  color: inherit;
  font: inherit;
  font-size: 1.15rem;
  line-height: 1;
  cursor: pointer;
}

.ap-date-nav:hover { background: var(--ap-date-hover); }

.ap-date-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
}

.ap-date-wd {
  padding: .2rem 0;
  color: var(--ap-date-muted);
  font-size: .72rem;
  text-align: center;
  text-transform: uppercase;
  letter-spacing: .04em;
}

.ap-date-day {
  /* 2.2rem je i na mobitelu iznad praga za prst — picker je vlastiti upravo zato da ne ovisi
     o nativnom, pa mora biti upotrebljiv i ondje gdje je nativni bio bolji. */
  min-height: 2.2rem;
  padding: 0;
  border: 0;
  border-radius: 5px;
  background: none;
  color: inherit;
  font: inherit;
  font-size: .875rem;
  cursor: pointer;
}

.ap-date-day:hover { background: var(--ap-date-hover); }

.ap-date-day.is-today {
  box-shadow: inset 0 0 0 1px var(--ap-date-accent);
  font-weight: 700;
}

.ap-date-day.is-sel {
  background: var(--ap-date-sel-bg);
  color: var(--ap-date-sel-fg);
  font-weight: 700;
}

/* Dan izvan granica (`min`/`max`) se VIDI, ali se ne da kliknuti: prazno mjesto bi izgledalo
   kao da tog datuma nema u kalendaru. */
.ap-date-day.is-off {
  opacity: .3;
  cursor: not-allowed;
}

.ap-date-day.is-off:hover { background: none; }

@media (max-width: 480px) {
  .ap-date-pop { width: 100%; }
  /* 44px je uobičajeni najmanji dodirni cilj; picker je na mobitelu vlastiti, pa mora biti
     barem toliko upotrebljiv koliko je bio nativni. */
  .ap-date-day { min-height: 2.75rem; }
}
