.calendar-shell { padding:28px; border:1px solid var(--page-line); border-radius:14px; background:var(--page-surface); }
.calendar-month-title { font-family:'PT Serif Muzmost',Georgia,serif!important; font-size:27px!important; font-weight:400!important; }
.calendar-toolbar button { min-height:44px; }
#performance-calendar .calendar-toolbar { padding:20px; gap:20px; }
#performance-calendar .calendar-weekday { padding:12px 8px; color:var(--page-muted); font-weight:400; }
#performance-calendar .calendar-weekday * { text-transform:none; }
#performance-calendar .calendar-date-cell { min-height:80px!important; }
#performance-calendar .calendar-date-top { justify-content:flex-start; padding:6px 8px 4px; }
#performance-calendar .calendar-date-number { display:flex; align-items:center; justify-content:center; min-width:28px; min-height:28px; margin:0; font-size:13px; border-radius:50%; }
#performance-calendar .calendar-date-cell:not([aria-disabled="true"]) { cursor:pointer; }
#performance-calendar .calendar-date-cell:not([aria-disabled="true"]):hover { background:color-mix(in srgb,var(--page-accent-text) 7%,var(--page-surface)); }
#performance-calendar .calendar-date-cell:focus-within .calendar-date-number { background:var(--page-soft); }
#performance-calendar .calendar-month-event { margin:0 8px 4px; border-radius:7px; }
#performance-calendar .calendar-month-event .calendar-event-inner { padding:0; min-height:30px; box-sizing:border-box; }
#performance-calendar .calendar-month-event { cursor:pointer; }
.calendar-marker { display:flex; align-items:center; justify-content:flex-start; gap:9px; padding:6px 9px; min-height:30px; box-sizing:border-box; font-size:12px; line-height:18px; font-weight:600; font-variant-numeric:tabular-nums; white-space:nowrap; }
.calendar-marker img { flex-shrink:0; filter:var(--icon-filter); opacity:.85; }
.calendar-event-accessible { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
#performance-calendar .calendar-more { margin:0 8px 4px; padding:3px 8px; border-radius:6px; font-size:11px; min-height:24px; box-sizing:border-box; color:var(--page-body); }
#performance-calendar .calendar-more:hover { background:var(--page-soft); color:var(--page-text); }
.booking-dialog .calendar-entry { padding:14px 0; }
.booking-dialog .booking-actions { position:sticky; bottom:0; padding:16px 0; background:var(--page-surface); border-top:1px solid var(--page-line); }
.booking-dialog { overflow:hidden; }
.booking-dialog>[data-dialog-body],.booking-dialog>.booking-surface { max-height:calc(100dvh - 40px); overflow:auto; box-sizing:border-box; }
.booking-dialog .dialog-close { z-index:2; background:var(--page-surface); }
#performance-calendar .calendar-unavailable { --fc-monarch-event:var(--page-soft); --fc-monarch-event-contrast:var(--page-text); }
#performance-calendar { --fc-monarch-primary:#8b4e33; --fc-monarch-primary-foreground:#fff9f4; --fc-monarch-primary-over:#724029; --fc-monarch-primary-down:#643923; --fc-monarch-secondary:var(--page-soft); --fc-monarch-secondary-foreground:var(--page-text); --fc-monarch-secondary-over:var(--page-line); --fc-monarch-secondary-down:var(--page-line); --fc-monarch-tertiary:#8b4e33; --fc-monarch-tertiary-foreground:#fff9f4; --fc-monarch-tertiary-over:#724029; --fc-monarch-tertiary-down:#643923; --fc-monarch-event:#8b4e33; --fc-monarch-event-contrast:#fff9f4; --fc-monarch-highlight:var(--page-soft); --fc-monarch-now:var(--page-accent-text); --fc-monarch-selected:#8b4e33; --fc-monarch-selected-foreground:#fff9f4; --fc-monarch-selected-over:#724029; --fc-monarch-selected-down:#643923; --fc-monarch-outline:var(--page-focus); --fc-monarch-popover:var(--page-surface); --fc-monarch-background:var(--page-surface); --fc-monarch-foreground:var(--page-text); --fc-monarch-faint:var(--page-soft); --fc-monarch-muted:var(--page-soft); --fc-monarch-strong:var(--page-line); --fc-monarch-stronger:var(--page-line); --fc-monarch-strongest:var(--page-input-line); --fc-monarch-faint-foreground:var(--page-muted); --fc-monarch-muted-foreground:var(--page-body); --fc-monarch-border:var(--page-line); --fc-monarch-strong-border:var(--page-input-line); }
.calendar-topline { display:flex; align-items:center; justify-content:space-between; gap:24px; margin-bottom:22px; }.calendar-topline .booking-filter { margin:0; }
.calendar-legend { display:flex; flex-wrap:wrap; align-items:center; gap:20px; font-size:12px; color:var(--page-muted); margin-bottom:28px; }.calendar-legend>span:last-child { margin-left:auto; }
.calendar-day-jump { align-items:end; flex-wrap:wrap; gap:12px; margin:0 0 18px; }
.calendar-day-jump .org-field { margin:0; }
.calendar-day-jump input[type="date"] { min-height:44px; }
#calendar-jump-status { flex-basis:100%; margin:0; color:var(--page-accent-text); }
.calendar-key-performance,.calendar-key-unavailable { display:flex; align-items:center; gap:8px; }.calendar-key-performance::before,.calendar-key-unavailable::before { content:"";width:12px;height:12px;border-radius:3px;background:#8b4e33; }.calendar-key-unavailable::before { background:var(--page-muted); }
.calendar-entry { padding:20px 0; border-bottom:1px solid var(--page-line); }.calendar-entry p { margin:8px 0!important; }.calendar-entry strong { font-size:14px; }.calendar-entry .org-button { margin-top:8px; }.calendar-day-empty { padding:28px 0; }.calendar-form { margin-top:32px; }
#calendar-feedback { padding:16px; background:var(--page-soft); color:var(--page-accent-text); margin:0 0 20px; }
#performance-calendar { color:var(--page-text); font-family:'Open Sans Muzmost',sans-serif; }
#performance-calendar a { color:inherit; }
#performance-calendar .calendar-event-inner { color:inherit; }
#performance-calendar .calendar-performance { background:color-mix(in srgb,#8b4e33 16%,var(--page-surface)); color:var(--page-text); border-inline-start:3px solid var(--page-accent-text); }
#performance-calendar .calendar-unavailable { background:var(--page-soft); color:var(--page-text); border-inline-start:3px solid var(--page-muted); }
#performance-calendar .calendar-performance,#performance-calendar .calendar-unavailable { border-radius:6px; }
.calendar-list .calendar-performance,.calendar-list .calendar-unavailable { margin:4px 12px 8px; }
.calendar-list .calendar-event-inner { flex-direction:column; align-items:flex-start; gap:3px; padding:10px 12px; }
.calendar-list .calendar-event-time { flex:none; width:auto; max-width:none; font-size:12px; overflow:visible; }
.calendar-list .calendar-event-title { white-space:normal; overflow-wrap:anywhere; }
#performance-calendar :focus-visible { outline:2px solid var(--page-focus); outline-offset:2px; }
#unavailability-form { display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-top:24px; }
#unavailability-form>.org-field { min-width:0; }
#unavailability-form>.org-field:has(textarea),#unavailability-form>.booking-actions,#unavailability-form>.org-error,#unavailability-form>.org-feedback { grid-column:1/-1; }
.booking-dialog .calendar-entry:last-child { border-bottom:0; }.booking-dialog .booking-surface h2 { padding-right:24px; }
@media(max-width:900px) { .calendar-topline { flex-direction:column; align-items:flex-start; }.calendar-legend>span:last-child { margin-left:0; }.calendar-toolbar { flex-wrap:wrap; gap:16px; } }
@media(max-width:640px) { .calendar-shell { padding:18px 12px; }.calendar-topline { gap:12px; }.calendar-topline .booking-filter { display:grid; grid-template-columns:minmax(0,1fr) auto; width:100%; gap:6px 8px; }.calendar-topline .booking-filter label { grid-column:1/-1; margin:0; }.calendar-topline select { grid-column:1; min-width:0; width:100%; }.calendar-topline .booking-filter button { grid-column:2; align-self:end; }.calendar-legend { gap:8px 14px; margin-bottom:16px; }.calendar-day-jump { margin-bottom:12px; }.calendar-toolbar { display:flex!important; flex-wrap:wrap; gap:16px; }.calendar-toolbar>div { min-width:0; }.calendar-month-title { font-size:25px!important; } #unavailability-form { gap:14px; margin-top:12px; } #availability-dialog .booking-actions { gap:8px; margin-top:0; padding-top:10px; } }
@media(max-width:430px) { #unavailability-form { grid-template-columns:1fr; } }
@media(max-width:640px) {
  #performance-calendar .calendar-toolbar { padding:14px 8px; gap:12px; }
  #performance-calendar .calendar-month-event { margin-inline:3px; }
  #performance-calendar .calendar-month-event .calendar-marker { justify-content:center; gap:4px; padding:6px 2px; font-size:11px; }
  #performance-calendar .calendar-marker img { width:13px; height:13px; }
  #performance-calendar .calendar-date-top { padding:8px 4px; }
  #performance-calendar .calendar-more { margin-inline:3px; padding-inline:3px; }
}
@media(prefers-reduced-motion:no-preference) {
  #performance-calendar .calendar-date-cell { transition:background-color .16s ease; }
  #performance-calendar .calendar-month-event,#performance-calendar .calendar-more { transition:background-color .16s ease,box-shadow .16s ease; }
  #performance-calendar .calendar-month-event:hover { box-shadow:inset 0 0 0 1px var(--page-input-line); }
}

.calendar-view-tools { display:flex; justify-content:space-between; align-items:center; gap:16px; padding:0 0 14px; color:var(--page-muted); font-size:13px; }
.calendar-view-tools[hidden] { display:none; }
.calendar-view-tools>span,.calendar-expand { display:inline-flex; align-items:center; gap:9px; }
.calendar-expand,.calendar-back { padding:10px 14px; min-height:44px; border:1px solid var(--page-line); border-radius:9px; color:var(--page-text); background:var(--page-surface); cursor:pointer; font:inherit; font-size:13px; }
.calendar-back:hover { background:var(--page-soft); border-color:var(--page-input-line); }
.calendar-expand { background:#8b4e33; border-color:#8b4e33; color:#fff9f4; font-weight:600; padding-inline:18px; }
.calendar-expand:hover { background:#743f2b; border-color:#743f2b; }
.calendar-view-tools .calendar-expand img { filter:brightness(0) invert(1); }
.calendar-expand:focus-visible,.calendar-back:focus-visible { outline:2px solid var(--page-focus); outline-offset:3px; }
.calendar-view-tools img,.calendar-modal-icon img,.calendar-modal-date img,.demo-calendar-entry img { filter:var(--icon-filter); flex-shrink:0; }
.calendar-expanded-dialog { width:calc(100vw - 32px); height:calc(100dvh - 32px); max-width:none; max-height:none; box-sizing:border-box; margin:auto; padding:24px; border:1px solid var(--page-line); border-radius:18px; background:var(--page-surface); color:var(--page-text); overflow:auto; }
.calendar-expanded-dialog::backdrop { background:rgb(0 0 0 / .55); backdrop-filter:blur(5px); }
.calendar-expanded-dialog .calendar-view-tools { position:sticky; top:-24px; padding:12px 0; background:var(--page-surface); z-index:10; }
body:has(.calendar-expanded-dialog[open]) { overflow:hidden; }
.calendar-modal-heading { display:flex; align-items:center; gap:16px; margin-bottom:22px; padding-right:28px; }
.calendar-modal-icon { display:grid; place-items:center; flex:0 0 52px; width:52px; height:52px; border:1px solid var(--page-line); border-radius:14px; background:var(--page-soft); }
.calendar-modal-heading h2,.calendar-modal-heading h3 { margin:4px 0 0!important; font-family:'PT Serif Muzmost',Georgia,serif; font-weight:400; font-size:27px; line-height:1.3; }
.calendar-modal-heading .calendar-state,.calendar-modal-caption { margin:0!important; font-size:12px; line-height:1.5; color:var(--page-muted); }
.calendar-modal-date { display:flex; align-items:center; gap:10px; padding:14px 16px; margin:0 0 22px; border-radius:10px; background:var(--page-soft); color:var(--page-body); font-size:13px; }
.calendar-modal-description { margin:20px 0; line-height:1.75; }
.calendar-modal-description:empty { display:none; }
.calendar-dialog { border-radius:18px; }
.calendar-dialog::backdrop { background:rgb(0 0 0 / .55); backdrop-filter:blur(5px); }
.calendar-dialog .demo-calendar-entry { display:flex; align-items:center; gap:14px; padding:14px 16px; margin:8px 0; border:1px solid var(--page-line); border-inline-start:3px solid var(--page-accent-text); border-radius:10px; background:color-mix(in srgb,#8b4e33 8%,var(--page-surface)); }
.calendar-dialog .demo-calendar-entry--unavailable { border-inline-start-color:var(--page-muted); background:var(--page-soft); }
.calendar-dialog .demo-calendar-entry>span { margin:0; min-width:0; }
.calendar-dialog .demo-calendar-entry strong { color:var(--page-text); font-size:14px; font-weight:600; }
.calendar-dialog .demo-calendar-entry span span { margin-top:4px; font-size:12px; }
.calendar-dialog .demo-calendar-entry:hover { border-color:var(--page-accent-text); }
.calendar-back { margin:10px 10px 0 0; }
.calendar-back[hidden] { display:none; }
#calendar-day-events .calendar-entry { margin:10px 0; padding:16px; border:1px solid var(--page-line); border-radius:12px; background:var(--page-soft); }
#calendar-day-events .calendar-entry--performance { border-inline-start:3px solid var(--page-accent-text); background:color-mix(in srgb,#8b4e33 8%,var(--page-surface)); }
.calendar-entry-heading { display:flex; align-items:center; gap:10px; }
.calendar-entry-heading img { filter:var(--icon-filter); }
#calendar-day-events .calendar-entry strong { font-weight:400; color:var(--page-body); font-size:13px; }
#calendar-day-events .calendar-entry p { font-size:15px; }
#calendar-day-events .calendar-entry .org-button { min-height:40px; margin-top:4px; font-size:13px; }
#calendar-day-dialog>.booking-surface { display:flex; flex-direction:column; overflow:hidden; }
#calendar-day-dialog .calendar-modal-heading,#calendar-day-dialog .calendar-modal-date { flex-shrink:0; }
#calendar-day-events { overflow:auto; min-height:0; flex:1; padding-right:4px; }
#calendar-day-dialog .booking-actions { position:static; flex-shrink:0; padding:16px 0 0; margin-top:12px; }
#calendar-day-dialog .calendar-day-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
#calendar-day-dialog .calendar-day-actions .org-button { min-height: 44px; padding: 9px 12px; font-size: 13px; line-height: 1.35; }
#calendar-day-dialog .calendar-day-actions .org-button:last-child { grid-column: 1 / -1; }
#calendar-day-dialog .calendar-day-actions .org-button img { flex: none; }
#calendar-day-dialog .dialog-close, #availability-dialog .dialog-close { width: 40px; height: 40px; border-radius: 7px; }
#calendar-day-dialog .booking-event a { text-decoration: underline; text-decoration-color: transparent; text-underline-offset: 3px; transition: text-decoration-color .18s ease; }
#calendar-day-dialog .booking-event a:hover, #calendar-day-dialog .booking-event a:focus-visible { text-decoration-color: currentColor; }
@media (max-width: 640px) { #calendar-day-dialog .calendar-day-actions { grid-template-columns: 1fr; } #calendar-day-dialog .calendar-day-actions .org-button:last-child { grid-column: auto; } }
#availability-dialog .booking-actions { position:static; }
@media(max-width:640px) {
  .calendar-expanded-dialog { width:100vw; height:100dvh; border:0; border-radius:0; padding:12px; }
  .calendar-expanded-dialog .calendar-view-tools { top:-12px; }
  .calendar-modal-heading { gap:12px; }
  .calendar-modal-icon { flex-basis:44px; width:44px; height:44px; border-radius:12px; }
  .calendar-modal-heading h2,.calendar-modal-heading h3 { font-size:23px; }
  .calendar-view-tools { gap:8px; }
}

.calendar-event-tooltip { position:fixed; inset:auto; margin:0; z-index:100; width:300px; max-width:calc(100vw - 16px); max-height:calc(100dvh - 16px); box-sizing:border-box; padding:18px; border:1px solid var(--page-input-line); border-radius:12px; background:var(--page-surface); color:var(--page-text); box-shadow:0 8px 28px rgb(0 0 0 / .18); font-family:'Open Sans Muzmost',sans-serif; font-size:13px; line-height:1.6; overflow:auto; overflow-wrap:anywhere; }
.calendar-event-tooltip[hidden] { display:none; }
.calendar-event-tooltip strong { display:block; margin:10px 0 6px; font-size:15px; font-weight:600; line-height:1.5; }
.calendar-tooltip-kind { display:flex; align-items:center; gap:8px; color:var(--page-accent-text); font-size:11px; }
.calendar-tooltip-kind img { filter:var(--icon-filter); }
.calendar-tooltip-time { color:var(--page-muted); font-size:12px; }
.calendar-event-tooltip p { margin:10px 0 0; padding-top:10px; border-top:1px solid var(--page-line); }
@media(max-width:430px) {
  #performance-calendar .calendar-month-event .calendar-marker { flex-direction:column; gap:2px; padding:4px 2px; min-height:40px; line-height:14px; }
}
@media(prefers-reduced-motion:no-preference) {
  .calendar-event-tooltip:popover-open { animation:calendar-tooltip-in .14s ease-out; }
  .calendar-expand { transition:background-color .16s ease; }
  @keyframes calendar-tooltip-in { from { opacity:0; transform:translateY(3px); } to { opacity:1; transform:none; } }
}

.calendar-day-jump[hidden], [data-calendar-resource] button[hidden] { display: none; }
.calendar-resource-label { display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px 16px; margin: 0; }
