/* /Components/Layout/MainLayout.razor.rz.scp.css */
/*
  MainLayout.razor.css — scoped component styling for the public shell.
  Structure/spacing only in the selectors below; every color reference goes
  through a --theme-* token from the active render file (D-TPL-TOK-02/03).
*/

[b-bwg18zb6sq] .bu-rail {
    box-shadow: var(--theme-x-elevation-1);
}

[b-bwg18zb6sq] main.bu-main {
    display: flex;
    flex-direction: column;
}

@media (max-width: 640px) {
    [b-bwg18zb6sq] .bu-rail {
        padding: var(--structure-gap-sm) var(--structure-gap-md);
    }
}
/* /Components/Layout/SchoolLayout.razor.rz.scp.css */
/* Structure only; colour comes from the skin's --theme-* tokens. Mirrors MainLayout.razor.css. */
[b-s03uc6rmxf] .bu-rail {
    box-shadow: var(--theme-x-elevation-1);
}

[b-s03uc6rmxf] main.bu-main {
    display: flex;
    flex-direction: column;
}

/* #521: ONE frame for the school's public form pages (event registration, sign-up /r/{token}, first class): the same header (above), the same
   heading scale (the Primer h1 inside .bu-reveal) and the same single centred panel. The school page itself (/join/{handle}) keeps its own wide layout. */
[b-s03uc6rmxf] .bu-evreg,
[b-s03uc6rmxf] .bu-reg,
[b-s03uc6rmxf] .bu-fc-panel {
    grid-column: 1 / -1;
    width: 100%;
    max-width: 640px;
    margin-inline: auto;
}

@media (max-width: 640px) {
    [b-s03uc6rmxf] .bu-rail {
        padding: var(--structure-gap-sm) var(--structure-gap-md);
    }
}
/* /Components/Pages/Backstage.razor.rz.scp.css */
/*
  Backstage.razor.css — scoped styling for PG-045. Structure/spacing only; color via
  --theme-* tokens.
*/

[b-7bfs907rh4] .bu-bay-grid {
    justify-content: center;
}

[b-7bfs907rh4] .backstage-panel {
    max-width: 480px;
    margin: 0 auto;
}

[b-7bfs907rh4] form {
    display: flex;
    flex-direction: column;
}

[b-7bfs907rh4] button[type="submit"] {
    align-self: flex-start;
    margin-top: var(--structure-gap-sm);
}

@media (max-width: 640px) {
    [b-7bfs907rh4] button[type="submit"] {
        align-self: stretch;
    }
}
/* /Components/Pages/EventRegister.razor.rz.scp.css */
/* /join/{handle}/e/{slug}: a school's registration page for one event. Phone first, tokens only (greyscale Primer; the skin is the one PageSkinResolver assigns). One question per screen. */
.bu-evreg[b-8su3y97bks] { margin-inline: auto; }
.bu-evreg h2[b-8su3y97bks] { margin: var(--structure-gap-md) 0 var(--structure-gap-sm); }
.bu-evreg h3[b-8su3y97bks] { margin: var(--structure-gap-md) 0 var(--structure-gap-xs); }
.bu-evreg-facts[b-8su3y97bks] { display: grid; gap: var(--structure-gap-sm); margin: 0 0 var(--structure-gap-md); }
.bu-evreg-facts div[b-8su3y97bks] { display: grid; grid-template-columns: 6rem 1fr; gap: var(--structure-gap-sm); }
.bu-evreg-facts dt[b-8su3y97bks] { color: var(--theme-text-muted); font-size: 0.875rem; }
.bu-evreg-facts dd[b-8su3y97bks] { margin: 0; }
.bu-evreg-person[b-8su3y97bks] { border: 1px solid var(--theme-border-inactive); padding: var(--structure-gap-md); margin: 0 0 var(--structure-gap-md); min-width: 0; }
.bu-evreg-code[b-8su3y97bks] { font-size: 2rem; font-weight: 700; letter-spacing: 0.2em; margin: 0 0 var(--structure-gap-sm); font-variant-numeric: tabular-nums; }
.bu-reg-choices[b-8su3y97bks] { border: 0; margin: 0 0 var(--structure-gap-md); padding: 0; min-width: 0; display: flex; flex-direction: column; gap: var(--structure-gap-sm); }
.bu-evreg-person.bu-reg-choices[b-8su3y97bks] { border: 1px solid var(--theme-border-inactive); padding: var(--structure-gap-md); }
.bu-reg-choices legend[b-8su3y97bks] { padding: 0 0 var(--structure-gap-xs); }
.bu-evreg .bu-check-label[b-8su3y97bks] { display: flex; align-items: flex-start; gap: var(--structure-gap-sm); min-height: var(--structure-touch-min); padding-block: var(--structure-gap-xs); }
.bu-evreg .bu-check-label input[type="checkbox"][b-8su3y97bks], .bu-evreg .bu-check-label input[type="radio"][b-8su3y97bks] { flex: 0 0 auto; inline-size: 1.5rem; block-size: 1.5rem; margin-block-start: 0.1rem; }
.bu-evreg[b-8su3y97bks]  .bu-input, .bu-evreg .bu-input[b-8su3y97bks] { inline-size: 100%; min-block-size: var(--structure-touch-min); }
.bu-evreg .bu-btn[b-8su3y97bks], .bu-evreg .bu-btn-secondary[b-8su3y97bks] { min-block-size: var(--structure-touch-min); min-inline-size: 8rem; display: inline-flex; align-items: center; justify-content: center; }
.bu-evreg .bu-form-actions[b-8su3y97bks] { display: flex; flex-wrap: wrap; align-items: center; gap: var(--structure-gap-md); margin-block: var(--structure-gap-md); }
.bu-reg-list[b-8su3y97bks] { list-style: none; margin: 0 0 var(--structure-gap-md); padding: 0; display: flex; flex-direction: column; gap: var(--structure-gap-xs); }
.bu-reg-list li[b-8su3y97bks] { display: flex; align-items: center; justify-content: space-between; gap: var(--structure-gap-md); padding-block: var(--structure-gap-xs); border-bottom: 1px solid var(--theme-border-inactive); }
.bu-reg-remove[b-8su3y97bks] { min-inline-size: 5rem; }
.bu-reg-code[b-8su3y97bks] { font-size: 1.5rem; letter-spacing: 0.25em; text-align: center; }
/* The bot trap: out of sight and out of the tab order, but present in the form. */
.bu-reg-hp[b-8su3y97bks] { position: absolute; inset-inline-start: -10000px; inline-size: 1px; block-size: 1px; overflow: hidden; }
@media (max-width: 640px) {
  .bu-evreg .bu-form-actions .bu-btn[b-8su3y97bks], .bu-evreg .bu-form-actions .bu-btn-secondary[b-8su3y97bks] { inline-size: 100%; }
  .bu-reg-list li[b-8su3y97bks] { flex-wrap: wrap; }
  .bu-evreg-facts div[b-8su3y97bks] { grid-template-columns: 1fr; gap: 0; }
}
/* /Components/Pages/FindSchool.razor.rz.scp.css */
/* FindSchool.razor.css - PG-002 directory. Phone-first: form fields stack, cards are a single column, two columns from tablet up. */

.bu-find-form[b-ix56dxhdzf] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--structure-gap-md);
    align-items: flex-end;
}

.bu-find-form .bu-field[b-ix56dxhdzf] {
    flex: 1 1 14rem;
    min-width: 0;
}

.bu-find-form .bu-btn[b-ix56dxhdzf] {
    min-height: var(--structure-touch-min);
}

.bu-find-cards[b-ix56dxhdzf] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--structure-gap-md);
}

@media (min-width: 769px) {
    .bu-find-cards[b-ix56dxhdzf] {
        grid-template-columns: 1fr 1fr;
    }
}

.bu-find-card[b-ix56dxhdzf] {
    display: flex;
    flex-direction: column;
    gap: var(--structure-gap-xs);
    padding: var(--structure-gap-md);
    border: 1px solid var(--theme-border-inactive);
    min-width: 0;
}

.bu-find-name[b-ix56dxhdzf] {
    margin: 0;
    font-size: var(--structure-text-xl);
    overflow-wrap: anywhere;
}

.bu-find-line[b-ix56dxhdzf] {
    margin: 0;
    font-size: var(--structure-text-sm);
}

.bu-find-actions[b-ix56dxhdzf] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--structure-gap-xs);
}

.bu-find-actions .bu-btn[b-ix56dxhdzf],
.bu-find-actions .bu-btn-secondary[b-ix56dxhdzf] {
    min-height: var(--structure-touch-min);
}

/* Same style-tag look as the school page (scoped CSS does not cross components). */
.bu-school-styles[b-ix56dxhdzf] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--structure-gap-xs);
    list-style: none;
    margin: 0;
    padding: 0;
}

.bu-school-styles .bu-badge-tag[b-ix56dxhdzf] {
    text-transform: none;
    letter-spacing: 0;
    border: 1px solid var(--theme-border-active);
}
/* /Components/Pages/FirstClass.razor.rz.scp.css */
/*
  FirstClass.razor.css - scoped structure for the public "Request a first class" form (D2). Structure and spacing only;
  colour comes from the school page's skin tokens (--theme-*). Phone first: one column, two columns from 520px.
  "Me / my child" is a CSS-only switch (:has on the checked radio) so it works with no script; browsers without :has show both
  groups, and the Api validates either way.
*/

/* The panel's width and centring come from the shared public frame (SchoolLayout.razor.css). */

.bu-fc-form[b-0ndgh9qwns] {
    display: flex;
    flex-direction: column;
    gap: var(--structure-gap-sm);
}

.bu-fc-form fieldset[b-0ndgh9qwns] {
    border: 0;
    margin: 0;
    padding: 0;
    min-width: 0;
}

.bu-fc-form legend[b-0ndgh9qwns] {
    padding: 0;
    margin-bottom: var(--structure-gap-xs);
    font-weight: var(--structure-weight-bold);
}

.bu-fc-who[b-0ndgh9qwns] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--structure-gap-sm);
}

.bu-fc-who legend[b-0ndgh9qwns] {
    flex-basis: 100%;
}

.bu-fc-radio[b-0ndgh9qwns],
.bu-fc-chip[b-0ndgh9qwns] {
    display: inline-flex;
    align-items: center;
    gap: var(--structure-gap-xs);
    min-height: var(--structure-touch-min);
    padding: 0 var(--structure-gap-md);
    border: 1px solid var(--theme-border-inactive);
    border-radius: var(--structure-radius-max);
    cursor: pointer;
}

.bu-fc-radio input[b-0ndgh9qwns],
.bu-fc-chip input[b-0ndgh9qwns] {
    width: 20px;
    height: 20px;
    margin: 0;
}

.bu-fc-chips[b-0ndgh9qwns] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--structure-gap-xs);
}

.bu-fc-chips legend[b-0ndgh9qwns] {
    flex-basis: 100%;
}

/* #521: with classes to pick, the time bands only show once "None of these suit me" is chosen (CSS only; a browser without :has shows them all the time). */
@supports selector(:has(*)) {
    .bu-fc-form .bu-fc-bands[b-0ndgh9qwns] {
        display: none;
    }

    .bu-fc-form:has(input[name="pick"][value="none"]:checked) .bu-fc-bands[b-0ndgh9qwns] {
        display: flex;
    }
}

.bu-fc-two[b-0ndgh9qwns] {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--structure-gap-sm);
}

@media (min-width: 520px) {
    .bu-fc-two[b-0ndgh9qwns] {
        grid-template-columns: 1fr 1fr;
    }
}

/* default: the adult group shows; picking "My child" swaps the groups */
.bu-fc-child[b-0ndgh9qwns] {
    display: none;
}

.bu-fc-form:has(input[name="who"][value="child"]:checked) .bu-fc-adult[b-0ndgh9qwns] {
    display: none;
}

.bu-fc-form:has(input[name="who"][value="child"]:checked) .bu-fc-child[b-0ndgh9qwns] {
    display: block;
}

.bu-fc-consent[b-0ndgh9qwns] {
    align-items: flex-start;
}

.bu-fc-consent label[b-0ndgh9qwns] {
    flex: 1 1 auto;
    min-height: var(--structure-touch-min);
    display: flex;
    align-items: center;
    cursor: pointer;
}

.bu-fc-consent input[type="checkbox"][b-0ndgh9qwns] {
    margin-top: 0.75rem;
}

/* the honeypot: out of sight and out of the tab order for a person; a script that fills every field falls into it */
.bu-fc-hp[b-0ndgh9qwns] {
    position: absolute;
    left: -10000px;
    top: auto;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

.bu-fc-errors ul[b-0ndgh9qwns] {
    margin: 0 0 var(--structure-gap-sm);
    padding-left: 1.25rem;
}

.bu-fc-form button[type="submit"][b-0ndgh9qwns] {
    align-self: flex-start;
    margin-top: var(--structure-gap-sm);
}

@media (max-width: 520px) {
    .bu-fc-form button[type="submit"][b-0ndgh9qwns] {
        align-self: stretch;
    }
}
/* /Components/Pages/Home.razor.rz.scp.css */
/*
  Home.razor.css — scoped styling for PG-001 Landing (verbatim content port).
  Hero fills most of the first viewport per the reference layout authority
  (min-height 70vh, vertically centered). Structure/spacing only; color via
  --theme-* tokens.
*/

[b-vwwrhtjtro] .bu-hero {
    min-height: 70vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

/* Section anchors land below the fixed rail when jumped to. */
[b-vwwrhtjtro] #performance-suite,
[b-vwwrhtjtro] #infrastructure,
[b-vwwrhtjtro] #evolution,
[b-vwwrhtjtro] #final-close {
    scroll-margin-top: 90px;
}

/* Evolution lists keep the reference's tight rhythm. */
[b-vwwrhtjtro] #evolution ul {
    margin: 0;
    padding-left: var(--structure-gap-lg);
    display: flex;
    flex-direction: column;
    gap: var(--structure-gap-xs);
}

@media (max-width: 768px) {
    [b-vwwrhtjtro] .bu-hero {
        min-height: 55vh;
    }
}

/* R4 inline-style cleanup (2026-07-04): color/token values previously set via
   raw style="" attributes directly in Home.razor's markup, moved into this
   render-agnostic scoped stylesheet (still --theme-* tokens, never a literal). */
[b-vwwrhtjtro] .bu-home-metric-value--healthy {
    color: var(--theme-state-healthy);
}

[b-vwwrhtjtro] .bu-home-evolution-old-panel {
    border-style: dashed;
}

[b-vwwrhtjtro] .bu-home-evolution-new-panel {
    border-color: var(--theme-accent-primary);
}

[b-vwwrhtjtro] .bu-home-evolution-new-title {
    color: var(--theme-accent-primary);
}

/* R4 inline-style cleanup (2026-07-04, audit finding 15870ec-R4): the two Promotion
   Velocity HUD gauge SVGs and the four skill-tree progress-bar widths were still set via
   raw style="" attributes in Home.razor's markup. Both moved here per the style law —
   the progress widths are static literals today (fabricated sample values, see the R4
   honesty-fix comment in Home.razor), so they are staticized to named classes rather than
   promoted to a CSS custom property; if this panel ever becomes data-driven, the
   Blazor-idiomatic pattern is a --gauge-fill/--track-fill custom property set via style=
   at that time. */
[b-vwwrhtjtro] .bu-gauge-rotate {
    transform: rotate(-90deg);
}

[b-vwwrhtjtro] .bu-track-hard--52 {
    width: 52%;
}

[b-vwwrhtjtro] .bu-track-hard--63 {
    width: 63%;
}

[b-vwwrhtjtro] .bu-track-hard--78 {
    width: 78%;
}

[b-vwwrhtjtro] .bu-track-hard--100 {
    width: 100%;
}

/* R4 honesty fix (2026-07-04, audit finding 15870ec-R4): explicit sample-data tag sitting
   under the Performance Suite heading. Small, honest, tokens-only — never implies these
   numbers are a real entity's live data. See the Razor comment above #performance-suite
   for full rationale; FINAL wording is an OWNER decision. */
[b-vwwrhtjtro] .bu-perf-sampletag {
    display: inline-block;
    margin-top: var(--structure-gap-sm);
    font-size: var(--structure-text-xs);
    opacity: 0.85;
}

/* 375px: the long word in the hero headline pushed the page 6px wider than the screen. Step the headline
   down on phones only (desktop unchanged); the skin's own size rule is more specific, hence !important. */
@media (max-width: 480px) {
    [b-vwwrhtjtro] .bu-hero-headline {
        font-size: clamp(1.5rem, 8.4vw, 2.5rem) !important;
        overflow-wrap: anywhere;
    }
}
/* /Components/Pages/JoinSchool.razor.rz.scp.css */
/*
  JoinSchool.razor.css - PG-005 public school page. Phone-first single column; the classes and events
  panels sit side by side from the Primer's tablet breakpoint up (bay grid). Structure and spacing only;
  colour comes from --theme-* tokens so any skin works.
*/

.bu-school-styles[b-ogo9ign7ab] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--structure-gap-xs);
    list-style: none;
    margin: 0;
    padding: 0;
}

/* Style names are shown exactly as labelled (R-1023-09): no forced upper-casing of "BJJ (Brazilian Jiu-Jitsu)". */
.bu-school-styles .bu-badge-tag[b-ogo9ign7ab] {
    text-transform: none;
    letter-spacing: 0;
    border: 1px solid var(--theme-border-active);
}

.bu-school-contact[b-ogo9ign7ab] {
    display: flex;
    flex-direction: column;
    gap: var(--structure-gap-xs);
}

.bu-school-address[b-ogo9ign7ab] {
    display: flex;
    flex-direction: column;
    font-style: normal;
}

/* Contact lines keep the case the school typed (an email shown in capitals reads as shouting and is harder to copy). */
.bu-school-contact .bu-link-stealth[b-ogo9ign7ab] {
    text-transform: none;
    letter-spacing: normal;
}

.bu-school-members-note[b-ogo9ign7ab] {
    margin-top: var(--structure-gap-md);
}

.bu-school-actions[b-ogo9ign7ab] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--structure-gap-md);
    align-items: flex-start;
}

.bu-school-action[b-ogo9ign7ab] {
    display: flex;
    flex-direction: column;
    gap: var(--structure-gap-xs);
    min-width: 0;
    max-width: 22rem;
}

.bu-school-action .bu-btn[b-ogo9ign7ab],
.bu-school-action .bu-btn-secondary[b-ogo9ign7ab] {
    min-height: var(--structure-touch-min);
    text-align: center;
}

.bu-school-action-note[b-ogo9ign7ab] {
    margin: 0;
    font-size: var(--structure-text-sm);
}

.bu-agenda-day[b-ogo9ign7ab] {
    margin-top: var(--structure-gap-md);
}

.bu-agenda-date[b-ogo9ign7ab] {
    margin: 0 0 var(--structure-gap-xs);
    font-size: var(--structure-text-lg);
}

.bu-agenda-list[b-ogo9ign7ab] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
}

.bu-agenda-item[b-ogo9ign7ab] {
    display: flex;
    gap: var(--structure-gap-md);
    padding: var(--structure-gap-sm) 0;
    border-top: 1px solid var(--theme-border-inactive);
}

.bu-agenda-item--stack[b-ogo9ign7ab] {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.15rem;
}

/* #512: the Register button sat on top of the date line. It now owns its row: static, with clear space above. */
.bu-agenda-item--stack .bu-btn-secondary[b-ogo9ign7ab] {
    position: static;
    margin-top: var(--structure-gap-sm);
    min-height: var(--structure-touch-min);
}

.bu-agenda-item--stack .bu-agenda-when[b-ogo9ign7ab] {
    display: block;
}

.bu-agenda-time[b-ogo9ign7ab] {
    flex: 0 0 9rem;
    font-weight: var(--structure-weight-bold);
    white-space: nowrap;
}

.bu-agenda-what[b-ogo9ign7ab] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    overflow-wrap: anywhere;
}

@media (max-width: 480px) {
    .bu-agenda-item[b-ogo9ign7ab] {
        flex-direction: column;
        gap: 0.15rem;
    }

    .bu-agenda-time[b-ogo9ign7ab] {
        flex-basis: auto;
    }

    .bu-school-action[b-ogo9ign7ab] {
        max-width: none;
        width: 100%;
    }
}
/* /Components/Pages/Lead.razor.rz.scp.css */
/*
  Lead.razor.css — scoped styling for PG-004 Lead capture. Centered form
  panel, field rhythm, consent row, microcopy. Structure/spacing only; color
  via --theme-* tokens.
*/

[b-g8a164zpq4] .bu-bay-grid {
    justify-content: center;
}

/* WT-0915-021: the card is meant to be centred (header above), but .bu-bay-8 spans
   columns 1-8, so margin:auto only centred the 640px card inside that left-hand
   8-column cell: left 199 at 1440 (neither the shared 145px edge nor centre), and at
   1024 it filled the 622px cell from the 32px edge. Spanning the full row lets the
   640px cap plus margin:auto centre it on the page grid at every width (span 12 on a
   phone is the same row). */
[b-g8a164zpq4] .bu-bay-8.bu-panel {
    grid-column: 1 / -1;
    max-width: 640px;
    margin: 0 auto;
}

[b-g8a164zpq4] form {
    display: flex;
    flex-direction: column;
}

[b-g8a164zpq4] .bu-field-row label {
    font-size: var(--structure-text-sm);
}

[b-g8a164zpq4] button[type="submit"] {
    align-self: flex-start;
    margin-top: var(--structure-gap-sm);
}

@media (max-width: 640px) {
    [b-g8a164zpq4] button[type="submit"] {
        align-self: stretch;
    }
}

/*
  "Other" free-text reveal for the School type / Primary style selects. This page is
  static SSR with no interactive circuit (see Lead.razor's file-header comment) and may
  never gain a @rendermode directive, so the reveal is pure CSS reacting to the native
  :checked state of the currently-selected <option> — no JS, no Blazor event round-trip.
  Browsers without :has() support simply show the fallback input at all times, which is
  still fully usable (progressive enhancement, not a hard dependency).
*/
[b-g8a164zpq4] .bu-other-reveal .bu-other-input {
    display: none;
}

[b-g8a164zpq4] .bu-other-reveal:has(select option[value="Other (type it in)"]:checked) .bu-other-input {
    display: block;
    margin-top: var(--structure-gap-xs);
}

/* B19 / S02: the 44px target comes from the ROW + LABEL hit area, not from inflating the
   native box (a 44px checkbox rendered as a large square overlapping the label text).
   The box stays at the Primer's 20px, accent-coloured by the skin; the label supplies the
   44px height and a gap so text never sits under the box. */
[b-g8a164zpq4] .bu-consent-row {
    display: flex;
    align-items: center;
    gap: var(--structure-gap-sm);
    min-height: var(--structure-touch-min);
}

[b-g8a164zpq4] .bu-consent-row #lead-consent {
    flex: 0 0 auto;
    width: 20px;
    height: 20px;
    min-width: 20px;
    min-height: 20px;
    margin: 0;
}

[b-g8a164zpq4] .bu-consent-row label {
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    min-height: var(--structure-touch-min);
    cursor: pointer;
}

/* S07: the "* Required field" legend is one inline run (the parent .bu-brick is a flex
   column that otherwise stacks the star and the words on two lines). */
[b-g8a164zpq4] .bu-required-legend {
    display: inline;
}
/* /Components/Pages/Pricing.razor.rz.scp.css */
/*
  Pricing.razor.css — scoped styling for PG-003 Pricing. Three tier panels
  side by side, feature lists, price emphasis. Structure/spacing only; color
  via --theme-* tokens.
*/

[b-7bu21tjrdl] .bu-bay-grid:nth-of-type(2) {
    align-items: stretch;
}

[b-7bu21tjrdl] .bu-bay-grid:nth-of-type(2) .bu-panel {
    height: 100%;
    justify-content: space-between;
}

[b-7bu21tjrdl] .bu-bay-grid:nth-of-type(2) .bu-reveal p.bu-brick {
    font-size: var(--structure-text-2xl);
    font-weight: var(--structure-weight-bold);
    padding: 0;
    /* WT-0915-035: .bu-brick is a flex COLUMN in the Primer, so "$49" and "/month"
       stacked as two 36px lines (each price block 313x116). A row keeps the price
       and its suffix on one baseline; wrap stays allowed for a narrow card. */
    flex-direction: row;
    flex-wrap: wrap;
    align-items: baseline;
    gap: var(--structure-gap-xs);
}

/* WT-0915-037: the three feature lists started on different lines (Master at y578,
   Apprentice and Warrior at y603) because each card stacks its own description,
   and Master's is one line shorter. A subgrid shares the four row tracks (heading +
   price, description, features, button) across the three cards, so every list and
   every button starts on the same line whatever the copy length. Each child is
   placed on its named row explicitly, so a tier without a description still lines
   up. Desktop/tablet only: below 769px the cards stack one per row (Primer). */
@media (min-width: 769px) {
    [b-7bu21tjrdl] .bu-bay-grid:nth-of-type(2) .bu-panel {
        display: grid;
        grid-row: span 4;
        grid-template-rows: subgrid;
        grid-template-columns: minmax(0, 1fr);
    }

    [b-7bu21tjrdl] .bu-bay-grid:nth-of-type(2) .bu-panel > .bu-reveal {
        grid-row: 1;
    }

    [b-7bu21tjrdl] .bu-bay-grid:nth-of-type(2) .bu-panel > p.bu-brick {
        grid-row: 2;
    }

    [b-7bu21tjrdl] .bu-bay-grid:nth-of-type(2) .bu-panel > ul.bu-brick {
        grid-row: 3;
    }

    [b-7bu21tjrdl] .bu-bay-grid:nth-of-type(2) .bu-panel > .bu-btn {
        grid-row: 4;
    }
}

[b-7bu21tjrdl] .bu-bay-grid:nth-of-type(2) ul.bu-brick {
    list-style: none;
    padding-left: 0;
    display: flex;
    flex-direction: column;
    gap: var(--structure-gap-xs);
    flex: 1;
}

[b-7bu21tjrdl] .bu-bay-grid:nth-of-type(2) ul.bu-brick li {
    padding: var(--structure-gap-xs) 0;
    border-bottom: 1px solid var(--theme-border-inactive);
}

[b-7bu21tjrdl] .bu-bay-grid:nth-of-type(2) ul.bu-brick li:last-child {
    border-bottom: none;
}

[b-7bu21tjrdl] .bu-bay-grid:nth-of-type(2) .bu-btn {
    align-self: stretch;
    text-align: center;
    margin-top: var(--structure-gap-md);
}

[b-7bu21tjrdl] .pricing-footnote {
    font-size: var(--structure-text-sm);
    color: var(--theme-text-muted);
}
/* /Components/Pages/Register.razor.rz.scp.css */
/* /r/{token}: the registration form. Phone first, tokens only (greyscale Primer; the page skin is the one PageSkinResolver assigns). One question per screen. */
.bu-reg[b-kl9qlzuir4] { margin-inline: auto; }
.bu-reg h2[b-kl9qlzuir4] { margin: var(--structure-gap-md) 0 var(--structure-gap-sm); }
.bu-reg h3[b-kl9qlzuir4] { margin: var(--structure-gap-md) 0 var(--structure-gap-xs); }
.bu-reg-choices[b-kl9qlzuir4] { border: 0; margin: 0 0 var(--structure-gap-md); padding: 0; min-width: 0; display: flex; flex-direction: column; gap: var(--structure-gap-sm); }
.bu-reg-choices legend[b-kl9qlzuir4] { padding: 0 0 var(--structure-gap-xs); }
.bu-reg .bu-check-label[b-kl9qlzuir4] { display: flex; align-items: flex-start; gap: var(--structure-gap-sm); min-height: var(--structure-touch-min); padding-block: var(--structure-gap-xs); }
.bu-reg .bu-check-label input[type="checkbox"][b-kl9qlzuir4], .bu-reg .bu-check-label input[type="radio"][b-kl9qlzuir4] { flex: 0 0 auto; inline-size: 1.5rem; block-size: 1.5rem; margin-block-start: 0.1rem; }
.bu-reg .bu-input[b-kl9qlzuir4] { inline-size: 100%; min-block-size: var(--structure-touch-min); }
.bu-reg .bu-btn[b-kl9qlzuir4], .bu-reg .bu-btn-secondary[b-kl9qlzuir4] { min-block-size: var(--structure-touch-min); min-inline-size: 8rem; }
.bu-reg .bu-form-actions[b-kl9qlzuir4] { display: flex; flex-wrap: wrap; align-items: center; gap: var(--structure-gap-md); margin-block: var(--structure-gap-md); }
.bu-reg-list[b-kl9qlzuir4] { list-style: none; margin: 0 0 var(--structure-gap-md); padding: 0; display: flex; flex-direction: column; gap: var(--structure-gap-xs); }
.bu-reg-list li[b-kl9qlzuir4] { display: flex; align-items: center; justify-content: space-between; gap: var(--structure-gap-md); padding-block: var(--structure-gap-xs); border-bottom: 1px solid var(--theme-border-inactive); }
.bu-reg-remove[b-kl9qlzuir4] { min-inline-size: 5rem; }
.bu-reg-code[b-kl9qlzuir4] { font-size: 1.5rem; letter-spacing: 0.25em; text-align: center; }
/* The bot trap: out of sight and out of the tab order, but present in the form. */
.bu-reg-hp[b-kl9qlzuir4] { position: absolute; inset-inline-start: -10000px; inline-size: 1px; block-size: 1px; overflow: hidden; }
@media (max-width: 640px) {
  .bu-reg .bu-form-actions .bu-btn[b-kl9qlzuir4], .bu-reg .bu-form-actions .bu-btn-secondary[b-kl9qlzuir4] { inline-size: 100%; }
  .bu-reg-list li[b-kl9qlzuir4] { flex-wrap: wrap; }
}

/* R-1027-15: the green confirmation screen a person shows. Semantic state tokens; the check mark and the words carry the meaning too. */
.bu-reg-green[b-kl9qlzuir4] { text-align: center; padding: var(--structure-gap-lg, 1.5rem) var(--structure-gap-md); border: 3px solid var(--theme-border-inactive, currentColor); border-radius: var(--structure-radius-panel); margin-block: var(--structure-gap-md); }
.bu-reg-green.is-complete[b-kl9qlzuir4] { border-color: var(--theme-state-healthy, currentColor); background-color: color-mix(in srgb, var(--theme-state-healthy, transparent) 14%, transparent); }
.bu-reg-green.is-pending[b-kl9qlzuir4] { border-color: var(--theme-state-warning, currentColor); }
.bu-reg-green-mark[b-kl9qlzuir4] { margin: 0; font-size: 4rem; line-height: 1; font-weight: 700; }
.bu-reg-green.is-complete .bu-reg-green-mark[b-kl9qlzuir4] { color: var(--theme-state-healthy, inherit); }
.bu-reg-green p[b-kl9qlzuir4] { margin: var(--structure-gap-xs) 0; }
/* /Components/Pages/SignWaiver.razor.rz.scp.css */
/* /sign/{token}: phone first, tokens only. The waiver text sits in its own scroll box so "read to the end" is a real, checkable thing. */
.bu-sign[b-wczwy942ps] { margin-inline: auto; }
/* #520: the text flows in the page (no inner scroll box). Register and the event page still use .bu-sign-scroll for their own waiver step. */
.bu-sign-text[b-wczwy942ps] { margin: 0.75rem 0; }
.bu-sign-scroll[b-wczwy942ps] {
  max-height: 55vh; overflow-y: auto; padding: 0.75rem 1rem; margin: 0.75rem 0;
  border: 1px solid var(--theme-border-inactive); background: var(--theme-bg-surface, transparent);
  -webkit-overflow-scrolling: touch;
}
.bu-sign-scroll:focus-visible[b-wczwy942ps] { outline: 2px solid var(--theme-x-focus-ring, var(--theme-border-active)); outline-offset: 2px; }
.bu-sign-doc[b-wczwy942ps] { line-height: 1.5; overflow-wrap: anywhere; }
.bu-sign-doc[b-wczwy942ps]  h2, .bu-sign-doc[b-wczwy942ps]  h3, .bu-sign-doc[b-wczwy942ps]  h4 { margin: 1rem 0 0.5rem; }
.bu-sign-doc[b-wczwy942ps]  p { margin: 0 0 0.75rem; }
.bu-sign-doc[b-wczwy942ps]  ul { margin: 0 0 0.75rem 1.25rem; padding: 0; }
.bu-sign-doc[b-wczwy942ps]  hr { border: 0; border-top: 1px solid var(--theme-border-inactive); margin: 1rem 0; }
.bu-sign-controls[b-wczwy942ps] { border: 0; margin: 0; padding: 0; min-width: 0; }
.bu-sign-controls[disabled][b-wczwy942ps] { opacity: 0.55; }
.bu-sign-controls[b-wczwy942ps] { display: flex; flex-direction: column; gap: var(--structure-gap-md); }
.bu-sign-controls legend[b-wczwy942ps] { padding: 0 0 var(--structure-gap-xs); color: var(--theme-text-main); font-weight: 600; }
.bu-sign-controls .bu-btn[b-wczwy942ps] { min-height: var(--structure-touch-min); min-width: 8rem; }
@media (max-width: 640px) { .bu-sign-controls .bu-form-actions .bu-btn[b-wczwy942ps] { width: 100%; } }
@media (max-width: 640px) {
  .bu-sign-scroll[b-wczwy942ps] { max-height: 50vh; padding: 0.5rem 0.75rem; }
}
/* /Components/Pages/Teaser.razor.rz.scp.css */
/*
  Teaser.razor.css — scoped styling for PG-044. Structure/spacing only; color via
  --theme-* tokens (token-only styling law). Cobalt glow energy borrowed from the
  Fight Night skin's elevation-3 token (already documented, BUP-UI-SKIN-003).
*/

[b-oq9vx5kvne] .teaser-hero {
    min-height: 80vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    gap: var(--structure-gap-md);
}

[b-oq9vx5kvne] .teaser-backstage-row {
    margin-top: var(--structure-gap-lg);
}

[b-oq9vx5kvne] .teaser-backstage-row a {
    margin-left: var(--structure-gap-xs);
}

@media (max-width: 768px) {
    [b-oq9vx5kvne] .teaser-hero {
        min-height: 60vh;
    }
}
/* /Components/Shared/PageNav.razor.rz.scp.css */
.bu-page-nav[b-9cmo3prx97] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--structure-gap-sm);
    padding: var(--structure-gap-sm) var(--structure-gap-xl);
}

@media print {
    .bu-page-nav[b-9cmo3prx97] {
        display: none !important;
    }
}
