/* =========================================================
   講座カレンダー（page-calendar.php）専用スタイル
   layout.css より先に読み込まれるため body.page-calendar でスコープ
   ========================================================= */
.page-calendar .p-cal-section { padding: 60px 24px 80px; }
.page-calendar .p-cal-inner { max-width: 1040px; margin: 0 auto; }
.page-calendar .p-cal-intro { max-width: 760px; margin: 0 auto 36px; line-height: 1.9; }
.page-calendar .p-cal-intro p { margin: 0 0 1em; }

/* 凡例 */
.page-calendar .p-cal-legend { display: flex; flex-wrap: wrap; gap: 8px 20px; align-items: center; font-size: 1.36rem; color: #55606e; margin: 0 0 18px; }
.page-calendar .p-cal-legend-item { display: inline-flex; align-items: center; gap: 6px; }
.page-calendar .p-cal-legend-hint { margin-left: auto; font-size: 1.28rem; color: #8a919c; }
.page-calendar .p-cal-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.page-calendar .p-cal-dot.is-session  { background: #004ca0; }
.page-calendar .p-cal-dot.is-regular  { background: #2a8f6a; }
.page-calendar .p-cal-dot.is-briefing { background: #d9822b; }
.page-calendar .p-cal-dot.is-event    { background: #7a4fb3; }

/* 月ナビ */
.page-calendar .p-cal-nav { display: flex; align-items: center; justify-content: space-between; margin: 0 0 14px; }
.page-calendar .p-cal-month { font-size: 2.4rem; font-weight: 700; letter-spacing: .04em; margin: 0; }
.page-calendar .p-cal-nav-btn { display: inline-block; padding: 8px 16px; border: 1px solid #c9d0d8; border-radius: 4px; font-size: 1.44rem; color: #0a1a33; background: #fff; transition: background .2s; }
.page-calendar .p-cal-nav-btn:hover { background: #f4f6f9; }

/* グリッド */
.page-calendar .p-cal { width: 100%; border-collapse: collapse; table-layout: fixed; background: #fff; border: 1px solid #dfe4ea; }
.page-calendar .p-cal th { padding: 8px 4px; font-size: 1.28rem; font-weight: 700; color: #55606e; background: #f4f6f9; border-bottom: 1px solid #dfe4ea; }
.page-calendar .p-cal th.is-sun { color: #c0392b; }
.page-calendar .p-cal th.is-sat { color: #004ca0; }
.page-calendar .p-cal-day { vertical-align: top; height: 104px; padding: 6px; border: 1px solid #e6e9ee; }
.page-calendar .p-cal-day.is-other { background: #fafbfc; }
.page-calendar .p-cal-day.is-other .p-cal-daynum { color: #b8bec7; }
.page-calendar .p-cal-daynum { display: inline-block; font-size: 1.36rem; font-weight: 700; line-height: 1; padding: 4px 6px; border-radius: 12px; }
.page-calendar .p-cal-day.is-sun .p-cal-daynum { color: #c0392b; }
.page-calendar .p-cal-day.is-sat .p-cal-daynum { color: #004ca0; }
.page-calendar .p-cal-day.is-today .p-cal-daynum { background: #0a1a33; color: #fff; }
.page-calendar .p-cal-chips { list-style: none; margin: 6px 0 0; padding: 0; display: grid; gap: 4px; }
.page-calendar .p-cal-chip {
  display: block; width: 100%; text-align: left; border: 0; border-radius: 4px; cursor: pointer;
  padding: 4px 6px; font-size: 1.184rem; line-height: 1.35; color: #fff; background: #004ca0;
  font-family: inherit; transition: opacity .2s;
}
.page-calendar .p-cal-chip:hover { opacity: .85; }
.page-calendar .p-cal-chip.is-regular  { background: #2a8f6a; }
.page-calendar .p-cal-chip.is-briefing { background: #d9822b; }
.page-calendar .p-cal-chip.is-event    { background: #7a4fb3; }
.page-calendar .p-cal-chip-time { display: block; font-size: 1.088rem; opacity: .85; }
.page-calendar .p-cal-chip-title { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* バッジ */
.page-calendar .p-cal-badge { display: inline-block; font-size: 1.12rem; font-weight: 700; color: #fff; background: #004ca0; padding: 2px 8px; border-radius: 3px; letter-spacing: .04em; vertical-align: middle; }
.page-calendar .p-cal-badge.is-regular  { background: #2a8f6a; }
.page-calendar .p-cal-badge.is-briefing { background: #d9822b; }
.page-calendar .p-cal-badge.is-event    { background: #7a4fb3; }

/* 詳細パネル */
.page-calendar .p-cal-overlay { position: fixed; inset: 0; background: rgba(10, 26, 51, .45); z-index: 1000; }
.page-calendar .p-cal-panel {
  position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 1001;
  width: min(560px, calc(100% - 32px)); max-height: calc(100% - 48px); overflow: auto;
  background: #fff; border-radius: 8px; box-shadow: 0 20px 60px rgba(0, 0, 0, .25); padding: 32px 32px 28px;
}
.page-calendar .p-cal-panel-close { position: absolute; top: 10px; right: 12px; width: 36px; height: 36px; border: 0; background: transparent; font-size: 2.56rem; line-height: 1; color: #55606e; cursor: pointer; }
.page-calendar .p-cal-panel-type { margin: 0 0 10px; display: flex; gap: 8px; align-items: center; }
.page-calendar .p-cal-panel-course { font-size: 1.28rem; color: #55606e; }
.page-calendar .p-cal-panel-title { font-size: 2rem; font-weight: 700; line-height: 1.5; margin: 0 0 8px; }
.page-calendar .p-cal-panel-when { font-size: 1.6rem; font-weight: 700; color: #004ca0; margin: 0 0 4px; }
.page-calendar .p-cal-panel-format { font-size: 1.44rem; color: #55606e; margin: 0 0 14px; }
.page-calendar .p-cal-panel-summary { font-size: 1.52rem; line-height: 1.85; margin: 0 0 12px; }
.page-calendar .p-cal-panel-body { font-size: 1.472rem; line-height: 1.85; color: #333; }
.page-calendar .p-cal-panel-body p { margin: 0 0 1em; }
.page-calendar .p-cal-panel-cta { margin: 20px 0 0; text-align: center; }
.page-calendar .p-cal-panel-btn { display: inline-flex; align-items: center; justify-content: center; width: 100%; padding: 14px 24px; border-radius: 4px; background: #004ca0; color: #fff; font-weight: 700; letter-spacing: .04em; transition: opacity .2s; }
.page-calendar .p-cal-panel-btn:hover { opacity: .85; }
body.is-cal-open { overflow: hidden; }

/* 今後の予定 */
.page-calendar .p-cal-upcoming { margin: 56px 0 0; }
.page-calendar .p-cal-upcoming-ttl { font-size: 1.92rem; font-weight: 700; margin: 0 0 14px; padding-bottom: 10px; border-bottom: 2px solid #004ca0; }
.page-calendar .p-cal-upcoming-empty { color: #55606e; }
.page-calendar .p-cal-upcoming-list { list-style: none; margin: 0; padding: 0; }
.page-calendar .p-cal-upcoming-item { display: grid; grid-template-columns: 170px auto 1fr auto; gap: 8px 16px; align-items: center; padding: 12px 4px; border-bottom: 1px solid #e6e9ee; font-size: 1.52rem; }
.page-calendar .p-cal-upcoming-date { font-weight: 700; font-variant-numeric: tabular-nums; }
.page-calendar .p-cal-upcoming-date span { font-weight: 400; color: #55606e; font-size: 1.408rem; }
.page-calendar .p-cal-upcoming-link { font-size: 1.36rem; color: #004ca0; text-decoration: underline; white-space: nowrap; }

@media (max-width: 1024px) {
  .page-calendar .p-cal-day { height: 92px; }
}
@media (max-width: 767px) {
  .page-calendar .p-cal-section { padding: 40px 12px 60px; }
  .page-calendar .p-cal-legend-hint { display: none; }
  .page-calendar .p-cal-month { font-size: 1.92rem; }
  .page-calendar .p-cal-nav-btn { padding: 6px 10px; font-size: 1.28rem; }
  .page-calendar .p-cal-day { height: 64px; padding: 3px; }
  .page-calendar .p-cal-daynum { font-size: 1.2rem; padding: 3px 4px; }
  .page-calendar .p-cal-chip { padding: 3px 3px; font-size: 0.992rem; }
  .page-calendar .p-cal-chip-title { display: none; }
  .page-calendar .p-cal-chip-time { font-size: 0.992rem; opacity: 1; }
  .page-calendar .p-cal-panel { top: auto; bottom: 0; left: 0; transform: none; width: 100%; max-height: 85%; border-radius: 12px 12px 0 0; padding: 28px 20px 24px; }
  .page-calendar .p-cal-upcoming-item { grid-template-columns: 1fr auto; }
  .page-calendar .p-cal-upcoming-title { grid-column: 1 / -1; }
  .page-calendar .p-cal-upcoming-link { grid-column: 1 / -1; }
}

/* テーマのリセットCSS（aside等を display:block）に負けないように hidden を強制 */
.page-calendar .p-cal-panel[hidden],
.page-calendar .p-cal-overlay[hidden],
.page-calendar .p-cal-details[hidden],
.page-calendar .p-cal-panel-cta[hidden] { display: none !important; }
