:root{--calendar-primary:#2563eb;--calendar-primary-dark:#1d4ed8;--calendar-teal:#0f766e;--calendar-border:#e5edf8;--calendar-text:#0f172a;--calendar-muted:#64748b}.calendar-page-hero{background:linear-gradient(135deg,#eff6ff,#f5f3ff 42%,#f0fdfa);border:1px solid var(--calendar-border);border-radius:18px;padding:18px 22px;margin-bottom:16px;display:flex;align-items:center;justify-content:space-between;gap:18px}.calendar-page-kicker{margin:0;font-size:11px;color:var(--calendar-muted);text-transform:uppercase;letter-spacing:.08em;font-weight:700}.calendar-page-title{margin:2px 0 4px;font-size:24px;color:var(--calendar-text);font-weight:700}.calendar-page-subtitle{margin:0;color:var(--calendar-muted);font-size:13px;max-width:620px}.calendar-page-stats{display:flex;gap:10px}.calendar-stat-chip{background:#fff;border:1px solid #dbeafe;border-radius:14px;padding:10px 14px;min-width:92px;text-align:center}.calendar-stat-chip span{display:block;font-size:11px;color:var(--calendar-muted);text-transform:uppercase;letter-spacing:.06em}.calendar-stat-chip strong{display:block;font-size:24px;line-height:1;color:var(--calendar-primary);margin-top:2px}.calendar-stat-chip-doctors strong{color:var(--calendar-teal)}.calendar-header-container{display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px;background:#fff;border:1px solid var(--calendar-border);border-radius:18px;padding:16px 18px;box-shadow:0 6px 18px rgba(15,23,42,.05);margin-bottom:16px}.calendar-date-nav-wrapper,.calendar-left-section{display:flex;align-items:center}.calendar-date-nav-wrapper{border:1px solid #dbe5f4;border-radius:12px;overflow:hidden;background:#fbfdff}.calendar-date-icon{display:flex;align-items:center;padding:8px 10px;border-right:1px solid #e5edf8}.calendar-date-text{padding:8px 12px;font-weight:600;font-size:13px;color:#334155;min-width:220px;text-align:center}.calendar-nav-button{border:0;background:#fff;padding:8px 10px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#475569;transition:background-color .18s ease,color .18s ease}.calendar-nav-button:hover{background-color:#eff6ff;color:var(--calendar-primary)}.calendar-nav-button.left-arrow,.calendar-nav-button.right-arrow{border-left:1px solid #e5edf8}.calendar-right-section{display:flex;align-items:center;gap:10px}.month-select-wrapper{position:relative;display:inline-block}.month-select{min-width:110px;height:38px;padding:0 34px 0 12px;border-radius:10px;border:1px solid #dbe5f4;background:#fbfdff;font-size:13px;color:#334155;cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none}.month-select:focus{outline:none;border-color:#93c5fd;box-shadow:0 0 0 3px rgba(37,99,235,.12)}.select-arrow{position:absolute;top:50%;right:10px;transform:translateY(-50%);pointer-events:none;color:#64748b}.add-appointment-btn{border:0;background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;height:38px;padding:0 16px;font-weight:600;font-size:13px;display:flex;align-items:center;border-radius:10px;cursor:pointer;box-shadow:0 8px 16px rgba(37,99,235,.2);transition:transform .15s ease;animation:addAppointmentSlowJump 2.4s ease-in-out infinite;transform-origin:center bottom}.add-appointment-btn:hover{transform:translateY(-1px);animation-play-state:paused}.add-appointment-btn svg{width:17px;height:17px;margin-right:6px}@keyframes addAppointmentSlowJump{0%,75%,to{transform:translateY(0)}84%{transform:translateY(-4px)}92%{transform:translateY(-1px)}}.calendar-doctor-legend{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--calendar-border);border-radius:14px;padding:10px 14px;margin-bottom:16px}.calendar-legend-title{font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.calendar-legend-items{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.calendar-legend-item{display:inline-flex;align-items:center;gap:6px;border:1px solid #e5edf8;background:#f8fbff;color:#334155;border-radius:999px;padding:4px 10px;font-size:12px}.calendar-legend-dot{width:10px;height:10px;border-radius:999px;flex-shrink:0}.calendar-today-board{margin-top:16px;border:1px solid var(--calendar-border);border-radius:18px;background:#fff;box-shadow:0 6px 18px rgba(15,23,42,.05);overflow:hidden}.calendar-today-board-header{display:grid;grid-template-columns:2fr 1fr;background:#f8fbff;border-bottom:1px solid var(--calendar-border)}.calendar-today-title{padding:12px 14px;text-align:center;font-size:13px;font-weight:700;color:#334155}.calendar-today-board-body{display:grid;grid-template-columns:2fr 1fr}.calendar-today-appointments,.calendar-today-doctors{padding:12px}.calendar-today-doctors{border-left:1px solid var(--calendar-border)}.calendar-today-appointment-chip{color:#fff;padding:10px 12px;margin-bottom:10px;border-radius:10px;display:flex;align-items:center;gap:10px}.calendar-chip-time{background:rgba(255,255,255,.2);border-radius:8px;padding:2px 8px;font-size:12px;font-weight:600}.calendar-chip-name{font-size:13px;font-weight:500}.calendar-doctor-row{margin-bottom:10px;display:flex;align-items:center;font-size:13px;color:#334155}.calendar-doctor-color{width:12px;height:12px;border-radius:999px;margin-right:10px}.calendar-today-empty{margin:0;color:var(--calendar-muted);font-size:13px}@media (max-width:1080px){.calendar-header-container{grid-template-columns:1fr}.calendar-right-section{flex-wrap:wrap}}@media (max-width:768px){.calendar-doctor-legend,.calendar-page-hero{flex-direction:column;align-items:flex-start}.calendar-date-nav-wrapper{width:100%}.calendar-date-text{min-width:0;width:100%}.add-appointment-btn,.calendar-right-section,.month-select,.month-select-wrapper{width:100%}.calendar-today-board-body,.calendar-today-board-header{grid-template-columns:1fr}.calendar-today-doctors{border-left:0;border-top:1px solid var(--calendar-border)}}.appointment-card{position:absolute;left:4px;right:4px;padding:8px 10px;border-radius:10px;border:1px solid rgba(15,23,42,.08);border-left-width:4px;box-shadow:0 3px 8px rgba(15,23,42,.1);font-size:12px;cursor:pointer;z-index:10;line-height:1.35;min-height:40px;background-color:white;display:flex;flex-direction:column;justify-content:space-between;transition:transform .15s ease,box-shadow .15s ease}.appointment-card:hover{transform:translateY(-1px);box-shadow:0 6px 14px rgba(15,23,42,.14)}.appointment-card .patient-name{font-weight:600;margin-bottom:2px;color:#0f172a;word-break:break-word}.appointment-card .treatment-type{margin-bottom:2px;color:#334155;word-break:break-word}.appointment-card .time-range{font-size:10px;color:#1e3a8a;margin:0 0 4px;font-weight:700;line-height:1.2}.badge-count{position:absolute;bottom:2px;right:2px;background-color:white;border-radius:9999px;padding:1px 4px;font-size:7px;font-weight:600;border:1px solid #d1d5db;min-width:16px;text-align:center;box-shadow:0 1px 2px rgba(0,0,0,.1);color:#374151}.dot-indicator{position:absolute;bottom:4px;right:4px;background-color:#a0aec0;border-radius:9999px;width:5px;height:5px}.appointment-popup-wrapper{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1000}.appointment-popup-content{position:absolute;background:linear-gradient(180deg,#ffffff,#fbfdff);border-radius:14px;box-shadow:0 16px 38px rgba(15,23,42,.2);border:1px solid #e5edf8;padding:14px;width:320px;font-size:13px;color:#334155;pointer-events:auto;z-index:1001;overflow:hidden}.popup-arrow{position:absolute;top:14px;width:12px;height:12px;background-color:white;transform:rotate(45deg);box-shadow:-1px 1px 3px rgba(15,23,42,.2);z-index:-1}.appointment-popup-content:not(.flipped) .popup-arrow{left:-6px}.appointment-popup-content.flipped .popup-arrow{right:-6px;left:auto;box-shadow:1px 1px 3px rgba(15,23,42,.2)}.popup-top-accent{position:absolute;top:0;left:0;right:0;height:3px}.popup-header{display:flex;justify-content:space-between;align-items:flex-start;margin:4px 0 10px}.popup-patient-name{font-weight:700;font-size:15px;color:#0f172a}.popup-subtitle{margin:3px 0 0;font-size:12px;color:#64748b}.popup-time-chip{border:1px solid #bfdbfe;border-radius:999px;padding:4px 9px;font-size:11px;font-weight:700;color:#1e3a8a;white-space:nowrap}.popup-contact-info{font-size:12px;color:#475569;margin-bottom:10px;display:grid;gap:6px}.popup-contact-row{display:flex;align-items:center;gap:7px}.popup-contact-icon{opacity:.85}.dot-separator{margin:0 6px}.popup-details{border-top:1px solid #e5edf8;padding-top:12px;margin-bottom:12px}.detail-row{display:flex;justify-content:space-between;margin-bottom:8px;gap:10px}.detail-label{color:#64748b;font-size:12px}.detail-value{font-weight:600;font-size:12px;text-align:right;color:#0f172a;max-width:180px}.doctor-name{display:flex;align-items:center;gap:6px;justify-content:flex-end}.doctor-dot{width:8px;height:8px;background-color:#3b82f6;border-radius:9999px}.popup-action-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}.popup-action-btn{border:1px solid #dbe5f4;background:#ffffff;color:#334155;border-radius:9px;font-weight:600;font-size:12px;padding:8px 10px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px}.popup-action-btn--edit:hover{background:#eff6ff;border-color:#bfdbfe;color:#1e40af}.popup-action-btn--cancel{background:#fff1f2;border-color:#fecdd3;color:#b91c1c}.popup-action-btn--cancel:hover{background:#ffe4e6;border-color:#fda4af}.see-patient-details-btn{width:100%;background:#f8fbff;color:#334155;padding:10px;border-radius:9px;border:1px solid #dbe5f4;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:background-color .2s ease,transform .15s ease}.see-patient-details-btn:hover{background-color:#eff6ff;transform:translateY(-1px)}.arrow-icon{width:16px;height:16px;stroke:#374151}.calendar-grid-container{display:flex;flex-grow:1;background-color:white;border:1px solid #e5edf8;border-radius:18px;overflow:hidden;box-shadow:0 6px 18px rgba(15,23,42,.05)}.time-column{display:flex;flex-direction:column;align-items:center;width:104px;border-right:1px solid #e5edf8;background-color:#fbfdff;padding-top:56px}.time-header-label{height:64px;font-weight:700;border-bottom:1px solid #e5edf8;margin-top:-56px;letter-spacing:.06em}.time-header-label,.time-slot-label{display:flex;align-items:center;justify-content:center;font-size:11px;color:#64748b}.time-slot-label{height:200px;padding-top:8px;font-weight:600;border-bottom:1px solid #edf2fa}.grid-body{flex-grow:1;display:grid;grid-template-rows:auto 1fr}.day-headers{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid #e5edf8;background:#f8fbff}.day-header-cell{display:flex;flex-direction:column;align-items:center;padding:8px 4px;border-right:1px solid #e5edf8;background-color:#f8fbff}.day-header-cell:last-child{border-right:none}.day-header-name{font-size:11px;font-weight:700;color:#64748b;letter-spacing:.04em;text-transform:uppercase}.day-header-date{margin-top:2px;font-size:18px;font-weight:700;color:#0f172a}.day-header-today{background:linear-gradient(180deg,#2563eb,#1d4ed8);color:white;border-top-left-radius:10px;border-top-right-radius:10px}.day-header-today .day-header-date{color:white}.appointment-slots-grid{display:grid;grid-template-columns:repeat(7,1fr);height:calc(90px * 10);position:relative}.day-slot-column{position:relative;border-right:1px solid #edf2fa}.day-slot-column:last-child{border-right:none}.hour-cell-background{height:200px;border-bottom:1px solid #edf2fa;background:#ffffff}.hour-cell-background:nth-child(2n){background:#fcfdff}.current-time-indicator{position:absolute;left:0;right:0;border-top:2px dotted #2563eb;z-index:5}.current-time-label{position:absolute;left:-8px;top:-8px;background-color:#2563eb;color:white;font-size:9px;padding:1px 4px;border-radius:4px;white-space:nowrap;transform:translateX(-100%);box-shadow:0 1px 2px rgba(0,0,0,.1)}.monthly-appointment-card{background-color:#f0f0f0;color:#334155;border:1px solid rgba(15,23,42,.08);padding:2px 5px;border-radius:8px;font-size:.75rem;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:flex;align-items:center;gap:5px;box-shadow:0 2px 6px rgba(15,23,42,.08);transition:background-color .1s ease,transform .1s ease}.monthly-appointment-card:hover{background-color:#e9e9e9;transform:translateY(-1px)}.monthly-card-time{font-weight:600;flex-shrink:0;color:#1e3a8a}.monthly-card-patient-name{flex-grow:1;overflow:hidden;text-overflow:ellipsis}.monthly-calendar-wrapper{display:flex;flex-grow:1;background-color:white;border:1px solid #e5edf8;border-radius:18px;overflow:hidden;box-shadow:0 6px 18px rgba(15,23,42,.05)}.monthly-view-grid-body{flex-grow:1;display:flex;flex-direction:column}.monthly-view-day-headers{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid #e5edf8;background-color:#f8fbff}.monthly-view-day-header-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px 0;border-right:1px solid #e5edf8;height:50px;box-sizing:border-box}.monthly-view-day-header-cell:last-child{border-right:none}.monthly-view-day-header-name{font-size:11px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.04em}.monthly-appointment-slots-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:minmax(150px,auto);flex-grow:1;overflow-y:auto;position:relative}.monthly-day-cell{position:relative;border:1px solid #edf2fa;border-top:none;border-left:none;padding:8px;min-height:150px;display:flex;flex-direction:column;box-sizing:border-box;background-color:white}.monthly-day-cell:nth-child(7n+1){border-left:1px solid #edf2fa}.monthly-day-cell:nth-child(7n){border-right:none}.monthly-appointment-slots-grid>:nth-last-child(-n+7){border-bottom:none}.monthly-day-cell.next-month,.monthly-day-cell.prev-month{color:#94a3b8;background-color:#fcfdff}.monthly-day-cell.today{font-weight:700}.monthly-day-cell.today,.monthly-day-cell.today.next-month,.monthly-day-cell.today.prev-month{background-color:#eff6ff;border:1px solid #bfdbfe;color:#2563eb}.monthly-day-cell .monthly-day-cell-number{position:absolute;top:8px;right:10px;font-size:1.05rem;font-weight:700;color:#334155;background-color:#f1f5f9;border-radius:8px;padding:2px 7px;z-index:2;line-height:1}.monthly-day-cell.today .monthly-day-cell-number{color:#1d4ed8;background-color:#dbeafe}.monthly-day-appointments-container{flex-grow:1;width:100%;overflow-y:auto;padding-top:35px;display:flex;flex-direction:column;gap:4px}@media (max-width:768px){.monthly-appointment-slots-grid{grid-auto-rows:minmax(120px,auto)}.monthly-day-cell{min-height:120px;padding:5px}.monthly-day-cell .monthly-day-cell-number{font-size:.9rem;top:3px;right:3px;padding:1px 4px}.monthly-day-appointments-container{padding-top:25px;gap:2px}.monthly-day-cell .appointment-card.small-card{padding:1px 3px;font-size:.65rem}}.day-view-appointment-card{position:absolute;left:5px;right:5px;border:1px solid rgba(15,23,42,.08);border-left:4px solid #a0a0a0;border-radius:10px;padding:8px 12px;box-sizing:border-box;z-index:5;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-start;cursor:pointer;background-color:white;color:#333;transition:transform .15s ease,box-shadow .15s ease}.day-view-appointment-card:hover{transform:translateY(-1px);box-shadow:0 7px 14px rgba(15,23,42,.12)}.day-view-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.day-view-card-patient-name{font-weight:700;font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#0f172a}.day-view-card-details{font-size:.73rem}.day-view-card-details p{margin:0;line-height:1.3}.day-view-card-time-range{font-weight:700;color:#1e3a8a}.day-view-card-type{color:#334155}.day-view-appointment-card.short-appointment{padding:4px 8px}.app-card-blue{background-color:#e0f7fa;color:#006064;border-left-color:#007bff}.app-card-green{background-color:#e8f5e9;color:#2e7d32;border-left-color:#28a745}.app-card-purple{background-color:#f3e5f5;color:#6a1b9a;border-left-color:#6f42c1}.app-card-lime{background-color:#f0f4c3;color:#9e9d24;border-left-color:#79c06a}.app-card-gray{border-left-color:#6c757d}.app-card-default,.app-card-gray{background-color:#f0f0f0;color:#333}.app-card-default{border-left-color:#a0a0a0}@media (max-width:768px){.day-view-appointment-card{padding:6px 10px;font-size:.8rem}.day-view-card-patient-name{font-size:.8rem}.day-view-card-details{font-size:.65rem}}.day-view-container{display:flex;flex-grow:1;background-color:white;border:1px solid #e5edf8;border-radius:18px;overflow:hidden;box-shadow:0 6px 18px rgba(15,23,42,.05)}.day-view-time-column{display:flex;flex-direction:column;width:94px;flex-shrink:0;border-right:1px solid #e5edf8;background-color:#fbfdff}.day-view-time-header-label{height:50px;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;color:#4a5568;border-bottom:1px solid #e5edf8}.day-view-time-slot-label{height:100px;display:flex;align-items:flex-start;justify-content:center;padding-top:6px;font-size:11px;font-weight:600;color:#64748b;border-bottom:1px solid #edf2fa}.day-view-appointments-column{flex-grow:1;display:flex;flex-direction:column;position:relative;overflow-y:scroll}.day-view-hour-slot-background{height:100px;border-bottom:1px solid #edf2fa;box-sizing:border-box;background-color:#ffffff;flex-shrink:0}.day-view-hour-slot-background:nth-child(2n){background-color:#fcfdff}.day-view-current-time-indicator{position:absolute;left:0;right:0;height:2px;background-color:#ef4444;z-index:10}.day-view-current-time-label{position:absolute;left:-45px;top:-8px;background-color:#ef4444;color:white;padding:2px 5px;border-radius:4px;font-size:10px;white-space:nowrap}