.calendar-appointment.type-consultation,.timeline-appointment.type-consultation,.week-appointment.type-consultation{background:var(--primary-500);border:none;color:#fff!important}.calendar-appointment.type-osteo,.timeline-appointment.type-osteo,.week-appointment.type-osteo{background:var(--success);border:none;color:#fff!important}.calendar-appointment.type-suivi,.timeline-appointment.type-suivi,.week-appointment.type-suivi{background:var(--warning);border:none;color:#fff!important}.calendar-appointment.type-urgence,.timeline-appointment.type-urgence,.week-appointment.type-urgence{background:var(--error);border:none;box-shadow:0 2px 4px #ef44444d;color:#fff!important}.calendar-appointment.type-controle,.timeline-appointment.type-controle,.week-appointment.type-controle{background:var(--surface-500);border:none;color:#fff!important}.calendar-appointment.type-domicile,.timeline-appointment.type-domicile,.week-appointment.type-domicile{background:var(--tertiary-500);border:none;color:#fff!important}.calendar-appointment.type-cabinet,.timeline-appointment.type-cabinet,.week-appointment.type-cabinet{background:var(--success);border:none;color:#fff!important}.calendar-appointment.type-default,.timeline-appointment.type-default,.week-appointment.type-default{background:var(--primary-500);border:none;color:#fff!important}.calendar-appointment.type-indisponibilite,.timeline-appointment.type-indisponibilite,.week-appointment.type-indisponibilite,.grid-appointment.type-indisponibilite{background:repeating-linear-gradient(135deg,var(--error-dark)0px,var(--error-dark)10px,var(--error-dark)10px,var(--error-dark)20px);border:2px solid var(--error-dark);opacity:.9;color:#fff!important}.calendar-appointment.type-indisponibilite:hover,.timeline-appointment.type-indisponibilite:hover,.week-appointment.type-indisponibilite:hover,.grid-appointment.type-indisponibilite:hover{opacity:1}.badge.type-indisponibilite{background:var(--error-dark)!important}.week-allday-row{border-bottom:2px solid var(--surface-200);background:var(--error-light);min-height:36px;display:flex}.week-allday-row .week-time-label{width:60px;min-width:60px;font-size:var(--font-size-xs);color:var(--error-dark);align-items:center;padding:4px 8px;font-weight:600;display:flex}.week-allday-cell{border-left:1px solid var(--error-light);flex-wrap:wrap;flex:1;align-items:center;gap:2px;padding:2px;display:flex}.week-allday-appointment{cursor:pointer;border-radius:3px;align-items:center;display:inline-flex;font-size:var(--font-size-xs)!important;padding:2px 6px!important}.week-allday-appointment.type-indisponibilite{background:repeating-linear-gradient(135deg,var(--error-dark)0px,var(--error-dark)10px,var(--error-dark)10px,var(--error-dark)20px)!important;color:#fff!important;border:1px solid var(--error-dark)!important}.day-allday-section{background:var(--error-light);border:1px solid var(--error-light);border-radius:8px;margin-bottom:16px;padding:12px}.day-allday-label{font-size:var(--font-size-xs);color:var(--error-dark);align-items:center;margin-bottom:8px;font-weight:600;display:flex}.day-allday-content{flex-wrap:wrap;gap:8px;display:flex}.day-allday-item{font-size:var(--font-size-sm);cursor:pointer;border-radius:6px;align-items:center;padding:8px 12px;transition:transform .2s;display:flex}.day-allday-item:hover{transform:translateY(-1px)}.day-allday-item.type-indisponibilite{background:repeating-linear-gradient(135deg,var(--error-dark)0px,var(--error-dark)10px,var(--error-dark)10px,var(--error-dark)20px)!important;color:#fff!important;border:1px solid var(--error-dark)!important}.status-programmed,.status-pending{background:var(--primary-500);color:#fff!important}.status-confirmed{background:var(--info);color:#fff!important}.status-in-progress{background:var(--warning);color:#fff!important}.status-completed{background:var(--success);color:#fff!important}.status-cancelled{background:var(--error);color:#fff!important}.status-rescheduled{background:var(--surface-500);color:#fff!important}.status-no-show{background:var(--surface-700);color:#fff!important}.slot-available{background:var(--success);border:2px solid var(--success);color:#fff!important}.slot-booked{background:var(--warning);border:2px solid var(--warning-dark);color:#fff!important}.slot-confirmed{background:var(--primary-500);border:2px solid var(--primary-600);color:#fff!important}.slot-completed{background:var(--surface-500);border:2px solid var(--surface-600);color:#fff!important}.slot-cancelled{background:var(--error);border:2px solid var(--danger);color:#fff!important}.calendar-appointment,.timeline-appointment,.week-appointment{text-shadow:0 1px 2px #0000001a;font-weight:500;transition:all .2s}.calendar-appointment:hover,.timeline-appointment:hover,.week-appointment:hover{transform:translateY(-1px);box-shadow:0 4px 8px #00000026}.badge.type-consultation{background:var(--primary-500)!important}.badge.type-osteo{background:var(--success)!important}.badge.type-suivi{background:var(--warning)!important}.badge.type-urgence{background:var(--error)!important}.badge.type-controle{background:var(--surface-500)!important}.badge.type-domicile{background:var(--tertiary-500)!important}.badge.type-cabinet{background:var(--success)!important}.badge.status-programmed,.badge.status-pending{background:var(--primary-500)!important}.badge.status-confirmed{background:var(--info)!important}.badge.status-in-progress{background:var(--warning)!important}.badge.status-completed{background:var(--success)!important}.badge.status-cancelled{background:var(--error)!important}.badge.status-rescheduled{background:var(--surface-500)!important}.badge.status-no-show{background:var(--surface-700)!important}.badge.slot-available{background:var(--success)!important}.badge.slot-booked{background:var(--warning)!important}.badge.slot-confirmed{background:var(--primary-500)!important}.badge.slot-completed{background:var(--surface-500)!important}.badge.slot-cancelled{background:var(--error)!important}.calendar-appointment *,.timeline-appointment *,.week-appointment *,.badge[class*=type-] *,.badge[class*=status-] *,.badge[class*=slot-] *{color:#fff!important}.calendar-appointment svg,.timeline-appointment svg,.week-appointment svg{filter:drop-shadow(0 1px 1px #0003)}@media (max-width:767.98px){.calendar-appointment,.timeline-appointment,.week-appointment{font-size:var(--font-size-xs);padding:1px 3px}}.calendar-page-container{height:calc(100vh - var(--header-height,60px) - var(--page-title-height,80px) - 2rem);flex-direction:column;min-height:500px;display:flex}.calendar-page-container>.row,.calendar-page-container>.row>.col,.calendar-page-container>.row>.col>.card{flex-direction:column;flex:1;min-height:0;display:flex}.calendar-page-container .card-body{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.calendar-page-container .calendar-grid,.calendar-page-container .day-view,.calendar-page-container .week-view,.calendar-page-container .year-view{flex:1;min-height:0;overflow:auto}.calendar-page-container .day-timeline,.calendar-page-container .week-grid{flex:1;min-height:0;overflow-y:auto}.calendar-page-container .calendar-grid{flex-direction:column;display:flex}.calendar-page-container .calendar-body{flex:1;grid-template-columns:repeat(7,1fr);grid-auto-rows:1fr;display:grid}.calendar-loading-overlay{top:var(--spacing-2);right:var(--spacing-4);z-index:10;position:absolute}.calendar-grid{border:1px solid var(--surface-200);border-radius:.375rem;flex-direction:column;display:flex;overflow:hidden}.calendar-header{background-color:var(--surface-50);border-bottom:1px solid var(--surface-200);grid-template-columns:repeat(7,1fr);display:grid}.calendar-day-header{text-align:center;color:var(--surface-500);border-right:1px solid var(--surface-200);padding:10px;font-weight:700}.calendar-day-header:last-child{border-right:none}.calendar-body{flex:1;grid-template-rows:repeat(6,1fr);grid-template-columns:repeat(7,1fr);min-height:0;display:grid}.calendar-day{border-right:1px solid var(--surface-200);border-bottom:1px solid var(--surface-200);cursor:pointer;flex-direction:column;min-height:80px;padding:8px;transition:background-color .2s;display:flex}.calendar-day:hover{background-color:var(--surface-50)}.calendar-day:last-child{border-right:none}.calendar-day.other-month{background-color:var(--surface-50);color:var(--surface-500)}.calendar-day.today{background-color:var(--info-light);font-weight:700}.calendar-day.today .calendar-day-number{color:var(--info-dark)}.calendar-day-number{margin-bottom:4px;font-weight:700}.calendar-day-appointments{flex-direction:column;flex:1;gap:2px;display:flex}.calendar-appointment-more{font-size:var(--font-size-xs);color:var(--surface-500);font-style:italic}.appointment-list{max-height:400px;overflow-y:auto}.sync-btn{font-weight:500!important;transition:all .3s!important;box-shadow:0 2px 4px #0000001a!important}.sync-btn:hover{transform:translateY(-1px)!important;box-shadow:0 4px 8px #00000026!important}.card-header .btn-outline-info,.card-header .btn-outline-success,.card-header .btn-outline-secondary,.card-header .btn-outline-primary{background-color:#fff!important;font-weight:500!important;box-shadow:0 2px 4px #0000001a!important}.card-header .btn-outline-info:hover,.card-header .btn-outline-success:hover,.card-header .btn-outline-secondary:hover,.card-header .btn-outline-primary:hover{transform:translateY(-1px)!important;box-shadow:0 4px 8px #00000026!important}.card-header .btn-success{background-color:var(--theme-primary)!important;border-color:var(--theme-primary)!important;color:#fff!important;font-weight:500!important}.day-view{border:1px solid var(--surface-200);border-radius:.375rem;overflow:hidden}.day-timeline{flex-direction:column;display:flex}.timeline-slot{border-bottom:1px solid var(--surface-200);min-height:60px;display:flex}.timeline-slot:last-child{border-bottom:none}.timeline-hour{background-color:var(--surface-50);border-right:1px solid var(--surface-200);width:80px;color:var(--surface-500);justify-content:center;align-items:flex-start;padding:10px;font-weight:700;display:flex}.timeline-content{flex:1;padding:5px;position:relative}.timeline-content.dragging-over{background-color:var(--info-light);border:2px dashed var(--info-dark);transition:all .2s}.timeline-slot-empty{cursor:pointer;width:100%;height:100%;min-height:50px;transition:background-color .2s}.timeline-slot-empty:hover{background-color:var(--surface-50)}.week-view{border:1px solid var(--surface-200);border-radius:.375rem;overflow:hidden}.week-header{background-color:var(--surface-50);border-bottom:2px solid var(--surface-200);grid-template-columns:80px repeat(7,1fr);display:grid}.week-time-column{border-right:1px solid var(--surface-200)}.week-day-header{text-align:center;border-right:1px solid var(--surface-200);padding:10px}.week-day-header:last-child{border-right:none}.week-day-header.today{background-color:var(--info-light);font-weight:700}.week-day-header.today .week-day-number{color:var(--info-dark)}.week-day-name{color:var(--surface-500);font-weight:700;font-size:var(--font-size-xs);text-transform:uppercase}.week-day-number{font-size:var(--font-size-lg);margin-top:4px;font-weight:700}.week-grid{flex-direction:column;display:flex}.week-time-row{border-bottom:1px solid var(--surface-200);grid-template-columns:80px repeat(7,1fr);min-height:60px;display:grid}.week-time-row:last-child{border-bottom:none}.week-time-label{background-color:var(--surface-50);border-right:1px solid var(--surface-200);color:var(--surface-500);font-weight:700;font-size:var(--font-size-xs);justify-content:center;align-items:flex-start;padding:10px;display:flex}.week-time-cell{border-right:1px solid var(--surface-200);cursor:pointer;padding:2px;transition:background-color .2s;position:relative}.week-time-cell:hover{background-color:var(--surface-50)}.week-time-cell:last-child{border-right:none}.week-appointment{color:var(--bg-white);cursor:pointer;font-size:var(--font-size-xs);border-radius:3px;margin-bottom:2px;padding:4px;line-height:1.3}.week-appointment:hover{opacity:.9}.year-view{grid-template-columns:repeat(4,1fr);gap:20px;padding:10px;display:grid}@media (max-width:1200px){.year-view{grid-template-columns:repeat(3,1fr)}}@media (max-width:768px){.year-view{grid-template-columns:repeat(2,1fr)}}.year-month{border:1px solid var(--surface-200);cursor:pointer;border-radius:.375rem;padding:10px;transition:all .3s}.year-month:hover{transform:translateY(-2px);box-shadow:0 4px 8px #00000026}.year-month-header{text-align:center;color:var(--surface-700);font-weight:700;font-size:var(--font-size-sm);margin-bottom:10px}.year-month-grid{font-size:var(--font-size-xs)}.year-month-days-header{grid-template-columns:repeat(7,1fr);margin-bottom:5px;display:grid}.year-day-header{text-align:center;color:var(--surface-500);font-weight:700;font-size:var(--font-size-xs)}.year-month-days{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.year-day{aspect-ratio:1;font-size:var(--font-size-xs);border-radius:2px;justify-content:center;align-items:center;display:flex;position:relative}.year-day.other-month{color:var(--surface-400)}.year-day.has-appointments{background-color:var(--info-light);font-weight:700}.year-day-number{z-index:1;position:relative}.year-day-indicator{background-color:var(--theme-primary);color:var(--bg-white);width:12px;height:12px;font-size:var(--font-size-xs);border-radius:50%;justify-content:center;align-items:center;font-weight:700;display:flex;position:absolute;top:1px;right:1px}.calendar-mobile{padding-bottom:calc(var(--mobile-bottom-nav-height-safe,64px) + 16px)}.calendar-mobile-nav{background:var(--bg-white);border-radius:12px;justify-content:space-between;align-items:center;padding:8px 4px;display:flex;box-shadow:0 1px 3px #0000001a}.calendar-mobile-month{text-transform:capitalize;cursor:pointer;font-size:1.1rem;font-weight:600}.calendar-mobile-week{background:var(--bg-white);border-radius:12px;justify-content:space-between;gap:4px;padding:8px;display:flex;box-shadow:0 1px 3px #0000001a}.calendar-mobile-day{cursor:pointer;border-radius:8px;flex-direction:column;flex:1;align-items:center;padding:8px 4px;transition:all .15s;display:flex;position:relative}.calendar-mobile-day:active{transform:scale(.95)}.calendar-mobile-day.today{background:var(--info-light)}.calendar-mobile-day.today .day-number{color:var(--theme-primary);font-weight:700}.calendar-mobile-day.selected{background:var(--theme-primary)}.calendar-mobile-day.selected .day-name,.calendar-mobile-day.selected .day-number{color:var(--bg-white)}.calendar-mobile-day .day-name{color:var(--surface-500);text-transform:uppercase;font-size:.7rem}.calendar-mobile-day .day-number{color:var(--surface-800);font-size:1.1rem;font-weight:600}.calendar-mobile-day .day-indicator{background:var(--error);color:var(--bg-white);border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;font-size:.65rem;font-weight:600;display:flex;position:absolute;bottom:2px}.calendar-mobile-day.selected .day-indicator{background:var(--bg-white);color:var(--theme-primary)}.calendar-mobile-appointments{background:var(--bg-white);border-radius:12px;padding:16px;box-shadow:0 1px 3px #0000001a}.calendar-mobile-appointments h6{text-transform:capitalize}.calendar-mobile-appointments .appointments-list-mobile{flex-direction:column;gap:8px;display:flex}.calendar-mobile-appointments .appointment-card-mobile{background:var(--surface-50);border-left:4px solid var(--theme-primary);cursor:pointer;border-radius:8px;align-items:flex-start;gap:12px;padding:12px;transition:transform .15s;display:flex}.calendar-mobile-appointments .appointment-card-mobile:active{transform:scale(.98)}.calendar-mobile-appointments .appointment-card-mobile.type-urgence{border-left-color:var(--error)}.calendar-mobile-appointments .appointment-card-mobile.type-suivi{border-left-color:var(--warning)}.calendar-mobile-appointments .appointment-card-mobile.type-osteo{border-left-color:var(--success)}.appointment-time-mobile{color:var(--theme-primary);min-width:45px;font-size:.9rem;font-weight:700}.appointment-content-mobile{flex:1;min-width:0}.appointment-animal-name{color:var(--surface-800);font-size:.95rem;font-weight:600}.appointment-client-mobile{color:var(--surface-500);align-items:center;margin-top:2px;font-size:.8rem;display:flex}.appointment-reason-mobile{color:var(--surface-400);margin-top:4px;font-size:.75rem}.appointment-status-mobile{flex-shrink:0;font-size:.65rem}.calendar-mobile-view-toggle{background:var(--bg-white);border-radius:12px;justify-content:center;gap:8px;padding:8px;display:flex;box-shadow:0 1px 3px #0000001a}.calendar-mobile-view-toggle .btn{flex:1;max-width:120px}.calendar-mobile-week-view{background:var(--bg-white);border-radius:12px;padding:16px;box-shadow:0 1px 3px #0000001a}.calendar-mobile-week-view h6{text-transform:capitalize}.week-appointments-list{flex-direction:column;gap:16px;display:flex}.week-day-section{border-radius:8px;overflow:hidden}.week-day-section.today{background:var(--info-light)}.week-day-header-mobile{background:var(--surface-100);border-radius:8px 8px 0 0;align-items:center;gap:8px;padding:8px 12px;display:flex}.week-day-section.today .week-day-header-mobile{background:var(--info-light)}.week-day-name-mobile{color:var(--surface-800);text-transform:capitalize;font-size:.9rem;font-weight:600}.week-day-date-mobile{color:var(--surface-500);font-size:.8rem}.week-day-appointments{background:var(--surface-50);border-radius:0 0 8px 8px;flex-direction:column;gap:6px;padding:8px;display:flex}.week-day-section.today .week-day-appointments{background:var(--info-light)}.appointment-card-mobile.compact{gap:8px;padding:8px 10px}.appointment-card-mobile.compact .appointment-time-mobile{min-width:40px;font-size:.8rem}.appointment-card-mobile.compact .appointment-animal-name{font-size:.85rem}.appointment-card-mobile.compact .appointment-client-mobile{font-size:.7rem}.appointment-card-mobile.compact .appointment-status-mobile{font-size:.6rem}.calendar-grid-mobile{background:var(--bg-white);border-radius:12px;overflow:hidden;box-shadow:0 1px 3px #0000001a}.grid-header-mobile{background:var(--surface-50);border-bottom:1px solid var(--surface-200);z-index:10;grid-template-columns:35px repeat(7,1fr);display:grid;position:sticky;top:0}.grid-time-header{border-right:1px solid var(--surface-200)}.grid-day-header{border-right:1px solid var(--surface-200);flex-direction:column;justify-content:center;align-items:center;padding:8px 2px;display:flex}.grid-day-header:last-child{border-right:none}.grid-day-header.today{background:var(--info-light)}.grid-day-header.today .grid-day-number{background:var(--theme-primary);color:var(--bg-white);border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;display:flex}.grid-day-name{color:var(--surface-500);text-transform:uppercase;font-size:.65rem;font-weight:500}.grid-day-header .grid-day-number{color:var(--surface-800);margin-top:2px;font-size:.85rem;font-weight:600}.grid-body-mobile{max-height:400px;overflow-y:auto}.grid-hour-row{border-bottom:1px solid var(--surface-100);grid-template-columns:35px repeat(7,1fr);min-height:40px;display:grid}.grid-hour-row:last-child{border-bottom:none}.grid-hour-label{color:var(--surface-400);text-align:right;border-right:1px solid var(--surface-200);background:var(--surface-50);padding:2px 4px;font-size:.65rem}.grid-cell{border-right:1px solid var(--surface-100);cursor:pointer;min-height:40px;transition:background .15s;position:relative}.grid-cell:hover{background:var(--surface-50)}.grid-cell:last-child{border-right:none}.grid-cell.today,.grid-cell.today:hover{background:var(--warning-light)}.grid-appointment{cursor:pointer;z-index:5;border-radius:3px;flex-direction:column;padding:2px 3px;font-size:.6rem;line-height:1.2;display:flex;position:absolute;left:1px;right:1px;overflow:hidden;box-shadow:0 1px 2px #0000001a}.grid-appointment:hover{z-index:6;transform:scale(1.02);box-shadow:0 2px 4px #0003}.grid-apt-time{font-size:.55rem;font-weight:600}.grid-apt-name{white-space:nowrap;text-overflow:ellipsis;font-size:.55rem;overflow:hidden}.grid-appointment.type-consultation{background:var(--theme-primary);color:var(--bg-white)}.grid-appointment.type-osteo{background:var(--success);color:var(--bg-white)}.grid-appointment.type-suivi{background:var(--warning);color:var(--bg-white)}.grid-appointment.type-urgence{background:var(--error);color:var(--bg-white)}.grid-appointment.type-controle{background:var(--surface-500);color:var(--bg-white)}.grid-appointment.type-domicile{background:var(--tertiary-500);color:var(--bg-white)}.grid-body-mobile::-webkit-scrollbar{width:4px}.grid-body-mobile::-webkit-scrollbar-track{background:var(--surface-100)}.grid-body-mobile::-webkit-scrollbar-thumb{background:var(--surface-300);border-radius:2px}.grid-body-mobile::-webkit-scrollbar-thumb:hover{background:var(--surface-400)}.main-content:has(.calendar-unavailability-page){min-height:auto;height:calc(100vh - var(--header-height,60px));max-height:calc(100vh - var(--header-height,60px));padding:0;overflow:hidden}.calendar-unavailability-page{background:var(--bg-warm);box-sizing:border-box;height:100%;padding:1.5rem;display:flex;position:relative;overflow:hidden}.calendar-unavailability-page .unavailability-wizard{border:2px solid var(--theme-primary);width:100%;height:100%;min-height:auto;box-shadow:0 4px 20px var(--theme-primary-15);border-radius:12px;margin:0;overflow:hidden}
