/* 日程・会場・参加費 */
.home-sections > .schedule-section { padding-top: 36px; }
.schedule-heading {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  margin-bottom: 28px;
}
.schedule-announcement {
  margin-bottom: 28px;
  padding: 16px 20px;
  border-left: 3px solid var(--ink);
  border-radius: 3px;
  background: #e6efdd;
  color: var(--ink);
  font-size: .94rem;
  line-height: 1.9;
  overflow-wrap: anywhere;
}
.schedule-announcement [data-announcement-text] { white-space: pre-wrap; }
.schedule-announcement-item + .schedule-announcement-item { margin-top: .75em; }
.schedule-section .schedule-grid {
  grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
  gap: 28px;
  margin-top: 0;
  align-items: stretch;
}
.schedule-section .calendar-panel,
.schedule-section .visit-info {
  padding: 26px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
}
.schedule-section .calendar-panel { padding: 20px; }
.next-practice { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 8px; padding-bottom: 10px; margin-bottom: 12px; border-bottom: 1px solid var(--line); }
.next-practice-label { flex-shrink: 0; font-size: 1.05rem; font-weight: 700; color: var(--ink); }
.next-practice-info { flex: 1 1 15rem; min-width: 0; font-size: 1.3rem; font-weight: 650; color: var(--ink); line-height: 1.8; overflow-wrap: anywhere; }
.next-practice-details { margin-top: 4px; }
.next-practice-details:empty { display: none; }
.schedule-section .calendar-heading { margin-bottom: 12px; }
.schedule-section .calendar-heading h3 { font-size: .94rem; }
.schedule-section .calendar-heading .text-link { font-size: .74rem; gap: 8px; }
.schedule-section .visit-info dt { font-size: 1.05rem; font-weight: 700; line-height: 1.6; letter-spacing: .05em; color: var(--ink); }
.schedule-section .visit-info > h3 { margin-bottom: 20px; font-size: 1.3rem; font-weight: 700; }
.schedule-section .visit-info dd { font-size: .94rem; line-height: 1.95; }
.visit-time-row { display: grid; grid-template-columns: 3em max-content; font-variant-numeric: tabular-nums; }
.schedule-section .visit-info .visit-venues a {
  display: inline-block;
  color: var(--ink);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.schedule-section .visit-info .visit-venues a:hover { opacity: .7; }
.schedule-section .visit-info [data-fee-note] { font-size: .85rem; color: var(--body); line-height: 1.8; }
.schedule-section .visit-info dl > div { padding-block: 17px; }
.schedule-section .visit-info dl > div:first-child { padding-top: 0; }
.schedule-section .visit-info dl > div:last-child { padding-bottom: 0; border-bottom: 0; }
.visit-fee { font-family: var(--serif); color: var(--ink); font-size: 1.65rem; }

/* 月カレンダー：予定がある日だけ色を付ける。 */
.practice-calendar__toolbar { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.practice-calendar__month { flex: 1; font-family: var(--serif); font-size: 1.1rem; text-align: center; }
.practice-calendar__nav {
  min-width: 40px;
  min-height: 40px;
  padding: 4px 10px;
  background: transparent;
  border: 1px solid var(--line);
  border-radius: 3px;
  color: var(--ink);
  font-size: .82rem;
}
.practice-calendar__nav:hover { border-color: var(--ink); }
.practice-calendar__nav:disabled { opacity: .4; cursor: default; }
.practice-calendar__table { width: 100%; table-layout: fixed; border-collapse: collapse; }
.practice-calendar__table th { padding: 4px 0 7px; font-size: .72rem; font-weight: 400; color: var(--muted); }
.practice-calendar__table td { padding: 2px; text-align: center; vertical-align: top; }
.practice-calendar__day {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1px;
  width: 100%;
  min-height: 44px;
  padding: 3px 0;
  border: 1px solid transparent;
  border-radius: 4px;
  background: transparent;
  color: var(--body);
  font-size: .88rem;
  line-height: 1.4;
}
.practice-calendar__day.is-practice { background: #e6efdd; color: var(--ink); font-weight: 600; }
.practice-calendar__day.is-practice:hover { border-color: #6b8660; }
.practice-calendar__day.is-today { border-color: #789179; }
.practice-calendar__day.is-selected { background: var(--ink); color: #fff; }
.practice-calendar__marker { max-width: 100%; padding-inline: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .65rem; letter-spacing: .02em; }
.practice-calendar__status,
.calendar-status { margin-top: 10px; font-size: .75rem; line-height: 1.7; color: var(--muted); }
.practice-calendar__status a,
.calendar-status a { text-decoration: underline; text-underline-offset: 3px; }
.practice-calendar__details { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 14px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line); }
.practice-calendar__details-title { margin: 0; font-size: .88rem; color: var(--ink); }
.practice-calendar__events { flex: 1 1 12em; list-style: none; padding: 0; margin: 0; }
.practice-calendar__event { display: flex; flex-direction: column; gap: 3px; font-size: .82rem; line-height: 1.8; }
.practice-calendar__event + .practice-calendar__event { padding-top: 12px; margin-top: 12px; border-top: 1px solid var(--line); }
.practice-calendar__event strong { font-weight: 500; }
.visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }

@media (max-width: 1000px) {
  .schedule-section .schedule-grid { gap: 20px; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .schedule-section .calendar-panel,
  .schedule-section .visit-info { padding: 20px; }
}
@media (max-width: 760px) {
  .home-sections > .schedule-section { padding-top: 28px; }
  .schedule-heading { margin-bottom: 22px; }
  .schedule-announcement { margin-bottom: 22px; padding: 14px 16px; font-size: .9rem; }
  .schedule-section .schedule-grid { grid-template-columns: 1fr; }
  .schedule-section .calendar-panel,
  .schedule-section .visit-info { padding: 18px; }
  .schedule-section .calendar-heading { gap: 10px; }
  .schedule-section .calendar-heading .text-link { font-size: .68rem; }
  .practice-calendar__day { min-height: 44px; font-size: .84rem; }
  .practice-calendar__table td { padding: 2px; }
  .practice-calendar__toolbar { gap: 6px; }
  .practice-calendar__month { font-size: 1.1rem; }
  .practice-calendar__nav { min-width: 36px; padding-inline: 7px; }
  .schedule-section .visit-info dl > div:first-child { border-top: 0; }
  .schedule-section .visit-info > h3 { font-size: 1.2rem; }
  .schedule-section .visit-info dt { margin: 0; padding-top: 0; font-size: 1rem; }
  .schedule-section .visit-info dl > div { grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .next-practice-label { font-size: 1rem; }
  .next-practice-info { font-size: 1.2rem; }
}
@media print {
  .home-sections > .schedule-section { padding-top: 25px; }
  .practice-calendar__nav { display: none; }
}
