.calendar-card{background:#fff;border:1px solid #dee2e6;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.1);overflow:hidden}.calendar-card .calendar-header{background-color:#f4e5dd;border-bottom:1px solid #dee2e6;padding:1rem 1.5rem}.calendar-card .calendar-header h5{color:#333;font-weight:600}.calendar-card .calendar-body{min-height:auto;padding:.5rem;position:relative}.loading-overlay{align-items:center;background:hsla(0,0%,100%,.9);bottom:0;display:flex;flex-direction:column;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:10}.loading-overlay.d-none{display:none!important}.loading-overlay .spinner-border{height:3rem;width:3rem}.loading-overlay p{font-size:.9rem;margin:0}.error-display{padding:2rem;text-align:center}.error-display .alert{display:inline-block;text-align:left}#publicCalendar,.fc#publicCalendar{--fc-button-text-color:#333;--fc-button-bg-color:#f4e5dd;--fc-button-border-color:#d6b8a8;--fc-button-hover-bg-color:#e8d5c8;--fc-button-hover-border-color:#c5a595;--fc-button-active-bg-color:#d6b8a8;--fc-button-active-border-color:#b89585;--fc-border-color:#e0e0e0;--fc-today-bg-color:#fff3cd}#publicCalendar .fc-toolbar,.fc#publicCalendar .fc-toolbar{margin-top:1rem}#publicCalendar .fc .fc-toolbar,.fc#publicCalendar .fc .fc-toolbar{gap:.5rem;margin-bottom:.5rem;margin-top:1rem}#publicCalendar .fc .fc-toolbar .fc-toolbar-title,.fc#publicCalendar .fc .fc-toolbar .fc-toolbar-title{color:#333;font-size:.95rem;font-weight:600}#publicCalendar .fc .fc-toolbar .fc-button,.fc#publicCalendar .fc .fc-toolbar .fc-button{background-color:#f4e5dd;border-color:#d6b8a8;color:#333;font-size:.7rem;font-weight:500;padding:.2rem .4rem;text-transform:capitalize;transition:all .2s ease}#publicCalendar .fc .fc-toolbar .fc-button:hover,.fc#publicCalendar .fc .fc-toolbar .fc-button:hover{background-color:#e8d5c8;border-color:#c5a595;color:#000}#publicCalendar .fc .fc-toolbar .fc-button.fc-button-active,#publicCalendar .fc .fc-toolbar .fc-button:active,.fc#publicCalendar .fc .fc-toolbar .fc-button.fc-button-active,.fc#publicCalendar .fc .fc-toolbar .fc-button:active{background-color:#d6b8a8;border-color:#b89585;color:#000}#publicCalendar .fc .fc-toolbar .fc-button:focus,.fc#publicCalendar .fc .fc-toolbar .fc-button:focus{box-shadow:0 0 0 .2rem rgba(244,229,221,.5)}#publicCalendar .fc .fc-daygrid-day,.fc#publicCalendar .fc .fc-daygrid-day{cursor:pointer;transition:background-color .2s ease}#publicCalendar .fc .fc-daygrid-day .fc-daygrid-day-number,.fc#publicCalendar .fc .fc-daygrid-day .fc-daygrid-day-number{font-size:.7rem;font-weight:500;line-height:1;padding:2px 4px!important}#publicCalendar .fc .fc-daygrid-day.fc-day-today .fc-daygrid-day-number,.fc#publicCalendar .fc .fc-daygrid-day.fc-day-today .fc-daygrid-day-number{font-weight:700}#publicCalendar .fc .fc-daygrid-day.fc-day-disabled,.fc#publicCalendar .fc .fc-daygrid-day.fc-day-disabled{cursor:default!important;opacity:.6}#publicCalendar .fc .fc-daygrid-day-events,.fc#publicCalendar .fc .fc-daygrid-day-events{margin-bottom:.5em!important;min-height:1em!important}#publicCalendar .fc .fc-scrollgrid,#publicCalendar .fc td,#publicCalendar .fc th,.fc#publicCalendar .fc .fc-scrollgrid,.fc#publicCalendar .fc td,.fc#publicCalendar .fc th{border-color:#dee2e6}.slots-card{background:#fff;border:1px solid #dee2e6;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.1);overflow:hidden;top:1rem}.slots-card .slots-header{align-items:center;background-color:#f4e5dd;border-bottom:1px solid #dee2e6;display:flex;justify-content:space-between;padding:1rem 1.5rem}.slots-card .slots-header h5{color:#333;font-weight:600;margin:0}.slots-card .slots-header .btn-link{padding:0;text-decoration:none}.slots-card .slots-header .btn-link:hover{text-decoration:underline}.slots-card .slots-body{min-height:300px;padding:1.5rem}.slots-grid{display:grid;gap:.75rem;grid-template-columns:repeat(2,1fr)}@media(min-width:576px){.slots-grid{grid-template-columns:repeat(3,1fr)}}@media(min-width:992px){.slots-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:1200px){.slots-grid{grid-template-columns:repeat(3,1fr)}}.slot-btn{background-color:#fff;border:2px solid #c5a595;border-radius:6px;color:#c5a595;cursor:pointer;font-size:.9rem;font-weight:600;padding:.75rem .5rem;text-align:center;transition:all .2s ease}.slot-btn:hover{background-color:rgba(244,229,221,.5);box-shadow:0 4px 6px rgba(0,0,0,.1);transform:translateY(-2px)}.slot-btn:active{transform:translateY(0)}.slot-btn.selected{background-color:#a88575;border-color:#a88575;color:#fff}.slot-btn.selected:hover{background-color:#906b5a;border-color:#906b5a}.slot-btn:focus{box-shadow:0 0 0 .2rem hsla(21,36%,75%,.35);outline:none}.slot-btn:disabled{cursor:not-allowed;opacity:.5;pointer-events:none}.empty-state i,.no-slots-state i{color:#6c757d;opacity:.5}.empty-state p,.no-slots-state p{color:#6c757d;font-size:1rem;margin:0}.legend-card{background:#f8f9fa;border:1px solid #dee2e6;border-radius:8px;padding:1rem}.legend-card .legend-title{color:#333;font-size:.9rem;font-weight:600;margin-bottom:.75rem}.legend-card .legend-items{display:flex;flex-direction:column;gap:.5rem}.legend-card .legend-item{align-items:center;color:#495057;display:flex;font-size:.85rem;gap:.5rem}.legend-card .legend-color{border-radius:3px;flex-shrink:0;height:16px;width:16px}.legend-card .legend-color.legend-color-available{background-color:#28a745}.legend-card .legend-color.legend-color-unavailable{background-color:#dc3545}.legend-card .legend-color.legend-color-selected{background-color:#a88575}.info-panel .alert{background-color:#f4e5dd;border:1px solid #d6b8a8;border-left:4px solid #c5a595;border-radius:8px;color:#333;margin-bottom:0;padding:.75rem 1rem}.info-panel .alert .fas{color:#c5a595}@media(max-width:991.98px){.slots-card{position:static}#publicCalendar .fc .fc-toolbar{flex-direction:column;gap:.5rem}#publicCalendar .fc .fc-toolbar .fc-toolbar-title{font-size:1rem}#publicCalendar .fc .fc-toolbar .fc-toolbar-chunk{display:flex;justify-content:center}}@media(max-width:767.98px){.calendar-card .calendar-header{padding:.5rem .75rem}.calendar-card .calendar-header h5{font-size:.9rem}.calendar-card .calendar-body{padding:.5rem}.slots-card .slots-header{padding:.5rem .75rem}.slots-card .slots-header h5{font-size:.9rem}.slots-card .slots-body{padding:.75rem}#publicCalendar .fc .fc-toolbar .fc-toolbar-title{font-size:.85rem}#publicCalendar .fc .fc-toolbar .fc-button{font-size:.65rem;padding:.2rem .4rem}#publicCalendar .fc .fc-scrollgrid-sync-table tbody tr{height:24px!important}#publicCalendar .fc .fc-col-header-cell{font-size:.55rem;padding:.1rem!important}#publicCalendar .fc .fc-daygrid-day-number{font-size:.6rem;padding:1px 3px!important}.slots-grid{gap:.5rem;grid-template-columns:repeat(2,1fr)}.slot-btn{font-size:.8rem;padding:.5rem .3rem}.legend-card{padding:.5rem}.legend-card .legend-title{font-size:.8rem}.legend-card .legend-item{font-size:.75rem}}.alert.alert-danger{background-color:#f8d7da;border-left:5px solid #dc3545;font-size:1.1rem}.alert.alert-danger .fa-exclamation-triangle{color:#dc3545}.alert.alert-success{background-color:#d1e7dd;border-left:5px solid #198754;font-size:1.1rem}.alert.alert-success .fa-check-circle{color:#198754}.alert.sticky-alert{position:sticky;top:70px;z-index:1030}.alert.fade.show{animation:slideDown .3s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.booking-form-section .booking-form-card{background:#fff;border:1px solid #dee2e6;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.1);overflow:hidden}.booking-form-section .booking-form-card .booking-form-header{align-items:center;background-color:#f4e5dd;border-bottom:1px solid #dee2e6;display:flex;justify-content:space-between;padding:1rem 1.5rem}.booking-form-section .booking-form-card .booking-form-header h5{color:#333;font-weight:600;margin:0}.booking-form-section .booking-form-card .booking-form-header .btn-close{opacity:.6}.booking-form-section .booking-form-card .booking-form-header .btn-close:hover{opacity:1}.booking-form-section .booking-form-card .booking-form-body{padding:1.5rem}.booking-form-section .booking-form-card .selected-slot-info{background-color:rgba(244,229,221,.5);border-left:4px solid #c5a595;border-radius:6px;color:#333;font-size:.95rem;font-weight:500;padding:.75rem 1rem}.booking-form-section .booking-form-card .form-label{color:#495057;font-size:.9rem;font-weight:600;margin-bottom:.4rem}.booking-form-section .booking-form-card .form-control{border:1px solid #ced4da;border-radius:6px;font-size:.95rem;transition:all .2s ease}.booking-form-section .booking-form-card .form-control::placeholder{color:#adb5bd;opacity:.7}.booking-form-section .booking-form-card .form-control::-webkit-input-placeholder{color:#adb5bd;opacity:.7}.booking-form-section .booking-form-card .form-control::-moz-placeholder{color:#adb5bd;opacity:.7}.booking-form-section .booking-form-card .form-control:-ms-input-placeholder{color:#adb5bd;opacity:.7}.booking-form-section .booking-form-card .form-control:focus{border-color:#c5a595;box-shadow:0 0 0 .2rem rgba(197,165,149,.25)}.booking-form-section .booking-form-card .form-control.is-invalid{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E");background-position:right calc(.375em + .1875rem) center;background-repeat:no-repeat;background-size:calc(.75em + .375rem) calc(.75em + .375rem);border-color:#dc3545;padding-right:calc(1.5em + .75rem)}.booking-form-section .booking-form-card .form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.booking-form-section .booking-form-card select.form-control.is-invalid,.booking-form-section .booking-form-card select.form-select.is-invalid{background-position:right .75rem center,center right 2.25rem;padding-right:calc(.75em + 2.3125rem)}.booking-form-section .booking-form-card textarea.form-control.is-invalid{background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem);padding-right:calc(1.5em + .75rem)}.booking-form-section .booking-form-card .invalid-feedback{color:#dc3545;display:none;font-size:.875rem;margin-top:.25rem;width:100%}.booking-form-section .booking-form-card .invalid-feedback[style*="display: block"]{display:block!important}.booking-form-section .booking-form-card textarea.form-control{min-height:80px;resize:vertical}.booking-form-section .booking-form-card textarea.form-control::placeholder{color:#adb5bd;opacity:.7}.booking-form-section .booking-form-card select.form-control option:disabled,.booking-form-section .booking-form-card select.form-control option[value=""],.booking-form-section .booking-form-card select.form-select option:disabled,.booking-form-section .booking-form-card select.form-select option[value=""]{color:#adb5bd}.booking-form-section .booking-form-card .btn-primary{border-radius:6px;padding:.75rem 1.5rem;transition:all .2s ease}.booking-form-section .booking-form-card .btn-primary:active{transform:translateY(0)}.booking-form-section .booking-form-card .btn-primary:disabled{cursor:not-allowed;opacity:.65}.verification-section .verification-card{background:#fff;border:1px solid #dee2e6;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.1);overflow:hidden}.verification-section .verification-card .verification-header{background-color:#f4e5dd;border-bottom:1px solid #dee2e6;padding:1rem 1.5rem}.verification-section .verification-card .verification-header h5{color:#333;font-weight:600;margin:0}.verification-section .verification-card .verification-body{padding:1.5rem;text-align:center}.verification-section .verification-card .verification-instructions{color:#6c757d;font-size:.95rem;line-height:1.5;margin-bottom:1rem}.verification-section .verification-card .timer-display{align-items:center;color:#a88575;display:flex;font-size:1.75rem;font-weight:700;gap:.5rem;justify-content:center}.verification-section .verification-card .timer-display.expiring{animation:pulse 1s infinite;color:#dc3545}.verification-section .verification-card .timer-display i{font-size:1.5rem}.code-inputs-grid{display:grid;gap:.5rem;grid-template-columns:repeat(6,1fr);justify-items:center;margin:0 auto;max-width:420px}.code-inputs-grid .code-input{background-color:#fff;border:2px solid #ced4da;border-radius:8px;font-family:Courier New,monospace;font-size:1.75rem;font-weight:700;height:70px;max-width:60px;text-align:center;transition:all .2s ease;width:100%}.code-inputs-grid .code-input:focus{border-color:#c5a595;box-shadow:0 0 0 .2rem rgba(197,165,149,.25);outline:none;transform:scale(1.05)}.code-inputs-grid .code-input.filled{background-color:#f4e5dd;border-color:#a88575;color:#a88575}.code-inputs-grid .code-input.error{animation:shake .3s;background-color:#f8d7da;border-color:#dc3545}.code-inputs-grid .code-input:disabled{background-color:#e9ecef;cursor:not-allowed;opacity:.7}.code-inputs-grid .code-input::-webkit-inner-spin-button,.code-inputs-grid .code-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.code-inputs-grid .code-input[type=number]{-moz-appearance:textfield}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.98)}}@keyframes shake{0%,to{transform:translateX(0)}25%{transform:translateX(-8px)}50%{transform:translateX(8px)}75%{transform:translateX(-4px)}}.booking-form-section .btn-primary,.verification-section .btn-primary{border-radius:6px;padding:.75rem 1.5rem;transition:all .2s ease}.booking-form-section .btn-primary:active,.verification-section .btn-primary:active{transform:translateY(0)}.booking-form-section .btn-primary:disabled,.verification-section .btn-primary:disabled{cursor:not-allowed;opacity:.65}.booking-form-section .btn-link,.verification-section .btn-link{color:#a88575;font-weight:500;text-decoration:none}.booking-form-section .btn-link:hover,.verification-section .btn-link:hover{color:#805f51;text-decoration:underline}.booking-form-section .btn-link:disabled,.verification-section .btn-link:disabled{cursor:not-allowed;opacity:.5}.booking-form-section .btn-outline-secondary,.verification-section .btn-outline-secondary{border-color:#6c757d;color:#6c757d}.booking-form-section .btn-outline-secondary:hover,.verification-section .btn-outline-secondary:hover{background-color:#6c757d;border-color:#6c757d;color:#fff}@media(max-width:576px){.booking-form-section .booking-form-card .booking-form-header{padding:.75rem 1rem}.booking-form-section .booking-form-card .booking-form-header h5{font-size:.95rem}.booking-form-section .booking-form-card .booking-form-body{padding:1rem}.booking-form-section .booking-form-card .selected-slot-info{font-size:.85rem;padding:.6rem .8rem}.verification-section .verification-card .verification-header{padding:.75rem 1rem}.verification-section .verification-card .verification-header h5{font-size:.95rem}.verification-section .verification-card .verification-body{padding:1rem}.verification-section .verification-card .timer-display{font-size:1.5rem}.verification-section .verification-card .timer-display i{font-size:1.25rem}.code-inputs-grid{gap:.3rem;max-width:100%}.code-inputs-grid .code-input{font-size:1.4rem;height:55px;max-width:45px}.btn-outline-secondary,.btn-primary{font-size:.9rem;padding:.65rem 1.25rem}}@media(max-width:375px){.code-inputs-grid{gap:.25rem}.code-inputs-grid .code-input{font-size:1.25rem;height:50px;max-width:40px}}.booking-type-card{border:2px solid var(--bs-border-color);border-radius:var(--bs-border-radius);cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}.booking-type-card:focus,.booking-type-card:hover{border-color:var(--bs-primary);box-shadow:0 0 0 .2rem rgba(var(--bs-primary-rgb),.15);outline:none}.booking-type-card.selected{background-color:rgba(var(--bs-primary-rgb),.05);border-color:var(--bs-primary)}.session-type-card{background:#fff;border:2px solid #dee2e6;border-radius:8px;cursor:pointer;transition:all .2s ease}.session-type-card:hover{border-color:#e8d1c5;box-shadow:0 4px 12px hsla(21,43%,84%,.3);transform:translateY(-2px)}.session-type-card:focus,.session-type-card:focus-within{border-color:#e8d1c5;box-shadow:0 0 0 3px hsla(21,43%,84%,.2);outline:none}.session-type-card.selected{background-color:#f4e5dd;border-color:#e8d1c5}.session-type-card .session-type-icon{color:#666;transition:color .2s ease}.session-type-card:hover .session-type-icon{color:#e8d1c5}.session-type-card-body{padding:1.5rem}@media print{.booking-form-section,.calendar-header,.fc-toolbar,.info-panel,.legend-card,.slots-card,.verification-section{display:none}.calendar-card{border:none;box-shadow:none}}