@font-face {
    font-family: "EscolaUI";
    src: url("fonts/Rubik-Light.woff2") format("woff2");
    font-weight: 300;
    font-style: normal;
    font-display: swap;
}
@font-face {
    font-family: "EscolaUI";
    src: url("fonts/Rubik-SemiBold.woff2") format("woff2");
    font-weight: 700;
    font-style: normal;
    font-display: swap;
}

:root {
    --bg: #050811;
    --bg-2: #0a1020;
    --surface: rgba(11, 18, 33, .78);
    --surface-2: rgba(15, 25, 45, .88);
    --surface-soft: rgba(255, 255, 255, .045);
    --line: rgba(149, 185, 208, .18);
    --line-strong: rgba(149, 185, 208, .36);
    --text: #e9f3f7;
    --text-soft: #aebdca;
    --muted: #738397;
    --accent: #38e8ff;
    --accent-2: #7cffc7;
    --accent-3: #a78bfa;
    --danger: #ff637d;
    --warn: #ffc857;
    --ok: #65f0a6;
    --shadow: 0 18px 60px rgba(0, 0, 0, .42);
    --radius: 8px;
    --font: "EscolaUI", Rubik, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

body[data-accent="violet"] {
    --accent: #a78bfa;
    --accent-2: #48d6ff;
    --accent-3: #ff78c7;
}

body[data-accent="ember"] {
    --accent: #ffb347;
    --accent-2: #66f0c8;
    --accent-3: #ff6f91;
}

* { box-sizing: border-box; }
html { min-height: 100%; }
body {
    margin: 0;
    min-height: 100vh;
    color: var(--text);
    background:
        linear-gradient(135deg, rgba(56, 232, 255, .08), transparent 32%),
        linear-gradient(215deg, rgba(167, 139, 250, .08), transparent 36%),
        var(--bg);
    font-family: var(--font);
    font-size: 14px;
    letter-spacing: 0;
}

a { color: inherit; text-decoration: none; }
button, input { font: inherit; letter-spacing: 0; }
button { cursor: pointer; }

.label {
    margin: 0 0 4px;
    color: var(--accent);
    font-size: 10px;
    font-weight: 850;
    text-transform: uppercase;
    letter-spacing: 1.2px;
}

.lab-login {
    display: grid;
    place-items: center;
    padding: 22px;
    overflow: hidden;
}

.lab-login::before {
    content: "";
    position: fixed;
    inset: 0;
    background:
        linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px);
    background-size: 38px 38px;
    mask-image: linear-gradient(to bottom, transparent, #000 18%, #000 82%, transparent);
    animation: gridShift 18s linear infinite;
}

.login-stage {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(330px, .75fr);
    width: min(980px, 100%);
    min-height: 560px;
    overflow: hidden;
    background: rgba(7, 12, 24, .82);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    backdrop-filter: blur(18px);
}

.login-copy {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: 38px;
    background:
        linear-gradient(140deg, rgba(56,232,255,.15), transparent 44%),
        linear-gradient(320deg, rgba(124,255,199,.08), transparent 46%);
}

.login-copy img { width: 170px; filter: drop-shadow(0 0 18px rgba(56,232,255,.2)); }
.login-copy h1 {
    max-width: 610px;
    margin: 14px 0;
    font-size: 30px;
    line-height: 1.14;
    font-weight: 850;
}

.login-metrics { display: flex; gap: 8px; flex-wrap: wrap; }
.login-metrics span {
    padding: 8px 10px;
    border: 1px solid var(--line);
    border-radius: 999px;
    color: var(--text-soft);
    background: rgba(255,255,255,.045);
    font-weight: 800;
}

.login-card {
    align-self: center;
    margin: 24px;
    padding: 24px;
    background: rgba(255,255,255,.06);
    border: 1px solid var(--line);
    border-radius: var(--radius);
}

.login-card h2 { margin: 0 0 18px; font-size: 22px; }
.login-card label {
    display: grid;
    gap: 7px;
    margin-bottom: 12px;
    color: var(--text-soft);
    font-size: 12px;
    font-weight: 750;
}

.login-card input, .command input, .toolbar input {
    width: 100%;
    min-height: 40px;
    padding: 0 12px;
    color: var(--text);
    background: rgba(255,255,255,.06);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    outline: none;
}

.login-card input:focus, .command input:focus, .toolbar input:focus {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent);
}

.login-card button {
    width: 100%;
    min-height: 40px;
    margin-top: 4px;
    color: #061015;
    background: var(--accent);
    border: 1px solid transparent;
    border-radius: var(--radius);
    font-weight: 900;
}

.login-card a {
    display: inline-block;
    margin-top: 16px;
    color: var(--accent);
    font-weight: 800;
}

.notice {
    padding: 11px 12px;
    margin-bottom: 12px;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    background: rgba(255,255,255,.06);
}

.notice.danger {
    border-color: rgba(255,99,125,.36);
    color: #ffd0d8;
    background: rgba(255,99,125,.09);
}

.lab-shell {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-rows: auto 1fr;
    min-height: 100vh;
}

.lab-side {
    position: sticky;
    top: 0;
    z-index: 40;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto auto;
    gap: 12px;
    align-items: center;
    min-height: 62px;
    padding: 10px 16px;
    border-bottom: 1px solid var(--line);
    background: rgba(5, 9, 17, .82);
    box-shadow: 0 10px 32px rgba(0,0,0,.22);
    backdrop-filter: blur(18px);
}

.brand {
    display: flex;
    align-items: center;
    gap: 9px;
    min-width: 0;
}

.brand img {
    width: 114px;
    max-width: 100%;
    filter: saturate(1.15) drop-shadow(0 0 12px color-mix(in srgb, var(--accent) 30%, transparent));
}

.brand span {
    display: inline-grid;
    place-items: center;
    min-height: 24px;
    padding: 0 8px;
    color: var(--accent);
    background: color-mix(in srgb, var(--accent) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--accent) 32%, transparent);
    border-radius: 999px;
    font-size: 10px;
    font-weight: 950;
    text-transform: uppercase;
}

.lab-side nav {
    display: flex;
    gap: 5px;
    min-width: 0;
    overflow-x: auto;
    scrollbar-width: none;
}

.lab-side nav::-webkit-scrollbar { display: none; }

.lab-side nav button {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    flex: 0 0 auto;
    min-height: 38px;
    padding: 0 10px;
    color: var(--text-soft);
    background: transparent;
    border: 1px solid transparent;
    border-radius: var(--radius);
    font-size: 13px;
    font-weight: 780;
    overflow: hidden;
}

.lab-side nav button::before {
    content: "";
    position: absolute;
    inset: auto 12px 0;
    height: 2px;
    background: var(--accent);
    opacity: 0;
    transform: translateY(2px);
    transition: opacity .18s ease, transform .18s ease;
}

.lab-side nav button span {
    display: grid;
    place-items: center;
    width: 24px;
    height: 24px;
    border-radius: 7px;
    color: var(--text);
    background: rgba(255,255,255,.06);
    border: 1px solid var(--line);
    font-size: 12px;
    font-weight: 900;
}

.lab-side nav button.active,
.lab-side nav button:hover {
    color: var(--text);
    background: color-mix(in srgb, var(--accent) 10%, rgba(255,255,255,.035));
    border-color: color-mix(in srgb, var(--accent) 28%, transparent);
}

.lab-side nav button.active::before {
    opacity: 1;
    transform: translateY(0);
}

.lab-side nav button.active span {
    color: #061015;
    background: var(--accent);
    border-color: transparent;
}

.swatch {
    width: 22px;
    height: 22px;
    padding: 0;
    border-radius: 999px;
    border: 1px solid rgba(255,255,255,.18);
    background: var(--accent);
}

.swatch.active {
    outline: 2px solid color-mix(in srgb, var(--accent) 64%, transparent);
    outline-offset: 2px;
}

.swatch-cyan { background: linear-gradient(135deg, #38e8ff, #7cffc7); }
.swatch-violet { background: linear-gradient(135deg, #a78bfa, #ff78c7); }
.swatch-ember { background: linear-gradient(135deg, #ffb347, #ff6f91); }

.lab-work { min-width: 0; }

.lab-top {
    position: sticky;
    top: 62px;
    z-index: 30;
    display: grid;
    grid-template-columns: auto minmax(170px, .7fr) minmax(250px, 1fr) auto auto;
    gap: 12px;
    align-items: center;
    padding: 12px 22px;
    border-bottom: 1px solid var(--line);
    background: rgba(7, 12, 24, .72);
    backdrop-filter: blur(18px);
}

.lab-top h1 {
    margin: 0;
    font-size: 19px;
    line-height: 1.15;
    font-weight: 850;
}

.menu-toggle { display: none; }

.command {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px;
}

.command button,
.toolbar button,
.toolbar a,
.hero-actions button,
.hero-actions a,
.panel-link,
.card-actions a,
.card-actions button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 36px;
    padding: 0 11px;
    color: var(--text);
    background: rgba(255,255,255,.055);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    font-size: 12px;
    font-weight: 850;
    transition: transform .16s ease, border-color .16s ease, background .16s ease;
}

.command button,
.primary-btn,
.hero-actions .primary-btn,
.toolbar .active {
    color: #061015;
    background: var(--accent);
    border-color: transparent;
}

.command button:hover,
.toolbar button:hover,
.toolbar a:hover,
.hero-actions button:hover,
.panel-link:hover,
.card-actions a:hover,
.card-actions button:hover {
    transform: translateY(-1px);
    border-color: color-mix(in srgb, var(--accent) 42%, transparent);
}

.profile {
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 38px;
    padding: 0 10px 0 4px;
    border: 1px solid var(--line);
    border-radius: 999px;
    background: rgba(255,255,255,.05);
}

.profile span {
    display: grid;
    place-items: center;
    width: 30px;
    height: 30px;
    color: #061015;
    background: var(--accent-2);
    border-radius: 999px;
    font-size: 12px;
    font-weight: 950;
}

.profile strong {
    max-width: 110px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 13px;
}

.lab-main {
    display: grid;
    gap: 14px;
    width: min(1480px, 100%);
    margin: 0 auto;
    padding: 18px 22px 36px;
}

.screen-head {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px;
    align-items: center;
}

.screen-head h2 {
    margin: 0;
    font-size: 18px;
    font-weight: 850;
}

.screen-head p {
    margin: 4px 0 0;
    color: var(--muted);
}

.hero-board {
    display: grid;
    grid-template-columns: minmax(0, 1.5fr) minmax(250px, .55fr);
    gap: 12px;
}

.hero-panel,
.focus-panel,
.panel,
.lane {
    position: relative;
    background: linear-gradient(180deg, rgba(255,255,255,.07), rgba(255,255,255,.035));
    border: 1px solid var(--line);
    border-radius: var(--radius);
    box-shadow: 0 1px 0 rgba(255,255,255,.04), var(--shadow);
    overflow: hidden;
}

.hero-panel::after,
.focus-panel::after,
.panel::after,
.lane::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    pointer-events: none;
    background: linear-gradient(120deg, color-mix(in srgb, var(--accent) 16%, transparent), transparent 34%, transparent 68%, color-mix(in srgb, var(--accent-3) 10%, transparent));
    opacity: .42;
}

.hero-panel {
    min-height: 154px;
    display: grid;
    align-content: center;
    padding: 22px;
}

.hero-panel h2 {
    max-width: 820px;
    margin: 0;
    font-size: 20px;
    line-height: 1.28;
    font-weight: 820;
}

.hero-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: 16px;
}

.focus-panel {
    display: grid;
    align-content: center;
    padding: 16px;
}

.focus-panel strong {
    display: block;
    margin: 5px 0;
    color: var(--text);
    font-size: 22px;
    line-height: 1.12;
    font-weight: 900;
}

.focus-panel p {
    margin: 0;
    color: var(--text-soft);
}

.metrics-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 8px;
    padding: 8px;
    background: rgba(255,255,255,.035);
    border: 1px solid var(--line);
    border-radius: var(--radius);
}

.metric-card {
    min-height: 76px;
    padding: 12px;
    background: rgba(0, 0, 0, .18);
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 6px;
}

.metric-card span {
    display: block;
    color: var(--muted);
    font-size: 10px;
    font-weight: 850;
    text-transform: uppercase;
}

.metric-card strong {
    display: inline-block;
    margin-top: 5px;
    color: var(--text);
    font-size: 22px;
    line-height: 1;
    font-weight: 920;
    font-variant-numeric: tabular-nums;
}

.metric-card em {
    display: block;
    margin-top: 5px;
    color: var(--text-soft);
    font-size: 12px;
    font-style: normal;
}

.metric-card.good strong { color: var(--ok); }
.metric-card.warn strong { color: var(--warn); }
.metric-card.danger strong { color: var(--danger); }

.split-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(340px, .9fr);
    gap: 12px;
}

.panel-head {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    min-height: 48px;
    padding: 0 14px;
    border-bottom: 1px solid var(--line);
}

.panel-head h3 {
    margin: 0;
    font-size: 14px;
    font-weight: 850;
}

.panel-body {
    position: relative;
    z-index: 1;
    padding: 10px;
}

.list,
.sales-list {
    display: grid;
    gap: 6px;
}

.empty {
    margin: 0;
    padding: 12px;
    color: var(--muted);
}

.call-row,
.op-card,
.sale-row,
.person-card,
.course-card {
    position: relative;
    display: grid;
    gap: 10px;
    align-items: center;
    min-width: 0;
    padding: 10px 12px;
    color: var(--text);
    background: rgba(255,255,255,.038);
    border: 1px solid rgba(255,255,255,.07);
    border-radius: 6px;
    transition: transform .16s ease, background .16s ease, border-color .16s ease;
}

.call-row:hover,
.op-card:hover,
.sale-row:hover,
.person-card:hover,
.course-card:hover {
    transform: translateY(-1px);
    background: color-mix(in srgb, var(--accent) 7%, rgba(255,255,255,.04));
    border-color: color-mix(in srgb, var(--accent) 30%, transparent);
}

.call-row {
    grid-template-columns: 82px minmax(0, 1fr) auto;
}

.op-card {
    grid-template-columns: minmax(160px, .9fr) minmax(0, 1fr) auto;
}

.sale-row {
    grid-template-columns: minmax(0, 1.2fr) minmax(0, .9fr) auto;
}

.panel-body .op-card,
.lane .op-card {
    grid-template-columns: 1fr;
}

.call-row time,
.op-card time {
    color: var(--accent);
    font-size: 12px;
    font-weight: 900;
    font-variant-numeric: tabular-nums;
}

.call-row strong,
.op-card strong,
.sale-row strong,
.person-card strong,
.course-card strong {
    display: block;
    overflow-wrap: anywhere;
    font-size: 13px;
    font-weight: 850;
}

.call-row span,
.op-card span,
.sale-row span,
.person-card p,
.course-card p,
.person-card small,
.course-card small {
    display: block;
    margin: 2px 0 0;
    color: var(--text-soft);
    font-size: 12px;
    overflow-wrap: anywhere;
}

.card-actions {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.panel-body .card-actions,
.lane .card-actions {
    justify-content: flex-start;
}

.card-grid, .course-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
}

.person-card {
    grid-template-columns: minmax(0, 1fr) auto;
}

.person-top {
    display: flex;
    align-items: center;
    gap: 9px;
    min-width: 0;
}

.avatar {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 30px;
    height: 30px;
    color: #061015;
    background: var(--accent-2);
    border-radius: 7px;
    font-size: 11px;
    font-weight: 950;
}

.person-card > p,
.person-card > small {
    grid-column: 1 / -1;
}

.course-card {
    grid-template-columns: auto minmax(0, 1fr) auto;
}

.course-card .category {
    width: max-content;
    max-width: 100%;
    padding: 4px 7px;
    color: var(--accent-3);
    background: color-mix(in srgb, var(--accent-3) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--accent-3) 24%, transparent);
    border-radius: 999px;
    font-size: 10px;
    font-weight: 900;
    text-transform: uppercase;
}

.toolbar {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    padding: 8px;
    background: rgba(255,255,255,.035);
    border: 1px solid var(--line);
    border-radius: var(--radius);
}

.toolbar input {
    width: min(420px, 100%);
}

.kanban {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
}

.lane {
    min-width: 0;
    padding: 10px;
}

.lane h3 {
    position: relative;
    z-index: 1;
    margin: 0 0 10px;
    color: var(--text-soft);
    font-size: 11px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.lane .op-card {
    position: relative;
    z-index: 1;
    margin-bottom: 7px;
}

.status {
    display: inline-flex;
    align-items: center;
    width: max-content;
    min-height: 24px;
    padding: 0 8px;
    border-radius: 999px;
    color: var(--text-soft);
    background: rgba(255,255,255,.07);
    font-size: 11px;
    font-weight: 850;
}

.status.confirmada { color: var(--ok); background: rgba(101,240,166,.12); }
.status.pendente { color: var(--warn); background: rgba(255,200,87,.12); }
.status.cancelada { color: var(--danger); background: rgba(255,99,125,.12); }

.loading {
    min-height: 220px;
    display: grid;
    place-items: center;
    color: var(--text-soft);
    background: rgba(255,255,255,.035);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    animation: pulseSoft 1.4s ease-in-out infinite;
}

.error-box {
    padding: 14px;
    color: #ffd0d8;
    background: rgba(255,99,125,.09);
    border: 1px solid rgba(255,99,125,.36);
    border-radius: var(--radius);
    font-weight: 800;
}

.toast {
    position: fixed;
    right: 18px;
    bottom: 18px;
    z-index: 9800;
    max-width: min(360px, calc(100vw - 36px));
    padding: 12px 14px;
    color: #061015;
    background: var(--accent);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    font-weight: 850;
}

@keyframes gridShift {
    from { transform: translate3d(0, 0, 0); }
    to { transform: translate3d(38px, 38px, 0); }
}

@keyframes pulseSoft {
    0%, 100% { opacity: .72; }
    50% { opacity: 1; }
}

@media (max-width: 1180px) {
    .lab-side {
        grid-template-columns: auto minmax(0, 1fr) auto;
    }

    .hero-board,
    .split-grid,
    .kanban {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 880px) {
    .login-stage { grid-template-columns: 1fr; min-height: auto; }
    .login-copy { min-height: 290px; padding: 28px; }
    .login-copy h1 { font-size: 24px; }
    .login-card { margin: 16px; }

    .lab-side {
        position: fixed;
        inset: 0 auto 0 0;
        z-index: 80;
        display: flex;
        align-items: stretch;
        flex-direction: column;
        gap: 0;
        width: min(300px, 86vw);
        height: 100vh;
        padding: 18px 14px;
        transform: translateX(-105%);
        transition: transform .18s ease;
    }

    .lab-side.open { transform: translateX(0); }

    .brand {
        padding: 0 0 18px;
        border-bottom: 1px solid var(--line);
    }

    .brand img { width: 142px; }

    .lab-side nav {
        display: grid;
        gap: 6px;
        margin-top: 18px;
        overflow: visible;
    }

    .lab-top {
        top: 0;
        grid-template-columns: auto minmax(0, 1fr) auto auto;
        padding: 10px 12px;
    }

    .menu-toggle {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-height: 36px;
        padding: 0 10px;
        color: var(--text);
        background: rgba(255,255,255,.06);
        border: 1px solid var(--line);
        border-radius: var(--radius);
        font-size: 12px;
        font-weight: 850;
    }

    .command {
        grid-column: 1 / -1;
        grid-template-columns: 1fr;
    }

    .command button { display: none; }
    .profile strong { display: none; }
    
    .lab-main { padding: 14px 12px 28px; }
    .screen-head { grid-template-columns: 1fr; }
    .call-row,
    .op-card,
    .sale-row,
    .person-card,
    .course-card {
        grid-template-columns: 1fr;
    }
    .card-actions { justify-content: flex-start; }
}

@media (max-width: 560px) {
    body { font-size: 13px; }
    .metrics-grid, .card-grid, .course-grid {
        grid-template-columns: 1fr;
    }
    .hero-panel { min-height: 0; padding: 16px; }
    .hero-panel h2 { font-size: 17px; }
    .focus-panel strong { font-size: 20px; }
    .toolbar {
        align-items: stretch;
    }
    .toolbar input,
    .toolbar button,
    .toolbar a {
        width: 100%;
    }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: .001ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
        transition-duration: .001ms !important;
    }
}

/* ============================================================
   LAB2 v0.1 — app experimental em componentes
   Objetivo: aproveitar a linguagem do LAB (cards, hover, blocos)
   sem importar o fundo preto/canvas para a versão estável.
   ============================================================ */

body.lab2-app,
body.lab2-login {
    --bg: #edf6ff;
    --bg-2: #f8fbff;
    --surface: rgba(255, 255, 255, .82);
    --surface-2: rgba(255, 255, 255, .94);
    --surface-soft: rgba(14, 94, 150, .055);
    --line: rgba(25, 91, 139, .15);
    --line-strong: rgba(25, 91, 139, .30);
    --text: #172033;
    --text-soft: #53657a;
    --muted: #8090a3;
    --accent: #0f8ed8;
    --accent-2: #18b7b2;
    --accent-3: #f6aa32;
    --danger: #df4661;
    --warn: #f6aa32;
    --ok: #16b878;
    --shadow: 0 18px 50px rgba(29, 72, 107, .14);
    --radius: 14px;
    --font: "EscolaUI", Rubik, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

body.lab2-app[data-accent="violet"],
body.lab2-login[data-accent="violet"] {
    --accent: #7c5cff;
    --accent-2: #22a6e8;
    --accent-3: #e879f9;
}

body.lab2-app[data-accent="ember"],
body.lab2-login[data-accent="ember"] {
    --accent: #f59e0b;
    --accent-2: #13b8a6;
    --accent-3: #ef5675;
}

body.lab2-app {
    color: var(--text);
    background:
        radial-gradient(circle at 15% 0%, rgba(15, 142, 216, .13), transparent 32%),
        radial-gradient(circle at 92% 12%, rgba(246, 170, 50, .12), transparent 30%),
        linear-gradient(180deg, #f8fbff 0%, #edf6ff 44%, #f5f9ff 100%);
}

body.lab2-app::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background:
        linear-gradient(rgba(15, 96, 160, .045) 1px, transparent 1px),
        linear-gradient(90deg, rgba(15, 96, 160, .045) 1px, transparent 1px);
    background-size: 42px 42px;
    mask-image: linear-gradient(to bottom, rgba(0,0,0,.72), rgba(0,0,0,.2));
}

body.lab2-login {
    color: var(--text);
    background:
        radial-gradient(circle at 12% 8%, rgba(15,142,216,.16), transparent 30%),
        radial-gradient(circle at 90% 18%, rgba(246,170,50,.13), transparent 32%),
        #f2f8ff;
}

body.lab2-login::before { display: none !important; }

body.lab2-app .lab-shell,
body.lab2-login .login-stage { position: relative; z-index: 1; }

body.lab2-login .login-stage {
    background: rgba(255,255,255,.86);
    border-color: var(--line);
    box-shadow: var(--shadow);
}
body.lab2-login .login-copy {
    background:
        linear-gradient(140deg, rgba(15,142,216,.16), transparent 48%),
        linear-gradient(320deg, rgba(246,170,50,.14), transparent 46%),
        rgba(255,255,255,.42);
}
body.lab2-login .login-copy img { filter: none; }
body.lab2-login .login-card {
    background: rgba(255,255,255,.86);
    border-color: var(--line);
    box-shadow: 0 14px 32px rgba(31, 78, 121, .10);
}
body.lab2-login .login-card input,
body.lab2-app .command input,
body.lab2-app .toolbar input {
    color: var(--text);
    background: rgba(255,255,255,.86);
    border-color: var(--line);
}
body.lab2-login .login-card input::placeholder,
body.lab2-app .command input::placeholder,
body.lab2-app .toolbar input::placeholder { color: #8a99aa; }
body.lab2-login .login-card button { color: #fff; background: linear-gradient(135deg, var(--accent), var(--accent-2)); }

body.lab2-app .lab-side {
    background: rgba(255,255,255,.88);
    border-bottom: 1px solid var(--line);
    box-shadow: 0 10px 30px rgba(34, 77, 112, .10);
    backdrop-filter: blur(18px);
}
body.lab2-app .brand img { filter: none; }
body.lab2-app .brand span {
    color: #8a5200;
    background: rgba(246,170,50,.15);
    border: 1px solid rgba(246,170,50,.34);
}
body.lab2-app .lab-side nav button {
    color: var(--text-soft);
    background: rgba(246, 249, 253, .78);
    border: 1px solid rgba(25, 91, 139, .12);
}
body.lab2-app .lab-side nav button span {
    color: var(--text);
    background: rgba(15, 142, 216, .08);
    border-color: rgba(15, 142, 216, .14);
}
body.lab2-app .lab-side nav button.active,
body.lab2-app .lab-side nav button:hover {
    color: var(--text);
    background: linear-gradient(135deg, rgba(255,255,255,.92), rgba(232,246,255,.92));
    border-color: color-mix(in srgb, var(--accent) 44%, transparent);
    box-shadow: 0 10px 24px rgba(22, 93, 148, .12);
    transform: translateY(-1px);
}
body.lab2-app .lab-side nav button.active span {
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
}
body.lab2-app .profile {
    color: var(--text);
    background: rgba(255,255,255,.72);
    border-color: var(--line);
}
body.lab2-app .profile span {
    color: #fff;
    background: linear-gradient(135deg, var(--accent-2), var(--accent));
}

body.lab2-app .lab-top {
    background: rgba(255,255,255,.66);
    border-bottom: 1px solid rgba(25,91,139,.10);
    backdrop-filter: blur(16px);
}
body.lab2-app .label { color: #b56d00; }
body.lab2-app .lab-top h1,
body.lab2-app .screen-head h2,
body.lab2-app .hero-panel h2,
body.lab2-app .panel-head h3,
body.lab2-app .lane h3 { color: var(--text); }
body.lab2-app .screen-head p,
body.lab2-app .panel-head span,
body.lab2-app .focus-panel p,
body.lab2-app .call-row span,
body.lab2-app .op-card span,
body.lab2-app .sale-row span,
body.lab2-app .person-card p,
body.lab2-app .course-card p,
body.lab2-app .person-card small,
body.lab2-app .course-card small { color: var(--text-soft); }

body.lab2-app .hero-panel,
body.lab2-app .focus-panel,
body.lab2-app .panel,
body.lab2-app .lane,
body.lab2-app .metric-card,
body.lab2-app .call-row,
body.lab2-app .op-card,
body.lab2-app .sale-row,
body.lab2-app .person-card,
body.lab2-app .course-card,
body.lab2-app .toolbar {
    background: var(--surface);
    border: 1px solid var(--line);
    box-shadow: 0 14px 34px rgba(34, 77, 112, .08);
    backdrop-filter: blur(14px);
}
body.lab2-app .hero-panel::after,
body.lab2-app .focus-panel::after,
body.lab2-app .panel::after,
body.lab2-app .lane::after { opacity: .48; }
body.lab2-app .hero-panel {
    background:
        linear-gradient(135deg, rgba(15,142,216,.14), transparent 38%),
        linear-gradient(315deg, rgba(246,170,50,.16), transparent 40%),
        rgba(255,255,255,.82);
}
body.lab2-app .focus-panel {
    background:
        linear-gradient(135deg, rgba(24,183,178,.12), transparent 42%),
        rgba(255,255,255,.82);
}
body.lab2-app .metric-card { background: rgba(255,255,255,.74); }
body.lab2-app .metric-card span { color: #66778a; }
body.lab2-app .metric-card strong { color: var(--text); }
body.lab2-app .metric-card em { color: var(--text-soft); }

body.lab2-app .call-row,
body.lab2-app .op-card,
body.lab2-app .sale-row,
body.lab2-app .person-card,
body.lab2-app .course-card {
    position: relative;
    overflow: hidden;
    background:
        linear-gradient(135deg, rgba(255,255,255,.96), rgba(247,251,255,.82));
    border-color: rgba(25,91,139,.13);
    transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease, background .18s ease;
}
body.lab2-app .call-row::before,
body.lab2-app .op-card::before,
body.lab2-app .sale-row::before,
body.lab2-app .person-card::before,
body.lab2-app .course-card::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 4px;
    background: linear-gradient(180deg, var(--accent), var(--accent-2));
    opacity: .28;
    transition: opacity .18s ease, width .18s ease;
}
body.lab2-app .call-row:hover,
body.lab2-app .op-card:hover,
body.lab2-app .sale-row:hover,
body.lab2-app .person-card:hover,
body.lab2-app .course-card:hover {
    transform: translateY(-3px);
    background:
        linear-gradient(135deg, rgba(255,255,255,1), color-mix(in srgb, var(--accent) 8%, white));
    border-color: color-mix(in srgb, var(--accent) 45%, transparent);
    box-shadow: 0 18px 42px rgba(28, 93, 146, .15);
}
body.lab2-app .call-row:hover::before,
body.lab2-app .op-card:hover::before,
body.lab2-app .sale-row:hover::before,
body.lab2-app .person-card:hover::before,
body.lab2-app .course-card:hover::before { opacity: .9; width: 6px; }

body.lab2-app .call-row time,
body.lab2-app .op-card time { color: #b56d00; }
body.lab2-app .call-row strong,
body.lab2-app .op-card strong,
body.lab2-app .sale-row strong,
body.lab2-app .person-card strong,
body.lab2-app .course-card strong { color: var(--text); }
body.lab2-app .avatar {
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    box-shadow: 0 10px 22px color-mix(in srgb, var(--accent) 20%, transparent);
}
body.lab2-app .course-card .category {
    color: #b30f55;
    background: rgba(255, 96, 142, .10);
    border-color: rgba(255, 96, 142, .18);
}

body.lab2-app .command button,
body.lab2-app .primary-btn,
body.lab2-app .hero-actions .primary-btn,
body.lab2-app .toolbar .active {
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    border-color: transparent;
}
body.lab2-app .toolbar button,
body.lab2-app .toolbar a,
body.lab2-app .hero-actions button,
body.lab2-app .hero-actions a,
body.lab2-app .panel-link,
body.lab2-app .card-actions a,
body.lab2-app .card-actions button {
    color: var(--text);
    background: rgba(255,255,255,.72);
    border-color: var(--line);
}
body.lab2-app .toolbar button:hover,
body.lab2-app .toolbar a:hover,
body.lab2-app .hero-actions button:hover,
body.lab2-app .panel-link:hover,
body.lab2-app .card-actions a:hover,
body.lab2-app .card-actions button:hover {
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    border-color: transparent;
    transform: translateY(-1px);
}
body.lab2-app .card-actions a[href="#"] { opacity: .45; pointer-events: none; }
body.lab2-app .empty {
    color: var(--muted);
    background: rgba(255,255,255,.48);
    border: 1px dashed rgba(25,91,139,.18);
}
body.lab2-app .status.confirmada { color: #04784e; background: rgba(22,184,120,.12); }
body.lab2-app .status.pendente { color: #a16207; background: rgba(246,170,50,.14); }
body.lab2-app .status.cancelada { color: #b4233c; background: rgba(223,70,97,.12); }
body.lab2-app .toast {
    color: #fff;
    background: #172033;
    border-color: rgba(255,255,255,.16);
}
body.lab2-app .error-box {
    color: #8f1d35;
    background: rgba(223,70,97,.09);
    border-color: rgba(223,70,97,.24);
}
body.lab2-app .swatch.active { box-shadow: 0 0 0 3px rgba(255,255,255,.9), 0 0 0 5px color-mix(in srgb, var(--accent) 35%, transparent); }

@media (max-width: 880px) {
    body.lab2-app .lab-side { background: rgba(255,255,255,.94); }
    body.lab2-app .lab-side nav { background: rgba(255,255,255,.92); border-color: var(--line); box-shadow: var(--shadow); }
}

/* ============================================================
   LAB2 v0.2 — foco inicial em Leads e Oportunidades
   ============================================================ */

body.lab2-app .work-intro {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    margin-bottom: 16px;
    padding: 20px;
    background:
        linear-gradient(135deg, rgba(15,142,216,.12), transparent 42%),
        linear-gradient(315deg, rgba(246,170,50,.12), transparent 42%),
        rgba(255,255,255,.82);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    box-shadow: 0 14px 34px rgba(34,77,112,.08);
    backdrop-filter: blur(14px);
}
body.lab2-app .work-intro h2 {
    margin: 0;
    color: var(--text);
    font-size: clamp(22px, 3vw, 34px);
    line-height: 1.05;
    letter-spacing: -0.045em;
}
body.lab2-app .work-intro p:not(.label) {
    max-width: 740px;
    margin: 8px 0 0;
    color: var(--text-soft);
    line-height: 1.45;
}
body.lab2-app .work-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: flex-end;
}
body.lab2-app .work-actions a {
    min-height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 14px;
    color: var(--text);
    background: rgba(255,255,255,.72);
    border: 1px solid var(--line);
    border-radius: 999px;
    font-weight: 800;
    transition: transform .18s ease, box-shadow .18s ease, background .18s ease, color .18s ease;
}
body.lab2-app .work-actions a:hover,
body.lab2-app .work-actions .primary-btn {
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    border-color: transparent;
}
body.lab2-app .work-actions a:hover { transform: translateY(-1px); }

body.lab2-app .work-toolbar {
    display: grid;
    grid-template-columns: minmax(220px, 1fr) auto;
    margin: 12px 0 10px;
}
body.lab2-app .filter-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0 0 10px;
}
body.lab2-app .filter-chips button {
    min-height: 36px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 0 13px;
    color: var(--text);
    background: rgba(255,255,255,.76);
    border: 1px solid var(--line);
    border-radius: 999px;
    font-weight: 850;
    box-shadow: 0 8px 20px rgba(34,77,112,.06);
    transition: transform .18s ease, border-color .18s ease, background .18s ease, color .18s ease;
}
body.lab2-app .filter-chips button span {
    min-width: 24px;
    padding: 3px 7px;
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    border-radius: 999px;
    font-size: 11px;
    line-height: 1;
}
body.lab2-app .filter-chips button:hover,
body.lab2-app .filter-chips button.active {
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    border-color: transparent;
    transform: translateY(-1px);
}
body.lab2-app .filter-chips button:hover span,
body.lab2-app .filter-chips button.active span {
    color: var(--accent);
    background: rgba(255,255,255,.92);
}
body.lab2-app .result-line {
    margin: 2px 0 12px;
    color: var(--text-soft);
    font-size: 12px;
    font-weight: 750;
}

body.lab2-app .card-title-line {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}
body.lab2-app .work-badge {
    display: inline-flex;
    align-items: center;
    min-height: 22px;
    padding: 0 8px;
    border-radius: 999px;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .3px;
    text-transform: uppercase;
}
body.lab2-app .work-badge.fresh,
body.lab2-app .work-badge.today {
    color: #08734e;
    background: rgba(22,184,120,.12);
    border: 1px solid rgba(22,184,120,.22);
}
body.lab2-app .work-badge.working,
body.lab2-app .work-badge.future {
    color: #0f6697;
    background: rgba(15,142,216,.10);
    border: 1px solid rgba(15,142,216,.18);
}
body.lab2-app .work-badge.limit,
body.lab2-app .work-badge.late {
    color: #a11d37;
    background: rgba(223,70,97,.11);
    border: 1px solid rgba(223,70,97,.20);
}
body.lab2-app .work-badge.nodate {
    color: #9a6105;
    background: rgba(246,170,50,.13);
    border: 1px solid rgba(246,170,50,.24);
}

body.lab2-app .attempt-dots {
    display: inline-flex;
    gap: 5px;
    vertical-align: middle;
    margin-right: 5px;
}
body.lab2-app .attempt-dots .attempt-dot {
    display: inline-block;
    flex: 0 0 auto;
    width: 9px;
    height: 9px;
    min-width: 9px;
    min-height: 9px;
    padding: 0;
    border-radius: 50%;
    background: rgba(15,142,216,.14);
    border: 1px solid rgba(15,142,216,.30);
    box-shadow: none;
    transition: transform .15s ease, background .15s ease, border-color .15s ease, box-shadow .15s ease;
}
body.lab2-app .attempt-dots button.attempt-dot {
    cursor: pointer;
    appearance: none;
}
body.lab2-app .attempt-dots button.attempt-dot:hover,
body.lab2-app .attempt-dots button.attempt-dot:focus-visible {
    transform: scale(1.35);
    background: color-mix(in srgb, var(--accent) 28%, white);
    border-color: var(--accent);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 15%, transparent);
    outline: none;
}
body.lab2-app .attempt-dots .attempt-dot.filled {
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    border-color: transparent;
}
body.lab2-app .card-info-block {
    display: grid;
    gap: 4px;
    margin: 12px 0 8px;
    padding: 10px 11px;
    border: 1px solid rgba(25,91,139,.10);
    border-radius: 12px;
    background: rgba(247,251,255,.72);
}
body.lab2-app .card-info-block span {
    color: var(--muted);
    font-size: 10px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: .7px;
}
body.lab2-app .card-info-block strong {
    color: var(--text);
    line-height: 1.25;
}
body.lab2-app .primary-action {
    color: #fff !important;
    background: linear-gradient(135deg, var(--accent), var(--accent-2)) !important;
    border-color: transparent !important;
}

body.lab2-app .lead-card {
    padding-left: 19px;
}

body.lab2-app .course-card-link {
    position: relative;
    padding-right: 34px;
    color: inherit;
    text-decoration: none;
    cursor: pointer;
    transition: border-color .16s ease, background .16s ease, transform .16s ease, box-shadow .16s ease;
}
body.lab2-app .course-card-link::after {
    content: "›";
    position: absolute;
    top: 50%;
    right: 12px;
    color: var(--accent);
    font-size: 22px;
    font-weight: 700;
    line-height: 1;
    transform: translateY(-52%);
}
body.lab2-app .course-card-link:hover,
body.lab2-app .course-card-link:focus-visible {
    border-color: color-mix(in srgb, var(--accent) 36%, transparent);
    background: color-mix(in srgb, var(--accent) 7%, white);
    box-shadow: 0 8px 22px rgba(34,77,112,.08);
    outline: none;
}
body.lab2-app .course-card-link:hover::after,
body.lab2-app .course-card-link:focus-visible::after {
    transform: translate(2px, -52%);
}

body.lab2-app .work-card.fresh::before,
body.lab2-app .work-card.today::before { background: linear-gradient(180deg, var(--ok), var(--accent-2)); }
body.lab2-app .work-card.working::before,
body.lab2-app .work-card.future::before { background: linear-gradient(180deg, var(--accent), var(--accent-2)); }
body.lab2-app .work-card.limit::before,
body.lab2-app .work-card.late::before { background: linear-gradient(180deg, var(--danger), #ff9f7a); }
body.lab2-app .work-card.nodate::before { background: linear-gradient(180deg, var(--warn), var(--accent-3)); }

body.lab2-app .work-kanban {
    grid-template-columns: repeat(3, minmax(250px, 1fr));
    align-items: start;
}
body.lab2-app .work-kanban .lane h3 {
    display: flex;
    align-items: center;
    justify-content: space-between;
}
body.lab2-app .work-kanban .lane h3 span {
    min-width: 26px;
    min-height: 24px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    border-radius: 999px;
    font-size: 12px;
}

body.lab2-app .lane-warn h3 span { background: linear-gradient(135deg, var(--warn), var(--accent-3)); }

@media (max-width: 1180px) {
    body.lab2-app .work-kanban { grid-template-columns: repeat(2, minmax(240px, 1fr)); }
}
@media (max-width: 760px) {
    body.lab2-app .work-intro { display: grid; }
    body.lab2-app .work-actions { justify-content: flex-start; }
    body.lab2-app .work-toolbar { grid-template-columns: 1fr; }
    body.lab2-app .work-kanban { grid-template-columns: 1fr; }
    
}

/* LAB2 v0.3 — topbar global limpa e comum a todas as páginas */
body.lab2-app {
    --topbar-bg: rgba(255, 255, 255, .94);
    --subbar-bg: rgba(244, 250, 255, .94);
    --topbar-border: rgba(54, 115, 159, .16);
}

body.lab2-app .lab-shell {
    display: grid;
    grid-template-rows: auto 1fr;
}

body.lab2-app .lab-side {
    position: sticky;
    top: 0;
    z-index: 60;
    display: block;
    min-height: 0;
    padding: 0;
    color: #29465f;
    background: var(--topbar-bg);
    border-bottom: 1px solid var(--topbar-border);
    box-shadow: 0 8px 24px rgba(34, 77, 112, .08);
    backdrop-filter: blur(16px);
}

body.lab2-app .topbar-main {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: 12px;
    align-items: center;
    min-height: 70px;
    padding: 8px 14px;
}

body.lab2-app .brand {
    gap: 8px;
}

body.lab2-app .brand img {
    width: 112px;
    filter: none;
}

body.lab2-app .brand span {
    min-height: 24px;
    padding: 0 8px;
    color: #a25e05;
    background: #fff4df;
    border-color: #f4cf91;
}

body.lab2-app .lab-side nav {
    gap: 5px;
    align-items: center;
}

body.lab2-app .lab-side nav button {
    min-height: 38px;
    padding: 0 10px;
    color: #4d6477;
    background: #f7fbff;
    border-color: #dbe8f2;
    border-radius: 12px;
}

body.lab2-app .lab-side nav button span {
    color: #36556c;
    background: #edf7ff;
    border-color: #d3e6f3;
}

body.lab2-app .lab-side nav button.active,
body.lab2-app .lab-side nav button:hover {
    color: #18384f;
    background: #eef9ff;
    border-color: color-mix(in srgb, var(--accent) 36%, #cfe4f2);
}

body.lab2-app .lab-side nav button.active span {
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
}

body.lab2-app .topbar-actions {
    display: flex;
    gap: 8px;
    align-items: center;
    justify-content: flex-end;
    white-space: nowrap;
}

body.lab2-app .swatch {
    width: 20px;
    height: 20px;
    border-color: rgba(36, 88, 123, .16);
}

body.lab2-app .profile {
    min-height: 38px;
    padding: 4px 10px 4px 5px;
    color: #29465f;
    background: #fff;
    border-color: #dbe8f2;
}

body.lab2-app .profile span {
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
}

body.lab2-app .lab-top {
    position: sticky;
    top: 70px;
    z-index: 50;
    display: grid;
    grid-template-columns: minmax(230px, .55fr) minmax(360px, 1.05fr) minmax(130px, .65fr);
    gap: 14px;
    align-items: center;
    padding: 11px 20px;
    color: #29465f;
    background: var(--subbar-bg);
    border-bottom: 1px solid var(--topbar-border);
    box-shadow: 0 6px 18px rgba(34, 77, 112, .05);
    backdrop-filter: blur(14px);
}

body.lab2-app .page-context {
    min-width: 0;
}

body.lab2-app .lab-top .label {
    margin-bottom: 2px;
    color: #c6750b;
}

body.lab2-app .lab-top h1 {
    color: #243f56;
    font-size: 20px;
}

body.lab2-app .command {
    min-width: 0;
}

body.lab2-app .command input {
    color: #29465f;
    background: #fff;
    border-color: #d5e4ee;
}

body.lab2-app .command input::placeholder {
    color: #899caa;
}

body.lab2-app .command button {
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    border-color: transparent;
}

body.lab2-app .lab-main {
    padding-top: 18px;
}

@media (max-width: 1320px) {
    body.lab2-app .topbar-main {
        grid-template-columns: auto minmax(0, 1fr);
    }
    body.lab2-app .topbar-actions {
        grid-column: 1 / -1;
        justify-content: flex-end;
        padding-top: 2px;
    }
    body.lab2-app .lab-top { top: 112px; }
}

@media (max-width: 900px) {
    body.lab2-app .topbar-main {
        grid-template-columns: auto auto 1fr;
    }
    body.lab2-app .menu-toggle {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-height: 36px;
        padding: 0 11px;
        color: #35546a;
        background: #f7fbff;
        border: 1px solid #dbe8f2;
        border-radius: 12px;
    }
    body.lab2-app .lab-side nav {
        grid-column: 1 / -1;
        order: 4;
    }
    body.lab2-app .topbar-actions {
        grid-column: 3;
        grid-row: 1;
    }
    body.lab2-app .lab-top {
        top: 116px;
        grid-template-columns: 1fr;
    }
    
}

@media (max-width: 640px) {
    body.lab2-app .topbar-main { padding: 8px 10px; }
    body.lab2-app .brand img { width: 96px; }
    body.lab2-app .topbar-actions .palette,
    body.lab2-app .topbar-actions .portal-link,
    body.lab2-app .profile strong { display: none; }
    body.lab2-app .profile { padding-right: 5px; }
    body.lab2-app .lab-side nav button { padding: 0 8px; }
    body.lab2-app .lab-side nav button span { display: none; }
    body.lab2-app .lab-top {
        top: 108px;
        padding: 10px 12px;
    }
    body.lab2-app .command { grid-template-columns: 1fr; }
}

/* LAB2 v0.4 — navegação centrada, indicadores compactos e pesquisa global de cursos */
body.lab2-app .topbar-main {
    grid-template-columns: minmax(150px, 1fr) auto minmax(250px, 1fr);
    gap: 16px;
    min-height: 68px;
    padding: 7px 14px;
}

body.lab2-app .brand {
    justify-self: start;
}

body.lab2-app .lab-side nav {
    justify-self: center;
    justify-content: center;
    width: max-content;
    max-width: 100%;
    gap: 5px;
}

body.lab2-app .lab-side nav button {
    gap: 7px;
    min-height: 40px;
    padding: 0 11px;
}

body.lab2-app .lab-side nav button .nav-icon {
    display: inline-grid;
    place-items: center;
    flex: 0 0 27px;
    width: 27px;
    height: 27px;
    padding: 0;
    color: #3f687f;
    background: #eaf5fb;
    border: 1px solid #cfe3ef;
    border-radius: 9px;
    transition: color .18s ease, background .18s ease, border-color .18s ease, transform .18s ease;
}

body.lab2-app .lab-side nav button .nav-icon svg {
    width: 15px;
    height: 15px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

body.lab2-app .lab-side nav button .nav-label {
    display: inline;
    width: auto;
    height: auto;
    min-height: 0;
    padding: 0;
    color: inherit;
    background: transparent;
    border: 0;
    border-radius: 0;
}

body.lab2-app .lab-side nav button:hover .nav-icon {
    transform: translateY(-1px);
    color: #0f789f;
    border-color: #9fd5e8;
    background: #e5f8ff;
}

body.lab2-app .lab-side nav button.active .nav-icon {
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    border-color: transparent;
    box-shadow: 0 5px 13px color-mix(in srgb, var(--accent) 24%, transparent);
}

body.lab2-app .topbar-actions {
    justify-self: end;
}

body.lab2-app .lab-top {
    top: 68px;
    grid-template-columns: minmax(210px, .72fr) minmax(460px, 1.45fr) minmax(330px, .88fr);
    gap: 18px;
    min-height: 68px;
    padding: 8px 18px;
    overflow: visible;
}

body.lab2-app .page-context .label {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

body.lab2-app .lab-top h1 {
    margin: 0;
    font-size: 19px;
    line-height: 1.05;
}

body.lab2-app .page-metrics {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-width: 0;
    overflow: hidden;
    color: #6f8798;
    white-space: nowrap;
    font-size: 11px;
}

body.lab2-app .page-metrics > i {
    flex: 0 0 auto;
    color: #b5c8d4;
    font-style: normal;
}

body.lab2-app .page-metric {
    display: inline-flex;
    align-items: baseline;
    gap: 4px;
    min-width: 0;
}

body.lab2-app .page-metric strong {
    color: #23445b;
    font-size: 13px;
    font-weight: 800;
}

body.lab2-app .page-metric.danger strong { color: #c74c62; }
body.lab2-app .page-metric.warn strong { color: #b97916; }
body.lab2-app .page-metric.good strong { color: #21885f; }
body.lab2-app .page-metrics-empty { color: #8da1af; }

body.lab2-app .course-quick-search {
    position: relative;
    z-index: 80;
    justify-self: end;
    width: min(460px, 100%);
    min-width: 0;
}

body.lab2-app .course-search-field {
    position: relative;
    display: flex;
    align-items: center;
}

body.lab2-app .course-search-field input {
    width: 100%;
    height: 40px;
    padding: 0 38px 0 38px;
    color: #29465f;
    background: rgba(255, 255, 255, .98);
    border: 1px solid #d3e3ed;
    border-radius: 12px;
    outline: none;
    transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}

body.lab2-app .course-search-field input::placeholder {
    color: #8b9eac;
}

body.lab2-app .course-search-field input:focus,
body.lab2-app .course-quick-search.is-open .course-search-field input {
    border-color: color-mix(in srgb, var(--accent) 52%, #b5d8e8);
    background: #fff;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 13%, transparent), 0 7px 20px rgba(42, 102, 140, .09);
}

body.lab2-app .course-search-icon {
    position: absolute;
    left: 13px;
    z-index: 1;
    display: grid;
    place-items: center;
    color: #638195;
    pointer-events: none;
}

body.lab2-app .course-search-icon svg {
    width: 17px;
    height: 17px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.9;
    stroke-linecap: round;
}

body.lab2-app .course-search-clear {
    position: absolute;
    right: 9px;
    display: grid;
    place-items: center;
    width: 25px;
    height: 25px;
    padding: 0;
    color: #718999;
    background: #edf4f8;
    border: 0;
    border-radius: 8px;
    font-size: 18px;
    line-height: 1;
}

body.lab2-app .course-search-clear:hover {
    color: #21445b;
    background: #e2f0f7;
}

body.lab2-app .course-search-results {
    position: absolute;
    top: calc(100% + 7px);
    right: 0;
    width: min(560px, 92vw);
    max-height: min(480px, 68vh);
    overflow: auto;
    padding: 6px;
    background: rgba(255, 255, 255, .985);
    border: 1px solid #cfdee8;
    border-radius: 14px;
    box-shadow: 0 20px 55px rgba(31, 75, 108, .19);
    backdrop-filter: blur(18px);
}

body.lab2-app .course-search-results[hidden] { display: none; }

body.lab2-app .course-search-result {
    display: grid;
    grid-template-columns: 56px minmax(0, 1fr) auto;
    gap: 11px;
    align-items: center;
    min-height: 58px;
    padding: 8px 10px;
    color: #29465f;
    border: 1px solid transparent;
    border-radius: 10px;
    transition: background .15s ease, border-color .15s ease, transform .15s ease;
}

body.lab2-app .course-search-result + .course-search-result {
    margin-top: 3px;
}

body.lab2-app .course-search-result:hover,
body.lab2-app .course-search-result.is-selected {
    background: #edf8fd;
    border-color: #c8e6f1;
    transform: translateX(2px);
}

body.lab2-app .course-result-code {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 29px;
    padding: 0 7px;
    color: #0d7399;
    background: #e2f6fd;
    border: 1px solid #bfe4f1;
    border-radius: 8px;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .35px;
}

body.lab2-app .course-result-copy {
    min-width: 0;
}

body.lab2-app .course-result-copy strong,
body.lab2-app .course-result-copy small {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

body.lab2-app .course-result-copy strong {
    color: #203d52;
    font-size: 12px;
}

body.lab2-app .course-result-copy small {
    margin-top: 3px;
    color: #718797;
    font-size: 10px;
}

body.lab2-app .course-result-open {
    color: #0d7ba4;
    font-size: 10px;
    font-weight: 850;
    white-space: nowrap;
}

body.lab2-app .course-search-message {
    padding: 14px 12px;
    color: #708797;
    text-align: center;
    font-size: 12px;
}

/* As métricas deixam de ocupar cartões no corpo; passam para a barra contextual. */
body.lab2-app .metrics-grid { display: none; }

@media (max-width: 1500px) {
    body.lab2-app .topbar-main {
        grid-template-columns: minmax(125px, .8fr) auto minmax(210px, .8fr);
        gap: 10px;
    }
    body.lab2-app .lab-side nav button {
        padding: 0 8px;
        gap: 5px;
    }
    body.lab2-app .lab-top {
        grid-template-columns: minmax(180px, .55fr) minmax(350px, 1fr) minmax(300px, .75fr);
        gap: 12px;
    }
    body.lab2-app .page-metrics { gap: 7px; }
}

@media (max-width: 1260px) {
    body.lab2-app .topbar-main {
        grid-template-columns: auto minmax(0, 1fr) auto;
    }
    body.lab2-app .lab-side nav {
        justify-self: center;
        width: 100%;
        overflow-x: auto;
        justify-content: flex-start;
    }
    body.lab2-app .lab-side nav button .nav-label { display: none; }
    body.lab2-app .lab-side nav button { padding: 0 6px; }
    body.lab2-app .lab-top {
        top: 68px;
        grid-template-columns: minmax(170px, .5fr) minmax(300px, 1fr) minmax(280px, .75fr);
    }
    body.lab2-app .page-metric span { display: none; }
}

@media (max-width: 900px) {
    body.lab2-app .topbar-main {
        grid-template-columns: auto auto 1fr;
    }
    body.lab2-app .lab-side nav {
        grid-column: 1 / -1;
        order: 4;
        justify-content: flex-start;
    }
    body.lab2-app .topbar-actions {
        grid-column: 3;
        grid-row: 1;
    }
    body.lab2-app .lab-top {
        top: 116px;
        grid-template-columns: minmax(140px, .5fr) minmax(180px, .75fr) minmax(260px, 1fr);
        gap: 8px;
        padding-inline: 12px;
    }
    body.lab2-app .page-context .label { display: none; }
    body.lab2-app .page-metrics { justify-content: flex-start; }
}

@media (max-width: 680px) {
    body.lab2-app .lab-top {
        top: 108px;
        grid-template-columns: auto minmax(0, 1fr);
        min-height: auto;
        padding: 8px 10px;
    }
    body.lab2-app .page-metrics { display: none; }
    body.lab2-app .course-quick-search { width: 100%; }
    body.lab2-app .course-search-results { width: min(560px, calc(100vw - 20px)); }
    body.lab2-app .course-search-result {
        grid-template-columns: 48px minmax(0, 1fr);
    }
    body.lab2-app .course-result-open { display: none; }
}

/* ============================================================
   LAB2 v0.5 — navegação sem recortes e transições de página fluidas
   ============================================================ */

/*
 * O menu não muda de altura nem se desloca no hover/estado ativo.
 * Deste modo, os ícones, a sombra e a linha inferior deixam de ser
 * cortados pelo contentor horizontal da navegação.
 */
body.lab2-app .lab-side nav {
    overflow: visible;
    padding-block: 5px;
    margin-block: -5px;
}

body.lab2-app .lab-side nav button {
    overflow: visible;
    transform: none;
    transition: color .18s ease, background .18s ease, border-color .18s ease, box-shadow .18s ease;
}

body.lab2-app .lab-side nav button:hover,
body.lab2-app .lab-side nav button.active {
    transform: none;
}

body.lab2-app .lab-side nav button:hover .nav-icon,
body.lab2-app .lab-side nav button.active .nav-icon {
    transform: none;
}

/* Garante que apenas o ícone recebe a cor de destaque. */
body.lab2-app .lab-side nav button .nav-label,
body.lab2-app .lab-side nav button:hover .nav-label,
body.lab2-app .lab-side nav button.active .nav-label {
    display: inline;
    width: auto;
    height: auto;
    min-height: 0;
    padding: 0;
    color: inherit;
    background: transparent;
    border: 0;
    border-radius: 0;
    box-shadow: none;
}

/* A área de conteúdo mantém uma altura estável entre módulos. */
body.lab2-app .lab-main {
    position: relative;
    min-height: calc(100vh - 136px);
    transition: opacity .18s ease;
}

/*
 * Ao mudar de módulo, o conteúdo atual permanece no ecrã enquanto
 * os dados seguintes são carregados. Apenas fica ligeiramente atenuado,
 * evitando o desaparecimento súbito e o salto vertical da página.
 */
body.lab2-app .lab-main.is-view-loading {
    cursor: progress;
}

body.lab2-app .lab-main.is-view-loading > * {
    opacity: .58;
    filter: saturate(.88);
    pointer-events: none;
    transition: opacity .16s ease, filter .16s ease;
}

body.lab2-app .lab-main.is-view-loading::before {
    content: "";
    position: absolute;
    z-index: 8;
    top: 4px;
    left: 22px;
    right: 22px;
    height: 3px;
    border-radius: 999px;
    background: linear-gradient(90deg, transparent, var(--accent), var(--accent-2), transparent);
    transform-origin: left center;
    animation: lab2ViewProgress .95s ease-in-out infinite;
    pointer-events: none;
}

body.lab2-app .lab-main.view-enter > * {
    animation: lab2ViewEnter .22s cubic-bezier(.2, .72, .25, 1) both;
}

@keyframes lab2ViewProgress {
    0% { opacity: .28; transform: scaleX(.16); }
    50% { opacity: .9; transform: scaleX(.72); }
    100% { opacity: .28; transform: scaleX(.16) translateX(520%); }
}

@keyframes lab2ViewEnter {
    from { opacity: .68; transform: translateY(4px); }
    to { opacity: 1; transform: translateY(0); }
}

@media (max-width: 1260px) {
    body.lab2-app .lab-side nav {
        overflow-x: auto;
        overflow-y: hidden;
        padding-block: 5px 7px;
        margin-block: -5px -7px;
        scroll-padding-inline: 8px;
    }
}

@media (prefers-reduced-motion: reduce) {
    body.lab2-app .lab-main.is-view-loading::before,
    body.lab2-app .lab-main.view-enter > * {
        animation: none !important;
    }
}

/* ============================================================
   LAB2 v0.6 — ícones de navegação com cor por módulo
   ============================================================ */

/*
 * Cada módulo tem uma identidade cromática própria. A cor fica
 * concentrada no ícone para manter a topbar leve e profissional.
 */
body.lab2-app .lab-side nav button {
    --module-color: #1b8fb8;
    --module-color-deep: #0f6f95;
    --module-soft: #e9f7fc;
    --module-border: #c7e6f1;
    --module-shadow: rgba(27, 143, 184, .22);
}

body.lab2-app .lab-side nav button.nav-leads {
    --module-color: #159fc7;
    --module-color-deep: #087ea5;
    --module-soft: #e6f8fd;
    --module-border: #bce8f4;
    --module-shadow: rgba(21, 159, 199, .24);
}

body.lab2-app .lab-side nav button.nav-oportunidades {
    --module-color: #8b68d9;
    --module-color-deep: #6f4fc0;
    --module-soft: #f1edff;
    --module-border: #d9cef8;
    --module-shadow: rgba(139, 104, 217, .24);
}

body.lab2-app .lab-side nav button.nav-agenda {
    --module-color: #14a990;
    --module-color-deep: #0b826f;
    --module-soft: #e5f9f5;
    --module-border: #bceade;
    --module-shadow: rgba(20, 169, 144, .24);
}

body.lab2-app .lab-side nav button.nav-cursos {
    --module-color: #4e78d6;
    --module-color-deep: #365ab4;
    --module-soft: #eaf0ff;
    --module-border: #cbd8fa;
    --module-shadow: rgba(78, 120, 214, .24);
}

body.lab2-app .lab-side nav button.nav-importar {
    --module-color: #e18a27;
    --module-color-deep: #bb6810;
    --module-soft: #fff3e4;
    --module-border: #f3d3ad;
    --module-shadow: rgba(225, 138, 39, .25);
}

body.lab2-app .lab-side nav button.nav-dashboard {
    --module-color: #3a8fd8;
    --module-color-deep: #216faf;
    --module-soft: #e8f3fd;
    --module-border: #c6def3;
    --module-shadow: rgba(58, 143, 216, .24);
}

body.lab2-app .lab-side nav button.nav-vendas {
    --module-color: #2da66f;
    --module-color-deep: #1e8055;
    --module-soft: #e7f8ef;
    --module-border: #bfe8d2;
    --module-shadow: rgba(45, 166, 111, .24);
}

body.lab2-app .lab-side nav button .nav-icon {
    color: var(--module-color-deep);
    background: var(--module-soft);
    border-color: var(--module-border);
}

body.lab2-app .lab-side nav button:hover {
    border-color: color-mix(in srgb, var(--module-color) 22%, #d9e7f0);
    background: color-mix(in srgb, var(--module-soft) 58%, #ffffff);
}

body.lab2-app .lab-side nav button:hover .nav-icon {
    color: var(--module-color-deep);
    background: color-mix(in srgb, var(--module-soft) 70%, #ffffff);
    border-color: color-mix(in srgb, var(--module-color) 44%, var(--module-border));
    box-shadow: 0 4px 11px var(--module-shadow);
}

body.lab2-app .lab-side nav button.active {
    border-color: color-mix(in srgb, var(--module-color) 26%, #d9e7f0);
    background: color-mix(in srgb, var(--module-soft) 62%, #ffffff);
}

body.lab2-app .lab-side nav button.active::before {
    background: var(--module-color);
}

body.lab2-app .lab-side nav button.active .nav-icon {
    color: #fff;
    background: linear-gradient(135deg, var(--module-color), var(--module-color-deep));
    border-color: transparent;
    box-shadow: 0 5px 13px var(--module-shadow);
}

/* ============================================================
   LAB2 v0.7 — pesquisa integrada no bloco de trabalho
   ============================================================ */

body.lab2-app .work-intro {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(360px, 460px);
    align-items: center;
    gap: 28px;
}

body.lab2-app .work-intro-copy {
    min-width: 0;
}

body.lab2-app .work-intro-side {
    display: grid;
    align-content: center;
    justify-items: end;
    gap: 16px;
    min-width: 0;
}

body.lab2-app .work-intro-side .work-actions {
    width: 100%;
    justify-content: flex-end;
}

body.lab2-app .work-intro-search {
    width: 100%;
    margin: 0;
    padding: 8px;
    grid-template-columns: minmax(0, 1fr) auto;
    background: rgba(255, 255, 255, .76);
    border-color: rgba(111, 151, 181, .24);
    border-radius: 16px;
    box-shadow: 0 10px 26px rgba(34, 77, 112, .07);
    backdrop-filter: blur(12px);
}

body.lab2-app .work-intro-search input {
    width: 100%;
    min-width: 0;
    background: rgba(255, 255, 255, .88);
}

body.lab2-app .work-intro-search button {
    white-space: nowrap;
}

/* A pesquisa dinâmica atualiza a listagem sem alterar a altura do intro. */
body.lab2-app .work-intro-search:focus-within {
    border-color: color-mix(in srgb, var(--accent) 38%, var(--line));
    box-shadow:
        0 10px 26px rgba(34, 77, 112, .08),
        0 0 0 3px color-mix(in srgb, var(--accent) 10%, transparent);
}

@media (max-width: 980px) {
    body.lab2-app .work-intro {
        grid-template-columns: 1fr;
        gap: 18px;
    }

    body.lab2-app .work-intro-side {
        width: 100%;
        justify-items: stretch;
    }

    body.lab2-app .work-intro-side .work-actions {
        justify-content: flex-start;
    }

    body.lab2-app .work-intro-search {
        max-width: none;
    }
}

@media (max-width: 620px) {
    body.lab2-app .work-intro-search {
        grid-template-columns: 1fr;
    }

    body.lab2-app .work-intro-search button {
        width: 100%;
    }
}

/* LAB2 v0.9 — filtros com dimensões estáveis
 * O estado ativo, hover e foco deixam de alterar a geometria dos botões.
 * Mantém a mesma altura, padding e área da contagem em todos os estados.
 */
body.lab2-app .filter-chips {
    align-items: center;
}

body.lab2-app .filter-chips button {
    flex: 0 0 auto;
    height: 36px;
    min-height: 36px;
    max-height: 36px;
    padding: 0 13px;
    line-height: 1;
    white-space: nowrap;
    overflow: hidden;
    appearance: none;
    -webkit-appearance: none;
    transform: none;
    box-sizing: border-box;
}

body.lab2-app .filter-chips button:hover,
body.lab2-app .filter-chips button:focus,
body.lab2-app .filter-chips button:focus-visible,
body.lab2-app .filter-chips button.active {
    height: 36px;
    min-height: 36px;
    max-height: 36px;
    padding: 0 13px;
    transform: none;
    outline: none;
}

body.lab2-app .filter-chips button span {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: auto;
    min-width: 24px;
    height: 18px;
    min-height: 18px;
    max-height: 18px;
    padding: 0 7px;
    line-height: 18px;
    box-sizing: border-box;
}

/* ============================================================
   LAB2 v0.10 — posição vertical estável com poucos resultados
   ============================================================
   A área principal é uma grelha com altura mínima. Sem estas regras,
   os rows automáticos podiam esticar para ocupar o espaço livre quando
   um filtro devolvia poucos ou zero resultados, afastando o intro,
   filtros, contador e conteúdo uns dos outros.
 */
body.lab2-app .lab-main {
    align-content: start;
    grid-auto-rows: max-content;
}

body.lab2-app .lab-main > * {
    align-self: start;
    min-height: 0;
}

/* ============================================================
   LAB2 v0.11 — filtros compactos e paginação de trabalho
   ============================================================ */
body.lab2-app .lab-main {
    gap: 10px;
}

body.lab2-app .work-intro {
    margin-bottom: 0;
}

body.lab2-app .work-filter-row {
    min-width: 0;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px 16px;
    margin: 0;
}

body.lab2-app .work-filter-row .filter-chips {
    flex: 0 0 auto;
    margin: 0;
}

body.lab2-app .work-filter-row .result-line {
    flex: 1 1 260px;
    margin: 0;
    color: var(--text-soft);
    font-size: 12px;
    font-weight: 750;
    white-space: nowrap;
}

body.lab2-app .lead-work-grid,
body.lab2-app .work-kanban {
    margin-top: 0;
}

body.lab2-app .work-pagination {
    min-height: 42px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 8px;
    margin: 2px 0 10px;
}

body.lab2-app .work-pagination button {
    min-width: 38px;
    min-height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 12px;
    color: var(--text);
    background: rgba(255,255,255,.78);
    border: 1px solid var(--line);
    border-radius: 999px;
    font-family: inherit;
    font-size: 12px;
    font-weight: 850;
    box-shadow: 0 8px 20px rgba(34,77,112,.05);
    cursor: pointer;
    transition: border-color .16s ease, background .16s ease, color .16s ease, box-shadow .16s ease;
}

body.lab2-app .work-pagination button:hover:not(:disabled),
body.lab2-app .work-pagination button.active {
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    border-color: transparent;
    box-shadow: 0 9px 22px color-mix(in srgb, var(--accent) 18%, transparent);
}

body.lab2-app .work-pagination button:disabled {
    opacity: .38;
    cursor: default;
}

body.lab2-app .work-pagination-pages {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

body.lab2-app .work-pagination > span {
    padding: 0 4px;
    color: var(--text-soft);
    font-size: 12px;
    font-weight: 750;
}

@media (max-width: 700px) {
    body.lab2-app .work-filter-row {
        align-items: flex-start;
    }

    body.lab2-app .work-filter-row .result-line {
        flex-basis: 100%;
        white-space: normal;
    }
}

/* ============================================================
   LAB2 v0.12 — filtros mais pequenos e discretos
   Mantém a geometria estável em todos os estados.
   ============================================================ */
body.lab2-app .filter-chips {
    gap: 7px;
}

body.lab2-app .filter-chips button,
body.lab2-app .filter-chips button:hover,
body.lab2-app .filter-chips button:focus,
body.lab2-app .filter-chips button:focus-visible,
body.lab2-app .filter-chips button.active {
    height: 32px;
    min-height: 32px;
    max-height: 32px;
    padding: 0 10px;
    gap: 6px;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: -0.01em;
}

body.lab2-app .filter-chips button span {
    min-width: 20px;
    height: 16px;
    min-height: 16px;
    max-height: 16px;
    padding: 0 6px;
    font-size: 10px;
    line-height: 16px;
}

/* LAB2 v0.13 — ficha de curso, tentativas clicáveis e cartões de Leads refinados. */

/* LAB2 v0.14 — nome do formando mais legível nos cartões de Leads. */
body.lab2-app .lead-card .card-title-line > strong {
    font-size: 15px;
    line-height: 1.25;
    letter-spacing: -0.1px;
}

/* ============================================================
   LAB2 v0.15 — contactos, ações e marcação temporária das Leads
   ============================================================ */
body.lab2-app .lead-card {
    padding-left: 24px;
}

body.lab2-app .lead-contact-list {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    gap: 16px;
    min-width: 0;
    margin-top: 2px;
    flex-wrap: wrap;
}

body.lab2-app .lead-contact-link {
    min-width: 0;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 0;
    color: #5e7487;
    background: transparent;
    border: 0;
    font: inherit;
    font-size: 12px;
    line-height: 1.3;
    text-decoration: none;
    cursor: pointer;
    transition: color .16s ease, transform .16s ease;
}

body.lab2-app .lead-contact-link span:last-child {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

body.lab2-app .lead-contact-link:hover,
body.lab2-app .lead-contact-link:focus-visible {
    color: var(--text);
    transform: translateY(-1px);
    outline: none;
}

body.lab2-app .lead-contact-link.is-disabled {
    opacity: .48;
    cursor: default;
    transform: none;
}

body.lab2-app .ui-action-icon {
    flex: 0 0 auto;
    width: 19px;
    height: 19px;
    display: inline-grid;
    place-items: center;
    border-radius: 6px;
    background: color-mix(in srgb, currentColor 11%, white);
}

body.lab2-app .ui-action-icon svg {
    width: 13px;
    height: 13px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.9;
    stroke-linecap: round;
    stroke-linejoin: round;
}

body.lab2-app .icon-phone { color: #0f8ed8; }
body.lab2-app .icon-mail { color: #7a5ce1; }
body.lab2-app .icon-whatsapp { color: #07945d; }
body.lab2-app .icon-open { color: #6b64d8; }
body.lab2-app .icon-check { color: #078252; }

body.lab2-app .lead-card-footer {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: minmax(105px, 1fr) auto minmax(105px, 1fr);
    align-items: center;
    gap: 10px;
    min-width: 0;
    margin-top: 2px;
}

body.lab2-app .lead-primary-actions {
    justify-self: center;
    justify-content: center;
    flex-wrap: nowrap;
}

body.lab2-app .lead-primary-actions a {
    gap: 6px;
}

body.lab2-app .lead-primary-actions .action-whatsapp .ui-action-icon {
    background: rgba(7, 148, 93, .11);
}

body.lab2-app .lead-primary-actions .action-open .ui-action-icon {
    background: rgba(107, 100, 216, .11);
}

body.lab2-app .lead-primary-actions .primary-action .ui-action-icon {
    color: #fff;
    background: rgba(255,255,255,.18);
}

body.lab2-app .lead-primary-actions a:hover .ui-action-icon {
    color: #fff;
    background: rgba(255,255,255,.18);
}

body.lab2-app .lead-treated-toggle {
    justify-self: start;
    min-height: 34px;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 0 11px;
    color: #087a50;
    background: rgba(22, 184, 120, .09);
    border: 1px solid rgba(22, 184, 120, .24);
    border-radius: 10px;
    font-family: inherit;
    font-size: 12px;
    font-weight: 850;
    cursor: pointer;
    transition: transform .16s ease, background .16s ease, border-color .16s ease, box-shadow .16s ease;
}

body.lab2-app .lead-treated-toggle:hover,
body.lab2-app .lead-treated-toggle:focus-visible,
body.lab2-app .lead-treated-toggle.active {
    color: #fff;
    background: linear-gradient(135deg, #13a66d, #38c98b);
    border-color: transparent;
    box-shadow: 0 8px 20px rgba(13, 130, 82, .18);
    outline: none;
}

body.lab2-app .lead-treated-toggle:hover { transform: translateY(-1px); }
body.lab2-app .lead-treated-toggle.active .ui-action-icon,
body.lab2-app .lead-treated-toggle:hover .ui-action-icon {
    color: #fff;
    background: rgba(255,255,255,.18);
}

body.lab2-app .lead-card.is-treated {
    background:
        linear-gradient(135deg, rgba(238, 255, 247, .98), rgba(220, 250, 236, .90));
    border-color: rgba(20, 161, 102, .38);
    box-shadow: 0 15px 34px rgba(20, 140, 92, .12);
}

body.lab2-app .lead-card.is-treated::before {
    width: 6px;
    opacity: 1;
    background: linear-gradient(180deg, #0f9b63, #48d79a);
}

body.lab2-app .lead-card.is-treated:hover {
    background:
        linear-gradient(135deg, rgba(242, 255, 249, 1), rgba(214, 250, 233, .96));
    border-color: rgba(15, 155, 99, .52);
}

/* Modal de email reutilizado da ficha do curso, adaptado ao LAB2. */
body.lab2-app .course-email-modal {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: none;
    color: var(--text);
}
body.lab2-app .course-email-modal.show { display: block; }
body.lab2-app .course-email-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(20, 36, 55, .48);
    backdrop-filter: blur(4px);
}
body.lab2-app .course-email-dialog {
    position: relative;
    width: min(1120px, calc(100vw - 28px));
    max-height: calc(100vh - 32px);
    overflow: auto;
    margin: 16px auto;
    background: #fff;
    border: 1px solid rgba(25,91,139,.16);
    border-radius: 18px;
    box-shadow: 0 28px 80px rgba(24, 59, 88, .28);
}
body.lab2-app .course-email-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    padding: 18px 20px 12px;
    border-bottom: 1px solid rgba(25,91,139,.12);
}
body.lab2-app .course-email-header h2 {
    margin: 0 0 4px;
    color: var(--text);
    font-size: 1.15rem;
}
body.lab2-app .course-email-header small,
body.lab2-app .course-email-feedback,
body.lab2-app .course-email-preview-title small,
body.lab2-app .course-email-editor-toolbar .form-hint,
body.lab2-app .course-email-form .form-hint { color: var(--text-soft); }
body.lab2-app .course-email-close {
    width: 34px;
    height: 34px;
    border: 0;
    border-radius: 50%;
    color: #6f8292;
    background: #eef6fb;
    font-size: 1.35rem;
    line-height: 1;
    cursor: pointer;
}
body.lab2-app .course-email-close:hover { color: #b4233c; }
body.lab2-app .course-email-form {
    padding: 18px 20px;
    border-bottom: 1px solid rgba(25,91,139,.12);
}
body.lab2-app .course-email-form .form-row {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 12px;
}
body.lab2-app .course-email-form .course-email-subject-row { grid-template-columns: 1fr; }
body.lab2-app .course-email-form .form-group { display: grid; gap: 6px; }
body.lab2-app .course-email-form label {
    color: #4f6679;
    font-size: .78rem;
    font-weight: 800;
}
body.lab2-app .course-email-form .form-control,
body.lab2-app .course-email-editor-toolbar .form-control {
    width: 100%;
    min-height: 40px;
    padding: 8px 11px;
    color: var(--text);
    background: #fafdff;
    border: 1px solid rgba(25,91,139,.18);
    border-radius: 10px;
    font: inherit;
}
body.lab2-app .course-email-form .form-control:focus,
body.lab2-app .course-email-editor-toolbar .form-control:focus {
    border-color: var(--accent);
    outline: 3px solid color-mix(in srgb, var(--accent) 14%, transparent);
}
body.lab2-app .course-email-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}
body.lab2-app .course-email-modal .btn {
    min-height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 13px;
    border: 1px solid rgba(25,91,139,.18);
    border-radius: 10px;
    color: var(--text);
    background: #fff;
    font-family: inherit;
    font-weight: 850;
    cursor: pointer;
}
body.lab2-app .course-email-modal .btn-primary {
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    border-color: transparent;
}
body.lab2-app .course-email-modal .btn-sm { min-height: 34px; font-size: .8rem; }
body.lab2-app .course-email-form .form-hint {
    margin-top: 12px;
    font-size: .77rem;
    line-height: 1.45;
}
body.lab2-app .course-email-feedback { font-size: .84rem; }
body.lab2-app .course-email-feedback.ok { color: #04784e; font-weight: 700; }
body.lab2-app .course-email-feedback.erro { color: #b4233c; font-weight: 700; }
body.lab2-app .course-email-feedback.aviso { color: #a16207; font-weight: 700; }
body.lab2-app .course-email-source { padding: 10px 20px 0; font-size: .78rem; color: var(--text-soft); }
body.lab2-app .course-email-preview-wrap { padding: 14px 20px 24px; }
body.lab2-app .course-email-preview-title {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 8px;
}
body.lab2-app .course-email-preview-title span { color: var(--text); font-weight: 800; }
body.lab2-app .course-email-editor-toolbar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    padding: 10px 12px;
    margin-bottom: 10px;
    border: 1px solid rgba(25,91,139,.14);
    border-radius: 12px;
    background: #f7fbff;
}
body.lab2-app .course-email-editor-toolbar .form-hint { margin-left: auto; font-size: .76rem; }
body.lab2-app .course-email-block-select { max-width: 220px; }
body.lab2-app .course-email-greeting-preview {
    padding: 18px 22px 10px;
    background: #fff;
    border: 1px solid rgba(25,91,139,.16);
    border-bottom: 0;
    border-radius: 12px 12px 0 0;
    font-size: 1rem;
    line-height: 1.5;
}
body.lab2-app .course-email-greeting-preview:empty { display: none; }
body.lab2-app .course-email-preview {
    min-height: 430px;
    max-height: 68vh;
    overflow: auto;
    padding: 18px;
    background: #fff;
    border: 1px solid rgba(25,91,139,.16);
    border-radius: 12px;
    line-height: 1.5;
    cursor: text;
}
body.lab2-app .course-email-greeting-preview + .course-email-preview {
    border-top-left-radius: 0;
    border-top-right-radius: 0;
}
body.lab2-app .course-email-preview:focus {
    outline: 3px solid color-mix(in srgb, var(--accent) 14%, transparent);
}

@media (max-width: 760px) {
    body.lab2-app .lead-card-footer {
        grid-template-columns: 1fr;
        justify-items: start;
    }
    body.lab2-app .lead-primary-actions {
        justify-self: start;
        flex-wrap: wrap;
    }
    body.lab2-app .lead-footer-balance { display: none; }
    body.lab2-app .course-email-form .form-row { grid-template-columns: 1fr; }
    body.lab2-app .course-email-dialog { width: calc(100vw - 16px); margin: 8px auto; }
    body.lab2-app .course-email-header,
    body.lab2-app .course-email-form,
    body.lab2-app .course-email-preview-wrap { padding-left: 14px; padding-right: 14px; }
    body.lab2-app .course-email-preview { min-height: 360px; max-height: 62vh; }
    body.lab2-app .course-email-editor-toolbar .form-hint { width: 100%; margin-left: 0; }
}

/* ============================================================
   LAB2 v0.16 — informação original do pedido WebTop nas Leads
   ============================================================ */
body.lab2-app .lead-intake-info {
    grid-column: 1 / -1;
    display: grid;
    gap: 8px;
    min-width: 0;
    padding: 9px 10px;
    background: linear-gradient(135deg, rgba(245,250,255,.88), rgba(250,247,255,.78));
    border: 1px solid rgba(64, 108, 151, .12);
    border-radius: 11px;
}

body.lab2-app .lead-intake-facts {
    display: flex;
    align-items: stretch;
    gap: 7px;
    flex-wrap: wrap;
}

body.lab2-app .lead-intake-fact {
    min-width: 0;
    display: grid;
    gap: 2px;
    padding: 6px 8px;
    color: var(--text);
    background: rgba(255,255,255,.72);
    border: 1px solid rgba(25,91,139,.10);
    border-radius: 8px;
}

body.lab2-app .lead-intake-fact small,
body.lab2-app .lead-intake-message small {
    margin: 0;
    color: #73879a;
    font-size: 9px;
    font-weight: 900;
    line-height: 1.15;
    letter-spacing: .55px;
    text-transform: uppercase;
}

body.lab2-app .lead-intake-fact strong {
    color: #26394c;
    font-size: 11px;
    font-weight: 800;
    line-height: 1.25;
}

body.lab2-app .lead-intake-message {
    min-width: 0;
    display: grid;
    gap: 4px;
}

body.lab2-app .lead-intake-message-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

body.lab2-app .lead-intake-message-head button {
    padding: 0;
    color: var(--accent);
    background: transparent;
    border: 0;
    font-family: inherit;
    font-size: 10px;
    font-weight: 850;
    cursor: pointer;
}

body.lab2-app .lead-intake-message-head button:hover,
body.lab2-app .lead-intake-message-head button:focus-visible {
    color: #087ba8;
    text-decoration: underline;
    outline: none;
}

body.lab2-app .lead-intake-message p {
    margin: 0;
    color: #50677b;
    font-size: 11px;
    line-height: 1.4;
    white-space: pre-line;
}

body.lab2-app .lead-intake-message.is-collapsible:not(.is-expanded) p {
    display: -webkit-box;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    white-space: normal;
}

body.lab2-app .lead-card.is-treated .lead-intake-info {
    background: rgba(255,255,255,.57);
    border-color: rgba(20,161,102,.16);
}

@media (max-width: 760px) {
    body.lab2-app .lead-intake-fact {
        flex: 1 1 130px;
    }
}

/* ============================================================
   LAB2 v0.17 — modalidade e horário integrados no bloco do curso
   ============================================================ */
body.lab2-app .course-card-link .lead-course-heading {
    display: flex;
    align-items: center;
    gap: 7px;
    min-width: 0;
}

body.lab2-app .course-card-link .lead-course-label {
    color: var(--muted);
    font-size: 10px;
    font-weight: 900;
    line-height: 1;
    letter-spacing: .7px;
    text-transform: uppercase;
}

body.lab2-app .course-card-link .lead-course-modality {
    display: inline-flex;
    align-items: center;
    min-height: 18px;
    padding: 0 7px;
    color: #6d4bc3;
    background: rgba(122, 92, 225, .10);
    border: 1px solid rgba(122, 92, 225, .20);
    border-radius: 999px;
    font-size: 9px;
    font-weight: 850;
    line-height: 1;
    letter-spacing: 0;
    text-transform: none;
}

body.lab2-app .course-card-link .lead-course-contact-time {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    width: max-content;
    max-width: 100%;
    margin-top: 2px;
    color: #667e91;
    font-size: 10.5px;
    font-weight: 750;
    line-height: 1.2;
    letter-spacing: 0;
    text-transform: none;
}

body.lab2-app .course-card-link .lead-course-contact-time > span:last-child {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: inherit;
    font-size: inherit;
    font-weight: inherit;
    line-height: inherit;
    letter-spacing: 0;
    text-transform: none;
}

body.lab2-app .course-card-link .lead-course-contact-time .ui-action-icon {
    width: 16px;
    height: 16px;
    color: #d18412;
    background: rgba(246, 170, 50, .12);
    border-radius: 50%;
}

body.lab2-app .course-card-link .lead-course-contact-time .ui-action-icon svg {
    width: 11px;
    height: 11px;
    stroke-width: 1.9;
}

body.lab2-app .icon-clock { color: #d18412; }

/* ============================================================
   LAB2 v0.18 — contactos mais altos e cartões de Leads compactos
   ============================================================ */
body.lab2-app .lead-card {
    grid-template-columns: minmax(0, 1fr) minmax(250px, 38%);
    grid-template-areas:
        "person course"
        "contacts course"
        "intake intake"
        "footer footer";
    align-items: start;
    column-gap: 14px;
    row-gap: 7px;
}

body.lab2-app .lead-card > .person-top {
    grid-area: person;
    align-self: start;
}

body.lab2-app .lead-card > .course-card-link {
    grid-area: course;
    align-self: start;
    margin: 0;
}

body.lab2-app .lead-card > .lead-contact-list {
    grid-area: contacts;
    grid-column: auto;
    align-self: start;
    margin-top: -1px;
    gap: 14px;
}

body.lab2-app .lead-card > .lead-intake-info {
    grid-area: intake;
    grid-column: auto;
}

body.lab2-app .lead-card > .lead-card-footer {
    grid-area: footer;
    grid-column: auto;
}

@media (max-width: 620px) {
    body.lab2-app .lead-card {
        grid-template-columns: 1fr;
        grid-template-areas:
            "person"
            "contacts"
            "course"
            "intake"
            "footer";
        column-gap: 0;
    }
}

/* ============================================================
   LAB2 v0.19 — cartões de Leads mais equilibrados e compactos
   ============================================================ */
body.lab2-app .lead-card {
    row-gap: 5px;
}

body.lab2-app .lead-card > .lead-contact-list {
    margin-top: -3px;
    gap: 12px;
}

body.lab2-app .lead-intake-info {
    width: 100%;
    max-width: none;
    box-sizing: border-box;
}

body.lab2-app .lead-intake-info.is-compact {
    min-height: 0;
    padding: 7px 10px;
}

body.lab2-app .lead-intake-message.is-compact {
    display: flex;
    align-items: baseline;
    gap: 8px;
}

body.lab2-app .lead-intake-message.is-compact .lead-intake-message-head {
    flex: 0 0 auto;
    display: block;
}

body.lab2-app .lead-intake-message.is-compact p {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

body.lab2-app .lead-card-footer {
    margin-top: 1px;
}

body.lab2-app .lead-primary-actions .action-open[title] {
    cursor: pointer;
}

@media (max-width: 760px) {
    body.lab2-app .lead-intake-message.is-compact {
        align-items: flex-start;
        flex-direction: column;
        gap: 3px;
    }

    body.lab2-app .lead-intake-message.is-compact p {
        white-space: normal;
    }
}

/* ============================================================
   LAB2 v0.20 — informação WebTop a toda a largura e filtros alinhados
   ============================================================ */
body.lab2-app .lead-card > .lead-intake-info {
    grid-area: intake;
    grid-column: 1 / -1;
    width: 100%;
    min-width: 0;
    max-width: none;
    justify-self: stretch;
    align-self: stretch;
    box-sizing: border-box;
}

body.lab2-app .work-filter-row .filter-chips {
    margin-left: 3px;
}

@media (max-width: 620px) {
    body.lab2-app .work-filter-row .filter-chips {
        margin-left: 0;
    }
}

/* LAB2 v0.21 — fotografia real do utilizador na topbar */
body.lab2-app .profile img {
    display: block;
    width: 30px;
    height: 30px;
    flex: 0 0 30px;
    object-fit: cover;
    object-position: center;
    border: 1px solid rgba(15, 142, 216, .20);
    border-radius: 999px;
    background: #eef8fc;
    box-shadow: 0 2px 8px rgba(22, 93, 148, .10);
}

/* LAB2 v0.24 — Oportunidades: três colunas, com atrasadas + hoje */
body.lab2-app .opportunity-overview .lane {
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-height: 0;
}

body.lab2-app .opportunity-overview .lane h3 {
    margin: 0;
}

body.lab2-app .lane-heading-button {
    width: 100%;
    min-height: 28px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 0;
    color: var(--text);
    background: transparent;
    border: 0;
    font: inherit;
    text-align: left;
    cursor: pointer;
}

body.lab2-app .lane-heading-button > span:first-child {
    font-size: 12px;
    font-weight: 900;
    letter-spacing: .08em;
    text-transform: uppercase;
}

body.lab2-app .lane-heading-button > span:last-child {
    min-width: 26px;
    min-height: 24px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 7px;
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    border-radius: 999px;
    font-size: 12px;
    font-weight: 900;
    transition: transform .16s ease, box-shadow .16s ease;
}

body.lab2-app .lane-danger .lane-heading-button > span:last-child {
    background: linear-gradient(135deg, var(--danger), #ff9f7a);
}

body.lab2-app .lane-priority .lane-heading-button > span:last-child {
    background: linear-gradient(135deg, var(--danger), var(--warn));
}
body.lab2-app .lane-good .lane-heading-button > span:last-child {
    background: linear-gradient(135deg, var(--ok), var(--accent-2));
}
body.lab2-app .lane-warn .lane-heading-button > span:last-child {
    background: linear-gradient(135deg, var(--warn), var(--accent-3));
}

body.lab2-app .lane-heading-button:hover > span:last-child,
body.lab2-app .lane-heading-button:focus-visible > span:last-child {
    transform: scale(1.06);
    box-shadow: 0 7px 16px color-mix(in srgb, var(--accent) 20%, transparent);
}

body.lab2-app .lane-more {
    width: 100%;
    min-height: 36px;
    margin-top: 2px;
    padding: 7px 10px;
    color: var(--accent-deep, #08759b);
    background: color-mix(in srgb, var(--accent) 8%, white);
    border: 1px dashed color-mix(in srgb, var(--accent) 30%, var(--line));
    border-radius: 12px;
    font-family: inherit;
    font-size: 12px;
    font-weight: 850;
    cursor: pointer;
    transition: background .16s ease, border-color .16s ease, transform .16s ease;
}

body.lab2-app .lane-more:hover,
body.lab2-app .lane-more:focus-visible {
    background: color-mix(in srgb, var(--accent) 14%, white);
    border-color: color-mix(in srgb, var(--accent) 52%, var(--line));
    transform: translateY(-1px);
    outline: none;
}

body.lab2-app .lane-more.is-subtle {
    color: var(--text-soft);
    background: rgba(255,255,255,.58);
    border-style: solid;
}

body.lab2-app .opportunity-focus {
    display: grid;
    gap: 12px;
    min-width: 0;
}

body.lab2-app .opportunity-focus-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 15px 18px;
    background: rgba(255,255,255,.7);
    border: 1px solid var(--line);
    border-radius: 16px;
    box-shadow: 0 10px 26px rgba(34,77,112,.06);
}

body.lab2-app .opportunity-focus-head .label {
    margin: 0 0 3px;
}

body.lab2-app .opportunity-focus-head h2 {
    display: flex;
    align-items: center;
    gap: 9px;
    margin: 0;
    font-size: 20px;
}

body.lab2-app .opportunity-focus-head h2 span {
    min-width: 28px;
    min-height: 25px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 8px;
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    border-radius: 999px;
    font-size: 12px;
}

body.lab2-app .opportunity-focus-head p:last-child {
    margin: 4px 0 0;
    color: var(--text-soft);
    font-size: 12px;
}

body.lab2-app .focus-back {
    flex: 0 0 auto;
    min-height: 36px;
    padding: 0 14px;
    color: var(--text);
    background: rgba(255,255,255,.88);
    border: 1px solid var(--line);
    border-radius: 999px;
    font-family: inherit;
    font-size: 12px;
    font-weight: 850;
    cursor: pointer;
    transition: border-color .16s ease, background .16s ease, transform .16s ease;
}

body.lab2-app .focus-back:hover,
body.lab2-app .focus-back:focus-visible {
    background: color-mix(in srgb, var(--accent) 8%, white);
    border-color: color-mix(in srgb, var(--accent) 35%, var(--line));
    transform: translateY(-1px);
    outline: none;
}

body.lab2-app .opportunity-focus-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    min-width: 0;
}

body.lab2-app .opportunity-focus-grid > .empty {
    grid-column: 1 / -1;
}

body.lab2-app .opportunity-focus-grid .op-card {
    min-width: 0;
}

@media (max-width: 1180px) {
    body.lab2-app .opportunity-overview {
        grid-template-columns: repeat(2, minmax(240px, 1fr));
    }
}

@media (max-width: 820px) {
    body.lab2-app .opportunity-focus-grid {
        grid-template-columns: 1fr;
    }
    body.lab2-app .opportunity-focus-head {
        align-items: flex-start;
        flex-direction: column;
    }
}

@media (max-width: 760px) {
    body.lab2-app .opportunity-overview {
        grid-template-columns: 1fr;
    }
}

/* Neutraliza a regra antiga que transformava todos os spans do título em contadores. */
body.lab2-app .work-kanban .lane h3 .lane-heading-button > span:first-child {
    min-width: 0;
    min-height: 0;
    display: inline;
    padding: 0;
    color: var(--text);
    background: transparent;
    border-radius: 0;
    font-size: 12px;
}
body.lab2-app .work-kanban .lane h3 .lane-heading-button > span:last-child {
    min-width: 26px;
    min-height: 24px;
    display: inline-flex;
    padding: 0 7px;
    color: #fff;
    border-radius: 999px;
    font-size: 12px;
}

/* ============================================================
   LAB2 v0.25 — cartões de Oportunidades e consulta em modal
   ============================================================ */
body.lab2-app .op-card {
    display: grid;
    gap: 9px;
    padding: 14px 15px 13px 18px;
    cursor: pointer;
    outline: none;
}
body.lab2-app .op-card:focus-visible {
    border-color: color-mix(in srgb, var(--accent) 58%, transparent);
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent) 14%, transparent), 0 18px 42px rgba(28,93,146,.14);
}
body.lab2-app .op-card-head {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    align-items: center;
    gap: 9px;
    min-width: 0;
}
body.lab2-app .op-card-name {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 14px;
    line-height: 1.25;
}
body.lab2-app .op-email-indicator {
    width: 27px;
    height: 27px;
    display: inline-grid;
    place-items: center;
    border: 1px solid transparent;
    border-radius: 9px;
}
body.lab2-app .op-email-indicator .ui-action-icon { background: transparent; }
body.lab2-app .op-email-indicator.is-sent {
    color: #078252;
    background: rgba(19,166,109,.10);
    border-color: rgba(19,166,109,.24);
}
body.lab2-app .op-email-indicator.is-missing {
    color: #c43f58;
    background: rgba(222,75,103,.10);
    border-color: rgba(222,75,103,.23);
}
body.lab2-app .op-email-indicator.is-unavailable {
    color: #8a98a6;
    background: rgba(111,128,145,.08);
    border-color: rgba(111,128,145,.18);
}
body.lab2-app .op-followup-date {
    min-width: 108px;
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    gap: 6px;
    color: #61788b;
    font-size: 11px;
    font-weight: 850;
    text-align: right;
    white-space: nowrap;
}
body.lab2-app .op-followup-date .ui-action-icon,
body.lab2-app .op-modal-followup-date .ui-action-icon {
    width: 22px;
    height: 22px;
    border: 1px solid color-mix(in srgb, currentColor 22%, transparent);
    border-radius: 8px;
    background: color-mix(in srgb, currentColor 11%, white);
    box-shadow: 0 3px 9px color-mix(in srgb, currentColor 10%, transparent);
}
body.lab2-app .op-followup-date .ui-action-icon svg,
body.lab2-app .op-modal-followup-date .ui-action-icon svg {
    width: 13px;
    height: 13px;
}
body.lab2-app .op-followup-date.late,
body.lab2-app .op-modal-followup-date.late { color: #c13a50; }
body.lab2-app .op-followup-date.today,
body.lab2-app .op-modal-followup-date.today { color: #078252; }
body.lab2-app .op-followup-date.future,
body.lab2-app .op-modal-followup-date.future { color: #0f78b5; }
body.lab2-app .op-followup-date.nodate,
body.lab2-app .op-modal-followup-date.nodate { color: #aa6b05; }
body.lab2-app .op-course-link {
    width: 100%;
    display: grid;
    gap: 2px;
    padding: 8px 10px;
    color: var(--text);
    background: linear-gradient(135deg, rgba(15,142,216,.06), rgba(255,255,255,.72));
    border: 1px solid rgba(15,142,216,.14);
    border-radius: 11px;
    font-family: inherit;
    text-align: left;
    cursor: pointer;
    transition: border-color .16s ease, background .16s ease, transform .16s ease;
}
body.lab2-app .op-course-link:hover,
body.lab2-app .op-course-link:focus-visible {
    background: linear-gradient(135deg, rgba(15,142,216,.11), rgba(255,255,255,.9));
    border-color: rgba(15,142,216,.34);
    transform: translateY(-1px);
    outline: none;
}
body.lab2-app .op-course-link > span,
body.lab2-app .op-followup-task > span {
    color: #b56d00;
    font-size: 9px;
    font-weight: 900;
    letter-spacing: .09em;
    text-transform: uppercase;
}
body.lab2-app .op-course-link > strong {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 12px;
}
body.lab2-app .op-followup-task {
    min-width: 0;
    padding: 8px 10px;
    background: rgba(247,250,253,.84);
    border: 1px solid rgba(25,91,139,.10);
    border-radius: 11px;
}
body.lab2-app .op-followup-task p {
    display: -webkit-box;
    margin: 3px 0 0;
    overflow: hidden;
    color: var(--text-soft);
    font-size: 11px;
    line-height: 1.35;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}
body.lab2-app .op-card-actions {
    display: flex;
    justify-content: center;
    gap: 8px;
}
body.lab2-app .op-card-actions a {
    min-height: 32px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 0 11px;
    color: var(--text);
    background: rgba(255,255,255,.78);
    border: 1px solid var(--line);
    border-radius: 9px;
    font-size: 11px;
    font-weight: 850;
}
body.lab2-app .op-card-actions .primary-action {
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    border-color: transparent;
}
body.lab2-app .op-card-actions a:hover { transform: translateY(-1px); }
body.lab2-app .op-no-phone {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: #8b6470;
    font-size: 11px;
    font-weight: 750;
}
body.lab2-app .op-no-phone .ui-action-icon {
    width: 24px;
    height: 24px;
    color: #c06a55;
    background: rgba(230,119,82,.10);
}
body.lab2-app .op-card.is-treated {
    background: linear-gradient(135deg, rgba(238,255,247,.98), rgba(220,250,236,.90));
    border-color: rgba(20,161,102,.38);
    box-shadow: 0 15px 34px rgba(20,140,92,.12);
}
body.lab2-app .op-card.is-treated::before {
    width: 6px;
    opacity: 1;
    background: linear-gradient(180deg, #0f9b63, #48d79a);
}

body.has-opportunity-modal { overflow: hidden; }
body.lab2-app .opportunity-modal {
    position: fixed;
    inset: 0;
    z-index: 9200;
    display: grid;
    place-items: center;
    padding: 18px;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity .2s ease, visibility .2s ease;
}
body.lab2-app .opportunity-modal.is-open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}
body.lab2-app .opportunity-modal-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(22,39,58,.36);
    backdrop-filter: blur(9px) saturate(.85);
}
body.lab2-app .opportunity-modal-dialog {
    position: relative;
    width: min(1040px, calc(100vw - 36px));
    max-height: calc(100vh - 36px);
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
    overflow: hidden;
    background: rgba(248,252,255,.97);
    border: 1px solid rgba(255,255,255,.78);
    border-radius: 22px;
    box-shadow: 0 28px 90px rgba(18,51,78,.28);
    transform: translateY(12px) scale(.985);
    transition: transform .2s ease;
}
body.lab2-app .opportunity-modal.is-open .opportunity-modal-dialog { transform: translateY(0) scale(1); }
body.lab2-app .opportunity-modal-header {
    min-height: 70px;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    align-items: center;
    gap: 13px;
    padding: 12px 16px 12px 20px;
    background: rgba(255,255,255,.88);
    border-bottom: 1px solid var(--line);
}
body.lab2-app .opportunity-modal-heading { min-width: 0; grid-column: 1; }
body.lab2-app .opportunity-modal-header h2 { margin: 0; overflow: hidden; font-size: 20px; text-overflow: ellipsis; white-space: nowrap; }
body.lab2-app .opportunity-modal-header .label { margin: 0 0 2px; }
body.lab2-app .opportunity-modal-close,
body.lab2-app .opportunity-modal-back {
    min-height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text-soft);
    background: rgba(244,248,252,.9);
    border: 1px solid var(--line);
    border-radius: 10px;
    font-family: inherit;
    font-weight: 850;
}
body.lab2-app .opportunity-modal-close { width: 36px; grid-column: 3; padding: 0; font-size: 24px; }
body.lab2-app .opportunity-modal-back { grid-column: 2; padding: 0 12px; font-size: 11px; }
body.lab2-app .opportunity-modal-back[hidden] { display: none; }
body.lab2-app .opportunity-modal-body {
    min-height: 0;
    overflow: auto;
    padding: 18px 20px 20px;
}
body.lab2-app .op-modal-loading { padding: 70px 20px; color: var(--text-soft); text-align: center; }
body.lab2-app .op-modal-summary {
    display: grid;
    grid-template-columns: minmax(0, 1.15fr) minmax(260px, .9fr) minmax(220px, .7fr);
    gap: 12px;
    align-items: stretch;
}
body.lab2-app .op-modal-contact,
body.lab2-app .op-modal-course,
body.lab2-app .op-modal-email-state {
    min-width: 0;
    min-height: 84px;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 13px 14px;
    background: rgba(255,255,255,.76);
    border: 1px solid var(--line);
    border-radius: 15px;
}
body.lab2-app .op-modal-avatar {
    width: 45px;
    height: 45px;
    flex: 0 0 45px;
    display: grid;
    place-items: center;
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    border-radius: 14px;
    font-weight: 900;
}
body.lab2-app .op-modal-contact > div { min-width: 0; }
body.lab2-app .op-modal-contact > div > strong { display: block; font-size: 15px; }
body.lab2-app .op-modal-contact-links { display: flex; flex-wrap: wrap; gap: 8px 13px; margin-top: 6px; }
body.lab2-app .op-modal-contact-links a,
body.lab2-app .op-modal-contact-links > span {
    min-width: 0;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--text-soft);
    font-size: 11px;
}
body.lab2-app .op-modal-contact-warning {
    width: 100%;
    color: #8b6470 !important;
    font-weight: 750;
}
body.lab2-app .op-modal-contact-warning .ui-action-icon {
    width: 25px;
    height: 25px;
    flex: 0 0 25px;
    color: #c06a55;
    background: rgba(230,119,82,.10);
}
body.lab2-app .op-modal-course {
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    color: var(--text);
    font-family: inherit;
    text-align: left;
    cursor: pointer;
}
body.lab2-app .op-modal-course > span { color: #b56d00; font-size: 9px; font-weight: 900; text-transform: uppercase; }
body.lab2-app .op-modal-course > strong { font-size: 12px; }
body.lab2-app .op-modal-course > small { color: var(--text-soft); font-size: 10px; }
body.lab2-app .op-modal-email-state .ui-action-icon { width: 34px; height: 34px; border-radius: 11px; }
body.lab2-app .op-modal-email-state > div { display: grid; gap: 3px; }
body.lab2-app .op-modal-email-state strong { font-size: 12px; }
body.lab2-app .op-modal-email-state span { color: var(--text-soft); font-size: 10px; }
body.lab2-app .op-modal-email-state.is-sent { border-color: rgba(19,166,109,.26); background: rgba(235,253,244,.86); }
body.lab2-app .op-modal-email-state.is-missing { border-color: rgba(222,75,103,.24); background: rgba(255,242,245,.86); }
body.lab2-app .op-modal-email-state.is-unavailable { opacity: .68; }
body.lab2-app .op-modal-followup,
body.lab2-app .op-modal-imported {
    margin-top: 13px;
    padding: 15px 16px;
    background: rgba(255,255,255,.75);
    border: 1px solid var(--line);
    border-radius: 15px;
}
body.lab2-app .op-modal-followup header { display: flex; justify-content: space-between; gap: 16px; align-items: center; }
body.lab2-app .op-modal-followup header span,
body.lab2-app .op-modal-imported > span { color: #b56d00; font-size: 10px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
body.lab2-app .op-modal-followup time {
    color: var(--text-soft);
    font-size: 11px;
    font-weight: 850;
}
body.lab2-app .op-modal-followup-date {
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    gap: 7px;
    white-space: nowrap;
}
body.lab2-app .op-modal-followup p { margin: 9px 0 0; font-size: 14px; line-height: 1.5; }
body.lab2-app .op-modal-imported p { margin: 8px 0 0; color: var(--text-soft); line-height: 1.5; white-space: pre-wrap; }
body.lab2-app .op-modal-imported details { margin-top: 10px; }
body.lab2-app .op-modal-imported summary { color: var(--accent-deep, #08759b); cursor: pointer; font-weight: 800; }
body.lab2-app .op-modal-actions {
    display: grid;
    grid-template-columns: minmax(150px, 1fr) auto;
    align-items: center;
    gap: 14px;
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px solid var(--line);
}
body.lab2-app .op-modal-actions > div { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
body.lab2-app .op-modal-actions a, body.lab2-app .op-modal-actions button {
    min-height: 36px;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 0 12px;
    color: var(--text);
    background: rgba(255,255,255,.82);
    border: 1px solid var(--line);
    border-radius: 10px;
    font-family: inherit;
    font-size: 11px;
    font-weight: 850;
}
body.lab2-app .op-modal-actions .primary-action { color: #fff; background: linear-gradient(135deg, var(--accent), var(--accent-2)); border-color: transparent; }
body.lab2-app .op-treated-toggle { justify-self: start; color: #087a50 !important; background: rgba(22,184,120,.09) !important; border-color: rgba(22,184,120,.24) !important; }
body.lab2-app .op-treated-toggle.active,
body.lab2-app .op-treated-toggle:hover { color: #fff !important; background: linear-gradient(135deg, #13a66d, #38c98b) !important; border-color: transparent !important; }

@media (max-width: 900px) {
    body.lab2-app .op-modal-summary { grid-template-columns: 1fr 1fr; }
    body.lab2-app .op-modal-email-state { grid-column: 1 / -1; }
}
@media (max-width: 650px) {
    body.lab2-app .op-card-head { grid-template-columns: minmax(0,1fr) auto; }
    body.lab2-app .op-followup-date { grid-column: 1 / -1; justify-content: flex-start; text-align: left; }
    body.lab2-app .opportunity-modal { padding: 8px; }
    body.lab2-app .opportunity-modal-dialog { width: calc(100vw - 16px); max-height: calc(100vh - 16px); border-radius: 16px; }
    body.lab2-app .opportunity-modal-header { grid-template-columns: minmax(0,1fr) auto; }
    body.lab2-app .opportunity-modal-heading { grid-column: 1; grid-row: 1; }
    body.lab2-app .opportunity-modal-close { grid-column: 2; grid-row: 1; }
    body.lab2-app .opportunity-modal-back { grid-column: 1 / -1; grid-row: 2; justify-self: start; }
    body.lab2-app .op-modal-summary { grid-template-columns: 1fr; }
    body.lab2-app .op-modal-email-state { grid-column: auto; }
    body.lab2-app .op-modal-actions { grid-template-columns: 1fr; }
    body.lab2-app .op-modal-actions > div { justify-content: flex-start; }
    
}

/* ============================================================
   LAB2 v0.27 — contactos normalizados e validação visual
   ============================================================ */
body.lab2-app .op-modal-phone-group {
    min-width: 0;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

body.lab2-app .op-modal-phone-group > a {
    min-width: 0;
}

body.lab2-app .op-copy-phone {
    width: 26px;
    height: 26px;
    flex: 0 0 26px;
    display: inline-grid;
    place-items: center;
    padding: 0;
    color: #0f78b5;
    background: rgba(15,142,216,.07);
    border: 1px solid rgba(15,142,216,.16);
    border-radius: 8px;
    cursor: pointer;
    transition: background .16s ease, border-color .16s ease, transform .16s ease;
}

body.lab2-app .op-copy-phone:hover,
body.lab2-app .op-copy-phone:focus-visible {
    background: rgba(15,142,216,.13);
    border-color: rgba(15,142,216,.34);
    transform: translateY(-1px);
    outline: none;
}

body.lab2-app .op-copy-phone .ui-action-icon {
    width: 16px;
    height: 16px;
    padding: 0;
    background: transparent;
}

body.lab2-app .op-modal-email-link {
    min-width: 0;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 0;
    color: var(--text-soft);
    background: transparent;
    border: 0;
    font-family: inherit;
    font-size: 11px;
    text-align: left;
    cursor: pointer;
}

body.lab2-app .op-modal-email-link span:last-child {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

body.lab2-app .op-modal-email-link:hover,
body.lab2-app .op-modal-email-link:focus-visible {
    color: var(--accent-deep, #08759b);
    outline: none;
}

body.lab2-app .op-modal-latest-interaction {
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

@media (max-width: 650px) {
    body.lab2-app .op-modal-contact-links {
        align-items: flex-start;
        flex-direction: column;
    }
}

/* LAB2 v0.27 — aviso de contacto incompleto */
body.lab2-app .op-modal-phone-group.has-warning > a {
    color: #9a5b00;
}
body.lab2-app .op-phone-warning {
    display: inline-grid;
    place-items: center;
    width: 24px;
    height: 24px;
    color: #d97706;
    background: #fff7df;
    border: 1px solid #f3c96d;
    border-radius: 8px;
    flex: 0 0 auto;
}
body.lab2-app .op-phone-warning .ui-action-icon {
    width: 15px;
    height: 15px;
}
body.lab2-app .op-phone-warning .ui-action-icon svg {
    stroke-width: 2;
}

/* ============================================================
   LAB2 v0.28 — retoques de clareza no modal de oportunidades
   ============================================================ */
body.lab2-app .opportunity-modal-close:hover,
body.lab2-app .opportunity-modal-close:focus-visible {
    color: #a33f52;
    background: rgba(222,75,103,.08);
    border-color: rgba(222,75,103,.18);
    outline: none;
}

/* ============================================================
   LAB2 v0.29 — toast acima do modal e fora do blur
   ============================================================ */
body.lab2-app .toast,
body.lab2-app.has-opportunity-modal .toast {
    position: fixed;
    z-index: 9800;
    isolation: isolate;
    filter: none;
    -webkit-filter: none;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    transform: translateZ(0);
}

/* ============================================================
   LAB2 v0.30 — cartões estáveis na vista focada de Oportunidades
   ============================================================ */
body.lab2-app .opportunity-focus-grid .op-card {
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
    width: 100%;
}

body.lab2-app .opportunity-focus-grid .op-card > * {
    min-width: 0;
    width: 100%;
}

body.lab2-app .opportunity-focus-grid .op-card-head {
    grid-template-columns: minmax(0, 1fr) auto auto;
}

body.lab2-app .opportunity-focus-grid .op-card-actions {
    width: auto;
    justify-self: stretch;
    justify-content: center;
}

/* ============================================================
   LAB2 v0.32 — sincronização de emails enviados
   ============================================================ */

body.lab2-app .op-email-sync-btn .ui-action-icon {
    width: 24px;
    height: 24px;
    color: #0b9fc2;
    background: rgba(14, 172, 204, .10);
}

body.lab2-app .op-email-sync-btn.is-loading .ui-action-icon {
    animation: lab2-email-sync-spin .9s linear infinite;
}

@keyframes lab2-email-sync-spin { to { transform: rotate(360deg); } }

/* LAB2 v0.33 — lógica de emails robusta; sem alterações visuais adicionais. */

/* LAB2 v0.34 — OAuth Microsoft novamente limitado ao envio; sem alterações visuais. */

/* ============================================================
   LAB2 v0.36 — recuperação pontual dos Itens Enviados do Outlook
   ============================================================ */

body.lab2-app .outlook-recovery-open .ui-action-icon {
    width: 24px;
    height: 24px;
    color: #6c55d9;
    background: rgba(108,85,217,.10);
}
body.has-outlook-recovery-modal { overflow: hidden; }
body.lab2-app .outlook-recovery-modal {
    position: fixed;
    inset: 0;
    z-index: 14000;
    display: grid;
    place-items: center;
    padding: 20px;
}
body.lab2-app .outlook-recovery-modal[hidden] { display: none; }
body.lab2-app .outlook-recovery-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(35,53,71,.42);
    backdrop-filter: blur(9px);
    -webkit-backdrop-filter: blur(9px);
}
body.lab2-app .outlook-recovery-dialog {
    position: relative;
    z-index: 1;
    width: min(700px, calc(100vw - 32px));
    overflow: hidden;
    background: rgba(248,252,255,.98);
    border: 1px solid rgba(255,255,255,.78);
    border-radius: 24px;
    box-shadow: 0 28px 80px rgba(27,56,84,.28);
    transform: translateY(12px) scale(.985);
    opacity: 0;
    transition: transform .18s ease, opacity .18s ease;
}
body.lab2-app .outlook-recovery-modal.is-open .outlook-recovery-dialog {
    transform: translateY(0) scale(1);
    opacity: 1;
}
body.lab2-app .outlook-recovery-dialog > header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 21px 24px 18px;
    background: rgba(255,255,255,.84);
    border-bottom: 1px solid var(--line);
}
body.lab2-app .outlook-recovery-dialog h2 { margin: 0; font-size: 21px; }
body.lab2-app .outlook-recovery-dialog .label { margin: 0 0 3px; }
body.lab2-app .outlook-recovery-close {
    width: 38px;
    height: 38px;
    display: grid;
    place-items: center;
    padding: 0;
    color: #5e7082;
    background: #f4f8fb;
    border: 1px solid var(--line);
    border-radius: 12px;
    font: 800 24px/1 inherit;
    cursor: pointer;
}
body.lab2-app .outlook-recovery-body { padding: 22px 24px 24px; }
body.lab2-app .outlook-recovery-body ol {
    margin: 0;
    padding-left: 22px;
    color: #53697c;
    font-size: 13px;
    line-height: 1.65;
}
body.lab2-app .outlook-recovery-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 18px;
    flex-wrap: wrap;
}
body.lab2-app .outlook-recovery-file {
    min-height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 15px;
    color: var(--text);
    background: white;
    border: 1px solid var(--line);
    border-radius: 999px;
    font-size: 12px;
    font-weight: 850;
    cursor: pointer;
}
body.lab2-app .outlook-recovery-file:hover { border-color: color-mix(in srgb, var(--accent) 42%, var(--line)); }
body.lab2-app .outlook-recovery-file input { position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0; }
body.lab2-app .outlook-recovery-note {
    margin: 14px 0 0;
    padding: 11px 13px;
    color: #61788b;
    background: rgba(49,157,200,.07);
    border: 1px solid rgba(49,157,200,.16);
    border-radius: 12px;
    font-size: 11px;
}
body.lab2-app .outlook-recovery-result {
    display: grid;
    gap: 5px;
    margin-top: 14px;
    padding: 12px 14px;
    border-radius: 13px;
    font-size: 12px;
}
body.lab2-app .outlook-recovery-result.is-loading { color: #325a76; background: #edf7fb; border: 1px solid #cae7f1; }
body.lab2-app .outlook-recovery-result.is-success { color: #08744e; background: #eaf9f2; border: 1px solid #bfe9d6; }
body.lab2-app .outlook-recovery-result.is-error { color: #a73a4e; background: #fff0f3; border: 1px solid #f1c2cc; }
body.lab2-app.has-outlook-recovery-modal .toast { z-index: 15000; }

@media (max-width: 680px) {
    body.lab2-app .outlook-recovery-modal { padding: 8px; }
    body.lab2-app .outlook-recovery-dialog { width: calc(100vw - 16px); border-radius: 17px; }
    body.lab2-app .outlook-recovery-dialog > header,
    body.lab2-app .outlook-recovery-body { padding-left: 16px; padding-right: 16px; }
    body.lab2-app .outlook-recovery-actions { align-items: stretch; flex-direction: column; }
    body.lab2-app .outlook-recovery-actions > * { width: 100%; }
}

/* LAB2 v0.37 — recuperação Outlook sempre visível nas Oportunidades */
body.lab2-app .work-actions .outlook-recovery-open {
    flex: 0 0 auto;
    visibility: visible !important;
    opacity: 1 !important;
}
body.lab2-app .work-actions .outlook-recovery-open span {
    display: inline !important;
    white-space: nowrap;
}

/* ============================================================
   LAB2 v0.41 — experiência móvel operacional
   A versão móvel mantém os mesmos dados e ações, mas reorganiza
   navegação, filtros, cartões, modais e pesquisa para toque.
   ============================================================ */
html { overflow-x: clip; }
body.lab2-app { overflow-x: hidden; }
body.lab2-app .menu-toggle svg {
    width: 20px;
    height: 20px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
}
body.lab2-app .menu-toggle span { display: none; }

@media (hover: none) {
    body.lab2-app .work-card:hover,
    body.lab2-app .lab-side nav button:hover,
    body.lab2-app .card-actions a:hover,
    body.lab2-app .card-actions button:hover,
    body.lab2-app .op-card-actions a:hover,
    body.lab2-app .lane-more:hover,
    body.lab2-app .focus-back:hover { transform: none; }
}

@media (max-width: 820px) {
    :root { --lab2-mobile-nav-h: 70px; --lab2-mobile-top-h: 58px; }
    body.lab2-app {
        min-width: 0;
        padding-bottom: calc(var(--lab2-mobile-nav-h) + env(safe-area-inset-bottom));
        -webkit-tap-highlight-color: transparent;
    }
    body.lab2-app.mobile-menu-open::before {
        content: "";
        position: fixed;
        inset: 0;
        z-index: 540;
        background: rgba(31, 52, 70, .18);
        backdrop-filter: blur(2px);
        pointer-events: none;
    }
    body.lab2-app .lab-shell { display: block; min-height: 100dvh; }

    /* Cabeçalho compacto + opções em popover. */
    body.lab2-app .lab-side,
    body.lab2-app .lab-side.open {
        position: sticky;
        inset: auto;
        top: 0;
        z-index: 600;
        width: 100%;
        height: auto;
        min-height: 0;
        display: block;
        padding: 0;
        overflow: visible;
        transform: none;
        background: rgba(249, 252, 255, .97);
        border-bottom: 1px solid #dce9f2;
        box-shadow: 0 8px 25px rgba(34, 77, 112, .08);
    }
    body.lab2-app .topbar-main {
        min-height: var(--lab2-mobile-top-h);
        display: grid;
        grid-template-columns: auto minmax(0, 1fr) auto;
        gap: 8px;
        align-items: center;
        padding: 6px 10px;
    }
    body.lab2-app .brand { grid-column: 1; min-width: 0; }
    body.lab2-app .brand img { width: 88px; }
    body.lab2-app .brand span { min-height: 21px; padding: 0 6px; font-size: 8px; }
    body.lab2-app .menu-toggle {
        grid-column: 3;
        display: inline-grid;
        place-items: center;
        width: 40px;
        min-width: 40px;
        height: 40px;
        min-height: 40px;
        padding: 0;
        color: #31566d;
        background: #f4f9fd;
        border: 1px solid #d7e6ef;
        border-radius: 12px;
    }
    body.lab2-app .topbar-actions {
        position: fixed;
        z-index: 700;
        top: calc(var(--lab2-mobile-top-h) + 8px + env(safe-area-inset-top));
        right: 10px;
        width: min(286px, calc(100vw - 20px));
        display: none;
        grid-template-columns: 1fr auto;
        gap: 9px;
        padding: 12px;
        white-space: normal;
        background: rgba(255,255,255,.98);
        border: 1px solid #d7e6ef;
        border-radius: 17px;
        box-shadow: 0 22px 60px rgba(25, 62, 91, .22);
    }
    body.lab2-app .lab-side.open .topbar-actions { display: grid; }
    body.lab2-app .topbar-actions .palette {
        display: flex !important;
        grid-column: 1 / -1;
        justify-content: flex-start;
        padding: 4px 2px 8px;
        border-bottom: 1px solid #e3edf4;
    }
    body.lab2-app .topbar-actions .portal-link,
    body.lab2-app .topbar-actions .logout-link {
        display: inline-flex !important;
        justify-content: center;
        min-height: 42px;
    }
    body.lab2-app .topbar-actions .portal-link { grid-column: 1; }
    body.lab2-app .topbar-actions .logout-link { grid-column: 2; }
    body.lab2-app .topbar-actions .profile {
        grid-column: 1 / -1;
        grid-row: 2;
        justify-self: stretch;
        justify-content: flex-start;
        min-height: 46px;
    }
    body.lab2-app .profile strong { display: block !important; }

    /* Navegação principal em barra inferior, sempre acessível. */
    body.lab2-app .lab-side nav {
        position: fixed;
        z-index: 650;
        left: 0;
        right: 0;
        bottom: 0;
        width: 100%;
        max-width: none;
        display: flex;
        justify-content: flex-start;
        gap: 2px;
        margin: 0;
        padding: 6px 7px calc(6px + env(safe-area-inset-bottom));
        overflow-x: auto !important;
        overflow-y: hidden;
        background: rgba(250,253,255,.97);
        border-top: 1px solid #d5e5ef;
        box-shadow: 0 -10px 30px rgba(28, 72, 105, .12);
        backdrop-filter: blur(18px);
        scroll-snap-type: x proximity;
        scrollbar-width: none;
    }
    body.lab2-app .lab-side nav::-webkit-scrollbar { display: none; }
    body.lab2-app .lab-side nav button {
        min-width: 72px;
        min-height: 54px;
        flex: 1 0 72px;
        display: flex;
        flex-direction: column;
        justify-content: center;
        gap: 3px;
        padding: 4px 6px;
        color: #60788a;
        background: transparent;
        border-color: transparent;
        border-radius: 11px;
        scroll-snap-align: center;
    }
    body.lab2-app .lab-side nav button::before { display: none; }
    body.lab2-app .lab-side nav button .nav-icon {
        width: 27px;
        height: 27px;
        flex-basis: 27px;
        border-radius: 9px;
    }
    body.lab2-app .lab-side nav button .nav-label,
    body.lab2-app .lab-side nav button:hover .nav-label,
    body.lab2-app .lab-side nav button.active .nav-label {
        display: block;
        max-width: 68px;
        overflow: hidden;
        font-size: 9px;
        line-height: 1.1;
        text-overflow: ellipsis;
        white-space: nowrap;
    }
    body.lab2-app .lab-side nav button.active {
        color: var(--module-color-deep);
        background: var(--module-soft);
        border-color: transparent;
    }

    /* Contexto da página, métricas e pesquisa global. */
    body.lab2-app .lab-top {
        position: sticky;
        top: var(--lab2-mobile-top-h);
        z-index: 500;
        min-height: 0;
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        gap: 6px 10px;
        padding: 7px 10px 9px;
        overflow: visible;
        background: rgba(242, 248, 253, .97);
    }
    body.lab2-app .page-context { grid-column: 1; }
    body.lab2-app .page-context .label { display: none; }
    body.lab2-app .lab-top h1 { font-size: 18px; line-height: 1.15; }
    body.lab2-app .page-metrics {
        grid-column: 2;
        max-width: 58vw;
        justify-content: flex-end;
        gap: 7px;
        overflow-x: auto;
        scrollbar-width: none;
        font-size: 9px;
    }
    body.lab2-app .page-metrics::-webkit-scrollbar { display: none; }
    body.lab2-app .page-metric { flex: 0 0 auto; gap: 3px; }
    body.lab2-app .page-metric strong { font-size: 11px; }
    body.lab2-app .page-metrics > i { font-size: 8px; }
    body.lab2-app .course-quick-search {
        grid-column: 1 / -1;
        justify-self: stretch;
        width: 100%;
        max-width: none;
    }
    body.lab2-app .course-search-field input { height: 39px; font-size: 16px; }
    body.lab2-app .course-search-results {
        position: fixed;
        z-index: 800;
        top: calc(var(--lab2-mobile-top-h) + 98px);
        left: 10px;
        right: 10px;
        width: auto;
        max-height: min(58dvh, 430px);
        border-radius: 15px;
        box-shadow: 0 22px 60px rgba(28, 68, 98, .24);
    }

    body.lab2-app .lab-main {
        width: 100%;
        min-height: calc(100dvh - 165px - var(--lab2-mobile-nav-h));
        gap: 10px;
        margin: 0;
        padding: 10px 10px 22px;
    }
    body.lab2-app .lab-main.is-view-loading::before { left: 10px; right: 10px; }

    /* Introduções e pesquisas de Leads/Oportunidades. */
    body.lab2-app .work-intro {
        grid-template-columns: 1fr;
        gap: 12px;
        padding: 14px;
        border-radius: 17px;
    }
    body.lab2-app .work-intro h2 { font-size: 21px; line-height: 1.12; }
    body.lab2-app .work-intro p:not(.label) { font-size: 12px; line-height: 1.45; }
    body.lab2-app .work-intro-side { width: 100%; gap: 9px; justify-items: stretch; }
    body.lab2-app .work-intro-side .work-actions {
        width: 100%;
        display: flex;
        justify-content: flex-start;
        gap: 7px;
        overflow-x: auto;
        padding-bottom: 2px;
        scrollbar-width: none;
    }
    body.lab2-app .work-intro-side .work-actions::-webkit-scrollbar { display: none; }
    body.lab2-app .work-intro-side .work-actions > * { flex: 0 0 auto; min-height: 38px; }
    body.lab2-app .work-intro-search { grid-template-columns: 1fr; padding: 6px; border-radius: 13px; }
    body.lab2-app .work-intro-search input { min-height: 42px; font-size: 16px; }
    body.lab2-app .work-intro-search button { display: none; }

    /* Filtros e paginação com gesto horizontal. */
    body.lab2-app .work-filter-row { display: grid; gap: 5px; margin: 0; }
    body.lab2-app .work-filter-row .filter-chips {
        width: 100%;
        margin-left: 0;
        padding: 1px 0 3px;
        flex-wrap: nowrap;
        overflow-x: auto;
        scroll-snap-type: x proximity;
        scrollbar-width: none;
    }
    body.lab2-app .work-filter-row .filter-chips::-webkit-scrollbar { display: none; }
    body.lab2-app .filter-chips button { scroll-snap-align: start; }
    body.lab2-app .work-filter-row .result-line { padding-left: 2px; font-size: 10px; }
    body.lab2-app .work-pagination {
        justify-content: flex-start;
        gap: 6px;
        overflow-x: auto;
        padding: 8px 1px 2px;
        scrollbar-width: none;
    }
    body.lab2-app .work-pagination::-webkit-scrollbar { display: none; }
    body.lab2-app .work-pagination button { min-width: 38px; min-height: 38px; flex: 0 0 auto; }
    body.lab2-app .work-pagination > span { flex: 0 0 auto; }

    /* Grelhas genéricas. */
    body.lab2-app .hero-board, body.lab2-app .split-grid, body.lab2-app .card-grid, body.lab2-app .course-grid { grid-template-columns: 1fr; }
    body.lab2-app .hero-panel { min-height: 0; padding: 16px; }
    body.lab2-app .panel-head { min-height: 46px; padding: 0 12px; }
    body.lab2-app .panel-body { padding: 8px; }
    body.lab2-app .toolbar { align-items: stretch; }
    body.lab2-app .toolbar input,
    body.lab2-app .toolbar button,
    body.lab2-app .toolbar a { width: 100%; min-height: 42px; }

    /* Agenda. */
    body.lab2-app .call-row {
        grid-template-columns: 58px minmax(0, 1fr);
        gap: 8px 10px;
        padding: 12px;
    }
    body.lab2-app .call-row > .card-actions {
        grid-column: 1 / -1;
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        justify-content: stretch;
    }
    body.lab2-app .call-row > .card-actions > * { min-height: 40px; }

    /* Leads: um cartão por linha e ações confortáveis ao toque. */
    body.lab2-app .lead-card {
        grid-template-columns: minmax(0, 1fr);
        gap: 10px;
        padding: 13px 13px 12px 17px;
    }
    body.lab2-app .lead-card > .person-top,
    body.lab2-app .lead-card > .course-card-link,
    body.lab2-app .lead-card > .lead-contact-list,
    body.lab2-app .lead-card > .lead-intake-info,
    body.lab2-app .lead-card > .lead-card-footer { grid-column: 1; }
    body.lab2-app .lead-card > .course-card-link { grid-row: auto; }
    body.lab2-app .lead-contact-list { gap: 7px 12px; }
    body.lab2-app .lead-contact-link { max-width: 100%; min-height: 32px; }
    body.lab2-app .lead-contact-link span:last-child { overflow: hidden; text-overflow: ellipsis; }
    body.lab2-app .lead-card-footer {
        grid-template-columns: 1fr;
        gap: 9px;
        align-items: stretch;
    }
    body.lab2-app .lead-treated-toggle { width: 100%; min-height: 42px; justify-content: center; }
    body.lab2-app .lead-primary-actions {
        width: 100%;
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 7px;
    }
    body.lab2-app .lead-primary-actions > * { min-width: 0; min-height: 42px; padding-inline: 7px; }
    body.lab2-app .lead-primary-actions span:last-child { overflow: hidden; text-overflow: ellipsis; }

    /* Oportunidades: as três colunas tornam-se um carrossel com snap. */
    body.lab2-app .opportunity-overview {
        display: flex;
        grid-template-columns: none;
        gap: 10px;
        overflow-x: auto;
        padding: 1px 1px 5px;
        scroll-snap-type: x mandatory;
        scrollbar-width: none;
    }
    body.lab2-app .opportunity-overview::-webkit-scrollbar { display: none; }
    body.lab2-app .opportunity-overview .lane {
        flex: 0 0 calc(100vw - 30px);
        max-width: calc(100vw - 30px);
        scroll-snap-align: center;
    }
    body.lab2-app .opportunity-focus-grid { grid-template-columns: 1fr; }
    body.lab2-app .opportunity-focus-head { align-items: stretch; flex-direction: column; padding: 14px; }
    body.lab2-app .focus-back { width: 100%; min-height: 42px; }
    body.lab2-app .op-card { padding: 13px 13px 12px 17px; }
    body.lab2-app .op-card-head { grid-template-columns: minmax(0, 1fr) auto; }
    body.lab2-app .op-followup-date { grid-column: 1 / -1; justify-content: flex-start; min-width: 0; text-align: left; }
    body.lab2-app .op-card-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
    body.lab2-app .op-card-actions > * { min-height: 42px; justify-content: center; }
    body.lab2-app .op-no-phone { grid-column: 1 / -1; justify-content: center; }

    /* Listas de cursos, vendas e importações. */
    body.lab2-app .course-card { grid-template-columns: minmax(0, 1fr) auto; }
    body.lab2-app .course-card .category { grid-column: 1 / -1; }
    body.lab2-app .course-card p { grid-column: 1; }
    body.lab2-app .sale-row { grid-template-columns: minmax(0, 1fr) auto; }
    body.lab2-app .sale-row > div:nth-child(2) { grid-column: 1; }
    body.lab2-app .sale-row > div:last-child { grid-column: 2; grid-row: 1 / span 2; text-align: right; }

    /* Modal da oportunidade em ecrã inteiro. */
    body.lab2-app .opportunity-modal { place-items: stretch; padding: 0; }
    body.lab2-app .opportunity-modal-dialog {
        width: 100vw;
        height: 100dvh;
        max-height: 100dvh;
        border: 0;
        border-radius: 0;
    }
    body.lab2-app .opportunity-modal-header {
        position: relative;
        z-index: 4;
        min-height: 62px;
        grid-template-columns: minmax(0, 1fr) auto;
        padding: calc(9px + env(safe-area-inset-top)) 10px 9px 14px;
    }
    body.lab2-app .opportunity-modal-heading { grid-column: 1; grid-row: 1; }
    body.lab2-app .opportunity-modal-close { grid-column: 2; grid-row: 1; width: 42px; min-height: 42px; }
    body.lab2-app .opportunity-modal-back {
        grid-column: 1 / -1;
        grid-row: 2;
        width: 100%;
        min-height: 40px;
        justify-self: stretch;
    }
    body.lab2-app .opportunity-modal-body {
        padding: 12px 10px calc(14px + env(safe-area-inset-bottom));
        overscroll-behavior: contain;
    }
    body.lab2-app .op-modal-summary { grid-template-columns: 1fr; gap: 9px; }
    body.lab2-app .op-modal-contact,
    body.lab2-app .op-modal-course,
    body.lab2-app .op-modal-email-state { min-height: 0; padding: 12px; }
    body.lab2-app .op-modal-followup,
    body.lab2-app .op-modal-imported { margin-top: 10px; padding: 13px; }
    body.lab2-app .op-modal-followup header { align-items: flex-start; flex-direction: column; gap: 8px; }
    body.lab2-app .op-modal-followup-date { justify-content: flex-start; }
    body.lab2-app .op-modal-actions {
        position: sticky;
        z-index: 3;
        bottom: -1px;
        grid-template-columns: 1fr;
        gap: 8px;
        margin: 12px -2px -2px;
        padding: 10px 2px calc(8px + env(safe-area-inset-bottom));
        background: linear-gradient(180deg, rgba(248,252,255,.72), rgba(248,252,255,.98) 22%);
        backdrop-filter: blur(14px);
    }
    body.lab2-app .op-modal-actions > div {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        justify-content: stretch;
    }
    body.lab2-app .op-modal-actions a,
    body.lab2-app .op-modal-actions button { min-height: 44px; justify-content: center; }
    body.lab2-app .op-treated-toggle { width: 100%; justify-self: stretch; }

    /* Recuperação Outlook e modal de email em formato sheet/fullscreen. */
    body.lab2-app .outlook-recovery-modal { place-items: end stretch; padding: 0; }
    body.lab2-app .outlook-recovery-dialog {
        width: 100%;
        max-height: 92dvh;
        border-radius: 20px 20px 0 0;
        padding-bottom: env(safe-area-inset-bottom);
    }
    body.lab2-app .outlook-recovery-dialog > header,
    body.lab2-app .outlook-recovery-body { padding-left: 15px; padding-right: 15px; }
    body.lab2-app .outlook-recovery-actions { align-items: stretch; flex-direction: column; }
    body.lab2-app .outlook-recovery-actions > * { width: 100%; min-height: 44px; }

    body.lab2-app .course-email-dialog {
        width: 100vw;
        height: 100dvh;
        max-height: 100dvh;
        margin: 0;
        border: 0;
        border-radius: 0;
    }
    body.lab2-app .course-email-header { padding: calc(12px + env(safe-area-inset-top)) 13px 12px; }
    body.lab2-app .course-email-form { padding: 13px 12px calc(18px + env(safe-area-inset-bottom)); }
    body.lab2-app .course-email-form .form-row { grid-template-columns: 1fr; }
    body.lab2-app .course-email-actions { display: grid; grid-template-columns: 1fr; }
    body.lab2-app .course-email-actions > * { width: 100%; min-height: 44px; }

    body.lab2-app .toast {
        right: 10px;
        bottom: calc(var(--lab2-mobile-nav-h) + 10px + env(safe-area-inset-bottom));
        max-width: calc(100vw - 20px);
    }
}

@media (max-width: 460px) {
    body.lab2-app .brand img { width: 80px; }
    body.lab2-app .brand span { display: none; }
    body.lab2-app .page-metrics { max-width: 62vw; }
    body.lab2-app .work-intro { padding: 13px; }
    body.lab2-app .work-intro h2 { font-size: 19px; }
    body.lab2-app .lead-primary-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    body.lab2-app .lead-primary-actions > :last-child { grid-column: 1 / -1; }
    body.lab2-app .op-modal-actions > div { grid-template-columns: 1fr; }
    body.lab2-app .course-card { grid-template-columns: 1fr; }
    body.lab2-app .sale-row { grid-template-columns: 1fr; }
    body.lab2-app .sale-row > div:last-child { grid-column: 1; grid-row: auto; text-align: left; }
}

/* Login LAB2 em telemóvel — preserva o visual aprovado sem overflow. */
@media (max-width: 680px) {
    body.lab2-login { min-height: 100dvh; overflow-x: hidden; }
    body.lab2-login .login-stage {
        min-height: 100dvh;
        display: grid;
        grid-template-columns: 1fr;
        padding: max(10px, env(safe-area-inset-top)) 10px max(14px, env(safe-area-inset-bottom));
    }
    body.lab2-login .login-copy {
        min-height: 0;
        padding: 22px 18px 14px;
        border-radius: 20px 20px 0 0;
    }
    body.lab2-login .login-copy img { width: 135px; }
    body.lab2-login .login-copy h1 { font-size: 21px; line-height: 1.25; }
    body.lab2-login .login-metrics { overflow-x: auto; flex-wrap: nowrap; scrollbar-width: none; }
    body.lab2-login .login-metrics::-webkit-scrollbar { display: none; }
    body.lab2-login .login-card {
        width: auto;
        max-width: none;
        margin: 0;
        padding: 22px 18px;
        border-radius: 0 0 20px 20px;
    }
    body.lab2-login .login-card input { min-height: 46px; font-size: 16px; }
    body.lab2-login .login-card button { min-height: 46px; }
}

/* ============================================================
   LAB2 v0.42 — filtro dinâmico de curso nas Leads
   ============================================================ */
body.lab2-app .work-filter-end {
    flex: 0 0 auto;
    min-width: 0;
    margin-left: auto;
}

body.lab2-app .lead-course-filter {
    position: relative;
    display: block;
    width: clamp(245px, 25vw, 360px);
    min-width: 0;
}

body.lab2-app .lead-course-filter::after {
    content: "";
    position: absolute;
    top: 50%;
    right: 13px;
    width: 7px;
    height: 7px;
    border-right: 2px solid #3185ad;
    border-bottom: 2px solid #3185ad;
    transform: translateY(-67%) rotate(45deg);
    pointer-events: none;
}

body.lab2-app .lead-course-filter select {
    display: block;
    width: 100%;
    height: 34px;
    min-height: 34px;
    padding: 0 38px 0 13px;
    border: 1px solid rgba(76, 143, 183, .24);
    border-radius: 12px;
    outline: none;
    appearance: none;
    -webkit-appearance: none;
    background: rgba(255, 255, 255, .78);
    box-shadow: 0 7px 20px rgba(48, 106, 144, .07);
    color: var(--text);
    font: 700 12px/1 "EscolaUI", sans-serif;
    text-overflow: ellipsis;
    white-space: nowrap;
    cursor: pointer;
    transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}

body.lab2-app .lead-course-filter select:hover {
    border-color: rgba(22, 166, 194, .46);
    background: rgba(255, 255, 255, .94);
}

body.lab2-app .lead-course-filter select:focus-visible,
body.lab2-app .lead-course-filter.is-filtered select {
    border-color: rgba(15, 164, 194, .65);
    box-shadow: 0 0 0 3px rgba(19, 176, 202, .11), 0 8px 22px rgba(48, 106, 144, .08);
    background: #fff;
}

@media (max-width: 1100px) and (min-width: 821px) {
    body.lab2-app .work-filter-end {
        flex: 1 1 260px;
        display: flex;
        justify-content: flex-end;
    }
    body.lab2-app .lead-course-filter {
        width: min(100%, 350px);
    }
}

@media (max-width: 820px) {
    body.lab2-app .work-filter-end {
        width: 100%;
        margin-left: 0;
    }
    body.lab2-app .lead-course-filter {
        width: 100%;
    }
    body.lab2-app .lead-course-filter select {
        height: 42px;
        min-height: 42px;
        border-radius: 13px;
        font-size: 16px;
        padding-left: 12px;
    }
}

/* LAB2 v0.46 — períodos de comissão com fecho por data/hora real */
body.lab2-app .sales-period-panel {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    padding: 20px 22px;
    border: 1px solid rgba(117, 164, 194, .28);
    border-radius: 18px;
    background: linear-gradient(125deg, rgba(237,248,255,.92), rgba(255,255,255,.94) 56%, rgba(255,247,235,.86));
    box-shadow: 0 16px 42px rgba(68, 112, 143, .10);
}
body.lab2-app .sales-period-copy { min-width: 0; }
body.lab2-app .sales-period-copy .label { margin: 0 0 5px; color: #b86c00; }
body.lab2-app .sales-period-copy h2 { margin: 0; font-size: clamp(22px, 2vw, 30px); }
body.lab2-app .sales-period-copy > p:last-child { margin: 7px 0 0; color: var(--text-soft); }
body.lab2-app .sales-period-title-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
body.lab2-app .sales-period-state {
    display: inline-flex; align-items: center; min-height: 25px; padding: 3px 9px;
    border-radius: 999px; font-size: 11px; font-weight: 800; letter-spacing: .02em;
}
body.lab2-app .sales-period-state.is-open { color: #087d62; background: #e6faf3; border: 1px solid #b9eadb; }
body.lab2-app .sales-period-state.is-closed { color: #657386; background: #eef3f7; border: 1px solid #d8e2ea; }
body.lab2-app .sales-period-controls { display: flex; align-items: flex-end; gap: 10px; }
body.lab2-app .sales-period-controls label { display: grid; gap: 5px; min-width: 270px; }
body.lab2-app .sales-period-controls label > span { font-size: 11px; font-weight: 800; color: #718195; text-transform: uppercase; letter-spacing: .05em; }
body.lab2-app .sales-period-controls select {
    height: 42px; border: 1px solid #cfe0eb; border-radius: 12px; background: rgba(255,255,255,.94);
    color: var(--text); padding: 0 38px 0 13px; font: inherit; font-weight: 700;
}
body.lab2-app .commission-close-modal[hidden] { display: none !important; }
body.lab2-app .commission-close-modal { position: fixed; inset: 0; z-index: 26000; display: grid; place-items: center; padding: 20px; }
body.lab2-app .commission-close-backdrop { position: absolute; inset: 0; background: rgba(58,74,91,.42); backdrop-filter: blur(10px); }
body.lab2-app .commission-close-dialog {
    position: relative; z-index: 1; width: min(560px, 100%); overflow: hidden;
    border: 1px solid rgba(132,167,190,.34); border-radius: 22px; background: #f8fbfe;
    box-shadow: 0 28px 85px rgba(29,52,71,.28);
}
body.lab2-app .commission-close-dialog header,
body.lab2-app .commission-close-dialog footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 18px 20px; background: rgba(255,255,255,.82); }
body.lab2-app .commission-close-dialog header { border-bottom: 1px solid #dfe9f0; }
body.lab2-app .commission-close-dialog footer { border-top: 1px solid #dfe9f0; justify-content: flex-end; }
body.lab2-app .commission-close-dialog h2 { margin: 2px 0 0; }
body.lab2-app .commission-close-dialog header button { width: 40px; height: 40px; border-radius: 12px; font-size: 25px; }
body.lab2-app .commission-close-body { display: grid; gap: 15px; padding: 20px; }
body.lab2-app .commission-close-body > p { margin: 0 0 2px; color: var(--text-soft); line-height: 1.55; }
body.lab2-app .commission-close-body label { display: grid; gap: 6px; }
body.lab2-app .commission-close-body label > span { font-size: 12px; font-weight: 800; color: #62758a; }
body.lab2-app .commission-close-body input { width: 100%; height: 44px; border: 1px solid #ccdee9; border-radius: 12px; padding: 0 13px; background: white; color: var(--text); font: inherit; }
body.lab2-app .commission-close-preview { min-height: 42px; padding: 11px 13px; border-radius: 12px; background: #eef8fc; color: #3a637b; font-size: 13px; }
body.has-commission-close-modal { overflow: hidden; }

@media (max-width: 820px) {
    body.lab2-app .sales-period-panel { align-items: stretch; flex-direction: column; gap: 15px; padding: 17px; }
    body.lab2-app .sales-period-controls { align-items: stretch; flex-direction: column; }
    body.lab2-app .sales-period-controls label { min-width: 0; width: 100%; }
    body.lab2-app .sales-period-controls .primary-btn { width: 100%; justify-content: center; }
    body.lab2-app .commission-close-modal { align-items: end; padding: 0; }
    body.lab2-app .commission-close-dialog { width: 100%; max-height: 92dvh; border-radius: 22px 22px 0 0; overflow: auto; }
    body.lab2-app .commission-close-dialog footer { position: sticky; bottom: 0; padding-bottom: calc(16px + env(safe-area-inset-bottom)); }
}

/* LAB2 v0.47 — Vendas: detalhe/global e períodos corrigidos */
body.lab2-app .sales-period-alert {
    display: inline-flex;
    margin: 10px 0 0 !important;
    padding: 7px 10px;
    border: 1px solid #f1d8a7;
    border-radius: 10px;
    background: #fff8e8;
    color: #8b5a00 !important;
    font-size: 12px;
    font-weight: 700;
}

body.lab2-app .sales-view-tabs {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 4px;
    border: 1px solid rgba(117, 164, 194, .28);
    border-radius: 14px;
    background: rgba(255,255,255,.76);
    box-shadow: 0 8px 24px rgba(68,112,143,.07);
}
body.lab2-app .sales-view-tabs button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    min-height: 37px;
    padding: 0 13px;
    border: 0;
    border-radius: 10px;
    background: transparent;
    color: #64758a;
    font-size: 12px;
    font-weight: 800;
    cursor: pointer;
    transition: background .16s ease, color .16s ease, box-shadow .16s ease;
}
body.lab2-app .sales-view-tabs button:hover {
    background: #eef8fc;
    color: #116e91;
}
body.lab2-app .sales-view-tabs button.is-active {
    background: linear-gradient(135deg, #0b9dd0, #18b9ae);
    color: #fff;
    box-shadow: 0 8px 18px rgba(12,157,196,.2);
}
body.lab2-app .sales-view-tabs .ui-action-icon {
    width: 17px;
    height: 17px;
    color: currentColor;
    background: transparent;
}

body.lab2-app .sales-detail-panel,
body.lab2-app .sales-global-layout .panel {
    overflow: hidden;
}
body.lab2-app .sale-row {
    border-left: 4px solid #bfeaf3;
    border-radius: 10px;
    background: rgba(255,255,255,.72);
}
body.lab2-app .sale-person, body.lab2-app .sale-value {
    display: grid;
    gap: 3px;
    min-width: 0;
}
body.lab2-app .sale-person strong { font-size: 13px; }
body.lab2-app .sale-person span { color: var(--text-soft); font-size: 11px; }

body.lab2-app .sale-value { justify-items: end; }
body.lab2-app .sale-value > strong { font-size: 14px; }

body.lab2-app .sales-global-summary {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
}
body.lab2-app .sales-global-summary article {
    display: grid;
    gap: 5px;
    padding: 15px 16px;
    border: 1px solid rgba(117,164,194,.26);
    border-radius: 14px;
    background: rgba(255,255,255,.76);
    box-shadow: 0 10px 28px rgba(68,112,143,.07);
}
body.lab2-app .sales-global-summary span {
    color: #718195;
    font-size: 10px;
    font-weight: 850;
    letter-spacing: .04em;
    text-transform: uppercase;
}
body.lab2-app .sales-global-summary strong {
    color: #152137;
    font-size: 23px;
    line-height: 1;
}
body.lab2-app .sales-global-layout {
    display: grid;
    grid-template-columns: minmax(260px, .75fr) minmax(0, 1.75fr);
    gap: 12px;
    align-items: start;
}
body.lab2-app .sales-type-grid {
    display: grid;
    gap: 8px;
}
body.lab2-app .sales-type-card {
    display: grid;
    grid-template-columns: minmax(0,1fr) auto;
    gap: 3px 10px;
    align-items: center;
    padding: 12px;
    border: 1px solid #dce9f1;
    border-radius: 12px;
    background: linear-gradient(135deg, rgba(245,251,255,.94), rgba(255,255,255,.92));
}
body.lab2-app .sales-type-card > span {
    color: #5e7085;
    font-size: 11px;
    font-weight: 800;
}
body.lab2-app .sales-type-card > strong {
    grid-row: 1 / span 2;
    grid-column: 2;
    color: #0e9e91;
    font-size: 24px;
}
body.lab2-app .sales-type-card > small {
    color: #8090a2;
    font-size: 10px;
}
body.lab2-app .sales-course-list {
    display: grid;
    gap: 7px;
}
body.lab2-app .sales-course-row {
    display: grid;
    grid-template-columns: minmax(190px, 1.15fr) minmax(120px, .8fr) minmax(90px, auto);
    gap: 14px;
    align-items: center;
    padding: 10px 12px;
    border: 1px solid #ddeaf2;
    border-radius: 11px;
    background: rgba(255,255,255,.74);
}
body.lab2-app .sales-course-copy,
body.lab2-app .sales-course-numbers {
    display: grid;
    gap: 2px;
    min-width: 0;
}
body.lab2-app .sales-course-copy strong {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 12px;
}
body.lab2-app .sales-course-copy span,
body.lab2-app .sales-course-numbers span,
body.lab2-app .sales-course-numbers small {
    color: #7b8b9d;
    font-size: 10px;
}
body.lab2-app .sales-course-bar {
    height: 7px;
    overflow: hidden;
    border-radius: 999px;
    background: #e8f1f6;
}
body.lab2-app .sales-course-bar i {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #0ba2d0, #23baa5);
}
body.lab2-app .sales-course-numbers { justify-items: end; }
body.lab2-app .sales-course-numbers strong { color: #122136; font-size: 16px; }
body.lab2-app .sales-course-numbers small { color: #cc5c69; }

@media (max-width: 980px) {
    body.lab2-app .sales-global-summary { grid-template-columns: repeat(2, minmax(0,1fr)); }
    body.lab2-app .sales-global-layout { grid-template-columns: 1fr; }
}

@media (max-width: 820px) {
    body.lab2-app .sales-view-tabs {
        display: flex;
        width: 100%;
    }
    body.lab2-app .sales-view-tabs button { flex: 1; min-width: 0; }
    body.lab2-app .sales-global-summary { grid-template-columns: repeat(2, minmax(0,1fr)); }
    body.lab2-app .sales-global-summary article { padding: 13px; }
    body.lab2-app .sales-course-row {
        grid-template-columns: minmax(0,1fr) auto;
        gap: 8px 12px;
    }
    body.lab2-app .sales-course-bar { grid-column: 1 / -1; grid-row: 2; }
    body.lab2-app .sales-course-numbers { grid-column: 2; grid-row: 1; }
    body.lab2-app .sale-row {
        grid-template-columns: minmax(0,1fr) auto;
        gap: 7px 10px;
    }
    
    body.lab2-app .sale-value { grid-column: 2; grid-row: 1 / span 2; }
}

@media (max-width: 520px) {
    body.lab2-app .sales-global-summary { grid-template-columns: 1fr 1fr; gap: 7px; }
    body.lab2-app .sales-global-summary strong { font-size: 19px; }
    body.lab2-app .sales-view-tabs button span { font-size: 11px; }
}

/* LAB2 v0.48 — Vendas: Global principal e fecho de período redesenhado */
body.lab2-app .sales-period-controls {
    align-items: end;
}
body.lab2-app .sales-close-action {
    display: grid;
    grid-template-columns: 38px minmax(0,1fr) 24px;
    align-items: center;
    gap: 10px;
    min-width: 245px;
    min-height: 56px;
    padding: 7px 9px;
    border: 1px solid #efd6a7;
    border-radius: 15px;
    background: linear-gradient(135deg, rgba(255,250,239,.98), rgba(255,244,221,.92));
    color: #7b5207;
    text-align: left;
    cursor: pointer;
    box-shadow: 0 8px 22px rgba(170,114,20,.08);
    transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease, background .16s ease;
}
body.lab2-app .sales-close-action:hover {
    transform: translateY(-1px);
    border-color: #e8bd68;
    background: linear-gradient(135deg, #fffaf0, #ffedc8);
    box-shadow: 0 12px 28px rgba(170,114,20,.14);
}
body.lab2-app .sales-close-action:focus-visible {
    outline: 3px solid rgba(241,169,45,.24);
    outline-offset: 2px;
}
body.lab2-app .sales-close-action-icon {
    width: 38px;
    height: 38px;
    display: grid;
    place-items: center;
    border-radius: 12px;
    background: #fff0cc;
    color: #b86c00;
    border: 1px solid #f0d39c;
}
body.lab2-app .sales-close-action-icon .ui-action-icon,
body.lab2-app .sales-close-action-arrow .ui-action-icon {
    width: 18px;
    height: 18px;
    background: transparent;
    color: currentColor;
}
body.lab2-app .sales-close-action-copy {
    display: grid;
    gap: 2px;
    min-width: 0;
}
body.lab2-app .sales-close-action-copy strong {
    color: #6f4803;
    font-size: 12px;
    line-height: 1.15;
}
body.lab2-app .sales-close-action-copy small {
    color: #98723c;
    font-size: 10px;
    font-weight: 650;
    white-space: nowrap;
}
body.lab2-app .sales-close-action-arrow {
    display: grid;
    place-items: center;
    color: #ba7b11;
}

body.lab2-app .commission-close-dialog footer .commission-close-cancel,
body.lab2-app .commission-close-dialog footer .commission-close-submit {
    min-height: 42px;
    border-radius: 12px;
    padding: 0 16px;
    font-weight: 800;
    font-family: inherit;
    cursor: pointer;
}
body.lab2-app .commission-close-dialog footer .commission-close-cancel {
    border: 1px solid #d5e1e9;
    background: #fff;
    color: #596b7e;
}
body.lab2-app .commission-close-dialog footer .commission-close-submit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border: 1px solid #e5bb67;
    background: linear-gradient(135deg, #f8b744, #e89a1d);
    color: #3f2900;
    box-shadow: 0 9px 20px rgba(213,140,25,.18);
}
body.lab2-app .commission-close-dialog footer .commission-close-submit:hover {
    background: linear-gradient(135deg, #ffc45a, #eea42b);
}
body.lab2-app .commission-close-dialog footer .commission-close-submit .ui-action-icon {
    width: 17px;
    height: 17px;
    color: currentColor;
    background: transparent;
}
body.lab2-app .commission-close-dialog footer .commission-close-submit:disabled {
    opacity: .58;
    cursor: wait;
}

/* A vista global é a entrada principal; a tab secundária fica visualmente mais discreta. */
body.lab2-app .sales-view-tabs button[data-sales-view="global"] {
    min-width: 154px;
}
body.lab2-app .sales-view-tabs button[data-sales-view="detail"] {
    color: #748397;
}
body.lab2-app .sales-view-tabs button[data-sales-view="detail"].is-active {
    color: #fff;
}

@media (max-width: 820px) {
    body.lab2-app .sales-close-action {
        width: 100%;
        min-width: 0;
    }
    body.lab2-app .sales-close-action-copy small {
        white-space: normal;
    }
    body.lab2-app .commission-close-dialog footer {
        display: grid;
        grid-template-columns: 1fr 1.35fr;
    }
    body.lab2-app .commission-close-dialog footer .commission-close-cancel,
    body.lab2-app .commission-close-dialog footer .commission-close-submit {
        width: 100%;
        padding-inline: 10px;
    }
}

/* LAB2 v0.49 — Vendas: detalhe compacto e aproveitamento horizontal */
body.lab2-app .sales-detail-panel .panel-head {
    min-height: 48px;
}
body.lab2-app .sales-detail-table-head,
body.lab2-app .sale-detail-row {
    display: grid;
    grid-template-columns: minmax(260px, 1.55fr) minmax(125px, .62fr) minmax(145px, .72fr) minmax(145px, .72fr) minmax(125px, .52fr);
    gap: 14px;
    align-items: center;
}
body.lab2-app .sales-detail-table-head {
    padding: 9px 16px 8px 18px;
    border-top: 1px solid #e2ecf2;
    border-bottom: 1px solid #dce8ef;
    background: linear-gradient(180deg, rgba(247,251,254,.96), rgba(239,247,251,.92));
}
body.lab2-app .sales-detail-table-head span {
    color: #708196;
    font-size: 10px;
    font-weight: 850;
    letter-spacing: .045em;
    text-transform: uppercase;
}
body.lab2-app .sales-detail-table-head span:last-child {
    text-align: right;
}
body.lab2-app .sales-detail-list {
    gap: 5px;
    padding: 7px 9px 10px;
}
body.lab2-app .sale-detail-row {
    min-height: 66px;
    padding: 9px 12px 9px 14px;
    border-left-width: 3px;
    border-radius: 9px;
}
body.lab2-app .sale-detail-row:hover {
    transform: none;
    box-shadow: 0 7px 18px rgba(57,106,137,.08);
}
body.lab2-app .sale-detail-row .sale-person,
body.lab2-app .sale-detail-row .sale-registration,
body.lab2-app .sale-detail-row .sale-date,
body.lab2-app .sale-detail-row .sale-consultant,
body.lab2-app .sale-detail-row .sale-value {
    min-width: 0;
}
body.lab2-app .sale-detail-row .sale-person {
    gap: 2px;
}
body.lab2-app .sale-detail-row .sale-person strong {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #172237;
    font-size: 13px;
}
body.lab2-app .sale-detail-row .sale-person span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 11px;
}
body.lab2-app .sale-registration,
body.lab2-app .sale-date {
    display: grid;
    gap: 2px;
}
body.lab2-app .sale-registration small,
body.lab2-app .sale-date small,
body.lab2-app .sale-consultant small {
    color: #8a99aa;
    font-size: 9px;
    font-weight: 800;
    letter-spacing: .025em;
    text-transform: uppercase;
}
body.lab2-app .sale-registration strong,
body.lab2-app .sale-date strong {
    color: #31445a;
    font-size: 12px;
    font-weight: 850;
    font-variant-numeric: tabular-nums;
}
body.lab2-app .sale-registration span {
    color: #8594a6;
    font-size: 10px;
}
body.lab2-app .sale-consultant {
    display: flex;
    align-items: center;
    gap: 8px;
}
body.lab2-app .sale-consultant-avatar {
    flex: 0 0 30px;
    width: 30px;
    height: 30px;
    display: grid;
    place-items: center;
    border: 1px solid #bfe3ee;
    border-radius: 10px;
    background: linear-gradient(135deg, #eaf8fc, #eefbf7);
    color: #0d91ad;
    font-size: 10px;
    font-weight: 900;
}
body.lab2-app .sale-consultant > div {
    display: grid;
    gap: 2px;
    min-width: 0;
}
body.lab2-app .sale-consultant strong {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #566a7f;
    font-size: 11px;
}
body.lab2-app .sale-detail-row .sale-value {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    justify-content: center;
    gap: 5px;
}
body.lab2-app .sale-detail-row .sale-value > strong {
    color: #172237;
    font-size: 14px;
    font-variant-numeric: tabular-nums;
}
body.lab2-app .sale-detail-row .status {
    margin: 0;
    white-space: nowrap;
}

@media (max-width: 1100px) {
    body.lab2-app .sales-detail-table-head,
    body.lab2-app .sale-detail-row {
        grid-template-columns: minmax(230px, 1.45fr) minmax(115px, .58fr) minmax(140px, .68fr) minmax(110px, .55fr);
    }
    body.lab2-app .sales-detail-table-head span:nth-child(4),
    body.lab2-app .sale-detail-row .sale-consultant {
        display: none;
    }
}

@media (max-width: 820px) {
    body.lab2-app .sales-detail-table-head {
        display: none;
    }
    body.lab2-app .sales-detail-list {
        gap: 8px;
        padding: 8px;
    }
    body.lab2-app .sale-detail-row {
        grid-template-columns: minmax(0,1fr) auto;
        gap: 7px 12px;
        min-height: 0;
        padding: 12px;
    }
    body.lab2-app .sale-detail-row .sale-person {
        grid-column: 1;
        grid-row: 1;
    }
    body.lab2-app .sale-detail-row .sale-value {
        grid-column: 2;
        grid-row: 1;
        align-self: start;
    }
    body.lab2-app .sale-detail-row .sale-registration,
    body.lab2-app .sale-detail-row .sale-date {
        display: inline-grid;
        grid-template-columns: auto auto;
        justify-content: start;
        align-items: baseline;
        gap: 3px 7px;
        padding-top: 5px;
        border-top: 1px solid #e7eff4;
    }
    body.lab2-app .sale-detail-row .sale-registration {
        grid-column: 1;
        grid-row: 2;
    }
    body.lab2-app .sale-detail-row .sale-date {
        grid-column: 1 / -1;
        grid-row: 3;
    }
    body.lab2-app .sale-detail-row .sale-registration span {
        display: none;
    }
}

@media (max-width: 520px) {
    body.lab2-app .sale-detail-row {
        grid-template-columns: minmax(0,1fr) auto;
        gap: 8px;
    }
    body.lab2-app .sale-detail-row .sale-value > strong {
        font-size: 13px;
    }
    body.lab2-app .sale-detail-row .status {
        font-size: 10px;
    }
}

/* LAB2 v0.50 — catálogo e ficha de curso totalmente nativos */
body.lab2-app .courses-native-intro {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 18px 20px;
    background: linear-gradient(120deg, rgba(235,248,255,.94), rgba(255,255,255,.94), rgba(255,247,232,.74));
    border: 1px solid rgba(33,117,170,.14);
    border-radius: 16px;
    box-shadow: 0 12px 30px rgba(24,87,132,.08);
}
body.lab2-app .courses-native-intro h2 { margin: 2px 0 5px; font-size: 24px; }
body.lab2-app .courses-native-intro p:not(.label) { margin: 0; color: var(--text-soft); }
body.lab2-app .courses-native-summary { display: grid; grid-template-columns: auto auto; gap: 1px 8px; align-items: baseline; text-align: right; }
body.lab2-app .courses-native-summary strong { color: var(--accent); font-size: 22px; }
body.lab2-app .courses-native-summary span { color: var(--text-soft); font-size: 11px; }
body.lab2-app .courses-native-toolbar { margin: 0; }
body.lab2-app .courses-clear-filter { color: var(--text-soft); background: rgba(255,255,255,.75); }
body.lab2-app .course-grid-native { gap: 10px; }
body.lab2-app .course-native-card { grid-template-columns: 1fr; align-content: start; min-height: 150px; padding: 14px 15px; }
body.lab2-app .course-native-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
body.lab2-app .course-native-code { padding: 3px 7px; color: #315e97; background: #edf4ff; border: 1px solid #d2e1f6; border-radius: 999px; font-size: 10px; font-weight: 900; }
body.lab2-app .course-native-card > strong { font-size: 14px; line-height: 1.35; }
body.lab2-app .course-native-modalities { min-height: 32px; color: var(--text-soft); }
body.lab2-app .course-native-footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: auto; }
body.lab2-app .course-native-footer > span { color: var(--text-soft); font-size: 11px; font-weight: 750; }
body.lab2-app .course-native-footer .panel-link { white-space: nowrap; }

body.has-course-viewer { overflow: hidden; }
body.lab2-app .lab2-course-viewer {
    position: fixed;
    inset: 0;
    z-index: 9500;
    display: grid;
    place-items: center;
    padding: 18px;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity .2s ease, visibility .2s ease;
}
body.lab2-app .lab2-course-viewer.is-open { opacity: 1; visibility: visible; pointer-events: auto; }
body.lab2-app .lab2-course-viewer-backdrop { position: absolute; inset: 0; background: rgba(28,45,63,.38); backdrop-filter: blur(10px) saturate(.88); }
body.lab2-app .lab2-course-viewer-dialog {
    position: relative;
    width: min(1680px, calc(100vw - 88px));
    height: min(940px, calc(100dvh - 72px));
    display: grid;
    grid-template-rows: auto minmax(0,1fr);
    overflow: hidden;
    background: #f4f9fd;
    border: 1px solid rgba(255,255,255,.85);
    border-radius: 22px;
    box-shadow: 0 30px 100px rgba(20,52,78,.30);
    transform: translateY(12px) scale(.985);
    transition: transform .2s ease;
}
body.lab2-app .lab2-course-viewer.is-open .lab2-course-viewer-dialog { transform: translateY(0) scale(1); }
body.lab2-app .lab2-course-viewer-header { min-height: 68px; display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 11px 14px 11px 20px; background: rgba(255,255,255,.94); border-bottom: 1px solid var(--line); }
body.lab2-app .lab2-course-viewer-header h2 { margin: 0; font-size: 19px; }
body.lab2-app .lab2-course-viewer-header .label { margin: 0 0 2px; }
body.lab2-app .lab2-course-viewer-close { width: 40px; height: 40px; padding: 0; color: var(--text-soft); background: #f2f7fb; border: 1px solid var(--line); border-radius: 11px; font: 900 24px/1 inherit; }
body.lab2-app .lab2-course-viewer-body { position: relative; min-height: 0; }
body.lab2-app .lab2-course-viewer-body iframe { width: 100%; height: 100%; display: block; border: 0; background: #f4f9fd; }
body.lab2-app .lab2-course-viewer-loading { position: absolute; inset: 0; z-index: 2; display: grid; place-items: center; color: var(--text-soft); background: #f4f9fd; font-weight: 800; }
body.lab2-app .lab2-course-viewer-loading[hidden] { display: none; }

@media (max-width: 820px) {
    body.lab2-app .courses-native-intro { align-items: flex-start; padding: 15px; }
    body.lab2-app .courses-native-intro h2 { font-size: 20px; }
    body.lab2-app .courses-native-summary { display: none; }
    body.lab2-app .courses-native-toolbar { display: grid; grid-template-columns: minmax(0,1fr) auto; }
    body.lab2-app .courses-native-toolbar .courses-clear-filter { grid-column: 1 / -1; }
    body.lab2-app .course-native-footer { align-items: flex-end; }
    body.lab2-app .lab2-course-viewer { place-items: stretch; padding: 0; }
    body.lab2-app .lab2-course-viewer-dialog { width: 100vw; height: 100dvh; max-height: none; border-radius: 0; }
    body.lab2-app .lab2-course-viewer-header { min-height: 60px; padding: 8px 10px 8px 14px; }
    body.lab2-app .lab2-course-viewer-header h2 { max-width: calc(100vw - 76px); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 16px; }
}

/* LAB2 v0.53 — documentos de inscrição no topo da ficha */
body.lab2-app .lab2-course-viewer-header-actions {
    display: flex;
    align-items: center;
    gap: 8px;
}
body.lab2-app .lab2-course-documents-trigger,
body.lab2-app .opportunity-modal-documents {
    min-height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    padding: 0 12px;
    color: #6551c9;
    background: #f3f0ff;
    border: 1px solid #dcd5ff;
    border-radius: 11px;
    font-family: inherit;
    font-size: 11px;
    font-weight: 850;
    white-space: nowrap;
}
body.lab2-app .lab2-course-documents-trigger .ui-action-icon,
body.lab2-app .opportunity-modal-documents .ui-action-icon { width: 18px; height: 18px; color: #7459e8; }
body.lab2-app .opportunity-modal-header { grid-template-columns: minmax(0, 1fr) auto auto auto; }
body.lab2-app .opportunity-modal-documents { grid-column: 3; }
body.lab2-app .opportunity-modal-close { grid-column: 4; }

body.lab2-app .lab2-course-documents-modal {
    position: fixed;
    inset: 0;
    z-index: 13000;
    display: grid;
    place-items: center;
    padding: 18px;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity .18s ease, visibility .18s ease;
}
body.lab2-app .lab2-course-documents-modal.is-open { opacity: 1; visibility: visible; pointer-events: auto; }
body.lab2-app .lab2-course-documents-backdrop { position: absolute; inset: 0; background: rgba(30,46,65,.30); backdrop-filter: blur(5px); }
body.lab2-app .lab2-course-documents-dialog {
    position: relative;
    width: min(520px, calc(100vw - 32px));
    max-height: min(680px, calc(100dvh - 40px));
    overflow: auto;
    padding: 0 18px 18px;
    background: #f9fcff;
    border: 1px solid rgba(255,255,255,.9);
    border-radius: 20px;
    box-shadow: 0 24px 75px rgba(19,49,73,.28);
}
body.lab2-app .lab2-course-documents-dialog > header {
    position: sticky;
    top: 0;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin: 0 -18px;
    padding: 16px 16px 13px 18px;
    background: rgba(249,252,255,.96);
    border-bottom: 1px solid var(--line);
    backdrop-filter: blur(12px);
}
body.lab2-app .lab2-course-documents-dialog h3 { margin: 2px 0 0; font-size: 19px; }
body.lab2-app .lab2-course-documents-dialog header button {
    width: 36px;
    height: 36px;
    padding: 0;
    color: var(--text-soft);
    background: #eef5fa;
    border: 1px solid var(--line);
    border-radius: 10px;
    font: 900 23px/1 inherit;
}
body.lab2-app .lab2-course-documents-context { margin: 14px 0 10px; color: var(--text-soft); font-size: 11px; font-weight: 750; }
body.lab2-app .lab2-course-documents-body ul { display: grid; gap: 9px; margin: 0; padding: 0; list-style: none; }
body.lab2-app .lab2-course-documents-body li { position: relative; padding: 10px 11px 10px 34px; color: #33475f; background: #fff; border: 1px solid var(--line); border-radius: 11px; line-height: 1.45; }
body.lab2-app .lab2-course-documents-body li::before { content: '✓'; position: absolute; left: 11px; top: 9px; width: 16px; height: 16px; display: grid; place-items: center; color: #0b9a68; background: #e8faf3; border-radius: 50%; font-size: 10px; font-weight: 900; }
body.lab2-app .lab2-course-documents-body p { margin: 0; color: var(--text-soft); line-height: 1.5; }

@media (max-width: 650px) {
    body.lab2-app .lab2-course-documents-trigger span:last-child,
    body.lab2-app .opportunity-modal-documents span:last-child { display: none; }
    body.lab2-app .lab2-course-documents-trigger,
    body.lab2-app .opportunity-modal-documents { width: 38px; padding: 0; }
    body.lab2-app .opportunity-modal-header { grid-template-columns: minmax(0,1fr) auto auto; }
    body.lab2-app .opportunity-modal-heading { grid-column: 1; grid-row: 1; }
    body.lab2-app .opportunity-modal-documents { grid-column: 2; grid-row: 1; }
    body.lab2-app .opportunity-modal-close { grid-column: 3; grid-row: 1; }
    body.lab2-app .opportunity-modal-back { grid-column: 1 / -1; grid-row: 2; }
}

/* ============================================================
   LAB2 v0.56 — atualizações rápidas e backoffice de administração
   ============================================================ */

body.lab2-app .lab2-update-heading-icon svg, body.lab2-app .lab2-update-file-icon svg, body.lab2-app .lab2-update-submit-icon svg { width: 19px; height: 19px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }

body.has-update-modal { overflow: hidden; }
body.lab2-app .lab2-update-modal { position: fixed; inset: 0; z-index: 28000; display: grid; place-items: center; padding: 18px; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .18s ease, visibility .18s ease; }
body.lab2-app .lab2-update-modal[hidden] { display: none; }
body.lab2-app .lab2-update-modal.is-open { opacity: 1; visibility: visible; pointer-events: auto; }
body.lab2-app .lab2-update-backdrop { position: absolute; inset: 0; background: rgba(24, 44, 61, .38); backdrop-filter: blur(9px) saturate(.9); }
body.lab2-app .lab2-update-dialog { position: relative; width: min(560px, calc(100vw - 28px)); overflow: hidden; color: #233f53; background: #f9fcff; border: 1px solid rgba(255,255,255,.92); border-radius: 22px; box-shadow: 0 28px 90px rgba(22, 55, 80, .30); transform: translateY(12px) scale(.985); transition: transform .18s ease; }
body.lab2-app .lab2-update-modal.is-open .lab2-update-dialog { transform: translateY(0) scale(1); }
body.lab2-app .lab2-update-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 72px; padding: 14px 15px 13px 18px; background: rgba(255,255,255,.94); border-bottom: 1px solid #e0ebf2; }
body.lab2-app .lab2-update-heading { display: flex; align-items: center; gap: 11px; }
body.lab2-app .lab2-update-heading h2 { margin: 1px 0 0; font-size: 20px; }
body.lab2-app .lab2-update-heading .label { margin: 0; }
body.lab2-app .lab2-update-heading-icon { width: 40px; height: 40px; display: grid; place-items: center; color: #1689b4; background: #eaf8fe; border: 1px solid #cce8f3; border-radius: 13px; }
body.lab2-app .lab2-update-close { width: 38px; height: 38px; padding: 0; color: #718899; background: #eff5f9; border: 1px solid #dbe7ee; border-radius: 11px; font: 900 24px/1 inherit; }
body.lab2-app .lab2-update-form { display: grid; gap: 14px; padding: 17px 18px 18px; }
body.lab2-app .lab2-update-version { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 48px; padding: 10px 12px; background: #fff; border: 1px solid #e0ebf2; border-radius: 13px; }
body.lab2-app .lab2-update-version span { color: #718899; font-size: 11px; font-weight: 760; }
body.lab2-app .lab2-update-version strong { max-width: 70%; overflow: hidden; color: #2b526a; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
body.lab2-app .lab2-update-file { position: relative; min-height: 154px; display: grid; place-items: center; align-content: center; gap: 7px; padding: 18px; color: #436378; text-align: center; cursor: pointer; background: linear-gradient(145deg, #f3fbff, #fff); border: 1px dashed #9bcfe2; border-radius: 17px; transition: border-color .18s ease, background .18s ease, transform .18s ease; }
body.lab2-app .lab2-update-file:hover { background: #eefaff; border-color: #4eb8dc; transform: translateY(-1px); }
body.lab2-app .lab2-update-file input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
body.lab2-app .lab2-update-file-icon { width: 42px; height: 42px; display: grid; place-items: center; color: #1689b4; background: #e2f5fc; border-radius: 13px; }
body.lab2-app .lab2-update-file strong { max-width: 100%; overflow: hidden; color: #294e66; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; }
body.lab2-app .lab2-update-file small { color: #7a909f; line-height: 1.45; }
body.lab2-app .lab2-update-result { display: grid; grid-template-columns: auto minmax(0,1fr); gap: 10px; align-items: center; padding: 11px 12px; border-radius: 13px; }
body.lab2-app .lab2-update-result[hidden] { display: none; }
body.lab2-app .lab2-update-result > span { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 10px; }
body.lab2-app .lab2-update-result svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
body.lab2-app .lab2-update-result strong, body.lab2-app .lab2-update-result small { display: block; }
body.lab2-app .lab2-update-result strong { font-size: 12px; }
body.lab2-app .lab2-update-result small { margin-top: 2px; color: inherit; opacity: .78; line-height: 1.35; }
body.lab2-app .lab2-update-result.is-working { color: #276981; background: #ecf8fd; border: 1px solid #cce8f3; }
body.lab2-app .lab2-update-result.is-working > span svg { animation: lab2-update-spin 1s linear infinite; }
body.lab2-app .lab2-update-result.is-success { color: #137454; background: #eaf9f3; border: 1px solid #c5eadc; }
body.lab2-app .lab2-update-result.is-warning { color: #8b6114; background: #fff8e7; border: 1px solid #f1ddb1; }
body.lab2-app .lab2-update-result.is-error { color: #a44242; background: #fff0f0; border: 1px solid #efcaca; }
@keyframes lab2-update-spin { to { transform: rotate(360deg); } }
body.lab2-app .lab2-update-actions { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
body.lab2-app .lab2-update-admin-link { min-height: 40px; padding: 0 4px; color: #607b8d; background: transparent; border: 0; font-size: 11px; font-weight: 800; }
body.lab2-app .lab2-update-admin-link:hover { color: #1689b4; }
body.lab2-app .lab2-update-submit { min-width: 138px; min-height: 43px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; color: #fff; background: linear-gradient(135deg, var(--accent), var(--accent-2)); border: 0; border-radius: 13px; box-shadow: 0 10px 24px color-mix(in srgb, var(--accent) 22%, transparent); font-family: inherit; font-weight: 850; }
body.lab2-app .lab2-update-submit:disabled { color: #8da0ad; background: #e7eef2; box-shadow: none; cursor: not-allowed; }
body.lab2-app .lab2-update-form.is-busy .lab2-update-submit-icon { animation: lab2-update-spin 1s linear infinite; }

body.lab2-app .admin-update-hero { display: flex; align-items: center; justify-content: space-between; gap: 22px; padding: 20px; background: linear-gradient(125deg, #eefaff, #fff 55%, #f8f5ff); border: 1px solid #dbe9f2; border-radius: 18px; box-shadow: 0 14px 36px rgba(29, 85, 124, .08); }
body.lab2-app .admin-update-hero h2 { margin: 3px 0 5px; font-size: 25px; }
body.lab2-app .admin-update-hero p:not(.label) { margin: 0; color: #718899; }
body.lab2-app .admin-version-card { min-width: min(390px, 42vw); display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 4px 14px; align-items: center; padding: 13px 14px; background: rgba(255,255,255,.92); border: 1px solid #dce9f1; border-radius: 15px; }
body.lab2-app .admin-version-card > span { color: #78909f; font-size: 10px; font-weight: 800; text-transform: uppercase; }
body.lab2-app .admin-version-card > strong { grid-column: 1; overflow: hidden; color: #294e66; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
body.lab2-app .admin-version-card > button { grid-column: 2; grid-row: 1 / span 2; min-height: 42px; display: inline-flex; align-items: center; gap: 7px; padding: 0 13px; color: #fff; background: linear-gradient(135deg, var(--accent), var(--accent-2)); border: 0; border-radius: 12px; font-weight: 850; }
body.lab2-app .admin-version-card svg, body.lab2-app .admin-last-report svg, body.lab2-app .admin-backup-row svg, body.lab2-app .admin-protection-panel svg, body.lab2-app .admin-protection-list svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
body.lab2-app .admin-last-report { display: grid; grid-template-columns: auto minmax(0,1fr); gap: 12px; align-items: center; margin-top: 12px; padding: 12px 14px; color: #26745b; background: #ecfaf5; border: 1px solid #c8ebdf; border-radius: 14px; }
body.lab2-app .admin-last-report.has-errors { color: #8a641e; background: #fff8e9; border-color: #f1dfb8; }
body.lab2-app .admin-last-report-icon { width: 36px; height: 36px; display: grid; place-items: center; background: rgba(255,255,255,.75); border-radius: 11px; }
body.lab2-app .admin-last-report strong, body.lab2-app .admin-last-report small { display: block; }
body.lab2-app .admin-last-report small { margin-top: 2px; opacity: .78; }
body.lab2-app .admin-update-grid { display: grid; grid-template-columns: minmax(0,1.35fr) minmax(320px,.65fr); gap: 12px; margin-top: 12px; }
body.lab2-app .admin-backup-list { display: grid; gap: 8px; }
body.lab2-app .admin-backup-row { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 12px; align-items: center; padding: 10px 11px; background: #fff; border: 1px solid #e0ebf2; border-radius: 12px; }
body.lab2-app .admin-backup-row strong, body.lab2-app .admin-backup-row span, body.lab2-app .admin-backup-row code { display: block; }
body.lab2-app .admin-backup-row strong { color: #35586e; font-size: 12px; }
body.lab2-app .admin-backup-row span { margin-top: 2px; color: #8397a4; font-size: 10px; }
body.lab2-app .admin-backup-row code { margin-top: 3px; max-width: 100%; overflow: hidden; color: #8aa0ae; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
body.lab2-app .admin-backup-row button { min-height: 36px; display: inline-flex; align-items: center; gap: 6px; padding: 0 10px; color: #536f81; background: #f3f8fb; border: 1px solid #d8e6ef; border-radius: 10px; font-size: 10px; font-weight: 820; }
body.lab2-app .admin-backup-row button:hover { color: #1689b4; border-color: #acd9e8; background: #eefaff; }
body.lab2-app .admin-protection-panel .panel-head > svg { color: #6a59d4; }
body.lab2-app .admin-protection-panel .panel-body > p { margin: 0 0 12px; color: #728897; line-height: 1.5; }
body.lab2-app .admin-protection-list { display: grid; gap: 8px; }
body.lab2-app .admin-protection-list span { display: grid; grid-template-columns: auto minmax(0,1fr); gap: 8px; align-items: center; padding: 9px 10px; color: #425f72; background: #fff; border: 1px solid #e0ebf2; border-radius: 11px; font-size: 11px; font-weight: 730; }
body.lab2-app .admin-protection-list svg { color: #18a373; }

@media (max-width: 980px) {
    body.lab2-app .admin-update-grid { grid-template-columns: 1fr; }
    body.lab2-app .admin-version-card { min-width: 330px; }
}
@media (max-width: 820px) {
    body.lab2-app .topbar-actions .palette { grid-column: 1; grid-row: 1; }
    body.lab2-app .topbar-actions .update-launch { grid-column: 2; grid-row: 1; justify-self: end; }
    body.lab2-app .topbar-actions .profile { grid-row: 2; }
    body.lab2-app .lab2-update-modal { place-items: end stretch; padding: 0; }
    body.lab2-app .lab2-update-dialog { width: 100%; max-height: calc(100dvh - 12px); border-radius: 22px 22px 0 0; }
    body.lab2-app .admin-update-hero { align-items: stretch; flex-direction: column; padding: 16px; }
    body.lab2-app .admin-update-hero h2 { font-size: 21px; }
    body.lab2-app .admin-version-card { min-width: 0; width: 100%; }
}
@media (max-width: 520px) {
    body.lab2-app .lab2-update-form { padding-inline: 14px; }
    body.lab2-app .lab2-update-actions { align-items: stretch; flex-direction: column-reverse; }
    body.lab2-app .lab2-update-submit { width: 100%; }
    body.lab2-app .lab2-update-admin-link { min-height: 34px; }
    body.lab2-app .admin-version-card { grid-template-columns: minmax(0,1fr); }
    body.lab2-app .admin-version-card > button { grid-column: 1; grid-row: 3; margin-top: 7px; justify-content: center; }
    body.lab2-app .admin-backup-row button span { display: none; }
}

/* ============================================================
   LAB2 v0.57 — âmbito seguro por consultor
   ============================================================ */
body.lab2-app .scope-switch {
    min-width: 138px;
    max-width: 178px;
    height: 36px;
    display: inline-grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    gap: 7px;
    padding: 0 8px 0 9px;
    color: #315c73;
    background: #f5fbfe;
    border: 1px solid #d5e9f2;
    border-radius: 12px;
    box-shadow: 0 7px 18px rgba(27, 92, 126, .06);
}
body.lab2-app .scope-switch-icon {
    width: 20px;
    height: 20px;
    display: grid;
    place-items: center;
    color: var(--accent);
}
body.lab2-app .scope-switch-icon svg {
    width: 17px;
    height: 17px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.9;
    stroke-linecap: round;
    stroke-linejoin: round;
}
body.lab2-app .scope-switch select {
    width: 100%;
    min-width: 0;
    height: 32px;
    padding: 0 20px 0 0;
    overflow: hidden;
    color: #315c73;
    background: transparent;
    border: 0;
    outline: 0;
    font: 800 11px/1 Rubik, sans-serif;
    text-overflow: ellipsis;
    cursor: pointer;
}
body.lab2-app .scope-switch:focus-within {
    border-color: color-mix(in srgb, var(--accent) 45%, #cfe3ed);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 12%, transparent);
}

@media (max-width: 820px) {
    body.lab2-app .topbar-actions .scope-switch {
        grid-column: 1 / -1;
        grid-row: 1;
        width: 100%;
        max-width: none;
        min-height: 42px;
    }
    body.lab2-app .topbar-actions .palette { grid-row: 2; }
    body.lab2-app .topbar-actions .update-launch { grid-row: 2; }
    body.lab2-app .topbar-actions .profile { grid-row: 3; }
}

/* ============================================================
   LAB2 v0.59 — perfil e administração essenciais
   ============================================================ */

body.lab2-app button.profile { appearance: none; font-family: inherit; cursor: pointer; }
body.lab2-app button.profile:hover,
body.lab2-app button.profile.active { color: #0f7da8; border-color: #acd9e8; background: #f4fbff; }

body.lab2-app .account-hero {
    display: grid;
    grid-template-columns: auto minmax(0,1fr) auto;
    gap: 16px;
    align-items: center;
    margin-bottom: 16px;
    padding: 18px;
    background: linear-gradient(135deg, rgba(255,255,255,.98), rgba(239,249,254,.98));
    border: 1px solid #dceaf2;
    border-radius: 20px;
    box-shadow: 0 18px 48px rgba(42, 94, 123, .08);
}
body.lab2-app .account-hero-photo { width: 74px; height: 74px; object-fit: cover; border: 4px solid #fff; border-radius: 22px; box-shadow: 0 10px 28px rgba(28, 87, 119, .15); }
body.lab2-app .account-hero h2 { margin: 2px 0 4px; color: #264a61; font-size: 24px; }
body.lab2-app .account-hero p { margin: 0; color: #6d8797; font-size: 12px; }
body.lab2-app .account-role-badge { padding: 8px 11px; color: #5e4cc5; background: #f1edff; border: 1px solid #ddd5ff; border-radius: 999px; font-size: 10px; font-weight: 850; }
body.lab2-app .account-grid { display: grid; grid-template-columns: minmax(0,1.25fr) minmax(330px,.75fr); gap: 14px; align-items: start; }
body.lab2-app .account-panel { overflow: hidden; }
body.lab2-app .account-panel .panel-head { min-height: 65px; }
body.lab2-app .account-panel .panel-head .ui-action-icon { color: var(--accent); }
body.lab2-app .account-details-panel { grid-row: span 2; }
body.lab2-app .account-form { display: grid; gap: 13px; padding: 15px; }
body.lab2-app .account-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 12px; }
body.lab2-app .account-form label,
body.lab2-app .admin-user-dialog label { display: grid; gap: 6px; color: #536f81; font-size: 10px; font-weight: 790; }
body.lab2-app .account-form label > span,
body.lab2-app .admin-user-dialog label > span { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
body.lab2-app .account-form label small,
body.lab2-app .admin-user-dialog label small { color: #95a6b2; font-size: 9px; font-weight: 650; }
body.lab2-app .account-form input,
body.lab2-app .account-form select,
body.lab2-app .account-form textarea,
body.lab2-app .admin-user-dialog input,
body.lab2-app .admin-user-dialog select {
    width: 100%;
    min-height: 40px;
    padding: 9px 11px;
    color: #294b61;
    background: #fff;
    border: 1px solid #d8e6ee;
    border-radius: 11px;
    outline: 0;
    font: 650 12px/1.35 Rubik, sans-serif;
    transition: border-color .16s ease, box-shadow .16s ease;
}
body.lab2-app .account-form textarea { min-height: 82px; resize: vertical; }
body.lab2-app .account-form input:focus,
body.lab2-app .account-form select:focus,
body.lab2-app .account-form textarea:focus,
body.lab2-app .admin-user-dialog input:focus,
body.lab2-app .admin-user-dialog select:focus { border-color: color-mix(in srgb, var(--accent) 52%, #bdd8e5); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 11%, transparent); }
body.lab2-app .account-form-actions { display: flex; justify-content: flex-end; gap: 9px; margin-top: 2px; }
body.lab2-app .account-primary,
body.lab2-app .account-button-link { min-height: 38px; display: inline-flex; align-items: center; justify-content: center; gap: 7px; padding: 0 14px; color: #fff; background: linear-gradient(135deg, var(--accent), var(--accent-2)); border: 0; border-radius: 11px; box-shadow: 0 9px 22px color-mix(in srgb, var(--accent) 20%, transparent); font: 800 11px/1 Rubik, sans-serif; text-decoration: none; cursor: pointer; }
body.lab2-app .account-primary:hover,
body.lab2-app .account-button-link:hover { transform: translateY(-1px); filter: saturate(1.06); }
body.lab2-app .account-primary:disabled { opacity: .55; cursor: wait; }
body.lab2-app .account-link-danger { min-height: 36px; padding: 0 10px; color: #b45259; background: #fff7f7; border: 1px solid #f0d4d6; border-radius: 10px; font: 780 10px/1 Rubik, sans-serif; cursor: pointer; }
body.lab2-app .account-inline-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
body.lab2-app .account-media-panel { padding-bottom: 2px; }
body.lab2-app .account-media-block { display: grid; grid-template-columns: 108px minmax(0,1fr); gap: 13px; align-items: center; padding: 14px; border-top: 1px solid #e7eff4; }
body.lab2-app .account-media-block:first-of-type { border-top: 0; }
body.lab2-app .account-media-preview { min-height: 88px; display: grid; place-items: center; overflow: hidden; color: #8296a4; background: #f6fafc; border: 1px dashed #cddfe8; border-radius: 14px; text-align: center; font-size: 10px; }
body.lab2-app .account-photo-preview img { width: 88px; height: 88px; object-fit: cover; border-radius: 13px; }
body.lab2-app .account-signature-preview { grid-column: 1 / -1; min-height: 100px; padding: 10px; background: #fff; }
body.lab2-app .account-signature-preview img { max-width: 100%; max-height: 130px; object-fit: contain; }
body.lab2-app .account-signature-block { grid-template-columns: 1fr; }
body.lab2-app .account-file-picker { display: grid; gap: 4px; padding: 10px 11px; color: #3c6177; background: #f7fbfd; border: 1px solid #dbe9f0; border-radius: 11px; cursor: pointer; }
body.lab2-app .account-file-picker input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
body.lab2-app .account-file-picker span { font-size: 11px; font-weight: 820; }
body.lab2-app .account-file-picker small { color: #8ca0ad; font-size: 9px; }
body.lab2-app .account-media-block form { display: grid; gap: 8px; }
body.lab2-app .account-microsoft-panel { border-color: #f0dcc4; }
body.lab2-app .account-microsoft-panel.is-linked { border-color: #cae9de; }
body.lab2-app .account-ms-dot { width: 13px; height: 13px; background: #dca25d; border: 3px solid #fff3e4; border-radius: 50%; box-shadow: 0 0 0 1px #e9c99e; }
body.lab2-app .account-microsoft-panel.is-linked .account-ms-dot { background: #1fa574; border-color: #e6f8f1; box-shadow: 0 0 0 1px #bfe5d6; }
body.lab2-app .account-ms-status { padding: 15px 15px 8px; }
body.lab2-app .account-ms-status strong { color: #31566c; font-size: 14px; }
body.lab2-app .account-ms-status p { margin: 5px 0 0; color: #778d9b; font-size: 11px; line-height: 1.45; }
body.lab2-app .account-microsoft-panel > .account-inline-actions { padding: 8px 15px 15px; }

body.lab2-app .admin-main-hero .admin-version-card small { grid-column: 1 / -1; color: #8ca0ac; font-size: 9px; }
body.lab2-app .admin-tabs { display: flex; gap: 7px; margin-bottom: 14px; padding: 6px; overflow-x: auto; background: rgba(255,255,255,.86); border: 1px solid #dce9f1; border-radius: 14px; box-shadow: 0 9px 24px rgba(43, 94, 123, .05); }
body.lab2-app .admin-tabs button { min-height: 38px; display: inline-flex; align-items: center; gap: 7px; padding: 0 13px; color: #607b8c; background: transparent; border: 0; border-radius: 10px; font: 800 10px/1 Rubik, sans-serif; white-space: nowrap; cursor: pointer; }
body.lab2-app .admin-tabs button.active { color: #fff; background: linear-gradient(135deg, var(--accent), var(--accent-2)); box-shadow: 0 7px 17px color-mix(in srgb, var(--accent) 18%, transparent); }
body.lab2-app .admin-tabs .ui-action-icon { width: 18px; height: 18px; }
body.lab2-app .admin-tab-panel { display: none; }
body.lab2-app .admin-tab-panel.active { display: block; animation: lab2AdminTabIn .18s ease; }
@keyframes lab2AdminTabIn { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: none; } }
body.lab2-app .admin-section-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 12px; padding: 3px 2px; }
body.lab2-app .admin-section-head h3 { margin: 2px 0 3px; color: #2b5067; font-size: 19px; }
body.lab2-app .admin-section-head p { margin: 0; color: #7b909d; font-size: 11px; }
body.lab2-app .admin-user-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 12px; }
body.lab2-app .admin-user-card { display: grid; gap: 10px; padding: 14px; background: #fff; border: 1px solid #dfeaf1; border-radius: 17px; box-shadow: 0 12px 28px rgba(40, 91, 120, .06); }
body.lab2-app .admin-user-card.is-inactive { opacity: .62; filter: grayscale(.2); }
body.lab2-app .admin-user-card-head { display: grid; grid-template-columns: auto minmax(0,1fr) auto; gap: 10px; align-items: center; }
body.lab2-app .admin-user-card-head img { width: 43px; height: 43px; object-fit: cover; border-radius: 13px; }
body.lab2-app .admin-user-card-head strong { display: block; overflow: hidden; color: #31566c; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
body.lab2-app .admin-user-card-head span { display: block; margin-top: 2px; overflow: hidden; color: #899ca8; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
body.lab2-app .admin-user-card-head em { padding: 5px 7px; color: #657d8d; background: #f3f7fa; border-radius: 999px; font-size: 8px; font-style: normal; font-weight: 850; text-transform: uppercase; }
body.lab2-app .admin-user-card-head em.is-admin { color: #654fc8; background: #f0ecff; }
body.lab2-app .admin-user-email { margin: 0; overflow: hidden; color: #718794; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
body.lab2-app .admin-user-stats { display: grid; grid-template-columns: repeat(3,1fr); gap: 6px; }
body.lab2-app .admin-user-stats span { padding: 7px 5px; color: #8296a3; background: #f6fafc; border-radius: 9px; text-align: center; font-size: 8px; }
body.lab2-app .admin-user-stats strong { display: block; margin-bottom: 2px; color: #385e74; font-size: 13px; }
body.lab2-app .admin-user-ms { display: flex; align-items: center; gap: 6px; color: #8a9ba6; font-size: 9px; }
body.lab2-app .admin-user-ms span { width: 7px; height: 7px; background: #c7d1d7; border-radius: 50%; }
body.lab2-app .admin-user-ms.is-linked { color: #338163; }
body.lab2-app .admin-user-ms.is-linked span { background: #22a777; }
body.lab2-app .admin-user-actions { display: flex; align-items: center; gap: 7px; padding-top: 2px; }
body.lab2-app .admin-user-actions button { min-height: 32px; padding: 0 9px; color: #506f82; background: #f3f8fb; border: 1px solid #d8e6ee; border-radius: 9px; font: 780 9px/1 Rubik, sans-serif; cursor: pointer; }
body.lab2-app .admin-user-actions button.is-danger { color: #ad535a; background: #fff7f7; border-color: #efd7d9; }
body.lab2-app .admin-user-actions button.is-success { color: #27805d; background: #f1fbf7; border-color: #cde8dc; }
body.lab2-app .admin-user-actions > span { margin-left: auto; color: #91a2ad; font-size: 9px; }
body.lab2-app .admin-config-status { padding: 7px 10px; color: #9a713c; background: #fff8ee; border: 1px solid #efdabc; border-radius: 999px; font-size: 9px; font-weight: 850; }
body.lab2-app .admin-config-status.is-ok { color: #237b59; background: #eefaf5; border-color: #cce8dc; }
body.lab2-app .admin-ms-config-card { max-width: 860px; }
body.lab2-app .admin-ms-info { display: grid; gap: 7px; padding: 11px; color: #718895; background: #f6fafc; border: 1px solid #e0ebf1; border-radius: 11px; font-size: 10px; }
body.lab2-app .admin-ms-info code { overflow-wrap: anywhere; color: #496c80; }

body.has-admin-user-modal { overflow: hidden; }
body.lab2-app .admin-user-modal { position: fixed; inset: 0; z-index: 29000; display: grid; place-items: center; padding: 16px; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .18s ease, visibility .18s ease; }
body.lab2-app .admin-user-modal[hidden] { display: none; }
body.lab2-app .admin-user-modal.is-open { opacity: 1; visibility: visible; pointer-events: auto; }
body.lab2-app .admin-user-modal-backdrop { position: absolute; inset: 0; background: rgba(24,44,61,.42); backdrop-filter: blur(9px); }
body.lab2-app .admin-user-dialog { position: relative; width: min(650px, calc(100vw - 28px)); display: grid; gap: 14px; padding: 17px; background: #fbfdff; border: 1px solid rgba(255,255,255,.92); border-radius: 21px; box-shadow: 0 30px 90px rgba(22,55,80,.31); }
body.lab2-app .admin-user-dialog header { display: flex; align-items: center; justify-content: space-between; gap: 15px; padding-bottom: 12px; border-bottom: 1px solid #e2ecf2; }
body.lab2-app .admin-user-dialog header h3 { margin: 2px 0 0; color: #2d5269; font-size: 20px; }
body.lab2-app .admin-user-dialog header button { width: 36px; height: 36px; padding: 0; color: #6d8493; background: #eef4f7; border: 1px solid #dce7ed; border-radius: 10px; font-size: 23px; }
body.lab2-app .admin-active-check { display: flex !important; grid-template-columns: auto 1fr; align-items: center; justify-content: flex-start !important; gap: 8px !important; }
body.lab2-app .admin-active-check input { width: 17px; min-height: 17px; }
body.lab2-app .admin-user-dialog footer { display: flex; justify-content: flex-end; gap: 8px; padding-top: 3px; }
body.lab2-app .admin-user-dialog footer > button:not(.account-primary) { min-height: 38px; padding: 0 12px; color: #607987; background: #f2f7f9; border: 1px solid #dce8ee; border-radius: 10px; font: 780 10px/1 Rubik, sans-serif; }

@media (max-width: 1120px) {
    body.lab2-app .admin-user-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 900px) {
    body.lab2-app .account-grid { grid-template-columns: 1fr; }
    body.lab2-app .account-details-panel { grid-row: auto; }
}
@media (max-width: 820px) {
    body.lab2-app .topbar-actions .admin-launch { grid-column: 2; grid-row: 2; justify-self: start; }
    body.lab2-app .topbar-actions .update-launch { grid-column: 2; grid-row: 2; justify-self: end; }
    body.lab2-app .topbar-actions .profile { grid-row: 3; }
    body.lab2-app .account-hero { grid-template-columns: auto minmax(0,1fr); }
    body.lab2-app .account-role-badge { grid-column: 1 / -1; justify-self: start; }
    body.lab2-app .admin-user-modal { place-items: end stretch; padding: 0; }
    body.lab2-app .admin-user-dialog { width: 100%; max-height: calc(100dvh - 10px); overflow-y: auto; border-radius: 21px 21px 0 0; }
}
@media (max-width: 650px) {
    body.lab2-app .account-form-grid { grid-template-columns: 1fr; }
    body.lab2-app .admin-user-grid { grid-template-columns: 1fr; }
    body.lab2-app .admin-section-head { align-items: stretch; flex-direction: column; }
    body.lab2-app .admin-section-head > .account-primary { width: 100%; }
}
@media (max-width: 480px) {
    body.lab2-app .account-hero { gap: 11px; padding: 14px; }
    body.lab2-app .account-hero-photo { width: 61px; height: 61px; border-radius: 18px; }
    body.lab2-app .account-hero h2 { font-size: 20px; }
    body.lab2-app .account-media-block { grid-template-columns: 1fr; }
    body.lab2-app .account-photo-preview { width: 100%; }
    body.lab2-app .account-inline-actions { align-items: stretch; flex-direction: column; }
    body.lab2-app .account-inline-actions > * { width: 100%; }
    body.lab2-app .admin-tabs button { flex: 1 0 auto; justify-content: center; }
}

/* LAB2 v0.61 — perfil equilibrado, WebTop compacto e administração de cursos */
body.lab2-app .account-details-panel { grid-column: 1; grid-row: 1; }
body.lab2-app .account-media-panel { grid-column: 2; grid-row: 1; }
body.lab2-app .account-microsoft-panel { grid-column: 1; grid-row: 2; align-self: start; }
body.lab2-app .account-password-panel { grid-column: 2; grid-row: 2; align-self: start; }
body.lab2-app .account-inline-actions > button:not(.account-link-danger) {
    min-height: 36px;
    padding: 0 11px;
    color: #3e657a;
    background: #f2f8fb;
    border: 1px solid #d7e6ee;
    border-radius: 10px;
    font: 780 10px/1 Rubik, sans-serif;
    cursor: pointer;
}
body.lab2-app .account-inline-actions > button:not(.account-link-danger):hover {
    color: #147fa6;
    border-color: #b9dce9;
    background: #f7fcff;
}

/* Importar WebTop */
body.lab2-app .webtop-compact-hero {
    display: grid;
    grid-template-columns: minmax(0,1fr) minmax(220px,310px);
    gap: 16px;
    align-items: stretch;
    margin-bottom: 14px;
    padding: 20px;
    background:
        radial-gradient(circle at 80% 15%, color-mix(in srgb, var(--accent) 12%, transparent), transparent 34%),
        linear-gradient(135deg, rgba(255,255,255,.98), rgba(239,249,254,.97));
    border: 1px solid #d9e9f1;
    border-radius: 21px;
    box-shadow: 0 18px 48px rgba(42,94,123,.08);
}
body.lab2-app .webtop-compact-copy h2 { margin: 3px 0 7px; color: #284d64; font-size: clamp(22px,2.5vw,32px); letter-spacing: -.025em; }
body.lab2-app .webtop-compact-copy > p:not(.label) { max-width: 760px; margin: 0; color: #6c8595; font-size: 12px; line-height: 1.65; }
body.lab2-app .webtop-compact-actions { display: flex; gap: 9px; flex-wrap: wrap; margin-top: 16px; }
body.lab2-app .webtop-compact-actions .account-button-link .ui-action-icon {
    width: 17px;
    height: 17px;
    color: currentColor;
    background: transparent;
    border-radius: 0;
}
body.lab2-app .webtop-compact-actions .account-button-link .ui-action-icon svg {
    width: 17px;
    height: 17px;
}
body.lab2-app .webtop-secondary-link,
body.lab2-app .webtop-panel-actions a,
body.lab2-app .webtop-panel-actions button {
    min-height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    padding: 0 12px;
    color: #4c6f82;
    background: rgba(255,255,255,.84);
    border: 1px solid #d6e5ed;
    border-radius: 11px;
    font: 790 10px/1 Rubik,sans-serif;
    text-decoration: none;
    cursor: pointer;
}
body.lab2-app .webtop-secondary-link:hover,
body.lab2-app .webtop-panel-actions a:hover,
body.lab2-app .webtop-panel-actions button:hover { color: #147fa6; border-color: #aed9e8; background: #f8fdff; }
body.lab2-app .webtop-secondary-link .ui-action-icon,
body.lab2-app .webtop-panel-actions .ui-action-icon { width: 17px; height: 17px; }
body.lab2-app .webtop-script-card {
    position: relative;
    min-height: 138px;
    display: grid;
    grid-template-columns: auto minmax(0,1fr);
    gap: 12px;
    align-content: center;
    padding: 18px;
    overflow: hidden;
    background: rgba(255,255,255,.78);
    border: 1px solid #d8e8ef;
    border-radius: 18px;
}
body.lab2-app .webtop-script-card::after { content:""; position:absolute; width:115px; height:115px; right:-46px; bottom:-54px; background:color-mix(in srgb,var(--accent) 13%,transparent); border-radius:50%; }
body.lab2-app .webtop-script-status-dot { width: 14px; height: 14px; margin-top: 4px; background: #d6a051; border: 4px solid #fff2dd; border-radius: 50%; box-shadow: 0 0 0 1px #e8c998; }
body.lab2-app .webtop-script-card.is-ok .webtop-script-status-dot { background:#21a876; border-color:#e5f8f0; box-shadow:0 0 0 1px #bde4d5; }
body.lab2-app .webtop-script-card small { display:block; color:#8599a5; font-size:9px; font-weight:750; text-transform:uppercase; letter-spacing:.08em; }
body.lab2-app .webtop-script-card strong { display:block; margin-top:4px; color:#2d536a; font-size:27px; }
body.lab2-app .webtop-script-card em { grid-column:1/-1; justify-self:start; padding:6px 9px; color:#8b682e; background:#fff7e9; border-radius:999px; font-size:9px; font-style:normal; font-weight:820; }
body.lab2-app .webtop-script-card.is-ok em { color:#26795b; background:#edf9f4; }
body.lab2-app .webtop-status-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin-bottom:14px; }
body.lab2-app .webtop-status-body { display:grid; gap:0; padding:7px 15px 15px; }
body.lab2-app .webtop-status-line { display:flex; justify-content:space-between; gap:14px; padding:10px 0; border-bottom:1px solid #e8eff3; }
body.lab2-app .webtop-status-line span { color:#8195a2; font-size:10px; }
body.lab2-app .webtop-status-line strong { color:#345b71; font-size:11px; text-align:right; }
body.lab2-app .webtop-status-body > p { margin:12px 0 0; color:#7b909d; font-size:10px; line-height:1.55; }
body.lab2-app .webtop-step-list { display:grid; gap:9px; margin:0; padding:11px 15px 15px; list-style:none; }
body.lab2-app .webtop-step-list li { display:grid; grid-template-columns:auto minmax(0,1fr); gap:10px; align-items:center; padding:9px; background:#f7fafc; border:1px solid #e3edf2; border-radius:11px; }
body.lab2-app .webtop-step-list li > span { width:28px; height:28px; display:grid; place-items:center; color:#fff; background:linear-gradient(135deg,var(--accent),var(--accent-2)); border-radius:9px; font-size:10px; font-weight:850; }
body.lab2-app .webtop-step-list strong { display:block; color:#355b71; font-size:10px; }
body.lab2-app .webtop-step-list small { display:block; margin-top:2px; color:#8497a3; font-size:9px; line-height:1.4; }
body.lab2-app .webtop-captures-panel .panel-head { align-items:center; }
body.lab2-app .webtop-panel-actions { display:flex; gap:7px; flex-wrap:wrap; justify-content:flex-end; }
body.lab2-app .webtop-panel-actions button:disabled { opacity:.55; cursor:wait; }
body.lab2-app .webtop-capture-list { display:grid; gap:8px; }
body.lab2-app .webtop-capture-row { display:grid; grid-template-columns:auto minmax(0,1fr) auto auto; gap:11px; align-items:center; padding:11px; background:#f8fbfd; border:1px solid #e1ebf1; border-radius:12px; }
body.lab2-app .webtop-capture-icon { width:31px; height:31px; display:grid; place-items:center; color:#178cb4; background:#eaf7fc; border-radius:10px; }
body.lab2-app .webtop-capture-icon .ui-action-icon { width:17px; height:17px; }
body.lab2-app .webtop-capture-row strong { display:block; color:#355b71; font-size:10px; }
body.lab2-app .webtop-capture-row small { display:block; margin-top:2px; color:#8a9ca7; font-size:9px; }
body.lab2-app .webtop-capture-row em { padding:5px 7px; border-radius:999px; font-size:8px; font-style:normal; font-weight:820; text-transform:uppercase; }
body.lab2-app .webtop-capture-row em.importada { color:#237958; background:#eaf8f2; }
body.lab2-app .webtop-capture-row em.recebida { color:#8a6b35; background:#fff6e8; }
body.lab2-app .webtop-capture-row em.ignorada { color:#7d8790; background:#edf1f4; }
body.lab2-app .webtop-capture-row time { color:#8396a2; font-size:9px; white-space:nowrap; }

/* Administração de cursos */
body.lab2-app .admin-course-overview { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin-bottom:12px; }
body.lab2-app .admin-course-overview article { display:grid; grid-template-columns:auto minmax(0,1fr); gap:10px; align-items:center; padding:12px; background:#fff; border:1px solid #deebf1; border-radius:14px; box-shadow:0 10px 25px rgba(41,91,119,.05); }
body.lab2-app .admin-course-overview article > span { width:36px; height:36px; display:grid; place-items:center; color:#1489b1; background:#eaf7fc; border-radius:11px; }
body.lab2-app .admin-course-overview .ui-action-icon { width:19px; height:19px; }
body.lab2-app .admin-course-overview small { display:block; color:#8b9da8; font-size:9px; }
body.lab2-app .admin-course-overview strong { display:block; margin-top:3px; color:#31566c; font-size:15px; }
body.lab2-app .admin-course-tools { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin-bottom:14px; }
body.lab2-app .admin-course-tool { overflow:hidden; }
body.lab2-app .admin-course-tool.is-busy { opacity:.68; pointer-events:none; }
body.lab2-app .admin-course-tool-body { display:grid; gap:11px; padding:14px; }
body.lab2-app .admin-course-tool-body > p { min-height:45px; margin:0; color:#748b99; font-size:10px; line-height:1.5; }
body.lab2-app .admin-course-tool-body .account-primary { width:100%; }
body.lab2-app .admin-course-rebuild-info { display:flex; justify-content:space-between; gap:12px; min-height:58px; align-items:center; padding:10px; color:#7d919d; background:#f6fafc; border:1px solid #e0ebf1; border-radius:11px; font-size:9px; }
body.lab2-app .admin-course-rebuild-info strong { color:#3a6075; font-size:10px; text-align:right; }
body.lab2-app .admin-course-list-panel { overflow:hidden; }
body.lab2-app .admin-course-search { min-width:250px; display:flex; align-items:center; gap:7px; padding:0 10px; background:#f6fafc; border:1px solid #dce8ee; border-radius:10px; }
body.lab2-app .admin-course-search .ui-action-icon { width:16px; height:16px; color:#7690a0; }
body.lab2-app .admin-course-search input { width:100%; min-height:34px; padding:0; color:#355a70; background:transparent; border:0; outline:0; font:650 10px/1 Rubik,sans-serif; }
body.lab2-app .admin-course-list { display:grid; max-height:620px; overflow-y:auto; }
body.lab2-app .admin-course-row { display:grid; grid-template-columns:minmax(230px,1fr) 150px 88px 80px; gap:12px; align-items:end; padding:11px 14px; border-top:1px solid #e8eff3; transition:opacity .16s ease,background .16s ease; }
body.lab2-app .admin-course-row:first-child { border-top:0; }
body.lab2-app .admin-course-row:hover { background:#fbfdfe; }
body.lab2-app .admin-course-row.is-inactive { opacity:.58; background:#f8f9fa; }
body.lab2-app .admin-course-row[hidden] { display:none; }
body.lab2-app .admin-course-name strong { display:block; color:#345a70; font-size:10px; line-height:1.35; }
body.lab2-app .admin-course-name small { display:block; margin-top:3px; color:#91a1ab; font-size:8px; text-transform:uppercase; }
body.lab2-app .admin-course-row > label { display:grid; gap:5px; color:#6c8493; font-size:8px; font-weight:780; }
body.lab2-app .admin-course-money { display:flex; align-items:center; overflow:hidden; background:#fff; border:1px solid #dce8ee; border-radius:9px; }
body.lab2-app .admin-course-money input { width:100%; min-height:34px; padding:0 8px; color:#365c72; background:transparent; border:0; outline:0; font:700 10px/1 Rubik,sans-serif; }
body.lab2-app .admin-course-money em { padding-right:8px; color:#8497a3; font-size:9px; font-style:normal; }
body.lab2-app .admin-course-active { display:flex !important; align-items:center; gap:7px !important; min-height:34px; padding:0 8px; background:#f5f9fb; border:1px solid #dfe9ef; border-radius:9px; }
body.lab2-app .admin-course-active input { width:15px; height:15px; }
body.lab2-app .admin-course-row > button { min-height:34px; color:#fff; background:linear-gradient(135deg,var(--accent),var(--accent-2)); border:0; border-radius:9px; font:790 9px/1 Rubik,sans-serif; cursor:pointer; }
body.lab2-app .admin-course-row > button:disabled { opacity:.55; cursor:wait; }

@media (max-width: 1050px) {
    body.lab2-app .admin-course-tools { grid-template-columns:1fr; }
    body.lab2-app .admin-course-tool-body > p { min-height:0; }
}
@media (max-width: 900px) {
    body.lab2-app .account-details-panel,
    body.lab2-app .account-media-panel,
    body.lab2-app .account-microsoft-panel,
    body.lab2-app .account-password-panel { grid-column:auto; grid-row:auto; }
    body.lab2-app .webtop-compact-hero { grid-template-columns:1fr; }
    body.lab2-app .webtop-status-grid { grid-template-columns:1fr; }
    body.lab2-app .admin-course-overview { grid-template-columns:1fr; }
    body.lab2-app .admin-course-row { grid-template-columns:minmax(0,1fr) 130px 82px 72px; }
}
@media (max-width: 700px) {
    body.lab2-app .webtop-compact-actions,
    body.lab2-app .webtop-panel-actions { align-items:stretch; flex-direction:column; }
    body.lab2-app .webtop-compact-actions > *,
    body.lab2-app .webtop-panel-actions > * { width:100%; }
    body.lab2-app .webtop-capture-row { grid-template-columns:auto minmax(0,1fr) auto; }
    body.lab2-app .webtop-capture-row time { grid-column:2 / -1; }
    body.lab2-app .admin-course-list-panel .panel-head { align-items:stretch; flex-direction:column; }
    body.lab2-app .admin-course-search { min-width:0; width:100%; }
    body.lab2-app .admin-course-row { grid-template-columns:1fr 1fr; }
    body.lab2-app .admin-course-name { grid-column:1/-1; }
    body.lab2-app .admin-course-row > button { min-height:38px; }
}

/* v0.62 — diagnóstico WebTop nativo e promoção do LAB2 a portal principal */

.webtop-native-diagnostic{overflow:hidden;margin-top:16px}
.webtop-native-diagnostic>summary{display:flex;align-items:center;gap:12px;padding:17px 19px;cursor:pointer;list-style:none;user-select:none}
.webtop-native-diagnostic>summary::-webkit-details-marker{display:none}
.webtop-diagnostic-summary-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:color-mix(in srgb,var(--accent) 12%,#fff);color:var(--accent)}
.webtop-diagnostic-summary-icon svg,.webtop-diagnostic-summary-arrow svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.webtop-native-diagnostic>summary>span:nth-child(2){display:grid;gap:2px;min-width:0}
.webtop-native-diagnostic>summary strong{font-size:14px;color:var(--ink)}
.webtop-native-diagnostic>summary small{font-size:11px;color:var(--muted)}
.webtop-diagnostic-summary-arrow{margin-left:auto;display:grid;place-items:center;color:var(--muted);transition:transform .2s ease}
.webtop-native-diagnostic[open] .webtop-diagnostic-summary-arrow{transform:rotate(90deg)}
.webtop-diagnostic-body{padding:0 19px 19px;border-top:1px solid var(--line)}
.webtop-diagnostic-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding-top:16px}
.webtop-diagnostic-check{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:13px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.62)}
.webtop-diagnostic-dot{width:9px;height:9px;border-radius:50%;background:#94a3b8;box-shadow:0 0 0 4px rgba(148,163,184,.12)}
.webtop-diagnostic-check.is-ok .webtop-diagnostic-dot{background:#10b981;box-shadow:0 0 0 4px rgba(16,185,129,.12)}
.webtop-diagnostic-check.is-warning .webtop-diagnostic-dot{background:#f59e0b;box-shadow:0 0 0 4px rgba(245,158,11,.12)}
.webtop-diagnostic-check>div{display:grid;gap:3px;min-width:0}
.webtop-diagnostic-check strong{font-size:12px;color:var(--ink)}
.webtop-diagnostic-check small{font-size:10px;line-height:1.45;color:var(--muted)}
.webtop-diagnostic-check em{font-size:10px;font-style:normal;font-weight:800;color:var(--ink);white-space:nowrap}
.webtop-diagnostic-totals{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.webtop-diagnostic-totals span{padding:7px 10px;border-radius:999px;background:var(--soft);font-size:10px;color:var(--muted)}
.webtop-diagnostic-totals strong{color:var(--ink)}
.webtop-diagnostic-note{margin:12px 0 0;font-size:10px;line-height:1.55;color:var(--muted)}
@media(max-width:780px){.webtop-diagnostic-checks{grid-template-columns:1fr}.webtop-diagnostic-check{grid-template-columns:auto minmax(0,1fr)}.webtop-diagnostic-check em{grid-column:2;white-space:normal}}

/* ============================================================
   Portal v0.63 — topbar do administrador centrada e sem colisões
   ============================================================ */
body.lab2-app .page-context-row {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}

body.lab2-app .page-context-row h1 {
    flex: 0 0 auto;
}

body.lab2-app .scope-switch-context {
    position: relative;
    min-width: 142px;
    max-width: 176px;
    height: 32px;
    margin-top: 1px;
    border-radius: 10px;
    box-shadow: none;
}

body.lab2-app .scope-switch-context select {
    height: 29px;
    font-size: 10px;
}

/* A escolha do consultor pertence ao contexto dos dados e deixa de ocupar
   a zona de ações da topbar. Assim, a navegação conserva o centro real. */
body.lab2-app.is-admin .topbar-actions {
    min-width: 0;
    gap: 6px;
}

body.lab2-app.is-admin .lab-side nav {
    position: relative;
    z-index: 2;
}

@media (min-width: 1501px) {
    body.lab2-app.is-admin .topbar-main {
        grid-template-columns: minmax(170px, 1fr) auto minmax(430px, 1fr);
    }
}

/* Em resoluções intermédias, as ações administrativas ficam mais compactas,
   sem deslocar nem sobrepor o menu principal. */
@media (min-width: 1261px) and (max-width: 1700px) {
    body.lab2-app.is-admin .topbar-actions {
        gap: 4px;
    }
    body.lab2-app.is-admin .profile {
        padding-inline: 8px;
    }
    body.lab2-app.is-admin .lab-side nav button {
        padding-inline: 7px;
        gap: 5px;
    }
}

/* O seletor continua acessível em ecrãs estreitos através do ícone,
   sem ocupar a largura reservada ao título da página. */
@media (max-width: 1260px) {
    body.lab2-app .scope-switch-context {
        min-width: 36px;
        width: 36px;
        max-width: 36px;
        padding: 0;
        grid-template-columns: 1fr;
        overflow: hidden;
    }
    body.lab2-app .scope-switch-context .scope-switch-icon {
        justify-self: center;
    }
    body.lab2-app .scope-switch-context select {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        padding: 0;
        opacity: 0;
        cursor: pointer;
    }
}

@media (max-width: 680px) {
    body.lab2-app .page-context-row {
        gap: 7px;
    }
}

/* ============================================================
   Portal v0.66 — menu móvel nítido e atualização apenas por ícone
   ============================================================ */
@media (max-width: 820px) {
    /* O Safari/iOS pode aplicar o blur do backdrop também ao popover.
       O fundo continua escurecido, mas sem filtro, para manter o menu nítido. */
    body.lab2-app.mobile-menu-open::before {
        background: rgba(31, 52, 70, .20);
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
    }

    body.lab2-app .topbar-actions {
        opacity: 1;
        filter: none !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
        transform: translateZ(0);
    }

    body.lab2-app .topbar-actions .palette {
        grid-column: 1 / -1;
        grid-row: 1;
    }

    body.lab2-app .topbar-actions .admin-launch,
    body.lab2-app .topbar-actions .update-launch {
        grid-row: 2;
        display: inline-grid;
        place-items: center;
        width: 42px;
        min-width: 42px;
        height: 42px;
        min-height: 42px;
        padding: 0;
        border-radius: 12px;
    }

    body.lab2-app .topbar-actions .admin-launch {
        grid-column: 1;
        justify-self: start;
    }

    body.lab2-app .topbar-actions .update-launch {
        grid-column: 2;
        justify-self: end;
    }

    body.lab2-app .topbar-actions .update-launch:hover {
        transform: none;
    }

    body.lab2-app .topbar-actions .profile {
        grid-column: 1 / -1;
        grid-row: 3;
    }

    body.lab2-app .topbar-actions .portal-link {
        grid-column: 1;
        grid-row: 4;
    }

    body.lab2-app .topbar-actions .logout-link {
        grid-column: 2;
        grid-row: 4;
    }
}

/* ============================================================
   Portal v0.74 — scroll interno do modal de email
   ============================================================ */
body.lab2-app .course-email-dialog {
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
body.lab2-app .course-email-header {
    position: relative;
    top: auto;
    flex: 0 0 auto;
    border-radius: 17px 17px 0 0;
}
body.lab2-app .course-email-scroll {
    min-height: 0;
    flex: 1 1 auto;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
    scrollbar-width: thin;
    scrollbar-color: rgba(91, 119, 143, .55) transparent;
    margin-right: 5px;
    padding-right: 3px;
    padding-bottom: 6px;
}
body.lab2-app .course-email-scroll::-webkit-scrollbar { width: 10px; }
body.lab2-app .course-email-scroll::-webkit-scrollbar-track { background: transparent; }
body.lab2-app .course-email-scroll::-webkit-scrollbar-thumb {
    border: 3px solid transparent;
    border-radius: 999px;
    background: rgba(91, 119, 143, .55);
    background-clip: content-box;
}
body.lab2-app .course-email-scroll::-webkit-scrollbar-thumb:hover {
    background-color: rgba(63, 94, 120, .75);
}
@media (max-width: 680px) {
    body.lab2-app .course-email-header { border-radius: 0; }
    body.lab2-app .course-email-scroll { margin-right: 0; padding-right: 0; padding-bottom: 0; }
}

/* Portal v0.77 — atividade diária reservada a administradores */
body.lab2-app .admin-activity-head { align-items: end; }
body.lab2-app .admin-activity-date-controls { display: flex; align-items: end; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
body.lab2-app .admin-activity-date-controls label { display: grid; gap: 5px; }
body.lab2-app .admin-activity-date-controls label > span { color: #688194; font-size: 9px; font-weight: 900; text-transform: uppercase; letter-spacing: .06em; }
body.lab2-app .admin-activity-date-controls input { min-height: 38px; padding: 0 11px; color: #16364c; background: rgba(255,255,255,.95); border: 1px solid #cee0eb; border-radius: 11px; font: 800 11px/1 Rubik, sans-serif; outline: none; }
body.lab2-app .admin-activity-date-controls input:focus { border-color: color-mix(in srgb, var(--accent) 65%, #cee0eb); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 12%, transparent); }
body.lab2-app .admin-activity-date-controls button { min-height: 38px; padding: 0 13px; color: var(--accent); background: color-mix(in srgb, var(--accent) 7%, #fff); border: 1px solid color-mix(in srgb, var(--accent) 24%, #d9e6ee); border-radius: 11px; font: 900 10px/1 Rubik, sans-serif; cursor: pointer; }
body.lab2-app .admin-activity-kpis { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 10px; margin-bottom: 13px; }
body.lab2-app .admin-activity-kpis > article { min-width: 0; min-height: 116px; display: grid; grid-template-columns: 42px minmax(0,1fr); align-items: center; gap: 11px; padding: 15px; overflow: hidden; position: relative; background: rgba(255,255,255,.9); border: 1px solid #d9e8f1; border-radius: 17px; box-shadow: 0 10px 26px rgba(39,84,112,.055); }
body.lab2-app .admin-activity-kpis > article:after { content: ''; position: absolute; right: -27px; top: -32px; width: 96px; height: 96px; border-radius: 999px; background: color-mix(in srgb, var(--accent) 7%, transparent); pointer-events: none; }
body.lab2-app .admin-activity-kpis > article > span { width: 42px; height: 42px; display: grid; place-items: center; color: var(--accent); background: color-mix(in srgb, var(--accent) 9%, #fff); border-radius: 13px; }
body.lab2-app .admin-activity-kpis .ui-action-icon { width: 23px; height: 23px; }
body.lab2-app .admin-activity-kpis small, body.lab2-app .admin-activity-kpis strong, body.lab2-app .admin-activity-kpis em { display: block; min-width: 0; }
body.lab2-app .admin-activity-kpis small { color: #698194; font-size: 9px; font-weight: 900; text-transform: uppercase; letter-spacing: .055em; }
body.lab2-app .admin-activity-kpis strong { margin-top: 4px; color: #102b40; font-size: 29px; line-height: 1; font-weight: 950; letter-spacing: -.035em; }
body.lab2-app .admin-activity-kpis em { margin-top: 6px; overflow: hidden; color: #879baa; font-size: 9px; font-style: normal; line-height: 1.35; text-overflow: ellipsis; }
body.lab2-app .admin-activity-kpis .is-mail > span { color: #0788c4; background: #ebf8fe; }
body.lab2-app .admin-activity-kpis .is-phone > span { color: #0a9f7b; background: #eafbf5; }
body.lab2-app .admin-activity-kpis .is-total > span { color: #8256d8; background: #f3eefe; }
body.lab2-app .admin-activity-kpis .is-team > span { color: #d5741b; background: #fff4e8; }
body.lab2-app .admin-activity-panel { overflow: hidden; }
body.lab2-app .admin-activity-updated { color: #8295a4; font-size: 9px; font-weight: 800; white-space: nowrap; }
body.lab2-app .admin-activity-list { padding: 4px 14px; }
body.lab2-app .admin-activity-row { display: grid; grid-template-columns: minmax(250px,1fr) 120px 120px 82px 130px; align-items: center; gap: 10px; min-height: 67px; padding: 9px 0; border-bottom: 1px solid #e7f0f5; opacity: .62; }
body.lab2-app .admin-activity-row:last-child { border-bottom: 0; }
body.lab2-app .admin-activity-row.has-activity { opacity: 1; }
body.lab2-app .admin-activity-person { min-width: 0; display: flex; align-items: center; gap: 10px; }
body.lab2-app .admin-activity-person img { width: 38px; height: 38px; flex: 0 0 auto; object-fit: cover; border: 2px solid #fff; border-radius: 50%; box-shadow: 0 3px 12px rgba(29,77,107,.12); }
body.lab2-app .admin-activity-person div { min-width: 0; }
body.lab2-app .admin-activity-person strong, body.lab2-app .admin-activity-person small { display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
body.lab2-app .admin-activity-person strong { color: #17364c; font-size: 11px; }
body.lab2-app .admin-activity-person small { margin-top: 3px; color: #8297a6; font-size: 9px; }
body.lab2-app .admin-activity-count { display: flex; align-items: center; gap: 8px; }
body.lab2-app .admin-activity-count .ui-action-icon { width: 25px; height: 25px; padding: 5px; color: #1689bc; background: #edf8fd; border-radius: 8px; }
body.lab2-app .admin-activity-count.is-phone .ui-action-icon { color: #0b9b78; background: #eafaf5; }
body.lab2-app .admin-activity-count strong, body.lab2-app .admin-activity-count small { display: block; }
body.lab2-app .admin-activity-count strong { color: #17364c; font-size: 14px; line-height: 1; font-weight: 950; }
body.lab2-app .admin-activity-count small { margin-top: 3px; color: #8498a7; font-size: 8px; text-transform: uppercase; }
body.lab2-app .admin-activity-count.is-total { display: block; text-align: center; }
body.lab2-app .admin-activity-count.is-total strong { font-size: 18px; }
body.lab2-app .admin-activity-row time { color: #8297a6; font-size: 9px; font-weight: 800; text-align: right; }
body.lab2-app .admin-activity-note { display: flex; align-items: center; gap: 8px; min-height: 42px; padding: 9px 14px; color: #718a9b; background: #f6fafc; border-top: 1px solid #e3edf3; font-size: 9px; line-height: 1.4; }
body.lab2-app .admin-activity-note .ui-action-icon { width: 18px; height: 18px; flex: 0 0 auto; color: #1593c8; }
@media (max-width: 1120px) {
    body.lab2-app .admin-activity-kpis { grid-template-columns: repeat(2,minmax(0,1fr)); }
    body.lab2-app .admin-activity-row { grid-template-columns: minmax(210px,1fr) 100px 100px 70px; }
    body.lab2-app .admin-activity-row time { display: none; }
}
@media (max-width: 720px) {
    body.lab2-app .admin-activity-head { align-items: stretch; }
    body.lab2-app .admin-activity-date-controls { justify-content: stretch; }
    body.lab2-app .admin-activity-date-controls label { flex: 1; }
    body.lab2-app .admin-activity-date-controls input { width: 100%; }
    body.lab2-app .admin-activity-kpis { grid-template-columns: 1fr 1fr; }
    body.lab2-app .admin-activity-kpis > article { min-height: 105px; grid-template-columns: 35px minmax(0,1fr); padding: 12px; }
    body.lab2-app .admin-activity-kpis > article > span { width: 35px; height: 35px; }
    body.lab2-app .admin-activity-kpis strong { font-size: 24px; }
    body.lab2-app .admin-activity-list { padding: 3px 11px; }
    body.lab2-app .admin-activity-row { grid-template-columns: minmax(0,1fr) 54px 62px; gap: 7px; }
    body.lab2-app .admin-activity-count { justify-content: center; }
    body.lab2-app .admin-activity-count .ui-action-icon, body.lab2-app .admin-activity-count small { display: none; }
    body.lab2-app .admin-activity-count.is-total { display: none; }
    body.lab2-app .admin-activity-person img { width: 34px; height: 34px; }
}

/* ============================================================
   Portal v0.87 — navegação simplificada e Dashboard compacto
   ============================================================ */
body.lab2-app .topbar-main {
    grid-template-columns: minmax(150px, .9fr) auto minmax(178px, .9fr);
}
body.lab2-app .lab-side nav {
    justify-self: center;
}
body.lab2-app .topbar-actions {
    position: relative;
    display: flex;
    align-items: center;
    gap: 7px;
    min-width: 0;
}
body.lab2-app .theme-control,
body.lab2-app .user-control {
    position: relative;
}
body.lab2-app .theme-launch {
    width: 39px;
    min-width: 39px;
    height: 39px;
    min-height: 39px;
    display: inline-grid;
    grid-template-columns: 18px 12px;
    place-content: center;
    gap: 2px;
    padding: 0;
    color: var(--text, #29465f);
    background: color-mix(in srgb, var(--panel, #fff) 88%, transparent);
    border: 1px solid color-mix(in srgb, var(--accent) 22%, var(--line, #dbe8f2));
    border-radius: 12px;
    box-shadow: 0 7px 18px rgba(30,70,100,.08);
    cursor: pointer;
}
body.lab2-app .theme-launch-preview {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 12%, transparent);
}
body.lab2-app .theme-launch > svg {
    width: 12px;
    height: 12px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}
body.lab2-app .theme-launch:hover,
body.lab2-app .theme-launch[aria-expanded="true"] {
    transform: translateY(-1px);
    border-color: color-mix(in srgb, var(--accent) 48%, transparent);
    box-shadow: 0 10px 24px color-mix(in srgb, var(--accent) 16%, transparent);
}
body.lab2-app .user-menu-trigger {
    min-height: 39px;
    padding: 4px 8px 4px 5px;
    gap: 7px;
}
body.lab2-app .user-menu-chevron {
    width: 13px;
    height: 13px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
    transition: transform .16s ease;
}
body.lab2-app .user-menu-trigger[aria-expanded="true"] .user-menu-chevron {
    transform: rotate(180deg);
}
body.lab2-app .theme-popover,
body.lab2-app .user-popover {
    position: absolute;
    z-index: 920;
    top: calc(100% + 10px);
    right: 0;
    width: 270px;
    padding: 10px;
    color: var(--text, #17364c);
    background: color-mix(in srgb, var(--panel, #fff) 92%, transparent);
    border: 1px solid color-mix(in srgb, var(--accent) 20%, var(--line, #dbe8f2));
    border-radius: 17px;
    box-shadow: 0 24px 70px rgba(21,52,78,.22);
    backdrop-filter: blur(22px) saturate(140%);
    -webkit-backdrop-filter: blur(22px) saturate(140%);
}
body.lab2-app .user-popover { width: 320px; }
body.lab2-app .theme-popover[hidden],
body.lab2-app .user-popover[hidden] { display: none !important; }
body.lab2-app .topbar-popover-title {
    display: grid;
    gap: 2px;
    padding: 5px 7px 9px;
}
body.lab2-app .topbar-popover-title strong { font-size: 12px; }
body.lab2-app .topbar-popover-title span { color: var(--muted, #73899a); font-size: 9px; }
body.lab2-app .theme-option {
    width: 100% !important;
    height: auto !important;
    min-height: 49px;
    display: grid !important;
    grid-template-columns: 28px minmax(0,1fr);
    align-items: center;
    gap: 10px;
    padding: 7px 9px !important;
    color: var(--text, #17364c);
    background: transparent !important;
    border: 1px solid transparent !important;
    border-radius: 12px !important;
    box-shadow: none !important;
    text-align: left;
}
body.lab2-app .theme-option:hover,
body.lab2-app .theme-option.active {
    background: color-mix(in srgb, var(--accent) 9%, transparent) !important;
    border-color: color-mix(in srgb, var(--accent) 22%, transparent) !important;
    transform: none !important;
}
body.lab2-app .theme-option-dot {
    width: 25px;
    height: 25px;
    display: grid;
    place-items: center;
    color: #fff;
    border: 2px solid rgba(255,255,255,.78);
    border-radius: 50%;
    box-shadow: 0 4px 12px rgba(20,50,75,.15);
}
body.lab2-app .theme-option.swatch-cyan .theme-option-dot { background: linear-gradient(135deg,#20c4d8,#5ae3cf); }
body.lab2-app .theme-option.swatch-violet .theme-option-dot { background: linear-gradient(135deg,#8768e8,#d982d7); }
body.lab2-app .theme-option.swatch-ember .theme-option-dot { background: linear-gradient(135deg,#ff8f68,#ffc56d); }
body.lab2-app .theme-option.swatch-night .theme-option-dot { background: linear-gradient(135deg,#101a36,#3654a2); }
body.lab2-app .theme-option > span:last-child { display: grid; gap: 2px; min-width: 0; }
body.lab2-app .theme-option strong { color: inherit; font-size: 10px; }
body.lab2-app .theme-option small { color: var(--muted, #73899a); font-size: 8px; }
body.lab2-app .user-popover-head {
    display: grid;
    grid-template-columns: 42px minmax(0,1fr);
    align-items: center;
    gap: 10px;
    padding: 6px 7px 11px;
}
body.lab2-app .user-popover-head img {
    width: 42px;
    height: 42px;
    object-fit: cover;
    border: 2px solid color-mix(in srgb, var(--accent) 30%, #fff);
    border-radius: 13px;
}
body.lab2-app .user-popover-head div { min-width: 0; }
body.lab2-app .user-popover-head strong,
body.lab2-app .user-popover-head span { display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
body.lab2-app .user-popover-head strong { color: var(--text, #17364c); font-size: 11px; }
body.lab2-app .user-popover-head span { margin-top: 3px; color: var(--muted, #73899a); font-size: 8px; }
body.lab2-app .user-menu-item {
    width: 100%;
    min-height: 49px;
    display: grid;
    grid-template-columns: 32px minmax(0,1fr);
    align-items: center;
    gap: 9px;
    padding: 7px 8px;
    color: var(--text, #17364c);
    background: transparent;
    border: 1px solid transparent;
    border-radius: 12px;
    text-align: left;
    text-decoration: none;
    cursor: pointer;
}
body.lab2-app .user-menu-item:hover,
body.lab2-app .user-menu-item.active {
    color: var(--text, #17364c);
    background: color-mix(in srgb, var(--accent) 9%, transparent);
    border-color: color-mix(in srgb, var(--accent) 20%, transparent);
}
body.lab2-app .user-menu-item.is-danger:hover { background: rgba(218,82,102,.10); border-color: rgba(218,82,102,.18); }
body.lab2-app .user-menu-icon {
    width: 30px;
    height: 30px;
    display: grid;
    place-items: center;
    color: var(--accent);
    background: color-mix(in srgb, var(--accent) 10%, transparent);
    border-radius: 10px;
}
body.lab2-app .user-menu-icon svg {
    width: 16px;
    height: 16px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}
body.lab2-app .user-menu-item > span:last-child { display: grid; gap: 2px; min-width: 0; }
body.lab2-app .user-menu-item strong { color: inherit; font-size: 10px; }
body.lab2-app .user-menu-item small { color: var(--muted, #73899a); font-size: 8px; }
body.lab2-app .user-menu-divider { height: 1px; margin: 6px 5px; background: color-mix(in srgb, var(--line, #dbe8f2) 80%, transparent); }
body.lab2-app .scope-switch-short { display: none; font-size: 9px; font-weight: 900; }
body.lab2-app .scope-switch-context[hidden] { display: none !important; }
body.lab2-app .page-metrics[hidden] { display: none !important; }

/* Dashboard executivo: linhas compactas em vez de cartões completos. */
body.lab2-app .dashboard-hero .hero-panel > p:not(.label) { margin: 7px 0 0; color: var(--muted, #71899b); font-size: 11px; }
body.lab2-app .dashboard-radar { display: grid; align-content: center; gap: 11px; }
body.lab2-app .dashboard-radar > div { display: grid; grid-template-columns: auto 1fr; align-items: baseline; gap: 8px; }
body.lab2-app .dashboard-radar > div strong { color: var(--text, #17364c); font-size: 24px; line-height: 1; }
body.lab2-app .dashboard-radar > div span { color: var(--muted, #71899b); font-size: 10px; }
body.lab2-app .dashboard-panel .panel-head > div { display: grid; gap: 3px; }
body.lab2-app .dashboard-panel .panel-head .label { margin: 0; font-size: 8px; }
body.lab2-app .dashboard-compact-list { display: grid; gap: 7px; }
body.lab2-app .dashboard-lead-list { grid-template-columns: repeat(2, minmax(0,1fr)); }
body.lab2-app .dashboard-compact-row {
    min-width: 0;
    display: grid;
    grid-template-columns: auto minmax(0,1fr) auto;
    align-items: center;
    gap: 10px;
    min-height: 70px;
    padding: 10px 11px;
    background: color-mix(in srgb, var(--panel, #fff) 72%, transparent);
    border: 1px solid color-mix(in srgb, var(--accent) 14%, var(--line, #dbe8f2));
    border-radius: 13px;
    box-shadow: inset 0 1px rgba(255,255,255,.38);
}
body.lab2-app .dashboard-compact-row:hover { border-color: color-mix(in srgb, var(--accent) 34%, transparent); }
body.lab2-app .dashboard-row-avatar,
body.lab2-app .dashboard-row-status {
    width: 34px;
    height: 34px;
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    border-radius: 11px;
    font: 900 9px/1 Rubik, sans-serif;
}
body.lab2-app .dashboard-row-status .ui-action-icon { color: inherit; background: transparent; }
body.lab2-app .dashboard-row-status.late { background: linear-gradient(135deg,#d85b68,#ff9b76); }
body.lab2-app .dashboard-row-status.today { background: linear-gradient(135deg,#e5a52b,#ffca69); }
body.lab2-app .dashboard-row-status.future { background: linear-gradient(135deg,#6e62df,#3bc6d6); }
body.lab2-app .dashboard-row-status.nodate { background: linear-gradient(135deg,#8698a6,#b4c1ca); }
body.lab2-app .dashboard-row-main { min-width: 0; display: grid; gap: 3px; }
body.lab2-app .dashboard-row-main strong,
body.lab2-app .dashboard-row-main span,
body.lab2-app .dashboard-row-main small { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
body.lab2-app .dashboard-row-main strong { color: var(--text, #17364c); font-size: 11px; }
body.lab2-app .dashboard-row-main span { color: var(--muted, #607b8f); font-size: 9px; }
body.lab2-app .dashboard-row-main small { color: color-mix(in srgb, var(--accent) 72%, var(--muted, #73899a)); font-size: 8px; font-weight: 800; }
body.lab2-app .dashboard-row-actions { display: flex; align-items: center; gap: 6px; }
body.lab2-app .dashboard-call,
body.lab2-app .dashboard-course,
body.lab2-app .dashboard-open {
    min-height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    padding: 0 10px;
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    border: 0;
    border-radius: 10px;
    font: 900 9px/1 Rubik, sans-serif;
    text-decoration: none;
    cursor: pointer;
}
body.lab2-app .dashboard-course,
body.lab2-app .dashboard-open { width: 34px; min-width: 34px; padding: 0; color: var(--accent); background: color-mix(in srgb, var(--accent) 10%, transparent); border: 1px solid color-mix(in srgb, var(--accent) 18%, transparent); }
body.lab2-app .dashboard-call .ui-action-icon,
body.lab2-app .dashboard-course .ui-action-icon,
body.lab2-app .dashboard-open .ui-action-icon { color: inherit; background: transparent; }
body.lab2-app .dashboard-no-contact { color: var(--muted, #8396a4); font-size: 8px; font-weight: 800; }

@media (max-width: 1380px) {
    body.lab2-app .topbar-main { grid-template-columns: auto minmax(0,1fr) auto; }
    body.lab2-app .lab-side nav button { padding-inline: 7px; }
    body.lab2-app .lab-side nav button .nav-label { font-size: 10px; }
    body.lab2-app .user-menu-trigger strong { display: none; }
}

@media (max-width: 900px) {
    body.lab2-app .topbar-actions {
        grid-column: 3;
        grid-row: 1;
        display: flex;
        position: static;
        width: auto;
        padding: 0;
        background: transparent;
        border: 0;
        box-shadow: none;
    }
    body.lab2-app .lab-side.open .topbar-actions { display: flex; }
    body.lab2-app .theme-popover,
    body.lab2-app .user-popover {
        position: fixed;
        z-index: 980;
        top: calc(var(--lab2-mobile-top-h, 62px) + 8px + env(safe-area-inset-top));
        right: 10px;
        left: auto;
        width: min(330px, calc(100vw - 20px));
        max-height: calc(100vh - 90px);
        overflow-y: auto;
    }
    body.lab2-app .lab-side nav { padding-right: 2px; }
    body.lab2-app .dashboard-lead-list { grid-template-columns: 1fr; }
}

@media (max-width: 820px) {
    body.lab2-app .lab-top {
        min-height: 58px;
        padding-block: 7px;
    }
    body.lab2-app .page-context .label { font-size: 7px; }
    body.lab2-app .lab-top h1 { font-size: 17px; }
    body.lab2-app .scope-switch-context {
        width: auto;
        min-width: 54px;
        max-width: 88px;
        padding: 0 8px;
        display: grid;
        grid-template-columns: 18px auto;
        gap: 4px;
    }
    body.lab2-app .scope-switch-context .scope-switch-short { display: block; }
    body.lab2-app .scope-switch-context select { opacity: 0; position: absolute; inset: 0; width: 100%; height: 100%; cursor: pointer; }
    body.lab2-app .work-intro,
    body.lab2-app .hero-board,
    body.lab2-app .screen-head {
        padding: 14px !important;
    }
    body.lab2-app .work-intro h2,
    body.lab2-app .hero-board h2 { font-size: 20px !important; line-height: 1.1; }
    body.lab2-app .work-intro p:not(.label),
    body.lab2-app .hero-board p:not(.label) { font-size: 10px; line-height: 1.4; }
    body.lab2-app .dashboard-work-grid { grid-template-columns: 1fr; }
    body.lab2-app .dashboard-compact-row { min-height: 64px; }
}

@media (max-width: 560px) {
    body.lab2-app .theme-launch { width: 38px; min-width: 38px; }
    body.lab2-app .user-menu-trigger { width: 40px; min-width: 40px; padding: 4px; }
    body.lab2-app .user-menu-trigger img { margin: auto; }
    body.lab2-app .user-menu-trigger strong,
    body.lab2-app .user-menu-chevron { display: none; }
    body.lab2-app .dashboard-compact-row { grid-template-columns: auto minmax(0,1fr); }
    body.lab2-app .dashboard-row-actions { grid-column: 1 / -1; justify-content: flex-end; }
}

body.lab2-app[data-accent="night"] .theme-popover,
body.lab2-app[data-accent="night"] .user-popover {
    color: #eef8ff;
    background: rgba(8,20,39,.94);
    border-color: rgba(101,206,231,.22);
    box-shadow: 0 26px 80px rgba(0,0,0,.48);
}
body.lab2-app[data-accent="night"] .user-menu-item,
body.lab2-app[data-accent="night"] .theme-option { color: #eef8ff; }
body.lab2-app[data-accent="night"] .user-popover-head strong,
body.lab2-app[data-accent="night"] .dashboard-row-main strong { color: #f4fbff; }
body.lab2-app[data-accent="night"] .user-menu-item small,
body.lab2-app[data-accent="night"] .theme-option small,
body.lab2-app[data-accent="night"] .user-popover-head span { color: #91aabd; }
body.lab2-app[data-accent="night"] .dashboard-compact-row {
    background: rgba(13,31,53,.64);
    border-color: rgba(105,198,226,.16);
    box-shadow: inset 0 1px rgba(255,255,255,.05);
}

@media (max-width: 900px) {
    body.lab2-app .topbar-main { grid-template-columns: auto minmax(0,1fr) auto; }
    body.lab2-app .menu-toggle { display: none !important; }
    body.lab2-app .topbar-actions { grid-column: 3; }
}

/* ============================================================
   Portal v0.88 — ficha de curso nativa e ações de Leads
   ============================================================ */

/* As ações das Leads usam a mesma linha sem colunas fantasma. Assim o
   estado Tratado nunca invade o botão Ligar em cartões mais estreitos. */
body.lab2-app .lead-card-footer {
    grid-template-columns: auto minmax(0, 1fr) !important;
    justify-content: start;
    column-gap: 9px;
}
body.lab2-app .lead-treated-toggle {
    grid-column: 1;
    min-width: max-content;
}
body.lab2-app .lead-primary-actions {
    grid-column: 2;
    justify-self: start;
    justify-content: flex-start;
    min-width: 0;
    gap: 8px;
}
body.lab2-app .lead-primary-actions > * {
    flex: 0 0 auto;
}

/* A ficha deixa de viver num iframe. O scroll pertence a um único contentor
   nativo do Portal e todos os modais passam a usar a mesma pilha visual. */
body.lab2-app .lab2-course-viewer-body {
    display: flex;
    min-height: 0;
    overflow: hidden !important;
    background: var(--course-bg, #f4f9fd);
}
body.lab2-app .lab2-course-native-scroll {
    position: relative;
    width: 100%;
    height: 100%;
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
    scroll-behavior: auto;
    background:
        radial-gradient(circle at 0 0, rgba(55,178,224,.10), transparent 30%),
        radial-gradient(circle at 100% 4%, rgba(255,182,75,.08), transparent 28%),
        var(--course-bg, #f4f9fd);
}
body.lab2-app .lab2-course-native-scroll:focus { outline: none; }
body.lab2-app .course-native-fragment {
    width: 100%;
    min-height: 100%;
}
body.lab2-app .course-native-fragment > .course-app {
    width: 100%;
    min-height: 100%;
}
body.lab2-app .course-native-load-error {
    display: grid;
    justify-items: center;
    gap: 5px;
    padding: 22px;
    text-align: center;
}
body.lab2-app .course-native-load-error strong { color: var(--text); }
body.lab2-app .course-native-load-error span { color: var(--text-soft); font-weight: 600; }

/* O email é um segundo nível modal, tal como Documentos para inscrição. */
body.lab2-app .course-email-modal {
    z-index: 2147483600 !important;
}
body.lab2-app .course-email-backdrop {
    backdrop-filter: blur(7px) saturate(90%) brightness(78%);
    -webkit-backdrop-filter: blur(7px) saturate(90%) brightness(78%);
}

@media (max-width: 620px) {
    body.lab2-app .lead-card-footer {
        grid-template-columns: 1fr !important;
        row-gap: 8px;
    }
    body.lab2-app .lead-treated-toggle,
    body.lab2-app .lead-primary-actions {
        grid-column: 1;
        width: 100%;
    }
    body.lab2-app .lead-primary-actions {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    body.lab2-app .lead-primary-actions > * { width: 100%; }
}

/* ============================================================
   Portal v0.88.1 — botão Fechar sempre visível na ficha mobile
   ============================================================ */
@media (max-width: 820px) {
    body.lab2-app .lab2-course-viewer-header {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        align-items: center;
        column-gap: 8px;
        padding-top: max(8px, env(safe-area-inset-top));
        padding-right: max(10px, env(safe-area-inset-right));
        padding-left: max(14px, env(safe-area-inset-left));
    }

    body.lab2-app .lab2-course-viewer-header > div:first-child {
        min-width: 0;
        overflow: hidden;
    }

    body.lab2-app .lab2-course-viewer-header h2 {
        width: 100%;
        max-width: none;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    body.lab2-app .lab2-course-viewer-header-actions {
        min-width: 0;
        display: grid;
        grid-template-columns: 42px 42px;
        align-items: center;
        justify-content: end;
        gap: 7px;
        flex: 0 0 auto;
    }

    body.lab2-app .lab2-course-documents-trigger,
    body.lab2-app .lab2-course-viewer-close {
        width: 42px;
        min-width: 42px;
        height: 42px;
        margin: 0;
        display: grid !important;
        place-items: center;
        visibility: visible !important;
        opacity: 1 !important;
        transform: none !important;
    }

    body.lab2-app .lab2-course-viewer-close {
        position: relative;
        z-index: 5;
        font-size: 25px;
    }
}

@media (max-width: 390px) {
    body.lab2-app .lab2-course-viewer-header {
        column-gap: 5px;
        padding-left: max(10px, env(safe-area-inset-left));
        padding-right: max(7px, env(safe-area-inset-right));
    }

    body.lab2-app .lab2-course-viewer-header-actions {
        grid-template-columns: 40px 40px;
        gap: 5px;
    }

    body.lab2-app .lab2-course-documents-trigger,
    body.lab2-app .lab2-course-viewer-close {
        width: 40px;
        min-width: 40px;
        height: 40px;
    }
}

/* ============================================================
   Portal v0.89 — navegação mobile final
   ============================================================ */

/* Elementos exclusivos da experiência móvel. */
body.lab2-app .nav-more,
body.lab2-app .mobile-course-search-toggle,
body.lab2-app .mobile-more-sheet {
    display: none;
}

body.lab2-app.mobile-more-open,
body.lab2-app.mobile-more-open html {
    overflow: hidden;
}

@media (max-width: 820px) {
    :root {
        --lab2-mobile-nav-h: 72px;
        --lab2-mobile-top-h: 58px;
    }

    /* A topbar móvel mostra apenas a marca. Todas as ferramentas secundárias
       passam para “Mais”, evitando ícones apertados no topo. */
    body.lab2-app .topbar-main {
        grid-template-columns: minmax(0, 1fr);
        min-height: var(--lab2-mobile-top-h);
        padding: 6px 11px;
    }
    body.lab2-app .brand {
        grid-column: 1;
        justify-self: start;
    }
    body.lab2-app .brand img { width: 92px; }
    body.lab2-app .topbar-actions,
    body.lab2-app .menu-toggle {
        display: none !important;
    }

    /* Cinco destinos fixos: trabalho principal + Mais. */
    body.lab2-app .lab-side nav {
        display: grid;
        grid-template-columns: repeat(5, minmax(0, 1fr));
        gap: 3px;
        overflow: visible !important;
        padding: 6px 7px calc(6px + env(safe-area-inset-bottom));
    }
    body.lab2-app .lab-side nav .nav-dashboard,
    body.lab2-app .lab-side nav .nav-vendas {
        display: none !important;
    }
    body.lab2-app .lab-side nav .nav-more {
        display: flex;
    }
    body.lab2-app .lab-side nav button {
        min-width: 0;
        width: 100%;
        flex: none;
        padding-inline: 2px;
    }
    body.lab2-app .lab-side nav button .nav-label,
    body.lab2-app .lab-side nav button:hover .nav-label,
    body.lab2-app .lab-side nav button.active .nav-label {
        max-width: 100%;
        font-size: 8.5px;
    }
    body.lab2-app .lab-side nav .nav-more .nav-icon {
        color: #66778a;
        background: rgba(118, 136, 151, .10);
        border-color: rgba(118, 136, 151, .16);
    }
    body.lab2-app .lab-side nav .nav-more.active {
        color: var(--accent);
        background: color-mix(in srgb, var(--accent) 11%, transparent);
    }
    body.lab2-app .lab-side nav .nav-more.active .nav-icon {
        color: #fff;
        background: linear-gradient(135deg, var(--accent), var(--accent-2));
        border-color: transparent;
        box-shadow: 0 7px 18px color-mix(in srgb, var(--accent) 25%, transparent);
    }

    /* Cabeçalho de página compacto: título, âmbito e pesquisa opcional. */
    body.lab2-app .lab-top {
        grid-template-columns: minmax(0, 1fr) 40px;
        gap: 5px 8px;
        min-height: 0;
        padding: 7px 10px 8px;
    }
    body.lab2-app .page-context {
        grid-column: 1;
        min-width: 0;
    }
    body.lab2-app .page-context-row {
        min-width: 0;
        flex-wrap: nowrap;
    }
    body.lab2-app .lab-top h1 {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }
    body.lab2-app .mobile-course-search-toggle {
        grid-column: 2;
        grid-row: 1;
        align-self: center;
        display: grid;
        place-items: center;
        width: 40px;
        height: 40px;
        padding: 0;
        color: var(--accent);
        background: color-mix(in srgb, var(--panel) 86%, transparent);
        border: 1px solid color-mix(in srgb, var(--accent) 18%, var(--line));
        border-radius: 13px;
        box-shadow: 0 7px 18px rgba(37, 82, 111, .07), inset 0 1px rgba(255,255,255,.55);
    }
    body.lab2-app .mobile-course-search-toggle svg {
        width: 20px;
        height: 20px;
        fill: none;
        stroke: currentColor;
        stroke-width: 2;
        stroke-linecap: round;
    }
    body.lab2-app.mobile-course-search-open .mobile-course-search-toggle {
        color: #fff;
        background: linear-gradient(135deg, var(--accent), var(--accent-2));
        border-color: transparent;
    }
    body.lab2-app .page-metrics {
        grid-column: 1 / -1;
        grid-row: 2;
        max-width: 100%;
        min-height: 18px;
        justify-content: flex-start;
        padding-left: 1px;
    }
    body.lab2-app .course-quick-search {
        display: none;
        grid-column: 1 / -1;
        grid-row: 3;
        margin-top: 2px;
    }
    body.lab2-app.mobile-course-search-open .course-quick-search {
        display: block;
    }
    body.lab2-app .course-search-results {
        top: calc(var(--lab2-mobile-top-h) + 104px + env(safe-area-inset-top));
    }

    /* O seletor de âmbito comunica claramente Eu/Equipa. */
    body.lab2-app .scope-switch-context {
        min-width: 62px;
        max-width: 104px;
        min-height: 34px;
        padding: 0 9px;
        border-radius: 11px;
    }
    body.lab2-app .scope-switch-context .scope-switch-short {
        font-size: 10px;
        font-weight: 900;
        letter-spacing: .01em;
    }

    /* Menos espaço antes do primeiro registo. */
    body.lab2-app .lab-main {
        gap: 8px;
        padding: 8px 9px 18px;
    }
    body.lab2-app .work-intro {
        gap: 7px;
        padding: 11px 12px !important;
        border-radius: 15px;
    }
    body.lab2-app .work-intro .label { margin-bottom: 2px; }
    body.lab2-app .work-intro h2 {
        font-size: 18px !important;
        line-height: 1.12;
    }
    body.lab2-app .work-intro p:not(.label) {
        display: none;
    }
    body.lab2-app .work-intro-side {
        gap: 6px;
    }
    body.lab2-app .work-intro-search {
        padding: 4px;
    }
    body.lab2-app .work-intro-search input {
        min-height: 38px;
    }
    body.lab2-app .work-filter-row {
        gap: 3px;
    }
    body.lab2-app .work-filter-row .filter-chips {
        padding-bottom: 1px;
    }
    body.lab2-app .filter-chips button {
        min-height: 35px;
        padding: 0 12px;
    }
    body.lab2-app .work-filter-row .result-line {
        min-height: 20px;
    }

    /* Painéis introdutórios dos restantes módulos também ficam mais baixos. */
    body.lab2-app .hero-board, body.lab2-app .screen-head, body.lab2-app .account-hero {
        padding: 12px !important;
        border-radius: 16px;
    }
    body.lab2-app .hero-board h2, body.lab2-app .screen-head h2, body.lab2-app .account-hero h2 {
        font-size: 19px !important;
        line-height: 1.12;
    }

    /* “Mais” é uma bottom sheet nativa, em vez de um menu apertado na topbar. */
    body.lab2-app .mobile-more-sheet:not([hidden]) {
        position: fixed;
        z-index: 2147482500;
        inset: 0;
        display: block;
    }
    body.lab2-app .mobile-more-backdrop {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        padding: 0;
        background: rgba(12, 28, 43, .38);
        border: 0;
        backdrop-filter: blur(5px) saturate(90%);
        -webkit-backdrop-filter: blur(5px) saturate(90%);
    }
    body.lab2-app .mobile-more-dialog {
        position: absolute;
        left: 0;
        right: 0;
        bottom: 0;
        max-height: min(78dvh, 680px);
        overflow-y: auto;
        overscroll-behavior: contain;
        padding: 14px 13px calc(16px + env(safe-area-inset-bottom));
        color: var(--text);
        background: color-mix(in srgb, var(--panel) 94%, transparent);
        border: 1px solid color-mix(in srgb, var(--accent) 15%, var(--line));
        border-bottom: 0;
        border-radius: 24px 24px 0 0;
        box-shadow: 0 -24px 70px rgba(18, 48, 70, .24);
        backdrop-filter: blur(22px) saturate(118%);
        -webkit-backdrop-filter: blur(22px) saturate(118%);
        animation: mobileMoreIn .2s ease-out both;
    }
    @keyframes mobileMoreIn {
        from { transform: translateY(18px); opacity: .55; }
        to { transform: translateY(0); opacity: 1; }
    }
    body.lab2-app .mobile-more-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        margin-bottom: 11px;
    }
    body.lab2-app .mobile-more-header .label {
        margin: 0 0 2px;
        color: var(--accent);
        font-size: 8px;
        font-weight: 900;
        letter-spacing: .12em;
        text-transform: uppercase;
    }
    body.lab2-app .mobile-more-header h2 {
        margin: 0;
        font-size: 20px;
    }
    body.lab2-app .mobile-more-close {
        width: 40px;
        min-width: 40px;
        height: 40px;
        padding: 0;
        color: var(--text-soft);
        background: color-mix(in srgb, var(--panel-strong) 85%, transparent);
        border: 1px solid var(--line);
        border-radius: 13px;
        font-size: 24px;
        line-height: 1;
    }
    body.lab2-app .mobile-more-grid {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
    }
    body.lab2-app .mobile-more-item {
        min-height: 76px;
        display: grid;
        grid-template-columns: 38px minmax(0,1fr);
        align-items: center;
        gap: 9px;
        padding: 10px;
        text-align: left;
        color: var(--text);
        background: color-mix(in srgb, var(--panel-strong) 68%, transparent);
        border: 1px solid color-mix(in srgb, var(--accent) 11%, var(--line));
        border-radius: 15px;
        box-shadow: inset 0 1px rgba(255,255,255,.42);
    }
    body.lab2-app .mobile-more-item.active {
        background: color-mix(in srgb, var(--accent) 11%, var(--panel-strong));
        border-color: color-mix(in srgb, var(--accent) 35%, var(--line));
    }
    body.lab2-app .mobile-more-item > span:last-child {
        min-width: 0;
        display: grid;
        gap: 3px;
    }
    body.lab2-app .mobile-more-item strong {
        overflow: hidden;
        font-size: 11px;
        text-overflow: ellipsis;
        white-space: nowrap;
    }
    body.lab2-app .mobile-more-item small {
        color: var(--text-soft);
        font-size: 8px;
        line-height: 1.3;
    }
    body.lab2-app .mobile-more-icon {
        width: 38px;
        height: 38px;
        display: grid;
        place-items: center;
        color: var(--accent);
        background: color-mix(in srgb, var(--accent) 10%, transparent);
        border: 1px solid color-mix(in srgb, var(--accent) 17%, transparent);
        border-radius: 12px;
    }
    body.lab2-app .mobile-more-icon svg,
    body.lab2-app .mobile-more-admin-actions svg,
    body.lab2-app .mobile-more-logout svg {
        width: 19px;
        height: 19px;
        fill: none;
        stroke: currentColor;
        stroke-width: 1.8;
        stroke-linecap: round;
        stroke-linejoin: round;
    }
    body.lab2-app .mobile-more-icon.is-sales { color: #19a975; background: rgba(25,169,117,.10); }
    body.lab2-app .mobile-more-icon.is-import { color: #db881d; background: rgba(219,136,29,.10); }
    body.lab2-app .mobile-more-icon.is-profile { color: #765fe4; background: rgba(118,95,228,.10); }
    body.lab2-app .mobile-more-icon.is-admin { color: #397eaa; background: rgba(57,126,170,.10); }
    body.lab2-app .mobile-more-section {
        margin-top: 12px;
        padding-top: 11px;
        border-top: 1px solid var(--line);
    }
    body.lab2-app .mobile-more-section-title {
        margin: 0 0 8px;
        color: var(--text-soft);
        font-size: 8px;
        font-weight: 900;
        letter-spacing: .08em;
        text-transform: uppercase;
    }
    body.lab2-app .mobile-theme-options {
        display: grid;
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 7px;
    }
    body.lab2-app .mobile-theme-options button {
        min-width: 0;
        display: grid;
        justify-items: center;
        gap: 5px;
        padding: 8px 3px;
        color: var(--text-soft);
        background: transparent;
        border: 1px solid transparent;
        border-radius: 12px;
    }
    body.lab2-app .mobile-theme-options button.active {
        color: var(--text);
        background: color-mix(in srgb, var(--accent) 8%, transparent);
        border-color: color-mix(in srgb, var(--accent) 20%, transparent);
    }
    body.lab2-app .mobile-theme-options strong {
        max-width: 100%;
        overflow: hidden;
        font-size: 8px;
        text-overflow: ellipsis;
        white-space: nowrap;
    }
    body.lab2-app .mobile-theme-dot {
        width: 27px;
        height: 27px;
        display: grid;
        place-items: center;
        border: 2px solid rgba(255,255,255,.72);
        border-radius: 50%;
        box-shadow: 0 3px 10px rgba(34,66,91,.14);
    }
    body.lab2-app .mobile-theme-dot.is-cyan { background: linear-gradient(135deg,#36d6e0,#6ba7ff); }
    body.lab2-app .mobile-theme-dot.is-violet { background: linear-gradient(135deg,#bd67ef,#f58fc8); }
    body.lab2-app .mobile-theme-dot.is-ember { background: linear-gradient(135deg,#ff9967,#ffc168); }
    body.lab2-app .mobile-theme-dot.is-night { color:#d9faff; background: radial-gradient(circle at 35% 30%,#244a70,#07111f 70%); }
    body.lab2-app .mobile-more-admin-actions {
        display: grid;
        grid-template-columns: repeat(2, minmax(0,1fr));
        gap: 8px;
        margin-top: 11px;
    }
    body.lab2-app .mobile-more-admin-actions button,
    body.lab2-app .mobile-more-admin-actions a,
    body.lab2-app .mobile-more-logout {
        min-height: 42px;
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 7px;
        padding: 0 10px;
        color: var(--text-soft);
        background: color-mix(in srgb, var(--panel-strong) 68%, transparent);
        border: 1px solid var(--line);
        border-radius: 12px;
        font-size: 9px;
        font-weight: 900;
        text-decoration: none;
    }
    body.lab2-app .mobile-more-logout {
        width: 100%;
        margin-top: 8px;
        color: #c95864;
        background: rgba(201,88,100,.07);
        border-color: rgba(201,88,100,.16);
    }
}

@media (max-width: 430px) {
    body.lab2-app .page-metrics .page-metric:nth-of-type(n+4),
    body.lab2-app .page-metrics > i:nth-of-type(n+3) {
        display: none;
    }
    body.lab2-app .mobile-more-grid {
        gap: 7px;
    }
    body.lab2-app .mobile-more-item {
        min-height: 72px;
        grid-template-columns: 35px minmax(0,1fr);
        padding: 9px 8px;
    }
    body.lab2-app .mobile-more-icon {
        width: 35px;
        height: 35px;
    }
}

/* Tema noite da bottom sheet e controlos móveis. */
@media (max-width: 820px) {
    body.lab2-app[data-accent="night"] .mobile-course-search-toggle,
    body.lab2-app[data-accent="night"] .mobile-more-dialog {
        color: #eef8ff;
        background: rgba(8, 20, 39, .93);
        border-color: rgba(101,206,231,.20);
        box-shadow: 0 -24px 80px rgba(0,0,0,.44);
    }
    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(16, 35, 58, .72);
        border-color: rgba(101,206,231,.14);
        box-shadow: inset 0 1px rgba(255,255,255,.04);
    }
    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: #9bb2c5;
    }
    body.lab2-app[data-accent="night"] .mobile-theme-options button.active {
        color: #f4fbff;
        background: rgba(78,219,232,.08);
        border-color: rgba(78,219,232,.22);
    }
}

@media (max-width: 820px) {
    /* A regra administrativa de desktop não pode retirar a barra inferior. */
    body.lab2-app .lab-side nav,
    body.lab2-app.is-admin .lab-side nav {
        position: fixed !important;
        z-index: 650;
        left: 0;
        right: 0;
        top: auto;
        bottom: 0;
        width: 100%;
        margin: 0;
        border-radius: 0;
    }
}

/* A barra móvel vive diretamente no body para não herdar o contexto de
   posicionamento da topbar administrativa. */
body.lab2-app .mobile-bottom-nav { display: none; }

@media (max-width: 820px) {
    body.lab2-app .lab-side nav,
    body.lab2-app.is-admin .lab-side nav {
        display: none !important;
    }

    body.lab2-app .mobile-bottom-nav {
        position: fixed;
        z-index: 650;
        left: 0;
        right: 0;
        bottom: 0;
        width: 100%;
        display: grid;
        grid-template-columns: repeat(5, minmax(0, 1fr));
        gap: 3px;
        margin: 0;
        padding: 6px 7px calc(6px + env(safe-area-inset-bottom));
        background: color-mix(in srgb, var(--panel) 94%, transparent);
        border-top: 1px solid color-mix(in srgb, var(--accent) 10%, var(--line));
        box-shadow: 0 -10px 30px rgba(28,72,105,.12);
        backdrop-filter: blur(18px) saturate(115%);
        -webkit-backdrop-filter: blur(18px) saturate(115%);
    }
    body.lab2-app .mobile-bottom-nav button {
        min-width: 0;
        min-height: 54px;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 3px;
        padding: 4px 2px;
        color: #60788a;
        background: transparent;
        border: 1px solid transparent;
        border-radius: 11px;
    }
    body.lab2-app .mobile-bottom-nav .nav-icon {
        width: 27px;
        height: 27px;
        display: grid;
        place-items: center;
        color: var(--module-color, var(--accent));
        background: var(--module-soft, color-mix(in srgb, var(--accent) 10%, transparent));
        border: 1px solid color-mix(in srgb, var(--module-color, var(--accent)) 14%, transparent);
        border-radius: 9px;
    }
    body.lab2-app .mobile-bottom-nav .nav-icon svg {
        width: 16px;
        height: 16px;
        fill: none;
        stroke: currentColor;
        stroke-width: 1.8;
        stroke-linecap: round;
        stroke-linejoin: round;
    }
    body.lab2-app .mobile-bottom-nav .nav-label {
        max-width: 100%;
        overflow: hidden;
        font-size: 8.5px;
        font-weight: 850;
        line-height: 1.1;
        text-overflow: ellipsis;
        white-space: nowrap;
    }
    body.lab2-app .mobile-bottom-nav button.active {
        color: var(--module-color-deep, var(--accent));
        background: var(--module-soft, color-mix(in srgb, var(--accent) 10%, transparent));
    }
    body.lab2-app .mobile-bottom-nav button.active .nav-icon {
        color: #fff;
        background: linear-gradient(135deg, var(--module-color, var(--accent)), var(--module-color-2, var(--accent-2)));
        border-color: transparent;
        box-shadow: 0 7px 18px color-mix(in srgb, var(--module-color, var(--accent)) 24%, transparent);
    }
    body.lab2-app .mobile-bottom-nav .nav-more .nav-icon {
        color: #66778a;
        background: rgba(118,136,151,.10);
        border-color: rgba(118,136,151,.16);
    }
    body.lab2-app .mobile-bottom-nav .nav-more.active {
        color: var(--accent);
        background: color-mix(in srgb, var(--accent) 11%, transparent);
    }
    body.lab2-app .mobile-bottom-nav .nav-more.active .nav-icon {
        color: #fff;
        background: linear-gradient(135deg, var(--accent), var(--accent-2));
        border-color: transparent;
    }

    body.lab2-app[data-accent="night"] .mobile-bottom-nav {
        background: rgba(7,17,31,.91);
        border-color: rgba(101,206,231,.18);
        box-shadow: 0 -14px 34px rgba(0,0,0,.34);
    }
    body.lab2-app[data-accent="night"] .mobile-bottom-nav button {
        color: #9db4c5;
    }
    body.lab2-app[data-accent="night"] .mobile-bottom-nav button.active {
        color: #f4fbff;
        background: rgba(78,219,232,.08);
    }
}

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

/* Portal v1.0.1 — segurança e backups */
.admin-backup-status-grid {
    display: grid;
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
    gap: 14px;
    margin: 14px 0;
}
.admin-safety-card { overflow: hidden; }
.admin-safety-card footer {
    padding: 0 18px 16px;
    color: var(--muted, #6f8497);
}
.admin-safety-checks {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 9px;
}
.admin-safety-checks > span {
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 42px;
    padding: 9px 11px;
    border: 1px solid rgba(80, 123, 150, .16);
    border-radius: 13px;
    background: rgba(255,255,255,.52);
    font-size: 12px;
    font-weight: 700;
}
.admin-safety-checks .ui-action-icon { width: 19px; height: 19px; }
.admin-safety-checks .is-ok { color: #087c63; }
.admin-safety-checks .is-error { color: #b94d4d; background: rgba(255, 235, 235, .72); }
.admin-backup-summary { display: grid; gap: 10px; }
.admin-backup-summary > div {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 14px;
    padding: 10px 12px;
    border-radius: 13px;
    background: rgba(255,255,255,.5);
    border: 1px solid rgba(80, 123, 150, .14);
}
.admin-backup-summary > div span { color: var(--muted, #6f8497); font-size: 12px; }
.admin-backup-summary > div strong { text-align: right; font-size: 13px; }
.admin-backup-summary p { margin: 2px 0 0; color: var(--text, #18324a); font-size: 12px; line-height: 1.5; }
.admin-backup-summary small { color: var(--muted, #6f8497); }
.admin-backup-actions {
    display: flex;
    gap: 9px;
    padding: 0 18px 18px;
    flex-wrap: wrap;
}
.admin-backup-actions button,
.admin-system-backup-actions button,
.admin-system-backup-actions a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    min-height: 38px;
    padding: 8px 12px;
    border: 1px solid rgba(53, 115, 151, .2);
    border-radius: 12px;
    background: rgba(255,255,255,.74);
    color: #24465f;
    font: inherit;
    font-size: 12px;
    font-weight: 800;
    text-decoration: none;
    cursor: pointer;
}
.admin-backup-actions button.is-primary {
    color: #fff;
    border-color: transparent;
    background: linear-gradient(135deg, #119fc3, #20b7a7);
}
.admin-backup-actions button:disabled,
.admin-system-backup-actions button:disabled { opacity: .55; cursor: wait; }
.admin-system-backups-panel { margin: 14px 0; }
.admin-system-backup-list { display: grid; gap: 9px; }
.admin-system-backup-row {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 12px;
    padding: 12px;
    border: 1px solid rgba(75, 120, 148, .16);
    border-radius: 15px;
    background: rgba(255,255,255,.46);
}
.admin-backup-type {
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    border-radius: 13px;
    color: #127da0;
    background: rgba(61, 194, 220, .14);
}
.admin-backup-type.is-full { color: #7659c9; background: rgba(132, 100, 224, .14); }
.admin-backup-type .ui-action-icon { width: 21px; height: 21px; }
.admin-system-backup-row > div:nth-child(2) { min-width: 0; display: grid; gap: 2px; }
.admin-system-backup-row strong { font-size: 13px; }
.admin-system-backup-row span { color: var(--muted, #6f8497); font-size: 11px; }
.admin-system-backup-row code {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--muted, #6f8497);
    font-size: 10px;
}
.admin-system-backup-actions { display: flex; gap: 7px; flex-wrap: wrap; justify-content: flex-end; }
.admin-system-backup-actions .ui-action-icon,
.admin-backup-actions .ui-action-icon { width: 17px; height: 17px; }

@media (max-width: 900px) {
    .admin-backup-status-grid { grid-template-columns: 1fr; }
    .admin-safety-checks { grid-template-columns: 1fr; }
    .admin-system-backup-row { grid-template-columns: auto minmax(0,1fr); }
    .admin-system-backup-actions { grid-column: 1 / -1; justify-content: stretch; }
    .admin-system-backup-actions > * { flex: 1 1 130px; }
}

/* Portal v1.0.2 — snapshot faseado e não bloqueante */
.admin-snapshot-progress {
    margin: 0 18px 18px;
    padding: 14px 16px;
    border: 1px solid rgba(91, 92, 226, .18);
    border-radius: 16px;
    background: rgba(248, 250, 255, .82);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.75);
}
.admin-snapshot-progress-head { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.admin-snapshot-progress-head div { display:flex; flex-direction:column; gap:3px; }
.admin-snapshot-progress-head strong { color:var(--ink); font-size:.92rem; }
.admin-snapshot-progress-head small, .admin-snapshot-progress p { color:var(--muted); font-size:.78rem; }
.admin-snapshot-progress-head > span { font-weight:800; color:var(--accent); }
.admin-snapshot-progress-track { height:8px; margin:12px 0 9px; overflow:hidden; border-radius:999px; background:rgba(91,92,226,.12); }
.admin-snapshot-progress-track i { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,var(--accent),var(--accent-2)); transition:width .22s ease; }
.admin-snapshot-progress p { margin:0; }
.admin-snapshot-progress button { margin-top:10px; border:0; background:transparent; color:#b42318; font-weight:700; cursor:pointer; }
.admin-snapshot-progress.is-failed { border-color:rgba(220,38,38,.25); background:rgba(254,242,242,.86); }
.admin-snapshot-progress.is-cancelled { opacity:.78; }
@media (max-width:720px) {
    .admin-snapshot-progress { margin:0 12px 14px; }
    .admin-snapshot-progress-head { align-items:flex-start; }
}

/* Portal v1.0.3 — retenção automática de backups */
.admin-retention-next {
    display: block;
    margin-top: 8px;
    padding: 8px 10px;
    border: 1px dashed rgba(88, 115, 145, .22);
    border-radius: 11px;
    color: var(--muted, #6f8497);
    background: rgba(255,255,255,.34);
    line-height: 1.4;
}

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

/* Portal v1.0.5 — data de atribuição e ordenação das Leads */
.lead-filter-tools {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    min-width: 0;
}
.lead-sort-filter,
.lead-course-filter {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    min-width: 0;
}
.lead-sort-filter > span {
    font-size: 11px;
    font-weight: 700;
    color: var(--muted);
    white-space: nowrap;
}
.lead-sort-filter select {
    min-width: 190px;
    max-width: 230px;
    height: 40px;
    border: 1px solid var(--line);
    border-radius: 13px;
    padding: 0 34px 0 12px;
    background: var(--surface-strong);
    color: var(--ink);
    font: inherit;
    font-size: 12px;
    font-weight: 650;
}
.lead-course-assigned {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin-top: 5px;
    color: var(--muted);
    font-size: 11px;
    line-height: 1.25;
}
.lead-course-assigned svg {
    width: 13px;
    height: 13px;
    flex: 0 0 auto;
}
body[data-accent="night"] .lead-sort-filter select {
    background: rgba(10, 24, 43, .78);
    color: #eef8ff;
    border-color: rgba(115, 211, 255, .28);
}
body[data-accent="night"] .lead-course-assigned {
    color: rgba(218, 236, 250, .72);
}
@media (max-width: 900px) {
    .lead-filter-tools {
        width: max-content;
        justify-content: flex-start;
    }
    .lead-sort-filter > span { display: none; }
    .lead-sort-filter select { min-width: 178px; }
}

/* Portal v1.0.10 — espaçamento interno completo da Administração
   Mantém a largura integral da v1.0.6 e acrescenta respiro horizontal
   e vertical dentro do painel ativo. */
body.lab2-app .admin-tab-panel.active {
    box-sizing: border-box;
    padding: 16px;
}
@media (max-width: 720px) {
    body.lab2-app .admin-tab-panel.active {
        padding: 10px;
    }
}

/* Portal v1.0.11 — limpeza conservadora de CSS: remoção de seletores sem utilização no Portal atual. */


/* ============================================================
   Portal v1.2.1 — documento do curso em modal nativo
   ============================================================ */
html.has-course-program,
body.has-course-program {
    overflow: hidden !important;
}
body.lab2-app .lab2-course-program-modal {
    position: fixed;
    inset: 0;
    z-index: 2147483400;
    display: grid;
    place-items: center;
    padding: 28px;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    isolation: isolate;
    transition: opacity .18s ease, visibility .18s ease;
}
body.lab2-app .lab2-course-program-modal.is-open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}
body.lab2-app .lab2-course-program-backdrop {
    position: absolute;
    inset: 0;
    z-index: 0;
    background: rgba(5, 14, 27, .38);
    backdrop-filter: blur(8px) saturate(88%) brightness(76%);
    -webkit-backdrop-filter: blur(8px) saturate(88%) brightness(76%);
}
body.lab2-app .lab2-course-program-dialog {
    position: relative;
    z-index: 2;
    width: min(1380px, calc(100vw - 96px));
    height: min(900px, calc(100dvh - 76px));
    min-height: 0;
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
    overflow: hidden;
    color: var(--course-text, var(--text));
    background: var(--course-bg, #f4f9fd);
    border: 1px solid rgba(255,255,255,.82);
    border-radius: 22px;
    box-shadow: 0 34px 110px rgba(7, 24, 43, .42);
    transform: translateY(10px) scale(.988);
    transition: transform .18s ease;
}
body.lab2-app .lab2-course-program-modal.is-open .lab2-course-program-dialog {
    transform: none;
}
body.lab2-app .lab2-course-program-header {
    min-height: 72px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 12px 14px 12px 20px;
    background: color-mix(in srgb, var(--course-surface, #fff) 94%, transparent);
    border-bottom: 1px solid var(--course-line, var(--line));
    backdrop-filter: blur(18px) saturate(130%);
    -webkit-backdrop-filter: blur(18px) saturate(130%);
}
body.lab2-app .lab2-course-program-heading {
    min-width: 0;
}
body.lab2-app .lab2-course-program-heading .label {
    margin: 0 0 3px;
    color: var(--course-amber, #c97500);
}
body.lab2-app .lab2-course-program-heading h2 {
    margin: 0;
    overflow: hidden;
    color: var(--course-text, var(--text));
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: clamp(17px, 2vw, 22px);
}
body.lab2-app .lab2-course-program-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    flex: 0 0 auto;
}
body.lab2-app .lab2-course-program-download {
    min-height: 40px;
    white-space: nowrap;
}
body.lab2-app .lab2-course-program-download .ui-action-icon {
    width: 17px;
    height: 17px;
}
body.lab2-app .lab2-course-program-close {
    width: 42px;
    min-width: 42px;
    height: 42px;
    display: grid;
    place-items: center;
    padding: 0;
    color: var(--course-soft, var(--text-soft));
    background: color-mix(in srgb, var(--course-surface, #fff) 88%, var(--course-bg, #f4f9fd));
    border: 1px solid var(--course-line, var(--line));
    border-radius: 12px;
    font: 900 25px/1 inherit;
}
body.lab2-app .lab2-course-program-close:hover {
    color: var(--course-text, var(--text));
    transform: translateY(-1px);
}
body.lab2-app .lab2-course-program-body {
    position: relative;
    min-height: 0;
    overflow: hidden;
}
body.lab2-app .lab2-course-program-loading {
    position: absolute;
    inset: 0;
    z-index: 3;
    display: grid;
    place-items: center;
    padding: 24px;
    color: var(--course-soft, var(--text-soft));
    background: var(--course-bg, #f4f9fd);
    text-align: center;
    font-weight: 800;
}
body.lab2-app .lab2-course-program-loading[hidden] {
    display: none;
}
body.lab2-app .lab2-course-program-scroll {
    width: 100%;
    height: 100%;
    min-height: 0;
    padding: 16px;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
    touch-action: pan-y;
    background:
        radial-gradient(circle at 0 0, rgba(55,178,224,.09), transparent 31%),
        radial-gradient(circle at 100% 4%, rgba(255,182,75,.07), transparent 28%),
        var(--course-bg, #f4f9fd);
}
body.lab2-app .lab2-course-program-scroll:focus {
    outline: none;
}
body.lab2-app .lab2-course-program-content {
    width: min(1120px, 100%);
    min-height: 100%;
    margin: 0 auto;
}
body.lab2-app .lab2-course-program-content > .course-program-native-document,
body.lab2-app .lab2-course-program-content > .course-program-native-error {
    width: 100%;
    margin: 0;
    box-shadow: 0 16px 44px rgba(43,84,119,.09);
}
body.lab2-app[data-accent="night"] .lab2-course-program-backdrop {
    background: rgba(0, 3, 10, .45);
    backdrop-filter: blur(8px) saturate(86%) brightness(64%);
    -webkit-backdrop-filter: blur(8px) saturate(86%) brightness(64%);
}
body.lab2-app[data-accent="night"] .lab2-course-program-dialog,
body.lab2-app[data-accent="night"] .lab2-course-program-loading {
    background: #081322;
}

@media (max-width: 820px) {
    body.lab2-app .lab2-course-program-modal {
        place-items: stretch;
        padding: 0;
    }
    body.lab2-app .lab2-course-program-dialog {
        width: 100vw;
        height: 100dvh;
        max-height: none;
        border: 0;
        border-radius: 0;
    }
    body.lab2-app .lab2-course-program-header {
        min-height: 62px;
        padding-top: max(8px, env(safe-area-inset-top));
        padding-right: max(10px, env(safe-area-inset-right));
        padding-left: max(14px, env(safe-area-inset-left));
    }
    body.lab2-app .lab2-course-program-scroll {
        padding: 10px;
        padding-bottom: max(10px, env(safe-area-inset-bottom));
    }
    body.lab2-app .lab2-course-program-content > .course-program-native-document,
    body.lab2-app .lab2-course-program-content > .course-program-native-error {
        padding: 18px;
        border-radius: 15px;
    }
}

@media (max-width: 560px) {
    body.lab2-app .lab2-course-program-header {
        gap: 8px;
    }
    body.lab2-app .lab2-course-program-heading .label {
        font-size: 9px;
    }
    body.lab2-app .lab2-course-program-heading h2 {
        font-size: 15px;
    }
    body.lab2-app .lab2-course-program-download {
        width: 42px;
        min-width: 42px;
        height: 42px;
        padding: 0;
    }
    body.lab2-app .lab2-course-program-download span:last-child {
        display: none;
    }
}

/* ========================================================================== 
   Portal v1.3.8 — Oportunidades em foco integrado
   Mantém a navegação e o cabeçalho estáveis; altera apenas o espaço de trabalho
   das Oportunidades para uma lista à esquerda e detalhe ao lado.
   ========================================================================== */
body.lab2-app .op-layout-switch-row {
    display: flex;
    justify-content: flex-end;
    margin: 0 0 10px;
}
body.lab2-app .op-layout-toggle {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 36px;
    padding: 7px 12px;
    color: var(--text-soft);
    background: color-mix(in srgb, var(--surface-2) 86%, transparent);
    border: 1px solid var(--line);
    border-radius: 999px;
    font-weight: 800;
}
body.lab2-app .op-layout-toggle:hover,
body.lab2-app .op-layout-toggle:focus-visible {
    color: var(--text);
    border-color: color-mix(in srgb, var(--accent) 54%, var(--line));
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 12%, transparent);
}
body.lab2-app .op-layout-toggle .ui-action-icon { width: 18px; height: 18px; }

body.lab2-app .op-focus-workspace {
    display: grid;
    grid-template-columns: minmax(310px, 380px) minmax(0, 1fr);
    gap: 14px;
    height: var(--op-focus-workspace-height, calc(100dvh - 342px));
    min-height: 360px;
    max-height: var(--op-focus-workspace-height, calc(100dvh - 342px));
    margin-top: 12px;
    overflow: hidden;
}
body.lab2-app .op-focus-list-panel,
body.lab2-app .op-focus-detail-panel {
    min-width: 0;
    min-height: 0;
    height: 100%;
    overflow: hidden;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 18px;
    box-shadow: 0 14px 34px rgba(10, 25, 45, .08);
}
body.lab2-app .op-focus-list-panel {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
}
body.lab2-app .op-focus-list-panel > header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    padding: 16px 16px 13px;
    border-bottom: 1px solid var(--line);
    background: color-mix(in srgb, var(--surface-2) 78%, transparent);
}
body.lab2-app .op-focus-list-panel > header h2 {
    margin: 0;
    color: var(--text);
    font-size: 17px;
    line-height: 1.2;
}
body.lab2-app .op-focus-list-panel > header > span {
    flex: 0 0 auto;
    padding: 5px 8px;
    color: var(--text-soft);
    background: var(--surface-soft);
    border: 1px solid var(--line);
    border-radius: 999px;
    font-size: 10px;
    font-weight: 800;
}
body.lab2-app .op-focus-list {
    min-height: 0;
    overflow: auto;
    padding: 8px;
    overscroll-behavior: contain;
    scrollbar-width: thin;
    scrollbar-color: color-mix(in srgb, var(--accent) 35%, transparent) transparent;
}
body.lab2-app .op-focus-item {
    position: relative;
    display: grid;
    grid-template-columns: 4px minmax(0, 1fr) auto;
    gap: 11px;
    width: 100%;
    margin: 0 0 7px;
    padding: 12px 10px 12px 0;
    color: var(--text);
    background: color-mix(in srgb, var(--surface-2) 68%, transparent);
    border: 1px solid transparent;
    border-radius: 13px;
    cursor: pointer;
    outline: none;
    transition: border-color .16s ease, background .16s ease, transform .16s ease, box-shadow .16s ease;
}
body.lab2-app .op-focus-item:hover,
body.lab2-app .op-focus-item:focus-visible {
    transform: translateY(-1px);
    background: color-mix(in srgb, var(--surface-2) 88%, transparent);
    border-color: color-mix(in srgb, var(--accent) 30%, var(--line));
}
body.lab2-app .op-focus-item.is-selected {
    background: color-mix(in srgb, var(--accent) 8%, var(--surface-2));
    border-color: color-mix(in srgb, var(--accent) 54%, var(--line));
    box-shadow: 0 8px 22px color-mix(in srgb, var(--accent) 9%, transparent);
}
body.lab2-app .op-focus-item.is-treated { opacity: .64; }
body.lab2-app .op-focus-item-tone {
    align-self: stretch;
    width: 4px;
    border-radius: 0 6px 6px 0;
    background: var(--muted);
}
body.lab2-app .op-focus-item.late .op-focus-item-tone { background: var(--danger); }
body.lab2-app .op-focus-item.today .op-focus-item-tone { background: var(--ok); }
body.lab2-app .op-focus-item.future .op-focus-item-tone { background: var(--accent); }
body.lab2-app .op-focus-item.nodate .op-focus-item-tone { background: var(--warn); }
body.lab2-app .op-focus-item-main { min-width: 0; }
body.lab2-app .op-focus-item-heading {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}
body.lab2-app .op-focus-item-heading strong {
    min-width: 0;
    overflow: hidden;
    color: var(--text);
    font-size: 13px;
    text-overflow: ellipsis;
    white-space: nowrap;
}
body.lab2-app .op-focus-email {
    display: inline-flex;
    flex: 0 0 auto;
    color: var(--muted);
}
body.lab2-app .op-focus-email.is-sent { color: var(--ok); }
body.lab2-app .op-focus-email.is-missing { color: var(--danger); }
body.lab2-app .op-focus-email .ui-action-icon { width: 16px; height: 16px; }
body.lab2-app .op-focus-item-course {
    display: block;
    margin-top: 3px;
    overflow: hidden;
    color: var(--text-soft);
    font-size: 11px;
    line-height: 1.35;
    text-overflow: ellipsis;
    white-space: nowrap;
}
body.lab2-app .op-focus-item-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 8px;
    margin-top: 8px;
    color: var(--muted);
    font-size: 10px;
    font-weight: 800;
}
body.lab2-app .op-focus-item-meta time {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}
body.lab2-app .op-focus-item-meta .ui-action-icon { width: 14px; height: 14px; }
body.lab2-app .op-focus-item-meta time.late { color: var(--danger); }
body.lab2-app .op-focus-item-meta time.today { color: var(--ok); }
body.lab2-app .op-focus-item-meta time.future { color: var(--accent); }
body.lab2-app .op-focus-item-meta time.nodate { color: var(--warn); }
body.lab2-app .op-focus-item p {
    display: -webkit-box;
    margin: 7px 0 0;
    overflow: hidden;
    color: var(--text-soft);
    font-size: 10.5px;
    line-height: 1.42;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}
body.lab2-app .op-focus-chevron {
    align-self: center;
    color: var(--muted);
    font-size: 24px;
    font-weight: 300;
}
body.lab2-app .op-focus-item.is-selected .op-focus-chevron { color: var(--accent); }
body.lab2-app .op-focus-list-panel > .work-pagination {
    margin: 0;
    padding: 10px 12px;
    border-top: 1px solid var(--line);
    background: color-mix(in srgb, var(--surface-2) 70%, transparent);
}
body.lab2-app .op-focus-list-panel > .work-pagination span { display: none; }
body.lab2-app .op-focus-list-panel > .work-pagination button { min-height: 32px; padding: 5px 8px; }
body.lab2-app .op-focus-list-panel > .work-pagination-pages { display: none; }

body.lab2-app .op-focus-detail-panel {
    position: relative;
    overflow: auto;
    overscroll-behavior: contain;
    scrollbar-width: thin;
    scrollbar-color: color-mix(in srgb, var(--accent) 35%, transparent) transparent;
}
body.lab2-app .op-focus-detail-content { padding: 18px; }
body.lab2-app .op-focus-detail-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 18px;
    padding-bottom: 16px;
    border-bottom: 1px solid var(--line);
}
body.lab2-app .op-focus-person {
    display: flex;
    align-items: center;
    gap: 13px;
    min-width: 0;
}
body.lab2-app .op-focus-avatar {
    display: grid;
    flex: 0 0 auto;
    width: 48px;
    height: 48px;
    place-items: center;
    color: color-mix(in srgb, var(--accent) 86%, var(--text));
    background: color-mix(in srgb, var(--accent) 12%, var(--surface-2));
    border: 1px solid color-mix(in srgb, var(--accent) 34%, var(--line));
    border-radius: 15px;
    font-size: 15px;
    font-weight: 900;
}
body.lab2-app .op-focus-person > div { min-width: 0; }
body.lab2-app .op-focus-person h2 {
    margin: 0;
    overflow: hidden;
    color: var(--text);
    font-size: clamp(20px, 2vw, 28px);
    line-height: 1.12;
    text-overflow: ellipsis;
    white-space: nowrap;
}
body.lab2-app .op-focus-person-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 7px;
    margin-top: 8px;
    color: var(--text-soft);
    font-size: 11px;
}
body.lab2-app .op-focus-status {
    padding: 4px 8px;
    border: 1px solid var(--line);
    border-radius: 999px;
    font-weight: 900;
}
body.lab2-app .op-focus-status.late { color: var(--danger); background: color-mix(in srgb, var(--danger) 8%, transparent); border-color: color-mix(in srgb, var(--danger) 28%, var(--line)); }
body.lab2-app .op-focus-status.today { color: var(--ok); background: color-mix(in srgb, var(--ok) 8%, transparent); border-color: color-mix(in srgb, var(--ok) 28%, var(--line)); }
body.lab2-app .op-focus-status.future { color: var(--accent); background: color-mix(in srgb, var(--accent) 8%, transparent); border-color: color-mix(in srgb, var(--accent) 28%, var(--line)); }
body.lab2-app .op-focus-status.nodate { color: var(--warn); background: color-mix(in srgb, var(--warn) 8%, transparent); border-color: color-mix(in srgb, var(--warn) 28%, var(--line)); }
body.lab2-app .op-focus-head-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 7px;
}
body.lab2-app .op-focus-head-actions a,
body.lab2-app .op-focus-head-actions button,
body.lab2-app .op-focus-detail-actions button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    min-height: 36px;
    padding: 7px 11px;
    color: var(--text);
    background: var(--surface-soft);
    border: 1px solid var(--line);
    border-radius: 10px;
    font-weight: 850;
}
body.lab2-app .op-focus-head-actions .primary-action {
    color: #061015;
    background: var(--accent);
    border-color: transparent;
}
body.lab2-app .op-focus-head-actions .ui-action-icon,
body.lab2-app .op-focus-detail-actions .ui-action-icon { width: 17px; height: 17px; }
body.lab2-app .op-focus-course {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 12px;
    width: 100%;
    margin-top: 14px;
    padding: 13px 14px;
    text-align: left;
    color: var(--text);
    background: color-mix(in srgb, var(--accent) 6%, var(--surface-2));
    border: 1px solid color-mix(in srgb, var(--accent) 25%, var(--line));
    border-radius: 14px;
}
body.lab2-app .op-focus-course:hover { border-color: color-mix(in srgb, var(--accent) 55%, var(--line)); }
body.lab2-app .op-focus-course-icon {
    display: grid;
    width: 38px;
    height: 38px;
    place-items: center;
    color: var(--accent);
    background: color-mix(in srgb, var(--accent) 10%, transparent);
    border-radius: 11px;
}
body.lab2-app .op-focus-course-icon .ui-action-icon { width: 20px; height: 20px; }
body.lab2-app .op-focus-course > span:nth-child(2) { min-width: 0; }
body.lab2-app .op-focus-course small,
body.lab2-app .op-focus-course em {
    display: block;
    color: var(--text-soft);
    font-size: 10px;
    font-style: normal;
}
body.lab2-app .op-focus-course strong {
    display: block;
    margin: 2px 0;
    overflow: hidden;
    color: var(--text);
    font-size: 13px;
    text-overflow: ellipsis;
    white-space: nowrap;
}
body.lab2-app .op-focus-course-open { color: var(--accent); }
body.lab2-app .op-focus-course-open .ui-action-icon { width: 18px; height: 18px; }
body.lab2-app .op-focus-contact-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 9px;
    margin-top: 12px;
}
body.lab2-app .op-focus-contact-grid > div {
    min-width: 0;
    padding: 11px 12px;
    background: color-mix(in srgb, var(--surface-2) 66%, transparent);
    border: 1px solid var(--line);
    border-radius: 12px;
}
body.lab2-app .op-focus-contact-grid small {
    display: flex;
    align-items: center;
    gap: 5px;
    color: var(--text-soft);
    font-size: 9px;
    font-weight: 850;
    text-transform: uppercase;
}
body.lab2-app .op-focus-contact-grid small .ui-action-icon { width: 14px; height: 14px; }
body.lab2-app .op-focus-contact-grid strong {
    display: block;
    margin-top: 6px;
    overflow: hidden;
    color: var(--text);
    font-size: 11px;
    text-overflow: ellipsis;
    white-space: nowrap;
}
body.lab2-app .op-focus-email-state.is-sent { border-color: color-mix(in srgb, var(--ok) 32%, var(--line)); }
body.lab2-app .op-focus-email-state.is-missing { border-color: color-mix(in srgb, var(--danger) 28%, var(--line)); }
body.lab2-app .op-focus-followup,
body.lab2-app .op-focus-info-card {
    margin-top: 12px;
    padding: 14px;
    background: color-mix(in srgb, var(--surface-2) 68%, transparent);
    border: 1px solid var(--line);
    border-radius: 14px;
}
body.lab2-app .op-focus-followup.late { border-left: 4px solid var(--danger); }
body.lab2-app .op-focus-followup.today { border-left: 4px solid var(--ok); }
body.lab2-app .op-focus-followup.future { border-left: 4px solid var(--accent); }
body.lab2-app .op-focus-followup.nodate { border-left: 4px solid var(--warn); }
body.lab2-app .op-focus-followup header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}
body.lab2-app .op-focus-followup h3,
body.lab2-app .op-focus-info-card h3 { margin: 0; color: var(--text); font-size: 14px; }
body.lab2-app .op-focus-followup time {
    padding: 5px 8px;
    color: var(--text-soft);
    background: var(--surface-soft);
    border: 1px solid var(--line);
    border-radius: 999px;
    font-size: 10px;
    font-weight: 850;
}
body.lab2-app .op-focus-followup > p,
body.lab2-app .op-focus-info-card > p,
body.lab2-app .op-focus-info-card details p {
    margin: 9px 0 0;
    color: var(--text-soft);
    font-size: 12px;
    line-height: 1.55;
    white-space: pre-wrap;
}
body.lab2-app .op-focus-info-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}
body.lab2-app .op-focus-info-card { min-height: 150px; }
body.lab2-app .op-focus-info-card details { margin-top: 8px; }
body.lab2-app .op-focus-info-card summary { color: var(--accent); cursor: pointer; font-size: 11px; font-weight: 850; }
body.lab2-app .op-focus-detail-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 9px;
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--line);
}
body.lab2-app .op-focus-detail-actions .op-treated-toggle.active {
    color: color-mix(in srgb, var(--ok) 82%, var(--text));
    border-color: color-mix(in srgb, var(--ok) 34%, var(--line));
    background: color-mix(in srgb, var(--ok) 8%, var(--surface-2));
}
body.lab2-app .op-focus-loading {
    position: absolute;
    right: 16px;
    bottom: 12px;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 6px 9px;
    color: var(--text-soft);
    background: var(--surface-2);
    border: 1px solid var(--line);
    border-radius: 999px;
    font-size: 10px;
    box-shadow: var(--shadow);
}
body.lab2-app .op-focus-loading span {
    width: 8px;
    height: 8px;
    border: 2px solid var(--line-strong);
    border-top-color: var(--accent);
    border-radius: 50%;
    animation: opFocusSpin .8s linear infinite;
}
body.lab2-app .op-focus-empty {
    display: grid;
    min-height: 260px;
    padding: 30px;
    place-items: center;
    align-content: center;
    gap: 8px;
    color: var(--text-soft);
    text-align: center;
}
body.lab2-app .op-focus-empty .ui-action-icon { width: 34px; height: 34px; color: var(--accent); }
body.lab2-app .op-focus-empty strong { color: var(--text); font-size: 15px; }
body.lab2-app .op-focus-empty.is-error strong { color: var(--danger); }
@keyframes opFocusSpin { to { transform: rotate(360deg); } }

@media (max-width: 1180px) {
    body.lab2-app .op-focus-workspace { grid-template-columns: minmax(280px, 340px) minmax(0, 1fr); }
    body.lab2-app .op-focus-contact-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    body.lab2-app .op-focus-detail-head { flex-direction: column; }
    body.lab2-app .op-focus-head-actions { justify-content: flex-start; }
}
@media (max-width: 820px) {
    body.lab2-app .op-focus-workspace { display: block; height: auto; min-height: 0; max-height: none; overflow: visible; }
    body.lab2-app .op-focus-list-panel { max-height: 540px; }
    body.lab2-app .op-focus-detail-panel { margin-top: 12px; }
    body.lab2-app .op-focus-info-grid { grid-template-columns: 1fr; }
    body.lab2-app .op-focus-detail-content { padding: 14px; }
}
@media (max-width: 560px) {
    body.lab2-app .op-layout-toggle span { display: none; }
    body.lab2-app .op-focus-list-panel > header { padding: 13px; }
    body.lab2-app .op-focus-list { padding: 6px; }
    body.lab2-app .op-focus-item { padding-top: 10px; padding-bottom: 10px; }
    body.lab2-app .op-focus-contact-grid { grid-template-columns: 1fr; }
    body.lab2-app .op-focus-person h2 { white-space: normal; }
    body.lab2-app .op-focus-head-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; }
    body.lab2-app .op-focus-head-actions > * { width: 100%; }
    body.lab2-app .op-focus-detail-actions { display: grid; grid-template-columns: 1fr; }
    body.lab2-app .op-focus-detail-actions button { width: 100%; }
}


/* Portal v1.3.9 — altura útil e scroll interno das Oportunidades */
@media (min-width: 821px) {
    body.lab2-app .op-focus-list-panel > header,
    body.lab2-app .op-focus-list-panel > .work-pagination {
        flex: 0 0 auto;
    }
    body.lab2-app .op-focus-list,
    body.lab2-app .op-focus-detail-panel {
        scrollbar-gutter: stable;
    }
}

/* ========================================================================== 
   Portal v1.3.26 — Follow-ups integrados na barra superior
   ========================================================================== */
body.lab2-app .followup-alert-control {
    position: relative;
    display: flex;
    align-items: center;
    flex: 0 0 auto;
}
body.lab2-app .followup-alert-control[hidden] { display: none !important; }
body.lab2-app .portal-opportunity-alert-center {
    position: relative;
    z-index: 940;
    width: 39px;
    height: 39px;
    flex: 0 0 39px;
}
body.lab2-app .portal-opportunity-alert-center[hidden] { display: none !important; }
body.lab2-app .portal-opportunity-alert-summary,
body.lab2-app .portal-opportunity-overdue-popover,
body.lab2-app .portal-opportunity-alert-card {
    pointer-events: auto;
}
body.lab2-app .portal-opportunity-alert-summary {
    position: relative;
    width: 39px;
    min-width: 39px;
    height: 39px;
    min-height: 39px;
    border: 1px solid color-mix(in srgb, var(--danger, #e14b67) 36%, var(--line, #cfe1ec));
    background: color-mix(in srgb, var(--surface, #fff) 89%, var(--danger, #e14b67));
    color: #d83d5b;
    border-radius: 12px;
    box-shadow: 0 7px 18px rgba(216, 61, 91, .12);
    padding: 0;
    display: inline-grid;
    place-items: center;
    cursor: pointer;
    transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease;
}
body.lab2-app .portal-opportunity-alert-summary[hidden] { display: none !important; }
body.lab2-app .portal-opportunity-alert-summary:hover,
body.lab2-app .portal-opportunity-alert-summary[aria-expanded="true"] {
    transform: translateY(-1px);
    border-color: color-mix(in srgb, var(--danger, #e14b67) 62%, var(--line, #cfe1ec));
    box-shadow: 0 10px 24px rgba(216, 61, 91, .18);
}
body.lab2-app .portal-opportunity-alert-summary:focus-visible {
    outline: 3px solid color-mix(in srgb, var(--danger, #e14b67) 24%, transparent);
    outline-offset: 2px;
}
body.lab2-app .portal-opportunity-alert-summary .portal-opportunity-alert-bell {
    width: 100%;
    height: 100%;
    border-radius: inherit;
    display: grid;
    place-items: center;
    color: inherit;
    background: transparent;
}
body.lab2-app .portal-opportunity-alert-summary .portal-opportunity-alert-bell .ui-action-icon { width: 18px; height: 18px; }
body.lab2-app .portal-opportunity-alert-summary > strong {
    position: absolute;
    top: -7px;
    right: -7px;
    min-width: 20px;
    height: 20px;
    padding: 0 5px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    background: linear-gradient(135deg, #f45c76, #d83d5b);
    border: 2px solid var(--topbar-bg, #fff);
    border-radius: 999px;
    box-shadow: 0 5px 12px rgba(216, 61, 91, .26);
    font-size: 9px;
    font-weight: 900;
    line-height: 1;
}

body.lab2-app .portal-opportunity-overdue-popover {
    position: absolute;
    z-index: 930;
    top: calc(100% + 10px);
    right: 0;
    width: 286px;
    padding: 13px;
    color: var(--text, #132238);
    background: color-mix(in srgb, var(--panel, #fff) 94%, transparent);
    border: 1px solid color-mix(in srgb, var(--danger, #e14b67) 26%, var(--line, #cfe1ec));
    border-radius: 17px;
    box-shadow: 0 24px 70px rgba(21, 52, 78, .22);
    backdrop-filter: blur(22px) saturate(140%);
    -webkit-backdrop-filter: blur(22px) saturate(140%);
    animation: portalOpportunityAlertIn .2s ease both;
}
body.lab2-app .portal-opportunity-overdue-popover[hidden] { display: none !important; }
body.lab2-app .portal-opportunity-overdue-head {
    display: grid;
    grid-template-columns: 38px minmax(0, 1fr);
    align-items: center;
    gap: 10px;
}
body.lab2-app .portal-opportunity-overdue-icon {
    width: 38px;
    height: 38px;
    display: grid;
    place-items: center;
    color: #fff;
    background: linear-gradient(135deg, #f45c76, #d83d5b);
    border-radius: 13px;
    box-shadow: 0 8px 18px rgba(216, 61, 91, .22);
}
body.lab2-app .portal-opportunity-overdue-icon .ui-action-icon { width: 18px; height: 18px; }
body.lab2-app .portal-opportunity-overdue-head div { min-width: 0; }
body.lab2-app .portal-opportunity-overdue-head strong,
body.lab2-app .portal-opportunity-overdue-head small { display: block; }
body.lab2-app .portal-opportunity-overdue-head strong { font-size: 13px; line-height: 1.2; }
body.lab2-app .portal-opportunity-overdue-head small {
    margin-top: 3px;
    color: var(--text-soft, #718296);
    font-size: 9px;
    line-height: 1.35;
}
body.lab2-app .portal-opportunity-overdue-popover > button {
    width: 100%;
    min-height: 37px;
    margin-top: 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    color: #fff;
    background: linear-gradient(135deg, #16b6bd, #18a3cf);
    border: 0;
    border-radius: 11px;
    font-size: 10px;
    font-weight: 850;
    cursor: pointer;
}
body.lab2-app .portal-opportunity-overdue-popover > button:hover { filter: brightness(1.04); }
body.lab2-app .portal-opportunity-overdue-popover > button .ui-action-icon { width: 16px; height: 16px; }

body.lab2-app .portal-opportunity-alert-card {
    position: absolute;
    z-index: 925;
    top: calc(100% + 10px);
    right: 0;
    width: min(420px, calc(100vw - 32px));
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--accent, #1fa9c1) 32%, var(--line, #cfdee8));
    border-radius: 22px;
    background:
        linear-gradient(135deg, color-mix(in srgb, var(--surface, #fff) 96%, var(--accent, #1fa9c1)), color-mix(in srgb, var(--surface, #fff) 97%, #8b5cf6));
    color: var(--text, #132238);
    box-shadow: 0 22px 60px rgba(24, 57, 82, .22), 0 4px 14px rgba(24, 57, 82, .10);
    padding: 16px;
    animation: portalOpportunityAlertIn .24s ease both;
}
body.lab2-app .portal-opportunity-alert-card[hidden] { display: none !important; }
@keyframes portalOpportunityAlertIn {
    from { opacity: 0; transform: translateY(-10px) scale(.98); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}
body.lab2-app .portal-opportunity-alert-card > header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}
body.lab2-app .portal-opportunity-alert-heading { display: flex; align-items: center; gap: 11px; min-width: 0; }
body.lab2-app .portal-opportunity-alert-heading > div { min-width: 0; }
body.lab2-app .portal-opportunity-alert-heading p {
    margin: 0 0 3px;
    color: #d73f5d;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .08em;
    text-transform: uppercase;
}
body.lab2-app .portal-opportunity-alert-heading h2 {
    margin: 0;
    font-size: 20px;
    line-height: 1.1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
body.lab2-app .portal-opportunity-alert-pulse {
    position: relative;
    flex: 0 0 auto;
    width: 38px;
    height: 38px;
    border-radius: 14px;
    background: linear-gradient(135deg, #21c4c2, #2aa7dd);
    box-shadow: 0 8px 20px rgba(32, 178, 190, .24);
}
body.lab2-app .portal-opportunity-alert-pulse::before,
body.lab2-app .portal-opportunity-alert-pulse::after {
    content: '';
    position: absolute;
    inset: 50% auto auto 50%;
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: #fff;
    transform: translate(-50%, -50%);
}
body.lab2-app .portal-opportunity-alert-pulse::after {
    width: 100%;
    height: 100%;
    background: rgba(33, 196, 194, .25);
    animation: portalOpportunityPulse 1.7s ease-out infinite;
}
@keyframes portalOpportunityPulse {
    0% { transform: translate(-50%, -50%) scale(.35); opacity: .9; }
    100% { transform: translate(-50%, -50%) scale(1.55); opacity: 0; }
}
body.lab2-app .portal-opportunity-alert-dismiss {
    flex: 0 0 auto;
    width: 31px;
    height: 31px;
    border: 1px solid var(--line, #d5e2eb);
    border-radius: 11px;
    background: color-mix(in srgb, var(--surface, #fff) 90%, transparent);
    color: var(--text-soft, #718296);
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
}
body.lab2-app .portal-opportunity-alert-dismiss:hover { color: var(--text, #132238); background: var(--surface, #fff); }
body.lab2-app .portal-opportunity-alert-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 13px 0 9px;
}
body.lab2-app .portal-opportunity-alert-meta span {
    display: inline-flex;
    align-items: center;
    min-height: 25px;
    padding: 4px 9px;
    border: 1px solid var(--line, #d6e3eb);
    border-radius: 999px;
    background: color-mix(in srgb, var(--surface, #fff) 82%, transparent);
    color: var(--text-soft, #66798c);
    font-size: 10px;
    font-weight: 750;
}
body.lab2-app .portal-opportunity-alert-task {
    margin: 0;
    padding: 11px 12px;
    border-left: 3px solid #f0ad32;
    border-radius: 10px 14px 14px 10px;
    background: color-mix(in srgb, var(--surface-soft, #f4f8fb) 88%, #fff4dc);
    color: var(--text-soft, #5e7184);
    font-size: 12px;
    line-height: 1.45;
}
body.lab2-app .portal-opportunity-alert-actions {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    margin-top: 12px;
}
body.lab2-app .portal-opportunity-alert-actions a,
body.lab2-app .portal-opportunity-alert-actions button,
body.lab2-app .portal-opportunity-alert-actions .is-disabled {
    min-height: 38px;
    border: 1px solid var(--line, #d2e1ea);
    border-radius: 12px;
    background: color-mix(in srgb, var(--surface, #fff) 90%, transparent);
    color: var(--text, #132238);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 7px 9px;
    text-decoration: none;
    font-size: 11px;
    font-weight: 850;
    cursor: pointer;
}
body.lab2-app .portal-opportunity-alert-actions .is-primary {
    border-color: transparent;
    background: linear-gradient(135deg, #16b6bd, #18a3cf);
    color: #fff;
}
body.lab2-app .portal-opportunity-alert-actions .is-disabled { color: var(--text-soft, #7b8a99); cursor: default; }
body.lab2-app .portal-opportunity-alert-actions .ui-action-icon,
body.lab2-app .portal-opportunity-alert-card footer .ui-action-icon { width: 16px; height: 16px; }
body.lab2-app .portal-opportunity-alert-snooze {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 10px;
    color: var(--text-soft, #6c7d8f);
    font-size: 10px;
}
body.lab2-app .portal-opportunity-alert-snooze > span { margin-right: auto; font-weight: 750; }
body.lab2-app .portal-opportunity-alert-snooze button {
    min-width: 48px;
    height: 29px;
    border: 1px solid var(--line, #d2e1ea);
    border-radius: 10px;
    background: transparent;
    color: inherit;
    font-size: 10px;
    font-weight: 800;
    cursor: pointer;
}
body.lab2-app .portal-opportunity-alert-snooze button:hover { border-color: var(--accent, #1fa9c1); color: var(--accent, #1fa9c1); }
body.lab2-app .portal-opportunity-alert-notifications {
    width: 100%;
    margin-top: 9px;
    min-height: 31px;
    border: 1px dashed color-mix(in srgb, var(--accent, #1fa9c1) 45%, var(--line, #d2e1ea));
    border-radius: 10px;
    background: transparent;
    color: var(--accent, #168ca8);
    font-size: 10px;
    font-weight: 800;
    cursor: pointer;
}
body.lab2-app .portal-opportunity-alert-notifications[hidden] { display: none !important; }
body.lab2-app .portal-opportunity-alert-card footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid var(--line, #dce7ee);
}
body.lab2-app .portal-opportunity-alert-card footer > span {
    color: var(--text-soft, #718296);
    font-size: 9px;
}
body.lab2-app .portal-opportunity-alert-card footer button {
    min-height: 31px;
    border: 1px solid color-mix(in srgb, #2abf90 42%, var(--line, #d2e1ea));
    border-radius: 10px;
    background: color-mix(in srgb, #e8fbf4 82%, var(--surface, #fff));
    color: #16845f;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 10px;
    font-size: 10px;
    font-weight: 850;
    cursor: pointer;
}
body.lab2-app.has-update-modal .portal-opportunity-alert-center,
body.lab2-app.has-course-viewer .portal-opportunity-alert-center,
body.lab2-app.has-opportunity-modal .portal-opportunity-alert-center,
body.lab2-app.has-admin-user-modal .portal-opportunity-alert-center { visibility: hidden; }

body.lab2-app[data-accent="night"] .portal-opportunity-alert-card,
body.lab2-app.theme-night .portal-opportunity-alert-card {
    background: linear-gradient(145deg, rgba(21, 34, 57, .98), rgba(28, 31, 67, .98));
    box-shadow: 0 24px 70px rgba(0, 0, 0, .45);
}
body.lab2-app[data-accent="night"] .portal-opportunity-overdue-popover,
body.lab2-app.theme-night .portal-opportunity-overdue-popover {
    color: #eef8ff;
    background: rgba(8, 20, 39, .96);
    border-color: rgba(244, 92, 118, .28);
    box-shadow: 0 26px 80px rgba(0, 0, 0, .48);
}
body.lab2-app[data-accent="night"] .portal-opportunity-overdue-head small,
body.lab2-app.theme-night .portal-opportunity-overdue-head small { color: #91aabd; }
body.lab2-app[data-accent="night"] .portal-opportunity-alert-summary,
body.lab2-app.theme-night .portal-opportunity-alert-summary {
    color: #ff7890;
    background: rgba(42, 27, 49, .92);
    border-color: rgba(244, 92, 118, .34);
}
body.lab2-app[data-accent="night"] .portal-opportunity-alert-summary > strong,
body.lab2-app.theme-night .portal-opportunity-alert-summary > strong { border-color: rgba(8, 20, 39, .96); }
body.lab2-app[data-accent="night"] .portal-opportunity-alert-task,
body.lab2-app.theme-night .portal-opportunity-alert-task { background: rgba(255, 255, 255, .05); }

@media (max-width: 820px) {
    body.lab2-app .topbar-actions {
        position: absolute !important;
        z-index: 950;
        top: calc(10px + env(safe-area-inset-top));
        right: 11px;
        display: flex !important;
        width: auto;
        padding: 0;
        background: transparent;
        border: 0;
        box-shadow: none;
    }
    body.lab2-app .topbar-actions .theme-control,
    body.lab2-app .topbar-actions .user-control { display: none !important; }
    body.lab2-app .portal-opportunity-alert-center {
        width: 38px;
        height: 38px;
        flex-basis: 38px;
        pointer-events: auto;
    }
    body.lab2-app .portal-opportunity-alert-summary {
        width: 38px;
        min-width: 38px;
        height: 38px;
        min-height: 38px;
    }
    body.lab2-app .portal-opportunity-overdue-popover,
    body.lab2-app .portal-opportunity-alert-card {
        position: fixed;
        top: calc(var(--lab2-mobile-top-h, 58px) + 8px + env(safe-area-inset-top));
        right: 10px;
        left: auto;
        width: min(420px, calc(100vw - 20px));
        max-height: calc(100vh - var(--lab2-mobile-top-h, 58px) - var(--lab2-mobile-nav-h, 72px) - 26px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
        overflow-y: auto;
    }
    body.lab2-app .portal-opportunity-overdue-popover { width: min(330px, calc(100vw - 20px)); }
    body.lab2-app .portal-opportunity-alert-card { border-radius: 18px; padding: 14px; }
    body.lab2-app .portal-opportunity-alert-actions { grid-template-columns: 1fr 1fr; }
    body.lab2-app .portal-opportunity-alert-actions button:last-child { grid-column: 1 / -1; }
    body.lab2-app .portal-opportunity-alert-snooze { flex-wrap: wrap; }
    body.lab2-app .portal-opportunity-alert-snooze > span { flex: 1 0 100%; }
}

@media (prefers-reduced-motion: reduce) {
    body.lab2-app .portal-opportunity-alert-card { animation: none; }
    body.lab2-app .portal-opportunity-alert-pulse::after { animation: none; }
}

/* Portal v1.3.14 — calendário WebTop pessoal */
.account-calendar-panel .account-calendar-form { margin-top: 16px; }
.account-calendar-panel .account-calendar-privacy {
    margin: -2px 0 2px;
    color: var(--muted);
    font-size: 12px;
    line-height: 1.5;
}
.account-calendar-panel .account-calendar-error {
    display: block;
    margin-top: 8px;
    color: #b45309;
    font-size: 12px;
    line-height: 1.45;
}
.account-calendar-panel.is-linked .account-ms-dot {
    background: #22c55e;
    box-shadow: 0 0 0 6px rgba(34, 197, 94, .12);
}
body[data-theme="night"] .account-calendar-panel .account-calendar-error,
body.dark-mode .account-calendar-panel .account-calendar-error,
.theme-dark .account-calendar-panel .account-calendar-error { color: #fbbf24; }

/* ============================================================
   Portal v1.3.17 — Leads do mesmo formando em vários cursos
   ============================================================ */
body.lab2-app .lead-card.has-duplicates {
    grid-template-areas:
        "person course"
        "contacts course"
        "duplicate duplicate"
        "intake intake"
        "footer footer";
}

body.lab2-app .lead-card > .lead-duplicate-info {
    grid-area: duplicate;
    grid-column: 1 / -1;
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 7px 10px;
    color: #75500c;
    background: linear-gradient(135deg, rgba(255, 249, 232, .96), rgba(255, 244, 215, .84));
    border: 1px solid rgba(216, 151, 36, .24);
    border-radius: 10px;
}

body.lab2-app .lead-duplicate-info > .ui-action-icon {
    width: 20px;
    height: 20px;
    flex: 0 0 20px;
    color: #b8750a;
    background: rgba(225, 157, 37, .13);
}

body.lab2-app .lead-duplicate-info > .ui-action-icon svg {
    width: 13px;
    height: 13px;
}

body.lab2-app .lead-duplicate-copy {
    min-width: 0;
    display: flex;
    align-items: baseline;
    gap: 7px;
    flex-wrap: wrap;
}

body.lab2-app .lead-duplicate-copy strong {
    color: #80560a;
    font-size: 11px;
    font-weight: 850;
    line-height: 1.3;
    white-space: nowrap;
}

body.lab2-app .lead-duplicate-copy span {
    min-width: 0;
    color: #806a45;
    font-size: 11px;
    font-weight: 650;
    line-height: 1.35;
    overflow-wrap: anywhere;
}

body.lab2-app .lead-card.is-treated .lead-duplicate-info {
    background: rgba(255, 252, 239, .70);
    border-color: rgba(192, 139, 46, .22);
}

body.lab2-app[data-accent="night"] .lead-duplicate-info {
    color: #f4d79b;
    background: linear-gradient(135deg, rgba(96, 70, 23, .42), rgba(66, 48, 17, .34));
    border-color: rgba(239, 190, 89, .26);
}

body.lab2-app[data-accent="night"] .lead-duplicate-copy strong { color: #ffe1a5; }
body.lab2-app[data-accent="night"] .lead-duplicate-copy span { color: rgba(249, 226, 183, .80); }
body.lab2-app[data-accent="night"] .lead-duplicate-info > .ui-action-icon {
    color: #ffd27a;
    background: rgba(239, 183, 71, .14);
}

@media (max-width: 620px) {
    body.lab2-app .lead-card.has-duplicates {
        grid-template-areas:
            "person"
            "contacts"
            "course"
            "duplicate"
            "intake"
            "footer";
    }
}
