/* ── Camp dark mode (toggle via html[data-theme="dark"]) ─────────────────── */

html[data-theme="dark"] {
    color-scheme: dark;
}

html[data-theme="dark"] {
    /* Neutral dark fallbacks — campPortalThemeStyleTag() overrides from the selected portal theme */
    --primary-color: var(--camp-brand-primary-light, #94a3b8);
    --accent-color: var(--camp-brand-accent, #94a3b8);
    --box: #141618;
    --light: #141618;
    --dark: #e8eaed;
    --camp-bg: #070809;
    --camp-bg-muted: #0a0b0c;
    --camp-surface: #101214;
    --camp-surface-raised: #141618;
    --camp-border: rgba(255, 255, 255, 0.1);
    --camp-text: #e8eaed;
    --camp-text-muted: #9aa3ad;
    --camp-input-bg: #121416;
    --camp-input-border: rgba(255, 255, 255, 0.14);
}

html[data-theme="dark"] body {
    background:
        radial-gradient(ellipse 100% 48% at 50% 0%, rgba(var(--camp-hero-glow-rgb, 255, 107, 0), 0.018) 0%, transparent 50%),
        var(--camp-bg-muted);
    background-color: var(--camp-bg-muted);
    color: var(--camp-text);
}

html[data-theme="dark"] body::-webkit-scrollbar-thumb {
    background-color: var(--camp-brand-primary-mid, #475569);
}

html[data-theme="dark"] .noAStyle {
    color: var(--camp-text);
}

html[data-theme="dark"] .main-box,
html[data-theme="dark"] .page-box,
html[data-theme="dark"] .dev-box {
    background-color: var(--camp-surface);
    color: var(--camp-text);
}

html[data-theme="dark"] .main-content {
    background:
        radial-gradient(ellipse 90% 45% at 50% 0%, rgba(var(--camp-hero-glow-rgb, 255, 107, 0), 0.018) 0%, transparent 48%),
        var(--camp-bg-muted);
    color: var(--camp-text);
}

/* Bootstrap surfaces */
html[data-theme="dark"] .bg-light {
    background-color: var(--camp-surface) !important;
    color: var(--camp-text);
}

html[data-theme="dark"] .bg-white {
    background-color: var(--camp-surface) !important;
    color: var(--camp-text);
}

html[data-theme="dark"] .card {
    background-color: var(--camp-surface);
    border-color: var(--camp-border);
    color: var(--camp-text);
}

html[data-theme="dark"] .card-header,
html[data-theme="dark"] .card-footer {
    background-color: var(--camp-surface-raised);
    border-color: var(--camp-border);
    color: var(--camp-text);
}

html[data-theme="dark"] .list-group-item {
    background-color: var(--camp-surface);
    border-color: var(--camp-border);
    color: var(--camp-text);
}

html[data-theme="dark"] .list-group-item-action:hover,
html[data-theme="dark"] .list-group-item-action:focus {
    background-color: var(--camp-surface-raised);
    color: var(--camp-text);
}

html[data-theme="dark"] .table {
    --bs-table-bg: var(--camp-surface);
    --bs-table-color: var(--camp-text);
    --bs-table-border-color: var(--camp-border);
    --bs-table-striped-bg: rgba(255, 255, 255, 0.03);
    --bs-table-hover-bg: rgba(var(--camp-hero-glow-rgb, 90, 118, 84), 0.08);
}

html[data-theme="dark"] .table-light {
    --bs-table-bg: var(--camp-surface-raised);
    --bs-table-color: var(--camp-text);
}

html[data-theme="dark"] .form-control,
html[data-theme="dark"] .form-select,
html[data-theme="dark"] textarea.form-control {
    background-color: var(--camp-input-bg);
    border-color: var(--camp-input-border);
    color: var(--camp-text);
}

html[data-theme="dark"] .form-control:focus,
html[data-theme="dark"] .form-select:focus {
    background-color: #252e25;
    border-color: rgba(var(--camp-hero-glow-rgb, 90, 118, 84), 0.55);
    color: var(--camp-text);
    box-shadow: 0 0 0 0.2rem rgba(var(--camp-hero-glow-rgb, 90, 118, 84), 0.15);
}

html[data-theme="dark"] .form-control::placeholder {
    color: #7a887a;
}

html[data-theme="dark"] .input-group-text {
    background-color: var(--camp-surface-raised);
    border-color: var(--camp-input-border);
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .modal-content {
    background-color: var(--camp-surface);
    border-color: var(--camp-border);
    color: var(--camp-text);
}

html[data-theme="dark"] .modal-header,
html[data-theme="dark"] .modal-footer {
    border-color: var(--camp-border);
}

html[data-theme="dark"] .camp-push-prompt-modal {
    border-color: var(--camp-border);
    box-shadow: 0 24px 80px rgba(0, 0, 0, 0.45);
}

html[data-theme="dark"] .camp-push-prompt-lead {
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .camp-push-perks li {
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .camp-push-perks li strong {
    color: var(--camp-text);
}

html[data-theme="dark"] .camp-push-blocked-box {
    background: rgba(146, 64, 14, 0.15);
    border-color: rgba(251, 191, 36, 0.35);
}

html[data-theme="dark"] .camp-push-blocked-box strong {
    color: #fbbf24;
}

html[data-theme="dark"] .camp-push-blocked-box p,
html[data-theme="dark"] .camp-push-blocked-steps {
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .camp-camera-perks li i {
    color: #93c5fd;
}

html[data-theme="dark"] .camp-push-btn-dismiss {
    background: var(--camp-surface-raised);
    border-color: var(--camp-border);
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .dropdown-menu {
    background-color: var(--camp-surface);
    border-color: var(--camp-border);
}

html[data-theme="dark"] .dropdown-item {
    color: var(--camp-text);
}

html[data-theme="dark"] .dropdown-item:hover,
html[data-theme="dark"] .dropdown-item:focus {
    background-color: rgba(var(--camp-hero-glow-rgb, 90, 118, 84), 0.12);
    color: var(--camp-text);
}

html[data-theme="dark"] .btn-close {
    filter: invert(1) grayscale(100%) brightness(200%);
}

html[data-theme="dark"] .btn-outline-secondary {
    color: var(--camp-text-muted);
    border-color: var(--camp-input-border);
}

html[data-theme="dark"] .btn-outline-secondary:hover {
    background-color: var(--camp-surface-raised);
    color: var(--camp-text);
}

html[data-theme="dark"] .btn-light {
    background-color: var(--camp-surface-raised);
    border-color: var(--camp-border);
    color: var(--camp-text);
}

html[data-theme="dark"] .alert-secondary {
    background-color: var(--camp-surface-raised);
    border-color: var(--camp-border);
    color: var(--camp-text);
}

html[data-theme="dark"] hr {
    border-color: var(--camp-border);
    opacity: 1;
}

html[data-theme="dark"] .text-muted {
    color: var(--camp-text-muted) !important;
}

html[data-theme="dark"] .text-dark,
html[data-theme="dark"] .text-body {
    color: var(--camp-text) !important;
}

html[data-theme="dark"] .border,
html[data-theme="dark"] .border-top,
html[data-theme="dark"] .border-bottom,
html[data-theme="dark"] .border-start,
html[data-theme="dark"] .border-end {
    border-color: var(--camp-border) !important;
}

/* Page tabs */
html[data-theme="dark"] .page-tabs-bar {
    background: linear-gradient(
        180deg,
        color-mix(in srgb, var(--camp-brand-primary-mid) 14%, var(--camp-surface)) 0%,
        color-mix(in srgb, var(--camp-hero-from) 18%, var(--camp-bg-muted)) 100%
    );
    border-bottom-color: rgba(var(--camp-hero-glow-rgb), 0.14);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}

html[data-theme="dark"] .page-tab {
    border: 1px solid rgba(255, 255, 255, 0.12);
    background: rgba(255, 255, 255, 0.06);
}

html[data-theme="dark"] .page-tab--active {
    border: 1px solid var(--camp-brand-primary-light);
    background: linear-gradient(135deg, var(--camp-brand-primary) 0%, var(--camp-brand-primary-mid) 100%);
    box-shadow: 0 1px 4px rgba(var(--camp-hero-glow-rgb), 0.35);
}

html[data-theme="dark"] .page-tab__link {
    color: rgba(255, 255, 255, 0.52);
}

html[data-theme="dark"] .page-tab__link:hover,
html[data-theme="dark"] .page-tab__link:focus {
    color: rgba(255, 255, 255, 0.78);
}

html[data-theme="dark"] .page-tab--active .page-tab__link,
html[data-theme="dark"] .page-tab--active .page-tab__link:hover,
html[data-theme="dark"] .page-tab--active .page-tab__link:focus {
    color: #fff;
}

html[data-theme="dark"] .page-tab__tag {
    background: rgba(255, 255, 255, 0.1);
    color: rgba(255, 255, 255, 0.48);
}

html[data-theme="dark"] .page-tab--active .page-tab__tag {
    background: rgba(255, 255, 255, 0.2);
    color: rgba(255, 255, 255, 0.92);
}

html[data-theme="dark"] .page-tabs__clear {
    background: rgba(255, 255, 255, 0.06);
    border-color: rgba(255, 255, 255, 0.12);
    color: rgba(255, 255, 255, 0.55);
}

html[data-theme="dark"] .page-tabs__clear:hover {
    background: rgba(255, 255, 255, 0.1);
    color: #fca5a5;
    border-color: rgba(248, 113, 113, 0.35);
}

html[data-theme="dark"] .page-tab__close {
    color: rgba(255, 255, 255, 0.38);
}

html[data-theme="dark"] .page-tab--active .page-tab__close {
    color: rgba(255, 255, 255, 0.65);
}

/* Portal loader */
html[data-theme="dark"] .loader-portal {
    background: rgba(15, 20, 16, 0.92);
}

html[data-theme="dark"] .loader-portal__title {
    color: #c5d4c5;
}

/* Policy pages */
html[data-theme="dark"] .privacy-card {
    background: var(--camp-surface);
    border: 1px solid var(--camp-border);
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.25);
}

html[data-theme="dark"] .section-title,
html[data-theme="dark"] .privacy-card strong,
html[data-theme="dark"] .info-block .ib-title,
html[data-theme="dark"] .retention-alert strong {
    color: #fed7aa;
}

html[data-theme="dark"] .section-num {
    color: rgba(156, 170, 160, 0.75);
}

html[data-theme="dark"] .privacy-card p,
html[data-theme="dark"] .info-block,
html[data-theme="dark"] .policy-list li,
html[data-theme="dark"] .access-list li {
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .privacy-card a {
    color: var(--camp-brand-primary-light);
}

html[data-theme="dark"] .privacy-card a:hover {
    color: #c5f0b0;
}

html[data-theme="dark"] .info-block {
    background: var(--camp-surface-raised);
    border-left-color: var(--camp-brand-primary-light, #7a9474);
}

html[data-theme="dark"] .section-header {
    border-bottom-color: var(--camp-border);
}

html[data-theme="dark"] .section-icon.ic-green  { background: rgba(16, 185, 129, 0.15); color: #6ee7b7; }
html[data-theme="dark"] .section-icon.ic-amber  { background: rgba(245, 158, 11, 0.18); color: #fcd34d; }
html[data-theme="dark"] .section-icon.ic-blue   { background: rgba(59, 130, 246, 0.18); color: #93c5fd; }
html[data-theme="dark"] .section-icon.ic-red    { background: rgba(239, 68, 68, 0.18); color: #fca5a5; }
html[data-theme="dark"] .section-icon.ic-slate  { background: rgba(148, 163, 184, 0.18); color: #cbd5e1; }
html[data-theme="dark"] .section-icon.ic-purple { background: rgba(109, 40, 217, 0.2); color: #c4b5fd; }

html[data-theme="dark"] .data-list li {
    background: var(--camp-surface-raised);
    border-color: var(--camp-border);
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .data-list li i {
    color: var(--camp-brand-primary-light);
}

html[data-theme="dark"] .access-list li,
html[data-theme="dark"] .policy-list li {
    border-bottom-color: var(--camp-border);
}

html[data-theme="dark"] .access-list li::before,
html[data-theme="dark"] .policy-list li::before {
    color: var(--camp-brand-primary-light);
}

html[data-theme="dark"] .policy-table th {
    background: var(--camp-surface-raised);
    color: #fed7aa;
    border-bottom-color: var(--camp-border);
}

html[data-theme="dark"] .policy-table td {
    color: var(--camp-text-muted);
    border-bottom-color: var(--camp-border);
}

html[data-theme="dark"] .privacy-card code {
    background: rgba(0, 0, 0, 0.25);
    color: #c5f0b0;
    padding: 0.1em 0.35em;
    border-radius: 4px;
    font-size: 0.92em;
}

html[data-theme="dark"] .policy-nav a {
    background: var(--camp-surface);
    border-color: var(--camp-border);
    color: var(--camp-brand-primary-light);
}

html[data-theme="dark"] .policy-nav a:hover,
html[data-theme="dark"] .policy-nav a.is-active {
    background: var(--camp-brand-primary, #ff6b00);
    border-color: var(--camp-brand-primary, #ff6b00);
    color: #fff;
}

html[data-theme="dark"] .privacy-wrap .charity-chip {
    background: rgba(var(--camp-hero-glow-rgb, 90, 118, 84), 0.12);
    border-color: rgba(var(--camp-hero-glow-rgb, 90, 118, 84), 0.28);
    color: var(--camp-brand-primary-light);
}

html[data-theme="dark"] .portal-hero-notice {
    background: rgba(146, 64, 14, 0.35);
    border-color: rgba(251, 191, 36, 0.4);
    color: #fde68a;
}

html[data-theme="dark"] .portal-hero-notice a {
    color: #fef08a;
}

html[data-theme="dark"] .portal-hero-notice a:hover {
    color: #fff;
}

html[data-theme="dark"] .portal-hero--yellow {
    background:
        radial-gradient(ellipse 70% 55% at 50% 38%, rgba(253, 224, 71, 0.14) 0%, transparent 55%),
        linear-gradient(165deg, #422006 0%, #5c3d0a 38%, #713f12 68%, #451a03 100%);
}

html[data-theme="dark"] .portal-hero--yellow .topo-vignette {
    background: radial-gradient(ellipse 68% 62% at 50% 48%, transparent 0%, rgba(0, 0, 0, 0.28) 100%);
}

html[data-theme="dark"] .portal-hero--yellow .portal-hero-topo {
    opacity: 0.42;
}

html[data-theme="dark"] .portal-hero--yellow .portal-hero-inner,
html[data-theme="dark"] .portal-hero--yellow .portal-hero-title {
    color: #fef9c3;
}

html[data-theme="dark"] .portal-hero--yellow .portal-hero-sub {
    color: rgba(254, 243, 199, 0.92);
}

html[data-theme="dark"] .portal-hero--yellow .portal-hero-notice {
    background: rgba(28, 18, 4, 0.92);
    border-color: rgba(251, 191, 36, 0.45);
    color: #fde68a;
}

html[data-theme="dark"] .portal-hero--yellow .portal-hero-notice a {
    color: #fcd34d;
}

html[data-theme="dark"] .yellow-card-page .charity-chip {
    background: rgba(234, 179, 8, 0.14);
    border-color: rgba(251, 191, 36, 0.35);
    color: #fde68a;
}

html[data-theme="dark"] .yellow-card-page .policy-nav a.is-active {
    background: #a16207;
    border-color: #ca8a04;
    color: #fff;
}

html[data-theme="dark"] .yellow-card-page .policy-nav a:hover:not(.is-active) {
    background: rgba(234, 179, 8, 0.12);
    border-color: rgba(251, 191, 36, 0.35);
    color: #fde68a;
}

html[data-theme="dark"] .yellow-card-alert {
    background: rgba(66, 32, 6, 0.55);
    border-color: rgba(251, 191, 36, 0.45);
    box-shadow: 0 10px 32px rgba(0, 0, 0, 0.25);
}

html[data-theme="dark"] .yellow-card-alert-badge {
    background: rgba(234, 179, 8, 0.2);
    border-color: rgba(251, 191, 36, 0.4);
    color: #fde68a;
}

html[data-theme="dark"] .yellow-card-alert-icon {
    background: linear-gradient(135deg, rgba(253, 224, 71, 0.35) 0%, rgba(251, 191, 36, 0.25) 100%);
    border-color: rgba(251, 191, 36, 0.5);
}

html[data-theme="dark"] .yellow-card-alert-icon i,
html[data-theme="dark"] .yellow-card-alert-content h2 {
    color: #fde68a;
}

html[data-theme="dark"] .yellow-card-alert-content p {
    color: #fcd34d;
}

html[data-theme="dark"] .yellow-card-alert-btn {
    background: #92400e;
    border-color: #b45309;
    color: #fef9c3;
}

html[data-theme="dark"] .yellow-card-alert-btn--secondary {
    background: rgba(255, 255, 255, 0.06);
    border-color: rgba(251, 191, 36, 0.45);
    color: #fde68a;
}

html[data-theme="dark"] .yellow-card-official-card {
    background: linear-gradient(135deg, #713f12 0%, #422006 55%, #291504 100%);
    border-color: rgba(253, 224, 71, 0.25);
}

html[data-theme="dark"] .yellow-card-official-btn {
    background: #fde047;
    border-color: #facc15;
    color: #451a03;
}

html[data-theme="dark"] .yellow-card-official-btn--outline {
    background: rgba(255, 255, 255, 0.08);
    border-color: rgba(254, 243, 199, 0.35);
    color: #fef9c3;
}

html[data-theme="dark"] .yellow-card-contact {
    background: rgba(255, 255, 255, 0.04);
    border-color: var(--camp-border);
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .yellow-card-contact strong {
    color: var(--camp-text);
}

html[data-theme="dark"] .retention-alert {
    background: rgba(245, 158, 11, 0.12);
    border-color: rgba(251, 191, 36, 0.35);
    color: #fcd34d;
}

html[data-theme="dark"] .retention-alert i {
    color: #fbbf24;
}

html[data-theme="dark"] .contact-card {
    background: linear-gradient(135deg, var(--camp-brand-primary-mid, #e85d00) 0%, var(--camp-hero-from, #1a0c04) 100%);
    border: 1px solid rgba(var(--camp-hero-glow-rgb, 255, 107, 0), 0.25);
}

html[data-theme="dark"] .contact-btn:hover {
    background: rgba(255, 255, 255, 0.2);
    border-color: rgba(255, 255, 255, 0.5);
    color: #fff;
}

/* QR profiles */
html[data-theme="dark"] .qr-card {
    background: var(--camp-surface);
    border-color: var(--camp-border);
}

html[data-theme="dark"] .qr-section-title,
html[data-theme="dark"] .qr-field-value,
html[data-theme="dark"] .qr-glv-name,
html[data-theme="dark"] .qr-slot-name {
    color: var(--camp-text);
}

html[data-theme="dark"] .qr-field,
html[data-theme="dark"] .qr-med-item,
html[data-theme="dark"] .qr-schedule-block,
html[data-theme="dark"] .qr-schedule-day,
html[data-theme="dark"] .qr-glv-card {
    background: var(--camp-surface-raised);
    border-color: var(--camp-border);
}

html[data-theme="dark"] .qr-med-item strong {
    color: var(--camp-text);
}

html[data-theme="dark"] .qr-med-item span {
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .qr-schedule-day-title {
    color: var(--camp-brand-primary-light);
    border-bottom-color: var(--camp-border);
}

html[data-theme="dark"] .qr-schedule-day-title--adult {
    color: #cbd5e1;
}

html[data-theme="dark"] .qr-slot {
    border-left-color: rgba(var(--camp-hero-glow-rgb, 90, 118, 84), 0.35);
}

html[data-theme="dark"] .qr-slot--adult {
    border-left-color: rgba(148, 163, 184, 0.35);
}

html[data-theme="dark"] .qr-slot--custom {
    border-left-color: rgba(59, 130, 246, 0.35);
}

html[data-theme="dark"] .qr-slot--continues {
    border-left-color: rgba(148, 163, 184, 0.45);
}

html[data-theme="dark"] .qr-slot--continues::before {
    background: #64748b;
    box-shadow: 0 0 0 1px #64748b;
}

html[data-theme="dark"] .qr-slot-name--continues {
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .qr-slot-name--continues i {
    color: var(--camp-brand-primary-light);
}

html[data-theme="dark"] .qr-slot::before {
    border-color: var(--camp-surface-raised);
}

html[data-theme="dark"] .qr-slot-time {
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .qr-slot-tag {
    background: var(--camp-surface);
    border-color: var(--camp-border);
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .qr-slot-tag--loc {
    background: rgba(59, 130, 246, 0.18);
    color: #93c5fd;
    border-color: rgba(96, 165, 250, 0.35);
}

html[data-theme="dark"] .qr-slot-tag--grp {
    background: rgba(var(--camp-hero-glow-rgb, 90, 118, 84), 0.18);
    color: var(--camp-brand-primary-light);
    border-color: rgba(var(--camp-hero-glow-rgb, 90, 118, 84), 0.35);
}

html[data-theme="dark"] .qr-emergency {
    background: var(--camp-surface);
    border-color: rgba(248, 113, 113, 0.35);
}

html[data-theme="dark"] .qr-emergency-head {
    background: rgba(239, 68, 68, 0.12);
    color: #fca5a5;
    border-bottom-color: rgba(248, 113, 113, 0.25);
}

html[data-theme="dark"] .qr-emergency-body {
    background: var(--camp-surface);
}

html[data-theme="dark"] .qr-emergency-note {
    background: var(--camp-bg-muted);
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .qr-emergency-contact {
    background: var(--camp-surface-raised);
    border-color: var(--camp-border);
}

html[data-theme="dark"] .qr-emergency-contact .num {
    color: var(--camp-text);
}

html[data-theme="dark"] .qr-emergency-contact small {
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .qr-btn-email {
    background: rgba(245, 158, 11, 0.12);
    color: #fcd34d !important;
    border-color: rgba(251, 191, 36, 0.55);
}

html[data-theme="dark"] .qr-btn-email:hover {
    background: rgba(245, 158, 11, 0.22);
    color: #fde68a !important;
    border-color: rgba(251, 191, 36, 0.75);
}

html[data-theme="dark"] .qr-glv-sub,
html[data-theme="dark"] .qr-field-label,
html[data-theme="dark"] .qr-empty-state {
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .qr-empty-state i {
    color: var(--camp-text-muted);
    opacity: 0.6;
}

html[data-theme="dark"] .qr-section-icon--green { background: rgba(var(--camp-hero-glow-rgb, 255, 107, 0), 0.12); color: var(--camp-brand-primary-light); }
html[data-theme="dark"] .qr-section-icon--blue { background: rgba(59, 130, 246, 0.18); color: #93c5fd; }
html[data-theme="dark"] .qr-section-icon--red { background: rgba(239, 68, 68, 0.18); color: #fca5a5; }
html[data-theme="dark"] .qr-section-icon--amber { background: rgba(245, 158, 11, 0.18); color: #fcd34d; }
html[data-theme="dark"] .qr-section-icon--purple { background: rgba(109, 40, 217, 0.2); color: #c4b5fd; }
html[data-theme="dark"] .qr-section-icon--slate { background: rgba(148, 163, 184, 0.18); color: #cbd5e1; }

/* QR profile — Account & security (My Profile) */
html[data-theme="dark"] .qr-account-intro {
    background: var(--camp-surface-raised);
    border-color: var(--camp-border);
}

html[data-theme="dark"] .qr-account-intro-text {
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .qr-account-intro-text strong {
    color: var(--camp-brand-primary-light);
}

html[data-theme="dark"] .qr-security-panel {
    background: var(--camp-surface-raised);
    border-color: var(--camp-border);
}

html[data-theme="dark"] .qr-security-panel-head {
    background: var(--camp-surface);
    border-color: var(--camp-border);
}

html[data-theme="dark"] .qr-security-panel-icon--password {
    background: rgba(var(--camp-hero-glow-rgb, 90, 118, 84), 0.18);
    color: var(--camp-brand-primary-light);
}

html[data-theme="dark"] .qr-security-panel-icon--twofa {
    background: rgba(245, 158, 11, 0.18);
    color: #fcd34d;
}

html[data-theme="dark"] .qr-security-panel-icon--passkey {
    background: rgba(59, 130, 246, 0.18);
    color: #93c5fd;
}

html[data-theme="dark"] .qr-security-panel-title {
    color: var(--camp-text);
}

html[data-theme="dark"] .qr-security-panel-desc {
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .qr-security-callout {
    background: rgba(245, 158, 11, 0.12);
    border-color: rgba(251, 191, 36, 0.35);
    color: #fcd34d;
}

html[data-theme="dark"] .qr-security-callout--danger {
    background: rgba(239, 68, 68, 0.12);
    border-color: rgba(248, 113, 113, 0.35);
    color: #fca5a5;
}

html[data-theme="dark"] .qr-security-field label {
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .qr-security-field input {
    background: var(--camp-input-bg);
    border-color: var(--camp-input-border);
    color: var(--camp-text);
}

html[data-theme="dark"] .qr-security-field input:focus {
    border-color: rgba(var(--camp-hero-glow-rgb, 90, 118, 84), 0.55);
    box-shadow: 0 0 0 3px rgba(var(--camp-hero-glow-rgb, 90, 118, 84), 0.15);
}

html[data-theme="dark"] .qr-security-meta {
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .qr-btn-security--outline {
    background: var(--camp-surface);
    color: var(--camp-text);
    border-color: var(--camp-border);
}

html[data-theme="dark"] .qr-btn-security--danger {
    background: rgba(239, 68, 68, 0.1);
    color: #fca5a5;
    border-color: rgba(248, 113, 113, 0.35);
}

html[data-theme="dark"] .qr-btn-security--danger:hover {
    background: rgba(239, 68, 68, 0.2);
    color: #fecaca;
}

html[data-theme="dark"] .qr-qr-reveal {
    border-color: var(--camp-border);
}

html[data-theme="dark"] .qr-qr-app-hint {
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .qr-qr-app-hint strong {
    color: var(--camp-brand-primary-light);
}

html[data-theme="dark"] .qr-qr-box {
    background: var(--camp-surface);
    border-color: var(--camp-border);
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
}

html[data-theme="dark"] .qr-qr-secret {
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .qr-qr-secret code {
    background: rgba(var(--camp-hero-glow-rgb, 90, 118, 84), 0.15);
    color: var(--camp-brand-primary-light);
}

html[data-theme="dark"] .camp-passkey-item {
    background: var(--camp-surface);
    border-color: var(--camp-border);
}

html[data-theme="dark"] .camp-passkey-item-icon {
    background: rgba(59, 130, 246, 0.18);
    color: #93c5fd;
}

html[data-theme="dark"] .camp-passkey-item-name {
    color: var(--camp-text);
}

html[data-theme="dark"] .camp-passkey-item-meta {
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .camp-passkey-empty {
    background: var(--camp-bg-muted);
    border-color: var(--camp-border);
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .camp-passkey-empty i {
    color: var(--camp-text-muted);
    opacity: 0.5;
}

html[data-theme="dark"] .camp-passkey-remove {
    background: rgba(127, 29, 29, 0.2);
    border-color: rgba(248, 113, 113, 0.35);
    color: #fca5a5;
}

html[data-theme="dark"] .camp-passkey-remove:hover {
    background: rgba(127, 29, 29, 0.35);
    border-color: rgba(248, 113, 113, 0.5);
    color: #fecaca;
}

html[data-theme="dark"] .qr-security-field label span[style*="color:#aaa"] {
    color: var(--camp-text-muted) !important;
}

/* Knowledge base */
html[data-theme="dark"] .kb-search {
    background: var(--camp-input-bg);
    border-color: var(--camp-input-border);
    color: var(--camp-text);
}

html[data-theme="dark"] .kb-nav-btn {
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .kb-nav-btn:hover {
    background: var(--camp-surface-raised);
    color: var(--camp-text);
}

html[data-theme="dark"] .kb-nav-btn.active {
    background: rgba(var(--camp-hero-glow-rgb, 90, 118, 84), 0.15);
    color: #c5e6b8;
}

html[data-theme="dark"] .kb-nav-pill {
    background: var(--camp-surface);
    border-color: var(--camp-border);
    color: #c5e6b8;
}

html[data-theme="dark"] .kb-section-head {
    border-bottom-color: var(--camp-border);
}

html[data-theme="dark"] .kb-section-head h2,
html[data-theme="dark"] .kb-article-title,
html[data-theme="dark"] .kb-faq-q {
    color: var(--camp-text);
}

html[data-theme="dark"] .kb-article-summary,
html[data-theme="dark"] .kb-faq-a,
html[data-theme="dark"] .kb-faq-title,
html[data-theme="dark"] .kb-nav-label {
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .kb-article-btn,
html[data-theme="dark"] .kb-faq-item {
    background: var(--camp-surface);
    border-color: var(--camp-border);
}

html[data-theme="dark"] .kb-faq-item[open] > .kb-faq-q,
html[data-theme="dark"] .kb-faq-q:hover {
    background: var(--camp-surface-raised);
}

html[data-theme="dark"] #kbArticleModal .modal-body {
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .kb-support {
    background: var(--camp-surface);
    border-color: var(--camp-border);
}

html[data-theme="dark"] .kb-level {
    background: var(--camp-surface-raised);
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .kb-level--0 {
    background: rgba(var(--camp-hero-glow-rgb, 90, 118, 84), 0.15);
    color: var(--camp-brand-primary-light);
}

/* Attendance hub & common page patterns */
html[data-theme="dark"] .att-card,
html[data-theme="dark"] .slot-card,
html[data-theme="dark"] .section-zone,
html[data-theme="dark"] .field-card,
html[data-theme="dark"] .url-box,
html[data-theme="dark"] .empty-slot {
    background: var(--camp-surface);
    border-color: var(--camp-border);
    color: var(--camp-text);
}

html[data-theme="dark"] .att-card.complete {
    background: rgba(16, 185, 129, 0.12);
    border-color: rgba(52, 211, 153, 0.35);
}

html[data-theme="dark"] .slot-time-pill {
    background: var(--camp-surface-raised);
    border-color: var(--camp-border);
    color: #c5e6b8;
}

html[data-theme="dark"] .empty-slot {
    background: var(--camp-surface-raised);
    color: var(--camp-text-muted);
}

html[data-theme="dark"] .page-title,
html[data-theme="dark"] h1,
html[data-theme="dark"] h2,
html[data-theme="dark"] h3,
html[data-theme="dark"] h4,
html[data-theme="dark"] h5,
html[data-theme="dark"] h6 {
    color: var(--camp-text);
}

/* ── Site footer ───────────────────────────────────────────────────────── */
html[data-theme="dark"] .site-footer {
    background: linear-gradient(
        180deg,
        color-mix(in srgb, var(--camp-hero-from) 52%, #0a0a0a) 0%,
        color-mix(in srgb, var(--camp-sidebar-to) 38%, #050505) 100%
    );
    color: rgba(255, 255, 255, 0.72);
    border-top: 1px solid var(--camp-border);
}

html[data-theme="dark"] .site-footer::before {
    background: linear-gradient(
        90deg,
        color-mix(in srgb, var(--camp-hero-mid) 55%, black),
        var(--camp-brand-primary-mid),
        var(--camp-brand-primary),
        var(--camp-brand-primary-mid),
        color-mix(in srgb, var(--camp-hero-mid) 55%, black)
    );
    opacity: 0.75;
}

html[data-theme="dark"] .site-footer::after {
    background-image: repeating-linear-gradient(
        -45deg,
        rgba(var(--camp-hero-glow-rgb), 0.025) 0px,
        rgba(var(--camp-hero-glow-rgb), 0.025) 1px,
        transparent 1px,
        transparent 20px
    );
}

html[data-theme="dark"] .footer-main {
    border-bottom-color: var(--camp-border);
}

html[data-theme="dark"] .footer-brand .brand-tagline {
    color: rgba(255, 255, 255, 0.48);
}

html[data-theme="dark"] .footer-brand .charity-chip {
    background: rgba(var(--camp-hero-glow-rgb), 0.12);
    border-color: rgba(var(--camp-hero-glow-rgb), 0.28);
    color: var(--camp-brand-accent);
}

html[data-theme="dark"] .footer-nav-col h3 {
    color: rgba(255, 255, 255, 0.34);
}

html[data-theme="dark"] .footer-nav-col a,
html[data-theme="dark"] .footer-nav-col .footer-nav-btn {
    color: rgba(255, 255, 255, 0.62);
}

html[data-theme="dark"] .footer-nav-col a:hover,
html[data-theme="dark"] .footer-nav-col .footer-nav-btn:hover {
    color: #fff;
}

html[data-theme="dark"] .footer-nav-col a i,
html[data-theme="dark"] .footer-nav-col .footer-nav-btn i {
    color: var(--camp-brand-accent);
}

html[data-theme="dark"] .footer-nav-col a.footer-link-highlight {
    color: #fde68a;
}

html[data-theme="dark"] .footer-nav-col a.footer-link-highlight i {
    color: #fbbf24;
}

html[data-theme="dark"] .footer-nav-col a.footer-link-highlight:hover {
    color: #fef9c3;
}

html[data-theme="dark"] .footer-trust {
    background: rgba(0, 0, 0, 0.18);
    border-bottom-color: var(--camp-border);
}

html[data-theme="dark"] .footer-trust-sep {
    background: var(--camp-border);
}

html[data-theme="dark"] .footer-bottom p {
    color: rgba(255, 255, 255, 0.32);
}

html[data-theme="dark"] .footer-bottom p a {
    color: var(--camp-brand-accent);
}

html[data-theme="dark"] .footer-bottom p a:hover {
    color: color-mix(in srgb, var(--camp-brand-accent) 90%, white);
}

html[data-theme="dark"] .footer-privacy-btn {
    background: rgba(var(--camp-hero-glow-rgb), 0.1);
    border-color: rgba(var(--camp-hero-glow-rgb), 0.28);
    color: var(--camp-brand-accent);
}

html[data-theme="dark"] .footer-privacy-btn:hover {
    background: rgba(var(--camp-hero-glow-rgb), 0.18);
    border-color: rgba(var(--camp-hero-glow-rgb), 0.45);
    color: color-mix(in srgb, var(--camp-brand-accent) 90%, white);
}

html[data-theme="dark"] .footer-status-btn--stable {
    background: rgba(16, 185, 129, 0.1);
    border-color: rgba(52, 211, 153, 0.28);
    color: #6ee7b7;
}

html[data-theme="dark"] .footer-status-btn--stable:hover {
    background: rgba(16, 185, 129, 0.16);
    border-color: rgba(52, 211, 153, 0.42);
    color: #a7f3d0;
}

html[data-theme="dark"] .footer-status-btn--unstable {
    background: rgba(245, 158, 11, 0.1);
    border-color: rgba(251, 191, 36, 0.28);
    color: #fcd34d;
}

html[data-theme="dark"] .footer-status-btn--unstable:hover {
    background: rgba(245, 158, 11, 0.16);
    border-color: rgba(251, 191, 36, 0.42);
    color: #fde68a;
}

html[data-theme="dark"] .footer-status-btn--offline {
    background: rgba(239, 68, 68, 0.1);
    border-color: rgba(248, 113, 113, 0.28);
    color: #fca5a5;
}

html[data-theme="dark"] .footer-status-btn--offline:hover {
    background: rgba(239, 68, 68, 0.16);
    border-color: rgba(248, 113, 113, 0.42);
    color: #fecaca;
}

/* Navbar theme toggle */
.nav-theme-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    padding: 8px 14px;
    border-radius: 8px;
    font-size: 0.85rem;
    font-weight: 600;
    font-family: inherit;
    color: rgba(255, 255, 255, 0.88);
    background: transparent;
    border: none;
    cursor: pointer;
    transition: background 0.18s, color 0.18s;
    white-space: nowrap;
    line-height: 1;
}

.nav-theme-toggle:hover {
    background: rgba(255, 255, 255, 0.12);
    color: #fff;
}

.nav-theme-toggle i {
    font-size: 1rem;
    line-height: 1;
}

.nav-theme-label {
    display: inline-block;
}

.nav-theme-toggle--bar {
    display: none;
    margin: 0;
    padding: 6px 10px;
    background: rgba(255, 255, 255, 0.12);
    border: 1.5px solid rgba(255, 255, 255, 0.3);
    border-radius: 8px;
    font-size: 1.05rem;
    flex-shrink: 0;
}

@media (max-width: 767.98px) {
    .nav-theme-toggle--desktop {
        display: none !important;
    }

    .nav-theme-toggle--bar {
        display: inline-flex;
    }
}

@media (min-width: 768px) {
    .nav-theme-toggle--bar {
        display: none !important;
    }
}

/* Site toast notifications (addNotif) */
html[data-theme="dark"] .site-notif-toast {
    background: var(--camp-surface) !important;
    border-color: var(--camp-border) !important;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.45), 0 2px 8px rgba(0, 0, 0, 0.25) !important;
}

html[data-theme="dark"] .site-notif-body {
    color: var(--camp-text) !important;
}

html[data-theme="dark"] .site-notif-close {
    color: var(--camp-text-muted) !important;
}

html[data-theme="dark"] .site-notif-close:hover {
    background: var(--camp-surface-raised) !important;
    color: var(--camp-text) !important;
}

html[data-theme="dark"] .site-notif-progress {
    background: rgba(255, 255, 255, 0.06) !important;
}

html[data-theme="dark"] .site-notif-toast--success .site-notif-icon {
    background: rgba(16, 185, 129, 0.18) !important;
    color: #6ee7b7 !important;
}

html[data-theme="dark"] .site-notif-toast--warning .site-notif-icon {
    background: rgba(251, 191, 36, 0.18) !important;
    color: #fcd34d !important;
}

html[data-theme="dark"] .site-notif-toast--danger .site-notif-icon {
    background: rgba(248, 113, 113, 0.18) !important;
    color: #fca5a5 !important;
}

html[data-theme="dark"] .site-notif-toast--info .site-notif-icon {
    background: rgba(96, 165, 250, 0.18) !important;
    color: #93c5fd !important;
}
