/* ============================================================
   weekly-schedule.css — garden
   New weekly-schedule styling only. Scoped under .tpl-garden so it
   cannot bleed into the rest of the template, or into other
   templates if these files are ever concatenated. template.css
   is untouched.
   ============================================================ */

.tpl-garden { --ws-accent: var(--accent);
  --ws-rule:   var(--rule);
  --ws-soft:   var(--text-soft); }

.tpl-garden .ws-body { max-width: 920px; margin: 0 auto; }
.tpl-garden .ws-lede {
  font-size: clamp(1.05rem, 1.5vw, 1.22rem); line-height: 1.65; color: var(--ws-soft);
  margin: 0 0 clamp(10px, 1.6vw, 20px); text-align: center;
}

/* weekly schedule: day-as-row, shared time column */
.tpl-garden .ws-week { display: grid; grid-template-columns: [time] max-content [event] minmax(0, 1fr); column-gap: clamp(20px, 2.5vw, 40px); margin-top: clamp(18px, 2.2vw, 28px); padding-left: clamp(2px, 1.5vw, 22px); }

/* each day = full-width header row (flush left) + its event rows */
.tpl-garden .ws-day { display: contents; }
.tpl-garden .ws-day-head { grid-column: 1 / -1; margin: clamp(16px, 2vw, 24px) 0 clamp(8px, 1.2vw, 14px); margin-left: calc(-1 * clamp(2px, 1.5vw, 22px)); padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid var(--ws-rule); }
.tpl-garden .ws-day:first-child .ws-day-head { margin-top: 0; padding-top: 4px; border-top: 0; }
.tpl-garden .ws-day-label { margin: 0; font-family: "Spectral", Georgia, serif; font-weight: 600; color: var(--text); font-size: clamp(1.3rem, 2vw, 1.7rem); line-height: 1.1; }
.tpl-garden .ws-day-note { margin: 6px 0 0; max-width: 48ch; font-size: .85rem; line-height: 1.45; color: var(--ws-soft); }

/* events: shared time/event columns across all days -> every title lines up */
.tpl-garden .ws-day-entries { display: contents; }
.tpl-garden .ws-entry { grid-column: 1 / -1; display: grid; grid-template-columns: subgrid; align-items: baseline; column-gap: clamp(20px, 2.5vw, 40px); row-gap: 2px; padding: 11px 0; border-bottom: 1px solid color-mix(in srgb, var(--ws-rule) 55%, transparent); }
.tpl-garden .ws-entry:first-child { padding-top: 0; }
.tpl-garden .ws-entry:last-child { border-bottom: 0; padding-bottom: 0; }
.tpl-garden .ws-time { grid-column: time; min-width: max-content; font-family: inherit; font-weight: 600; font-size: .92rem; color: var(--ws-accent); font-variant-numeric: tabular-nums; white-space: nowrap; }
.tpl-garden .ws-event { grid-column: event; font-family: "Spectral", Georgia, serif; font-weight: 600; font-size: 1.05rem; color: var(--text); line-height: 1.3; }
.tpl-garden .ws-where { grid-column: event; margin-top: 2px; font-size: .85rem; color: var(--ws-soft); }

/* phones: stack time over event as a simple block list */
@media (max-width: 560px) {
  .tpl-garden .ws-week { display: block; padding-left: 0; }
  .tpl-garden .ws-day-head { margin-left: 0; }
  .tpl-garden .ws-day-entries { display: block; padding-left: clamp(14px, 4vw, 22px); }
  .tpl-garden .ws-entry { display: block; padding: 11px 0; }
  .tpl-garden .ws-entry:last-child { padding-bottom: 0; }
  .tpl-garden .ws-time, .tpl-garden .ws-event, .tpl-garden .ws-where { display: block; }
  .tpl-garden .ws-where { margin-top: 2px; }
  .tpl-garden .ws-day-note { max-width: none; }
}

