.schedule-panel { padding:clamp(4rem,8vw,7rem) 7vw; color:#f5f1e8; background:radial-gradient(circle at 84% 8%,rgba(177,139,76,.2),transparent 28%),#15171b; }
.schedule-panel-heading { display:grid; grid-template-columns:.75fr 1.25fr; gap:clamp(2rem,7vw,8rem); max-width:1200px; margin:0 auto 2.5rem; align-items:end; }
.schedule-panel-heading h2 { margin:.5rem 0 0; font:500 clamp(2rem,4vw,4rem)/1.45 var(--serif,"Noto Serif JP",serif); }
.schedule-panel-heading > p { margin:0; color:rgba(255,255,255,.68); line-height:2; }
.schedule-list { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1px; max-width:1200px; margin:auto; background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.14); }
.schedule-card { display:flex; flex-direction:column; min-height:340px; padding:clamp(1.5rem,2.6vw,2.4rem); background:linear-gradient(145deg,#22252b 0%,#1b1e23 68%); }
.schedule-card-top,.schedule-card-foot { display:flex; justify-content:space-between; gap:1rem; align-items:center; }
.schedule-type { color:#d6b477; font-size:.68rem; letter-spacing:.12em; }
.schedule-status { padding:.3rem .55rem; color:rgba(255,255,255,.62); background:rgba(255,255,255,.055); border:1px solid rgba(255,255,255,.16); font-size:.68rem; cursor:default; }
.schedule-datetime { display:grid; grid-template-columns:1fr auto; gap:1rem; align-items:end; margin:1.65rem 0 0; padding:0 0 1.25rem; border-bottom:1px solid rgba(214,180,119,.35); }
.schedule-date { display:flex; flex-wrap:wrap; align-items:baseline; column-gap:.35rem; }
.schedule-date-year { flex-basis:100%; margin-bottom:.18rem; color:rgba(255,255,255,.55); font-size:.68rem; letter-spacing:.18em; }
.schedule-date-main { color:#fff; font:500 clamp(1.65rem,2.7vw,2.45rem)/1.15 var(--serif,"Noto Serif JP",serif); letter-spacing:.02em; white-space:nowrap; }
.schedule-date-weekday { color:#d6b477; font-size:.82rem; white-space:nowrap; }
.schedule-time { align-self:end; min-width:7.3rem; padding:.62rem .72rem; color:#e2c68f; background:rgba(214,180,119,.055); border:1px solid rgba(214,180,119,.34); font-size:.82rem; font-weight:600; letter-spacing:.04em; text-align:center; white-space:nowrap; cursor:default; }
.schedule-card h3 { margin:1.35rem 0 .8rem; font:500 clamp(1.18rem,1.8vw,1.55rem)/1.55 var(--serif,"Noto Serif JP",serif); }
.schedule-meta { margin:0; color:rgba(255,255,255,.62); font-size:.88rem; line-height:1.8; }
.schedule-card-foot { margin-top:auto; padding-top:1.8rem; border-top:1px solid rgba(255,255,255,.12); }
.schedule-card-foot strong { color:#fff; font-family:var(--serif,"Noto Serif JP",serif); font-weight:500; }
.schedule-card-foot span { color:#d6b477; font-size:.76rem; }
.schedule-book-button { width:100%; margin-top:1rem; padding:.9rem 1rem; color:#17191d; background:linear-gradient(105deg,#e7c986,#cda65e); border:1px solid #e7c986; box-shadow:0 8px 22px rgba(0,0,0,.2); font:700 .82rem/1.4 var(--sans,"Noto Sans JP",sans-serif); letter-spacing:.06em; cursor:pointer; transition:filter .2s,transform .2s,box-shadow .2s; }
.schedule-book-button::after { content:'  →'; }
.schedule-book-button:hover { filter:brightness(1.08); transform:translateY(-2px); box-shadow:0 12px 28px rgba(0,0,0,.28); }
.schedule-book-button:focus-visible { outline:2px solid #fff; outline-offset:3px; }
.schedule-unavailable { margin:1rem 0 0; padding:.75rem; color:rgba(255,255,255,.62); border:1px solid rgba(255,255,255,.18); text-align:center; }
.booking-box { position:fixed; right:clamp(1rem,3vw,2.5rem); bottom:clamp(1rem,3vw,2.5rem); z-index:80; width:min(390px,calc(100vw - 2rem)); max-height:min(78vh,680px); padding:1.25rem; color:#f6f1e8; background:rgba(18,20,24,.98); border:1px solid rgba(214,180,119,.5); box-shadow:0 24px 70px rgba(0,0,0,.48); opacity:0; visibility:hidden; transform:translateY(18px); transition:.25s ease; overflow:auto; }
.booking-box.is-open { opacity:1; visibility:visible; transform:none; }
.booking-box-head { display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; padding-bottom:1rem; border-bottom:1px solid rgba(255,255,255,.14); }
.booking-box-head span { display:block; color:#d6b477; font-size:.62rem; letter-spacing:.16em; }
.booking-box-head strong { display:block; margin-top:.3rem; font:500 1.35rem var(--serif,"Noto Serif JP",serif); }
.booking-box-head button,.booking-box-item button { color:rgba(255,255,255,.68); background:none; border:0; cursor:pointer; }
.booking-box-head button { font-size:1.6rem; line-height:1; }
.booking-box-item { display:flex; justify-content:space-between; gap:1rem; padding:1rem 0; border-bottom:1px solid rgba(255,255,255,.1); }
.booking-box-item strong,.booking-box-item span { display:block; }
.booking-box-item strong { font-size:.82rem; line-height:1.55; }
.booking-box-item span { margin-top:.25rem; color:#d6b477; font-size:.72rem; }
.booking-box-item button { flex:0 0 auto; font-size:.7rem; text-decoration:underline; }
.booking-box-total { display:flex; justify-content:space-between; gap:1rem; margin-top:1.1rem; align-items:baseline; }
.booking-box-total span { color:rgba(255,255,255,.62); font-size:.75rem; }
.booking-box-total strong { font:500 1.2rem var(--serif,"Noto Serif JP",serif); }
.booking-box-proceed { display:flex; align-items:center; justify-content:center; min-height:3.3rem; margin-top:1rem; color:#17191d; background:#d6b477; text-decoration:none; font-weight:700; }
.booking-box-proceed.is-disabled { opacity:.4; pointer-events:none; }
.booking-box small { display:block; margin-top:.7rem; color:rgba(255,255,255,.52); font-size:.68rem; line-height:1.6; }
.schedule-empty { grid-column:1/-1; padding:3rem; background:#1e2126; text-align:center; }
.schedule-empty strong { font:500 1.35rem var(--serif,"Noto Serif JP",serif); }
.schedule-empty p { max-width:45rem; margin:.8rem auto 0; color:rgba(255,255,255,.64); line-height:1.8; }
.schedule-retry-button { min-height:3rem; margin-top:1.5rem; padding:.65rem 1.5rem; border:1px solid #d6b477; color:#17191d; background:#d6b477; font:600 .9rem var(--sans,sans-serif); cursor:pointer; }
.schedule-retry-button:hover, .schedule-retry-button:focus-visible { color:#d6b477; background:transparent; }
.schedule-note { max-width:1200px; margin:1.2rem auto 0; color:rgba(255,255,255,.55); font-size:.78rem; line-height:1.7; }
.schedule-page .schedule-panel { min-height:calc(100vh - 160px); }
.schedule-actions { display:flex; gap:1rem; max-width:1200px; margin:2rem auto 0; }
.schedule-actions a { display:inline-flex; align-items:center; justify-content:center; min-height:3.5rem; padding:.8rem 1.4rem; color:#17191d; background:#d6b477; text-decoration:none; font-weight:600; }
.schedule-actions a + a { color:#fff; background:transparent; border:1px solid rgba(255,255,255,.35); }
@media (max-width:860px) {
  .schedule-panel-heading { grid-template-columns:1fr; gap:1.2rem; }
  .schedule-list { grid-template-columns:1fr; }
  .schedule-card { min-height:315px; }
}
@media (max-width:560px) {
  .schedule-panel { padding-left:5vw; padding-right:5vw; }
  .schedule-actions { flex-direction:column; }
  .schedule-datetime { grid-template-columns:1fr; gap:.8rem; }
  .schedule-time { justify-self:start; min-width:8.5rem; }
  .schedule-card { min-height:330px; }
}
.schedule-count { margin:.4rem 0 0; color:#f3d9a4; font-size:.9rem; font-weight:700; line-height:1.6; }
/* a long time label (a CAMP: assembly place and next-day release) wraps inside its box instead of being cut off */
.schedule-time { white-space:normal; max-width:12.5rem; line-height:1.55; }
@media (max-width:900px) { .schedule-time { max-width:100%; } }

/* ===== Colour by programme: quiet, so the page stays calm (2026-10-14) ===== */
.schedule-card { --accent:#d6b477; --glow:rgba(214,180,119,.10); position:relative; border-top:3px solid var(--accent); background:radial-gradient(circle at 100% 0,var(--glow),transparent 50%),linear-gradient(145deg,#22252b 0%,#1b1e23 68%); }
.schedule-card[data-kind="class"]    { --accent:#d3aa5e; --glow:rgba(211,170,94,.15); }
.schedule-card[data-kind="camp"]     { --accent:#78ab8c; --glow:rgba(120,171,140,.17); }
.schedule-card[data-kind="labo"]     { --accent:#c27388; --glow:rgba(194,115,136,.17); }
.schedule-card[data-kind="morning"]  { --accent:#8cbfe8; --glow:rgba(140,191,232,.17); }
.schedule-card[data-kind="online"]   { --accent:#9aaebb; --glow:rgba(154,174,187,.11); }
.schedule-card[data-kind="table"]    { --accent:#d69064; --glow:rgba(214,144,100,.15); }
.schedule-type { color:var(--accent); font-weight:600; }
.schedule-type::before { content:""; display:inline-block; width:.5em; height:.5em; margin-right:.55em; border-radius:50%; background:var(--accent); vertical-align:.04em; }
.schedule-date-weekday { color:var(--accent); }
.schedule-datetime { border-bottom-color:color-mix(in srgb,var(--accent) 38%,transparent); }
.schedule-time { color:var(--accent); background:color-mix(in srgb,var(--accent) 9%,transparent); border-color:color-mix(in srgb,var(--accent) 38%,transparent); }
.schedule-card-foot span { color:var(--accent); }

/* ===== 20 QUESTIONS: the one to notice (a famous guest is coming) ===== */
.schedule-card[data-kind="questions"] { --accent:#efd18f; border:1px solid #e7c986; border-top:4px solid #f0d79a; background:radial-gradient(circle at 8% 0,rgba(255,214,130,.30),transparent 42%),radial-gradient(circle at 100% 100%,rgba(255,186,84,.16),transparent 52%),linear-gradient(145deg,#2d2416 0%,#15120d 72%); box-shadow:inset 0 0 0 1px rgba(231,201,134,.22),0 26px 64px -26px rgba(231,201,134,.6); overflow:hidden; }
.schedule-card[data-kind="questions"]::after { content:""; position:absolute; top:0; bottom:0; left:-40%; width:30%; background:linear-gradient(100deg,transparent,rgba(255,236,190,.16),transparent); transform:skewX(-18deg); animation:q-shimmer 7s ease-in-out infinite; pointer-events:none; }
@keyframes q-shimmer { 0%,55% { left:-40%; } 85%,100% { left:130%; } }
.schedule-card[data-kind="questions"] .schedule-type { color:#f6dfa6; font-size:.74rem; letter-spacing:.2em; }
.schedule-guest-label { margin:1.1rem 0 0; color:#f0d79a; font:600 .72rem/1 var(--sans,"Noto Sans JP",sans-serif); letter-spacing:.32em; }
.schedule-guest-label::before { content:"✦"; margin-right:.7em; }
.schedule-card .schedule-guest-name { margin:.6rem 0 .5rem; font:500 clamp(1.8rem,3.3vw,2.9rem)/1.25 var(--serif,"Noto Serif JP",serif); letter-spacing:.04em; background:linear-gradient(100deg,#fff8e4,#f4d78f 48%,#fff2cf); -webkit-background-clip:text; background-clip:text; color:transparent; text-shadow:none; }
.schedule-lede { margin:0; max-width:30rem; color:rgba(255,255,255,.78); font-size:.88rem; line-height:1.8; }
.schedule-card[data-kind="questions"] .schedule-date-main { color:#fff8e4; }
.schedule-card[data-kind="questions"] .schedule-book-button { background:linear-gradient(105deg,#f6dd9c,#d9ad58); border-color:#f6dd9c; }
@media (min-width:861px) {
  .schedule-list { grid-auto-flow:row dense; }
  .schedule-card[data-kind="questions"] { grid-column:span 2; display:grid; grid-template-columns:1.15fr .85fr; column-gap:2rem; align-items:start; padding:clamp(1.4rem,2.2vw,2.1rem); }
  .schedule-card[data-kind="questions"] > .schedule-card-top { grid-column:1 / -1; }
  .schedule-card[data-kind="questions"] > .schedule-guest-label, .schedule-card[data-kind="questions"] > h3, .schedule-card[data-kind="questions"] > .schedule-lede { grid-column:1; }
  .schedule-card[data-kind="questions"] > .schedule-datetime { grid-column:2; grid-row:2 / span 3; align-self:center; margin-top:0; }
  .schedule-card[data-kind="questions"] > .schedule-card-foot, .schedule-card[data-kind="questions"] > .schedule-book-button, .schedule-card[data-kind="questions"] > .schedule-unavailable { grid-column:1 / -1; }
}
@media (prefers-reduced-motion:reduce) { .schedule-card[data-kind="questions"]::after { animation:none; display:none; } }

/* Narrow screens: two cards per row, compact; the 20 QUESTIONS card takes the full row */
@media (max-width:860px) {
  .schedule-list { grid-template-columns:repeat(2,minmax(0,1fr)); grid-auto-flow:row dense; }
  .schedule-card { min-height:0; padding:1rem .9rem; }
  .schedule-card h3 { font-size:1.02rem; line-height:1.45; }
  .schedule-card[data-kind="questions"] { grid-column:1 / -1; }
  .schedule-card .schedule-datetime { grid-template-columns:1fr; gap:.5rem; }
  .schedule-card .schedule-time { min-width:0; font-size:.74rem; padding:.3rem .5rem; }
  .schedule-card .button, .schedule-card .schedule-foot a { padding:.6rem .5rem; font-size:.8rem; }
}

/* Venue line on every card; the CAMP card also lists its two-day schedule */
.schedule-venue { margin:.5rem 0 0; color:rgba(255,255,255,.74); font-size:.84rem; line-height:1.6; }
.schedule-venue::before { content:""; display:inline-block; width:.42rem; height:.42rem; margin-right:.5rem; border-radius:50%; background:var(--accent,#d3aa5e); vertical-align:.08em; }
.schedule-plan { list-style:none; margin:.55rem 0 0; padding:.55rem 0 0; border-top:1px dashed rgba(255,255,255,.2); font-size:.8rem; line-height:1.7; color:rgba(255,255,255,.8); }
.schedule-plan li { display:flex; gap:.7rem; }
.schedule-plan b { flex:none; min-width:2.9em; color:var(--accent,#78ab8c); font-weight:600; }
@media (max-width:860px) { .schedule-plan { font-size:.72rem; } .schedule-plan li { flex-direction:column; gap:0; } .schedule-venue { font-size:.76rem; } }

/* Compact cards: shorter vertically (year row hidden, tighter spacing) */
.schedule-card, .guest-page .schedule-list .schedule-card { min-height:0; padding:1.05rem 1.15rem 1.1rem; }
.schedule-card-top { margin-bottom:0; }
.schedule-card .schedule-date-year { display:none; }
.schedule-datetime, .guest-page .schedule-list .schedule-datetime { margin-top:.7rem; padding-bottom:.6rem; gap:.6rem; }
.schedule-date-main, .guest-page .schedule-list .schedule-date-main { font-size:clamp(1.3rem,2vw,1.7rem); }
.schedule-time { padding:.4rem .6rem; font-size:.76rem; }
.schedule-card h3, .guest-page .schedule-list .schedule-card h3 { margin:.7rem 0 .2rem; font-size:clamp(1.05rem,1.5vw,1.3rem); line-height:1.4; }
.schedule-venue { margin-top:.2rem; }
.schedule-plan { margin-top:.4rem; padding-top:.4rem; }
.schedule-card-foot, .guest-page .schedule-list .schedule-card-foot { padding-top:.7rem; margin-top:auto; }
.schedule-card .schedule-book-button { margin-top:.6rem; padding:.62rem .8rem; }
.schedule-card .schedule-unavailable { margin-top:.6rem; padding:.5rem; }
@media (max-width:860px) {
  .schedule-card, .guest-page .schedule-list .schedule-card { padding:.85rem .8rem .9rem; }
  .schedule-datetime, .guest-page .schedule-list .schedule-datetime { margin-top:.5rem; padding-bottom:.45rem; }
  .schedule-card h3, .guest-page .schedule-list .schedule-card h3 { margin:.5rem 0 .15rem; font-size:.98rem; }
  .schedule-card .schedule-book-button { padding:.55rem .4rem; font-size:.74rem; }
  .schedule-card-foot, .guest-page .schedule-list .schedule-card-foot { padding-top:.55rem; }
}
.schedule-card[data-kind="camp"] .schedule-time { display:none; }   /* the day-by-day list below says it */
.schedule-card[data-kind="camp"] .schedule-datetime { grid-template-columns:1fr; }
@media (max-width:860px) {
  .schedule-card .schedule-status { display:none; }
  .schedule-card-foot { flex-wrap:wrap; gap:.1rem .5rem; }
  .schedule-card-foot strong { font-size:.92rem; white-space:nowrap; }
  .schedule-card .schedule-book-button::after { content:none; }
  .schedule-card .schedule-datetime .schedule-date-main { font-size:1.2rem; }
}
@media (max-width:860px) {
  .schedule-card[data-kind="camp"] { grid-column:1 / -1; }   /* its schedule list needs the width; keeps the row short */
  .schedule-card[data-kind="camp"] .schedule-plan li { flex-direction:row; gap:.7rem; }
}
/* keep the 20 QUESTIONS guest name large (the compact h3 rule above would shrink it) */
.schedule-card[data-kind="questions"] h3.schedule-guest-name, .guest-page .schedule-list .schedule-card[data-kind="questions"] h3.schedule-guest-name { margin:.3rem 0 .4rem; font-size:clamp(1.3rem,5.8vw,2.2rem); line-height:1.25; }
@media (min-width:861px) { .schedule-card[data-kind="questions"] h3.schedule-guest-name, .guest-page .schedule-list .schedule-card[data-kind="questions"] h3.schedule-guest-name { font-size:clamp(1.8rem,3.3vw,2.9rem); } }

/* 20 QUESTIONS: Wikipedia link under the guest name, and (when a photo exists in guests.js) the photo behind the gold card */
.schedule-guest-wiki { display:inline-block; margin:0 0 .5rem; color:#f3d9a4; font-size:.78rem; letter-spacing:.03em; text-decoration:underline; text-underline-offset:.25em; text-decoration-color:rgba(243,217,164,.5); }
.schedule-guest-wiki:hover, .schedule-guest-wiki:focus-visible { color:#fff; text-decoration-color:#fff; }
.schedule-card[data-kind="questions"].has-photo { background:linear-gradient(90deg,rgba(16,12,6,.96) 0%,rgba(16,12,6,.86) 48%,rgba(16,12,6,.35) 100%),var(--guest-photo) center right/cover no-repeat,#1a1408; }
.schedule-guest-credit { display:block; margin-top:.5rem; color:rgba(255,255,255,.55); font-size:.64rem; line-height:1.5; }
.reservation-guest-wiki { display:inline-block; margin-top:.25rem; color:#8a6a2a; font-size:.78rem; text-decoration:underline; text-underline-offset:.2em; }
/* photo placement: keep the face (upper part of a portrait) in view; the credit sits in the corner */
.schedule-card[data-kind="questions"].has-photo { position:relative; background:linear-gradient(90deg,rgba(16,12,6,.95) 0%,rgba(16,12,6,.84) 50%,rgba(16,12,6,.45) 100%),var(--guest-photo) 70% 12%/cover no-repeat,#1a1408; }
.schedule-card[data-kind="questions"].has-photo .schedule-guest-credit { position:absolute; top:.9rem; right:1rem; margin:0; text-shadow:0 1px 3px rgba(0,0,0,.7); }
@media (max-width:860px) { .schedule-card[data-kind="questions"].has-photo { background:linear-gradient(90deg,rgba(16,12,6,.93) 0%,rgba(16,12,6,.8) 60%,rgba(16,12,6,.5) 100%),var(--guest-photo) 60% 10%/cover no-repeat,#1a1408; } }

/* 20 QUESTIONS with a guest photo: the photo is shown clearly (not dimmed) on the right, fading into the card on its left edge; on phones it is a banner at the top */
.schedule-card[data-kind="questions"].has-photo { isolation:isolate; background:radial-gradient(circle at 8% 0,rgba(255,214,130,.22),transparent 42%),#1a1408; }
.schedule-guest-photo { position:absolute; z-index:-1; top:0; right:0; bottom:0; width:40%; background-size:cover; background-position:center 14%; background-repeat:no-repeat; -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 30%); mask-image:linear-gradient(90deg,transparent 0,#000 30%); }
.schedule-guest-credit { position:absolute; right:.8rem; bottom:.55rem; margin:0; color:rgba(255,255,255,.75); text-shadow:0 1px 3px rgba(0,0,0,.8); }
@media (min-width:861px) {
  .schedule-card[data-kind="questions"].has-photo { grid-template-columns:1fr; padding-right:calc(40% + 1.2rem); }
  .schedule-card[data-kind="questions"].has-photo > .schedule-datetime { grid-column:1; grid-row:auto; align-self:start; margin-top:.8rem; }
  .schedule-card[data-kind="questions"].has-photo > .schedule-card-foot, .schedule-card[data-kind="questions"].has-photo > .schedule-book-button, .schedule-card[data-kind="questions"].has-photo > .schedule-unavailable, .schedule-card[data-kind="questions"].has-photo > .schedule-card-top { grid-column:1; }
}
@media (max-width:860px) {
  .schedule-card[data-kind="questions"].has-photo { background:#1a1408; padding-top:8.6rem; }
  .schedule-guest-photo { left:0; width:auto; height:13rem; bottom:auto; background-position:center 12%; -webkit-mask-image:linear-gradient(180deg,#000 50%,transparent 100%); mask-image:linear-gradient(180deg,#000 50%,transparent 100%); }
  .schedule-guest-credit { bottom:auto; top:.7rem; }
}
.schedule-guest-credit { padding:.12rem .4rem; background:rgba(16,12,6,.55); border-radius:2px; text-shadow:none; }
@media (max-width:860px) {
  .schedule-card[data-kind="questions"].has-photo { padding-top:11rem; }
  .schedule-guest-photo { height:15.5rem; background-position:center 6%; -webkit-mask-image:linear-gradient(180deg,#000 66%,transparent 100%); mask-image:linear-gradient(180deg,#000 66%,transparent 100%); }
}

/* Mid widths (phones unfolded, small tablets: 561-860px): the card is wide, so the photo sits on the right like on desktop instead of a top banner that would crop the face */
@media (min-width:561px) and (max-width:860px) {
  .schedule-card[data-kind="questions"].has-photo { background:radial-gradient(circle at 8% 0,rgba(255,214,130,.22),transparent 42%),#1a1408; padding:1.2rem calc(40% + 1rem) 1.2rem 1.2rem; }
  .schedule-guest-photo { top:0; right:0; bottom:0; left:auto; width:40%; height:auto; background-position:center 14%; -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 30%); mask-image:linear-gradient(90deg,transparent 0,#000 30%); }
  .schedule-guest-credit { top:auto; bottom:.55rem; }
}
.schedule-card[data-kind="questions"].has-photo::after { display:none; }   /* the shimmer streak would cut across the face */
