.skeleton-calendar{min-width:0}.calendar-header,.calendar-header-actions,.calendar-toolbar,.calendar-navigation,.calendar-dialog-actions,.calendar-admin-actions,.calendar-resource-item,.calendar-resource-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.calendar-header,.calendar-toolbar,.calendar-resource-item{justify-content:space-between}.calendar-header h2{margin-block:0}.calendar-header-actions{justify-content:flex-end}.calendar-navigation .calendar-step{width:2.55rem;padding-inline:.4rem;font-size:1.2rem}.calendar-navigation .app-button.secondary:hover{background:color-mix(in srgb,var(--color-accent) 9%,transparent);color:var(--color-accent-strong)}.calendar-navigation .app-button.secondary:focus-visible{outline:3px solid color-mix(in srgb,var(--color-accent) 55%,transparent);outline-offset:2px}.calendar-toolbar{margin-block:1rem}.calendar-filter{min-width:0;margin:0;padding:.75rem;border:1px solid var(--color-border,#ddd);border-radius:var(--radius,6px)}.calendar-filter[hidden],[data-calendar-resource-field][hidden]{display:none!important}.calendar-filter legend,.app-form-fieldset legend{padding-inline:.35rem;font-weight:650}.calendar-resource-filter{display:flex;align-items:center;gap:.5rem 1rem;flex-wrap:wrap;margin-bottom:.65rem}.calendar-resource-filter label,.calendar-checkbox{display:inline-flex!important;align-items:center;gap:.4rem;margin:0}.calendar-resource-filter input,.calendar-checkbox input{width:auto!important;margin:0}.calendar-views .app-nav-item[aria-pressed=true]{border-color:var(--color-accent,#2271b1);background:var(--color-accent,#2271b1);color:var(--color-surface,#fff)}
.calendar-grid{max-width:100%;overflow:auto;overscroll-behavior:contain}.calendar-week{position:relative;display:grid;grid-template-columns:4.5rem repeat(7,9rem);grid-template-rows:2.9rem repeat(var(--calendar-slot-count),minmax(3.25rem,auto));min-width:max-content;max-height:70vh;border:1px solid var(--color-border,#ddd);background:var(--color-surface,#fff)}.calendar-week-corner,.calendar-week-heading{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:center;gap:.15rem;min-width:0;padding:.2rem;border-right:1px solid var(--color-border,#ddd);border-bottom:1px solid var(--color-border,#ddd);background:var(--color-surface,#fff);font-weight:700}.calendar-week-heading{font-size:.875rem}.calendar-week-heading>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-week-corner{left:0;z-index:7}.calendar-week-time{position:sticky;left:0;z-index:4;display:flex;align-items:flex-start;justify-content:flex-end;padding:.35rem .45rem;border-right:1px solid var(--color-border,#ddd);border-bottom:1px solid var(--color-border,#ddd);background:var(--color-surface,#fff);color:var(--color-muted,#646970);font-size:.82rem}.calendar-week-cell{position:relative;min-width:0;padding:.2rem;border-right:1px solid var(--color-border,#ddd);border-bottom:1px solid var(--color-border,#ddd)}.calendar-cell-create{position:absolute;inset:0;z-index:1;width:100%;border:0;background:transparent;color:transparent;cursor:pointer}.calendar-cell-create span{opacity:0;display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:50%;background:var(--color-accent,#2271b1);color:var(--color-surface,#fff)}.calendar-week-cell:hover .calendar-cell-create span,.calendar-week-cell:focus-within .calendar-cell-create span{opacity:.75}.calendar-cell-create:focus-visible{outline:3px solid color-mix(in srgb,var(--color-accent,#2271b1) 55%,transparent);outline-offset:-3px}.calendar-week-event{z-index:3;align-self:stretch;margin:.15rem;min-height:0;overflow:hidden;flex-direction:column;align-items:flex-start;justify-content:flex-start}
.calendar-week-event-group{position:relative;z-index:3;display:flex;align-items:stretch;gap:.18rem;min-width:0;padding:.15rem;overflow:hidden}.calendar-week-event-group .calendar-week-event{flex:1 1 0;min-width:0;margin:0}.calendar-resource-booking{border-color:color-mix(in srgb,var(--color-accent,#2271b1) 65%,var(--color-border,#ddd));background:color-mix(in srgb,var(--color-accent,#2271b1) 18%,var(--color-surface,#fff));font-weight:700}.calendar-resource-booking .calendar-resource-title{font-weight:400}.calendar-availability{display:flex;gap:.35rem;flex-wrap:wrap;padding:.65rem;border:1px solid var(--color-border,#ddd);border-radius:var(--radius,6px)}.calendar-availability[hidden]{display:none}.calendar-availability>strong{flex-basis:100%}.calendar-availability-item{padding:.2rem .45rem;border:1px solid currentColor;border-radius:999px;font-size:.82rem}.calendar-availability-item--busy{color:#8b1e16;background:color-mix(in srgb,#b42318 12%,var(--color-surface,#fff))}.calendar-availability-item--free{color:#176b35;background:color-mix(in srgb,#16803c 10%,var(--color-surface,#fff))}
.calendar-month{display:grid;grid-template-columns:repeat(7,minmax(8rem,1fr));gap:1px;min-width:56rem;background:var(--color-border,#ddd)}.calendar-month-day{position:relative;min-height:8rem;padding:.45rem;background:var(--color-surface,#fff);cursor:pointer}.calendar-month-day:hover,.calendar-month-day:focus-visible{box-shadow:inset 0 0 0 2px var(--color-accent,#2271b1);outline:0}.calendar-month-add{position:absolute;top:.35rem;right:.45rem;opacity:0;color:var(--color-accent,#2271b1);font-weight:700}.calendar-month-day:hover>.calendar-month-add,.calendar-month-day:focus-within>.calendar-month-add{opacity:1}.calendar-day-events{display:flex;align-items:stretch;gap:.3rem;flex-wrap:wrap;margin-top:.3rem}.calendar-event{display:inline-flex;align-items:center;gap:.35rem;max-width:100%;border:1px solid var(--color-border,#ddd);border-radius:var(--radius,6px);background:color-mix(in srgb,var(--color-accent,#2271b1) 10%,var(--color-surface,#fff));color:var(--color-text,#1d2327);padding:.3rem .45rem;font:inherit;cursor:pointer}.calendar-event strong{overflow:hidden;text-overflow:ellipsis}.calendar-event span{font-size:.75rem;color:var(--color-muted,#646970)}.calendar-event--external{border-style:dashed}.calendar-event:focus-visible{outline:3px solid color-mix(in srgb,var(--color-accent,#2271b1) 55%,transparent);outline-offset:2px}.calendar-agenda-day{margin-block:1rem}
.calendar-dialog{max-width:min(92vw,32rem)}.calendar-dialog .app-form{max-width:none}.calendar-dialog textarea{min-height:7rem}.calendar-dialog-actions a[hidden],.calendar-dialog-actions button[hidden]{display:none}.calendar-admin-form{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-admin-form>label,.calendar-admin-form>.app-button{grid-column:1/-1}.app-form-fieldset{min-width:0;margin:0;padding:1rem;border:1px solid var(--color-border,#ddd);border-radius:var(--radius,6px)}.calendar-connection-status{margin:.25rem 0;color:var(--color-muted,#646970);font-weight:650}.calendar-resources-admin{margin-top:1.5rem}.calendar-resource-item p{margin:.25rem 0 0}.calendar-resource-actions{justify-content:flex-end}.calendar-resource-actions .app-icon-button{flex:0 0 auto}
@media(max-width:760px){.calendar-header,.calendar-toolbar{align-items:flex-start;flex-direction:column}.calendar-header-actions,.calendar-navigation,.calendar-views,.calendar-admin-actions{width:100%}.calendar-header-actions{justify-content:flex-start}.calendar-views .app-nav-item{flex:1 1 auto}.calendar-admin-form{grid-template-columns:minmax(0,1fr)}.calendar-admin-form>label,.calendar-admin-form>.app-button{grid-column:auto}.calendar-resource-item{align-items:flex-start;flex-direction:column}.calendar-dialog-actions>*{flex:1 1 100%}.calendar-week{max-height:65vh}}
.calendar-grid.calendar-week,.calendar-grid.calendar-month{width:100%;min-width:0}
.calendar-week-event-group{display:grid;grid-template-columns:var(--calendar-collision-template);grid-template-rows:repeat(var(--calendar-collision-rows),minmax(0,1fr));align-items:stretch;pointer-events:none}.calendar-week-event-position,.calendar-week-event-shell{display:flex;min-width:0;min-height:0;overflow:hidden;pointer-events:auto}.calendar-week-event-position{position:relative}.calendar-week-event-position>.calendar-week-event,.calendar-week-event-position>.calendar-week-event-shell{position:absolute;inset:0;width:auto;max-width:none}.calendar-week-event-group .calendar-week-event{box-sizing:border-box;flex:1 1 0;width:100%;min-width:0;max-width:100%;margin:0;padding-inline:.1rem;overflow-wrap:anywhere;word-break:break-word}.calendar-week-event-group .calendar-week-event strong,.calendar-week-event-group .calendar-week-event span{max-width:100%;overflow:hidden;text-overflow:ellipsis}.calendar-week-event-shell--expanded .calendar-week-event strong{white-space:nowrap}
.calendar-week{--calendar-add-width:2.5rem}.calendar-week-event-group{margin-right:var(--calendar-add-width)}.calendar-week-cell--occupied{z-index:4;pointer-events:none}.calendar-week-cell--occupied .calendar-cell-create{inset:0 0 0 auto;width:var(--calendar-add-width);color:inherit;pointer-events:auto}
.calendar-context-toggle{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:1.45rem;height:1.45rem;padding:0;border:1px solid var(--color-border,#ddd);border-radius:var(--radius,6px);background:var(--color-surface,#fff);color:var(--color-text,#1d2327);opacity:0;cursor:pointer}.calendar-week-heading:hover .calendar-day-size-toggle,.calendar-day-size-toggle:focus-visible,.calendar-week-heading:focus-within .calendar-day-size-toggle,.calendar-week-event-shell:hover .calendar-event-size-toggle,.calendar-event-size-toggle:focus-visible,.calendar-week-event-shell:focus-within .calendar-event-size-toggle{opacity:1}.calendar-context-toggle:focus-visible{outline:2px solid var(--color-accent,#2271b1);outline-offset:1px}.calendar-event-size-toggle{position:absolute;z-index:5;top:.2rem;right:.2rem}
.calendar-control-stack{display:flex;align-items:flex-end;flex-direction:column;gap:.5rem}.calendar-control-stack .calendar-header-actions{justify-content:flex-end}.calendar-period-toolbar{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.calendar-period-toolbar h3{margin:0}
@media(max-width:760px){.calendar-control-stack{align-items:stretch;width:100%}.calendar-control-stack .calendar-header-actions{justify-content:flex-start}.calendar-control-stack .calendar-views{width:100%}.calendar-period-toolbar{align-items:flex-start}}

.calendar-cell-create:disabled{color:var(--color-muted);opacity:.5;cursor:not-allowed}
.calendar-cell-create:disabled span{background:var(--color-muted);color:var(--color-surface)}
.calendar-month-add{border:0;background:transparent;font:inherit;font-weight:700;cursor:pointer}
.calendar-month-add:disabled{opacity:0;color:var(--color-muted);cursor:not-allowed}
.calendar-month-day[aria-disabled="true"]{cursor:default}

/* Hidden controls remain keyboard reachable; pointer targets appear with their cell. */
.calendar-cell-create,.calendar-month-add{pointer-events:none}
.calendar-week-cell:hover .calendar-cell-create,.calendar-week-cell:focus-within .calendar-cell-create,.calendar-month-day:hover .calendar-month-add,.calendar-month-day:focus-within .calendar-month-add{pointer-events:auto}
.calendar-week-cell--occupied{justify-self:end;width:var(--calendar-add-width);box-sizing:border-box;pointer-events:auto}
.calendar-week-cell--occupied .calendar-cell-create{pointer-events:none}
.calendar-week-cell--occupied:hover .calendar-cell-create,.calendar-week-cell--occupied:focus-within .calendar-cell-create{pointer-events:auto}
.calendar-week-cell:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}
/* Touch has no reliable hover: retain discoverable add targets. */
@media(hover:none) and (pointer:coarse){.calendar-cell-create,.calendar-month-add,.calendar-week-cell--occupied .calendar-cell-create{pointer-events:auto}.calendar-cell-create span{opacity:.75}.calendar-month-add,.calendar-month-add:disabled{opacity:1}}
