@font-face{font-family:Montserrat;src:url('/assets/font-0f7b311b2f3279e4.ttf') format('truetype');font-style:normal;font-weight:100 900;font-display:swap}
:root{font-family:Montserrat,sans-serif;color:#211d24;background:#f7f6f9;font-size:16px;line-height:1.55;font-synthesis:none;text-rendering:optimizeLegibility;--ink:#211d24;--muted:#6e6674;--paper:#fff;--canvas:#f7f6f9;--line:#e5e0e9;--purple:#542cc6;--purple-dark:#42209f;--purple-soft:#f0ebf8;--green:#246644;--green-soft:#edf6f0;--amber:#795800;--amber-soft:#fff6dd;--red:#a12835;--red-soft:#fbefef;--shadow:0 10px 28px rgba(30,20,42,.08)}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{min-width:320px;scroll-behavior:auto}
body{margin:0;min-width:320px;min-height:100vh;background:var(--canvas);color:var(--ink)}
button,input,select{font:inherit}
button{cursor:pointer}
button:disabled{cursor:not-allowed;opacity:.55}
a{color:var(--purple-dark)}
:focus-visible{outline:3px solid var(--purple);outline-offset:3px}
.ui-skip{position:absolute;inset-block-start:-5rem;inset-inline-start:1rem;z-index:10;padding:.6rem 1rem;background:#fff;border-radius:.35rem;color:var(--purple-dark)}
.ui-skip:focus{inset-block-start:1rem}
.ui-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem clamp(1rem,3vw,2.5rem);background:#211d24;color:#fff;min-block-size:4.75rem}
.ui-header__brand{display:flex;align-items:center;gap:1rem;min-inline-size:0}
.ui-header__brand img{display:block;inline-size:clamp(6rem,12vw,8.5rem);block-size:auto;aspect-ratio:545/207;object-fit:contain}
.ui-disclosure{display:inline-flex;align-items:center;min-block-size:1.8rem;padding:.2rem .65rem;border:1px solid rgba(255,255,255,.25);border-radius:999px;color:#f1edf4;font-size:.7rem;font-weight:600;letter-spacing:.035em}
.ui-main{inline-size:min(100% - 2rem,78rem);margin-inline:auto;padding-block:clamp(1.5rem,4vw,3rem) 4rem}
.ui-eyebrow{margin:0 0 .4rem;color:#6d6278;font-size:.72rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase}
.ui-page-title{margin:0 0 1rem;font-size:clamp(1.75rem,3vw,2.5rem);font-weight:650;line-height:1.16;letter-spacing:-.03em;text-wrap:pretty}
.ui-live{margin:.3rem 0 1.25rem;color:#594d61;font-size:.9rem}
.ui-login,.ui-panel,.ui-class,.ui-callout{border:1px solid var(--line);border-radius:.7rem;background:var(--paper);box-shadow:0 3px 12px rgba(30,20,42,.035)}
.ui-login{max-inline-size:36rem;padding:1.5rem;margin-block:1.5rem}
.ui-login h2{margin:0 0 .4rem;font-size:1.2rem}
.ui-login p{margin:.25rem 0 1rem;color:var(--muted)}
.ui-member-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));gap:1rem;align-items:start}
.ui-class{display:flex;flex-direction:column;align-items:flex-start;gap:.55rem;padding:1.25rem;min-inline-size:0}
.ui-class__title{margin:0;font-size:1.15rem;font-weight:650;line-height:1.3;text-wrap:pretty}
.ui-class__date{margin:0;color:#4d4353;font-size:.9rem;font-weight:600;text-wrap:pretty}
.ui-class__time{margin:0;color:var(--purple-dark);font-size:1.15rem;font-weight:650;font-variant-numeric:tabular-nums}
.ui-class__details{display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;margin:.2rem 0 0}
.ui-detail{display:grid;gap:.1rem;min-inline-size:0}
.ui-detail dt{color:var(--muted);font-size:.7rem;font-weight:600}
.ui-detail dd{margin:0;overflow-wrap:anywhere;font-size:.88rem}
.ui-counts{margin:.2rem 0;color:#504858;font-size:.8rem;font-weight:600;font-variant-numeric:tabular-nums;text-wrap:pretty}
.ui-status-chip{display:inline-flex;align-items:center;min-block-size:1.8rem;padding:.2rem .65rem;border-radius:999px;background:var(--purple-soft);color:#492b7b;font-size:.75rem;font-weight:650;text-wrap:pretty}
.ui-status-chip[data-state=confirmed]{background:var(--green-soft);color:var(--green)}
.ui-status-chip[data-state=waitlisted]{background:var(--amber-soft);color:var(--amber)}
.ui-status-chip[data-state=cancelled],.ui-status-chip[data-state=skipped]{background:#f0eef2;color:#5d5662}
.ui-button{display:inline-flex;align-items:center;justify-content:center;min-inline-size:2.75rem;min-block-size:2.75rem;padding:.55rem .9rem;border:1px solid transparent;border-radius:.35rem;background:#fff;color:var(--ink);font-size:.82rem;font-weight:650;line-height:1.4;text-align:center;text-wrap:pretty;overflow-wrap:anywhere}
.ui-button--primary{background:var(--purple);color:#fff}
.ui-button--primary:hover{background:var(--purple-dark)}
.ui-button--secondary{border-color:#cfc5d8;background:#fff;color:#382b42}
.ui-button--secondary:hover{background:#f7f4fa}
.ui-button--quiet{border-color:transparent;background:transparent;color:var(--purple-dark)}
.ui-actions{display:flex;flex-wrap:wrap;gap:.6rem}
.ui-muted{margin:.25rem 0;color:var(--muted);font-size:.82rem;text-wrap:pretty}
.ui-empty,.ui-error,.ui-loading{margin:0;padding:1rem 0;color:#554d5d;font-size:.9rem;text-wrap:pretty}
.ui-error{color:var(--red)}
.ui-callout{padding:1rem;margin-block:.75rem}
.ui-callout__title{margin:0 0 .25rem;font-size:1rem}
.ui-callout__copy{margin:0 0 .75rem;color:var(--muted);font-size:.85rem}
.ui-staff-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:.65rem 1rem;margin-block:1.25rem;padding:1rem;border:1px solid var(--line);border-radius:.6rem;background:#fff}
.ui-staff-toolbar label,.ui-search-view label{color:#504858;font-size:.78rem;font-weight:650}
.ui-staff-toolbar input,.ui-search-view input{min-block-size:2.75rem;padding:.55rem .7rem;border:1px solid #bdb4c5;border-radius:.35rem;background:#fff;color:var(--ink)}
.ui-staff-toolbar input{min-inline-size:min(15rem,100%)}
.ui-staff-layout{display:grid;grid-template-columns:minmax(17rem,.9fr) minmax(0,1.25fr);align-items:start;gap:1rem}
.ui-panel{min-inline-size:0;padding:1rem}
.ui-panel__title{margin:0 0 .9rem;font-size:1.15rem;font-weight:650;line-height:1.3;text-wrap:pretty}
.ui-schedule-list{display:grid;gap:.75rem}
.ui-class--schedule{padding:1rem;box-shadow:none}
.ui-roster-panel{padding:0;border:0;box-shadow:none}
.ui-table{inline-size:100%;border-collapse:collapse;margin-block:.75rem;font-size:.8rem}
.ui-table th{padding:.65rem .75rem;border-block-end:1px solid #d7d0dd;color:#5e5664;font-size:.7rem;font-weight:650;text-align:start}
.ui-table td{padding:.65rem .75rem;border-block-end:1px solid #eeeaf1;vertical-align:middle;overflow-wrap:anywhere}
.ui-roster-mobile{display:none;list-style:none;margin:.75rem 0 0;padding:0}
.ui-roster-row{display:flex;align-items:center;justify-content:space-between;gap:.7rem;padding:.8rem 0;border-block-end:1px solid #eeeaf1}
.ui-roster-row__identity{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;min-inline-size:0}
.ui-roster-row__name{overflow-wrap:anywhere}
.ui-search-view{margin-block-start:1rem;padding-block-start:1rem;border-block-start:1px solid var(--line)}
.ui-search-view input{display:block;inline-size:min(100%,24rem);margin-block:.4rem .8rem}
.ui-member-results{display:grid;gap:.25rem;list-style:none;margin:0;padding:0}
.ui-member-result{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.65rem 0;border-block-end:1px solid #eeeaf1}
.ui-member-result__name{display:block;overflow-wrap:anywhere}
.ui-pagination{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-block-start:.8rem}
.ui-book-selection{margin-block:1rem;padding:1rem;border:1px solid var(--line);border-radius:.5rem;background:#fbfaff}
.ui-book-selection h3{margin:0;font-size:.95rem;overflow-wrap:anywhere}
.ui-book-selection .ui-button{margin-block-start:.4rem}
.ui-dialog{inline-size:min(calc(100% - 2rem),30rem);max-block-size:calc(100% - 2rem);padding:1.5rem;border:1px solid #d9d1df;border-radius:.65rem;background:#fff;color:var(--ink);box-shadow:var(--shadow)}
.ui-dialog::backdrop{background:rgba(25,20,30,.42)}
.ui-dialog h2{margin:0 0 .65rem;font-size:1.2rem;line-height:1.3;text-wrap:pretty}
.ui-dialog p{margin:.25rem 0 1rem;color:#5f5665;font-size:.88rem;text-wrap:pretty;overflow-wrap:anywhere}
.ui-dialog .ui-actions{margin-block-start:1.2rem}
.ui-sr-only{position:absolute!important;inline-size:1px!important;block-size:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.ui-button:active:not(:focus-visible){transition:transform 160ms ease;transform:translateY(1px)}
@media(hover:none){.ui-button:active:not(:focus-visible){transform:none;transition:none}}
@media(max-width:760px){.ui-main{inline-size:min(100% - 1.25rem,48rem);padding-block-start:1.4rem}.ui-staff-layout{grid-template-columns:minmax(0,1fr)}.ui-detail-panel{grid-row:2}.ui-roster-panel .ui-table{display:none}.ui-roster-panel .ui-roster-mobile{display:block}.ui-staff-toolbar{align-items:flex-start}.ui-staff-toolbar input{flex:1;min-inline-size:9rem}}
@media(max-width:420px){.ui-header{padding-inline:.75rem}.ui-header__brand{gap:.55rem}.ui-header__brand img{inline-size:6rem}.ui-disclosure{font-size:.62rem}.ui-main{inline-size:calc(100% - 1rem)}.ui-class{padding:1rem}.ui-button{max-inline-size:100%}.ui-roster-row{align-items:flex-start}.ui-roster-row .ui-button{flex:none}.ui-dialog{padding:1.1rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}.ui-button:active:not(:focus-visible){transform:none}}

/* Preview-only additions. Append after UI47's base stylesheet. */
html:not(.preview-js) body.ui-shell > :not(.preview-start-fallback) { display: none !important; }
html.preview-js .preview-start-fallback { display: none; }
.preview-start-fallback { margin: 2rem auto; padding: 1rem; max-width: 42rem; line-height: 1.5; }
.ui-header .ui-button--quiet {
  color: #ffffff;
}
.ui-header .ui-button--quiet:hover {
  color: #ffffff;
  background: #382b42;
}
.ui-header .ui-button--quiet:focus-visible {
  outline: 3px solid #ffffff;
  outline-offset: 3px;
}
.ui-disclosure,
.preview-disclosure {
  font-size: 1rem;
  line-height: 1.5;
  overflow-wrap: anywhere;
}
.ui-header__brand {
  flex-wrap: wrap;
}
/* Keep the original dark artwork legible against the dark header. */
.ui-header__brand img {
  background: #ffffff;
  padding: .35rem;
  border-radius: .2rem;
}
.preview-disclosure {
  margin: 0;
  padding: .8rem clamp(1rem, 3vw, 2.5rem);
  background: #f0eaf5;
  color: #211d24;
  border-block-end: 1px solid #cfc5d8;
}
.preview-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .6rem .8rem;
  padding: .8rem clamp(1rem, 3vw, 2.5rem);
  background: #fff;
  color: #211d24;
  border-block-end: 1px solid #cfc5d8;
}
.preview-controls p { flex-basis: 100%; margin: 0; }
.preview-controls label { font-weight: 650; }
.preview-controls select,
.preview-controls button {
  min-block-size: 2.75rem;
  max-inline-size: 100%;
  padding: .55rem .8rem;
  border: 1px solid #786a83;
  border-radius: .35rem;
  background: #fff;
  color: #211d24;
  font: inherit;
}
.preview-controls button { cursor: pointer; font-weight: 650; }
.preview-controls :is(select, button):focus-visible {
  outline: 3px solid #67407d;
  outline-offset: 2px;
}
