/* Scoped calendar styles, shared by the public schedule and local editor. */
.calendar{--calendar-border:var(--line,#f1dbe2);width:100%;min-width:0;color:var(--ink,#514250);font:14px/1.5 var(--body,Noto,sans-serif)}
.calendar,.calendar *{box-sizing:border-box}
.calendar button{font-family:inherit;cursor:pointer;touch-action:manipulation}
.calendar button:focus-visible{outline:3px solid #7e9b57;outline-offset:2px;z-index:4}
.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px}
.calendar-month{margin:0;color:var(--pink-ink,#9b4465);font:30px/1.2 var(--round,Jua,sans-serif);white-space:nowrap}
.calendar-controls{display:flex;align-items:center;gap:7px}
.calendar-nav{display:grid;place-items:center;width:40px;height:40px;padding:0;border:1px solid var(--calendar-border);border-radius:50%;background:var(--paper,#fffefa);color:var(--ink,#514250);font-size:25px;line-height:1;transition:background .15s}
.calendar-nav-today{width:auto;min-width:52px;padding:0 14px;border-radius:20px;font-size:12px;font-weight:600}
.calendar-nav:hover{background:#ffe9f0}
.calendar-nav:disabled{opacity:.35;cursor:default}
.calendar-grid{overflow:hidden;border:1px solid var(--calendar-border);border-radius:15px;background:var(--paper,#fffefa)}
.calendar-weekdays,.calendar-days,.calendar-bars{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.calendar-weekdays{min-height:37px;align-items:center;border-bottom:1px solid var(--calendar-border);background:#fff4f6;text-align:center;font-size:12px;font-weight:600;color:#89727d}
.calendar-weekend-5{color:#6683a0}
.calendar-weekend-6{color:#bb7089}
.calendar-week{position:relative;min-height:calc(40px + var(--calendar-lanes,2) * 33px);isolation:isolate}
.calendar-week+.calendar-week{border-top:1px solid var(--calendar-border)}
.calendar-days{position:absolute;inset:0;z-index:0}
.calendar-day{position:relative;display:block;min-width:0;margin:0;padding:7px 7px;border:0;border-radius:0;background:transparent;color:inherit;text-align:left;font-size:12px;line-height:1.4}
.calendar-day+.calendar-day{border-left:1px solid #f4e9e9}
.calendar-day.calendar-weekend-5{color:#6683a0}
.calendar-day.calendar-weekend-6{color:#bb7089}
button.calendar-day{display:flex;align-items:flex-start;justify-content:space-between;gap:1px}
button.calendar-day:hover{background:#fff5f8}
.calendar-day-number{display:inline-grid;place-items:center;min-width:24px;height:24px;line-height:1}
.calendar-day.calendar-day-other{background:#faf7f5;color:#bcb0b6}
.calendar-day-selected{box-shadow:inset 0 0 0 2px #deadc0;background:#fff6f9}
.calendar-day-today .calendar-day-number{border-radius:50%;background:var(--lime,#caff8a);color:#4f633a;font-weight:700}
.calendar-add{margin-top:2px;color:#b67d91;font-size:15px;line-height:20px;opacity:.55}
.calendar-day:hover .calendar-add,.calendar-day:focus-visible .calendar-add{opacity:1}
.calendar-bars{position:relative;z-index:1;gap:4px 3px;padding:38px 4px 9px;pointer-events:none;grid-auto-rows:29px}
.calendar-event{display:flex;align-items:center;gap:5px;min-width:0;width:100%;height:29px;margin:0;padding:3px 7px;overflow:hidden;pointer-events:auto;position:relative;border:1px solid transparent;border-radius:7px;background:var(--calendar-event-bg,#ffd9e5);color:var(--calendar-event-ink,#372c34);text-align:left;font-size:12px;line-height:1.4;transition:filter .15s,box-shadow .15s}
.calendar-event:hover{filter:brightness(.98);box-shadow:0 1px 4px #78535c24}
.calendar-event-title{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.calendar-event-time{flex-shrink:0;font-size:11px;font-variant-numeric:tabular-nums;opacity:.8}
.calendar-event-star{flex-shrink:0;font-size:11px;line-height:1}
.calendar-event-highlight{border-color:currentColor}
.calendar-event-part{flex-shrink:0;display:inline-block;padding:0 3px;border-radius:4px;background:var(--calendar-part-bg,#fffefa);color:var(--calendar-part-ink,#372c34);font-size:11px;line-height:18px}
.calendar-event-continued{border-top-left-radius:2px;border-bottom-left-radius:2px;border-left:3px solid currentColor;padding-left:5px}
.calendar-event-continues{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:3px solid currentColor;padding-right:5px}
.calendar-hint{margin:12px 2px 0;font-size:12px;line-height:1.7;color:var(--muted,#8b7580);word-break:keep-all}
.calendar-detail{position:relative;margin-top:18px;padding:22px;border:1px solid var(--calendar-border);border-radius:14px;background:#fff8ee;overflow-wrap:anywhere}
.calendar-detail:focus{outline:2px solid #aac685;outline-offset:3px}
.calendar-detail-close{float:right;margin:-8px -8px 8px 12px;padding:8px 10px;border:0;border-radius:9px;background:transparent;color:var(--muted,#8b7580);font-size:12px}
.calendar-detail-close:hover{background:#ffedde}
.calendar-detail-date{margin:0 0 9px;color:var(--pink-ink,#9b4465);font-size:12px}
.calendar-detail-title{margin:0 0 10px;font-family:var(--round,Jua,sans-serif);font-size:23px;font-weight:400;line-height:1.45}
.calendar-detail-meta,.calendar-detail-part{margin:6px 0;font-size:13px}
.calendar-detail-description{margin:14px 0 0;padding-top:14px;border-top:1px dashed #decfc7;white-space:pre-wrap;font-size:13px;line-height:1.85}
@media(max-width:720px){
  .calendar-month{font-size:26px}
  .calendar-toolbar{gap:8px;margin-bottom:14px}
  .calendar-controls{gap:5px}
  .calendar-nav{width:36px;height:36px}
  .calendar-nav-today{width:auto;min-width:46px;padding:0 11px}
  .calendar-day{padding:5px 3px}
  .calendar-bars{gap:4px 2px;padding:35px 2px 8px}
  .calendar-week{min-height:calc(38px + var(--calendar-lanes,2) * 33px)}
  .calendar-event{gap:3px;padding-left:4px;padding-right:4px;font-size:11px}
  .calendar-event-single .calendar-event-time,.calendar-event-single .calendar-event-part,.calendar-event-single .calendar-event-star{display:none}
}
@media(max-width:480px){
  .calendar-month{font-size:24px}
  .calendar-controls{gap:3px}
  .calendar-nav{width:32px;height:34px;font-size:22px}
  .calendar-nav-today{width:auto;min-width:43px;padding:0 8px;font-size:11px}
  .calendar-weekdays{min-height:32px;font-size:11px}
  .calendar-day{padding:5px 1px;font-size:11px}
  .calendar-day-number{min-width:21px;height:21px}
  .calendar-add{font-size:12px;margin-top:0}
  .calendar-bars{padding-top:32px;column-gap:1px}
  .calendar-event{font-size:11px;gap:3px;padding-left:3px;padding-right:3px;border-radius:5px}
  .calendar-event-time{display:none}
  .calendar-event-continued{padding-left:2px;border-top-left-radius:1px;border-bottom-left-radius:1px}
  .calendar-event-continues{padding-right:2px;border-top-right-radius:1px;border-bottom-right-radius:1px}
  .calendar-hint{font-size:11px}
  .calendar-detail{padding:17px}
  .calendar-detail-title{font-size:21px}
}
@media(prefers-reduced-motion:reduce){.calendar-nav,.calendar-event{transition:none}}
