/* /Components/Admin/Badges/BulkActionBar.razor.rz.scp.css */
/* Plan 48-01: BulkActionBar - Spotlight sticky-bottom bar. Zero raw hex. */

.tcw-bulk-action-bar[b-0buibc7ce8] {
    position: sticky;
    bottom: 0;
    z-index: 10;
    align-items: center;
    justify-content: space-between;
    gap: var(--tcw-space-4);
    padding: var(--tcw-space-3) var(--tcw-space-5);
    background-color: var(--tcw-spotlight);
    border-radius: var(--tcw-radius-subtle);
    margin-top: var(--tcw-space-4);
}

.tcw-bulk-count[b-0buibc7ce8] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-sm);
    font-variant-numeric: tabular-nums;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--tcw-text-primary);
}

.tcw-bulk-actions[b-0buibc7ce8] {
    display: flex;
    gap: var(--tcw-space-2);
}

.tcw-bulk-action-btn[b-0buibc7ce8] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    background: transparent;
    border: 1px solid var(--tcw-text-secondary);
    color: var(--tcw-text-primary);
    border-radius: var(--tcw-radius-sharp);
    padding: var(--tcw-space-2) var(--tcw-space-3);
    cursor: pointer;
}

.tcw-bulk-action-btn:hover[b-0buibc7ce8] {
    border-color: var(--tcw-accent-1);
    color: var(--tcw-text-primary);
}
/* /Components/Admin/Badges/CommandPalette.razor.rz.scp.css */
/* Plan 48-01: CommandPalette - Spotlight surface, mono search, magenta on active row only.
   Zero raw hex. */

[b-gt39r34193] .tcw-command-palette-dialog {
    background-color: var(--tcw-spotlight);
}

.tcw-command-palette[b-gt39r34193] {
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-3);
}

.tcw-command-palette-input[b-gt39r34193] {
    width: 100%;
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-base);
    background-color: var(--tcw-canvas);
    color: var(--tcw-text-primary);
    border: 1px solid var(--tcw-text-secondary);
    border-radius: var(--tcw-radius-subtle);
    padding: var(--tcw-space-3);
}

.tcw-command-palette-section[b-gt39r34193] {
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-1);
}

.tcw-command-palette-heading[b-gt39r34193] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--tcw-text-secondary);
    padding: var(--tcw-space-1) var(--tcw-space-2);
}

.tcw-command-palette-row[b-gt39r34193] {
    display: flex;
    align-items: center;
    gap: var(--tcw-space-3);
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    border-left: 3px solid transparent;
    color: var(--tcw-text-primary);
    padding: var(--tcw-space-2);
    cursor: pointer;
}

.tcw-command-palette-row:hover[b-gt39r34193],
.tcw-command-palette-row:focus-visible[b-gt39r34193] {
    background-color: var(--tcw-riser);
    border-left-color: var(--tcw-accent-1);
}

.tcw-command-palette-row-mono[b-gt39r34193] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-sm);
    color: var(--tcw-text-secondary);
}

.tcw-command-palette-empty[b-gt39r34193] {
    color: var(--tcw-text-secondary);
    font-size: var(--tcw-font-size-sm);
    padding: var(--tcw-space-2);
}
/* /Components/Admin/Badges/CopyableMonoId.razor.rz.scp.css */
/* Plan 48-02: CopyableMonoId - mono uppercase text + 44x44 copy button.
   Zero raw hex - all colors resolve through var(--tcw-*) tokens. */

.tcw-copyable-mono[b-kde46lyo6q] {
    display: inline-flex;
    align-items: center;
    gap: var(--tcw-space-2);
}

.tcw-copyable-mono-text[b-kde46lyo6q] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-base);
    letter-spacing: 0.02em;
    font-variant-numeric: tabular-nums;
    color: var(--tcw-text-primary);
}

.tcw-copyable-mono-btn[b-kde46lyo6q] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    background: transparent;
    border: 1px solid var(--tcw-text-secondary);
    border-radius: var(--tcw-radius-sharp);
    color: var(--tcw-text-secondary);
    cursor: pointer;
}

.tcw-copyable-mono-btn:hover[b-kde46lyo6q] {
    color: var(--tcw-text-primary);
    border-color: var(--tcw-text-primary);
}
/* /Components/Admin/Badges/DangerZoneBand.razor.rz.scp.css */
/* Plan 48-02: DangerZoneBand - full-width Sold Out Coal band.
   Zero raw hex - all colors resolve through var(--tcw-*) tokens. */

.tcw-danger-zone[b-okzfj1i592] {
    width: 100%;
    background-color: var(--tcw-status-sold-out);
    border: 1px solid var(--tcw-status-sold-out);
    border-top: 3px solid var(--tcw-text-secondary);
    border-radius: var(--tcw-radius-comfortable);
    padding: var(--tcw-space-5);
    margin-top: var(--tcw-space-6);
}

.tcw-danger-zone-heading[b-okzfj1i592] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-sm);
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--tcw-text-on-accent);
    margin: 0 0 var(--tcw-space-4);
}

.tcw-danger-zone-content[b-okzfj1i592] {
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-4);
}
/* /Components/Admin/Badges/PresetChipRow.razor.rz.scp.css */
/* Plan 48-03: PresetChipRow - mono uppercase pill chips.
   Zero raw hex - all colors resolve through var(--tcw-*) tokens. */

.tcw-preset-chip-row[b-skkqj12s3m] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--tcw-space-3);
    margin-bottom: var(--tcw-space-5);
}

.tcw-preset-chip[b-skkqj12s3m] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    min-width: 44px;
    padding: var(--tcw-space-2) var(--tcw-space-4);
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    background: transparent;
    border: 1px solid var(--tcw-spotlight);
    border-radius: var(--tcw-radius-pill);
    color: var(--tcw-text-primary);
    cursor: pointer;
}

.tcw-preset-chip:hover[b-skkqj12s3m] {
    border-color: var(--tcw-text-secondary);
}

.tcw-preset-chip:focus-visible[b-skkqj12s3m] {
    outline: 2px solid var(--tcw-accent-1);
    outline-offset: 2px;
}
/* /Components/Admin/Badges/RecentIssuedSidebar.razor.rz.scp.css */
/* Plan 48-03: RecentIssuedSidebar - Riser last-10-issued list.
   Zero raw hex - all colors resolve through var(--tcw-*) tokens.
   Reduced-motion is auto-gated via the --tcw-motion-slow token (TcwPaymentPending
   precedent) - do NOT add a separate @media (prefers-reduced-motion) block. */

.tcw-recent-sidebar[b-nsar5jsh74] {
    background-color: var(--tcw-riser);
    border-radius: var(--tcw-radius-comfortable);
    padding: var(--tcw-space-4);
}

.tcw-recent-sidebar-heading[b-nsar5jsh74] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--tcw-text-secondary);
    margin: 0 0 var(--tcw-space-4);
}

.tcw-recent-sidebar-empty[b-nsar5jsh74] {
    color: var(--tcw-text-secondary);
    font-size: var(--tcw-font-size-sm);
    margin: 0;
}

[b-nsar5jsh74] .tcw-recent-listview .e-list-item {
    background: transparent;
    padding: 0;
    border: none;
    height: auto;
}

.tcw-recent-row[b-nsar5jsh74] {
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-1);
    padding: var(--tcw-space-3);
    margin-bottom: var(--tcw-space-2);
    min-height: 44px;
    border-left: 2px solid var(--tcw-spotlight);
}

.tcw-recent-row-number[b-nsar5jsh74] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-sm);
    font-variant-numeric: tabular-nums;
    font-weight: 700;
    color: var(--tcw-text-primary);
}

.tcw-recent-row-name[b-nsar5jsh74] {
    font-family: var(--tcw-font-body);
    font-size: var(--tcw-font-size-sm);
    color: var(--tcw-text-primary);
}

.tcw-recent-row-time[b-nsar5jsh74] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    font-variant-numeric: tabular-nums;
    color: var(--tcw-text-secondary);
}

.tcw-recent-row--new[b-nsar5jsh74] {
    animation: tcw-recent-row-pulse-in-b-nsar5jsh74 calc(var(--tcw-motion-slow) * 6) ease-out forwards;
}

@keyframes tcw-recent-row-pulse-in-b-nsar5jsh74 {
    0% { border-left-color: var(--tcw-status-confirmed); }
    80% { border-left-color: var(--tcw-status-confirmed); }
    100% { border-left-color: var(--tcw-spotlight); }
}
/* /Components/Admin/Badges/SaleWindowStrip.razor.rz.scp.css */
/* Plan 48-04: SaleWindowStrip - zero raw hex, all colors resolve through
   var(--tcw-*) tokens / the --chip-color custom property (itself a var(--tcw-track-*)
   reference passed in from the component markup). */

.tcw-sale-strip[b-covrtyrq6o] {
    display: flex;
    align-items: center;
    gap: var(--tcw-space-2);
    min-width: 100px;
}

.tcw-sale-strip-track[b-covrtyrq6o] {
    position: relative;
    flex: 1 1 auto;
    height: 14px;
    min-width: 80px;
    background-color: var(--tcw-spotlight);
    border-radius: var(--tcw-radius-sharp);
    overflow: hidden;
}

.tcw-sale-strip-bar[b-covrtyrq6o] {
    position: absolute;
    top: 0;
    bottom: 0;
    background-color: var(--chip-color);
    border-radius: var(--tcw-radius-sharp);
}

.tcw-sale-strip-warning[b-covrtyrq6o] {
    flex-shrink: 0;
    color: var(--tcw-status-danger-text, var(--tcw-status-danger));
    font-size: var(--tcw-font-size-sm);
    line-height: 1;
}
/* /Components/Admin/Badges/SoldMaxProgress.razor.rz.scp.css */
/* Plan 48-04: SoldMaxProgress - zero raw hex, all colors resolve through
   var(--tcw-*) tokens. Bar color thresholds: <80% = --tcw-text-primary,
   80-99% = --tcw-status-tickets-low (amber), >=100% = --tcw-status-sold-out (coal). */

.tcw-sold-max[b-2uedglql6w] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 72px;
}

.tcw-sold-max-count[b-2uedglql6w] {
    font-family: var(--tcw-font-mono);
    font-variant-numeric: tabular-nums;
    font-size: var(--tcw-font-size-sm);
    color: var(--tcw-text-primary);
}

.tcw-sold-max-track[b-2uedglql6w] {
    height: 6px;
    background-color: var(--tcw-spotlight);
    border-radius: var(--tcw-radius-sharp);
    overflow: hidden;
}

.tcw-sold-max-bar[b-2uedglql6w] {
    height: 100%;
    border-radius: var(--tcw-radius-sharp);
}

.tcw-sold-max-bar--normal[b-2uedglql6w] {
    background-color: var(--tcw-text-primary);
}

.tcw-sold-max-bar--low[b-2uedglql6w] {
    background-color: var(--tcw-status-tickets-low);
}

.tcw-sold-max-bar--sold-out[b-2uedglql6w] {
    background-color: var(--tcw-status-sold-out);
}
/* /Components/Admin/Badges/StatusPill.razor.rz.scp.css */
/* Plan 48-01: StatusPill - locked --tcw-status-* tokens only, never --tcw-accent-1.
   Zero raw hex. */

.tcw-status-pill[b-vtcimpgfcl] {
    display: inline-block;
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: var(--tcw-space-1) var(--tcw-space-2);
    border-radius: var(--tcw-radius-sharp);
}

.tcw-status-pill--confirmed[b-vtcimpgfcl] {
    background-color: color-mix(in srgb, var(--tcw-status-confirmed-fill, var(--tcw-status-confirmed)) 15%, transparent);
    color: var(--tcw-status-confirmed-text, var(--tcw-status-confirmed));
}

.tcw-status-pill--tickets-low[b-vtcimpgfcl] {
    background-color: color-mix(in srgb, var(--tcw-status-tickets-low-fill, var(--tcw-status-tickets-low)) 15%, transparent);
    color: var(--tcw-status-tickets-low-text, var(--tcw-status-tickets-low));
}

.tcw-status-pill--sold-out[b-vtcimpgfcl] {
    background-color: transparent;
    color: var(--tcw-status-sold-out-text, var(--tcw-status-sold-out));
    text-decoration: line-through;
}

.tcw-status-pill--comped[b-vtcimpgfcl] {
    background-color: transparent;
    border: 1px solid var(--tcw-spotlight);
    color: var(--tcw-text-secondary);
}
/* /Components/Admin/Badges/TierTileButton.razor.rz.scp.css */
/* Plan 48-03: TierTileButton - 64px tap-target tier tile.
   Zero raw hex - all colors resolve through var(--tcw-*) tokens. */

[b-ox0x1s9643] .tcw-tier-tile {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    gap: var(--tcw-space-1);
    min-height: 64px;
    min-width: 96px;
    padding: var(--tcw-space-2) var(--tcw-space-4);
    background-color: var(--tcw-spotlight);
    border: 2px solid transparent;
    border-radius: var(--tcw-radius-subtle);
    color: var(--tcw-text-primary);
    cursor: pointer;
}

[b-ox0x1s9643] .tcw-tier-tile:focus-visible {
    outline: 2px solid var(--tcw-accent-1);
    outline-offset: 2px;
}

[b-ox0x1s9643] .tcw-tier-tile--selected {
    border-color: var(--tcw-accent-1);
}

.tcw-tier-tile-name[b-ox0x1s9643] {
    display: block;
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--tcw-text-secondary);
}

.tcw-tier-tile-price[b-ox0x1s9643] {
    display: block;
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-lg);
    font-variant-numeric: tabular-nums;
    color: var(--tcw-text-primary);
    font-weight: 700;
}
/* /Components/Admin/Badges/TierTypeChip.razor.rz.scp.css */
/* Plan 48-04: TierTypeChip - zero raw hex, all colors resolve through the
   --chip-color custom property set inline by the component (itself a var(--tcw-track-*)
   reference, never a raw hex). Dot + 1px border only - never a filled background.

   WCAG 1.4.3 fix (a11y review): the label TEXT uses --tcw-text-primary, not
   --chip-color. The 6 --tcw-track-* tokens are UI/graphical accents (dot fill,
   border) subject to the more forgiving 1.4.11 non-text-contrast (3:1), not the
   4.5:1 text-contrast floor. Measured contrast of raw --tcw-track-* tokens against
   several --tcw-canvas swatches (stage-noir, festival-plum, galaxy-neon,
   tabletop-twilight) fell as low as ~1.5:1-2.6:1 - a severe 1.4.3 failure if used
   as text color. --tcw-text-primary is the theme's guaranteed-compliant body text
   token; the dot + border still carry the per-TierType track-color identity. */

[b-k3r5ojvi3u] .tcw-tier-chip {
    display: inline-flex;
    align-items: center;
    gap: var(--tcw-space-1);
    padding: 2px var(--tcw-space-2);
    border: 1px solid var(--chip-color);
    border-radius: var(--tcw-radius-pill);
    background-color: transparent;
    color: var(--tcw-text-primary);
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    white-space: nowrap;
}

.tcw-tier-chip-dot[b-k3r5ojvi3u] {
    width: 6px;
    height: 6px;
    flex-shrink: 0;
    border-radius: var(--tcw-radius-pill);
    background-color: var(--chip-color);
}
/* /Components/Admin/Badges/TypedConfirmDialog.razor.rz.scp.css */
/* Plan 48-02: TypedConfirmDialog - Spotlight surface, coal confirm button.
   Confirm is --tcw-status-sold-out (coal) - NEVER --tcw-accent-1 (W2-02 R6).
   Zero raw hex - all colors resolve through var(--tcw-*) tokens. */

[b-sosf7ecap9] .tcw-typed-confirm-dialog {
    background-color: var(--tcw-spotlight);
}

.tcw-typed-confirm-body[b-sosf7ecap9] {
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-3);
}

.tcw-typed-confirm-instructions[b-sosf7ecap9] {
    color: var(--tcw-text-primary);
    margin: 0;
}

.tcw-typed-confirm-expected[b-sosf7ecap9] {
    font-family: var(--tcw-font-mono);
    text-transform: uppercase;
    background-color: var(--tcw-canvas);
    color: var(--tcw-text-primary);
    padding: 2px 6px;
    border-radius: var(--tcw-radius-sharp);
}

.tcw-typed-confirm-input[b-sosf7ecap9] {
    width: 100%;
    min-height: 44px;
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-base);
    background-color: var(--tcw-canvas);
    color: var(--tcw-text-primary);
    border: 1px solid var(--tcw-text-secondary);
    border-radius: var(--tcw-radius-subtle);
    padding: var(--tcw-space-3);
}

.tcw-typed-confirm-error[b-sosf7ecap9] {
    color: var(--tcw-status-danger-text, var(--tcw-status-danger));
    font-size: var(--tcw-font-size-sm);
    margin: 0;
}

[b-sosf7ecap9] .tcw-typed-confirm-confirm-btn.e-btn {
    background-color: var(--tcw-status-sold-out);
    border-color: var(--tcw-status-sold-out);
    color: var(--tcw-text-on-accent);
}

[b-sosf7ecap9] .tcw-typed-confirm-confirm-btn.e-btn:disabled {
    opacity: 0.5;
}
/* /Components/Admin/Theme/FontSystemPicker.razor.rz.scp.css */
/* =============================================================================
   Plan 43-06 — FontSystemPicker isolated CSS
   ============================================================================= */

.tcw-font-picker[b-la3af1kxvx] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: var(--tcw-space-4);
}

.tcw-font-card[b-la3af1kxvx] {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-3);
    padding: var(--tcw-space-4);
    background-color: var(--tcw-riser);
    color: var(--tcw-text-primary, inherit);
    border: 2px solid transparent;
    border-radius: var(--tcw-radius-subtle);
    cursor: pointer;
    text-align: left;
    transition: border-color 0.15s ease, transform 0.15s ease;
    font-family: var(--tcw-font-body);
}

.tcw-font-card:hover[b-la3af1kxvx] {
    border-color: var(--tcw-spotlight);
    transform: translateY(-1px);
}

.tcw-font-card:focus-visible[b-la3af1kxvx] {
    outline: 3px solid var(--tcw-accent-1);
    outline-offset: 2px;
}

.tcw-font-card.selected[b-la3af1kxvx] {
    border-color: var(--tcw-accent-1);
}

.tcw-font-card-sample[b-la3af1kxvx] {
    background-color: var(--tcw-spotlight);
    color: var(--tcw-text-primary, inherit);
    border-radius: var(--tcw-radius-sharp);
    padding: var(--tcw-space-4);
    min-height: 96px;
    display: flex;
    align-items: center;
    overflow: hidden;
}

.tcw-font-card-hero[b-la3af1kxvx] {
    /* Critical: explicit display face per font system. The card sets
       data-font-system on the wrapper, and the font CSS bundles scope
       --tcw-font-display via [data-font-system="..."]. */
    font-family: var(--tcw-font-display, var(--tcw-font-body));
    font-size: var(--tcw-font-size-xl);
    font-weight: 700;
    line-height: 1.05;
    word-break: break-word;
}

.tcw-font-card-meta[b-la3af1kxvx] {
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-1);
}

.tcw-font-card-name[b-la3af1kxvx] {
    font-size: var(--tcw-font-size-base);
    font-weight: 600;
    line-height: 1.2;
}

.tcw-font-card-desc[b-la3af1kxvx] {
    font-size: var(--tcw-font-size-sm);
    color: var(--tcw-text-secondary, inherit);
    line-height: 1.2;
}

.tcw-font-card-selected-indicator[b-la3af1kxvx] {
    position: absolute;
    top: var(--tcw-space-2);
    right: var(--tcw-space-2);
    width: 24px;
    height: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--tcw-accent-1);
    color: var(--tcw-text-on-accent);
    border-radius: var(--tcw-radius-pill);
    font-weight: 700;
    font-size: var(--tcw-font-size-sm);
}

@media (prefers-reduced-motion: reduce) {
    .tcw-font-card[b-la3af1kxvx],
    .tcw-font-card:hover[b-la3af1kxvx] {
        transition: none;
        transform: none;
    }
}
/* /Components/Admin/Theme/LayoutPicker.razor.rz.scp.css */
/* =============================================================================
   Plan 49-03 — LayoutPicker isolated CSS
   Honest informational card — no interactive/hover/focus states, since the
   card contains zero focusable/clickable elements by design.
   ============================================================================= */

.tcw-layout-picker-card[b-j7quehc1ir] {
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-2);
    padding: var(--tcw-space-3);
    background-color: var(--tcw-riser);
    border: 2px solid var(--tcw-spotlight);
    border-radius: var(--tcw-radius-subtle);
    font-family: var(--tcw-font-body);
}

.tcw-layout-picker-name[b-j7quehc1ir] {
    font-size: var(--tcw-font-size-base);
    font-weight: 600;
    color: var(--tcw-text-primary, inherit);
}

.tcw-layout-picker-note[b-j7quehc1ir] {
    margin: 0;
    font-size: var(--tcw-font-size-sm);
    color: var(--tcw-text-secondary, inherit);
}
/* /Components/Admin/Theme/LogoUploader.razor.rz.scp.css */
/* =============================================================================
   Plan 43-06 — LogoUploader isolated CSS
   ============================================================================= */

.tcw-logo-uploader[b-j1hr4ppmij] {
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-3);
}

.tcw-logo-preview[b-j1hr4ppmij] {
    display: flex;
    align-items: center;
    gap: var(--tcw-space-3);
    padding: var(--tcw-space-3);
    background-color: var(--tcw-spotlight);
    border-radius: var(--tcw-radius-subtle);
}

.tcw-logo-preview img[b-j1hr4ppmij] {
    max-width: 200px;
    max-height: 96px;
    height: auto;
    width: auto;
    display: block;
}

.tcw-logo-empty[b-j1hr4ppmij] {
    padding: var(--tcw-space-4);
    background-color: var(--tcw-spotlight);
    color: var(--tcw-text-secondary, inherit);
    border-radius: var(--tcw-radius-subtle);
    font-size: var(--tcw-font-size-sm);
    text-align: center;
    font-style: italic;
}

.tcw-logo-clear[b-j1hr4ppmij] {
    margin-left: auto;
    background: transparent;
    border: 1px solid var(--tcw-text-secondary, currentColor);
    color: var(--tcw-text-primary, inherit);
    padding: var(--tcw-space-1) var(--tcw-space-3);
    border-radius: var(--tcw-radius-subtle);
    font-size: var(--tcw-font-size-sm);
    cursor: pointer;
    font-family: var(--tcw-font-body);
}

.tcw-logo-clear:hover[b-j1hr4ppmij] {
    /* 43-08 R3: hover state uses text-primary for foreground (WCAG-safe on
       light swatches); border carries the accent to indicate interactivity. */
    border-color: var(--tcw-accent-1);
    color: var(--tcw-text-primary, inherit);
}

.tcw-logo-error[b-j1hr4ppmij] {
    padding: var(--tcw-space-2) var(--tcw-space-3);
    background-color: var(--tcw-status-sold-out);
    color: var(--tcw-text-on-accent);
    border-radius: var(--tcw-radius-subtle);
    font-size: var(--tcw-font-size-sm);
}
/* /Components/Admin/Theme/SwatchPicker.razor.rz.scp.css */
/* =============================================================================
   Plan 43-06 — SwatchPicker isolated CSS
   ============================================================================= */

.tcw-swatch-picker[b-k0kntu9lrn] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: var(--tcw-space-4);
}

.tcw-swatch-card[b-k0kntu9lrn] {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: var(--tcw-space-2);
    padding: var(--tcw-space-3);
    background-color: var(--tcw-riser);
    color: var(--tcw-text-primary, inherit);
    border: 2px solid transparent;
    border-radius: var(--tcw-radius-subtle);
    font-family: var(--tcw-font-body);
    cursor: pointer;
    text-align: left;
    transition: border-color 0.15s ease, transform 0.15s ease;
}

.tcw-swatch-card:hover[b-k0kntu9lrn] {
    border-color: var(--tcw-spotlight);
    transform: translateY(-1px);
}

.tcw-swatch-card:focus-visible[b-k0kntu9lrn] {
    outline: 3px solid var(--tcw-accent-1);
    outline-offset: 2px;
}

.tcw-swatch-card.selected[b-k0kntu9lrn] {
    border-color: var(--tcw-accent-1);
}

.tcw-swatch-card-strip[b-k0kntu9lrn] {
    display: flex;
    height: 36px;
    border-radius: var(--tcw-radius-sharp);
    overflow: hidden;
    /* Critical: the swatch preview is scoped by the inner data-swatch attribute
       so each card renders its own colors regardless of the page swatch. */
}

.tcw-swatch-chip[b-k0kntu9lrn] {
    flex: 1 1 0;
    display: block;
}

.tcw-swatch-card-name[b-k0kntu9lrn] {
    font-size: var(--tcw-font-size-base);
    font-weight: 600;
    line-height: 1.2;
}

.tcw-swatch-card-mood[b-k0kntu9lrn] {
    font-size: var(--tcw-font-size-sm);
    color: var(--tcw-text-secondary, inherit);
    line-height: 1.2;
}

.tcw-swatch-card-selected-indicator[b-k0kntu9lrn] {
    position: absolute;
    top: var(--tcw-space-2);
    right: var(--tcw-space-2);
    width: 24px;
    height: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--tcw-accent-1);
    color: var(--tcw-text-on-accent);
    border-radius: var(--tcw-radius-pill);
    font-weight: 700;
    font-size: var(--tcw-font-size-sm);
}

@media (prefers-reduced-motion: reduce) {
    .tcw-swatch-card[b-k0kntu9lrn],
    .tcw-swatch-card:hover[b-k0kntu9lrn] {
        transition: none;
        transform: none;
    }
}
/* /Components/Admin/Theme/ThemePreview.razor.rz.scp.css */
/* =============================================================================
   Plan 43-06 — ThemePreview isolated CSS
   =============================================================================
   The pane's root carries data-swatch + data-font-system, which means the
   swatch + font CSS bundles cascade INTO this scope. The pane's children
   read --tcw-canvas, --tcw-accent-1, --tcw-font-display from this scope and
   resolve against the previewed swatch — NOT the admin shell's swatch.
   ============================================================================= */

.tcw-theme-preview[b-scw3laeq72] {
    background-color: var(--tcw-canvas);
    color: var(--tcw-text-primary, inherit);
    border-radius: var(--tcw-radius-comfortable);
    padding: var(--tcw-space-5);
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-4);
    font-family: var(--tcw-font-body);
    border: 1px solid var(--tcw-spotlight);
    min-height: 320px;
}

.tcw-theme-preview-header[b-scw3laeq72] {
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-2);
}

.tcw-theme-preview-hero[b-scw3laeq72] {
    /* Critical: display face inherits from data-font-system scope. */
    font-family: var(--tcw-font-display, var(--tcw-font-body));
    font-size: var(--tcw-font-size-xl);
    line-height: 1.05;
    color: var(--tcw-text-primary, inherit);
    margin: 0;
    font-weight: 700;
}

.tcw-theme-preview-body[b-scw3laeq72] {
    margin: 0;
    font-size: var(--tcw-font-size-base);
    color: var(--tcw-text-secondary, inherit);
    line-height: 1.4;
    max-width: 60ch;
}

.tcw-theme-preview-row[b-scw3laeq72] {
    display: flex;
    align-items: center;
    gap: var(--tcw-space-3);
    flex-wrap: wrap;
}

.tcw-theme-preview-badge[b-scw3laeq72] {
    display: inline-flex;
    align-items: center;
    padding: var(--tcw-space-1) var(--tcw-space-3);
    border-radius: var(--tcw-radius-pill);
    font-size: var(--tcw-font-size-sm);
    font-weight: 600;
    background-color: var(--tcw-status-confirmed);
    color: var(--tcw-text-on-accent);
}
/* /Components/Layout/AdminLayout.razor.rz.scp.css */
/* Plan 48-01: AdminLayout chassis - Riser/Spotlight admin shell layout.
   Zero raw hex - all colors resolve through var(--tcw-*) swatch tokens. */

.tcw-admin-shell[b-krz6opnan6] {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    background-color: var(--tcw-canvas);
    color: var(--tcw-text-primary);
}

.tcw-admin-topbar[b-krz6opnan6] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--tcw-space-3) var(--tcw-space-6);
    background-color: var(--tcw-riser);
    border-bottom: 1px solid var(--tcw-spotlight);
}

.tcw-admin-topbar-brand[b-krz6opnan6] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--tcw-text-secondary);
}

.tcw-admin-topbar-signout[b-krz6opnan6] {
    margin: 0;
}

/* Plan 51-04: reuses the .tcw-ghost-btn convention established in TierConfiguration.razor.css /
   Index.razor.css. Blazor CSS isolation scopes styles per-component, so the ruleset is
   intentionally duplicated here (same class name, same visual design) rather than shared across
   files - this is a reuse of an existing pattern, not a new button style. */
.tcw-ghost-btn[b-krz6opnan6] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    background: transparent;
    border: 1px solid var(--tcw-text-secondary);
    color: var(--tcw-text-primary);
    border-radius: var(--tcw-radius-sharp);
    padding: var(--tcw-space-1) var(--tcw-space-2);
    min-height: 44px;
    min-width: 44px;
    cursor: pointer;
}

.tcw-ghost-btn:focus-visible[b-krz6opnan6] {
    outline: 2px solid var(--tcw-accent-1);
    outline-offset: 2px;
}

.tcw-admin-body[b-krz6opnan6] {
    display: flex;
    flex: 1;
    align-items: stretch;
}

.tcw-admin-main[b-krz6opnan6] {
    flex: 1;
    min-width: 0;
    padding: var(--tcw-space-6);
}
/* /Components/Layout/AdminSidebar.razor.rz.scp.css */
/* Plan 48-01: AdminSidebar - Riser surface, mono section headers, guid-scoped NavLinks.
   Zero raw hex - all colors resolve through var(--tcw-*) swatch tokens. */

.tcw-admin-sidebar[b-ua4oa5nskb] {
    width: 220px;
    flex-shrink: 0;
    background-color: var(--tcw-riser);
    border-right: 1px solid var(--tcw-spotlight);
    padding: var(--tcw-space-4) var(--tcw-space-3);
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-5);
}

.tcw-convention-header-card[b-ua4oa5nskb] {
    padding: var(--tcw-space-3);
    background-color: var(--tcw-spotlight);
    border-radius: var(--tcw-radius-subtle);
}

.tcw-convention-name[b-ua4oa5nskb] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--tcw-text-primary);
}

.tcw-sidebar-section[b-ua4oa5nskb] {
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-1);
}

.tcw-section-header[b-ua4oa5nskb] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--tcw-text-secondary);
    padding: 0 var(--tcw-space-2);
    margin-bottom: var(--tcw-space-1);
}

.tcw-sidebar-section nav[b-ua4oa5nskb] {
    display: flex;
    flex-direction: column;
}

.tcw-sidebar-section nav a[b-ua4oa5nskb],
.tcw-sidebar-link-inert[b-ua4oa5nskb] {
    padding: var(--tcw-space-2);
    border-radius: var(--tcw-radius-sharp);
    color: var(--tcw-text-secondary);
    text-decoration: none;
    font-size: var(--tcw-font-size-sm);
}

.tcw-sidebar-section nav a:hover[b-ua4oa5nskb] {
    background-color: var(--tcw-spotlight);
    color: var(--tcw-text-primary);
}

.tcw-sidebar-section nav a.active[b-ua4oa5nskb] {
    background-color: var(--tcw-spotlight);
    border-left: 3px solid var(--tcw-accent-1);
    color: var(--tcw-text-primary);
    font-weight: 600;
}

.tcw-sidebar-link-inert[b-ua4oa5nskb] {
    color: var(--tcw-text-secondary);
    opacity: 0.5;
    cursor: default;
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
#blazor-error-ui[b-dar2g2rzdw] {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss[b-dar2g2rzdw] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Layout/PlanningHubRow.razor.rz.scp.css */
/* =============================================================================
   PlanningHubRow.razor.css - Plan 47-01 (Web-local port)
   =============================================================================
   Scoped CSS for the 8-icon planning hub shortcut row.
   ALL values flow through var(--tcw-*) tokens - zero hex literals.

   Token sources:
     --tcw-space-8          (40px) - hub circle base width + height
     --tcw-space-6          (24px) - row horizontal padding
     --tcw-space-4          (16px) - row vertical padding
     --tcw-space-2          (8px)  - gap between hub circles
     --tcw-space-1          (4px)  - gap between circle and label
     --tcw-canvas                  - row background
     --tcw-border-default          - row bottom border, default circle border
     --tcw-spotlight               - circle hover background
     --tcw-accent-1                - circle hover border
     --tcw-text-primary            - circle icon color
     --tcw-text-secondary          - hub label text below circle
     --tcw-radius-pill      (999px)- circle border-radius
     --tcw-font-mono               - hub label font family
     --tcw-font-size-base          - hub icon size
     --tcw-font-size-xs     (11px) - hub label font size
     --tcw-motion-fast      (120ms)- hover transition duration

   REQ-47-01-012: circle touch target must be >= 44x44px (WCAG 2.5.8).
   40px base + 2px padding on each side (content-box) = 44px total; explicit
   min-width/min-height: 44px added as a belt-and-suspenders guarantee.

   REQ-47-01-004: hub row renders below the hero and stays sticky while
   scrolling. top offset = var(--tcw-space-10), matching TopBar's own height
   (see TopBar.razor.css), so the sticky hub row settles directly beneath the
   sticky TopBar instead of overlapping it. z-index is one below TopBar's 100
   so the TopBar always wins the stacking order at the shared boundary.
   ============================================================================= */

/* Row container */
.tcw-hub-row[b-b8nl4gto44] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    padding: var(--tcw-space-4) var(--tcw-space-6);
    background-color: var(--tcw-canvas);
    border-bottom: 1px solid var(--tcw-border-default);
    gap: var(--tcw-space-2);
    flex-wrap: wrap;
    position: sticky;
    top: var(--tcw-space-10);
    z-index: 90;
}

/* Individual hub item (circle + label stacked) */
.tcw-hub-item[b-b8nl4gto44] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--tcw-space-1);
    flex: 1;
    min-width: 60px;
}

/* Hub circle anchor */
.tcw-hub-circle[b-b8nl4gto44] {
    width: var(--tcw-space-8);
    height: var(--tcw-space-8);
    min-width: 44px;
    min-height: 44px;
    border-radius: var(--tcw-radius-pill);
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: transparent;
    border: 1px solid var(--tcw-border-default);
    color: var(--tcw-text-primary);
    transition: background-color var(--tcw-motion-fast), border-color var(--tcw-motion-fast);
    padding: 2px;
    box-sizing: content-box;
    text-decoration: none;
}

/* Hover + focus states */
.tcw-hub-circle:hover[b-b8nl4gto44],
.tcw-hub-circle:focus-visible[b-b8nl4gto44] {
    background-color: var(--tcw-spotlight);
    border-color: var(--tcw-accent-1);
    outline: none;
}

/* Icon glyph inside circle */
.tcw-hub-icon[b-b8nl4gto44] {
    font-size: var(--tcw-font-size-base);
    line-height: 1;
}

/* Label text below circle */
.tcw-hub-label[b-b8nl4gto44] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    color: var(--tcw-text-secondary);
    text-align: center;
    letter-spacing: 0.02em;
    white-space: nowrap;
}
/* /Components/Layout/PublicLayout.razor.rz.scp.css */
/* PublicLayout.razor.css - Plan 47-01: Web-local public chrome chassis styles.
   All values use var(--tcw-*) tokens. No inline hex. */

[b-ao940tazcp] .tcw-topbar-slot {
    position: sticky;
    top: 0;
    z-index: 100;
    background-color: var(--tcw-canvas);
    border-bottom: 1px solid var(--tcw-border-default);
}

[b-ao940tazcp] .tcw-public-main {
    flex: 1;
}

[b-ao940tazcp] .tcw-public-footer {
    background-color: var(--tcw-riser);
    color: var(--tcw-text-secondary);
    text-align: center;
    padding: var(--tcw-space-6);
}
/* /Components/Layout/TcwBreadcrumb.razor.rz.scp.css */
/* Plan 48-01: TcwBreadcrumb - mono uppercase trail with &rsaquo; separators.
   Zero raw hex - all colors resolve through var(--tcw-*) swatch tokens. */

.tcw-breadcrumb-nav[b-jhhw8dqppe] {
    margin-bottom: var(--tcw-space-4);
}

.tcw-breadcrumb-list[b-jhhw8dqppe] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    list-style: none;
    margin: 0;
    padding: 0;
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.tcw-breadcrumb-item[b-jhhw8dqppe] {
    display: flex;
    align-items: center;
    gap: var(--tcw-space-2);
}

.tcw-crumb-link[b-jhhw8dqppe] {
    color: var(--tcw-text-secondary);
    text-decoration: none;
}

.tcw-crumb-link:hover[b-jhhw8dqppe] {
    color: var(--tcw-text-primary);
    text-decoration: underline;
}

.tcw-crumb-current[b-jhhw8dqppe] {
    color: var(--tcw-text-primary);
    font-weight: 700;
}

.tcw-crumb-plain[b-jhhw8dqppe] {
    color: var(--tcw-text-secondary);
}

.tcw-crumb-sep[b-jhhw8dqppe] {
    color: var(--tcw-text-secondary);
    opacity: 0.6;
}
/* /Components/Layout/ThemedZoneCard.razor.rz.scp.css */
/* =============================================================================
   ThemedZoneCard.razor.css - Plan 47-01 (Web-local port)
   =============================================================================
   Scoped CSS for per-zone display cards on the Home page.
   ALL values flow through var(--tcw-*) tokens - zero hex literals.

   Token sources:
     --tcw-radius-comfortable (12px) - card corner radius
     --tcw-canvas                    - overlay gradient anchor + fallback gradient start
     --tcw-riser                     - fallback when --tcw-accent-2 not defined
     --tcw-accent-2                  - gradient end color (swatch-specific, per-tenant)
     --tcw-text-primary              - zone name color
     --tcw-text-secondary            - zone tag color
     --tcw-font-display              - zone name font family
     --tcw-font-mono                 - zone tag font family
     --tcw-font-size-xl       (32px) - zone name font size
     --tcw-font-size-xs       (11px) - zone tag font size
     --tcw-space-6            (24px) - overlay padding
     --tcw-space-1            (4px)  - gap between tag and name in overlay
   ============================================================================= */

/* Card container */
.tcw-zone-card[b-3wtyjvvnoj] {
    position: relative;
    border-radius: var(--tcw-radius-comfortable);
    overflow: hidden;
    min-height: 200px;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
}

/* Background image (when BackgroundImageUrl provided) */
.tcw-zone-bg-image[b-3wtyjvvnoj] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Gradient fallback (when no BackgroundImageUrl) - uses swatch tokens exclusively.
   --tcw-accent-2 is per-tenant; --tcw-riser is the chassis fallback. */
.tcw-zone-gradient[b-3wtyjvvnoj] {
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, var(--tcw-canvas) 0%, var(--tcw-accent-2, var(--tcw-riser)) 100%);
}

/* Text overlay - renders above image or gradient */
.tcw-zone-overlay[b-3wtyjvvnoj] {
    position: relative;
    z-index: 1;
    padding: var(--tcw-space-6);
    background: linear-gradient(transparent, var(--tcw-canvas));
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-1);
}

/* Zone tag - mono uppercase metadata row */
.tcw-zone-tag[b-3wtyjvvnoj] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    color: var(--tcw-text-secondary);
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

/* Zone display name - display font at xl size */
.tcw-zone-name[b-3wtyjvvnoj] {
    font-family: var(--tcw-font-display);
    font-size: var(--tcw-font-size-xl);
    font-weight: 700;
    color: var(--tcw-text-primary);
    margin: 0;
    line-height: 1.1;
}
/* /Components/Layout/TopBar.razor.rz.scp.css */
/* =============================================================================
   TopBar.razor.css - Plan 47-01 (Web-local public-only variant)
   =============================================================================
   Scoped CSS isolation for the Web TopBar component.
   ALL values flow through var(--tcw-*) tokens - zero hex literals.
   Hex-lint regex scans TotalConventionWorkshop.Web/Components and enforces this.

   Token sources:
     --tcw-space-10   (64px) - TopBar height
     --tcw-canvas             - TopBar background
     --tcw-text-primary       - nav links, wordmark, ghost CTA text
     --tcw-text-on-accent     - text inside filled CTA
     --tcw-accent-1           - CTA fill, focus ring, ghost CTA border
     --tcw-spotlight          - nav link hover background, ghost CTA hover
     --tcw-border-default     - TopBar bottom border (scrolled state)
     --tcw-radius-subtle      - nav link hover radius
     --tcw-font-display       - logo wordmark
     --tcw-font-body          - nav links
     --tcw-font-size-base     - nav link size
     --tcw-font-size-lg       - wordmark size
     --tcw-space-1 … 8        - padding, gap
     --tcw-motion-fast        - hover/focus transitions
   ============================================================================= */

.tcw-topbar[b-b1jc3y1kk4] {
    display: flex;
    align-items: center;
    height: var(--tcw-space-10);
    padding: 0 var(--tcw-space-6);
    background-color: var(--tcw-canvas);
    gap: var(--tcw-space-4);
    position: sticky;
    top: 0;
    z-index: 100;
}

/* -----------------------------------------------------------------------------
   Logo zone (left)
   ----------------------------------------------------------------------------- */
.tcw-topbar-logo[b-b1jc3y1kk4] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
}

.tcw-topbar-logo a[b-b1jc3y1kk4] {
    text-decoration: none;
    display: flex;
    align-items: center;
}

.tcw-topbar-logo-img[b-b1jc3y1kk4] {
    height: var(--tcw-space-8);
    width: auto;
    object-fit: contain;
}

.tcw-topbar-wordmark[b-b1jc3y1kk4] {
    font-family: var(--tcw-font-display);
    font-size: var(--tcw-font-size-lg);
    font-weight: 700;
    color: var(--tcw-text-primary);
    letter-spacing: -0.01em;
    text-decoration: none;
}

/* -----------------------------------------------------------------------------
   Nav links (center zone)
   ----------------------------------------------------------------------------- */
.tcw-topbar-nav[b-b1jc3y1kk4] {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--tcw-space-1);
}

.tcw-topbar-nav a[b-b1jc3y1kk4] {
    font-family: var(--tcw-font-body);
    font-size: var(--tcw-font-size-base);
    font-weight: 500;
    color: var(--tcw-text-primary);
    text-decoration: none;
    padding: var(--tcw-space-1) var(--tcw-space-3);
    border-radius: var(--tcw-radius-subtle);
    transition: background-color var(--tcw-motion-fast), color var(--tcw-motion-fast);
}

.tcw-topbar-nav a:hover[b-b1jc3y1kk4],
.tcw-topbar-nav a:focus-visible[b-b1jc3y1kk4] {
    background-color: var(--tcw-spotlight);
    color: var(--tcw-text-primary);
    outline: none;
}

/* -----------------------------------------------------------------------------
   Right action zone
   ----------------------------------------------------------------------------- */
.tcw-topbar-actions[b-b1jc3y1kk4] {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: var(--tcw-space-2);
}

/* -----------------------------------------------------------------------------
   BUY BADGES CTA - ghost variant (DemoteCta=true)
   Filled variant uses e-primary from syncfusion-bridge.css
   ----------------------------------------------------------------------------- */
.tcw-cta-ghost[b-b1jc3y1kk4] {
    background-color: transparent !important;
    border: 1px solid var(--tcw-accent-1) !important;
    /* Ghost text uses text-primary (WCAG-validated on both light + dark canvas);
       border still carries the accent to signal the button intent. */
    color: var(--tcw-text-primary) !important;
}

.tcw-cta-ghost:hover[b-b1jc3y1kk4],
.tcw-cta-ghost:focus-visible[b-b1jc3y1kk4] {
    background-color: var(--tcw-spotlight) !important;
}

/* -----------------------------------------------------------------------------
   Responsive - hide center nav below tablet breakpoint
   ----------------------------------------------------------------------------- */
@media (max-width: 768px) {
    .tcw-topbar-nav[b-b1jc3y1kk4] {
        display: none;
    }
}

/* -----------------------------------------------------------------------------
   Focus ring - all interactive elements in TopBar
   ----------------------------------------------------------------------------- */
.tcw-topbar :focus-visible[b-b1jc3y1kk4] {
    outline: 2px solid var(--tcw-accent-1);
    outline-offset: 2px;
}
/* /Components/Pages/AccessDenied.razor.rz.scp.css */
/* AccessDenied.razor.css (Web project)
   Token discipline: zero inline hex - all color/size values via var(--tcw-*).
   Mirrors NotFound.razor.css's structure (Blazor CSS isolation scopes styles per-component,
   so the class names cannot be shared across files even though they're identical here).
*/

.tcw-error-page[b-h3m6m1i9b1] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: var(--tcw-space-8) var(--tcw-space-6);
    max-width: 640px;
    margin: 0 auto;
}

.tcw-error-eyebrow[b-h3m6m1i9b1] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--tcw-text-secondary);
    margin-bottom: var(--tcw-space-4);
}

.tcw-error-headline[b-h3m6m1i9b1] {
    font-family: var(--tcw-font-display);
    font-size: var(--tcw-font-size-4xl);
    font-weight: 800;
    color: var(--tcw-text-primary);
    margin-bottom: var(--tcw-space-6);
}

.tcw-error-body[b-h3m6m1i9b1] {
    font-family: var(--tcw-font-body);
    color: var(--tcw-text-secondary);
    margin-bottom: var(--tcw-space-8);
}

.tcw-error-actions[b-h3m6m1i9b1] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--tcw-space-4);
    justify-content: center;
    margin-top: var(--tcw-space-6);
}

.tcw-error-cta-primary[b-h3m6m1i9b1] {
    display: inline-block;
    background: var(--tcw-accent-1);
    color: var(--tcw-text-on-accent);
    border-radius: var(--tcw-radius-subtle);
    padding: var(--tcw-space-4) var(--tcw-space-6);
    text-decoration: none;
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
}
/* /Components/Pages/Admin/Badges/BadgeDetail.razor.rz.scp.css */
/* Plan 48-02: TCW Badge Detail - two-column Riser layout, DANGER ZONE band, timeline.
   Zero raw hex - all colors resolve through var(--tcw-*) tokens.
   The magenta accent token appears exactly ONCE below - the PRINT BADGE CTA - and
   never as a status color (REQ-48-02-003/005). */

/* ---------- Header ---------- */
.tcw-badge-header[b-176guywy8h] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--tcw-space-3);
    margin-top: var(--tcw-space-4);
}

.tcw-badge-header-identity[b-176guywy8h] {
    display: flex;
    align-items: center;
    gap: var(--tcw-space-3);
    flex-wrap: wrap;
}

.tcw-badge-header-name[b-176guywy8h] {
    font-family: var(--tcw-font-display, var(--tcw-font-mono));
    font-size: var(--tcw-font-size-xl);
    font-weight: 800;
    color: var(--tcw-text-primary);
    margin: 0;
}

.tcw-badge-header-sub[b-176guywy8h] {
    display: flex;
    align-items: center;
    gap: var(--tcw-space-2);
    color: var(--tcw-text-secondary);
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-sm);
    margin: var(--tcw-space-2) 0 0;
}

.tcw-checkedin-indicator[b-176guywy8h] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--tcw-status-confirmed-text, var(--tcw-status-confirmed));
    border: 1px solid var(--tcw-status-confirmed-border, var(--tcw-status-confirmed));
    border-radius: var(--tcw-radius-pill);
    padding: var(--tcw-space-1) var(--tcw-space-3);
}

/* ---------- J/K prev-next nav (REQ-48-02-009 / W2-02 R8) ---------- */
.tcw-jk-nav[b-176guywy8h] {
    display: flex;
    gap: var(--tcw-space-2);
}

.tcw-jk-btn[b-176guywy8h] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    background: transparent;
    border: 1px solid var(--tcw-text-secondary);
    color: var(--tcw-text-primary);
    border-radius: var(--tcw-radius-sharp);
    padding: var(--tcw-space-2) var(--tcw-space-3);
    min-height: 44px;
    cursor: pointer;
}

.tcw-jk-btn:disabled[b-176guywy8h] {
    color: var(--tcw-text-secondary);
    cursor: not-allowed;
    opacity: 0.5;
}

/* ---------- Two-column Riser grid (REQ-48-02-002 / W2-02 R1) ---------- */
.tcw-badge-detail-grid[b-176guywy8h] {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--tcw-space-6);
    margin-top: var(--tcw-space-5);
}

@media (min-width: 1024px) {
    .tcw-badge-detail-grid[b-176guywy8h] {
        grid-template-columns: 2fr 1fr;
        align-items: start;
    }

    .tcw-badge-detail-right[b-176guywy8h] {
        position: sticky;
        top: var(--tcw-space-6);
        align-self: start;
    }
}

.tcw-riser-card[b-176guywy8h] {
    background-color: var(--tcw-riser);
    border: 1px solid var(--tcw-spotlight);
    border-radius: var(--tcw-radius-comfortable);
    padding: var(--tcw-space-5);
    margin-bottom: var(--tcw-space-5);
}

.tcw-riser-card-heading[b-176guywy8h] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--tcw-text-secondary);
    margin: 0 0 var(--tcw-space-4);
}

.tcw-detail-list[b-176guywy8h] {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: var(--tcw-space-2) var(--tcw-space-4);
    margin: 0;
    align-items: center;
}

.tcw-detail-list dt[b-176guywy8h] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--tcw-text-secondary);
}

.tcw-detail-list dd[b-176guywy8h] {
    margin: 0;
    color: var(--tcw-text-primary);
}

.tcw-detail-empty[b-176guywy8h] {
    color: var(--tcw-text-secondary);
    font-size: var(--tcw-font-size-sm);
    margin: 0;
}

/* ---------- Timeline (SfTimeline + palette dots, W2-02 R3) ---------- */
[b-176guywy8h] .tcw-badge-timeline .e-timeline-icon {
    background-color: var(--tcw-text-secondary);
}

[b-176guywy8h] .tcw-timeline-node--confirmed .e-timeline-icon {
    background-color: var(--tcw-status-confirmed-fill, var(--tcw-status-confirmed));
}

[b-176guywy8h] .tcw-timeline-node--tickets-low .e-timeline-icon {
    background-color: var(--tcw-status-tickets-low-fill, var(--tcw-status-tickets-low));
}

[b-176guywy8h] .tcw-timeline-node--sold-out .e-timeline-icon {
    background-color: var(--tcw-status-sold-out-fill, var(--tcw-status-sold-out));
}

.tcw-timeline-label[b-176guywy8h] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-sm);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--tcw-text-primary);
    display: block;
}

.tcw-timeline-timestamp[b-176guywy8h] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    color: var(--tcw-text-secondary);
    font-variant-numeric: tabular-nums;
}

/* ---------- Action panel (REQ-48-02-005 / W2-02 C4, R5) ----------
   Exactly ONE accent CTA per viewport: PRINT BADGE. Resend and Edit Notes are
   ghost actions - never the magenta accent. */
.tcw-action-panel[b-176guywy8h] {
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-3);
}

[b-176guywy8h] .tcw-print-cta {
    /* Single source of truth: the accent token is read once here and reused via
       the local custom property below, so both background-color and border
       share one token reference. */
    --tcw-print-cta-accent: var(--tcw-accent-1);
    background-color: var(--tcw-print-cta-accent);
    border: 1px solid var(--tcw-print-cta-accent);
    color: var(--tcw-text-on-accent);
    width: 100%;
}

[b-176guywy8h] .tcw-action-ghost-btn {
    background: transparent;
    border: 1px solid var(--tcw-text-secondary);
    color: var(--tcw-text-primary);
    width: 100%;
}

.tcw-tooltip-wrap[b-176guywy8h] {
    display: block;
}

/* ---------- DANGER ZONE content (band chrome lives in DangerZoneBand.razor.css;
   this file only styles the reason input + ghost buttons passed as ChildContent) ---------- */
.tcw-danger-zone-reason[b-176guywy8h] {
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-1);
}

.tcw-danger-zone-reason-label[b-176guywy8h] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--tcw-text-on-accent);
}

.tcw-danger-zone-reason-input[b-176guywy8h] {
    font-family: var(--tcw-font-mono);
    background-color: var(--tcw-canvas);
    color: var(--tcw-text-primary);
    border: 1px solid var(--tcw-text-on-accent);
    border-radius: var(--tcw-radius-subtle);
    padding: var(--tcw-space-2) var(--tcw-space-3);
    min-height: 44px;
    max-width: 480px;
}

.tcw-danger-zone-actions[b-176guywy8h] {
    display: flex;
    gap: var(--tcw-space-3);
    flex-wrap: wrap;
}

.tcw-danger-ghost-btn[b-176guywy8h] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-sm);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    background: transparent;
    border: 1px solid var(--tcw-text-on-accent);
    color: var(--tcw-text-on-accent);
    border-radius: var(--tcw-radius-sharp);
    padding: var(--tcw-space-2) var(--tcw-space-4);
    min-height: 44px;
    cursor: pointer;
}

.tcw-danger-ghost-btn:hover[b-176guywy8h] {
    background-color: var(--tcw-canvas);
    color: var(--tcw-status-sold-out-text, var(--tcw-status-sold-out));
}

.tcw-danger-zone-hint[b-176guywy8h] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    color: var(--tcw-text-on-accent);
    margin: 0;
}

/* ---------- Toast (success = Confirmed Green left-border, failure = danger) ---------- */
[b-176guywy8h] .e-toast.tcw-badge-toast--success {
    border-left: 4px solid var(--tcw-status-confirmed-border, var(--tcw-status-confirmed));
}

[b-176guywy8h] .e-toast.tcw-badge-toast--error {
    border-left: 4px solid var(--tcw-status-danger);
}

.tcw-badge-toast-content[b-176guywy8h] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-sm);
}

/* ---------- Print (PRINT BADGE CTA triggers window.print(); hide chrome that
   shouldn't render on paper) ---------- */
@media print {
    .tcw-badge-detail-right[b-176guywy8h],
    .tcw-jk-nav[b-176guywy8h],
    [b-176guywy8h] .tcw-danger-zone {
        display: none;
    }
}
/* /Components/Pages/Admin/Badges/Index.razor.rz.scp.css */
/* Plan 48-01: TCW Badge Admin Dashboard - KPI strip, filter bar, tab chips, grid hover.
   Zero raw hex - all colors resolve through var(--tcw-*) swatch tokens. */

/* ---------- KPI strip (REQ-48-01-004) ---------- */
.tcw-kpi-strip[b-77pydf05bu] {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: var(--tcw-space-3);
    margin: var(--tcw-space-5) 0;
}

.tcw-kpi-card[b-77pydf05bu] {
    background-color: var(--tcw-riser);
    border: 1px solid var(--tcw-spotlight);
    border-radius: var(--tcw-radius-comfortable);
    padding: var(--tcw-space-4);
}

.tcw-kpi-number[b-77pydf05bu] {
    font-family: var(--tcw-font-display, var(--tcw-font-mono));
    font-weight: 800;
    font-size: var(--tcw-font-size-xl);
    line-height: 1;
    letter-spacing: -0.02em;
    font-variant-numeric: tabular-nums;
    color: var(--tcw-text-primary);
    margin-bottom: var(--tcw-space-2);
}

.tcw-kpi-label[b-77pydf05bu] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--tcw-text-secondary);
}

.tcw-kpi-live[b-77pydf05bu] {
    color: var(--tcw-text-secondary);
}

.tcw-kpi-live[b-77pydf05bu]::before {
    content: "";
    display: inline-block;
    width: 6px;
    height: 6px;
    margin-right: var(--tcw-space-1);
    border-radius: var(--tcw-radius-pill);
    background-color: var(--tcw-status-confirmed);
}

/* ---------- Filter bar (REQ-48-01-005) ---------- */
.tcw-filter-bar[b-77pydf05bu] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--tcw-space-4);
    padding: var(--tcw-space-3) var(--tcw-space-4);
    background-color: var(--tcw-riser);
    border: 1px solid var(--tcw-spotlight);
    border-radius: var(--tcw-radius-subtle);
    margin-bottom: var(--tcw-space-5);
}

.tcw-filter-bar-days[b-77pydf05bu],
.tcw-filter-bar-chips[b-77pydf05bu] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--tcw-space-2);
}

.tcw-filter-bar-chips[b-77pydf05bu] {
    overflow-x: auto;
}

.tcw-filter-pill[b-77pydf05bu],
.tcw-filter-chip[b-77pydf05bu] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    background: transparent;
    border: 1px solid var(--tcw-spotlight);
    color: var(--tcw-text-secondary);
    padding: var(--tcw-space-2) var(--tcw-space-3);
    cursor: pointer;
    white-space: nowrap;
}

.tcw-filter-pill[b-77pydf05bu] {
    border-radius: var(--tcw-radius-sharp);
}

.tcw-filter-chip[b-77pydf05bu] {
    border-radius: var(--tcw-radius-pill);
}

.tcw-filter-pill--active[b-77pydf05bu],
.tcw-filter-chip--active[b-77pydf05bu] {
    background-color: var(--tcw-accent-1);
    border-color: var(--tcw-accent-1);
    color: var(--tcw-text-on-accent);
}

.tcw-accent-toggle[b-77pydf05bu] {
    margin-left: auto;
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    background: transparent;
    border: 1px dashed var(--tcw-text-secondary);
    color: var(--tcw-text-secondary);
    border-radius: var(--tcw-radius-sharp);
    padding: var(--tcw-space-2) var(--tcw-space-3);
    cursor: pointer;
}

/* ---------- SfTab mono track-tag count chips ---------- */
.tcw-tab-header-chip[b-77pydf05bu] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-variant-numeric: tabular-nums;
}

/* ---------- Buttons: accent-1 budget (ghost by default) ---------- */
[b-77pydf05bu] .tcw-ghost-btn {
    background: transparent;
    border: 1px solid var(--tcw-text-secondary);
    color: var(--tcw-text-primary);
}

[b-77pydf05bu] .tcw-accent-btn {
    background-color: var(--tcw-accent-1);
    border: 1px solid var(--tcw-accent-1);
    color: var(--tcw-text-on-accent);
}

/* ---------- Grid hover row action + accent-1 left-border animate-in (REQ-48-01-009) ---------- */
[b-77pydf05bu] .tcw-admin-grid .e-row {
    border-left: 3px solid transparent;
    transition: border-left-color var(--tcw-motion-fast) ease;
}

[b-77pydf05bu] .tcw-admin-grid .e-row:hover {
    border-left-color: var(--tcw-accent-1);
    background-color: var(--tcw-spotlight);
}

.tcw-row-action[b-77pydf05bu] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--tcw-text-primary);
    text-decoration: none;
}

.tcw-row-action:hover[b-77pydf05bu] {
    text-decoration: underline;
}
/* /Components/Pages/Admin/Badges/ManualIssuePage.razor.rz.scp.css */
/* Plan 48-03: TCW Manual Issuance - podium-speed layout.
   Zero raw hex - all colors resolve through var(--tcw-*) tokens.
   The magenta accent token appears exactly ONCE below - the ISSUE BADGE CTA - never
   as a status color (mirrors BadgeDetail.razor.css's PRINT BADGE precedent). */

/* ---------- Header: title + broadcast counter ---------- */
.tcw-mi-header[b-xad6vtf2dx] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--tcw-space-3);
    margin-top: var(--tcw-space-4);
    margin-bottom: var(--tcw-space-5);
}

.tcw-mi-title[b-xad6vtf2dx] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xl);
    font-weight: 800;
    letter-spacing: 0.02em;
    color: var(--tcw-text-primary);
    margin: 0;
}

.tcw-mi-counter[b-xad6vtf2dx] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-sm);
    letter-spacing: 0.04em;
    font-variant-numeric: tabular-nums;
    color: var(--tcw-text-secondary);
}

/* ---------- Tier tile grid ---------- */
.tcw-mi-field-group[b-xad6vtf2dx] {
    margin-bottom: var(--tcw-space-5);
}

.tcw-mi-field-label[b-xad6vtf2dx] {
    display: block;
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--tcw-text-secondary);
    margin-bottom: var(--tcw-space-3);
}

.tcw-tier-tile-grid[b-xad6vtf2dx] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(96px, 1fr));
    gap: var(--tcw-space-3);
}

/* ---------- Two-column podium layout: form left, recent-issued sidebar right ---------- */
.tcw-mi-grid[b-xad6vtf2dx] {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--tcw-space-6);
}

@media (min-width: 1024px) {
    .tcw-mi-grid[b-xad6vtf2dx] {
        grid-template-columns: 2fr 1fr;
        align-items: start;
    }

    .tcw-mi-sidebar-col[b-xad6vtf2dx] {
        position: sticky;
        top: var(--tcw-space-6);
    }
}

/* ---------- Submit CTA: single accent-1 budget for this page ---------- */
[b-xad6vtf2dx] .tcw-mi-submit-cta {
    background-color: var(--tcw-accent-1);
    border: 1px solid var(--tcw-accent-1);
    color: var(--tcw-text-on-accent);
    min-height: 44px;
}

.tcw-mi-submit-hint[b-xad6vtf2dx] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    opacity: 0.8;
    margin-left: var(--tcw-space-2);
}

/* ---------- Toast (success = Confirmed Green left-border, failure = danger) ---------- */
[b-xad6vtf2dx] .e-toast.tcw-mi-toast--success {
    border-left: 4px solid var(--tcw-status-confirmed);
}

[b-xad6vtf2dx] .e-toast.tcw-mi-toast--error {
    border-left: 4px solid var(--tcw-status-danger);
}

.tcw-mi-toast-content[b-xad6vtf2dx] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-sm);
}
/* /Components/Pages/Admin/Badges/TierConfiguration.razor.rz.scp.css */
/* Plan 48-04: TierConfiguration - broadcast tier grid chrome. Zero raw hex - all
   colors resolve through var(--tcw-*) tokens. Exactly one e-primary/accent-1-filled
   element on this page ("+ ADD TIER") - every row action, dialog button, and DANGER
   ZONE control below is ghost-styled (REQ-48-04-006). */

.tcw-tier-row-actions[b-1qeff2spf3] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--tcw-space-1);
}

.tcw-ghost-btn[b-1qeff2spf3] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    background: transparent;
    border: 1px solid var(--tcw-text-secondary);
    color: var(--tcw-text-primary);
    border-radius: var(--tcw-radius-sharp);
    padding: var(--tcw-space-1) var(--tcw-space-2);
    min-height: 44px;
    min-width: 44px;
    cursor: pointer;
}

.tcw-ghost-btn:disabled[b-1qeff2spf3] {
    color: var(--tcw-text-secondary);
    cursor: not-allowed;
    opacity: 0.5;
}

.tcw-ghost-btn:focus-visible[b-1qeff2spf3] {
    outline: 2px solid var(--tcw-accent-1);
    outline-offset: 2px;
}

.tcw-ghost-btn--danger[b-1qeff2spf3] {
    border-color: var(--tcw-status-danger);
    color: var(--tcw-status-danger-text, var(--tcw-status-danger));
}

.tcw-move-btn[b-1qeff2spf3] {
    min-width: 44px;
    padding: var(--tcw-space-1);
}

/* ---------- Price-floor inline validation (REQ-48-04-010) — amber, not danger ---------- */
.tcw-inline-validation-amber[b-1qeff2spf3] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-sm);
    color: var(--tcw-status-tickets-low-text, var(--tcw-status-tickets-low));
    border: 1px solid var(--tcw-status-tickets-low-border, var(--tcw-status-tickets-low));
    border-radius: var(--tcw-radius-sharp);
    padding: var(--tcw-space-2) var(--tcw-space-3);
    margin-bottom: var(--tcw-space-3);
}

/* ---------- DANGER ZONE content (band chrome lives in DangerZoneBand.razor.css) ---------- */
.tcw-danger-zone-hint[b-1qeff2spf3] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    color: var(--tcw-text-on-accent);
    margin: 0;
}

/* ---------- Toast (success = Confirmed Green left-border, failure = danger) ---------- */
[b-1qeff2spf3] .e-toast.tcw-tier-toast--success {
    border-left: 4px solid var(--tcw-status-confirmed-border, var(--tcw-status-confirmed));
}

[b-1qeff2spf3] .e-toast.tcw-tier-toast--error {
    border-left: 4px solid var(--tcw-status-danger);
}

.tcw-tier-toast-content[b-1qeff2spf3] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-sm);
}
/* /Components/Pages/Admin/Theme/TenantSettings.razor.rz.scp.css */
/* =============================================================================
   Plan 43-06 — TenantSettings page isolated CSS
   ============================================================================= */

.tcw-tenant-settings[b-hf5fj5baml] {
    padding: var(--tcw-space-5);
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-5);
    background-color: var(--tcw-canvas);
    color: var(--tcw-text-primary, inherit);
    font-family: var(--tcw-font-body);
}

.tcw-tenant-settings-header h1[b-hf5fj5baml] {
    font-family: var(--tcw-font-display, var(--tcw-font-body));
    font-size: var(--tcw-font-size-lg);
    margin: 0 0 var(--tcw-space-2) 0;
    color: var(--tcw-text-primary, inherit);
    font-weight: 700;
}

.tcw-tenant-settings-header p[b-hf5fj5baml] {
    margin: 0;
    color: var(--tcw-text-secondary, inherit);
    font-size: var(--tcw-font-size-base);
}

.tcw-tenant-settings-grid[b-hf5fj5baml] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: var(--tcw-space-5);
}

@media (max-width: 1024px) {
    .tcw-tenant-settings-grid[b-hf5fj5baml] {
        grid-template-columns: minmax(0, 1fr);
    }
}

.tcw-tenant-settings-grid section[b-hf5fj5baml] {
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-3);
}

.tcw-tenant-settings-grid h2[b-hf5fj5baml] {
    font-family: var(--tcw-font-display, var(--tcw-font-body));
    font-size: var(--tcw-font-size-lg);
    margin: 0;
    font-weight: 600;
}

.tcw-tenant-settings-footer[b-hf5fj5baml] {
    display: flex;
    align-items: center;
    gap: var(--tcw-space-3);
    padding-top: var(--tcw-space-3);
    border-top: 1px solid var(--tcw-spotlight);
}

.tcw-tenant-settings-dirty-indicator[b-hf5fj5baml] {
    color: var(--tcw-status-dirty);
    font-size: var(--tcw-font-size-sm);
    font-family: var(--tcw-font-mono, monospace);
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.tcw-alert-danger[b-hf5fj5baml] {
    background-color: var(--tcw-alert-danger-bg);
    border: 1px solid var(--tcw-alert-danger-border);
    color: var(--tcw-alert-danger-text);
    padding: var(--tcw-space-3) var(--tcw-space-4);
    border-radius: var(--tcw-radius-subtle);
}
/* /Components/Pages/Badges/Checkout.razor.rz.scp.css */
/* Checkout.razor.css - Plan 47-03: TCW checkout restyle.
   Token discipline: zero inline hex - all color/size values via var(--tcw-*).

   A11y fallback decision: this file intentionally OMITS local :focus-visible
   and min-height/min-width touch-target rules, mirroring Index.razor.css
   (47-02). wwwroot/css/a11y.css (landed in 47-01) already provides a GLOBAL
   :focus-visible ring (outline: 2px solid var(--tcw-accent-1)) and a GLOBAL
   44px min-height/min-width rule for a[href], button, [role="button"],
   input[type="checkbox"]. The .tcw-cta anchors/buttons and the checkbox
   input on this page are already covered by those global rules - a local
   duplicate here would only risk cascade conflicts.
*/

/* ---------- Two-column body: form + persistent order summary ---------- */
.tcw-checkout-body[b-ezu0fvciay] {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--tcw-space-6);
    align-items: start;
}

@media (min-width: 641px) {
    .tcw-checkout-body[b-ezu0fvciay] {
        grid-template-columns: 1.6fr 1fr;
    }
}

.tcw-checkout-main[b-ezu0fvciay] {
    min-width: 0;
}

/* ---------- Mono step indicator (SfStepper override) ----------
   SfStepper renders its own child DOM (.e-stepper/.e-step/.e-indicator/
   .e-step-label-container) which does NOT receive this component's CSS
   isolation scope attribute - ::deep is required to reach it. Extends the
   global mapping in wwwroot/css/syncfusion-bridge.css (lines 258-271). */
.checkout-container[b-ezu0fvciay]  .e-stepper .e-step-container .e-step .e-indicator {
    display: none;
}

.checkout-container[b-ezu0fvciay]  .e-stepper .e-step-container .e-step .e-step-label-container {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    font-variant-numeric: tabular-nums;
    color: var(--tcw-text-secondary);
    padding-bottom: var(--tcw-space-2);
    border-bottom: 2px solid transparent;
    transition: border-color var(--tcw-motion-fast) ease, color var(--tcw-motion-fast) ease;
}

.checkout-container[b-ezu0fvciay]  .e-stepper .e-step-container .e-step.e-step-active .e-step-label-container {
    color: var(--tcw-text-primary);
    border-bottom-color: var(--tcw-accent-1);
}

/* ---------- Step 1: tier summary (no card chrome) ---------- */
.tier-details[b-ezu0fvciay] {
    display: grid;
    gap: var(--tcw-space-2) var(--tcw-space-6);
    margin: var(--tcw-space-4) 0 var(--tcw-space-6);
}

.detail-row[b-ezu0fvciay] {
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-1);
}

.detail-row dt[b-ezu0fvciay] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--tcw-text-secondary);
}

.detail-row dd[b-ezu0fvciay] {
    color: var(--tcw-text-primary);
}

.price-amount[b-ezu0fvciay],
.price-free[b-ezu0fvciay] {
    font-family: var(--tcw-font-display);
    font-weight: 700;
    color: var(--tcw-text-primary);
}

.price-note[b-ezu0fvciay] {
    color: var(--tcw-text-secondary);
    font-size: var(--tcw-font-size-sm);
    margin-left: var(--tcw-space-2);
}

/* ---------- CTA buttons (base .tcw-cta/--accent/--ghost now live in the
   shared TotalConventionWorkshop.Web/wwwroot/css/tcw-components.css, Plan
   50-02/TD-003) ---------- */

/* Submitting-state demotion: the accent CTA drops to a ghost-like neutral
   treatment while disabled (in-flight submit), without touching the
   reserved sold-out/Coal status token (that token is reserved for
   inventory exhaustion, not button chrome). */
.tcw-cta--accent:disabled[b-ezu0fvciay] {
    background: transparent;
    color: var(--tcw-text-secondary);
    border-color: var(--tcw-border-default);
    cursor: not-allowed;
}

/* Focus-within demotion (REQ-47-03-004): the primary CTA visually demotes to
   a reduced-emphasis state while any field in the step has focus, WITHOUT
   disabling it or blocking pointer events - keeps the first post-typing
   pointer activation operable. */
.checkout-step:focus-within .tcw-primary-cta:not(:disabled)[b-ezu0fvciay] {
    opacity: 0.72;
    transition: opacity var(--tcw-motion-fast) ease;
}

.step-actions[b-ezu0fvciay] {
    display: flex;
    gap: var(--tcw-space-4);
    margin-top: var(--tcw-space-4);
    flex-wrap: wrap;
}

/* ---------- Form fields ---------- */
.tcw-field[b-ezu0fvciay] {
    margin-bottom: var(--tcw-space-5);
}

.tcw-input-label[b-ezu0fvciay] {
    display: block;
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--tcw-text-secondary);
    margin-bottom: var(--tcw-space-2);
}

.tcw-input[b-ezu0fvciay] {
    display: block;
    width: 100%;
    background: var(--tcw-canvas);
    color: var(--tcw-text-primary);
    border: 1px solid var(--tcw-border-default);
    border-radius: var(--tcw-radius-subtle);
    padding: var(--tcw-space-3);
    font-family: var(--tcw-font-body);
    font-size: var(--tcw-font-size-base);
    transition: border-color var(--tcw-motion-fast) ease, box-shadow var(--tcw-motion-fast) ease;
}

.tcw-input:focus-within[b-ezu0fvciay] {
    outline: none;
    border: 2px solid var(--tcw-accent-1);
    box-shadow: 0 0 0 2px var(--tcw-canvas), 0 0 0 4px var(--tcw-accent-1);
}

.tcw-field-hint[b-ezu0fvciay] {
    color: var(--tcw-text-secondary);
    font-size: var(--tcw-font-size-sm);
    margin-top: var(--tcw-space-2);
}

.tcw-field-check[b-ezu0fvciay] {
    display: flex;
    align-items: flex-start;
    gap: var(--tcw-space-3);
}

.tcw-field-check-label[b-ezu0fvciay] {
    color: var(--tcw-text-primary);
    font-size: var(--tcw-font-size-sm);
}

/* Validation tone split (REQ-47-03-007): soft amber on blur (default
   ValidationMessage render), hard danger only on submit rejection. */
.validation-message[b-ezu0fvciay] {
    display: block;
    color: var(--tcw-status-tickets-low-text, var(--tcw-status-tickets-low));
    font-size: var(--tcw-font-size-sm);
    margin-top: var(--tcw-space-1);
}

.tcw-alert-danger[b-ezu0fvciay] {
    color: var(--tcw-status-danger-text, var(--tcw-status-danger));
    border: 1px solid var(--tcw-status-danger);
    border-radius: var(--tcw-radius-subtle);
    padding: var(--tcw-space-3) var(--tcw-space-4);
    margin-top: var(--tcw-space-4);
    font-size: var(--tcw-font-size-sm);
}

/* ---------- Persistent order summary (Riser surface) ---------- */
.tcw-order-summary[b-ezu0fvciay] {
    background: var(--tcw-riser);
    border-radius: var(--tcw-radius-comfortable);
    padding: var(--tcw-space-5);
}

@media (min-width: 641px) {
    .tcw-order-summary[b-ezu0fvciay] {
        position: sticky;
        top: var(--tcw-space-5);
    }
}

.tcw-order-summary-header[b-ezu0fvciay] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--tcw-text-secondary);
}

.tcw-order-summary-lines[b-ezu0fvciay] {
    margin: var(--tcw-space-4) 0;
}

.tcw-order-summary-row[b-ezu0fvciay] {
    display: flex;
    justify-content: space-between;
    gap: var(--tcw-space-3);
    padding: var(--tcw-space-2) 0;
    font-variant-numeric: tabular-nums;
}

.tcw-order-summary-row dt[b-ezu0fvciay] {
    color: var(--tcw-text-secondary);
    font-weight: 400;
}

.tcw-order-summary-row dd[b-ezu0fvciay] {
    font-family: var(--tcw-font-mono);
    color: var(--tcw-text-primary);
}

.tcw-order-summary-total[b-ezu0fvciay] {
    display: flex;
    justify-content: space-between;
    border-top: 1px solid var(--tcw-border-default);
    padding-top: var(--tcw-space-3);
    font-family: var(--tcw-font-mono);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: var(--tcw-text-primary);
}

/* ---------- Mono trust-signal row (REQ-47-03-006) ---------- */
.tcw-trust-chips[b-ezu0fvciay] {
    display: inline-block;
    margin-top: var(--tcw-space-4);
    padding: var(--tcw-space-2) var(--tcw-space-3);
    border: 1px solid var(--tcw-border-default);
    border-radius: var(--tcw-radius-pill);
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--tcw-text-secondary);
}

/* ---------- Mobile sticky primary CTA (REQ-47-03-009) ---------- */
@media (max-width: 640px) {
    /* Reserve flow space equal to the fixed bar (48px min-height) + a spacing
       gap + the safe-area inset, so trailing content (trust chips) and any
       bottom-edge focused field are never obscured by the fixed CTA. */
    .tcw-checkout-body[b-ezu0fvciay] {
        padding-bottom: calc(48px + var(--tcw-space-6) + env(safe-area-inset-bottom));
    }

    .tcw-primary-cta[b-ezu0fvciay] {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 50;
        display: flex;
        align-items: center;
        justify-content: center;
        width: 100%;
        min-height: 48px;
        padding: var(--tcw-space-3) var(--tcw-space-4)
                 calc(var(--tcw-space-3) + env(safe-area-inset-bottom));
        background: var(--tcw-riser);
        border-top: 1px solid var(--tcw-border-default);
        border-radius: 0;
        margin-top: 0;
    }
}
/* /Components/Pages/Badges/Confirmation.razor.rz.scp.css */
/* Confirmation.razor.css - Plan 47-04: TCW confirmation restyle.
   Token discipline: zero inline hex/rgba - all color/size values via var(--tcw-*).
   The only literal hex in this feature's scope lives in Confirmation.razor as
   the SfQRCodeGenerator ForeColor/BackgroundColor C# parameters, documented
   inline there (Syncfusion canvas/SVG rendering has no CSS var hook) - this
   file itself contains zero hex/rgba literals.

   A11y fallback decision: this file intentionally OMITS local :focus-visible
   and min-height/min-width touch-target rules, mirroring Checkout.razor.css
   (47-03) and Index.razor.css (47-02). wwwroot/css/a11y.css (landed in 47-01)
   already provides a GLOBAL :focus-visible ring (outline: 2px solid
   var(--tcw-accent-1)) and a GLOBAL 44px min-height/min-width rule for
   a[href], button, [role="button"], input[type="checkbox"]. The .tcw-cta
   anchors/buttons on this page are already covered by those global rules -
   a local duplicate here would only risk cascade conflicts.
*/

/* ---------- Confirmed-Green hero ---------- */
.tcw-confirmed-hero[b-twqep0qajg] {
    text-align: center;
    padding: var(--tcw-space-6) 0;
    border-bottom: 1px dashed var(--tcw-border-default);
    margin-bottom: var(--tcw-space-6);
}

.tcw-confirmed-check[b-twqep0qajg] {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--tcw-status-confirmed) 12%, transparent);
    color: var(--tcw-status-confirmed-text, var(--tcw-status-confirmed));
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 32px;
    margin-bottom: var(--tcw-space-3);
}

.tcw-confirmed-kicker[b-twqep0qajg] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--tcw-text-secondary);
    margin-bottom: var(--tcw-space-2);
}

.tcw-confirmed-headline[b-twqep0qajg] {
    font-family: var(--tcw-font-display);
    font-size: var(--tcw-font-size-2xl);
    font-weight: 800;
    line-height: 1;
    letter-spacing: -0.02em;
    color: var(--tcw-text-primary);
    margin: 0 0 var(--tcw-space-2);
}

.tcw-confirmed-tag[b-twqep0qajg] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--tcw-text-secondary);
    margin-bottom: var(--tcw-space-4);
}

/* Reusable mono/tabular-nums treatment for order references (REQ-47-04-002). */
.tcw-mono-id[b-twqep0qajg] {
    font-family: var(--tcw-font-mono);
    text-transform: uppercase;
    font-variant-numeric: tabular-nums;
    color: var(--tcw-text-primary);
}

/* ---------- Receipt + QR cards, side-by-side on desktop (REQ-47-04-003/004) ---------- */
.tcw-receipt-qr-grid[b-twqep0qajg] {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--tcw-space-6);
    margin: var(--tcw-space-6) 0;
}

@media (min-width: 641px) {
    .tcw-receipt-qr-grid[b-twqep0qajg] {
        grid-template-columns: 1fr 1fr;
    }
}

/* SfCard renders its own internal DOM (.e-card) which does NOT receive this
   component's CSS isolation scope attribute - ::deep is required to reach the
   CssClass="tcw-receipt-card" wrapper. Riser background + comfortable radius
   already come from the global .e-card rule in wwwroot/css/syncfusion-bridge.css;
   this only adds padding. */
.tcw-receipt-qr-grid[b-twqep0qajg]  .tcw-receipt-card {
    padding: var(--tcw-space-5);
}

.tcw-qr-card[b-twqep0qajg] {
    background: var(--tcw-riser);
    border-radius: var(--tcw-radius-comfortable);
    padding: var(--tcw-space-5);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--tcw-space-3);
}

.tcw-qr-card-label[b-twqep0qajg] {
    align-self: flex-start;
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--tcw-text-secondary);
}

.tcw-qr-canvas-wrap[b-twqep0qajg] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--tcw-radius-subtle);
    background: var(--tcw-riser);
}

.tcw-qr-order-id[b-twqep0qajg] {
    font-size: var(--tcw-font-size-xs);
    letter-spacing: 0.08em;
}

/* ---------- CTA buttons (base .tcw-cta/--accent/--ghost now live in the
   shared TotalConventionWorkshop.Web/wwwroot/css/tcw-components.css, Plan
   50-02/TD-003; only this page's overrides remain local) ---------- */
.tcw-cta--accent[b-twqep0qajg] {
    margin: var(--tcw-space-2) 0 var(--tcw-space-4);
}

.tcw-cta--ghost[b-twqep0qajg] {
    font-size: var(--tcw-font-size-sm);
}

.tcw-cta--ghost:disabled[b-twqep0qajg] {
    opacity: 0.5;
    cursor: not-allowed;
}

/* ---------- Calendar-export triplet (REQ-47-04-006) ---------- */
.tcw-calendar-triplet[b-twqep0qajg] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--tcw-space-3);
    margin-bottom: var(--tcw-space-2);
}

@media (max-width: 640px) {
    .tcw-calendar-triplet[b-twqep0qajg] {
        grid-template-columns: 1fr;
    }
}

.tcw-calendar-note[b-twqep0qajg] {
    color: var(--tcw-text-secondary);
    font-size: var(--tcw-font-size-sm);
    margin-bottom: var(--tcw-space-6);
}

/* ---------- Dense 3-column logistics row (REQ-47-04-007) ---------- */
.tcw-logistics-row[b-twqep0qajg] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--tcw-space-4);
    margin-bottom: var(--tcw-space-6);
}

@media (max-width: 640px) {
    .tcw-logistics-row[b-twqep0qajg] {
        grid-template-columns: 1fr;
    }
}

.tcw-logistics-card[b-twqep0qajg] {
    background: var(--tcw-riser);
    border-radius: var(--tcw-radius-comfortable);
    padding: var(--tcw-space-4);
}

.tcw-logistics-card h3[b-twqep0qajg] {
    font-family: var(--tcw-font-body);
    font-size: var(--tcw-font-size-base);
    color: var(--tcw-text-primary);
    margin: 0 0 var(--tcw-space-2);
}

.tcw-logistics-card p[b-twqep0qajg] {
    font-family: var(--tcw-font-body);
    font-size: var(--tcw-font-size-sm);
    color: var(--tcw-text-secondary);
    margin: 0;
}

/* ---------- "What to bring" checklist (REQ-47-04-008) ---------- */
.tcw-checklist-wrap h3[b-twqep0qajg] {
    font-family: var(--tcw-font-body);
    font-size: var(--tcw-font-size-base);
    color: var(--tcw-text-primary);
    margin: 0 0 var(--tcw-space-3);
}

.tcw-checklist[b-twqep0qajg] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: var(--tcw-space-2);
}

.tcw-checklist-item[b-twqep0qajg] {
    position: relative;
    padding-left: var(--tcw-space-6);
    color: var(--tcw-text-primary);
    font-size: var(--tcw-font-size-sm);
}

.tcw-checklist-item[b-twqep0qajg]::before {
    content: "\2713";
    position: absolute;
    left: 0;
    color: var(--tcw-status-confirmed-text, var(--tcw-status-confirmed));
    font-weight: 700;
}
/* /Components/Pages/Badges/Index.razor.rz.scp.css */
/* Index.razor.css (Badges) - Plan 47-02: TCW pricing-tier grid restyle.
   Token discipline: zero inline hex - all color/size values via var(--tcw-*).

   A11y fallback decision: this file intentionally OMITS local :focus-visible
   and min-height/min-width touch-target rules for .tcw-cta. wwwroot/css/a11y.css
   (landed in 47-01) already provides a GLOBAL :focus-visible ring
   (outline: 2px solid var(--tcw-accent-1)) and a GLOBAL 44px min-height/min-width
   rule for a[href], button, [role="button"]. The .tcw-cta anchors (<a href=...>)
   and the disabled <button> are already covered by those global rules - a local
   duplicate here would only risk cascade conflicts.
*/

.tcw-tier-grid[b-sdr8yui7yx] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: var(--tcw-space-6);
}

.tcw-tier-card[b-sdr8yui7yx] {
    position: relative;
    background: var(--tcw-riser);
    border-radius: var(--tcw-radius-comfortable);
    padding: var(--tcw-space-6);
    border: 1px solid transparent;
    overflow: visible;
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-4);
}

.tcw-tier-card--recommended[b-sdr8yui7yx] {
    border: 1px solid var(--tcw-accent-1);
}

.tcw-tier-card--unavailable[b-sdr8yui7yx] {
    opacity: 0.6;
}

.tcw-tier-ribbon[b-sdr8yui7yx] {
    position: absolute;
    top: -1px;
    right: -1px;
    background: var(--tcw-accent-1);
    color: var(--tcw-text-on-accent);
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    padding: var(--tcw-space-2) var(--tcw-space-3);
    border-radius: 0 var(--tcw-radius-comfortable) 0 var(--tcw-radius-subtle);
}

.tcw-tier-tag[b-sdr8yui7yx] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--tcw-text-secondary);
}

.tcw-tier-name[b-sdr8yui7yx] {
    font-family: var(--tcw-font-display);
    font-weight: 700;
    color: var(--tcw-text-primary);
}

.tcw-tier-price[b-sdr8yui7yx] {
    /* 48px display price: no dedicated token exists at this size (xl=32px,
       2xl=64px). Composing xl * 1.5 = 48px preserves token discipline instead
       of introducing a raw literal. */
    font-family: var(--tcw-font-display);
    font-size: calc(var(--tcw-font-size-xl) * 1.5);
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    color: var(--tcw-text-primary);
    line-height: 1;
}

.tcw-tier-perks[b-sdr8yui7yx] {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-2);
}

.tcw-tier-perk-item[b-sdr8yui7yx] {
    color: var(--tcw-text-primary);
}

.tcw-tier-perk-item[b-sdr8yui7yx]::before {
    content: "\2713";
    color: var(--tcw-status-confirmed-text, var(--tcw-status-confirmed));
    font-weight: 700;
    margin-right: var(--tcw-space-2);
}

.tcw-scarcity-chip[b-sdr8yui7yx] {
    /* No tint token exists for a soft background - border + text + text label
       (not color alone) satisfies the non-color-alone a11y requirement. */
    align-self: flex-start;
    background: transparent;
    border: 1px solid var(--tcw-status-tickets-low-border, var(--tcw-status-tickets-low));
    color: var(--tcw-status-tickets-low-text, var(--tcw-status-tickets-low));
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    letter-spacing: 0.04em;
    text-transform: uppercase;
    padding: var(--tcw-space-2) var(--tcw-space-3);
    border-radius: var(--tcw-radius-pill);
}

.tcw-sticky-cta[b-sdr8yui7yx] {
    display: none;
}

@media (max-width: 768px) {
    .tcw-sticky-cta[b-sdr8yui7yx] {
        display: block;
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 50;
        padding: var(--tcw-space-4);
        background: var(--tcw-riser);
        border-top: 1px solid var(--tcw-border-default);
    }

    .tcw-sticky-cta .tcw-cta[b-sdr8yui7yx] {
        display: block;
        width: 100%;
    }
}
/* /Components/Pages/Home.razor.rz.scp.css */
/* Home.razor.css - Plan 47-01: TCW Home page mega-hero landing page.
   All values use var(--tcw-*) tokens. No inline hex. */

/* -----------------------------------------------------------------------------
   Mega hero
   ----------------------------------------------------------------------------- */
.tcw-hero[b-ix7nhngdf1] {
    padding: var(--tcw-space-13) var(--tcw-space-6) var(--tcw-space-10);
    text-align: center;
}

.tcw-hero-mega[b-ix7nhngdf1] {
    font-family: var(--tcw-font-display);
    font-size: var(--tcw-font-size-4xl);
    line-height: 0.92;
    letter-spacing: -0.04em;
    font-weight: 800;
    color: var(--tcw-text-primary);
    margin: 0;
}

.tcw-hero-gradient[b-ix7nhngdf1] {
    background: linear-gradient(90deg, var(--tcw-accent-1), var(--tcw-accent-2));
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.tcw-hero-meta[b-ix7nhngdf1] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-sm);
    letter-spacing: 0.06em;
    color: var(--tcw-text-secondary);
    font-variant-numeric: tabular-nums;
    margin: var(--tcw-space-4) 0 0;
}

/* -----------------------------------------------------------------------------
   Live now strip
   ----------------------------------------------------------------------------- */
.tcw-live-strip[b-ix7nhngdf1] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--tcw-space-2);
    margin: var(--tcw-space-6) auto 0;
    padding: var(--tcw-space-2) var(--tcw-space-4);
    max-width: fit-content;
    border-radius: var(--tcw-radius-pill);
    background-color: var(--tcw-riser);
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    letter-spacing: 0.04em;
    color: var(--tcw-text-secondary);
    flex-wrap: wrap;
}

.tcw-live-dot[b-ix7nhngdf1] {
    width: var(--tcw-space-2);
    height: var(--tcw-space-2);
    border-radius: var(--tcw-radius-pill);
    background-color: var(--tcw-accent-1);
    display: inline-block;
    animation: tcw-live-pulse-b-ix7nhngdf1 var(--tcw-motion-slow, 400ms) ease-in-out infinite;
}

@keyframes tcw-live-pulse-b-ix7nhngdf1 {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.35; }
}

.tcw-live-label[b-ix7nhngdf1] {
    font-weight: 700;
    text-transform: uppercase;
    color: var(--tcw-text-primary);
}

/* -----------------------------------------------------------------------------
   Zone grid
   ----------------------------------------------------------------------------- */
.tcw-zone-grid[b-ix7nhngdf1] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--tcw-space-4);
    padding: 0 var(--tcw-space-6) var(--tcw-space-10);
}

@media (max-width: 1024px) {
    .tcw-zone-grid[b-ix7nhngdf1] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 600px) {
    .tcw-zone-grid[b-ix7nhngdf1] {
        grid-template-columns: 1fr;
    }
}

/* Audit remediation (47-01, a11y heading-order): section heading for the zone
   grid, spanning the full grid width so it doesn't consume a column track.
   Horizontal padding is reset to 0 - the parent .tcw-zone-grid section already
   applies var(--tcw-space-6) padding, so .tcw-section-heading's own padding
   would double the inset. */
.tcw-zone-grid-heading[b-ix7nhngdf1] {
    grid-column: 1 / -1;
    padding: 0;
}

/* -----------------------------------------------------------------------------
   Section heading (shared: guests, FAQ)
   ----------------------------------------------------------------------------- */
.tcw-section-heading[b-ix7nhngdf1] {
    font-family: var(--tcw-font-display);
    font-size: var(--tcw-font-size-2xl);
    font-weight: 700;
    color: var(--tcw-text-primary);
    margin: 0 0 var(--tcw-space-6);
    padding: 0 var(--tcw-space-6);
}

/* -----------------------------------------------------------------------------
   Featured guests carousel
   ----------------------------------------------------------------------------- */
.tcw-guests-section[b-ix7nhngdf1] {
    padding-bottom: var(--tcw-space-10);
}

[b-ix7nhngdf1] .tcw-guest-carousel {
    padding: 0 var(--tcw-space-6);
}

[b-ix7nhngdf1] .tcw-guest-carousel .e-carousel-item {
    padding: 0 var(--tcw-space-2);
}

.tcw-guest-card[b-ix7nhngdf1] {
    position: relative;
    aspect-ratio: 4 / 5;
    border-radius: var(--tcw-radius-comfortable);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    background: linear-gradient(135deg, var(--tcw-riser) 0%, var(--tcw-accent-2, var(--tcw-riser)) 100%);
    cursor: default;
}

.tcw-guest-avatar[b-ix7nhngdf1] {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--tcw-font-display);
    font-size: var(--tcw-font-size-3xl);
    font-weight: 800;
    color: var(--tcw-text-on-accent);
    opacity: 0.5;
}

.tcw-guest-info[b-ix7nhngdf1] {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    gap: var(--tcw-space-1);
    padding: var(--tcw-space-4);
    background: linear-gradient(transparent, var(--tcw-canvas));
}

.tcw-guest-name[b-ix7nhngdf1] {
    font-family: var(--tcw-font-display);
    font-size: var(--tcw-font-size-base);
    font-weight: 700;
    color: var(--tcw-text-primary);
}

.tcw-guest-role[b-ix7nhngdf1] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--tcw-text-secondary);
}

.tcw-guest-bio[b-ix7nhngdf1] {
    font-family: var(--tcw-font-body);
    font-size: var(--tcw-font-size-xs);
    color: var(--tcw-text-secondary);
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    transition: max-height var(--tcw-motion-fast), opacity var(--tcw-motion-fast);
}

.tcw-guest-card:hover .tcw-guest-bio[b-ix7nhngdf1],
.tcw-guest-card:focus-visible .tcw-guest-bio[b-ix7nhngdf1],
.tcw-guest-card:focus-within .tcw-guest-bio[b-ix7nhngdf1] {
    max-height: 100px;
    opacity: 1;
}

/* -----------------------------------------------------------------------------
   FAQ accordion
   ----------------------------------------------------------------------------- */
.tcw-faq-section[b-ix7nhngdf1] {
    padding-bottom: var(--tcw-space-13);
}

.tcw-faq-wrapper[b-ix7nhngdf1] {
    padding: 0 var(--tcw-space-6);
    max-width: 800px;
    margin: 0 auto;
}
/* /Components/Pages/Login.razor.rz.scp.css */
/* Login.razor.css (Web project)
   Token discipline: zero raw hex literals - all color values via var(--tcw-*).
   Adapted from the approved /od artifact (51-02-login.html). The artifact's global
   :root fallback token block and body/html rules are dropped here - CSS isolation
   scopes this file to Login.razor's own markup, and the real --tcw-* tokens are
   already supplied by MainLayout's themed .tcw-web-shell[data-swatch] wrapper.
   .login-stage replaces the artifact's `body` selector as the min-height +
   centering root for this page.
*/

.login-stage[b-dzyl77rdke] {
    min-height: 100dvh;
    display: grid;
    place-items: center;
    background: var(--tcw-canvas);
    color: var(--tcw-text-primary);
    font-family: var(--tcw-font-body);
    font-size: var(--tcw-font-size-base);
    line-height: 1.5;
    padding: var(--tcw-space-6);
}

/* Stage-noir backdrop: a single restrained spotlight wash behind the card.
   Atmospheric, not a solid fill - accent-1 remains a single solid element
   (the submit button) elsewhere on the page. Decorative only - aria-hidden. */
.stage[b-dzyl77rdke] {
    position: fixed;
    inset: 0;
    background:
        radial-gradient(
            60% 50% at 50% 8%,
            color-mix(in oklch, var(--tcw-accent-1) 14%, transparent),
            transparent 70%
        ),
        radial-gradient(
            70% 60% at 50% 100%,
            color-mix(in oklch, var(--tcw-accent-2) 10%, transparent),
            transparent 70%
        );
    pointer-events: none;
}

.auth-shell[b-dzyl77rdke] {
    position: relative;
    width: 100%;
    max-width: 400px;
}

.auth-card[b-dzyl77rdke] {
    background: var(--tcw-riser);
    border: 1px solid color-mix(in oklch, var(--tcw-text-primary) 14%, transparent);
    border-radius: var(--tcw-radius-comfortable);
    padding: var(--tcw-space-9) var(--tcw-space-7) var(--tcw-space-7);
}

.wordmark[b-dzyl77rdke] {
    display: block;
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--tcw-text-secondary);
    text-align: center;
    margin: 0 0 var(--tcw-space-6);
}

h1[b-dzyl77rdke] {
    font-family: var(--tcw-font-display);
    font-size: var(--tcw-font-size-xl);
    font-weight: 700;
    letter-spacing: -0.01em;
    color: var(--tcw-text-primary);
    text-align: center;
    margin: 0 0 var(--tcw-space-6);
}

.error-banner[b-dzyl77rdke] {
    display: flex;
    gap: var(--tcw-space-3);
    align-items: flex-start;
    background: color-mix(in oklch, var(--tcw-status-danger) 12%, transparent);
    color: var(--tcw-status-danger-text, var(--tcw-status-danger));
    border: 1px solid var(--tcw-status-danger);
    border-radius: var(--tcw-radius-subtle);
    padding: var(--tcw-space-3) var(--tcw-space-4);
    font-size: var(--tcw-font-size-sm);
    margin: 0 0 var(--tcw-space-5);
}

.error-banner[hidden][b-dzyl77rdke] {
    display: none;
}

.error-banner svg[b-dzyl77rdke] {
    flex: none;
    width: 18px;
    height: 18px;
    margin-top: 1px;
}

.field[b-dzyl77rdke] {
    margin: 0 0 var(--tcw-space-5);
}

.field label[b-dzyl77rdke] {
    display: block;
    font-size: var(--tcw-font-size-sm);
    font-weight: 600;
    color: var(--tcw-text-primary);
    margin: 0 0 var(--tcw-space-2);
}

.field input[type="email"][b-dzyl77rdke],
.field input[type="password"][b-dzyl77rdke] {
    width: 100%;
    min-height: 44px;
    padding: var(--tcw-space-2) var(--tcw-space-4);
    background: var(--tcw-canvas);
    border: 1px solid color-mix(in oklch, var(--tcw-text-primary) 18%, transparent);
    border-radius: var(--tcw-radius-subtle);
    color: var(--tcw-text-primary);
    font-family: inherit;
    font-size: var(--tcw-font-size-base);
}

.field input[type="email"][b-dzyl77rdke]::placeholder,
.field input[type="password"][b-dzyl77rdke]::placeholder {
    color: var(--tcw-text-secondary);
}

.field input:hover[b-dzyl77rdke] {
    border-color: var(--tcw-spotlight);
}

.checkbox-row[b-dzyl77rdke] {
    display: flex;
    align-items: center;
    min-height: 44px;
    margin: var(--tcw-space-1) 0 var(--tcw-space-6);
}

.checkbox-row input[type="checkbox"][b-dzyl77rdke] {
    appearance: none;
    -webkit-appearance: none;
    width: 20px;
    height: 20px;
    min-width: 20px;
    margin: 0 var(--tcw-space-3) 0 0;
    background: var(--tcw-canvas);
    border: 1px solid color-mix(in oklch, var(--tcw-text-primary) 24%, transparent);
    border-radius: 5px;
    display: inline-grid;
    place-content: center;
    cursor: pointer;
}

.checkbox-row input[type="checkbox"][b-dzyl77rdke]::before {
    content: "";
    width: 11px;
    height: 11px;
    transform: scale(0);
    transition: transform var(--tcw-motion-fast) ease-in-out;
    clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 45% 62%);
    background: var(--tcw-text-primary);
}

.checkbox-row input[type="checkbox"]:checked[b-dzyl77rdke] {
    background: var(--tcw-spotlight);
}

.checkbox-row input[type="checkbox"]:checked[b-dzyl77rdke]::before {
    transform: scale(1);
}

.checkbox-row label[b-dzyl77rdke] {
    font-size: var(--tcw-font-size-sm);
    color: var(--tcw-text-primary);
    cursor: pointer;
}

.submit-btn[b-dzyl77rdke] {
    width: 100%;
    min-height: 44px;
    background: var(--tcw-accent-1);
    color: var(--tcw-text-on-accent);
    border: none;
    border-radius: var(--tcw-radius-subtle);
    font-family: inherit;
    font-size: var(--tcw-font-size-base);
    font-weight: 700;
    cursor: pointer;
}

.submit-btn:hover[b-dzyl77rdke] {
    background: color-mix(in oklch, var(--tcw-accent-1) 88%, var(--tcw-accent-2) 12%);
}

/* Visible focus ring on every interactive control in this component. Uses
   --tcw-spotlight (not --tcw-accent-1, which is the sitewide a11y.css default -
   see 51-02 SUMMARY for the documented rationale) so the accent fill stays a
   single, once-per-view element: the submit button above. */
.login-stage a:focus-visible[b-dzyl77rdke],
.login-stage input:focus-visible[b-dzyl77rdke],
.login-stage button:focus-visible[b-dzyl77rdke] {
    outline: 2px solid var(--tcw-spotlight);
    outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
    .checkbox-row input[type="checkbox"][b-dzyl77rdke]::before {
        transition: none;
    }
}

@media (max-width: 420px) {
    .auth-card[b-dzyl77rdke] {
        padding: var(--tcw-space-7) var(--tcw-space-5) var(--tcw-space-6);
    }
}
/* /Components/Pages/NotFound.razor.rz.scp.css */
/* NotFound.razor.css (Web project)
   Token discipline: zero inline hex — all color/size values via var(--tcw-*).
   Web MainLayout provides the layout chassis (F47 will bring PublicLayout here).
*/

.tcw-error-page[b-vszcd1pwih] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: var(--tcw-space-8) var(--tcw-space-6);
    max-width: 640px;
    margin: 0 auto;
}

.tcw-error-eyebrow[b-vszcd1pwih] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--tcw-text-secondary);
    margin-bottom: var(--tcw-space-4);
}

.tcw-error-headline[b-vszcd1pwih] {
    font-family: var(--tcw-font-display);
    font-size: var(--tcw-font-size-4xl);
    font-weight: 800;
    color: var(--tcw-text-primary);
    margin-bottom: var(--tcw-space-6);
}

.tcw-error-body[b-vszcd1pwih] {
    font-family: var(--tcw-font-body);
    color: var(--tcw-text-secondary);
    margin-bottom: var(--tcw-space-8);
}

.tcw-error-actions[b-vszcd1pwih] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--tcw-space-4);
    justify-content: center;
    margin-top: var(--tcw-space-6);
}

.tcw-error-cta-primary[b-vszcd1pwih] {
    display: inline-block;
    background: var(--tcw-accent-1);
    color: var(--tcw-text-on-accent);
    border-radius: var(--tcw-radius-subtle);
    padding: var(--tcw-space-4) var(--tcw-space-6);
    text-decoration: none;
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.tcw-error-cta-ghost[b-vszcd1pwih] {
    display: inline-block;
    border: 1px solid var(--tcw-border-default);
    border-radius: var(--tcw-radius-subtle);
    padding: var(--tcw-space-4) var(--tcw-space-6);
    text-decoration: none;
    color: var(--tcw-text-secondary);
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
}
/* /Components/Shared/States/TcwPaymentPending.razor.rz.scp.css */
/* TcwPaymentPending.razor.css (Web project)
   Token discipline: zero inline hex — all color/size values via var(--tcw-*).
   Dot pulse animation uses var(--tcw-motion-slow) — F43 reduced-motion gate collapses
   it to 0ms automatically. Do NOT add a separate @media (prefers-reduced-motion) block.
*/

.tcw-payment-pending[b-nx3mu63jd6] {
    background: var(--tcw-riser);
    border-radius: var(--tcw-radius-comfortable);
    padding: var(--tcw-space-6) var(--tcw-space-8);
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--tcw-space-6);
}

.tcw-payment-eyebrow[b-nx3mu63jd6] {
    font-family: var(--tcw-font-mono);
    font-size: var(--tcw-font-size-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--tcw-text-secondary);
    margin: 0;
}

.tcw-payment-subtext[b-nx3mu63jd6] {
    font-family: var(--tcw-font-body);
    color: var(--tcw-text-secondary);
    margin: 0;
}

.tcw-payment-dots[b-nx3mu63jd6] {
    display: flex;
    gap: var(--tcw-space-4);
    align-items: center;
}

.tcw-payment-dot[b-nx3mu63jd6] {
    width: 12px;
    height: 12px;
    border-radius: var(--tcw-radius-pill);
    background: var(--tcw-accent-1);
    animation: tcw-dot-pulse-b-nx3mu63jd6 var(--tcw-motion-slow) ease-in-out infinite;
}

.tcw-payment-dot--2[b-nx3mu63jd6] {
    animation-delay: calc(var(--tcw-motion-slow) / 4);
}

.tcw-payment-dot--3[b-nx3mu63jd6] {
    animation-delay: calc(var(--tcw-motion-slow) / 2);
}

@keyframes tcw-dot-pulse-b-nx3mu63jd6 {
    0%, 100% { opacity: 1; transform: scale(1); }
    50%       { opacity: 0.4; transform: scale(0.75); }
}
