/*
 * Rebrand CAV (InovaMente)
 * Camada CSS sobre o Metronic 8, carregada depois do style.bundle.css (config/settings.php).
 * Fica fora de public/assets porque o build do mix apaga essa pasta.
 * Sidebar com a cor do Redação (escura com brilhos suaves) e item ativo discreto;
 * header com pílula de pontos e busca arredondada; conteúdo com cards claros,
 * cantos grandes e sombras suaves.
 * A raiz do Metronic é 13px, por isso as fontes em px.
 */

:root,
[data-bs-theme=light] {
    --cav-navy: #06263F;          /* sidebar e blocos escuros */
    --cav-navy-2: #0B3557;
    --cav-bg: #F2F5F9;
    --cav-surface: #FFFFFF;
    --cav-soft: #F4F7FB;          /* fundos de campos e bolhas de comentário */
    --cav-line: rgba(11, 30, 51, 0.08);
    --cav-fg: #0B1E33;
    --cav-muted: #5E6E82;

    --cav-blue: #1E6FD9;
    --cav-blue-2: #165BB8;
    --cav-green: #4DB13F;
    --cav-teal: #12B3A8;
    --cav-heart: #F0436A;
    --cav-amber: #F5A524;
    --cav-gradient: linear-gradient(120deg, var(--cav-green) 0%, var(--cav-teal) 45%, var(--cav-blue) 100%);

    --cav-radius: 20px;
    --cav-shadow: 0 1px 2px rgba(11, 30, 51, 0.04), 0 10px 30px -14px rgba(11, 30, 51, 0.16);
    --cav-shadow-hover: 0 1px 2px rgba(11, 30, 51, 0.05), 0 18px 40px -16px rgba(11, 30, 51, 0.24);

    --cav-font: "Plus Jakarta Sans", Inter, Helvetica, sans-serif;

    /* Mapeamento para o Metronic */
    --bs-primary: var(--cav-blue);
    --bs-primary-active: var(--cav-blue-2);
    --bs-primary-light: #EAF2FD;
    --bs-primary-rgb: 30, 111, 217;
    --bs-primary-clarity: rgba(30, 111, 217, 0.2);
    --bs-text-primary: var(--cav-blue);
    --bs-component-hover-color: var(--cav-blue);
    --bs-link-color: var(--cav-blue);
    --bs-link-hover-color: var(--cav-blue-2);
    --bs-info: var(--cav-teal);
    --bs-info-active: #0E968D;
    --bs-info-light: #E6F7F5;
    --bs-info-rgb: 18, 179, 168;
    --bs-text-info: var(--cav-teal);
    --bs-success: var(--cav-green);
    --bs-success-active: #3E9632;
    --bs-app-bg-color: var(--cav-bg);
    --bs-font-sans-serif: var(--cav-font);
    --bs-body-font-family: var(--cav-font);
    --bs-body-color: var(--cav-fg);
}

[data-bs-theme=dark] {
    --cav-navy: #041A2C;
    --cav-navy-2: #0A2A45;
    --cav-bg: #0A1420;
    --cav-surface: #101D2C;
    --cav-soft: #15263A;
    --cav-line: rgba(255, 255, 255, 0.07);
    --cav-fg: #E8EEF6;
    --cav-muted: #93A3B8;
    --cav-blue: #4C8FF0;
    --cav-blue-2: #6AA3F5;
    --cav-shadow: 0 1px 0 rgba(255, 255, 255, 0.03) inset, 0 16px 36px -16px rgba(0, 0, 0, 0.6);
    --cav-shadow-hover: 0 1px 0 rgba(255, 255, 255, 0.05) inset, 0 22px 48px -16px rgba(0, 0, 0, 0.7);

    --bs-primary: var(--cav-blue);
    --bs-primary-active: var(--cav-blue-2);
    --bs-primary-light: #13263F;
    --bs-primary-rgb: 76, 143, 240;
    --bs-text-primary: #7FB0F7;
    --bs-link-color: #7FB0F7;
    --bs-component-hover-color: #7FB0F7;
    --bs-info-light: #10302F;
    --bs-app-bg-color: var(--cav-bg);
    --bs-body-bg: var(--cav-surface);
    --bs-body-color: var(--cav-fg);
}

/* ---------- Base ---------- */
body { font-family: var(--cav-font); }

/* Brilho suave atrás do conteúdo */
#kt_app_body .app-main,
body.app-default .app-main {
    background:
        radial-gradient(620px 380px at 88% -80px, rgba(30, 111, 217, 0.09), transparent 70%),
        radial-gradient(520px 340px at 25% -100px, rgba(77, 177, 63, 0.08), transparent 70%),
        var(--cav-bg);
    background-attachment: fixed;
}
body.app-default { background-color: var(--cav-bg); }

h1, h2, h3, .card-title, .page-heading {
    letter-spacing: -0.02em;
}
.page-heading { font-weight: 800 !important; }

.app-content .card {
    border: 1px solid var(--cav-line);
    border-radius: var(--cav-radius);
    box-shadow: var(--cav-shadow);
}

/* ---------- Botões ---------- */
.btn { font-weight: 600; }
.btn.btn-primary {
    background: linear-gradient(135deg, var(--cav-blue), var(--cav-blue-2));
    border: 0;
    box-shadow: 0 8px 20px -10px rgba(var(--bs-primary-rgb), 0.8);
    transition: transform .15s ease, box-shadow .15s ease, filter .15s ease;
}
.btn.btn-primary:hover:not(.btn-active):not(:disabled) {
    transform: translateY(-1px);
    filter: brightness(1.06);
    box-shadow: 0 12px 24px -10px rgba(var(--bs-primary-rgb), 0.9);
}
.btn.btn-cav-pill { border-radius: 999px; padding-inline: 1.25rem; }

/* Menu suspenso das ações do post */
.cav-post-menu.menu-sub-dropdown {
    border-radius: 16px;
    border: 1px solid var(--cav-line);
    box-shadow: var(--cav-shadow-hover);
}
.cav-post-menu.menu-sub-dropdown .menu-link { border-radius: 10px; }

/* ---------- Header de vidro ---------- */
/* Branco translúcido com desfoque: ao rolar, o conteúdo passa por trás embaçado */
#kt_app_header.app-header,
[data-kt-app-header-sticky=on] #kt_app_header.app-header {
    background-color: rgba(255, 255, 255, 0.86) !important;
    backdrop-filter: saturate(180%) blur(16px);
    -webkit-backdrop-filter: saturate(180%) blur(16px);
    border-bottom: 1px solid var(--cav-line) !important;
    box-shadow: none !important;
}
[data-bs-theme=dark] #kt_app_header.app-header,
[data-bs-theme=dark] [data-kt-app-header-sticky=on] #kt_app_header.app-header {
    background-color: rgba(12, 12, 28, 0.86) !important;
}

/* O desfoque cria uma camada própria: sem z-index, os cards do conteúdo
   ficavam por cima dos menus do header (notificações, conta) no celular */
#kt_app_header.app-header { z-index: 105; }
@media (max-width: 991.98px) {
    body:not([data-kt-app-header-sticky=on]) #kt_app_header.app-header { position: relative; }
}

/* ---------- Header: nível e busca ---------- */
/* Pílula de gamificação (categoria + pontos) */
.cav-level {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 4px 14px 4px 4px;
    border-radius: 999px;
    background: var(--cav-surface);
    border: 1px solid var(--cav-line);
    box-shadow: var(--cav-shadow);
    color: var(--cav-fg);
    transition: transform .15s ease, box-shadow .15s ease;
}
.cav-level:hover { color: var(--cav-fg); transform: translateY(-1px); box-shadow: var(--cav-shadow-hover); }
.cav-level img {
    width: 32px;
    height: 32px;
    object-fit: contain;
    border-radius: 50%;
    padding: 3px;
    background: linear-gradient(135deg, rgba(77, 177, 63, 0.16), rgba(30, 111, 217, 0.16));
}
.cav-level-text { display: flex; flex-direction: column; }
.cav-level-name { font-weight: 700; font-size: 14px; line-height: 1.15; }
.cav-level-points { font-size: 11px; color: var(--cav-muted); font-weight: 600; line-height: 1.15; }

/* Busca */
.cav-search {
    position: relative;
    display: flex;
    align-items: center;
}
.cav-search i {
    position: absolute;
    left: 14px;
    font-size: 17px;
    color: var(--cav-muted);
    pointer-events: none;
}
.cav-search input {
    width: 290px;
    height: 40px;
    padding: 0 16px 0 40px;
    border-radius: 999px;
    border: 1px solid transparent;
    background: var(--cav-soft);
    color: var(--cav-fg);
    font-size: 14px;
    font-weight: 500;
    transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease, width .2s ease;
}
.cav-search input::placeholder { color: var(--cav-muted); }
.cav-search input:focus {
    outline: none;
    background: var(--cav-surface);
    border-color: rgba(var(--bs-primary-rgb), 0.5);
    box-shadow: 0 0 0 4px rgba(var(--bs-primary-rgb), 0.12);
}
@media (min-width: 1200px) { .cav-search input:focus { width: 340px; } }
@media (max-width: 767.98px) { .cav-search input { width: 150px; } }

/* Foto do usuário no header: redonda como as demais, com anel sutil */
.cav-avatar-header img,
.cav-avatar-header .symbol-label {
    box-shadow: 0 0 0 2px var(--cav-surface), 0 0 0 4px rgba(var(--bs-primary-rgb), 0.18);
}

/* Sino de notificações */
.cav-bell {
    position: relative;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: var(--cav-soft);
    color: var(--cav-muted);
    cursor: pointer;
    transition: background-color .15s ease, color .15s ease;
}
.cav-bell:hover,
.cav-bell.show,
.cav-bell.menu-dropdown { background: var(--bs-primary-light); color: var(--cav-blue); }
.cav-bell [class*=ki-] { font-size: 22px; color: inherit; }
.cav-bell-badge {
    position: absolute;
    top: -3px;
    right: -3px;
    min-width: 19px;
    height: 19px;
    padding: 0 5px;
    border-radius: 999px;
    display: grid;
    place-items: center;
    font-size: 10px;
    font-weight: 700;
    color: #FFFFFF;
    background: var(--cav-heart);
    box-shadow: 0 0 0 2px var(--cav-surface);
}
.cav-bell-badge[hidden] { display: none; }

/* Menu de notificações */
.cav-notif.menu-sub-dropdown {
    width: 380px;
    max-width: calc(100vw - 24px);
    padding: 0;
    border-radius: 18px;
    border: 1px solid var(--cav-line);
    box-shadow: var(--cav-shadow-hover);
    overflow: hidden;
}
/* Cabeçalho com o mesmo fundo da sidebar */
.cav-notif-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    padding: 20px 18px 18px;
    background:
        radial-gradient(220px 160px at 0% 100%, rgba(122, 92, 255, 0.45), transparent 70%),
        radial-gradient(200px 150px at 100% 0%, rgba(0, 217, 197, 0.3), transparent 70%),
        #0B0B1C;
}
.cav-notif-title { margin: 0; font-size: 16px; font-weight: 700; color: #FFFFFF; }
.cav-notif-sub { font-size: 12px; font-weight: 600; color: rgba(255, 255, 255, 0.65); }
.cav-notif-readall {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 5px 10px;
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.1);
    color: #FFFFFF;
    font-size: 12px;
    font-weight: 700;
    white-space: nowrap;
    transition: background-color .15s ease;
}
.cav-notif-readall:hover { background: rgba(255, 255, 255, 0.18); }
.cav-notif-readall [class*=ki-] { color: inherit; }

.cav-notif-list { max-height: 400px; padding: 6px; }
.cav-notif-item {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 10px 28px 10px 10px;
    border-radius: 12px;
    color: var(--cav-fg);
    transition: background-color .15s ease;
}
.cav-notif-item + .cav-notif-item { margin-top: 2px; }
.cav-notif-item:hover { background: var(--cav-soft); color: var(--cav-fg); }
.cav-notif-item.is-unread { background: rgba(var(--bs-primary-rgb), 0.06); }
.cav-notif-item.is-unread:hover { background: rgba(var(--bs-primary-rgb), 0.1); }
.cav-notif-type {
    position: absolute;
    right: -4px;
    bottom: -4px;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    border: 2px solid var(--cav-surface);
}
.cav-notif-type i { font-size: 9px; color: #FFFFFF; line-height: 1; }
.cav-notif-type.is-like { background: var(--cav-heart); }
.cav-notif-type.is-comment { background: var(--cav-blue); }
.cav-notif-body { display: flex; flex-direction: column; min-width: 0; }
.cav-notif-text { font-size: 13px; line-height: 1.4; color: var(--cav-fg); }
.cav-notif-text strong { font-weight: 700; }
.cav-notif-excerpt {
    margin-top: 2px;
    font-size: 12px;
    color: var(--cav-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.cav-notif-time { margin-top: 3px; font-size: 11px; font-weight: 600; color: var(--cav-muted); }
.cav-notif-item.is-unread .cav-notif-time { color: var(--cav-blue); }
.cav-notif-dot {
    position: absolute;
    top: 50%;
    right: 12px;
    width: 8px;
    height: 8px;
    margin-top: -4px;
    border-radius: 50%;
    background: var(--cav-blue);
}

.cav-notif-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    padding: 36px 24px;
    text-align: center;
}
.cav-notif-empty-icon {
    width: 52px;
    height: 52px;
    margin-bottom: 8px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: var(--bs-primary-light);
}
.cav-notif-empty-icon [class*=ki-] { font-size: 26px; color: var(--cav-blue); }
.cav-notif-empty strong { font-size: 14px; color: var(--cav-fg); }
.cav-notif-empty > span:last-child { font-size: 12px; color: var(--cav-muted); max-width: 240px; }

/* ---------- Sidebar escura (mesma cor do Redação) ---------- */
/* Fundo com brilhos de roxo e verde-água; item ativo com degradê leve */
[data-kt-app-layout=dark-sidebar] .app-sidebar {
    background:
        radial-gradient(300px 280px at 0% 100%, rgba(122, 92, 255, 0.32), transparent 70%),
        radial-gradient(260px 230px at 100% 0%, rgba(0, 217, 197, 0.19), transparent 70%),
        radial-gradient(240px 220px at 100% 55%, rgba(91, 91, 255, 0.08), transparent 70%),
        #0B0B1C;
    border-right: 1px solid rgba(255, 255, 255, 0.04);
}
[data-kt-app-layout=dark-sidebar] .app-sidebar .app-sidebar-logo {
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

[data-kt-app-layout=dark-sidebar] .app-sidebar .menu > .menu-item { margin-bottom: 2px; }
[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link {
    position: relative;
    border-radius: 12px;
    transition: background-color .2s ease;
}
[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link .menu-title {
    color: #D6D6EA;
    font-weight: 500;
}
[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link .menu-icon [class*=ki-] { color: #A3A3C4; }
[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link .menu-arrow:after,
[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link .menu-bullet .bullet { background-color: #7C7CA0; }

/* Hover e grupo aberto */
[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here),
[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.here > .menu-link {
    background-color: rgba(255, 255, 255, 0.06);
}
[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-title,
[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.here > .menu-link .menu-title { color: #FFFFFF; }
[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon [class*=ki-],
[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.here > .menu-link .menu-icon [class*=ki-] { color: #00D9C5; }

/* Item ativo: degradê leve e translúcido, texto branco e ícone em destaque */
[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link.active {
    background: linear-gradient(90deg, rgba(0, 217, 197, 0.32) 0%, rgba(122, 92, 255, 0.3) 100%);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08);
}
[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link.active .menu-title {
    color: #FFFFFF !important;
    font-weight: 600;
}
[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link.active .menu-icon [class*=ki-] { color: #00D9C5 !important; }
[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link.active .menu-bullet .bullet { background-color: #00D9C5; }

/* Botão Sair no rodapé da sidebar */
.cav-logout {
    width: 100%;
    height: 42px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border-radius: 12px;
    border: 1px solid rgba(255, 255, 255, 0.14);
    background: rgba(255, 255, 255, 0.05);
    color: #D6D6EA;
    font-size: 14px;
    font-weight: 600;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
.cav-logout:hover {
    background: rgba(255, 95, 120, 0.16);
    border-color: rgba(255, 95, 120, 0.45);
    color: #FFFFFF;
}
.cav-logout [class*=ki-] { font-size: 18px; color: inherit; }
[data-kt-app-sidebar-minimize=on] .app-sidebar:not(:hover) .cav-logout span { display: none; }

/* ==========================================================
 * Home: Publicações
 * ========================================================== */
/* Título da página alinhado à coluna do feed */
body:has(.app-content .cav-feed) #kt_app_toolbar_container {
    max-width: calc(640px + 2 * var(--bs-app-container-padding-x, 30px));
}
.cav-feed,
.cav-feed-list {
    max-width: 640px;
    margin: 0 auto;
}

.cav-banner {
    display: block;
    margin-bottom: 1.25rem;
    border-radius: 16px;
    overflow: hidden;
    box-shadow: var(--cav-shadow);
    transition: transform .2s ease, box-shadow .2s ease;
}
.cav-banner:hover { transform: translateY(-2px); box-shadow: var(--cav-shadow-hover); }
.cav-banner img { display: block; width: 100%; height: auto; }

/* Avatares redondos */
.cav-avatar { position: relative; flex-shrink: 0; }
.cav-avatar .symbol-label,
.cav-avatar > img { border-radius: 50% !important; }
.cav-avatar.symbol img { border-radius: 50%; object-fit: cover; }
.cav-avatar-flag,
.symbol > img.cav-avatar-flag {
    position: absolute;
    right: -3px;
    bottom: -3px;
    width: 20px !important;
    height: 20px !important;
    border-radius: 6px;
    object-fit: cover;
    border: 2px solid var(--cav-surface);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18);
}

/* Composer */
.cav-composer { margin-bottom: 1.5rem; overflow: hidden; }
.cav-composer .card-body { padding: 1.25rem 1.25rem 1rem; }
.cav-composer-head { display: flex; gap: 0.9rem; align-items: flex-start; }
.cav-composer textarea {
    flex: 1;
    min-height: 56px;
    max-height: 260px;
    padding: 0.85rem 1rem;
    border-radius: 16px;
    border: 1px solid transparent;
    background: var(--cav-soft);
    color: var(--cav-fg);
    font-size: 15px;
    line-height: 1.5;
    resize: none;
    transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease;
}
.cav-composer textarea::placeholder { color: var(--cav-muted); }
.cav-composer textarea:focus {
    outline: none;
    background: var(--cav-surface);
    border-color: rgba(var(--bs-primary-rgb), 0.45);
    box-shadow: 0 0 0 4px rgba(var(--bs-primary-rgb), 0.1);
}
.cav-composer-meta { font-size: 12px; color: var(--cav-muted); font-weight: 500; }

/* Dropzone compacta */
.cav-composer .dropzone {
    margin: 0.9rem 0 0 calc(45px + 0.9rem);
    min-height: auto;
    padding: 0.75rem 1rem;
    border-radius: 14px;
    border: 1.5px dashed rgba(var(--bs-primary-rgb), 0.3);
    background: rgba(var(--bs-primary-rgb), 0.03);
    transition: border-color .15s ease, background-color .15s ease;
}
.cav-composer .dropzone:hover,
.cav-composer .dropzone.dz-drag-hover {
    border-color: rgba(var(--bs-primary-rgb), 0.6);
    background: rgba(var(--bs-primary-rgb), 0.06);
}
.cav-composer .dropzone .dz-message {
    margin: 0;
    display: flex;
    align-items: center;
    gap: 0.75rem;
}
.cav-composer .dropzone .dz-message i,
.cav-composer .dropzone .dz-message i [class*=path] { font-size: 26px !important; }
.cav-composer .dropzone .dz-message h3 { font-size: 14px !important; margin: 0 !important; font-weight: 600 !important; }
.cav-composer .dropzone .dz-message div > span { font-size: 12px !important; }
@media (max-width: 575.98px) { .cav-composer .dropzone { margin-left: 0; } }

.cav-composer-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 1rem;
    padding-top: 0.9rem;
    border-top: 1px solid var(--cav-line);
}

/* Filtro de tag (admin) */
.cav-feed-filter {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin: 0 0 1rem;
    gap: 1rem;
}
.cav-feed-filter-label { font-size: 13px; font-weight: 600; color: var(--cav-muted); }
.cav-segmented {
    display: inline-flex;
    padding: 4px;
    gap: 2px;
    border-radius: 999px;
    background: var(--cav-surface);
    border: 1px solid var(--cav-line);
}
.cav-segmented button {
    border: 0;
    background: transparent;
    padding: 0.35rem 0.95rem;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
    color: var(--cav-muted);
    transition: background-color .15s ease, color .15s ease;
}
.cav-segmented button:hover { color: var(--cav-fg); }
.cav-segmented button.is-active { background: var(--cav-navy); color: #FFFFFF; }
[data-bs-theme=dark] .cav-segmented button.is-active { background: var(--cav-blue); }

/* Post */
.cav-post { margin-bottom: 1.25rem; overflow: hidden; }
.cav-post-head {
    display: flex;
    align-items: flex-start;
    gap: 0.9rem;
    padding: 1.15rem 1.25rem 0.5rem;
}
.cav-post-author { flex: 1; min-width: 0; }
.cav-post-name {
    display: inline-block;
    font-weight: 700;
    font-size: 15px;
    color: var(--cav-fg);
    line-height: 1.25;
}
.cav-post-name:hover { color: var(--cav-blue); }
.cav-post-school {
    display: block;
    font-size: 13px;
    font-weight: 500;
    color: var(--cav-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.cav-post-school:hover { color: var(--cav-blue); }
.cav-post-time { font-size: 12px; color: var(--cav-muted); opacity: 0.85; }
.cav-post-time .cav-dot { margin: 0 0.35rem; }

.cav-post-more {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: 0;
    display: grid;
    place-items: center;
    background: transparent;
    color: var(--cav-muted);
    margin: -4px -8px 0 0;
    transition: background-color .15s ease, color .15s ease;
}
.cav-post-more:hover,
.cav-post-more.show { background: var(--cav-soft); color: var(--cav-fg); }
.cav-post-more i { font-size: 26px; color: inherit; }

.cav-post-text {
    padding: 0.35rem 1.25rem 0.85rem;
    font-size: 15px;
    line-height: 1.6;
    color: var(--cav-fg);
    overflow-wrap: anywhere;
}
.cav-post-text p:last-child { margin-bottom: 0; }
.cav-post-text img { max-width: 100%; height: auto; }

.cav-post-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 0 1.25rem 0.9rem;
}
.cav-tag {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 0.28rem 0.7rem;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.01em;
}
.cav-tag-activity { background: rgba(240, 67, 106, 0.1); color: #D12E55; }
.cav-tag-formacao { background: var(--bs-primary-light); color: var(--cav-blue); }
.cav-tag-kit { background: rgba(77, 177, 63, 0.12); color: #3A8F2F; }
[data-bs-theme=dark] .cav-tag-activity { color: #FF8AA5; }
[data-bs-theme=dark] .cav-tag-kit { color: #8FD884; }

/* Mídia do post (carrossel) */
.cav-post .tns {
    background: #08131F !important;
    border-radius: 0;
}
.cav-post .tns .tns-nav { bottom: 10px !important; z-index: 2; text-align: center; }
.cav-post .tns .tns-nav button {
    width: 7px !important;
    height: 7px !important;
    border-radius: 999px;
    border: 0;
    margin: 0 3px;
    background: rgba(255, 255, 255, 0.45);
    transition: width .2s ease, background-color .2s ease;
}
.cav-post .tns .tns-nav button.tns-nav-active { width: 20px !important; background: #FFFFFF !important; }
.cav-post .tns img,
.cav-post .tns video { box-shadow: none !important; }

/* Barra de ações */
.cav-post-stats {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.75rem 1.25rem 0;
    font-size: 12px;
    color: var(--cav-muted);
    font-weight: 500;
}
.cav-post-stats button {
    border: 0;
    background: none;
    padding: 0;
    color: inherit;
    font-weight: 500;
}
.cav-post-stats button:hover { color: var(--cav-blue); text-decoration: underline; }
.cav-post-stats-likes {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.cav-likes-dot {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    display: inline-grid;
    place-items: center;
    flex-shrink: 0;
    background: var(--cav-heart);
}
.cav-post-stats button { line-height: 18px; }
.cav-likes-dot i { font-size: 10px; line-height: 1; display: block; color: #FFFFFF; }

.cav-post-actions {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 4px;
    margin: 0.6rem 0.75rem 0;
    padding: 4px 0;
    border-top: 1px solid var(--cav-line);
    border-bottom: 1px solid var(--cav-line);
}
.cav-action {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    height: 40px;
    border: 0;
    border-radius: 10px;
    background: transparent;
    color: var(--cav-muted);
    font-size: 14px;
    font-weight: 600;
    transition: background-color .15s ease, color .15s ease;
}
.cav-action:hover { background: var(--cav-soft); color: var(--cav-fg); }
.cav-action i { font-size: 20px; color: inherit; }
.cav-action.is-liked { color: var(--cav-heart); }
.cav-action.is-liked i { color: var(--cav-heart); animation: cav-pop .35s ease; }
@keyframes cav-pop { 0% { transform: scale(0.6); } 60% { transform: scale(1.25); } 100% { transform: scale(1); } }
@media (max-width: 400px) { .cav-action span { display: none; } }

/* Comentários */
.cav-comments { padding: 0.25rem 1.25rem 1.15rem; }
.cav-comment { display: flex; gap: 0.65rem; padding-top: 0.85rem; }
.cav-comment-bubble {
    min-width: 0;
    max-width: 100%;
    padding: 0.55rem 0.9rem 0.65rem;
    border-radius: 4px 16px 16px 16px;
    background: var(--cav-soft);
}
.cav-comment-head { display: flex; align-items: baseline; flex-wrap: wrap; gap: 0 0.5rem; }
.cav-comment-name { font-weight: 700; font-size: 13px; color: var(--cav-fg); }
.cav-comment-name:hover { color: var(--cav-blue); }
.cav-comment-time { font-size: 11px; color: var(--cav-muted); }
.cav-comment-text {
    display: block;
    margin-top: 2px;
    font-size: 14px;
    line-height: 1.45;
    color: var(--cav-fg);
    overflow-wrap: anywhere;
    white-space: pre-line;
}
.cav-comment-delete {
    border: 0;
    background: none;
    padding: 0;
    margin-left: auto;
    color: var(--cav-muted);
    font-size: 11px;
    font-weight: 600;
    opacity: 0;
    transition: opacity .15s ease, color .15s ease;
}
.cav-comment:hover .cav-comment-delete,
.cav-comment-delete:focus { opacity: 1; }
.cav-comment-delete:hover { color: var(--cav-heart); }
@media (hover: none) { .cav-comment-delete { opacity: 1; } }

.cav-comment-form { display: flex; gap: 0.65rem; align-items: flex-start; margin-top: 1rem; }
.cav-comment-input { position: relative; flex: 1; }
.cav-comment-input textarea {
    width: 100%;
    min-height: 42px;
    padding: 0.6rem 3rem 0.6rem 1rem;
    border-radius: 21px;
    border: 1px solid transparent;
    background: var(--cav-soft);
    color: var(--cav-fg);
    font-size: 14px;
    line-height: 1.45;
    resize: none;
    overflow: hidden;
    transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease;
}
.cav-comment-input textarea::placeholder { color: var(--cav-muted); }
.cav-comment-input textarea:focus {
    outline: none;
    background: var(--cav-surface);
    border-color: rgba(var(--bs-primary-rgb), 0.45);
    box-shadow: 0 0 0 4px rgba(var(--bs-primary-rgb), 0.1);
}
.cav-comment-send {
    position: absolute;
    right: 5px;
    top: 5px;
    width: 32px;
    height: 32px;
    border: 0;
    border-radius: 50%;
    display: grid;
    place-items: center;
    color: #FFFFFF;
    background: linear-gradient(135deg, var(--cav-blue), var(--cav-blue-2));
    transition: transform .15s ease, opacity .15s ease;
}
.cav-comment-send:hover { transform: scale(1.06); }
.cav-comment-send:disabled { opacity: 0.6; }
.cav-comment-send i { font-size: 15px; color: #FFFFFF; }

/* Paginação */
.cav-feed .pagination { justify-content: center; gap: 4px; flex-wrap: wrap; }
.cav-feed .pagination .page-link {
    border-radius: 10px !important;
    min-width: 38px;
    height: 38px;
    display: grid;
    place-items: center;
    font-weight: 600;
}
.cav-feed .pagination .page-item.active .page-link { background: var(--cav-navy); border-color: var(--cav-navy); }
[data-bs-theme=dark] .cav-feed .pagination .page-item.active .page-link { background: var(--cav-blue); border-color: var(--cav-blue); }

.cav-empty {
    padding: 3rem 1.5rem;
    text-align: center;
    color: var(--cav-muted);
}
.cav-empty i { font-size: 38px; color: var(--cav-blue); opacity: 0.6; }

/* ==========================================================
 * Meu Percurso (mobile primeiro)
 * ========================================================== */
.cav-page-sub {
    margin: -6px 0 20px;
    font-size: 14px;
    color: var(--cav-muted);
}
.cav-page-sub b { color: var(--cav-fg); font-weight: 600; }

.cav-journey { max-width: 1040px; margin: 0 auto; }

/* Destaque escuro com medalha, pontos e trilha */
.cav-journey-hero {
    position: relative;
    overflow: hidden;
    padding: 24px 20px 20px;
    border-radius: 24px;
    color: #FFFFFF;
    background:
        radial-gradient(360px 260px at 0% 100%, rgba(122, 92, 255, 0.5), transparent 70%),
        radial-gradient(320px 220px at 100% 0%, rgba(0, 217, 197, 0.32), transparent 70%),
        #0B0B1C;
    box-shadow: 0 20px 44px -22px rgba(11, 11, 28, 0.6);
}
.cav-journey-top { display: flex; align-items: center; gap: 16px; }
.cav-journey-medal {
    width: 84px;
    height: 84px;
    flex-shrink: 0;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: rgba(255, 255, 255, 0.95);
    box-shadow: 0 0 0 6px rgba(255, 255, 255, 0.1), 0 12px 28px -10px rgba(0, 0, 0, 0.6);
    animation: cav-medal-in .6s ease both;
}
.cav-journey-medal img { width: 62px; height: 62px; object-fit: contain; }
@keyframes cav-medal-in { from { transform: scale(0.7) rotate(-12deg); opacity: 0; } to { transform: none; opacity: 1; } }
.cav-journey-score { display: flex; flex-direction: column; min-width: 0; }
.cav-journey-kicker {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.6);
}
.cav-journey-level { font-size: 30px; font-weight: 800; line-height: 1.05; letter-spacing: -0.02em; }
.cav-journey-points { margin-top: 4px; font-size: 14px; color: rgba(255, 255, 255, 0.8); }
.cav-journey-points b { font-size: 18px; color: #FFFFFF; }

.cav-journey-next { margin-top: 20px; }
.cav-journey-next p { margin: 0 0 10px; font-size: 14px; line-height: 1.5; color: rgba(255, 255, 255, 0.85); }
.cav-journey-next p b { color: #FFFFFF; }
.cav-journey-bar {
    height: 10px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.14);
    overflow: hidden;
}
.cav-journey-bar span {
    display: block;
    height: 100%;
    border-radius: 999px;
    background: linear-gradient(90deg, #00D9C5, #7A5CFF 60%, #FF5FCB);
    animation: cav-bar-in 1s ease both;
    transform-origin: left;
}
@keyframes cav-bar-in { from { transform: scaleX(0); } to { transform: scaleX(1); } }

.cav-journey-steps {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    margin: 18px 0 0;
    padding: 0;
    list-style: none;
}
.cav-journey-steps li {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    padding: 10px 6px;
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.08);
    opacity: 0.55;
}
.cav-journey-steps li img { width: 30px; height: 30px; object-fit: contain; filter: grayscale(1); }
.cav-journey-steps li span { font-size: 13px; font-weight: 700; }
.cav-journey-steps li small { font-size: 11px; color: rgba(255, 255, 255, 0.65); }
.cav-journey-steps li.is-reached { opacity: 1; }
.cav-journey-steps li.is-reached img { filter: none; }
.cav-journey-steps li.is-current {
    background: rgba(255, 255, 255, 0.14);
    border-color: rgba(0, 217, 197, 0.55);
    box-shadow: 0 0 0 3px rgba(0, 217, 197, 0.15);
}

/* Seções */
.cav-journey-section { margin-top: 28px; }
.cav-journey-section-head { margin-bottom: 14px; }
.cav-journey-section-head h2 { margin: 0; font-size: 18px; font-weight: 800; color: var(--cav-fg); }
.cav-journey-section-head p { margin: 2px 0 0; font-size: 13px; color: var(--cav-muted); }

/* Blocos de pontuação: 2 por linha no celular */
.cav-score-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.cav-score {
    display: flex;
    flex-direction: column;
    padding: 14px;
    border-radius: 18px;
    background: var(--cav-surface);
    border: 1px solid var(--cav-line);
    box-shadow: var(--cav-shadow);
}
.cav-score-head { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-bottom: 12px; }
.cav-score-icon {
    width: 38px;
    height: 38px;
    flex-shrink: 0;
    border-radius: 12px;
    display: grid;
    place-items: center;
}
.cav-score-icon [class*=ki-] { color: inherit; }
.cav-score-icon.is-blue { background: var(--bs-primary-light); color: var(--cav-blue); }
.cav-score-icon.is-red { background: rgba(240, 67, 106, 0.12); color: #D12E55; }
.cav-score-icon.is-violet { background: rgba(122, 92, 255, 0.14); color: #6247E0; }
.cav-score-icon.is-teal { background: rgba(18, 179, 168, 0.14); color: #0E8F86; }
.cav-score-icon.is-amber { background: rgba(245, 165, 36, 0.16); color: #B9740A; }
.cav-score-icon.is-pink { background: rgba(255, 95, 203, 0.14); color: #C2369A; }
.cav-score-icon.is-green { background: rgba(77, 177, 63, 0.14); color: #2F8A25; }
.cav-score-icon.is-navy { background: rgba(11, 11, 28, 0.08); color: #3B3B5C; }
[data-bs-theme=dark] .cav-score-icon.is-navy { background: rgba(255, 255, 255, 0.08); color: #C9C9E0; }
.cav-score-weight {
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    background: var(--cav-soft);
    color: var(--cav-muted);
    white-space: nowrap;
}
.cav-score-points { font-size: 24px; font-weight: 800; line-height: 1; letter-spacing: -0.02em; color: var(--cav-fg); }
.cav-score-points small { font-size: 12px; font-weight: 700; color: var(--cav-muted); }
.cav-score-name { margin-top: 6px; font-size: 13px; font-weight: 700; color: var(--cav-fg); }
.cav-score-count { margin-top: 2px; font-size: 12px; color: var(--cav-muted); }
.cav-score-cta { margin-top: 2px; font-size: 12px; font-weight: 700; color: var(--cav-blue); }
.cav-score.is-empty { background: var(--cav-soft); box-shadow: none; border-style: dashed; }
.cav-score.is-empty .cav-score-points { color: var(--cav-muted); }

/* Dicas */
.cav-tips { display: flex; flex-direction: column; gap: 10px; }
.cav-tip {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
    border-radius: 16px;
    background: var(--cav-surface);
    border: 1px solid var(--cav-line);
    box-shadow: var(--cav-shadow);
    color: var(--cav-fg);
    transition: transform .15s ease, box-shadow .15s ease;
}
.cav-tip:hover { color: var(--cav-fg); transform: translateY(-1px); box-shadow: var(--cav-shadow-hover); }
.cav-tip-text { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.cav-tip-text strong { font-size: 14px; font-weight: 700; }
.cav-tip-text small { font-size: 12px; color: var(--cav-muted); }
.cav-tip-arrow { font-size: 18px; color: var(--cav-muted); }
.cav-tip:hover .cav-tip-arrow { color: var(--cav-blue); }

@media (min-width: 768px) {
    .cav-journey-hero { padding: 32px; display: grid; grid-template-columns: 1fr 1fr; gap: 12px 40px; align-items: center; }
    .cav-journey-top { grid-row: span 2; }
    .cav-journey-medal { width: 110px; height: 110px; }
    .cav-journey-medal img { width: 80px; height: 80px; }
    .cav-journey-level { font-size: 40px; }
    .cav-journey-next { margin-top: 0; }
    .cav-journey-steps { margin-top: 0; }
    .cav-score-grid { grid-template-columns: repeat(4, 1fr); gap: 16px; }
    .cav-tips { display: grid; grid-template-columns: repeat(3, 1fr); }
}
@media (prefers-reduced-motion: reduce) {
    .cav-journey-medal, .cav-journey-bar span { animation: none; }
}

/* ==========================================================
 * Busca
 * ========================================================== */
.cav-search-page { max-width: 1040px; margin: 0 auto; }
.cav-search-page.is-narrow { max-width: 640px; }
/* Título da página alinhado à coluna da busca */
body:has(.app-content .cav-search-page) #kt_app_toolbar_container {
    max-width: calc(1040px + 2 * var(--bs-app-container-padding-x, 30px));
}
body:has(.app-content .cav-search-page.is-narrow) #kt_app_toolbar_container {
    max-width: calc(640px + 2 * var(--bs-app-container-padding-x, 30px));
}

.cav-search-summary {
    margin: -6px 0 16px;
    font-size: 14px;
    color: var(--cav-muted);
}
.cav-search-summary strong { color: var(--cav-fg); font-weight: 700; }

/* Abas em pílulas com contador */
.cav-tabs {
    display: flex;
    gap: 6px;
    margin-bottom: 20px;
    padding: 5px;
    border-radius: 999px;
    background: var(--cav-surface);
    border: 1px solid var(--cav-line);
    box-shadow: var(--cav-shadow);
    overflow-x: auto;
    scrollbar-width: none;
}
.cav-tabs::-webkit-scrollbar { display: none; }
.cav-tab {
    flex: 1 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    padding: 8px 14px;
    border-radius: 999px;
    font-size: 14px;
    font-weight: 600;
    color: var(--cav-muted);
    white-space: nowrap;
    transition: background-color .15s ease, color .15s ease;
}
.cav-tab i { font-size: 18px; color: inherit; }
.cav-tab:hover { color: var(--cav-fg); background: var(--cav-soft); }
.cav-tab-count {
    min-width: 22px;
    padding: 1px 7px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    text-align: center;
    background: var(--cav-soft);
    color: var(--cav-muted);
}
.cav-tab.is-active { background: var(--cav-navy); color: #FFFFFF; }
.cav-tab.is-active:hover { color: #FFFFFF; }
.cav-tab.is-active .cav-tab-count { background: rgba(255, 255, 255, 0.18); color: #FFFFFF; }
[data-bs-theme=dark] .cav-tab.is-active { background: var(--cav-blue); }

.cav-search-empty {
    padding: 48px 24px;
    text-align: center;
    color: var(--cav-muted);
}
.cav-search-empty i { font-size: 40px; color: var(--cav-blue); opacity: 0.55; }
.cav-search-empty p { margin: 12px 0 0; font-size: 14px; font-weight: 600; }

.cav-search-pagination { margin-top: 20px; }
.cav-search-pagination .pagination { justify-content: center; gap: 4px; flex-wrap: wrap; }
.cav-search-pagination .page-link {
    border-radius: 10px !important;
    min-width: 38px;
    height: 38px;
    display: grid;
    place-items: center;
    font-weight: 600;
}
.cav-search-pagination .page-item.active .page-link { background: var(--cav-navy); border-color: var(--cav-navy); }

/* Pessoas */
.cav-people-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 16px;
}
.cav-person {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 24px 18px 18px;
    text-align: center;
    color: var(--cav-fg);
    transition: transform .15s ease, box-shadow .15s ease;
}
.cav-person:hover { color: var(--cav-fg); transform: translateY(-2px); box-shadow: var(--cav-shadow-hover) !important; }
.cav-person .cav-avatar { margin-bottom: 12px; }
.cav-person-name { font-size: 15px; font-weight: 700; line-height: 1.3; }
.cav-person:hover .cav-person-name { color: var(--cav-blue); }
.cav-person-role { margin-top: 2px; font-size: 12px; font-weight: 600; color: var(--cav-muted); }
.cav-person-meta {
    display: flex;
    flex-direction: column;
    gap: 6px;
    width: 100%;
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px solid var(--cav-line);
    text-align: left;
}
.cav-person-meta span {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    font-size: 13px;
    color: var(--cav-muted);
    line-height: 1.4;
}
.cav-person-meta i { font-size: 16px; color: var(--cav-blue); opacity: 0.8; margin-top: 1px; }

/* Escolas */
.cav-list-card { overflow: hidden; }
.cav-list-row {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 20px;
    border-bottom: 1px solid var(--cav-line);
    color: var(--cav-fg);
    transition: background-color .15s ease;
}
.cav-list-row:last-child { border-bottom: 0; }
.cav-list-row:hover { background: var(--cav-soft); color: var(--cav-fg); }
.cav-list-icon {
    width: 42px;
    height: 42px;
    flex-shrink: 0;
    border-radius: 12px;
    display: grid;
    place-items: center;
    background: rgba(245, 165, 36, 0.14);
}
.cav-list-icon i { font-size: 20px; color: #C77F0A; }
.cav-list-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.cav-list-title { font-size: 14px; font-weight: 700; }
.cav-list-row:hover .cav-list-title { color: var(--cav-blue); }
.cav-list-sub { font-size: 12px; color: var(--cav-muted); }
.cav-list-tag {
    flex-shrink: 0;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    background: var(--cav-soft);
    color: var(--cav-muted);
}
.cav-list-arrow { font-size: 16px; color: var(--cav-muted); }
@media (max-width: 575.98px) { .cav-list-tag { display: none; } }

/* Atividades */
.cav-activity-list { display: flex; flex-direction: column; gap: 16px; }
.cav-activity {
    flex-direction: row;
    gap: 18px;
    padding: 18px;
}
.cav-activity-thumb {
    width: 120px;
    height: 120px;
    flex-shrink: 0;
    border-radius: 14px;
    object-fit: cover;
}
.cav-activity-thumb.is-empty {
    display: grid;
    place-items: center;
    background: var(--bs-primary-light);
}
.cav-activity-thumb.is-empty i { font-size: 36px; color: var(--cav-blue); }
.cav-activity-body { flex: 1; min-width: 0; }
.cav-activity-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.cav-activity-code {
    display: inline-block;
    margin-bottom: 4px;
    padding: 2px 8px;
    border-radius: 6px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.02em;
    background: rgba(240, 67, 106, 0.1);
    color: #D12E55;
}
.cav-activity-title { margin: 0; font-size: 16px; font-weight: 700; line-height: 1.35; color: var(--cav-fg); }
.cav-activity-desc {
    margin-top: 8px;
    font-size: 14px;
    line-height: 1.55;
    color: var(--cav-muted);
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.cav-activity-desc p { margin: 0; }
@media (max-width: 575.98px) {
    .cav-activity { flex-direction: column; }
    .cav-activity-thumb { width: 100%; height: 160px; }
}

/* ==========================================================
 * Atividades STEM
 * ========================================================== */
.cav-level-section { margin-bottom: 32px; }
.cav-level-head {
    display: flex;
    align-items: baseline;
    gap: 10px;
    margin-bottom: 14px;
}
.cav-level-head h2 { margin: 0; font-size: 18px; font-weight: 700; color: var(--cav-fg); }
.cav-level-head span {
    padding: 2px 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
    background: var(--cav-surface);
    border: 1px solid var(--cav-line);
    color: var(--cav-muted);
}

.cav-area-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 18px;
}
.cav-area-card {
    padding: 0;
    overflow: hidden;
    text-align: left;
    cursor: pointer;
    background: var(--cav-surface);
    transition: transform .18s ease, box-shadow .18s ease;
}
.cav-area-card:hover,
.cav-area-card:focus-visible {
    transform: translateY(-3px);
    box-shadow: var(--cav-shadow-hover) !important;
}
.cav-area-card:focus-visible { outline: 3px solid rgba(var(--bs-primary-rgb), 0.35); outline-offset: 2px; }
.cav-area-thumb {
    display: block;
    aspect-ratio: 25 / 12;
    overflow: hidden;
    background: var(--cav-soft);
}
.cav-area-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .35s ease;
}
.cav-area-card:hover .cav-area-thumb img { transform: scale(1.04); }
.cav-area-info {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 14px 16px;
}
.cav-area-info > span:first-child { display: flex; flex-direction: column; min-width: 0; }
.cav-area-name { font-size: 15px; font-weight: 700; color: var(--cav-fg); }
.cav-area-count { font-size: 12px; font-weight: 600; color: var(--cav-muted); }
.cav-area-go {
    width: 34px;
    height: 34px;
    flex-shrink: 0;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: var(--cav-soft);
    color: var(--cav-muted);
    transition: background-color .18s ease, color .18s ease;
}
.cav-area-go i { font-size: 16px; color: inherit; }
.cav-area-card:hover .cav-area-go { background: var(--cav-blue); color: #FFFFFF; }

/* Modal da lista de atividades */
.cav-act-modal .modal-content {
    border: 0;
    border-radius: 22px;
    overflow: hidden;
}
.cav-act-modal-head {
    position: relative;
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    padding: 24px 28px 22px;
    background:
        radial-gradient(320px 200px at 0% 100%, rgba(122, 92, 255, 0.45), transparent 70%),
        radial-gradient(300px 180px at 100% 0%, rgba(0, 217, 197, 0.3), transparent 70%),
        #0B0B1C;
}
.cav-act-modal-level {
    display: inline-block;
    margin-bottom: 6px;
    padding: 2px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    background: rgba(255, 255, 255, 0.12);
    color: rgba(255, 255, 255, 0.85);
}
.cav-act-modal-title { margin: 0; font-size: 22px; font-weight: 700; color: #FFFFFF; }
.cav-act-modal-count { font-size: 13px; font-weight: 600; color: rgba(255, 255, 255, 0.65); }
.cav-act-modal-close {
    width: 38px;
    height: 38px;
    flex-shrink: 0;
    border-radius: 50%;
    border: 1px solid rgba(255, 255, 255, 0.18);
    display: grid;
    place-items: center;
    background: rgba(255, 255, 255, 0.08);
    color: #FFFFFF;
    transition: background-color .15s ease;
}
.cav-act-modal-close:hover { background: rgba(255, 255, 255, 0.18); }
.cav-act-modal-close [class*=ki-] { color: inherit; }

.cav-act-modal-body { padding: 18px 22px 22px; background: var(--cav-bg); }
.cav-act-list { display: flex; flex-direction: column; gap: 10px; }
.cav-act-item {
    border-radius: 16px;
    background: var(--cav-surface);
    border: 1px solid var(--cav-line);
    box-shadow: var(--cav-shadow);
    overflow: hidden;
}
.cav-act-row {
    width: 100%;
    display: flex;
    align-items: flex-start;
    gap: 16px;
    padding: 12px 16px 12px 12px;
    border: 0;
    background: transparent;
    text-align: left;
    transition: background-color .15s ease;
}
.cav-act-row:hover { background: var(--cav-soft); }
.cav-act-thumb {
    width: 112px;
    height: 72px;
    flex-shrink: 0;
    border-radius: 10px;
    object-fit: cover;
    background: var(--cav-soft);
}
.cav-act-text { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.cav-act-code {
    align-self: flex-start;
    margin-bottom: 3px;
    padding: 1px 8px;
    border-radius: 6px;
    font-size: 11px;
    font-weight: 700;
    background: rgba(240, 67, 106, 0.1);
    color: #D12E55;
}
.cav-act-name { font-size: 15px; font-weight: 700; color: var(--cav-fg); line-height: 1.35; }
.cav-act-desc {
    margin-top: 4px;
    font-size: 13px;
    line-height: 1.55;
    color: var(--cav-muted);
}
.cav-act-chevron {
    width: 32px;
    height: 32px;
    flex-shrink: 0;
    align-self: center;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: var(--cav-soft);
    color: var(--cav-muted);
    transition: transform .2s ease, background-color .2s ease, color .2s ease;
}
.cav-act-chevron [class*=ki-] { color: inherit; }
.cav-act-row:not(.collapsed) { background: var(--cav-soft); }
.cav-act-row:not(.collapsed) .cav-act-chevron { transform: rotate(180deg); background: var(--cav-blue); color: #FFFFFF; }

.cav-act-viewer { padding: 0 16px 16px; }
.cav-act-viewer iframe {
    display: block;
    width: 100%;
    height: 520px;
    border: 1px solid var(--cav-line);
    border-radius: 12px;
    background: var(--cav-soft);
}
.cav-act-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; flex-wrap: wrap; }
.cav-act-actions .btn [class*=ki-] { color: inherit; }

.cav-act-skeleton {
    height: 96px;
    margin-bottom: 10px;
    border-radius: 16px;
    background: linear-gradient(90deg, var(--cav-surface) 0%, var(--cav-soft) 50%, var(--cav-surface) 100%);
    background-size: 200% 100%;
    animation: cav-shimmer 1.2s ease-in-out infinite;
}
@keyframes cav-shimmer { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } }

@media (max-width: 575.98px) {
    .cav-act-thumb { width: 72px; height: 56px; }
    .cav-act-viewer iframe { height: 420px; }
}

/* ==========================================================
 * CAV Play
 * ========================================================== */
.cav-play-logo { display: block; width: 100%; max-width: 220px; height: auto; }
.cav-tabs-inline { display: inline-flex; max-width: 100%; }
.cav-tabs-inline .cav-tab { flex: 0 0 auto; }

/* Card do curso */
.cav-course-card { display: flex; flex-direction: column; color: var(--cav-fg); }
.cav-course-card:hover { color: var(--cav-fg); }
.cav-course-thumb {
    position: relative;
    display: block;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    background: var(--cav-soft);
}
.cav-course-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .35s ease;
}
.cav-course-card:hover .cav-course-thumb img { transform: scale(1.04); }
.cav-course-play {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    background: rgba(11, 11, 28, 0.35);
    opacity: 0;
    transition: opacity .2s ease;
}
.cav-course-play i {
    width: 54px;
    height: 54px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    padding-left: 3px;
    font-size: 20px;
    color: var(--cav-fg);
    background: rgba(255, 255, 255, 0.95);
    box-shadow: 0 10px 24px -8px rgba(0, 0, 0, 0.5);
}
.cav-course-card:hover .cav-course-play { opacity: 1; }
.cav-course-status {
    position: absolute;
    left: 10px;
    bottom: 10px;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    color: #FFFFFF;
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}
.cav-course-status.is-new { background: rgba(11, 11, 28, 0.7); }
.cav-course-status.is-progress { background: rgba(30, 111, 217, 0.92); }
.cav-course-status.is-done { background: rgba(47, 138, 37, 0.92); }
.cav-course-progress { display: block; height: 4px; background: var(--cav-soft); }
.cav-course-progress span {
    display: block;
    height: 100%;
    background: linear-gradient(90deg, #00D9C5, #1E6FD9);
}
.cav-course-info {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: 4px;
    padding: 14px 16px 16px;
}
.cav-course-name { font-size: 15px; font-weight: 700; line-height: 1.35; }
.cav-course-card:hover .cav-course-name { color: var(--cav-blue); }
.cav-course-desc {
    font-size: 13px;
    line-height: 1.5;
    color: var(--cav-muted);
}
.cav-course-meta {
    display: flex;
    justify-content: space-between;
    margin-top: auto;
    padding-top: 8px;
    font-size: 12px;
    font-weight: 600;
    color: var(--cav-muted);
}

/* Página do curso */
.cav-watch-head { margin-bottom: 18px; }
.cav-back-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 8px;
    padding: 5px 12px 5px 8px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 600;
    color: var(--cav-muted);
    background: var(--cav-surface);
    border: 1px solid var(--cav-line);
    transition: color .15s ease, border-color .15s ease;
}
.cav-back-link:hover { color: var(--cav-blue); border-color: rgba(var(--bs-primary-rgb), 0.35); }
.cav-back-link i { font-size: 16px; color: inherit; }
.cav-watch-title { margin: 0; font-size: 24px; font-weight: 800; letter-spacing: -0.02em; color: var(--cav-fg); }

.cav-player-card { overflow: hidden; }
.cav-player { background: #0B0B1C; }
.cav-player-body { padding: 20px 24px 24px; }
.cav-player-theme {
    display: inline-block;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--cav-blue);
}
.cav-player-title { margin: 4px 0 0; font-size: 20px; font-weight: 700; line-height: 1.3; color: var(--cav-fg); }
.cav-player-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.cav-player-tags:empty { display: none; }
.cav-player-desc {
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid var(--cav-line);
    font-size: 14px;
    line-height: 1.65;
    color: var(--cav-muted);
}
.cav-player-desc:empty { display: none; }
.cav-player-desc p:last-child { margin-bottom: 0; }

/* Painel de aulas */
.cav-lessons { overflow: hidden; }
.cav-lessons-head {
    padding: 20px 20px 18px;
    background:
        radial-gradient(240px 160px at 0% 100%, rgba(122, 92, 255, 0.45), transparent 70%),
        radial-gradient(220px 150px at 100% 0%, rgba(0, 217, 197, 0.3), transparent 70%),
        #0B0B1C;
    color: #FFFFFF;
}
.cav-lessons-label {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.6);
}
.cav-lessons-progress { display: flex; align-items: baseline; gap: 10px; margin-top: 6px; }
.cav-lessons-progress strong { font-size: 26px; font-weight: 800; line-height: 1; }
.cav-lessons-progress span { font-size: 13px; color: rgba(255, 255, 255, 0.75); }
.cav-lessons-bar {
    height: 6px;
    margin-top: 12px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.14);
    overflow: hidden;
}
.cav-lessons-bar span {
    display: block;
    height: 100%;
    border-radius: 999px;
    background: linear-gradient(90deg, #00D9C5, #7A5CFF);
}
.cav-lessons-body { max-height: calc(100vh - 260px); overflow-y: auto; }
@media (max-width: 991.98px) { .cav-lessons-body { max-height: none; } }

.cav-theme.accordion-item { border: 0; border-bottom: 1px solid var(--cav-line); background: transparent; }
.cav-theme-btn.accordion-button {
    gap: 10px;
    padding: 14px 20px;
    font-size: 14px;
    font-weight: 700;
    color: var(--cav-fg);
    background: transparent;
    box-shadow: none;
}
.cav-theme-btn.accordion-button:not(.collapsed) { color: var(--cav-fg); background: var(--cav-soft); }
.cav-theme-name { flex: 1; }
.cav-theme-count {
    flex-shrink: 0;
    padding: 1px 8px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    background: var(--cav-soft);
    color: var(--cav-muted);
}
.cav-theme-btn:not(.collapsed) .cav-theme-count { background: var(--cav-surface); }
.cav-theme-count.is-done { background: rgba(77, 177, 63, 0.14) !important; color: #2F8A25; }
.cav-theme-lessons { padding: 6px 10px 10px; }
.cav-theme-lessons .menu-item { padding: 0; }
.cav-lesson.menu-link {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 9px 10px;
    border-radius: 10px;
    color: var(--cav-fg);
    cursor: pointer;
    transition: background-color .15s ease;
}
.cav-lesson.menu-link:hover { background: var(--cav-soft); }
.cav-lesson-icon {
    display: grid;
    place-items: center;
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    margin-top: 1px;
    color: #A3A3C4;
}
.cav-lesson-name { font-size: 13px; line-height: 1.45; color: var(--cav-fg); }
.cav-lesson.is-watched .cav-lesson-name { color: var(--cav-muted); }
.cav-lesson.is-current { background: var(--bs-primary-light); }
.cav-lesson.is-current .cav-lesson-name { color: var(--cav-blue); font-weight: 700; }
.cav-lesson.is-current .cav-lesson-icon { color: var(--cav-blue); }
.cav-lessons-cert { padding: 16px 20px 20px; }

/* ==========================================================
 * Certificados e tabelas
 * ========================================================== */
.cav-cert-card { overflow: hidden; }
.cav-cert-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 18px 20px;
    border-bottom: 1px solid var(--cav-line);
}

/* Tabela no estilo do CAV (DataTables) */
.cav-table.table { margin: 0 !important; }
.cav-table.table > thead > tr > th {
    padding: 12px 20px !important;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--cav-muted);
    background: var(--cav-soft);
    border-bottom: 1px solid var(--cav-line) !important;
}
.cav-table.table > tbody > tr > td {
    padding: 14px 20px !important;
    font-size: 13px;
    color: var(--cav-fg);
    border-bottom: 1px solid var(--cav-line);
}
.cav-table.table > tbody > tr:last-child > td { border-bottom: 0; }
.cav-table.table > tbody > tr:hover > td { background: rgba(var(--bs-primary-rgb), 0.03); }
.cav-cert-card .dataTables_wrapper > .row {
    margin: 0;
    padding: 12px 20px;
    border-top: 1px solid var(--cav-line);
    align-items: center;
}
.cav-cert-card .dataTables_wrapper .dataTables_empty { padding: 40px 20px !important; color: var(--cav-muted); }
.cav-cert-card .pagination .page-link { border-radius: 10px !important; font-weight: 600; }
.cav-cert-card .pagination .page-item.active .page-link { background: var(--cav-navy); border-color: var(--cav-navy); color: #FFFFFF; }

.cav-cert-name { display: flex; align-items: center; gap: 12px; min-width: 260px; }
.cav-cert-icon {
    width: 40px;
    height: 40px;
    flex-shrink: 0;
    border-radius: 12px;
    display: grid;
    place-items: center;
}
.cav-cert-icon i { font-size: 20px; }
.cav-cert-icon.is-presencial { background: rgba(77, 177, 63, 0.12); }
.cav-cert-icon.is-presencial i { color: #2F8A25; }
.cav-cert-icon.is-online { background: var(--bs-primary-light); }
.cav-cert-icon.is-online i { color: var(--cav-blue); }
.cav-cert-text { display: flex; flex-direction: column; min-width: 0; }
.cav-cert-title { font-size: 14px; font-weight: 700; color: var(--cav-fg); }
.cav-cert-type { font-size: 12px; color: var(--cav-muted); }
.cav-cert-pending.btn {
    background: rgba(245, 165, 36, 0.14);
    color: #A86A05;
    border: 1px solid rgba(245, 165, 36, 0.35);
}
.cav-cert-pending.btn:hover { background: rgba(245, 165, 36, 0.24); color: #8A5604; }
.cav-cert-pending.btn i { color: inherit; }
.cav-table .btn i { color: inherit; }

/* ==========================================================
 * Calendário (ferramenta interna)
 * ========================================================== */
.cav-cal-card { overflow: hidden; }
.cav-cal-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px;
    padding: 16px 20px;
    border-bottom: 1px solid var(--cav-line);
}
.cav-cal-legend { display: flex; flex-wrap: wrap; gap: 16px; font-size: 13px; font-weight: 600; color: var(--cav-muted); }
.cav-cal-legend span { display: inline-flex; align-items: center; gap: 6px; }
.cav-cal-legend i { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
.cav-dot-formacao { background: #1E6FD9; }
.cav-dot-visita { background: #12B3A8; }
.cav-dot-feriado { background: #D9C7FB; }
.cav-cal-jump { display: flex; gap: 8px; }
.cav-cal-jump .form-select { width: auto; min-width: 110px; border-radius: 10px; }
.cav-cal-body { padding: 16px 20px 20px; }

/* FullCalendar */
.cav-cal-body .fc .fc-toolbar-title { font-size: 20px; font-weight: 700; color: var(--cav-fg); }
.cav-cal-body .fc .fc-toolbar-title::first-letter { text-transform: uppercase; }
.cav-cal-body .fc .fc-button {
    border-radius: 10px !important;
    font-weight: 600;
    text-transform: capitalize;
    box-shadow: none !important;
}
.cav-cal-body .fc .fc-button-primary {
    background: var(--cav-soft);
    border-color: var(--cav-line);
    color: var(--cav-fg);
}
.cav-cal-body .fc .fc-button-primary:hover { background: var(--cav-surface); color: var(--cav-blue); border-color: var(--cav-line); }
.cav-cal-body .fc .fc-button-primary:not(:disabled).fc-button-active,
.cav-cal-body .fc .fc-button-primary:not(:disabled):active { background: var(--cav-navy); border-color: var(--cav-navy); color: #FFFFFF; }
.cav-cal-body .fc .fc-button-group > .fc-button { margin-left: 2px; }
.cav-cal-body .fc .fc-today-button { background: var(--cav-blue); border-color: var(--cav-blue); color: #FFFFFF; }
.cav-cal-body .fc .fc-today-button:disabled { opacity: 0.45; }
.cav-cal-body .fc-theme-standard td,
.cav-cal-body .fc-theme-standard th,
.cav-cal-body .fc-theme-standard .fc-scrollgrid { border-color: var(--cav-line); }
.cav-cal-body .fc .fc-col-header-cell-cushion {
    padding: 10px 4px;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--cav-muted);
}
.cav-cal-body .fc .fc-daygrid-day-number { font-size: 13px; font-weight: 600; color: var(--cav-fg); padding: 6px 8px; }
.cav-cal-body .fc .fc-day-other .fc-daygrid-day-number { color: var(--cav-muted); opacity: 0.5; }
.cav-cal-body .fc .fc-daygrid-day.fc-day-today { background: rgba(var(--bs-primary-rgb), 0.05); }
.cav-cal-body .fc .fc-day-today .fc-daygrid-day-number {
    margin: 4px;
    padding: 2px 8px;
    border-radius: 999px;
    background: var(--cav-blue);
    color: #FFFFFF;
}
.cav-cal-body .fc .fc-daygrid-day-frame { min-height: 108px; }

/* Eventos */
.cav-cal-body .fc .cav-ev {
    margin: 1px 4px 2px !important;
    padding: 2px 6px;
    border: 0 !important;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: filter .15s ease;
}
.cav-cal-body .fc .cav-ev:hover { filter: brightness(1.08); }
.cav-cal-body .fc .cav-ev .fc-event-main { color: #FFFFFF; }
.cav-cal-body .fc .cav-ev-formacao { background: #1E6FD9 !important; }
.cav-cal-body .fc .cav-ev-visita { background: #12B3A8 !important; }
.cav-cal-body .fc .fc-list-event.cav-ev-formacao .fc-list-event-dot { border-color: #1E6FD9; }
.cav-cal-body .fc .fc-list-event.cav-ev-visita .fc-list-event-dot { border-color: #12B3A8; }
.cav-cal-body .fc .fc-list-event.cav-ev { background: transparent !important; }
.cav-cal-body .fc .fc-list-event.cav-ev .fc-event-main,
.cav-cal-body .fc .fc-list-event.cav-ev td { color: var(--cav-fg); }
.cav-cal-body .fc .fc-bg-event.cav-ev-feriado { background: #D9C7FB !important; opacity: 0.45; }
.cav-cal-body .fc .fc-bg-event.cav-ev-feriado .fc-event-title {
    margin: 26px 6px 0;
    font-size: 11px;
    font-weight: 700;
    font-style: normal;
    color: #5B3D9E;
}
.cav-cal-body .fc .fc-daygrid-more-link { font-size: 12px; font-weight: 700; color: var(--cav-blue); margin-left: 6px; }

/* Modal do evento */
.cav-ev-modal .modal-content { border: 0; border-radius: 22px; overflow: hidden; }
.cav-ev-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    padding: 24px 28px 22px;
    background:
        radial-gradient(320px 200px at 0% 100%, rgba(122, 92, 255, 0.45), transparent 70%),
        radial-gradient(300px 180px at 100% 0%, rgba(0, 217, 197, 0.3), transparent 70%),
        #0B0B1C;
}
.cav-ev-type {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 8px;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: #FFFFFF;
    background: rgba(255, 255, 255, 0.12);
}
.cav-ev-type::before { content: ""; width: 8px; height: 8px; border-radius: 2px; }
.cav-ev-type.is-formacao::before { background: #5EA0F2; }
.cav-ev-type.is-visita::before { background: #3FE0D3; }
.cav-ev-title { margin: 0; font-size: 22px; font-weight: 700; color: #FFFFFF; line-height: 1.25; }
.cav-ev-program { display: block; margin-top: 4px; font-size: 13px; color: rgba(255, 255, 255, 0.7); }

.cav-ev-body { padding: 20px 24px 24px; background: var(--cav-bg); }
.cav-ev-label {
    display: block;
    margin-bottom: 8px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--cav-muted);
}
.cav-ev-empty { font-size: 13px; color: var(--cav-muted); }
.cav-ev-info {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px;
    padding: 18px;
    margin-bottom: 16px;
    border-radius: 16px;
    background: var(--cav-surface);
    border: 1px solid var(--cav-line);
}
@media (max-width: 575.98px) { .cav-ev-info { grid-template-columns: 1fr; } }
.cav-ev-dates, .cav-ev-people { display: flex; flex-wrap: wrap; gap: 6px; }
.cav-ev-date {
    padding: 3px 9px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 600;
    background: var(--cav-soft);
    color: var(--cav-fg);
}
.cav-ev-date.is-current { background: var(--cav-blue); color: #FFFFFF; }
.cav-ev-person {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 3px 10px 3px 3px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 600;
    background: var(--cav-soft);
    color: var(--cav-fg);
}
.cav-ev-initial {
    width: 22px;
    height: 22px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    font-size: 11px;
    font-weight: 700;
    color: #FFFFFF;
    background: linear-gradient(135deg, #00D9C5, #7A5CFF);
}

.cav-ev-section {
    padding: 18px;
    margin-bottom: 16px;
    border-radius: 16px;
    background: var(--cav-surface);
    border: 1px solid var(--cav-line);
}
.cav-ev-section:last-child { margin-bottom: 0; }
.cav-ev-section-title { margin: 0 0 14px; font-size: 15px; font-weight: 700; color: var(--cav-fg); }
.cav-ev-content { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
@media (max-width: 575.98px) { .cav-ev-content { grid-template-columns: 1fr; } }
.cav-ev-acts { display: flex; flex-direction: column; gap: 6px; }
.cav-ev-act {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 10px 6px 6px;
    border-radius: 10px;
    border: 1px solid var(--cav-line);
    color: var(--cav-fg);
    font-size: 13px;
    transition: border-color .15s ease, background-color .15s ease;
}
.cav-ev-act:hover { color: var(--cav-blue); border-color: rgba(var(--bs-primary-rgb), 0.35); background: var(--bs-primary-light); }
.cav-ev-act strong {
    flex-shrink: 0;
    padding: 1px 7px;
    border-radius: 6px;
    font-size: 11px;
    background: rgba(240, 67, 106, 0.1);
    color: #D12E55;
}
.cav-ev-act span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cav-ev-checklist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.cav-ev-checklist li { position: relative; padding-left: 22px; font-size: 13px; color: var(--cav-fg); }
.cav-ev-checklist li::before {
    content: "";
    position: absolute;
    left: 2px;
    top: 4px;
    width: 12px;
    height: 12px;
    border-radius: 4px;
    border: 2px solid #12B3A8;
}
.cav-ev-checklist li.is-empty { padding-left: 0; color: var(--cav-muted); }
.cav-ev-checklist li.is-empty::before { display: none; }

/* Atalhos em blocos */
.cav-ev-tiles { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
@media (max-width: 575.98px) { .cav-ev-tiles { grid-template-columns: 1fr; } }
.cav-ev-tile {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px;
    border-radius: 14px;
    border: 1px solid var(--cav-line);
    color: var(--cav-fg);
    transition: border-color .15s ease, transform .15s ease, box-shadow .15s ease;
}
.cav-ev-tile:hover { color: var(--cav-fg); border-color: rgba(var(--bs-primary-rgb), 0.35); transform: translateY(-1px); box-shadow: var(--cav-shadow); }
.cav-ev-tile > span:last-child { display: flex; flex-direction: column; min-width: 0; }
.cav-ev-tile strong { font-size: 14px; font-weight: 700; }
.cav-ev-tile small { font-size: 12px; color: var(--cav-muted); }
.cav-ev-tile-icon {
    width: 40px;
    height: 40px;
    flex-shrink: 0;
    border-radius: 12px;
    display: grid;
    place-items: center;
}
.cav-ev-tile-icon [class*=ki-] { color: inherit; }
.cav-ev-tile-icon.is-blue { background: var(--bs-primary-light); color: var(--cav-blue); }
.cav-ev-tile-icon.is-amber { background: rgba(245, 165, 36, 0.14); color: #C77F0A; }
.cav-ev-tile-icon.is-green { background: rgba(77, 177, 63, 0.14); color: #2F8A25; }
.cav-ev-tile-icon.is-pink { background: rgba(240, 67, 106, 0.12); color: #D12E55; }
.cav-ev-tile-icon.is-violet { background: rgba(122, 92, 255, 0.14); color: #6247E0; }
.cav-ev-tile-icon.is-red { background: rgba(240, 67, 106, 0.12); color: #D12E55; }
.cav-ev-tile.is-done { cursor: default; background: rgba(77, 177, 63, 0.06); border-color: rgba(77, 177, 63, 0.3); }
.cav-ev-tile.is-done:hover { transform: none; box-shadow: none; }
.cav-ev-tile.is-done .cav-ev-tile-icon { background: rgba(77, 177, 63, 0.14); color: #2F8A25; }
.cav-ev-tile.is-done small { color: #2F8A25; font-weight: 700; }

.cav-ev-docs { display: flex; flex-direction: column; }
.cav-ev-docs a {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 9px 4px;
    border-bottom: 1px solid var(--cav-line);
    font-size: 13px;
    font-weight: 600;
    color: var(--cav-fg);
}
.cav-ev-docs a:last-child { border-bottom: 0; }
.cav-ev-docs a:hover { color: var(--cav-blue); }
.cav-ev-docs a [class*=ki-] { color: var(--cav-muted); }

/* Questionários da visita */
.cav-ev-forms { display: flex; flex-direction: column; gap: 8px; }
.cav-ev-form {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 12px;
    border-radius: 12px;
    border: 1px solid var(--cav-line);
}
.cav-ev-form-name { font-size: 14px; font-weight: 600; color: var(--cav-fg); }
.cav-ev-form-actions { display: flex; align-items: center; gap: 6px; }
.cav-ev-icon-btn {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    border: 1px solid var(--cav-line);
    display: grid;
    place-items: center;
    background: var(--cav-surface);
    color: var(--cav-muted);
}
.cav-ev-icon-btn:hover { color: var(--cav-blue); border-color: rgba(var(--bs-primary-rgb), 0.35); }
.cav-ev-icon-btn [class*=ki-] { color: inherit; }
.cav-ev-modal .btn [class*=ki-] { color: inherit; }

/* ==========================================================
 * Autenticação (login, cadastro, senha) — mobile primeiro
 * ========================================================== */
.cav-auth {
    flex: 1 0 auto; /* o body do Metronic é flex: sem isso a tela ficava presa à altura da janela */
    min-height: 100vh;
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
    background: var(--cav-bg);
}
body.app-blank { background-color: var(--cav-bg); }
/* Faixa do topo: foto com o degradê escuro da marca */
.cav-auth-hero {
    position: relative;
    flex-shrink: 0;
    min-height: 210px;
    padding: 36px 24px 56px;
    display: flex;
    align-items: flex-end;
    background-size: cover;
    background-position: center 30%;
    color: #FFFFFF;
}
.cav-auth-hero::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        radial-gradient(420px 300px at 0% 100%, rgba(122, 92, 255, 0.55), transparent 70%),
        radial-gradient(380px 260px at 100% 0%, rgba(0, 217, 197, 0.35), transparent 70%),
        linear-gradient(180deg, rgba(11, 11, 28, 0.55) 0%, rgba(11, 11, 28, 0.88) 100%);
}
.cav-auth-hero-content { position: relative; max-width: 520px; }
.cav-auth-hero-title {
    margin: 0;
    font-size: 24px;
    font-weight: 800;
    line-height: 1.2;
    letter-spacing: -0.02em;
    color: #FFFFFF;
}
.cav-auth-hero-text { display: none; margin: 16px 0 0; font-size: 15px; line-height: 1.65; color: rgba(255, 255, 255, 0.82); }

.cav-auth-main {
    position: relative;
    flex: 1;
    display: flex;
    flex-direction: column;
    margin-top: -28px;
    padding: 0 16px;
}
.cav-auth-panel {
    width: 100%;
    max-width: 440px;
    margin: 0 auto;
    padding: 28px 22px 26px;
    border-radius: 24px;
    background: var(--cav-surface);
    box-shadow: 0 1px 2px rgba(18, 18, 42, 0.04), 0 20px 48px -20px rgba(18, 18, 60, 0.28);
}
.cav-auth-footer {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    padding: 22px 16px 28px;
    font-size: 13px;
    color: var(--cav-muted);
    text-align: center;
}
.cav-auth-footer a { font-weight: 600; color: var(--cav-blue); }

@media (min-width: 992px) {
    .cav-auth { flex-direction: row-reverse; }
    .cav-auth-hero {
        width: 50%;
        min-height: 100vh;
        padding: 64px;
        align-items: center;
        justify-content: center;
        position: sticky;
        top: 0;
    }
    .cav-auth-hero-content { text-align: center; }
    .cav-auth-hero-title { font-size: 36px; }
    .cav-auth-hero-text { display: block; }
    .cav-auth-main { width: 50%; margin-top: 0; padding: 48px 32px 0; justify-content: center; }
    .cav-auth-panel { padding: 40px 40px 36px; box-shadow: var(--cav-shadow); }
}

/* Formulário */
.cav-auth-brand { text-align: center; margin-bottom: 24px; }
.cav-auth-logo { height: 52px; width: auto; }
.cav-auth-title { margin: 18px 0 4px; font-size: 22px; font-weight: 800; letter-spacing: -0.02em; color: var(--cav-fg); }
.cav-auth-sub { margin: 0; font-size: 14px; color: var(--cav-muted); }

.cav-field { margin-bottom: 16px; }
.cav-label { display: block; margin-bottom: 6px; font-size: 13px; font-weight: 700; color: var(--cav-fg); }
.cav-input.form-control {
    height: 50px;
    padding: 0 16px;
    border-radius: 14px;
    border: 1.5px solid #E3E5EF;
    background: var(--cav-surface);
    font-size: 16px; /* 16px evita o zoom automático do iPhone ao focar */
    color: var(--cav-fg);
    transition: border-color .15s ease, box-shadow .15s ease;
}
.cav-input.form-control::placeholder { color: #A6ABBD; }
.cav-input.form-control:focus {
    border-color: var(--cav-blue);
    box-shadow: 0 0 0 4px rgba(var(--bs-primary-rgb), 0.12);
}
[data-bs-theme=dark] .cav-input.form-control { border-color: var(--cav-line); }
.cav-input-wrap { position: relative; }
.cav-input-wrap .cav-input { padding-right: 52px; }
.cav-input-eye {
    position: absolute;
    top: 5px;
    right: 5px;
    width: 40px;
    height: 40px;
    border: 0;
    border-radius: 10px;
    display: grid;
    place-items: center;
    background: transparent;
    color: var(--cav-muted);
}
.cav-input-eye:hover,
.cav-input-eye.is-on { color: var(--cav-blue); background: var(--bs-primary-light); }
.cav-input-eye .cav-eye-closed,
.cav-input-eye.is-on .cav-eye-open { display: none; }
.cav-input-eye.is-on .cav-eye-closed { display: block; }
.cav-auth-form .fv-plugins-message-container { margin-top: 6px; font-size: 12px; }
.cav-auth-link { font-size: 13px; font-weight: 600; color: var(--cav-blue); }
.cav-auth-link:hover { color: var(--cav-blue-2); text-decoration: underline; }

.cav-auth-submit.btn {
    height: 52px;
    border-radius: 14px !important;
    font-size: 16px;
    font-weight: 700;
}
.cav-auth-divider {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 22px 0 14px;
    font-size: 13px;
    color: var(--cav-muted);
}
.cav-auth-divider::before,
.cav-auth-divider::after { content: ""; flex: 1; height: 1px; background: var(--cav-line); }
.cav-auth-secondary.btn {
    height: 50px;
    display: grid;
    place-items: center;
    border-radius: 14px;
    border: 1.5px solid #E3E5EF !important;
    background: var(--cav-surface);
    font-size: 15px;
    font-weight: 700;
    color: var(--cav-fg);
}
.cav-auth-secondary.btn:hover { border-color: var(--cav-blue) !important; color: var(--cav-blue); }

.cav-auth-apps { margin-top: 22px; text-align: center; }
.cav-auth-apps > span { display: block; margin-bottom: 10px; font-size: 12px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--cav-muted); }
.cav-auth-apps > div { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.cav-store {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    height: 48px;
    padding: 0 10px;
    border-radius: 12px;
    background: #0B0B1C;
    color: #FFFFFF;
    text-align: left;
    transition: transform .15s ease;
}
.cav-store:hover { color: #FFFFFF; transform: translateY(-1px); }
.cav-store img { width: 22px; height: 22px; flex-shrink: 0; }
.cav-store-apple { filter: invert(1); }
.cav-store span { display: flex; flex-direction: column; font-size: 14px; font-weight: 700; line-height: 1.1; }
.cav-store small { font-size: 10px; font-weight: 500; opacity: 0.75; }

/* ==========================================================
 * Tarefas (kanban) — mobile primeiro
 * ========================================================== */
.cav-task-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-bottom: 16px;
}
.cav-task-filters { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; flex: 1 1 100%; }
.cav-task-filters .form-select {
    height: 44px;
    border-radius: 12px;
    border: 1px solid var(--cav-line);
    background-color: var(--cav-surface);
    font-size: 14px;
    font-weight: 600;
    color: var(--cav-fg);
}
.cav-task-new.btn { flex: 1 1 100%; height: 46px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; font-size: 15px; }
.cav-task-new.btn i { color: inherit; }
@media (min-width: 768px) {
    .cav-task-filters { flex: 0 1 auto; grid-template-columns: 240px 240px; }
    .cav-task-new.btn { flex: 0 0 auto; margin-left: auto; height: 42px; }
}

/* Abas de status: só no celular */
.cav-task-tabs {
    display: flex;
    gap: 6px;
    margin: 0 -16px 14px;
    padding: 2px 16px 4px;
    overflow-x: auto;
    scrollbar-width: none;
}
.cav-task-tabs::-webkit-scrollbar { display: none; }
.cav-task-tabs .cav-tab {
    flex: 0 0 auto;
    border: 1px solid var(--cav-line);
    background: var(--cav-surface);
    padding: 8px 12px;
}
.cav-task-tabs .cav-tab.is-active { background: var(--cav-navy); border-color: var(--cav-navy); color: #FFFFFF; }
.cav-task-tabs .cav-tab.is-active .cav-task-dot { box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.35); }
@media (min-width: 768px) { .cav-task-tabs { display: none; } }

.cav-task-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; display: inline-block; }
/* Mesmas cores dos gráficos do relatório (paleta validada para daltonismo) */
.cav-task-dot.is-primary { background: #2A78D6; }
.cav-task-dot.is-warning { background: #EDA100; }
.cav-task-dot.is-danger { background: #E87BA4; }
.cav-task-dot.is-info { background: #4A3AA7; }
.cav-task-dot.is-success { background: #008300; }

/* Quadro: 5 colunas no computador, 2 no tablet, 1 por vez no celular.
   O jKanban define largura/margens inline, por isso os !important. */
#kanban_tarefas .kanban-container { display: flex; flex-wrap: wrap !important; gap: 16px; width: 100% !important; }
#kanban_tarefas .kanban-board {
    float: none;
    width: 100% !important;
    margin: 0 !important;
    border-radius: 18px;
    background: var(--cav-soft);
    border: 1px solid var(--cav-line);
}
#kanban_tarefas .kanban-board-header {
    padding: 14px 14px 4px;
    background: transparent !important;
    border: 0;
}
#kanban_tarefas .kanban-title-board {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    font-size: 14px;
    font-weight: 700;
    color: var(--cav-fg) !important;
    white-space: nowrap;
}
.cav-task-board-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.cav-task-count {
    margin-left: auto;
    flex-shrink: 0;
    min-width: 24px;
    padding: 1px 8px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
    text-align: center;
    background: var(--cav-surface);
    color: var(--cav-muted);
    border: 1px solid var(--cav-line);
}
#kanban_tarefas .kanban-drag { padding: 10px; min-height: 120px; }
#kanban_tarefas .kanban-drag:empty::before {
    content: "Nenhuma tarefa aqui";
    display: grid;
    place-items: center;
    height: 96px;
    border-radius: 14px;
    border: 1.5px dashed var(--cav-line);
    font-size: 13px;
    color: var(--cav-muted);
}
@media (max-width: 767.98px) {
    #kanban_tarefas .kanban-board { display: none; }
    #kanban_tarefas .kanban-board.is-visible { display: block; }
    #kanban_tarefas .kanban-board-header { display: none; } /* a aba já mostra o título */
}
@media (min-width: 768px) and (max-width: 1199.98px) {
    #kanban_tarefas .kanban-board { width: calc((100% - 16px) / 2) !important; }
}
@media (min-width: 1200px) {
    #kanban_tarefas .kanban-board { width: calc((100% - 64px) / 5) !important; }
    /* Altura fixa: cada coluna mostra ~5 cards e rola a partir daí */
    #kanban_tarefas .kanban-drag { max-height: 600px; overflow-y: auto; }
}

/* Card da tarefa */
#kanban_tarefas .kanban-item {
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin-bottom: 10px;
    padding: 12px 12px 10px;
    border-radius: 14px;
    background: var(--cav-surface);
    border: 1px solid var(--cav-line);
    box-shadow: var(--cav-shadow);
    cursor: pointer;
    transition: box-shadow .15s ease, transform .15s ease;
}
#kanban_tarefas .kanban-item:last-child { margin-bottom: 0; }
#kanban_tarefas .kanban-item:hover { box-shadow: var(--cav-shadow-hover); transform: translateY(-1px); }
.cav-task-title {
    font-size: 14px;
    font-weight: 700;
    line-height: 1.35;
    color: var(--cav-fg);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.cav-task-local { font-size: 12px; color: var(--cav-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cav-task-foot { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 6px 8px; margin-top: 8px; }
.cav-task-foot .symbol-group { flex-wrap: nowrap; flex-shrink: 0; }
.cav-task-foot .symbol-group .symbol { margin-left: -6px; }
.cav-task-foot .symbol-group .symbol:first-child { margin-left: 0; }
.cav-task-foot .symbol-group .symbol img,
.cav-task-foot .symbol-group .symbol .symbol-label { border: 2px solid var(--cav-surface); border-radius: 50% !important; }
.cav-task-initials { background: var(--bs-primary-light) !important; color: var(--cav-blue) !important; font-size: 10px; font-weight: 700; }
.cav-task-more { background: var(--cav-soft) !important; color: var(--cav-muted) !important; font-size: 10px; font-weight: 700; }
.cav-task-chips { display: flex; gap: 4px; flex-wrap: wrap; margin-left: auto; }
.cav-task-chip {
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    white-space: nowrap;
    background: var(--cav-soft);
    color: var(--cav-muted);
}
.cav-task-chip.is-late { display: inline-flex; align-items: center; gap: 4px; background: rgba(240, 67, 106, 0.12); color: #D12E55; }
.cav-task-late-dot { width: 6px; height: 6px; border-radius: 50%; background: #F0436A; }

/* Modal da tarefa */
.cav-task-modal .modal-content { border: 0; border-radius: 22px; overflow: hidden; }
.cav-task-modal-body { padding: 22px 24px 24px; }
.cav-task-modal label { font-size: 13px; font-weight: 700 !important; color: var(--cav-fg); }
.cav-task-modal .form-control,
.cav-task-modal .form-select {
    min-height: 46px;
    border-radius: 12px;
    font-size: 15px;
}
.cav-task-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.cav-task-actions .btn { border-radius: 999px; }
.cav-task-actions .btn-light { margin-left: auto; }
.cav-task-hours {
    margin-top: 24px;
    padding: 18px;
    border-radius: 16px;
    background: var(--cav-soft);
    border: 1px solid var(--cav-line);
}
.cav-task-hours h3 { font-size: 16px; }
.cav-task-hours .table { background: var(--cav-surface); border-radius: 12px; overflow: hidden; }
.cav-task-hours .table td, .cav-task-hours .table th { padding-left: 12px !important; padding-right: 12px !important; }
@media (max-width: 575.98px) {
    .cav-task-modal .modal-content { border-radius: 0; }
    .cav-task-modal-body { padding: 18px 16px 24px; }
    .cav-task-actions .btn-primary { flex: 1 1 100%; order: -1; height: 46px; }
    .cav-task-actions .btn-light { margin-left: 0; flex: 1; }
    .cav-task-actions .btn-light-danger { flex: 1; }
}

/* ==========================================================
 * Relatório de tarefas — mobile primeiro
 * ========================================================== */
/* Botão de filtros (só no celular) */
.cav-filters-toggle {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 12px;
    padding: 12px 16px;
    border: 1px solid var(--cav-line);
    border-radius: 14px;
    background: var(--cav-surface);
    font-size: 15px;
    font-weight: 700;
    color: var(--cav-fg);
    box-shadow: var(--cav-shadow);
}
.cav-filters-toggle [class*=ki-] { color: var(--cav-blue); }
.cav-filters-toggle .cav-tab-count { background: var(--cav-blue); color: #FFFFFF; }
.cav-filters-period { margin-left: auto; font-size: 13px; font-weight: 600; color: var(--cav-muted); }
.cav-filters-card { display: none; }
.cav-filters-card.is-open { display: block; }
@media (min-width: 768px) {
    .cav-filters-toggle { display: none; }
    .cav-filters-card { display: block; }
}
.cav-filters-card .form-control,
.cav-filters-card .form-select { min-height: 42px; border-radius: 10px; font-size: 14px; }
.cav-filters-card .btn { border-radius: 999px; min-height: 40px; padding-inline: 18px; }

.cav-report-note {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 16px;
    margin: 0 0 14px;
    font-size: 12px;
    color: var(--cav-muted);
}
.cav-report-note b { color: var(--cav-fg); }

/* Indicadores: 2 por linha no celular, 3 no tablet, 6 no computador */
.cav-kpis {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
    margin-bottom: 20px;
}
@media (min-width: 768px) { .cav-kpis { grid-template-columns: repeat(3, 1fr); gap: 16px; } }
@media (min-width: 1200px) { .cav-kpis { grid-template-columns: repeat(6, 1fr); } }
.cav-kpi {
    display: flex;
    flex-direction: column;
    padding: 14px;
    border-radius: 18px;
    background: var(--cav-surface);
    border: 1px solid var(--cav-line);
    box-shadow: var(--cav-shadow);
}
.cav-kpi-head { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.cav-kpi-head .cav-score-icon { width: 32px; height: 32px; border-radius: 10px; }
.cav-kpi-title { font-size: 12px; font-weight: 700; color: var(--cav-muted); line-height: 1.2; }
.cav-kpi-value {
    font-size: 28px;
    font-weight: 800;
    line-height: 1;
    letter-spacing: -0.02em;
    color: var(--cav-fg);
    font-variant-numeric: tabular-nums;
}
.cav-kpi-detail { margin-top: 6px; font-size: 12px; line-height: 1.35; color: var(--cav-muted); }
/* Alerta: borda e valor vermelhos (o ícone e o título já dizem "Atrasadas") */
.cav-kpi.is-alert { border-color: rgba(240, 67, 106, 0.35); background: linear-gradient(180deg, rgba(240, 67, 106, 0.06), var(--cav-surface) 70%); }
.cav-kpi.is-alert .cav-kpi-value { color: #D12E55; }

/* Cards do relatório */
.cav-report-card { overflow: hidden; }
.cav-report-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    padding: 18px 20px 6px;
}
.cav-report-head h3 { margin: 0; font-size: 16px; font-weight: 800; color: var(--cav-fg); }
.cav-report-head p { margin: 2px 0 0; font-size: 12px; line-height: 1.45; color: var(--cav-muted); }
.cav-report-body { padding: 8px 20px 20px; }
/* Tabelas do relatório (uso no computador): células compactas para caber sem rolar */
.cav-report-card .cav-table.table > thead > tr > th { padding: 10px 10px !important; }
.cav-report-card .cav-table.table > tbody > tr > td { padding: 10px 10px !important; font-size: 13px; }
.cav-report-card .cav-table.table > thead > tr > th:first-child,
.cav-report-card .cav-table.table > tbody > tr > td:first-child { padding-left: 14px !important; }
.cav-report-card .cav-table.table > thead > tr > th:last-child,
.cav-report-card .cav-table.table > tbody > tr > td:last-child { padding-right: 14px !important; }
.cav-report-card .table-responsive,
.cav-dt-scroll { border: 1px solid var(--cav-line); border-radius: 12px; overflow-x: auto; }
.cav-report-card .cav-table .cav-col-demanda { min-width: 190px; }
.cav-report-card .cav-table .cav-col-pessoas { min-width: 150px; }
.cav-report-card .cav-table.table > tbody > tr > td { line-height: 1.4; }
.cav-date-late {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-weight: 700;
    color: #D12E55;
}
.cav-date-late::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: #F0436A; }
.cav-report-empty { padding: 28px 20px; text-align: center; font-size: 13px; color: var(--cav-muted); }
.cav-chart-toggle {
    flex-shrink: 0;
    padding: 6px 14px;
    border: 1px solid var(--cav-line);
    border-radius: 999px;
    background: var(--cav-soft);
    font-size: 12px;
    font-weight: 700;
    color: var(--cav-fg);
}
.cav-chart-toggle:hover,
.cav-chart-toggle[aria-pressed="true"] { background: var(--cav-navy); border-color: var(--cav-navy); color: #FFFFFF; }
.cav-report-card .tabela-grafico { padding-top: 8px; }

/* Em risco */
.cav-risk-count { background: rgba(240, 67, 106, 0.12) !important; color: #D12E55 !important; font-size: 13px !important; padding: 3px 10px !important; }
.cav-risk-list { padding: 8px 16px 16px; display: flex; flex-direction: column; gap: 10px; }
.cav-risk-item {
    padding: 12px 14px;
    border-radius: 14px;
    border: 1px solid var(--cav-line);
    background: var(--cav-surface);
}
.cav-risk-item strong { font-size: 14px; line-height: 1.35; color: var(--cav-fg); }
.cav-risk-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin-top: 8px; font-size: 12px; color: var(--cav-muted); }
.cav-risk-who { margin-top: 6px; font-size: 12px; color: var(--cav-muted); }
.cav-risk-late, .cav-risk-soon {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
}
.cav-risk-late { background: rgba(240, 67, 106, 0.12); color: #D12E55; }
.cav-risk-soon { background: rgba(245, 165, 36, 0.16); color: #9A6100; }
.cav-risk-late [class*=ki-], .cav-risk-soon [class*=ki-] { color: inherit; }

/* Lista completa (DataTables) */
.cav-dt-top, .cav-dt-bottom { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; }
.cav-dt-top { margin-bottom: 12px; }
.cav-dt-bottom { margin-top: 12px; justify-content: space-between; }
.cav-dt-top .dataTables_length, .cav-dt-top .dt-buttons, .cav-dt-top .dataTables_filter { float: none !important; margin: 0 !important; padding: 0 !important; }
.cav-dt-top .dataTables_filter { margin-left: auto !important; }
.cav-dt-top .dataTables_filter label, .cav-dt-top .dataTables_length label { display: flex; align-items: center; gap: 8px; margin: 0; font-size: 13px; color: var(--cav-muted); }
.cav-dt-top .dataTables_filter input { width: 240px !important; margin: 0 !important; border-radius: 999px; min-height: 38px; }
.cav-dt-top .dataTables_length select { width: auto !important; border-radius: 10px; }
.cav-dt-bottom .dataTables_info { padding: 0 !important; font-size: 13px; color: var(--cav-muted); }
.cav-dt-bottom .dataTables_paginate { margin: 0 !important; padding: 0 !important; }
.cav-report-list .dataTables_wrapper .pagination .page-item.active .page-link { background: var(--cav-navy); border-color: var(--cav-navy); }

/* ==========================================================
 * Assistente de questionários (chat com IA)
 * ========================================================== */
.qchat-app {
    display: grid;
    grid-template-columns: 300px minmax(0, 1fr);
    gap: 20px;
    height: calc(100vh - 190px);
    min-height: 560px;
}
@media (max-width: 991.98px) {
    .qchat-app { grid-template-columns: 1fr; height: auto; }
    .qchat-side { max-height: 260px; }
    .qchat-main { height: calc(100vh - 160px); min-height: 560px; }
}

/* Coluna das conversas */
.qchat-side { display: flex; flex-direction: column; padding: 16px; overflow: hidden; }
.qchat-new.btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 44px; font-size: 14px; }
.qchat-new.btn [class*=ki-] { color: inherit; }
.qchat-side-label {
    margin: 18px 4px 8px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--cav-muted);
}
.qchat-sessions-scroll { flex: 1; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 4px; margin: 0 -6px; padding: 0 6px; }
.qchat-session-item {
    display: block;
    width: 100%;
    text-align: left;
    padding: 10px 12px;
    border: 0;
    border-radius: 12px;
    background: transparent;
    cursor: pointer;
    transition: background-color .15s ease;
}
.qchat-session-item:hover { background: var(--cav-soft); }
.qchat-session-item.active { background: var(--bs-primary-light); box-shadow: inset 3px 0 0 var(--cav-blue); }
.qchat-session-title { font-size: 13px; font-weight: 700; color: var(--cav-fg); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.qchat-session-program { margin-top: 2px; font-size: 11px; font-weight: 600; color: var(--cav-blue); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.qchat-session-date { margin-top: 2px; font-size: 11px; color: var(--cav-muted); }

/* Área do chat */
.qchat-main { display: flex; flex-direction: column; overflow: hidden; }
.qchat-scope {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
    padding: 14px 20px;
    border-bottom: 1px solid var(--cav-line);
    background: var(--cav-soft);
    transition: background-color .2s ease, box-shadow .2s ease;
}
.qchat-scope.is-empty { background: rgba(245, 165, 36, 0.1); box-shadow: inset 0 -2px 0 rgba(245, 165, 36, 0.5); }
.qchat-scope.is-shake { animation: qchat-shake .4s ease; }
@keyframes qchat-shake { 0%, 100% { transform: none; } 25% { transform: translateX(-4px); } 75% { transform: translateX(4px); } }
.qchat-scope-title { display: flex; align-items: center; gap: 10px; min-width: 200px; }
.qchat-scope-title strong { display: block; font-size: 14px; color: var(--cav-fg); }
.qchat-scope-title small { display: block; font-size: 12px; color: var(--cav-muted); }
.qchat-scope.is-empty .qchat-scope-title small { color: #9A6100; font-weight: 600; }
.qchat-scope-fields { flex: 1; display: grid; grid-template-columns: minmax(160px, 220px) minmax(240px, 1fr); gap: 10px; }
.qchat-scope-fields label { display: block; margin-bottom: 4px; font-size: 11px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--cav-muted); }
.qchat-scope .select2-container { width: 100% !important; }
.qchat-scope .select2-container .select2-selection { min-height: 40px; border-radius: 10px; background: var(--cav-surface) !important; }
.qchat-scope .select2-selection__choice { max-width: 100%; white-space: normal; }
@media (max-width: 767.98px) { .qchat-scope-fields { grid-template-columns: 1fr; } }

.qchat-ai-icon {
    width: 40px;
    height: 40px;
    flex-shrink: 0;
    border-radius: 12px;
    display: grid;
    place-items: center;
    color: #FFFFFF;
    background:
        radial-gradient(30px 24px at 0% 100%, rgba(122, 92, 255, 0.9), transparent 70%),
        radial-gradient(30px 24px at 100% 0%, rgba(0, 217, 197, 0.8), transparent 70%),
        #0B0B1C;
}
.qchat-ai-icon [class*=ki-] { color: inherit; }
.qchat-ai-icon.is-small { width: 34px; height: 34px; border-radius: 50%; }

.qchat-scroll { flex: 1; min-height: 0; overflow-y: auto; padding: 20px 24px; }

/* Tela inicial com sugestões */
.qchat-empty { height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 24px; }
.qchat-empty-icon {
    width: 64px;
    height: 64px;
    margin-bottom: 14px;
    border-radius: 20px;
    display: grid;
    place-items: center;
    color: #FFFFFF;
    background:
        radial-gradient(48px 36px at 0% 100%, rgba(122, 92, 255, 0.9), transparent 70%),
        radial-gradient(48px 36px at 100% 0%, rgba(0, 217, 197, 0.8), transparent 70%),
        #0B0B1C;
    box-shadow: 0 12px 28px -12px rgba(11, 11, 28, 0.6);
}
.qchat-empty-icon [class*=ki-] { color: inherit; }
.qchat-empty h3 { margin: 0; font-size: 18px; font-weight: 800; color: var(--cav-fg); }
.qchat-empty p { margin: 6px 0 16px; font-size: 13px; color: var(--cav-muted); }
.qchat-suggestions { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; max-width: 560px; }
.qchat-suggestions button {
    padding: 8px 14px;
    border: 1px solid var(--cav-line);
    border-radius: 999px;
    background: var(--cav-surface);
    font-size: 13px;
    font-weight: 600;
    color: var(--cav-fg);
    transition: border-color .15s ease, color .15s ease, background-color .15s ease;
}
.qchat-suggestions button:hover { border-color: var(--cav-blue); color: var(--cav-blue); background: var(--bs-primary-light); }

/* Balões */
.qchat-message > .d-flex { max-width: 78%; min-width: 0; }
.qchat-bubble { max-width: 100%; padding: 12px 16px; font-size: 14px; line-height: 1.55; }
.qchat-bubble.is-user {
    border-radius: 16px 4px 16px 16px;
    color: #FFFFFF;
    background: linear-gradient(135deg, var(--cav-blue), var(--cav-blue-2));
}
.qchat-bubble.is-ai {
    border-radius: 4px 16px 16px 16px;
    color: var(--cav-fg);
    background: var(--cav-surface);
    border: 1px solid var(--cav-line);
    box-shadow: var(--cav-shadow);
}
.qchat-bubble.qchat-typing { color: var(--cav-muted); }
.qchat-bubble p:last-child { margin-bottom: 0 !important; }
.qchat-bubble h4, .qchat-bubble h5, .qchat-bubble h6 { color: var(--cav-fg); }
.qchat-bubble code { padding: 1px 6px; border-radius: 6px; background: var(--cav-soft); color: #6247E0; }
.qchat-table { margin: 6px 0 10px; border: 1px solid var(--cav-line); border-radius: 10px; }
.qchat-table .cav-table.table > thead > tr > th { padding: 8px 10px !important; font-size: 11px; }
.qchat-table .cav-table.table > tbody > tr > td { padding: 8px 10px !important; font-size: 13px; }
.qchat-meta { margin-top: 4px; font-size: 11px; color: var(--cav-muted); }
.qchat-message .cav-avatar img,
.qchat-message .cav-avatar .symbol-label { width: 34px; height: 34px; }

/* Campo de pergunta fixo embaixo */
.qchat-composer { padding: 12px 20px 16px; border-top: 1px solid var(--cav-line); background: var(--cav-surface); }
.qchat-composer-box { position: relative; }
.qchat-input {
    display: block;
    width: 100%;
    min-height: 50px;
    max-height: 160px;
    padding: 13px 58px 13px 16px;
    border: 1.5px solid var(--cav-line);
    border-radius: 16px;
    background: var(--cav-soft);
    font-size: 15px;
    line-height: 1.45;
    color: var(--cav-fg);
    resize: none;
    overflow-y: auto;
    transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
}
.qchat-input:focus { outline: none; background: var(--cav-surface); border-color: var(--cav-blue); box-shadow: 0 0 0 4px rgba(var(--bs-primary-rgb), 0.12); }
.qchat-send {
    position: absolute;
    right: 8px;
    bottom: 8px;
    width: 36px;
    height: 36px;
    border: 0;
    border-radius: 12px;
    display: grid;
    place-items: center;
    color: #FFFFFF;
    background: linear-gradient(135deg, var(--cav-blue), var(--cav-blue-2));
    transition: transform .15s ease, opacity .15s ease;
}
.qchat-send:hover { transform: scale(1.05); }
.qchat-send:disabled { opacity: 0.45; transform: none; }
.qchat-send [class*=ki-] { color: inherit; }
.qchat-composer-foot { display: flex; justify-content: space-between; gap: 12px; margin-top: 6px; font-size: 11px; color: var(--cav-muted); }
/* Ferramenta interna: o botão flutuante do WhatsApp cobria o botão de enviar */
body:has(.qchat-app) #whatsapp-chat-widget { display: none !important; }

/* Calendário: fotos dos responsáveis */
.cav-ev-initial { overflow: hidden; }
.cav-ev-initial img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cav-ev-person { padding: 3px 12px 3px 3px; }
.cav-ev-person .cav-ev-initial { width: 26px; height: 26px; font-size: 12px; }

.cav-ev-chip { display: flex; align-items: center; gap: 6px; min-width: 0; overflow: hidden; }
.cav-ev-chip-title { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cav-ev-faces { display: inline-flex; flex-shrink: 0; }
.cav-ev-face {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    display: inline-grid;
    place-items: center;
    overflow: hidden;
    font-size: 10px;
    font-weight: 700;
    color: #FFFFFF;
    background: rgba(255, 255, 255, 0.28);
}
.cav-ev-face + .cav-ev-face { margin-left: -4px; }
.cav-ev-face img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cav-ev-face.is-more { font-size: 9px; background: rgba(11, 11, 28, 0.35); }
.cav-cal-body .fc .cav-ev { padding: 3px 6px; }

/* ==========================================================
 * Formulários públicos (/forms) — mobile primeiro
 * ========================================================== */
body:has(.cav-form) { background: #EEF4EE !important; }
body:has(.cav-form)::before {
    content: "";
    position: fixed;
    inset: 0 0 auto 0;
    height: 320px;
    z-index: -1;
    background:
        radial-gradient(420px 260px at 10% 0%, rgba(77, 177, 63, 0.18), transparent 70%),
        radial-gradient(420px 260px at 90% 0%, rgba(30, 111, 217, 0.14), transparent 70%);
}
/* O layout do formulário tinha 32px de margem nas laterais: no celular sobra pouco espaço */
#kt_app_root:has(.cav-form) .flex-center.p-10 { width: 100%; max-width: 100%; padding: 16px 12px 40px !important; align-items: stretch !important; justify-content: flex-start !important; }
.cav-form, .cav-form * { overflow-wrap: anywhere; }
.cav-form img { max-width: 100%; height: auto; }
.cav-form { width: 100%; max-width: 760px; margin: 0 auto; }
.cav-form-logo { display: flex; justify-content: center; margin: 4px 0 18px; }
.cav-form-logo img { height: 48px; width: auto; }

/* Progresso fixo */
.cav-form-progress {
    position: sticky;
    top: 0;
    z-index: 20;
    margin: 0 -12px 14px;
    padding: 10px 16px;
    background: rgba(255, 255, 255, 0.9);
    backdrop-filter: saturate(180%) blur(14px);
    -webkit-backdrop-filter: saturate(180%) blur(14px);
    border-bottom: 1px solid var(--cav-line);
}
@media (min-width: 768px) { .cav-form-progress { margin: 0 0 16px; border: 1px solid var(--cav-line); border-radius: 14px; top: 12px; } }
.cav-form-progress-text { font-size: 13px; color: var(--cav-muted); margin-bottom: 6px; }
.cav-form-progress-text strong { color: var(--cav-fg); font-size: 14px; }
.cav-form-progress-bar { height: 6px; border-radius: 999px; background: var(--cav-soft); overflow: hidden; }
.cav-form-progress-bar span { display: block; height: 100%; width: 0; border-radius: 999px; background: linear-gradient(90deg, #4DB13F, #12B3A8, #1E6FD9); transition: width .3s ease; }

/* Cabeçalho do questionário */
.cav-form-hero {
    margin-bottom: 14px;
    padding: 22px 20px;
    border-radius: 20px;
    background: var(--cav-surface);
    border-top: 4px solid #4DB13F;
    box-shadow: var(--cav-shadow);
}
.cav-form-hero h1 { margin: 0; font-size: 22px; font-weight: 800; line-height: 1.25; letter-spacing: -0.01em; color: var(--cav-fg); }
.cav-form-desc { margin-top: 10px; font-size: 15px; line-height: 1.6; color: var(--cav-muted); }
.cav-form-desc p:last-child { margin-bottom: 0; }

/* Cards */
.cav-form-card {
    margin-bottom: 14px;
    padding: 20px;
    border-radius: 18px;
    background: var(--cav-surface);
    border: 1px solid var(--cav-line);
    box-shadow: var(--cav-shadow);
}
.cav-form-section { margin: 0 0 14px; font-size: 17px; font-weight: 800; color: var(--cav-fg); }
.cav-form-grid { display: grid; grid-template-columns: 1fr; gap: 14px; }
@media (min-width: 640px) {
    .cav-form-grid { grid-template-columns: 1fr 1fr; }
    .cav-form-field-wide { grid-column: 1 / -1; }
}
.cav-form-field label { display: block; margin-bottom: 6px; font-size: 13px; font-weight: 700; color: var(--cav-fg); }
.cav-form-field label.required::after { content: " *"; color: #D12E55; }
.cav-form .cav-input.form-control,
.cav-form .cav-input.form-select { min-height: 50px; border-radius: 12px; font-size: 16px; }
.cav-form .select2-container .select2-selection--single { min-height: 50px; border-radius: 12px !important; border: 1.5px solid #E3E5EF !important; background: var(--cav-surface) !important; display: flex; align-items: center; }
.cav-form .select2-container .select2-selection__rendered { font-size: 16px; }
.cav-form-field.is-invalid .cav-input,
.cav-form-field.is-invalid .select2-selection { border-color: #D12E55 !important; box-shadow: 0 0 0 4px rgba(209, 46, 85, 0.1) !important; }
.cav-form-error { display: block; margin-top: 4px; font-size: 12px; color: #D12E55; }

/* Títulos de seção (perguntas do tipo G) */
.cav-q-group { margin: 26px 4px 12px; }
.cav-q-group-text { font-size: 17px; font-weight: 800; line-height: 1.35; color: var(--cav-fg); }
.cav-q-group-text p:last-child { margin-bottom: 0; }

/* Pergunta */
.cav-q {
    position: relative;
    margin-bottom: 12px;
    padding: 18px 16px 16px;
    border-radius: 18px;
    background: var(--cav-surface);
    border: 1.5px solid transparent;
    box-shadow: var(--cav-shadow);
    transition: border-color .2s ease;
}
.cav-q-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.cav-q-num {
    padding: 2px 9px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
    background: var(--bs-primary-light);
    color: var(--cav-blue);
}
.cav-q-optional { padding: 2px 9px; border-radius: 999px; font-size: 11px; font-weight: 700; background: var(--cav-soft); color: var(--cav-muted); }
.cav-q-check {
    margin-left: auto;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    color: #FFFFFF;
    background: #4DB13F;
    transform: scale(0);
    transition: transform .2s ease;
}
.cav-q.is-answered .cav-q-check { transform: scale(1); }
.cav-q-text { font-size: 16px; font-weight: 600; line-height: 1.5; color: var(--cav-fg); }
.cav-q-text p:last-child { margin-bottom: 0; }
.cav-q-hint { margin-top: 4px; font-size: 12px; color: var(--cav-muted); }
.cav-q-error { display: none; margin-top: 10px; font-size: 13px; font-weight: 600; color: #D12E55; }
.cav-q.is-invalid { border-color: rgba(209, 46, 85, 0.6); }
.cav-q.is-invalid .cav-q-error { display: block; }
.cav-q-textarea { min-height: 90px; margin-top: 12px; }
.cav-q > input.cav-input { margin-top: 12px; }

/* Opções: a linha inteira é tocável */
.cav-opts { display: grid; grid-template-columns: 1fr; gap: 8px; margin-top: 14px; }
@media (min-width: 640px) {
    .cav-opts { grid-template-columns: 1fr 1fr; }
    .cav-opts.is-scale { grid-template-columns: repeat(var(--cav-opts, 5), 1fr); }
    .cav-opts.is-scale .cav-opt { flex-direction: column; justify-content: center; text-align: center; min-height: 86px; }
}
.cav-opt {
    position: relative;
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 52px;
    margin: 0;
    padding: 12px 14px;
    border-radius: 14px;
    border: 1.5px solid #E3E5EF;
    background: var(--cav-surface);
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: border-color .15s ease, background-color .15s ease;
}
.cav-opt:hover { border-color: #C8CDDD; }
.cav-opt input { position: absolute; opacity: 0; pointer-events: none; }
.cav-opt-mark {
    position: relative;
    width: 22px;
    height: 22px;
    flex-shrink: 0;
    border-radius: 50%;
    border: 2px solid #B7BDCD;
    background: #FFFFFF;
    transition: border-color .15s ease, background-color .15s ease;
}
.cav-opt.is-multi .cav-opt-mark { border-radius: 7px; }
.cav-opt-text { font-size: 15px; line-height: 1.4; color: var(--cav-fg); }
.cav-opt input:checked ~ .cav-opt-mark { border-color: var(--cav-blue); background: var(--cav-blue); }
.cav-opt input:checked ~ .cav-opt-mark::after {
    content: "";
    position: absolute;
    inset: 5px;
    border-radius: 50%;
    background: #FFFFFF;
}
.cav-opt.is-multi input:checked ~ .cav-opt-mark::after {
    inset: auto;
    left: 6px;
    top: 2px;
    width: 6px;
    height: 11px;
    border-radius: 0;
    background: transparent;
    border: solid #FFFFFF;
    border-width: 0 2.5px 2.5px 0;
    transform: rotate(45deg);
}
.cav-opt:has(input:checked) { border-color: var(--cav-blue); background: var(--bs-primary-light); }
.cav-opt:has(input:checked) .cav-opt-text { font-weight: 700; }
.cav-opt input:focus-visible ~ .cav-opt-mark { box-shadow: 0 0 0 4px rgba(var(--bs-primary-rgb), 0.2); }
.cav-opt:has(input:disabled) { cursor: default; opacity: 0.8; }
.campo-outros { margin-top: 8px; }

.cav-form-terms .cav-opts { margin-top: 12px; }
.cav-form-submit.btn {
    width: 100%;
    height: 56px;
    margin: 6px 0 12px;
    border-radius: 16px !important;
    font-size: 17px;
    font-weight: 800;
}
.cav-terms-modal .modal-content { border-radius: 18px; }

/* Tela de obrigado */
.cav-form-done { max-width: 520px; }
.cav-done-card { padding: 40px 24px 32px; text-align: center; }
.cav-done-check {
    width: 84px;
    height: 84px;
    margin: 0 auto 18px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    color: #FFFFFF;
    background: linear-gradient(135deg, #4DB13F, #12B3A8);
    box-shadow: 0 14px 30px -12px rgba(47, 138, 37, 0.6);
    animation: cav-medal-in .5s ease both;
}
.cav-done-card h1 { margin: 0; font-size: 28px; font-weight: 800; color: var(--cav-fg); }
.cav-done-card p { margin: 10px 0 22px; font-size: 16px; line-height: 1.6; color: var(--cav-muted); }
.cav-done-back { font-size: 14px; font-weight: 600; color: var(--cav-blue); }

/* ----- Formulários: versão mais viva (cores do logo + Sora nos títulos) ----- */
.cav-form {
    --f-green: #3FA535;
    --f-teal: #0FA397;
    --f-blue: #1E6FD9;
    --f-ink: #10233A;
    --f-sel-bg: #E7F7F4;
    --f-grad: linear-gradient(120deg, #3FA535 0%, #0FA397 48%, #1E6FD9 100%);
    --f-title: "Sora", "Plus Jakarta Sans", sans-serif;
}
body:has(.cav-form) { background: #F1F6F3 !important; }
body:has(.cav-form)::before {
    height: 100%;
    background:
        radial-gradient(520px 380px at 0% 0%, rgba(63, 165, 53, 0.16), transparent 70%),
        radial-gradient(520px 380px at 100% 10%, rgba(30, 111, 217, 0.12), transparent 70%),
        radial-gradient(600px 420px at 50% 100%, rgba(15, 163, 151, 0.10), transparent 70%);
}

/* Faixa de abertura */
.cav-form-band {
    position: relative;
    overflow: hidden;
    margin-bottom: 14px;
    padding: 22px 20px 26px;
    border-radius: 24px;
    color: #FFFFFF;
    background:
        radial-gradient(180px 180px at 92% 12%, rgba(255, 255, 255, 0.22), transparent 70%),
        radial-gradient(240px 200px at 0% 110%, rgba(255, 255, 255, 0.16), transparent 70%),
        var(--f-grad);
    box-shadow: 0 18px 40px -20px rgba(15, 120, 110, 0.7);
}
.cav-form-band::after {
    /* círculos decorativos */
    content: "";
    position: absolute;
    right: -40px;
    bottom: -60px;
    width: 180px;
    height: 180px;
    border-radius: 50%;
    border: 24px solid rgba(255, 255, 255, 0.10);
}
.cav-form-band-logo {
    display: inline-flex;
    padding: 8px 12px;
    border-radius: 14px;
    background: #FFFFFF;
    box-shadow: 0 8px 20px -10px rgba(0, 0, 0, 0.35);
}
.cav-form-band-logo img { height: 34px; width: auto; }
.cav-form-chip {
    display: table;
    margin: 18px 0 8px;
    padding: 4px 12px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
    background: rgba(255, 255, 255, 0.2);
    border: 1px solid rgba(255, 255, 255, 0.35);
}
.cav-form-band h1 {
    position: relative;
    z-index: 1;
    margin: 0;
    font-family: var(--f-title);
    font-size: 24px;
    font-weight: 800;
    line-height: 1.2;
    letter-spacing: -0.02em;
    color: #FFFFFF;
}
@media (min-width: 768px) {
    .cav-form-band { padding: 28px 32px 34px; }
    .cav-form-band h1 { font-size: 30px; }
}
.cav-form-hero { border-top: 0; padding: 18px 20px; }
.cav-form-desc { margin-top: 0; color: #4E5D6E; }
.cav-form-desc b, .cav-form-desc strong { color: var(--f-ink); }

/* Progresso */
.cav-form-progress-text { display: flex; justify-content: space-between; align-items: baseline; }
.cav-form-progress-pct { font-family: var(--f-title); font-size: 14px; font-weight: 800; color: var(--f-teal); }
.cav-form-progress-bar { height: 8px; }
.cav-form-progress-bar span { background: var(--f-grad); }
.cav-form-progress.is-done .cav-form-progress-pct { color: var(--f-green); }

/* Títulos */
.cav-form-section { font-family: var(--f-title); color: var(--f-ink); }
.cav-form { counter-reset: secao; }
.cav-q-group {
    counter-increment: secao;
    position: relative;
    margin: 30px 0 12px;
    padding: 14px 16px 14px 18px;
    border-radius: 16px;
    background: rgba(255, 255, 255, 0.6);
    border-left: 5px solid var(--f-teal);
}
.cav-q-group::before {
    content: "Seção " counter(secao);
    display: block;
    margin-bottom: 2px;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--f-teal);
}
.cav-q-group-text { font-family: var(--f-title); font-size: 18px; color: var(--f-ink); }

/* Pergunta */
.cav-q { border-radius: 20px; }
.cav-q-num { font-family: var(--f-title); background: var(--f-grad); color: #FFFFFF; }
.cav-q-text { color: var(--f-ink); }
.cav-q.is-answered { border-color: rgba(63, 165, 53, 0.35); }
.cav-q-check { background: var(--f-green); }

/* Opção marcada em verde-água */
.cav-opt { border-radius: 16px; }
.cav-opt:hover { border-color: rgba(15, 163, 151, 0.45); }
.cav-opt input:checked ~ .cav-opt-mark { border-color: var(--f-teal); background: var(--f-teal); animation: cav-pop .3s ease; }
.cav-opt:has(input:checked) { border-color: var(--f-teal); background: var(--f-sel-bg); box-shadow: 0 6px 16px -10px rgba(15, 163, 151, 0.6); }
.cav-opt:has(input:checked) .cav-opt-text { color: #0B5E57; }
.cav-opt input:focus-visible ~ .cav-opt-mark { box-shadow: 0 0 0 4px rgba(15, 163, 151, 0.25); }

/* Campos */
.cav-form .cav-input.form-control:focus,
.cav-form .cav-input.form-select:focus { border-color: var(--f-teal); box-shadow: 0 0 0 4px rgba(15, 163, 151, 0.14); }

/* Enviar */
.cav-form-submit.btn {
    color: #FFFFFF;
    background: var(--f-grad);
    border: 0;
    box-shadow: 0 16px 30px -14px rgba(15, 120, 110, 0.8);
    font-family: var(--f-title);
    transition: transform .15s ease, box-shadow .15s ease, filter .15s ease;
}
.cav-form-submit.btn:hover { color: #FFFFFF; transform: translateY(-1px); filter: brightness(1.05); }
.cav-form-submit.btn:disabled { color: #FFFFFF; opacity: 0.7; }

/* Obrigado */
.cav-done-card h1 { font-family: var(--f-title); color: var(--f-ink); }
.cav-done-check { background: var(--f-grad); }
/* Formulários: complementos (presença e relatório) */
.cav-form-band-sub { position: relative; z-index: 1; margin: 6px 0 0; font-size: 14px; font-weight: 600; color: rgba(255, 255, 255, 0.85); }
.cav-form-lead { margin: -6px 0 16px; font-size: 14px; line-height: 1.55; color: #4E5D6E; }
.cav-form-optional { font-weight: 500; color: var(--cav-muted); }
.cav-opts.cav-opts-list { grid-template-columns: 1fr; }
.cav-done-card .cav-form-submit.btn { display: inline-flex; align-items: center; justify-content: center; max-width: 320px; margin: 0 auto; text-decoration: none; }
/* Sim/Não (duas opções): lado a lado também no celular */
.cav-opts.is-scale[style*="--cav-opts: 2"] { grid-template-columns: 1fr 1fr; }
.cav-opts.is-scale[style*="--cav-opts: 2"] .cav-opt { flex-direction: row; justify-content: flex-start; text-align: left; min-height: 52px; }

/* Página de links da visita (/vHash) */
.cav-link {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 0;
    border-top: 1px solid var(--cav-line);
}
.cav-link:first-of-type { border-top: 0; padding-top: 4px; }
.cav-link-text { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.cav-link-text strong { font-family: var(--f-title); font-size: 15px; color: var(--f-ink); }
.cav-link-text small { font-size: 12.5px; line-height: 1.4; color: var(--cav-muted); }
.cav-link-actions { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }
.cav-link-copy {
    width: 42px;
    height: 42px;
    border-radius: 12px;
    border: 1.5px solid #E3E5EF;
    display: grid;
    place-items: center;
    background: #FFFFFF;
    color: var(--cav-muted);
    transition: border-color .15s ease, color .15s ease;
}
.cav-link-copy:hover { border-color: var(--f-teal); color: var(--f-teal); }
.cav-link-copy.is-done { border-color: var(--f-green); color: #FFFFFF; background: var(--f-green); }
.cav-link-go {
    height: 42px;
    padding: 0 16px;
    border-radius: 12px;
    display: inline-flex;
    align-items: center;
    font-family: var(--f-title);
    font-size: 14px;
    font-weight: 700;
    color: #FFFFFF;
    background: var(--f-grad);
    box-shadow: 0 8px 18px -10px rgba(15, 120, 110, 0.8);
}
.cav-link-go:hover { color: #FFFFFF; filter: brightness(1.05); }
@media (max-width: 400px) {
    .cav-link { flex-wrap: wrap; }
    .cav-link-actions { width: 100%; padding-left: 50px; }
    .cav-link-go { flex: 1; justify-content: center; }
}

.cav-qrs-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 16px; }
.cav-qrs-print {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 40px;
    padding: 0 14px;
    border-radius: 12px;
    border: 1.5px solid #E3E5EF;
    background: #FFFFFF;
    font-size: 14px;
    font-weight: 700;
    color: var(--f-ink);
}
.cav-qrs-print [class*=ki-] { color: var(--f-teal); }
.cav-qrs-print:hover { border-color: var(--f-teal); }
.cav-qrs-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.cav-qr {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 14px 10px;
    border-radius: 16px;
    border: 1px solid var(--cav-line);
    background: #FFFFFF;
    text-align: center;
}
.cav-qr strong { font-family: var(--f-title); font-size: 13px; color: var(--f-ink); }
.cav-qr-code img, .cav-qr-code canvas { width: 100% !important; max-width: 150px; height: auto !important; }
.cav-qrs-print-title { display: none; }

/* Impressão: uma folha só com os QR Codes */
@media print {
    @page { size: A4 portrait; margin: 14mm; }
    body:has(.cav-qrs) { background: #FFFFFF !important; }
    body:has(.cav-qrs)::before,
    body:has(.cav-qrs) #whatsapp-chat-widget,
    .cav-form-band, .cav-links, .cav-qrs-head { display: none !important; }
    .cav-qrs { border: 0 !important; box-shadow: none !important; padding: 0 !important; }
    .cav-qrs-print-title { display: flex; flex-direction: column; align-items: center; gap: 6px; margin-bottom: 10mm; text-align: center; }
    .cav-qrs-print-title img { height: 14mm; width: auto; }
    .cav-qrs-print-title strong { font-family: var(--f-title); font-size: 18pt; color: #10233A; }
    .cav-qrs-print-title span { font-size: 11pt; color: #4E5D6E; }
    .cav-qrs-grid { gap: 8mm; }
    .cav-qr { break-inside: avoid; padding: 6mm; border: 0.4mm solid #CBD3DC; }
    .cav-qr-code img, .cav-qr-code canvas { max-width: 60mm; }
    .cav-qr strong { font-size: 14pt; }
}

/* ==========================================================
 * POC: Stories na home
 * ========================================================== */
.cav-stories {
    margin: 0 -16px 14px;
    padding: 4px 0;
}
@media (min-width: 768px) { .cav-stories { margin: 0 0 16px; } }
.cav-stories-track {
    display: flex;
    gap: 14px;
    padding: 4px 16px;
    overflow-x: auto;
    scroll-snap-type: x proximity;
    scrollbar-width: none;
}
.cav-stories-track::-webkit-scrollbar { display: none; }
@media (min-width: 768px) { .cav-stories-track { padding: 4px 2px; } }
.cav-story-bubble {
    flex: 0 0 auto;
    width: 72px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    padding: 0;
    border: 0;
    background: none;
    scroll-snap-align: start;
    cursor: pointer;
}
.cav-story-ring {
    position: relative;
    width: 68px;
    height: 68px;
    padding: 3px;
    border-radius: 50%;
    background: conic-gradient(from 210deg, #00D9C5, #7A5CFF, #FF5FCB, #FFB547, #00D9C5);
    transition: transform .15s ease;
}
.cav-story-bubble:hover .cav-story-ring { transform: scale(1.04); }
.cav-story-bubble.is-seen .cav-story-ring { background: #D5D8E2; }
.cav-story-bubble.is-add .cav-story-ring { background: transparent; }
.cav-story-avatar {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    display: grid;
    place-items: center;
    overflow: hidden;
    border: 3px solid var(--cav-bg);
    background: var(--bs-primary-light);
    font-size: 22px;
    font-weight: 800;
    color: var(--cav-blue);
}
.cav-story-bubble.is-add .cav-story-avatar { border-color: transparent; }
.cav-story-avatar img { width: 100%; height: 100%; object-fit: cover; }
.cav-story-plus {
    position: absolute;
    right: 0;
    bottom: 0;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    color: #FFFFFF;
    background: var(--cav-blue);
    border: 2px solid var(--cav-bg);
}
.cav-story-plus svg { display: block; }
.cav-story-name {
    max-width: 72px;
    font-size: 12px;
    font-weight: 600;
    color: var(--cav-fg);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.cav-story-bubble.is-seen .cav-story-name { color: var(--cav-muted); }

/* Visualizador */
body.cav-story-open { overflow: hidden; }
.cav-story-viewer {
    position: fixed;
    inset: 0;
    z-index: 1060;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
    background: rgba(8, 8, 18, 0.94);
    animation: cav-story-in .2s ease;
}
.cav-story-viewer[hidden] { display: none; }
@keyframes cav-story-in { from { opacity: 0; } to { opacity: 1; } }
.cav-story-frame {
    position: relative;
    width: 100%;
    height: 100%;
    background: #000000;
    overflow: hidden;
    user-select: none;
    -webkit-user-select: none;
}
@media (min-width: 576px) {
    .cav-story-frame {
        width: auto;
        height: min(92vh, 860px);
        aspect-ratio: 9 / 16;
        border-radius: 18px;
        box-shadow: 0 30px 80px -20px rgba(0, 0, 0, 0.8);
    }
}
.cav-story-media { position: absolute; inset: 0; display: grid; place-items: center; }
.cav-story-media img,
.cav-story-media video { width: 100%; height: 100%; object-fit: contain; }
.cav-story-error { padding: 24px; text-align: center; font-size: 14px; color: rgba(255, 255, 255, 0.75); }

.cav-story-bars {
    position: absolute;
    top: 10px;
    left: 10px;
    right: 10px;
    z-index: 3;
    display: flex;
    gap: 4px;
}
.cav-story-bar {
    flex: 1;
    height: 3px;
    border-radius: 3px;
    background: rgba(255, 255, 255, 0.35);
    overflow: hidden;
}
.cav-story-bar i { display: block; width: 0; height: 100%; background: #FFFFFF; }
.cav-story-bar.is-done i { width: 100%; }

/* Sombra única do topo (cobre barras e cabeçalho, sem "degrau" entre eles) */
.cav-story-frame::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 130px;
    z-index: 2;
    pointer-events: none;
    background: linear-gradient(180deg, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.25) 55%, transparent 100%);
}
.cav-story-head {
    position: absolute;
    top: 20px;
    left: 0;
    right: 0;
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 6px 10px 6px 14px;
}
.cav-story-author { display: flex; align-items: center; gap: 10px; min-width: 0; color: #FFFFFF; }
.cav-story-author:hover { color: #FFFFFF; }
.cav-story-avatar.is-small { width: 36px; height: 36px; flex-shrink: 0; border: 0; font-size: 15px; }
.cav-story-author-text { display: flex; flex-direction: column; min-width: 0; }
.cav-story-author-text strong { font-size: 14px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cav-story-author-text small { font-size: 12px; color: rgba(255, 255, 255, 0.75); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cav-story-tools { display: flex; gap: 4px; flex-shrink: 0; }
.cav-story-tool {
    width: 38px;
    height: 38px;
    border: 0;
    border-radius: 50%;
    display: grid;
    place-items: center;
    color: #FFFFFF;
    background: transparent;
}
.cav-story-tool:hover { background: rgba(255, 255, 255, 0.15); }
.cav-story-tool .cav-som-on { display: none; }
.cav-story-tool.is-on .cav-som-on { display: block; }
.cav-story-tool.is-on .cav-som-off { display: none; }

.cav-story-paused {
    position: absolute;
    top: 50%;
    left: 50%;
    z-index: 3;
    transform: translate(-50%, -50%);
    padding: 6px 14px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 700;
    color: #FFFFFF;
    background: rgba(0, 0, 0, 0.5);
    pointer-events: none;
}

.cav-story-zone { position: absolute; top: 80px; bottom: 110px; z-index: 2; touch-action: pan-y; }
.cav-story-zone.is-prev { left: 0; width: 35%; }
.cav-story-zone.is-next { right: 0; width: 65%; }

.cav-story-foot {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 3;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    padding: 40px 18px calc(18px + env(safe-area-inset-bottom));
    background: linear-gradient(0deg, rgba(0, 0, 0, 0.65), transparent);
}
.cav-story-caption {
    align-self: stretch;
    margin: 0;
    font-size: 14px;
    line-height: 1.45;
    color: #FFFFFF;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
}
.cav-story-open {
    padding: 9px 20px;
    border-radius: 999px;
    font-size: 14px;
    font-weight: 700;
    color: #0B0B1C;
    background: #FFFFFF;
}
.cav-story-open:hover { color: #0B0B1C; background: rgba(255, 255, 255, 0.9); }

/* Setas laterais: só no computador */
.cav-story-arrow {
    display: none;
    width: 44px;
    height: 44px;
    border: 0;
    border-radius: 50%;
    font-size: 28px;
    line-height: 1;
    color: #0B0B1C;
    background: rgba(255, 255, 255, 0.85);
}
.cav-story-arrow:hover { background: #FFFFFF; }
@media (min-width: 768px) { .cav-story-arrow { display: grid; place-items: center; padding-bottom: 4px; } }
body.cav-story-open #whatsapp-chat-widget { display: none !important; }

/* Stories: curtir e comentar */
.cav-story-actions { align-self: stretch; display: flex; align-items: center; gap: 8px; }
.cav-story-input {
    flex: 1;
    min-width: 0;
    height: 44px;
    padding: 0 16px;
    border: 1.5px solid rgba(255, 255, 255, 0.7);
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.2);
    font-size: 15px;
    color: #FFFFFF;
}
.cav-story-input::placeholder { color: rgba(255, 255, 255, 0.8); }
.cav-story-input:focus { outline: none; border-color: #FFFFFF; background: rgba(0, 0, 0, 0.35); }
.cav-story-send {
    flex-shrink: 0;
    height: 44px;
    padding: 0 14px;
    border: 0;
    border-radius: 999px;
    font-size: 14px;
    font-weight: 700;
    color: #0B0B1C;
    background: #FFFFFF;
}
.cav-story-send[hidden] { display: none; }
.cav-story-action {
    flex-shrink: 0;
    min-width: 44px;
    height: 44px;
    padding: 0 6px;
    border: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    background: transparent;
    font-size: 13px;
    font-weight: 700;
    color: #FFFFFF;
}
.cav-story-action:hover { color: #FFFFFF; }
.cav-story-action .cav-heart { fill: none; transition: transform .15s ease; }
.cav-story-action.is-liked { color: #FF3B5C; }
.cav-story-action.is-liked .cav-heart { fill: #FF3B5C; animation: cav-pop .35s ease; }
.cav-story-burst {
    position: absolute;
    top: 50%;
    left: 50%;
    z-index: 4;
    transform: translate(-50%, -50%) scale(0);
    opacity: 0;
    pointer-events: none;
    filter: drop-shadow(0 6px 18px rgba(0, 0, 0, 0.35));
}
.cav-story-burst.is-on { animation: cav-burst .8s ease forwards; }
@keyframes cav-burst {
    0% { transform: translate(-50%, -50%) scale(0); opacity: 0; }
    20% { transform: translate(-50%, -50%) scale(1.15); opacity: 1; }
    35% { transform: translate(-50%, -50%) scale(0.95); }
    75% { transform: translate(-50%, -50%) scale(1); opacity: 1; }
    100% { transform: translate(-50%, -50%) scale(1.1); opacity: 0; }
}
.cav-story-open { padding: 7px 16px; font-size: 13px; }
