body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}#root{min-height:100vh}*{box-sizing:border-box;margin:0;padding:0}:root{--primary-color:#2563eb;--primary-hover:#1d4ed8;--secondary-color:#64748b;--success-color:#059669;--warning-color:#d97706;--error-color:#dc2626;--background-color:#f8fafc;--surface-color:#fff;--border-color:#e2e8f0;--text-primary:#0f172a;--text-secondary:#475569;--text-muted:#94a3b8;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--radius-sm:0.375rem;--radius-md:0.5rem;--radius-lg:0.75rem;--transition:all 0.2s cubic-bezier(0.4,0,0.2,1)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f8fafc;background-color:var(--background-color);color:#0f172a;color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Inter,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;line-height:1.5}.App{min-height:100vh}.App,.loading-spinner{display:flex;flex-direction:column}.loading-spinner{align-items:center;color:#475569;color:var(--text-secondary);font-size:.875rem;gap:1rem;justify-content:center;padding:3rem}.button-spinner,.spinner{animation:spin 1s linear infinite;border:2px solid #e2e8f0;border-top:2px solid #2563eb;border:2px solid var(--border-color);border-radius:50%;border-top-color:var(--primary-color);height:1.5rem;width:1.5rem}.button-spinner{border-width:1px;height:1rem;width:1rem}@keyframes spin{to{transform:rotate(1turn)}}.app-loading{align-items:center;display:flex;height:100vh;justify-content:center}.message-container{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.message{align-items:center;animation:slideIn .3s ease-out;border-radius:.5rem;border-radius:var(--radius-md);display:flex;font-size:.875rem;justify-content:space-between;padding:.75rem 1rem}.error-message{background-color:#fef2f2;border:1px solid #fecaca;color:#dc2626;color:var(--error-color)}.success-message{background-color:#f0fdf4;border:1px solid #bbf7d0;color:#059669;color:var(--success-color)}.message button{background:none;border:none;border-radius:.375rem;border-radius:var(--radius-sm);cursor:pointer;font-size:1.25rem;opacity:.7;padding:.25rem;transition:all .2s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.message button:hover{background-color:#0000001a;opacity:1}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.auth-page{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh;padding:1.5rem}.auth-container{max-width:28rem;width:100%}.auth-header{color:#fff;margin-bottom:2rem;text-align:center}.auth-header h1{font-size:2rem;font-weight:700;margin-bottom:.5rem}.auth-header p{font-size:1rem;opacity:.9}.auth-form{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fff;border-radius:.75rem;border-radius:var(--radius-lg);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;box-shadow:var(--shadow-lg);padding:2rem}.auth-form h2{color:#0f172a;color:var(--text-primary);font-size:1.5rem;font-weight:600;margin-bottom:1.5rem;text-align:center}.form-group{margin-bottom:1.25rem}.form-group input{background-color:#fff;background-color:var(--surface-color);border:1px solid #e2e8f0;border:1px solid var(--border-color);border-radius:.5rem;border-radius:var(--radius-md);font-size:1rem;padding:.75rem 1rem;transition:all .2s cubic-bezier(.4,0,.2,1);transition:var(--transition);width:100%}.form-group input:focus{border-color:#2563eb;border-color:var(--primary-color);box-shadow:0 0 0 3px #2563eb1a;outline:none}.form-group input:invalid{border-color:#dc2626;border-color:var(--error-color)}.password-strength{align-items:center;display:flex;gap:.75rem;margin-top:.5rem}.strength-bar{border-radius:2px;height:4px;min-width:60px;transition:all .2s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.password-mismatch{color:#dc2626;color:var(--error-color);font-size:.875rem;margin-top:.5rem}.submit-button{align-items:center;background-color:#2563eb;background-color:var(--primary-color);border:none;border-radius:.5rem;border-radius:var(--radius-md);color:#fff;cursor:pointer;display:flex;font-size:1rem;font-weight:500;gap:.5rem;justify-content:center;margin-bottom:1.5rem;padding:.75rem 1rem;transition:all .2s cubic-bezier(.4,0,.2,1);transition:var(--transition);width:100%}.submit-button:hover:not(:disabled){background-color:#1d4ed8;background-color:var(--primary-hover);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;box-shadow:var(--shadow-md);transform:translateY(-1px)}.submit-button:disabled{background-color:#64748b;background-color:var(--secondary-color);box-shadow:none;cursor:not-allowed;transform:none}.auth-footer{margin-bottom:1.5rem;text-align:center}.link-button{background:none;border:none;color:#2563eb;color:var(--primary-color);cursor:pointer;font-weight:500;text-decoration:underline;transition:all .2s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.link-button:hover{color:#1d4ed8;color:var(--primary-hover)}.test-credentials{background-color:#f8fafc;background-color:var(--background-color);border:1px solid #e2e8f0;border:1px solid var(--border-color);border-radius:.5rem;border-radius:var(--radius-md);margin-top:1.5rem;padding:1rem}.test-credentials h4{color:#0f172a;color:var(--text-primary);font-size:.875rem;font-weight:600;margin-bottom:.75rem}.credentials-buttons{grid-gap:.5rem;display:grid;gap:.5rem;grid-template-columns:1fr 1fr;margin-bottom:.75rem}.credential-button{background-color:#fff;border:1px solid #e2e8f0;border:1px solid var(--border-color);border-radius:.375rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.75rem;font-weight:500;padding:.5rem .75rem;transition:all .2s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.credential-button.patient:hover{background-color:#dbeafe;border-color:#2563eb;border-color:var(--primary-color)}.credential-button.admin:hover{background-color:#fef3c7;border-color:#d97706;border-color:var(--warning-color)}.credentials-info{color:#94a3b8;color:var(--text-muted);font-size:.75rem}.credentials-info p{margin:.25rem 0}.main-dashboard{background-color:#f8fafc;background-color:var(--background-color);min-height:100vh}.dashboard-header{align-items:center;background-color:#fff;border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border-color);box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);display:flex;justify-content:space-between;padding:1.5rem 2rem;position:-webkit-sticky;position:sticky;top:0;z-index:10}.header-left h1{color:#0f172a;color:var(--text-primary);font-size:1.5rem;font-weight:700}.header-right,.user-info{align-items:center;display:flex}.user-info{gap:1rem}.user-details{align-items:flex-end;display:flex;flex-direction:column}.user-name{color:#0f172a;color:var(--text-primary);font-size:.875rem;font-weight:600}.user-role{color:#475569;color:var(--text-secondary);font-size:.75rem}.logout-button{background-color:#dc2626;background-color:var(--error-color);border:none;border-radius:.5rem;border-radius:var(--radius-md);color:#fff;cursor:pointer;font-weight:500;padding:.5rem 1rem;transition:all .2s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.logout-button:hover{background-color:#b91c1c;box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);transform:translateY(-1px)}.dashboard{margin:0 auto;max-width:1200px;padding:2rem}.dashboard-nav{background-color:#fff;border-radius:.75rem;border-radius:var(--radius-lg);box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);display:flex;gap:.25rem;margin-bottom:2rem;padding:.25rem}.dashboard-nav button{align-items:center;background-color:initial;border:none;border-radius:.5rem;border-radius:var(--radius-md);color:#475569;color:var(--text-secondary);cursor:pointer;display:flex;font-weight:500;gap:.5rem;padding:.75rem 1rem;transition:all .2s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.dashboard-nav button.active{background-color:#2563eb;background-color:var(--primary-color);box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);color:#fff}.dashboard-nav button:hover:not(.active){background-color:#f8fafc;background-color:var(--background-color);color:#0f172a;color:var(--text-primary)}.nav-icon{font-size:1.125rem}.dashboard-content{background:#fff;border:1px solid #e2e8f0;border:1px solid var(--border-color);border-radius:.75rem;border-radius:var(--radius-lg);box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);overflow:hidden}.section-header{align-items:center;background-color:#fff;background-color:var(--surface-color);border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;padding:1.5rem 2rem}.section-header h3{color:#0f172a;color:var(--text-primary);font-size:1.25rem;font-weight:600}.date-filters{align-items:center;display:flex;gap:.75rem}.date-filters input{border:1px solid #e2e8f0;border:1px solid var(--border-color);border-radius:.5rem;border-radius:var(--radius-md);font-size:.875rem;padding:.5rem .75rem}.refresh-button{align-items:center;background-color:#64748b;background-color:var(--secondary-color);border:none;border-radius:.5rem;border-radius:var(--radius-md);color:#fff;cursor:pointer;display:flex;font-weight:500;gap:.5rem;padding:.5rem 1rem;transition:all .2s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.refresh-button:hover{background-color:#475569;box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);transform:translateY(-1px)}.slots-list{padding:2rem}.slots-by-date{display:flex;flex-direction:column;gap:2rem}.day-group{border:1px solid #e2e8f0;border:1px solid var(--border-color);border-radius:.75rem;border-radius:var(--radius-lg);overflow:hidden}.day-header{background-color:#f8fafc;background-color:var(--background-color);border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border-color);color:#0f172a;color:var(--text-primary);font-size:1rem;font-weight:600;padding:1rem 1.5rem}.slots-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));padding:1.5rem}.slot-card{background-color:#fff;border:1px solid #e2e8f0;border:1px solid var(--border-color);border-radius:.5rem;border-radius:var(--radius-md);overflow:hidden;padding:1.25rem;position:relative;transition:all .2s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.slot-card:hover:not(.past){border-color:#2563eb;border-color:var(--primary-color);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;box-shadow:var(--shadow-md);transform:translateY(-2px)}.slot-card.past{background-color:#f8fafc;background-color:var(--background-color);opacity:.6}.slot-card.soon{background:linear-gradient(135deg,#fffbeb,#fef3c7);border-color:#d97706;border-color:var(--warning-color)}.slot-date{color:#475569;color:var(--text-secondary);font-size:.75rem;font-weight:500;letter-spacing:.025em;margin-bottom:.25rem;text-transform:uppercase}.slot-time{color:#0f172a;color:var(--text-primary);font-size:1.125rem;font-weight:600;margin-bottom:1rem}.book-button{background-color:#059669;background-color:var(--success-color);border:none;border-radius:.5rem;border-radius:var(--radius-md);color:#fff;cursor:pointer;font-weight:500;padding:.75rem;transition:all .2s cubic-bezier(.4,0,.2,1);transition:var(--transition);width:100%}.book-button:hover:not(:disabled){background-color:#047857;box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);transform:translateY(-1px)}.book-button.disabled,.book-button:disabled{background-color:#64748b;background-color:var(--secondary-color);cursor:not-allowed;transform:none}.soon-badge{background-color:#d97706;background-color:var(--warning-color);border-radius:.375rem;border-radius:var(--radius-sm);color:#fff;font-size:.75rem;font-weight:600;padding:.25rem .5rem;position:absolute;right:.5rem;top:.5rem}.my-bookings{padding:2rem}.bookings-section{margin-bottom:2rem}.bookings-section h4{border-bottom:2px solid #e2e8f0;border-bottom:2px solid var(--border-color);color:#0f172a;color:var(--text-primary);font-size:1.125rem;font-weight:600;margin-bottom:1rem;padding-bottom:.5rem}.bookings-list{grid-gap:1rem;display:grid;gap:1rem}.booking-card{background-color:#fff;border:1px solid #e2e8f0;border:1px solid var(--border-color);border-radius:.5rem;border-radius:var(--radius-md);padding:1.5rem;position:relative;transition:all .2s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.booking-card:hover{box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;box-shadow:var(--shadow-md);transform:translateY(-1px)}.booking-card.past{background-color:#f8fafc;background-color:var(--background-color);opacity:.8}.booking-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:.75rem}.booking-date{color:#0f172a;color:var(--text-primary);font-size:1.125rem;font-weight:600}.booking-status{border-radius:.375rem;border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;letter-spacing:.025em;padding:.25rem .75rem;text-transform:uppercase}.booking-time{color:#0f172a;color:var(--text-primary);font-size:1rem;font-weight:500;margin-bottom:.5rem}.booking-meta{color:#475569;color:var(--text-secondary);font-size:.875rem;margin-bottom:1rem}.cancel-button{background-color:#dc2626;background-color:var(--error-color);border:none;border-radius:.5rem;border-radius:var(--radius-md);color:#fff;cursor:pointer;font-size:.875rem;font-weight:500;padding:.5rem 1rem;transition:all .2s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.cancel-button:hover:not(:disabled){background-color:#b91c1c}.admin-dashboard{padding:2rem}.admin-stats{display:flex;gap:1rem}.stat-card{align-items:center;background-color:#fff;border:1px solid #e2e8f0;border:1px solid var(--border-color);border-radius:.5rem;border-radius:var(--radius-md);display:flex;flex-direction:column;min-width:80px;padding:1rem}.stat-number{color:#2563eb;color:var(--primary-color);font-size:1.5rem;font-weight:700}.stat-label{color:#475569;color:var(--text-secondary);font-size:.75rem;letter-spacing:.025em;text-transform:uppercase}.bookings-table{background-color:#fff;border:1px solid #e2e8f0;border:1px solid var(--border-color);border-radius:.75rem;border-radius:var(--radius-lg);margin:2rem 0;overflow:hidden}.bookings-table table{border-collapse:collapse;width:100%}.bookings-table td,.bookings-table th{border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border-color);padding:1rem;text-align:left}.bookings-table th{color:#0f172a;color:var(--text-primary);font-size:.875rem;font-weight:600;letter-spacing:.025em;text-transform:uppercase}.bookings-table th,.bookings-table tr:hover{background-color:#f8fafc;background-color:var(--background-color)}.bookings-table tr:last-child td{border-bottom:none}.bookings-table tr.past-booking{opacity:.7}.patient-info strong{color:#0f172a;color:var(--text-primary)}.status-badge{border-radius:.375rem;border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;letter-spacing:.025em;padding:.25rem .75rem;text-transform:uppercase}.status-badge.upcoming{background-color:#dbeafe;color:#2563eb;color:var(--primary-color)}.status-badge.completed{background-color:#f0fdf4;color:#059669;color:var(--success-color)}.pagination{align-items:center;display:flex;gap:1rem;justify-content:center;margin-top:2rem;padding:1rem}.page-button{background-color:#fff;border:1px solid #e2e8f0;border:1px solid var(--border-color);border-radius:.5rem;border-radius:var(--radius-md);cursor:pointer;font-weight:500;padding:.5rem 1rem;transition:all .2s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.page-button:hover:not(:disabled){background-color:#2563eb;background-color:var(--primary-color);border-color:#2563eb;border-color:var(--primary-color);color:#fff}.page-button:disabled{cursor:not-allowed;opacity:.5}.page-info{align-items:center;color:#475569;color:var(--text-secondary);display:flex;flex-direction:column;font-size:.875rem;gap:.25rem}.total-count{color:#94a3b8;color:var(--text-muted);font-size:.75rem}.empty-state{align-items:center;display:flex;flex-direction:column;padding:4rem 2rem;text-align:center}.empty-icon{font-size:3rem;margin-bottom:1rem;opacity:.5}.empty-state h4{color:#0f172a;color:var(--text-primary);font-size:1.25rem;font-weight:600;margin-bottom:.5rem}.empty-state p{color:#475569;color:var(--text-secondary);font-size:.875rem}@media (max-width:768px){.dashboard-header{flex-direction:column;gap:1rem;padding:1rem;text-align:center}.header-left,.header-right{width:100%}.user-info{justify-content:center}.user-details{align-items:center}.dashboard{padding:1rem}.dashboard-nav,.section-header{flex-direction:column}.section-header{align-items:stretch;gap:1rem;padding:1rem}.admin-stats,.date-filters{flex-wrap:wrap}.slots-grid{grid-template-columns:1fr;padding:1rem}.bookings-table{font-size:.875rem;overflow-x:auto}.bookings-table td,.bookings-table th{padding:.5rem;white-space:nowrap}.pagination{flex-wrap:wrap;gap:.5rem}}@media (max-width:480px){.auth-page{padding:1rem}.auth-form{padding:1.5rem}.dashboard-content{border-left:none;border-radius:0;border-right:none;margin:0}.admin-dashboard,.my-bookings,.slots-list{padding:1rem}.credentials-buttons{grid-template-columns:1fr}}
/*# sourceMappingURL=main.fdb8e313.css.map*/