/* A visible calendar with real availability, readable on small screens. */
#fechas-disponibles,#horarios,#crear-horario,#repetir-horarios,.calendar-agenda-day,details[id^='slot-'] { scroll-margin-top:120px; }
.availability-picker { width:100%; min-width:0; padding-top:9px; }
.availability-toolbar { display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:17px; }
.availability-toolbar h3 { margin:0; font-size:1.5rem; text-align:center; text-transform:capitalize; }
.calendar-arrow { display:inline-flex; align-items:center; justify-content:center; width:43px; height:43px; flex:0 0 43px; border:1px solid #d6c9ac; border-radius:50%; background:#fcfaf3; color:#214b36; text-decoration:none; font-size:1.2rem; transition:background .2s,transform .2s; }
.calendar-arrow:hover { background:#e9e0ce; transform:translateY(-2px); }
.calendar-arrow:focus-visible { outline:3px solid #a18348; outline-offset:3px; }
.calendar-arrow.disabled { opacity:.35; }
.availability-calendar { table-layout:fixed; width:100%; border-collapse:separate; border-spacing:5px 7px; margin:0; }
.availability-calendar th { padding:6px 0; color:#6c766a; font:600 .68rem/1.4 'Segoe UI',Arial,sans-serif; text-align:center; border:0; background:transparent; }
.availability-calendar abbr,.calendar-weekday abbr { border:0; text-decoration:none; }
.availability-calendar td { padding:0; height:68px; border:0; vertical-align:middle; background:transparent; text-align:center; }
.availability-calendar td a,.availability-calendar td .unavailable-date { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; min-height:65px; padding:7px 2px; border:1px solid #e1e4d9; border-radius:11px; line-height:1.2; text-decoration:none; }
.availability-calendar td strong { font:600 1rem/1.25 'Segoe UI',Arial,sans-serif; }
.availability-calendar td small { font:500 .56rem/1.3 'Segoe UI',Arial,sans-serif; letter-spacing:0; white-space:nowrap; }
.availability-calendar td .unavailable-date { color:#8e978a; background:#f4f4ee; border-color:transparent; }
.availability-calendar td.outside-month .unavailable-date { opacity:.4; }
.availability-calendar td a { background:#edf3e9; color:#224d36; border-color:#bdccb7; transition:background .2s,transform .2s,box-shadow .2s; }
.availability-calendar td a:hover { transform:translateY(-2px); background:#dce9d6; box-shadow:0 5px 12px #1d3f2910; }
.availability-calendar td a:focus-visible { outline:3px solid #b9995b; outline-offset:2px; }
.availability-calendar td.selected-date a { color:#fff9eb; background:#214e36; border-color:#214e36; }
.availability-calendar td.selected-date .unavailable-date { box-shadow:inset 0 0 0 1px #d2c5a6; }
.calendar-availability-dot { display:inline-block; flex:0 0 5px; width:5px; height:5px; border-radius:50%; background:#6a925b; }
.availability-calendar .selected-date .calendar-availability-dot { background:#dfc58a; }
.availability-calendar .full-day .unavailable-date { color:#907642; background:#f6f0e4; }
.calendar-legend { display:flex; flex-wrap:wrap; align-items:center; gap:10px 22px; margin:17px 0 14px; padding-top:17px; border-top:1px solid #e7e2d5; color:#586c55; font-size:.68rem; }
.calendar-legend > span { display:inline-flex; align-items:center; gap:7px; }
.calendar-unavailable-legend { color:#7c8377; }
.calendar-date-search { border:1px solid #e3dfd0; border-radius:10px; margin-top:22px; padding:0 16px; background:#fcfbf6; }
.calendar-date-search summary { cursor:pointer; padding:16px 0; font-size:.78rem; color:#31533b; }
.calendar-date-search .date-search { padding-top:5px; margin-bottom:17px; }
.slot-timezone-note { margin:0 0 22px; color:#65745f; font-size:.75rem; line-height:1.7; }
.calendar-admin-toolbar { display:flex; align-items:center; justify-content:space-between; gap:18px; margin-bottom:22px; }
.calendar-admin-toolbar > div { flex:1; text-align:center; }
.calendar-admin-toolbar .eyebrow { margin:0 0 10px; text-align:center; }
.calendar-admin-toolbar h2 { margin:0; text-transform:capitalize; font-size:1.8rem; }
.calendar-admin-toolbar .muted { margin:9px 0 0; font-size:.77rem; line-height:1.65; }
.calendar-month-form { display:flex; align-items:flex-end; gap:14px; justify-content:flex-end; margin:0 0 24px; }
.calendar-month-form label { max-width:240px; font-size:.73rem; }
.calendar-month-form input { display:block; margin-top:7px; }
.calendar-panel .calendar-scroll { width:100%; overflow:visible; }
.calendar-panel .calendar-grid { display:grid; min-width:0; width:100%; grid-template-columns:repeat(7,minmax(0,1fr)); gap:6px; border:0; }
.calendar-panel .calendar-weekday { padding:10px 0; border:0; background:transparent; text-align:center; color:#6a755f; }
.calendar-panel .calendar-day { min-width:0; padding:10px 6px; min-height:115px; border:1px solid #e3e4d8; border-radius:10px; background:#fbfcf7; }
.calendar-panel .calendar-day.outside { background:#f5f4ef; opacity:.55; }
.calendar-panel .calendar-day.today { border-color:#b2965b; box-shadow:inset 0 0 0 1px #b2965b; }
.calendar-panel .calendar-day.has-slots { background:#f0f5eb; border-color:#bfcdb3; }
.calendar-panel .day-number { display:block; margin-bottom:8px; font-weight:600; font-size:.84rem; }
.calendar-panel .admin-day-link { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; min-height:38px; padding:3px; margin:0; color:#234d33; text-decoration:none; border-radius:6px; }
.calendar-panel .admin-day-link:hover { background:#dfead6; }
.calendar-panel .admin-day-link .day-number { margin:0; }
.calendar-panel .admin-day-count { font-size:.58rem; white-space:nowrap; }
.calendar-panel .calendar-slot { padding:8px 5px; margin:7px 0 0; border-radius:7px; font-size:.68rem; line-height:1.5; overflow-wrap:anywhere; }
.calendar-panel .calendar-slot strong { font-size:.66rem; font-weight:600; }
.calendar-panel .calendar-slot small { font-size:.6rem; }
.calendar-footnote { font-size:.74rem; margin:20px 0 0; line-height:1.75; }
.calendar-create-panels { margin-top:26px; align-items:start; }
.calendar-extra-date { margin-top:0; }
.calendar-extra-date summary { color:#607356; font-size:.76rem; cursor:pointer; }
.calendar-extra-date[open] > label { display:block; margin:20px 0; }
.calendar-window-preview:empty { display:none; }
.calendar-window-preview { margin:0; padding:13px 15px; background:#f0f4e8; border:1px solid #d5dfc5; border-radius:9px; color:#38592d; font-size:.77rem; line-height:1.65; }
.calendar-agenda { margin-top:26px; }
.calendar-agenda-day { margin-top:26px; padding-top:18px; border-top:1px solid #e4e3d8; }
.calendar-agenda-day > h3 { margin:0 0 16px; color:#385b38; font-size:1.35rem; text-transform:capitalize; }
.calendar-agenda-day details > summary > span > strong { display:block; font-size:.9rem; }
.calendar-agenda-day details > summary > span > small { display:block; margin-top:7px; font-size:.73rem; line-height:1.6; }
@media(max-width:1000px) { .calendar-panel .calendar-desktop-times { display:none; } .calendar-panel .calendar-day { min-height:83px; padding:8px 3px; } .calendar-panel .admin-day-link { min-height:63px; } }
@media(max-width:600px) {
    #fechas-disponibles,#horarios,#crear-horario,#repetir-horarios,.calendar-agenda-day,details[id^='slot-'] { scroll-margin-top:110px; }
    .availability-toolbar { gap:9px; }
    .availability-toolbar h3 { font-size:1.25rem; }
    .calendar-arrow { width:38px; height:38px; flex-basis:38px; }
    .availability-calendar { border-spacing:3px 6px; }
    .availability-calendar th { font-size:.63rem; }
    .availability-calendar td { height:59px; }
    .availability-calendar td a,.availability-calendar td .unavailable-date { min-height:56px; border-radius:8px; padding:7px 0; }
    .availability-calendar td strong { font-size:.88rem; }
    .availability-calendar td small { font-size:.48rem; }
    .calendar-legend { gap:10px; font-size:.61rem; }
    .calendar-legend .calendar-unavailable-legend { flex-basis:100%; }
    .calendar-panel { padding:20px 11px; }
    .calendar-admin-toolbar { gap:9px; margin-bottom:17px; }
    .calendar-admin-toolbar h2 { font-size:1.37rem; line-height:1.4; }
    .calendar-admin-toolbar .eyebrow { font-size:.55rem; }
    .calendar-admin-toolbar .muted { font-size:.68rem; }
    .calendar-panel .calendar-grid { gap:3px; }
    .calendar-panel .calendar-day { min-height:68px; padding:3px 1px; border-radius:7px; }
    .calendar-panel .day-number { font-size:.77rem; }
    .calendar-panel .admin-day-link { min-height:58px; }
    .calendar-panel .admin-day-count { font-size:.47rem; }
    .calendar-month-form { align-items:flex-end; gap:10px; }
    .calendar-month-form label { flex:1; min-width:0; }
    .calendar-month-form input { min-width:0; width:100%; font-size:.87rem; }
    .calendar-month-form button { flex-shrink:0; }
    .calendar-footnote { font-size:.65rem; }
    .calendar-agenda .panel-heading { flex-direction:column; align-items:flex-start; gap:8px; }
}
@media(prefers-reduced-motion:reduce) { .calendar-arrow,.availability-calendar td a { transition:none; } .calendar-arrow:hover,.availability-calendar td a:hover { transform:none; } }
