.calendar-filter-panel {
    margin: 4px 0 14px;
    padding: 14px;
    color: #ecf0f1;
    background: #15213a;
    border: 1px solid #486581;
    border-radius: 8px;
}

.calendar-filter-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
}

.calendar-filter-heading h3 {
    margin: 0;
    color: #f1c40f;
    border: 0;
    font-size: 17px;
}

.calendar-filter-heading p {
    margin: 5px 0 0;
    color: #aebdca;
    font-size: 12px;
}

.calendar-filter-visible {
    flex: 0 0 auto;
    color: #69d391;
    font-size: 13px;
}

.calendar-filter-actions {
    display: flex;
    gap: 8px;
    margin: 12px 0;
}

.calendar-filter-actions button {
    min-height: 34px;
    padding: 6px 12px;
    color: #fff;
    background: #294a68;
    border: 1px solid #5d84a5;
    border-radius: 5px;
    font-weight: 700;
    cursor: pointer;
}

.calendar-filter-actions button:last-child {
    background: #633b45;
    border-color: #a65a68;
}

.calendar-filter-groups {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
}

.calendar-filter-cycle {
    min-width: 0;
    background: #101a30;
    border: 1px solid #344f6d;
    border-radius: 6px;
}

.calendar-filter-cycle summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    min-height: 42px;
    padding: 7px 10px;
    cursor: pointer;
    list-style-position: inside;
}

.calendar-filter-cycle summary::before {
    content: '▸';
    flex: 0 0 auto;
    color: #8eacc5;
    transition: transform .15s ease;
}

.calendar-filter-cycle[open] summary::before {
    transform: rotate(90deg);
}

.calendar-filter-cycle-label,
.calendar-filter-event {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
    cursor: pointer;
}

.calendar-filter-cycle-label {
    flex: 1 1 auto;
    color: #fff;
    font-size: 13px;
    font-weight: 700;
}

.calendar-filter-cycle-count {
    flex: 0 0 auto;
    color: #78c996;
    font-size: 12px;
    font-weight: 700;
}

.calendar-filter-cycle input {
    width: 17px;
    height: 17px;
    flex: 0 0 auto;
    accent-color: #27ae60;
}

.calendar-filter-events {
    max-height: 220px;
    padding: 7px 9px 9px;
    overflow-y: auto;
    border-top: 1px solid #2d435f;
}

.calendar-filter-event {
    padding: 6px 3px;
    color: #d7e0e7;
    border-bottom: 1px solid rgba(86, 116, 145, .3);
    font-size: 12px;
}

.calendar-filter-event:last-child {
    border-bottom: 0;
}

.calendar-filter-event-date {
    flex: 0 0 39px;
    color: #88a7c1;
    font-family: monospace;
}

.calendar-filter-empty {
    margin: 100px 15px 0;
    color: #bdc3c7;
    text-align: center;
    line-height: 1.5;
}

.calendar-filter-panel :is(button, input, summary):focus-visible {
    outline: 3px solid #f1c40f;
    outline-offset: 2px;
}

@media (max-width: 700px) {
    .calendar-filter-heading {
        display: block;
    }

    .calendar-filter-visible {
        display: block;
        margin-top: 8px;
    }

    .calendar-filter-groups {
        grid-template-columns: 1fr;
    }

    .calendar-filter-actions button {
        flex: 1 1 0;
    }
}
