/* /Pages/Events/AvailabilityReport.razor.rz.scp.css */
/* The report's three headline tiles: what the figure counts, the figure, and what it is out of.
   The figure is the largest thing on the page because it is what the organizer came to read. */

.us-tile-label[b-7jx0qolskb] {
    margin: 0;
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-semibold);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text-secondary);
}

.us-tile-figure[b-7jx0qolskb] {
    margin: var(--space-1) 0;
    font-size: var(--font-size-2xl);
    font-weight: var(--font-weight-semibold);
    line-height: 1.25;
    color: var(--color-text-primary);
    font-variant-numeric: tabular-nums;
}

.us-tile-sub[b-7jx0qolskb] {
    margin: 0 0 var(--space-2);
    font-size: var(--font-size-sm);
    color: var(--color-text-secondary);
    font-variant-numeric: tabular-nums;
}

/* Nothing left. The one number on the page that stops a booking. */
.us-none-left[b-7jx0qolskb] {
    color: var(--color-error);
    font-weight: var(--font-weight-semibold);
    font-variant-numeric: tabular-nums;
}

.us-num[b-7jx0qolskb] {
    font-variant-numeric: tabular-nums;
}
/* /Pages/Events/EventDetails.razor.rz.scp.css */
/* The competition's own page: the facts that bound what can still be changed, then eight tabs
   over the same competition. */

/* Dates, deadline and state on one line. The separators are drawn rather than typed, so the
   line wraps into two without leaving a dangling middot at the end of the first. */
.us-event-facts[b-jwgadcqkxn] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--space-3);
    margin-bottom: var(--space-6);
    font-size: var(--font-size-sm);
    color: var(--color-text-secondary);
}

.us-event-facts > span:not(.us-pill) + span:not(.us-pill)[b-jwgadcqkxn] {
    padding-left: var(--space-3);
    border-left: 1px solid var(--color-border-strong);
}

.us-event-facts strong[b-jwgadcqkxn] {
    color: var(--color-text-primary);
    font-weight: var(--font-weight-semibold);
    font-variant-numeric: tabular-nums;
}

/* ── Tabs ───────────────────────────────────────────────────────
   An underline rather than Bootstrap's folder tabs: eight of those wrap into a second row and
   push the content down every time the window narrows. The active mark is an inset shadow in
   currentColor, so it follows the text colour - including on a themed page. */
.us-tabs[b-jwgadcqkxn] {
    display: flex;
    gap: var(--space-1);
    overflow-x: auto;
    border-bottom: 1px solid var(--color-border);
    margin-bottom: var(--space-6);
    /* The scrollbar must not sit on the underline. */
    scrollbar-width: thin;
}

.us-tab[b-jwgadcqkxn] {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-3) var(--space-4);
    border: none;
    background: none;
    white-space: nowrap;
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    color: var(--color-text-secondary);
    cursor: pointer;
    transition: color var(--transition-fast), background-color var(--transition-fast);
}

.us-tab:hover[b-jwgadcqkxn] {
    color: var(--color-text-primary);
    background-color: var(--color-surface-raised);
}

.us-tab:focus-visible[b-jwgadcqkxn] {
    outline: none;
    box-shadow: var(--focus-ring);
}

.us-tab.active[b-jwgadcqkxn] {
    color: var(--color-primary);
    box-shadow: inset 0 -2px 0 currentColor;
}

/* The count is a detail of the tab, not a second label - it recedes until the tab is the one
   being read. */
.us-tab-count[b-jwgadcqkxn] {
    font-variant-numeric: tabular-nums;
    color: var(--color-text-disabled);
}

.us-tab.active .us-tab-count[b-jwgadcqkxn],
.us-tab:hover .us-tab-count[b-jwgadcqkxn] {
    color: inherit;
}

/* Wide tables scroll inside their card rather than pushing the page sideways. */
.us-table-scroll[b-jwgadcqkxn] {
    overflow-x: auto;
}

/* Zero is the number that stops a booking: it reads as an alert, not as another figure. */
.us-none-left[b-jwgadcqkxn] {
    color: var(--color-error);
    font-weight: var(--font-weight-semibold);
}

.us-num[b-jwgadcqkxn] {
    font-variant-numeric: tabular-nums;
}

/* A card that adds something is headed by the thing being created, with the action on the right:
   "New venue" … "+ Add venue". Closed, the card is one line and the tab opens on its data. */
.us-card-head[b-jwgadcqkxn] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-4);
}

/* ── Card heads with a filter ───────────────────────────────── */
.us-list-head[b-jwgadcqkxn] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--space-4);
    flex-wrap: wrap;
    margin-bottom: var(--space-4);
}

.us-list-filters[b-jwgadcqkxn] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

/* Work the organizer owes somebody, under the title of the thing it is owed on. Warning ink
   rather than the warning colour itself: this is text on the card, not a chip. */
.us-waiting[b-jwgadcqkxn] {
    margin: var(--space-1) 0 0;
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    color: var(--color-warning-ink);
}

.us-empty[b-jwgadcqkxn] {
    padding: var(--space-8);
    text-align: center;
    background: var(--color-surface-raised);
    border: 1px dashed var(--color-border);
    border-radius: var(--radius-md);
}

.us-empty-title[b-jwgadcqkxn] {
    margin: 0;
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-primary);
}

.us-empty-body[b-jwgadcqkxn] {
    margin: var(--space-2) 0 0;
    color: var(--color-text-secondary);
}
/* /Pages/Events/Events.razor.rz.scp.css */
/* The competitions list. Two numbers carry the page - how many teams are in, and how close the
   rooms are to full on the busiest night - so both are set in tabular figures and can be read
   straight down the column. */

.us-list-head[b-b5l5bg7o03] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--space-4);
    flex-wrap: wrap;
    margin-bottom: var(--space-4);
}

/* How much of the organizer's own list is on screen, under the title that names it. */
.us-list-count[b-b5l5bg7o03] {
    margin: var(--space-1) 0 0;
    font-size: var(--font-size-sm);
    color: var(--color-text-secondary);
    font-variant-numeric: tabular-nums;
}

.us-list-filters[b-b5l5bg7o03] {
    display: flex;
    align-items: center;
    gap: var(--space-4);
    flex-wrap: wrap;
}

.us-list-filters .form-check[b-b5l5bg7o03] {
    margin-bottom: 0;
}

/* Eight columns survive a narrow window by scrolling inside the card, rather than pushing the
   page sideways. */
.us-table-scroll[b-b5l5bg7o03] {
    overflow-x: auto;
}

.us-events-table[b-b5l5bg7o03] {
    margin-bottom: 0;
}

.us-event-name[b-b5l5bg7o03] {
    font-weight: var(--font-weight-medium);
}

/* The registration link as it is actually typed, so an organizer can read it off the row. */
.us-event-slug[b-b5l5bg7o03] {
    font-family: var(--font-family-mono);
    font-size: var(--font-size-xs);
    color: var(--color-text-secondary);
}

.us-events-table th.us-num[b-b5l5bg7o03],
.us-events-table td.us-num[b-b5l5bg7o03] {
    text-align: right;
    white-space: nowrap;
}

.us-num-cell[b-b5l5bg7o03] {
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.us-teams[b-b5l5bg7o03] {
    font-weight: var(--font-weight-semibold);
    font-variant-numeric: tabular-nums;
}

.us-people[b-b5l5bg7o03] {
    font-size: var(--font-size-xs);
    color: var(--color-text-secondary);
    font-variant-numeric: tabular-nums;
}

/* The bar needs a column it can actually fill; left to itself it collapses to its content. */
.us-events-table th.us-rooms[b-b5l5bg7o03],
.us-events-table td.us-rooms[b-b5l5bg7o03] {
    min-width: 160px;
}

.us-row-actions[b-b5l5bg7o03] {
    white-space: nowrap;
}

.us-row-actions .btn + .btn[b-b5l5bg7o03] {
    margin-left: var(--space-2);
}

/* An empty list says which empty it is - nothing created yet, or nothing open right now - and
   what to do about it. A bare header row says neither. */
.us-empty[b-b5l5bg7o03] {
    padding: var(--space-8);
    text-align: center;
    background: var(--color-surface-raised);
    border: 1px dashed var(--color-border);
    border-radius: var(--radius-md);
}

.us-empty-title[b-b5l5bg7o03] {
    margin: 0;
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-primary);
}

.us-empty-body[b-b5l5bg7o03] {
    margin: var(--space-2) 0 0;
    color: var(--color-text-secondary);
}
/* /Pages/Events/Register/AccommodationStep.razor.rz.scp.css */
/* Booking rooms, a night at a time. One card per room type, one row per night: the row states
   which night it is and what is left on it, so nothing has to be read off a column heading. */

.us-roomtype[b-1nlk0imlhg] {
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: var(--space-4);
    margin-bottom: var(--space-4);
    background: var(--color-surface);
}

.us-roomtype-head[b-1nlk0imlhg] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--space-4);
    flex-wrap: wrap;
    margin-bottom: var(--space-3);
}

.us-roomtype-name[b-1nlk0imlhg] {
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-semibold);
}

.us-roomtype-meta[b-1nlk0imlhg] {
    font-size: var(--font-size-sm);
    color: var(--color-text-secondary);
}

.us-roomtype-every[b-1nlk0imlhg] {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    flex-wrap: wrap;
}

.us-roomtype-every-label[b-1nlk0imlhg] {
    font-size: var(--font-size-sm);
    color: var(--color-text-secondary);
}

/* ── One night ──────────────────────────────────────────────── */
.us-night[b-1nlk0imlhg] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-4);
    min-height: 44px;
    padding: var(--space-3) var(--space-4);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
}

.us-night + .us-night[b-1nlk0imlhg] {
    margin-top: var(--space-2);
}

/* A night with nothing left stays on the page, greyed. Removing it would leave the team counting
   rows to work out which night was missing. */
.us-night-full[b-1nlk0imlhg] {
    background: var(--color-surface-raised);
    color: var(--color-text-disabled);
}

.us-night-date[b-1nlk0imlhg] {
    font-size: 15px;
    font-weight: var(--font-weight-medium);
}

.us-night-free[b-1nlk0imlhg] {
    font-size: var(--font-size-sm);
    color: var(--color-text-secondary);
    font-variant-numeric: tabular-nums;
}

/* Two or fewer is the point at which waiting costs the team the booking. */
.us-night-free-low[b-1nlk0imlhg] {
    color: var(--color-warning-ink);
    font-weight: var(--font-weight-medium);
}

.us-night-free-none[b-1nlk0imlhg] {
    color: var(--color-text-disabled);
}

.us-roomtype-foot[b-1nlk0imlhg] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-4);
    margin-top: var(--space-3);
    padding-top: var(--space-3);
    border-top: 1px solid var(--color-border);
    font-size: var(--font-size-sm);
    color: var(--color-text-secondary);
}

.us-roomtype-foot strong[b-1nlk0imlhg] {
    color: var(--color-text-primary);
    font-variant-numeric: tabular-nums;
}

/* ── Notes ──────────────────────────────────────────────────── */
.us-note[b-1nlk0imlhg] {
    border-radius: var(--radius-md);
    padding: var(--space-3) var(--space-4);
    margin-bottom: var(--space-4);
    font-size: var(--font-size-sm);
    line-height: 1.6;
}

.us-note strong[b-1nlk0imlhg] {
    display: block;
}

.us-note-warning[b-1nlk0imlhg] {
    background: var(--color-warning-subtle);
    color: var(--color-warning-ink);
    border-left: 4px solid var(--color-warning);
}

.us-note-info[b-1nlk0imlhg] {
    background: var(--color-info-subtle);
    color: var(--color-info-ink);
    border-left: 4px solid var(--color-info);
}

/* ── Refund ladder ──────────────────────────────────────────── */
.us-ladder[b-1nlk0imlhg] {
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: var(--space-4);
    margin-bottom: var(--space-4);
    background: var(--color-surface-raised);
}

.us-num[b-1nlk0imlhg] {
    font-variant-numeric: tabular-nums;
}

.us-refund-none[b-1nlk0imlhg] {
    color: var(--color-error);
    font-weight: var(--font-weight-semibold);
    font-variant-numeric: tabular-nums;
}
/* /Pages/Events/Register/ReviewStep.razor.rz.scp.css */
/* ── Notes ──────────────────────────────────────────────────── */
.us-note[b-yrjc645jrw] {
    border-radius: var(--radius-md);
    padding: var(--space-3) var(--space-4);
    margin-bottom: var(--space-4);
    font-size: var(--font-size-sm);
    line-height: 1.6;
}

.us-note strong[b-yrjc645jrw] {
    display: block;
}

.us-note-info[b-yrjc645jrw] {
    background: var(--color-info-subtle);
    color: var(--color-info-ink);
    border-left: 4px solid var(--color-info);
}

/* Each section is a card headed by what it is, with the way back to the step that set it. */
.us-review-head[b-yrjc645jrw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-4);
    margin-bottom: var(--space-3);
}

.us-table-scroll[b-yrjc645jrw] {
    overflow-x: auto;
}

.us-review-table td[b-yrjc645jrw],
.us-review-table th[b-yrjc645jrw] {
    font-variant-numeric: tabular-nums;
}

/* The line the team is actually agreeing to. No bottom border - nothing follows it. */
.us-review-total td[b-yrjc645jrw] {
    font-weight: var(--font-weight-semibold);
    border-bottom: none;
}

/* ── Done ───────────────────────────────────────────────────────
   The end of a seven-step form. Centred and uncluttered on purpose: there is exactly one thing to
   read here, and two things that can be done next. */
.us-done[b-yrjc645jrw] {
    text-align: center;
    padding: var(--space-12) var(--space-8);
}

.us-done-mark[b-yrjc645jrw] {
    width: 56px;
    height: 56px;
    margin: 0 auto var(--space-4);
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-full);
    background: var(--color-success-subtle);
    color: var(--color-success);
    font-size: 28px;
    line-height: 1;
}

.us-done-title[b-yrjc645jrw] {
    font-size: var(--font-size-2xl);
    font-weight: var(--font-weight-semibold);
    line-height: 1.25;
    margin: 0 0 var(--space-2);
}

.us-done-body[b-yrjc645jrw] {
    color: var(--color-text-secondary);
    margin: 0 0 var(--space-6);
}

.us-done-actions[b-yrjc645jrw] {
    display: flex;
    gap: var(--space-3);
    justify-content: center;
    flex-wrap: wrap;
}
/* /Pages/Events/Register/TeamInfoStep.razor.rz.scp.css */
/* Consent is a decision, not a line item. Each one gets its own bordered block headed by whether
   it is required, so the optional one cannot be mistaken for something that has to be agreed to.
   The whole block is the label, so the hit area is the block rather than the 18px box. */
.us-consent[b-vms8p0hwal] {
    display: flex;
    gap: var(--space-3);
    align-items: flex-start;
    cursor: pointer;
    padding: var(--space-4);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    background: var(--color-surface-raised);
    font-size: var(--font-size-sm);
    line-height: 1.6;
}

.us-consent-invalid[b-vms8p0hwal] {
    border-color: var(--color-error);
}

.us-consent-box[b-vms8p0hwal] {
    width: 18px;
    height: 18px;
    margin-top: 2px;
    flex-shrink: 0;
    accent-color: var(--color-primary);
}

.us-consent-kind[b-vms8p0hwal] {
    display: block;
    font-size: var(--font-size-base);
    font-weight: var(--font-weight-semibold);
    margin-bottom: 2px;
    color: var(--color-text-primary);
}

/* What not ticking it costs - the part a registrant needs before deciding, not after. */
.us-consent-hint[b-vms8p0hwal] {
    display: block;
    margin-top: var(--space-2);
    color: var(--color-text-secondary);
}

.us-consent-error[b-vms8p0hwal] {
    display: block;
    margin-top: var(--space-2);
    color: var(--color-error);
    font-weight: var(--font-weight-medium);
}
/* /Shared/BrandMark.razor.rz.scp.css */
.us-brandonly-mark[b-kmi2flarjt] {
    display: block;
    line-height: 0;
}

.us-brandonly-mark img[b-kmi2flarjt] {
    width: min(320px, 70vw);
    height: auto;
}

.us-brandonly-name[b-kmi2flarjt] {
    display: block;
    font-weight: 700;
    font-size: clamp(1.4rem, 4vw, 2.2rem);
    line-height: 1.2;
    text-align: center;
    color: inherit;
}
/* /Shared/BrandOnlyLayout.razor.rz.scp.css */
.us-brandonly-shell[b-nm6w3k88rd] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    padding: var(--space-6);
    background: var(--color-background);
}
/* /Shared/Events/RegistrationDetail.razor.rz.scp.css */
/* The strip that answers "what has this team got?" before any of the editable sections. Six
   label-over-value pairs on an inset panel, wrapping to as many rows as the window allows. */

.us-summary[b-1xanqshoxn] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: var(--space-4);
    margin: var(--space-4) 0 0;
    padding: var(--space-4);
    background: var(--color-surface-raised);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
}

.us-summary dt[b-1xanqshoxn] {
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-semibold);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text-secondary);
}

.us-summary dd[b-1xanqshoxn] {
    margin: var(--space-1) 0 0;
    font-size: var(--font-size-sm);
    color: var(--color-text-primary);
    font-variant-numeric: tabular-nums;
}

/* A registration holding nothing says so in a sentence: a strip of six "None"s reads as a fault
   rather than as a draft nobody has finished. */
.us-summary-note[b-1xanqshoxn] {
    margin: var(--space-4) 0 0;
    padding: var(--space-4);
    background: var(--color-surface-raised);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    font-size: var(--font-size-sm);
    color: var(--color-text-secondary);
}
/* /Shared/Events/RegistrationLayout.razor.rz.scp.css */
/* Form left, running total right. Below 900px the total drops under the form rather than
   squeezing into a column too narrow to read a money figure in. */
.us-reg[b-r39knf9sc3] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 320px;
    gap: var(--space-6);
    align-items: start;
}

.us-reg-main[b-r39knf9sc3] {
    min-width: 0;
}

.us-reg-title[b-r39knf9sc3] {
    font-size: var(--font-size-2xl);
    font-weight: var(--font-weight-semibold);
    line-height: 1.25;
    margin: 0 0 var(--space-2);
}

.us-reg-lead[b-r39knf9sc3] {
    color: var(--color-text-secondary);
    margin: 0 0 var(--space-6);
}

@media (max-width: 900px) {
    .us-reg[b-r39knf9sc3] {
        grid-template-columns: 1fr;
    }
}
/* /Shared/Events/RegistrationNav.razor.rz.scp.css */
.us-reg-nav[b-gkslkak1qx] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--space-4);
    flex-wrap: wrap;
    margin-top: var(--space-6);
    padding-top: var(--space-4);
    border-top: 1px solid var(--color-border);
}

.us-reg-nav-end[b-gkslkak1qx] {
    display: flex;
    align-items: center;
    gap: var(--space-4);
    flex-wrap: wrap;
}

.us-reg-nav-note[b-gkslkak1qx] {
    font-size: var(--font-size-sm);
    color: var(--color-text-secondary);
}
/* /Shared/Events/RegistrationProgress.razor.rz.scp.css */
.us-progress[b-c9mt3e6l0e] {
    margin-bottom: var(--space-6);
}

.us-progress-head[b-c9mt3e6l0e] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--space-4);
    flex-wrap: wrap;
    margin-bottom: var(--space-3);
}

.us-progress-count[b-c9mt3e6l0e] {
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-semibold);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text-secondary);
}

/* The line that lets someone stop half way. It is the answer to "will I lose this?", so it sits
   with the step count rather than at the foot of the form where it would be found too late. */
.us-progress-saved[b-c9mt3e6l0e] {
    font-size: var(--font-size-sm);
    color: var(--color-text-secondary);
}

.us-progress-steps[b-c9mt3e6l0e] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    list-style: none;
    margin: 0;
    padding: 0;
}

.us-step[b-c9mt3e6l0e] {
    display: inline-block;
    padding: 0.45em 0.9em;
    border: 1px solid transparent;
    border-radius: var(--radius-full);
    font-size: 0.8125rem;
    font-weight: var(--font-weight-medium);
    white-space: nowrap;
    text-decoration: none;
}

/* Done is green and clickable - the team can go back and change any of it. */
.us-step-done[b-c9mt3e6l0e] {
    background: var(--color-success-subtle);
    color: var(--color-success-ink);
}

.us-step-done:hover[b-c9mt3e6l0e] {
    background: var(--color-success-subtle);
    color: var(--color-success-ink);
    text-decoration: underline;
}

.us-step-current[b-c9mt3e6l0e] {
    background: var(--color-primary);
    color: var(--color-text-inverse);
}

.us-step-todo[b-c9mt3e6l0e] {
    background: var(--color-surface);
    border-color: var(--color-border);
    color: var(--color-text-secondary);
    opacity: 0.6;
    cursor: not-allowed;
}

.us-step:focus-visible[b-c9mt3e6l0e] {
    outline: none;
    box-shadow: var(--focus-ring);
}
/* /Shared/Events/RegistrationSummary.razor.rz.scp.css */
/* The running total, beside the form. Sticky so it stays in view down a long step - the point of
   it is to be readable while a choice is being made. */
.us-reg-summary[b-q7frgqwm2z] {
    position: sticky;
    top: calc(var(--topbar-height) + var(--space-4));
}

.us-summary-title[b-q7frgqwm2z] {
    font-size: var(--font-size-md);
    font-weight: var(--font-weight-semibold);
    margin: 0 0 var(--space-3);
}

.us-summary-rows[b-q7frgqwm2z] {
    margin: 0;
}

.us-summary-rows > div[b-q7frgqwm2z] {
    display: flex;
    justify-content: space-between;
    gap: var(--space-3);
    padding: 6px 0;
    font-size: var(--font-size-sm);
}

.us-summary-rows dt[b-q7frgqwm2z] {
    color: var(--color-text-secondary);
    font-weight: var(--font-weight-regular, 400);
}

.us-summary-rows dd[b-q7frgqwm2z] {
    margin: 0;
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.us-summary-rows hr[b-q7frgqwm2z] {
    border: none;
    border-top: 1px solid var(--color-border);
    margin: var(--space-2) 0;
}

.us-summary-total dt[b-q7frgqwm2z],
.us-summary-total dd[b-q7frgqwm2z] {
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-primary);
}

/* Says what this screen is not: a checkout. */
.us-summary-note[b-q7frgqwm2z] {
    margin: var(--space-3) 0 0;
    font-size: var(--font-size-xs);
    color: var(--color-text-secondary);
    line-height: 1.6;
}

.us-summary-kicker[b-q7frgqwm2z] {
    margin: 0 0 var(--space-2);
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-semibold);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text-secondary);
}

.us-summary-contact[b-q7frgqwm2z] {
    margin: 0 0 var(--space-1);
    font-size: var(--font-size-sm);
    word-break: break-word;
}
/* /Shared/Events/Stepper.razor.rz.scp.css */
.us-stepper[b-6tj91ypu91] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

.us-stepper-btn[b-6tj91ypu91] {
    width: 34px;
    height: 34px;
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    line-height: 1;
    background: var(--color-surface);
    color: var(--color-text-primary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: background-color var(--transition-fast), border-color var(--transition-fast);
}

.us-stepper-btn:hover:not(:disabled)[b-6tj91ypu91] {
    background: var(--color-surface-overlay);
}

.us-stepper-btn:focus-visible[b-6tj91ypu91] {
    outline: none;
    box-shadow: var(--focus-ring);
}

/* Disabled stays visible: the row has to keep reading as a row, and a missing button looks like
   a rendering fault rather than a cap. */
.us-stepper-btn:disabled[b-6tj91ypu91] {
    color: var(--color-text-disabled);
    cursor: not-allowed;
}

.us-stepper-value[b-6tj91ypu91] {
    width: 44px;
    text-align: center;
    padding: var(--space-1) 0;
    font-size: var(--font-size-base);
    font-variant-numeric: tabular-nums;
    color: var(--color-text-primary);
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
}

.us-stepper-value:focus-visible[b-6tj91ypu91] {
    outline: none;
    border-color: var(--color-border-focus);
    box-shadow: var(--focus-ring);
}

.us-stepper-value:disabled[b-6tj91ypu91] {
    color: var(--color-text-disabled);
    background: var(--color-surface-raised);
    cursor: not-allowed;
}

/* A quantity that has been set is the row's answer, and reads heavier than the zeros around it. */
.us-stepper-value-set[b-6tj91ypu91] {
    font-weight: var(--font-weight-semibold);
}
/* /Shared/LanguagePicker.razor.rz.scp.css */
.us-language[b-hheira9dma] {
    display: inline-flex;
    gap: var(--space-3);
    align-items: center;
}

.us-language a[b-hheira9dma] {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.us-language a:hover[b-hheira9dma] {
    color: var(--color-text);
}

.us-language-current[b-hheira9dma] {
    font-weight: 600;
    color: var(--color-text);
}
/* /Shared/MainLayout.razor.rz.scp.css */
/* Modern top-bar layout shell */
.us-shell[b-lozvrkuzgu] {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    background: var(--color-background);
}

.us-main[b-lozvrkuzgu] {
    flex: 1;
    display: flex;
    flex-direction: column;
}

.us-content[b-lozvrkuzgu] {
    flex: 1;
    width: 100%;
    max-width: var(--content-max-width);
    margin: 0 auto;
    padding: var(--space-8) var(--space-6);
}

.us-footer[b-lozvrkuzgu] {
    border-top: 1px solid var(--color-border);
    background: var(--color-surface);
    margin-top: var(--space-12);
}

.us-footer-inner[b-lozvrkuzgu] {
    max-width: var(--content-max-width);
    margin: 0 auto;
    padding: var(--space-4) var(--space-6);
    display: flex;
    justify-content: space-between;
    align-items: center;
    color: var(--color-text-secondary);
    font-size: var(--font-size-sm);
}

@media (max-width: 640px) {
    .us-content[b-lozvrkuzgu] {
        padding: var(--space-5) var(--space-4);
    }
}
/* /Shared/NavMenu.razor.rz.scp.css */
/* Modern top navigation bar */
.us-topbar[b-k4dt3a40ci] {
    background: var(--color-surface);
    border-bottom: 1px solid var(--color-border);
    box-shadow: var(--shadow-xs);
    position: sticky;
    top: 0;
    z-index: var(--z-sticky);
}

.us-topbar-inner[b-k4dt3a40ci] {
    position: relative;
    max-width: var(--content-max-width);
    margin: 0 auto;
    height: var(--topbar-height);
    padding: 0 var(--space-6);
    display: flex;
    align-items: center;
    gap: var(--space-4);
    min-width: 0;
}

.us-brand[b-k4dt3a40ci] {
    display: inline-flex;
    align-items: center;
    flex: 0 0 auto;
    text-decoration: none;
}

    .us-brand:hover[b-k4dt3a40ci] {
        text-decoration: none;
    }

    .us-brand img[b-k4dt3a40ci] {
        display: block;
        height: 44px;
        width: auto;
        max-width: min(240px, 50vw);
        object-fit: contain;
    }

/* An organiser without a logo is shown by name, in the same slot and at the same weight. */
.us-brand-name[b-k4dt3a40ci] {
    font-weight: 700;
    font-size: 1.15rem;
    letter-spacing: 0.01em;
    color: inherit;
    white-space: nowrap;
}

.us-nav[b-k4dt3a40ci] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    flex: 1 1 auto;
    min-width: 0;
    flex-wrap: nowrap;
}

.us-nav-spacer[b-k4dt3a40ci] {
    flex: 1;
}

.us-nav-group-label[b-k4dt3a40ci] {
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-semibold);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--color-text-secondary);
    padding: 0 var(--space-2);
    border-left: 1px solid var(--color-border);
    margin-left: var(--space-2);
}

    .us-nav-group-label:first-of-type[b-k4dt3a40ci] {
        border-left: none;
        margin-left: 0;
    }

[b-k4dt3a40ci] .us-nav-link {
    display: inline-flex;
    align-items: center;
    flex: 0 0 auto;
    white-space: nowrap;
    line-height: 1.2;
    color: var(--color-text-secondary);
    text-decoration: none;
    padding: var(--space-2) var(--space-3);
    border-radius: var(--radius-md);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    transition: background-color var(--transition-fast), color var(--transition-fast);
}

[b-k4dt3a40ci] .us-nav-link:hover {
    background: var(--color-surface-overlay);
    color: var(--color-text-primary);
    text-decoration: none;
}

[b-k4dt3a40ci] .us-nav-link.active {
    color: var(--color-primary);
    background: var(--color-primary-subtle);
}

[b-k4dt3a40ci] .us-nav-cta {
    background: var(--color-primary);
    color: var(--color-text-inverse);
}

[b-k4dt3a40ci] .us-nav-cta:hover {
    background: var(--color-primary-hover);
    color: var(--color-text-inverse);
}

.us-nav-user[b-k4dt3a40ci] {
    display: block;
    max-width: 16ch;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Administration / user dropdowns */
.us-nav-dropdown[b-k4dt3a40ci] {
    position: relative;
    flex: 0 0 auto;
}

.us-nav-dropdown-toggle[b-k4dt3a40ci] {
    background: none;
    border: none;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    font: inherit;
    color: inherit;
}

.us-nav-user-toggle[b-k4dt3a40ci] {
    max-width: 100%;
}

.us-nav-caret[b-k4dt3a40ci] {
    font-size: 0.7em;
    line-height: 1;
    transition: transform var(--transition-fast);
}

.us-nav-dropdown.open .us-nav-caret[b-k4dt3a40ci] {
    transform: rotate(180deg);
}

.us-nav-dropdown-menu[b-k4dt3a40ci] {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    min-width: 220px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-md);
    padding: var(--space-2);
    z-index: var(--z-dropdown, 1000);
}

/* Anchored to the right edge so a menu at the end of the bar stays on screen */
.us-nav-dropdown-end .us-nav-dropdown-menu[b-k4dt3a40ci] {
    left: auto;
    right: 0;
}

.us-nav-dropdown.open .us-nav-dropdown-menu[b-k4dt3a40ci] {
    display: block;
}

[b-k4dt3a40ci] .us-nav-dropdown-item {
    display: block;
    padding: var(--space-2) var(--space-3);
    border-radius: var(--radius-sm);
    color: var(--color-text-primary);
    text-decoration: none;
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    white-space: nowrap;
}

[b-k4dt3a40ci] .us-nav-dropdown-item:hover {
    background: var(--color-surface-overlay);
    color: var(--color-text-primary);
    text-decoration: none;
}

[b-k4dt3a40ci] .us-nav-dropdown-item.active {
    color: var(--color-primary);
    background: var(--color-primary-subtle);
}

.us-nav-dropdown-divider[b-k4dt3a40ci] {
    height: 1px;
    background: var(--color-border);
    margin: var(--space-2) 0;
}

.us-nav-toggle[b-k4dt3a40ci] {
    display: none;
    background: none;
    border: none;
    width: 40px;
    height: 40px;
    cursor: pointer;
    padding: 0;
    margin-left: auto;
}

    .us-nav-toggle span[b-k4dt3a40ci] {
        display: block;
        width: 22px;
        height: 2px;
        background: var(--color-text-primary);
        margin: 4px auto;
        border-radius: 2px;
    }

/* The admin bar carries the most items, so it collapses well before tablet width */
@media (max-width: 1100px) {
    .us-nav-toggle[b-k4dt3a40ci] {
        display: block;
    }

    .us-nav[b-k4dt3a40ci] {
        display: none;
        position: absolute;
        top: var(--topbar-height);
        left: 0;
        right: 0;
        flex-direction: column;
        align-items: stretch;
        background: var(--color-surface);
        border-bottom: 1px solid var(--color-border);
        padding: var(--space-3);
        gap: var(--space-1);
        box-shadow: var(--shadow-md);
        max-height: calc(100vh - var(--topbar-height));
        overflow-y: auto;
    }

        .us-nav.open[b-k4dt3a40ci] {
            display: flex;
        }

    .us-nav-spacer[b-k4dt3a40ci] {
        display: none;
    }

    .us-nav-dropdown[b-k4dt3a40ci] {
        width: 100%;
    }

    /* Submenus are always expanded in the stacked menu, so the caret is noise */
    .us-nav-dropdown-toggle[b-k4dt3a40ci] {
        width: 100%;
        justify-content: flex-start;
    }

    .us-nav-caret[b-k4dt3a40ci] {
        display: none;
    }

    .us-nav-user[b-k4dt3a40ci] {
        max-width: 100%;
    }

    .us-nav-dropdown-menu[b-k4dt3a40ci],
    .us-nav-dropdown-end .us-nav-dropdown-menu[b-k4dt3a40ci] {
        display: block;
        position: static;
        left: auto;
        right: auto;
        border: none;
        border-left: 1px solid var(--color-border);
        border-radius: 0;
        box-shadow: none;
        margin-left: var(--space-3);
        padding: 0 0 0 var(--space-3);
        background: transparent;
        min-width: 0;
    }
}
/* /Shared/PageHeader.razor.rz.scp.css */
/* .us-page-header itself (the bottom margin) is a global utility in design-tokens.css; the rest
   of the block is styled here, scoped to the component. */

.us-page-kicker[b-fmzj9ynfkl] {
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-semibold);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text-secondary);
    margin-bottom: var(--space-2);
}

.us-page-header-row[b-fmzj9ynfkl] {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: var(--space-6);
    flex-wrap: wrap;
}

.us-page-header-text[b-fmzj9ynfkl] {
    min-width: 0;
}

/* A page title is 30px, not the 36px h1 default: card headings are 20px, and the page keeps one
   step between levels. */
h1[b-fmzj9ynfkl] {
    margin: 0;
    font-size: var(--font-size-2xl);
    font-weight: var(--font-weight-semibold);
    line-height: var(--line-height-tight);
}

.us-page-lead[b-fmzj9ynfkl] {
    margin: var(--space-2) 0 0 0;
    color: var(--color-text-secondary);
    max-width: 70ch;
}

.us-page-header-actions[b-fmzj9ynfkl] {
    display: flex;
    gap: var(--space-2);
    flex-shrink: 0;
}
/* /Shared/Pager.razor.rz.scp.css */
.us-pager[b-w7hvq3bi4p] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    margin-top: var(--space-3);
}

.pagination[b-w7hvq3bi4p] {
    gap: 2px;
    margin: 0;
}

.page-link[b-w7hvq3bi4p] {
    color: var(--color-text-primary);
    border-color: var(--color-border);
    cursor: pointer;
}

.page-item.active .page-link[b-w7hvq3bi4p] {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: #fff;
}

.us-pager-meta[b-w7hvq3bi4p] {
    white-space: nowrap;
}
/* /Shared/SaveIndicatorToast.razor.rz.scp.css */
.us-save-toast[b-0dgiodiq4v] {
    position: fixed;
    right: var(--space-5);
    bottom: var(--space-5);
    /* Above .us-modal (1050 in site.css), so a "Saved" is never hidden behind a dialog. */
    z-index: 1060;
    display: flex;
    align-items: center;
    gap: var(--space-2);
    min-height: 2.25rem;
    padding: var(--space-2) var(--space-4);
    border-radius: var(--radius-full);
    background: var(--color-gray-800);
    color: var(--color-text-inverse);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    box-shadow: var(--shadow-lg);
    opacity: 0;
    transform: translateY(0.5rem);
    pointer-events: none;
    transition: opacity var(--transition-base), transform var(--transition-base);
}

.us-save-toast-visible[b-0dgiodiq4v] {
    opacity: 1;
    transform: none;
}

.us-save-toast-succeeded[b-0dgiodiq4v] {
    background: var(--color-success);
}

.us-save-toast-failed[b-0dgiodiq4v] {
    background: var(--color-error);
}

.us-save-toast-icon[b-0dgiodiq4v] {
    width: 1rem;
    height: 1rem;
    flex-shrink: 0;
}

@media (max-width: 640px) {
    .us-save-toast[b-0dgiodiq4v] {
        right: var(--space-4);
        bottom: var(--space-4);
    }
}

@media (prefers-reduced-motion: reduce) {
    .us-save-toast[b-0dgiodiq4v] {
        transition: none;
        transform: none;
    }
}
