main { padding-top: var(--head-total); }

.sched-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.75fr) minmax(0, 1fr);
    gap: 0;
    border: 1px solid var(--ink-line);
    background: var(--ink-raise);
    box-shadow: 0 10px 30px -16px rgba(var(--shadow-rgb), 0.22);
}
.sched-cal {
    padding: clamp(20px, 3vw, 36px);
    border-right: 1px solid var(--ink-line);
    background: var(--ink-raise);
    min-width: 0;
}
.sched-upcoming {
    padding: clamp(24px, 3vw, 40px);
    background: var(--frost-soft);
    min-width: 0;
}

.legend {
    display: flex;
    align-items: center;
    gap: 20px;
    flex-wrap: wrap;
    padding-bottom: 18px;
    margin-bottom: 18px;
    border-bottom: 1px solid var(--ink-line);
}
.legend-head { white-space: nowrap; }
.legend-items {
    display: flex;
    gap: 18px;
    flex-wrap: wrap;
}
.legend-item {
    display: flex;
    align-items: center;
    gap: 8px;
    font-family: var(--f-mono);
    font-size: 0.74rem;
    color: var(--bone-dim);
}
.legend-swatch {
    width: 10px; height: 10px;
    display: block;
}

.calendar-wrapper {
    --fc-border-color: var(--ink-line);
    --fc-page-bg-color: transparent;
    --fc-neutral-bg-color: var(--ink-raise);
    --fc-today-bg-color: rgba(78, 168, 216, 0.12);
    --fc-event-border-color: transparent;
    --fc-list-event-hover-bg-color: var(--ink-raise);
}

.fc {
    font-family: var(--f-mono);
    color: var(--bone);
}

.fc .fc-toolbar.fc-header-toolbar {
    margin-bottom: 20px;
    gap: 12px;
    flex-wrap: wrap;
}
.fc .fc-toolbar-title {
    font-family: var(--f-display);
    font-size: clamp(1.4rem, 3vw, 2.1rem);
    text-transform: uppercase;
    letter-spacing: 0.02em;
    color: var(--bone);
}

.fc .fc-button,
.fc .fc-button-primary {
    background: transparent;
    border: 1px solid var(--ink-line-2);
    color: var(--bone-dim);
    font-family: var(--f-mono);
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    padding: 8px 13px;
    border-radius: 0;
    box-shadow: none !important;
    transition: all var(--t-fast);
}
.fc .fc-button-primary:not(:disabled):hover {
    background: var(--ink-line);
    color: var(--bone);
    border-color: var(--ink-line-2);
}
.fc .fc-button-primary:not(:disabled).fc-button-active,
.fc .fc-button-primary:not(:disabled):active {
    background: var(--frost);
    border-color: var(--frost);
    color: #fff;
}
.fc .fc-button-primary:disabled {
    background: transparent;
    border-color: var(--ink-line);
    color: var(--bone-faint);
    opacity: 1;
}
.fc .fc-button:focus { box-shadow: none !important; }
.fc .fc-button-group > .fc-button { margin: 0; }
.fc .fc-button-group > .fc-button:not(:last-child) {
    border-right: none;
}

.fc .fc-col-header-cell {
    background: var(--ink-raise);
    padding: 12px 0;
}
.fc .fc-col-header-cell-cushion {
    font-family: var(--f-mono);
    font-size: 0.68rem;
    font-weight: 600;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--frost);
    padding: 4px;
}

.fc .fc-daygrid-day-frame { min-height: 92px; }
.fc .fc-daygrid-day-number {
    font-family: var(--f-mono);
    font-size: 0.78rem;
    color: var(--bone-dim);
    padding: 8px 10px;
}
.fc .fc-day-today .fc-daygrid-day-number { color: var(--frost); }
.fc .fc-day-other .fc-daygrid-day-number { color: var(--bone-faint); }
.fc .fc-daygrid-day.fc-day-today {
    background: var(--fc-today-bg-color);
}

.fc .fc-daygrid-event {
    border-radius: 0;
    border: none;
    border-left: 3px solid var(--frost);
    background: var(--ink-line);
    padding: 3px 7px;
    margin: 2px 4px;
    transition: background var(--t-fast);
}
.fc .fc-daygrid-event:hover { background: var(--ink-line-2); }
.fc .fc-event-title,
.fc .fc-event-time {
    font-family: var(--f-mono);
    font-size: 0.72rem;
    font-weight: 500;
    color: var(--bone);
}
.fc .fc-daygrid-event-dot { display: none; }

.fc .fc-daygrid-more-link {
    font-family: var(--f-mono);
    font-size: 0.68rem;
    color: var(--frost);
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.fc .fc-popover {
    background: var(--ink-raise);
    border: 1px solid var(--ink-line-2);
    border-radius: 0;
}
.fc .fc-popover-header {
    background: var(--ink-line);
    color: var(--bone);
    font-family: var(--f-mono);
}

.fc .fc-list {
    border-color: var(--ink-line);
}
.fc .fc-list-day-cushion {
    background: var(--frost-soft);
}
.fc .fc-list-day-text,
.fc .fc-list-day-side-text {
    font-family: var(--f-mono);
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--frost);
}
.fc .fc-list-event:hover td {
    background: var(--frost-soft);
}
.fc .fc-list-event-title,
.fc .fc-list-event-time {
    font-family: var(--f-mono);
    font-size: 0.82rem;
    color: var(--bone);
}
.fc .fc-list-event-dot {
    border-color: var(--frost);
}
.fc .fc-list-empty {
    background: transparent;
    font-family: var(--f-mono);
    color: var(--bone-dim);
}

.upcoming-head { margin-bottom: 28px; }
.upcoming-head .kicker { margin-bottom: 14px; }
.upcoming-title {
    font-size: clamp(1.8rem, 4vw, 2.8rem);
    color: var(--bone);
}

.upcoming-list {
    display: flex;
    flex-direction: column;
}
.upcoming-item {
    display: grid;
    grid-template-columns: 64px 1fr;
    gap: 18px;
    align-items: center;
    padding: 20px 0;
    border-top: 1px solid var(--ink-line);
    cursor: pointer;
    transition: padding-left var(--t-fast), background var(--t-fast);
}
.upcoming-item:last-child { border-bottom: 1px solid var(--ink-line); }
.upcoming-item:hover {
    padding-left: 10px;
    background: var(--ink-raise);
}

.upcoming-date {
    display: flex;
    flex-direction: column;
    align-items: center;
    background: var(--ink-raise);
    border: 1px solid var(--rose);
    padding: 10px 4px;
}
.upcoming-month {
    font-family: var(--f-mono);
    font-size: 0.62rem;
    letter-spacing: 0.16em;
    color: var(--rose-deep);
}
.upcoming-day {
    font-family: var(--f-display);
    font-size: 1.7rem;
    line-height: 1;
    color: var(--bone);
}

.upcoming-info {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
}
.upcoming-type {
    font-family: var(--f-mono);
    font-size: 0.62rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    width: fit-content;
    padding: 3px 8px;
    border: 1px solid currentColor;
}
.upcoming-type.type-justchat { color: var(--t-chat); }
.upcoming-type.type-game     { color: var(--t-game); }
.upcoming-type.type-karaoke  { color: var(--t-song); }
.upcoming-type.type-collab   { color: var(--t-collab); }

.upcoming-item-title {
    font-family: var(--f-kr);
    font-size: 0.96rem;
    font-weight: 500;
    color: var(--bone);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.upcoming-time {
    font-family: var(--f-mono);
    font-size: 0.74rem;
    color: var(--bone-faint);
}

.upcoming-empty {
    text-align: center;
    padding: 60px 0;
}
.upcoming-empty-mark {
    font-family: var(--f-display);
    font-size: 2.4rem;
    color: var(--frost);
    display: block;
    margin-bottom: 12px;
}
.upcoming-empty p {
    font-family: var(--f-mono);
    font-size: 0.84rem;
    color: var(--bone-dim);
}

#scheduleDetail { padding: 36px 30px 30px; }

.detail-header {
    display: flex;
    align-items: center;
    gap: 14px;
    padding-bottom: 20px;
    margin-bottom: 8px;
    border-bottom: 1px solid var(--ink-line);
}
.detail-color {
    width: 14px; height: 36px;
    flex-shrink: 0;
}
.detail-title {
    font-family: var(--f-display);
    font-size: 1.6rem;
    line-height: 1.1;
    text-transform: uppercase;
    color: var(--bone);
}
.detail-row {
    display: flex;
    gap: 14px;
    padding: 16px 0;
    border-bottom: 1px solid var(--ink-line);
}
.detail-row:last-child { border-bottom: none; }
.detail-icon { font-size: 1rem; flex-shrink: 0; }
.detail-content { display: flex; flex-direction: column; gap: 4px; }
.detail-label {
    font-family: var(--f-mono);
    font-size: 0.66rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--bone-faint);
}
.detail-value {
    font-family: var(--f-mono);
    font-size: 0.9rem;
    color: var(--bone);
    line-height: 1.6;
}

@media (max-width: 920px) {
    .sched-grid { grid-template-columns: 1fr; }
    .sched-cal {
        border-right: none;
        border-bottom: 1px solid var(--ink-line);
    }
}

@media (max-width: 560px) {

    .fc-daygrid-event .fc-event-time,
    .fc-daygrid-event .fc-event-title,
    .fc-daygrid-event .fc-event-title-container { display: none; }
    .fc .fc-daygrid-dot-event {
        display: block;
        background: transparent;
        border: none;

        padding: 5px 0;
        margin: 0 3px;
        min-height: 0;
        height: auto;
    }
    .fc .fc-daygrid-dot-event .fc-daygrid-event-dot {
        display: block;
        width: 100%;
        height: 0;
        margin: 0;
        border-width: 5px 0 0 0;
        border-radius: 3px;
    }
    .fc .fc-daygrid-day-events { min-height: 0; }

    .fc .fc-toolbar.fc-header-toolbar {
        flex-direction: column;
        align-items: flex-start;
        gap: 14px;
    }

    .fc .fc-toolbar-chunk { margin: 0; }

    .fc .fc-button,
    .fc .fc-button-primary {
        min-height: 44px;
        padding: 0 14px;
    }

    .fc .fc-daygrid-day-frame { min-height: 64px; }
}
