@medplum/react-scheduling 5.1.31 → 5.1.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- .AppointmentFinder_timeGrid{row-gap:var(--mantine-spacing-xs)}:root{--fc-sticky-header-footer-z: 3;--fc-popover-z: 4}.fc-nH{z-index:var(--fc-popover-z)!important}.fc-7s{isolation:isolate}.fc-wa,.fc-wa *,.fc-wa *:before,.fc-wa *:after{box-sizing:border-box!important}.fc-4m,.fc-4m *{cursor:not-allowed!important}.fc-eM{-ms-overflow-style:none!important;scrollbar-width:none!important}.fc-eM::-webkit-scrollbar{display:none!important}.fc-Qo{flex-shrink:0!important}.fc-fi .fc-fl{display:flex!important;flex-direction:row!important;flex-wrap:wrap!important}.fc-Jf .fc-fl>*{float:left!important}[dir=rtl] .fc-Jf .fc-fl>*,.fc-Jf[dir=rtl] .fc-fl>*{float:right!important}.fc-Jf .fc-fl:after{content:""!important;display:block!important;clear:both!important}.fc-DP{cursor:pointer!important}.fc-An{cursor:n-resize!important}.fc-lZ{cursor:s-resize!important}.fc-9V{cursor:w-resize!important}[dir=rtl] .fc-9V,.fc-70{cursor:e-resize!important}[dir=rtl] .fc-70{cursor:w-resize!important}.fc-gQ{cursor:col-resize!important}.fc-mN,.fc-2d,.fc-B0{position:absolute!important;box-sizing:content-box!important;width:100%!important;height:100%!important}.fc-mN{padding:10px!important;margin:-10px!important}.fc-2d{padding-left:10px!important;padding-right:10px!important;margin-left:-10px!important;margin-right:-10px!important}.fc-B0{padding-top:10px!important;padding-bottom:10px!important;margin-top:-10px!important;margin-bottom:-10px!important}.fc-Z1{position:absolute;inset:0 -5px}.fc-1Y{-webkit-user-select:none;-moz-user-select:none;user-select:none}.fc-a9{visibility:hidden}.fc-Tu{border:0!important}.fc-hU{border-left:0!important;border-right:0!important;border-bottom:0!important}.fc-3e{border-top:0!important;border-left:0!important;border-right:0!important}.fc-PB,.fc-II{border-top:0!important;border-bottom:0!important}.fc-PB{border-inline-end:0!important}.fc-II{border-inline-start:0!important}.fc-MQ{border-left:0!important;border-right:0!important}.fc-Vo{border-top:0!important;border-bottom:0!important}.fc-2l{border-inline-start:1px solid transparent!important}.fc-Ao{display:flex!important;flex-direction:row!important}.fc-HH{display:flex!important;flex-direction:column!important}.fc-GV{flex-grow:1!important}.fc-g2{flex-grow:1!important;flex-basis:0!important;min-width:0!important;min-height:0!important}.fc-Ot{min-height:0!important}.fc-hp{flex-grow:1!important;flex-basis:0!important;min-width:0!important}.fc-fi .fc-uD,.fc-fi .fc-jM{display:flex!important;flex-direction:column!important}.fc-OJ{padding:0!important}.fc-oE{margin:0!important}.fc-V3{margin-top:0!important;margin-bottom:0!important}.fc-SS{margin-left:0!important;margin-right:0!important}.fc-y2{white-space:nowrap!important}.fc-CN{white-space:pre!important}.fc-gZ{overflow-anchor:none}.fc-FA{overflow:hidden!important}.fc-7T{white-space:nowrap!important;overflow:hidden!important}.fc-cc{position:relative!important}.fc-H0{position:absolute!important}.fc-6t{inset-inline-start:0!important}.fc-ct{position:absolute!important;inset:0!important}.fc-iv,.fc-Uu{position:absolute!important;left:0!important;right:0!important}.fc-7k,.fc-Yw{position:absolute!important;top:0!important;bottom:0!important}.fc-iv{top:0!important}.fc-Yw{left:0!important;right:0!important;width:0!important}@media not print{.fc-Ip{position:sticky!important}.fc-CS{position:sticky!important;top:0!important}.fc-tT{position:sticky!important;inset-inline-start:0!important}.fc-hy{position:sticky!important;top:0!important;z-index:var(--fc-sticky-header-footer-z)!important}}.fc-Np{box-sizing:content-box!important}.fc-aP{position:absolute!important;left:-10000px!important}.fc-6H{align-items:center!important}.fc-K8{align-items:flex-start!important}.fc-E3{align-items:flex-end!important}.fc-Px{position:sticky!important;bottom:0!important;z-index:var(--fc-sticky-header-footer-z)!important}.fc-J4>*{margin-top:-1px!important}.fc-J4>*>*{height:1px!important}.fc-Jf .fc-Yi{-moz-column-break-inside:avoid!important;break-inside:avoid!important}.fc-Jf .fc-uD{display:table!important;table-layout:fixed!important;width:100%!important;border-spacing:0!important;border-collapse:separate!important}.fc-Jf .fc-jM{display:table-header-group!important;-moz-column-break-inside:avoid!important;break-inside:avoid!important;background:#fff!important;z-index:9999!important;position:relative!important}.fc-fx{min-height:6em!important}.fc-BS{z-index:0}.fc-iu{z-index:1}.fc-Bk:focus-visible{z-index:2}:root{--fc-classic-button: #334155;--fc-classic-button-border: #334155;--fc-classic-button-strong: #1e293b;--fc-classic-button-strong-border: #0f172a;--fc-classic-button-outline: #47556980;--fc-classic-button-foreground: #fff;--fc-classic-primary: #3788d8;--fc-classic-primary-foreground: #fff;--fc-classic-event: var(--fc-classic-primary);--fc-classic-event-contrast: var(--fc-classic-primary-foreground);--fc-classic-background-event: #22c55e;--fc-classic-background-event-opacity: 15%;--fc-classic-background-event-foreground-opacity: 50%;--fc-classic-highlight: #cffafe66;--fc-classic-today: #facc1526;--fc-classic-now: #ef4444;--fc-classic-small-dot-width: 8px;--fc-classic-large-dot-width: 10px;--fc-classic-background: #ffffff;--fc-classic-faint: #0000000A;--fc-classic-muted: #00000014;--fc-classic-strong: #00000024;--fc-classic-foreground: #030712;--fc-classic-faint-foreground: #9ca3af;--fc-classic-muted-foreground: #6b7280;--fc-classic-border: #ddd;--fc-classic-strong-border: #9ca3af}@media not print{[data-color-scheme=dark]{--fc-classic-highlight: #3b82f633;--fc-classic-today: #fef08a1A;--fc-classic-background: #030712;--fc-classic-faint: #ffffff0A;--fc-classic-muted: #ffffff14;--fc-classic-strong: #ffffff24;--fc-classic-foreground: #fff;--fc-classic-faint-foreground: #4b5563;--fc-classic-muted-foreground: #9ca3af;--fc-classic-border: #1f2937;--fc-classic-strong-border: #374151}}.fc-classic-n5m{font-size:16px;line-height:1.5;--fc-classic-border-style: solid}.fc-classic-Z9U{appearance:button;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0;margin:0;border:0;padding:0}.fc-classic-JiE{color:inherit;text-decoration:inherit}.fc-classic-3Lc{pointer-events:none}.fc-classic-1EY{position:absolute}.fc-classic-eYX{position:relative}.fc-classic-OUe{position:sticky}.fc-classic-MaV{inset-inline:0}.fc-classic-AWB{inset-block:0}.fc-classic-11a{inset-inline-start:-4px}.fc-classic-rbS{inset-inline-start:0}.fc-classic-bEw{inset-inline-end:-4px}.fc-classic-2w8{inset-inline-end:2px}.fc-classic-dnf{inset-inline-end:-3px}.fc-classic-YDC{top:-4px}.fc-classic-n9G{top:0}.fc-classic-2ik{top:2px}.fc-classic-ERR{top:50%}.fc-classic-fJL{bottom:-4px}.fc-classic-jGI{bottom:0}.fc-classic-1V6{left:50%}.fc-classic-88I{order:-1}.fc-classic-gMS{margin:4px}.fc-classic-bvX{margin:8px}.fc-classic-jD5{margin:16px}.fc-classic-J04{margin-inline:-5px}.fc-classic-cKZ{margin-inline:2px}.fc-classic-rVY{margin-inline:4px}.fc-classic-fn8{margin-inline:8px}.fc-classic-148{margin-inline:1px}.fc-classic-cJ3{margin-block:2px}.fc-classic-V9v{margin-block:4px}.fc-classic-2tF{margin-block:8px}.fc-classic-Jzj{margin-inline-start:2px}.fc-classic-Mde{margin-inline-start:8px}.fc-classic-qvL{margin-inline-start:1px}.fc-classic-kp0{margin-inline-end:-4px}.fc-classic-3e1{margin-inline-end:2px}.fc-classic-B3G{margin-inline-end:2.5%}.fc-classic-9hC{margin-inline-end:1px}.fc-classic-Dq8{margin-top:-4px}.fc-classic-a10{margin-top:-5px}.fc-classic-Ika{margin-bottom:1px}.fc-classic-nHS{margin-bottom:-1px}.fc-classic-F99{margin-left:-4px}.fc-classic-eF2{display:contents}.fc-classic-I48{display:block}.fc-classic-dl1{display:flex}.fc-classic-i3N{display:grid}.fc-classic-pps{display:none}.fc-classic-3wQ{width:8px;height:8px}.fc-classic-vnf{width:16px;height:16px}.fc-classic-XUJ{width:20px;height:20px}.fc-classic-uuA{height:8px}.fc-classic-zrJ{height:12px}.fc-classic-84e{min-height:2px}.fc-classic-mhE{min-height:12px}.fc-classic-toR{min-height:1px}.fc-classic-roZ{width:50%}.fc-classic-hza{width:8px}.fc-classic-4Tv{width:5px}.fc-classic-kMV{max-width:200px}.fc-classic-2KU{min-width:0}.fc-classic-aNc{min-width:220px}.fc-classic-yi0{flex-shrink:0}.fc-classic-1Zl{flex-shrink:1}.fc-classic-OLq{flex-shrink:100}.fc-classic-1El{flex-grow:1}.fc-classic-jmT{rotate:180deg}.fc-classic-sgX{flex-direction:column}.fc-classic-1sP{flex-direction:row}.fc-classic-dNl{flex-wrap:wrap}.fc-classic-XpK{align-items:center}.fc-classic-N2M{justify-content:space-between}.fc-classic-E9P{justify-content:center}.fc-classic-LMv{justify-content:flex-end}.fc-classic-aTF{gap:2px}.fc-classic-NWN{gap:4px}.fc-classic-wwb{gap:12px}.fc-classic-yth{gap:20px}.fc-classic-sI7{align-self:flex-start}.fc-classic-pKG{overflow:hidden}.fc-classic-Ig4{border-radius:4px}.fc-classic-AAA{border-radius:3.40282e38px}.fc-classic-Fvv{border-radius:4px}.fc-classic-kmj{border-start-start-radius:4px;border-end-start-radius:4px}.fc-classic-Skl{border-start-end-radius:4px;border-end-end-radius:4px}.fc-classic-C2g{border-end-end-radius:4px}.fc-classic-Z7Q{border-top-left-radius:4px;border-top-right-radius:4px}.fc-classic-2qh{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.fc-classic-wsy{border-style:var(--fc-classic-border-style);border-width:1px}.fc-classic-5JF{border-style:var(--fc-classic-border-style);border-width:4px}.fc-classic-yDA{border-style:var(--fc-classic-border-style);border-width:5px}.fc-classic-Mjo{border-style:var(--fc-classic-border-style);border-width:calc(var(--fc-classic-small-dot-width) / 2)}.fc-classic-GOm{border-style:var(--fc-classic-border-style);border-width:calc(var(--fc-classic-large-dot-width) / 2)}.fc-classic-1Wx{border-inline-style:var(--fc-classic-border-style);border-inline-width:1px}.fc-classic-ybF{border-inline-style:var(--fc-classic-border-style);border-inline-width:5px}.fc-classic-JIC{border-block-style:var(--fc-classic-border-style);border-block-width:1px}.fc-classic-XM3{border-block-style:var(--fc-classic-border-style);border-block-width:5px}.fc-classic-3J4{border-inline-start-style:var(--fc-classic-border-style);border-inline-start-width:1px}.fc-classic-hhi{border-inline-start-style:var(--fc-classic-border-style);border-inline-start-width:5px}.fc-classic-jIH{border-inline-start-style:var(--fc-classic-border-style);border-inline-start-width:6px}.fc-classic-USt{border-inline-end-style:var(--fc-classic-border-style);border-inline-end-width:1px}.fc-classic-Bda{border-inline-end-style:var(--fc-classic-border-style);border-inline-end-width:5px}.fc-classic-ku3{border-top-style:var(--fc-classic-border-style);border-top-width:1px}.fc-classic-bLA{border-top-style:var(--fc-classic-border-style);border-top-width:6px}.fc-classic-zi1{border-bottom-style:var(--fc-classic-border-style);border-bottom-width:1px}.fc-classic-TN2{--fc-classic-border-style: dotted;border-style:dotted}.fc-classic-C1x{border-color:var(--fc-classic-border)}.fc-classic-sYT{border-color:var(--fc-classic-now)}.fc-classic-0Pr{border-color:var(--fc-classic-primary)}.fc-classic-vXO{border-color:var(--fc-classic-button-border)}.fc-classic-rQI{border-color:var(--fc-classic-button-strong-border)}.fc-classic-C0k{border-color:var(--fc-classic-strong-border)}.fc-classic-lNM{border-color:var(--fc-event-color)}.fc-classic-d0j{border-color:#0000}.fc-classic-Pqk{border-inline-color:#0000}.fc-classic-rif{border-block-color:#0000}.fc-classic-0qY{border-inline-start-color:var(--fc-classic-now)}.fc-classic-LaM{border-inline-start-color:#000}.fc-classic-5JV{border-inline-end-color:#000}.fc-classic-1Aa{border-top-color:var(--fc-classic-now)}.fc-classic-Jk3{background-color:var(--fc-classic-background)}.fc-classic-iYS{background-color:var(--fc-classic-faint)}.fc-classic-hLU{background-color:var(--fc-classic-highlight)}.fc-classic-k3f{background-color:var(--fc-classic-muted)}.fc-classic-YjJ{background-color:var(--fc-event-color)}@media not print{@supports (color:color-mix(in lab,red,red)){.fc-classic-hsC{background-color:color-mix(in oklab,var(--fc-event-color) var(--fc-classic-background-event-opacity),transparent)}}@supports not (color:color-mix(in lab,red,red)){.fc-classic-hsC{position:relative;isolation:isolate}.fc-classic-hsC:before{content:"";position:absolute;inset:0;background-color:var(--fc-event-color);opacity:var(--fc-classic-background-event-opacity);z-index:-1}}}.fc-classic-JWq{background-color:var(--fc-classic-button)}.fc-classic-Adi{background-color:var(--fc-classic-button-strong)}.fc-classic-KUX{padding:2px}.fc-classic-XJa{padding:6px}.fc-classic-3N5{padding:8px}.fc-classic-7A6{padding:1px}.fc-classic-oQ2{padding-inline:2px}.fc-classic-Eaq{padding-inline:10px}.fc-classic-Apf{padding-inline:12px}.fc-classic-F1o{padding-inline:1px}.fc-classic-2rx{padding-block:2px}.fc-classic-Jhn{padding-block:4px}.fc-classic-End{padding-block:6px}.fc-classic-dl6{padding-block:8px}.fc-classic-P9h{padding-block:60px}.fc-classic-z5u{padding-block:1px}.fc-classic-a7i{padding-inline-start:2px}.fc-classic-166{padding-top:2px}.fc-classic-8ub{padding-bottom:2px}.fc-classic-cM0{padding-bottom:16px}.fc-classic-HXA{text-align:center}.fc-classic-2HE{text-align:end}.fc-classic-AVD{font-size:24px;line-height:calc(2/1.5)}.fc-classic-vQz{font-size:11px;line-height:1.09091}.fc-classic-1Po{font-size:16px;line-height:1.5}.fc-classic-9yp{font-size:14px;line-height:calc(1.25/.875)}.fc-classic-a3B{font-size:12px;line-height:calc(1/.75)}.fc-classic-DIS{font-weight:700}.fc-classic-IPx{text-overflow:ellipsis}.fc-classic-TZ4{white-space:nowrap}.fc-classic-jm6{white-space:pre}.fc-classic-taq{color:var(--fc-classic-faint-foreground)}.fc-classic-m9h{color:var(--fc-classic-muted-foreground)}.fc-classic-GAX{color:var(--fc-classic-foreground)}.fc-classic-RnT{color:var(--fc-classic-button-foreground)}.fc-classic-i9F{color:var(--fc-event-contrast-color)}.fc-classic-L1Y{font-style:italic}.fc-classic-lMo{opacity:.5}.fc-classic-Q3Z{opacity:.65}.fc-classic-iTG{opacity:.75}.fc-classic-MGT{opacity:var(--fc-classic-background-event-foreground-opacity)}.fc-classic-1kP{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a}.fc-classic-tkw{box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.fc-classic-qNs{box-shadow:0 1px 3px #0000001a,0 1px 2px -1px #0000001a}.fc-classic-A3h{box-shadow:0 0 0 1px var(--fc-classic-ring-color, currentcolor)}.fc-classic-yKG{--fc-classic-ring-color: var(--fc-classic-background) }.fc-classic-2R2{outline-style:solid;outline-width:1px}.fc-classic-0Bj{outline-style:solid;outline-width:2px}.fc-classic-fFh{outline-offset:-2px}.fc-classic-3Xj{outline-offset:2px}.fc-classic-lYz{outline-color:var(--fc-classic-button-outline)}.fc-classic-zIi{outline-color:var(--fc-classic-primary)}.fc-classic-SDU{background:linear-gradient(var(--fc-classic-muted),var(--fc-classic-muted))var(--fc-classic-background)}.fc-classic-BaR{background:linear-gradient(var(--fc-classic-strong),var(--fc-classic-strong))var(--fc-classic-background)}.fc-classic-mAY:not(:is(:where(.fc-classic-bCs):hover *)){opacity:.65}@media not all and (hover:hover){.fc-classic-mAY{opacity:.65}}@media not print{.fc-classic-hbn{background-color:var(--fc-classic-today)}}@media(hover:hover){.fc-classic-vs6:is(:where(.fc-classic-bCs):hover *){display:block}.fc-classic-Ogp:is(:where(.fc-classic-bCs):hover *){text-decoration-line:underline}}.fc-classic-uk6:first-child{border-start-start-radius:4px;border-end-start-radius:4px}.fc-classic-Tuc:last-child{border-start-end-radius:4px;border-end-end-radius:4px}@media(hover:hover){.fc-classic-bqK:hover{border-color:var(--fc-classic-button-strong-border)}.fc-classic-9Rj:hover{background-color:var(--fc-classic-button-strong)}.fc-classic-Ubk:hover{background-color:var(--fc-classic-faint)}.fc-classic-4yP:hover{background-color:var(--fc-classic-muted)}.fc-classic-Eu0:hover{text-decoration-line:underline}}.fc-classic-OIx:focus-visible{background-color:var(--fc-classic-faint)}.fc-classic-tCP:focus-visible{background-color:var(--fc-classic-muted)}.fc-classic-uqo:focus-visible{outline-style:solid;outline-width:2px}.fc-classic-sOR:focus-visible{outline-style:solid;outline-width:3px}.fc-classic-aIH:active{border-color:var(--fc-classic-button-strong-border)}.fc-classic-5ky:active{background-color:var(--fc-classic-button-strong)}.fc-classic-28F:active{background-color:var(--fc-classic-muted)}.fc-classic-8gz:active{background-color:var(--fc-classic-strong)}@media print{.fc-classic-jsy{border-width:1px}.fc-classic-nQ5{border-color:var(--fc-classic-button-strong-border)}.fc-classic-DO7{border-color:var(--fc-event-color)}.fc-classic-4MR{border-color:#000}.fc-classic-vwH{background-color:#fff}.fc-classic-cfp{color:#000}}[dir=rtl] .fc-classic-jY6{rotate:none}[dir=rtl] .fc-classic-asP{rotate:180deg}.Calendar_wrapper{height:100%;display:flex;flex-direction:column}.Calendar_calendar{flex-grow:1;min-width:0}.dayGridMonth.Calendar_calendar,.timeGridWeek.Calendar_calendar{min-width:480px}.dayGridMonth.Calendar_calendar .Calendar_listItemEventBefore{display:none}.Calendar_interactiveEvent{cursor:pointer}.Calendar_eventTitle{order:1}.Calendar_eventTime{order:2}.Calendar_eventInner{overflow:hidden}.Calendar_eventTitle{white-space:normal;overflow:visible}.Calendar_eventTitle{font-weight:500}.Calendar_eventTime{font-size:10px}.Calendar_shortEvent{.Calendar_eventInner{flex-direction:column;align-items:inherit}}.Calendar_backgroundEventInner>div{opacity:1}.Calendar_backgroundEvent{container-type:size}@container (height < 50px){.Calendar_backgroundEventInner>div{font-size:10px;padding-top:2px}}.Calendar_backgroundEvent{border-radius:var(--mantine-radius-sm)}:root{--fc-classic-today: #b8e0ff4d;[data-color-scheme=dark]{--fc-classic-today: #406e934d}}.Calendar_appointment{--cal-color: light-dark(var(--mantine-color-white), var(--mantine-color-white));--cal-background-color: light-dark(var(--mantine-color-blue-6), var(--mantine-color-blue-8))}.Calendar_slot{--cal-color: light-dark(var(--mantine-color-dark-4), var(--mantine-color-gray-4));--cal-background-color: light-dark(var(--mantine-color-gray-4), var(--mantine-color-gray-7))}.dayGridMonth .Calendar_event:hover{background-color:var(--cal-background-color)}.Calendar_appointment.Calendar_pending{--cal-color: light-dark(var(--mantine-color-blue-8), var(--mantine-color-blue-6));--cal-background-color: light-dark(var(--mantine-color-white), var(--mantine-color-black));border:1px solid var(--cal-color)}.Calendar_slot.Calendar_free{--cal-color: light-dark(var(--mantine-color-dark-7), var(--mantine-color-gray-1));--cal-background-color: light-dark(var(--mantine-color-green-1), var(--mantine-color-green-9))}.Calendar_event,.Calendar_backgroundEvent{background-color:var(--cal-background-color);.Calendar_eventInner{color:var(--cal-color)}.Calendar_backgroundEventInner>div{color:var(--cal-color)}}.Calendar_nonBusinessHours{background-color:light-dark(#0000000A,#FFFFFF2A)}.ScheduleAvailabilityEditor_week{display:grid;grid-template-columns:repeat(5,max-content) 1fr;align-items:center;column-gap:var(--mantine-spacing-xs);row-gap:var(--mantine-spacing-xs);grid-auto-rows:minmax(calc(2.25rem * var(--mantine-scale)),auto)}.ScheduleAvailabilityEditor_dayCell{grid-column:1;padding-right:var(--mantine-spacing-sm)}.ScheduleAvailabilityEditor_rangeStart{grid-column:2}.ScheduleAvailabilityEditor_rangeSeparator{grid-column:3}.ScheduleAvailabilityEditor_rangeEnd{grid-column:4}.ScheduleAvailabilityEditor_addAction{grid-column:5}.ScheduleAvailabilityEditor_removeAction{grid-column:6}.ScheduleAvailabilityEditor_unavailable{grid-column:2 / -1}.ScheduleAvailabilityEditor_overrideToggle{min-height:calc(2.25rem * var(--mantine-scale))}
1
+ .AppointmentFinder_timeGrid{row-gap:var(--mantine-spacing-xs)}.AppointmentFinder_layout{display:flex;flex-wrap:wrap;gap:var(--mantine-spacing-lg);align-items:flex-start}.AppointmentFinder_form{flex:1 1 300px;min-width:0;max-width:420px}.AppointmentFinder_results{flex:1 1 380px;min-width:0}:root{--fc-sticky-header-footer-z: 3;--fc-popover-z: 4}.fc-nH{z-index:var(--fc-popover-z)!important}.fc-7s{isolation:isolate}.fc-wa,.fc-wa *,.fc-wa *:before,.fc-wa *:after{box-sizing:border-box!important}.fc-4m,.fc-4m *{cursor:not-allowed!important}.fc-eM{-ms-overflow-style:none!important;scrollbar-width:none!important}.fc-eM::-webkit-scrollbar{display:none!important}.fc-Qo{flex-shrink:0!important}.fc-fi .fc-fl{display:flex!important;flex-direction:row!important;flex-wrap:wrap!important}.fc-Jf .fc-fl>*{float:left!important}[dir=rtl] .fc-Jf .fc-fl>*,.fc-Jf[dir=rtl] .fc-fl>*{float:right!important}.fc-Jf .fc-fl:after{content:""!important;display:block!important;clear:both!important}.fc-DP{cursor:pointer!important}.fc-An{cursor:n-resize!important}.fc-lZ{cursor:s-resize!important}.fc-9V{cursor:w-resize!important}[dir=rtl] .fc-9V,.fc-70{cursor:e-resize!important}[dir=rtl] .fc-70{cursor:w-resize!important}.fc-gQ{cursor:col-resize!important}.fc-mN,.fc-2d,.fc-B0{position:absolute!important;box-sizing:content-box!important;width:100%!important;height:100%!important}.fc-mN{padding:10px!important;margin:-10px!important}.fc-2d{padding-left:10px!important;padding-right:10px!important;margin-left:-10px!important;margin-right:-10px!important}.fc-B0{padding-top:10px!important;padding-bottom:10px!important;margin-top:-10px!important;margin-bottom:-10px!important}.fc-Z1{position:absolute;inset:0 -5px}.fc-1Y{-webkit-user-select:none;-moz-user-select:none;user-select:none}.fc-a9{visibility:hidden}.fc-Tu{border:0!important}.fc-hU{border-left:0!important;border-right:0!important;border-bottom:0!important}.fc-3e{border-top:0!important;border-left:0!important;border-right:0!important}.fc-PB,.fc-II{border-top:0!important;border-bottom:0!important}.fc-PB{border-inline-end:0!important}.fc-II{border-inline-start:0!important}.fc-MQ{border-left:0!important;border-right:0!important}.fc-Vo{border-top:0!important;border-bottom:0!important}.fc-2l{border-inline-start:1px solid transparent!important}.fc-Ao{display:flex!important;flex-direction:row!important}.fc-HH{display:flex!important;flex-direction:column!important}.fc-GV{flex-grow:1!important}.fc-g2{flex-grow:1!important;flex-basis:0!important;min-width:0!important;min-height:0!important}.fc-Ot{min-height:0!important}.fc-hp{flex-grow:1!important;flex-basis:0!important;min-width:0!important}.fc-fi .fc-uD,.fc-fi .fc-jM{display:flex!important;flex-direction:column!important}.fc-OJ{padding:0!important}.fc-oE{margin:0!important}.fc-V3{margin-top:0!important;margin-bottom:0!important}.fc-SS{margin-left:0!important;margin-right:0!important}.fc-y2{white-space:nowrap!important}.fc-CN{white-space:pre!important}.fc-gZ{overflow-anchor:none}.fc-FA{overflow:hidden!important}.fc-7T{white-space:nowrap!important;overflow:hidden!important}.fc-cc{position:relative!important}.fc-H0{position:absolute!important}.fc-6t{inset-inline-start:0!important}.fc-ct{position:absolute!important;inset:0!important}.fc-iv,.fc-Uu{position:absolute!important;left:0!important;right:0!important}.fc-7k,.fc-Yw{position:absolute!important;top:0!important;bottom:0!important}.fc-iv{top:0!important}.fc-Yw{left:0!important;right:0!important;width:0!important}@media not print{.fc-Ip{position:sticky!important}.fc-CS{position:sticky!important;top:0!important}.fc-tT{position:sticky!important;inset-inline-start:0!important}.fc-hy{position:sticky!important;top:0!important;z-index:var(--fc-sticky-header-footer-z)!important}}.fc-Np{box-sizing:content-box!important}.fc-aP{position:absolute!important;left:-10000px!important}.fc-6H{align-items:center!important}.fc-K8{align-items:flex-start!important}.fc-E3{align-items:flex-end!important}.fc-Px{position:sticky!important;bottom:0!important;z-index:var(--fc-sticky-header-footer-z)!important}.fc-J4>*{margin-top:-1px!important}.fc-J4>*>*{height:1px!important}.fc-Jf .fc-Yi{-moz-column-break-inside:avoid!important;break-inside:avoid!important}.fc-Jf .fc-uD{display:table!important;table-layout:fixed!important;width:100%!important;border-spacing:0!important;border-collapse:separate!important}.fc-Jf .fc-jM{display:table-header-group!important;-moz-column-break-inside:avoid!important;break-inside:avoid!important;background:#fff!important;z-index:9999!important;position:relative!important}.fc-fx{min-height:6em!important}.fc-BS{z-index:0}.fc-iu{z-index:1}.fc-Bk:focus-visible{z-index:2}:root{--fc-classic-button: #334155;--fc-classic-button-border: #334155;--fc-classic-button-strong: #1e293b;--fc-classic-button-strong-border: #0f172a;--fc-classic-button-outline: #47556980;--fc-classic-button-foreground: #fff;--fc-classic-primary: #3788d8;--fc-classic-primary-foreground: #fff;--fc-classic-event: var(--fc-classic-primary);--fc-classic-event-contrast: var(--fc-classic-primary-foreground);--fc-classic-background-event: #22c55e;--fc-classic-background-event-opacity: 15%;--fc-classic-background-event-foreground-opacity: 50%;--fc-classic-highlight: #cffafe66;--fc-classic-today: #facc1526;--fc-classic-now: #ef4444;--fc-classic-small-dot-width: 8px;--fc-classic-large-dot-width: 10px;--fc-classic-background: #ffffff;--fc-classic-faint: #0000000A;--fc-classic-muted: #00000014;--fc-classic-strong: #00000024;--fc-classic-foreground: #030712;--fc-classic-faint-foreground: #9ca3af;--fc-classic-muted-foreground: #6b7280;--fc-classic-border: #ddd;--fc-classic-strong-border: #9ca3af}@media not print{[data-color-scheme=dark]{--fc-classic-highlight: #3b82f633;--fc-classic-today: #fef08a1A;--fc-classic-background: #030712;--fc-classic-faint: #ffffff0A;--fc-classic-muted: #ffffff14;--fc-classic-strong: #ffffff24;--fc-classic-foreground: #fff;--fc-classic-faint-foreground: #4b5563;--fc-classic-muted-foreground: #9ca3af;--fc-classic-border: #1f2937;--fc-classic-strong-border: #374151}}.fc-classic-n5m{font-size:16px;line-height:1.5;--fc-classic-border-style: solid}.fc-classic-Z9U{appearance:button;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0;margin:0;border:0;padding:0}.fc-classic-JiE{color:inherit;text-decoration:inherit}.fc-classic-3Lc{pointer-events:none}.fc-classic-1EY{position:absolute}.fc-classic-eYX{position:relative}.fc-classic-OUe{position:sticky}.fc-classic-MaV{inset-inline:0}.fc-classic-AWB{inset-block:0}.fc-classic-11a{inset-inline-start:-4px}.fc-classic-rbS{inset-inline-start:0}.fc-classic-bEw{inset-inline-end:-4px}.fc-classic-2w8{inset-inline-end:2px}.fc-classic-dnf{inset-inline-end:-3px}.fc-classic-YDC{top:-4px}.fc-classic-n9G{top:0}.fc-classic-2ik{top:2px}.fc-classic-ERR{top:50%}.fc-classic-fJL{bottom:-4px}.fc-classic-jGI{bottom:0}.fc-classic-1V6{left:50%}.fc-classic-88I{order:-1}.fc-classic-gMS{margin:4px}.fc-classic-bvX{margin:8px}.fc-classic-jD5{margin:16px}.fc-classic-J04{margin-inline:-5px}.fc-classic-cKZ{margin-inline:2px}.fc-classic-rVY{margin-inline:4px}.fc-classic-fn8{margin-inline:8px}.fc-classic-148{margin-inline:1px}.fc-classic-cJ3{margin-block:2px}.fc-classic-V9v{margin-block:4px}.fc-classic-2tF{margin-block:8px}.fc-classic-Jzj{margin-inline-start:2px}.fc-classic-Mde{margin-inline-start:8px}.fc-classic-qvL{margin-inline-start:1px}.fc-classic-kp0{margin-inline-end:-4px}.fc-classic-3e1{margin-inline-end:2px}.fc-classic-B3G{margin-inline-end:2.5%}.fc-classic-9hC{margin-inline-end:1px}.fc-classic-Dq8{margin-top:-4px}.fc-classic-a10{margin-top:-5px}.fc-classic-Ika{margin-bottom:1px}.fc-classic-nHS{margin-bottom:-1px}.fc-classic-F99{margin-left:-4px}.fc-classic-eF2{display:contents}.fc-classic-I48{display:block}.fc-classic-dl1{display:flex}.fc-classic-i3N{display:grid}.fc-classic-pps{display:none}.fc-classic-3wQ{width:8px;height:8px}.fc-classic-vnf{width:16px;height:16px}.fc-classic-XUJ{width:20px;height:20px}.fc-classic-uuA{height:8px}.fc-classic-zrJ{height:12px}.fc-classic-84e{min-height:2px}.fc-classic-mhE{min-height:12px}.fc-classic-toR{min-height:1px}.fc-classic-roZ{width:50%}.fc-classic-hza{width:8px}.fc-classic-4Tv{width:5px}.fc-classic-kMV{max-width:200px}.fc-classic-2KU{min-width:0}.fc-classic-aNc{min-width:220px}.fc-classic-yi0{flex-shrink:0}.fc-classic-1Zl{flex-shrink:1}.fc-classic-OLq{flex-shrink:100}.fc-classic-1El{flex-grow:1}.fc-classic-jmT{rotate:180deg}.fc-classic-sgX{flex-direction:column}.fc-classic-1sP{flex-direction:row}.fc-classic-dNl{flex-wrap:wrap}.fc-classic-XpK{align-items:center}.fc-classic-N2M{justify-content:space-between}.fc-classic-E9P{justify-content:center}.fc-classic-LMv{justify-content:flex-end}.fc-classic-aTF{gap:2px}.fc-classic-NWN{gap:4px}.fc-classic-wwb{gap:12px}.fc-classic-yth{gap:20px}.fc-classic-sI7{align-self:flex-start}.fc-classic-pKG{overflow:hidden}.fc-classic-Ig4{border-radius:4px}.fc-classic-AAA{border-radius:3.40282e38px}.fc-classic-Fvv{border-radius:4px}.fc-classic-kmj{border-start-start-radius:4px;border-end-start-radius:4px}.fc-classic-Skl{border-start-end-radius:4px;border-end-end-radius:4px}.fc-classic-C2g{border-end-end-radius:4px}.fc-classic-Z7Q{border-top-left-radius:4px;border-top-right-radius:4px}.fc-classic-2qh{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.fc-classic-wsy{border-style:var(--fc-classic-border-style);border-width:1px}.fc-classic-5JF{border-style:var(--fc-classic-border-style);border-width:4px}.fc-classic-yDA{border-style:var(--fc-classic-border-style);border-width:5px}.fc-classic-Mjo{border-style:var(--fc-classic-border-style);border-width:calc(var(--fc-classic-small-dot-width) / 2)}.fc-classic-GOm{border-style:var(--fc-classic-border-style);border-width:calc(var(--fc-classic-large-dot-width) / 2)}.fc-classic-1Wx{border-inline-style:var(--fc-classic-border-style);border-inline-width:1px}.fc-classic-ybF{border-inline-style:var(--fc-classic-border-style);border-inline-width:5px}.fc-classic-JIC{border-block-style:var(--fc-classic-border-style);border-block-width:1px}.fc-classic-XM3{border-block-style:var(--fc-classic-border-style);border-block-width:5px}.fc-classic-3J4{border-inline-start-style:var(--fc-classic-border-style);border-inline-start-width:1px}.fc-classic-hhi{border-inline-start-style:var(--fc-classic-border-style);border-inline-start-width:5px}.fc-classic-jIH{border-inline-start-style:var(--fc-classic-border-style);border-inline-start-width:6px}.fc-classic-USt{border-inline-end-style:var(--fc-classic-border-style);border-inline-end-width:1px}.fc-classic-Bda{border-inline-end-style:var(--fc-classic-border-style);border-inline-end-width:5px}.fc-classic-ku3{border-top-style:var(--fc-classic-border-style);border-top-width:1px}.fc-classic-bLA{border-top-style:var(--fc-classic-border-style);border-top-width:6px}.fc-classic-zi1{border-bottom-style:var(--fc-classic-border-style);border-bottom-width:1px}.fc-classic-TN2{--fc-classic-border-style: dotted;border-style:dotted}.fc-classic-C1x{border-color:var(--fc-classic-border)}.fc-classic-sYT{border-color:var(--fc-classic-now)}.fc-classic-0Pr{border-color:var(--fc-classic-primary)}.fc-classic-vXO{border-color:var(--fc-classic-button-border)}.fc-classic-rQI{border-color:var(--fc-classic-button-strong-border)}.fc-classic-C0k{border-color:var(--fc-classic-strong-border)}.fc-classic-lNM{border-color:var(--fc-event-color)}.fc-classic-d0j{border-color:#0000}.fc-classic-Pqk{border-inline-color:#0000}.fc-classic-rif{border-block-color:#0000}.fc-classic-0qY{border-inline-start-color:var(--fc-classic-now)}.fc-classic-LaM{border-inline-start-color:#000}.fc-classic-5JV{border-inline-end-color:#000}.fc-classic-1Aa{border-top-color:var(--fc-classic-now)}.fc-classic-Jk3{background-color:var(--fc-classic-background)}.fc-classic-iYS{background-color:var(--fc-classic-faint)}.fc-classic-hLU{background-color:var(--fc-classic-highlight)}.fc-classic-k3f{background-color:var(--fc-classic-muted)}.fc-classic-YjJ{background-color:var(--fc-event-color)}@media not print{@supports (color:color-mix(in lab,red,red)){.fc-classic-hsC{background-color:color-mix(in oklab,var(--fc-event-color) var(--fc-classic-background-event-opacity),transparent)}}@supports not (color:color-mix(in lab,red,red)){.fc-classic-hsC{position:relative;isolation:isolate}.fc-classic-hsC:before{content:"";position:absolute;inset:0;background-color:var(--fc-event-color);opacity:var(--fc-classic-background-event-opacity);z-index:-1}}}.fc-classic-JWq{background-color:var(--fc-classic-button)}.fc-classic-Adi{background-color:var(--fc-classic-button-strong)}.fc-classic-KUX{padding:2px}.fc-classic-XJa{padding:6px}.fc-classic-3N5{padding:8px}.fc-classic-7A6{padding:1px}.fc-classic-oQ2{padding-inline:2px}.fc-classic-Eaq{padding-inline:10px}.fc-classic-Apf{padding-inline:12px}.fc-classic-F1o{padding-inline:1px}.fc-classic-2rx{padding-block:2px}.fc-classic-Jhn{padding-block:4px}.fc-classic-End{padding-block:6px}.fc-classic-dl6{padding-block:8px}.fc-classic-P9h{padding-block:60px}.fc-classic-z5u{padding-block:1px}.fc-classic-a7i{padding-inline-start:2px}.fc-classic-166{padding-top:2px}.fc-classic-8ub{padding-bottom:2px}.fc-classic-cM0{padding-bottom:16px}.fc-classic-HXA{text-align:center}.fc-classic-2HE{text-align:end}.fc-classic-AVD{font-size:24px;line-height:calc(2/1.5)}.fc-classic-vQz{font-size:11px;line-height:1.09091}.fc-classic-1Po{font-size:16px;line-height:1.5}.fc-classic-9yp{font-size:14px;line-height:calc(1.25/.875)}.fc-classic-a3B{font-size:12px;line-height:calc(1/.75)}.fc-classic-DIS{font-weight:700}.fc-classic-IPx{text-overflow:ellipsis}.fc-classic-TZ4{white-space:nowrap}.fc-classic-jm6{white-space:pre}.fc-classic-taq{color:var(--fc-classic-faint-foreground)}.fc-classic-m9h{color:var(--fc-classic-muted-foreground)}.fc-classic-GAX{color:var(--fc-classic-foreground)}.fc-classic-RnT{color:var(--fc-classic-button-foreground)}.fc-classic-i9F{color:var(--fc-event-contrast-color)}.fc-classic-L1Y{font-style:italic}.fc-classic-lMo{opacity:.5}.fc-classic-Q3Z{opacity:.65}.fc-classic-iTG{opacity:.75}.fc-classic-MGT{opacity:var(--fc-classic-background-event-foreground-opacity)}.fc-classic-1kP{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a}.fc-classic-tkw{box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.fc-classic-qNs{box-shadow:0 1px 3px #0000001a,0 1px 2px -1px #0000001a}.fc-classic-A3h{box-shadow:0 0 0 1px var(--fc-classic-ring-color, currentcolor)}.fc-classic-yKG{--fc-classic-ring-color: var(--fc-classic-background) }.fc-classic-2R2{outline-style:solid;outline-width:1px}.fc-classic-0Bj{outline-style:solid;outline-width:2px}.fc-classic-fFh{outline-offset:-2px}.fc-classic-3Xj{outline-offset:2px}.fc-classic-lYz{outline-color:var(--fc-classic-button-outline)}.fc-classic-zIi{outline-color:var(--fc-classic-primary)}.fc-classic-SDU{background:linear-gradient(var(--fc-classic-muted),var(--fc-classic-muted))var(--fc-classic-background)}.fc-classic-BaR{background:linear-gradient(var(--fc-classic-strong),var(--fc-classic-strong))var(--fc-classic-background)}.fc-classic-mAY:not(:is(:where(.fc-classic-bCs):hover *)){opacity:.65}@media not all and (hover:hover){.fc-classic-mAY{opacity:.65}}@media not print{.fc-classic-hbn{background-color:var(--fc-classic-today)}}@media(hover:hover){.fc-classic-vs6:is(:where(.fc-classic-bCs):hover *){display:block}.fc-classic-Ogp:is(:where(.fc-classic-bCs):hover *){text-decoration-line:underline}}.fc-classic-uk6:first-child{border-start-start-radius:4px;border-end-start-radius:4px}.fc-classic-Tuc:last-child{border-start-end-radius:4px;border-end-end-radius:4px}@media(hover:hover){.fc-classic-bqK:hover{border-color:var(--fc-classic-button-strong-border)}.fc-classic-9Rj:hover{background-color:var(--fc-classic-button-strong)}.fc-classic-Ubk:hover{background-color:var(--fc-classic-faint)}.fc-classic-4yP:hover{background-color:var(--fc-classic-muted)}.fc-classic-Eu0:hover{text-decoration-line:underline}}.fc-classic-OIx:focus-visible{background-color:var(--fc-classic-faint)}.fc-classic-tCP:focus-visible{background-color:var(--fc-classic-muted)}.fc-classic-uqo:focus-visible{outline-style:solid;outline-width:2px}.fc-classic-sOR:focus-visible{outline-style:solid;outline-width:3px}.fc-classic-aIH:active{border-color:var(--fc-classic-button-strong-border)}.fc-classic-5ky:active{background-color:var(--fc-classic-button-strong)}.fc-classic-28F:active{background-color:var(--fc-classic-muted)}.fc-classic-8gz:active{background-color:var(--fc-classic-strong)}@media print{.fc-classic-jsy{border-width:1px}.fc-classic-nQ5{border-color:var(--fc-classic-button-strong-border)}.fc-classic-DO7{border-color:var(--fc-event-color)}.fc-classic-4MR{border-color:#000}.fc-classic-vwH{background-color:#fff}.fc-classic-cfp{color:#000}}[dir=rtl] .fc-classic-jY6{rotate:none}[dir=rtl] .fc-classic-asP{rotate:180deg}.CalendarBase_wrapper{height:100%;display:flex;flex-direction:column}.CalendarBase_calendar{flex-grow:1;min-width:0}.dayGridMonth.CalendarBase_calendar,.timeGridWeek.CalendarBase_calendar{min-width:480px}.dayGridMonth.CalendarBase_calendar .CalendarBase_listItemEventBefore{display:none}.CalendarBase_interactiveEvent,.CalendarBase_selectableDay{cursor:pointer}.CalendarBase_selectableDay:hover{background-color:light-dark(#0000000a,#ffffff14)}.CalendarBase_selectedRange{background-color:light-dark(#228be62e,#4dabf73d)}.CalendarBase_eventTitle{order:1}.CalendarBase_eventTime{order:2}.CalendarBase_eventInner{overflow:hidden}.CalendarBase_eventTitle{white-space:normal;overflow:visible}.CalendarBase_eventTitle{font-weight:500}.CalendarBase_eventTime{font-size:10px}.CalendarBase_shortEvent{.CalendarBase_eventInner{flex-direction:column;align-items:inherit}}.CalendarBase_backgroundEventInner>div{opacity:1}.CalendarBase_backgroundEvent{container-type:size}@container (height < 50px){.CalendarBase_backgroundEventInner>div{font-size:10px;padding-top:2px}}.CalendarBase_backgroundEvent{border-radius:var(--mantine-radius-sm)}:root{--fc-classic-today: #b8e0ff4d;[data-color-scheme=dark]{--fc-classic-today: #406e934d}}.CalendarBase_nonBusinessHours{background-color:light-dark(#0000000A,#FFFFFF2A)}.dayGridMonth .CalendarBase_event{background-color:var(--fc-event-color);.CalendarBase_eventInner{color:var(--fc-event-contrast-color)}}.Calendar_wrapper{.appointment{--cal-color: light-dark(var(--mantine-color-white), var(--mantine-color-white));--cal-background-color: light-dark(var(--mantine-color-blue-6), var(--mantine-color-blue-8))}.slot{--cal-color: light-dark(var(--mantine-color-dark-4), var(--mantine-color-gray-4));--cal-background-color: light-dark(var(--mantine-color-gray-4), var(--mantine-color-gray-7))}.dayGridMonth .Calendar_event:hover{background-color:var(--cal-background-color)}.appointment.pending{--cal-color: light-dark(var(--mantine-color-blue-8), var(--mantine-color-blue-6));--cal-background-color: light-dark(var(--mantine-color-white), var(--mantine-color-black));border:1px solid var(--cal-color)}.slot.free{--cal-color: light-dark(var(--mantine-color-dark-7), var(--mantine-color-gray-1));--cal-background-color: light-dark(var(--mantine-color-green-1), var(--mantine-color-green-9))}.Calendar_event,.Calendar_backgroundEvent{background-color:var(--cal-background-color);.Calendar_eventInner{color:var(--cal-color)}.Calendar_backgroundEventInner>div{color:var(--cal-color)}}.Calendar_eventTitle:after{opacity:.7}.appointment.proposed{.Calendar_eventTitle:after{content:" (proposed)"}}.appointment.cancelled{.Calendar_eventTitle:after{content:" (cancelled)"}}.appointment.noshow{.Calendar_eventTitle:after{content:" (no show)"}}.appointment.entered-in-error{.Calendar_eventTitle:after{content:" (entered in error)"}}.appointment.checked-in{.Calendar_eventTitle:after{content:" (checked in)"}}.appointment.waitlist{.Calendar_eventTitle:after{content:" (waitlist)"}}}.appointment .MultiCalendar_eventInner{margin-left:8px;&:before{content:"";width:4px;position:absolute;top:2px;left:2px;bottom:2px;border-radius:8px;background-color:var(--status-color)}}.appointment.pending,.appointment.proposed{--status-color: var(--mantine-color-yellow-3)}.appointment.booked,.appointment.arrived,.appointment.fulfilled,.appointment.checked-in{--status-color: var(--mantine-color-blue-3)}.appointment.cancelled,.appointment.noshow{--status-color: var(--mantine-color-red-3)}.MultiCalendar_eventTime{color:var(--mantine-color-gray-2)}.ScheduleAvailabilityEditor_week{display:grid;grid-template-columns:repeat(5,max-content) 1fr;align-items:center;column-gap:var(--mantine-spacing-xs);row-gap:var(--mantine-spacing-xs);grid-auto-rows:minmax(calc(2.25rem * var(--mantine-scale)),auto)}.ScheduleAvailabilityEditor_dayCell{grid-column:1;padding-right:var(--mantine-spacing-sm)}.ScheduleAvailabilityEditor_rangeStart{grid-column:2}.ScheduleAvailabilityEditor_rangeSeparator{grid-column:3}.ScheduleAvailabilityEditor_rangeEnd{grid-column:4}.ScheduleAvailabilityEditor_addAction{grid-column:5}.ScheduleAvailabilityEditor_removeAction{grid-column:6}.ScheduleAvailabilityEditor_unavailable{grid-column:2 / -1}.ScheduleAvailabilityEditor_overrideToggle{min-height:calc(2.25rem * var(--mantine-scale))}.CalendarRow_row{width:100%;padding:6px 8px;border-radius:var(--mantine-radius-sm);text-align:left}.CalendarRow_row[data-interactive]{cursor:pointer}.CalendarRow_row[data-interactive]:hover{background-color:light-dark(var(--mantine-color-gray-0),var(--mantine-color-dark-6))}.CalendarRow_eyeSlot{display:flex}.CalendarRow_eyeOff{color:light-dark(var(--mantine-color-gray-5),var(--mantine-color-dark-2))}.CalendarRow_eyeHint{color:light-dark(var(--mantine-color-gray-5),var(--mantine-color-dark-2));opacity:0;transition:opacity .15s ease}.CalendarRow_row:hover .CalendarRow_eyeHint{opacity:1}.SectionHeader_chevron{transition:transform .2s ease;cursor:pointer;color:light-dark(var(--mantine-color-gray-7),var(--mantine-color-dark-1))}.SectionHeader_chevron[data-collapsed]{transform:rotate(-90deg)}.SectionHeader_chevron:hover{background-color:light-dark(var(--mantine-color-gray-0),var(--mantine-color-dark-6))}.SectionHeader_title{cursor:pointer}.SchedulingWorkspace_root{display:flex;align-items:stretch;gap:var(--mantine-spacing-md);height:100%;width:100%}.SchedulingWorkspace_sidebar{flex-shrink:0;width:300px;overflow-y:auto}.SchedulingWorkspace_calendar{position:relative;flex:1;min-width:0;overflow-x:auto}.SchedulingWorkspace_bookingPane{flex-shrink:0;width:320px;overflow-y:auto}.SchedulingWorkspace_bookingPaneWide{width:760px}.SchedulingWorkspace_alert{margin-bottom:var(--mantine-spacing-xs)}
2
2
  /*# sourceMappingURL=index.css.map */
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/AppointmentFinder/AppointmentFinder.module.css", "../../../../node_modules/@fullcalendar/react/skeleton.css", "../../../../node_modules/@fullcalendar/react/themes/classic/palette.css", "../../../../node_modules/@fullcalendar/react/themes/classic/theme.css", "../../src/Calendar/Calendar.module.css", "../../src/ScheduleAvailabilityEditor/ScheduleAvailabilityEditor.module.css"],
4
- "sourcesContent": ["/* Times wrap into as many columns as fit rather than a fixed grid, so a card\n holding four times is not padded out to the width of one holding twenty. */\n.timeGrid {\n row-gap: var(--mantine-spacing-xs);\n}\n", "\n:root {\n --fc-sticky-header-footer-z: 3;\n --fc-popover-z: 4;\n}\n\n.fc-nH {\n z-index: var(--fc-popover-z) !important;\n}\n\n.fc-7s {\n isolation: isolate;\n}\n\n/*\nThis will prevent all ancestors from customizing their box size unless they use .contentBox\n*/\n.fc-wa,\n.fc-wa *,\n.fc-wa *:before,\n.fc-wa *:after {\n box-sizing: border-box !important;\n}\n\n/* classes attached to <body> */\n.fc-4m,\n.fc-4m * {\n cursor: not-allowed !important;\n}\n\n.fc-eM {\n -ms-overflow-style: none !important; /* IE and Edge */\n scrollbar-width: none !important; /* Firefox */\n}\n\n/* Hide scrollbar for Chrome, Safari and Opera */\n.fc-eM::-webkit-scrollbar {\n display: none !important;\n}\n\n.fc-Qo {\n flex-shrink: 0 !important;\n}\n\n.fc-fi .fc-fl {\n display: flex !important;\n flex-direction: row !important;\n flex-wrap: wrap !important;\n}\n\n/* HACK for Safari. Can't do break-inside:avoid with flexbox items, likely b/c it's not standard:\n https://stackoverflow.com/a/60256345 */\n.fc-Jf .fc-fl > * {\n float: left !important;\n}\n\n[dir=rtl] .fc-Jf .fc-fl > *,\n.fc-Jf[dir=rtl] .fc-fl > * {\n float: right !important;\n}\n\n.fc-Jf .fc-fl::after {\n content: \"\" !important;\n display: block !important;\n clear: both !important;\n}\n\n.fc-DP {\n cursor: pointer !important;\n}\n\n.fc-An {\n cursor: n-resize !important;\n}\n\n.fc-lZ {\n cursor: s-resize !important;\n}\n\n.fc-9V {\n cursor: w-resize !important;\n}\n\n[dir=rtl] .fc-9V {\n cursor: e-resize !important;\n}\n\n.fc-70 {\n cursor: e-resize !important;\n}\n\n[dir=rtl] .fc-70 {\n cursor: w-resize !important;\n}\n\n.fc-gQ {\n cursor: col-resize !important;\n}\n\n.fc-mN,\n.fc-2d,\n.fc-B0 {\n position: absolute !important;\n box-sizing: content-box !important;\n width: 100% !important;\n height: 100% !important;\n}\n\n.fc-mN {\n padding: 10px !important;\n margin: -10px !important;\n}\n\n.fc-2d {\n padding-left: 10px !important;\n padding-right: 10px !important;\n margin-left: -10px !important;\n margin-right: -10px !important;\n}\n\n.fc-B0 {\n padding-top: 10px !important;\n padding-bottom: 10px !important;\n margin-top: -10px !important;\n margin-bottom: -10px !important;\n}\n\n/* QUESTION: why not use -left -right instead of negative margins/padding for ALL? */\n.fc-Z1 {\n position: absolute;\n top: 0;\n bottom: 0;\n left: -5px;\n right: -5px;\n}\n\n.fc-1Y {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n\n.fc-a9 {\n visibility: hidden;\n}\n\n/* Border Utils */\n/* ------------------------------------------------------------------------------------------------- */\n\n/* TODO: break-out to x and y. don't have \"only\" all */\n/* TODO: instead of \"border\" utils, call them \"borderless\" to subtract? */\n\n.fc-Tu {\n border: 0 !important;\n}\n\n.fc-hU {\n border-left: 0 !important;\n border-right: 0 !important;\n border-bottom: 0 !important;\n}\n\n.fc-3e {\n border-top: 0 !important;\n border-left: 0 !important;\n border-right: 0 !important;\n}\n\n.fc-PB,\n.fc-II {\n border-top: 0 !important;\n border-bottom: 0 !important;\n}\n\n.fc-PB {\n border-inline-end: 0 !important;\n}\n\n.fc-II {\n border-inline-start: 0 !important;\n}\n\n.fc-MQ {\n border-left: 0 !important;\n border-right: 0 !important;\n}\n\n.fc-Vo {\n border-top: 0 !important;\n border-bottom: 0 !important;\n}\n\n/* for matching cell start-border, assumed to be 1px, which can't be guaranteed */\n.fc-2l {\n border-inline-start: 1px solid transparent !important;\n}\n\n/* Flexbox Utils */\n/* ------------------------------------------------------------------------------------------------- */\n\n.fc-Ao {\n display: flex !important;\n flex-direction: row !important;\n}\n\n.fc-HH {\n display: flex !important;\n flex-direction: column !important;\n}\n\n.fc-GV {\n flex-grow: 1 !important;\n}\n\n.fc-g2 {\n flex-grow: 1 !important;\n flex-basis: 0 !important;\n min-width: 0 !important;\n min-height: 0 !important;\n}\n\n.fc-Ot {\n min-height: 0 !important;\n}\n\n/*\nTODO: use liquidX/Y elsewhere because frees up min other dimension; less collisions\n*/\n.fc-hp {\n flex-grow: 1 !important;\n flex-basis: 0 !important;\n min-width: 0 !important;\n}\n\n/* Print-Safe Utils (media:screen ONLY) */\n/* ------------------------------------------------------------------------------------------------- */\n\n.fc-fi .fc-uD,\n.fc-fi .fc-jM {\n display: flex !important;\n flex-direction: column !important;\n}\n\n/* Table Utils */\n/* ------------------------------------------------------------------------------------------------- */\n\n.fc-OJ {\n padding: 0 !important;\n}\n\n.fc-oE {\n margin: 0 !important;\n}\n\n.fc-V3 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.fc-SS {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.fc-y2 {\n white-space: nowrap !important;\n}\n\n.fc-CN {\n white-space: pre !important;\n}\n\n/* Misc Utils */\n/* ------------------------------------------------------------------------------------------------- */\n\n.fc-gZ {\n overflow-anchor: none;\n}\n\n.fc-FA {\n overflow: hidden !important;\n}\n\n/*\nTODO: eventually use this on daygrid/timegrid events' inner, time, and title, FOR PRINT\nNeeded to prevent wrapping to multiple lines, increasing height, throwing off print-positioning,\nwhich can't rely on dynamic height detection after print-flag activated.\n*/\n.fc-7T {\n white-space: nowrap !important;\n overflow: hidden !important;\n}\n\n.fc-cc {\n position: relative !important;\n}\n\n.fc-H0 {\n position: absolute !important;\n}\n\n.fc-6t {\n inset-inline-start: 0 !important;\n}\n\n.fc-ct {\n position: absolute !important;\n top: 0 !important;\n left: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n}\n\n.fc-iv,\n.fc-Uu {\n position: absolute !important;\n left: 0 !important;\n right: 0 !important;\n}\n\n.fc-7k,\n.fc-Yw {\n position: absolute !important;\n top: 0 !important;\n bottom: 0 !important;\n}\n\n.fc-iv {\n top: 0 !important;\n}\n\n.fc-Yw {\n left: 0 !important;\n right: 0 !important;\n width: 0 !important;\n}\n\n@media not print {\n .fc-Ip {\n position: sticky !important;\n }\n\n .fc-CS {\n position: sticky !important;\n top: 0 !important;\n }\n\n /* Sticks to either left or right (the flex \"start\") depending on ltr/rtl */\n .fc-tT {\n position: sticky !important;\n inset-inline-start: 0 !important;\n }\n\n .fc-hy {\n position: sticky !important;\n top: 0 !important;\n z-index: var(--fc-sticky-header-footer-z) !important;\n }\n}\n\n/* Only needed when padding/border must be separate from width/height */\n.fc-Np {\n box-sizing: content-box !important;\n}\n\n.fc-aP {\n position: absolute !important;\n left: -10000px !important;\n}\n\n.fc-6H {\n align-items: center !important;\n}\n\n.fc-K8 {\n align-items: flex-start !important;\n}\n\n.fc-E3 {\n align-items: flex-end !important;\n}\n\n/* Footer Scrollbar */\n/* ------------------------------------------------------------------------------------------------- */\n\n.fc-Px {\n position: sticky !important;\n bottom: 0 !important;\n z-index: var(--fc-sticky-header-footer-z) !important;\n}\n\n.fc-J4 > * {\n margin-top: -1px !important;\n}\n\n.fc-J4 > * > * {\n height: 1px !important;\n}\n\n/* Print-Safe Utils */\n/* ------------------------------------------------------------------------------------------------- */\n\n.fc-Jf .fc-Yi {\n -moz-column-break-inside: avoid !important;\n break-inside: avoid !important;\n}\n\n.fc-Jf .fc-uD {\n display: table !important;\n table-layout: fixed !important;\n width: 100% !important;\n border-spacing: 0 !important;\n border-collapse: separate !important;\n}\n\n.fc-Jf .fc-jM {\n display: table-header-group !important;\n -moz-column-break-inside: avoid !important;\n break-inside: avoid !important;\n background: #fff !important;\n z-index: 9999 !important;\n position: relative !important;\n}\n\n.fc-fx {\n /* min-height when multiple rows coexist, provides sane aspect-ratio for cells */\n min-height: 6em !important;\n}\n\n/* Z-index */\n/* ------------------------------------------------------------------------------------------------- */\n\n.fc-BS {\n z-index: 0;\n}\n\n.fc-iu {\n z-index: 1;\n}\n\n.fc-Bk:focus-visible {\n z-index: 2;\n}\n\n/* INTERNAL MARKER -- used to mark an element for internal significance */\n/* ------------------------------------------------------------------------------------------------- */\n\n.fc-Nm {}\n\n.fc-Ft {}\n.fc-lc {}\n.fc-uL {}\n.fc-Bv {}\n.fc-Qk {}\n.fc-9X {}\n.fc-Sj {}\n.fc-DL {}\n\n.fc-oP {}\n\n.fc-R2 {}\n\n.fc-SW {}\n\n.fc-Cs {}\n\n.fc-LQ {}\n\n.fc-dT {}\n", "\n:root {\n /* buttons */\n --fc-classic-button: #334155;\n --fc-classic-button-border: #334155;\n --fc-classic-button-strong: #1e293b;\n --fc-classic-button-strong-border: #0f172a;\n --fc-classic-button-outline: #47556980;\n --fc-classic-button-foreground: #fff;\n\n /* primary */\n --fc-classic-primary: #3788d8;\n --fc-classic-primary-foreground: #fff;\n\n /* calendar content */\n --fc-classic-event: var(--fc-classic-primary);\n --fc-classic-event-contrast: var(--fc-classic-primary-foreground);\n --fc-classic-background-event: #22c55e;\n --fc-classic-background-event-opacity: 15%;\n --fc-classic-background-event-foreground-opacity: 50%;\n --fc-classic-highlight: #cffafe66;\n --fc-classic-today: #facc1526;\n --fc-classic-now: #ef4444;\n /* non-colors */\n --fc-classic-small-dot-width: 8px;\n --fc-classic-large-dot-width: 10px;\n\n /* neutral backgrounds */\n --fc-classic-background: #ffffff;\n --fc-classic-faint: #0000000A;\n --fc-classic-muted: #00000014;\n --fc-classic-strong: #00000024;\n\n /* neutral foregrounds */\n --fc-classic-foreground: #030712;\n --fc-classic-faint-foreground: #9ca3af;\n --fc-classic-muted-foreground: #6b7280;\n\n /* neutral borders */\n --fc-classic-border: #ddd;\n --fc-classic-strong-border: #9ca3af;\n}\n\n@media not print {\n [data-color-scheme=dark] {\n /* calendar content */\n --fc-classic-highlight: #3b82f633;\n --fc-classic-today: #fef08a1A;\n\n /* neutral backgrounds */\n --fc-classic-background: #030712;\n --fc-classic-faint: #ffffff0A;\n --fc-classic-muted: #ffffff14;\n --fc-classic-strong: #ffffff24;\n\n /* neutral foregrounds */\n --fc-classic-foreground: #fff;\n --fc-classic-faint-foreground: #4b5563;\n --fc-classic-muted-foreground: #9ca3af;\n\n /* neutral borders */\n --fc-classic-border: #1f2937;\n --fc-classic-strong-border: #374151;\n }\n}\n\n", ".fc-classic-n5m {\n font-size: 16px;\n line-height: 1.5;\n --fc-classic-border-style: solid;\n}\n\n.fc-classic-Z9U {\n appearance: button;\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n opacity: 1;\n background-color: #0000;\n border-radius: 0;\n margin: 0;\n border: 0;\n padding: 0\n}\n\n.fc-classic-JiE {\n color: inherit;\n text-decoration: inherit;\n}\n\n.fc-classic-3Lc {\n pointer-events: none\n}\n\n.fc-classic-1EY {\n position: absolute\n}\n\n.fc-classic-eYX {\n position: relative\n}\n\n.fc-classic-OUe {\n position: sticky\n}\n\n.fc-classic-MaV {\n inset-inline: 0\n}\n\n.fc-classic-AWB {\n inset-block: 0\n}\n\n.fc-classic-11a {\n inset-inline-start: -4px\n}\n\n.fc-classic-rbS {\n inset-inline-start: 0\n}\n\n.fc-classic-bEw {\n inset-inline-end: -4px\n}\n\n.fc-classic-2w8 {\n inset-inline-end: 2px\n}\n\n.fc-classic-dnf {\n inset-inline-end: -3px\n}\n\n.fc-classic-YDC {\n top: -4px\n}\n\n.fc-classic-n9G {\n top: 0\n}\n\n.fc-classic-2ik {\n top: 2px\n}\n\n.fc-classic-ERR {\n top: 50%\n}\n\n.fc-classic-fJL {\n bottom: -4px\n}\n\n.fc-classic-jGI {\n bottom: 0\n}\n\n.fc-classic-1V6 {\n left: 50%\n}\n\n.fc-classic-88I {\n order: -1\n}\n\n.fc-classic-gMS {\n margin: 4px\n}\n\n.fc-classic-bvX {\n margin: 8px\n}\n\n.fc-classic-jD5 {\n margin: 16px\n}\n\n.fc-classic-J04 {\n margin-inline: -5px\n}\n\n.fc-classic-cKZ {\n margin-inline: 2px\n}\n\n.fc-classic-rVY {\n margin-inline: 4px\n}\n\n.fc-classic-fn8 {\n margin-inline: 8px\n}\n\n.fc-classic-148 {\n margin-inline: 1px\n}\n\n.fc-classic-cJ3 {\n margin-block: 2px\n}\n\n.fc-classic-V9v {\n margin-block: 4px\n}\n\n.fc-classic-2tF {\n margin-block: 8px\n}\n\n.fc-classic-Jzj {\n margin-inline-start: 2px\n}\n\n.fc-classic-Mde {\n margin-inline-start: 8px\n}\n\n.fc-classic-qvL {\n margin-inline-start: 1px\n}\n\n.fc-classic-kp0 {\n margin-inline-end: -4px\n}\n\n.fc-classic-3e1 {\n margin-inline-end: 2px\n}\n\n.fc-classic-B3G {\n margin-inline-end: 2.5%\n}\n\n.fc-classic-9hC {\n margin-inline-end: 1px\n}\n\n.fc-classic-Dq8 {\n margin-top: -4px\n}\n\n.fc-classic-a10 {\n margin-top: -5px\n}\n\n.fc-classic-Ika {\n margin-bottom: 1px\n}\n\n.fc-classic-nHS {\n margin-bottom: -1px\n}\n\n.fc-classic-F99 {\n margin-left: -4px\n}\n\n.fc-classic-eF2 {\n display: contents\n}\n\n.fc-classic-I48 {\n display: block\n}\n\n.fc-classic-dl1 {\n display: flex\n}\n\n.fc-classic-i3N {\n display: grid\n}\n\n.fc-classic-pps {\n display: none\n}\n\n.fc-classic-3wQ {\n width: 8px;\n height: 8px\n}\n\n.fc-classic-vnf {\n width: 16px;\n height: 16px\n}\n\n.fc-classic-XUJ {\n width: 20px;\n height: 20px\n}\n\n.fc-classic-uuA {\n height: 8px\n}\n\n.fc-classic-zrJ {\n height: 12px\n}\n\n.fc-classic-84e {\n min-height: 2px\n}\n\n.fc-classic-mhE {\n min-height: 12px\n}\n\n.fc-classic-toR {\n min-height: 1px\n}\n\n.fc-classic-roZ {\n width: 50%\n}\n\n.fc-classic-hza {\n width: 8px\n}\n\n.fc-classic-4Tv {\n width: 5px\n}\n\n.fc-classic-kMV {\n max-width: 200px\n}\n\n.fc-classic-2KU {\n min-width: 0\n}\n\n.fc-classic-aNc {\n min-width: 220px\n}\n\n.fc-classic-yi0 {\n flex-shrink: 0\n}\n\n.fc-classic-1Zl {\n flex-shrink: 1\n}\n\n.fc-classic-OLq {\n flex-shrink: 100\n}\n\n.fc-classic-1El {\n flex-grow: 1\n}\n\n.fc-classic-jmT {\n rotate: 180deg\n}\n\n.fc-classic-sgX {\n flex-direction: column\n}\n\n.fc-classic-1sP {\n flex-direction: row\n}\n\n.fc-classic-dNl {\n flex-wrap: wrap\n}\n\n.fc-classic-XpK {\n align-items: center\n}\n\n.fc-classic-N2M {\n justify-content: space-between\n}\n\n.fc-classic-E9P {\n justify-content: center\n}\n\n.fc-classic-LMv {\n justify-content: flex-end\n}\n\n.fc-classic-aTF {\n gap: 2px\n}\n\n.fc-classic-NWN {\n gap: 4px\n}\n\n.fc-classic-wwb {\n gap: 12px\n}\n\n.fc-classic-yth {\n gap: 20px\n}\n\n.fc-classic-sI7 {\n align-self: flex-start\n}\n\n.fc-classic-pKG {\n overflow: hidden\n}\n\n.fc-classic-Ig4 {\n border-radius: 4px\n}\n\n.fc-classic-AAA {\n border-radius: 3.40282e38px\n}\n\n.fc-classic-Fvv {\n border-radius: 4px\n}\n\n.fc-classic-kmj {\n border-start-start-radius: 4px;\n border-end-start-radius: 4px\n}\n\n.fc-classic-Skl {\n border-start-end-radius: 4px;\n border-end-end-radius: 4px\n}\n\n.fc-classic-C2g {\n border-end-end-radius: 4px\n}\n\n.fc-classic-Z7Q {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px\n}\n\n.fc-classic-2qh {\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px\n}\n\n.fc-classic-wsy {\n border-style: var(--fc-classic-border-style);\n border-width: 1px\n}\n\n.fc-classic-5JF {\n border-style: var(--fc-classic-border-style);\n border-width: 4px\n}\n\n.fc-classic-yDA {\n border-style: var(--fc-classic-border-style);\n border-width: 5px\n}\n\n.fc-classic-Mjo {\n border-style: var(--fc-classic-border-style);\n border-width: calc(var(--fc-classic-small-dot-width) / 2)\n}\n\n.fc-classic-GOm {\n border-style: var(--fc-classic-border-style);\n border-width: calc(var(--fc-classic-large-dot-width) / 2)\n}\n\n.fc-classic-1Wx {\n border-inline-style: var(--fc-classic-border-style);\n border-inline-width: 1px\n}\n\n.fc-classic-ybF {\n border-inline-style: var(--fc-classic-border-style);\n border-inline-width: 5px\n}\n\n.fc-classic-JIC {\n border-block-style: var(--fc-classic-border-style);\n border-block-width: 1px\n}\n\n.fc-classic-XM3 {\n border-block-style: var(--fc-classic-border-style);\n border-block-width: 5px\n}\n\n.fc-classic-3J4 {\n border-inline-start-style: var(--fc-classic-border-style);\n border-inline-start-width: 1px\n}\n\n.fc-classic-hhi {\n border-inline-start-style: var(--fc-classic-border-style);\n border-inline-start-width: 5px\n}\n\n.fc-classic-jIH {\n border-inline-start-style: var(--fc-classic-border-style);\n border-inline-start-width: 6px\n}\n\n.fc-classic-USt {\n border-inline-end-style: var(--fc-classic-border-style);\n border-inline-end-width: 1px\n}\n\n.fc-classic-Bda {\n border-inline-end-style: var(--fc-classic-border-style);\n border-inline-end-width: 5px\n}\n\n.fc-classic-ku3 {\n border-top-style: var(--fc-classic-border-style);\n border-top-width: 1px\n}\n\n.fc-classic-bLA {\n border-top-style: var(--fc-classic-border-style);\n border-top-width: 6px\n}\n\n.fc-classic-zi1 {\n border-bottom-style: var(--fc-classic-border-style);\n border-bottom-width: 1px\n}\n\n.fc-classic-TN2 {\n --fc-classic-border-style: dotted;\n border-style: dotted\n}\n\n.fc-classic-C1x {\n border-color: var(--fc-classic-border)\n}\n\n.fc-classic-sYT {\n border-color: var(--fc-classic-now)\n}\n\n.fc-classic-0Pr {\n border-color: var(--fc-classic-primary)\n}\n\n.fc-classic-vXO {\n border-color: var(--fc-classic-button-border)\n}\n\n.fc-classic-rQI {\n border-color: var(--fc-classic-button-strong-border)\n}\n\n.fc-classic-C0k {\n border-color: var(--fc-classic-strong-border)\n}\n\n.fc-classic-lNM {\n border-color: var(--fc-event-color)\n}\n\n.fc-classic-d0j {\n border-color: #0000\n}\n\n.fc-classic-Pqk {\n border-inline-color: #0000\n}\n\n.fc-classic-rif {\n border-block-color: #0000\n}\n\n.fc-classic-0qY {\n border-inline-start-color: var(--fc-classic-now)\n}\n\n.fc-classic-LaM {\n border-inline-start-color: #000\n}\n\n.fc-classic-5JV {\n border-inline-end-color: #000\n}\n\n.fc-classic-1Aa {\n border-top-color: var(--fc-classic-now)\n}\n\n.fc-classic-Jk3 {\n background-color: var(--fc-classic-background)\n}\n\n.fc-classic-iYS {\n background-color: var(--fc-classic-faint)\n}\n\n.fc-classic-hLU {\n background-color: var(--fc-classic-highlight)\n}\n\n.fc-classic-k3f {\n background-color: var(--fc-classic-muted)\n}\n\n.fc-classic-YjJ {\n background-color: var(--fc-event-color)\n}\n\n@media not print {\n @supports (color:color-mix(in lab, red, red)) {\n .fc-classic-hsC {\n background-color: color-mix(in oklab, var(--fc-event-color) var(--fc-classic-background-event-opacity), transparent)\n }\n }\n @supports not (color:color-mix(in lab, red, red)) {\n .fc-classic-hsC {\n position: relative;\n isolation: isolate\n }\n .fc-classic-hsC:before {\n content: '';\n position: absolute;\n inset: 0;\n background-color: var(--fc-event-color);\n opacity: var(--fc-classic-background-event-opacity);\n z-index: -1\n }\n }\n}\n\n.fc-classic-JWq {\n background-color: var(--fc-classic-button)\n}\n\n.fc-classic-Adi {\n background-color: var(--fc-classic-button-strong)\n}\n\n.fc-classic-KUX {\n padding: 2px\n}\n\n.fc-classic-XJa {\n padding: 6px\n}\n\n.fc-classic-3N5 {\n padding: 8px\n}\n\n.fc-classic-7A6 {\n padding: 1px\n}\n\n.fc-classic-oQ2 {\n padding-inline: 2px\n}\n\n.fc-classic-Eaq {\n padding-inline: 10px\n}\n\n.fc-classic-Apf {\n padding-inline: 12px\n}\n\n.fc-classic-F1o {\n padding-inline: 1px\n}\n\n.fc-classic-2rx {\n padding-block: 2px\n}\n\n.fc-classic-Jhn {\n padding-block: 4px\n}\n\n.fc-classic-End {\n padding-block: 6px\n}\n\n.fc-classic-dl6 {\n padding-block: 8px\n}\n\n.fc-classic-P9h {\n padding-block: 60px\n}\n\n.fc-classic-z5u {\n padding-block: 1px\n}\n\n.fc-classic-a7i {\n padding-inline-start: 2px\n}\n\n.fc-classic-166 {\n padding-top: 2px\n}\n\n.fc-classic-8ub {\n padding-bottom: 2px\n}\n\n.fc-classic-cM0 {\n padding-bottom: 16px\n}\n\n.fc-classic-HXA {\n text-align: center\n}\n\n.fc-classic-2HE {\n text-align: end\n}\n\n.fc-classic-AVD {\n font-size: 24px;\n line-height: calc(2/1.5)\n}\n\n.fc-classic-vQz {\n font-size: 11px;\n line-height: 1.09091\n}\n\n.fc-classic-1Po {\n font-size: 16px;\n line-height: calc(1.5/1)\n}\n\n.fc-classic-9yp {\n font-size: 14px;\n line-height: calc(1.25/.875)\n}\n\n.fc-classic-a3B {\n font-size: 12px;\n line-height: calc(1/.75)\n}\n\n.fc-classic-DIS {\n font-weight: 700\n}\n\n.fc-classic-IPx {\n text-overflow: ellipsis\n}\n\n.fc-classic-TZ4 {\n white-space: nowrap\n}\n\n.fc-classic-jm6 {\n white-space: pre\n}\n\n.fc-classic-taq {\n color: var(--fc-classic-faint-foreground)\n}\n\n.fc-classic-m9h {\n color: var(--fc-classic-muted-foreground)\n}\n\n.fc-classic-GAX {\n color: var(--fc-classic-foreground)\n}\n\n.fc-classic-RnT {\n color: var(--fc-classic-button-foreground)\n}\n\n.fc-classic-i9F {\n color: var(--fc-event-contrast-color)\n}\n\n.fc-classic-L1Y {\n font-style: italic\n}\n\n.fc-classic-lMo {\n opacity: .5\n}\n\n.fc-classic-Q3Z {\n opacity: .65\n}\n\n.fc-classic-iTG {\n opacity: .75\n}\n\n.fc-classic-MGT {\n opacity: var(--fc-classic-background-event-foreground-opacity)\n}\n\n.fc-classic-1kP {\n box-shadow: 0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a\n}\n\n.fc-classic-tkw {\n box-shadow: 0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a\n}\n\n.fc-classic-qNs {\n box-shadow: 0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a\n}\n\n.fc-classic-A3h {\n box-shadow: 0 0 0 1px var(--fc-classic-ring-color, currentcolor)\n}\n\n.fc-classic-yKG {\n --fc-classic-ring-color: var(--fc-classic-background)\n}\n\n.fc-classic-2R2 {\n outline-style: solid;\n outline-width: 1px\n}\n\n.fc-classic-0Bj {\n outline-style: solid;\n outline-width: 2px\n}\n\n.fc-classic-fFh {\n outline-offset: -2px\n}\n\n.fc-classic-3Xj {\n outline-offset: 2px\n}\n\n.fc-classic-lYz {\n outline-color: var(--fc-classic-button-outline)\n}\n\n.fc-classic-zIi {\n outline-color: var(--fc-classic-primary)\n}\n\n.fc-classic-SDU {\n background: linear-gradient(var(--fc-classic-muted), var(--fc-classic-muted))var(--fc-classic-background)\n}\n\n.fc-classic-BaR {\n background: linear-gradient(var(--fc-classic-strong), var(--fc-classic-strong))var(--fc-classic-background)\n}\n\n.fc-classic-mAY:not(:is(:where(.fc-classic-bCs):hover *)) {\n opacity: .65\n}\n\n@media not all and (hover:hover) {\n .fc-classic-mAY {\n opacity: .65\n }\n}\n\n@media not print {\n .fc-classic-hbn {\n background-color: var(--fc-classic-today)\n }\n}\n\n@media (hover:hover) {\n .fc-classic-vs6:is(:where(.fc-classic-bCs):hover *) {\n display: block\n }\n\n .fc-classic-Ogp:is(:where(.fc-classic-bCs):hover *) {\n text-decoration-line: underline\n }\n}\n\n.fc-classic-uk6:first-child {\n border-start-start-radius: 4px;\n border-end-start-radius: 4px\n}\n\n.fc-classic-Tuc:last-child {\n border-start-end-radius: 4px;\n border-end-end-radius: 4px\n}\n\n@media (hover:hover) {\n .fc-classic-bqK:hover {\n border-color: var(--fc-classic-button-strong-border)\n }\n\n .fc-classic-9Rj:hover {\n background-color: var(--fc-classic-button-strong)\n }\n\n .fc-classic-Ubk:hover {\n background-color: var(--fc-classic-faint)\n }\n\n .fc-classic-4yP:hover {\n background-color: var(--fc-classic-muted)\n }\n\n .fc-classic-Eu0:hover {\n text-decoration-line: underline\n }\n}\n\n.fc-classic-OIx:focus-visible {\n background-color: var(--fc-classic-faint)\n}\n\n.fc-classic-tCP:focus-visible {\n background-color: var(--fc-classic-muted)\n}\n\n.fc-classic-uqo:focus-visible {\n outline-style: solid;\n outline-width: 2px\n}\n\n.fc-classic-sOR:focus-visible {\n outline-style: solid;\n outline-width: 3px\n}\n\n.fc-classic-aIH:active {\n border-color: var(--fc-classic-button-strong-border)\n}\n\n.fc-classic-5ky:active {\n background-color: var(--fc-classic-button-strong)\n}\n\n.fc-classic-28F:active {\n background-color: var(--fc-classic-muted)\n}\n\n.fc-classic-8gz:active {\n background-color: var(--fc-classic-strong)\n}\n\n@media print {\n .fc-classic-jsy {\n border-width: 1px\n }\n\n .fc-classic-nQ5 {\n border-color: var(--fc-classic-button-strong-border)\n }\n\n .fc-classic-DO7 {\n border-color: var(--fc-event-color)\n }\n\n .fc-classic-4MR {\n border-color: #000\n }\n\n .fc-classic-vwH {\n background-color: #fff\n }\n\n .fc-classic-cfp {\n color: #000\n }\n}\n\n[dir=rtl] .fc-classic-jY6 {\n rotate: none\n}\n\n[dir=rtl] .fc-classic-asP {\n rotate: 180deg\n}\n", ".wrapper {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n.calendar {\n flex-grow: 1;\n /* Prevent FullCalendar from entering a redraw loop\n * when the flex-container shifts size;\n * @see https://github.com/fullcalendar/fullcalendar/issues/8076\n */\n min-width: 0;\n}\n\n/* Very narrow 7-column calendars are impossible to read. Set a larger minimum\n * width even if that requires scrolling on small viewports.\n */\n:global(.dayGridMonth).calendar,\n:global(.timeGridWeek).calendar {\n min-width: 480px;\n}\n\n:global(.dayGridMonth).calendar .listItemEventBefore {\n display: none;\n}\n\n\n/* Make it clearer that events are clickable */\n.interactiveEvent {\n cursor: pointer;\n}\n\n/* Put more important title info first */\n.eventTitle { order: 1; }\n.eventTime { order: 2 }\n\n/* Tweak event layout: title can span multiple lines */\n.eventInner { overflow: hidden; }\n.eventTitle {\n white-space: normal;\n overflow: visible;\n}\n\n/* Formatting tweaks */\n.eventTitle { font-weight: 500; }\n.eventTime { font-size: 10px; }\n\n.shortEvent {\n .eventInner {\n flex-direction: column;\n align-items: inherit;\n }\n}\n\n.backgroundEventInner > div {\n opacity: 1;\n}\n\n\n/* For short background events (typical for before/after buffer slots), reduce\n * the vertical padding and shrink the font size so that they overflow less\n * often. */\n.backgroundEvent {\n container-type: size;\n}\n@container (height < 50px) {\n .backgroundEventInner > div {\n font-size: 10px;\n padding-top: 2px;\n }\n}\n\n/* round off background events a little bit */\n.backgroundEvent {\n border-radius: var(--mantine-radius-sm);\n}\n\n/* Keep \"today\" column highlighting similar to react-big-calendar default style */\n:root {\n --fc-classic-today: #b8e0ff4d;\n\n [data-color-scheme=dark] {\n --fc-classic-today: #406e934d;\n }\n}\n\n/* appointments and slots can be styled by status */\n.appointment {\n --cal-color: light-dark(var(--mantine-color-white), var(--mantine-color-white));\n --cal-background-color: light-dark(var(--mantine-color-blue-6), var(--mantine-color-blue-8));\n}\n.slot {\n --cal-color: light-dark(var(--mantine-color-dark-4), var(--mantine-color-gray-4));\n --cal-background-color: light-dark(var(--mantine-color-gray-4), var(--mantine-color-gray-7));\n}\n\n:global(.dayGridMonth) .event:hover {\n background-color: var(--cal-background-color);\n}\n\n\n.appointment.pending {\n --cal-color: light-dark(var(--mantine-color-blue-8), var(--mantine-color-blue-6));\n --cal-background-color: light-dark(var(--mantine-color-white), var(--mantine-color-black));\n\n /* pending: outlined with border color */\n border: 1px solid var(--cal-color);\n}\n\n.slot.free {\n --cal-color: light-dark(var(--mantine-color-dark-7), var(--mantine-color-gray-1));\n --cal-background-color: light-dark(var(--mantine-color-green-1), var(--mantine-color-green-9));\n}\n\n.event,\n.backgroundEvent {\n background-color: var(--cal-background-color);\n .eventInner {\n color: var(--cal-color);\n }\n .backgroundEventInner > div {\n color: var(--cal-color);\n }\n}\n\n.nonBusinessHours {\n background-color: light-dark(#0000000A, #FFFFFF2A);\n}\n", "/* The whole week is one grid, so every day's controls line up on the same\n columns without any of them being given a width of its own. Each block of\n hours is a row, placed by column rather than in document order, so a day's\n second and later blocks simply leave the day column empty. */\n.week {\n display: grid;\n grid-template-columns: repeat(5, max-content) 1fr;\n align-items: center;\n column-gap: var(--mantine-spacing-xs);\n row-gap: var(--mantine-spacing-xs);\n /* Mantine's default input height, so a day with no hours is the same height\n as one with a block of them. */\n grid-auto-rows: minmax(calc(2.25rem * var(--mantine-scale)), auto);\n}\n\n.dayCell {\n grid-column: 1;\n /* A wider gutter between a day and its hours than between the controls. */\n padding-right: var(--mantine-spacing-sm);\n}\n\n.rangeStart {\n grid-column: 2;\n}\n\n.rangeSeparator {\n grid-column: 3;\n}\n\n.rangeEnd {\n grid-column: 4;\n}\n\n.addAction {\n grid-column: 5;\n}\n\n.removeAction {\n grid-column: 6;\n}\n\n.unavailable {\n grid-column: 2 / -1;\n}\n\n/* Sits above the grid, so it matches the row height rather than inheriting it. */\n.overrideToggle {\n min-height: calc(2.25rem * var(--mantine-scale));\n}\n"],
5
- "mappings": "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",
6
- "names": ["timeGrid", "wrapper", "calendar", "listItemEventBefore", "interactiveEvent", "eventTitle", "eventTime", "eventInner", "shortEvent", "backgroundEventInner", "backgroundEvent", "appointment", "slot", "event", "pending", "free", "nonBusinessHours", "week", "dayCell", "rangeStart", "rangeSeparator", "rangeEnd", "addAction", "removeAction", "unavailable", "overrideToggle"]
3
+ "sources": ["../../src/AppointmentFinder/AppointmentFinder.module.css", "../../../../node_modules/@fullcalendar/react/skeleton.css", "../../../../node_modules/@fullcalendar/react/themes/classic/palette.css", "../../../../node_modules/@fullcalendar/react/themes/classic/theme.css", "../../src/CalendarBase/CalendarBase.module.css", "../../src/Calendar/Calendar.module.css", "../../src/MultiCalendar/MultiCalendar.module.css", "../../src/ScheduleAvailabilityEditor/ScheduleAvailabilityEditor.module.css", "../../src/SchedulingWorkspace/CalendarsPanel/CalendarRow.module.css", "../../src/SchedulingWorkspace/CalendarsPanel/SectionHeader.module.css", "../../src/SchedulingWorkspace/SchedulingWorkspace.module.css"],
4
+ "sourcesContent": ["/* Times wrap into as many columns as fit rather than a fixed grid, so a card\n holding four times is not padded out to the width of one holding twenty. */\n.timeGrid {\n row-gap: var(--mantine-spacing-xs);\n}\n\n/* The form, and beside it the times once the search is open. Wraps rather than\n scrolling sideways, so a narrow host stacks the two instead of clipping one. */\n.layout {\n display: flex;\n flex-wrap: wrap;\n gap: var(--mantine-spacing-lg);\n align-items: flex-start;\n}\n\n.form {\n flex: 1 1 300px;\n min-width: 0;\n max-width: 420px;\n}\n\n/* Only present while the time search is open, which is what widens the panel. */\n.results {\n flex: 1 1 380px;\n min-width: 0;\n}\n", "\n:root {\n --fc-sticky-header-footer-z: 3;\n --fc-popover-z: 4;\n}\n\n.fc-nH {\n z-index: var(--fc-popover-z) !important;\n}\n\n.fc-7s {\n isolation: isolate;\n}\n\n/*\nThis will prevent all ancestors from customizing their box size unless they use .contentBox\n*/\n.fc-wa,\n.fc-wa *,\n.fc-wa *:before,\n.fc-wa *:after {\n box-sizing: border-box !important;\n}\n\n/* classes attached to <body> */\n.fc-4m,\n.fc-4m * {\n cursor: not-allowed !important;\n}\n\n.fc-eM {\n -ms-overflow-style: none !important; /* IE and Edge */\n scrollbar-width: none !important; /* Firefox */\n}\n\n/* Hide scrollbar for Chrome, Safari and Opera */\n.fc-eM::-webkit-scrollbar {\n display: none !important;\n}\n\n.fc-Qo {\n flex-shrink: 0 !important;\n}\n\n.fc-fi .fc-fl {\n display: flex !important;\n flex-direction: row !important;\n flex-wrap: wrap !important;\n}\n\n/* HACK for Safari. Can't do break-inside:avoid with flexbox items, likely b/c it's not standard:\n https://stackoverflow.com/a/60256345 */\n.fc-Jf .fc-fl > * {\n float: left !important;\n}\n\n[dir=rtl] .fc-Jf .fc-fl > *,\n.fc-Jf[dir=rtl] .fc-fl > * {\n float: right !important;\n}\n\n.fc-Jf .fc-fl::after {\n content: \"\" !important;\n display: block !important;\n clear: both !important;\n}\n\n.fc-DP {\n cursor: pointer !important;\n}\n\n.fc-An {\n cursor: n-resize !important;\n}\n\n.fc-lZ {\n cursor: s-resize !important;\n}\n\n.fc-9V {\n cursor: w-resize !important;\n}\n\n[dir=rtl] .fc-9V {\n cursor: e-resize !important;\n}\n\n.fc-70 {\n cursor: e-resize !important;\n}\n\n[dir=rtl] .fc-70 {\n cursor: w-resize !important;\n}\n\n.fc-gQ {\n cursor: col-resize !important;\n}\n\n.fc-mN,\n.fc-2d,\n.fc-B0 {\n position: absolute !important;\n box-sizing: content-box !important;\n width: 100% !important;\n height: 100% !important;\n}\n\n.fc-mN {\n padding: 10px !important;\n margin: -10px !important;\n}\n\n.fc-2d {\n padding-left: 10px !important;\n padding-right: 10px !important;\n margin-left: -10px !important;\n margin-right: -10px !important;\n}\n\n.fc-B0 {\n padding-top: 10px !important;\n padding-bottom: 10px !important;\n margin-top: -10px !important;\n margin-bottom: -10px !important;\n}\n\n/* QUESTION: why not use -left -right instead of negative margins/padding for ALL? */\n.fc-Z1 {\n position: absolute;\n top: 0;\n bottom: 0;\n left: -5px;\n right: -5px;\n}\n\n.fc-1Y {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n\n.fc-a9 {\n visibility: hidden;\n}\n\n/* Border Utils */\n/* ------------------------------------------------------------------------------------------------- */\n\n/* TODO: break-out to x and y. don't have \"only\" all */\n/* TODO: instead of \"border\" utils, call them \"borderless\" to subtract? */\n\n.fc-Tu {\n border: 0 !important;\n}\n\n.fc-hU {\n border-left: 0 !important;\n border-right: 0 !important;\n border-bottom: 0 !important;\n}\n\n.fc-3e {\n border-top: 0 !important;\n border-left: 0 !important;\n border-right: 0 !important;\n}\n\n.fc-PB,\n.fc-II {\n border-top: 0 !important;\n border-bottom: 0 !important;\n}\n\n.fc-PB {\n border-inline-end: 0 !important;\n}\n\n.fc-II {\n border-inline-start: 0 !important;\n}\n\n.fc-MQ {\n border-left: 0 !important;\n border-right: 0 !important;\n}\n\n.fc-Vo {\n border-top: 0 !important;\n border-bottom: 0 !important;\n}\n\n/* for matching cell start-border, assumed to be 1px, which can't be guaranteed */\n.fc-2l {\n border-inline-start: 1px solid transparent !important;\n}\n\n/* Flexbox Utils */\n/* ------------------------------------------------------------------------------------------------- */\n\n.fc-Ao {\n display: flex !important;\n flex-direction: row !important;\n}\n\n.fc-HH {\n display: flex !important;\n flex-direction: column !important;\n}\n\n.fc-GV {\n flex-grow: 1 !important;\n}\n\n.fc-g2 {\n flex-grow: 1 !important;\n flex-basis: 0 !important;\n min-width: 0 !important;\n min-height: 0 !important;\n}\n\n.fc-Ot {\n min-height: 0 !important;\n}\n\n/*\nTODO: use liquidX/Y elsewhere because frees up min other dimension; less collisions\n*/\n.fc-hp {\n flex-grow: 1 !important;\n flex-basis: 0 !important;\n min-width: 0 !important;\n}\n\n/* Print-Safe Utils (media:screen ONLY) */\n/* ------------------------------------------------------------------------------------------------- */\n\n.fc-fi .fc-uD,\n.fc-fi .fc-jM {\n display: flex !important;\n flex-direction: column !important;\n}\n\n/* Table Utils */\n/* ------------------------------------------------------------------------------------------------- */\n\n.fc-OJ {\n padding: 0 !important;\n}\n\n.fc-oE {\n margin: 0 !important;\n}\n\n.fc-V3 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.fc-SS {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.fc-y2 {\n white-space: nowrap !important;\n}\n\n.fc-CN {\n white-space: pre !important;\n}\n\n/* Misc Utils */\n/* ------------------------------------------------------------------------------------------------- */\n\n.fc-gZ {\n overflow-anchor: none;\n}\n\n.fc-FA {\n overflow: hidden !important;\n}\n\n/*\nTODO: eventually use this on daygrid/timegrid events' inner, time, and title, FOR PRINT\nNeeded to prevent wrapping to multiple lines, increasing height, throwing off print-positioning,\nwhich can't rely on dynamic height detection after print-flag activated.\n*/\n.fc-7T {\n white-space: nowrap !important;\n overflow: hidden !important;\n}\n\n.fc-cc {\n position: relative !important;\n}\n\n.fc-H0 {\n position: absolute !important;\n}\n\n.fc-6t {\n inset-inline-start: 0 !important;\n}\n\n.fc-ct {\n position: absolute !important;\n top: 0 !important;\n left: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n}\n\n.fc-iv,\n.fc-Uu {\n position: absolute !important;\n left: 0 !important;\n right: 0 !important;\n}\n\n.fc-7k,\n.fc-Yw {\n position: absolute !important;\n top: 0 !important;\n bottom: 0 !important;\n}\n\n.fc-iv {\n top: 0 !important;\n}\n\n.fc-Yw {\n left: 0 !important;\n right: 0 !important;\n width: 0 !important;\n}\n\n@media not print {\n .fc-Ip {\n position: sticky !important;\n }\n\n .fc-CS {\n position: sticky !important;\n top: 0 !important;\n }\n\n /* Sticks to either left or right (the flex \"start\") depending on ltr/rtl */\n .fc-tT {\n position: sticky !important;\n inset-inline-start: 0 !important;\n }\n\n .fc-hy {\n position: sticky !important;\n top: 0 !important;\n z-index: var(--fc-sticky-header-footer-z) !important;\n }\n}\n\n/* Only needed when padding/border must be separate from width/height */\n.fc-Np {\n box-sizing: content-box !important;\n}\n\n.fc-aP {\n position: absolute !important;\n left: -10000px !important;\n}\n\n.fc-6H {\n align-items: center !important;\n}\n\n.fc-K8 {\n align-items: flex-start !important;\n}\n\n.fc-E3 {\n align-items: flex-end !important;\n}\n\n/* Footer Scrollbar */\n/* ------------------------------------------------------------------------------------------------- */\n\n.fc-Px {\n position: sticky !important;\n bottom: 0 !important;\n z-index: var(--fc-sticky-header-footer-z) !important;\n}\n\n.fc-J4 > * {\n margin-top: -1px !important;\n}\n\n.fc-J4 > * > * {\n height: 1px !important;\n}\n\n/* Print-Safe Utils */\n/* ------------------------------------------------------------------------------------------------- */\n\n.fc-Jf .fc-Yi {\n -moz-column-break-inside: avoid !important;\n break-inside: avoid !important;\n}\n\n.fc-Jf .fc-uD {\n display: table !important;\n table-layout: fixed !important;\n width: 100% !important;\n border-spacing: 0 !important;\n border-collapse: separate !important;\n}\n\n.fc-Jf .fc-jM {\n display: table-header-group !important;\n -moz-column-break-inside: avoid !important;\n break-inside: avoid !important;\n background: #fff !important;\n z-index: 9999 !important;\n position: relative !important;\n}\n\n.fc-fx {\n /* min-height when multiple rows coexist, provides sane aspect-ratio for cells */\n min-height: 6em !important;\n}\n\n/* Z-index */\n/* ------------------------------------------------------------------------------------------------- */\n\n.fc-BS {\n z-index: 0;\n}\n\n.fc-iu {\n z-index: 1;\n}\n\n.fc-Bk:focus-visible {\n z-index: 2;\n}\n\n/* INTERNAL MARKER -- used to mark an element for internal significance */\n/* ------------------------------------------------------------------------------------------------- */\n\n.fc-Nm {}\n\n.fc-Ft {}\n.fc-lc {}\n.fc-uL {}\n.fc-Bv {}\n.fc-Qk {}\n.fc-9X {}\n.fc-Sj {}\n.fc-DL {}\n\n.fc-oP {}\n\n.fc-R2 {}\n\n.fc-SW {}\n\n.fc-Cs {}\n\n.fc-LQ {}\n\n.fc-dT {}\n", "\n:root {\n /* buttons */\n --fc-classic-button: #334155;\n --fc-classic-button-border: #334155;\n --fc-classic-button-strong: #1e293b;\n --fc-classic-button-strong-border: #0f172a;\n --fc-classic-button-outline: #47556980;\n --fc-classic-button-foreground: #fff;\n\n /* primary */\n --fc-classic-primary: #3788d8;\n --fc-classic-primary-foreground: #fff;\n\n /* calendar content */\n --fc-classic-event: var(--fc-classic-primary);\n --fc-classic-event-contrast: var(--fc-classic-primary-foreground);\n --fc-classic-background-event: #22c55e;\n --fc-classic-background-event-opacity: 15%;\n --fc-classic-background-event-foreground-opacity: 50%;\n --fc-classic-highlight: #cffafe66;\n --fc-classic-today: #facc1526;\n --fc-classic-now: #ef4444;\n /* non-colors */\n --fc-classic-small-dot-width: 8px;\n --fc-classic-large-dot-width: 10px;\n\n /* neutral backgrounds */\n --fc-classic-background: #ffffff;\n --fc-classic-faint: #0000000A;\n --fc-classic-muted: #00000014;\n --fc-classic-strong: #00000024;\n\n /* neutral foregrounds */\n --fc-classic-foreground: #030712;\n --fc-classic-faint-foreground: #9ca3af;\n --fc-classic-muted-foreground: #6b7280;\n\n /* neutral borders */\n --fc-classic-border: #ddd;\n --fc-classic-strong-border: #9ca3af;\n}\n\n@media not print {\n [data-color-scheme=dark] {\n /* calendar content */\n --fc-classic-highlight: #3b82f633;\n --fc-classic-today: #fef08a1A;\n\n /* neutral backgrounds */\n --fc-classic-background: #030712;\n --fc-classic-faint: #ffffff0A;\n --fc-classic-muted: #ffffff14;\n --fc-classic-strong: #ffffff24;\n\n /* neutral foregrounds */\n --fc-classic-foreground: #fff;\n --fc-classic-faint-foreground: #4b5563;\n --fc-classic-muted-foreground: #9ca3af;\n\n /* neutral borders */\n --fc-classic-border: #1f2937;\n --fc-classic-strong-border: #374151;\n }\n}\n\n", ".fc-classic-n5m {\n font-size: 16px;\n line-height: 1.5;\n --fc-classic-border-style: solid;\n}\n\n.fc-classic-Z9U {\n appearance: button;\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n opacity: 1;\n background-color: #0000;\n border-radius: 0;\n margin: 0;\n border: 0;\n padding: 0\n}\n\n.fc-classic-JiE {\n color: inherit;\n text-decoration: inherit;\n}\n\n.fc-classic-3Lc {\n pointer-events: none\n}\n\n.fc-classic-1EY {\n position: absolute\n}\n\n.fc-classic-eYX {\n position: relative\n}\n\n.fc-classic-OUe {\n position: sticky\n}\n\n.fc-classic-MaV {\n inset-inline: 0\n}\n\n.fc-classic-AWB {\n inset-block: 0\n}\n\n.fc-classic-11a {\n inset-inline-start: -4px\n}\n\n.fc-classic-rbS {\n inset-inline-start: 0\n}\n\n.fc-classic-bEw {\n inset-inline-end: -4px\n}\n\n.fc-classic-2w8 {\n inset-inline-end: 2px\n}\n\n.fc-classic-dnf {\n inset-inline-end: -3px\n}\n\n.fc-classic-YDC {\n top: -4px\n}\n\n.fc-classic-n9G {\n top: 0\n}\n\n.fc-classic-2ik {\n top: 2px\n}\n\n.fc-classic-ERR {\n top: 50%\n}\n\n.fc-classic-fJL {\n bottom: -4px\n}\n\n.fc-classic-jGI {\n bottom: 0\n}\n\n.fc-classic-1V6 {\n left: 50%\n}\n\n.fc-classic-88I {\n order: -1\n}\n\n.fc-classic-gMS {\n margin: 4px\n}\n\n.fc-classic-bvX {\n margin: 8px\n}\n\n.fc-classic-jD5 {\n margin: 16px\n}\n\n.fc-classic-J04 {\n margin-inline: -5px\n}\n\n.fc-classic-cKZ {\n margin-inline: 2px\n}\n\n.fc-classic-rVY {\n margin-inline: 4px\n}\n\n.fc-classic-fn8 {\n margin-inline: 8px\n}\n\n.fc-classic-148 {\n margin-inline: 1px\n}\n\n.fc-classic-cJ3 {\n margin-block: 2px\n}\n\n.fc-classic-V9v {\n margin-block: 4px\n}\n\n.fc-classic-2tF {\n margin-block: 8px\n}\n\n.fc-classic-Jzj {\n margin-inline-start: 2px\n}\n\n.fc-classic-Mde {\n margin-inline-start: 8px\n}\n\n.fc-classic-qvL {\n margin-inline-start: 1px\n}\n\n.fc-classic-kp0 {\n margin-inline-end: -4px\n}\n\n.fc-classic-3e1 {\n margin-inline-end: 2px\n}\n\n.fc-classic-B3G {\n margin-inline-end: 2.5%\n}\n\n.fc-classic-9hC {\n margin-inline-end: 1px\n}\n\n.fc-classic-Dq8 {\n margin-top: -4px\n}\n\n.fc-classic-a10 {\n margin-top: -5px\n}\n\n.fc-classic-Ika {\n margin-bottom: 1px\n}\n\n.fc-classic-nHS {\n margin-bottom: -1px\n}\n\n.fc-classic-F99 {\n margin-left: -4px\n}\n\n.fc-classic-eF2 {\n display: contents\n}\n\n.fc-classic-I48 {\n display: block\n}\n\n.fc-classic-dl1 {\n display: flex\n}\n\n.fc-classic-i3N {\n display: grid\n}\n\n.fc-classic-pps {\n display: none\n}\n\n.fc-classic-3wQ {\n width: 8px;\n height: 8px\n}\n\n.fc-classic-vnf {\n width: 16px;\n height: 16px\n}\n\n.fc-classic-XUJ {\n width: 20px;\n height: 20px\n}\n\n.fc-classic-uuA {\n height: 8px\n}\n\n.fc-classic-zrJ {\n height: 12px\n}\n\n.fc-classic-84e {\n min-height: 2px\n}\n\n.fc-classic-mhE {\n min-height: 12px\n}\n\n.fc-classic-toR {\n min-height: 1px\n}\n\n.fc-classic-roZ {\n width: 50%\n}\n\n.fc-classic-hza {\n width: 8px\n}\n\n.fc-classic-4Tv {\n width: 5px\n}\n\n.fc-classic-kMV {\n max-width: 200px\n}\n\n.fc-classic-2KU {\n min-width: 0\n}\n\n.fc-classic-aNc {\n min-width: 220px\n}\n\n.fc-classic-yi0 {\n flex-shrink: 0\n}\n\n.fc-classic-1Zl {\n flex-shrink: 1\n}\n\n.fc-classic-OLq {\n flex-shrink: 100\n}\n\n.fc-classic-1El {\n flex-grow: 1\n}\n\n.fc-classic-jmT {\n rotate: 180deg\n}\n\n.fc-classic-sgX {\n flex-direction: column\n}\n\n.fc-classic-1sP {\n flex-direction: row\n}\n\n.fc-classic-dNl {\n flex-wrap: wrap\n}\n\n.fc-classic-XpK {\n align-items: center\n}\n\n.fc-classic-N2M {\n justify-content: space-between\n}\n\n.fc-classic-E9P {\n justify-content: center\n}\n\n.fc-classic-LMv {\n justify-content: flex-end\n}\n\n.fc-classic-aTF {\n gap: 2px\n}\n\n.fc-classic-NWN {\n gap: 4px\n}\n\n.fc-classic-wwb {\n gap: 12px\n}\n\n.fc-classic-yth {\n gap: 20px\n}\n\n.fc-classic-sI7 {\n align-self: flex-start\n}\n\n.fc-classic-pKG {\n overflow: hidden\n}\n\n.fc-classic-Ig4 {\n border-radius: 4px\n}\n\n.fc-classic-AAA {\n border-radius: 3.40282e38px\n}\n\n.fc-classic-Fvv {\n border-radius: 4px\n}\n\n.fc-classic-kmj {\n border-start-start-radius: 4px;\n border-end-start-radius: 4px\n}\n\n.fc-classic-Skl {\n border-start-end-radius: 4px;\n border-end-end-radius: 4px\n}\n\n.fc-classic-C2g {\n border-end-end-radius: 4px\n}\n\n.fc-classic-Z7Q {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px\n}\n\n.fc-classic-2qh {\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px\n}\n\n.fc-classic-wsy {\n border-style: var(--fc-classic-border-style);\n border-width: 1px\n}\n\n.fc-classic-5JF {\n border-style: var(--fc-classic-border-style);\n border-width: 4px\n}\n\n.fc-classic-yDA {\n border-style: var(--fc-classic-border-style);\n border-width: 5px\n}\n\n.fc-classic-Mjo {\n border-style: var(--fc-classic-border-style);\n border-width: calc(var(--fc-classic-small-dot-width) / 2)\n}\n\n.fc-classic-GOm {\n border-style: var(--fc-classic-border-style);\n border-width: calc(var(--fc-classic-large-dot-width) / 2)\n}\n\n.fc-classic-1Wx {\n border-inline-style: var(--fc-classic-border-style);\n border-inline-width: 1px\n}\n\n.fc-classic-ybF {\n border-inline-style: var(--fc-classic-border-style);\n border-inline-width: 5px\n}\n\n.fc-classic-JIC {\n border-block-style: var(--fc-classic-border-style);\n border-block-width: 1px\n}\n\n.fc-classic-XM3 {\n border-block-style: var(--fc-classic-border-style);\n border-block-width: 5px\n}\n\n.fc-classic-3J4 {\n border-inline-start-style: var(--fc-classic-border-style);\n border-inline-start-width: 1px\n}\n\n.fc-classic-hhi {\n border-inline-start-style: var(--fc-classic-border-style);\n border-inline-start-width: 5px\n}\n\n.fc-classic-jIH {\n border-inline-start-style: var(--fc-classic-border-style);\n border-inline-start-width: 6px\n}\n\n.fc-classic-USt {\n border-inline-end-style: var(--fc-classic-border-style);\n border-inline-end-width: 1px\n}\n\n.fc-classic-Bda {\n border-inline-end-style: var(--fc-classic-border-style);\n border-inline-end-width: 5px\n}\n\n.fc-classic-ku3 {\n border-top-style: var(--fc-classic-border-style);\n border-top-width: 1px\n}\n\n.fc-classic-bLA {\n border-top-style: var(--fc-classic-border-style);\n border-top-width: 6px\n}\n\n.fc-classic-zi1 {\n border-bottom-style: var(--fc-classic-border-style);\n border-bottom-width: 1px\n}\n\n.fc-classic-TN2 {\n --fc-classic-border-style: dotted;\n border-style: dotted\n}\n\n.fc-classic-C1x {\n border-color: var(--fc-classic-border)\n}\n\n.fc-classic-sYT {\n border-color: var(--fc-classic-now)\n}\n\n.fc-classic-0Pr {\n border-color: var(--fc-classic-primary)\n}\n\n.fc-classic-vXO {\n border-color: var(--fc-classic-button-border)\n}\n\n.fc-classic-rQI {\n border-color: var(--fc-classic-button-strong-border)\n}\n\n.fc-classic-C0k {\n border-color: var(--fc-classic-strong-border)\n}\n\n.fc-classic-lNM {\n border-color: var(--fc-event-color)\n}\n\n.fc-classic-d0j {\n border-color: #0000\n}\n\n.fc-classic-Pqk {\n border-inline-color: #0000\n}\n\n.fc-classic-rif {\n border-block-color: #0000\n}\n\n.fc-classic-0qY {\n border-inline-start-color: var(--fc-classic-now)\n}\n\n.fc-classic-LaM {\n border-inline-start-color: #000\n}\n\n.fc-classic-5JV {\n border-inline-end-color: #000\n}\n\n.fc-classic-1Aa {\n border-top-color: var(--fc-classic-now)\n}\n\n.fc-classic-Jk3 {\n background-color: var(--fc-classic-background)\n}\n\n.fc-classic-iYS {\n background-color: var(--fc-classic-faint)\n}\n\n.fc-classic-hLU {\n background-color: var(--fc-classic-highlight)\n}\n\n.fc-classic-k3f {\n background-color: var(--fc-classic-muted)\n}\n\n.fc-classic-YjJ {\n background-color: var(--fc-event-color)\n}\n\n@media not print {\n @supports (color:color-mix(in lab, red, red)) {\n .fc-classic-hsC {\n background-color: color-mix(in oklab, var(--fc-event-color) var(--fc-classic-background-event-opacity), transparent)\n }\n }\n @supports not (color:color-mix(in lab, red, red)) {\n .fc-classic-hsC {\n position: relative;\n isolation: isolate\n }\n .fc-classic-hsC:before {\n content: '';\n position: absolute;\n inset: 0;\n background-color: var(--fc-event-color);\n opacity: var(--fc-classic-background-event-opacity);\n z-index: -1\n }\n }\n}\n\n.fc-classic-JWq {\n background-color: var(--fc-classic-button)\n}\n\n.fc-classic-Adi {\n background-color: var(--fc-classic-button-strong)\n}\n\n.fc-classic-KUX {\n padding: 2px\n}\n\n.fc-classic-XJa {\n padding: 6px\n}\n\n.fc-classic-3N5 {\n padding: 8px\n}\n\n.fc-classic-7A6 {\n padding: 1px\n}\n\n.fc-classic-oQ2 {\n padding-inline: 2px\n}\n\n.fc-classic-Eaq {\n padding-inline: 10px\n}\n\n.fc-classic-Apf {\n padding-inline: 12px\n}\n\n.fc-classic-F1o {\n padding-inline: 1px\n}\n\n.fc-classic-2rx {\n padding-block: 2px\n}\n\n.fc-classic-Jhn {\n padding-block: 4px\n}\n\n.fc-classic-End {\n padding-block: 6px\n}\n\n.fc-classic-dl6 {\n padding-block: 8px\n}\n\n.fc-classic-P9h {\n padding-block: 60px\n}\n\n.fc-classic-z5u {\n padding-block: 1px\n}\n\n.fc-classic-a7i {\n padding-inline-start: 2px\n}\n\n.fc-classic-166 {\n padding-top: 2px\n}\n\n.fc-classic-8ub {\n padding-bottom: 2px\n}\n\n.fc-classic-cM0 {\n padding-bottom: 16px\n}\n\n.fc-classic-HXA {\n text-align: center\n}\n\n.fc-classic-2HE {\n text-align: end\n}\n\n.fc-classic-AVD {\n font-size: 24px;\n line-height: calc(2/1.5)\n}\n\n.fc-classic-vQz {\n font-size: 11px;\n line-height: 1.09091\n}\n\n.fc-classic-1Po {\n font-size: 16px;\n line-height: calc(1.5/1)\n}\n\n.fc-classic-9yp {\n font-size: 14px;\n line-height: calc(1.25/.875)\n}\n\n.fc-classic-a3B {\n font-size: 12px;\n line-height: calc(1/.75)\n}\n\n.fc-classic-DIS {\n font-weight: 700\n}\n\n.fc-classic-IPx {\n text-overflow: ellipsis\n}\n\n.fc-classic-TZ4 {\n white-space: nowrap\n}\n\n.fc-classic-jm6 {\n white-space: pre\n}\n\n.fc-classic-taq {\n color: var(--fc-classic-faint-foreground)\n}\n\n.fc-classic-m9h {\n color: var(--fc-classic-muted-foreground)\n}\n\n.fc-classic-GAX {\n color: var(--fc-classic-foreground)\n}\n\n.fc-classic-RnT {\n color: var(--fc-classic-button-foreground)\n}\n\n.fc-classic-i9F {\n color: var(--fc-event-contrast-color)\n}\n\n.fc-classic-L1Y {\n font-style: italic\n}\n\n.fc-classic-lMo {\n opacity: .5\n}\n\n.fc-classic-Q3Z {\n opacity: .65\n}\n\n.fc-classic-iTG {\n opacity: .75\n}\n\n.fc-classic-MGT {\n opacity: var(--fc-classic-background-event-foreground-opacity)\n}\n\n.fc-classic-1kP {\n box-shadow: 0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a\n}\n\n.fc-classic-tkw {\n box-shadow: 0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a\n}\n\n.fc-classic-qNs {\n box-shadow: 0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a\n}\n\n.fc-classic-A3h {\n box-shadow: 0 0 0 1px var(--fc-classic-ring-color, currentcolor)\n}\n\n.fc-classic-yKG {\n --fc-classic-ring-color: var(--fc-classic-background)\n}\n\n.fc-classic-2R2 {\n outline-style: solid;\n outline-width: 1px\n}\n\n.fc-classic-0Bj {\n outline-style: solid;\n outline-width: 2px\n}\n\n.fc-classic-fFh {\n outline-offset: -2px\n}\n\n.fc-classic-3Xj {\n outline-offset: 2px\n}\n\n.fc-classic-lYz {\n outline-color: var(--fc-classic-button-outline)\n}\n\n.fc-classic-zIi {\n outline-color: var(--fc-classic-primary)\n}\n\n.fc-classic-SDU {\n background: linear-gradient(var(--fc-classic-muted), var(--fc-classic-muted))var(--fc-classic-background)\n}\n\n.fc-classic-BaR {\n background: linear-gradient(var(--fc-classic-strong), var(--fc-classic-strong))var(--fc-classic-background)\n}\n\n.fc-classic-mAY:not(:is(:where(.fc-classic-bCs):hover *)) {\n opacity: .65\n}\n\n@media not all and (hover:hover) {\n .fc-classic-mAY {\n opacity: .65\n }\n}\n\n@media not print {\n .fc-classic-hbn {\n background-color: var(--fc-classic-today)\n }\n}\n\n@media (hover:hover) {\n .fc-classic-vs6:is(:where(.fc-classic-bCs):hover *) {\n display: block\n }\n\n .fc-classic-Ogp:is(:where(.fc-classic-bCs):hover *) {\n text-decoration-line: underline\n }\n}\n\n.fc-classic-uk6:first-child {\n border-start-start-radius: 4px;\n border-end-start-radius: 4px\n}\n\n.fc-classic-Tuc:last-child {\n border-start-end-radius: 4px;\n border-end-end-radius: 4px\n}\n\n@media (hover:hover) {\n .fc-classic-bqK:hover {\n border-color: var(--fc-classic-button-strong-border)\n }\n\n .fc-classic-9Rj:hover {\n background-color: var(--fc-classic-button-strong)\n }\n\n .fc-classic-Ubk:hover {\n background-color: var(--fc-classic-faint)\n }\n\n .fc-classic-4yP:hover {\n background-color: var(--fc-classic-muted)\n }\n\n .fc-classic-Eu0:hover {\n text-decoration-line: underline\n }\n}\n\n.fc-classic-OIx:focus-visible {\n background-color: var(--fc-classic-faint)\n}\n\n.fc-classic-tCP:focus-visible {\n background-color: var(--fc-classic-muted)\n}\n\n.fc-classic-uqo:focus-visible {\n outline-style: solid;\n outline-width: 2px\n}\n\n.fc-classic-sOR:focus-visible {\n outline-style: solid;\n outline-width: 3px\n}\n\n.fc-classic-aIH:active {\n border-color: var(--fc-classic-button-strong-border)\n}\n\n.fc-classic-5ky:active {\n background-color: var(--fc-classic-button-strong)\n}\n\n.fc-classic-28F:active {\n background-color: var(--fc-classic-muted)\n}\n\n.fc-classic-8gz:active {\n background-color: var(--fc-classic-strong)\n}\n\n@media print {\n .fc-classic-jsy {\n border-width: 1px\n }\n\n .fc-classic-nQ5 {\n border-color: var(--fc-classic-button-strong-border)\n }\n\n .fc-classic-DO7 {\n border-color: var(--fc-event-color)\n }\n\n .fc-classic-4MR {\n border-color: #000\n }\n\n .fc-classic-vwH {\n background-color: #fff\n }\n\n .fc-classic-cfp {\n color: #000\n }\n}\n\n[dir=rtl] .fc-classic-jY6 {\n rotate: none\n}\n\n[dir=rtl] .fc-classic-asP {\n rotate: 180deg\n}\n", ".wrapper {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n.calendar {\n flex-grow: 1;\n /* Prevent FullCalendar from entering a redraw loop\n * when the flex-container shifts size;\n * @see https://github.com/fullcalendar/fullcalendar/issues/8076\n */\n min-width: 0;\n}\n\n/* Very narrow 7-column calendars are impossible to read. Set a larger minimum\n * width even if that requires scrolling on small viewports.\n */\n:global(.dayGridMonth).calendar,\n:global(.timeGridWeek).calendar {\n min-width: 480px;\n}\n\n:global(.dayGridMonth).calendar .listItemEventBefore {\n display: none;\n}\n\n\n/* Make it clearer that events are clickable */\n.interactiveEvent {\n cursor: pointer;\n}\n\n.selectableDay {\n cursor: pointer;\n}\n\n.selectableDay:hover {\n background-color: light-dark(#0000000a, #ffffff14);\n}\n\n.selectedRange {\n background-color: light-dark(#228be62e, #4dabf73d);\n}\n\n/* Put more important title info first */\n.eventTitle { order: 1; }\n.eventTime { order: 2 }\n\n/* Tweak event layout: title can span multiple lines */\n.eventInner { overflow: hidden; }\n.eventTitle {\n white-space: normal;\n overflow: visible;\n}\n\n/* Formatting tweaks */\n.eventTitle { font-weight: 500; }\n.eventTime { font-size: 10px; }\n\n.shortEvent {\n .eventInner {\n flex-direction: column;\n align-items: inherit;\n }\n}\n\n.backgroundEventInner > div {\n opacity: 1;\n}\n\n\n/* For short background events (typical for before/after buffer slots), reduce\n * the vertical padding and shrink the font size so that they overflow less\n * often. */\n.backgroundEvent {\n container-type: size;\n}\n@container (height < 50px) {\n .backgroundEventInner > div {\n font-size: 10px;\n padding-top: 2px;\n }\n}\n\n/* round off background events a little bit */\n.backgroundEvent {\n border-radius: var(--mantine-radius-sm);\n}\n\n/* Keep \"today\" column highlighting similar to react-big-calendar default style */\n:root {\n --fc-classic-today: #b8e0ff4d;\n\n [data-color-scheme=dark] {\n --fc-classic-today: #406e934d;\n }\n}\n\n.nonBusinessHours {\n background-color: light-dark(#0000000A, #FFFFFF2A);\n}\n\n:global(.dayGridMonth) .event {\n background-color: var(--fc-event-color);\n\n .eventInner {\n color: var(--fc-event-contrast-color);\n }\n}\n", "/* appointments and slots can be styled by status */\n.wrapper {\n :global(.appointment) {\n --cal-color: light-dark(var(--mantine-color-white), var(--mantine-color-white));\n --cal-background-color: light-dark(var(--mantine-color-blue-6), var(--mantine-color-blue-8));\n }\n :global(.slot) {\n --cal-color: light-dark(var(--mantine-color-dark-4), var(--mantine-color-gray-4));\n --cal-background-color: light-dark(var(--mantine-color-gray-4), var(--mantine-color-gray-7));\n }\n\n :global(.dayGridMonth) .event:hover {\n background-color: var(--cal-background-color);\n }\n\n\n :global(.appointment.pending) {\n --cal-color: light-dark(var(--mantine-color-blue-8), var(--mantine-color-blue-6));\n --cal-background-color: light-dark(var(--mantine-color-white), var(--mantine-color-black));\n\n /* pending: outlined with border color */\n border: 1px solid var(--cal-color);\n }\n\n :global(.slot.free) {\n --cal-color: light-dark(var(--mantine-color-dark-7), var(--mantine-color-gray-1));\n --cal-background-color: light-dark(var(--mantine-color-green-1), var(--mantine-color-green-9));\n }\n\n .event,\n .backgroundEvent {\n background-color: var(--cal-background-color);\n .eventInner {\n color: var(--cal-color);\n }\n .backgroundEventInner > div {\n color: var(--cal-color);\n }\n }\n\n .eventTitle::after {\n opacity: .7;\n }\n\n /* No status annotation for \"happy path\" status in: pending, booked, arrived, fulfilled */\n :global(.appointment.proposed) {\n .eventTitle::after { content: ' (proposed)'; }\n }\n :global(.appointment.cancelled) {\n .eventTitle::after { content: ' (cancelled)'; }\n }\n :global(.appointment.noshow) {\n .eventTitle::after { content: ' (no show)'; }\n }\n :global(.appointment.entered-in-error) {\n .eventTitle::after { content: ' (entered in error)'; }\n }\n :global(.appointment.checked-in) {\n .eventTitle::after { content: ' (checked in)'; }\n }\n :global(.appointment.waitlist) {\n .eventTitle::after { content: ' (waitlist)'; }\n }\n}\n", "/* Add color strips for appointment statuses */\n:global(.appointment) .eventInner {\n margin-left: 8px;\n\n &::before {\n content: '';\n width: 4px;\n position: absolute;\n top: 2px;\n left: 2px;\n bottom: 2px;\n border-radius: 8px;\n background-color: var(--status-color);\n }\n}\n\n:global(.appointment.pending),\n:global(.appointment.proposed) {\n --status-color: var(--mantine-color-yellow-3);\n}\n\n:global(.appointment.booked),\n:global(.appointment.arrived),\n:global(.appointment.fulfilled),\n:global(.appointment.checked-in) {\n --status-color: var(--mantine-color-blue-3);\n}\n\n:global(.appointment.cancelled),\n:global(.appointment.noshow) {\n --status-color: var(--mantine-color-red-3);\n}\n\n.eventTime {\n color: var(--mantine-color-gray-2);\n}\n", "/* The whole week is one grid, so every day's controls line up on the same\n columns without any of them being given a width of its own. Each block of\n hours is a row, placed by column rather than in document order, so a day's\n second and later blocks simply leave the day column empty. */\n.week {\n display: grid;\n grid-template-columns: repeat(5, max-content) 1fr;\n align-items: center;\n column-gap: var(--mantine-spacing-xs);\n row-gap: var(--mantine-spacing-xs);\n /* Mantine's default input height, so a day with no hours is the same height\n as one with a block of them. */\n grid-auto-rows: minmax(calc(2.25rem * var(--mantine-scale)), auto);\n}\n\n.dayCell {\n grid-column: 1;\n /* A wider gutter between a day and its hours than between the controls. */\n padding-right: var(--mantine-spacing-sm);\n}\n\n.rangeStart {\n grid-column: 2;\n}\n\n.rangeSeparator {\n grid-column: 3;\n}\n\n.rangeEnd {\n grid-column: 4;\n}\n\n.addAction {\n grid-column: 5;\n}\n\n.removeAction {\n grid-column: 6;\n}\n\n.unavailable {\n grid-column: 2 / -1;\n}\n\n/* Sits above the grid, so it matches the row height rather than inheriting it. */\n.overrideToggle {\n min-height: calc(2.25rem * var(--mantine-scale));\n}\n", "/* CalendarRow.module.css */\n\n.row {\n width: 100%;\n padding: 6px 8px;\n border-radius: var(--mantine-radius-sm);\n text-align: left;\n}\n\n.row[data-interactive] {\n cursor: pointer;\n}\n\n.row[data-interactive]:hover {\n background-color: light-dark(var(--mantine-color-gray-0), var(--mantine-color-dark-6));\n}\n\n.eyeSlot {\n display: flex;\n}\n\n.eyeOff {\n color: light-dark(var(--mantine-color-gray-5), var(--mantine-color-dark-2));\n}\n\n.eyeHint {\n color: light-dark(var(--mantine-color-gray-5), var(--mantine-color-dark-2));\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.row:hover .eyeHint {\n opacity: 1;\n}\n", ".chevron {\n transition: transform 0.2s ease;\n cursor: pointer;\n color: light-dark(var(--mantine-color-gray-7), var(--mantine-color-dark-1));\n}\n\n.chevron[data-collapsed] {\n transform: rotate(-90deg);\n}\n\n.chevron:hover {\n background-color: light-dark(var(--mantine-color-gray-0), var(--mantine-color-dark-6));\n}\n\n.title {\n cursor: pointer;\n}\n", "/* SchedulingWorkspace.module.css */\n\n.root {\n display: flex;\n align-items: stretch;\n gap: var(--mantine-spacing-md);\n height: 100%;\n width: 100%;\n}\n\n.sidebar {\n flex-shrink: 0;\n width: 300px;\n overflow-y: auto;\n}\n\n.calendar {\n position: relative;\n flex: 1;\n min-width: 0;\n overflow-x: auto;\n}\n\n/* The booking form, only present while a day is being booked. */\n.bookingPane {\n flex-shrink: 0;\n width: 320px;\n overflow-y: auto;\n}\n\n.bookingPaneWide {\n width: 760px;\n}\n\n.alert {\n margin-bottom: var(--mantine-spacing-xs);\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["timeGrid", "layout", "form", "results", "wrapper", "calendar", "listItemEventBefore", "interactiveEvent", "selectableDay", "selectedRange", "eventTitle", "eventTime", "eventInner", "shortEvent", "backgroundEventInner", "backgroundEvent", "nonBusinessHours", "event", "wrapper", "event", "backgroundEvent", "eventInner", "backgroundEventInner", "eventTitle", "eventInner", "eventTime", "week", "dayCell", "rangeStart", "rangeSeparator", "rangeEnd", "addAction", "removeAction", "unavailable", "overrideToggle", "row", "eyeSlot", "eyeOff", "eyeHint", "chevron", "title", "root", "sidebar", "calendar", "bookingPane", "bookingPaneWide", "alert"]
7
7
  }
@@ -3,7 +3,10 @@ import type { HealthcareService } from '@medplum/fhirtypes';
3
3
  import type { HealthcareServiceAvailableTime } from '@medplum/fhirtypes';
4
4
  import type { JSX } from 'react';
5
5
  import type { Location as Location_2 } from '@medplum/fhirtypes';
6
+ import type { MantineThemeColors } from '@mantine/core';
6
7
  import type { MedplumClient } from '@medplum/core';
8
+ import type { OperationOutcome } from '@medplum/fhirtypes';
9
+ import type { Patient } from '@medplum/fhirtypes';
7
10
  import type { Reference } from '@medplum/fhirtypes';
8
11
  import type { Resource } from '@medplum/fhirtypes';
9
12
  import type { Schedule } from '@medplum/fhirtypes';
@@ -61,6 +64,39 @@ export declare interface AppointmentActorSelectProps {
61
64
  readonly disabled?: boolean;
62
65
  }
63
66
 
67
+ /** What a booking wrote, as `Appointment/$book` returned it. */
68
+ export declare interface AppointmentBooking {
69
+ readonly appointment: WithId<Appointment>;
70
+ /** The times reserved for it, one per schedule it is held on. */
71
+ readonly slots: readonly WithId<Slot>[];
72
+ }
73
+
74
+ /**
75
+ * The booking form, writing the booking itself.
76
+ *
77
+ * Wraps {@link AppointmentProposalForm}: posts `Appointment/$book`, announces the
78
+ * appointment and every time it reserved so views reading them refresh, then
79
+ * reports what was written through `onBooked` — the only required prop.
80
+ *
81
+ * A host doing something else with the proposal mounts the proposal form instead.
82
+ *
83
+ * @param props - The React props.
84
+ * @returns The form.
85
+ */
86
+ export declare function AppointmentBookingForm(props: AppointmentBookingFormProps): JSX.Element;
87
+
88
+ export declare interface AppointmentBookingFormProps extends Omit<AppointmentProposalFormProps, 'onBook'> {
89
+ /**
90
+ * Called with what the booking wrote.
91
+ *
92
+ * The answers stay on screen and the form stops offering to book until one of
93
+ * them changes, so a host can keep this mounted without it writing twice. A
94
+ * failure here is logged rather than shown as a refusal: the appointment exists
95
+ * by the time it runs.
96
+ */
97
+ readonly onBooked: (booking: AppointmentBooking) => void | Promise<void>;
98
+ }
99
+
64
100
  export declare interface AppointmentDay {
65
101
  /** `YYYY-MM-DD` in the scheduling timezone. */
66
102
  readonly key: string;
@@ -105,6 +141,66 @@ export declare interface AppointmentOptionRowProps {
105
141
  readonly detail?: string;
106
142
  }
107
143
 
144
+ /**
145
+ * Gathers what a visit is held on, finds a time every one of them is free, and
146
+ * hands the proposal out to be booked.
147
+ *
148
+ * One field per scheduling role, each searching the schedules bookable for the
149
+ * chosen visit type. Everything named attends, because `$find` intersects their
150
+ * schedules — so naming a second room narrows the times rather than widening them.
151
+ *
152
+ * Only a time the search offered can be chosen: the field holding it accepts no
153
+ * input, so nothing can be booked onto time nobody checked availability for.
154
+ *
155
+ * Writes nothing and announces nothing: `onBook` owns that. Mount this to do
156
+ * something other than `$book` with the proposal — hold it through `$hold`, or
157
+ * write it inside a transaction of your own. {@link AppointmentBookingForm} is the
158
+ * one that books.
159
+ *
160
+ * @param props - The React props.
161
+ * @returns The form.
162
+ */
163
+ export declare function AppointmentProposalForm(props: AppointmentProposalFormProps): JSX.Element;
164
+
165
+ export declare interface AppointmentProposalFormProps {
166
+ /** Pre-fills where the visit is, for a host that already knows. */
167
+ readonly defaultLocation?: WithId<Location_2>;
168
+ /** Pre-fills the visit type, for a deep link or a reschedule. */
169
+ readonly defaultService?: WithId<HealthcareService>;
170
+ /** Pre-fills who the visit is for, for a host launching from a patient's chart. */
171
+ readonly defaultPatient?: WithId<Patient>;
172
+ /**
173
+ * The day the time search opens on. Defaults to today.
174
+ *
175
+ * A day, not a time: only a time `$find` offered can be chosen.
176
+ */
177
+ readonly defaultStart?: Date;
178
+ /**
179
+ * The `Identifier.system` a project issues medical record numbers under.
180
+ *
181
+ * Only needed where identifiers carry no `type`. Which identifier is the
182
+ * medical record number is a project's own convention, and there is nothing on
183
+ * an untyped one to recognise it by.
184
+ */
185
+ readonly mrnSystem?: string;
186
+ /**
187
+ * Called when the time search opens or closes.
188
+ *
189
+ * The times render beside the form, not under it, so a host in a side panel has
190
+ * to widen it to fit them.
191
+ */
192
+ readonly onToggleTimeFinder?: (open: boolean) => void;
193
+ /** Called with the visit type as it changes. */
194
+ readonly onChangeService?: (service: WithId<HealthcareService> | undefined) => void;
195
+ /**
196
+ * Performs the booking with the proposal the form assembled.
197
+ *
198
+ * Resolving marks the form booked, so it stops offering to book until an answer
199
+ * changes; rejecting shows the reason as the booking's refusal, every answer kept.
200
+ */
201
+ readonly onBook: (proposal: Appointment) => void | Promise<void>;
202
+ }
203
+
108
204
  /**
109
205
  * Chooses the service an appointment is for.
110
206
  *
@@ -112,6 +208,9 @@ export declare interface AppointmentOptionRowProps {
112
208
  * without a `SchedulingParameters` extension has no duration or alignment for
113
209
  * `$find` to work from, so booking against it cannot succeed.
114
210
  *
211
+ * A chosen site narrows the list to the visit types it can hold: the ones naming
212
+ * that site, and the ones naming no location at all.
213
+ *
115
214
  * @param props - The React props.
116
215
  * @returns The service field.
117
216
  */
@@ -366,6 +465,14 @@ export declare function getDurationMinutes(appointment: Appointment | undefined)
366
465
  */
367
466
  export declare function getEffectiveAvailability(service: WithId<HealthcareService> | undefined, schedule?: Schedule): HealthcareServiceAvailableTime[] | undefined;
368
467
 
468
+ /**
469
+ * Reports a window `$find` will not answer, before a request is made for it.
470
+ *
471
+ * @param range - The days asked for.
472
+ * @returns The message to show, or undefined when the range can be searched.
473
+ */
474
+ export declare function getFindWindowError(range: DateRange): string | undefined;
475
+
369
476
  /**
370
477
  * Returns the input type to use for a date or time field.
371
478
  *
@@ -434,6 +541,39 @@ export declare function isSchedulingActorType(value: string | undefined): value
434
541
  */
435
542
  export declare const MAX_FIND_WINDOW_DAYS = 31;
436
543
 
544
+ /**
545
+ * A component that can display appointments and slots from several color-coded calendars.
546
+ *
547
+ * If you pass a Schedule as an attribute of a source, it will be passed back
548
+ * to event handlers alongside the interacted Appointment/Slot resources. It may also
549
+ * specify a color override via a Extension
550
+ * ("https://medplum.com/fhir/StructureDefinition/SchedulingColor").
551
+ *
552
+ * @param props - Component props
553
+ * @returns A React Node with the Calendar UI in it
554
+ */
555
+ export declare function MultiCalendar(props: MultiCalendarProps): JSX.Element;
556
+
557
+ export declare interface MultiCalendarProps {
558
+ sources: MultiCalendarSource[];
559
+ onSelectInterval?: (slotInfo: DateTimeRange) => void;
560
+ onSelectSlot?: (slot: Slot, schedule?: WithId<Schedule>) => void;
561
+ onSelectAppointment?: (appointment: Appointment, schedule?: WithId<Schedule>) => void;
562
+ onDoubleClickAppointment?: (appointment: Appointment, schedule?: WithId<Schedule>) => void;
563
+ onRangeChange?: (range: DateTimeRange) => void;
564
+ selection?: DateTimeRange;
565
+ className?: string;
566
+ availableTime?: HealthcareServiceAvailableTime[];
567
+ loading?: boolean;
568
+ }
569
+
570
+ export declare interface MultiCalendarSource {
571
+ schedule?: WithId<Schedule>;
572
+ slots: Slot[];
573
+ appointments: Appointment[];
574
+ color?: keyof MantineThemeColors;
575
+ }
576
+
437
577
  /**
438
578
  * Converts a `YYYY-MM-DD` key into local midnight of that calendar day.
439
579
  * @param key - A `YYYY-MM-DD` day key.
@@ -516,14 +656,36 @@ export declare type SchedulingActorType = (typeof SCHEDULING_ACTOR_TYPES)[number
516
656
  export declare type SchedulingRole = (typeof SCHEDULING_ROLES)[number];
517
657
 
518
658
  /**
519
- * Finds the Schedules that can be booked for one role of a HealthcareService,
520
- * narrowed to the actors whose name matches what was typed.
659
+ * A data-coordination component pairing {@link CalendarsPanel} with {@link MultiCalendar}.
660
+ *
661
+ * - Picks a color for each Schedule so that it can render consistently across
662
+ * those components.
663
+ * - Books from the calendar: clicking open time opens {@link AppointmentBookingForm}
664
+ * in a pane on the right, with its time search opened on the day that was clicked.
665
+ * The form writes the booking and announces what it wrote, which is what puts the
666
+ * new appointment on the calendar beside it — a host supplies no data for any of it.
667
+ * What was written is reported through `onBooked`, for a host that wants to say so.
668
+ *
669
+ * @param props - Component props
670
+ * @returns A React Node with the coordinated Calendars panel + calendar UI in it
671
+ */
672
+ export declare function SchedulingWorkspace(props: SchedulingWorkspaceProps): JSX.Element;
673
+
674
+ export declare interface SchedulingWorkspaceProps {
675
+ readonly className?: string;
676
+ readonly onBooked?: (booking: AppointmentBooking) => void | Promise<void>;
677
+ }
678
+
679
+ /**
680
+ * Finds the Schedules that can be booked for one role, narrowed to the actors
681
+ * whose name matches what was typed.
521
682
  * @param medplum - The Medplum client.
522
- * @param service - The HealthcareService being booked.
683
+ * @param service - The HealthcareService being booked, or undefined to search
684
+ * unconstrained by service type — every active, bookable schedule for the role.
523
685
  * @param options - The role, the text typed, the site, an abort signal, and a page size.
524
686
  * @returns The matching schedules, each with its actor, by display name.
525
687
  */
526
- export declare function searchScheduleCandidates(medplum: MedplumClient, service: WithId<HealthcareService>, options: SearchScheduleCandidatesOptions): Promise<ScheduleCandidate[]>;
688
+ export declare function searchScheduleCandidates(medplum: MedplumClient, service: WithId<HealthcareService> | undefined, options: SearchScheduleCandidatesOptions): Promise<ScheduleCandidate[]>;
527
689
 
528
690
  export declare interface SearchScheduleCandidatesOptions {
529
691
  /** Which of the service's actors to offer. */
@@ -608,4 +770,75 @@ export declare interface UseProposedAppointmentsResult {
608
770
  readonly error: Error | undefined;
609
771
  }
610
772
 
773
+ /**
774
+ * Loads the Appointments for a set of schedules within a date range and keeps them live.
775
+ *
776
+ * Searches by the schedules' actors, deduping shared actors so each is queried once, and
777
+ * merges the per-actor results by id. Subscribes via `useResourceModified` so Appointments
778
+ * this client creates, updates, or deletes are reflected optimistically without a refetch.
779
+ *
780
+ * @param schedules - The schedules whose actors' Appointments should be loaded.
781
+ * @param range - The date range to search within; no search runs while this is undefined
782
+ * or none of the schedules have an actor.
783
+ * @param options - Optional parameters
784
+ * @param options.onError - Callback fired when fetching appointments fails
785
+ * @returns The loaded Appointments (undefined until the first fetch resolves) and a loading flag.
786
+ */
787
+ export declare function useSchedulingAppointments(schedules: WithId<Schedule>[], range: DateTimeRange | undefined, options?: {
788
+ onError?: (error: OperationOutcome) => void;
789
+ }): UseSchedulingAppointmentsResult;
790
+
791
+ export declare interface UseSchedulingAppointmentsResult {
792
+ appointments: WithId<Appointment>[] | undefined;
793
+ loading: boolean;
794
+ error: OperationOutcome | undefined;
795
+ }
796
+
797
+ /**
798
+ * Loads both the Slots and Appointments for a set of schedules within a date range.
799
+ *
800
+ * A thin composition of {@link useSchedulingSlots} and {@link useSchedulingAppointments}
801
+ * for callers that need both; `loading` is true while either underlying fetch is in flight.
802
+ *
803
+ * @param schedules - The schedules whose Slots and Appointments should be loaded.
804
+ * @param range - The date range to search within; no search runs while this is undefined.
805
+ * @param options - Optional parameters
806
+ * @param options.onError - Callback fired when fetching appointments fails
807
+ * @returns The loaded Slots and Appointments (each undefined until its first fetch resolves)
808
+ * and a combined loading flag.
809
+ */
810
+ export declare function useSchedulingResources(schedules: WithId<Schedule>[], range: DateTimeRange | undefined, options?: {
811
+ onError?: (error: OperationOutcome) => void;
812
+ }): UseSchedulingResourcesResult;
813
+
814
+ export declare interface UseSchedulingResourcesResult {
815
+ appointments: WithId<Appointment>[] | undefined;
816
+ slots: WithId<Slot>[] | undefined;
817
+ loading: boolean;
818
+ error: OperationOutcome | undefined;
819
+ }
820
+
821
+ /**
822
+ * Loads the Slots for a set of schedules within a date range and keeps them live.
823
+ *
824
+ * Emits one Slot search per schedule so MedplumClient can cache each schedule's results
825
+ * independently, then subscribes via `useResourceModified` so Slots this client creates,
826
+ * updates, or deletes are reflected optimistically without a refetch.
827
+ *
828
+ * @param schedules - The schedules whose Slots should be loaded.
829
+ * @param range - The date range to search within; no search runs while this is undefined.
830
+ * @param options - Optional parameters
831
+ * @param options.onError - Callback fired when fetching appointments fails
832
+ * @returns The loaded Slots (undefined until the first fetch resolves) and a loading flag.
833
+ */
834
+ export declare function useSchedulingSlots(schedules: WithId<Schedule>[], range: DateTimeRange | undefined, options?: {
835
+ onError?: (error: OperationOutcome) => void;
836
+ }): UseSchedulingSlotsResult;
837
+
838
+ export declare interface UseSchedulingSlotsResult {
839
+ slots: WithId<Slot>[] | undefined;
840
+ loading: boolean;
841
+ error: OperationOutcome | undefined;
842
+ }
843
+
611
844
  export { }