:root{--calendar-cell-size:56px;--calendar-cell-size-lg:64px;--calendar-min-height:420px;--calendar-padding:var(--space-md);--calendar-gap:2px;--calendar-gap-lg:4px;--calendar-header-height:var(--height-header);--calendar-today-bg:rgba(37,99,235,0.1);--calendar-selected-bg:var(--primary);--calendar-hover-bg:var(--even-bg);--calendar-disabled-bg:rgba(100,116,139,0.1);--font-color-disabled:var(--font-color-muted);--calendar-tab-color:var(--font-color-tab);--calendar-active-tab-color:var(--primary);--calendar-active-tab-background:var(--background-tab-active);--calendar-tab-border-color:var(--border-light);--available-slot-background:var(--success-light);--available-slot-text-color:var(--success-dark);--unavailable-slot-background:var(--gray-100);--unavailable-slot-text-color:var(--gray-600);--selected-slot-background:var(--primary-light);--selected-slot-text-color:var(--white);--calendar-header-background:var(--card-header-bg);--calendar-header-text-color:var(--font-color-title);--calendar-border-color:var(--border-color);--calendar-spinner-color:var(--primary);--book-button-background:var(--primary);--book-button-text-color:var(--white);--book-button-hover-background:var(--primary-dark);--book-button-hover-text-color:var(--white);--cancel-button-background:var(--danger);--cancel-button-text-color:var(--white);--calendar-main-title-color:var(--font-color-title);--calendar-panel-title-color:var(--font-color-title);--calendar-panel-text-color:var(--font-color-secondary);--panel-width:320px;--panel-width-lg:360px;--panel-bg-grey:var(--panel-bg-grey);--slot-gap:var(--space-sm);--slot-width:100%;--slot-height:auto}.calendar-container{background:var(--background);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:visible;min-height:var(--calendar-min-height)}.calendar-header{background:var(--background);border-bottom:1px solid var(--border-light);padding:var(--space-md);height:var(--calendar-header-height);display:flex;align-items:center;justify-content:space-between}.calendar-title{font-size:var(--text-xl);font-weight:600;color:var(--calendar-panel-title-color);margin:0}.h4.mb-4.text-center{color:var(--calendar-main-title-color)}.calendar-nav{display:flex;gap:var(--space-sm)}.calendar-nav-button{width:36px;height:36px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--font-color-primary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease}.calendar-nav-button:hover{background:var(--even-bg)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--calendar-gap);padding:var(--calendar-padding);width:100%;box-sizing:border-box}.calendar-day-header{text-align:center;font-size:var(--text-sm);font-weight:600;color:var(--calendar-header-text-color);background:var(--calendar-header-background);border:1px solid transparent;padding:var(--space-sm);text-transform:uppercase;letter-spacing:.05em;box-sizing:border-box}.calendar-day{aspect-ratio:1;min-height:var(--calendar-cell-size);border:1px solid var(--border-light);border-radius:var(--radius-sm);background:transparent;color:var(--font-color-primary);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:var(--text-base);font-weight:500;transition:all .2s ease;position:relative;box-sizing:border-box;padding:0}.calendar-day:hover{background:var(--calendar-hover-bg)}.calendar-day.today{background:var(--calendar-today-bg);color:var(--primary);font-weight:600}.calendar-day.selected{background:var(--selected-slot-background);color:var(--selected-slot-text-color)}.calendar-day.disabled{background:var(--unavailable-slot-background);color:var(--unavailable-slot-text-color);cursor:not-allowed}.calendar-day.available{background:var(--available-slot-background);color:var(--available-slot-text-color);border:1px solid var(--calendar-border-color)}.calendar-day.available:hover{background:var(--selected-slot-background);color:var(--selected-slot-text-color)}.calendar-day.other-month{color:var(--font-color-disabled);background:var(--even-bg)}.calendar-grid-container{min-height:var(--calendar-min-height);padding:var(--calendar-padding)}.slot-container{gap:var(--slot-gap);padding:var(--space-md)}.slot-item{width:var(--slot-width);height:var(--slot-height);border:1px solid var(--border-light);border-radius:var(--radius-sm);background:var(--background);color:var(--font-color-primary);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:var(--text-base);font-weight:500;transition:all .2s ease}.slot-container{margin-top:var(--space-md)}.slot-container,.slots-list{display:flex;flex-direction:column;gap:var(--space-md)}.time-slot{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md);border:1px solid var(--border-light);border-radius:var(--radius-md);background:var(--background);transition:all .2s ease}.time-slot:hover{border-color:var(--primary);box-shadow:var(--shadow-sm)}.slot-time{font-size:var(--text-sm);font-weight:600;color:var(--slot-time-text-color,var(--font-color-primary))}.slot-summary{font-size:var(--text-xs);color:var(--slot-summary-text-color,var(--font-color-secondary));line-height:1.4}.slot-plans{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin:var(--space-xs) 0}.plan-badge{display:inline-block;padding:2px 8px;border-radius:var(--radius-sm);font-weight:500;text-decoration:none;line-height:1.2}.slot-book-btn{padding:var(--space-sm) var(--space-md);border:none;border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:all .2s ease;margin-top:var(--space-xs)}.slot-book-btn.available{background:var(--book-button-background,var(--primary));color:var(--book-button-text-color,var(--font-color-light))}.slot-book-btn.available:hover{background:var(--book-button-hover-background,var(--primary-dark));color:var(--book-button-hover-text-color,var(--font-color-light))}.slot-book-btn.unavailable{background:var(--calendar-disabled-bg);color:var(--font-color-disabled)}.calendar-tabs{border-bottom:2px solid var(--calendar-tab-border-color)!important}.calendar-tab-item{margin-bottom:-2px}.calendar-tab-link{color:var(--calendar-tab-color)!important;background:none!important;border:none!important;border-bottom:2px solid transparent!important;border-radius:0!important;font-weight:600!important;font-size:18px!important;transition:color .2s,border-bottom .2s,background .2s!important}.calendar-tab-link-active,.calendar-tab-link.active,.calendar-tab-link:hover{color:var(--calendar-active-tab-color)!important;background:var(--calendar-active-tab-background)!important}.calendar-tab-link-active,.calendar-tab-link.active{border-bottom:2.5px solid var(--calendar-active-tab-color)!important}.book-button{background:var(--book-button-background)!important;color:var(--book-button-text-color)!important;border:none!important}.book-button:hover{background:var(--book-button-hover-background)!important;color:var(--book-button-hover-text-color)!important}.cancel-button{background:var(--cancel-button-background)!important;color:var(--cancel-button-text-color)!important;border:none!important}@media (max-width:767px){.time-slot{padding:var(--space-sm);gap:var(--space-xs)}.slot-time{font-size:var(--text-xs)}.slot-summary{font-size:11px}.slot-book-btn{padding:var(--space-xs) var(--space-sm);font-size:var(--text-xs)}}.booking-panel{width:var(--panel-width);border-left:1px solid var(--border-light);flex-direction:column}.booking-panel,.booking-panel-header{background:var(--background);display:flex}.booking-panel-header{border-bottom:1px solid var(--border-light);padding:var(--space-md);height:var(--calendar-header-height);align-items:center;justify-content:flex-start}.booking-panel-body{flex:1;overflow:visible;background:var(--background);padding:var(--space-md)}.booking-panel-body .title-secondary{margin-bottom:var(--space-md);color:var(--calendar-panel-title-color);font-weight:600}.booking-panel-body .body-text-secondary{margin-bottom:var(--space-md);color:var(--calendar-panel-text-color)}.booking-panel-footer{padding:var(--space-responsive-md);border-top:1px solid var(--border-light);background:var(--background)}.plan-badge{display:inline-flex;align-items:center;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--plan-badge-text-color,var(--white));background:var(--plan-badge-background,var(--primary))}.plan-badge.free{background:var(--plan-badge-background,rgba(107,114,128,.1));color:var(--plan-badge-text-color,#6b7280)}.plan-badge.pro{background:var(--plan-badge-background,rgba(37,99,235,.1));color:var(--plan-badge-text-color,var(--primary))}.plan-badge.premium{background:var(--plan-badge-background,rgba(147,51,234,.1));color:var(--plan-badge-text-color,#9333ea)}.calendar-legend{padding:var(--space-md);background:var(--even-bg);border-top:1px solid var(--border-light);border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.calendar-legend-container{display:flex;flex-wrap:wrap;gap:var(--space-md);justify-content:center;align-items:center}.calendar-legend-item{display:flex;align-items:center;gap:var(--space-xs)}.calendar-legend-color{width:12px;height:12px;border-radius:4px;flex-shrink:0}.calendar-legend-color.available{background:var(--available-slot-background)}.calendar-legend-color.selected{background:var(--selected-slot-background)}.calendar-legend-color.unavailable{background:var(--unavailable-slot-background)}.calendar-legend-text{font-size:var(--text-sm);color:var(--calendar-panel-text-color);font-weight:500}@media (max-width:768px){.calendar-grid{gap:2px;padding:var(--space-xs);width:100%;overflow:visible;margin:0}.calendar-day,.calendar-grid{max-width:100%;box-sizing:border-box}.calendar-day{min-height:30px;font-size:var(--text-sm);padding:0;min-width:0}.calendar-day-header{min-width:0;box-sizing:border-box;padding:var(--space-xs)}.calendar-header{padding:var(--space-sm);min-height:48px}.calendar-title{font-size:var(--text-lg)}.booking-panel{width:100%;border-left:none;border-top:1px solid var(--border-light)}.slot-item{height:40px;font-size:var(--text-sm)}}@media (min-width:768px){.slot-item{justify-content:space-between}.slot-content,.slot-item{flex-direction:row;align-items:center;gap:var(--space-lg)}.slot-content{flex:1}.slot-info{flex:1;min-width:0}.slot-plans{flex-shrink:0;flex-wrap:nowrap;gap:var(--space-sm)}.slot-button{width:auto;min-width:100px;flex-shrink:0}}@media (max-width:480px){.calendar-grid{gap:1px;padding:var(--space-xs);width:100%;max-width:100%;box-sizing:border-box;margin:0}.calendar-day{min-height:28px;font-size:12px;border-width:1px;min-width:0;box-sizing:border-box;padding:0}.calendar-day-header{font-size:11px;padding:var(--space-xs);min-width:0;box-sizing:border-box}.card-body{padding:var(--space-sm)}}@media (min-width:1200px){.calendar-day{min-height:var(--calendar-cell-size-lg)}.calendar-grid{gap:var(--calendar-gap-lg)}.booking-panel{width:var(--panel-width-lg)}}.booking-modal-cancel-btn,.booking-modal-cancel-btn:hover{background:var(--cancel-button-background)!important;color:var(--cancel-button-text-color)!important;border-color:var(--cancel-button-background)!important}.booking-modal-cancel-btn:hover{opacity:.85}.booking-modal-confirm-btn{background:var(--book-button-background)!important;color:var(--book-button-text-color)!important;border-color:var(--book-button-background)!important}.booking-modal-confirm-btn:hover{background:var(--book-button-hover-background)!important;color:var(--book-button-hover-text-color)!important;border-color:var(--book-button-hover-background)!important}.booking-panel-body.dynamic-mode{padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-md)}.panel-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:var(--space-sm);border-bottom:1px solid var(--border-light)}.panel-title{font-size:var(--text-lg);font-weight:600;color:var(--calendar-panel-title-color);margin:0}.slots-available-badge{display:inline-flex;align-items:center;padding:var(--space-xs) var(--space-sm);background:var(--available-slot-background);color:var(--available-slot-text-color);font-size:var(--text-xs);font-weight:600;border-radius:var(--radius-sm)}.time-groups-container{display:flex;flex-direction:column;gap:var(--space-md)}.panel-header+.time-groups-container{margin-top:var(--space-md)}.time-group{flex-direction:column}.time-group,.time-group-header{display:flex;gap:var(--space-sm)}.time-group-header{align-items:center}.time-group-icon{color:var(--font-color-secondary);flex-shrink:0}.time-group-label{font-size:var(--text-sm);font-weight:600;color:var(--font-color-primary);flex:1}.time-group-count{font-size:var(--text-xs);color:var(--font-color-muted);font-weight:500}.time-slots-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(70px,1fr));gap:var(--space-xs)}.time-slot-chip{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-sm) var(--space-xs);background:var(--available-slot-background);color:var(--available-slot-text-color);border:1px solid var(--calendar-border-color);border-radius:var(--radius-sm);cursor:pointer;transition:all .2s ease;min-height:48px;font-family:var(--font-body);min-width:0;max-width:100%;box-sizing:border-box}.time-slot-chip:hover{background:var(--slot-hover-background,rgba(37,99,235,.15));border-color:var(--primary)}.time-slot-chip:hover,.time-slot-chip:hover .chip-period,.time-slot-chip:hover .chip-time{color:var(--slot-hover-text-color,var(--primary))}.time-slot-chip.selected{background:var(--selected-slot-background);color:var(--selected-slot-text-color);border-color:var(--primary)}.time-slot-chip .chip-time{font-size:var(--text-sm);font-weight:600;line-height:1}.time-slot-chip .chip-period{font-size:var(--text-xs);font-weight:500;text-transform:uppercase;letter-spacing:.02em;margin-top:2px;opacity:.8}.selected-slot-details{margin-top:var(--space-md);padding-bottom:var(--space-md)}.details-divider{margin-top:var(--space-sm);border-bottom:1px solid var(--border-light);padding-bottom:var(--space-sm)}.dynamic-loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-xl) var(--space-md)}.loading-spinner-ring{width:24px;height:24px;border:2px solid var(--border-light);border-top-color:var(--calendar-spinner-color);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.empty-state-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-lg) var(--space-md);text-align:center}.empty-state-icon{color:var(--font-color-muted);margin-bottom:var(--space-sm)}@media (max-width:767px){.time-slots-grid{grid-template-columns:repeat(4,1fr)}.time-slot-chip{min-height:40px;padding:var(--space-xs)}.time-slot-chip .chip-time{font-size:var(--text-xs)}.time-slot-chip .chip-period{font-size:10px}}@media (max-width:480px){.time-slots-grid{grid-template-columns:repeat(3,1fr)}}