:root{--reservation-primary:#007cba;--reservation-secondary:#0073aa;--reservation-success:#28a745;--reservation-warning:#ffc107;--reservation-danger:#dc3545;--reservation-light:#f8f9fa;--reservation-dark:#343a40;--reservation-border:#dee2e6;--reservation-shadow:0 2px 4px rgba(0,0,0,.1);--reservation-radius:6px}.reservation-form-container{max-width:1200px;margin:0 auto;padding:20px}.reservation-calendar-section{background:#fff;border-radius:var(--reservation-radius);box-shadow:var(--reservation-shadow);padding:30px;margin-bottom:30px}.reservation-calendar-section h3{margin-top:0;color:var(--reservation-primary);border-bottom:2px solid var(--reservation-primary);padding-bottom:10px}.reservation-calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap;gap:15px}.calendar-navigation{display:flex;align-items:center;gap:15px}.nav-button{background:var(--reservation-primary);color:#fff;border:none;padding:8px 12px;border-radius:var(--reservation-radius);cursor:pointer;font-size:16px;transition:background-color .3s ease}.nav-button:hover{background:var(--reservation-secondary)}#current-month-year{font-size:24px;font-weight:700;color:var(--reservation-dark);margin:0;min-width:200px;text-align:center}.calendar-legend{display:flex;gap:20px;flex-wrap:wrap}.legend-item{display:flex;align-items:center;gap:8px;font-size:14px}.legend-color{width:16px;height:16px;border-radius:3px;border:1px solid var(--reservation-border)}.legend-color.available{background:var(--reservation-success)}.legend-color.booked{background:var(--reservation-danger)}.legend-color.blocked{background:var(--reservation-dark)}.legend-color.today{background:var(--reservation-warning)}#calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--reservation-border);border:1px solid var(--reservation-border);border-radius:var(--reservation-radius);overflow:hidden}.calendar-day{background:#fff;padding:15px 10px;text-align:center;min-height:60px;display:flex;align-items:center;justify-content:center;font-weight:500;cursor:pointer;transition:all .3s ease;position:relative}.calendar-day:hover{background:var(--reservation-light)}.calendar-day.today{background:var(--reservation-warning);color:#fff;font-weight:700}.calendar-day.available{background:#d4edda;color:var(--reservation-success)}.calendar-day.available:hover{background:var(--reservation-success);color:#fff}.calendar-day.fully-booked{background:#f8d7da;color:var(--reservation-danger);cursor:not-allowed}.calendar-day.past{background:#e9ecef;color:#6c757d;cursor:not-allowed}.calendar-day.non-working-day{background:#f8f9fa;color:#adb5bd;cursor:not-allowed}.calendar-day.empty{background:0 0;cursor:default}#time-slots-container{background:#fff;border-radius:var(--reservation-radius);box-shadow:var(--reservation-shadow);padding:30px;margin-top:20px}#time-slots-container h4{margin-top:0;color:var(--reservation-primary)}#selected-date-display{background:var(--reservation-light);padding:15px;border-radius:var(--reservation-radius);margin-bottom:20px;font-weight:700;text-align:center}#time-slots-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:15px;margin-bottom:20px}.time-slot{padding:15px;border:2px solid var(--reservation-border);border-radius:var(--reservation-radius);text-align:center;cursor:pointer;transition:all .3s ease;background:#fff}.time-slot:hover{border-color:var(--reservation-primary);background:var(--reservation-light)}.time-slot.available{border-color:var(--reservation-success);background:#d4edda}.time-slot.available:hover{background:var(--reservation-success);color:#fff}.time-slot.unavailable{border-color:var(--reservation-danger);background:#f8d7da;color:var(--reservation-danger);cursor:not-allowed}.time-slot.selected{background:var(--reservation-primary);color:#fff;border-color:var(--reservation-secondary)}.user-reservations-section{background:#fff;border-radius:var(--reservation-radius);box-shadow:var(--reservation-shadow);padding:30px}.user-reservations-section h3{margin-top:0;color:var(--reservation-primary);border-bottom:2px solid var(--reservation-primary);padding-bottom:10px}.reservations-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;margin-bottom:30px}.reservation-card{border:1px solid var(--reservation-border);border-radius:var(--reservation-radius);padding:20px;background:#fff;box-shadow:var(--reservation-shadow);transition:transform .3s ease}.reservation-card:hover{transform:translateY(-2px);box-shadow:0 4px 8px rgba(0,0,0,.15)}.reservation-card.future-reservation{border-left:4px solid var(--reservation-success)}.reservation-card.past-reservation{border-left:4px solid var(--reservation-border)}.reservation-date{display:flex;flex-direction:column;align-items:center;background:var(--reservation-primary);color:#fff;border-radius:var(--reservation-radius);padding:10px;margin-bottom:15px;width:60px;float:left;margin-right:15px}.reservation-date .day{font-size:24px;font-weight:700;line-height:1}.reservation-date .month{font-size:12px;text-transform:uppercase}.reservation-details{overflow:hidden}.reservation-time{font-size:18px;margin-bottom:5px}.reservation-full-date{color:#6c757d;margin-bottom:10px}.reservation-notes{font-style:italic;color:#6c757d;margin-bottom:10px}.reservation-status{display:inline-block;padding:4px 8px;border-radius:12px;font-size:12px;font-weight:700;text-transform:uppercase}.reservation-status.status-confirmed{background:#d4edda;color:var(--reservation-success)}.reservation-status.status-pending{background:#fff3cd;color:var(--reservation-warning)}.reservation-status.status-cancelled{background:#f8d7da;color:var(--reservation-danger)}.reservation-actions{margin-top:15px;clear:both}.reservations-list{margin-bottom:20px}.reservation-item{display:flex;justify-content:space-between;align-items:center;padding:15px;border:1px solid var(--reservation-border);border-radius:var(--reservation-radius);margin-bottom:10px}.reservation-item.past-reservation{background:var(--reservation-light)}.reservation-modal{display:none;position:fixed;z-index:1000;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.5)}.modal-content{background-color:#fff;margin:5% auto;padding:30px;border-radius:var(--reservation-radius);width:90%;max-width:500px;position:relative;box-shadow:0 4px 20px rgba(0,0,0,.3)}.close{color:#aaa;float:right;font-size:28px;font-weight:700;cursor:pointer;position:absolute;right:15px;top:15px}.close:hover{color:var(--reservation-dark)}.modal-content h3{margin-top:0;color:var(--reservation-primary)}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:5px;font-weight:700}.form-group textarea{width:100%;padding:10px;border:1px solid var(--reservation-border);border-radius:var(--reservation-radius);resize:vertical}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.button{padding:10px 20px;border:1px solid var(--reservation-border);border-radius:var(--reservation-radius);cursor:pointer;text-decoration:none;display:inline-block;font-size:14px;transition:all .3s ease;background:#fff;color:var(--reservation-dark)}.button:hover{background:var(--reservation-light)}.button.button-primary{background:var(--reservation-primary);color:#fff;border-color:var(--reservation-primary)}.button.button-primary:hover{background:var(--reservation-secondary);border-color:var(--reservation-secondary)}.button.cancel-reservation{background:var(--reservation-danger);color:#fff;border-color:var(--reservation-danger)}.button.cancel-reservation:hover{background:#c82333;border-color:#c82333}.reservation-login-notice,.reservation-validation-notice{background:#fff3cd;border:1px solid #ffeaa7;border-radius:var(--reservation-radius);padding:20px;margin:20px 0;text-align:center}.reservation-validation-notice{background:#f8d7da;border-color:#f5c6cb}.no-future-reservations{text-align:center;padding:40px;color:#6c757d}.loading{opacity:.6;pointer-events:none}.loading:after{content:'';position:absolute;top:50%;left:50%;width:20px;height:20px;margin:-10px 0 0 -10px;border:2px solid var(--reservation-primary);border-radius:50%;border-top-color:transparent;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width:768px){.reservation-form-container{padding:10px}.reservation-calendar-header{flex-direction:column;text-align:center}.calendar-legend{justify-content:center}#calendar-grid{font-size:14px}.calendar-day{min-height:50px;padding:10px 5px}#current-month-year{font-size:20px}.reservations-grid{grid-template-columns:1fr}.reservation-card{padding:15px}.reservation-date{width:50px;padding:8px}.reservation-date .day{font-size:20px}.modal-content{margin:10% auto;padding:20px;width:95%}#time-slots-grid{grid-template-columns:1fr}}@media (max-width:480px){.reservation-calendar-section,.user-reservations-section,#time-slots-container{padding:20px}.form-actions{flex-direction:column}.button{width:100%;text-align:center}}