.calendar-week table{table-layout:fixed}
.hour-col{width:90px;background:#f8f9fa}
.calendar-cell{height:72px;vertical-align:top}
.slot-item{padding:4px 6px;border-radius:4px;font-size:.8rem;margin-bottom:3px}
.slot-reserved{background:#dc3545;color:#fff}
.slot-pending,.slot-draft{color:#000;background-color:#ffc107;background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.45) 0,rgba(255,255,255,.45) 5px,transparent 5px,transparent 10px)}
.btn-reserve{width:100%}

.public-brand{font-size:1rem;line-height:1.3;max-width:100%;white-space:normal}
@media (min-width:576px){.public-brand{font-size:1.1rem}}

.calendar-mobile-day-tabs{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:.25rem;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.calendar-mobile-day-tab{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;min-width:4.5rem;padding:.55rem .75rem;border:2px solid #dee2e6;border-radius:.75rem;background:#fff;color:#212529;font-size:.85rem;line-height:1.2}
.calendar-mobile-day-tab.active{border-color:#0d6efd;background:#eef4ff;color:#0d6efd;font-weight:600}
.calendar-mobile-day-tab-weekday{font-weight:600}
.calendar-mobile-day-tab-date{font-size:.75rem;color:#6c757d;margin-top:.15rem}
.calendar-mobile-day-tab.active .calendar-mobile-day-tab-date{color:#0d6efd}
.calendar-mobile-slots{border-radius:.75rem;overflow:hidden}
.calendar-mobile-slot{padding:.85rem 1rem;border-left:0;border-right:0}
.calendar-mobile-slot:first-child{border-top-left-radius:.75rem;border-top-right-radius:.75rem}
.calendar-mobile-slot:last-child{border-bottom-left-radius:.75rem;border-bottom-right-radius:.75rem}
.calendar-mobile-slot-time{font-weight:700;font-size:1rem;margin-bottom:.35rem}
.calendar-mobile-slot-label{font-size:.95rem}
.calendar-mobile-slot-available{background:#f8f9fa}
.calendar-mobile-slot-closed{background:#fff;font-size:.95rem}
.calendar-mobile .btn-reserve{min-height:2.75rem;font-size:1rem}
.calendar-legend{font-size:.9rem;line-height:1.6}
.calendar-week-nav .btn{min-height:2.5rem}

.required-mark{color:#dc3545;font-weight:700}
.optional-mark{color:#6c757d;font-size:.875rem}
.form-required-note{font-size:.9rem;color:#6c757d;margin-bottom:1rem}

.requester-type-group{display:flex;flex-wrap:wrap;gap:1rem;padding:1rem;border:1px solid #dee2e6;border-radius:.5rem;background:#fff}
.requester-type-group .form-check{margin:0;padding:.75rem 1rem;border:2px solid #dee2e6;border-radius:.5rem;flex:1 1 220px;cursor:pointer;transition:border-color .15s,background-color .15s}
.requester-type-group .form-check:has(input:checked){border-color:#0d6efd;background:#eef4ff}
.requester-type-group .form-check-label{cursor:pointer;font-weight:500}

.datetime-picker-card{border:2px solid #0d6efd;border-radius:.75rem;padding:1rem;background:linear-gradient(180deg,#f8fbff 0%,#fff 100%)}
.datetime-picker-card.end-picker{border-color:#198754;background:linear-gradient(180deg,#f4fff8 0%,#fff 100%)}
.datetime-picker-title{font-weight:600;margin-bottom:.75rem;display:flex;align-items:center;gap:.5rem}
.datetime-picker-title .badge{font-size:.75rem}

.recap-section{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid #eee}
.recap-section:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}
.recap-label{font-size:.8rem;text-transform:uppercase;color:#6c757d;letter-spacing:.03em;margin-bottom:.15rem}
.recap-value{font-weight:500}

.request-date-badge{display:inline-block;padding:.35rem .55rem;border-radius:999px;font-size:.8rem;font-weight:600;color:#fff;white-space:nowrap}
.request-date-ok{background:#198754}
.request-date-overdue{background:#dc3545}
.request-date-neutral{background:#6c757d}
.reservation-actions .btn{min-width:2rem;font-weight:700;line-height:1}
