/*
 * public/admin/calendar.css — štýly sekcie Kalendár.
 *
 * Vyňaté z `public/admin/index.html` (v7.9.215). Monolit smie už len klesať
 * a blok patril ku `calendar.js`, nie do stránky — viď check:admin-monolit.
 * Poradie sa zachovalo: blok bol v tele dokumentu za hlavičkovými štýlmi,
 * odkaz je preto posledný v `<head>`.
 */
/* ===== Pohľadový prepínač (Mesiac/Týždeň/Deň) — štýl YetiForce ===== */
.cal-view-toggle{display:inline-flex;border:1px solid var(--gray-light);border-radius:8px;overflow:hidden;background:#fff}
.cal-view-btn{border:0;background:#fff;padding:0.5rem 0.95rem;font-family:inherit;font-size:0.85rem;font-weight:600;color:var(--gray);cursor:pointer;transition:all 0.15s}
.cal-view-btn + .cal-view-btn{border-left:1px solid var(--gray-light)}
.cal-view-btn:hover{color:var(--dark);background:var(--light)}
.cal-view-btn.active{background:var(--primary);color:#fff}

/* ===== Legenda farebného označenia (USER-67) =====
   Farba je prúžok, nie podklad textu — preto tu nie je
   žiadny prah kontrastu na prepočítanie. Štvorček legendy
   má vlastný obrys, aby bol svetlý odtieň vidieť aj na
   bielom podklade. */
.cal-legenda{display:flex;flex-wrap:wrap;gap:0.4rem 1rem;margin:-0.25rem 0 1rem;font-size:0.8rem;color:var(--ink-2)}
.cal-legenda-polozka{display:inline-flex;align-items:center;gap:0.4rem}
.cal-legenda-farba{width:0.85rem;height:0.85rem;border-radius:3px;border:1px solid rgba(0,0,0,0.2);flex:none}
.cal-legenda-prazdna{color:var(--gray)}

/* ===== Pás mesiacov s počtami ===== */
.cal-month-strip{display:flex;gap:0.35rem;flex-wrap:wrap;margin-bottom:1rem}
.cal-month-strip:empty{display:none}
.cal-month-tab{display:inline-flex;align-items:center;gap:0.4rem;border:1px solid var(--gray-light);background:#fff;border-radius:8px;padding:0.4rem 0.7rem;font-family:inherit;font-size:0.82rem;font-weight:600;color:var(--dark);cursor:pointer;transition:all 0.15s}
.cal-month-tab:hover{border-color:var(--primary);color:var(--primary)}
.cal-month-tab.active{background:#fff;border-color:var(--primary);color:var(--primary);box-shadow:inset 0 -3px 0 var(--primary)}
.cal-month-count{background:var(--primary);color:#fff;border-radius:999px;font-size:0.7rem;padding:0.05rem 0.45rem;font-weight:700;min-width:1.4em;text-align:center}
.cal-month-count.zero{background:var(--gray-light);color:var(--gray)}
.cal-year-nav{color:var(--gray);font-weight:500}

/* ===== Mesačná mriežka ===== */
.cal-month{border:1px solid var(--gray-light);border-radius:10px;overflow:hidden;background:#fff}
.cal-month-head{display:grid;grid-template-columns:repeat(7,1fr);background:var(--light);border-bottom:1px solid var(--gray-light)}
.cal-month-headcell{padding:0.55rem 0.6rem;font-size:0.74rem;font-weight:700;text-transform:uppercase;letter-spacing:0.06em;color:var(--gray);text-align:center}
.cal-month-row{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--gray-light)}
.cal-month-row:last-child{border-bottom:none}
.cal-month-cell{min-height:104px;min-width:0;border-right:1px solid var(--gray-light);padding:0.3rem;position:relative;display:flex;flex-direction:column;gap:0.25rem}
.cal-month-cell:last-child{border-right:none}
.cal-month-cell.out{background:#fafbfc}
.cal-month-cell.out .cal-month-daynum{color:#c3cbd6}
.cal-month-cell.today{background:#f0f9f1;box-shadow:inset 0 0 0 2px var(--primary)}
.cal-month-daynum{align-self:flex-end;border:0;background:transparent;font-family:inherit;font-size:0.95rem;font-weight:600;color:var(--gray);cursor:pointer;padding:0.1rem 0.35rem;border-radius:6px;line-height:1.2}
.cal-month-daynum:hover{background:var(--primary);color:#fff}
.cal-month-cell.today .cal-month-daynum{color:var(--primary);font-weight:800}
.cal-month-chips{display:flex;flex-direction:column;gap:2px;overflow:hidden;min-width:0}
.cal-chip{display:flex;align-items:center;gap:0.3rem;border-radius:4px;padding:0.14rem 0.4rem;font-size:0.72rem;font-weight:600;line-height:1.35;cursor:pointer;color:#fff;white-space:nowrap;overflow:hidden;border:0;font-family:inherit;text-align:left;transition:filter 0.12s,transform 0.12s}
.cal-chip:hover{filter:brightness(1.08);transform:translateY(-1px)}
.cal-chip-time{font-weight:700;flex-shrink:0}
.cal-chip-label{overflow:hidden;text-overflow:ellipsis;flex:1}
.cal-chip-cap{flex-shrink:0;background:rgba(255,255,255,0.25);border-radius:999px;padding:0 0.35rem;font-size:0.66rem}
.cal-chip.full .cal-chip-cap{background:rgba(0,0,0,0.3)}
/* Farby chipov: všetky ≥ 4,5:1 s bielym textom (WCAG AA) */
.chip-default{background:#15803d}
.chip-jumping{background:#b91c1c}
.chip-dressage{background:#1d4ed8}
.chip-hacking{background:#115e59}
.chip-groundwork{background:#854d0e}
.chip-longing{background:#6d28d9}
.chip-cancelled{background:#94a3b8;text-decoration:line-through;opacity:0.75}
/* Rezervácia arény z verejného formulára — vizuálne odlíšená od
   tréningového slotu, lebo je to iný druh záznamu. Farba nesie stav
   len ako doplnok: čas, priestor aj počet jazdcov sú v texte, takže
   sa dá prečítať bez rozlišovania farieb (WCAG 1.4.1). */
.chip-arena{background:#e7f3ee;color:#0f5132;border:1px solid #a9cfbe !important}
.calendar-slot.arena{background:#e7f3ee;border-left:4px solid #0f5132;color:#0f5132;cursor:pointer}
.cal-agenda-item.arena{border-left-color:#0f5132;background:#f4faf7;cursor:pointer}
.arena-stav-cancelled{opacity:.7;text-decoration:line-through}
.arena-stav-completed{border-style:dashed !important}
.calendar-slot.arena:focus-visible,.cal-agenda-item.arena:focus-visible,.cal-chip.chip-arena:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.chip-task{background:#fff7e0;color:#7a5c12;border:1px solid #eddaa2 !important}
.chip-task.done{opacity:0.55;text-decoration:line-through}
.chip-task-urgent{background:#fee2e2;color:#991b1b;border-color:#fecaca !important}
.cal-chip-more{background:transparent;color:var(--primary);font-weight:700;border:1px dashed var(--gray-light)}
.cal-chip-more:hover{background:var(--light);filter:none}
.cal-hint{margin-top:0.6rem;font-size:0.75rem;color:var(--gray)}

/* ===== Denný pohľad (agenda) ===== */
/* Textový výpis dňa (USER-100) — riadok na záznam, dá sa označiť a skopírovať.
   Písmo dedí zo stránky, nie monospace: je to text na čítanie, nie kód. */
.cal-vypis{margin-bottom:0.9rem}
.cal-vypis-head{display:flex;justify-content:space-between;align-items:center;gap:0.6rem;margin-bottom:0.4rem;color:var(--dark)}
.cal-vypis-text{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;font-size:0.88rem;line-height:1.5;margin:0;background:#fff;border:1px solid var(--gray-light);border-radius:8px;padding:0.7rem 0.9rem;color:var(--dark);user-select:text}
.cal-day-agenda{display:flex;flex-direction:column;gap:0.5rem}
.cal-agenda-item{display:flex;gap:0.9rem;align-items:flex-start;background:#fff;border:1px solid var(--gray-light);border-left:4px solid var(--primary);border-radius:8px;padding:0.7rem 0.9rem;cursor:pointer;transition:box-shadow 0.15s;color:var(--dark)}
.cal-agenda-item:hover{box-shadow:0 3px 12px rgba(0,0,0,0.1)}
.cal-agenda-item.chip-jumping{border-left-color:#b91c1c;background:#fff}
.cal-agenda-item.chip-dressage{border-left-color:#1d4ed8;background:#fff}
.cal-agenda-item.chip-hacking{border-left-color:#115e59;background:#fff}
.cal-agenda-item.chip-groundwork{border-left-color:#854d0e;background:#fff}
.cal-agenda-item.chip-longing{border-left-color:#6d28d9;background:#fff}
.cal-agenda-item.chip-default{border-left-color:#15803d;background:#fff}
.cal-agenda-item.chip-cancelled{border-left-color:#94a3b8;opacity:0.65;text-decoration:none}
.cal-agenda-item.chip-task{border-left-color:#d4b170;background:#fffdf5;color:var(--dark)}
.cal-agenda-item.chip-task.done{opacity:0.55}
.cal-agenda-time{font-weight:800;font-size:1.05rem;min-width:64px;display:flex;flex-direction:column;color:var(--dark)}
.cal-agenda-time small{font-weight:500;color:var(--gray);font-size:0.72rem}
.cal-agenda-body{flex:1;font-size:0.9rem}
.cal-agenda-trainer{margin-left:0.5rem;color:var(--gray)}
.cal-agenda-names{margin-top:0.25rem;font-size:0.82rem;color:var(--gray)}
.cal-agenda-notes{margin-top:0.25rem;font-size:0.8rem;color:var(--gray);font-style:italic}
.cal-agenda-cap{font-weight:700;background:var(--gray-light);border-radius:999px;padding:0.2rem 0.6rem;font-size:0.8rem}
.cal-agenda-cap.full{background:var(--danger);color:#fff}

/* Mesačná mriežka na mobile — chipy len bodky */
@media (max-width: 900px){
    .cal-month-cell{min-height:72px}
    .cal-chip-label,.cal-chip-cap{display:none}
    .cal-chip{padding:0.1rem 0.3rem}
    .cal-month-headcell{font-size:0.62rem;padding:0.4rem 0.2rem}
}

/* Calendar Toolbar */
.calendar-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;flex-wrap:wrap;gap:1rem}
.calendar-filters{display:flex;gap:0.5rem;flex-wrap:wrap}
.calendar-filters select{width:auto;min-width:150px}
/* U-48: šiesta položka (časy arén) posunula min-šírku riadku na 585 px a kalendár na mobile pretiekol — súhrn sa zalamuje. */
.calendar-summary{display:flex;flex-wrap:wrap;gap:0.5rem 1.5rem;font-size:0.9rem}
.summary-item{color:var(--gray)}
.summary-item strong{color:var(--dark)}

/* Calendar Grid */
.calendar-week{display:grid;grid-template-columns:repeat(7,1fr);gap:0.5rem}
.calendar-day{background:var(--gray-light);border-radius:8px;padding:0.5rem 0.5rem 2.4rem;min-height:200px;position:relative;display:flex;flex-direction:column}
.calendar-day.today{background:#e8f5e9;border:2px solid var(--primary)}
/* Minulý deň sa odlíši podkladom, nie priehľadnosťou: `opacity: 0.7` sa
   počíta do kontrastu a text minulých dní mal 3,7:1 (USER-244). */
.calendar-day.past{background-color:#f3f4f6}
.calendar-day-header{text-align:center;padding:0.5rem;border-bottom:1px solid var(--gray);margin-bottom:0.5rem;cursor:pointer;border-radius:4px;transition:background 0.2s}
.calendar-day-header:hover{background:rgba(0,0,0,0.05)}
/* Hlavička dňa je tlačidlo (USER-100: klik otvorí denný pohľad) — ohnisko klávesnice musí byť vidieť. */
.calendar-day-header:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.calendar-day-slots{display:flex;flex-direction:column;gap:0.5rem;flex:1;overflow-y:auto;max-height:300px}
.calendar-empty{color:var(--gray);font-size:0.85rem;text-align:center;padding:1rem}
.calendar-day-actions{position:absolute;bottom:0.5rem;right:0.5rem;display:flex;gap:0.3rem}
/* Bez priehľadnosti a so zlatou pre text (#826418): biely text mal pri
   opacity 0.75 na zelenej 3,2:1 a na zlatej #d4b170 1,7:1 (USER-244). */
.btn-add-slot,.btn-add-task{border:none;border-radius:14px;color:white;font-size:0.7rem;padding:0.2rem 0.55rem;cursor:pointer;transition:all 0.2s;font-weight:600;line-height:1.2}
.btn-add-slot{background:var(--primary)}
.btn-add-task{background:#826418}
.btn-add-slot:hover,.btn-add-task:hover{transform:scale(1.05)}

/* Slot Card */
.calendar-slot{background:white;border-radius:6px;padding:0.5rem;cursor:pointer;border-left:3px solid var(--primary);transition:all 0.2s}
.calendar-slot:hover{box-shadow:0 2px 8px rgba(0,0,0,0.15);transform:translateY(-1px)}
.calendar-slot.cancelled{border-left-color:var(--danger);opacity:0.5;text-decoration:line-through}
.calendar-slot.full{border-left-color:var(--warning)}
.slot-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:0.25rem}
.slot-time{font-weight:bold;font-size:0.9rem}
.slot-capacity{font-size:0.75rem;background:var(--gray-light);padding:0.1rem 0.4rem;border-radius:10px}
.slot-capacity.full{background:var(--danger);color:white}
.slot-discipline{font-size:0.8rem;color:var(--dark)}
.slot-duration,.slot-trainer{font-size:0.75rem;color:var(--gray)}

/* Tasks v kalendári */
.calendar-day-tasks-divider{margin-top:0.5rem;font-size:0.7rem;text-transform:uppercase;letter-spacing:0.05em;color:var(--gray);border-top:1px dashed var(--gray);padding-top:0.4rem;text-align:center}
.calendar-task{display:flex;align-items:center;gap:0.35rem;background:rgba(212,177,112,0.1);border-radius:6px;padding:0.35rem 0.5rem;cursor:pointer;border-left:3px solid #d4b170;transition:all 0.15s;font-size:0.78rem;line-height:1.25}
.calendar-task:hover{box-shadow:0 2px 6px rgba(0,0,0,0.12);transform:translateY(-1px)}
.calendar-task .task-priority{font-weight:bold;flex-shrink:0;width:1.1em;text-align:center}
.calendar-task .task-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.calendar-task .task-meta{color:var(--gray);font-size:0.7rem;flex-shrink:0;max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.calendar-task.urgent{border-left-color:#dc2626;background:rgba(220,38,38,0.08)}
.calendar-task.urgent .task-priority{color:#dc2626}
.calendar-task.high{border-left-color:#ea580c;background:rgba(234,88,12,0.07)}
.calendar-task.high .task-priority{color:#ea580c}
.calendar-task.low{border-left-color:#9ca3af;background:rgba(156,163,175,0.07);opacity:0.85}
.calendar-task.in-progress{border-left-style:double}
.calendar-task.completed{opacity:0.5;text-decoration:line-through}
.task-quick-complete{background:transparent;border:1px solid var(--gray);color:var(--gray);width:1.4em;height:1.4em;border-radius:50%;cursor:pointer;font-size:0.7rem;line-height:1;padding:0;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all 0.15s}
.task-quick-complete:hover{background:#16a34a;border-color:#16a34a;color:white;transform:scale(1.15)}
.task-quick-complete:focus{outline:2px solid var(--primary);outline-offset:1px}

/* Empty Week State */
.calendar-empty-week{text-align:center;padding:2rem;color:var(--gray)}
.calendar-empty-week p{margin-bottom:1rem}

/* Loading & Error States */
.calendar-loading{text-align:center;padding:3rem;color:var(--gray)}
.calendar-loading .spinner{width:40px;height:40px;border:3px solid var(--gray-light);border-top-color:var(--primary);border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 1rem}
@keyframes spin{to{transform:rotate(360deg)}}
.calendar-error{text-align:center;padding:2rem;background:#fff3f3;border-radius:8px;color:var(--danger)}
.calendar-error button{margin-top:1rem}
kbd{display:inline-block;padding:0.05rem 0.4rem;border:1px solid var(--gray);border-radius:4px;background:white;font-family:'Courier New',monospace;font-size:0.72rem;line-height:1;box-shadow:0 1px 0 var(--gray-light)}

/* Mobile responsive — pod 900px stack 2-stĺpcový grid, pod 640px vertikálny zoznam */
@media (max-width: 900px) {
    .calendar-week{grid-template-columns:repeat(2, 1fr)}
    .calendar-day{min-height:160px}
}
@media (max-width: 640px) {
    .calendar-week{grid-template-columns:1fr;gap:0.4rem}
    .calendar-day{min-height:auto;padding:0.75rem 0.85rem}
    .calendar-day-header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--gray);padding-bottom:0.5rem;margin-bottom:0.5rem;font-size:0.95rem}
    .calendar-day.today{padding:0.75rem 0.85rem;border-width:2px}
    .calendar-day-slots{max-height:none;gap:0.4rem}
    .calendar-empty{padding:0.5rem;font-size:0.8rem}
    .calendar-task{font-size:0.85rem;padding:0.45rem 0.6rem}
    .calendar-task .task-title{white-space:normal;overflow:visible;text-overflow:initial}
    .calendar-task .task-meta{display:none}
    .calendar-day-actions{position:static;display:flex;gap:0.4rem;margin-top:0.5rem}
    .btn-add-slot,.btn-add-task{flex:1;border-radius:6px;height:34px;opacity:1}
    /* Skry prázdne dni na mobile pre prehľadnosť */
    .calendar-day:has(.calendar-empty:only-child){display:none}
}
/* Toolbar na mobile — wrap filtre */
@media (max-width: 640px) {
    .calendar-toolbar{flex-direction:column;align-items:stretch}
    .calendar-filters{flex-wrap:wrap}
    .calendar-filters select,.calendar-filters .form-control{flex:1;min-width:130px}
}

/* Slot Detail Modal */
.detail-row{display:flex;padding:0.5rem 0;border-bottom:1px solid var(--gray-light)}
.detail-label{width:100px;color:var(--gray);font-size:0.9rem}
.detail-value{flex:1;font-weight:500}
.text-danger{color:var(--danger)}
.text-gray{color:var(--gray)}

/* Bookings Workflow */
.bookings-workflow{display:flex;flex-direction:column;gap:0.75rem}
.booking-workflow-item{background:var(--gray-light);border-radius:8px;padding:0.75rem;border-left:3px solid var(--primary)}
.booking-workflow-item.cancelled{opacity:0.6;border-left-color:var(--gray)}
.booking-main{display:flex;justify-content:space-between;align-items:center;margin-bottom:0.5rem}
.booking-identity{font-size:0.95rem}
.booking-identity strong{color:var(--dark)}
.booking-charge{display:flex;align-items:center;gap:0.5rem;margin-bottom:0.5rem;padding:0.25rem 0;font-size:0.85rem}
.charge-amount{font-weight:600;color:var(--dark)}
.booking-actions{display:flex;align-items:center;gap:0.25rem;flex-wrap:wrap}
.inline-pay-form{display:flex;align-items:center;gap:0.25rem;flex-wrap:wrap}
.inline-pay-form select,.inline-pay-form input{font-size:0.8rem;padding:0.25rem 0.5rem}
.booking-error{color:var(--danger);font-size:0.85rem;margin-top:0.5rem;padding:0.25rem;background:#fff3f3;border-radius:4px}
.text-sm{font-size:0.85rem}

/* Responsive */
@media(max-width:1200px){.calendar-week{grid-template-columns:repeat(4,1fr)}}
@media(max-width:768px){.calendar-week{grid-template-columns:repeat(2,1fr)}.calendar-toolbar{flex-direction:column;align-items:stretch}}
/* Čas arény z rozvrhu „Arény a časy“ (USER-73) — tretí druh záznamu. Odlíšený
   od rezervácie (zelená) aj tréningu: je to ponuka, nie zápis. Čas, aréna,
   účel aj obsadenosť sú v texte, farba je iba doplnok (WCAG 1.4.1). */
.chip-cas-areny{background:#eef2ff;color:#312e81;border:1px dashed #a5b4fc !important}
.calendar-slot.cas-areny{background:#eef2ff;border-left:4px solid #4f46e5;color:#312e81;cursor:pointer;border-style:dashed}
.calendar-slot.cas-areny.vyhradeny{background:#f3f4f6;color:#374151;border-left-color:#6b7280}
.cal-agenda-item.cas-areny{border-left-color:#4f46e5;background:#f5f6ff;cursor:pointer}
/* F3-05: čas arény je tlačidlo (role=button) — ohnisko klávesnice musí byť vidieť, obrys sa neprepisuje na none. */
.calendar-slot.cas-areny:focus-visible,.cal-agenda-item.cas-areny:focus-visible{outline:2px solid #4f46e5;outline-offset:2px}
.cal-agenda-item.cas-areny.vyhradeny{border-left-color:#6b7280;background:#f7f7f8}
