.ds-calendar{gap:var(--space-3);padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);display:grid}.ds-calendar__header{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.ds-calendar__title{color:var(--color-ink-strong);font-family:var(--font-display);font-size:var(--text-subtitle);letter-spacing:var(--tracking-tight);margin:0;font-weight:700}.ds-calendar__nav{gap:var(--space-2);display:flex}.ds-calendar__nav-btn{border:1px solid var(--color-outline-variant);border-radius:var(--radius-sm);background:var(--color-surface-quiet);width:2.5rem;height:2.5rem;color:var(--color-ink);cursor:pointer;transition:border-color var(--motion-fast) var(--ease-standard), background-color var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard);justify-content:center;align-items:center;padding:0;display:flex}.ds-calendar__nav-btn:hover:not(:disabled){border-color:var(--color-border);background:var(--color-surface-strong);color:var(--color-ink-strong)}.ds-calendar__nav-btn:disabled{opacity:.4;cursor:not-allowed}.ds-calendar__nav-btn svg{width:1.25rem;height:1.25rem}[dir=rtl] .ds-calendar__nav-btn svg{transform:scaleX(-1)}.ds-calendar__grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;min-width:0;display:grid}.ds-calendar__weekday{min-width:0;padding:var(--space-2);color:var(--color-ink-muted);font-size:var(--text-caption);text-align:center;text-transform:uppercase;letter-spacing:.08em;font-weight:700}[dir=rtl] .ds-calendar__weekday{letter-spacing:0;text-transform:none;padding-inline:.25rem;font-size:.7rem}.ds-calendar__day{aspect-ratio:1;border-radius:var(--radius-sm);min-width:0;min-height:2.75rem;color:var(--color-ink);font-size:var(--text-label);cursor:pointer;transition:background-color var(--motion-fast) var(--ease-standard), border-color var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard), transform var(--motion-fast) var(--ease-standard);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;font-weight:500;display:flex;position:relative}.ds-calendar__day:hover:not(:disabled):not(.ds-calendar__day--selected){background:var(--color-surface-quiet);border-color:var(--color-border-subtle)}.ds-calendar__day--other-month{color:var(--color-ink-muted);opacity:.4}.ds-calendar__day--today{border-color:var(--color-accent-soft);color:var(--color-accent-pale)}.ds-calendar__day--available{background:color-mix(in oklch, var(--color-accent) 8%, transparent);border-color:color-mix(in oklch, var(--color-accent) 20%, transparent);color:var(--color-ink-strong)}.ds-calendar__day--available:hover:not(:disabled):not(.ds-calendar__day--selected){background:color-mix(in oklch, var(--color-accent) 16%, transparent);border-color:color-mix(in oklch, var(--color-accent) 32%, transparent)}.ds-calendar__day--selected{background:linear-gradient(135deg, var(--color-accent-strong), var(--color-accent));border-color:var(--color-accent);color:var(--color-canvas);box-shadow:0 8px 24px -8px var(--color-accent-glow);font-weight:700;transform:scale(1.05)}.ds-calendar__day:disabled{opacity:.3;cursor:not-allowed}.ds-calendar__day--unavailable{opacity:.35;cursor:not-allowed;text-decoration:line-through}.ds-calendar__day--has-slots:after{content:"";background:var(--color-accent);border-radius:50%;width:4px;height:4px;position:absolute;bottom:4px;left:50%;transform:translate(-50%)}.ds-calendar__day--selected:after{background:var(--color-canvas)}.ds-slots{gap:var(--space-3);display:grid}.ds-slots__header{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.ds-slots__title{color:var(--color-ink-strong);font-family:var(--font-display);font-size:var(--text-label);margin:0;font-weight:700}.ds-slots__date{color:var(--color-accent-pale);font-size:var(--text-caption);font-weight:600}.ds-slots__grid{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(7rem,1fr));display:grid}.ds-slots__empty{padding:var(--space-4);color:var(--color-ink-soft);font-size:var(--text-label);text-align:center;background:var(--color-surface-quiet);border:1px dashed var(--color-border-subtle);border-radius:var(--radius-md)}.ds-slot{align-items:center;gap:var(--space-1);padding:var(--space-3) var(--space-2);border:1px solid var(--color-outline-variant);border-radius:var(--radius-sm);background:var(--color-surface-quiet);cursor:pointer;transition:background-color var(--motion-fast) var(--ease-standard), border-color var(--motion-fast) var(--ease-standard), transform var(--motion-fast) var(--ease-standard);flex-direction:column;display:flex}.ds-slot:hover:not(:disabled):not(.ds-slot--selected){background:var(--color-surface-strong);border-color:var(--color-border);transform:translateY(-1px)}.ds-slot--selected{background:linear-gradient(135deg, var(--color-accent-strong), var(--color-accent));border-color:var(--color-accent);box-shadow:0 8px 20px -8px var(--color-accent-glow)}.ds-slot--selected .ds-slot__time,.ds-slot--selected .ds-slot__duration{color:var(--color-canvas)}.ds-slot:disabled{opacity:.4;cursor:not-allowed}.ds-slot__time{color:var(--color-ink-strong);font-size:var(--text-label);font-weight:700}.ds-slot__duration{color:var(--color-ink-soft);font-size:var(--text-caption)}.ds-booking-modal{z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:ds-modal-fade-in var(--motion-base) var(--ease-out);background:oklch(0% 0 0/.7);justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}@keyframes ds-modal-fade-in{0%{opacity:0}to{opacity:1}}.ds-booking-modal__content{background:var(--color-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-width:32rem;max-height:90vh;animation:ds-modal-slide-up var(--motion-base) var(--ease-out);position:relative;overflow-y:auto;box-shadow:0 -12px 48px -12px oklch(0% 0 0/.5)}@keyframes ds-modal-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.ds-booking-modal__header{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-4);border-bottom:1px solid var(--color-border-subtle);background:var(--color-surface);z-index:1;display:flex;position:sticky;top:0}.ds-booking-modal__title{color:var(--color-ink-strong);font-family:var(--font-display);font-size:var(--text-title);letter-spacing:var(--tracking-tight);margin:0;font-weight:700}.ds-booking-modal__close{border:1px solid var(--color-outline-variant);border-radius:var(--radius-sm);width:2.5rem;height:2.5rem;color:var(--color-ink);cursor:pointer;transition:border-color var(--motion-fast) var(--ease-standard), background-color var(--motion-fast) var(--ease-standard);background:0 0;justify-content:center;align-items:center;padding:0;display:flex}.ds-booking-modal__close:hover{border-color:var(--color-border);background:var(--color-surface-quiet)}.ds-booking-modal__close svg{width:1.25rem;height:1.25rem}.ds-booking-modal__body{gap:var(--space-4);padding:var(--space-4);display:grid}.ds-booking-modal__footer{gap:var(--space-3);padding:var(--space-4);border-top:1px solid var(--color-border-subtle);background:var(--color-surface);display:flex;position:sticky;bottom:0}.ds-booking-modal__footer .ds-button{flex:1}.ds-availability-badge{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);border-radius:var(--radius-pill);font-size:var(--text-caption);font-weight:600;display:inline-flex}.ds-availability-badge--available{background:color-mix(in oklch, var(--color-success) 16%, transparent);color:var(--color-success)}.ds-availability-badge--limited{background:color-mix(in oklch, var(--color-accent) 16%, transparent);color:var(--color-accent-pale)}.ds-availability-badge--unavailable{background:color-mix(in oklch, var(--color-ink-muted) 16%, transparent);color:var(--color-ink-muted)}.ds-availability-badge__dot{background:currentColor;border-radius:50%;width:6px;height:6px}.ds-booking-summary{gap:var(--space-3);padding:var(--space-4);background:var(--color-surface-quiet);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);display:grid}.ds-booking-summary__row{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.ds-booking-summary__label{color:var(--color-ink-soft);font-size:var(--text-label)}.ds-booking-summary__value{color:var(--color-ink-strong);font-size:var(--text-label);font-weight:600}.ds-booking-summary__divider{background:var(--color-border-subtle);height:1px}.ds-booking-summary__total{color:var(--color-ink-strong);font-size:var(--text-subtitle);font-weight:700}.ds-timezone{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:color-mix(in oklch, var(--color-surface-quiet) 80%, transparent);border-radius:var(--radius-sm);font-size:var(--text-caption);color:var(--color-ink-soft);display:flex}.ds-timezone__icon{width:1rem;height:1rem;color:var(--color-accent-pale)}@media (width>=48rem){.ds-booking-modal{padding:var(--space-4);align-items:center}.ds-booking-modal__content{border-radius:var(--radius-lg);max-width:46rem;max-height:85vh}.ds-booking-modal__body{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:start}.ds-booking-summary{grid-column:1/-1}.ds-calendar__day{min-height:3rem;font-size:var(--text-body)}.ds-slots__grid{grid-template-columns:repeat(auto-fill,minmax(7rem,1fr))}}@media (prefers-reduced-motion:reduce){.ds-booking-modal,.ds-booking-modal__content,.ds-calendar__day,.ds-calendar__nav-btn,.ds-slot{transition:none;animation:none}}
