.calendar-key>span,.public-calendar-page .legend>span{display:inline-flex;align-items:center;gap:7px;min-height:30px;padding:5px 10px;border:1px solid #d5dfe1;border-radius:999px;background:#fff;color:#203034;font-size:11px;font-weight:600;line-height:1.4}
.calendar-key>span:has(.available),.public-calendar-page .legend>span:has(.available){background:#e5f3eb;border-color:#b4d7c4}
.calendar-key>span:has(.occupied),.public-calendar-page .legend>span:has(.occupied){background:#fbe8e6;border-color:#e6bdb8}
.calendar-key>span:has(.tentative),.public-calendar-page .legend>span:has(.tentative){background:#fff3d7;border-color:#e7d197}
.calendar-key>span:has(.calendar-blocked),.public-calendar-page .legend>span:has(.blocked){background:#e1e7ef;border-color:#b9c7d9}
.calendar-key .dot,.public-calendar-page .legend .dot{width:9px;height:9px;flex:0 0 9px;margin:0}
.calendar-key .dot.available,.public-calendar-page .legend .dot.available{background:#387654}
.calendar-key .dot.occupied,.public-calendar-page .legend .dot.occupied{background:#a1473c}
.calendar-key .dot.tentative,.public-calendar-page .legend .dot.tentative{background:#98700c}
.calendar-key .dot.calendar-blocked,.public-calendar-page .legend .dot.blocked{background:#526b8c}
.public-calendar-page .legend,.calendar-key{gap:8px}
.public-calendar-page .toolbar #currentMonth,.reservations-panel #calendarToday,.public-calendar-page #refreshAvailability{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;padding:8px 12px;border-radius:9px;border:1px solid #dfca89;background:#fff2c5;color:#243f43;font-size:12px;font-weight:650;line-height:1.4;box-shadow:0 1px 2px #172e330d;cursor:pointer}
.calendar-action-icon{width:17px;height:17px;flex:0 0 17px}
.public-calendar-page #refreshAvailability{background:#243f43;border-color:#243f43;color:#fff}
.public-calendar-page .toolbar #currentMonth:hover:not(:disabled),.reservations-panel #calendarToday:hover:not(:disabled){background:#f8e7aa;border-color:#c7a950}
.public-calendar-page #refreshAvailability:hover:not(:disabled){background:#36585d;border-color:#36585d}
.public-calendar-page #currentMonth:disabled,.public-calendar-page #refreshAvailability:disabled{opacity:.6;cursor:wait;box-shadow:none}
.public-calendar-page #currentMonth:disabled{cursor:default}
.public-calendar-page #refreshAvailability:disabled .calendar-action-icon{animation:calendar-refresh-turn 1s linear infinite}
@keyframes calendar-refresh-turn{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.public-calendar-page #refreshAvailability:disabled .calendar-action-icon{animation:none}}

.calendar-filter-bar{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;position:relative;margin:16px 0 8px}
.calendar-unit-filter{font-size:11px;flex:0 1 230px;min-width:0}
.calendar-unit-filter select{margin-top:4px;min-height:36px;height:36px;padding:6px 9px;font-size:12px}
.calendar-date-filter{position:static}
.calendar-date-filter>summary,.public-calendar-page #publicFilterDisclosure>summary{display:flex;align-items:center;justify-content:center;gap:9px;min-height:36px;margin:0;padding:7px 12px;border:1px solid #d4dfe1;border-radius:8px;background:#fff;color:#243f43;font-size:12px;font-weight:600;list-style:none;cursor:pointer}
.calendar-date-filter>summary::-webkit-details-marker{display:none}
.calendar-date-filter>summary::after{content:'';width:6px;height:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg)}
.calendar-date-filter[open]>summary::after{transform:rotate(225deg)}
.calendar-date-fields{position:absolute;z-index:3;left:0;top:calc(100% + 6px);width:min(520px,100%);display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:16px;border:1px solid #d4dfe1;border-radius:10px;background:#fff;box-shadow:0 6px 20px #172e3324}
.calendar-date-fields label{font-size:12px;min-width:0}
.calendar-date-fields input{min-width:0;height:36px;padding:6px 9px;font-size:12px}
.calendar-date-fields button{justify-self:start;min-height:36px;font-size:12px;padding:7px 12px}
.calendar-date-fields p{grid-column:1/-1;margin:0;font-size:11px;color:var(--muted)}
.calendar-filter-summary{font-size:12px;color:var(--muted);margin:8px 0 14px;line-height:1.5}
.calendar-filter-summary[data-error=true]{color:#a02d23;font-weight:600}
.calendar-filter-bar>button{font-size:12px;min-height:36px;padding:7px 10px}
.reservations-panel .private-calendar-panel .day.outside-calendar-period{background:#f4f6f8;opacity:.7}
@media(max-width:700px){.calendar-filter-bar{gap:8px}.calendar-unit-filter{flex:1 1 145px}.calendar-date-filter>summary,.public-calendar-page #publicFilterDisclosure>summary{padding:7px 10px}.calendar-date-fields{padding:12px;gap:10px}.reservations-panel .private-calendar-panel .day.outside-calendar-period{display:none}}

.calendar-filter-bar{display:grid;grid-template-columns:max-content max-content minmax(0,120px);align-items:center;gap:8px}
.calendar-unit-filter{display:flex;align-items:center;gap:7px;white-space:nowrap}
.calendar-unit-filter select{margin:0;flex:1;min-width:0}
.calendar-unit-caption{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.public-calendar-page .calendar-filter-bar #currentMonth,.reservations-panel .calendar-filter-bar #calendarToday{position:static;display:inline-flex;align-items:center;justify-content:center;gap:5px;width:auto;height:32px;min-height:32px;margin:0;padding:5px 9px;border:1px solid #dfca89;border-radius:8px;background:#fff2c5;color:#243f43;font-size:11px;font-weight:600;line-height:1.4;white-space:nowrap;box-shadow:0 1px 2px #172e330d}
.calendar-filter-bar .calendar-action-icon{width:15px;height:15px;flex-basis:15px}
.reservations-panel .calendar-heading{padding:0;min-height:0}
.calendar-filter-bar .calendar-date-filter>summary,.public-calendar-page .calendar-filter-bar #publicFilterDisclosure>summary{min-height:32px;height:32px;padding:5px 9px;font-size:11px;gap:6px;white-space:nowrap}
.calendar-filter-bar .calendar-unit-filter select{height:32px;min-height:32px;padding:4px 6px;font-size:11px}
.calendar-filter-bar>button:last-child:not(:first-child){grid-column:1/-1;justify-self:start;min-height:26px;padding:2px 0;border:0;background:none;color:#396571;font-size:11px;box-shadow:none}
@media(max-width:700px){.calendar-filter-bar{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr) minmax(0,1fr);gap:6px}.calendar-unit-caption{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.calendar-filter-bar .calendar-unit-filter{display:block}.calendar-date-filter{min-width:0}.public-calendar-page .calendar-filter-bar #currentMonth,.reservations-panel .calendar-filter-bar #calendarToday,.calendar-filter-bar .calendar-date-filter>summary,.public-calendar-page .calendar-filter-bar #publicFilterDisclosure>summary{width:100%;padding:5px 4px;gap:4px}.calendar-filter-bar .calendar-unit-filter select{width:100%}.calendar-filter-summary{font-size:11px}}
@media(max-width:360px){.public-calendar-page .calendar-filter-bar #currentMonth,.reservations-panel .calendar-filter-bar #calendarToday,.calendar-filter-bar .calendar-date-filter>summary,.public-calendar-page .calendar-filter-bar #publicFilterDisclosure>summary,.calendar-filter-bar .calendar-unit-filter select{font-size:10px}.calendar-filter-bar .calendar-action-icon{width:13px;height:13px;flex-basis:13px}}

.calendar-filter-bar{width:min(100%,340px);margin-left:auto;margin-right:auto;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr) minmax(0,1fr)}
.calendar-filter-summary{text-align:center}
.calendar-filter-bar>button:last-child:not(:first-child){justify-self:center}
.reservations-panel .private-calendar-panel .toolbar{grid-template-columns:36px max-content 36px;justify-content:center;gap:10px}
.reservations-panel .private-calendar-panel .toolbar button{width:36px;height:36px;min-height:36px}
.reservations-panel .private-calendar-panel #month{min-width:0}
@media(max-width:360px){.reservations-panel .private-calendar-panel .toolbar{grid-template-columns:32px minmax(0,max-content) 32px;gap:6px}.reservations-panel .private-calendar-panel .toolbar button{width:32px;height:32px;min-height:32px}.reservations-panel .private-calendar-panel #month{font-size:16px}}

.public-calendar-page .public-month-card .toolbar{grid-template-columns:36px max-content 36px;justify-content:center;gap:10px}
.public-calendar-page .public-month-card .toolbar #prev{grid-column:1;grid-row:1}
.public-calendar-page .public-month-card .toolbar #month{grid-column:2;grid-row:1;min-width:0;font-size:18px}
.public-calendar-page .public-month-card .toolbar #next{grid-column:3;grid-row:1}
.public-calendar-page .public-month-card .toolbar button,.reservations-panel .private-calendar-panel .toolbar button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;min-height:36px;padding:0;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--brown);cursor:pointer}
.public-calendar-page .public-month-card .toolbar button:hover:not(:disabled),.reservations-panel .private-calendar-panel .toolbar button:hover:not(:disabled){background:#fff2c5;border-color:#dfca89}
.public-calendar-page .public-month-card .toolbar button:disabled,.reservations-panel .private-calendar-panel .toolbar button:disabled{opacity:.5;cursor:default}
@media(max-width:360px){.public-calendar-page .public-month-card .toolbar{grid-template-columns:32px minmax(0,max-content) 32px;gap:6px}.public-calendar-page .public-month-card .toolbar button,.reservations-panel .private-calendar-panel .toolbar button{width:32px;height:32px;min-height:32px}.public-calendar-page .public-month-card .toolbar #month{font-size:16px}}

.calendar-view-selector{display:flex;justify-content:center;gap:3px;width:max-content;max-width:100%;margin:16px auto 0;padding:3px;background:#fff;border:1px solid #d4dfe1;border-radius:9px}
.calendar-view-selector button{min-height:32px;padding:6px 12px;font-size:11px;border:0;border-radius:6px;background:transparent;color:#435b61;transition:none}
.calendar-view-selector button[aria-pressed=true]{background:#243f43;color:#fff;font-weight:650}
.calendar-view-selector button:hover:not([aria-pressed=true]){background:#fff2c5;color:#243f43}
.public-calendar-page #calendar.split-calendar,.reservations-panel #calendar.split-calendar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
.calendar-unit-section{min-width:0}
.calendar-unit-section>h3,.calendar-unit-section>h4{margin:0 0 10px;font-size:14px!important;text-align:center;line-height:1.5;color:#243f43}
.public-calendar-page .split-calendar .calendar-unit-grid,.reservations-panel .split-calendar .calendar-unit-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;overflow:visible;max-height:none}
.public-calendar-page #calendar.split-single-unit,.reservations-panel #calendar.split-single-unit{grid-template-columns:minmax(0,1fr)}
.public-calendar-page .split-calendar .day,.reservations-panel .split-calendar .day{padding:5px;min-height:90px}
.split-calendar .unit{flex-direction:column!important;align-items:flex-start!important;gap:3px!important}
.split-calendar .unit b{font-size:10px!important}
.split-calendar .unit span{font-size:10px!important;max-width:100%}
@media(max-width:1000px){.public-calendar-page .split-calendar .calendar-unit-grid,.reservations-panel .split-calendar .calendar-unit-grid{display:block}.public-calendar-page .split-calendar .week,.public-calendar-page .split-calendar .calendar-spacer,.reservations-panel .split-calendar .week,.reservations-panel .split-calendar .calendar-blank{display:none}.public-calendar-page .split-calendar .day,.reservations-panel .split-calendar .day{display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:5px;min-height:76px;margin:0 0 8px}.public-calendar-page .split-calendar .day>strong{margin:0;font-size:16px}.public-calendar-page .split-calendar .day-label-mobile{display:block;font-size:9px}.reservations-panel .split-calendar .calendar-day-heading{flex-direction:column;padding:0;gap:1px}.reservations-panel .split-calendar .calendar-day-heading small{display:block;font-size:9px}.split-calendar .unit{min-height:54px!important;justify-content:center!important}.calendar-unit-section>h3,.calendar-unit-section>h4{position:sticky;top:0;background:#fff8de;padding:6px 0;z-index:1}.public-calendar-page .split-calendar .outside-period,.reservations-panel .split-calendar .outside-calendar-period{display:none}}
@media(max-width:500px){.public-calendar-page #calendar.split-calendar,.reservations-panel #calendar.split-calendar{gap:8px}.calendar-unit-section>h3,.calendar-unit-section>h4{font-size:11px!important}.public-calendar-page .split-calendar .day,.reservations-panel .split-calendar .day{grid-template-columns:20px minmax(0,1fr);padding:4px;gap:3px}.split-calendar .unit{padding:5px 4px!important}.public-calendar-page .split-calendar .day>strong{font-size:13px}.reservations-panel .split-calendar .calendar-day-heading strong{font-size:11px}.split-calendar .unit b{font-size:9px!important}}
@media(max-width:1000px){.public-calendar-page #calendar.split-calendar .day,.reservations-panel #calendar.split-calendar .day{grid-template-columns:28px minmax(0,1fr)}}
@media(max-width:500px){.public-calendar-page #calendar.split-calendar .day,.reservations-panel #calendar.split-calendar .day{grid-template-columns:20px minmax(0,1fr)}}

.split-calendar .calendar-unit-section{position:relative}.split-calendar:not(.split-single-unit) .calendar-unit-section+.calendar-unit-section:before{content:"";position:absolute;left:-8px;top:0;bottom:0;border-left:1px solid #cbbd90;pointer-events:none}.calendar-unit-section>h3,.calendar-unit-section>h4{display:flex;align-items:center;justify-content:center;gap:9px;padding:10px!important;border:1px solid #dfd1a7;border-radius:10px;background:#fff2c5!important;box-shadow:0 2px 5px #3f33120a}.calendar-unit-kicker{font-size:11px;font-weight:500;letter-spacing:.03em}.calendar-unit-number{display:inline-block;padding:3px 11px;border-radius:7px;background:#243f43;color:#fff;font-size:17px;line-height:1.4}@media(max-width:500px){.split-calendar:not(.split-single-unit) .calendar-unit-section+.calendar-unit-section:before{left:-5px}.calendar-unit-section>h3,.calendar-unit-section>h4{flex-direction:column;gap:3px;padding:8px 3px!important}.calendar-unit-kicker{font-size:10px}.calendar-unit-number{font-size:15px;padding:2px 12px}}
