/* Stadium Core – calendar & schedule components. Uses theme tokens when present. */
.st-cal,.st-today,.st-upcoming,.st-guide,.st-hours,.st-contact{
  --_navy:var(--st-navy,#0B1F3A);--_ink:var(--st-ink,#0F172A);--_muted:var(--st-muted,#64748B);
  --_line:var(--st-line,#E6EAF2);--_bg:var(--st-bg,#F6F8FC);--_surface:var(--st-surface,#fff);
  --_accent:var(--st-accent,#FF6B35);--_aqua:var(--st-aqua,#00B4D8);--_r:var(--st-radius,20px);
  --_shadow:var(--st-shadow,0 10px 30px -12px rgba(11,31,58,.18));
  color:var(--_ink);font-family:inherit}
.st-icon{width:1.1em;height:1.1em;vertical-align:-.2em;flex:none}

/* Toolbar */
.st-cal{position:relative}
.st-cal__heading{margin:0 0 .75rem}
.st-cal__toolbar{display:flex;flex-wrap:wrap;gap:.75rem 1rem;align-items:center;justify-content:space-between;margin-bottom:.75rem}
.st-cal__nav{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}
.st-cal__title{margin:0 0 0 .5rem;font-size:1.25rem;font-weight:700;letter-spacing:-.01em}
.st-cal__btn{appearance:none;border:1px solid var(--_line);background:var(--_surface);color:var(--_ink);border-radius:999px;padding:.5rem .95rem;font:inherit;font-weight:600;font-size:.9rem;cursor:pointer;display:inline-flex;align-items:center;gap:.35rem;transition:.15s}
.st-cal__btn:hover{border-color:var(--_navy);box-shadow:var(--_shadow)}
.st-cal__btn--icon{padding:.5rem;width:2.4rem;height:2.4rem;justify-content:center}
.st-cal__views{display:inline-flex;background:var(--_bg);border-radius:999px;padding:.25rem;gap:.15rem}
.st-cal__view{appearance:none;border:0;background:transparent;font:inherit;font-weight:600;font-size:.9rem;padding:.45rem 1rem;border-radius:999px;cursor:pointer;color:var(--_muted);transition:.15s}
.st-cal__view.is-active{background:var(--_navy);color:#fff;box-shadow:0 4px 12px -4px rgba(11,31,58,.4)}
.st-cal__filters{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}
.st-chip{--chip:var(--_navy);appearance:none;border:1px solid var(--_line);background:var(--_surface);font:inherit;font-size:.82rem;font-weight:600;padding:.4rem .85rem;border-radius:999px;cursor:pointer;display:inline-flex;align-items:center;gap:.45rem;color:var(--_ink);transition:.15s}
.st-chip__dot{width:.6rem;height:.6rem;border-radius:50%;background:var(--chip)}
.st-chip:hover{border-color:var(--chip)}
.st-chip.is-active{background:var(--chip);border-color:var(--chip);color:#fff}
.st-chip.is-active .st-chip__dot{background:#fff}
.st-cal__body{position:relative;min-height:200px}
.st-cal__body.is-loading>*:not(.st-cal__loading){opacity:.35;pointer-events:none}
.st-cal__loading{position:absolute;inset:0;display:grid;place-items:center;font-weight:600;color:var(--_muted);z-index:2}
.st-cal__empty{padding:2rem;text-align:center;color:var(--_muted);background:var(--_bg);border-radius:var(--_r)}
.st-cal__foot{display:flex;flex-wrap:wrap;gap:1rem;margin-top:1rem;font-size:.85rem}
.st-cal__link{appearance:none;background:none;border:0;padding:0;font:inherit;font-weight:600;color:var(--_navy);cursor:pointer;display:inline-flex;align-items:center;gap:.35rem;text-decoration:none}
.st-cal__link:hover{color:var(--_accent)}

/* Badges */
.st-badge{display:inline-block;font-size:.7rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;padding:.15rem .5rem;border-radius:999px;background:#E2E8F0;color:#1E293B;line-height:1.4}
.st-badge--cancel{background:#FEE2E2;color:#991B1B}
.st-badge--new{background:#DCFCE7;color:#166534;vertical-align:middle}

/* Month grid */
.st-month__head{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--_muted);padding-bottom:.5rem}
.st-month__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;background:var(--_line);border:1px solid var(--_line);border-radius:var(--_r);overflow:hidden;padding:4px}
.st-month__cell{background:var(--_surface);min-height:120px;padding:.4rem;display:flex;flex-direction:column;gap:3px;border-radius:12px}
.st-month__cell.is-other{background:color-mix(in srgb,var(--_bg) 70%,#fff);opacity:.75}
.st-month__cell.is-today{outline:2px solid var(--_accent);outline-offset:-2px}
.st-month__num{appearance:none;border:0;background:none;font:inherit;font-weight:700;font-size:.85rem;width:1.8rem;height:1.8rem;border-radius:50%;display:grid;place-items:center;cursor:pointer;color:var(--_ink);align-self:flex-start}
.st-month__cell.is-today .st-month__num{background:var(--_accent);color:#fff}
.st-month__num:hover{background:var(--_bg)}
.st-month__more{appearance:none;border:0;background:none;font:inherit;font-size:.72rem;font-weight:700;color:var(--_muted);cursor:pointer;text-align:left;padding:.1rem .3rem}
.st-month__more:hover{color:var(--_navy)}
.st-pill{--cat:var(--_navy);appearance:none;border:0;text-align:left;font:inherit;font-size:.74rem;line-height:1.25;padding:.25rem .45rem .25rem .55rem;border-radius:8px;background:color-mix(in srgb,var(--cat) 12%,#fff);color:var(--_ink);cursor:pointer;display:flex;gap:.35rem;align-items:baseline;border-left:3px solid var(--cat);transition:.12s;overflow:hidden}
.st-pill:hover{background:color-mix(in srgb,var(--cat) 22%,#fff)}
.st-pill__time{font-weight:700;color:var(--cat);white-space:nowrap;font-variant-numeric:tabular-nums}
.st-pill__name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.st-pill.is-cancelled .st-pill__name{text-decoration:line-through;opacity:.6}
.st-pill.is-allday{background:var(--cat);color:#fff;border-left-color:var(--cat)}

/* Week columns */
.st-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.6rem}
.st-week__col{background:var(--_bg);border-radius:var(--_r);padding:.5rem;min-height:220px;display:flex;flex-direction:column;gap:.4rem}
.st-week__col.is-today{background:color-mix(in srgb,var(--_accent) 8%,#fff);box-shadow:inset 0 0 0 2px var(--_accent)}
.st-week__head{display:flex;align-items:baseline;justify-content:space-between;padding:.25rem .35rem .5rem}
.st-week__dow{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--_muted)}
.st-week__num{font-weight:800;font-size:1.15rem;letter-spacing:-.02em}
.st-week__col.is-today .st-week__num{color:var(--_accent)}
.st-week__list{display:flex;flex-direction:column;gap:.4rem}
.st-week__empty{color:var(--_muted);text-align:center;padding:1rem 0;font-size:.85rem}
.st-occ{--cat:var(--_navy);appearance:none;border:0;text-align:left;font:inherit;background:var(--_surface);border-radius:12px;padding:.55rem .65rem .55rem .8rem;cursor:pointer;display:flex;flex-direction:column;gap:.12rem;position:relative;box-shadow:0 1px 2px rgba(11,31,58,.06);border-left:4px solid var(--cat);transition:.15s;color:var(--_ink);width:100%}
.st-occ:hover{transform:translateY(-1px);box-shadow:var(--_shadow)}
.st-occ__time{font-size:.72rem;font-weight:700;color:var(--cat);font-variant-numeric:tabular-nums}
.st-occ__name{font-weight:700;font-size:.86rem;line-height:1.25}
.st-occ__loc{font-size:.74rem;color:var(--_muted)}
.st-occ.is-cancelled .st-occ__name{text-decoration:line-through;opacity:.6}
.st-occ .st-badge{align-self:flex-start;margin-top:.2rem}

/* Agenda / list */
.st-agenda{display:flex;flex-direction:column;gap:1rem}
.st-day{display:grid;grid-template-columns:110px 1fr;gap:1rem;align-items:start}
.st-day__head{margin:0;display:flex;flex-direction:column;gap:0;position:sticky;top:90px;background:var(--_surface);border-radius:16px;padding:.7rem .85rem;border:1px solid var(--_line)}
.st-day.is-today .st-day__head{background:var(--_navy);color:#fff;border-color:var(--_navy)}
.st-day__num{font-size:1.9rem;font-weight:800;line-height:1;letter-spacing:-.03em}
.st-day__name{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-top:.25rem}
.st-day__mon{font-size:.78rem;opacity:.7}
.st-day__list{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.5rem}
.st-day__empty{margin:0;color:var(--_muted);padding:.75rem 0}

/* Modal */
.st-modal-open{overflow:hidden}
.st-cal__modal{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;padding:1rem}
.st-cal__modal[hidden]{display:none}
.st-cal__modal-backdrop{position:absolute;inset:0;background:rgba(11,31,58,.55);backdrop-filter:blur(4px)}
.st-cal__modal-card{position:relative;background:var(--_surface);border-radius:24px;padding:1.75rem;max-width:520px;width:100%;box-shadow:0 30px 80px -20px rgba(11,31,58,.5);animation:st-pop .2s ease-out;max-height:90vh;overflow:auto}
@keyframes st-pop{from{transform:translateY(12px) scale(.98);opacity:0}}
.st-cal__modal-x{position:absolute;top:.9rem;right:.9rem;appearance:none;border:0;background:var(--_bg);width:2.2rem;height:2.2rem;border-radius:50%;cursor:pointer;display:grid;place-items:center;color:var(--_ink)}
.st-modal__cat{--cat:var(--_navy);display:inline-block;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--cat);background:color-mix(in srgb,var(--cat) 12%,#fff);padding:.25rem .65rem;border-radius:999px;margin-bottom:.6rem}
.st-modal__title{margin:0 0 .75rem;font-size:1.5rem;line-height:1.15;letter-spacing:-.02em;padding-right:2rem}
.st-modal__cancel{margin:0 0 .75rem;color:#991B1B;background:#FEE2E2;padding:.5rem .75rem;border-radius:10px;font-weight:700;font-size:.85rem}
.st-modal__facts{margin:0 0 1rem;display:grid;grid-template-columns:1fr 1fr;gap:.75rem}
.st-modal__facts div{background:var(--_bg);border-radius:12px;padding:.6rem .75rem}
.st-modal__facts dt{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--_muted);font-weight:700}
.st-modal__facts dd{margin:.15rem 0 0;font-weight:600;font-size:.92rem}
.st-modal__desc{color:var(--_muted);line-height:1.55;margin:0 0 1.1rem}
.st-modal__actions{display:flex;flex-wrap:wrap;gap:.5rem}
.st-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.65rem 1.1rem;border-radius:999px;font-weight:700;font-size:.9rem;text-decoration:none;border:1.5px solid transparent;cursor:pointer;font-family:inherit;transition:.15s}
.st-btn--primary{background:var(--_navy);color:#fff}
.st-btn--primary:hover{background:var(--_accent);color:#fff}
.st-btn--secondary{background:var(--_accent);color:#fff}
.st-btn--secondary:hover{filter:brightness(1.08)}
.st-btn--ghost{border-color:var(--_line);color:var(--_ink);background:var(--_surface)}
.st-btn--ghost:hover{border-color:var(--_navy)}

/* Today widget */
.st-today{background:var(--_surface);border-radius:var(--_r);padding:1.5rem;box-shadow:var(--_shadow);border:1px solid var(--_line)}
.st-today__head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}
.st-today__title{margin:0;font-size:1.35rem}
.st-today__date{color:var(--_muted);font-weight:600;font-size:.9rem}
.st-today__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.st-today__item{display:flex;align-items:center;gap:.75rem;padding:.65rem 0;border-top:1px solid var(--_line)}
.st-today__sep{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;font-weight:800;color:var(--_muted);padding:.75rem 0 .25rem}
.st-today__time{font-variant-numeric:tabular-nums;font-weight:700;font-size:.82rem;min-width:7.2rem;color:var(--_navy)}
.st-today__dot{width:.65rem;height:.65rem;border-radius:50%;flex:none}
.st-today__body{display:flex;flex-direction:column;min-width:0;flex:1}
.st-today__name{font-weight:700;color:var(--_ink);text-decoration:none}
.st-today__name:hover{color:var(--_accent)}
.st-today__meta{font-size:.78rem;color:var(--_muted)}
.st-today__item.is-cancelled .st-today__name{text-decoration:line-through;opacity:.6}
.st-today__empty{color:var(--_muted)}
.st-today__more{display:inline-flex;align-items:center;gap:.35rem;margin-top:1rem;font-weight:700;color:var(--_navy);text-decoration:none}
.st-today__more:hover{color:var(--_accent)}

/* Upcoming cards */
.st-upcoming__title{margin:0 0 1rem}
.st-upcoming__grid{display:grid;grid-template-columns:repeat(var(--cols,3),minmax(0,1fr));gap:1rem}
.st-event-card{--cat:var(--_navy);display:flex;gap:1rem;align-items:flex-start;background:var(--_surface);border:1px solid var(--_line);border-radius:var(--_r);padding:1rem;text-decoration:none;color:var(--_ink);transition:.15s}
.st-event-card:hover{transform:translateY(-2px);box-shadow:var(--_shadow);border-color:var(--cat)}
.st-event-card__date{flex:none;width:3.6rem;height:3.6rem;border-radius:14px;background:color-mix(in srgb,var(--cat) 14%,#fff);color:var(--cat);display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}
.st-event-card__day{font-size:1.4rem;font-weight:800;letter-spacing:-.03em}
.st-event-card__mon{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.st-event-card__body{display:flex;flex-direction:column;gap:.15rem;min-width:0}
.st-event-card__cat{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--cat)}
.st-event-card__name{font-weight:700;line-height:1.25}
.st-event-card__meta{font-size:.8rem;color:var(--_muted)}
.st-event-card.is-cancelled .st-event-card__name{text-decoration:line-through}

/* Class guide */
.st-guide__title{margin:0 0 1rem}
.st-guide__grid{display:grid;grid-template-columns:repeat(var(--cols,2),minmax(0,1fr));gap:1rem}
.st-guide__item{--cat:var(--_navy);background:var(--_surface);border:1px solid var(--_line);border-radius:var(--_r);padding:1.25rem 1.25rem 1.25rem 1.4rem;position:relative;overflow:hidden}
.st-guide__item::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--cat)}
.st-guide__name{margin:0 0 .5rem;font-size:1.1rem}
.st-guide__name a{color:var(--_ink);text-decoration:none}
.st-guide__name a:hover{color:var(--cat)}
.st-guide__times{list-style:none;margin:0 0 .6rem;padding:0;display:flex;flex-wrap:wrap;gap:.35rem}
.st-guide__times li{font-size:.75rem;font-weight:700;background:color-mix(in srgb,var(--cat) 12%,#fff);color:var(--cat);padding:.2rem .6rem;border-radius:999px}
.st-guide__desc{font-size:.92rem;color:var(--_muted);line-height:1.55}
.st-guide__desc p{margin:0}

/* Hours */
.st-hours__title{margin:0 0 1rem}
.st-hours__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
.st-hours__card{background:var(--_surface);border:1px solid var(--_line);border-radius:var(--_r);padding:1.25rem}
.st-hours__name{margin:0 0 .75rem;font-size:1.05rem;display:flex;align-items:center;gap:.5rem}
.st-hours__name .st-icon{color:var(--_aqua)}
.st-hours__rows{margin:0}
.st-hours__row{display:flex;justify-content:space-between;gap:1rem;padding:.4rem 0;border-top:1px solid var(--_line);font-size:.9rem}
.st-hours__row dt{color:var(--_muted);font-weight:600}
.st-hours__row dd{margin:0;font-weight:700;text-align:right;font-variant-numeric:tabular-nums}
.st-hours--compact .st-hours__card{padding:1rem}

/* Contact */
.st-contact{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}
.st-contact__item{display:flex;gap:.9rem;align-items:flex-start;background:var(--_surface);border:1px solid var(--_line);border-radius:var(--_r);padding:1.1rem;text-decoration:none;color:var(--_ink);transition:.15s}
.st-contact__item:hover{border-color:var(--_aqua);box-shadow:var(--_shadow)}
.st-contact__item .st-icon{width:1.5rem;height:1.5rem;color:var(--_aqua);margin-top:.15rem}
.st-contact__item span{display:flex;flex-direction:column;gap:.15rem}
.st-contact__item small{color:var(--_muted);font-size:.8rem;line-height:1.4}

/* Responsive */
@media (max-width:960px){
  .st-week{grid-template-columns:repeat(4,minmax(0,1fr))}
  .st-week__col:nth-child(n+5){grid-column:span 1}
  .st-upcoming__grid,.st-guide__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .st-hours__grid{grid-template-columns:1fr}
}
@media (max-width:720px){
  .st-week{grid-template-columns:1fr;gap:.75rem}
  .st-week__col{min-height:0}
  .st-week__head{justify-content:flex-start;gap:.6rem}
  .st-day{grid-template-columns:1fr;gap:.5rem}
  .st-day__head{position:static;flex-direction:row;align-items:baseline;gap:.6rem}
  .st-day__num{font-size:1.4rem}
  .st-upcoming__grid,.st-guide__grid{grid-template-columns:1fr}
  .st-cal__title{width:100%;margin:.25rem 0 0;font-size:1.1rem}
  .st-modal__facts{grid-template-columns:1fr}
  .st-today__time{min-width:5.5rem;font-size:.76rem}
}
@media print{
  .st-cal__toolbar,.st-cal__filters,.st-cal__foot,.st-cal__modal{display:none!important}
  .st-occ,.st-pill{box-shadow:none;border:1px solid #ccc}
  .st-day__head{position:static}
}
