      :root {
        --cal-radius: 8px;
        --cal-bg-a: #eef4fb;
        --cal-bg-b: #f7faf5;
        --cal-surface: #ffffff;
        --cal-surface-strong: #ffffff;
        --cal-border: rgba(23, 40, 73, 0.14);
        --cal-text: #13213b;
        --cal-text-soft: #4a5b7c;
        --cal-accent: #0f72d8;
        --cal-accent-soft: #2f85df;
        --cal-success: #1b8e4a;
        --cal-danger: #a42130;
        --cal-shadow: 0 12px 30px rgba(21, 45, 94, 0.14);
        --cal-timegrid-slot-height: 26px;
        --fc-page-bg-color: var(--cal-surface);
        --fc-neutral-bg-color: var(--cal-surface-strong);
        --fc-neutral-text-color: var(--cal-text);
        --fc-border-color: var(--cal-border);
        --fc-button-bg-color: var(--cal-accent);
        --fc-button-border-color: var(--cal-accent);
        --fc-button-text-color: #ffffff;
        --fc-button-hover-bg-color: var(--cal-accent-soft);
        --fc-button-hover-border-color: var(--cal-accent-soft);
        --fc-button-active-bg-color: var(--cal-accent-soft);
        --fc-button-active-border-color: var(--cal-accent-soft);
        --fc-today-bg-color: color-mix(in srgb, var(--cal-accent) 10%, var(--cal-surface) 90%);
        --fc-event-bg-color: var(--cal-accent);
        --fc-event-border-color: var(--cal-accent);
        --fc-event-text-color: #ffffff;
        --fc-list-event-hover-bg-color: var(--cal-surface-strong);
      }
      body {
        margin: 0;
        height: 100vh;
        overflow: hidden;
        display: flex;
        color: var(--cal-text);
        font-family: "Segoe UI", "Aptos", "Helvetica Neue", sans-serif;
        background: linear-gradient(155deg, var(--cal-bg-a), var(--cal-bg-b));
      }
      html {
        height: 100%;
      }
      #calendar {
        width: 100%;
        max-width: none;
        margin: 0;
        flex: 1 1 auto;
        min-height: 0;
        padding: 0 8px;
        box-sizing: border-box;
        overflow: hidden;
      }
      .fc {
        height: 100%;
        background: var(--cal-surface);
        border: 1px solid var(--cal-border);
        border-radius: var(--cal-radius);
        padding: 10px;
        box-shadow: var(--cal-shadow);
      }
      .fc .fc-view-harness {
        min-height: 0;
      }
      .fc .fc-toolbar-title,
      .fc .fc-col-header-cell-cushion,
      .fc .fc-daygrid-day-number,
      .fc .fc-multimonth-title {
        color: var(--cal-text);
      }
      .fc .fc-day-other .fc-daygrid-day-number {
        color: var(--cal-text-soft);
      }
      .fc-theme-standard td,
      .fc-theme-standard th {
        border-color: var(--cal-border);
      }
      .fc .fc-button-primary:focus {
        box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--cal-accent) 30%, transparent 70%);
      }
      .fc .fc-button-primary:disabled {
        opacity: 0.55;
      }
      .fc .fc-daygrid-day.fc-day-today {
        background: var(--fc-today-bg-color);
      }
      .fc .fc-event {
        border-radius: var(--cal-radius);
      }
      .fc .fc-button,
      .fc .fc-button-group > .fc-button {
        border-radius: var(--cal-radius);
      }
      .fc .fc-daygrid-event,
      .fc .fc-h-event {
        overflow: hidden;
      }
      .fc .fc-daygrid-dot-event {
        background: var(--fc-event-bg-color);
        border: 1px solid transparent;
        border-radius: var(--cal-radius);
        color: var(--fc-event-text-color);
        display: block;
        padding: 1px 4px;
      }
      .fc .fc-daygrid-dot-event .fc-event-time,
      .fc .fc-daygrid-dot-event .fc-event-title {
        color: inherit;
      }
      .fc .fc-daygrid-event-dot {
        display: none;
      }
      .fc .fc-event .fc-event-main {
        overflow: hidden;
      }
      .fc .fc-event.ev-recurring {
        box-shadow: inset 0 0 0 1px color-mix(in srgb, #ffffff 35%, transparent 65%);
      }
      .fc .fc-event.ev-society-nica {
        border-left: 4px solid color-mix(in srgb, #e11d48 60%, #ffffff 40%);
      }
      .fc .fc-event.ev-society-tohu {
        border-left: 4px solid color-mix(in srgb, #0ea5e9 70%, #ffffff 30%);
      }
      .fc .fc-daygrid-day.day-weekend {
        background: color-mix(in srgb, var(--cal-surface-strong) 75%, var(--cal-accent) 25%);
      }
      body[data-vacation-texture='on'] .fc .fc-daygrid-day.day-vacation {
        background:
          repeating-linear-gradient(
            -45deg,
            color-mix(in srgb, var(--cal-surface-strong) 78%, var(--cal-accent) 22%),
            color-mix(in srgb, var(--cal-surface-strong) 78%, var(--cal-accent) 22%) 6px,
            color-mix(in srgb, var(--cal-surface-strong) 86%, var(--cal-accent) 14%) 6px,
            color-mix(in srgb, var(--cal-surface-strong) 86%, var(--cal-accent) 14%) 12px
          );
      }
      body[data-vacation-texture='off'] .fc .fc-daygrid-day.day-vacation {
        background: color-mix(in srgb, var(--cal-surface-strong) 82%, var(--cal-accent) 18%);
      }
      .fc .fc-daygrid-day.day-focused {
        box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--cal-accent) 70%, transparent 30%);
      }
      .fc .fc-col-header-cell.day-focused .fc-col-header-cell-cushion {
        background: color-mix(in srgb, var(--cal-accent) 15%, transparent 85%);
        border-radius: calc(var(--cal-radius) * 0.7);
        padding: 2px 6px;
      }
      .fc .fc-event .ev-content {
        display: flex;
        align-items: center;
        gap: 4px;
        width: 100%;
        max-width: 100%;
        min-width: 0;
        overflow: hidden;
      }
      .fc .fc-event .ev-badges {
        display: inline-flex;
        align-items: center;
        gap: 3px;
        flex: 0 0 auto;
      }
      .fc .fc-event .ev-badge {
        border-radius: var(--cal-radius);
        font-size: 9px;
        line-height: 1;
        padding: 2px 5px;
        letter-spacing: 0.06em;
        font-weight: 700;
        background: rgba(255, 255, 255, 0.2);
        color: #ffffff;
      }
      .fc .fc-event .ev-badge--nica {
        background: color-mix(in srgb, #e11d48 55%, transparent 45%);
      }
      .fc .fc-event .ev-badge--tohu {
        background: color-mix(in srgb, #0ea5e9 65%, transparent 35%);
      }
      .fc .fc-event .ev-badge--rec {
        background: color-mix(in srgb, #16a34a 60%, transparent 40%);
      }
      .fc .fc-event .ev-title {
        display: block;
        flex: 1 1 auto;
        min-width: 0;
        line-height: 1.1;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
      }
      .fc .fc-multimonth-daygrid .fc-daygrid-day-frame {
        min-height: 5.5em;
      }
      .fc .fc-timegrid-slot {
        height: var(--cal-timegrid-slot-height);
      }
      .fc .fc-timegrid-slot-lane,
      .fc .fc-timegrid-slot-label {
        height: var(--cal-timegrid-slot-height);
      }
      .fc .fc-timegrid-event {
        min-height: 0;
      }
      html[data-timegrid-density='compact'] .fc .fc-timegrid-slot-label-cushion {
        font-size: 10px;
        line-height: 1;
        padding-top: 0;
        padding-bottom: 0;
      }
      html[data-timegrid-density='compact'] .fc .fc-timegrid-axis-cushion {
        font-size: 10px;
        line-height: 1;
      }
      html[data-timegrid-density='compact'] .fc .fc-timegrid-event .fc-event-main {
        padding-top: 0;
        padding-bottom: 0;
      }
      html[data-timegrid-density='compact'] .fc .fc-timegrid-event .ev-badges {
        display: none;
      }
      html[data-timegrid-density='compact'] .fc .fc-timegrid-event .ev-content {
        gap: 2px;
      }
      html[data-timegrid-density='compact'] .fc .fc-timegrid-event .ev-title {
        font-size: 11px;
        line-height: 1.05;
      }
      .calendar-filter-wrap {
        display: inline-flex;
        margin-left: 8px;
      }
      .calendar-filter-select {
        height: 2.3em;
        min-width: 132px;
        border-radius: var(--cal-radius);
        border: 1px solid var(--cal-border);
        background: var(--cal-surface-strong);
        color: var(--cal-text);
        padding: 0 8px;
      }
      .event-modal {
        position: fixed;
        inset: 0;
        display: none;
        align-items: center;
        justify-content: center;
        background: rgba(0, 0, 0, 0.35);
        z-index: 1000;
      }
      .event-modal.is-open {
        display: flex;
      }
      .event-modal__card {
        width: min(420px, calc(100vw - 24px));
        color: var(--cal-text);
        background: var(--cal-surface);
        border: 1px solid var(--cal-border);
        border-radius: var(--cal-radius);
        padding: 14px;
        box-shadow: var(--cal-shadow);
      }
      .event-modal__title {
        margin: 0 0 10px;
        font-size: 16px;
      }
      .event-modal__input {
        width: 100%;
        box-sizing: border-box;
        font-size: 14px;
        padding: 8px 10px;
        color: var(--cal-text);
        border: 1px solid var(--cal-border);
        border-radius: var(--cal-radius);
        background: var(--cal-surface-strong);
      }
      .event-modal__actions {
        margin-top: 12px;
        display: flex;
        justify-content: flex-end;
        gap: 8px;
      }
      .event-modal__tabs {
        margin-top: 12px;
        display: flex;
        gap: 6px;
        border-bottom: 1px solid var(--cal-border);
        padding: 0 2px;
      }
      .event-modal__tab {
        border: 1px solid var(--cal-border);
        border-bottom-color: var(--cal-border);
        background: color-mix(in srgb, var(--cal-surface-strong) 88%, transparent 12%);
        color: var(--cal-text-soft);
        border-radius: calc(var(--cal-radius) * 0.8) calc(var(--cal-radius) * 0.8) 0 0;
        padding: 7px 11px 6px;
        font-size: 12px;
        cursor: pointer;
        margin-bottom: -1px;
      }
      .event-modal__tab.is-active {
        color: var(--cal-text);
        border-color: var(--cal-accent);
        border-bottom-color: var(--cal-surface-strong);
        background: var(--cal-surface-strong);
      }
      .event-modal__panel {
        margin-top: 0;
        padding: 10px;
        border: 1px solid var(--cal-border);
        border-top: 0;
        border-radius: 0 0 calc(var(--cal-radius) * 0.9) calc(var(--cal-radius) * 0.9);
        background: var(--cal-surface-strong);
      }
      .event-modal__panel-actions {
        margin-top: 10px;
        display: flex;
        justify-content: flex-end;
      }
      .event-modal__field {
        display: block;
        margin: 0 0 6px;
        font-size: 12px;
        color: var(--cal-text-soft);
      }
      .event-modal__select {
        width: 100%;
        box-sizing: border-box;
        font-size: 13px;
        padding: 7px 9px;
        color: var(--cal-text);
        border: 1px solid var(--cal-border);
        border-radius: calc(var(--cal-radius) * 0.8);
        background: var(--cal-surface);
      }
      .event-modal__radios {
        display: flex;
        flex-direction: column;
        gap: 6px;
        max-height: 140px;
        overflow: auto;
      }
      .event-modal__radio {
        display: flex;
        align-items: center;
        gap: 8px;
        font-size: 13px;
        color: var(--cal-text);
      }
      .event-modal__hint {
        margin: 8px 0 0;
        font-size: 12px;
        color: var(--cal-text-soft);
      }
      .event-modal__btn {
        border: 1px solid var(--cal-border);
        background: var(--cal-surface-strong);
        color: var(--cal-text);
        border-radius: var(--cal-radius);
        padding: 6px 12px;
        cursor: pointer;
      }
      .event-modal__btn--primary {
        border-color: var(--cal-accent);
        background: var(--cal-accent);
        color: #ffffff;
      }
      .day-action-menu {
        position: fixed;
        z-index: 1300;
        display: none;
        min-width: 200px;
        background: var(--cal-surface);
        border: 1px solid var(--cal-border);
        border-radius: var(--cal-radius);
        box-shadow: var(--cal-shadow);
        padding: 6px;
      }
      .day-action-menu.is-open {
        display: block;
      }
      .day-action-menu__item {
        display: block;
        width: 100%;
        border: 0;
        background: transparent;
        color: var(--cal-text);
        text-align: left;
        border-radius: calc(var(--cal-radius) * 0.8);
        padding: 7px 10px;
        font-size: 13px;
        cursor: pointer;
      }
      .day-action-menu__item:hover,
      .day-action-menu__item:focus {
        outline: none;
        background: color-mix(in srgb, var(--cal-accent) 14%, transparent 86%);
      }
      .day-action-menu__item--primary {
        font-weight: 600;
      }
      .calendar-settings-popover {
        position: absolute;
        z-index: 1200;
        width: min(260px, calc(100vw - 24px));
        display: none;
        background: var(--cal-surface);
        border: 1px solid var(--cal-border);
        border-radius: var(--cal-radius);
        box-shadow: var(--cal-shadow);
        padding: 10px;
      }
      .calendar-settings-popover.is-open {
        display: block;
      }
      .calendar-settings-popover__title {
        font-size: 13px;
        font-weight: 700;
        margin: 0 0 8px;
        color: var(--cal-text);
      }
      .calendar-settings-popover__hint {
        font-size: 11px;
        margin: 0 0 10px;
        color: var(--cal-text-soft);
      }
      .calendar-settings-popover__status {
        font-size: 11px;
        margin: -2px 0 8px 24px;
        color: var(--cal-text-soft);
      }
      .calendar-settings-popover__status.is-error {
        color: var(--cal-danger);
      }
      .calendar-settings-popover__check {
        display: flex;
        align-items: center;
        gap: 8px;
        margin: 0 0 8px;
        font-size: 13px;
        color: var(--cal-text);
      }
      .calendar-settings-popover__check input {
        margin: 0;
      }
      .calendar-settings-popover__field {
        display: block;
        margin: 10px 0 6px;
        font-size: 12px;
        color: var(--cal-text-soft);
      }
      .calendar-settings-popover__actions {
        display: flex;
        gap: 6px;
        margin: 6px 0 8px 24px;
      }
      .calendar-settings-popover__group {
        margin: 6px 0 8px 24px;
      }
      .calendar-settings-popover__checks {
        margin-top: 6px;
      }
      .calendar-settings-popover__checks .calendar-settings-popover__check {
        margin: 0 0 6px;
      }
      .calendar-settings-popover__range-wrap {
        display: flex;
        align-items: center;
        gap: 8px;
      }
      .calendar-settings-popover__range {
        flex: 1 1 auto;
      }
      .calendar-settings-popover__value {
        min-width: 52px;
        text-align: right;
        font-size: 12px;
        color: var(--cal-text);
      }
      .event-preview-popover {
        position: fixed;
        z-index: 1400;
        display: none;
        width: min(420px, calc(100vw - 24px));
        max-height: min(65vh, 520px);
        overflow: auto;
        background: var(--cal-surface);
        border: 1px solid var(--cal-border);
        border-radius: var(--cal-radius);
        box-shadow: var(--cal-shadow);
        padding: 10px 12px 12px;
      }
      .event-preview-popover.is-open {
        display: block;
      }
      .event-preview-popover__close {
        float: right;
        border: 0;
        width: 28px;
        height: 28px;
        border-radius: calc(var(--cal-radius) * 0.8);
        cursor: pointer;
        background: transparent;
        color: var(--cal-text-soft);
        font-size: 22px;
        line-height: 1;
      }
      .event-preview-popover__close:hover,
      .event-preview-popover__close:focus {
        outline: none;
        background: color-mix(in srgb, var(--cal-accent) 12%, transparent 88%);
        color: var(--cal-text);
      }
      .event-preview-popover__title {
        margin: 2px 34px 4px 0;
        font-size: 16px;
        line-height: 1.25;
        color: var(--cal-text);
      }
      .event-preview-popover__date {
        margin: 0 0 8px;
        font-size: 12px;
        color: var(--cal-text-soft);
      }
      .event-preview-popover__body {
        margin: 0;
        font-size: 13px;
        line-height: 1.4;
        color: var(--cal-text);
      }
      .event-preview-popover__body p {
        margin: 0;
      }
      .event-preview-popover__empty,
      .event-preview-popover__loading,
      .event-preview-popover__error {
        margin: 0;
        color: var(--cal-text-soft);
      }
      .event-preview-popover__error {
        color: var(--cal-danger);
      }
      .event-preview-callout {
        border-left: 3px solid color-mix(in srgb, var(--cal-accent) 65%, transparent 35%);
        background: color-mix(in srgb, var(--cal-accent) 7%, transparent 93%);
        border-radius: calc(var(--cal-radius) * 0.8);
        padding: 8px 10px;
      }
      .event-preview-callout__label {
        font-size: 11px;
        letter-spacing: 0.05em;
        text-transform: uppercase;
        font-weight: 700;
        color: var(--cal-accent);
        margin-bottom: 3px;
      }
      .event-preview-callout__text {
        margin: 0;
        white-space: pre-wrap;
      }
      .event-preview-popover__actions {
        margin-top: 10px;
        display: flex;
        justify-content: flex-end;
        gap: 8px;
      }
      .event-preview-popover__btn {
        border: 1px solid var(--cal-border);
        background: var(--cal-surface-strong);
        color: var(--cal-text);
        border-radius: var(--cal-radius);
        padding: 6px 10px;
        font-size: 12px;
        cursor: pointer;
      }
      .event-preview-popover__btn--primary {
        border-color: var(--cal-accent);
        background: var(--cal-accent);
        color: #ffffff;
      }
      .fc .fc-calendarSettings-button {
        position: relative;
        min-width: 2.3em;
        width: 2.3em;
        height: 2.3em;
        line-height: 2.3em;
        padding-left: 0;
        padding-right: 0;
      }
      .fc .fc-calendarSettings-button::before {
        content: '';
        position: absolute;
        left: 50%;
        top: 50%;
        width: 1.8em;
        height: 1.8em;
        transform: translate(-50%, -50%);
        background: currentColor;
        -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M19.14 12.94a7.96 7.96 0 0 0 .05-.94 7.96 7.96 0 0 0-.05-.94l2.03-1.58a.5.5 0 0 0 .12-.64l-1.92-3.32a.5.5 0 0 0-.6-.22l-2.39.96a7.3 7.3 0 0 0-1.63-.94l-.36-2.54A.5.5 0 0 0 13.9 2h-3.8a.5.5 0 0 0-.49.42l-.36 2.54c-.58.22-1.12.53-1.63.94l-2.39-.96a.5.5 0 0 0-.6.22L2.71 8.48a.5.5 0 0 0 .12.64l2.03 1.58c-.03.31-.05.63-.05.94s.02.63.05.94l-2.03 1.58a.5.5 0 0 0-.12.64l1.92 3.32a.5.5 0 0 0 .6.22l2.39-.96c.5.41 1.05.72 1.63.94l.36 2.54a.5.5 0 0 0 .49.42h3.8a.5.5 0 0 0 .49-.42l.36-2.54c.58-.22 1.12-.53 1.63-.94l2.39.96a.5.5 0 0 0 .6-.22l1.92-3.32a.5.5 0 0 0-.12-.64l-2.03-1.58ZM12 15.5A3.5 3.5 0 1 1 12 8.5a3.5 3.5 0 0 1 0 7Z'/%3E%3C/svg%3E") center / contain no-repeat;
        mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M19.14 12.94a7.96 7.96 0 0 0 .05-.94 7.96 7.96 0 0 0-.05-.94l2.03-1.58a.5.5 0 0 0 .12-.64l-1.92-3.32a.5.5 0 0 0-.6-.22l-2.39.96a7.3 7.3 0 0 0-1.63-.94l-.36-2.54A.5.5 0 0 0 13.9 2h-3.8a.5.5 0 0 0-.49.42l-.36 2.54c-.58.22-1.12.53-1.63.94l-2.39-.96a.5.5 0 0 0-.6.22L2.71 8.48a.5.5 0 0 0 .12.64l2.03 1.58c-.03.31-.05.63-.05.94s.02.63.05.94l-2.03 1.58a.5.5 0 0 0-.12.64l1.92 3.32a.5.5 0 0 0 .6.22l2.39-.96c.5.41 1.05.72 1.63.94l.36 2.54a.5.5 0 0 0 .49.42h3.8a.5.5 0 0 0 .49-.42l.36-2.54c.58-.22 1.12-.53 1.63-.94l2.39.96a.5.5 0 0 0 .6-.22l1.92-3.32a.5.5 0 0 0-.12-.64l-2.03-1.58ZM12 15.5A3.5 3.5 0 1 1 12 8.5a3.5 3.5 0 0 1 0 7Z'/%3E%3C/svg%3E") center / contain no-repeat;
      }
      .fc .fc-focusToday-button,
      .fc .fc-refreshCalendar-button {
        position: relative;
        min-width: 2.3em;
        width: 2.3em;
        height: 2.3em;
        line-height: 2.3em;
        padding-left: 0;
        padding-right: 0;
      }
      .fc .fc-focusToday-button::before,
      .fc .fc-refreshCalendar-button::before {
        content: '';
        position: absolute;
        left: 50%;
        top: 50%;
        width: 1.8em;
        height: 1.8em;
        transform: translate(-50%, -50%);
        background: currentColor;
      }
      .fc .fc-focusToday-button::before {
        -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M7 2h2v2h6V2h2v2h2a2 2 0 0 1 2 2v12a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V6a2 2 0 0 1 2-2h2V2zm12 8H5v8a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-8zm-8.2 4.5 1.5 1.5 3.2-3.2 1.1 1.1-4.3 4.3-2.6-2.6 1.1-1.1z'/%3E%3C/svg%3E") center / contain no-repeat;
        mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M7 2h2v2h6V2h2v2h2a2 2 0 0 1 2 2v12a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V6a2 2 0 0 1 2-2h2V2zm12 8H5v8a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-8zm-8.2 4.5 1.5 1.5 3.2-3.2 1.1 1.1-4.3 4.3-2.6-2.6 1.1-1.1z'/%3E%3C/svg%3E") center / contain no-repeat;
      }
      .fc .fc-refreshCalendar-button::before {
        -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M12 4a8 8 0 0 1 7.7 6h-2.4l3.2 3.8 3.2-3.8h-2A10 10 0 1 0 22 13h-2a8 8 0 1 1-8-9z'/%3E%3C/svg%3E") center / contain no-repeat;
        mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M12 4a8 8 0 0 1 7.7 6h-2.4l3.2 3.8 3.2-3.8h-2A10 10 0 1 0 22 13h-2a8 8 0 1 1-8-9z'/%3E%3C/svg%3E") center / contain no-repeat;
      }
      .fc .fc-refreshCalendar-button.is-loading::before {
        animation: calendar-spin 0.9s linear infinite;
      }
      @keyframes calendar-spin {
        from { transform: translate(-50%, -50%) rotate(0deg); }
        to { transform: translate(-50%, -50%) rotate(360deg); }
      }
      .fc .fc-googleSourceToggle-button,
      .fc .fc-nextcloudSourceToggle-button {
        position: relative;
        min-width: 2.3em;
        width: 2.3em;
        height: 2.3em;
        line-height: 2.3em;
        padding-left: 0;
        padding-right: 0;
        background: var(--cal-surface-strong) !important;
        border-color: var(--cal-border) !important;
        color: var(--cal-text) !important;
      }
      .fc .fc-googleSourceToggle-button::before,
      .fc .fc-nextcloudSourceToggle-button::before {
        content: '';
        position: absolute;
        left: 50%;
        top: 50%;
        width: 2em;
        height: 2em;
        transform: translate(-50%, -50%);
        background: currentColor;
      }
      .fc .fc-googleSourceToggle-button::before {
        -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M7 2h2v2h6V2h2v2h2a2 2 0 0 1 2 2v12a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V6a2 2 0 0 1 2-2h2V2zm12 8H5v8a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-8zM9.5 12h5a2.5 2.5 0 0 1 0 5h-5v-1.5h5a1 1 0 0 0 0-2h-3.5v-1.5H9.5V12z'/%3E%3C/svg%3E") center / contain no-repeat;
        mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M7 2h2v2h6V2h2v2h2a2 2 0 0 1 2 2v12a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V6a2 2 0 0 1 2-2h2V2zm12 8H5v8a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-8zM9.5 12h5a2.5 2.5 0 0 1 0 5h-5v-1.5h5a1 1 0 0 0 0-2h-3.5v-1.5H9.5V12z'/%3E%3C/svg%3E") center / contain no-repeat;
      }
      .fc .fc-nextcloudSourceToggle-button::before {
        -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='6' cy='12' r='2.3'/%3E%3Ccircle cx='18' cy='12' r='2.3'/%3E%3Ccircle cx='12' cy='12' r='3.3'/%3E%3Cpath d='M8.4 12h.3m6.6 0h.3'/%3E%3C/g%3E%3C/svg%3E") center / contain no-repeat;
        mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='6' cy='12' r='2.3'/%3E%3Ccircle cx='18' cy='12' r='2.3'/%3E%3Ccircle cx='12' cy='12' r='3.3'/%3E%3Cpath d='M8.4 12h.3m6.6 0h.3'/%3E%3C/g%3E%3C/svg%3E") center / contain no-repeat;
      }
      .fc .fc-googleSourceToggle-button.state-error,
      .fc .fc-nextcloudSourceToggle-button.state-error {
        border-color: #7a1f2a !important;
        box-shadow: inset 0 0 0 1px #7a1f2a;
      }
      .fc .fc-googleSourceToggle-button.state-off,
      .fc .fc-nextcloudSourceToggle-button.state-off {
        border-color: #b36b00 !important;
        box-shadow: inset 0 0 0 1px #b36b00;
      }
      .fc .fc-googleSourceToggle-button.state-on,
      .fc .fc-nextcloudSourceToggle-button.state-on {
        border-color: #1b8e4a !important;
        box-shadow: inset 0 0 0 1px #1b8e4a;
      }
      .fc .fc-googleSourceToggle-button:disabled,
      .fc .fc-nextcloudSourceToggle-button:disabled {
        opacity: 0.45;
      }

      .fc .fc-printCalendar-button,
      .fc .fc-publishCalendar-button {
        position: relative;
        min-width: 2.3em;
        width: 2.3em;
        height: 2.3em;
        line-height: 2.3em;
        padding-left: 0;
        padding-right: 0;
      }
      .fc .fc-printCalendar-button::before,
      .fc .fc-publishCalendar-button::before {
        content: '';
        position: absolute;
        left: 50%;
        top: 50%;
        width: 1.71em;
        height: 1.71em;
        transform: translate(-50%, -50%);
        background: currentColor;
        -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M6 9V3h12v6h2a3 3 0 0 1 3 3v6h-4v3H5v-3H1v-6a3 3 0 0 1 3-3h2zm2-4v4h8V5H8zm9 14v-5H7v5h10zm2-3h2v-4a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v4h2v-4h14v4z'/%3E%3C/svg%3E") center / contain no-repeat;
        mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M6 9V3h12v6h2a3 3 0 0 1 3 3v6h-4v3H5v-3H1v-6a3 3 0 0 1 3-3h2zm2-4v4h8V5H8zm9 14v-5H7v5h10zm2-3h2v-4a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v4h2v-4h14v4z'/%3E%3C/svg%3E") center / contain no-repeat;
      }
      .fc .fc-publishCalendar-button::before {
        -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M12 3 7.3 7.7l1.4 1.4L11 6.8V16h2V6.8l2.3 2.3 1.4-1.4L12 3zM5 18v-4H3v6a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-6h-2v4H5z'/%3E%3C/svg%3E") center / contain no-repeat;
        mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M12 3 7.3 7.7l1.4 1.4L11 6.8V16h2V6.8l2.3 2.3 1.4-1.4L12 3zM5 18v-4H3v6a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-6h-2v4H5z'/%3E%3C/svg%3E") center / contain no-repeat;
      }
      .fc .fc-publishCalendar-button.is-loading::before {
        animation: calendar-spin 0.9s linear infinite;
      }
      @media print {
        @page {
          size: A4 landscape;
          margin: 10mm;
        }
        * {
          -webkit-print-color-adjust: exact !important;
          print-color-adjust: exact !important;
          forced-color-adjust: none !important;
        }
        html, body {
          height: auto;
          overflow: visible;
          display: block !important;
          background: #ffffff;
        }
        #calendar {
          width: 100% !important;
          overflow: visible !important;
          height: auto !important;
        }
        .fc {
          height: auto !important;
          border: 0 !important;
          box-shadow: none !important;
          padding: 0 !important;
        }
        .fc .fc-view-harness,
        .fc .fc-scroller {
          height: auto !important;
          max-height: none !important;
          overflow: visible !important;
        }
        body[data-print-view='multiMonthYear'] .fc .fc-multimonth {
          display: flex !important;
          flex-wrap: wrap !important;
          column-gap: 6mm;
          row-gap: 6mm;
        }
        body[data-print-view='multiMonthYear'] .fc .fc-multimonth-month {
          flex: 0 0 calc((100% - 12mm) / 3);
          max-width: calc((100% - 12mm) / 3);
          break-inside: avoid;
          page-break-inside: avoid;
        }
        body[data-print-view='multiMonthYear'] .fc .fc-multimonth-month:nth-child(3n) {
          break-after: page;
          page-break-after: always;
        }
        .fc .fc-event,
        .fc .fc-bg-event,
        .fc .fc-highlight,
        .fc .fc-daygrid-day.day-weekend,
        .fc .fc-daygrid-day.day-vacation {
          -webkit-print-color-adjust: exact !important;
          print-color-adjust: exact !important;
        }
        .fc .fc-header-toolbar,
        .calendar-settings-popover,
        .event-modal,
        .event-preview-popover,
        .calendar-filter-wrap {
          display: none !important;
        }
      }


.calendar-public {
  margin: 0;
  min-height: 100%;
  height: auto;
  overflow: auto;
  display: block;
  background: #f5f1e8;
}
.calendar-public,
.calendar-public * {
  box-sizing: border-box;
}
.calendar-public-shell {
  min-height: 100vh;
  padding: 24px;
}
.calendar-public-header {
  margin: 0 auto 18px;
  max-width: 1200px;
}
.calendar-public-kicker {
  margin: 0 0 4px;
  color: #6d5f45;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.calendar-public-header h1 {
  margin: 0;
  color: #241f17;
  font-size: clamp(1.5rem, 3vw, 2.6rem);
}
.calendar-public-header p {
  margin: 6px 0 0;
  color: #6d5f45;
}
.calendar-public #calendar {
  margin: 0 auto;
  max-width: 1200px;
  min-height: calc(100vh - 150px);
  height: auto;
  overflow: visible;
  padding: 0;
}
.calendar-public .fc {
  min-height: calc(100vh - 150px);
  height: auto;
}
.calendar-public .fc .fc-view-harness {
  min-height: 640px;
  height: auto !important;
}
.calendar-public .fc .fc-scroller {
  overflow: visible !important;
}
.public-event-popover {
  position: fixed;
  z-index: 10000;
  width: min(360px, calc(100vw - 24px));
  max-height: min(520px, calc(100vh - 24px));
  overflow: auto;
  padding: 16px;
  border: 1px solid var(--cal-border);
  border-radius: calc(var(--cal-radius) + 8px);
  background: var(--cal-surface);
  color: var(--cal-text);
  box-shadow: 0 18px 44px rgba(21, 45, 94, 0.24);
}
.public-event-popover[hidden] {
  display: none;
}
.public-event-popover__close {
  position: absolute;
  top: 8px;
  right: 10px;
  border: 0;
  background: transparent;
  color: var(--cal-text-soft);
  cursor: pointer;
  font-size: 18px;
  line-height: 1;
}
.public-event-popover__title {
  margin: 0 26px 6px 0;
  color: var(--cal-text);
  font-size: 1rem;
  line-height: 1.25;
}
.public-event-popover__date {
  margin: 0 0 12px;
  color: var(--cal-text-soft);
  font-size: 0.82rem;
}
.public-event-popover__body {
  color: var(--cal-text);
  font-size: 0.9rem;
  line-height: 1.45;
}
.public-event-popover__body p {
  margin: 0 0 10px;
}
.public-event-popover__body p:last-child {
  margin-bottom: 0;
}
.public-event-popover__muted {
  color: var(--cal-text-soft);
  font-size: 0.82rem;
}
