@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Libre+Bodoni:wght@400;600&display=swap');

.sh101-events {
  --sh101-blue: #1e427b;
  --sh101-blue-deep: #16315b;
  --sh101-blue-mid: #426f96;
  --sh101-gold: #f8de9c;
  --sh101-gold-deep: #7a5f14;
  --sh101-paper: #eaf4f8;
  --sh101-paper-strong: #ddeef5;
  --sh101-card: #ffffff;
  --sh101-card-soft: #f6fbfd;
  --sh101-line: #c9dee9;
  --sh101-line-strong: #afcbe0;
  --sh101-danger: #a73729;
  --sh101-radius: 0.625rem;
  --sh101-radius-large: 0.875rem;
  --sh101-shadow: 0 0.625rem 1.875rem rgb(20 47 85 / 6%);
  color: var(--sh101-blue);
  font: 400 1rem/1.55 Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  text-align: left;
}

.sh101-events *, .sh101-events *::before, .sh101-events *::after { box-sizing: border-box; }
.sh101-events button, .sh101-events input { font: inherit; }
.sh101-events button, .sh101-events a { -webkit-tap-highlight-color: transparent; }
.sh101-events button:focus-visible, .sh101-events a:focus-visible, .sh101-events input:focus-visible { outline: 0.1875rem solid var(--sh101-blue); outline-offset: 0.125rem; }
.sh101-events .sh101-icon { width: 1.125rem; height: 1.125rem; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.sh101-sr-only { position: absolute; width: 0.0625rem; height: 0.0625rem; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

.sh101-shell { width: calc(100% - 2rem); max-width: 110rem; margin: 1.5rem auto 0; padding: 2.25rem clamp(1rem, 2.5vw, 2rem) 4.5rem; border-radius: 1.25rem; background: #ffffff; border: 0.0625rem solid var(--sh101-line); box-shadow: 0 1.25rem 3.75rem rgba(15, 38, 71, 0.07); }
.sh101-embed-page .sh101-shell { width: 100%; margin-top: 0; }
.sh101-masthead { margin-bottom: 1.5rem; border-top: 0.25rem solid var(--sh101-gold); border-bottom: 0.0625rem solid var(--sh101-line-strong); padding: 1.25rem 1.75rem; border-radius: var(--sh101-radius-large); background: var(--sh101-paper); }
.sh101-masthead small, .sh101-section-head small, .sh101-compact header small { display: block; margin-bottom: 0.375rem; color: var(--sh101-blue-mid); font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; }
.sh101-masthead h1, .sh101-masthead h2, .sh101-masthead h3 { max-width: 32ch; margin: 0; color: var(--sh101-blue); font-family: "Libre Bodoni", Georgia, serif; font-size: clamp(2rem, 4.5vw, 3.25rem); font-weight: 600; letter-spacing: -0.025em; line-height: 1.05; }
.sh101-masthead p { margin: 0.75rem 0 0; color: var(--sh101-blue-mid); font-size: 0.95rem; }
.sh101-demo-note { width: fit-content; margin-top: 1rem; border: 0.0625rem solid var(--sh101-gold); border-radius: calc(var(--sh101-radius) - 0.125rem); padding: 0.5rem 0.625rem; display: flex; align-items: center; gap: 0.5rem; background: rgb(248 222 156 / 34%); color: var(--sh101-gold-deep); font-size: 0.6875rem; }
.sh101-demo-note strong { flex: 0 0 auto; font-size: 0.625rem; letter-spacing: 0.08em; text-transform: uppercase; }
.sh101-stale-note { margin-bottom: 1rem; border: 0.0625rem solid var(--sh101-gold); border-radius: var(--sh101-radius); padding: 0.625rem 0.75rem; display: flex; align-items: baseline; gap: 0.5rem; background: rgb(248 222 156 / 34%); color: var(--sh101-gold-deep); font-size: 0.75rem; }
.sh101-stale-note strong { flex: 0 0 auto; font-size: 0.625rem; letter-spacing: 0.08em; text-transform: uppercase; }
.sh101-compact > .sh101-stale-note { margin: 0; border-width: 0 0 0.0625rem; border-radius: 0; }

.sh101-summary { display: grid; grid-template-columns: repeat(3, minmax(7.5rem, auto)) minmax(0, 1fr); gap: 0.75rem; margin-bottom: 1.5rem; }
.sh101-stat { min-height: 4.75rem; border: 0.0625rem solid var(--sh101-line-strong); border-radius: var(--sh101-radius-large); padding: 0.875rem 1.125rem; display: flex; flex-direction: column; justify-content: center; background: var(--sh101-paper); cursor: pointer; text-align: left; transition: all 160ms ease-out; }
.sh101-stat:hover { border-color: var(--sh101-blue); background: #ffffff; transform: translateY(-1px); box-shadow: 0 6px 16px rgba(20, 47, 85, 0.06); }
.sh101-stat:active { transform: scale(0.98); }
.sh101-stat small, .sh101-next-up small { color: var(--sh101-blue-mid); font-size: 0.625rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; }
.sh101-stat strong { color: var(--sh101-blue); font-size: 1.5rem; font-variant-numeric: tabular-nums; line-height: 1.1; }
.sh101-stat strong span { color: var(--sh101-blue-mid); font-size: 0.75rem; font-weight: 500; }
.sh101-stat.is-active { border-color: var(--sh101-blue-deep); background: linear-gradient(145deg, #1e427b 0%, #16315b 100%); box-shadow: 0 6px 16px rgba(22, 49, 91, 0.18); }
.sh101-stat.is-active small, .sh101-stat.is-active strong, .sh101-stat.is-active strong span { color: var(--sh101-card); }
.sh101-stat.is-active small, .sh101-stat.is-active strong span { opacity: 0.82; }
.sh101-next-up { min-width: 0; min-height: 4.75rem; border: 0.0625rem solid var(--sh101-line-strong); border-radius: var(--sh101-radius-large); padding: 0.75rem 1rem; display: flex; align-items: center; justify-content: space-between; gap: 0.875rem; background: var(--sh101-paper); color: var(--sh101-blue); cursor: pointer; text-align: left; transition: all 160ms ease-out; }
.sh101-next-up:hover { border-color: var(--sh101-blue); background: #ffffff; transform: translateY(-1px); box-shadow: 0 8px 20px rgba(20, 47, 85, 0.08); }
.sh101-next-up:active { transform: scale(0.98); }
.sh101-next-main { min-width: 0; flex: 1 1 auto; display: flex; flex-direction: column; gap: 0.2rem; }
.sh101-next-label { display: flex; align-items: center; gap: 0.35rem; }
.sh101-next-label small { color: var(--sh101-blue-mid); font-size: 0.625rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; }
.sh101-next-up.is-live .sh101-next-label small { color: var(--sh101-blue-deep); }
.sh101-next-main strong { overflow: hidden; font-size: 0.95rem; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; color: var(--sh101-blue); }
.sh101-next-meta { flex: 0 0 auto; display: flex; align-items: center; gap: 0.5rem; }
.sh101-next-meta em { color: var(--sh101-blue-mid); font-size: 0.78rem; font-style: normal; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.sh101-next-meta .sh101-icon { color: var(--sh101-blue-mid); transition: transform 140ms ease; }
.sh101-next-up:hover .sh101-next-meta .sh101-icon { transform: translateX(2px); color: var(--sh101-blue); }
.sh101-next-up.is-empty { cursor: default; }
.sh101-live-dot { width: 0.5rem; height: 0.5rem; border-radius: 50%; flex: 0 0 auto; background: var(--sh101-danger); box-shadow: 0 0 0 0.25rem rgb(167 55 41 / 12%); animation: sh101-pulse 2s infinite; }
@keyframes sh101-pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.25); opacity: 0.6; } }

.sh101-toolbar { display: flex; gap: 0.75rem; margin-bottom: 1.25rem; }
.sh101-toolbar label { position: relative; flex: 1; min-width: 0; }
.sh101-toolbar label > .sh101-icon { position: absolute; top: 50%; left: 1rem; color: var(--sh101-blue-mid); transform: translateY(-50%); pointer-events: none; }
.sh101-toolbar input { width: 100%; min-height: 3.25rem; border: 0.0625rem solid var(--sh101-line-strong); border-radius: var(--sh101-radius-large); padding: 0.75rem 1rem 0.75rem 2.875rem; background: var(--sh101-card); color: var(--sh101-blue); font-size: 1rem; transition: all 140ms ease; }
.sh101-toolbar input:focus { border-color: var(--sh101-blue); box-shadow: 0 0 0 3px rgba(30, 66, 123, 0.12); }
.sh101-toolbar input::placeholder { color: var(--sh101-blue-mid); }
.sh101-button { min-height: 2.875rem; border: 0.0625rem solid var(--sh101-line-strong); border-radius: var(--sh101-radius-large); padding: 0.75rem 1.125rem; display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; background: var(--sh101-card); color: var(--sh101-blue); cursor: pointer; font-size: 0.875rem; font-weight: 700; line-height: 1; text-decoration: none; transition: all 140ms ease-out; }
.sh101-button:hover { border-color: var(--sh101-blue-mid); background: var(--sh101-paper); color: var(--sh101-blue); transform: translateY(-1px); }
.sh101-button:active { transform: scale(0.96); }
.sh101-button-gold { border-color: var(--sh101-gold-deep); background: var(--sh101-gold); color: var(--sh101-blue-deep); }
.sh101-button-gold:hover { border-color: var(--sh101-gold-deep); background: #f5d480; color: var(--sh101-blue-deep); }
.sh101-button-blue { border-color: var(--sh101-blue-deep); background: linear-gradient(145deg, #1e427b 0%, #16315b 100%); color: var(--sh101-card); box-shadow: 0 4px 14px rgba(30, 66, 123, 0.2); }
.sh101-button-blue:hover { border-color: var(--sh101-blue-deep); background: var(--sh101-blue-deep); color: var(--sh101-card); transform: translateY(-1px); }

.sh101-collapsible-filters { margin-bottom: 1.75rem; }
.sh101-filter-toggle-btn { width: 100%; min-height: 2.75rem; border: 0.0625rem solid var(--sh101-line-strong); border-radius: var(--sh101-radius-large); padding: 0.625rem 1.25rem; display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; background: #ffffff; color: var(--sh101-blue); cursor: pointer; font-size: 0.875rem; font-weight: 600; transition: all 140ms ease; box-shadow: 0 2px 8px rgba(20, 47, 85, 0.03); }
.sh101-filter-toggle-btn:hover { border-color: var(--sh101-blue); background: var(--sh101-paper); }
.sh101-filter-toggle-btn > span:first-child { display: flex; align-items: center; gap: 0.5rem; }
.sh101-filter-toggle-btn .sh101-icon { color: var(--sh101-blue-mid); }
.sh101-active-count-badge { padding: 0.15rem 0.45rem; border-radius: 999rem; background: var(--sh101-blue-deep); color: var(--sh101-gold); font-size: 0.6875rem; font-weight: 700; }
.sh101-toggle-arrow { color: var(--sh101-blue-mid); font-size: 0.75rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; }

.sh101-filter-card { display: flex; flex-direction: column; gap: 1rem; padding: 1.25rem 1.5rem; border: 0.0625rem solid var(--sh101-line-strong); border-radius: var(--sh101-radius-large); background: #ffffff; box-shadow: 0 6px 24px rgba(20, 47, 85, 0.05); }
.sh101-filter-card.is-collapsed { display: none; }
.sh101-filter-card.is-open { display: flex; margin-top: 0.625rem; animation: sh101-enter 180ms ease-out; }
.sh101-filter-primary { display: flex; gap: 0.875rem; align-items: center; flex-wrap: wrap; }
.sh101-search-box { position: relative; flex: 1 1 16rem; min-width: 0; }
.sh101-search-box > .sh101-icon { position: absolute; top: 50%; left: 1rem; color: var(--sh101-blue-mid); transform: translateY(-50%); pointer-events: none; }
.sh101-search-box input { width: 100%; min-height: 3rem; border: 0.0625rem solid var(--sh101-line-strong); border-radius: var(--sh101-radius-large); padding: 0.625rem 1rem 0.625rem 2.875rem; background: var(--sh101-paper); color: var(--sh101-blue); font-size: 0.95rem; transition: all 140ms ease; }
.sh101-search-box input:focus { border-color: var(--sh101-blue); background: #ffffff; box-shadow: 0 0 0 3px rgba(30, 66, 123, 0.12); }
.sh101-search-box input::placeholder { color: var(--sh101-blue-mid); }

.sh101-select-group { display: flex; gap: 0.625rem; flex-wrap: wrap; flex: 1 1 20rem; }
.sh101-select-group select { min-height: 3rem; flex: 1; border: 0.0625rem solid var(--sh101-line-strong); border-radius: var(--sh101-radius-large); padding: 0.625rem 2.25rem 0.625rem 1rem; background: var(--sh101-paper) url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%23426f96' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='m19 9-7 7-7-7'/%3E%3C/svg%3E") no-repeat right 0.75rem center / 1rem; color: var(--sh101-blue); font-size: 0.875rem; font-weight: 600; cursor: pointer; appearance: none; transition: all 140ms ease; }
.sh101-select-group select:hover { border-color: var(--sh101-blue); background-color: #ffffff; }

.sh101-quick-pills-row { display: flex; align-items: center; gap: 0.875rem; border-top: 0.0625rem solid var(--sh101-line); padding-top: 0.875rem; }
.sh101-pills-label { color: var(--sh101-blue-mid); font-size: 0.72rem; font-weight: 700; letter-spacing: 0.09em; text-transform: uppercase; white-space: nowrap; }
.sh101-chips { min-width: 0; flex: 1; display: flex; gap: 0.45rem; padding: 0.125rem 0; overflow-x: auto; scrollbar-width: none; flex-wrap: wrap; }
.sh101-chips::-webkit-scrollbar { display: none; }
.sh101-chips button { min-height: 2.25rem; flex: 0 0 auto; border: 0.0625rem solid var(--sh101-line); border-radius: 999rem; padding: 0.4rem 0.85rem; display: inline-flex; align-items: center; gap: 0.35rem; background: var(--sh101-paper); color: var(--sh101-blue); cursor: pointer; font-size: 0.8125rem; font-weight: 600; transition: all 140ms ease-out; }
.sh101-chips button:hover { border-color: var(--sh101-blue-mid); color: var(--sh101-blue); background: #ffffff; transform: translateY(-1px); }
.sh101-chips button[aria-pressed="true"] { border-color: var(--sh101-blue-deep); background: var(--sh101-blue-deep); color: var(--sh101-gold); font-weight: 700; box-shadow: 0 0 0 2px var(--sh101-gold); }
.sh101-chips button span { opacity: 0.8; font-size: 0.6875rem; font-variant-numeric: tabular-nums; }

.sh101-active-bar { display: flex; align-items: center; gap: 0.625rem; flex-wrap: wrap; border-top: 0.0625rem solid var(--sh101-line); padding-top: 0.75rem; font-size: 0.75rem; color: var(--sh101-blue-mid); }
.sh101-active-tag { display: inline-flex; align-items: center; gap: 0.35rem; border: 1px solid var(--sh101-line-strong); border-radius: 0.375rem; padding: 0.2rem 0.5rem; background: var(--sh101-paper); color: var(--sh101-blue); font-size: 0.75rem; }
.sh101-active-tag button { border: 0; background: transparent; color: var(--sh101-blue-mid); cursor: pointer; font-size: 0.9rem; font-weight: 700; padding: 0 0.1rem; line-height: 1; }
.sh101-active-tag button:hover { color: var(--sh101-danger); }
.sh101-clear { min-height: 1.875rem; flex: 0 0 auto; border: 0; padding: 0.2rem 0.5rem; background: transparent; color: var(--sh101-blue-mid); cursor: pointer; font-size: 0.75rem; font-weight: 700; text-decoration: underline; text-underline-offset: 0.1875rem; }
.sh101-flag.is-host { background: rgba(30, 66, 123, 0.08); color: var(--sh101-blue-deep); font-weight: 700; border: 1px solid rgba(30, 66, 123, 0.2); }

.sh101-filter-card input[type="date"] { min-height: 3rem; border: 0.0625rem solid var(--sh101-line-strong); border-radius: var(--sh101-radius-large); padding: 0.625rem 1rem; background: var(--sh101-paper); color: var(--sh101-blue); font-size: 0.875rem; font-weight: 600; cursor: pointer; transition: all 140ms ease; }
.sh101-filter-card input[type="date"]:hover { border-color: var(--sh101-blue); background-color: #ffffff; }

.sh101-venue-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; }
.sh101-venue-card { border: 0.0625rem solid var(--sh101-line-strong); border-radius: var(--sh101-radius-large); padding: 1.5rem; background: #ffffff; display: flex; flex-direction: column; transition: all 160ms ease; box-shadow: 0 4px 16px rgba(20, 47, 85, 0.03); }
.sh101-venue-card:hover { transform: translateY(-2px); box-shadow: 0 10px 25px rgba(20, 47, 85, 0.08); border-color: var(--sh101-blue); }
.sh101-venue-card small { color: var(--sh101-blue-mid); font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; }
.sh101-venue-card h3 { margin: 0.35rem 0 0.5rem; color: var(--sh101-blue); font-family: "Libre Bodoni", Georgia, serif; font-size: 1.35rem; font-weight: 600; line-height: 1.15; }
.sh101-venue-addr { margin: 0 0 0.5rem; color: var(--sh101-blue-mid); font-size: 0.8125rem; display: flex; align-items: center; gap: 0.35rem; }
.sh101-venue-card p { margin: 0 0 1.25rem; color: var(--sh101-blue); font-size: 0.84rem; line-height: 1.45; }
.sh101-venue-card .sh101-button { margin-top: auto; width: fit-content; }
@media (max-width: 48rem) { .sh101-venue-grid { grid-template-columns: 1fr; } }
.sh101-panel { animation: sh101-enter 240ms cubic-bezier(0.16, 1, 0.3, 1); }
@keyframes sh101-enter { from { opacity: 0; transform: translateY(0.5rem); } to { opacity: 1; transform: translateY(0); } }

.sh101-section-head { margin-bottom: 1.25rem; display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; }
.sh101-section-head h2 { margin: 0; color: var(--sh101-blue); font-family: "Libre Bodoni", Georgia, serif; font-size: clamp(1.75rem, 4vw, 2.25rem); font-weight: 600; line-height: 1.1; }
.sh101-section-head > span { flex: 0 0 auto; color: var(--sh101-blue-mid); font-size: 0.8125rem; font-weight: 600; }
.sh101-event-list { border: 0.0625rem solid var(--sh101-line-strong); border-radius: var(--sh101-radius-large); overflow: hidden; background: var(--sh101-card); box-shadow: 0 8px 30px rgba(20, 47, 85, 0.05); }
.sh101-event-card { display: grid; grid-template-columns: 4.25rem minmax(0, 1fr) auto; align-items: center; gap: 1.125rem; padding: 1rem 1.25rem; transition: background 160ms ease-out, transform 140ms ease-out; }
.sh101-event-card + .sh101-event-card { border-top: 0.0625rem solid var(--sh101-line); }
.sh101-event-card:hover { background: #F2F8FB; transform: translateY(-1px); }
.sh101-event-card.is-featured { border-left: 0.35rem solid var(--sh101-gold); }
/* Hello Elementor's reset paints every button crimson on hover/focus; restore
   brand behavior for the calendar's interactive elements. */
.sh101-events button:hover, .sh101-events button:focus, .sh101-events button:focus-visible,
body > .sh101-modal-overlay button:hover, body > .sh101-modal-overlay button:focus, body > .sh101-modal-overlay button:focus-visible { background-color: transparent; color: inherit; text-decoration: none; }
.sh101-events .sh101-button:hover, body > .sh101-modal-overlay .sh101-button:hover { border-color: var(--sh101-blue-mid); background: var(--sh101-paper); color: var(--sh101-blue); }
.sh101-events .sh101-button-blue:hover { background: var(--sh101-blue-deep); color: var(--sh101-card); }
.sh101-events .sh101-button-gold:hover, body > .sh101-modal-overlay .sh101-button-gold:hover { background: #f5d480; color: var(--sh101-blue-deep); }
.sh101-events .sh101-save:hover { background: var(--sh101-card); color: var(--sh101-blue); }
.sh101-events .sh101-save[aria-pressed="true"]:hover { background: var(--sh101-blue); color: var(--sh101-card); }
.sh101-events .sh101-event-open:hover { background: transparent; }
.sh101-events .sh101-month-day-num:hover { background: var(--sh101-paper); }
.sh101-events .sh101-month-event-pill:hover { background: #e0eef7; color: var(--sh101-blue-deep); }
.sh101-events .sh101-chips button:hover { background: #ffffff; }
.sh101-events .sh101-nav button:hover { background: var(--sh101-card-soft); }
.sh101-events .sh101-show-more:hover { background: var(--sh101-card-soft); }
.sh101-events .sh101-related button:hover { background: var(--sh101-card-soft); }
.sh101-events .sh101-social a:hover, .sh101-events .sh101-social button:hover { background: var(--sh101-paper); }
.sh101-events .sh101-date-remove:hover { background: #f5f5f5; color: #a00; }

.sh101-card-date-badge { width: 4.25rem; height: 4.25rem; border-radius: var(--sh101-radius-large); background: linear-gradient(145deg, #1e427b 0%, #16315b 100%); color: var(--sh101-card); display: flex; flex-direction: column; align-items: center; justify-content: center; flex-shrink: 0; box-shadow: 0 6px 16px rgba(30, 66, 123, 0.2); }
.sh101-card-date-badge small { color: var(--sh101-gold); font-size: 0.65rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; }
.sh101-card-date-badge strong { font-family: "Libre Bodoni", Georgia, serif; font-size: 1.6rem; font-weight: 600; line-height: 1; }

.sh101-card-host-pill { display: inline-block; padding: 0.1rem 0.45rem; border-radius: 0.25rem; background: var(--sh101-gold); color: var(--sh101-gold-deep); font-size: 0.625rem; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; margin-left: 0.25rem; }

.sh101-event-open { width: 100%; min-width: 0; border: 0; padding: 0; display: flex; flex-direction: column; gap: 0.25rem; background: transparent; color: inherit; cursor: pointer; text-align: left; }
.sh101-event-time { font-size: 0.875rem; font-weight: 700; font-variant-numeric: tabular-nums; }
.sh101-event-copy { min-width: 0; display: flex; flex-direction: column; gap: 0.25rem; }
.sh101-event-copy > strong { color: var(--sh101-blue); font-size: 1.0625rem; line-height: 1.25; text-wrap: pretty; }
.sh101-event-category { display: inline-flex; align-items: center; gap: 0.375rem; color: var(--sh101-blue-mid); font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; }
.sh101-flags { display: flex; flex-wrap: wrap; gap: 0.375rem; }
.sh101-flag { width: fit-content; border-radius: 0.25rem; padding: 0.1875rem 0.375rem; background: var(--sh101-paper); color: var(--sh101-blue-mid); font-size: 0.625rem; font-weight: 700; letter-spacing: 0.06em; line-height: 1.2; text-transform: uppercase; }
.sh101-flag.is-featured { background: var(--sh101-gold); color: var(--sh101-gold-deep); }
.sh101-flag.is-live { background: var(--sh101-danger); color: var(--sh101-card); }
.sh101-flag.is-sponsored { border: 0.0625rem solid var(--sh101-gold); background: var(--sh101-card); color: var(--sh101-gold-deep); }
.sh101-flag.is-family { background: var(--sh101-paper-strong); color: var(--sh101-blue); }
.sh101-category-dot { width: 0.5rem; height: 0.5rem; border-radius: 50%; flex: 0 0 auto; background: var(--sh101-cat-color); }
.sh101-event-meta { display: flex; flex-wrap: wrap; gap: 0.375rem 0.75rem; color: var(--sh101-blue-mid); font-size: 0.75rem; }
.sh101-event-meta > span { display: inline-flex; align-items: center; gap: 0.25rem; }
.sh101-event-meta .sh101-icon { width: 0.8125rem; height: 0.8125rem; }
.sh101-event-meta .sh101-price { color: var(--sh101-blue); font-weight: 700; }
.sh101-save { width: 2.75rem; height: 2.75rem; border: 0.0625rem solid var(--sh101-line); border-radius: calc(var(--sh101-radius) - 0.125rem); display: inline-flex; align-items: center; justify-content: center; background: var(--sh101-card); color: var(--sh101-blue-mid); cursor: pointer; }
.sh101-save:hover { border-color: var(--sh101-blue-mid); color: var(--sh101-blue); }
.sh101-save[aria-pressed="true"] { border-color: var(--sh101-blue); background: var(--sh101-blue); color: var(--sh101-card); }
.sh101-save[aria-pressed="true"] .sh101-icon { fill: currentColor; }

.sh101-today-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 1.5rem; align-items: start; }
.sh101-feature { border: 0.0625rem solid var(--sh101-line); border-radius: var(--sh101-radius-large); overflow: hidden; background: var(--sh101-card); box-shadow: var(--sh101-shadow); }
.sh101-feature > img { width: 100%; aspect-ratio: 16 / 9; max-height: 14rem; display: block; object-fit: cover; background: var(--sh101-blue); }
.sh101-feature-body { padding: 1.25rem; }
.sh101-feature-body > .sh101-event-category { margin-top: 0.75rem; }
.sh101-feature-body h3 { margin: 0.375rem 0 0.75rem; color: var(--sh101-blue); font-family: "Libre Bodoni", Georgia, serif; font-size: clamp(1.5rem, 3vw, 2rem); font-weight: 600; letter-spacing: -0.01em; line-height: 1.12; text-wrap: balance; }
.sh101-feature-meta { margin-bottom: 0.875rem; display: flex; flex-direction: column; gap: 0.5rem; color: var(--sh101-blue-mid); font-size: 0.8125rem; }
.sh101-feature-meta > span { display: flex; align-items: center; gap: 0.5rem; }
.sh101-feature-meta .sh101-price { color: var(--sh101-blue); font-weight: 700; }
.sh101-feature-desc { margin: 0 0 1rem; color: var(--sh101-blue-mid); font-size: 0.84rem; line-height: 1.45; }
.sh101-feature-actions { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; margin-top: 1rem; }
.sh101-today-side > p { margin: 0 0 0.5rem 0.25rem; color: var(--sh101-blue-mid); font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; }
.sh101-today-side .sh101-event-card { padding: 0.875rem 0.75rem; }
.sh101-today-side .sh101-event-open { grid-template-columns: 4.25rem minmax(0, 1fr); gap: 0.625rem; }
.sh101-today-side .sh101-event-meta > span:nth-child(n+2) { display: none; }
.sh101-show-more { width: 100%; min-height: 2.75rem; margin-top: 0.625rem; border: 0.0625rem solid var(--sh101-line); border-radius: var(--sh101-radius); background: var(--sh101-card); color: var(--sh101-blue); cursor: pointer; font-size: 0.75rem; font-weight: 700; }
.sh101-show-more:hover { border-color: var(--sh101-line-strong); background: var(--sh101-card-soft); }
.sh101-side-note { min-height: 12rem; border: 0.0625rem dashed var(--sh101-line-strong); border-radius: var(--sh101-radius-large); padding: 1.5rem; display: flex; flex-direction: column; align-items: center; justify-content: center; background: var(--sh101-card-soft); color: var(--sh101-blue-mid); text-align: center; }
.sh101-side-note > .sh101-icon { width: 1.75rem; height: 1.75rem; margin-bottom: 0.625rem; color: var(--sh101-blue); }
.sh101-side-note strong { color: var(--sh101-blue); font-family: "Libre Bodoni", Georgia, serif; font-size: 1.125rem; }
.sh101-side-note span { max-width: 15rem; font-size: 0.75rem; }

.sh101-cat-0 { --sh101-cat-color: #1e427b; }
.sh101-cat-1 { --sh101-cat-color: #a73729; }
.sh101-cat-2 { --sh101-cat-color: #2e6b4b; }
.sh101-cat-3 { --sh101-cat-color: #886719; }
.sh101-cat-4 { --sh101-cat-color: #6d4f85; }
.sh101-cat-5 { --sh101-cat-color: #2f7180; }
.sh101-cat-6 { --sh101-cat-color: #925234; }
.sh101-cat-7 { --sh101-cat-color: #4e667e; }

.sh101-empty, .sh101-error { min-height: 14rem; border: 0.0625rem dashed var(--sh101-line-strong); border-radius: var(--sh101-radius-large); padding: 2rem 1.5rem; display: flex; flex-direction: column; align-items: center; justify-content: center; background: var(--sh101-card-soft); color: var(--sh101-blue-mid); text-align: center; }
.sh101-empty > .sh101-icon { width: 2rem; height: 2rem; margin-bottom: 0.75rem; color: var(--sh101-blue); }
.sh101-empty h3, .sh101-error strong { margin: 0 0 0.25rem; color: var(--sh101-blue); font-family: "Libre Bodoni", Georgia, serif; font-size: 1.25rem; }
.sh101-empty p, .sh101-error p { max-width: 30rem; margin: 0; font-size: 0.875rem; }
.sh101-empty .sh101-button { margin-top: 1rem; }
.sh101-error .sh101-button { margin-top: 1rem; }
.sh101-loading { min-height: 12rem; display: flex; align-items: center; justify-content: center; gap: 0.75rem; color: var(--sh101-blue-mid); }
.sh101-loading span { width: 1.25rem; height: 1.25rem; border: 0.125rem solid var(--sh101-line); border-top-color: var(--sh101-blue); border-radius: 50%; animation: sh101-spin 700ms linear infinite; }
@keyframes sh101-spin { to { transform: rotate(360deg); } }

.sh101-nav { display: flex; gap: 0.375rem; }
.sh101-nav button { width: 2.75rem; height: 2.75rem; border: 0.0625rem solid var(--sh101-line); border-radius: calc(var(--sh101-radius) - 0.125rem); display: inline-flex; align-items: center; justify-content: center; background: var(--sh101-card); color: var(--sh101-blue); cursor: pointer; }
.sh101-nav button:hover { border-color: var(--sh101-line-strong); background: var(--sh101-card-soft); }
.sh101-week-list { border: 0.0625rem solid var(--sh101-line); border-radius: var(--sh101-radius-large); overflow: hidden; background: var(--sh101-card); box-shadow: var(--sh101-shadow); }
.sh101-week-group { display: grid; grid-template-columns: 12rem minmax(0, 1fr); }
.sh101-week-group + .sh101-week-group { border-top: 0.0625rem solid var(--sh101-line); }
.sh101-week-group > header { border-right: 0.0625rem solid var(--sh101-line); padding: 1.25rem; display: flex; flex-direction: column; justify-content: center; background: var(--sh101-card-soft); }
.sh101-week-group > header small { color: var(--sh101-blue-mid); font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; }
.sh101-week-group > header strong { font-family: "Libre Bodoni", Georgia, serif; font-size: 1.25rem; }
.sh101-week-group .sh101-event-card { box-shadow: none; }

.sh101-month { border: 0.0625rem solid var(--sh101-line-strong); border-radius: var(--sh101-radius-large); overflow: hidden; background: #ffffff; box-shadow: 0 4px 16px rgba(20, 47, 85, 0.04); }
.sh101-month-days, .sh101-month-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.sh101-month-days { border-bottom: 0.0625rem solid var(--sh101-line-strong); background: var(--sh101-paper); }
.sh101-month-days span { padding: 0.625rem 0.25rem; color: var(--sh101-blue-mid); font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.08em; text-align: center; text-transform: uppercase; }
.sh101-month-cell { min-width: 0; min-height: 7rem; border-right: 0.0625rem solid var(--sh101-line); border-bottom: 0.0625rem solid var(--sh101-line); padding: 0.45rem; background: #ffffff; transition: background 140ms ease; }
.sh101-month-cell:nth-child(7n) { border-right: 0; }
.sh101-month-cell.is-outside { background: #fafcfd; opacity: 0.6; }
.sh101-month-cell-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 0.35rem; }
.sh101-month-day-num { width: 1.75rem; height: 1.75rem; border: 0; border-radius: 50%; padding: 0; background: transparent; color: #1e427b; cursor: pointer; font-size: 0.8125rem; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; transition: all 120ms ease; }
.sh101-month-day-num:hover { background: var(--sh101-paper); color: var(--sh101-blue-deep); }
.sh101-month-cell.is-today { background: #f0f5fc; }
.sh101-month-cell.is-today .sh101-month-day-num { background: #1e427b !important; color: #ffffff !important; font-weight: 800; box-shadow: 0 2px 8px rgba(30, 66, 123, 0.3); }
.sh101-month-cell.is-today .sh101-month-count-badge { background: #1e427b; color: #ffffff; }
.sh101-month-cell.has-events .sh101-month-day-num { font-weight: 800; }
.sh101-month-count-badge { font-size: 0.625rem; font-weight: 700; color: var(--sh101-blue-deep); background: rgba(30, 66, 123, 0.1); padding: 0.1rem 0.4rem; border-radius: 0.75rem; }
.sh101-month-events { display: flex; flex-direction: column; gap: 0.25rem; }
.sh101-month-event-pill { width: 100%; border: 0; border-radius: 0.25rem; padding: 0.25rem 0.35rem; display: flex; align-items: center; gap: 0.3rem; background: #edf4f9; color: var(--sh101-blue); cursor: pointer; font-size: 0.72rem; font-weight: 600; text-align: left; transition: all 120ms ease; }
.sh101-month-event-pill:hover { background: #e0eef7; color: var(--sh101-blue-deep); }
.sh101-month-event-pill.is-featured { background: #fdf5d8; color: #7a5f14; font-weight: 700; }
.sh101-month-event-pill span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sh101-month-more { border: 0; background: transparent; color: var(--sh101-blue-mid); font-size: 0.68rem; font-weight: 700; cursor: pointer; padding: 0.15rem 0.25rem; text-align: left; }
.sh101-month-more:hover { color: var(--sh101-blue-deep); text-decoration: underline; }
.sh101-mobile-dots { display: none; }

.sh101-modal-overlay { position: fixed; inset: 0; z-index: 999999; padding: 1.5rem 1rem; display: flex; align-items: flex-start; justify-content: center; overflow-y: auto; background: rgb(15 38 71 / 58%); animation: sh101-fade 180ms ease-out; }
/* The submission layer is toggled with the `hidden` attribute; author `display: flex`
   above would otherwise defeat the UA `[hidden]` rule and the modal could never close. */
.sh101-modal-overlay[hidden] { display: none; }
@keyframes sh101-fade { from { opacity: 0; } }
.sh101-modal { position: relative; width: min(100%, 40rem); margin: auto; border-radius: var(--sh101-radius-large); overflow: hidden; background: var(--sh101-card); box-shadow: 0 1.5rem 4rem rgb(15 38 71 / 26%); animation: sh101-modal-enter 220ms cubic-bezier(0.16, 1, 0.3, 1); }
@keyframes sh101-modal-enter { from { opacity: 0; transform: translateY(0.75rem); } }
.sh101-modal-close { position: absolute; top: 0.75rem; right: 0.75rem; z-index: 2; width: 2.75rem; height: 2.75rem; border: 0.0625rem solid var(--sh101-line); border-radius: calc(var(--sh101-radius) - 0.125rem); display: inline-flex; align-items: center; justify-content: center; background: rgb(255 255 255 / 94%); color: var(--sh101-blue); cursor: pointer; }
.sh101-modal > img { width: 100%; aspect-ratio: 16 / 9; max-height: 16rem; display: block; object-fit: cover; }
.sh101-poster { min-height: 16rem; padding: 2rem; display: flex; flex-direction: column; justify-content: space-between; background: var(--sh101-cat-color); color: var(--sh101-card); }
.sh101-poster small { color: var(--sh101-gold); font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; }
.sh101-poster strong { max-width: 16ch; font-family: "Libre Bodoni", Georgia, serif; font-size: clamp(2rem, 7vw, 3rem); line-height: 1.05; text-wrap: balance; }
.sh101-poster span { border-top: 0.0625rem solid rgb(255 255 255 / 38%); padding-top: 0.75rem; font-size: 0.8125rem; font-weight: 600; }
.sh101-modal-body { padding: 1.5rem; }
.sh101-modal-body h2 { margin: 0.5rem 0 0.75rem; color: var(--sh101-blue); font-family: "Libre Bodoni", Georgia, serif; font-size: clamp(1.75rem, 5vw, 2.5rem); font-weight: 600; line-height: 1.08; text-wrap: balance; }
.sh101-modal-body > p { margin: 0 0 1.25rem; color: var(--sh101-blue-mid); white-space: pre-line; }
.sh101-modal-body > .sh101-modal-date { display: flex; align-items: center; gap: 0.375rem; font-size: 0.8125rem; font-variant-numeric: tabular-nums; }
.sh101-modal-date .sh101-icon { width: 0.875rem; height: 0.875rem; }
.sh101-detail-grid { margin-bottom: 1.25rem; border: 0.0625rem solid var(--sh101-line); border-radius: var(--sh101-radius); display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); overflow: hidden; }
.sh101-detail-grid > div { padding: 0.75rem; display: flex; flex-direction: column; gap: 0.1875rem; border-right: 0.0625rem solid var(--sh101-line); border-bottom: 0.0625rem solid var(--sh101-line); }
.sh101-detail-grid > div:nth-child(2n) { border-right: 0; }
.sh101-detail-grid small { color: var(--sh101-blue-mid); font-size: 0.625rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; }
.sh101-detail-grid strong { font-size: 0.875rem; font-weight: 600; }
.sh101-modal-actions { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.sh101-modal-actions .sh101-button { flex: 1 1 10rem; }
.sh101-social { margin-top: 0.75rem; border: 0.0625rem solid var(--sh101-line); border-radius: var(--sh101-radius); padding: 0.625rem; display: flex; align-items: center; flex-wrap: wrap; gap: 0.375rem; background: var(--sh101-card-soft); }
.sh101-social > span { margin-right: auto; color: var(--sh101-blue-mid); font-size: 0.625rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.sh101-social a, .sh101-social button { min-height: 2.5rem; border: 0.0625rem solid var(--sh101-line); border-radius: calc(var(--sh101-radius) - 0.125rem); padding: 0.5rem 0.625rem; display: inline-flex; align-items: center; background: var(--sh101-card); color: var(--sh101-blue); cursor: pointer; font: 700 0.6875rem/1 Inter, sans-serif; text-decoration: none; transition: background 140ms ease-out, border-color 140ms ease-out, transform 100ms ease-out; }
.sh101-social a:hover, .sh101-social button:hover { border-color: var(--sh101-line-strong); background: var(--sh101-paper); }
.sh101-social a:active, .sh101-social button:active { transform: scale(0.96); }
.sh101-tags { margin: -0.5rem 0 1.25rem; display: flex; flex-wrap: wrap; gap: 0.375rem; }
.sh101-tags span { border: 0.0625rem solid var(--sh101-line); border-radius: 0.25rem; padding: 0.1875rem 0.5rem; background: var(--sh101-card-soft); color: var(--sh101-blue-mid); font-size: 0.6875rem; font-weight: 600; }
.sh101-sponsor { margin-top: 1.25rem; border-top: 0.0625rem solid var(--sh101-line); padding-top: 1rem; display: flex; align-items: center; gap: 0.625rem; font-size: 0.8125rem; }
.sh101-sponsor small { border-radius: 0.25rem; padding: 0.1875rem 0.375rem; background: var(--sh101-gold); color: var(--sh101-gold-deep); font-size: 0.5625rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.sh101-sponsor a { display: inline-flex; align-items: center; gap: 0.25rem; color: var(--sh101-blue); font-weight: 700; text-decoration: none; }
.sh101-sponsor .sh101-icon { width: 0.875rem; height: 0.875rem; }
.sh101-related { margin-top: 1.25rem; border-top: 0.0625rem solid var(--sh101-line); padding-top: 1rem; }
.sh101-related h3 { margin: 0 0 0.625rem; color: var(--sh101-blue-mid); font-size: 0.625rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; }
.sh101-related > div { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.5rem; }
.sh101-related button { min-width: 0; min-height: 6.5rem; border: 0.0625rem solid var(--sh101-line); border-radius: var(--sh101-radius); padding: 0.75rem; display: flex; flex-direction: column; align-items: flex-start; gap: 0.25rem; background: var(--sh101-card); color: var(--sh101-blue); cursor: pointer; text-align: left; }
.sh101-related button:hover { border-color: var(--sh101-line-strong); background: var(--sh101-card-soft); }
.sh101-related button > span { display: flex; align-items: center; gap: 0.25rem; color: var(--sh101-blue-mid); font-size: 0.5625rem; font-weight: 700; text-transform: uppercase; }
.sh101-related button > strong { font-size: 0.75rem; line-height: 1.3; text-wrap: pretty; }
.sh101-related button > small { margin-top: auto; color: var(--sh101-blue-mid); font-size: 0.625rem; }

.sh101-promos { margin-top: 4rem; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.875rem; }
.sh101-promos.is-single { grid-template-columns: minmax(0, 1fr); }
.sh101-promo { border: 0.0625rem solid var(--sh101-line); border-radius: var(--sh101-radius-large); padding: 1.5rem; background: var(--sh101-card); }
.sh101-promo.is-ink { border-color: var(--sh101-blue); background: var(--sh101-blue); color: var(--sh101-card); }
.sh101-promo > small { color: var(--sh101-blue-mid); font-size: 0.625rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; }
.sh101-promo.is-ink > small { color: var(--sh101-gold); }
.sh101-promo h2 { margin: 0.375rem 0 0.5rem; color: var(--sh101-blue); font-family: "Libre Bodoni", Georgia, serif; font-size: 1.5rem; font-weight: 600; line-height: 1.12; }
.sh101-promo.is-ink h2 { color: var(--sh101-card); }
.sh101-promo p { max-width: 34rem; margin: 0 0 1rem; color: var(--sh101-blue-mid); font-size: 0.8125rem; text-wrap: pretty; }
.sh101-promo.is-ink p { color: rgb(255 255 255 / 78%); }

.sh101-compact { border: 0.0625rem solid var(--sh101-line); border-radius: var(--sh101-radius-large); overflow: hidden; background: var(--sh101-card); box-shadow: var(--sh101-shadow); }
.sh101-compact > header { padding: 1rem; display: flex; align-items: flex-end; justify-content: space-between; gap: 0.75rem; border-bottom: 0.0625rem solid var(--sh101-line); }
.sh101-compact header h2 { margin: 0; color: var(--sh101-blue); font-family: "Libre Bodoni", Georgia, serif; font-size: 1.375rem; font-weight: 600; line-height: 1.1; }
.sh101-compact > header > span { color: var(--sh101-blue-mid); font-size: 0.75rem; white-space: nowrap; }
.sh101-compact-row { width: 100%; min-height: 4.75rem; border: 0; border-bottom: 0.0625rem solid var(--sh101-line); padding: 0.75rem 1rem; display: grid; grid-template-columns: 2.75rem minmax(0, 1fr); gap: 0.75rem; align-items: center; background: var(--sh101-card); color: var(--sh101-blue); cursor: pointer; text-align: left; }
.sh101-compact-row:hover { background: var(--sh101-card-soft); }
.sh101-compact-row.is-featured { box-shadow: inset 0.25rem 0 var(--sh101-gold); background: color-mix(in srgb, var(--sh101-gold) 12%, var(--sh101-card)); }
.sh101-date-block { min-height: 2.75rem; border: 0.0625rem solid var(--sh101-line); border-radius: calc(var(--sh101-radius) - 0.125rem); display: flex; flex-direction: column; align-items: center; justify-content: center; font-variant-numeric: tabular-nums; }
.sh101-date-block small { color: var(--sh101-blue-mid); font-size: 0.5625rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.sh101-date-block strong { font-size: 1.0625rem; line-height: 1; }
.sh101-compact-detail { min-width: 0; display: flex; flex-direction: column; }
.sh101-compact-detail small { display: flex; align-items: center; gap: 0.25rem; color: var(--sh101-blue-mid); font-size: 0.625rem; font-weight: 600; }
.sh101-compact-detail strong { overflow: hidden; color: var(--sh101-blue); font-size: 0.875rem; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
.sh101-compact-detail > span { overflow: hidden; color: var(--sh101-blue-mid); font-size: 0.6875rem; text-overflow: ellipsis; white-space: nowrap; }
.sh101-compact footer { padding: 0.75rem 1rem; display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; background: var(--sh101-card-soft); color: var(--sh101-blue-mid); font-size: 0.6875rem; }
.sh101-compact footer a { min-height: 2.75rem; display: inline-flex; align-items: center; gap: 0.375rem; color: var(--sh101-blue); font-weight: 700; text-decoration: none; }
.sh101-compact footer .sh101-icon { width: 0.875rem; height: 0.875rem; }
.sh101-homepage { --sh101-homepage-bg: #eaf4f8; --sh101-homepage-card: #ffffff; --sh101-homepage-line: #c9dee9; --sh101-homepage-line-strong: #afcbe0; --sh101-homepage-gold: #f8de9c; --sh101-homepage-gold-ink: #72570b; background: var(--sh101-homepage-bg); color: var(--sh101-blue); padding: clamp(4rem, 8vw, 7rem) 0; font-family: "Source Sans 3", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
.sh101-homepage *, .sh101-homepage *::before, .sh101-homepage *::after { box-sizing: border-box; }
.sh101-homepage-head { display: flex; align-items: end; justify-content: space-between; gap: 2rem; margin-bottom: 2.5rem; max-width: 86rem; margin-inline: auto; padding-inline: clamp(1rem, 3vw, 3rem); }
.sh101-homepage-head h2 { margin: 0; color: var(--sh101-blue); font-family: "Source Serif 4", Georgia, serif; font-size: clamp(2.5rem, 4.8vw, 3.5rem); font-weight: 600; letter-spacing: -0.03em; line-height: 0.98; }
.sh101-homepage-list { max-width: 86rem; margin-inline: auto; padding-inline: clamp(1rem, 3vw, 3rem); }
.sh101-homepage-list ul { list-style: none; margin: 0; padding: 0; border: 0.0625rem solid var(--sh101-homepage-line); background: var(--sh101-homepage-card); }
.sh101-homepage-list li + li { border-top: 0.0625rem solid var(--sh101-homepage-line); }
.sh101-homepage-row { display: grid; grid-template-columns: 5rem minmax(0, 1fr) minmax(8rem, auto) 1.5rem; align-items: center; gap: clamp(1rem, 3vw, 2.5rem); min-height: 8rem; padding: 1.25rem clamp(1rem, 3vw, 2rem); text-decoration: none; color: var(--sh101-blue); transition: background-color 160ms ease-out, transform 120ms ease-out; }
.sh101-homepage-row:hover { background: #f6fbfd; }
.sh101-homepage-row:active { transform: scale(0.99); }
.sh101-homepage-row.is-featured { box-shadow: inset 0.25rem 0 var(--sh101-homepage-gold); }
.sh101-homepage-date { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 5rem; height: 5rem; background: var(--sh101-homepage-gold); color: var(--sh101-blue); }
.sh101-homepage-date span:first-child { font-size: 0.625rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; }
.sh101-homepage-date span:last-child { font-family: "Source Serif 4", Georgia, serif; font-size: 2.25rem; font-variant-numeric: tabular-nums; font-weight: 600; line-height: 1; }
.sh101-homepage-detail { min-width: 0; }
.sh101-homepage-type { display: block; color: var(--sh101-homepage-gold-ink); font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; }
.sh101-homepage-detail h3 { margin: 0.25rem 0 0; color: var(--sh101-blue); font-family: "Source Serif 4", Georgia, serif; font-size: clamp(1.25rem, 2.2vw, 1.85rem); font-weight: 600; letter-spacing: -0.025em; line-height: 1.08; }
.sh101-homepage-meta { display: block; margin-top: 0.5rem; color: var(--sh101-blue-mid); font-size: 0.8125rem; }
.sh101-homepage-venue { color: var(--sh101-blue-mid); font-size: 0.8125rem; font-weight: 600; text-align: right; white-space: nowrap; }
.sh101-homepage-row .sh101-icon { color: var(--sh101-blue-mid); }
.sh101-homepage .sh101-empty, .sh101-homepage .sh101-error { min-height: 19rem; background: var(--sh101-homepage-card); border-style: solid; }

.sh101-embed-page { margin: 0; background: transparent; }

@media (max-width: 60rem) {
  .sh101-today-grid { grid-template-columns: minmax(0, 1fr); }
  .sh101-today-side .sh101-event-open { grid-template-columns: 5.5rem minmax(0, 1fr); }
  .sh101-today-side .sh101-event-meta > span:nth-child(n+2) { display: inline-flex; }
}

@media (max-width: 47.9375rem) {
  .sh101-shell { padding: 1rem 0.875rem 2rem; border-radius: 0; border: none; box-shadow: none; background: #ffffff; }
  .sh101-masthead { border-radius: 0; margin: -1rem -0.875rem 1.25rem -0.875rem; padding: 1.25rem 1rem; border-left: 0; border-right: 0; text-align: left; }
  .sh101-controls-bar { padding: 0.5rem 0.75rem; border-radius: 0.5rem; }
  .sh101-masthead h1, .sh101-masthead h2 { font-size: 1.5rem; margin-block: 0.2rem; }
  .sh101-masthead p { margin: 0; font-size: 0.78rem; }
  .sh101-filter-card { padding: 0.75rem; margin-bottom: 1rem; gap: 0.5rem; }
  .sh101-filter-primary { gap: 0.4rem; }
  .sh101-search-box { flex: 1 1 100%; }
  .sh101-search-box input { min-height: 2.5rem; font-size: 0.84rem; padding-left: 2.4rem; }
  .sh101-select-group { flex: 1 1 100%; gap: 0.35rem; }
  .sh101-select-group select { min-height: 2.5rem; font-size: 0.78rem; padding-block: 0.35rem; }
  .sh101-quick-pills-row { padding-top: 0.5rem; gap: 0.5rem; }
  .sh101-pills-label { display: none; }
  .sh101-chips { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
  .sh101-chips button { min-height: 2rem; padding: 0.3rem 0.65rem; font-size: 0.75rem; }
  .sh101-summary { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-bottom: 1rem; gap: 0.5rem; }
  .sh101-stat { padding: 0.5rem 0.75rem; min-height: 3rem; }
  .sh101-stat strong { font-size: 1.1rem; }
  .sh101-next-up { grid-column: 1 / -1; padding: 0.5rem 0.75rem; }
  .sh101-tabs { width: 100%; margin-bottom: 1rem; }
  .sh101-tabs button { min-height: 2.35rem; padding: 0.35rem; font-size: 0.78rem; }
  .sh101-daystrip { gap: 0.25rem; margin-bottom: 1rem; }
  .sh101-day { min-height: 3.5rem; padding: 0.35rem 0.125rem; }
  .sh101-day strong { font-size: 1rem; }
  .sh101-feature > img { max-height: 10rem; }
  .sh101-feature-body { padding: 0.95rem; }
  .sh101-feature-body h3 { font-size: 1.25rem; margin-bottom: 0.5rem; }
  .sh101-event-card { grid-template-columns: 3.5rem minmax(0, 1fr) auto; gap: 0.625rem; padding: 0.75rem 0.85rem; }
  .sh101-card-date-badge { width: 3.5rem; height: 3.5rem; }
  .sh101-card-date-badge strong { font-size: 1.3rem; }
  .sh101-event-open { gap: 0.15rem; }
  .sh101-event-copy > strong { font-size: 0.95rem; }
  .sh101-toolbar { flex-direction: column; }
  .sh101-toolbar .sh101-button { width: 100%; }
  .sh101-filter-row { align-items: center; }
  .sh101-stale-note { align-items: flex-start; flex-direction: column; gap: 0.125rem; }
  .sh101-event-meta span:nth-child(n+2) { display: none; }
  .sh101-week-group { grid-template-columns: 1fr; }
  .sh101-week-group > header { border-right: 0; border-bottom: 0.0625rem solid var(--sh101-line); padding: 0.75rem 1rem; flex-direction: row; align-items: baseline; justify-content: space-between; }
  .sh101-month-cell { min-height: 4rem; padding: 0.25rem; }
  .sh101-month-events { display: none; }
  .sh101-mobile-dots { display: flex; flex-wrap: wrap; gap: 0.2rem; padding: 0.2rem 0.1rem 0; cursor: pointer; }
  .sh101-mobile-dots .sh101-category-dot { width: 0.45rem; height: 0.45rem; }
  .sh101-modal-overlay { padding: 0; }
  .sh101-modal { min-height: 100%; border-radius: 0; }
  .sh101-modal-body { padding: 1.25rem 1rem; }
  .sh101-detail-grid { grid-template-columns: 1fr; }
  .sh101-detail-grid > div { border-right: 0; }
  .sh101-modal-actions { flex-direction: column; }
  .sh101-modal-actions .sh101-button { width: 100%; flex-basis: auto; }
}

/* WeGoOtsego redirect cards */
.sh101-wego-redirect {
  --sh101-navy: #1e427b;
  --sh101-muted: #426f96;
  --sh101-border: #c9dee9;
  --sh101-paper: #ffffff;
  --sh101-soft: #f6fbfd;
  max-width: 96rem;
  margin: 2rem auto 0;
  padding: 0 0 2rem;
  color: var(--sh101-navy);
}

.sh101-wego-redirect__card {
  border: 0.0625rem solid var(--sh101-border);
  border-radius: 0.875rem;
  padding: clamp(1.25rem, 3vw, 2rem);
  background: var(--sh101-paper);
  box-shadow: 0 0.625rem 1.875rem rgb(20 47 85 / 6%);
}

.sh101-wego-redirect__heading {
  max-width: 42rem;
  margin: 0 0 1.25rem;
  padding-bottom: 1rem;
  border-bottom: 0.0625rem solid var(--sh101-border);
}

.sh101-wego-redirect h2 {
  margin: 0 0 0.5rem;
  color: var(--sh101-navy);
  font-family: "Libre Bodoni", Georgia, serif;
  font-size: clamp(1.5rem, 4vw, 2rem);
  line-height: 1.1;
}

.sh101-wego-redirect p {
  max-width: 42rem;
  margin: 0;
  color: var(--sh101-muted);
  font-size: 0.875rem;
  line-height: 1.55;
}

.sh101-wego-redirect__links {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.75rem;
}

.sh101-wego-redirect__links a {
  min-height: 10rem;
  display: flex;
  flex-direction: column;
  padding: 1.15rem;
  border: 0.0625rem solid var(--sh101-border);
  border-radius: 0.625rem;
  background: var(--sh101-soft);
  color: var(--sh101-navy);
  text-decoration: none;
  transition: border-color 140ms ease-out, background 140ms ease-out, transform 120ms ease-out;
}

.sh101-wego-redirect__links a:hover,
.sh101-wego-redirect__links a:focus-visible {
  border-color: var(--sh101-navy);
  background: var(--sh101-paper);
}

.sh101-wego-redirect__links a:active {
  transform: scale(0.98);
}

.sh101-wego-redirect__links a:focus-visible {
  outline: 0.1875rem solid var(--sh101-navy);
  outline-offset: 0.125rem;
}

.sh101-wego-redirect__links strong {
  display: block;
  color: var(--sh101-navy);
  font-family: "Libre Bodoni", Georgia, serif;
  font-size: 1.18rem;
  font-weight: 600;
  line-height: 1.12;
}

.sh101-wego-redirect__links p {
  margin: 0.6rem 0 1rem;
  color: var(--sh101-muted);
  font-size: 0.78rem;
  line-height: 1.45;
}

.sh101-wego-redirect__links span {
  display: flex;
  align-items: center;
  gap: 0.3rem;
  margin-top: auto;
  color: var(--sh101-navy);
  font-size: 0.68rem;
  font-weight: 700;
}

.sh101-wego-redirect__links span::after {
  content: "↗";
  color: #7a5f14;
  font-size: 0.9rem;
}

.sh101-wego-redirect__note {
  margin-top: 1rem !important;
  color: var(--sh101-muted) !important;
  font-size: 0.72rem !important;
}

@media (max-width: 47.9375rem) {
  .sh101-wego-redirect {
    padding: 0;
    margin-top: 1.5rem;
  }

  .sh101-wego-redirect__card {
    border-radius: 0;
    border-left: 0;
    border-right: 0;
    box-shadow: none;
  }

  .sh101-wego-redirect__links {
    grid-template-columns: 1fr;
  }

  .sh101-wego-redirect__links a {
    min-height: auto;
  }
}

@media (prefers-reduced-motion: reduce) {
  .sh101-wego-redirect__links a {
    transition-duration: 0.001ms;
  }
}

@media (max-width: 47.9375rem) {
  .sh101-social > span { width: 100%; margin: 0 0 0.25rem; }
  .sh101-social a, .sh101-social button { flex: 1 1 calc(50% - 0.375rem); justify-content: center; }
  .sh101-related > div { display: flex; overflow-x: auto; }
  .sh101-related button { flex: 0 0 11rem; }
  .sh101-promos { margin-top: 3rem; grid-template-columns: 1fr; }
  .sh101-promo .sh101-button { width: 100%; }
  .sh101-feature-actions { align-items: stretch; flex-direction: column; }
  .sh101-feature-actions .sh101-button { width: 100%; }
  .sh101-feature-actions .sh101-save { width: 100%; }
}

@media (max-width: 22rem) {
  .sh101-shell { padding-inline: 0.75rem; }
  .sh101-section-head { align-items: flex-start; flex-direction: column; }
  .sh101-summary { grid-template-columns: 1fr; }
  .sh101-next-up { grid-column: auto; }
  .sh101-next-up > span:not(.sh101-live-dot) { grid-template-columns: minmax(0, 1fr); }
  .sh101-next-up em { display: none; }
  .sh101-daystrip-head { align-items: flex-start; flex-direction: column; }
  .sh101-day small { font-size: 0.5625rem; letter-spacing: 0; }
  .sh101-event-card { gap: 0.375rem; padding-inline: 0.5rem; }
  .sh101-compact footer > span { display: none; }
  .sh101-compact footer { justify-content: flex-end; }
}

@media (max-width: 47.9375rem) {
  .sh101-homepage { padding: clamp(2.5rem, 6vw, 4rem) 0; }
  .sh101-homepage-head { align-items: stretch; flex-direction: column; }
  .sh101-homepage-head h2 { font-size: clamp(2.4rem, 12vw, 3rem); }
  .sh101-homepage-head .sh101-button { width: 100%; }
  .sh101-homepage-row { grid-template-columns: 3.75rem minmax(0, 1fr); align-items: start; gap: 0.75rem; min-height: 7.25rem; padding: 1rem; }
  .sh101-homepage-date { width: 3.75rem; height: 3.75rem; }
  .sh101-homepage-date span:last-child { font-size: 1.6rem; }
  .sh101-homepage-detail h3 { font-size: 1.25rem; }
  .sh101-homepage-venue, .sh101-homepage-row .sh101-icon { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .sh101-events *, .sh101-events *::before, .sh101-events *::after { animation-duration: 0.001ms !important; transition-duration: 0.001ms !important; scroll-behavior: auto !important; }
}

/* ---- Inline event submission form ---- */
/* The submission overlay mounts on <body>, outside .sh101-events scope, so it
   re-declares the design tokens and base typography itself. */
body > .sh101-modal-overlay {
  --sh101-blue: #1e427b;
  --sh101-blue-deep: #16315b;
  --sh101-blue-mid: #426f96;
  --sh101-gold: #f8de9c;
  --sh101-gold-deep: #7a5f14;
  --sh101-paper: #eaf4f8;
  --sh101-paper-strong: #ddeef5;
  --sh101-card: #ffffff;
  --sh101-card-soft: #f6fbfd;
  --sh101-line: #c9dee9;
  --sh101-line-strong: #afcbe0;
  --sh101-danger: #a73729;
  --sh101-radius: 0.625rem;
  --sh101-radius-large: 0.875rem;
  color: var(--sh101-blue);
  font: 400 1rem/1.55 Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  text-align: left;
  box-sizing: border-box;
}
body > .sh101-modal-overlay *, body > .sh101-modal-overlay *::before, body > .sh101-modal-overlay *::after { box-sizing: border-box; }
body > .sh101-modal-overlay button { font: inherit; }
body > .sh101-modal-overlay button:focus-visible, body > .sh101-modal-overlay a:focus-visible, body > .sh101-modal-overlay input:focus-visible, body > .sh101-modal-overlay textarea:focus-visible, body > .sh101-modal-overlay select:focus-visible { outline: 0.1875rem solid var(--sh101-blue); outline-offset: 0.125rem; }
body > .sh101-modal-overlay .sh101-icon { width: 1.125rem; height: 1.125rem; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
/* The submission modal scrolls; keep its close control pinned to the CARD
   (sticky within the modal's scroll box) so it is reachable at any scroll
   position and visually attached to the card on every viewport width. */
body > .sh101-modal-overlay .sh101-submit-modal { display: flex; flex-direction: column; }
body > .sh101-modal-overlay .sh101-modal-close { position: sticky; top: 0.5rem; margin-left: auto; margin-right: 0.5rem; z-index: 3; width: 2.75rem; height: 2.75rem; flex: 0 0 auto; border: 0.0625rem solid var(--sh101-line); border-radius: calc(var(--sh101-radius) - 0.125rem); display: inline-flex; align-items: center; justify-content: center; background: rgb(255 255 255 / 94%); color: var(--sh101-blue); cursor: pointer; }
body > .sh101-modal-overlay .sh101-modal-close:hover { background: #ffffff; color: var(--sh101-blue-deep); }
body > .sh101-modal-overlay label.sh101-form-check { display: flex; align-items: center; gap: 0.5rem; font-weight: 400; }
body > .sh101-modal-overlay label.sh101-form-check input { width: auto; }
.sh101-masthead { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.sh101-masthead-actions { flex: 0 0 auto; margin-top: 0.35rem; }
.sh101-submit-modal { max-width: 640px; max-height: 90vh; overflow-y: auto; }
.sh101-submit-body { position: relative; padding: 1.5rem; }
.sh101-submit-note { color: #555; font-size: .95rem; }
.sh101-submit-modal form { display: grid; gap: .85rem; margin-top: 1rem; }
.sh101-submit-modal label { display: grid; gap: .3rem; font-size: .9rem; font-weight: 600; color: #1c1c1c; }
.sh101-submit-modal input, .sh101-submit-modal textarea, .sh101-submit-modal select { font: inherit; font-weight: 400; padding: .55rem .7rem; border: 1px solid #c9c9c9; border-radius: 8px; width: 100%; box-sizing: border-box; background: #fff; color: #111; }
.sh101-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: .85rem; }
@media (max-width: 560px) { .sh101-form-row { grid-template-columns: 1fr; } }
.sh101-form-check { display: flex; align-items: center; gap: .5rem; font-weight: 400; }
.sh101-form-check input { width: auto; }
.sh101-form-dates { border: 1px solid #e2e2e2; border-radius: 8px; padding: .85rem; display: grid; gap: .6rem; }
.sh101-form-dates legend { font-weight: 600; font-size: .9rem; padding: 0 .3rem; }
.sh101-date-row { display: grid; grid-template-columns: 1.4fr 1fr auto auto; gap: .5rem; align-items: end; }
.sh101-date-row .sh101-form-check { padding-bottom: .55rem; }
.sh101-date-remove { border: 1px solid #dcdcdc; background: #fff; border-radius: 6px; width: 2.2rem; height: 2.45rem; cursor: pointer; color: #666; }
.sh101-date-remove:hover { background: #f5f5f5; color: #a00; }
@media (max-width: 560px) { .sh101-date-row { grid-template-columns: 1fr 1fr; } }
.sh101-turnstile { min-height: 65px; }
.sh101-submit-status { min-height: 1.2rem; margin: 0; font-size: .9rem; }
.sh101-submit-status:not(:empty) { padding: .5rem .75rem; background: #f2f6ff; border-radius: 6px; }
.sh101-submit-actions { display: flex; gap: .6rem; flex-wrap: wrap; }
