.schedule-page .booth-page-header { min-height: 0; }
.schedule-page .booth-breadcrumb [aria-current] { color: #fff; }
.schedule-main { width: min(1208px, calc(100% - 64px)); margin: 0 auto; padding: 110px 0 200px; display: grid; grid-template-columns: 156px minmax(0, 1fr); gap: 0 56px; align-items: start; }
.schedule-tabs { position: sticky; top: 40px; display: flex; flex-direction: column; gap: 14px; }
.schedule-tabs[hidden] { display: none; }
.schedule-tab { width: 100%; height: 46px; border: 1px solid var(--color-gold); border-radius: 999px; background: transparent; color: var(--color-gold); font: italic 600 20px/1 'Playfair Display', serif; letter-spacing: .08em; cursor: pointer; transition: background-color .25s ease, color .25s ease; }
.schedule-tab:hover { background: #efd59126; }
.schedule-tab[aria-selected="true"] { background: var(--color-gold); color: var(--color-bg); }
.schedule-tab:focus-visible { outline: 2px solid var(--color-gold-light); outline-offset: 4px; }

.schedule-panel[hidden] { display: none; }
.schedule-panel:not([hidden]) + .schedule-panel:not([hidden]) { margin-top: 120px; }
.schedule-head { padding-bottom: 22px; border-bottom: 1px solid #efd5918c; }
.schedule-date { font: italic 600 30px/1.3 'Playfair Display', serif; letter-spacing: .02em; color: #fff; }
.schedule-sub { margin-top: 6px; font: 600 26px/1.3 'Libre Bodoni', serif; letter-spacing: .1em; color: #fff; }

.schedule-timeline { --hour: 126px; --rail: 108px; --events-left: 156px; padding-top: 28px; }
.schedule-track { position: relative; }
.schedule-hours, .schedule-events { list-style: none; }
.schedule-event { display: grid; grid-template-columns: 156px minmax(0, 1fr); align-items: stretch; margin-bottom: 16px; border-top: 1px solid #e8e3d0b3; border-bottom: 1px solid #e8e3d0b3; padding: 10px 0; }
.schedule-time { display: flex; align-items: center; justify-content: center; gap: .4em; padding: 0 14px; border-right: 1px solid #e8e3d0b3; font: 400 17px/1.4 'Noto Serif JP', serif; letter-spacing: .04em; color: var(--color-gold); }
.schedule-name { display: flex; align-items: center; padding: 0 40px; font: 400 18px/1.6 'Noto Serif JP', serif; letter-spacing: .1em; color: #fff; }

.schedule-timeline.is-ready .schedule-track { height: calc(var(--span) * var(--hour)); }
.schedule-timeline.is-ready .schedule-track::before { content: ''; position: absolute; left: var(--rail); top: 0; bottom: 0; width: 1px; background: var(--color-gold); }
.schedule-timeline.is-ready .schedule-hour { position: absolute; top: calc(var(--t) * var(--hour)); left: 0; width: var(--rail); padding-right: 28px; transform: translateY(-50%); text-align: right; font: 500 16px/1 'Cinzel', serif; letter-spacing: .2em; color: var(--color-gold); }
.schedule-timeline.is-ready .schedule-hour::after { content: ''; position: absolute; right: -6px; top: 50%; width: 12px; height: 12px; margin-top: -6px; border-radius: 50%; background: var(--color-gold); }
.schedule-timeline.is-ready .schedule-event { position: absolute; left: var(--events-left); right: 0; top: calc(var(--start) * var(--hour)); height: calc(var(--dur) * var(--hour)); margin: 0; padding: 0; }
.schedule-timeline.is-ready .schedule-time { margin: 8px 0; }
.schedule-timeline.is-ready .schedule-name { padding-left: 40px; }

@media (min-width: 851px) {
  .schedule-event:nth-child(2n) { --rd: .1s; }
}
@media (max-width: 850px) {
  .schedule-main { display: block; width: calc(100% - 32px); padding: 56px 0 120px; }
  .schedule-tabs { position: static; flex-direction: row; justify-content: center; gap: 14px; margin-bottom: 48px; }
  .schedule-tab { width: 154px; }
  .schedule-panel:not([hidden]) + .schedule-panel:not([hidden]) { margin-top: 90px; }
  .schedule-head { padding-bottom: 0; border-bottom: 0; }
  .schedule-date { font-size: 22px; }
  .schedule-sub { font-size: 20px; }
  .schedule-timeline { --hour: 136px; --rail: 62px; --events-left: 92px; padding-top: 44px; }
  .schedule-event { grid-template-columns: 62px minmax(0, 1fr); }
  .schedule-time { flex-direction: column; gap: 0; padding: 0 8px; font-size: 13px; line-height: 1.35; }
  .schedule-timeline.is-ready .schedule-time { margin: 4px 0; }
  .schedule-name { padding: 0 14px 0 20px; font-size: 15px; letter-spacing: .06em; }
  .schedule-timeline.is-ready .schedule-hour { padding-right: 16px; font-size: 13px; letter-spacing: .12em; }
  .schedule-timeline.is-ready .schedule-name { padding-left: 20px; }
}
