.sa-availability{scroll-margin-top:100px;color:var(--sa-ink,#000)}
.sa-availability [hidden]{display:none!important}
.sa-availability-intro{max-width:45rem}
.sa-availability-overview{display:flex;align-items:center;flex-wrap:wrap;gap:22px 42px;margin:30px 0;padding:24px 0;border-top:1px solid var(--sa-line,#ddd);border-bottom:1px solid var(--sa-line,#ddd)}
.sa-availability-overview>p{display:flex;align-items:center;gap:12px;margin:0;font-size:15px;line-height:1.5}
.sa-availability-overview strong{font:700 44px/1 var(--sa-font-body,Arial,sans-serif);letter-spacing:-.04em}
.sa-availability-overview .sa-availability-date{margin-left:auto;display:block;font-size:13px}
.sa-availability-date time{display:block;font-weight:700;font-size:15px}
.sa-availability .sa-status-open{--seat-color:#15803d;--seat-soft:#ecf9ef;--seat-ink:#13572c}
.sa-availability .sa-status-filling{--seat-color:#eab308;--seat-soft:#fff9dc;--seat-ink:#685100}
.sa-availability .sa-status-limited{--seat-color:#ea580c;--seat-soft:#fff0e1;--seat-ink:#8a3509}
.sa-availability .sa-status-full{--seat-color:#c91924;--seat-soft:#ffedef;--seat-ink:#a11621}
.sa-availability-legend{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 20px;margin:0 0 26px}
.sa-legend-item{display:flex;gap:9px;align-items:center;font-size:14px;line-height:1.5}
.sa-availability-dot{width:14px;height:14px;border-radius:50%;background:var(--seat-color);box-shadow:0 0 0 1px #0002;flex-shrink:0}
.sa-legend-item strong,.sa-legend-item small{display:block}.sa-legend-item small{font-size:12px}
.sa-availability-controls{display:flex;align-items:flex-end;gap:20px 30px;flex-wrap:wrap;padding:20px;background:var(--sa-soft,#f5f5f5);border:1px solid var(--sa-line,#ddd);border-radius:6px}
.sa-availability-controls>div{min-width:220px;flex:1}.sa-availability-controls label{font-size:14px;font-weight:700;line-height:1.5}
.sa-availability-controls select{box-sizing:border-box;display:block;width:100%;min-height:48px;margin-top:8px;padding:10px;border:1px solid #888;border-radius:4px;font-size:16px;color:var(--sa-ink,#000);background:var(--sa-paper,#fff)}
.sa-availability .sa-availability-check{display:flex;align-items:center;gap:10px;min-height:48px;cursor:pointer}
.sa-availability-check input{width:20px;height:20px;flex-shrink:0;accent-color:#c91924}
.sa-availability :is(a,select,input):focus-visible{outline:3px solid var(--sa-focus,#16648c);outline-offset:4px}
.sa-availability-count{font-size:13px;line-height:1.5;margin:18px 0 14px}
.sa-availability-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.sa-availability .sa-grade-card{box-sizing:border-box;min-width:0;border:1px solid var(--seat-color);border-top:7px solid var(--seat-color);border-radius:7px;background:var(--seat-soft);padding:20px;display:flex;flex-direction:column;color:#151515}
.sa-grade-heading{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px}
.sa-availability .sa-grade-heading h3{color:#151515;font:700 25px/1.2 var(--sa-font-body,Arial,sans-serif);margin:0;letter-spacing:-.02em}
.sa-grade-heading>span{font-size:12px;border:1px solid currentColor;border-radius:4px;padding:3px 6px;white-space:nowrap}
.sa-availability .sa-grade-class{font-size:12px;margin:7px 0 20px;color:inherit}
.sa-availability .sa-grade-status{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:700;color:var(--seat-ink);margin:0 0 6px;line-height:1.4}
.sa-grade-indicator{width:9px;height:9px;flex-shrink:0;background:var(--seat-color);border-radius:50%}
.sa-availability .sa-grade-seats{font-size:23px;line-height:1.3;font-weight:700;margin:0 0 6px;color:inherit;letter-spacing:-.025em}
.sa-availability .sa-grade-enrollment{font-size:13px;margin:0 0 12px;color:inherit}
.sa-grade-meter{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:3px;margin:0 0 20px}
.sa-grade-meter>span{height:9px;border:1px solid var(--seat-color);border-radius:2px;background:transparent}
.sa-grade-meter>span.is-filled{background:var(--seat-color)}
.sa-availability .sa-grade-card>a{margin-top:auto;padding:12px 0 0;border-top:1px solid #0002;color:inherit;font-size:13px;font-weight:700;line-height:1.5;min-height:44px;display:flex;gap:8px;align-items:center;text-underline-offset:3px}
.sa-availability-notes{margin-top:24px}.sa-availability-notes p,.sa-availability-empty{font-size:14px;line-height:1.65}
html[data-theme=dark] .sa-availability .sa-status-open{--seat-soft:#102d1c;--seat-ink:#9fe2b6;--seat-color:#39a663}
html[data-theme=dark] .sa-availability .sa-status-filling{--seat-soft:#30290c;--seat-ink:#f4dc77}
html[data-theme=dark] .sa-availability .sa-status-limited{--seat-soft:#36200f;--seat-ink:#ffc193;--seat-color:#f58335}
html[data-theme=dark] .sa-availability .sa-status-full{--seat-soft:#38131b;--seat-ink:#ffc1c7;--seat-color:#e65060}
html[data-theme=dark] .sa-availability .sa-grade-card,html[data-theme=dark] .sa-availability .sa-grade-heading h3{color:#fff;background:var(--seat-soft)}
html[data-theme=dark] .sa-availability .sa-grade-card>a{border-top-color:#ffffff40;color:#fff}
html[data-theme=dark] .sa-availability-controls select{color-scheme:dark}
@media(max-width:1050px){.sa-availability-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.sa-availability-overview .sa-availability-date{margin-left:0}}
@media(max-width:760px){.sa-availability-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.sa-availability-legend{grid-template-columns:repeat(2,minmax(0,1fr))}.sa-availability .sa-grade-card{padding:16px}.sa-availability-overview{gap:20px}.sa-availability-overview .sa-availability-date{flex-basis:100%}.sa-availability-overview strong{font-size:36px}}
@media(max-width:480px){.sa-availability-grid{gap:12px}.sa-availability .sa-grade-heading h3{font-size:20px}.sa-availability .sa-grade-seats{font-size:21px}.sa-availability .sa-grade-card{padding:12px}.sa-grade-heading{align-items:flex-start;flex-direction:column}.sa-availability-controls{padding:16px}.sa-availability-controls>div{min-width:0;width:100%;flex-basis:100%}.sa-availability-overview>p{font-size:13px;gap:8px}.sa-availability-overview{gap:20px 26px}.sa-grade-meter{gap:2px}.sa-availability .sa-grade-status{font-size:12px}.sa-availability .sa-grade-card>a{font-size:12px}}
@media(max-width:350px){.sa-availability-grid{grid-template-columns:minmax(0,1fr)}.sa-grade-heading{flex-direction:row;align-items:center}.sa-availability .sa-grade-card{padding:20px}.sa-availability .sa-grade-heading h3{font-size:25px}}
