/* ============================================================
   Portal v0.80 — Temas completos, glassmorphism e modo noite
   Animação original em Canvas 2D; sem dependências externas.
   ============================================================ */

body.lab2-app {
    --portal-bg-a: #e8f7ff;
    --portal-bg-b: #f8fcff;
    --portal-bg-c: #edf8ff;
    --portal-orb-a: rgba(15, 142, 216, .25);
    --portal-orb-b: rgba(24, 183, 178, .18);
    --portal-orb-c: rgba(246, 170, 50, .11);
    --glass-surface: rgba(255, 255, 255, .58);
    --glass-strong: rgba(255, 255, 255, .76);
    --glass-soft: rgba(255, 255, 255, .38);
    --glass-field: rgba(255, 255, 255, .58);
    --glass-line: rgba(28, 102, 153, .18);
    --glass-highlight: rgba(255, 255, 255, .78);
    --glass-shadow: 0 18px 54px rgba(36, 91, 129, .13);
    --grid-color: rgba(20, 105, 164, .045);
    --glass-blur: 18px;
}

body.lab2-app[data-accent="cyan"] {
    --accent: #0f9fc7;
    --accent-2: #18b7b2;
    --accent-3: #f6aa32;
    --portal-bg-a: #e6f7ff;
    --portal-bg-b: #f8fcff;
    --portal-bg-c: #edf9ff;
    --portal-orb-a: rgba(15, 159, 199, .25);
    --portal-orb-b: rgba(24, 183, 178, .18);
    --portal-orb-c: rgba(96, 195, 240, .12);
}

body.lab2-app[data-accent="violet"] {
    --accent: #7c5cff;
    --accent-2: #3ba6ed;
    --accent-3: #e879f9;
    --portal-bg-a: #f1ecff;
    --portal-bg-b: #fbfaff;
    --portal-bg-c: #eef6ff;
    --portal-orb-a: rgba(124, 92, 255, .24);
    --portal-orb-b: rgba(232, 121, 249, .15);
    --portal-orb-c: rgba(59, 166, 237, .14);
    --glass-surface: rgba(255, 252, 255, .58);
    --glass-line: rgba(103, 79, 174, .18);
    --grid-color: rgba(104, 78, 181, .042);
}

body.lab2-app[data-accent="ember"] {
    --accent: #f59e0b;
    --accent-2: #ef6b7a;
    --accent-3: #12b8a5;
    --portal-bg-a: #fff2df;
    --portal-bg-b: #fffdf8;
    --portal-bg-c: #f6f8ff;
    --portal-orb-a: rgba(245, 158, 11, .22);
    --portal-orb-b: rgba(239, 107, 122, .16);
    --portal-orb-c: rgba(18, 184, 165, .12);
    --glass-surface: rgba(255, 253, 248, .60);
    --glass-line: rgba(157, 102, 31, .17);
    --grid-color: rgba(166, 103, 25, .038);
}

body.lab2-app[data-accent="night"] {
    color-scheme: dark;
    --bg: #050914;
    --bg-2: #081223;
    --surface: rgba(8, 16, 31, .58);
    --surface-2: rgba(10, 20, 38, .72);
    --surface-soft: rgba(255, 255, 255, .055);
    --line: rgba(148, 194, 225, .16);
    --line-strong: rgba(148, 194, 225, .30);
    --text: #edf8ff;
    --text-soft: #b5c9d8;
    --muted: #8095a8;
    --accent: #2de2e6;
    --accent-2: #8b5cf6;
    --accent-3: #ff5ea8;
    --danger: #ff718b;
    --warn: #ffc35c;
    --ok: #4ee7a5;
    --portal-bg-a: #030711;
    --portal-bg-b: #07101f;
    --portal-bg-c: #0b1020;
    --portal-orb-a: rgba(45, 226, 230, .17);
    --portal-orb-b: rgba(139, 92, 246, .16);
    --portal-orb-c: rgba(255, 94, 168, .11);
    --glass-surface: rgba(7, 15, 29, .52);
    --glass-strong: rgba(8, 18, 35, .72);
    --glass-soft: rgba(255, 255, 255, .045);
    --glass-field: rgba(6, 14, 27, .62);
    --glass-line: rgba(151, 200, 232, .16);
    --glass-highlight: rgba(255, 255, 255, .10);
    --glass-shadow: 0 22px 70px rgba(0, 0, 0, .36);
    --grid-color: rgba(136, 198, 232, .035);
}

body.lab2-app {
    background:
        radial-gradient(circle at 8% 0%, var(--portal-orb-a), transparent 31%),
        radial-gradient(circle at 93% 8%, var(--portal-orb-b), transparent 31%),
        radial-gradient(circle at 50% 100%, var(--portal-orb-c), transparent 38%),
        linear-gradient(150deg, var(--portal-bg-a) 0%, var(--portal-bg-b) 48%, var(--portal-bg-c) 100%) !important;
    background-attachment: fixed !important;
    transition: color .24s ease, background .34s ease;
}

body.lab2-app::before {
    background:
        linear-gradient(var(--grid-color) 1px, transparent 1px),
        linear-gradient(90deg, var(--grid-color) 1px, transparent 1px) !important;
    background-size: 42px 42px !important;
    opacity: .92;
}

body.lab2-app[data-accent="night"]::after {
    content: "";
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background:
        radial-gradient(circle at 18% 24%, rgba(45,226,230,.10), transparent 22%),
        radial-gradient(circle at 80% 68%, rgba(139,92,246,.10), transparent 25%),
        linear-gradient(180deg, rgba(2,6,14,.12), rgba(2,6,14,.48));
}

body.lab2-app .lab-shell { position: relative; z-index: 2; }
body.lab2-app .toast,
body.lab2-app .lab2-update-modal,
body.lab2-app .outlook-recovery-backdrop,
body.lab2-app .opportunity-modal-backdrop,
body.lab2-app .lab2-course-viewer-backdrop { z-index: 1000; }

/* Superfícies principais em vidro */
body.lab2-app :is(
    .lab-side,
    .lab-top,
    .work-intro,
    .hero-board,
    .hero-panel,
    .panel,
    .metric-card,
    .lead-card,
    .work-card,
    .op-card,
    .lane,
    .person-card,
    .course-card,
    .course-native-card,
    .focus-panel,
    .account-hero,
    .account-panel,
    .admin-main-hero,
    .admin-tabs,
    .admin-tab-panel,
    .admin-activity-panel,
    .admin-user-card,
    .admin-course-list-panel,
    .admin-course-tool,
    .admin-update-hero,
    .admin-backups-panel,
    .admin-protection-panel,
    .admin-ms-config-card,
    .webtop-compact-hero,
    .webtop-script-card,
    .webtop-status-panel,
    .webtop-captures-panel,
    .webtop-how-panel,
    .webtop-native-diagnostic,
    .sales-period-panel,
    .sales-type-panel,
    .sales-course-panel,
    .sales-detail-panel
) {
    background: var(--glass-surface) !important;
    border-color: var(--glass-line) !important;
    box-shadow: var(--glass-shadow), inset 0 1px 0 var(--glass-highlight) !important;
    backdrop-filter: blur(var(--glass-blur)) saturate(145%);
    -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(145%);
}

body.lab2-app :is(
    .toolbar,
    .filter-chips,
    .work-filter-row,
    .lead-strip,
    .card-info-block,
    .page-metric,
    .admin-activity-row,
    .admin-course-row,
    .admin-backup-row,
    .admin-user-stats,
    .webtop-capture-row,
    .webtop-status-line,
    .sale-row,
    .call-row,
    .sales-course-row,
    .sales-type-card,
    .course-result-open,
    .course-result-copy,
    .scope-switch
) {
    background: var(--glass-soft) !important;
    border-color: var(--glass-line) !important;
    box-shadow: inset 0 1px 0 var(--glass-highlight);
}

body.lab2-app :is(
    .opportunity-modal-dialog,
    .lab2-course-viewer-dialog,
    .lab2-course-documents-dialog,
    .lab2-update-dialog,
    .outlook-recovery-dialog,
    .commission-close-dialog,
    .admin-user-dialog
) {
    color: var(--text) !important;
    background: var(--glass-strong) !important;
    border-color: var(--glass-line) !important;
    box-shadow: 0 30px 100px rgba(0,0,0,.28), inset 0 1px 0 var(--glass-highlight) !important;
    backdrop-filter: blur(24px) saturate(155%);
    -webkit-backdrop-filter: blur(24px) saturate(155%);
}

body.lab2-app :is(
    input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
    select,
    textarea
) {
    color: var(--text) !important;
    background: var(--glass-field) !important;
    border-color: var(--glass-line) !important;
    box-shadow: inset 0 1px 0 var(--glass-highlight);
}

body.lab2-app :is(input, textarea)::placeholder { color: var(--muted) !important; }
body.lab2-app[data-accent="night"] option { color: #edf8ff; background: #0b1729; }

/* Topbar e controlos também respondem ao tema */
body.lab2-app :is(.lab-side nav button, .portal-link, .logout-link, .profile, .admin-launch, .update-launch, .menu-toggle) {
    color: var(--text-soft) !important;
    background: var(--glass-soft) !important;
    border-color: var(--glass-line) !important;
    box-shadow: inset 0 1px 0 var(--glass-highlight);
}
body.lab2-app :is(.lab-side nav button, .portal-link, .logout-link, .profile, .admin-launch, .update-launch, .menu-toggle):hover {
    color: var(--text) !important;
    background: color-mix(in srgb, var(--accent) 11%, var(--glass-soft)) !important;
    border-color: color-mix(in srgb, var(--accent) 38%, var(--glass-line)) !important;
}
body.lab2-app .lab-side nav button.active {
    color: var(--text) !important;
    background: color-mix(in srgb, var(--accent) 13%, var(--glass-surface)) !important;
    border-color: color-mix(in srgb, var(--accent) 38%, var(--glass-line)) !important;
}
body.lab2-app .lab-side nav button.active .nav-icon {
    color: #fff !important;
    background: linear-gradient(135deg, var(--accent), var(--accent-2)) !important;
    box-shadow: 0 8px 20px color-mix(in srgb, var(--accent) 24%, transparent);
}

/* Seletores de tema */

body.lab2-app .swatch {
    position: relative;
    width: 23px;
    height: 23px;
    border: 1px solid rgba(255,255,255,.42);
    transition: transform .18s ease, box-shadow .18s ease, filter .18s ease;
}
body.lab2-app .swatch:hover { transform: translateY(-1px) scale(1.07); filter: saturate(1.12); }
body.lab2-app .swatch.active {
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--glass-strong) 90%, transparent), 0 0 0 5px color-mix(in srgb, var(--accent) 50%, transparent), 0 0 18px color-mix(in srgb, var(--accent) 34%, transparent) !important;
}
body.lab2-app .swatch-cyan { background: linear-gradient(135deg, #32d5f3, #46e7c0); }
body.lab2-app .swatch-violet { background: linear-gradient(135deg, #8b6cff, #ed7fe8); }
body.lab2-app .swatch-ember { background: linear-gradient(135deg, #ffb548, #ff7d85); }
body.lab2-app .swatch-night {
    display: grid;
    place-items: center;
    color: #dffbff;
    background: radial-gradient(circle at 32% 28%, #304a72, #111a31 55%, #050814);
    border-color: rgba(145,220,255,.35);
}
body.lab2-app .swatch-night svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

/* Texto e elementos que tinham cores claras fixas */
body.lab2-app[data-accent="night"] :is(
    .page-context h1,
    .screen-head h2,
    .panel-head h3,
    .lead-course-heading,
    .op-card-name,
    .course-native-heading h3,
    .admin-section-head h2,
    .admin-main-hero h2,
    .admin-user-card h3,
    .account-panel h2,
    .sales-period-title-row h2,
    .sales-course-copy strong,
    .sale-person strong,
    .lab2-update-header h2,
    .opportunity-modal-heading h2
) { color: var(--text) !important; }

body.lab2-app[data-accent="night"] :is(
    .page-context .label,
    .lead-course-label,
    .lead-course-modality,
    .lead-contact-link,
    .op-followup-task,
    .admin-user-email,
    .admin-activity-updated,
    .admin-course-name small,
    .account-panel p,
    .webtop-status-line span,
    .sales-course-copy small,
    .sale-meta span strong,
    .lab2-update-version span,
    .lab2-update-file small
) { color: var(--text-soft) !important; }

body.lab2-app[data-accent="night"] :is(
    .lab2-update-version,
    .lab2-update-file,
    .course-search-results,
    .lab2-course-documents-body li,
    .outlook-recovery-result,
    .commission-close-preview
) {
    color: var(--text) !important;
    background: var(--glass-soft) !important;
    border-color: var(--glass-line) !important;
}

body.lab2-app[data-accent="night"] .lab2-course-viewer-body iframe,
body.lab2-app[data-accent="night"] .lab2-course-viewer-loading {
    background: transparent !important;
}

body.lab2-app[data-accent="night"] .label { color: color-mix(in srgb, var(--accent) 72%, white) !important; }
body.lab2-app[data-accent="night"] .brand img { filter: drop-shadow(0 0 14px rgba(45,226,230,.18)); }

/* Backdrops mais elegantes e consistentes */
body.lab2-app :is(
    .opportunity-modal-backdrop,
    .lab2-course-viewer-backdrop,
    .lab2-course-documents-backdrop,
    .lab2-update-backdrop,
    .outlook-recovery-backdrop,
    .commission-close-backdrop,
    .admin-user-modal-backdrop
) {
    background: rgba(8, 18, 31, .35) !important;
    backdrop-filter: blur(10px) saturate(115%);
    -webkit-backdrop-filter: blur(10px) saturate(115%);
}
body.lab2-app[data-accent="night"] :is(
    .opportunity-modal-backdrop,
    .lab2-course-viewer-backdrop,
    .lab2-course-documents-backdrop,
    .lab2-update-backdrop,
    .outlook-recovery-backdrop,
    .commission-close-backdrop,
    .admin-user-modal-backdrop
) { background: rgba(1, 4, 10, .52) !important; }

@media (max-width: 1050px) {
    
    body.lab2-app .swatch { width: 21px; height: 21px; }
}

/* ============================================================
   Portal v0.81 — correção de glass, modais e fundo Tubes
   ============================================================ */

/* Glass mais evidente em todos os temas, sem excesso de custo gráfico. */
body.lab2-app {
    --glass-surface: rgba(255, 255, 255, .46);
    --glass-strong: rgba(255, 255, 255, .82);
    --glass-soft: rgba(255, 255, 255, .28);
    --glass-field: rgba(255, 255, 255, .54);
    --glass-line: rgba(50, 119, 163, .22);
    --glass-highlight: rgba(255, 255, 255, .88);
    --glass-shadow: 0 16px 42px rgba(31, 84, 121, .12);
    --glass-blur: 12px;
}
body.lab2-app[data-accent="violet"] {
    --glass-surface: rgba(252, 248, 255, .44);
    --glass-strong: rgba(252, 249, 255, .82);
    --glass-soft: rgba(246, 239, 255, .29);
    --glass-field: rgba(252, 249, 255, .55);
    --glass-line: rgba(109, 84, 183, .22);
    --glass-shadow: 0 16px 44px rgba(91, 67, 162, .13);
}
body.lab2-app[data-accent="ember"] {
    --glass-surface: rgba(255, 250, 240, .46);
    --glass-strong: rgba(255, 252, 245, .84);
    --glass-soft: rgba(255, 244, 226, .30);
    --glass-field: rgba(255, 252, 246, .57);
    --glass-line: rgba(167, 105, 31, .22);
    --glass-shadow: 0 16px 44px rgba(154, 91, 29, .12);
}
body.lab2-app[data-accent="night"] {
    --glass-surface: rgba(8, 15, 28, .47);
    --glass-strong: rgba(8, 17, 32, .88);
    --glass-soft: rgba(255, 255, 255, .055);
    --glass-field: rgba(7, 15, 29, .68);
    --glass-line: rgba(153, 205, 235, .20);
    --glass-highlight: rgba(255, 255, 255, .105);
    --glass-shadow: 0 18px 54px rgba(0, 0, 0, .30);
}

/* O fundo WebGL vive isolado num iframe de baixa resolução e não interceta cliques. */
body.lab2-app .portal-night-background {
    position: fixed;
    inset: 0;
    z-index: 0;
    display: none;
    overflow: hidden;
    pointer-events: none;
    background: #02050c;
}
body.lab2-app[data-accent="night"] .portal-night-background.is-active { display: block; }
body.lab2-app .portal-night-frame {
    position: absolute;
    top: 0;
    left: 0;
    width: 72%;
    height: 72%;
    border: 0;
    pointer-events: none;
    transform: scale(1.3889);
    transform-origin: 0 0;
    opacity: .94;
    filter: saturate(1.05) contrast(1.04);
}
body.lab2-app .portal-night-background.is-low-power .portal-night-frame {
    width: 58%;
    height: 58%;
    transform: scale(1.7242);
    opacity: .88;
}
body.lab2-app[data-accent="night"] {
    background: #02050c !important;
}
body.lab2-app[data-accent="night"]::before,
body.lab2-app[data-accent="night"]::after {
    opacity: .18 !important;
}

/* Todas as superfícies de trabalho passam a ter leitura glass em qualquer tema. */
body.lab2-app :is(
    .lab-side,
    .lab-top,
    .work-intro,
    .hero-board,
    .hero-panel,
    .panel,
    .lane,
    .focus-panel,
    .account-hero,
    .account-panel,
    .account-details-panel,
    .account-media-panel,
    .account-password-panel,
    .account-microsoft-panel,
    .admin-main-hero,
    .admin-tabs,
    .admin-tab-panel,
    .admin-activity-panel,
    .admin-course-list-panel,
    .admin-course-tool,
    .admin-update-hero,
    .admin-backups-panel,
    .admin-protection-panel,
    .webtop-compact-hero,
    .webtop-status-panel,
    .webtop-captures-panel,
    .webtop-how-panel,
    .webtop-native-diagnostic,
    .sales-period-panel,
    .sales-type-panel,
    .sales-course-panel,
    .sales-detail-panel,
    .courses-native-intro,
    .courses-native-toolbar,
    .toolbar,
    .work-toolbar
) {
    background: var(--glass-surface) !important;
    border-color: var(--glass-line) !important;
    box-shadow: var(--glass-shadow), inset 0 1px 0 var(--glass-highlight) !important;
    backdrop-filter: blur(var(--glass-blur)) saturate(132%) !important;
    -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(132%) !important;
}

/* Cartões e linhas também são transparentes, mas sem blur individual para manter rapidez. */
body.lab2-app :is(
    .metric-card,
    .lead-card,
    .work-card,
    .op-card,
    .person-card,
    .course-card,
    .course-native-card,
    .admin-user-card,
    .admin-ms-config-card,
    .admin-version-card,
    .webtop-script-card,
    .sales-type-card,
    .lead-strip,
    .card-info-block,
    .page-metric,
    .admin-activity-row,
    .admin-course-row,
    .admin-backup-row,
    .admin-user-stats,
    .webtop-capture-row,
    .webtop-status-line,
    .sale-row,
    .sale-detail-row,
    .call-row,
    .sales-course-row,
    .filter-chips,
    .work-filter-row,
    .scope-switch
) {
    background: var(--glass-soft) !important;
    border-color: var(--glass-line) !important;
    box-shadow: 0 10px 28px color-mix(in srgb, var(--accent) 8%, transparent), inset 0 1px 0 var(--glass-highlight) !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}

/* Os modais nunca desfocam o conteúdo nem a página. */
body.lab2-app :is(
    .opportunity-modal-backdrop,
    .lab2-course-viewer-backdrop,
    .lab2-course-documents-backdrop,
    .lab2-update-backdrop,
    .outlook-recovery-backdrop,
    .commission-close-backdrop,
    .admin-user-modal-backdrop
) {
    background: rgba(7, 17, 29, .42) !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}
body.lab2-app[data-accent="night"] :is(
    .opportunity-modal-backdrop,
    .lab2-course-viewer-backdrop,
    .lab2-course-documents-backdrop,
    .lab2-update-backdrop,
    .outlook-recovery-backdrop,
    .commission-close-backdrop,
    .admin-user-modal-backdrop
) { background: rgba(0, 2, 8, .62) !important; }

body.lab2-app :is(
    .opportunity-modal-dialog,
    .lab2-course-viewer-dialog,
    .lab2-course-documents-dialog,
    .lab2-update-dialog,
    .outlook-recovery-dialog,
    .commission-close-dialog,
    .admin-user-dialog
) {
    background: var(--glass-strong) !important;
    border-color: var(--glass-line) !important;
    box-shadow: 0 30px 100px rgba(0,0,0,.28), inset 0 1px 0 var(--glass-highlight) !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    filter: none !important;
}
body.lab2-app .lab2-course-viewer-dialog,
body.lab2-app .lab2-course-viewer-body,
body.lab2-app .lab2-course-viewer-body iframe {
    filter: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}

/* Cabeçalhos e campos acompanham o tema sem se tornarem opacos. */
body.lab2-app :is(
    .opportunity-modal-header,
    .lab2-course-viewer-header,
    .lab2-course-documents-dialog > header,
    .lab2-update-header,
    .admin-user-dialog > header
) {
    background: color-mix(in srgb, var(--glass-strong) 88%, transparent) !important;
    border-color: var(--glass-line) !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}
body.lab2-app :is(
    input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
    select,
    textarea
) {
    background: var(--glass-field) !important;
    border-color: var(--glass-line) !important;
}

@media (max-width: 820px) {
    body.lab2-app .portal-night-frame {
        width: 54%;
        height: 54%;
        transform: scale(1.8519);
        opacity: .78;
    }
}

@media (prefers-reduced-motion: reduce) {
    body.lab2-app .portal-night-background { display: none !important; }
    body.lab2-app[data-accent="night"] {
        background:
            radial-gradient(circle at 14% 12%, rgba(249,103,251,.17), transparent 32%),
            radial-gradient(circle at 82% 70%, rgba(83,188,40,.12), transparent 34%),
            #02050c !important;
    }
}

/* ============================================================
   Portal v0.82 — glass mais visível, Tubes sem 404 e scroll modal
   ============================================================ */

/* Paletas mais distintas e superfícies suficientemente transparentes
   para que o fundo temático seja visível através dos blocos. */
body.lab2-app[data-accent="cyan"] {
    --portal-bg-a: #cfefff;
    --portal-bg-b: #f5fbff;
    --portal-bg-c: #dff8f5;
    --portal-orb-a: rgba(0, 162, 220, .42);
    --portal-orb-b: rgba(0, 198, 174, .31);
    --portal-orb-c: rgba(85, 132, 255, .20);
    --glass-surface: rgba(240, 252, 255, .40);
    --glass-strong: rgba(246, 253, 255, .72);
    --glass-soft: rgba(226, 248, 252, .27);
    --glass-field: rgba(249, 254, 255, .56);
    --glass-line: rgba(9, 128, 177, .29);
    --glass-highlight: rgba(255, 255, 255, .92);
}
body.lab2-app[data-accent="violet"] {
    --portal-bg-a: #e2d8ff;
    --portal-bg-b: #fbf8ff;
    --portal-bg-c: #dcecff;
    --portal-orb-a: rgba(113, 76, 255, .42);
    --portal-orb-b: rgba(225, 79, 239, .29);
    --portal-orb-c: rgba(50, 157, 235, .23);
    --glass-surface: rgba(249, 243, 255, .39);
    --glass-strong: rgba(253, 249, 255, .72);
    --glass-soft: rgba(240, 229, 255, .27);
    --glass-field: rgba(254, 250, 255, .56);
    --glass-line: rgba(104, 70, 190, .29);
    --glass-highlight: rgba(255, 255, 255, .90);
}
body.lab2-app[data-accent="ember"] {
    --portal-bg-a: #ffe0ae;
    --portal-bg-b: #fffaf1;
    --portal-bg-c: #ffdce3;
    --portal-orb-a: rgba(245, 146, 0, .40);
    --portal-orb-b: rgba(239, 83, 111, .29);
    --portal-orb-c: rgba(0, 174, 155, .22);
    --glass-surface: rgba(255, 248, 235, .40);
    --glass-strong: rgba(255, 251, 243, .74);
    --glass-soft: rgba(255, 238, 213, .28);
    --glass-field: rgba(255, 252, 246, .58);
    --glass-line: rgba(176, 99, 17, .28);
    --glass-highlight: rgba(255, 255, 255, .91);
}
body.lab2-app[data-accent="night"] {
    --glass-surface: rgba(7, 15, 29, .43);
    --glass-strong: rgba(8, 18, 35, .82);
    --glass-soft: rgba(255, 255, 255, .075);
    --glass-field: rgba(7, 16, 31, .67);
    --glass-line: rgba(150, 211, 240, .24);
}

body.lab2-app:not([data-accent="night"]) {
    background:
        radial-gradient(ellipse 66% 52% at 2% 4%, var(--portal-orb-a), transparent 68%),
        radial-gradient(ellipse 58% 48% at 98% 10%, var(--portal-orb-b), transparent 68%),
        radial-gradient(ellipse 62% 48% at 54% 100%, var(--portal-orb-c), transparent 70%),
        linear-gradient(145deg, var(--portal-bg-a) 0%, var(--portal-bg-b) 48%, var(--portal-bg-c) 100%) !important;
}
body.lab2-app:not([data-accent="night"])::after {
    content: "";
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background:
        radial-gradient(circle at 17% 26%, color-mix(in srgb, var(--accent) 17%, transparent), transparent 21%),
        radial-gradient(circle at 82% 67%, color-mix(in srgb, var(--accent-2) 15%, transparent), transparent 24%),
        linear-gradient(120deg, rgba(255,255,255,.18), transparent 38%, rgba(255,255,255,.12));
}

/* O vidro dos painéis principais ganha gradiente e brilho de bordo. */
body.lab2-app :is(
    .lab-side,
    .lab-top,
    .work-intro,
    .hero-board,
    .hero-panel,
    .panel,
    .lane,
    .focus-panel,
    .account-hero,
    .account-panel,
    .account-details-panel,
    .account-media-panel,
    .account-password-panel,
    .account-microsoft-panel,
    .admin-main-hero,
    .admin-tabs,
    .admin-tab-panel,
    .admin-activity-panel,
    .admin-course-list-panel,
    .admin-course-tool,
    .admin-update-hero,
    .admin-backups-panel,
    .admin-protection-panel,
    .webtop-compact-hero,
    .webtop-status-panel,
    .webtop-captures-panel,
    .webtop-how-panel,
    .webtop-native-diagnostic,
    .sales-period-panel,
    .sales-type-panel,
    .sales-course-panel,
    .sales-detail-panel,
    .courses-native-intro,
    .courses-native-toolbar,
    .toolbar,
    .work-toolbar
) {
    background:
        linear-gradient(145deg,
            color-mix(in srgb, var(--glass-surface) 92%, white 8%),
            color-mix(in srgb, var(--glass-surface) 91%, var(--accent) 9%)) !important;
    border-color: var(--glass-line) !important;
    box-shadow:
        var(--glass-shadow),
        inset 0 1px 0 var(--glass-highlight),
        inset 0 -1px 0 color-mix(in srgb, var(--accent) 11%, transparent) !important;
    backdrop-filter: blur(16px) saturate(142%) !important;
    -webkit-backdrop-filter: blur(16px) saturate(142%) !important;
}
body.lab2-app[data-accent="night"] :is(
    .lab-side,.lab-top,.work-intro,.hero-board,.hero-panel,.panel,.lane,.focus-panel,
    .account-hero,.account-panel,.account-details-panel,.account-media-panel,
    .account-password-panel,.account-microsoft-panel,.admin-main-hero,.admin-tabs,
    .admin-tab-panel,.admin-activity-panel,.admin-course-list-panel,.admin-course-tool,
    .admin-update-hero,.admin-backups-panel,.admin-protection-panel,.webtop-compact-hero,
    .webtop-status-panel,.webtop-captures-panel,.webtop-how-panel,.webtop-native-diagnostic,
    .sales-period-panel,.sales-type-panel,.sales-course-panel,.sales-detail-panel,
    .courses-native-intro,.courses-native-toolbar,.toolbar,.work-toolbar
) {
    background: linear-gradient(145deg, rgba(8,19,36,.60), rgba(5,12,25,.40)) !important;
}

/* Os cartões repetidos também são vidro, mas com blur reduzido para não
   penalizar a listagem de Leads/Oportunidades. */
body.lab2-app :is(
    .metric-card,
    .lead-card,
    .work-card,
    .op-card,
    .person-card,
    .course-card,
    .course-native-card,
    .admin-user-card,
    .admin-ms-config-card,
    .admin-version-card,
    .webtop-script-card,
    .sales-type-card,
    .lead-strip,
    .card-info-block,
    .page-metric,
    .admin-activity-row,
    .admin-course-row,
    .admin-backup-row,
    .admin-user-stats,
    .webtop-capture-row,
    .webtop-status-line,
    .sale-row,
    .sale-detail-row,
    .call-row,
    .sales-course-row,
    .filter-chips,
    .work-filter-row,
    .scope-switch
) {
    background:
        linear-gradient(145deg,
            color-mix(in srgb, var(--glass-soft) 92%, white 8%),
            color-mix(in srgb, var(--glass-soft) 91%, var(--accent) 9%)) !important;
    border-color: var(--glass-line) !important;
    backdrop-filter: blur(7px) saturate(126%) !important;
    -webkit-backdrop-filter: blur(7px) saturate(126%) !important;
}
body.lab2-app[data-accent="night"] :is(
    .metric-card,.lead-card,.work-card,.op-card,.person-card,.course-card,
    .course-native-card,.admin-user-card,.admin-ms-config-card,.admin-version-card,
    .webtop-script-card,.sales-type-card,.lead-strip,.card-info-block,.page-metric,
    .admin-activity-row,.admin-course-row,.admin-backup-row,.admin-user-stats,
    .webtop-capture-row,.webtop-status-line,.sale-row,.sale-detail-row,.call-row,
    .sales-course-row,.filter-chips,.work-filter-row,.scope-switch
) {
    background: linear-gradient(145deg, rgba(255,255,255,.085), rgba(255,255,255,.035)) !important;
}

/* A página por baixo fica totalmente fixa; o conteúdo da ficha continua
   a deslocar-se dentro do iframe do modal. */
html.has-course-viewer,
body.has-course-viewer {
    overflow: hidden !important;
    overscroll-behavior: none !important;
}
body.lab2-app .lab2-course-viewer {
    overscroll-behavior: contain;
}
body.lab2-app .lab2-course-viewer-body {
    overflow: hidden !important;
    overscroll-behavior: contain;
}
body.lab2-app .lab2-course-viewer-body iframe {
    overscroll-behavior: contain;
}

@media (max-width: 900px) {
    body.lab2-app :is(.lead-card,.work-card,.op-card,.course-native-card,.admin-user-card) {
        backdrop-filter: blur(4px) saturate(120%) !important;
        -webkit-backdrop-filter: blur(4px) saturate(120%) !important;
    }
}

/* ============================================================
   Portal v0.83 — modal de cursos, contraste e glass refinados
   ============================================================ */

/* O backdrop deve ficar atrás do diálogo. Na v0.82 tinha z-index próprio,
   ficando por cima da ficha: escurecia o conteúdo e bloqueava o scroll. */
body.lab2-app .lab2-course-viewer-backdrop {
    z-index: 0 !important;
    pointer-events: auto;
}
body.lab2-app .lab2-course-viewer-dialog {
    z-index: 1 !important;
    isolation: isolate;
    overflow: hidden !important;
    border-radius: 24px !important;
    background-clip: padding-box;
    transform: translateZ(0);
}
body.lab2-app .lab2-course-viewer-header {
    position: relative;
    z-index: 2;
    flex: 0 0 auto;
    border-radius: 24px 24px 0 0;
}
body.lab2-app .lab2-course-viewer-body {
    position: relative;
    z-index: 1;
    min-height: 0;
    overflow: hidden !important;
    border-radius: 0 0 24px 24px;
    background: transparent !important;
}
body.lab2-app .lab2-course-viewer-body iframe {
    position: relative;
    z-index: 1;
    width: 100%;
    height: 100%;
    min-height: 0;
    overflow: auto;
    border-radius: 0 0 24px 24px;
    background: transparent !important;
    pointer-events: auto !important;
}
body.lab2-app .lab2-course-viewer-loading { z-index: 3; }

/* O fundo permanece estático; o conteúdo desloca-se sobre ele. Os temas
   claros ficam mais próximos do branco e os cartões deixam ver o fundo. */
body.lab2-app[data-accent="cyan"] {
    --portal-bg-a: #f4fbfe;
    --portal-bg-b: #ffffff;
    --portal-bg-c: #f2fbf9;
    --portal-orb-a: rgba(17, 169, 218, .20);
    --portal-orb-b: rgba(22, 190, 169, .16);
    --portal-orb-c: rgba(112, 139, 255, .11);
    --glass-surface: rgba(255,255,255,.54);
    --glass-strong: rgba(255,255,255,.84);
    --glass-soft: rgba(255,255,255,.38);
    --glass-field: rgba(255,255,255,.68);
    --glass-line: rgba(52,133,173,.22);
}
body.lab2-app[data-accent="violet"] {
    --portal-bg-a: #faf7ff;
    --portal-bg-b: #ffffff;
    --portal-bg-c: #f5f8ff;
    --portal-orb-a: rgba(120, 87, 245, .20);
    --portal-orb-b: rgba(222, 98, 230, .15);
    --portal-orb-c: rgba(54, 159, 225, .11);
    --glass-surface: rgba(255,255,255,.52);
    --glass-strong: rgba(255,255,255,.84);
    --glass-soft: rgba(252,248,255,.38);
    --glass-field: rgba(255,255,255,.68);
    --glass-line: rgba(112,87,180,.22);
}
body.lab2-app[data-accent="ember"] {
    --portal-bg-a: #fffaf2;
    --portal-bg-b: #ffffff;
    --portal-bg-c: #fff7f8;
    --portal-orb-a: rgba(243, 157, 25, .20);
    --portal-orb-b: rgba(235, 91, 113, .15);
    --portal-orb-c: rgba(18, 178, 158, .10);
    --glass-surface: rgba(255,255,255,.54);
    --glass-strong: rgba(255,255,255,.85);
    --glass-soft: rgba(255,252,247,.39);
    --glass-field: rgba(255,255,255,.69);
    --glass-line: rgba(170,108,40,.21);
}
body.lab2-app:not([data-accent="night"]) {
    background:
        radial-gradient(ellipse 54% 44% at -2% 2%, var(--portal-orb-a), transparent 69%),
        radial-gradient(ellipse 50% 42% at 102% 8%, var(--portal-orb-b), transparent 70%),
        radial-gradient(ellipse 52% 38% at 52% 104%, var(--portal-orb-c), transparent 72%),
        linear-gradient(145deg, var(--portal-bg-a), var(--portal-bg-b) 50%, var(--portal-bg-c)) !important;
    background-attachment: fixed !important;
    background-repeat: no-repeat !important;
}
body.lab2-app:not([data-accent="night"])::after {
    opacity: .72;
    background:
        linear-gradient(118deg, rgba(255,255,255,.30), transparent 35%, rgba(255,255,255,.18)),
        radial-gradient(circle at 22% 28%, color-mix(in srgb, var(--accent) 9%, transparent), transparent 23%),
        radial-gradient(circle at 79% 69%, color-mix(in srgb, var(--accent-2) 8%, transparent), transparent 25%) !important;
}

/* Vidro coerente: painéis e cartões têm transparência semelhante ao modo
   noite, mantendo apenas blur moderado para preservar o desempenho. */
body.lab2-app:not([data-accent="night"]) :is(
    .lab-side,.lab-top,.work-intro,.hero-board,.hero-panel,.panel,.lane,.focus-panel,
    .account-hero,.account-panel,.admin-main-hero,.admin-tabs,.admin-tab-panel,
    .admin-activity-panel,.admin-course-list-panel,.admin-course-tool,.admin-update-hero,
    .admin-backups-panel,.admin-protection-panel,.webtop-compact-hero,.webtop-status-panel,
    .webtop-captures-panel,.webtop-how-panel,.webtop-native-diagnostic,.sales-period-panel,
    .sales-type-panel,.sales-course-panel,.sales-detail-panel,.courses-native-intro,
    .courses-native-toolbar,.toolbar,.work-toolbar
) {
    background: linear-gradient(145deg, rgba(255,255,255,.57), rgba(255,255,255,.38)) !important;
    backdrop-filter: blur(15px) saturate(135%) !important;
    -webkit-backdrop-filter: blur(15px) saturate(135%) !important;
}
body.lab2-app:not([data-accent="night"]) :is(
    .metric-card,.lead-card,.work-card,.op-card,.person-card,.course-card,.course-native-card,
    .admin-user-card,.admin-ms-config-card,.admin-version-card,.webtop-script-card,
    .sales-type-card,.lead-strip,.card-info-block,.page-metric,.admin-activity-row,
    .admin-course-row,.admin-backup-row,.admin-user-stats,.webtop-capture-row,
    .webtop-status-line,.sale-row,.sale-detail-row,.call-row,.sales-course-row,
    .filter-chips,.work-filter-row,.scope-switch,.lead-intake-info,.lead-intake-fact
) {
    background: linear-gradient(145deg, rgba(255,255,255,.48), rgba(255,255,255,.27)) !important;
    border-color: var(--glass-line) !important;
    backdrop-filter: blur(8px) saturate(126%) !important;
    -webkit-backdrop-filter: blur(8px) saturate(126%) !important;
}

/* Noite: menos escurecimento ao abrir a ficha e contraste real nos textos. */
body.lab2-app[data-accent="night"] .lab2-course-viewer-backdrop {
    background: rgba(0, 3, 10, .36) !important;
}
body.lab2-app[data-accent="night"] .lab2-course-viewer-dialog {
    background: rgba(8, 18, 34, .94) !important;
    border-color: rgba(143, 211, 239, .30) !important;
    box-shadow: 0 30px 100px rgba(0,0,0,.48), inset 0 1px 0 rgba(255,255,255,.11) !important;
}
body.lab2-app[data-accent="night"] .lab2-course-viewer-header {
    color: #f4fbff !important;
    background: rgba(10, 23, 42, .94) !important;
    border-color: rgba(143, 211, 239, .20) !important;
}
body.lab2-app[data-accent="night"] .lab2-course-viewer-header h2 { color: #f5fbff !important; }
body.lab2-app[data-accent="night"] .lab2-course-viewer-header .label { color: #67e8f1 !important; }
body.lab2-app[data-accent="night"] .lab2-course-viewer-close {
    color: #d9e8f2 !important;
    background: rgba(255,255,255,.08) !important;
    border-color: rgba(150,210,239,.22) !important;
}

body.lab2-app[data-accent="night"] :is(
    .person-card strong,.lead-card strong,.op-card strong,.card-info-block strong,
    .lead-course-heading,.lead-course-label,.lead-course-modality,.lead-contact-link,
    .lead-intake-fact strong,.lead-intake-message p,.lead-intake-message small,
    .work-badge,.page-metric strong,.filter-chips button,.work-filter-row,
    .card-title-line,.card-title-line strong
) { color: #e9f5fb !important; }
body.lab2-app[data-accent="night"] :is(
    .person-card p,.lead-card p,.lead-contact-link span,.card-info-block span,
    .lead-intake-fact small,.page-metric span,.work-filter-row span
) { color: #a9c1d1 !important; }
body.lab2-app[data-accent="night"] .lead-intake-info {
    background: linear-gradient(145deg, rgba(16,35,55,.76), rgba(9,24,43,.60)) !important;
    border-color: rgba(84,202,222,.22) !important;
}
body.lab2-app[data-accent="night"] .lead-intake-message small {
    color: #6fe6ee !important;
}
body.lab2-app[data-accent="night"] .lead-intake-message p {
    color: #d5e5ee !important;
}
body.lab2-app[data-accent="night"] .lead-intake-message-head button {
    color: #55e4ea !important;
}

/* Botões com funções distintas e mais fáceis de reconhecer no modo noite. */
body.lab2-app[data-accent="night"] :is(.primary-action,.action-call,.op-card-actions .primary-action,.op-modal-actions .primary-action) {
    color: #041018 !important;
    background: linear-gradient(135deg, #35dce7, #7587ff) !important;
    border-color: transparent !important;
    box-shadow: 0 9px 24px rgba(45,226,230,.20) !important;
}
body.lab2-app[data-accent="night"] :is(.action-whatsapp,.op-card-actions .action-whatsapp,.op-modal-actions .action-whatsapp) {
    color: #baf9dc !important;
    background: rgba(20,153,101,.20) !important;
    border-color: rgba(61,220,155,.28) !important;
}
body.lab2-app[data-accent="night"] :is(.action-whatsapp,.op-card-actions .action-whatsapp,.op-modal-actions .action-whatsapp):hover {
    color: #04120c !important;
    background: linear-gradient(135deg,#45dda0,#24b981) !important;
}
body.lab2-app[data-accent="night"] .lead-treated-toggle {
    color: #8df0c3 !important;
    background: rgba(20,153,101,.16) !important;
    border-color: rgba(62,218,157,.25) !important;
}

/* Sem o botão Abrir, as ações ficam equilibradas no centro. */
body.lab2-app .lead-primary-actions { min-width: 0; }
body.lab2-app .lead-primary-actions > * { min-width: 108px; }

@media (max-width: 820px) {
    body.lab2-app .lab2-course-viewer-dialog {
        border-radius: 0 !important;
    }
    body.lab2-app .lab2-course-viewer-header,
    body.lab2-app .lab2-course-viewer-body,
    body.lab2-app .lab2-course-viewer-body iframe { border-radius: 0; }
}

@media (max-width: 620px) {
    body.lab2-app .lead-primary-actions { grid-template-columns: minmax(76px, .62fr) minmax(0, 1.38fr) !important; }
    body.lab2-app .lead-primary-actions > :last-child { grid-column: 1 / -1 !important; }
}

/* ============================================================
   Portal v0.84 — modo escuro unificado em todo o Portal
   A página de Leads passa a ser a referência visual global.
   ============================================================ */
body.lab2-app[data-accent="night"] {
    --night-panel: rgba(8, 18, 34, .66);
    --night-panel-strong: rgba(12, 25, 45, .84);
    --night-card: rgba(17, 31, 51, .74);
    --night-card-soft: rgba(255, 255, 255, .065);
    --night-field: rgba(5, 14, 29, .78);
    --night-border: rgba(136, 201, 232, .22);
    --night-border-strong: rgba(98, 222, 231, .38);
    --night-text: #f2f8fc;
    --night-text-soft: #c1d0dc;
    --night-muted: #8ea4b6;
    --night-cyan: #3adce7;
    --night-cyan-2: #67a5ff;
    --night-violet: #a78bfa;
    --night-green: #42d79b;
    --night-orange: #ffbd5b;
    --night-pink: #ff7eb6;
}

/* Tipografia comum: nenhuma página deve voltar a usar cores pensadas para
   fundo branco quando o modo noite está ativo. */
body.lab2-app[data-accent="night"] :is(
    h1,h2,h3,h4,h5,h6,
    .work-intro h2,.panel-head h3,.page-context h1,.screen-head h2,
    .person-card strong,.lead-card strong,.op-card strong,.course-native-card strong,
    .call-row strong,.sales-course-copy strong,.sales-type-card > strong,
    .account-hero h2,.account-panel h2,.admin-section-head h3,
    .webtop-compact-copy h2,.webtop-script-card strong,.admin-version-card > strong
) { color: var(--night-text) !important; }

body.lab2-app[data-accent="night"] :is(
    p,small,dd,.empty,
    .work-intro-copy > p:not(.label),.panel-head p,.person-card p,.call-row span,
    .course-native-modalities,.course-native-footer > span,
    .webtop-compact-copy > p:not(.label),.webtop-status-body > p,
    .account-panel p,.admin-section-head p,.sales-period-copy > p:last-child
) { color: var(--night-text-soft) !important; }

body.lab2-app[data-accent="night"] :is(
    .label,.course-app-section-label,.webtop-script-card small,
    .sales-global-summary span,.admin-activity-kpis small,.account-file-picker small,
    .admin-course-name small,.webtop-capture-row small,.admin-version-card > span
) { color: #74e9ef !important; }

/* Ícones: elimina os quadrados brancos que apareciam em Leads,
   Oportunidades, Agenda, Dashboard e Importar. */
body.lab2-app[data-accent="night"] .ui-action-icon {
    color: currentColor;
    background: rgba(255,255,255,.085) !important;
    border: 1px solid rgba(255,255,255,.055);
}
body.lab2-app[data-accent="night"] .icon-phone { color: #62ddf0 !important; }
body.lab2-app[data-accent="night"] .icon-mail { color: #b39aff !important; }
body.lab2-app[data-accent="night"] .icon-whatsapp { color: #63e7b0 !important; }
body.lab2-app[data-accent="night"] .icon-check { color: #63e7b0 !important; }
body.lab2-app[data-accent="night"] .icon-open { color: #b39aff !important; }

/* Superfícies pequenas que ainda tinham #fff/#f7... fixos. Esta lista é
   transversal aos módulos para evitar CSS visual diferente por página. */
body.lab2-app[data-accent="night"] :is(
    .card-info-block,.op-course-link,.op-followup-task,
    .lead-intake-info,.lead-intake-fact,.lead-intake-message,
    .course-native-code,.courses-clear-filter,
    .webtop-step-list li,.webtop-status-line,.webtop-capture-row,
    .webtop-diagnostic-check,.webtop-diagnostic-totals span,
    .sales-view-tabs,.sales-global-summary article,.sales-type-card,.sales-course-row,
    .admin-version-card,.admin-last-report,.admin-backup-row,.admin-protection-list span,
    .admin-course-overview article,.admin-course-rebuild-info,.admin-course-search,
    .admin-course-money,.admin-course-active,.admin-ms-info,
    .admin-user-stats span,.admin-activity-kpis > article,.admin-activity-note,
    .account-file-picker,.account-signature-preview,.account-photo-preview,
    .account-media-block,.admin-user-actions button,
    .admin-user-card-head em,.admin-config-status,
    .sales-period-state,.sale-row,.sales-detail-table-head
) {
    color: var(--night-text-soft) !important;
    background: linear-gradient(145deg, rgba(20,36,58,.78), rgba(8,20,38,.64)) !important;
    border-color: var(--night-border) !important;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.055) !important;
}

body.lab2-app[data-accent="night"] :is(
    .card-info-block strong,.op-course-link strong,.op-followup-task p,
    .webtop-step-list strong,.webtop-status-line strong,.webtop-capture-row strong,
    .sales-global-summary strong,.sales-type-card > span,.sales-course-copy strong,
    .admin-course-overview strong,.admin-course-name strong,.admin-ms-info code,
    .admin-user-stats strong,.admin-activity-kpis strong,.account-file-picker span,
    .admin-backup-row strong,.admin-protection-list span,.admin-version-card strong
) { color: var(--night-text) !important; }

/* Campos e seletores: uma única aparência em todas as páginas. */
body.lab2-app[data-accent="night"] :is(
    input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
    select,textarea,
    .lead-course-filter select,
    .sales-period-controls select,
    .admin-activity-date-controls input
) {
    color: var(--night-text) !important;
    background: var(--night-field) !important;
    border-color: var(--night-border) !important;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.05) !important;
}
body.lab2-app[data-accent="night"] :is(input,textarea)::placeholder { color: #71889b !important; }

/* Sistema global de botões no modo noite. */
body.lab2-app[data-accent="night"] :is(
    .filter-chips button,
    .work-intro-search button,
    .panel-link,
    .card-actions a,.card-actions button,
    .op-card-actions a,
    .courses-clear-filter,
    .course-native-footer .panel-link,
    .focus-back,.lane-more,.lane-heading-button,
    .webtop-secondary-link,.webtop-panel-actions a,.webtop-panel-actions button,
    .account-inline-actions > button:not(.account-link-danger),
    .admin-tabs button,.admin-user-actions button,.admin-backup-row button,
    .admin-course-row > button,.sales-view-tabs button,
    .admin-activity-date-controls button
) {
    color: var(--night-text-soft) !important;
    background: rgba(17,31,51,.82) !important;
    border-color: var(--night-border) !important;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.055) !important;
}
body.lab2-app[data-accent="night"] :is(
    .filter-chips button,.panel-link,.card-actions a,.card-actions button,
    .op-card-actions a,.courses-clear-filter,.focus-back,.lane-more,
    .webtop-secondary-link,.webtop-panel-actions a,.webtop-panel-actions button,
    .account-inline-actions > button:not(.account-link-danger),.admin-tabs button,
    .admin-user-actions button,.admin-backup-row button,.sales-view-tabs button
):hover {
    color: #fff !important;
    background: rgba(35,57,82,.92) !important;
    border-color: var(--night-border-strong) !important;
}

/* Botões principais: pesquisa, ações e navegação ativa. */
body.lab2-app[data-accent="night"] :is(
    .work-intro-search button,
    .primary-btn,.primary-action,.action-call,.account-primary,
    .admin-course-row > button,
    .filter-chips button.active,
    .sales-view-tabs button.is-active,
    .admin-tabs button.active
) {
    color: #04131b !important;
    background: linear-gradient(135deg, var(--night-cyan), var(--night-cyan-2)) !important;
    border-color: transparent !important;
    box-shadow: 0 9px 23px rgba(45,226,230,.17) !important;
}
body.lab2-app[data-accent="night"] :is(.action-whatsapp,a[href*="wa.me"]) {
    color: #c8fbe4 !important;
    background: rgba(29,151,103,.22) !important;
    border-color: rgba(71,220,160,.29) !important;
}
body.lab2-app[data-accent="night"] :is(.action-whatsapp,a[href*="wa.me"]):hover {
    color: #03130d !important;
    background: linear-gradient(135deg,#50e0a5,#29bb82) !important;
}
body.lab2-app[data-accent="night"] :is([data-action="agenda_snooze"],.focus-back) {
    color: #e7dcff !important;
    background: rgba(139,92,246,.19) !important;
    border-color: rgba(174,139,255,.30) !important;
}
body.lab2-app[data-accent="night"] :is([data-action="agenda_done"],.lead-treated-toggle) {
    color: #bff8dd !important;
    background: rgba(34,171,116,.18) !important;
    border-color: rgba(75,220,165,.27) !important;
}

/* Filtros das Leads e Oportunidades: deixam de ser cápsulas brancas. */
body.lab2-app[data-accent="night"] .filter-chips {
    gap: 7px;
    padding: 4px;
    background: rgba(5,14,29,.62) !important;
    border: 1px solid var(--night-border) !important;
}
body.lab2-app[data-accent="night"] .filter-chips button {
    min-height: 31px;
    color: #bdccda !important;
    background: rgba(22,38,60,.86) !important;
}
body.lab2-app[data-accent="night"] .filter-chips button span {
    color: #d8e7ef !important;
    background: rgba(255,255,255,.09) !important;
}
body.lab2-app[data-accent="night"] .filter-chips button.active {
    color: #03151b !important;
    background: linear-gradient(135deg,#41dce7,#9f8cff) !important;
}
body.lab2-app[data-accent="night"] .filter-chips button.active span {
    color: #07151d !important;
    background: rgba(255,255,255,.52) !important;
}

/* Leads: as ações passam a usar uma grelha simples e sem sobreposição. */
body.lab2-app[data-accent="night"] .lead-card-footer {
    grid-template-columns: auto minmax(0,1fr) !important;
    gap: 14px !important;
}
body.lab2-app[data-accent="night"] .lead-footer-balance { display: none !important; }
body.lab2-app[data-accent="night"] .lead-primary-actions {
    justify-self: start !important;
    justify-content: flex-start !important;
    gap: 9px !important;
    margin: 0 !important;
}
body.lab2-app[data-accent="night"] .lead-primary-actions > * {
    min-width: 112px !important;
    box-shadow: none !important;
}
body.lab2-app[data-accent="night"] .lead-treated-toggle {
    justify-self: start !important;
    min-width: 96px;
    box-shadow: none !important;
}
body.lab2-app[data-accent="night"] .lead-card.is-treated,
body.lab2-app[data-accent="night"] .op-card.is-treated {
    background: linear-gradient(145deg, rgba(17,55,47,.78), rgba(8,29,31,.66)) !important;
    border-color: rgba(72,218,160,.30) !important;
}

/* Mensagem WebTop: maior contraste e igual em Leads/Oportunidades. */
body.lab2-app[data-accent="night"] :is(.lead-intake-message,.op-followup-task) {
    background: linear-gradient(145deg, rgba(18,47,68,.84), rgba(9,31,50,.72)) !important;
    border-color: rgba(76,202,223,.27) !important;
}
body.lab2-app[data-accent="night"] :is(.lead-intake-message small,.op-followup-task > span) {
    color: #6ee7ef !important;
}
body.lab2-app[data-accent="night"] :is(.lead-intake-message p,.op-followup-task p) {
    color: #d8e6ef !important;
}
body.lab2-app[data-accent="night"] .lead-intake-message-head button { color: #64e4eb !important; }

/* Agenda e Dashboard: ações com significado sem caixas brancas. */
body.lab2-app[data-accent="night"] .card-actions {
    gap: 8px;
}
body.lab2-app[data-accent="night"] .card-actions > * {
    min-height: 34px;
    color: var(--night-text-soft) !important;
    background: rgba(17,31,51,.82) !important;
    border-color: var(--night-border) !important;
}
body.lab2-app[data-accent="night"] .card-actions a[href^="tel:"] {
    color: #05151d !important;
    background: linear-gradient(135deg,#3bdce7,#72a2ff) !important;
    border-color: transparent !important;
}
body.lab2-app[data-accent="night"] .card-actions a[href*="wa.me"] {
    color: #c8fbe4 !important;
    background: rgba(29,151,103,.22) !important;
}

/* Catálogo de cursos. */
body.lab2-app[data-accent="night"] .course-native-code {
    color: #c7ddff !important;
    background: rgba(80,116,195,.19) !important;
    border-color: rgba(129,162,234,.26) !important;
}
body.lab2-app[data-accent="night"] .course-native-footer .panel-link,
body.lab2-app[data-accent="night"] .courses-clear-filter {
    color: #06131b !important;
    background: linear-gradient(135deg,#40dce7,#9f8cff) !important;
    border-color: transparent !important;
}

/* Importar: cartões e passos deixam de ser brancos. */
body.lab2-app[data-accent="night"] :is(.webtop-step-list li,.webtop-capture-row,.webtop-status-line) {
    background: rgba(17,31,51,.76) !important;
}
body.lab2-app[data-accent="night"] .webtop-step-list li > span {
    color: #04141b !important;
    background: linear-gradient(135deg,#45dfe8,#a68cff) !important;
}
body.lab2-app[data-accent="night"] .webtop-script-card em,
body.lab2-app[data-accent="night"] .webtop-capture-row em {
    color: #d8e8f1 !important;
    background: rgba(255,255,255,.085) !important;
}

/* Vendas, Administração e Perfil: elimina as últimas caixas brancas. */
body.lab2-app[data-accent="night"] :is(
    .sales-global-summary article,.sales-type-card,.sales-course-row,
    .admin-activity-kpis > article,.admin-course-overview article,
    .admin-user-card,.admin-user-stats span,.admin-backup-row,
    .admin-protection-list span,.account-media-block,.account-file-picker
) {
    background: linear-gradient(145deg, rgba(20,36,58,.78), rgba(8,20,38,.64)) !important;
    border-color: var(--night-border) !important;
}
body.lab2-app[data-accent="night"] :is(
    .sales-course-numbers strong,.sales-global-summary strong,
    .admin-activity-person strong,.admin-activity-count strong,
    .admin-user-card-head strong,.account-ms-status strong
) { color: var(--night-text) !important; }
body.lab2-app[data-accent="night"] :is(
    .sales-course-copy span,.sales-course-numbers span,.sales-course-numbers small,
    .admin-activity-person small,.admin-activity-count small,.admin-activity-row time,
    .admin-user-card-head span,.admin-user-email,.account-ms-status p
) { color: var(--night-muted) !important; }
body.lab2-app[data-accent="night"] .sales-course-bar { background: rgba(255,255,255,.12) !important; }
body.lab2-app[data-accent="night"] .account-signature-preview {
    background:
        linear-gradient(45deg, rgba(255,255,255,.035) 25%, transparent 25%, transparent 75%, rgba(255,255,255,.035) 75%),
        linear-gradient(45deg, rgba(255,255,255,.035) 25%, transparent 25%, transparent 75%, rgba(255,255,255,.035) 75%),
        rgba(9,20,37,.80) !important;
    background-position: 0 0, 10px 10px !important;
    background-size: 20px 20px !important;
}
body.lab2-app[data-accent="night"] .account-signature-preview img {
    border-radius: 10px;
    box-shadow: 0 7px 22px rgba(0,0,0,.22);
}

/* Modal dos cursos: deve estar acima de absolutamente todo o Portal. */
body.lab2-app .lab2-course-viewer {
    z-index: 2147482000 !important;
}
body.lab2-app .lab2-course-viewer-backdrop { z-index: 0 !important; }
body.lab2-app .lab2-course-viewer-dialog {
    z-index: 2 !important;
    border-radius: 24px !important;
    overflow: hidden !important;
}
body.lab2-app .lab2-course-viewer-body,
body.lab2-app .lab2-course-viewer-body iframe {
    min-height: 0 !important;
    overflow: hidden !important;
    overscroll-behavior: contain !important;
}
body.lab2-app[data-accent="night"] .lab2-course-viewer-backdrop {
    background: rgba(0,2,8,.30) !important;
}
body.lab2-app[data-accent="night"] .lab2-course-viewer-dialog {
    background: rgba(7,17,32,.97) !important;
}

@media (max-width: 620px) {
    body.lab2-app[data-accent="night"] .lead-card-footer {
        grid-template-columns: 1fr !important;
    }
    body.lab2-app[data-accent="night"] .lead-primary-actions {
        width: 100%;
        display: grid;
        grid-template-columns: repeat(2,minmax(0,1fr));
    }
    body.lab2-app[data-accent="night"] .lead-primary-actions > * { min-width: 0 !important; }
}

/* ============================================================
   Portal v0.85 — hierarquia e foco dos modais de curso
   ============================================================ */

/* A ficha mantém-se acima do Portal, mas o backdrop volta a desfocar
   apenas o conteúdo exterior. O diálogo permanece totalmente nítido. */
body.lab2-app .lab2-course-viewer {
    z-index: 2147482000 !important;
    isolation: isolate;
}
body.lab2-app .lab2-course-viewer-backdrop {
    z-index: 0 !important;
    background: rgba(7, 18, 32, .30) !important;
    backdrop-filter: blur(9px) saturate(90%) brightness(84%) !important;
    -webkit-backdrop-filter: blur(9px) saturate(90%) brightness(84%) !important;
}
body.lab2-app[data-accent="night"] .lab2-course-viewer-backdrop {
    background: rgba(0, 3, 10, .34) !important;
    backdrop-filter: blur(9px) saturate(88%) brightness(72%) !important;
    -webkit-backdrop-filter: blur(9px) saturate(88%) brightness(72%) !important;
}
body.lab2-app .lab2-course-viewer-dialog {
    z-index: 2 !important;
    filter: none !important;
}

/* Documentos para inscrição é um segundo nível modal. Tem de ficar acima
   da ficha do curso e desfocar suavemente a própria ficha que fica atrás. */
body.lab2-app .lab2-course-documents-modal {
    z-index: 2147483200 !important;
    isolation: isolate;
}
body.lab2-app .lab2-course-documents-backdrop {
    z-index: 0 !important;
    background: rgba(5, 14, 27, .34) !important;
    backdrop-filter: blur(7px) saturate(88%) brightness(74%) !important;
    -webkit-backdrop-filter: blur(7px) saturate(88%) brightness(74%) !important;
}
body.lab2-app .lab2-course-documents-dialog {
    z-index: 2 !important;
    isolation: isolate;
    filter: none !important;
    box-shadow: 0 34px 110px rgba(0, 0, 0, .42), inset 0 1px 0 rgba(255,255,255,.12) !important;
}
body.lab2-app[data-accent="night"] .lab2-course-documents-dialog {
    color: #eef8ff !important;
    background: rgba(9, 22, 41, .98) !important;
    border-color: rgba(126, 211, 238, .28) !important;
}
body.lab2-app[data-accent="night"] .lab2-course-documents-dialog > header {
    background: rgba(12, 28, 50, .98) !important;
    border-color: rgba(126, 211, 238, .18) !important;
}
body.lab2-app[data-accent="night"] .lab2-course-documents-dialog h3,
body.lab2-app[data-accent="night"] .lab2-course-documents-body,
body.lab2-app[data-accent="night"] .lab2-course-documents-body li {
    color: #eef8ff !important;
}

html.has-course-documents,
body.has-course-documents {
    overflow: hidden !important;
    overscroll-behavior: none !important;
}

/* Portal v0.87 — integração do seletor único de tema e menu do utilizador */
body.lab2-app .theme-option.swatch {
    width: 100% !important;
    height: auto !important;
    min-height: 49px;
    padding: 7px 9px !important;
    color: var(--text) !important;
    background: transparent !important;
    border: 1px solid transparent !important;
    border-radius: 12px !important;
    outline: 0 !important;
    box-shadow: none !important;
    filter: none !important;
    transform: none !important;
}
body.lab2-app .theme-option.swatch:hover,
body.lab2-app .theme-option.swatch.active {
    background: color-mix(in srgb, var(--accent) 9%, transparent) !important;
    border-color: color-mix(in srgb, var(--accent) 24%, transparent) !important;
    box-shadow: inset 0 1px 0 var(--glass-highlight) !important;
}
body.lab2-app .theme-option.swatch .theme-option-dot {
    width: 25px !important;
    height: 25px !important;
}
body.lab2-app[data-accent="night"] .theme-launch,
body.lab2-app[data-accent="night"] .user-menu-trigger {
    color: #eaf7ff !important;
    background: rgba(12,28,49,.78) !important;
    border-color: rgba(105,202,232,.22) !important;
}
body.lab2-app[data-accent="night"] .theme-option.swatch,
body.lab2-app[data-accent="night"] .user-menu-item {
    color: #eef8ff !important;
}

/* ============================================================
   Portal v0.88 — tema da ficha nativa
   ============================================================ */
body.lab2-app[data-accent="night"] .lab2-course-native-scroll {
    background:
        radial-gradient(circle at 8% 8%, rgba(112,89,232,.18), transparent 31%),
        radial-gradient(circle at 92% 30%, rgba(41,207,166,.13), transparent 34%),
        #071120 !important;
}
body.lab2-app[data-accent="night"] .course-email-modal {
    color: #eef8ff;
}
body.lab2-app[data-accent="night"] .course-email-backdrop {
    background: rgba(0,3,10,.48) !important;
}

/* Portal v1.0 — versão oficial e estável. */

/* Portal v1.0.1 — backups no modo noite */
body.lab2-app.theme-night .admin-safety-checks > span,
body.lab2-app.theme-night .admin-backup-summary > div,
body.lab2-app.theme-night .admin-system-backup-row {
    background: rgba(18, 34, 57, .72);
    border-color: rgba(113, 202, 226, .2);
}
body.lab2-app.theme-night .admin-safety-checks .is-ok { color: #72e2bf; }
body.lab2-app.theme-night .admin-safety-checks .is-error { color: #ff9b9b; background: rgba(95, 30, 43, .66); }
body.lab2-app.theme-night .admin-backup-actions button,
body.lab2-app.theme-night .admin-system-backup-actions button,
body.lab2-app.theme-night .admin-system-backup-actions a {
    color: #e9f8ff;
    border-color: rgba(112, 205, 229, .22);
    background: rgba(18, 37, 61, .86);
}
body.lab2-app.theme-night .admin-backup-actions button.is-primary {
    color: #06151f;
    background: linear-gradient(135deg, #5fe5f1, #a98cff);
}
body.lab2-app.theme-night .admin-backup-summary p,
body.lab2-app.theme-night .admin-system-backup-row strong { color: #f1f8ff; }

/* Portal v1.0.2 — progresso de snapshot no modo noite */
html[data-theme="night"] .admin-snapshot-progress {
    background: rgba(13, 21, 40, .72);
    border-color: rgba(109, 211, 255, .22);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.05);
}
html[data-theme="night"] .admin-snapshot-progress-track { background:rgba(109,211,255,.12); }
html[data-theme="night"] .admin-snapshot-progress.is-failed { background:rgba(69,10,10,.58); border-color:rgba(248,113,113,.3); }

/* Portal v1.0.3 — retenção no modo noite */
html[data-theme="night"] .admin-retention-next,
body.lab2-app.theme-night .admin-retention-next {
    color: #bed1df;
    border-color: rgba(113, 202, 226, .2);
    background: rgba(18, 34, 57, .58);
}

/* Portal v1.0.4 — snapshot de baixo consumo e mensagens de erro amigáveis */

/* ============================================================
   Portal v1.0.6 — barras arredondadas e camadas dos modais
   ============================================================ */

/* A barra de filtros é uma única superfície arredondada, comum a
   Leads e Oportunidades, em vez de uma faixa retangular solta. */
body.lab2-app .work-filter-row {
    padding: 7px 9px;
    background: var(--glass-soft) !important;
    border: 1px solid var(--glass-line) !important;
    border-radius: 18px;
    box-shadow:
        0 10px 30px color-mix(in srgb, var(--accent) 8%, transparent),
        inset 0 1px 0 var(--glass-highlight) !important;
    backdrop-filter: blur(14px) saturate(118%);
    -webkit-backdrop-filter: blur(14px) saturate(118%);
}
body.lab2-app .work-filter-row .filter-chips,
body.lab2-app .work-filter-row .result-line,
body.lab2-app .work-filter-row .work-filter-end {
    position: relative;
    z-index: 1;
}

/* Corrige a ordem das camadas da Oportunidade. A regra antiga dos temas
   atribuía z-index ao backdrop, fazendo-o ficar por cima do diálogo. */
body.lab2-app .opportunity-modal-backdrop {
    z-index: 0 !important;
}
body.lab2-app .opportunity-modal-dialog {
    z-index: 2 !important;
    pointer-events: auto;
    isolation: isolate;
    opacity: 1 !important;
    filter: none !important;
}
body.lab2-app .opportunity-modal-header,
body.lab2-app .opportunity-modal-body {
    position: relative;
    z-index: 1;
}

/* A folha “Mais” usa a mesma hierarquia explícita: backdrop atrás e
   conteúdo à frente, com uma superfície menos transparente e mais legível. */
@media (max-width: 820px) {
    body.lab2-app .mobile-more-backdrop {
        z-index: 0;
        background: rgba(18, 39, 57, .24);
        backdrop-filter: blur(3px) saturate(94%);
        -webkit-backdrop-filter: blur(3px) saturate(94%);
    }
    body.lab2-app .mobile-more-dialog {
        z-index: 2;
        isolation: isolate;
        opacity: 1 !important;
        filter: none !important;
        color: var(--text);
        background: rgba(248, 252, 255, .985);
        border-color: color-mix(in srgb, var(--accent) 19%, var(--line));
        box-shadow: 0 -24px 72px rgba(18, 48, 70, .22);
        backdrop-filter: blur(18px) saturate(112%);
        -webkit-backdrop-filter: blur(18px) saturate(112%);
    }
    body.lab2-app .mobile-more-item,
    body.lab2-app .mobile-more-close,
    body.lab2-app .mobile-more-admin-actions button,
    body.lab2-app .mobile-more-admin-actions a {
        color: var(--text);
        background: rgba(255, 255, 255, .82);
        border-color: color-mix(in srgb, var(--accent) 13%, var(--line));
    }
    body.lab2-app .mobile-more-item small,
    body.lab2-app .mobile-more-section-title,
    body.lab2-app .mobile-more-admin-actions button,
    body.lab2-app .mobile-more-admin-actions a {
        color: var(--text-soft);
    }
    body.lab2-app .work-filter-row {
        padding: 6px;
        border-radius: 15px;
    }

    body.lab2-app[data-accent="night"] .mobile-more-backdrop {
        background: rgba(0, 5, 13, .38);
    }
    body.lab2-app[data-accent="night"] .mobile-more-dialog {
        color: #eef8ff;
        background: rgba(7, 18, 34, .985);
        border-color: rgba(101, 206, 231, .24);
        box-shadow: 0 -24px 80px rgba(0, 0, 0, .46);
    }
    body.lab2-app[data-accent="night"] .mobile-more-item,
    body.lab2-app[data-accent="night"] .mobile-more-close,
    body.lab2-app[data-accent="night"] .mobile-more-admin-actions button,
    body.lab2-app[data-accent="night"] .mobile-more-admin-actions a {
        color: #eef8ff;
        background: rgba(18, 38, 63, .92);
        border-color: rgba(101, 206, 231, .18);
    }
    body.lab2-app[data-accent="night"] .mobile-more-item small,
    body.lab2-app[data-accent="night"] .mobile-more-section-title,
    body.lab2-app[data-accent="night"] .mobile-more-admin-actions button,
    body.lab2-app[data-accent="night"] .mobile-more-admin-actions a {
        color: #b7cad9;
    }
}
