.access-portal-body {
    --ca-accent: #d7e83c;
    --ca-surface: #1b1b1d;
    --ca-line: rgba(255, 255, 255, 0.12);
    --ca-muted: #adb0b6;
    --bs-body-color: #f7f7f3;
    --bs-body-bg: #101012;
    min-height: 100vh;
    background: radial-gradient(ellipse at top, rgba(215, 232, 60, 0.1), transparent 34%), linear-gradient(180deg, #060606, #121214);
    color: #f7f7f3;
    font-family: "B612", sans-serif;
    letter-spacing: 0;
    color-scheme: dark;
}

.access-portal-body .access-portal-navbar {
    background: rgba(5, 5, 6, 0.96) !important;
    border-bottom: 1px solid var(--ca-line);
    padding-block: 0.85rem;
}

.access-portal-body .access-portal-brand-logo { height: 34px; width: auto; }
.access-portal-body .access-portal-brand-name { color: var(--ca-accent); font-family: "B612", sans-serif; font-size: 0.85rem; letter-spacing: 0; }
.access-portal-body .access-portal-main { max-width: 1200px; padding-block: 2rem; }
.access-portal-body .role-shell { min-width: 0; }
.access-portal-body h1,
.access-portal-body h2,
.access-portal-body h3 { color: #fff; font-family: "B612", sans-serif; letter-spacing: 0; }
.access-portal-body h1 { font-family: "Bebas Neue", "B612", sans-serif; font-size: 2rem; }
.access-portal-body h2 { font-size: 1.1rem; }
.access-portal-body .text-muted,
.access-portal-body .helptext,
.access-portal-body .form-text { color: var(--ca-muted) !important; }
.access-portal-body a { color: var(--ca-accent); }
.access-portal-body .role-surface-card {
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    color: inherit;
    min-width: 0;
}

.access-portal-body .role-surface-card > .card-body { padding-inline: 0 !important; }
.access-portal-body .bg-body-tertiary { background: transparent !important; }
.access-portal-body .border { border-color: var(--ca-line) !important; }
.access-portal-body .rounded-4 { border-radius: 8px !important; }
.access-portal-body .role-form { color: inherit; }
.access-portal-body .role-form label,
.access-portal-body .form-label { color: #f7f7f3; font-size: 0.85rem; font-weight: 700; }
.access-portal-body .role-form p { margin-bottom: 0.5rem; }
.access-portal-body .form-control,
.access-portal-body .form-select,
.access-portal-body .role-form input.form-control,
.access-portal-body .role-form textarea,
.access-portal-body .role-form select {
    background-color: var(--ca-surface);
    border: 1px solid var(--ca-line);
    border-radius: 7px;
    color: #fff;
    min-height: 2.8rem;
    font-family: inherit;
}
.access-portal-body .form-control::placeholder { color: #999da4; }
.access-portal-body .form-control:focus,
.access-portal-body .form-select:focus,
.access-portal-body .role-form input.form-control:focus,
.access-portal-body .role-form textarea:focus,
.access-portal-body .role-form select:focus { background-color: var(--ca-surface); color: #fff; border-color: var(--ca-accent); box-shadow: 0 0 0 3px rgba(215, 232, 60, 0.15); }
.access-portal-body .password-toggle-button { color: var(--ca-muted); }
.access-portal-body .password-toggle-button:hover { color: var(--ca-accent); }
.access-portal-body .role-cookie-banner-card { background: var(--ca-surface); border: 1px solid var(--ca-line); border-radius: 8px; }
.access-portal-body .role-cookie-banner-card > .card-body { padding: 1rem !important; }
.access-portal-body .role-cookie-banner-eyebrow,
.access-portal-body .role-cookie-banner-choice strong,
.access-portal-body .role-cookie-banner-policy { color: #f7f7f3; }
.access-portal-body .role-cookie-banner-choice { background: #29292c; border-color: var(--ca-line); }
.access-portal-body .role-cookie-banner-choice.is-required { background: #34391c; }
.access-portal-body .role-cookie-banner-button-primary { background: var(--ca-accent); border-color: var(--ca-accent); color: #111; }
.access-portal-body .role-cookie-banner-button-secondary,
.access-portal-body .role-cookie-banner-button-ghost { background: #29292c; border-color: var(--ca-line); color: #fff; }
.access-portal-body .form-check-input:checked { background-color: var(--ca-accent); border-color: var(--ca-accent); }
.access-portal-body .btn { border-radius: 7px; min-height: 2.6rem; font-family: inherit; font-weight: 700; white-space: normal; }
.access-portal-body .btn-dark,
.access-portal-body .btn-primary { background: var(--ca-accent); border-color: var(--ca-accent); color: #111; }
.access-portal-body .btn-dark:hover,
.access-portal-body .btn-primary:hover { background: #e4f451; border-color: #e4f451; color: #111; }
.access-portal-body .btn-outline-dark,
.access-portal-body .btn-outline-secondary { border-color: var(--ca-line); background: rgba(255, 255, 255, 0.04); color: #f7f7f3; }
.access-portal-body .btn-outline-dark:hover,
.access-portal-body .btn-outline-secondary:hover { border-color: var(--ca-accent); color: var(--ca-accent); }
.access-portal-body :focus-visible { outline: 2px solid var(--ca-accent); outline-offset: 3px; }
.access-portal-body .errorlist { color: #ff9f9f; padding-left: 1.2rem; }
.access-portal-body .access-portal-event-title { font-size: 2rem; }
.access-portal-body .access-portal-summary-card { background: var(--ca-surface); border: 1px solid var(--ca-line); border-radius: 8px; box-shadow: none; }
.access-portal-body .access-portal-summary-label { color: var(--ca-muted); letter-spacing: 0; }
.access-portal-body .access-portal-summary-value { color: var(--ca-accent); }
.access-portal-body .access-portal-tabs { border-color: var(--ca-line); gap: 0.5rem; }
.access-portal-body .access-portal-tabs .nav-link { border: 0; border-bottom: 3px solid transparent; color: var(--ca-muted); border-radius: 0; }
.access-portal-body .access-portal-tabs .nav-link.active { background: transparent; color: var(--ca-accent); border-bottom-color: var(--ca-accent); }
.access-portal-body .ticket-scanner-camera-shell { border: 1px solid var(--ca-line); border-radius: 8px; background: #050506; }
.access-portal-body .ticket-scanner-overlay-frame { border-color: var(--ca-accent); }
.access-portal-body .ticket-scanner-overlay-toggle { background: var(--ca-accent); color: #111; }
.access-portal-body .table-responsive { width: 100%; min-width: 0; contain: inline-size; }
.access-portal-body .table { --bs-table-bg: transparent; --bs-table-color: #f7f7f3; --bs-table-border-color: var(--ca-line); color: #f7f7f3; }
.access-portal-body .table th { background: var(--ca-surface); color: var(--ca-muted); }
.access-portal-body .table td { color: #f7f7f3; }
.access-portal-body .list-group-item { background: var(--ca-surface); color: #f7f7f3; border-color: var(--ca-line); }
.access-portal-body .modal-content,
.access-portal-body .dropdown-menu { background: var(--ca-surface); border: 1px solid var(--ca-line); border-radius: 8px; color: #f7f7f3; }
.access-portal-body .modal-header,
.access-portal-body .modal-footer,
.access-portal-body .dropdown-divider { border-color: var(--ca-line); }
.access-portal-body .btn-close { filter: invert(1) grayscale(1) brightness(2); }
.access-portal-body .dropdown-item,
.access-portal-body .dropdown-header { color: #f7f7f3; }
.access-portal-body .dropdown-item:hover,
.access-portal-body .dropdown-item.active { color: var(--ca-accent); background: #292b20; }
.access-portal-body .access-portal-user-toggle,
.access-portal-body .access-portal-calendar-toggle { color: var(--ca-accent); border-color: var(--ca-line); background: rgba(255, 255, 255, 0.05); }
.access-portal-body .access-portal-info-button { color: var(--ca-accent); border-color: var(--ca-line); background: var(--ca-surface); }
.access-portal-body .access-portal-info-popover { --bs-popover-bg: #1b1b1d; --bs-popover-body-color: #f7f7f3; --bs-popover-border-color: #555; }
.access-portal-body .staff-artist-meta { color: var(--ca-muted); }
.access-portal-body .staff-artist-meta strong { color: #fff; }
.access-portal-body .ca-login { max-width: 960px; margin-inline: auto; }
.access-portal-body .ca-login-heading { padding-bottom: 1.5rem; margin-bottom: 1.5rem; border-bottom: 1px solid var(--ca-line); }
.access-portal-body .ca-login-heading h1 { margin: 0; }
.access-portal-body .ca-login-recovery { padding-left: 2rem; border-left: 1px solid var(--ca-line); }
.access-portal-body .ca-login-recovery h2 { margin-bottom: 1.25rem; }
.access-portal-body .ca-login-recovery a { display: inline-block; margin-top: 1rem; font-size: 0.85rem; }

@media (max-width: 991.98px) {
    .access-portal-body .ca-login { max-width: 560px; }
    .access-portal-body .ca-login-recovery { padding: 1.5rem 0 0; border-left: 0; border-top: 1px solid var(--ca-line); }
}
@media (max-width: 575.98px) {
    .access-portal-body .access-portal-main { padding: 1.25rem 1rem; }
    .access-portal-body .access-portal-brand { gap: 0.5rem; min-width: 0; }
    .access-portal-body .access-portal-brand-logo { height: 27px; }
    .access-portal-body .access-portal-brand-name { font-size: 0.7rem; white-space: normal; }
    .access-portal-body .access-portal-event-title { font-size: 1.6rem; overflow-wrap: anywhere; }
    .access-portal-body .access-portal-navbar .dropdown-menu { position: fixed !important; inset: 4.5rem 1rem auto !important; transform: none !important; width: auto !important; max-height: calc(100dvh - 6rem); overflow-y: auto; }
    .access-portal-body .access-portal-summary-card { min-width: 0; }
    .access-portal-body .role-surface-card .row > * { min-width: 0; }
}