/*
 * Facilita Desenvolve — CSS base do tema "app"
 *
 * Dois eixos independentes e combináveis (ver docs/decisao-temas-layout-completo.md):
 *
 *   data-layout  "light" | "cards"   — ESTRUTURA da tela + claro/escuro.
 *                 light: lista com contorno. cards: cards grandes
 *                 preenchidos de cor. Chrome sempre claro no light,
 *                 sempre escuro no cards. Troca também a pasta de view
 *                 renderizada (themes/app/views/{layout}/home.php).
 *                 Cabeçalho (.fd-app-topbar), busca (.fd-app-search) e
 *                 navegação inferior (.fd-app-nav) existem nos dois
 *                 layouts — funcionalidade não muda por layout, só cor.
 *
 *   data-theme   "crescimento_calmo" | "jornada_vibrante" | "familia_essencial"
 *                 — só COR de destaque (primária, estudo, recompensa) e
 *                 personalidade tipográfica. Não muda estrutura nem
 *                 claro/escuro — isso é papel do layout.
 *
 * Os 6 blocos abaixo (2 layout × 3 tema) definem o conjunto completo de
 * tokens para cada combinação. Os componentes .fd-* mais adiante neste
 * arquivo são os mesmos em qualquer combinação — só os tokens mudam.
 */

/* ════════════════════════════════════════════════════════════════════
   FONTES — auto-hospedadas (2026-08-18)
   ════════════════════════════════════════════════════════════════════
   Antes carregadas via <link> pro Google Fonts em _theme_default.php.
   Tirado de lá porque, testando localmente, a rede da Cristiane não
   conseguia completar a conexão com fonts.googleapis.com/fonts.gstatic.com
   (Console: "net::ERR_CONNECTION_CLOSED" nas duas requisições de fonte) —
   com a fonte de ícone nunca chegando, o texto de fallback (o nome do
   ícone por extenso, ex. "notifications") ficava visível PERMANENTEMENTE
   em vez de só durante o carregamento; foi o efeito "tradutor" que ela
   reportou continuar mesmo depois do ajuste de display:block (que só
   ajuda em conexão lenta, não em conexão que nunca completa). Também
   tirava um RTT extra pra fonts.googleapis.com + fonts.gstatic.com do
   caminho crítico de carregamento — daí a demora.
   Arquivos em ../fonts/ (extraídos dos mesmos pacotes que o Google Fonts
   serve, via pacotes @fontsource/* — mesma fonte, mesma licença OFL,
   hospedada no próprio servidor). Só os pesos realmente usados no
   projeto (--font-heading/--font-body mais abaixo, e os --font-family
   antigos de light/cards). Ícone: variante "fill" do Material Symbols
   Outlined variável (~1.1MB, eixos wght+FILL — os 2 que este projeto usa
   via .fd-icon-fill; GRAD/opsz não são suportados nessa variante mais
   leve, mas não fazem falta aqui) em vez da variável "full" (~4MB, todos
   os 4 eixos) — mais rápida de carregar. */
@font-face {
    font-family: "Nunito Sans";
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url("../fonts/nunito-sans-400.woff2") format("woff2");
}

/* Perfil: separação semântica entre pessoas cuidadas e cuidadores. */
.fd-vinculo-grupo-titulo{display:flex;align-items:center;gap:7px;margin:14px 0 2px;padding:9px 3px 6px;color:var(--primary);border-bottom:1px solid var(--outline-variant);font-size:11px;font-weight:800}.fd-vinculo-grupo-titulo:first-child{margin-top:0}.fd-vinculo-grupo-titulo .material-symbols-outlined{font-size:18px}.fd-vinculo-acesso-confirmado{display:flex;align-items:center;gap:5px;width:max-content;max-width:100%;margin:5px 0;padding:4px 7px;color:var(--primary);background:var(--primary-container);border-radius:99px;font-size:8px;font-weight:800}.fd-vinculo-acesso-confirmado .material-symbols-outlined{font-size:14px;font-variation-settings:'FILL' 1}.fd-cuidador-pessoas{margin:0;padding:0;border:0}.fd-cuidador-pessoas-opcoes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.fd-cuidador-pessoas-opcoes label{position:relative;display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:8px;min-height:48px;padding:9px 10px;background:var(--surface-container-low);border:1px solid var(--outline-variant);border-radius:11px;cursor:pointer}.fd-cuidador-pessoas-opcoes input{position:absolute;width:1px;height:1px;opacity:0;clip-path:inset(50%)}.fd-cuidador-pessoas-opcoes .material-symbols-outlined{display:grid;place-items:center;width:28px;height:28px;color:transparent;background:var(--surface-container-lowest);border:2px solid var(--outline);border-radius:8px;font-size:17px}.fd-cuidador-pessoas-opcoes label:has(input:checked){color:var(--on-primary-container);background:var(--primary-container);border-color:var(--primary)}.fd-cuidador-pessoas-opcoes label:has(input:checked) .material-symbols-outlined{color:var(--on-primary);background:var(--primary);border-color:var(--primary)}.fd-cuidador-pessoas-opcoes label:has(input:focus-visible){outline:3px solid color-mix(in srgb,var(--primary) 25%,transparent);outline-offset:2px}@media(max-width:520px){.fd-cuidador-pessoas-opcoes{grid-template-columns:1fr}}

.fd-perfil-grid.fd-vinculos-grid{grid-template-columns:minmax(0,1fr)}.fd-vinculos-grid>.fd-perfil-col:empty{display:none}

/* Ação primária disponível diretamente na agenda da tela Hoje. */
.fd-hoje-agenda-concluir {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    min-height: 34px;
    padding: 0 12px;
    color: var(--on-primary);
    background: var(--primary);
    border: 1px solid var(--primary);
    border-radius: 999px;
    font-size: 10px;
    font-weight: 850;
    text-decoration: none;
    white-space: nowrap;
    transition: filter .18s ease, transform .18s ease;
}

.fd-hoje-agenda-concluir .material-symbols-outlined { font-size: 17px; }
.fd-hoje-agenda-concluir:hover { filter: brightness(.92); transform: translateY(-1px); }
.fd-hoje-agenda-concluir:focus-visible { outline: 3px solid color-mix(in srgb, var(--primary) 35%, transparent); outline-offset: 2px; }

@media (max-width: 600px) {
    .fd-hoje-agenda-item > .fd-hoje-agenda-concluir { grid-column: 3; grid-row: 1; }
}

@font-face {
    font-family: "Nunito Sans";
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url("../fonts/nunito-sans-600.woff2") format("woff2");
}

@font-face {
    font-family: "Nunito Sans";
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url("../fonts/nunito-sans-700.woff2") format("woff2");
}

@font-face {
    font-family: "Nunito Sans";
    font-style: normal;
    font-weight: 800;
    font-display: swap;
    src: url("../fonts/nunito-sans-800.woff2") format("woff2");
}

@font-face {
    font-family: "DM Sans";
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url("../fonts/dm-sans-400.woff2") format("woff2");
}

@font-face {
    font-family: "DM Sans";
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url("../fonts/dm-sans-500.woff2") format("woff2");
}

@font-face {
    font-family: "DM Sans";
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url("../fonts/dm-sans-700.woff2") format("woff2");
}

@font-face {
    font-family: "Quicksand";
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url("../fonts/quicksand-600.woff2") format("woff2");
}

@font-face {
    font-family: "Quicksand";
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url("../fonts/quicksand-700.woff2") format("woff2");
}

@font-face {
    font-family: "Material Symbols Outlined";
    font-style: normal;
    font-weight: 100 700;
    font-display: block;
    src: url("../fonts/material-symbols-outlined.woff2") format("woff2-variations");
}

/* ════════════════════════════════════════════════════════════════
   LAYOUT: light — chrome sempre claro
   ════════════════════════════════════════════════════════════════ */

/* ─── light + Crescimento Calmo (padrão/recomendado) ─────────────── */
:root,
:root[data-layout="light"][data-theme="crescimento_calmo"] {
    --font-family: "Nunito Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
    --font-weight-heading: 700;
    --radius-card: 16px;
    --radius-button: 12px;
    --color-bg: #F6F9F8;
    --color-surface: #FFFFFF;
    --color-border: #DDE6E3;
    --color-text-primary: #17211F;
    --color-text-secondary: #3F4C48;
    --color-primary: #176B5B;
    --color-primary-contrast: #FFFFFF;
    --color-primary-tint: #DDF3ED;
    --color-primary-tint-text: #176B5B;
    --color-study: #2563EB;
    --color-study-tint: #E6F1FB;
    --color-reward: #F59E0B;
    --color-reward-tint: #FFFBEF;
    --color-reward-tint-border: #F3E3BE;
    --color-reward-tint-text: #412402;
}

/* ─── light + Jornada Vibrante ────────────────────────────────────── */
:root[data-layout="light"][data-theme="jornada_vibrante"] {
    --font-family: "Nunito Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
    --font-weight-heading: 800;
    --radius-card: 20px;
    --radius-button: 14px;
    --color-bg: #F7F7FF;
    --color-surface: #FFFFFF;
    --color-border: #EEF2FF;
    --color-text-primary: #1E1B4B;
    --color-text-secondary: #4F4F78;
    --color-primary: #4338CA;
    --color-primary-contrast: #FFFFFF;
    --color-primary-tint: #EEF2FF;
    --color-primary-tint-text: #4338CA;
    --color-study: #0284C7;
    --color-study-tint: #DBEAFE;
    --color-reward: #EA580C;
    --color-reward-tint: #FEE2CC;
    --color-reward-tint-border: #FEE2CC;
    --color-reward-tint-text: #7C2D12;
}

/* ─── light + Família Essencial ───────────────────────────────────── */
:root[data-layout="light"][data-theme="familia_essencial"] {
    --font-family: "DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
    --font-weight-heading: 700;
    --radius-card: 10px;
    --radius-button: 10px;
    --color-bg: #FFFBF5;
    --color-surface: #FFFFFF;
    --color-border: #F0E4D4;
    --color-text-primary: #292524;
    --color-text-secondary: #57504C;
    --color-primary: #9A3412;
    --color-primary-contrast: #FFFFFF;
    --color-primary-tint: #F4E3D3;
    --color-primary-tint-text: #9A3412;
    --color-study: #0F766E;
    --color-study-tint: #E1F0EE;
    --color-reward: #D97706;
    --color-reward-tint: #FBEEDD;
    --color-reward-tint-border: #F0E4D4;
    --color-reward-tint-text: #78350F;
}

/* ════════════════════════════════════════════════════════════════
   LAYOUT: cards — chrome sempre escuro
   ════════════════════════════════════════════════════════════════ */

/* ─── cards + Crescimento Calmo ───────────────────────────────────── */
:root[data-layout="cards"][data-theme="crescimento_calmo"] {
    --font-family: "Nunito Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
    --font-weight-heading: 700;
    --radius-card: 16px;
    --radius-button: 12px;
    --color-bg: #0F1E19;
    --color-surface: #1B2E27;
    --color-border: #2A4038;
    --color-text-primary: #EAF5F1;
    --color-text-secondary: #B8CEC7;
    --color-primary: #22B396;
    --color-primary-contrast: #06231B;
    --color-primary-tint: #16332A;
    --color-primary-tint-text: #6EE7C9;
    --color-study: #38BDF8;
    --color-study-tint: #14293B;
    --color-reward: #F5A623;
    --color-reward-tint: #3A2B12;
    --color-reward-tint-border: #56421C;
    --color-reward-tint-text: #FBD48A;
}

/* ─── cards + Jornada Vibrante ────────────────────────────────────── */
:root[data-layout="cards"][data-theme="jornada_vibrante"] {
    --font-family: "Nunito Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
    --font-weight-heading: 800;
    --radius-card: 20px;
    --radius-button: 14px;
    --color-bg: #17132B;
    --color-surface: #241E42;
    --color-border: #362D5C;
    --color-text-primary: #F5F3FF;
    --color-text-secondary: #C3BCE0;
    --color-primary: #6D5AE0;
    --color-primary-contrast: #FFFFFF;
    --color-primary-tint: #2E2657;
    --color-primary-tint-text: #C9C2FF;
    --color-study: #38BDF8;
    --color-study-tint: #1B2A42;
    --color-reward: #EA580C;
    --color-reward-tint: #3A2412;
    --color-reward-tint-border: #5C3A1D;
    --color-reward-tint-text: #FDBA74;
}

/* ─── cards + Família Essencial ───────────────────────────────────── */
:root[data-layout="cards"][data-theme="familia_essencial"] {
    --font-family: "DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
    --font-weight-heading: 700;
    --radius-card: 10px;
    --radius-button: 10px;
    --color-bg: #1C130E;
    --color-surface: #2A1D15;
    --color-border: #3D2A1D;
    --color-text-primary: #FBEEE2;
    --color-text-secondary: #D7C1AA;
    --color-primary: #F0713F;
    --color-primary-contrast: #2A1005;
    --color-primary-tint: #3D2313;
    --color-primary-tint-text: #FBAE86;
    --color-study: #2DD4BF;
    --color-study-tint: #12332E;
    --color-reward: #F2A73B;
    --color-reward-tint: #3D2C12;
    --color-reward-tint-border: #5C4420;
    --color-reward-tint-text: #F8D9A0;
}

/*
 * ─── Chrome externo (fora do "aparelho") ────────────────────────────
 * Página que envolve a prévia — status de ambiente, seletores de
 * layout/tema/densidade. SEMPRE clara, não segue data-layout/data-theme
 * — é ferramenta de protótipo, não parte da tela do app. Só o que fica
 * dentro de .fd-phone-frame usa os tokens --color-* (que aí sim variam
 * por layout/tema, inclusive escuro no layout cards).
 */
:root {
    --devtool-bg: #F1F2F5;
    --devtool-surface: #FFFFFF;
    --devtool-border: #E1E3E8;
    --devtool-text: #1F2430;
    --devtool-text-secondary: #4B5563;
}

/* ════════════════════════════════════════════════════════════════════
   NOVO SISTEMA DE DESIGN (2026-08-18) — Fase 0 da migração visual
   ════════════════════════════════════════════════════════════════════
   Tokens extraídos de "Novos designers/facilita_desenvolve/DESIGN.md"
   (ver plano de migração entregue à Cristiane). Camada ADITIVA: não
   mexe nos tokens antigos (--color-*, blocos [data-layout]) acima —
   eles continuam servindo as telas ainda não migradas. Estes tokens
   novos (nomes sem prefixo "color-", estilo Material Design 3) são
   usados só pelo novo cabeçalho/nav responsivo (.fd-shell-*, mais
   abaixo) e pelos componentes de estado global (skeleton/erro). Cada
   tela migrada nas próximas fases passa a usar ESTES tokens; quando a
   última tela sair do sistema antigo, os blocos [data-layout] acima e
   as classes .fd-app-* e .fd-phone-frame somem.

   Eixo agora é só `data-theme` (light/cards foi descontinuado — decisão
   da Cristiane em 2026-08-18, ver [[project-facilita-desenvolve-migracao-visual-novos-designers]]
   na memória do projeto). O que antes era o eixo `layout` (claro/escuro)
   passou a viver dentro do tema Jornada Vibrante.

   Fidelidade dos 3 temas ao DESIGN.md:
   - Crescimento Calmo: valores exatos do DESIGN.md (alta confiança).
   - Família Essencial: valores exatos onde o DESIGN.md nomeia
     explicitamente ("surface-white", "text-main", "blue-support" —
     batem com a descrição "branco de alto contraste + navy + azul de
     apoio"); resto herda os tokens neutros da base.
   - Jornada Vibrante: NENHUM dos 44 mockups mostra este tema (todos
     usam a mesma paleta clara) — os valores abaixo foram derivados
     aplicando a convenção padrão do Material Design 3 aos tokens
     "inverse-*"/"*-fixed-dim" que o próprio DESIGN.md já define pra
     esse fim, não inventados do zero. Ainda assim, é a parte com menor
     confiança de fidelidade — recomendo revisão visual da Cristiane (ou
     do designer) assim que a primeira tela nesse tema for construída.
   ════════════════════════════════════════════════════════════════════ */

:root,
[data-theme="crescimento_calmo"] {
    --font-heading: "Quicksand", "Nunito Sans", system-ui, sans-serif;
    --font-body: "Nunito Sans", system-ui, -apple-system, "Segoe UI", sans-serif;

    --surface: #f7fafd;
    --surface-dim: #d7dadd;
    --surface-bright: #f7fafd;
    --surface-container-lowest: #ffffff;
    --surface-container-low: #f1f4f7;
    --surface-container: #ebeef1;
    --surface-container-high: #e5e8eb;
    --surface-container-highest: #e0e3e6;
    --on-surface: #181c1e;
    --on-surface-variant: #3c4a46;
    --inverse-surface: #2d3133;
    --inverse-on-surface: #eef1f4;
    --outline: #6b7a76;
    --outline-variant: #bacac5;

    --primary: #006b5d;
    --on-primary: #ffffff;
    --primary-container: #12c9b0;
    --on-primary-container: #004f44;

    --secondary: #49607c;
    --on-secondary: #ffffff;
    --secondary-container: #c7dfff;
    --on-secondary-container: #4b637e;

    --tertiary: #a53c00;
    --on-tertiary: #ffffff;
    --tertiary-container: #ff996e;
    --on-tertiary-container: #7b2b00;

    --error: #ba1a1a;
    --on-error: #ffffff;
    --error-container: #ffdad6;
    --on-error-container: #93000a;

    --aqua-light: #bdf4e8;
}

[data-theme="familia_essencial"] {
    --font-heading: "Quicksand", "Nunito Sans", system-ui, sans-serif;
    --font-body: "Nunito Sans", system-ui, -apple-system, "Segoe UI", sans-serif;

    /* Fundo branco de alto contraste + navy/azul de apoio — tokens
       "surface-white"/"text-main"/"blue-support" do DESIGN.md, nomeados
       especificamente pra este tema.
       --surface começava igual a --surface-container-lowest (#ffffff
       nos dois) — bug de fidelidade encontrado em 2026-08-18: com o
       cabeçalho/cards usando surface-container-lowest e o conteúdo
       usando surface, ficarem idênticos fazia o conteúdo parecer "sem
       cor de fundo" (Cristiane reportou isso testando com este tema
       ativo). Ajustado pra um branco levemente acinzentado — ainda leal
       ao "alto contraste" do DESIGN.md, mas distinguível do branco puro
       do cabeçalho/cards, no mesmo espírito do crescimento_calmo (onde
       surface #f7fafd já era diferente de container-lowest #ffffff). */
    --surface: #f4f6f7;
    --surface-dim: #d7dadd;
    --surface-bright: #f4f6f7;
    --surface-container-lowest: #ffffff;
    --surface-container-low: #f1f4f7;
    --surface-container: #ebeef1;
    --surface-container-high: #e5e8eb;
    --surface-container-highest: #e0e3e6;
    --on-surface: #172b3a;
    --on-surface-variant: #3c4a46;
    --inverse-surface: #2d3133;
    --inverse-on-surface: #eef1f4;
    --outline: #6b7a76;
    --outline-variant: #bacac5;

    /* Turquesa/laranja usados com conservadorismo (só destaque
       pontual — "uso conservador de navy e azul de apoio" no DESIGN.md) */
    --primary: #006b5d;
    --on-primary: #ffffff;
    --primary-container: #12c9b0;
    --on-primary-container: #004f44;

    --secondary: #356ae6;
    --on-secondary: #ffffff;
    --secondary-container: #c7dfff;
    --on-secondary-container: #172b3a;

    --tertiary: #a53c00;
    --on-tertiary: #ffffff;
    --tertiary-container: #ff996e;
    --on-tertiary-container: #7b2b00;

    --error: #ba1a1a;
    --on-error: #ffffff;
    --error-container: #ffdad6;
    --on-error-container: #93000a;

    --aqua-light: #bdf4e8;
}

[data-theme="jornada_vibrante"] {
    /* PROVISÓRIO — ver nota de confiança no topo deste bloco. Superfície
       escura via inverse-surface/inverse-on-surface; acentos via
       *-fixed-dim/*-fixed (tokens M3 já pensados pra essa finalidade). */
    --font-heading: "Quicksand", "Nunito Sans", system-ui, sans-serif;
    --font-body: "Nunito Sans", system-ui, -apple-system, "Segoe UI", sans-serif;

    --surface: #2d3133;
    --surface-dim: #181c1e;
    --surface-bright: #3c4144;
    --surface-container-lowest: #181c1e;
    --surface-container-low: #22262a;
    --surface-container: #282c2f;
    --surface-container-high: #333739;
    --surface-container-highest: #3e4244;
    --on-surface: #eef1f4;
    --on-surface-variant: #bacac5;
    --inverse-surface: #f7fafd;
    --inverse-on-surface: #181c1e;
    --outline: #8a9d97;
    --outline-variant: #3c4a46;

    --primary: #3cddc3;
    --on-primary: #00201b;
    --primary-container: #005045;
    --on-primary-container: #62fadf;

    --secondary: #b0c9e8;
    --on-secondary: #011d35;
    --secondary-container: #314863;
    --on-secondary-container: #d1e4ff;

    --tertiary: #ffb598;
    --on-tertiary: #360f00;
    --tertiary-container: #7e2c00;
    --on-tertiary-container: #ffdbcd;

    --error: #ffb4ab;
    --on-error: #690005;
    --error-container: #93000a;
    --on-error-container: #ffdad6;

    --aqua-light: #1c332e;
}

:root {
    /* Espaçamento e forma — DESIGN.md `spacing`/`rounded` (fixos, não
       variam por tema). */
    --fd-unit: 4px;
    --fd-touch-target: 44px;
    --fd-gutter: 16px;
    --fd-margin-mobile: 20px;
    --fd-stack-sm: 8px;
    --fd-stack-md: 16px;
    --fd-stack-lg: 24px;

    --fd-rounded-sm: 0.25rem;
    --fd-rounded: 0.5rem;
    --fd-rounded-md: 0.75rem;
    --fd-rounded-lg: 1rem;
    --fd-rounded-xl: 1.5rem;
    --fd-rounded-full: 9999px;

    --fd-shell-desktop-breakpoint: 768px;
    --fd-shell-sidebar-width: 260px;
    --fd-shell-header-height: 64px;
    --fd-shell-bottomnav-height: 72px;
}

* {
    box-sizing: border-box;
}

/* Foco consistente em todo o app: o clique não herda o contorno preto
   do navegador; quem navega por teclado continua vendo um indicador
   acessível na cor primária do tema. `:where()` mantém especificidade
   baixa para componentes com tratamento próprio continuarem valendo. */
:where(
    a[href],
    button,
    input,
    select,
    textarea,
    summary,
    [tabindex]:not([tabindex="-1"]),
    [contenteditable="true"]
):focus {
    outline: none;
}

:where(
    a[href],
    button,
    input,
    select,
    textarea,
    summary,
    [tabindex]:not([tabindex="-1"]),
    [contenteditable="true"]
):focus-visible {
    outline: 2px solid var(--primary);
    outline-offset: 2px;
}

/* Rolagem suave pra links de âncora dentro da mesma tela (ex.:
   "Adicionar Vínculo" → #convidar-alguem em config.php) — sem isso o
   salto era instantâneo e, quando a seção-alvo já cabia na tela sem
   precisar rolar, o clique parecia não fazer nada (reportado pela
   Cristiane em 2026-08-22). Ver .fd-perfil-card (scroll-margin-top) e
   FD_APP.initAncoraDestaque em app.js pro resto da correção. */
html {
    scroll-behavior: smooth;
}

body {
    margin: 0;
    font-family: var(--font-family);
    background: var(--devtool-bg);
    color: var(--devtool-text);
}

/* ─── Ícones (Material Symbols Outlined) — Fase 1 ────────────────────
   O endpoint css2 do Google Fonts (ver link em _theme_default.php) só
   entrega o @font-face da fonte variável — a classe abaixo (font-family
   + as propriedades de renderização) é o snippet oficial do Google
   Fonts pra essa fonte e precisa ser definida aqui; sem ela os spans
   .material-symbols-outlined caem pra fonte padrão e mostram o nome do
   ícone como texto (ex: "today") em vez do glifo. */
.material-symbols-outlined {
    font-family: 'Material Symbols Outlined';
    font-weight: normal;
    font-style: normal;
    font-size: 24px;
    line-height: 1;
    letter-spacing: normal;
    text-transform: none;
    display: inline-block;
    white-space: nowrap;
    word-wrap: normal;
    direction: ltr;
    -webkit-font-feature-settings: 'liga';
    -webkit-font-smoothing: antialiased;
    font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
    /* Trava a caixa no tamanho quadrado de 1 glifo (ver
       font-display:block no @font-face acima) — reportado pela
       Cristiane em 2026-08-25: ao voltar de Editar/Ver pra Cursos, o
       botão Excluir "pulava" pra linha de baixo e depois voltava a se
       alinhar. Causa: antes da fonte carregar, o navegador ainda
       reserva espaço como se o texto do ícone (ex.: "delete",
       "visibility") fosse renderizado por extenso na fonte de
       fallback — bem mais largo que 1 glifo — e só DEPOIS que o glifo
       fica invisível (font-display:block); a caixa larga-mas-invisível
       empurrava o Excluir pra 2ª linha do footer, que depois
       encolhia de volta assim que a fonte carregava. `width: 1em` +
       `overflow: hidden` prende a caixa no tamanho final do glifo
       desde o 1º frame, então não sobra texto invisível pra
       "estourar" a largura da linha. */
    width: 1em;
    overflow: hidden;
}

.fd-app {
    max-width: 420px;
    margin: 0 auto;
    padding: 24px 20px;
}

/* ─── Checagem de ambiente (tela inicial, fase atual) — chrome externo, sempre claro ─── */
.fd-status-card {
    border: 1px solid var(--devtool-border);
    background: var(--devtool-surface);
    border-radius: 16px;
    padding: 20px;
    margin-bottom: 24px;
}

.fd-status-list {
    list-style: none;
    padding: 0;
    margin: 12px 0;
}

.fd-status-list li {
    padding: 8px 0;
    border-bottom: 1px solid var(--devtool-border);
    font-size: 14px;
}

.fd-status-hint {
    color: var(--devtool-text-secondary);
    font-size: 14px;
    margin: 0;
}

/* ─── Seletor de layout/tema/densidade — chrome externo, sempre claro ─── */
.fd-theme-switcher {
    display: flex;
    gap: 8px;
    margin-bottom: 24px;
}

.fd-theme-option {
    flex: 1;
    text-align: center;
    padding: 10px 6px;
    border-radius: 12px;
    border: 2px solid var(--devtool-border);
    font-size: 13px;
    font-weight: 600;
    color: var(--devtool-text-secondary);
    text-decoration: none;
    background: var(--devtool-surface);
}

/*
 * Estado ativo é a EXCEÇÃO proposital: usa a cor do tema/layout
 * selecionado (var(--color-*)) pra dar uma prévia da cor de destaque
 * escolhida, mesmo esse botão estando fora do "aparelho".
 */
.fd-theme-option.is-active {
    border-color: var(--color-primary);
    color: var(--color-primary-tint-text);
    background: var(--color-primary-tint);
}

/* ─── Prévia "Tela Hoje" (demonstra o tema aplicado) ────────────── */
.fd-preview-label {
    margin: 0 0 12px;
    font-size: 13px;
    font-weight: 600;
    color: var(--devtool-text-secondary);
}

.fd-greeting {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 20px 18px 18px;
}

.fd-avatar {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--color-primary-tint);
    color: var(--color-primary-tint-text);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: var(--font-weight-heading);
    font-size: 14px;
    flex-shrink: 0;
}

.fd-greeting-name {
    margin: 0;
    font-size: 16px;
    font-weight: var(--font-weight-heading);
    color: var(--color-text-primary);
}

.fd-streak {
    margin: 0;
    font-size: 13px;
    color: var(--color-text-secondary);
}

.fd-next-card {
    background: var(--color-primary-tint);
    border-radius: var(--radius-card);
    padding: 16px;
    margin: 0 18px 16px;
}

.fd-next-label {
    margin: 0 0 4px;
    font-size: 13px;
    font-weight: 600;
    color: var(--color-primary-tint-text);
}

/*
 * Curso a que o capítulo em destaque pertence — pedido pela Cristiane
 * em 2026-08-11: o card de "próxima ação" mostrava só o nome do
 * capítulo, sem deixar claro de qual curso ele fazia parte (mesmo
 * problema nas linhas da lista "Hoje", ver .fd-row-meta em
 * views/{light,cards}/home.php). Etiqueta pequena, cor do rótulo
 * "Próxima ação", entre o rótulo e o título do capítulo.
 */
.fd-next-curso {
    margin: 0 0 6px;
    font-size: 12px;
    font-weight: 700;
    color: var(--color-primary-tint-text);
}

.fd-next-title {
    margin: 0 0 2px;
    font-size: 15px;
    font-weight: var(--font-weight-heading);
    color: var(--color-text-primary);
}

.fd-next-meta {
    margin: 0 0 12px;
    font-size: 13px;
    color: var(--color-text-secondary);
}

.fd-btn-primary {
    width: 100%;
    height: 46px;
    border-radius: var(--radius-button);
    background: var(--color-primary);
    color: var(--color-primary-contrast);
    border: none;
    font-size: 14px;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
}

/* Migrado pros tokens Material Design 3 em 2026-08-25 (mesmo motivo da
   correção de `.fd-form-*` em 24/08, ver PENDENCIAS.md): `--color-*`
   só responde ao Tema Escuro sob `[data-layout="cards"]`, atributo que
   as telas novas via `_app_shell` (aprovacoes.php, compromissos_index.php,
   cursos_conteudo.php, tarefas_hub.php — os 4 usuários ao vivo desta
   classe) nunca mais passam — então esse título sempre saía na cor
   clara, mesmo com Tema Escuro selecionado. */
.fd-section-title {
    margin: 0 18px 10px;
    font-size: 14px;
    font-weight: 600;
    color: var(--on-surface);
}

/* Só "Módulos e capítulos" em cursos_conteudo.php (2026-08-25, pedido
   da Cristiane) — depois que o card de Habilidades saiu de cima dela,
   ficou pedindo mais destaque como título de seção. Modificador em vez
   de mudar `.fd-section-title` base, usado também em aprovacoes.php/
   compromissos_index.php/tarefas_hub.php. */
.fd-section-title--grande {
    font-size: 18px;
}

.fd-row-card {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-card);
    padding: 12px 14px;
    margin: 0 18px 10px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.fd-row-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}

.fd-row-dot--study {
    background: var(--color-study);
}

.fd-row-dot--task {
    background: var(--color-primary);
}

.fd-row-title {
    margin: 0;
    font-size: 14px;
    font-weight: 600;
    color: var(--color-text-primary);
}

.fd-row-meta {
    margin: 0;
    font-size: 13px;
    color: var(--color-text-secondary);
}

.fd-row-main {
    flex: 1;
    min-width: 0;
}

.fd-badge-neutral {
    font-size: 12px;
    font-weight: 600;
    color: var(--color-text-secondary);
    background: var(--color-bg);
    border-radius: 8px;
    padding: 4px 8px;
    white-space: nowrap;
    flex-shrink: 0;
}

.fd-btn-chip {
    font-size: 13px;
    font-weight: 600;
    color: var(--color-primary-tint-text);
    background: var(--color-primary-tint);
    border: none;
    border-radius: 8px;
    padding: 6px 10px;
    font-family: inherit;
    cursor: pointer;
    flex-shrink: 0;
}

.fd-week-card {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-card);
    padding: 14px;
    margin: 0 18px 14px;
}

.fd-week-label {
    margin: 0 0 6px;
    font-size: 13px;
    font-weight: 600;
    color: var(--color-text-secondary);
}

.fd-week-value {
    margin: 0 0 10px;
    font-size: 20px;
    font-weight: var(--font-weight-heading);
    color: var(--color-text-primary);
}

.fd-week-value small {
    font-size: 13px;
    font-weight: 600;
    color: var(--color-text-secondary);
}

/*
 * Lista nomeada dos capítulos concluídos na semana, dentro do card
 * "Essa semana" — pedido pela Cristiane em 2026-08-11: o número
 * agregado sozinho ("1 de 2 no total") não dizia qual curso/capítulo
 * foi concluído. Ver CursoCapitulo::concluidosDesde() e
 * AppHome::index(). Última linha ganha margem maior pra respirar antes
 * da barra de progresso.
 */
.fd-week-item {
    margin: 0 0 3px;
    font-size: 12px;
    color: var(--color-text-secondary);
}

.fd-week-item:last-of-type {
    margin-bottom: 10px;
}

.fd-progress-track {
    height: 8px;
    border-radius: 4px;
    background: var(--color-border);
    overflow: hidden;
    display: flex;
}

.fd-progress-study {
    background: var(--color-study);
}

.fd-progress-reward {
    background: var(--color-reward);
}

/*
 * ─── Alerta de aprovação pendente — Tela Hoje ───────────────────────
 * Card real (não mocado, ver AppHome::index()) que aparece quando o
 * responsável tem diário de aprendizado esperando validação — leva
 * pra /aprovacoes (AppAprovacoes). Pedido pela Cristiane em 2026-08-09
 * como destaque na Tela Hoje, em vez de item na nav. Cor primária
 * (não --color-reward, usado em .fd-achievement) pra diferenciar
 * "precisa de ação" de "conquista".
 */
.fd-alerta-aprovacao {
    display: flex;
    align-items: center;
    gap: 10px;
    background: var(--color-primary-tint);
    border-radius: 14px;
    padding: 12px 14px;
    margin: 0 18px 16px;
    text-decoration: none;
}

.fd-alerta-aprovacao-icon {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--color-primary);
    color: var(--color-primary-contrast);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 15px;
    flex-shrink: 0;
}

.fd-alerta-aprovacao-title {
    margin: 0;
    font-size: 14px;
    font-weight: 700;
    color: var(--color-primary-tint-text);
}

.fd-alerta-aprovacao-meta {
    margin: 2px 0 0;
    font-size: 13px;
    color: var(--color-primary-tint-text);
    opacity: .85;
}

.fd-achievement {
    display: flex;
    align-items: center;
    gap: 10px;
    background: var(--color-reward-tint);
    border: 1px solid var(--color-reward-tint-border);
    border-radius: 14px;
    padding: 10px 12px;
    margin: 0 18px 20px;
}

.fd-achievement-icon {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--color-reward);
    color: var(--color-reward-tint-text);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: 14px;
    font-weight: 700;
}

.fd-achievement-text {
    margin: 0;
    font-size: 13px;
    font-weight: 600;
    color: var(--color-text-primary);
}

/*
 * ─── Densidade: Essencial (7–10 anos) vs Completa (11+/adulto) ────
 * Segunda dimensão, independente do tema — ver guia visual, seção 10.
 * "Guiada" (até 6 anos) não é densidade, é um modelo de interação
 * diferente e fica fora deste arquivo até existir essa fase.
 */
[data-density="essencial"] .fd-row-meta,
[data-density="essencial"] .fd-badge-neutral,
[data-density="essencial"] .fd-week-value small,
[data-density="essencial"] .fd-progress-reward {
    display: none;
}

[data-density="essencial"] .fd-btn-primary,
[data-density="essencial"] .fd-btn-chip {
    min-height: 52px;
}

[data-density="essencial"] .fd-row-title,
[data-density="essencial"] .fd-next-title {
    font-size: 16px;
}

/* Densidade também se aplica ao layout cards — mesma ideia, classes diferentes. */
[data-density="essencial"] .fd-cards-card-meta,
[data-density="essencial"] .fd-cards-week .fd-week-value small,
[data-density="essencial"] .fd-progress-reward {
    display: none;
}

[data-density="essencial"] .fd-cards-card-title,
[data-density="essencial"] .fd-cards-hero-title {
    font-size: 16px;
}

[data-density="essencial"] .fd-cards-card {
    padding: 16px;
}

/*
 * ─── Densidade Essencial também como modo de conforto visual ───────
 * Pedido pela Cristiane em 2026-08-10: além do piso mínimo de fonte
 * ter subido em toda a tela (bloco acima do bloco de tokens, "letras
 * muito pequenas e apagadas"), a densidade Essencial passou a cobrir
 * TODA a tela — não só a Tela Hoje — como modo de conforto extra pra
 * quem quiser fonte ainda maior, independente de ser criança
 * (7–10 anos, motivo original do eixo) ou adulto com dificuldade de
 * visão. Mesma regra de sempre: +2px sobre o valor base de cada
 * seletor. Não duplica os blocos acima (que já cobrem row-title,
 * next-title, cards-card-title, cards-hero-title, cards-card padding
 * e os "display: none" de itens secundários) — só estende pro resto
 * do app: formulários, listas de curso, tags, badges, Aprovações,
 * Recompensas.
 */
[data-density="essencial"] .fd-form-label,
[data-density="essencial"] .fd-form-hint,
[data-density="essencial"] .fd-curso-row-meta,
[data-density="essencial"] .fd-curso-row-link,
[data-density="essencial"] .fd-curso-actions a,
[data-density="essencial"] .fd-curso-actions button,
[data-density="essencial"] .fd-cards-curso-meta,
[data-density="essencial"] .fd-cards-curso-actions a,
[data-density="essencial"] .fd-cards-curso-actions button,
[data-density="essencial"] .fd-tag-chip,
[data-density="essencial"] .fd-tag-chip-remove,
[data-density="essencial"] .fd-resumo-ia-label,
[data-density="essencial"] .fd-alerta-aprovacao-meta,
[data-density="essencial"] .fd-achievement-text,
[data-density="essencial"] .fd-streak,
[data-density="essencial"] .fd-next-label,
[data-density="essencial"] .fd-next-meta,
[data-density="essencial"] .fd-week-label,
[data-density="essencial"] .fd-week-value small,
[data-density="essencial"] .fd-balance-label,
[data-density="essencial"] .fd-cards-balance-label,
[data-density="essencial"] .fd-reward-row-meta,
[data-density="essencial"] .fd-cards-reward-meta,
[data-density="essencial"] .fd-cards-reward-btn,
[data-density="essencial"] .fd-btn-whatsapp,
[data-density="essencial"] .fd-app-topbar-link,
[data-density="essencial"] .fd-cards-section-label {
    font-size: 15px;
}

[data-density="essencial"] .fd-curso-badge,
[data-density="essencial"] .fd-cards-curso-badge,
[data-density="essencial"] .fd-status-badge,
[data-density="essencial"] .fd-aprovacao-estudante-avatar {
    font-size: 14px;
}

[data-density="essencial"] .fd-aprovacao-estudante,
[data-density="essencial"] .fd-alerta-aprovacao-title,
[data-density="essencial"] .fd-cards-curso-title,
[data-density="essencial"] .fd-reward-row-title,
[data-density="essencial"] .fd-reward-row-price,
[data-density="essencial"] .fd-cards-reward-price,
[data-density="essencial"] .fd-empty-state,
[data-density="essencial"] .fd-app-search,
[data-density="essencial"] .fd-flash,
[data-density="essencial"] .fd-section-title {
    font-size: 16px;
}

/* Componentes atuais: mantém a adaptação etária perceptível nas telas
   migradas para o design system novo. */
[data-density="essencial"] {
    --fd-touch-target: 52px;
}

[data-density="essencial"] .fd-rotina-card h3,
[data-density="essencial"] .fd-ativ-config-card h3,
[data-density="essencial"] .fd-hoje-agenda-item h3,
[data-density="essencial"] .fd-perfil-vinculo-nome {
    font-size: 18px;
}

[data-density="essencial"] .fd-rotina-card p,
[data-density="essencial"] .fd-hoje-agenda-item p,
[data-density="essencial"] .fd-hoje-agenda-item > time,
[data-density="essencial"] .fd-hoje-agenda-vazio,
[data-density="essencial"] .fd-perfil-hint,
[data-density="essencial"] .fd-perfil-label {
    font-size: 14px !important;
}

[data-density="essencial"] .fd-hoje-agenda-item,
[data-density="essencial"] .fd-rotina-card,
[data-density="essencial"] .fd-ativ-config-card {
    padding: 16px;
}

/*
 * Moldura de "aparelho" — usada pelos dois layouts (light e cards).
 * Bezel sempre claro e neutro, igual em qualquer tema — é o corpo do
 * celular, não a tela. Só o miolo (background: var(--color-bg)) muda
 * de cor por layout/tema; a borda em volta, não.
 */
.fd-phone-frame {
    max-width: 380px;
    margin: 0 auto;
    background: var(--color-bg);
    border-radius: 40px;
    border: 10px solid var(--devtool-surface);
    outline: 1px solid var(--devtool-border);
    box-shadow: 0 20px 40px rgba(17, 24, 39, .12);
    overflow: hidden;
    position: relative;
}

/* Espaço reservado pra nav inferior fixa (usada nos dois layouts). */
.fd-phone-frame--nav {
    padding-bottom: 88px;
}

/*
 * ─── Navegação inferior fixa — compartilhada entre light e cards ────
 * Mesma estrutura/comportamento nos dois layouts (funcionalidade não
 * muda por layout — só a cor, via os tokens --color-* de cada
 * combinação layout×tema). Ver docs/decisao-temas-layout-completo.md.
 */
.fd-app-nav {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    justify-content: space-around;
    padding: 10px 8px;
    background: var(--color-surface);
    border-top: 1px solid var(--color-border);
}

.fd-app-nav-item {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--color-text-secondary);
    font-size: 16px;
    text-decoration: none;
}

.fd-app-nav-item.is-active {
    width: 52px;
    height: 52px;
    margin-top: -26px;
    background: var(--color-reward);
    color: #FFFFFF;
    box-shadow: 0 8px 18px rgba(0, 0, 0, .35);
}

/*
 * ─── Cabeçalho (logo + alertas) e busca — compartilhados ────────────
 * Mesma estrutura/comportamento nos dois layouts (funcionalidade não
 * muda por layout — só a cor, via os tokens --color-* de cada
 * combinação layout×tema). Ver "Correção 2026-08-09" em
 * docs/decisao-temas-layout-completo.md.
 */
.fd-app-topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 18px 4px;
}

.fd-app-logo {
    margin: 0;
    font-size: 15px;
    font-weight: var(--font-weight-heading);
    color: var(--color-text-primary);
}

.fd-app-logo span {
    color: var(--color-reward);
}

.fd-app-logo-image {
    display: block;
    width: 190px;
    max-width: 58vw;
    height: auto;
}

.fd-app-icon-btn {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 15px;
    flex-shrink: 0;
}

.fd-app-search {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 14px 18px 20px;
    padding: 12px 14px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 14px;
    color: var(--color-text-secondary);
    font-size: 14px;
}

/*
 * ─── Cabeçalho mínimo — telas de conta pós-login sem menu real ainda ─
 * onboarding e "convidar estudante" (2026-08-09): não têm nav inferior
 * (não são telas do dashboard), então usam só .fd-app-topbar (logo) +
 * este link discreto de "Sair" — de propósito pouco chamativo, texto
 * simples sem fundo, pra não repetir o problema do menu de protótipo
 * que parecia navegação e desviava de onde a pessoa estava indo.
 */
.fd-app-topbar-link {
    font-size: 13px;
    font-weight: 600;
    color: var(--color-text-secondary);
    text-decoration: none;
    flex-shrink: 0;
}

/* Título de tela sem formulário único (onboarding tem 2 forms, convite tem form + lista) — mesma pele de .fd-form-card-title, fora do card. */
.fd-page-title {
    margin: 20px 18px 14px;
    font-size: 17px;
    font-weight: var(--font-weight-heading);
    color: var(--color-text-primary);
}

/*
 * ─── Layout Cards — componentes exclusivos ──────────────────────────
 * Usados só em themes/app/views/cards/*.php. Ao contrário dos blocos
 * .fd-* acima (compartilhados, só trocam de token), estes .fd-cards-*
 * existem porque a ESTRUTURA da tela muda neste layout (cards grandes
 * preenchidos de cor em vez de lista com contorno, chrome sempre
 * escuro) — funciona com os 3 temas, ver docs/decisao-temas-layout-completo.md.
 */
.fd-cards-section-label {
    margin: 0 0 10px;
    padding: 0 18px;
    font-size: 13px;
    font-weight: 700;
    color: var(--color-text-secondary);
    text-transform: uppercase;
    letter-spacing: .04em;
}

.fd-cards-greeting {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 18px 18px;
}

.fd-cards-hero {
    margin: 0 18px 20px;
    padding: 18px;
    border-radius: var(--radius-card);
    background: var(--color-primary);
    color: var(--color-primary-contrast);
    position: relative;
}

.fd-cards-hero-icon {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .18);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    margin-bottom: 14px;
}

.fd-cards-hero-fav {
    position: absolute;
    top: 16px;
    right: 16px;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .18);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
}

.fd-cards-hero-label {
    margin: 0 0 4px;
    font-size: 13px;
    font-weight: 700;
    opacity: .85;
}

/* Equivalente cards de .fd-next-curso — ver comentário lá. */
.fd-cards-hero-curso {
    margin: 0 0 6px;
    font-size: 12px;
    font-weight: 700;
    opacity: .75;
}

.fd-cards-hero-title {
    margin: 0 0 2px;
    font-size: 16px;
    font-weight: var(--font-weight-heading);
}

.fd-cards-hero-meta {
    margin: 0 0 14px;
    font-size: 13px;
    opacity: .85;
}

.fd-cards-hero .fd-btn-primary {
    background: #FFFFFF;
    color: var(--color-primary);
}

.fd-cards-card {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 0 18px 12px;
    padding: 14px 16px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 16px;
}

.fd-cards-card-icon {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 15px;
    color: #FFFFFF;
}

.fd-cards-card-icon--study {
    background: var(--color-study);
}

.fd-cards-card-icon--task {
    background: var(--color-primary);
}

.fd-cards-card-main {
    flex: 1;
    min-width: 0;
}

.fd-cards-card-title {
    margin: 0;
    font-size: 14px;
    font-weight: 700;
    color: var(--color-text-primary);
}

.fd-cards-card-meta {
    margin: 0;
    font-size: 13px;
    color: var(--color-text-secondary);
}

.fd-cards-week {
    margin: 4px 18px 14px;
    padding: 16px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 16px;
}

.fd-cards-achievement {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 18px 4px;
    padding: 12px 14px;
    background: var(--color-reward-tint);
    border: 1px solid var(--color-reward-tint-border);
    border-radius: 14px;
    color: var(--color-reward-tint-text);
}

[data-density="essencial"] .fd-row-card {
    padding: 16px;
}

/*
 * ─── Recompensas — layout Light ─────────────────────────────────────
 * Cards de recompensa na linguagem do layout light: fundo claro,
 * ícone colorido, sem preencher o card inteiro de cor (ao contrário
 * do layout cards). "--primary/--study/--reward" reaproveitam os 3
 * papéis de cor que cada tema já define.
 */
.fd-balance-card {
    background: var(--color-primary-tint);
    border-radius: var(--radius-card);
    padding: 16px;
    margin: 20px 18px 18px;
}

.fd-balance-label {
    margin: 0 0 4px;
    font-size: 13px;
    font-weight: 600;
    color: var(--color-primary-tint-text);
}

.fd-balance-value {
    margin: 0;
    font-size: 22px;
    font-weight: var(--font-weight-heading);
    color: var(--color-text-primary);
}

.fd-reward-row {
    display: flex;
    align-items: center;
    gap: 12px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-card);
    padding: 14px;
    margin: 0 18px 12px;
}

.fd-reward-row-icon {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 19px;
    flex-shrink: 0;
    color: #FFFFFF;
}

.fd-reward-row-icon--primary {
    background: var(--color-primary);
}

.fd-reward-row-icon--study {
    background: var(--color-study);
}

.fd-reward-row-icon--reward {
    background: var(--color-reward);
}

.fd-reward-row-main {
    flex: 1;
    min-width: 0;
}

.fd-reward-row-title {
    margin: 0;
    font-size: 14px;
    font-weight: 700;
    color: var(--color-text-primary);
}

.fd-reward-row-meta {
    margin: 2px 0 0;
    font-size: 13px;
    color: var(--color-text-secondary);
}

.fd-reward-row-footer {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 6px;
    flex-shrink: 0;
}

.fd-reward-row-price {
    font-size: 14px;
    font-weight: 700;
    color: var(--color-text-primary);
    white-space: nowrap;
}

/*
 * ─── Recompensas — layout Cards ─────────────────────────────────────
 * Aqui sim o card é preenchido inteiro pela cor de destaque (como no
 * mockup original) — condiz com a linguagem mais gamificada do cards.
 */
.fd-cards-balance {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin: 0 18px 16px;
    padding: 12px 16px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 14px;
}

.fd-cards-balance-label {
    margin: 0;
    font-size: 13px;
    color: var(--color-text-secondary);
    font-weight: 600;
}

.fd-cards-balance-value {
    margin: 0;
    font-size: 16px;
    color: var(--color-text-primary);
    font-weight: var(--font-weight-heading);
}

.fd-cards-reward {
    position: relative;
    margin: 0 18px 14px;
    padding: 18px;
    border-radius: var(--radius-card);
    color: #FFFFFF;
    overflow: hidden;
}

.fd-cards-reward--primary {
    background: var(--color-primary);
}

.fd-cards-reward--study {
    background: var(--color-study);
}

.fd-cards-reward--reward {
    background: var(--color-reward);
}

.fd-cards-reward-icon {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .22);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    margin-bottom: 14px;
}

.fd-cards-reward-fav {
    position: absolute;
    top: 16px;
    right: 16px;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .22);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
}

.fd-cards-reward-title {
    margin: 0 0 2px;
    font-size: 15px;
    font-weight: var(--font-weight-heading);
}

.fd-cards-reward-meta {
    margin: 0 0 14px;
    font-size: 13px;
    opacity: .85;
}

.fd-cards-reward-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.fd-cards-reward-price {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 14px;
    font-weight: 700;
}

.fd-cards-reward-btn {
    background: #FFFFFF;
    color: var(--color-text-primary);
    border: none;
    border-radius: 999px;
    padding: 8px 14px;
    font-size: 13px;
    font-weight: 700;
    font-family: inherit;
    cursor: pointer;
    white-space: nowrap;
}

[data-density="essencial"] .fd-reward-row-meta,
[data-density="essencial"] .fd-cards-reward-meta {
    display: none;
}

[data-density="essencial"] .fd-reward-row {
    padding: 16px;
}

/*
 * ─── Flash message — chrome externo, sempre claro ───────────────────
 * Aparece via helper flash() global, populada por Message::flash()
 * nos controllers (ex.: AppCursos::salvar()).
 */
.fd-flash {
    padding: 12px 16px;
    border-radius: 12px;
    margin-bottom: 16px;
    font-size: 14px;
    font-weight: 600;
}

.fd-flash--success {
    background: #DCFCE7;
    color: #166534;
}

.fd-flash--error {
    background: #FEE2E2;
    color: #991B1B;
}

.fd-flash--warning {
    background: #FEF3C7;
    color: #92400E;
}

.fd-flash--info {
    background: #DBEAFE;
    color: #1E3A8A;
}

/*
 * ─── Apresentação do app — telas de primeiro contato ────────────────
 * cadastro/login/convite (_auth_apresentacao.php). Redesenho de
 * 2026-08-09 ("Rodada 5" — a 1ª versão, cards brancos com emoji,
 * ficou genérica; ver docs/decisao-temas-layout-completo.md): faixa
 * cheia da cor primária no topo do "aparelho" (mesma linguagem visual
 * de .fd-cards-hero), com a "trilha de crescimento" — os 3 passos
 * reais do produto conectados por uma linha, ícones em traço único
 * (sem emoji). Layout/tema fixos em light + Crescimento Calmo nessas
 * telas (AppAuth::contextoFixo()), então usar --color-* aqui é
 * seguro — sempre resolve pro mesmo bloco claro.
 */
.fd-auth-hero {
    background: var(--color-primary);
    color: var(--color-primary-contrast);
    padding: 28px 22px 26px;
}

.fd-auth-hero-mark {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 6px;
}

.fd-auth-hero-badge {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .16);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.fd-auth-hero-badge svg {
    width: 18px;
    height: 18px;
}

.fd-auth-hero-logo {
    margin: 0;
    font-size: 17px;
    font-weight: var(--font-weight-heading);
    letter-spacing: -.01em;
}

.fd-auth-hero-tagline {
    margin: 0 0 24px;
    font-size: 14px;
    line-height: 1.5;
    color: rgba(255, 255, 255, .82);
    max-width: 30ch;
}

/*
 * Trilha de crescimento: os 3 passos reais do ciclo do produto (estuda
 * → registra/valida → recompensa), não uma lista genérica — por isso
 * a linha conectando os nós faz sentido aqui (é uma sequência de
 * verdade, não decoração).
 */
.fd-auth-trilha {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.fd-auth-trilha::before {
    content: "";
    position: absolute;
    left: 15px;
    top: 16px;
    bottom: 16px;
    width: 1px;
    background: rgba(255, 255, 255, .28);
}

.fd-auth-trilha-item {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 12px;
}

.fd-auth-trilha-node {
    position: relative;
    width: 31px;
    height: 31px;
    border-radius: 50%;
    background: var(--color-primary);
    border: 1px solid rgba(255, 255, 255, .5);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.fd-auth-trilha-node svg {
    width: 15px;
    height: 15px;
}

.fd-auth-trilha-title {
    margin: 0;
    font-size: 14px;
    font-weight: 700;
}

.fd-auth-trilha-desc {
    margin: 2px 0 0;
    font-size: 13px;
    line-height: 1.4;
    color: rgba(255, 255, 255, .75);
}

/*
 * Título dentro do form-card (substitui o antigo .fd-preview-label de
 * fora do "aparelho" — chrome-externo — que não fazia sentido nessas
 * telas depois que o hero passou a representar a tela inteira).
 */
.fd-form-card-title {
    margin: 0 0 18px;
    font-size: 17px;
    font-weight: var(--font-weight-heading);
    color: var(--color-text-primary);
}

/* Divisor "Já tenho conta" entre os 2 formulários do convite. */
.fd-form-divider {
    margin: 4px 18px 12px;
    font-size: 13px;
    font-weight: 600;
    color: var(--color-text-secondary);
    text-align: center;
}

/* Flash dentro do "aparelho" (cadastro/login/convite) precisa da margem lateral que o .fd-app externo dava antes. */
.fd-phone-frame .fd-flash {
    margin: 16px 18px;
}

/*
 * ─── Cursos — layout Light ───────────────────────────────────────────
 */
.fd-list-actions {
    margin: 20px 18px 16px;
}

.fd-list-actions .fd-btn-primary {
    text-decoration: none;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Migrado pros tokens Material Design 3 em 2026-08-25 — mesma causa
   raiz de `.fd-section-title` logo acima (`--color-*` preso ao Tema
   Claro fora de `[data-layout="cards"]`). */
.fd-empty-state {
    margin: 0 18px 18px;
    padding: 24px 16px;
    text-align: center;
    color: var(--on-surface-variant);
    font-size: 14px;
    background: var(--surface-container-lowest);
    border: 1px dashed var(--outline-variant);
    border-radius: var(--fd-rounded-lg);
}

.fd-curso-row {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-card);
    padding: 14px;
    margin: 0 18px 12px;
}

/*
 * ─── Capa do curso — miniatura na listagem ──────────────────────────
 * Upload real de arquivo (Source\Support\Upload), pedido pela
 * Cristiane em 2026-08-10. .fd-curso-row-capa mesmo tamanho/raio nos
 * dois estados (imagem real ou emoji de fallback quando não há capa
 * cadastrada) — pra não pular o layout da linha dependendo do curso.
 */
.fd-curso-row-top {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 10px;
}

.fd-curso-row-capa {
    width: 48px;
    height: 48px;
    border-radius: 10px;
    object-fit: cover;
    flex-shrink: 0;
}

.fd-curso-row-capa--vazia {
    background: var(--color-primary-tint);
    color: var(--color-primary-tint-text);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
}

.fd-curso-row-main {
    min-width: 0;
    flex: 1;
}

.fd-curso-row-title {
    margin: 0 0 4px;
    font-size: 14px;
    font-weight: 700;
    color: var(--color-text-primary);
}

.fd-curso-row-meta {
    margin: 0 0 10px;
    font-size: 13px;
    color: var(--color-text-secondary);
}

/*
 * ─── % de evolução do curso — cards de listagem ─────────────────────
 * Capítulos concluídos / total cadastrado (CursoCapitulo::progressoDoCurso(),
 * AppCursos::index()), pedido pela Cristiane em 2026-08-11. Reaproveita
 * .fd-progress-track/.fd-progress-study já usados na Tela Hoje — 1
 * classe só, compartilhada pelos dois layouts (light e cards), porque
 * já usa os tokens --color-* que variam sozinhos por combinação. Fica
 * de fora do `.fd-curso-row-footer`/`.fd-cards-curso-footer` de
 * propósito — aquela linha já disputa espaço entre selo de nível e
 * botões de ação (ver correção de "Intermediario" quebrando linha,
 * 2026-08-11), então a barra vai numa linha própria, entre o meta e o
 * footer.
 */
.fd-curso-progresso {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0 0 10px;
}

.fd-curso-progresso .fd-progress-track {
    flex: 1;
}

.fd-curso-progresso-label {
    font-size: 12px;
    font-weight: 700;
    color: var(--color-text-secondary);
    white-space: nowrap;
}

.fd-curso-row-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 8px 10px;
}

.fd-curso-badge {
    font-size: 12px;
    font-weight: 700;
    padding: 3px 9px;
    border-radius: 8px;
    background: var(--color-primary-tint);
    color: var(--color-primary-tint-text);
    text-transform: capitalize;
    white-space: nowrap;
}

.fd-curso-actions {
    display: flex;
    gap: 8px;
}

.fd-curso-actions a,
.fd-curso-actions button {
    font-size: 13px;
    font-weight: 600;
    padding: 6px 10px;
    border-radius: 8px;
    border: none;
    font-family: inherit;
    cursor: pointer;
    text-decoration: none;
}

/* Migrado pros tokens Material Design 3 em 2026-08-25 — mesma causa
   raiz de .fd-section-title/.fd-modulo-card acima (`--color-*` preso
   ao Tema Claro fora de `[data-layout="cards"]`). Usado ao vivo em
   compromissos_index.php, cursos_conteudo.php e tarefas_hub.php. */
.fd-curso-actions .fd-acao-editar {
    background: var(--primary-container);
    color: var(--on-primary-container);
}

.fd-curso-actions .fd-acao-excluir {
    background: transparent;
    color: var(--on-surface-variant);
    border: 1px solid var(--outline-variant);
}

/*
 * Botão "Excluir" só com ícone, sem texto — usado na listagem de
 * cursos (light e cards), onde ele divide linha com o selo de nível
 * (.fd-curso-badge/.fd-cards-curso-badge). Com nível "Intermediario"
 * (palavra longa), o texto "Excluir" ficava espremido contra "Editar"
 * (reportado pela Cristiane em 2026-08-10). Continua com a mesma
 * classe .fd-acao-excluir (cor/borda), só troca o texto por 🗑️ +
 * aria-label — quadrado em vez de retangular, ocupa bem menos largura.
 * Módulo/capítulo (cursos_conteudo.php) mantêm o botão com texto —
 * não competem por espaço com um selo ao lado, sem o mesmo problema.
 *
 * Seletor combinado (.fd-acao-excluir.fd-acao-excluir--icone, 2
 * classes) de propósito — corrigido em 2026-08-11: com só 1 classe,
 * a especificidade perdia pra ".fd-curso-actions button"/
 * ".fd-cards-curso-actions button" (classe + elemento), então o
 * padding menor daqui nunca era aplicado de fato (ver
 * [[project-facilita-desenvolve-menu-configuracao]] pro ajuste
 * irmão de largura no selo de nível, mesmo problema de "Intermediario"
 * quebrando linha no layout cards).
 */
.fd-acao-excluir.fd-acao-excluir--icone {
    padding: 6px 8px;
    line-height: 1;
    font-size: 12px;
    transition: background-color .15s ease, border-color .15s ease;
}

/* Hover só no ícone (sem texto visível) — reforça a ação destrutiva
   com o mesmo par de cor já usado em .fd-flash--error. O texto some
   do botão, então usa o tooltip customizado abaixo (data-tooltip) em
   vez do title="" nativo — o title não estava aparecendo de forma
   confiável (atraso e comportamento inconsistente entre navegadores). */
.fd-acao-excluir--icone:hover {
    background: #FEE2E2;
    border-color: #FCA5A5;
}

/*
 * ─── Tooltip customizado (qualquer botão/ícone sem texto visível) ───
 * Substitui o title="" nativo (lento, inconsistente, não estava
 * aparecendo pra Cristiane em 2026-08-10) por um balão próprio via
 * CSS puro, com a pele do app. Uso: `data-tooltip="texto"` no
 * elemento — não precisa de JS nem de position:relative manual (já
 * incluso aqui). Some no touch (sem :hover) mas continua acessível
 * via `aria-label` no próprio botão.
 */
[data-tooltip] {
    position: relative;
}

[data-tooltip]::after {
    content: attr(data-tooltip);
    position: absolute;
    bottom: calc(100% + 6px);
    left: 50%;
    transform: translateX(-50%) translateY(4px);
    background: var(--color-text-primary);
    color: var(--color-bg);
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
    padding: 5px 9px;
    border-radius: 6px;
    opacity: 0;
    pointer-events: none;
    transition: opacity .15s ease, transform .15s ease;
    z-index: 5;
}

[data-tooltip]:hover::after,
[data-tooltip]:focus-visible::after,
[data-tooltip].fd-dica-visivel::after {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}

/* Atualização 2026-08-24 (3): variante controlada por JS (classe, não
   só :hover/:focus-visible) — usada pelo auto-save de
   cursos_conteudo.php pra confirmar o salvamento (ou avisar erro) sem
   reload, direto no campo editado (FD_APP.mostrarDicaCampo() em
   app.js). .fd-dica-erro troca a cor do balão pro vermelho de erro já
   usado em .fd-flash--error/.fd-acao-excluir, em vez do balão neutro
   padrão. */
[data-tooltip].fd-dica-erro::after {
    background: #991B1B;
    color: #FEE2E2;
}

/* Atualização 2026-08-24 (6): o balão de SUCESSO do auto-save estava
   usando a cor neutra padrão do [data-tooltip] (--color-text-primary/
   --color-bg — na prática, preto com texto branco), sem nenhuma
   relação com a identidade visual do app; a Cristiane pediu uma cor
   mais "padronizada". Trocado pro mesmo par --color-primary/
   --color-primary-contrast já usado em TODO botão/destaque primário do
   app (.fd-form-btn-primary, .fd-cards-hero, os avatares de ícone
   etc.) — dessa forma o balão de sucesso combina com a cor de destaque
   de cada tema (verde/roxo/laranja conforme o tema visual escolhido),
   em vez de preto fixo. Escopado só pro auto-save (.fd-dica-sucesso) —
   não muda o balão neutro padrão usado noutras telas (compromissos_index.php,
   tarefas_hub.php, o próprio botão Excluir aqui do lado). */
[data-tooltip].fd-dica-sucesso::after {
    background: var(--color-primary);
    color: var(--color-primary-contrast);
}

/*
 * ─── Hover consistente pra todo botão/link clicável ─────────────────
 * Pedido pela Cristiane em 2026-08-10: só o ícone de excluir tinha
 * feedback de hover — nenhum outro botão do app tinha. `brightness()`
 * cobre qualquer fundo sólido ou tintado sem precisar de token de cor
 * novo por tema (funciona igual nos 6 combos de layout×tema). Botões
 * só-texto ou só-ícone sem fundo próprio (link "Sair", olho de
 * mostrar senha, nav inferior) usam um tratamento à parte logo abaixo,
 * já que brightness() não muda nada visível sem cor de fundo.
 */
.fd-btn-primary,
.fd-btn-chip,
.fd-btn-whatsapp,
.fd-btn-add-capitulo,
.fd-app-icon-btn,
.fd-curso-actions .fd-acao-editar,
.fd-cards-curso-actions .fd-acao-editar,
.fd-form-btn-primary,
.fd-form-btn-secondary,
.fd-form-btn-secondary--opaco,
.fd-file-upload-btn,
.fd-theme-option {
    transition: filter .15s ease;
}

.fd-btn-primary:hover,
.fd-btn-chip:hover,
.fd-btn-whatsapp:hover,
.fd-btn-add-capitulo:hover,
.fd-app-icon-btn:hover,
.fd-curso-actions .fd-acao-editar:hover,
.fd-cards-curso-actions .fd-acao-editar:hover,
.fd-form-btn-primary:hover,
.fd-form-btn-secondary:hover,
.fd-form-btn-secondary--opaco:hover,
.fd-file-upload-btn:hover,
.fd-theme-option:hover {
    filter: brightness(0.93);
}

.fd-app-topbar-link {
    transition: color .15s ease;
}

.fd-app-topbar-link:hover {
    text-decoration: underline;
    color: var(--color-text-primary);
}

.fd-app-nav-item {
    transition: background-color .15s ease;
}

.fd-app-nav-item:not(.is-active):hover {
    background: var(--color-border);
}

.fd-toggle-senha,
.fd-tag-chip-remove {
    transition: opacity .15s ease, background-color .15s ease;
}

.fd-toggle-senha:hover {
    opacity: .65;
}

.fd-tag-chip-remove:hover {
    background: rgba(0, 0, 0, .22);
}

/*
 * ─── Modal de confirmação com a pele do app ──────────────────────────
 * Substitui o confirm() nativo do navegador (caixa do sistema
 * operacional, sem relação visual com o app — reportado pela
 * Cristiane em 2026-08-10) nos forms de exclusão (curso, módulo,
 * capítulo). Ver FD_APP.initConfirmacao() em assets/js/app.js —
 * criado 1x via JS e reaproveitado. Cor do botão de confirmar é a
 * mesma dupla "perigo" já usada em .fd-flash--error e no hover de
 * .fd-acao-excluir--icone.
 */
.fd-modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .5);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    z-index: 50;
}

.fd-modal-overlay[hidden] {
    display: none;
}
.fd-vinculo-modal [data-mostrar-para][hidden] { display: none !important; }

.fd-modal-dialog {
    width: 100%;
    max-width: 340px;
    background: var(--surface-container-lowest);
    border-radius: var(--fd-rounded-lg);
    padding: 20px;
    box-shadow: 0 20px 50px rgba(0, 0, 0, .25);
}

.fd-modal-texto {
    margin: 0 0 18px;
    font-size: 14px;
    line-height: 1.4;
    color: var(--on-surface);
}

.fd-modal-actions {
    display: flex;
    gap: 10px;
}

/*
 * ─── Modal "Adicionar Vínculo" (variante --form do modal genérico) ──
 * Reaproveita `.fd-modal-overlay`/`.fd-modal-dialog` acima (mesmo
 * backdrop, mesma sombra), mas o conteúdo é um form completo com vários
 * campos — não cabe no `max-width: 340px` pensado pra 1-2 frases de
 * confirmação, e pode passar da altura da tela em telas baixas (com
 * teclado virtual aberto, por exemplo). Aberto/fechado via
 * FD_APP.initModal() (app.js) através de `data-modal-abrir`/
 * `data-modal-fechar` — diferente do modal de confirmação, que é
 * criado e destruído via JS a cada uso. Pedido da Cristiane em
 * 2026-08-22 (substitui o antigo botão "Adicionar Vínculo" que só
 * rolava a tela até o card de convite).
 */
.fd-modal-dialog--form {
    max-width: 480px;
    max-height: 90vh;
    overflow-y: auto;
}

.fd-modal-form-cabecalho {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--fd-stack-md);
    margin-bottom: var(--fd-stack-md);
}

.fd-modal-fechar-btn {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: none;
    background: transparent;
    color: var(--on-surface-variant);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
}

.fd-modal-fechar-btn:hover {
    background: var(--surface-container-high);
}

/* Campos do form dentro do modal — mesma pilha vertical de
   .fd-perfil-editar-campos, mas SEM a borda/margem superior de lá (que
   existe pra separar o form do resumo do perfil acima dele; aqui o
   form é o conteúdo inteiro do modal, não precisa de divisória). */
.fd-modal-form-campos {
    display: flex;
    flex-direction: column;
    gap: var(--fd-stack-md);
}

.fd-vinculo-modal-dialog {
    width: min(100%, 620px);
    max-width: 620px;
    padding: 0;
    overflow: hidden;
}

.fd-vinculo-modal-cabecalho {
    align-items: flex-start;
    padding: 21px 24px 17px;
    margin: 0;
    background: color-mix(in srgb, var(--primary-container) 48%, var(--surface-container-lowest));
    border-bottom: 1px solid var(--outline-variant);
}

.fd-vinculo-modal-cabecalho > div {
    min-width: 0;
}

.fd-vinculo-modal-cabecalho h2 {
    margin: 6px 0 0;
    color: var(--on-surface);
    font-family: var(--font-heading);
    font-size: 22px;
    line-height: 1.15;
}

.fd-vinculo-modal-cabecalho p {
    margin: 5px 0 0;
    color: var(--on-surface-variant);
    font-size: 11px;
    line-height: 1.4;
}

.fd-vinculo-modal-cabecalho .fd-modal-fechar-btn {
    flex: 0 0 40px;
    width: 40px;
    height: 40px;
    margin: -4px -6px 0 0;
    background: var(--surface-container-lowest);
    border: 1px solid var(--outline-variant);
}

.fd-vinculo-modal-corpo {
    gap: 14px;
    max-height: calc(90vh - 112px);
    padding: 18px 24px 24px;
    overflow-y: auto;
}

.fd-vinculo-modal-corpo .fd-perfil-label {
    font-size: 11px;
}

.fd-vinculo-modal-corpo .fd-perfil-hint {
    font-size: 9px;
    line-height: 1.3;
}

.fd-vinculo-modal-corpo .fd-perfil-erro,
.fd-vinculo-modal-corpo .fd-perfil-obrigatorio-marca {
    font-size: 10px;
    line-height: 1.35;
}

.fd-vinculo-modal-corpo .fd-perfil-input,
.fd-vinculo-modal-corpo .fd-perfil-select {
    min-height: 42px;
    padding: 9px 12px;
    font-size: 12px;
}

.fd-vinculo-modal-corpo .fd-avatar-picker {
    gap: 9px;
}

.fd-vinculo-modal-corpo .fd-avatar-preset {
    width: 46px;
    height: 46px;
}

.fd-vinculo-modal-corpo .fd-avatar-preset .material-symbols-outlined {
    font-size: 23px;
}

@media (max-width: 620px) {
    .fd-vinculo-modal-dialog {
        width: calc(100% - 24px);
        max-height: calc(100vh - 24px);
        border-radius: 20px;
    }

    .fd-vinculo-modal-cabecalho {
        padding: 18px 18px 15px;
    }

    .fd-vinculo-modal-corpo {
        max-height: calc(100vh - 126px);
        padding: 16px 18px 20px;
    }
}

.fd-modal-actions .fd-form-btn-secondary,
.fd-modal-btn-perigo {
    flex: 1;
    height: 44px;
    border-radius: var(--fd-rounded);
    font-size: 14px;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    transition: filter .15s ease;
}

.fd-modal-btn-perigo {
    border: none;
    background: #FEE2E2;
    color: #991B1B;
}

.fd-modal-btn-perigo:hover {
    filter: brightness(0.95);
}

/*
 * Link de convite (URL longa, sem espaços) — precisa quebrar dentro do
 * card em vez de estourar a largura da tela. `overflow-wrap: anywhere`
 * deixa o navegador quebrar em qualquer caractere só quando necessário
 * (preserva palavras inteiras quando cabe). Fundo leve + fonte
 * monoespaçada deixa claro que é um valor pra copiar, não texto comum.
 */
.fd-curso-row-link {
    margin: 0 0 10px;
    padding: 8px 10px;
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: 8px;
    font-family: "SFMono-Regular", Consolas, Menlo, monospace;
    font-size: 13px;
    line-height: 1.5;
    color: var(--color-text-secondary);
    overflow-wrap: anywhere;
    word-break: break-word;
}

/*
 * ─── Compartilhar convite no WhatsApp ────────────────────────────────
 * Botão em auth_convite.php, ao lado do link de cada convite pendente.
 * Usa https://wa.me/ (link universal, funciona em mobile e WhatsApp
 * Web) com a mensagem + link já preenchidos. Verde fixo (não segue
 * --color-*) porque é a cor de identificação do WhatsApp, reconhecível
 * independente do tema escolhido — mesmo raciocínio de manter ícone
 * monoline no mesmo estilo dos ícones da trilha de crescimento.
 */
.fd-curso-row-share {
    margin-top: 10px;
}

.fd-btn-whatsapp {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 12px;
    border-radius: 999px;
    background: #25D366;
    color: #FFFFFF;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
}

.fd-btn-whatsapp svg {
    width: 14px;
    height: 14px;
    flex-shrink: 0;
}

/*
 * ─── Cursos — layout Cards ───────────────────────────────────────────
 */
.fd-cards-curso {
    margin: 0 18px 12px;
    padding: 14px 16px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 16px;
}

.fd-cards-curso-top {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 10px;
}

.fd-cards-curso-icon {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--color-primary);
    color: #FFFFFF;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 15px;
    flex-shrink: 0;
}

/* Capa real do curso (upload) no lugar do emoji de fallback — mesma
   caixa 36px, só troca círculo colorido por miniatura recortada. */
.fd-cards-curso-icon--img {
    object-fit: cover;
    background: none;
}

.fd-cards-curso-title {
    margin: 0;
    font-size: 14px;
    font-weight: 700;
    color: var(--color-text-primary);
}

.fd-cards-curso-meta {
    margin: 2px 0 0;
    font-size: 13px;
    color: var(--color-text-secondary);
}

.fd-cards-curso-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 8px 8px;
}

/*
 * Selo de nível — "Intermediario" (13 caracteres) é bem mais largo que
 * "Avancado"/"Iniciante" e, junto com os 3 botões de ação, ficava
 * espremido demais na largura do card e quebrava linha (reportado pela
 * Cristiane em 2026-08-11). Reduzido o padding aqui e o padding/gap dos
 * botões de ação logo abaixo — soma o suficiente pra caber tudo numa
 * linha só nos 3 níveis, sem precisar truncar texto nem empilhar.
 */
.fd-cards-curso-badge {
    font-size: 12px;
    font-weight: 700;
    padding: 3px 7px;
    border-radius: 8px;
    background: var(--color-primary-tint);
    color: var(--color-primary-tint-text);
    text-transform: capitalize;
    white-space: nowrap;
}

.fd-cards-curso-actions {
    display: flex;
    gap: 6px;
}

.fd-cards-curso-actions a,
.fd-cards-curso-actions button {
    font-size: 12px;
    font-weight: 700;
    padding: 6px 8px;
    border-radius: 999px;
    border: none;
    font-family: inherit;
    cursor: pointer;
    text-decoration: none;
}

.fd-cards-curso-actions .fd-acao-editar {
    background: var(--color-primary);
    color: #FFFFFF;
}

.fd-cards-curso-actions .fd-acao-excluir {
    background: transparent;
    color: var(--color-text-secondary);
    border: 1px solid var(--color-border);
}

.fd-cards-list-actions {
    margin: 0 18px 16px;
}

.fd-cards-list-actions .fd-btn-primary {
    text-decoration: none;
    display: flex;
    align-items: center;
    justify-content: center;
}

/*
 * ─── Resumo/mapeamento por IA (cursos_conteudo.php) ──────────────────
 * Card de destaque com o que a IA gerou (objetivo, tempo recomendado,
 * motivação) — mesmo par de cor "tint" usado em .fd-next-card e
 * .fd-balance-card pra elementos de destaque suave.
 *
 * Migrado pros tokens Material Design 3 em 2026-08-25, junto com o
 * resto desta seção (`.fd-tag-*`/`.fd-modulo-card`/`.fd-capitulo-row`/
 * `.fd-aprovacao-estudante*` logo abaixo) — mesma causa raiz da
 * correção de `.fd-form-*` em 24/08 (`--color-*` só responde ao Tema
 * Escuro sob `[data-layout="cards"]`, que as telas novas via
 * `_app_shell` não passam mais). Reportado pela Cristiane com print:
 * "as seções de módulos está totalmente fora do padrão" no Tema
 * Escuro. `--color-primary-tint`/`--color-primary-tint-text` (par
 * "tint" de destaque suave) viram `--primary-container`/
 * `--on-primary-container` (mesmo par já usado em
 * `.fd-form-btn-secondary--opaco`).
 */
.fd-resumo-ia {
    background: var(--primary-container);
    border-radius: var(--fd-rounded-lg);
    padding: 12px 14px;
    margin: 0 0 14px;
}

.fd-resumo-ia-label {
    margin: 0 0 6px;
    font-size: 13px;
    font-weight: 700;
    color: var(--on-primary-container);
    text-transform: uppercase;
    letter-spacing: .03em;
}

.fd-resumo-ia .fd-curso-row-meta {
    color: var(--on-primary-container);
}

.fd-resumo-ia .fd-curso-row-meta:last-child {
    margin-bottom: 0;
}

/*
 * ─── Conteúdo do curso (habilidades, módulos, capítulos) — compartilhado ─
 * Tela cursos_conteudo.php — 1 template só, não duplicado por layout
 * (mesmo raciocínio do formulário de curso). Usava --color-* e
 * --radius-* dentro de .fd-phone-frame (ver "Correção 2026-08-09" em
 * docs/decisao-temas-layout-completo.md) — migrado pros tokens
 * Material Design 3 em 2026-08-25, ver comentário acima de
 * .fd-resumo-ia.
 */
.fd-tag-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 8px 0;
}

.fd-tag-chip {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 5px 6px 5px 10px;
    border-radius: 999px;
    background: var(--primary-container);
    color: var(--on-primary-container);
    font-size: 13px;
    font-weight: 600;
}

.fd-tag-chip form {
    display: contents;
}

.fd-tag-chip-remove {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    border: none;
    background: rgba(0, 0, 0, .12);
    color: inherit;
    font-size: 13px;
    line-height: 1;
    cursor: pointer;
    font-family: inherit;
}

.fd-modulo-card {
    background: var(--surface-container-lowest);
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded-lg);
    padding: 16px;
    margin: 0 18px 14px;
}

.fd-modulo-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 10px;
}

/*
 * ─── Módulo em modo leitura (estudante atribuído, não-dono) ─────────
 * Pedido implícito de "Atribuir curso" (2026-08-25): cursos_conteudo.php
 * sempre foi só uma tela de administração (cadastro/edição de módulo e
 * capítulo) — com atribuição, um estudante não-dono também pode abri-la
 * pra ver o conteúdo (ver AppCursoConteudo::index(), $podeAdministrar),
 * mas sem os controles de edição/exclusão, que continuam exclusivos do
 * dono. Substitui .fd-item-edicao-bloco quando !$podeAdministrar.
 */
.fd-modulo-leitura {
    margin-bottom: 4px;
}

.fd-modulo-leitura-titulo {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0 0 4px;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 15px;
    color: var(--on-surface);
}

/* Fundo em --surface-container (1 degrau "acima" de
   --surface-container-lowest usado por .fd-modulo-card) em vez de
   repetir a mesma superfície do card pai — mesmo raciocínio de
   elevação tonal do Material Design 3 já usado alhures no app,
   garante que a linha do capítulo continue visível dentro do card do
   módulo nos 2 temas (a versão antiga usava --color-bg, o fundo da
   PÁGINA — coincidência de valores que só funcionava por acaso no
   Tema Claro original). */
.fd-capitulo-row {
    background: var(--surface-container);
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded-md);
    padding: 12px;
    margin: 0 0 10px;
}

/* Os campos editáveis precisam se destacar da superfície acinzentada
   do capítulo. O token equivale ao branco no tema claro e mantém o
   contraste correto no tema escuro. */
.fd-capitulo-row .fd-form-input {
    background: var(--surface-container-lowest);
}

/*
 * ─── Identificador do estudante — tela de Aprovações ────────────────
 * Um responsável pode ter mais de 1 filho, e a lista de aprovações
 * agora junta as pendências de todos — este selo deixa claro de quem
 * é cada item (pedido pela Cristiane em 2026-08-10, relevante inclusive
 * pro controle de mesada, que é individual por estudante). Fica no
 * topo de cada .fd-capitulo-row, antes do nome do curso/módulo.
 */
.fd-aprovacao-estudante {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    font-weight: 700;
    color: var(--on-surface);
    margin: 0 0 8px;
}

.fd-aprovacao-estudante-avatar {
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: var(--primary-container);
    color: var(--on-primary-container);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 700;
    flex-shrink: 0;
}

.fd-status-badge {
    flex-shrink: 0;
    font-size: 12px;
    font-weight: 700;
    padding: 3px 9px;
    border-radius: 8px;
    white-space: nowrap;
    text-transform: uppercase;
    letter-spacing: .03em;
}

.fd-status-badge--pendente {
    background: var(--color-bg);
    color: var(--color-text-secondary);
    border: 1px solid var(--color-border);
}

.fd-status-badge--concluido {
    background: var(--color-reward-tint);
    color: var(--color-reward-tint-text);
    border: 1px solid var(--color-reward-tint-border);
}

/*
 * ─── Variantes de status de execução — Tarefas/Atividades Físicas ───
 * Mesmo selo de .fd-status-badge--pendente/--concluido (2026-08-11,
 * ver tarefas_hub.php/AppAprovacoes) — reaproveita os mesmos 2 pares
 * de cor já usados em .fd-flash--warning/--error, em vez de inventar
 * tokens novos só pra esses 2 estados.
 */
.fd-status-badge--aguardando {
    background: #FEF3C7;
    color: #92400E;
    border: 1px solid #F3E3BE;
}

.fd-status-badge--rejeitado {
    background: #FEE2E2;
    color: #991B1B;
    border: 1px solid #F3C9C9;
}

.fd-diario-form,
.fd-diario-pendente {
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px dashed var(--color-border);
}

/* Diário já aprovado, capítulo concluído — histórico permanente, não
   transitório como .fd-diario-pendente, por isso o traço contínuo em
   vez de tracejado e um leve tom de fundo (mesma família de "conquista"
   de .fd-achievement, sem competir com o selo de status ao lado). */
.fd-diario-aprovado {
    margin-top: 10px;
    padding: 10px;
    border-top: 1px solid var(--color-border);
    background: var(--color-bg);
    border-radius: 8px;
}

.fd-diario-form {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.fd-diario-form textarea.fd-form-input {
    resize: vertical;
}

/*
 * "+ Novo capítulo" (rodapé do card de módulo) — usava .fd-acao-editar
 * sozinho, mas essa classe só tem estilo dentro de .fd-curso-actions
 * (`.fd-curso-actions .fd-acao-editar` no CSS), então ficava sem
 * formatação nenhuma aqui. Classe própria, standalone.
 */
/* Migrado pra --primary-container/--on-primary-container em 2026-08-25
   — mesma causa raiz das outras classes desta seção. */
.fd-btn-add-capitulo {
    display: inline-block;
    margin-top: 4px;
    padding: 8px 12px;
    border-radius: 999px;
    background: var(--primary-container);
    color: var(--on-primary-container);
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
}

/*
 * ─── Formulário — dentro do "aparelho", segue o tema visual ─────────
 * Atualização 2026-08-24: migrado dos tokens ANTIGOS (--color-*/
 * --radius-*, presos ao eixo `data-layout` — que nas telas do
 * `_app_shell` novo NUNCA sai de "light" (`_theme_default.php` cai no
 * default `'light'` quando `$layout` não é passado, e as telas
 * migradas pro shell novo não passam mais essa variável), então
 * `.fd-form-*` sempre renderizava a pele CLARA de `--color-*`, mesmo
 * com o Tema Escuro (`jornada_vibrante`) selecionado — a variante
 * escura só existia sob `[data-layout="cards"]`, que nunca mais é
 * atingida) pros tokens NOVOS (Material Design 3, resolvidos só por
 * `data-theme`, sem depender de `data-layout`) — mesmo padrão já usado
 * em `.fd-perfil-input`/`.fd-auth2-input`. Reportado pela Cristiane com
 * print: card/campos brancos fixos mesmo no Tema Escuro, e borda PRETA
 * ao focar um campo (o navegador aplicava o anel de foco padrão do
 * sistema operacional, porque `.fd-form-input` nunca tinha tido um
 * `:focus` próprio — corrigido junto, mesmo `outline: 2px solid
 * var(--primary)` já usado em `.fd-perfil-input:focus`).
 *
 * Afeta TODAS as telas que usam `.fd-form-*` (não só Cursos/Módulos/
 * Capítulos, que foi o pedido concreto dela) — são classes
 * compartilhadas: `aprovacoes.php`, `atividade_formulario.php`,
 * `atividade_concluir_formulario.php`, `auth_convite.php`,
 * `compromissos_index.php`, `compromisso_formulario.php`,
 * `cursos_conteudo.php`, `cursos_formulario.php`,
 * `curso_capitulo_formulario.php`, `curso_modulo_formulario.php`,
 * `tarefa_concluir_formulario.php`, `tarefa_formulario.php` — conferido
 * via grep que NENHUMA delas é uma das 3 telas de protótipo layout×tema
 * remanescentes em `views/{light,cards}/` (essas não usam `.fd-form-*`
 * — usam `--devtool-*`), então a troca de tokens é segura pra todas de
 * uma vez, sem quebrar o protótipo antigo. Isso adianta uma fatia do
 * pendente "migração completa de `.fd-form-*` pros tokens novos" da
 * Fase 3 (ver PENDENCIAS.md) — o resto da Fase 3 (toggle Colar
 * link/Manualmente, seletor de Estudante Vinculado etc.) continua sem
 * começar.
 */
.fd-form-card {
    background: var(--surface-container-lowest);
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded-lg);
    padding: 20px;
    margin: 20px 18px 16px;
}

/* Distância das bordas no mobile (2026-08-24, pedido da Cristiane em
   cursos_formulario.php) — mesmo padrão de `.fd-perfil-grid`/
   `.fd-cursos-content` (ver docblock de `.fd-perfil-grid`): reforça só
   a margem lateral do card de formulário e do bloco de ação logo
   abaixo dele (`.fd-form-actions`) em telas pequenas, sem tocar
   margin-top/bottom já corretos. */
@media (max-width: 767px) {
    .fd-form-card,
    .fd-form-actions {
        margin-left: var(--fd-margin-mobile);
        margin-right: var(--fd-margin-mobile);
    }
}

.fd-form-field {
    margin-bottom: 16px;
}

.fd-form-field:last-child {
    margin-bottom: 0;
}

/* Pares de metadados relacionados no formulário de curso. A grade
   reduz a varredura vertical no desktop sem apertar os controles no
   mobile, onde a ordem semântica volta naturalmente para uma coluna. */
.fd-form-row {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}

/* `:last-child` global zera a margem do segundo campo de cada dupla,
   mas a dupla não é necessariamente o fim do formulário. Mantém o
   mesmo ritmo vertical de 16px usado pelos campos individuais. */
.fd-form-row > .fd-form-field:last-child {
    margin-bottom: 16px;
}

@media (max-width: 767px) {
    .fd-form-row {
        grid-template-columns: minmax(0, 1fr);
        gap: 0;
    }
}

.fd-form-label {
    display: block;
    margin: 0 0 6px;
    font-size: 13px;
    font-weight: 600;
    color: var(--on-surface);
}

/* Só o label "Habilidades desenvolvidas" em cursos_formulario.php
   (2026-08-25, pedido da Cristiane) — sem card próprio envolvendo-o,
   ficava colado no campo Nível acima. Modificador em vez de mudar
   `.fd-form-label` base, usado em todo formulário do app. */
.fd-form-label--espacada {
    margin-top: 20px;
}

.fd-form-input,
.fd-form-select {
    width: 100%;
    padding: 10px 12px;
    border-radius: var(--fd-rounded-md);
    border: 1px solid var(--outline-variant);
    font-size: 14px;
    font-family: inherit;
    background: var(--surface-container-low);
    color: var(--on-surface);
    transition: box-shadow 0.2s ease, border-color 0.2s ease;
}

/* Destaque da opção selecionada/hover dentro da lista suspensa do
   <select> Nível (cursos_formulario.php) — reportado pela Cristiane
   com print. Primeira tentativa foi `accent-color`, mas ela não
   surtiu efeito nenhum (confirmado por ela) — `accent-color` só pinta
   o "check" de checkbox/radio/range/progress; a lista suspensa de um
   <select> comum é renderizada pelo SO/navegador e não é alcançável
   por CSS nenhum, `accent-color` incluso. O jeito de verdade de
   escolher essa cor é o <select> optar pelo modelo "customizable
   select" (`appearance: base-select`, suportado no Chrome a partir da
   versão 135) — aí a lista vira HTML/CSS normal, e a opção quando
   marcada/em hover responde a `option:checked`/`option:hover` como
   qualquer elemento. Envolvido em `@supports` de propósito: onde não
   tem suporte (Firefox, Safari e Chrome mais antigo), a regra inteira
   é ignorada e o <select> continua exatamente como antes (nativo,
   funcional, só sem essa cor customizada na lista).

   Ajuste 25/08, a partir do seu retorno: com o `appearance: base-select`
   aplicado, as opções NÃO marcadas ficaram com o texto ilegível no Tema
   Escuro (preto sobre fundo escuro) — a regra de `option` só definia
   `padding`/`border-radius`, sem `color` nenhum, então o texto caía no
   preto padrão do navegador pra `<option>`, sem nenhuma relação com o
   tema. Faltava declarar a cor de texto explicitamente, do mesmo jeito
   que qualquer outro texto do app usa `var(--on-surface)` (resolvido
   por `data-theme`, então já nasce certo no Tema Claro também). */
@supports (appearance: base-select) {
    .fd-form-select,
    .fd-form-select::picker(select) {
        appearance: base-select;
    }

    .fd-form-select::picker(select) {
        background: var(--surface-container-low);
        border: 1px solid var(--outline-variant);
        border-radius: var(--fd-rounded-md);
        padding: 4px;
    }

    .fd-form-select option {
        padding: 10px 12px;
        border-radius: var(--fd-rounded-sm);
        color: var(--on-surface);
        background: var(--surface-container-low);
    }

    .fd-form-select option:checked,
    .fd-form-select option:hover {
        background: var(--primary);
        color: var(--on-primary);
    }
}

.fd-form-input:focus,
.fd-form-select:focus {
    outline: 2px solid var(--primary);
    outline-offset: 1px;
}

/*
 * ─── Lista de checkboxes — atribuir tarefa/atividade a estudante(s) ──
 * Pedido pela Cristiane em 2026-08-11 (tarefa_formulario.php/
 * atividade_formulario.php) — não existia nenhum padrão de multi-seleção
 * no app até aqui (habilidades de curso usa tags de texto livre, não
 * uma lista fixa de opções). Checkbox nativo, sem componente custom.
 */
.fd-checkbox-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.fd-checkbox-item {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    color: var(--on-surface);
    cursor: pointer;
}

.fd-checkbox-item input[type="checkbox"] {
    width: 18px;
    height: 18px;
    flex-shrink: 0;
    accent-color: var(--primary);
}

/*
 * ─── Campo de senha com botão de mostrar/ocultar — compartilhado ────
 * Usado nos formulários de autenticação (auth_cadastro.php,
 * auth_login.php, auth_convite_aceitar.php). Ver .fd-toggle-senha em
 * assets/js/app.js (alterna o type do input via delegação de evento).
 */
.fd-input-senha {
    position: relative;
}

.fd-input-senha .fd-form-input {
    padding-right: 42px;
}

.fd-toggle-senha {
    position: absolute;
    top: 50%;
    right: 6px;
    transform: translateY(-50%);
    width: 30px;
    height: 30px;
    border: none;
    background: transparent;
    font-size: 15px;
    line-height: 1;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--on-surface-variant);
}

.fd-form-hint {
    margin: 4px 0 0;
    font-size: 13px;
    color: var(--on-surface-variant);
}

.fd-form-actions {
    display: flex;
    gap: 10px;
    margin: 0 18px 20px;
}

/* Bloco de ação secundária isolado no meio do formulário (hoje só
   "Gerenciar conteúdo (módulos e capítulos)" em cursos_formulario.php,
   entre o campo Nível e o rodapé Cancelar/Salvar) — sem essa margem
   extra ele ficava colado no campo de cima, sem separação visual
   nenhuma (reportado pela Cristiane). Modificador em vez de mudar
   `.fd-form-actions` na base pra não empurrar o rodapé Cancelar/Salvar,
   que já tem espaçamento correto. */
.fd-form-actions--destaque {
    margin-top: 16px;
}

.fd-form-btn-primary {
    flex: 1;
    height: 46px;
    border-radius: var(--fd-rounded-md);
    border: none;
    background: var(--primary);
    color: var(--on-primary);
    font-size: 14px;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
}

.fd-form-btn-secondary {
    flex: 1;
    height: 46px;
    border-radius: var(--fd-rounded-md);
    border: 1px solid var(--outline-variant);
    background: var(--surface-container-lowest);
    color: var(--on-surface);
    font-size: 14px;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    text-decoration: none;
    display: flex;
    align-items: center;
    justify-content: center;
}

/*
 * Variante mais opaca do secundário — usada quando a opção secundária
 * ainda precisa ter presença visual (ex.: "Usar pra mim mesmo(a)" no
 * onboarding), não só um "cancelar" discreto. `--surface-container-lowest`
 * sobre `--surface-container-low` quase não contrasta; aqui usa o par
 * tonal de destaque do design system (--primary-container/
 * --on-primary-container), só sem competir com o botão primário.
 */
.fd-form-btn-secondary--opaco {
    border-color: transparent;
    background: var(--primary-container);
    color: var(--on-primary-container);
}

/* Prévia da capa atual no formulário de curso, acima do campo de
   upload — mesmo raio de .fd-curso-row-capa, só maior (é o destaque
   da tela de edição, não uma miniatura de lista). */
.fd-curso-capa-preview {
    display: block;
    width: 100%;
    max-height: 160px;
    object-fit: cover;
    border-radius: var(--fd-rounded-lg);
    margin: 0 0 10px;
}

/* Prévia da foto de perfil no formulário de configuração — mesma ideia
   de .fd-curso-capa-preview, só redonda e pequena (avatar, não capa de
   curso). Ver themes/app/config.php. */
.fd-avatar-preview {
    display: block;
    width: 64px;
    height: 64px;
    object-fit: cover;
    border-radius: 50%;
    margin: 0 0 10px;
}

/*
 * ─── Campo de arquivo estilizado (input[type=file]) ─────────────────
 * `.fd-form-input` (padding/borda/fundo) não é respeitado de forma
 * consistente pelo widget nativo de input[type=file] em nenhum
 * navegador — o botão "Escolher arquivo" continua com a pele do
 * sistema operacional, destoando do resto do form ("sem formatação",
 * reportado pela Cristiane em 2026-08-10). Solução padrão: o <input>
 * de verdade fica visualmente escondido (mas acessível — sem
 * display:none, que tiraria do foco/leitor de tela) e uma <label for>
 * faz o papel do botão visível, clicando nela aciona o input. Nome do
 * arquivo escolhido some num texto ao lado, atualizado via JS
 * (FD_APP.initFileUpload() em assets/js/app.js).
 */
.fd-file-upload {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.fd-file-upload-input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.fd-file-upload-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 10px 16px;
    border-radius: var(--fd-rounded-md);
    background: var(--primary-container);
    color: var(--on-primary-container);
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    flex-shrink: 0;
}

.fd-file-upload-input:focus-visible + .fd-file-upload-btn {
    outline: 2px solid var(--primary);
    outline-offset: 2px;
}

.fd-file-upload-name {
    font-size: 13px;
    color: var(--on-surface-variant);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}

/* ════════════════════════════════════════════════════════════════════
   NOVO SHELL RESPONSIVO (.fd-shell-*) — Fase 0
   ════════════════════════════════════════════════════════════════════
   Substitui .fd-phone-frame/.fd-app-* (usadas só pelas 3 telas de
   protótipo layout×tema que ainda restam, até serem migradas na Fase 2)
   por UM componente único e responsivo: nav inferior fixa no mobile,
   vira sidebar fixa à esquerda no desktop — mesma estrutura, resolvida
   só por media query, sem duplicar HTML nem depender de eixo salvo.
   Ver themes/app/_app_shell.php (fonte desta marcação) e o padrão
   confirmado nos 44 mockups (sidebar sobrepõe o cabeçalho em z-index,
   conteúdo ganha padding-left equivalente).
   ════════════════════════════════════════════════════════════════════ */

.fd-shell {
    min-height: 100vh;
    background: var(--surface);
    color: var(--on-surface);
    font-family: var(--font-body);
}

/* ─── Cabeçalho ────────────────────────────────────────────────────── */
.fd-shell-header {
    position: sticky;
    top: 0;
    z-index: 40;
    height: var(--fd-shell-header-height);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--fd-stack-sm);
    padding: 0 var(--fd-margin-mobile);
    background: var(--surface-container-lowest);
    border-bottom: 1px solid var(--outline-variant);
    /* Sombra sutil (mockup: shadow-sm) — reforça a separação de fundo
       entre cabeçalho (branco) e conteúdo (--surface, um tom mais
       acinzentado/azulado), como pedido pela Cristiane. */
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.fd-shell-header-logo {
    display: flex;
    align-items: center;
    gap: var(--fd-stack-sm);
}

.fd-shell-brand-image {
    display: block;
    width: auto;
    height: 56px;
    object-fit: contain;
}

/* Selo/logo do cabeçalho mobile — mesma ideia do selo da sidebar desktop
   (.fd-shell-nav-brand-mark), só que menor pra caber nos 64px de altura
   do cabeçalho. Ainda é um ícone placeholder (Material Symbols "eco"),
   não uma imagem — trocar por <img> quando houver um logo de verdade. */
.fd-shell-header-logo-mark {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 28px;
    height: 28px;
    border-radius: var(--fd-rounded-md);
    background: var(--primary);
    color: var(--on-primary);
    font-size: 17px;
}

.fd-shell-header-logo-text {
    margin: 0;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 18px;
    color: var(--on-surface);
}

.fd-shell-header-logo-text span {
    color: var(--primary);
}

.fd-shell-header-icon-btn {
    position: relative;
    width: 40px;
    height: 40px;
    border-radius: var(--fd-rounded-full);
    background: var(--surface-container-low);
    border: 1px solid var(--outline-variant);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    flex-shrink: 0;
    text-decoration: none;
    color: var(--on-surface);
    transition: filter .15s ease;
    /* Defensivo: se a fonte de ícone ainda não carregou (ver display:block
       no link de _theme_default.php), o texto de fallback ("notifications")
       é bem mais largo que o círculo de 40px — sem isso ele vaza pro
       elemento vizinho (foi o que a Cristiane viu em 2026-08-18). */
    overflow: hidden;
}

.fd-shell-header-icon-btn .material-symbols-outlined {
    font-size: 22px;
}

.fd-shell-header-icon-btn:hover {
    filter: brightness(0.94);
}

/* Bolinha vermelha de notificação pendente (mockup dashboard_familiar_desktop). */
.fd-shell-header-badge {
    position: absolute;
    top: 8px;
    right: 8px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--error, #ba1a1a);
}

/* Busca existe apenas no cabeçalho desktop; o alternador de tema fica
   disponível em todos os tamanhos. Busca ainda é só
   visual (sem submit real) — PENDÊNCIA: ligar a uma busca de verdade
   quando existir um endpoint. */
.fd-shell-header-search {
    display: none;
}

/* Agrupa busca + sino + avatar num único item flex, sempre colado na
   borda direita do cabeçalho (margin-left: auto) — independe de haver
   ou não título/logo do lado esquerdo (mockup dashboard_familiar_desktop:
   título à esquerda, grupo de ações à direita). */
.fd-shell-header-end {
    display: flex;
    align-items: center;
    gap: var(--fd-stack-md);
    margin-left: auto;
}

.fd-shell-header-actions {
    display: flex;
    align-items: center;
    gap: var(--fd-stack-sm);
}

.fd-shell-theme-form {
    margin: 0;
}

.fd-shell-header-avatar {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    padding: 0;
    overflow: hidden;
    color: var(--on-primary-container);
    background: var(--primary-container);
    border: 2px solid var(--surface-container-high);
    border-radius: 50%;
    font-family: inherit;
    flex-shrink: 0;
    cursor: pointer;
}

.fd-shell-header-avatar .material-symbols-outlined {
    font-size: 22px;
}

.fd-shell-header-avatar:hover {
    border-color: var(--primary);
}

.fd-shell-header-avatar:focus-visible {
    outline: 3px solid color-mix(in srgb, var(--primary) 35%, transparent);
    outline-offset: 3px;
}

.fd-shell-user-avatar,
.fd-shell-user-avatar-visual {
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    overflow: hidden;
    border-radius: 50%;
}

.fd-shell-user-avatar {
    flex-shrink: 0;
    color: var(--on-primary);
    background: var(--primary);
    border: 2px solid var(--surface-container-lowest);
    box-shadow: 0 0 0 1px var(--outline-variant);
    text-decoration: none;
    font-weight: 800;
}

.fd-shell-user-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.fd-shell-user-avatar .fd-avatar-preset {
    width: 100%;
    height: 100%;
}

.fd-shell-user-avatar:hover {
    box-shadow: 0 0 0 2px var(--primary);
}

.fd-shell-user-avatar:focus-visible {
    outline: 3px solid color-mix(in srgb, var(--primary) 35%, transparent);
    outline-offset: 3px;
}

.fd-shell-search-status {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* Título da tela dentro do cabeçalho — só no desktop (mockup mostra o
   título ali, ex. "Painel Familiar"); no mobile o título continua só
   abaixo do cabeçalho, dentro do conteúdo (.fd-shell-title). */
.fd-shell-header-title {
    display: none;
}

/* ─── Título da página ─────────────────────────────────────────────── */
.fd-shell-title {
    margin: var(--fd-stack-md) var(--fd-margin-mobile) var(--fd-stack-sm);
    font-family: var(--font-heading);
    font-weight: 600;
    font-size: 22px;
    line-height: 28px;
    color: var(--on-surface);
}

/* ─── Conteúdo ─────────────────────────────────────────────────────── */
.fd-shell-content {
    padding: var(--fd-stack-md) 0 calc(var(--fd-shell-bottomnav-height) + var(--fd-stack-md));
}

.fd-shell-content > .fd-flash {
    margin: 0 var(--fd-margin-mobile) var(--fd-stack-md);
}

/* ─── Navegação (nav inferior no mobile / sidebar no desktop) ───────── */
.fd-shell-nav {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 50;
    display: flex;
    align-items: center;
    justify-content: space-around;
    height: var(--fd-shell-bottomnav-height);
    padding: 0 var(--fd-stack-sm);
    background: var(--surface-container-lowest);
    border-top: 1px solid var(--outline-variant);
    /* Sombra sutil (mockup: shadow-sm), pra cima já que a nav fica
       colada no rodapé no mobile. */
    box-shadow: 0 -1px 3px rgba(0, 0, 0, 0.06);
}

.fd-shell-nav-brand {
    display: none;
}

/* CTA "+ Novo Registro" — só existe na sidebar desktop (mockup
   dashboard_familiar_desktop); no mobile o equivalente é o
   .fd-shell-fab (botão flutuante), definido mais abaixo. Ficou
   condicional (2026-08-22, ver docblock de _app_shell.php) — só é
   desenhado no HTML quando a tela passa novoRegistroHref, então esta
   regra de "escondido no mobile" continua servindo tanto pro caso em
   que ele existe (aí ele aparece só a partir do breakpoint desktop, mais
   abaixo) quanto pro caso em que nem foi desenhado (não muda nada aqui,
   é só reforço). */
.fd-shell-cta {
    display: none;
}

/* Wrapper dos 5 itens principais — display:contents no mobile pra não
   interferir no flex direto do .fd-shell-nav (nav inferior); vira
   coluna de verdade no desktop (ver media query). */
.fd-shell-nav-items {
    display: contents;
}

/* Grupo secundário (Suporte/Sair) — só na sidebar desktop, como no
   mockup. No mobile ainda não tem slot no chrome (ver docblock de
   _app_shell.php). */
.fd-shell-nav-secondary {
    display: none;
}

.fd-shell-nav-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    width: var(--fd-touch-target);
    height: var(--fd-touch-target);
    border-radius: var(--fd-rounded-full);
    color: var(--on-surface-variant);
    text-decoration: none;
    font-size: 11px;
    font-weight: 600;
    font-family: var(--font-body);
}

.fd-shell-nav-item-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    font-size: 24px;
    border-radius: var(--fd-rounded-full);
    transition: background-color .15s ease;
}

/* Ícone preenchido no item ativo (Material Symbols suporta variação de
   fill via font-variation-settings — não é uma fonte/classe separada). */
.fd-icon-fill {
    font-variation-settings: 'FILL' 1, 'wght' 500, 'GRAD' 0, 'opsz' 24;
}

.fd-shell-nav-item:hover {
    background: var(--surface-container-high);
}

/* Ativo no mobile: pílula só atrás do ÍCONE (padrão Material 3 de nav
   inferior), não do item inteiro — era um círculo de 44x44 cobrindo
   ícone+rótulo juntos, o que ficava estranho com o texto "vazando" nas
   bordas (reportado pela Cristiane em 2026-08-18). O item em si fica
   sem fundo agora; só a cor do texto/ícone muda. No desktop (sidebar)
   isso é neutralizado abaixo — lá quem indica o item ativo é a barra
   lateral + fundo da linha inteira. */
.fd-shell-nav-item.is-active {
    color: var(--on-primary-container);
}

.fd-shell-nav-item.is-active .fd-shell-nav-item-icon {
    background: var(--primary-container);
    width: 52px;
    height: 32px;
    padding: 0;
}

@media (max-width: 767px) {
    .fd-shell-nav { justify-content: stretch; padding-inline: 4px; }
    .fd-shell-nav-item { flex: 1 1 20%; width: auto; min-width: 0; padding-inline: 2px; border-radius: 12px; font-size: 9px; line-height: 1.1; }
    .fd-shell-nav-item > span:last-child { display: block; width: 100%; overflow: hidden; text-align: center; text-overflow: ellipsis; white-space: nowrap; }
    .fd-shell-nav-item.is-active .fd-shell-nav-item-icon { width: 44px; max-width: 100%; }
}

@media (max-width: 359px) {
    .fd-shell-nav-item { font-size: 8px; }
    .fd-shell-nav-item-icon { width: 22px; height: 22px; font-size: 22px; }
}

/* Botão flutuante "Novo Registro" no mobile — sem equivalente direto
   nos mockups (o CTA de texto só existe na sidebar desktop); adaptação
   pra um FAB circular, fixo acima da nav inferior. Destino dinâmico por
   tela desde 2026-08-22 (ver docblock de _app_shell.php) — só é
   desenhado quando a tela passa novoRegistroHref. */
.fd-shell-fab {
    position: fixed;
    right: var(--fd-margin-mobile);
    bottom: calc(var(--fd-shell-bottomnav-height) + var(--fd-stack-md));
    z-index: 55;
    width: 56px;
    height: 56px;
    border-radius: var(--fd-rounded-full);
    background: var(--primary);
    color: var(--on-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
    transition: filter .15s ease;
    overflow: hidden;
}

.fd-shell-fab:hover {
    filter: brightness(0.94);
}

.fd-shell-fab .material-symbols-outlined {
    font-size: 28px;
}

/* ─── Breakpoint desktop — sidebar persistente ──────────────────────── */
@media (min-width: 768px) {
    .fd-shell-header {
        padding-left: calc(var(--fd-shell-sidebar-width) + var(--fd-margin-mobile));
    }

    /* No desktop a marca já mora na sidebar (.fd-shell-nav-brand) — o
       cabeçalho de cima vira título da tela à esquerda + barra de ações
       (busca/sino/avatar) à direita, como no mockup
       dashboard_familiar_desktop. */
    .fd-shell-header-logo {
        display: none;
    }

    .fd-shell-header-title {
        display: block;
        margin: 0;
        font-family: var(--font-heading);
        font-weight: 700;
        font-size: 22px;
        color: var(--on-surface);
    }

    .fd-shell-header-search {
        position: relative;
        display: flex;
        align-items: center;
        gap: var(--fd-stack-xs);
        width: 260px;
        padding: 8px 16px;
        border-radius: var(--fd-rounded-full);
        background: var(--surface-container-low);
        color: var(--on-surface-variant);
    }

    .fd-shell-header-search .material-symbols-outlined {
        font-size: 20px;
        flex-shrink: 0;
    }

    .fd-shell-header-search input {
        flex: 1;
        min-width: 0;
        border: none;
        outline: none;
        background: transparent;
        font-family: var(--font-body);
        font-size: 14px;
        color: var(--on-surface);
    }

    .fd-shell-header-search input::placeholder {
        color: var(--on-surface-variant);
    }

    .fd-shell-header-search button {
        display: grid;
        place-items: center;
        width: 30px;
        height: 30px;
        padding: 0;
        color: var(--on-primary);
        background: var(--primary);
        border: 0;
        border-radius: 50%;
        cursor: pointer;
    }

    .fd-shell-header-search button:hover {
        filter: brightness(.94);
    }

    .fd-shell-header-search button:focus-visible,
    .fd-shell-header-search input:focus-visible {
        outline: 3px solid color-mix(in srgb, var(--primary) 35%, transparent);
        outline-offset: 2px;
    }

    .fd-shell-content {
        padding-left: var(--fd-shell-sidebar-width);
        padding-bottom: var(--fd-stack-lg);
        max-width: 1200px;
        /* Centraliza em telas bem largas (a Cristiane reportou em
           2026-08-22: numa janela grande o conteúdo ficava colado à
           esquerda, sobrando um vão vazio enorme à direita). Como
           box-sizing é border-box, o `max-width` acima já inclui o
           `padding-left` (que reserva exatamente a largura da sidebar,
           --fd-shell-sidebar-width) — então centralizar essa caixa
           INTEIRA (padding incluso) dentro da viewport inteira, via
           `margin: 0 auto`, resulta em dois vãos iguais: um entre a
           borda direita da sidebar e o início do conteúdo visível, e
           outro entre o fim do conteúdo e a borda direita da tela — sem
           precisar calcular a largura da sidebar separadamente. Em
           janelas mais estreitas que ~1460px (1200 + largura da
           sidebar), a caixa já ocupa 100% do espaço disponível e o
           `margin: auto` não tem efeito nenhum (sem vão sobrando pra
           distribuir) — comportamento igual ao de antes. */
        margin: 0 auto;
    }

    /* O título já aparece no cabeçalho (.fd-shell-header-title) a partir
       daqui — some da posição abaixo do cabeçalho pra não duplicar. */
    .fd-shell-title {
        display: none;
    }

    /* Sidebar cobre o cabeçalho em z-index (mesmo padrão dos 44
       mockups) — por isso tem fundo opaco e span da altura toda. Fundo
       surface-container-low (cinza claro), igual ao mockup
       dashboard_familiar_desktop — não é o mesmo branco do cabeçalho. */
    .fd-shell-nav {
        top: 0;
        right: auto;
        bottom: 0;
        width: var(--fd-shell-sidebar-width);
        height: 100vh;
        flex-direction: column;
        align-items: stretch;
        justify-content: flex-start;
        gap: var(--fd-stack-sm);
        padding: var(--fd-stack-lg) var(--fd-stack-md);
        background: var(--surface-container-low);
        border-top: none;
        border-right: 1px solid var(--outline-variant);
        /* Sombra pra direita (mockup: shadow-sm) — no mobile a nav é
           sombreada pra cima (base da regra); no desktop ela vira
           sidebar à esquerda, então a sombra acompanha o lado do
           conteúdo. */
        box-shadow: 1px 0 3px rgba(0, 0, 0, 0.05);
    }

    /* Marca (ícone + nome) + separador antes da lista de itens — pedido
       pela Cristiane em 2026-08-18. O ícone é um selo simples (cor
       primária) usando a mesma fonte Material Symbols do resto do app,
       não uma imagem — ainda não existe um arquivo de logo de verdade;
       trocar por <img> aqui quando houver um. */
    .fd-shell-nav-brand {
        display: flex;
        align-items: center;
        gap: var(--fd-stack-sm);
        margin: 0 var(--fd-stack-sm) var(--fd-stack-md);
        padding-bottom: var(--fd-stack-md);
        border-bottom: 1px solid var(--outline-variant);
    }

    .fd-shell-nav-brand .fd-shell-brand-image {
        width: 185px;
        max-width: 100%;
        height: auto;
    }

    .fd-shell-nav-brand-mark {
        display: flex;
        align-items: center;
        justify-content: center;
        flex-shrink: 0;
        width: 32px;
        height: 32px;
        border-radius: var(--fd-rounded-md);
        background: var(--primary);
        color: var(--on-primary);
        font-size: 20px;
    }

    .fd-shell-nav-brand-text {
        margin: 0;
        font-family: var(--font-heading);
        font-weight: 700;
        font-size: 18px;
        color: var(--on-surface);
    }

    .fd-shell-nav-brand-text span {
        color: var(--primary);
    }

    /* CTA "+ Novo Registro" — pílula logo acima de Suporte/Sair, no
       rodapé da sidebar (reposicionado a pedido da Cristiane em
       2026-08-18; no mockup original ficava no topo). margin-top: auto
       empurra ela — e tudo que vem depois — pro fim da coluna; por isso
       .fd-shell-nav-secondary não precisa mais do próprio auto-margin.
       No mobile quem cobre esse papel é o .fd-shell-fab (escondido
       aqui). */
    .fd-shell-cta {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: var(--fd-stack-xs);
        width: 100%;
        padding: var(--fd-stack-sm) var(--fd-stack-md);
        margin: auto 0 0;
        border-radius: var(--fd-rounded-full);
        background: var(--primary);
        color: var(--on-primary);
        font-family: var(--font-body);
        font-weight: 600;
        font-size: 14px;
        text-decoration: none;
        transition: filter .15s ease;
    }

    .fd-shell-cta:hover {
        filter: brightness(0.94);
    }

    .fd-shell-cta .material-symbols-outlined {
        font-size: 20px;
    }

    .fd-shell-nav-items {
        display: flex;
        flex-direction: column;
        gap: var(--fd-stack-sm);
        width: 100%;
    }

    /* Suporte/Sair — logo abaixo do CTA (que carrega o margin-top:auto
       que empurra os dois pro rodapé da sidebar). Sem borda separando
       do CTA — ele agora faz parte do mesmo grupo visual do rodapé. */
    /* Separador entre o CTA e Suporte/Sair, a pedido da Cristiane —
       volta a existir aqui (tinha sido tirado quando o CTA ainda ficava
       longe, no topo da sidebar; agora que ele fica logo acima faz
       sentido separar visualmente os dois grupos). */
    .fd-shell-nav-secondary {
        display: flex;
        flex-direction: column;
        gap: var(--fd-stack-sm);
        width: 100%;
        padding-top: var(--fd-stack-md);
        border-top: 1px solid var(--outline-variant);
    }

    /* CTA ficou dinâmico (2026-08-22, ver docblock de _app_shell.php) —
       em telas que não passam novoRegistroHref, .fd-shell-cta nem é
       desenhado, então .fd-shell-nav-secondary perde o empurrão pro
       rodapé que ganhava de graça (margin-top:auto do CTA arrastava os
       dois juntos). Este seletor de irmão adjacente cobre exatamente
       esse caso — só vale quando .fd-shell-nav-secondary vem
       IMEDIATAMENTE depois de .fd-shell-nav-items (ou seja, sem o CTA
       entre os dois). Quando o CTA existe, ele continua sendo quem
       empurra (regra dele, acima) e este seletor não bate. */
    .fd-shell-nav-items + .fd-shell-nav-secondary {
        margin-top: auto;
    }

    .fd-shell-nav-item {
        flex-direction: row;
        justify-content: flex-start;
        width: 100%;
        height: auto;
        padding: var(--fd-stack-sm) var(--fd-stack-md);
        border-radius: var(--fd-rounded-md);
        gap: var(--fd-stack-sm);
        font-size: 14px;
    }

    .fd-shell-nav-item-icon {
        font-size: 24px;
    }

    /* Item ativo na sidebar — destaque sutil (fundo + texto na cor
       primária + barra à direita), igual ao mockup
       dashboard_familiar_desktop. Diferente do mobile (nav inferior),
       que usa a pílula cheia .fd-shell-nav-item.is-active definida lá
       em cima — aqui essa regra é sobrescrita só a partir deste
       breakpoint. */
    .fd-shell-nav-item.is-active {
        background: var(--surface-container-highest);
        color: var(--primary);
        font-weight: 700;
        border-right: 4px solid var(--primary);
        padding-right: calc(var(--fd-stack-md) - 4px);
    }

    /* Neutraliza a pílula do ícone (regra pensada pra nav inferior do
       mobile) — no desktop quem indica o item ativo é a linha inteira
       acima. */
    .fd-shell-nav-item.is-active .fd-shell-nav-item-icon {
        background: none;
        width: 24px;
        height: 24px;
        padding: 0;
    }

    /* FAB é só recurso mobile — na sidebar desktop o mesmo papel é
       coberto pelo .fd-shell-cta acima. */
    .fd-shell-fab {
        display: none;
    }
}

/* ════════════════════════════════════════════════════════════════════
   ESTADOS GLOBAIS — carregamento (skeleton) e erro — Fase 0
   ════════════════════════════════════════════════════════════════════
   Partials reaproveitáveis: themes/app/_estado_carregamento.php e
   themes/app/_estado_erro.php. Baseados em carregamento_skeleton_revisado
   e erro_de_carregamento_revisado (Novos designers).
   ════════════════════════════════════════════════════════════════════ */

.fd-skeleton-block {
    background: linear-gradient(
        90deg,
        var(--surface-container) 25%,
        var(--surface-container-high) 37%,
        var(--surface-container) 63%
    );
    background-size: 400% 100%;
    animation: fd-skeleton-pulse 1.4s ease infinite;
    border-radius: var(--fd-rounded-md);
}

@keyframes fd-skeleton-pulse {
    0% { background-position: 100% 50%; }
    100% { background-position: 0 50%; }
}

.fd-skeleton-header {
    height: 40px;
    width: 60%;
    margin: 0 var(--fd-margin-mobile) var(--fd-stack-md);
}

.fd-skeleton-card {
    height: 96px;
    margin: 0 var(--fd-margin-mobile) var(--fd-stack-sm);
}

.fd-skeleton-line {
    height: 14px;
    margin: 0 var(--fd-margin-mobile) var(--fd-stack-sm);
}

.fd-skeleton-line--short {
    width: 40%;
}

.fd-estado-erro {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    gap: var(--fd-stack-sm);
    padding: var(--fd-stack-lg) var(--fd-margin-mobile);
    min-height: 60vh;
}

.fd-estado-erro-icone {
    font-size: 48px;
    line-height: 1;
    margin-bottom: var(--fd-stack-sm);
}

.fd-estado-erro-titulo {
    margin: 0;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 20px;
    color: var(--on-surface);
}

.fd-estado-erro-texto {
    margin: 0;
    font-size: 14px;
    color: var(--on-surface-variant);
    max-width: 320px;
}

.fd-estado-erro-acao {
    margin-top: var(--fd-stack-md);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: var(--fd-touch-target);
    padding: 0 var(--fd-stack-lg);
    border-radius: var(--fd-rounded-full);
    background: var(--primary);
    color: var(--on-primary);
    font-weight: 700;
    font-size: 14px;
    text-decoration: none;
    border: none;
    cursor: pointer;
}

.fd-estado-erro-acao:hover {
    filter: brightness(0.93);
}

.fd-shell-content--sem-nav {
    padding-bottom: var(--fd-stack-md);
}

@media (min-width: 768px) {
    .fd-shell-content--sem-nav {
        padding-left: 0;
    }
}

/* .fd-app (max-width 420px, moldura de protótipo) só faz sentido pras
   3 telas de protótipo remanescentes (que ainda montam .fd-phone-frame
   diretamente). Quando o conteúdo é o novo shell (.fd-shell), a
   restrição de largura sai — .fd-shell já é responsivo por conta
   própria (mobile full-width, sidebar >=768px). */
.fd-app:has(.fd-shell) {
    max-width: none;
    margin: 0;
    padding: 0;
}

.fd-app:has(.fd-welcome-page) {
    max-width: none;
    margin: 0;
    padding: 0;
}

/* ════════════════════════════════════════════════════════════════════
   AUTH 2 — boas-vindas / cadastro / login / onboarding (2026-08-19)
   ════════════════════════════════════════════════════════════════════
   Redesenho das telas pré-login a partir dos mockups "Novos designers/
   boas_vindas_revisado_passo_1", "criar_conta_revisado",
   "escolha_de_uso_revisado", "cadastro_de_estudante_revisado" e
   "confirma_o_de_cadastro_revisado" — ver
   [[project-facilita-desenvolve-migracao-visual-novos-designers]].

   Camada NOVA e paralela a .fd-phone-frame/.fd-auth-hero/.fd-form-card
   (que continuam existindo — ainda usados por outras telas fora desta
   fase, ex.: cursos_formulario.php, config.php). Prefixo `.fd-auth2-`
   pra não colidir com nada existente. Só usa os tokens `--primary` /
   `--surface-*` / `--on-*` (tema fixo Crescimento Calmo nestas telas —
   ver AppAuth::contextoFixo()).

   Mudança de padrão vs. a Rodada 5 anterior (ver docblock antigo de
   _auth_apresentacao.php, agora marcado como não usado): antes, TODA
   tela pré-login repetia a faixa de hero + trilha de crescimento. Os
   mockups desta fase não fazem isso — só "Boas-vindas" tem hero/
   ilustração; cadastro/login/onboarding são cards compactos e
   focados, com um ícone pequeno no lugar da faixa cheia.

   Sem asset de ilustração 3D real (os mockups usam imagens geradas,
   não existe arquivo no projeto) — substituída por composição em CSS
   (blobs desfocados + ícone grande), mesmo raciocínio do selo "eco"
   já usado como placeholder de logo na Fase 1.
   ════════════════════════════════════════════════════════════════════ */

.fd-auth2-page {
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--fd-gutter);
    background: var(--surface);
}

@media (min-width: 768px) {
    .fd-auth2-page {
        padding: var(--fd-stack-lg);
    }
}

.fd-auth2-card {
    width: 100%;
    max-width: 420px;
    background: var(--surface-container-lowest);
    border: 1px solid var(--surface-container-highest);
    border-radius: var(--fd-rounded-lg);
    box-shadow: 0 4px 20px -4px rgba(0, 32, 27, 0.08);
    padding: var(--fd-stack-lg);
}

.fd-auth2-header {
    text-align: center;
    margin-bottom: var(--fd-stack-lg);
}

.fd-auth2-icon {
    width: 64px;
    height: 64px;
    margin: 0 auto var(--fd-stack-md);
    border-radius: var(--fd-rounded-lg);
    background: var(--primary-container);
    color: var(--on-primary-container);
    display: flex;
    align-items: center;
    justify-content: center;
}

.fd-auth2-icon .material-symbols-outlined {
    font-size: 30px;
}

.fd-auth2-title {
    margin: 0;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 24px;
    line-height: 32px;
    color: var(--primary);
}

.fd-auth2-subtitle {
    margin: var(--fd-unit) 0 0;
    font-family: var(--font-body);
    font-size: 16px;
    line-height: 24px;
    font-weight: 500;
    color: var(--on-surface-variant);
}

.fd-convite-pessoa-cuidada {
    display: inline-flex;
    align-items: center;
    margin: 0 2px;
    padding: 2px 9px;
    border-radius: 999px;
    background: var(--primary-container);
    color: var(--on-primary-container);
    font-family: var(--font-heading);
    font-weight: 800;
    line-height: 20px;
}

/* ─── Convite — contexto do app (2026-08-22) ─────────────────────────
   A Cristiane reportou que a tela de convite genérico (auth_convite_
   aceitar.php, bloco `else`) não trazia nenhuma informação sobre o
   app em si, só "Fulano te convidou" — quem nunca usou o Facilita
   Desenvolve não tinha contexto pra decidir se aceita. Este bloco
   mora ENTRE o cabeçalho e o formulário: uma faixa com a marca do
   app (mesmo selo "eco" de auth_boas_vindas.php/sidebar) + a mesma
   tagline da splash, seguida de uma mini "trilha" vertical com 3
   coisas reais que aceitar desbloqueia — ícones conectados por linha,
   mesma linguagem visual da trilha de crescimento aprovada em
   2026-08-09 (ver docblock do arquivo .php), só que compacta o
   bastante pra caber dentro do card .fd-auth2-card em vez de uma
   faixa cheia de página. */
.fd-convite-contexto {
    background: var(--surface-container-low);
    border: 1px solid var(--surface-container-highest);
    border-radius: var(--fd-rounded-md);
    padding: var(--fd-stack-md);
    margin-bottom: var(--fd-stack-lg);
}

.fd-convite-contexto-marca {
    display: flex;
    align-items: center;
    gap: var(--fd-stack-sm);
    padding-bottom: var(--fd-stack-sm);
    margin-bottom: var(--fd-stack-sm);
    border-bottom: 1px solid var(--outline-variant);
}

.fd-convite-contexto-selo {
    width: 40px;
    height: 40px;
    flex-shrink: 0;
    border-radius: var(--fd-rounded);
    background: var(--primary);
    color: var(--on-primary);
    display: flex;
    align-items: center;
    justify-content: center;
}

.fd-convite-contexto-selo .material-symbols-outlined {
    font-size: 22px;
}

.fd-convite-contexto-nome {
    margin: 0;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 15px;
    line-height: 20px;
    color: var(--on-surface);
}

.fd-convite-contexto-tagline {
    margin: 2px 0 0;
    font-family: var(--font-body);
    font-size: 12px;
    line-height: 16px;
    color: var(--on-surface-variant);
}

/* Aviso "em construção" (tipos de vínculo sem módulo de verdade ainda —
   Prestador de Serviço/Saúde de um Familiar, ver docblock do .php) —
   mesma paleta de .fd-status-badge--aguardando (2026-08-11), reaproveita
   o par de cor já usado pra "pendente" em vez de inventar token novo. */
.fd-convite-contexto-em-construcao {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 0 0 var(--fd-stack-sm);
    padding: 8px 10px;
    background: #FEF3C7;
    color: #92400E;
    border: 1px solid #F3E3BE;
    border-radius: var(--fd-rounded);
    font-family: var(--font-body);
    font-size: 12px;
    line-height: 16px;
    font-weight: 700;
}

.fd-convite-contexto-em-construcao .material-symbols-outlined {
    font-size: 16px;
    flex-shrink: 0;
}

.fd-convite-beneficios {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
}

.fd-convite-beneficios li {
    display: flex;
    align-items: flex-start;
    gap: var(--fd-stack-sm);
    padding-bottom: var(--fd-stack-sm);
    position: relative;
}

.fd-convite-beneficios li:last-child {
    padding-bottom: 0;
}

/* Linha conectando os ícones — a mesma trilha, só vertical e compacta
   o bastante pra caber dentro do card. */
.fd-convite-beneficios li:not(:last-child)::before {
    content: "";
    position: absolute;
    left: 13px;
    top: 28px;
    bottom: -2px;
    width: 2px;
    background: var(--outline-variant);
}

.fd-convite-beneficios-icone {
    width: 28px;
    height: 28px;
    flex-shrink: 0;
    border-radius: var(--fd-rounded-full);
    background: var(--primary-container);
    color: var(--on-primary-container);
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    z-index: 1;
}

.fd-convite-beneficios-icone .material-symbols-outlined {
    font-size: 16px;
}

.fd-convite-beneficios li p {
    margin: 4px 0 0;
    font-family: var(--font-body);
    font-size: 13px;
    line-height: 18px;
    color: var(--on-surface-variant);
}

.fd-auth2-form {
    display: flex;
    flex-direction: column;
    gap: var(--fd-stack-md);
}

.fd-auth2-field {
    display: flex;
    flex-direction: column;
    gap: var(--fd-unit);
}

.fd-auth2-label {
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 14px;
    line-height: 20px;
    color: var(--on-surface);
}

.fd-auth2-input-wrap {
    position: relative;
    display: flex;
    align-items: center;
}

.fd-auth2-input-wrap .fd-auth2-input-icon {
    position: absolute;
    left: 16px;
    color: var(--on-surface-variant);
    pointer-events: none;
    font-size: 22px;
}

.fd-auth2-input {
    width: 100%;
    height: 48px;
    padding: 0 16px 0 46px;
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded);
    background: var(--surface-container-low);
    font-family: var(--font-body);
    font-size: 16px;
    color: var(--on-surface);
    transition: box-shadow 0.2s ease, border-color 0.2s ease;
}

.fd-auth2-input::placeholder {
    color: var(--outline);
}

.fd-auth2-input:focus {
    outline: none;
    border-color: var(--primary);
    background: var(--surface-container-lowest);
    box-shadow: 0 0 0 4px rgba(0, 107, 93, 0.12);
}

.fd-auth2-input-wrap .fd-toggle-senha {
    position: absolute;
    right: 12px;
    background: none;
    border: none;
    padding: 6px;
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
    color: var(--on-surface-variant);
    border-radius: var(--fd-rounded-sm);
}

.fd-auth2-input-wrap .fd-toggle-senha:hover {
    color: var(--primary);
}

.fd-auth2-select {
    width: 100%;
    height: 48px;
    padding: 0 16px 0 46px;
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded);
    background: var(--surface-container-low);
    font-family: var(--font-body);
    font-size: 16px;
    color: var(--on-surface);
    appearance: none;
    -webkit-appearance: none;
}

.fd-auth2-select-arrow {
    position: absolute;
    right: 16px;
    color: var(--outline);
    pointer-events: none;
}

.fd-auth2-hint {
    margin: 0;
    font-size: 13px;
    color: var(--on-surface-variant);
}

.fd-auth2-checkbox-row {
    display: flex;
    align-items: flex-start;
    gap: var(--fd-stack-sm);
}

.fd-auth2-checkbox-row input[type="checkbox"] {
    width: 20px;
    height: 20px;
    margin-top: 2px;
    accent-color: var(--primary);
    flex-shrink: 0;
}

.fd-auth2-checkbox-row label {
    font-family: var(--font-body);
    font-size: 15px;
    line-height: 22px;
    color: var(--on-surface-variant);
}

.fd-auth2-link {
    color: var(--primary);
    font-weight: 700;
    text-decoration: none;
}

.fd-auth2-link:hover {
    text-decoration: underline;
}

.fd-auth2-btn-primary {
    width: 100%;
    height: 48px;
    margin-top: var(--fd-stack-sm);
    border: none;
    border-radius: var(--fd-rounded);
    background: var(--primary);
    color: var(--on-primary);
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--fd-stack-sm);
    cursor: pointer;
    transition: filter 0.15s ease, transform 0.1s ease;
}

.fd-auth2-btn-primary .material-symbols-outlined {
    font-size: 20px;
}

.fd-auth2-btn-primary:hover {
    filter: brightness(0.94);
}

.fd-auth2-btn-primary:active {
    transform: scale(0.98);
}

.fd-auth2-btn-primary:disabled {
    background: var(--surface-container-highest);
    color: var(--on-surface-variant);
    cursor: not-allowed;
    opacity: 0.8;
}

.fd-auth2-btn-secondary {
    width: 100%;
    height: 48px;
    border: 1px solid var(--outline);
    border-radius: var(--fd-rounded);
    background: transparent;
    color: var(--primary);
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--fd-stack-sm);
    cursor: pointer;
    text-decoration: none;
}

.fd-auth2-btn-secondary:hover {
    background: var(--surface-container-low);
}

.fd-auth2-footer {
    margin-top: var(--fd-stack-lg);
    text-align: center;
    font-family: var(--font-body);
    font-size: 15px;
    color: var(--on-surface-variant);
}

/* Separador entre 2 forms no mesmo card (ver auth_convite_aceitar.php:
   "cadastrar e aceitar" vs. "entrar e aceitar"). */
.fd-auth2-divider {
    display: flex;
    align-items: center;
    gap: var(--fd-stack-sm);
    margin: var(--fd-stack-lg) 0;
    color: var(--on-surface-variant);
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.fd-auth2-divider::before,
.fd-auth2-divider::after {
    content: "";
    flex: 1;
    height: 1px;
    background: var(--outline-variant);
}

.fd-auth2-back {
    position: absolute;
    top: var(--fd-stack-md);
    left: var(--fd-stack-md);
    width: var(--fd-touch-target);
    height: var(--fd-touch-target);
    border-radius: var(--fd-rounded-full);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--on-surface-variant);
    text-decoration: none;
}

.fd-auth2-back:hover {
    background: var(--surface-container-low);
}

/* ─── Boas-vindas (splash) ─────────────────────────────────────────── */

.fd-welcome-page {
    position: relative;
    box-sizing: border-box;
    width: 100%;
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    padding: var(--fd-margin-mobile);
    background: var(--surface);
}

.fd-welcome-blob {
    position: absolute;
    width: 320px;
    height: 320px;
    border-radius: 50%;
    filter: blur(70px);
    opacity: 0.25;
    z-index: 0;
}

.fd-welcome-blob--1 {
    top: -120px;
    left: -120px;
    background: var(--primary-container);
}

.fd-welcome-blob--2 {
    bottom: -120px;
    right: -120px;
    background: var(--secondary-container);
}

.fd-welcome-content {
    position: relative;
    z-index: 1;
    width: 100%;
    max-width: 380px;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.fd-welcome-steps {
    display: flex;
    gap: 6px;
    margin-bottom: var(--fd-stack-lg);
}

.fd-welcome-steps span {
    height: 6px;
    width: 6px;
    border-radius: var(--fd-rounded-full);
    background: var(--surface-container-highest);
}

.fd-welcome-steps span.is-active {
    width: 28px;
    background: var(--primary);
}

.fd-welcome-mark {
    width: 88px;
    height: 88px;
    border-radius: var(--fd-rounded-lg);
    background: var(--primary-container);
    color: var(--on-primary-container);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: var(--fd-stack-md);
    box-shadow: 0 8px 20px -6px rgba(0, 107, 93, 0.25);
}

.fd-welcome-mark .material-symbols-outlined {
    font-size: 44px;
}

.fd-welcome-title {
    margin: 0 0 var(--fd-stack-sm);
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 34px;
    line-height: 42px;
    letter-spacing: -0.01em;
    color: var(--primary);
}

.fd-welcome-logo-image {
    display: block;
    width: min(310px, 82vw);
    height: auto;
    margin: 0 auto;
}

.fd-welcome-tagline {
    margin: 0;
    font-family: var(--font-heading);
    font-weight: 600;
    font-size: 22px;
    line-height: 28px;
    color: var(--secondary);
}

.fd-welcome-illustration {
    width: 100%;
    aspect-ratio: 1 / 1;
    max-width: 280px;
    margin: var(--fd-stack-lg) 0;
    border-radius: var(--fd-rounded-lg);
    background: linear-gradient(160deg, var(--primary-container) 0%, var(--secondary-container) 100%);
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 8px 32px rgba(0, 32, 27, 0.08);
}

.fd-welcome-illustration .material-symbols-outlined {
    font-size: 96px;
    color: var(--on-primary-container);
    opacity: 0.9;
}

.fd-welcome-desc {
    margin: 0 0 var(--fd-stack-lg);
    font-family: var(--font-body);
    font-size: 18px;
    line-height: 28px;
    color: var(--on-surface-variant);
}

.fd-welcome-actions {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: var(--fd-stack-md);
}

.fd-welcome-actions .fd-auth2-btn-primary,
.fd-welcome-actions .fd-auth2-btn-secondary {
    box-sizing: border-box;
    height: 48px;
    margin: 0;
}

@media (min-width: 900px) {
    .fd-welcome-page {
        padding: clamp(40px, 6vw, 88px);
    }

    .fd-welcome-content {
        max-width: 1120px;
        min-height: min(680px, calc(100dvh - 96px));
        display: grid;
        grid-template-columns: minmax(420px, 1fr) minmax(340px, 440px);
        grid-template-areas:
            "steps visual"
            "title visual"
            "tagline visual"
            "description visual"
            "actions visual";
        column-gap: clamp(64px, 9vw, 140px);
        align-content: center;
        align-items: center;
        text-align: left;
    }

    .fd-welcome-steps {
        grid-area: steps;
        justify-self: start;
        margin-bottom: 32px;
    }

    .fd-welcome-title {
        grid-area: title;
        margin-bottom: 20px;
    }

    .fd-welcome-logo-image {
        width: min(390px, 34vw);
        margin: 0;
    }

    .fd-welcome-tagline {
        grid-area: tagline;
        max-width: 520px;
        font-size: clamp(28px, 3vw, 42px);
        line-height: 1.14;
        letter-spacing: -0.025em;
    }

    .fd-welcome-illustration {
        grid-area: visual;
        width: 100%;
        max-width: 440px;
        margin: 0;
        justify-self: end;
        border-radius: 40px;
    }

    .fd-welcome-illustration .material-symbols-outlined {
        font-size: 132px;
    }

    .fd-welcome-desc {
        grid-area: description;
        max-width: 620px;
        margin: 24px 0 32px;
        font-size: 19px;
        line-height: 30px;
    }

    .fd-welcome-actions {
        grid-area: actions;
        max-width: 560px;
        flex-direction: row;
    }

    .fd-welcome-actions > a {
        flex: 1;
    }
}

/* ─── Escolha de uso (onboarding, passo 1) ────────────────────────── */

.fd-choice-topbar {
    display: flex;
    align-items: center;
    gap: var(--fd-stack-md);
    margin-bottom: var(--fd-stack-lg);
}

.fd-choice-progress-track {
    flex: 1;
    height: 8px;
    border-radius: var(--fd-rounded-full);
    background: var(--surface-container-high);
    overflow: hidden;
}

.fd-choice-progress-fill {
    height: 100%;
    border-radius: var(--fd-rounded-full);
    background: var(--primary-container);
}

.fd-choice-step-label {
    display: block;
    font-size: 12px;
    font-weight: 700;
    color: var(--on-surface-variant);
    text-align: center;
    margin-bottom: 4px;
}

.fd-choice-list {
    display: flex;
    flex-direction: column;
    gap: var(--fd-stack-md);
}

.fd-choice-card {
    position: relative;
    display: block;
    cursor: pointer;
}

.fd-choice-card input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.fd-choice-card-body {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--fd-stack-sm);
    padding: var(--fd-stack-lg);
    border-radius: var(--fd-rounded-lg);
    border: 2px solid var(--surface-container-high);
    background: var(--surface-container-lowest);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
    transition: border-color 0.2s ease, background 0.2s ease;
}

.fd-choice-card:has(input:checked) .fd-choice-card-body {
    border-color: var(--primary);
    background: color-mix(in srgb, var(--primary-container) 12%, var(--surface-container-lowest));
}

.fd-choice-icon {
    width: 48px;
    height: 48px;
    border-radius: var(--fd-rounded);
    background: var(--secondary-container);
    color: var(--on-secondary-container);
    display: flex;
    align-items: center;
    justify-content: center;
}

.fd-choice-card:has(input:checked) .fd-choice-icon {
    background: var(--primary-container);
    color: var(--on-primary-container);
}

.fd-choice-title {
    margin: 0;
    font-family: var(--font-heading);
    font-weight: 600;
    font-size: 20px;
    line-height: 26px;
    color: var(--on-surface);
}

.fd-choice-desc {
    margin: 0;
    font-family: var(--font-body);
    font-size: 15px;
    line-height: 22px;
    color: var(--on-surface-variant);
}

.fd-choice-check {
    position: absolute;
    top: var(--fd-stack-lg);
    right: var(--fd-stack-lg);
    width: 24px;
    height: 24px;
    border-radius: var(--fd-rounded-full);
    border: 2px solid var(--outline-variant);
    display: flex;
    align-items: center;
    justify-content: center;
    color: transparent;
}

.fd-choice-card:has(input:checked) .fd-choice-check {
    border-color: var(--primary);
    background: var(--primary);
    color: var(--on-primary);
}

.fd-choice-check .material-symbols-outlined {
    font-size: 16px;
}

/* ─── Cadastro de estudante (avatar preset + form) ────────────────── */

.fd-avatar-picker {
    display: flex;
    gap: var(--fd-stack-md);
    flex-wrap: wrap;
}

.fd-avatar-option {
    position: relative;
    display: block;
    cursor: pointer;
    border-radius: var(--fd-rounded-full);
    padding: 3px;
    border: 2px solid transparent;
}

.fd-avatar-option input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.fd-avatar-option:has(input:checked) {
    border-color: var(--primary);
}

.fd-avatar-preset {
    width: 60px;
    height: 60px;
    border-radius: var(--fd-rounded-full);
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 22px;
    line-height: 1;
}

.fd-avatar-preset .material-symbols-outlined {
    font-size: 28px;
}

.fd-avatar-preset--tertiary {
    background: var(--tertiary-container);
    color: var(--on-tertiary-container);
}

.fd-avatar-preset--primary {
    background: var(--primary-container);
    color: var(--on-primary-container);
}

.fd-avatar-preset--secondary {
    background: var(--secondary-container);
    color: var(--on-secondary-container);
}

.fd-avatar-preset--neutro {
    background: var(--surface-container-high);
    color: var(--on-surface-variant);
}

/* Tamanho menor pra uso fora do seletor (linha de pessoa em config.php,
   card de confirmação) — mesma classe base .fd-avatar-preset, só
   sobrescreve o tamanho com um modificador. */
.fd-avatar-preset--sm {
    width: 48px;
    height: 48px;
}

.fd-avatar-preset--sm .material-symbols-outlined {
    font-size: 22px;
}

/* Tamanho pra dentro de pílulas de filtro (20px, ver
   .fd-cursos-filtro-avatar) — caminho de preset de avatar_pessoa_html()
   em Boot/Helpers.php. */
.fd-avatar-preset--xs {
    width: 26px;
    height: 26px;
}

.fd-avatar-preset--xs .material-symbols-outlined {
    font-size: 15px;
}

.fd-avatar-preset--lg {
    width: 80px;
    height: 80px;
}

.fd-avatar-preset--lg .material-symbols-outlined {
    font-size: 38px;
}

/* ─── Confirmação ("Tudo pronto!") ─────────────────────────────────── */

.fd-confirm-page {
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: var(--fd-margin-mobile);
    background: var(--surface);
}

.fd-confirm-content {
    width: 100%;
    max-width: 380px;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.fd-confirm-icon {
    width: 80px;
    height: 80px;
    border-radius: var(--fd-rounded-full);
    background: var(--primary);
    color: var(--on-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: var(--fd-stack-lg);
    box-shadow: 0 8px 16px rgba(0, 107, 93, 0.2);
}

.fd-confirm-icon .material-symbols-outlined {
    font-size: 44px;
}

.fd-confirm-title {
    margin: 0 0 var(--fd-stack-sm);
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 34px;
    line-height: 42px;
    letter-spacing: -0.01em;
    color: var(--primary);
}

.fd-confirm-desc {
    margin: 0 0 var(--fd-stack-lg);
    font-family: var(--font-body);
    font-size: 18px;
    line-height: 28px;
    color: var(--secondary);
}

.fd-confirm-card {
    width: 100%;
    background: var(--surface-container-lowest);
    border: 1px solid var(--surface-container-highest);
    border-radius: var(--fd-rounded-lg);
    padding: var(--fd-stack-lg);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--fd-stack-sm);
    margin-bottom: var(--fd-stack-lg);
    box-shadow: 0 4px 12px rgba(23, 43, 58, 0.05);
}

.fd-confirm-name {
    margin: 0;
    font-family: var(--font-heading);
    font-weight: 600;
    font-size: 22px;
    color: var(--on-surface);
}

.fd-confirm-badge {
    display: inline-flex;
    align-items: center;
    gap: var(--fd-unit);
    padding: 4px 12px;
    border-radius: var(--fd-rounded-full);
    background: var(--surface-container-low);
    color: var(--secondary);
    font-size: 12px;
    font-weight: 700;
}

.fd-confirm-badge .material-symbols-outlined {
    font-size: 16px;
}

.fd-confirm-actions {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: var(--fd-stack-sm);
}

.fd-confirm-actions .fd-auth2-btn-primary,
.fd-confirm-actions .fd-auth2-btn-secondary {
    border-radius: var(--fd-rounded-full);
}

/* ─── Card de pessoa (config.php — vínculos, "só visual") ─────────── */

.fd-pessoa-card {
    display: flex;
    align-items: center;
    gap: var(--fd-stack-md);
}

.fd-pessoa-card-info {
    flex: 1;
    min-width: 0;
}

.fd-pessoa-card-nome {
    margin: 0;
}

.fd-pessoa-card-chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-top: 4px;
    padding: 2px 10px;
    border-radius: var(--fd-rounded-full);
    background: var(--surface-container-low);
    color: var(--on-surface-variant);
    font-size: 12px;
    font-weight: 700;
}

/* ════════════════════════════════════════════════════════════════════
   TERMOS / PRIVACIDADE + link de "reivindicar" perfil (2026-08-20)
   ════════════════════════════════════════════════════════════════════ */

/* Variante mais larga do card de auth pra texto corrido (Termos de Uso
   e Política de Privacidade) — mesmo fundo/página de .fd-auth2-page,
   só o card muda de largura máxima pra ficar confortável de ler. */
.fd-auth2-card--legal {
    max-width: 680px;
    text-align: left;
}

.fd-legal-updated {
    margin: 0 0 var(--fd-stack-lg);
    font-size: 13px;
    color: var(--on-surface-variant);
}

.fd-legal-content h2 {
    margin: var(--fd-stack-lg) 0 var(--fd-stack-sm);
    font-family: var(--font-heading);
    font-size: 18px;
    color: var(--primary);
}

.fd-legal-content h2:first-child {
    margin-top: 0;
}

.fd-legal-content p,
.fd-legal-content li {
    font-family: var(--font-body);
    font-size: 15px;
    line-height: 24px;
    color: var(--on-surface);
    margin: 0 0 var(--fd-stack-sm);
}

.fd-legal-content ul {
    margin: 0 0 var(--fd-stack-sm);
    padding-left: 20px;
}

.fd-legal-note {
    margin-top: var(--fd-stack-lg);
    padding: var(--fd-stack-sm) var(--fd-stack-md);
    border-radius: var(--fd-rounded-md);
    background: var(--surface-container-low);
    font-size: 13px;
    line-height: 20px;
    color: var(--on-surface-variant);
}

.fd-legal-footer {
    margin-top: var(--fd-stack-lg);
    text-align: center;
}

/* Botão "Gerar link de acesso" no card de estudante gerenciado (ver
   config.php) — visualmente mais discreto que "Desvincular", que fica
   ao lado. */
.fd-pessoa-card-reivindicar {
    margin-top: 6px;
}

.fd-pessoa-card-reivindicar button {
    background: none;
    border: none;
    padding: 0;
    font-family: var(--font-body);
    font-size: 13px;
    font-weight: 700;
    color: var(--primary);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.fd-pessoa-card-reivindicar .material-symbols-outlined {
    font-size: 16px;
}

/* ════════════════════════════════════════════════════════════════════
   PERFIL/CONFIGURAÇÕES — redesenho (2026-08-21)

   Família de classes NOVA (`.fd-perfil-*`), só pra esta tela — pedido
   da Cristiane depois de ver a tela renderizada com a pele antiga
   ("está bem diferente do padrão esperado"): a causa era `.fd-form-*`
   (usada por config.php desde sempre) nunca ter sido migrada pro
   sistema de tokens novo (--primary/--surface-container-*), só as
   telas de auth/onboarding foram. `.fd-form-*` continua existindo do
   jeito que está — é usada por vários outros formulários do projeto
   (cursos_formulario.php, tarefa_formulario.php, etc.) que não fazem
   parte deste pedido; migrar ela por inteiro é trabalho futuro,
   registrado em
   [[project-facilita-desenvolve-migracao-visual-novos-designers]].

   Referência: mockup "Novos designers/perfil_e_prefer_ncias_revisado"
   (mobile) — sem versão desktop própria (só um placeholder de sidebar
   genérico, igual todo mockup deste conjunto); a adaptação pra desktop
   abaixo (.fd-perfil-grid em 2 colunas ≥1024px) segue a mesma
   proporção "coluna principal maior + coluna secundária menor" dos
   mockups *_desktop já usados noutras telas (ex.:
   configura_o_e_fechamento_de_mesada_desktop, 5/7 colunas).

   Decisões de escopo (pergunta feita à Cristiane em 2026-08-21):
   - Os 4 blocos sem nenhum backend (Notificações Push, Avisos no
     WhatsApp, Google Calendar, Excluir Conta) — ela escolheu "incluir
     e fazer funcionar de verdade" em vez de esconder/simular. Backend
     real em Source\App\AppConfig e Source\Support\PushNotificacao/
     WhatsappNotificacao — ver docblocks de lá pro que está
     genuinamente funcionando agora vs. o que depende da Cristiane
     configurar algo fora do código (Google OAuth, webhook do N8N).
   - "Editar Dados" — ela escolheu o comportamento fiel ao mockup
     (abre/fecha ao clicar, ver FD_APP.initColapsavel em assets/js/app.js)
     em vez de sempre aberto.
   ════════════════════════════════════════════════════════════════════ */

.fd-perfil-page {
    width: min(100% - 36px, 1180px);
    margin: 24px auto 44px;
}

.fd-perfil-hero {
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 28px;
    min-height: 168px;
    padding: 28px 30px;
    margin-bottom: 24px;
    color: var(--on-surface);
    background: linear-gradient(125deg, color-mix(in srgb, var(--primary-container) 68%, var(--surface-container-lowest)), var(--surface-container-lowest) 70%);
    border: 1px solid color-mix(in srgb, var(--primary) 24%, var(--outline-variant));
    border-radius: 28px;
    box-shadow: 0 10px 28px color-mix(in srgb, var(--primary) 7%, transparent);
}

.fd-perfil-hero::after {
    content: "";
    position: absolute;
    width: 220px;
    height: 220px;
    right: -105px;
    bottom: -136px;
    border: 31px solid color-mix(in srgb, var(--primary) 10%, transparent);
    border-radius: 50%;
}

.fd-perfil-hero-copy,
.fd-perfil-hero-resumo {
    position: relative;
    z-index: 1;
}

.fd-perfil-hero-copy h1 {
    margin: 8px 0 0;
    color: var(--on-surface);
    font-family: var(--font-heading);
    font-size: clamp(27px, 4vw, 38px);
    line-height: 1.08;
    letter-spacing: -.025em;
}

.fd-perfil-hero-copy p {
    max-width: 620px;
    margin: 10px 0 0;
    color: var(--on-surface-variant);
    font-size: 14px;
    line-height: 1.5;
}

.fd-perfil-hero-resumo {
    display: flex;
    align-items: center;
    gap: 14px;
    flex: 0 0 auto;
    min-width: 270px;
    padding: 15px 18px;
    background: color-mix(in srgb, var(--surface-container-lowest) 86%, transparent);
    border: 1px solid color-mix(in srgb, var(--primary) 22%, var(--outline-variant));
    border-radius: 18px;
    backdrop-filter: blur(10px);
}

.fd-perfil-hero-avatar {
    display: grid;
    place-items: center;
    flex: 0 0 52px;
    width: 52px;
    height: 52px;
    overflow: hidden;
    color: var(--on-primary-container);
    background: var(--primary-container);
    border: 2px solid color-mix(in srgb, var(--primary) 28%, transparent);
    border-radius: 16px;
    font-family: var(--font-heading);
    font-size: 20px;
    font-weight: 800;
}

.fd-perfil-hero-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.fd-perfil-hero-identidade small,
.fd-perfil-hero-identidade strong,
.fd-perfil-hero-identidade > span {
    display: block;
}

.fd-perfil-hero-identidade small {
    color: var(--primary);
    font-size: 10px;
    font-weight: 850;
    letter-spacing: .07em;
    text-transform: uppercase;
}

.fd-perfil-hero-identidade strong {
    max-width: 210px;
    overflow: hidden;
    margin-top: 3px;
    color: var(--on-surface);
    font-family: var(--font-heading);
    font-size: 17px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.fd-perfil-hero-identidade > span {
    margin-top: 2px;
    color: var(--on-surface-variant);
    font-size: 11px;
}

.fd-perfil-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--fd-stack-lg);
    align-items: start;
}

/* Distância das bordas no mobile (2026-08-2X, pedido da Cristiane: os
   cards apareciam colados nas bordas da tela). `.fd-shell-content` não
   tem padding horizontal próprio de propósito (ver docblock ali) — cada
   tela aplica a própria margem lateral, mesmo padrão já usado por
   `.fd-list-actions`/`.fd-skeleton-*`/`.fd-shell-content > .fd-flash`
   (todos com `--fd-margin-mobile`). Restrito a <768px pra não alterar o
   desktop, que já tem espaçamento próprio (padding-left do
   `.fd-shell-content` reservando a largura da sidebar). */
@media (max-width: 767px) {
    .fd-perfil-page {
        width: calc(100% - 24px);
        margin-top: 10px;
        margin-bottom: 28px;
    }

    .fd-perfil-hero {
        align-items: flex-start;
        flex-direction: column;
        gap: 16px;
        min-height: 0;
        padding: 20px;
        margin-bottom: 18px;
        border-radius: 18px;
    }

    .fd-perfil-hero-copy h1 {
        margin-top: 6px;
        font-size: 23px;
    }

    .fd-perfil-hero-copy p {
        margin-top: 7px;
        font-size: 12px;
        line-height: 1.4;
    }

    .fd-perfil-hero-resumo {
        width: 100%;
        min-width: 0;
        padding: 12px;
        box-sizing: border-box;
    }

    .fd-perfil-hero-avatar {
        flex-basis: 46px;
        width: 46px;
        height: 46px;
        border-radius: 14px;
    }
}

@media (min-width: 1024px) {
    .fd-perfil-grid {
        grid-template-columns: 7fr 5fr;
    }
}

.fd-perfil-col {
    display: flex;
    flex-direction: column;
    gap: var(--fd-stack-lg);
    min-width: 0;
}

/* Reorganização de 2026-08-22 — o card "Ações da conta" (Privacidade e
   Termos / Ajuda e Suporte / Sair da Conta) só existe no mobile: no
   desktop os 3 links já moram na sidebar (.fd-shell-nav-secondary, ver
   docblock de _app_shell.php), então o card inteiro some a partir daí
   pra não duplicar. Breakpoint 768px de propósito (não os 1024px do
   .fd-perfil-grid acima) — é o mesmo breakpoint em que a sidebar com
   Suporte/Termos/Sair passa a existir; entre 768px e 1023px o grid
   ainda está em 1 coluna, mas a sidebar já apareceu, então o card já
   pode sumir. */
@media (min-width: 768px) {
    .fd-perfil-card--acoes-mobile {
        display: none;
    }
}

.fd-perfil-card {
    background: var(--surface-container-lowest);
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded-lg);
    padding: var(--fd-stack-lg);
    /* Compensa o cabeçalho fixo (.fd-shell-header, sticky/top:0) — sem
       isso, um salto de âncora pra um destes cards (ex.: "Adicionar
       Vínculo" → #convidar-alguem) encostava o topo do card embaixo do
       cabeçalho, cortando o título. */
    scroll-margin-top: calc(var(--fd-shell-header-height) + var(--fd-stack-md));
    margin-bottom: 15px;
}

/* Pisca de confirmação quando um link de âncora aponta pra este card
   (FD_APP.initAncoraDestaque, app.js) — dá feedback visual mesmo
   quando o card já estava visível e não houve rolagem nenhuma pra
   perceber.
   Ajuste de 2026-08-22: "Gerar link de acesso" agora redireciona pra
   /config#convite-{id} (o CONVITE específico, não o card inteiro de
   "Convidar alguém") — ver AppAuth::conviteGerar() e o `id` novo em
   cada .fd-perfil-convite-item mais abaixo — então o mesmo pulso
   precisa funcionar também no item individual. */
.fd-perfil-card.is-destacado,
.fd-perfil-convite-item.is-destacado {
    animation: fd-destaque-pulso 1.2s ease;
}

/* .fd-perfil-convite-item não tem padding horizontal (só separa itens
   com border-bottom, ver regra mais abaixo) — sem folga lateral o anel
   do pulso (box-shadow) ficava cortado pelas bordas do card. Padding +
   margem negativa do mesmo valor abre espaço pro anel sem "empurrar"
   o item pra fora da coluna dos vizinhos. */
.fd-perfil-convite-item.is-destacado {
    padding-left: var(--fd-stack-sm);
    padding-right: var(--fd-stack-sm);
    margin-left: calc(var(--fd-stack-sm) * -1);
    margin-right: calc(var(--fd-stack-sm) * -1);
    border-radius: var(--fd-rounded-md);
}

@keyframes fd-destaque-pulso {
    0% {
        box-shadow: 0 0 0 0 var(--primary-container);
    }
    25% {
        box-shadow: 0 0 0 5px var(--primary-container);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(0, 0, 0, 0);
    }
}

.fd-perfil-card-titulo {
    margin: 0 0 var(--fd-stack-md);
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 17px;
    color: var(--on-surface);
    display: flex;
    align-items: center;
    gap: 8px;
}

.fd-perfil-card-titulo .material-symbols-outlined {
    color: var(--primary);
}

/* ─── "Minha Conta" — avatar + editar dados ──────────────────────── */

.fd-perfil-conta-topo {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 2px;
    margin-bottom: var(--fd-stack-md);
}

.fd-perfil-avatar-wrap {
    position: relative;
    width: 84px;
    height: 84px;
    margin-bottom: var(--fd-stack-sm);
}

.fd-perfil-avatar-wrap img,
.fd-perfil-avatar-fallback {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    border: 3px solid var(--primary-container);
    display: block;
}

.fd-perfil-avatar-fallback {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--primary-container);
    color: var(--on-primary-container);
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 30px;
    box-sizing: border-box;
}

.fd-perfil-avatar-editar {
    position: absolute;
    bottom: -2px;
    right: -2px;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--primary);
    color: var(--on-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px solid var(--surface-container-lowest);
    cursor: pointer;
}

.fd-perfil-avatar-editar .material-symbols-outlined {
    font-size: 16px;
}

.fd-perfil-avatar-input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
}

.fd-perfil-nome {
    margin: 0;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 19px;
    color: var(--on-surface);
}

.fd-perfil-email {
    margin: 2px 0 0;
    font-size: 13px;
    color: var(--on-surface-variant);
    overflow-wrap: anywhere;
}

.fd-perfil-editar-btn {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 12px;
    min-height: var(--fd-touch-target);
    border-radius: var(--fd-rounded-full);
    background: var(--surface-container-high);
    color: var(--on-surface);
    border: none;
    /* appearance: reseta o "botão nativo" do navegador (borda cinza
       escura + fonte padrão do sistema) que alguns motores de
       renderização aplicam por cima de background/border/font-family
       customizados em <button> — sem isso o botão pode ficar com cara
       de controle não estilizado em vez do pill cheio do padrão do
       projeto (reportado pela Cristiane em 2026-08-23, tela de Perfil
       mobile). */
    appearance: none;
    -webkit-appearance: none;
    outline: none;
    box-shadow: none;
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 14px;
    cursor: pointer;
}

.fd-perfil-editar-btn:hover {
    background: var(--surface-container-highest);
}

.fd-perfil-editar-campos {
    margin-top: var(--fd-stack-md);
    padding-top: var(--fd-stack-md);
    border-top: 1px solid var(--outline-variant);
    display: flex;
    flex-direction: column;
    gap: var(--fd-stack-md);
}

.fd-perfil-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.fd-perfil-label {
    font-size: 13px;
    font-weight: 700;
    color: var(--on-surface-variant);
}

.fd-perfil-input,
.fd-perfil-select {
    width: 100%;
    min-height: var(--fd-touch-target);
    padding: 10px 14px;
    border-radius: var(--fd-rounded-md);
    border: 1px solid var(--outline-variant);
    background: var(--surface-container-low);
    color: var(--on-surface);
    font-family: var(--font-body);
    font-size: 14px;
    box-sizing: border-box;
}

.fd-perfil-input:focus,
.fd-perfil-select:focus {
    outline: 2px solid var(--primary);
    outline-offset: 1px;
}

.fd-perfil-hint {
    margin: 0;
    font-size: 12px !important;
    line-height: 1.4;
    color: var(--on-surface-variant);
}

.fd-perfil-vinculo-pro a {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    width: fit-content;
    min-height: 38px;
    margin-top: 10px;
    padding: 0 14px;
    color: var(--on-primary);
    background: var(--primary);
    border: 1px solid var(--primary);
    border-radius: 999px;
    box-shadow: 0 5px 14px color-mix(in srgb, var(--primary) 24%, transparent);
    font-size: 12px;
    font-weight: 800;
    line-height: 1;
    text-decoration: none;
}

.fd-perfil-vinculo-pro a:hover {
    color: var(--on-primary);
    background: color-mix(in srgb, var(--primary) 88%, var(--on-primary));
}

.fd-perfil-vinculo-pro a:focus-visible {
    outline: 3px solid color-mix(in srgb, var(--primary) 35%, transparent);
    outline-offset: 3px;
}

.fd-perfil-vinculo-pro a .material-symbols-outlined {
    font-size: 18px;
    font-variation-settings: "FILL" 1;
}

/* Validação ao vivo do modal "Adicionar Vínculo" (2026-08-23, ver
   FD_APP.initTipoVinculoCondicional/validarWhatsapp em app.js) — mesmo
   padrão de texto pequeno do .fd-perfil-hint, mas na cor de erro. */
.fd-perfil-erro {
    margin: 0;
    font-size: 12px;
    line-height: 1.4;
    color: var(--error);
}

.fd-perfil-input.is-invalido,
.fd-perfil-select.is-invalido {
    border-color: var(--error);
}

.fd-perfil-obrigatorio-marca {
    font-weight: 400;
    font-size: 12px;
    color: var(--on-surface-variant);
}

.fd-perfil-btn-primary,
.fd-perfil-btn-secondary,
.fd-perfil-btn-perigo {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: var(--fd-touch-target);
    padding: 0 var(--fd-stack-lg);
    border-radius: var(--fd-rounded-full);
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 14px;
    border: none;
    cursor: pointer;
    text-decoration: none;
    box-sizing: border-box;
}

.fd-perfil-btn-primary {
    width: 100%;
    background: var(--primary);
    color: var(--on-primary);
}

.fd-perfil-btn-primary:hover {
    filter: brightness(1.05);
}

.fd-perfil-btn-primary:disabled {
    background: var(--surface-container-highest);
    color: var(--on-surface-variant);
    cursor: not-allowed;
    opacity: 0.8;
    filter: none;
}

.fd-perfil-btn-secondary {
    width: 100%;
    background: var(--surface-container-high);
    color: var(--on-surface);
}

.fd-perfil-btn-secondary:hover {
    background: var(--surface-container-highest);
}

.fd-perfil-btn-perigo {
    width: 100%;
    background: var(--error-container);
    color: var(--on-error-container);
}

.fd-perfil-btn-perigo:hover {
    filter: brightness(0.97);
}

/* ─── Vínculos familiares ─────────────────────────────────────────── */

.fd-perfil-vinculo-lista {
    display: flex;
    flex-direction: column;
}

.fd-perfil-vinculo-row {
    display: flex;
    align-items: center;
    gap: var(--fd-stack-md);
    padding: var(--fd-stack-sm) 0;
    border-bottom: 1px solid var(--outline-variant);
    position: relative;
}

.fd-perfil-vinculo-lista .fd-perfil-vinculo-row:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.fd-perfil-vinculo-avatar {
    width: 48px;
    height: 48px;
    flex-shrink: 0;
}

.fd-perfil-vinculo-avatar img {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
}

.fd-perfil-vinculo-info {
    flex: 1;
    min-width: 0;
}

.fd-perfil-vinculo-nome {
    margin: 0;
    font-weight: 700;
    font-size: 14px;
    color: var(--on-surface);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.fd-perfil-vinculo-papel {
    margin: 2px 0 0;
    font-size: 12px;
    color: var(--on-surface-variant);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* 3ª linha do item, só na lista "Outros Vínculos" (prestador de
   serviço / saúde de um familiar) — contato de WhatsApp da pessoa
   acompanhada, pedido da Cristiane em 2026-08-22. Usa
   `usuarios.telefone_whatsapp` (mesma coluna da migração 015, sem
   coluna nova) via link "wa.me". Quando a pessoa não tem WhatsApp
   cadastrado, o mesmo lugar mostra um aviso neutro (`--vazio`) em vez
   de simplesmente sumir a linha, pra manter a altura da linha
   consistente entre os itens da lista. */
.fd-perfil-vinculo-contato {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin: 4px 0 0;
    font-size: 12px;
    font-weight: 600;
    color: var(--primary);
    text-decoration: none;
}

.fd-perfil-vinculo-contato .material-symbols-outlined {
    font-size: 14px;
}

.fd-perfil-vinculo-contato:hover {
    text-decoration: underline;
}

.fd-perfil-vinculo-contato--vazio {
    color: var(--on-surface-variant);
    font-weight: 400;
}

/* Linha que junta o contato de WhatsApp com os ícones de ação
   (chave/desvincular) só na lista "Outros Vínculos" — pedido da
   Cristiane em 2026-08-23: antes os ícones ficavam ao lado do nome,
   competindo por espaço com "Nome + tipo de vínculo" (que em nomes
   longos cortava cedo demais); mover os ícones pra cá deixa a coluna
   de nome/tipo com a largura cheia disponível na linha, e os ícones
   passam a ficar alinhados com a própria linha de contato (faz
   sentido: "Reenviar/Gerar Acesso" e "Desvincular" são ações sobre o
   vínculo, não sobre o nome). Ver config.php (loop de $outrosVinculos)
   — reaproveita .fd-perfil-vinculo-contato e .fd-perfil-vinculo-acoes
   como já existiam, só muda onde ficam no HTML. */
.fd-perfil-vinculo-contato-linha {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--fd-stack-sm);
    margin-top: 4px;
}

.fd-perfil-vinculo-contato-linha .fd-perfil-vinculo-contato {
    margin-top: 0;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.fd-perfil-vinculo-contato-linha .fd-perfil-vinculo-acoes {
    flex-shrink: 0;
}

.fd-vinculo-menu-btn {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: none;
    background: transparent;
    color: var(--on-surface-variant);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
}

.fd-vinculo-menu-btn:hover {
    background: var(--surface-container-high);
}

.fd-vinculo-menu-lista {
    position: absolute;
    right: 0;
    top: 100%;
    margin-top: 4px;
    min-width: 230px;
    background: var(--surface-container-lowest);
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded-md);
    box-shadow: 0 8px 24px rgba(0, 0, 0, .14);
    z-index: 20;
    padding: 6px;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.fd-vinculo-menu-lista[hidden] {
    display: none;
}

.fd-vinculo-menu-item {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 10px 12px;
    border: none;
    background: none;
    border-radius: var(--fd-rounded);
    font-family: var(--font-body);
    font-size: 13px;
    font-weight: 700;
    color: var(--on-surface);
    cursor: pointer;
    text-align: left;
    text-decoration: none;
    box-sizing: border-box;
}

.fd-vinculo-menu-item:hover {
    background: var(--surface-container-high);
}

.fd-vinculo-menu-item .material-symbols-outlined {
    font-size: 18px;
    color: var(--on-surface-variant);
}

.fd-vinculo-menu-item--perigo {
    color: var(--error);
}

.fd-vinculo-menu-item--perigo .material-symbols-outlined {
    color: var(--error);
}

/* Ícones de ação SEMPRE visíveis na linha de cada vínculo — substituiu
   o menu de 3 pontinhos acima (.fd-vinculo-menu-*, que ficou órfão
   sem uso em nenhuma tela — mantido só caso algum dropdown futuro
   precise do mesmo padrão) — pedido da Cristiane em 2026-08-23: "gerar
   login próprio" e "desvincular" viraram 2 botões-ícone lado a lado em
   vez de escondidos atrás de um clique extra. Mesmo tamanho/formato do
   antigo .fd-vinculo-menu-btn, só que sem o dropdown junto. */
.fd-perfil-vinculo-acoes {
    display: flex;
    align-items: center;
    gap: 2px;
    flex-shrink: 0;
}

.fd-perfil-vinculo-acao-btn {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: none;
    background: transparent;
    color: var(--on-surface-variant);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
}

.fd-perfil-vinculo-acao-btn .material-symbols-outlined {
    font-size: 20px;
}

.fd-perfil-vinculo-acao-btn:hover {
    background: var(--surface-container-high);
}

.fd-perfil-vinculo-acao-btn--perigo {
    color: var(--error);
}

.fd-perfil-vinculo-acao-btn--perigo:hover {
    background: var(--error-container);
}

.fd-perfil-adicionar-btn {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 14px;
    margin-top: var(--fd-stack-sm);
    border: 2px dashed var(--outline-variant);
    border-radius: var(--fd-rounded-md);
    background: none;
    color: var(--on-surface-variant);
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 14px;
    cursor: pointer;
    box-sizing: border-box;
}

.fd-perfil-adicionar-btn:hover {
    border-color: var(--primary);
    color: var(--primary);
}

/* ─── Personalização: tema visual (swatches) ─────────────────────── */

.fd-perfil-tema-lista {
    display: flex;
    gap: var(--fd-stack-sm);
    overflow-x: auto;
    padding: 2px 2px 6px;
    margin: 0 -2px;
}

.fd-perfil-tema-opcao {
    display: block;
    position: relative;
    flex-shrink: 0;
    width: 86px;
    cursor: pointer;
}

.fd-perfil-tema-opcao input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.fd-perfil-tema-preview {
    display: block;
    height: 54px;
    border-radius: var(--fd-rounded-md);
    border: 2px solid var(--outline-variant);
    position: relative;
    overflow: hidden;
}

.fd-perfil-tema-opcao:has(input:checked) .fd-perfil-tema-preview {
    border-color: var(--primary);
}

.fd-perfil-tema-preview--crescimento_calmo {
    background: linear-gradient(135deg, #f7fafd 55%, #12c9b0 55%);
}

.fd-perfil-tema-preview--jornada_vibrante {
    background: linear-gradient(135deg, #2d3133 55%, #3cddc3 55%);
}

/* .fd-perfil-tema-preview--familia_essencial removida em 2026-08-24 —
   opção tirada do seletor de "Tema Visual" (ver config.php,
   $rotulosTema, e Controller::TEMAS_VALIDOS). Os tokens de cor
   [data-theme="familia_essencial"] continuam em app.css (não é
   selecionável em nenhuma tela nova, mas remover a definição inteira do
   tema é uma limpeza maior, fora do escopo deste pedido). */

.fd-perfil-tema-check {
    position: absolute;
    top: 4px;
    right: 4px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: var(--primary);
    color: var(--on-primary);
    display: none;
    align-items: center;
    justify-content: center;
}

.fd-perfil-tema-opcao:has(input:checked) .fd-perfil-tema-check {
    display: flex;
}

.fd-perfil-tema-check .material-symbols-outlined {
    font-size: 12px;
}

.fd-perfil-tema-label {
    display: block;
    margin-top: 6px;
    font-size: 11px;
    font-weight: 600;
    text-align: center;
    color: var(--on-surface-variant);
}

.fd-perfil-tema-opcao:has(input:checked) .fd-perfil-tema-label {
    color: var(--primary);
    font-weight: 700;
}

/* ─── Personalização: densidade (segmentado) ─────────────────────── */

/* Reaproveitado em 2026-08-22 pro seletor de "Tipo de vínculo" do form
   "Convidar alguém" (`.fd-perfil-tipo-vinculo-grupo`/`-opcao`, ver
   config.php) — mesmo controle segmentado de radio+ícone, é um padrão
   genérico o bastante pra servir os dois. Nomes de classe distintos
   (não reaproveitar literalmente `.fd-perfil-densidade-*` num contexto
   que não é densidade) mas regra CSS compartilhada, pra não duplicar. */
.fd-perfil-densidade-grupo {
    display: flex;
    gap: 4px;
    background: var(--surface-container-low);
    padding: 4px;
    border-radius: var(--fd-rounded-full);
}

.fd-perfil-densidade-opcao {
    flex: 1;
    position: relative;
}

.fd-perfil-densidade-opcao input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.fd-perfil-densidade-opcao label {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    padding: 8px 4px;
    border-radius: var(--fd-rounded-full);
    font-size: 11px;
    font-weight: 700;
    color: var(--on-surface-variant);
    cursor: pointer;
    text-align: center;
}

.fd-perfil-densidade-opcao label .material-symbols-outlined {
    font-size: 18px;
}

.fd-perfil-densidade-opcao:has(input:checked) label {
    background: var(--primary);
    color: var(--on-primary);
}

.fd-perfil-tipo-vinculo-grupo {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    margin-top: 2px;
}

.fd-perfil-tipo-vinculo-opcao {
    position: relative;
    min-width: 0;
}

.fd-perfil-tipo-vinculo-opcao input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.fd-perfil-tipo-vinculo-opcao label {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
    min-height: 118px;
    padding: 13px 12px;
    color: var(--on-surface-variant);
    background: var(--surface-container-low);
    border: 1px solid var(--outline-variant);
    border-radius: 15px;
    cursor: pointer;
    box-sizing: border-box;
}

.fd-perfil-tipo-vinculo-opcao label > .material-symbols-outlined:first-child {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    color: var(--primary);
    background: var(--primary-container);
    border-radius: 10px;
    font-size: 19px;
}

.fd-perfil-tipo-vinculo-opcao label strong,
.fd-perfil-tipo-vinculo-opcao label small {
    display: block;
}

.fd-perfil-tipo-vinculo-opcao label strong {
    color: var(--on-surface);
    font-size: 11px;
    line-height: 1.25;
}

.fd-perfil-tipo-vinculo-opcao label small {
    margin-top: 3px;
    font-size: 9px;
    line-height: 1.3;
}

.fd-perfil-tipo-vinculo-check {
    position: absolute;
    top: 10px;
    right: 10px;
    color: var(--outline);
    font-size: 18px;
    font-variation-settings: "FILL" 0;
}

.fd-perfil-tipo-vinculo-opcao:has(input:checked) label {
    background: color-mix(in srgb, var(--primary-container) 48%, var(--surface-container-lowest));
    border-color: var(--primary);
    box-shadow: 0 5px 14px color-mix(in srgb, var(--primary) 10%, transparent);
}

.fd-perfil-tipo-vinculo-opcao:has(input:checked) .fd-perfil-tipo-vinculo-check {
    color: var(--primary);
    font-variation-settings: "FILL" 1;
}

.fd-perfil-tipo-vinculo-opcao input:focus-visible + label {
    outline: 3px solid color-mix(in srgb, var(--primary) 32%, transparent);
    outline-offset: 2px;
}

@media (max-width: 620px) {
    .fd-perfil-tipo-vinculo-grupo {
        grid-template-columns: 1fr;
        gap: 7px;
    }

    .fd-perfil-tipo-vinculo-opcao label {
        display: grid;
        grid-template-columns: 34px minmax(0, 1fr) 20px;
        align-items: center;
        gap: 10px;
        min-height: 62px;
        padding: 10px 12px;
    }

    .fd-perfil-tipo-vinculo-check {
        position: static;
    }
}

/* ─── Configurações: toggles (push/whatsapp) ─────────────────────── */

.fd-perfil-toggle-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--fd-stack-md);
    padding: var(--fd-stack-sm) 0;
}

.fd-perfil-toggle-info {
    flex: 1;
    min-width: 0;
}

.fd-perfil-toggle-titulo {
    margin: 0;
    font-size: 14px;
    font-weight: 700;
    color: var(--on-surface);
}

.fd-perfil-toggle-desc {
    margin: 2px 0 0;
    font-size: 12px;
    color: var(--on-surface-variant);
}

.fd-perfil-switch {
    position: relative;
    width: 44px;
    height: 26px;
    flex-shrink: 0;
}

.fd-perfil-switch input {
    position: absolute;
    inset: 0;
    opacity: 0;
    margin: 0;
    cursor: pointer;
}

.fd-perfil-switch-track {
    position: absolute;
    inset: 0;
    background: var(--surface-container-highest);
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded-full);
    transition: background .15s ease, border-color .15s ease;
    pointer-events: none;
}

.fd-perfil-switch-thumb {
    position: absolute;
    top: 2px;
    left: 2px;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: var(--surface-container-lowest);
    box-shadow: 0 1px 3px rgba(0, 0, 0, .3);
    transition: transform .15s ease, background .15s ease;
    pointer-events: none;
}

.fd-perfil-switch input:checked ~ .fd-perfil-switch-track {
    background: var(--primary);
    border-color: var(--primary);
}

.fd-perfil-switch input:checked ~ .fd-perfil-switch-thumb {
    transform: translateX(18px);
    background: var(--on-primary);
}

.fd-perfil-switch input:focus-visible ~ .fd-perfil-switch-track {
    outline: 2px solid var(--primary);
    outline-offset: 2px;
}

.fd-perfil-whatsapp-telefone {
    display: none;
    margin-top: var(--fd-stack-sm);
}

.fd-perfil-whatsapp-bloco:has(#notif_whatsapp_habilitado:checked) .fd-perfil-whatsapp-telefone {
    display: block;
}

.fd-perfil-whatsapp-telefone.is-visible {
    display: block;
}

.fd-perfil-whatsapp-oferta {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    margin-top: var(--fd-stack-sm);
    padding: var(--fd-stack-md);
    border: 1px solid color-mix(in srgb, var(--fd-primary) 34%, transparent);
    border-radius: var(--fd-radius-md);
    background: color-mix(in srgb, var(--fd-primary) 7%, var(--fd-surface));
    color: var(--fd-text);
}

.fd-perfil-whatsapp-oferta > span {
    color: var(--fd-text-muted);
}

.fd-assinatura-adicional {
    scroll-margin-top: 96px;
}

.fd-assinatura-status {
    display: inline-flex !important;
    align-items: center;
    gap: 4px;
    color: var(--primary);
    font-weight: 800;
}

.fd-assinatura-status .material-symbols-outlined {
    font-size: 15px;
    font-variation-settings: "FILL" 1;
}

.fd-assinatura-planos .fd-perfil-card,
.fd-assinatura-atual-resumo {
    position: relative;
}

.fd-assinatura-planos {
    grid-template-columns: 1fr;
    align-items: stretch;
}

.fd-assinatura-planos .fd-perfil-col,
.fd-assinatura-planos .fd-perfil-card {
    height: 100%;
}

@media (min-width: 768px) {
    .fd-assinatura-planos {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.fd-assinatura-plano-atual,
.fd-assinatura-atual-resumo {
    background: color-mix(in srgb, var(--primary-container) 34%, var(--surface-container-lowest));
    border: 2px solid var(--primary);
    box-shadow: 0 14px 32px color-mix(in srgb, var(--primary) 16%, transparent);
}

.fd-assinatura-atual-resumo {
    display: flex;
    align-items: center;
    gap: var(--fd-stack-md);
    margin-bottom: var(--fd-stack-lg);
    padding-top: 46px;
}

.fd-assinatura-atual-resumo > div > p:last-child {
    margin-bottom: 0;
}

.fd-assinatura-atual-selo {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    width: fit-content;
    padding: 5px 10px;
    color: var(--on-primary);
    background: var(--primary);
    border-radius: var(--fd-rounded-full);
    font-size: 10px;
    font-weight: 850;
    letter-spacing: .02em;
}

.fd-assinatura-planos .fd-assinatura-atual-selo,
.fd-assinatura-atual-resumo > .fd-assinatura-atual-selo {
    position: absolute;
    top: 13px;
    right: 13px;
}

.fd-assinatura-atual-selo .material-symbols-outlined {
    font-size: 14px;
    font-variation-settings: "FILL" 1;
}

.fd-perfil-config-sep {
    border: none;
    border-top: 1px solid var(--outline-variant);
    margin: var(--fd-stack-sm) 0;
}

/* ─── Configurações: conexões (Google Calendar) ──────────────────── */

.fd-perfil-conexao-row {
    display: flex;
    align-items: center;
    gap: var(--fd-stack-md);
    padding: var(--fd-stack-sm) 0;
}

.fd-perfil-conexao-icone {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--secondary-container);
    color: var(--on-secondary-container);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.fd-perfil-conexao-info {
    flex: 1;
    min-width: 0;
}

.fd-perfil-conexao-titulo {
    margin: 0;
    font-size: 14px;
    font-weight: 700;
    color: var(--on-surface);
}

.fd-perfil-conexao-status {
    margin: 2px 0 0;
    font-size: 12px;
}

.fd-perfil-conexao-status--conectado {
    color: var(--primary);
    font-weight: 700;
}

.fd-perfil-conexao-status--pendente {
    color: var(--on-surface-variant);
}

.fd-perfil-conexao-acao {
    flex-shrink: 0;
    background: var(--surface-container-high);
    color: var(--on-surface);
    border: none;
    border-radius: var(--fd-rounded-full);
    padding: 0 var(--fd-stack-md);
    min-height: 36px;
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 12px;
    cursor: pointer;
}

.fd-perfil-conexao-acao:hover {
    background: var(--surface-container-highest);
}

/* ─── Ações: chevron rows (Privacidade/Ajuda) ────────────────────── */

.fd-perfil-chevron-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 0;
    border-bottom: 1px solid var(--outline-variant);
    color: var(--on-surface);
    text-decoration: none;
    font-size: 14px;
    font-weight: 600;
}

.fd-perfil-card > .fd-perfil-chevron-row:last-of-type {
    border-bottom: none;
    padding-bottom: 0;
}

.fd-perfil-chevron-row:hover {
    color: var(--primary);
}

.fd-perfil-chevron-row-label {
    display: flex;
    align-items: center;
    gap: 10px;
}

.fd-perfil-chevron-row-label .material-symbols-outlined {
    color: var(--on-surface-variant);
}

/* ─── Excluir conta ───────────────────────────────────────────────── */

.fd-perfil-excluir {
    margin-top: var(--fd-stack-md);
    padding-top: var(--fd-stack-md);
    border-top: 1px solid var(--outline-variant);
    text-align: center;
}

/* "Excluir Conta" virou card próprio em 2026-08-22 — antes era um
   rodapé dentro de "Minha Conta" (com a borda/recuo acima pra separar
   do resto do card), mas a Cristiane reportou risco de clique indevido
   por ficar colado no botão "Editar Dados". Agora `.fd-perfil-excluir`
   é o conteúdo inteiro do card `.fd-perfil-card--zona-risco` — o
   título do card já faz o papel de separador visual, então esse
   modificador zera a borda/recuo/centralização que só faziam sentido
   quando ela vinha "pendurada" depois de outro conteúdo. */
.fd-perfil-card--zona-risco .fd-perfil-excluir {
    margin-top: 0;
    padding-top: 0;
    border-top: none;
    text-align: left;
}

.fd-perfil-excluir-link {
    background: none;
    border: none;
    color: var(--on-surface-variant);
    font-size: 13px;
    font-family: var(--font-body);
    text-decoration: underline;
    cursor: pointer;
    padding: 6px;
}

.fd-perfil-excluir-link:hover {
    color: var(--error);
}

.fd-perfil-excluir-painel {
    margin-top: var(--fd-stack-md);
    padding: var(--fd-stack-md);
    border-radius: var(--fd-rounded-md);
    background: var(--error-container);
    text-align: left;
}

.fd-perfil-excluir-painel p {
    margin: 0 0 var(--fd-stack-sm);
    font-size: 13px;
    line-height: 1.5;
    color: var(--on-error-container);
}

.fd-perfil-excluir-painel .fd-perfil-input {
    margin-bottom: var(--fd-stack-sm);
    background: var(--surface-container-lowest);
}

.fd-perfil-check-linha {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    font-size: 12px;
    color: var(--on-error-container);
    margin-bottom: var(--fd-stack-sm);
    line-height: 1.4;
}

.fd-perfil-check-linha input {
    margin-top: 2px;
    flex-shrink: 0;
}

/* ─── "Convidar alguém" + convites pendentes ──────────────────────── */

.fd-perfil-convite-item {
    padding: var(--fd-stack-sm) 0;
    border-bottom: 1px solid var(--outline-variant);
    /* Mesma compensação do cabeçalho fixo que .fd-perfil-card já tinha
       (ver comentário lá em cima) — precisa aqui também desde que
       "Gerar link de acesso" passou a mirar o convite específico
       (#convite-{id}), não só o card. */
    scroll-margin-top: calc(var(--fd-shell-header-height) + var(--fd-stack-md));
}

.fd-perfil-vinculo-lista + .fd-perfil-adicionar-btn + .fd-perfil-card .fd-perfil-convite-item:last-child,
.fd-perfil-card .fd-perfil-convite-item:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.fd-perfil-convite-titulo {
    margin: 0 0 4px;
    font-size: 13px;
    font-weight: 700;
    color: var(--on-surface);
}

.fd-perfil-convite-link {
    margin: 0 0 8px;
    padding: 8px 10px;
    background: var(--surface-container-low);
    border-radius: var(--fd-rounded);
    font-family: "SFMono-Regular", Consolas, Menlo, monospace;
    font-size: 12px;
    line-height: 1.5;
    color: var(--on-surface-variant);
    overflow-wrap: anywhere;
    word-break: break-word;
}

.fd-perfil-convite-meta {
    margin: 4px 0 0;
    font-size: 11px;
    color: var(--on-surface-variant);
}

/* Badge de status (pendente/aceito/expirado) — 2026-08-23, mais tarde
   ainda: antes o status era só um sufixo de texto dentro do título
   (fácil de não notar). Item expirado inteiro fica com opacidade
   reduzida — sinaliza "isso é histórico, não é mais acionável" de
   relance, sem precisar ler o badge. */
.fd-perfil-convite-titulo {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
}

.fd-perfil-convite-item--expirado {
    opacity: 0.6;
}

.fd-perfil-convite-status {
    display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    border-radius: var(--fd-rounded-full);
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.fd-perfil-convite-status--pendente {
    color: #6b3b00;
    background: #ffddb3;
    text-transform: none;
    letter-spacing: 0;
}

[data-theme="jornada_vibrante"] .fd-perfil-convite-status--pendente {
    color: #ffddb3;
    background: color-mix(in srgb, #a96100 38%, var(--surface-container-lowest));
}

.fd-perfil-convite-status--aceito {
    background: var(--tertiary-container);
    color: var(--on-tertiary-container);
    text-transform: none;
    letter-spacing: 0;
}

.fd-perfil-convite-status--expirado {
    background: var(--surface-container-highest);
    color: var(--on-surface-variant);
}

.fd-perfil-convite-link--expirado {
    background: none;
    padding: 0;
    font-family: var(--font-body);
    font-style: italic;
}

.fd-perfil-convites {
    overflow: hidden;
}

.fd-perfil-convites-cabecalho {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding-bottom: 16px;
    border-bottom: 1px solid var(--outline-variant);
}

.fd-perfil-convites-icone {
    display: grid;
    place-items: center;
    flex: 0 0 42px;
    width: 42px;
    height: 42px;
    color: var(--primary);
    background: var(--primary-container);
    border-radius: 13px;
    font-size: 22px;
}

.fd-perfil-convites-cabecalho .fd-perfil-card-titulo {
    margin-bottom: 3px;
}

.fd-perfil-convites-cabecalho p:last-child {
    margin: 0;
    color: var(--on-surface-variant);
    font-size: 11px;
    line-height: 1.4;
}

.fd-perfil-convites-lista {
    display: grid;
    gap: 10px;
    padding-top: 14px;
}

.fd-perfil-convite-item {
    display: grid;
    grid-template-columns: 38px minmax(0, 1fr);
    gap: 11px;
    padding: 13px;
    background: var(--surface-container-low);
    border: 1px solid var(--outline-variant);
    border-radius: 14px;
}

.fd-perfil-card .fd-perfil-convite-item:last-child {
    padding-bottom: 13px;
    border-bottom: 1px solid var(--outline-variant);
}

.fd-perfil-convite-identidade {
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    color: var(--primary);
    background: var(--primary-container);
    border-radius: 11px;
    font-size: 20px;
}

.fd-perfil-convite-item--aceito .fd-perfil-convite-identidade {
    color: var(--on-tertiary-container);
    background: var(--tertiary-container);
}

.fd-perfil-convite-item--expirado {
    opacity: .72;
}

.fd-perfil-convite-item--expirado .fd-perfil-convite-identidade {
    color: var(--on-surface-variant);
    background: var(--surface-container-highest);
}

.fd-perfil-convite-conteudo {
    min-width: 0;
}

.fd-perfil-convite-topo {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 8px;
}

.fd-perfil-convite-topo .fd-perfil-convite-titulo {
    display: block;
    min-width: 0;
    margin: 2px 0 8px;
    font-size: 12px;
    line-height: 1.35;
}

.fd-perfil-convite-acoes {
    display: flex;
    align-items: center;
    flex: 0 0 auto;
    gap: 5px;
}

.fd-perfil-convite-acoes form {
    display: contents;
}

.fd-perfil-convite-acoes .fd-perfil-vinculo-acao-btn {
    width: 28px;
    height: 28px;
}

.fd-perfil-convite-acoes .fd-perfil-vinculo-acao-btn .material-symbols-outlined {
    font-size: 16px;
}

.fd-perfil-convite-link {
    margin-bottom: 9px;
    padding: 7px 9px;
    background: var(--surface-container-lowest);
    border: 1px solid var(--outline-variant);
    font-size: 10px;
    line-height: 1.4;
}

.fd-perfil-convite-link--expirado {
    padding: 0;
    background: none;
    border: 0;
    font-size: 10px;
    font-style: normal;
}

.fd-perfil-convite-item .fd-btn-whatsapp {
    min-height: 36px;
    padding: 7px 11px;
    font-size: 10px;
}

.fd-perfil-convite-meta {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-top: 8px;
    font-size: 9px;
}

.fd-perfil-convite-meta .material-symbols-outlined {
    font-size: 13px;
}

.fd-perfil-convites-vazio {
    display: grid;
    grid-template-columns: 42px minmax(0, 1fr);
    align-items: center;
    gap: 4px 12px;
    padding: 18px 0 2px;
}

.fd-perfil-convites-vazio > .material-symbols-outlined {
    grid-row: 1 / 3;
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    color: var(--on-surface-variant);
    background: var(--surface-container-high);
    border-radius: 13px;
}

.fd-perfil-convites-vazio strong,
.fd-perfil-convites-vazio p {
    display: block;
    margin: 0;
}

.fd-perfil-convites-vazio strong {
    color: var(--on-surface);
    font-size: 12px;
}

.fd-perfil-convites-vazio p {
    margin-top: 3px;
    color: var(--on-surface-variant);
    font-size: 10px;
    line-height: 1.4;
}

.fd-perfil-convites-vazio button {
    grid-column: 1 / -1;
    min-height: 40px;
    margin-top: 10px;
    color: var(--primary);
    background: transparent;
    border: 1px solid var(--primary);
    border-radius: 12px;
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 800;
    cursor: pointer;
}

/* ════════════════════════════════════════════════════════════════════
   MEUS CURSOS — lista (2026-08-24, Fase 2 da migração visual do menu
   Cursos)
   ════════════════════════════════════════════════════════════════════
   Substitui .fd-curso-row/.fd-cards-curso (tokens --color-* antigos,
   ver bloco "NOVO SISTEMA DE DESIGN" no topo deste arquivo) por
   componentes novos, só com tokens --surface-*/--primary-*/--on-*.
   Segue meus_cursos_revisado / estado_vazio_meus_cursos_revisado
   ("Novos designers"). Mesmo padrão de margem lateral no mobile que
   .fd-perfil-grid já usa (.fd-shell-content não tem padding horizontal
   de propósito — cada tela aplica a própria).

   Atualização 2026-08-25 (pedido da Cristiane, com print): os filtros
   Todos/Em andamento/Não iniciados pareciam apertados/cortados e o
   1º card da grade ficava colado neles, sem respiro. Pílulas dos
   filtros ganharam mais padding + `min-height: var(--fd-touch-target)`
   (mesmo alvo de toque de 44px usado em outros botões do app) e mais
   espaço entre elas; o respiro filtros→grade aumentou de
   `--fd-stack-md` (16px) pra `--fd-stack-lg` (24px).
   ════════════════════════════════════════════════════════════════════ */

.fd-cursos-content {
    display: flex;
    flex-direction: column;
    gap: var(--fd-stack-lg);
}

@media (max-width: 767px) {
    .fd-cursos-content {
        margin: 0 var(--fd-margin-mobile);
    }
}

/* ─── Filtros Todos/Em andamento/Não iniciados ───────────────────── */
/*
 * ─── Abas "Estudos" / "Configuração" ─────────────────────────────────
 * Divisão da seção Curso em 2 abas (pedido da Cristiane em 2026-08-25,
 * ver _cursos_abas.php) — são links reais pra rotas diferentes, não um
 * toggle só-JS. Visual em pílula igual aos filtros de baixo
 * (.fd-cursos-filtro), mas como <a> em vez de <button>.
 */
.fd-cursos-abas {
    display: flex;
    gap: 8px;
    margin-bottom: var(--fd-stack-md);
}

.fd-cursos-aba {
    flex: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: var(--fd-touch-target);
    border-radius: var(--fd-rounded-full);
    padding: 10px 18px;
    font-family: var(--font-body);
    font-size: 14px;
    font-weight: 700;
    color: var(--on-surface-variant);
    background: var(--surface-container);
    text-decoration: none;
    text-align: center;
}

.fd-cursos-aba.is-active {
    background: var(--primary);
    color: var(--on-primary);
}

@media (min-width: 768px) {
    .fd-cursos-abas {
        max-width: 360px;
    }
}

.fd-cursos-filtros {
    display: flex;
    gap: 10px;
    overflow-x: auto;
    padding-bottom: 2px;
    margin-bottom: 5px;
}

/* .fd-cursos-filtro nasceu só pra <button> (filtro client-side da aba
   Estudos/Configuração) — reaproveitada como <a> também no seletor
   "Ver progresso de" do Detalhe do Curso (2026-08-25, navegação real
   com ?estudante=, não filtro JS), por isso o text-decoration:none
   explícito abaixo (sem efeito nos usos como <button>). */
.fd-cursos-filtro {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    min-height: var(--fd-touch-target);
    border: none;
    border-radius: var(--fd-rounded-full);
    padding: 10px 18px;
    font-family: var(--font-body);
    font-size: 14px;
    font-weight: 700;
    color: var(--on-surface-variant);
    background: var(--surface-container);
    cursor: pointer;
    text-decoration: none;
}

/* Ícone/avatar dentro da pílula (Todos = ícone "group", pessoa =
   .fd-cursos-filtro-avatar) — tamanho menor que o padrão de 24px pra
   caber ao lado do texto sem esticar a pílula. */
.fd-cursos-filtro .material-symbols-outlined {
    font-size: 16px;
    width: 16px;
    height: 16px;
}

/* Reportado pela Cristiane em 2026-08-25: ao clicar numa pílula de
   filtro aparecia uma borda PRETA por cima — o mesmo gotcha do anel de
   foco padrão do navegador já corrigido antes em .fd-estudo-cta (ver
   histórico desta migração), só que aqui pegava TODAS as pílulas ao
   clicar, não só a que vira "ativa" (o anel nativo de foco não sabe
   nada sobre `.is-active`, aparece em qualquer botão clicado). Troca
   pelo mesmo padrão: outline PRÓPRIO só em :focus-visible, cor de
   marca em vez do preto padrão. Fica declarado ANTES de `.is-active`
   de propósito — numa pílula que está ativa E com foco ao mesmo tempo,
   o anel de `.is-active` (mesma especificidade, mas depois na cascata)
   é quem prevalece, então o clique na pílula ativa continua com o
   mesmo visual de sempre. */
.fd-cursos-filtro:focus-visible {
    outline: 2px solid var(--primary);
    outline-offset: -2px;
}

.fd-cursos-filtro--status:focus-visible {
    outline-color: var(--on-secondary-container);
}

/* Atualização 2026-08-25 (pedido da Cristiane, com print): a borda
   branca do filtro ativo não estava vindo do nosso CSS — era o anel de
   foco padrão do navegador (só aparece enquanto o botão está com foco
   de verdade, e é retangular por padrão, cortando estranho numa pílula
   arredondada). Ganhou um anel PRÓPRIO, sempre visível enquanto o
   filtro estiver ativo (não depende de foco): `outline` com
   offset NEGATIVO — desenha 2px pra DENTRO da pílula, então nunca é
   cortado por overflow do container (`.fd-cursos-filtros` tem
   `overflow-x: auto`). */
.fd-cursos-filtro.is-active {
    background: var(--primary);
    color: var(--on-primary);
    outline: 2px solid var(--on-primary);
    outline-offset: -2px;
}

/* Avatar de iniciais dentro da pílula de pessoa (mesmo padrão visual
   de .fd-curso-atribuido-avatar/.fd-aprovacao-estudante-avatar, só
   menor pra caber dentro da pílula de 44px) — pedido da Cristiane em
   2026-08-25 (print de referência "Painel Familiar"): as tags de
   filtro de pessoa devem mostrar avatar+nome, não só o nome em texto.
   O app não tem foto de perfil de verdade pros vínculos ainda (mesma
   limitação do cabeçalho, ver docblock de _app_shell.php), então o
   avatar aqui é a mesma inicial-em-círculo já usada no rodapé do card
   de Estudos e nas linhas de Aprovações — consistente com o resto do
   app, não uma foto nova. */
.fd-cursos-filtro-avatar {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--primary-container);
    color: var(--on-primary-container);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 700;
    flex-shrink: 0;
    overflow: hidden;
}

/* Caminho de foto real dentro de avatar_pessoa_html() (Boot/Helpers.php)
   — mesmo padrão de .fd-perfil-vinculo-avatar img, só no tamanho da
   pílula (20px). */
.fd-cursos-filtro-avatar img {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
}

.fd-cursos-filtro.is-active .fd-cursos-filtro-avatar {
    background: var(--on-primary);
    color: var(--primary);
}

/* Tags de STATUS (Todos/Em andamento/Não iniciados, aba Estudos) —
   pedido da Cristiane em 2026-08-25 no mesmo round: com o avatar
   acima, as pílulas de pessoa e de status ficaram parecidas demais
   (mesma forma/cor), gerando confusão sobre qual filtro é qual. Essa
   variante muda a FORMA (cantos menos arredondados, .fd-rounded-md em
   vez de pílula completa — reserva o formato 100% redondo pra "isto
   representa uma pessoa") e a COR do estado ativo (secondary-container
   em vez de primary) — mesmo componente-base (.fd-cursos-filtro),
   modificador só visual, sem duplicar layout/JS. */
.fd-cursos-filtro--status {
    border-radius: var(--fd-rounded-md);
}

.fd-cursos-filtro--status.is-active {
    background: var(--secondary-container);
    color: var(--on-secondary-container);
    outline-color: var(--on-secondary-container);
}

.fd-cursos-vazio-filtro {
    margin: 0;
    padding: var(--fd-stack-lg);
    text-align: center;
    color: var(--on-surface-variant);
    font-size: 14px;
}

/* ─── Grade de cards ──────────────────────────────────────────────── */
.fd-cursos-grid {
    display: flex;
    flex-direction: column;
    gap: var(--fd-stack-md);
}

@media (min-width: 768px) {
    .fd-cursos-grid {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
        gap: var(--fd-stack-lg);
    }
}

.fd-curso-card {
    position: relative;
    background: var(--surface-container-lowest);
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded-lg);
    padding: var(--fd-stack-lg);
    display: flex;
    flex-direction: column;
    gap: var(--fd-stack-md);
}

/* Bug real encontrado em 2026-08-25 (Cristiane, filtro por pessoa da
   aba Estudos "não aplicava"): `.fd-curso-card` define `display: flex`
   com uma regra de AUTOR — e regra de autor sempre vence a regra do
   navegador `[hidden] { display: none }`, mesmo essa sendo mais
   específica, porque a origem "author" tem prioridade sobre "user
   agent" na cascata, independente de especificidade. Resultado: `elemento.hidden
   = true` (JS de qualquer filtro — FD_APP.initCursosFiltro OU
   initEstudosFiltroPessoa) marcava o atributo, mas o card continuava
   visível porque `display:flex` do app.css ganhava. Afeta os 2
   filtros que escondem `.fd-curso-card` (Todos/Em andamento/Não
   iniciados da aba Configuração, e por pessoa da aba Estudos) — o
   primeiro nunca tinha sido confirmado ao vivo antes, por isso o bug
   só apareceu agora. */
.fd-curso-card[hidden] {
    display: none;
}

.fd-curso-card-header {
    display: flex;
    align-items: center;
    gap: var(--fd-stack-md);
    /* Reserva espaço pro botão de Excluir no canto (ver
       .fd-curso-card-excluir-canto abaixo) — sem isso um título longo
       poderia passar por baixo do ícone. */
    padding-right: 40px;
}

.fd-curso-card-icon {
    width: 44px;
    height: 44px;
    border-radius: var(--fd-rounded-full);
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--primary-container);
    color: var(--on-primary-container);
    font-size: 22px;
}

.fd-curso-card-icon--img {
    object-fit: cover;
    background: none;
}

.fd-curso-card-main {
    min-width: 0;
    flex: 1;
}

.fd-curso-card-title {
    margin: 0 0 2px;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 16px;
    color: var(--on-surface);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.fd-curso-card-meta {
    margin: 0;
    font-size: 13px;
    color: var(--on-surface-variant);
}

/* Trilha grossa (mín. 12px, DESIGN.md) — fundo é a versão "tint" do
   --aqua-light (já usado no resto do app pra essa finalidade), não uma
   cor fixa, pra variar certo entre tema Claro/Escuro. */
.fd-curso-card-progresso-top {
    display: flex;
    justify-content: space-between;
    font-size: 12px;
    color: var(--on-surface-variant);
    margin-bottom: 4px;
}

.fd-curso-card-progresso-valor {
    font-weight: 700;
    color: var(--on-surface);
}

.fd-curso-card-progress-track {
    height: 12px;
    border-radius: var(--fd-rounded-full);
    background: var(--aqua-light);
    overflow: hidden;
}

.fd-curso-card-progress-fill {
    height: 100%;
    border-radius: var(--fd-rounded-full);
    background: var(--primary);
}

.fd-curso-card-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--fd-stack-sm);
}

.fd-curso-card-pessoa {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    font-weight: 700;
    color: var(--on-surface);
}

.fd-curso-card-agenda {
    display: flex;
    align-items: flex-start;
    gap: 9px;
    padding: 10px 12px;
    border-radius: var(--fd-rounded-md);
    background: var(--surface-container-low);
}

.fd-curso-card-agenda-icon {
    flex-shrink: 0;
    margin-top: 1px;
    color: var(--primary);
    font-size: 19px;
}

.fd-curso-card-agenda-main {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.fd-curso-card-agenda-label {
    color: var(--on-surface-variant);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.fd-curso-card-agenda-main strong {
    overflow: hidden;
    display: -webkit-box;
    color: var(--on-surface);
    font-size: 13px;
    line-height: 1.3;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

.fd-curso-card-agenda-meta {
    color: var(--on-surface-variant);
    font-size: 11px;
    font-weight: 600;
}

.fd-curso-card-cta {
    background: var(--primary);
    color: var(--on-primary);
    border-radius: var(--fd-rounded-full);
    padding: 8px 18px;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
    white-space: nowrap;
}

.fd-curso-card-admin {
    display: flex;
    gap: var(--fd-stack-md);
    padding-top: var(--fd-stack-sm);
    border-top: 1px solid var(--outline-variant);
}

.fd-curso-card-admin-link {
    background: none;
    border: none;
    padding: 0;
    font-family: var(--font-body);
    font-size: 13px;
    font-weight: 600;
    color: var(--on-surface-variant);
    text-decoration: none;
    cursor: pointer;
}

.fd-curso-card-admin-link--excluir:hover {
    color: var(--error);
}

/*
 * ─── Ações do card de curso (Ver/Atribuir/Editar/Excluir) ───────────
 * Pedido da Cristiane em 2026-08-25: os botões de editar/excluir/ver
 * curso viviam em 2 linhas separadas (footer com "Ver curso" sozinho +
 * uma linha "admin" com Editar/Excluir) — viraram 1 linha só no
 * rodapé do card (.fd-curso-card-actions), com "Atribuir" novo do
 * lado. Reaproveita .fd-curso-actions/.fd-acao-editar/.fd-acao-excluir
 * (já usados ao vivo em cursos_conteudo.php) — só acrescenta
 * .fd-acao-ver (ação principal, sólida — mesma cor de
 * .fd-curso-card-cta) e .fd-acao-atribuir (tom --secondary-container,
 * pra não ficar visualmente igual a Editar). Só "Ver" aparece pra quem
 * só estuda (sem nenhuma ação administrativa) — ver
 * cursos_index.php ($ehResponsavel).
 */
.fd-curso-card-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px;
    padding-top: var(--fd-stack-sm);
    border-top: 1px solid var(--outline-variant);
}

.fd-curso-card-actions.fd-curso-actions a,
.fd-curso-card-actions.fd-curso-actions button {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 13px;
    font-weight: 700;
    padding: 7px 14px;
    border-radius: var(--fd-rounded-full);
}

.fd-curso-card-actions .material-symbols-outlined {
    font-size: 16px;
}

.fd-curso-card-actions .fd-acao-ver {
    background: var(--primary);
    color: var(--on-primary);
}

.fd-curso-card-actions .fd-acao-atribuir {
    background: var(--secondary-container);
    color: var(--on-secondary-container);
}

/*
 * ─── Excluir isolado no canto do card ────────────────────────────────
 * Atualização 2026-08-25 (2ª correção, mesmo dia): Excluir saiu da
 * linha de rodapé (.fd-curso-card-actions) e virou um ícone isolado no
 * canto superior direito do card — a Cristiane reportou que no mobile
 * ele sobrava sozinho numa 2ª linha do rodapé, dando sensação de
 * quebra. Fica dentro de um <form method="post"> (precisa de POST +
 * CSRF pra excluir) — como não compete mais com outros itens numa
 * linha flexível, não precisa do hack de `display:contents` que a
 * versão anterior (no rodapé) usava. Mesmo par de vermelho já
 * padronizado em .fd-item-edicao-excluir (cursos_conteudo.php) — ícone
 * sozinho, sem texto, com tooltip (`[data-tooltip]`, já usado em
 * outras telas) fazendo o papel do rótulo.
 */
.fd-curso-card-excluir-canto {
    position: absolute;
    top: var(--fd-stack-lg);
    right: var(--fd-stack-lg);
}

.fd-curso-card-excluir-canto .fd-acao-excluir {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    padding: 0;
    border-radius: var(--fd-rounded-full);
    background: #FEE2E2;
    color: #991B1B;
    border: 1px solid #F3C9C9;
    cursor: pointer;
}

.fd-curso-card-excluir-canto .fd-acao-excluir:hover {
    background: #FECACA;
    border-color: #F87171;
}

.fd-curso-card-excluir-canto .material-symbols-outlined {
    font-size: 18px;
}

/*
 * ─── "Atribuído a" (responsável) / progresso próprio (estudante) ────
 * Bloco novo no card de curso (2026-08-25, "Atribuir curso") — quem
 * administra o curso vê 1 linha por atribuído (Nome, tipo de vínculo,
 * capítulos concluídos, próximo capítulo, barra de progresso PRÓPRIA
 * de cada um); quem só estuda vê só o texto do próprio progresso (a
 * barra % já aparece no topo do card, .fd-curso-card-progresso).
 */
.fd-curso-atribuidos {
    padding-top: var(--fd-stack-sm);
    border-top: 1px solid var(--outline-variant);
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.fd-curso-atribuidos-titulo {
    margin: 0;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .02em;
    color: var(--on-surface-variant);
}

.fd-curso-atribuido-row {
    display: flex;
    gap: 8px;
}

.fd-curso-atribuido-avatar {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--primary-container);
    color: var(--on-primary-container);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 700;
    flex-shrink: 0;
}

.fd-curso-atribuido-info {
    min-width: 0;
    flex: 1;
}

.fd-curso-atribuido-nome {
    margin: 0 0 3px;
    font-size: 13px;
    font-weight: 700;
    color: var(--on-surface);
}

.fd-curso-atribuido-vinculo-inline {
    margin-left: 6px;
    font-size: 11px;
    font-weight: 600;
    color: var(--on-surface-variant);
    text-transform: none;
}

.fd-curso-atribuido-progress-track {
    height: 6px;
    border-radius: var(--fd-rounded-full);
    background: var(--aqua-light);
    overflow: hidden;
    margin-bottom: 3px;
}

.fd-curso-atribuido-progress-fill {
    height: 100%;
    border-radius: var(--fd-rounded-full);
    background: var(--primary);
}

.fd-curso-atribuido-meta {
    margin: 0;
    font-size: 12px;
    color: var(--on-surface-variant);
}

.fd-curso-meu-progresso {
    padding-top: var(--fd-stack-sm);
    border-top: 1px solid var(--outline-variant);
}

.fd-curso-meu-progresso-texto {
    margin: 0;
    font-size: 13px;
    color: var(--on-surface-variant);
}

/*
 * ─── Modal "Atribuir" — lista com toggle ─────────────────────────────
 * Conteúdo do form dentro de .fd-modal-dialog--form (mesma casca do
 * modal "Adicionar Vínculo" de /config) — cada linha é um vínculo
 * tipo_vinculo=estudante marcável. Reescrito em 2026-08-25 (pedido da
 * Cristiane, checkbox "sem formatação" virou toggle): reaproveita o
 * componente .fd-perfil-switch já usado em Configurações (push/
 * WhatsApp) em vez de inventar um toggle novo — mesma marcação
 * (label.fd-perfil-switch > input + 2 spans), só o texto/avatar da
 * pessoa que mudou de único <label> pra uma linha com toggle no fim
 * (mesmo layout de .fd-perfil-toggle-row).
 */
.fd-curso-atribuir-opcao {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 0;
    border-bottom: 1px solid var(--outline-variant);
}

.fd-curso-atribuir-opcao:last-of-type {
    border-bottom: none;
}

.fd-curso-atribuir-opcao-info {
    flex: 1;
    min-width: 0;
    font-size: 14px;
    color: var(--on-surface);
}

.fd-curso-atribuir-opcao-nome {
    display: block;
}

/* .fd-curso-atribuir-opcao-hint / .fd-perfil-switch:has(input:disabled)
   removidas em 2026-08-25 (2ª correção) — o modal "Atribuir" deixou de
   ter QUALQUER texto de "dono"/"administra" ou toggle travado (ver
   cursos_index.php); nada no app usa mais um .fd-perfil-switch
   disabled. Se um dia precisar de novo, reintroduzir só quando houver
   um caso de uso real. */

/* ─── Estado vazio (nenhum curso cadastrado ainda) ───────────────── */
.fd-cursos-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--fd-stack-sm);
    padding: 48px var(--fd-stack-lg);
}

.fd-cursos-empty-icon {
    width: 72px;
    height: 72px;
    border-radius: var(--fd-rounded-full);
    background: var(--primary-container);
    color: var(--on-primary-container);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 34px;
    margin-bottom: var(--fd-stack-sm);
}

.fd-cursos-empty-titulo {
    margin: 0;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 20px;
    color: var(--on-surface);
}

.fd-cursos-empty-texto {
    margin: 0 0 var(--fd-stack-sm);
    font-size: 14px;
    color: var(--on-surface-variant);
    max-width: 320px;
}

.fd-cursos-empty-cta {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: var(--primary);
    color: var(--on-primary);
    border-radius: var(--fd-rounded-full);
    padding: 12px 24px;
    font-family: var(--font-body);
    font-size: 14px;
    font-weight: 700;
    text-decoration: none;
    border: none;
    cursor: pointer;
}

/*
 * ─── Detalhe do Curso — Visão Geral/Cronograma/Histórico ────────────
 * Fase 4 da migração do menu Cursos (2026-08-25, ver
 * [[project-facilita-desenvolve-migracao-cursos]]) — segue
 * `Curso -detalhe_do_curso_revisado`. Reaproveita tokens/classes já
 * usados na aba Estudos (.fd-curso-card-progress-*, .fd-curso-badge,
 * .fd-cursos-empty*, .fd-cursos-filtro) — só o que é NOVO desta tela
 * ganha classe própria aqui.
 */
/*
 * Cristiane reportou em 2026-08-25 que as seções do Detalhe do Curso
 * estavam coladas umas nas outras (sem respiro entre header/abas/
 * bento/ações). `.fd-cursos-content` (wrapper compartilhado com a
 * aba Estudos) usa `gap`, mas aqui a pedido dela cada seção ganha seu
 * próprio `margin-top" explícito em vez de depender só do gap do pai
 * — zera o gap herdado (evita dobrar o espaçamento) e aplica margem
 * no topo de cada filho direto, exceto o 1º.
 */
.fd-estudo-detalhe {
    gap: 0;
}

.fd-estudo-detalhe > * {
    margin-top: var(--fd-stack-lg);
}

.fd-estudo-detalhe > *:first-child {
    margin-top: 0;
}

.fd-estudo-voltar {
    width: fit-content;
    min-height: var(--fd-touch-target);
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 0 6px;
    border-radius: var(--fd-rounded-md);
    color: var(--primary);
    font-size: 14px;
    font-weight: 700;
    text-decoration: none;
}

.fd-estudo-voltar .material-symbols-outlined {
    font-size: 20px;
}

.fd-estudo-header {
    background: var(--surface-container-lowest);
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded-lg);
    padding: var(--fd-stack-lg);
    display: flex;
    flex-direction: column;
    gap: var(--fd-stack-md);
}

.fd-estudo-header-top {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: var(--fd-stack-md);
}

.fd-estudo-header-main {
    min-width: 0;
    flex: 1;
}

.fd-estudo-badge-row {
    display: flex;
    align-items: center;
    gap: var(--fd-stack-sm);
    flex-wrap: wrap;
    margin-bottom: 6px;
}

.fd-estudo-plataforma {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    font-weight: 600;
    color: var(--on-surface-variant);
}

.fd-estudo-plataforma .material-symbols-outlined {
    font-size: 16px;
}

.fd-estudo-titulo {
    margin: 0 0 2px;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 22px;
    color: var(--on-surface);
}

.fd-estudo-pessoa {
    margin: 0;
    font-size: 14px;
    color: var(--on-surface-variant);
}

.fd-estudo-capa {
    width: 56px;
    height: 56px;
    border-radius: var(--fd-rounded-lg);
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--surface-container-low);
    color: var(--primary);
    font-size: 28px;
}

.fd-estudo-capa--img {
    object-fit: cover;
}

/* CTA principal "Continuar estudando" — abre em nova aba o link
   externo da plataforma do curso ($curso->link, ex. Hotmart), pedido
   da Cristiane em 2026-08-25. Some [disabled] só no caso raro de
   curso sem link cadastrado (ver cursos_estudo_detalhe.php). */
.fd-estudo-cta {
    width: 100%;
    min-height: var(--fd-touch-target);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    background: var(--primary-container);
    color: var(--on-primary-container);
    border: none;
    border-radius: var(--fd-rounded-full);
    font-family: var(--font-body);
    font-size: 14px;
    font-weight: 700;
    text-decoration: none;
    cursor: pointer;
}

.fd-estudo-cta:hover {
    opacity: .9;
}

/* Cristiane reportou em 2026-08-25 uma borda preta de destaque ao
   clicar em "Continuar estudando" — é o anel de foco PADRÃO do
   navegador (aparece ao clicar num link que abre em nova aba), fora
   do padrão visual do app. Mesmo gotcha já corrigido antes em
   .fd-cursos-filtro.is-active: em vez de tirar o foco (ruim pra
   acessibilidade), troca por um anel PRÓPRIO — outline com offset
   NEGATIVO, na cor do próprio botão, sempre dentro da pílula. */
.fd-estudo-cta:focus-visible {
    outline: 2px solid var(--on-primary-container);
    outline-offset: -4px;
}

.fd-estudo-cta[disabled] {
    cursor: not-allowed;
    opacity: .6;
}

.fd-estudo-cta .material-symbols-outlined:last-child {
    font-size: 18px;
}

.fd-estudo-em-breve {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .02em;
    background: rgba(0, 0, 0, .12);
    border-radius: var(--fd-rounded-full);
    padding: 2px 8px;
    margin-left: 2px;
}

.fd-estudo-proxima-sessao {
    display: flex;
    align-items: center;
    gap: var(--fd-stack-md);
    background: var(--secondary-container);
    border-radius: var(--fd-rounded-lg);
    padding: var(--fd-stack-md);
}

.fd-estudo-proxima-sessao-icon {
    width: 44px;
    height: 44px;
    border-radius: var(--fd-rounded-full);
    background: var(--surface-container-lowest);
    color: var(--on-secondary-container);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    flex-shrink: 0;
}

.fd-estudo-proxima-sessao-main {
    min-width: 0;
}

.fd-estudo-proxima-sessao-label {
    margin: 0 0 2px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .02em;
    color: var(--on-secondary-container);
}

.fd-estudo-proxima-sessao-valor {
    margin: 0;
    font-size: 14px;
    font-weight: 700;
    color: var(--on-secondary-container);
}

.fd-estudo-proxima-sessao-meta {
    margin: 2px 0 0;
    font-size: 12px;
    color: var(--on-secondary-container);
}

/* ─── Abas Visão geral/Cronograma/Histórico (sublinhado, não pílula —
   pra diferenciar visualmente do nível acima, Estudos/Configuração,
   que já usa pílula em .fd-cursos-abas) ────────────────────────── */
.fd-estudo-abas {
    display: flex;
    gap: var(--fd-stack-lg);
    border-bottom: 1px solid var(--outline-variant);
}

.fd-estudo-aba {
    padding: 0 2px 10px;
    font-size: 14px;
    font-weight: 700;
    color: var(--on-surface-variant);
    text-decoration: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
}

.fd-estudo-aba:focus {
    outline: none;
}

.fd-estudo-aba:focus-visible {
    color: var(--primary);
    box-shadow: inset 0 -2px var(--primary);
}

.fd-estudo-aba.is-active {
    color: var(--primary);
    border-bottom-color: var(--primary);
}

.fd-estudo-bento {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--fd-stack-md);
}

@media (min-width: 768px) {
    .fd-estudo-bento {
        grid-template-columns: 1fr 1fr;
    }
}

.fd-estudo-bento-card {
    background: var(--surface-container-lowest);
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded-lg);
    padding: var(--fd-stack-md);
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.fd-estudo-bento-card-titulo {
    display: flex;
    align-items: center;
    gap: 6px;
    color: var(--primary);
}

.fd-estudo-bento-card-titulo--secondary {
    color: var(--secondary);
}

.fd-estudo-bento-card-titulo--tertiary {
    color: var(--tertiary);
}

.fd-estudo-bento-card-titulo h3 {
    margin: 0;
    font-size: 14px;
    font-weight: 700;
}

.fd-estudo-bento-card-texto {
    margin: 0;
    font-size: 14px;
    color: var(--on-surface);
}

.fd-estudo-bento-card-numero {
    margin: 0;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 22px;
    color: var(--on-surface);
}

.fd-estudo-bento-card-numero span {
    font-family: var(--font-body);
    font-weight: 500;
    font-size: 14px;
    color: var(--on-surface-variant);
}

.fd-estudo-bento-card-legenda {
    margin: 0;
    font-size: 12px;
    color: var(--on-surface-variant);
}

.fd-estudo-prazo-comparacao {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--fd-stack-sm);
}

.fd-estudo-prazo-item {
    min-width: 0;
    padding: 10px 12px;
    background: var(--surface-container-low);
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded-md);
}

.fd-estudo-prazo-item span,
.fd-estudo-prazo-item strong {
    display: block;
}

.fd-estudo-prazo-item span {
    margin-bottom: 3px;
    color: var(--on-surface-variant);
    font-size: 11px;
    font-weight: 600;
}

.fd-estudo-prazo-item strong {
    color: var(--on-surface);
    font-size: 13px;
    line-height: 1.35;
}

@media (max-width: 420px) {
    .fd-estudo-prazo-comparacao {
        grid-template-columns: 1fr;
    }
}

/* Modelos reutilizáveis e vídeo de orientação das atividades */
.fd-atividade-modelos { padding: 20px; background: color-mix(in srgb, var(--primary) 5%, var(--surface-container-lowest)); border: 1px solid color-mix(in srgb, var(--primary) 24%, var(--outline-variant)); border-radius: 20px; }
.fd-atividade-modelos[hidden], .fd-atividade-modelos-lista[hidden] { display: none !important; }
.fd-atividade-modelos-head { display: flex; align-items: center; gap: 12px; margin-bottom: 15px; }
.fd-atividade-modelos-head > .material-symbols-outlined { display: grid; place-items: center; flex: 0 0 42px; width: 42px; height: 42px; color: var(--primary); background: var(--surface-container-lowest); border-radius: 13px; }
.fd-atividade-modelos-head h2 { margin: 0; color: var(--on-surface); font-family: var(--font-heading); font-size: 19px; }
.fd-atividade-modelos-head p { margin: 3px 0 0; color: var(--on-surface-variant); font-size: 14px; }
.fd-atividade-modelos-lista { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.fd-atividade-modelo { display: grid; grid-template-columns: 40px minmax(0, 1fr); align-items: center; gap: 10px; min-height: 76px; padding: 11px; color: var(--on-surface); text-align: left; background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-radius: 14px; cursor: pointer; transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease; }
.fd-atividade-modelo:hover { border-color: var(--primary); transform: translateY(-1px); }
.fd-atividade-modelo:focus-visible { outline: 3px solid color-mix(in srgb, var(--primary) 30%, transparent); outline-offset: 2px; }
.fd-atividade-modelo.is-selected { border-color: var(--primary); box-shadow: 0 0 0 2px color-mix(in srgb, var(--primary) 16%, transparent); }
.fd-atividade-modelo-icon { display: grid; place-items: center; width: 40px; height: 40px; color: var(--primary); background: color-mix(in srgb, var(--primary) 11%, var(--surface-container-lowest)); border-radius: 12px; }
.fd-atividade-modelo strong, .fd-atividade-modelo small { display: block; }
.fd-atividade-modelo strong { font-size: 15px; line-height: 1.25; }
.fd-atividade-modelo small { margin-top: 3px; color: var(--on-surface-variant); font-size: 13px; }
.fd-atividade-modelo-action { grid-column: 2; color: var(--primary); font-size: 13px; font-weight: 800; }
.fd-atividade-modelos-status { min-height: 18px; margin: 10px 0 0; color: var(--primary); font-size: 13px; font-weight: 750; }
.fd-atividade-video-field { position: relative; }
.fd-atividade-video-field > .material-symbols-outlined { position: absolute; z-index: 1; top: 50%; left: 14px; color: var(--primary); transform: translateY(-50%); pointer-events: none; }
.fd-atividade-video-field .fd-form-input { padding-left: 45px; }
.fd-atividade-video-link { display: inline-flex; align-items: center; gap: 5px; color: var(--primary); font-weight: 800; text-decoration: none; }
.fd-atividade-video-link:hover { text-decoration: underline; }
.fd-atividade-video-link .material-symbols-outlined { font-size: 20px; }
.fd-atividade-video-callout { display: grid; grid-template-columns: 44px minmax(0, 1fr) 24px; align-items: center; gap: 12px; margin-top: 18px; padding: 14px; color: var(--on-surface); text-decoration: none; background: color-mix(in srgb, var(--primary) 7%, var(--surface-container-lowest)); border: 1px solid color-mix(in srgb, var(--primary) 28%, var(--outline-variant)); border-radius: 15px; }
.fd-atividade-video-callout > .material-symbols-outlined:first-child { display: grid; place-items: center; width: 44px; height: 44px; color: var(--primary); background: var(--surface-container-lowest); border-radius: 13px; font-size: 27px; }
.fd-atividade-video-callout strong, .fd-atividade-video-callout small { display: block; }
.fd-atividade-video-callout strong { font-size: 15px; }
.fd-atividade-video-callout small { margin-top: 3px; color: var(--on-surface-variant); font-size: 13px; }
.fd-atividade-video-callout:hover { border-color: var(--primary); }

@media (max-width: 760px) {
    .fd-atividade-modelos-lista { display: flex; padding: 2px 2px 8px; overflow-x: auto; scroll-snap-type: x proximity; }
    .fd-atividade-modelo { flex: 0 0 220px; scroll-snap-align: start; }
}

.fd-estudo-habilidades {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.fd-estudo-habilidade-chip {
    font-size: 12px;
    font-weight: 600;
    color: var(--on-surface-variant);
    background: var(--surface-container-low);
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded-full);
    padding: 4px 10px;
}

.fd-estudo-acoes-secundarias {
    display: flex;
    flex-wrap: wrap;
    gap: var(--fd-stack-md);
}

.fd-estudo-acao-secundaria {
    flex: 1;
    min-width: 160px;
    min-height: 48px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    background: var(--surface-container-lowest);
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded-full);
    font-family: var(--font-body);
    font-size: 14px;
    font-weight: 700;
    color: var(--on-surface);
    text-decoration: none;
    cursor: pointer;
}

.fd-estudo-acao-secundaria--primary {
    background: var(--primary);
    border-color: var(--primary);
    color: var(--on-primary);
}

button.fd-estudo-acao-secundaria[disabled] {
    cursor: not-allowed;
    opacity: .6;
}

.fd-estudo-sessoes-lista {
    display: flex;
    flex-direction: column;
    gap: var(--fd-stack-sm);
}

.fd-estudo-sessao-item {
    display: flex;
    align-items: center;
    gap: var(--fd-stack-md);
    background: var(--surface-container-lowest);
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded-lg);
    padding: var(--fd-stack-md);
}

.fd-estudo-sessao-icon {
    width: 36px;
    height: 36px;
    border-radius: var(--fd-rounded-full);
    background: var(--surface-container-low);
    color: var(--on-surface-variant);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    flex-shrink: 0;
}

.fd-estudo-sessao-icon--concluida {
    background: var(--primary-container);
    color: var(--on-primary-container);
}

.fd-estudo-sessao-main {
    min-width: 0;
    flex: 1;
}

.fd-estudo-sessao-titulo {
    margin: 0 0 2px;
    font-size: 14px;
    font-weight: 700;
    color: var(--on-surface);
}

.fd-estudo-sessao-meta {
    margin: 0;
    font-size: 12px;
    color: var(--on-surface-variant);
}

/* Cronograma do curso: resumo real da rotina + sessões em timeline. */
.fd-cronograma-resumo {
    margin-bottom: var(--fd-stack-lg);
    padding: var(--fd-stack-md);
    background: var(--surface-container-lowest);
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded-lg);
}

.fd-cronograma-resumo-titulo {
    display: flex;
    align-items: center;
    gap: var(--fd-stack-sm);
    margin-bottom: var(--fd-stack-md);
}

.fd-cronograma-resumo-titulo > span {
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--fd-rounded-full);
    background: var(--primary-container);
    color: var(--on-primary-container);
    font-size: 18px;
}

.fd-cronograma-resumo-titulo h3,
.fd-cronograma-semana-cabecalho h3,
.fd-cronograma-sessao-card h4 {
    margin: 0;
}

.fd-cronograma-resumo-titulo h3 {
    font-size: 14px;
    color: var(--on-surface);
}

.fd-cronograma-resumo-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--fd-stack-md);
}

.fd-cronograma-resumo-item {
    min-width: 0;
    padding: 12px;
    background: var(--surface-container-low);
    border-radius: var(--fd-rounded-md);
}

.fd-cronograma-resumo-item span,
.fd-cronograma-resumo-item strong {
    display: block;
}

.fd-cronograma-resumo-item span {
    margin-bottom: 3px;
    font-size: 11px;
    font-weight: 600;
    color: var(--on-surface-variant);
}

.fd-cronograma-resumo-item strong {
    font-size: 14px;
    color: var(--primary);
}

.fd-cronograma-semanas {
    display: flex;
    flex-direction: column;
    gap: var(--fd-stack-lg);
}

.fd-cronograma-semana-cabecalho {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--fd-stack-md);
    margin-bottom: var(--fd-stack-md);
}

.fd-cronograma-semana-cabecalho h3 {
    font-family: var(--font-heading);
    font-size: 18px;
    color: var(--on-surface);
}

.fd-cronograma-semana-cabecalho span {
    padding: 4px 9px;
    border-radius: var(--fd-rounded-full);
    background: var(--primary-container);
    color: var(--on-primary-container);
    font-size: 11px;
    font-weight: 700;
}

.fd-cronograma-timeline {
    position: relative;
    padding-left: 30px;
}

.fd-cronograma-timeline::before {
    content: '';
    position: absolute;
    top: 12px;
    bottom: 12px;
    left: 11px;
    width: 2px;
    background: var(--surface-container-high);
}

.fd-cronograma-sessao {
    position: relative;
    margin-bottom: var(--fd-stack-md);
}

.fd-cronograma-sessao:last-child {
    margin-bottom: 0;
}

.fd-cronograma-sessao-marker {
    position: absolute;
    z-index: 1;
    top: 13px;
    left: -30px;
    width: 24px;
    height: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 4px solid var(--background);
    border-radius: var(--fd-rounded-full);
    background: var(--surface-container-high);
    color: var(--on-surface-variant);
    font-size: 10px;
    font-variation-settings: 'FILL' 1;
}

.fd-cronograma-sessao.is-next .fd-cronograma-sessao-marker,
.fd-cronograma-sessao.is-completed .fd-cronograma-sessao-marker {
    background: var(--primary);
    color: var(--on-primary);
}

.fd-cronograma-sessao.is-awaiting .fd-cronograma-sessao-marker {
    background: var(--tertiary-container);
    color: var(--on-tertiary-container);
}

.fd-cronograma-sessao-card {
    position: relative;
    min-width: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--fd-stack-md);
    padding: var(--fd-stack-md);
    overflow: hidden;
    background: var(--surface-container-lowest);
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded-lg);
}

.fd-cronograma-sessao.is-next .fd-cronograma-sessao-card {
    border-color: var(--primary-container);
}

.fd-cronograma-sessao.is-next .fd-cronograma-sessao-card::before {
    content: '';
    position: absolute;
    inset: 0 auto 0 0;
    width: 4px;
    background: var(--primary-container);
}

.fd-cronograma-sessao.is-completed .fd-cronograma-sessao-card {
    opacity: .72;
}

.fd-cronograma-sessao.is-completed h4 {
    text-decoration: line-through;
}

.fd-cronograma-sessao-conteudo {
    min-width: 0;
}

.fd-cronograma-sessao-data,
.fd-cronograma-sessao-duracao {
    margin: 0;
    font-size: 11px;
    font-weight: 600;
    color: var(--on-surface-variant);
}

.fd-cronograma-sessao.is-next .fd-cronograma-sessao-data {
    color: var(--primary);
}

.fd-cronograma-sessao-card h4 {
    margin-top: 3px;
    font-size: 14px;
    color: var(--on-surface);
}

.fd-cronograma-sessao-duracao {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-top: 7px;
}

.fd-cronograma-sessao-duracao .material-symbols-outlined {
    font-size: 14px;
}

.fd-cronograma-sessao-iniciar {
    flex-shrink: 0;
    padding: 7px 14px;
    border-radius: var(--fd-rounded-full);
    background: var(--primary);
    color: var(--on-primary);
    font-size: 12px;
    font-weight: 700;
    text-decoration: none;
}

.fd-cronograma-sessao-acoes {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 6px;
}

.fd-cronograma-sessao-diario {
    padding: 6px 12px;
    border: 1px solid var(--primary);
    border-radius: var(--fd-rounded-full);
    color: var(--primary);
    font-size: 12px;
    font-weight: 700;
    text-decoration: none;
}

.fd-cronograma-sessao-status {
    flex-shrink: 0;
    color: var(--primary);
}

.fd-cronograma-sessao-aguardando {
    max-width: 190px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 11px;
    border-radius: var(--fd-rounded-full);
    background: color-mix(in srgb, var(--tertiary-container) 28%, var(--surface-container-lowest));
    color: var(--on-tertiary-container);
    font-size: 11px;
    font-weight: 700;
    line-height: 1.25;
}

.fd-cronograma-sessao-aguardando .material-symbols-outlined {
    flex-shrink: 0;
    font-size: 17px;
}

/* Confirmação de envio inspirada no modelo visual do curso: celebra o
 * avanço sem esconder que a revisão ainda está pendente. */
.fd-diario-confirmacao-overlay {
    z-index: 100;
    background:
        radial-gradient(circle at 100% 0, color-mix(in srgb, var(--primary-container) 42%, transparent), transparent 42%),
        radial-gradient(circle at 0 100%, color-mix(in srgb, var(--tertiary-container) 35%, transparent), transparent 44%),
        color-mix(in srgb, var(--surface) 94%, transparent);
    backdrop-filter: blur(4px);
}

.fd-diario-confirmacao {
    width: 100%;
    max-width: 390px;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 34px 24px 28px;
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded-xl);
    background: var(--surface-container-lowest);
    box-shadow: 0 18px 48px rgba(0, 79, 68, .16);
    text-align: center;
}

.fd-diario-confirmacao-ilustracao {
    position: relative;
    width: 150px;
    height: 150px;
    display: grid;
    place-items: center;
    margin-bottom: var(--fd-stack-lg);
    border: 6px solid color-mix(in srgb, var(--primary-container) 35%, transparent);
    border-radius: 50%;
    background: var(--surface-container-lowest);
    box-shadow: 0 12px 28px rgba(0, 107, 93, .13);
}

.fd-diario-confirmacao-estrela {
    color: var(--tertiary-container);
    font-size: 76px;
    font-variation-settings: 'FILL' 1;
}

.fd-diario-confirmacao-envelope {
    position: absolute;
    right: 22px;
    bottom: 20px;
    width: 42px;
    height: 42px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--primary-container);
    color: var(--on-primary-container);
    font-size: 23px;
}

.fd-diario-confirmacao h2 {
    margin: 0 0 var(--fd-stack-sm);
    color: var(--primary);
    font-size: clamp(24px, 7vw, 34px);
}

.fd-diario-confirmacao p {
    max-width: 300px;
    margin: 0 0 var(--fd-stack-lg);
    color: var(--on-surface-variant);
    font-size: 16px;
    line-height: 1.55;
}

.fd-diario-confirmacao-acao {
    width: 100%;
    max-width: 280px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 10px 18px;
    border-radius: var(--fd-rounded-full);
    background: var(--primary-container);
    color: var(--on-primary-container);
    font-size: 14px;
    font-weight: 700;
    text-decoration: none;
}

.fd-cronograma-acoes .fd-estudo-acao-secundaria {
    width: 100%;
}

@media (max-width: 420px) {
    .fd-cronograma-resumo-grid {
        gap: var(--fd-stack-sm);
    }

    .fd-cronograma-resumo-item {
        padding: 10px;
    }

    .fd-cronograma-sessao-card {
        align-items: flex-start;
    }

    .fd-cronograma-sessao-acoes {
        flex-direction: column;
        align-items: stretch;
    }

    .fd-cronograma-sessao-acoes a {
        text-align: center;
    }
}

/*
 * ─── Diário de Aprendizado — formulário dedicado ─────────────────────
 * curso_diario_formulario.php (2026-08-25, botão "Enviar Diário" no
 * Detalhe do Curso) — segue `Cursos - diario_de_aprendizado`.
 * Reaproveita .fd-form-card/.fd-form-field/.fd-form-input/
 * .fd-form-actions/.fd-form-btn-* (já usados nos outros formulários de
 * Cursos) — só o que é NOVO desta tela ganha classe própria aqui.
 */
.fd-diario-info {
    background: var(--surface-container-lowest);
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded-lg);
    padding: var(--fd-stack-md);
    display: flex;
    flex-direction: column;
    gap: var(--fd-stack-sm);
    margin-bottom: 10px;
}

.fd-diario-info-linha {
    display: flex;
    align-items: flex-start;
    gap: var(--fd-stack-sm);
}

.fd-diario-info-linha:last-child:not(:first-child) {
    padding-top: var(--fd-stack-sm);
    border-top: 1px solid var(--outline-variant);
}

.fd-diario-info-linha .material-symbols-outlined {
    color: var(--primary);
    font-size: 20px;
}

.fd-diario-info-label {
    margin: 0 0 2px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .02em;
    color: var(--on-surface-variant);
}

.fd-diario-info-valor {
    margin: 0;
    font-size: 14px;
    font-weight: 600;
    color: var(--on-surface);
}

.fd-diario-titulo {
    margin: 0 0 var(--fd-stack-md);
    text-align: center;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 20px;
    color: var(--primary);
}

.fd-diario-modos {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
    margin-bottom: var(--fd-stack-md);
    padding: 4px;
    background: var(--surface-container-low);
    border-radius: var(--fd-rounded-full);
}

.fd-diario-modo {
    min-height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    border: 0;
    border-radius: var(--fd-rounded-full);
    background: transparent;
    color: var(--on-surface-variant);
    font-family: var(--font-body);
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
}

.fd-diario-modo .material-symbols-outlined {
    font-size: 18px;
}

.fd-diario-modo.is-active {
    background: var(--surface-container-lowest);
    color: var(--primary);
}

.fd-diario-modo:disabled {
    opacity: .5;
    cursor: not-allowed;
}

.fd-diario-audio[hidden] {
    display: none;
}

.fd-diario-audio {
    display: grid;
    grid-template-columns: auto 52px;
    align-items: center;
    gap: var(--fd-stack-sm) var(--fd-stack-md);
    margin-bottom: var(--fd-stack-md);
    padding: var(--fd-stack-md);
    background: var(--surface-container-low);
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded-lg);
}

.fd-diario-gravar {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    border: 0;
    border-radius: var(--fd-rounded-full);
    background: var(--primary);
    color: var(--on-primary);
    font-family: var(--font-body);
    font-weight: 700;
    cursor: pointer;
}

.fd-diario-gravar.is-recording {
    background: var(--error);
}

.fd-diario-gravar:disabled {
    opacity: .65;
    cursor: wait;
}

.fd-diario-tempo {
    margin: 0;
    font-size: 13px;
    font-weight: 700;
    text-align: right;
    color: var(--on-surface);
}

.fd-diario-player,
.fd-diario-audio-status {
    grid-column: 1 / -1;
}

.fd-diario-player {
    width: 100%;
    height: 38px;
}

.fd-diario-audio-status {
    margin: 0;
    font-size: 12px;
    line-height: 1.4;
    color: var(--on-surface-variant);
}

.fd-diario-textarea {
    resize: none;
    min-height: 160px;
}

.fd-diario-contador {
    margin: 6px 0 0;
    text-align: right;
    font-size: 12px;
    color: var(--on-surface-variant);
}

.fd-diario-aviso {
    display: flex;
    align-items: flex-start;
    gap: var(--fd-stack-sm);
    background: var(--surface-container-low);
    border-radius: var(--fd-rounded);
    padding: var(--fd-stack-sm);
    margin-top: var(--fd-stack-md);
}

.fd-diario-aviso .material-symbols-outlined {
    font-size: 18px;
    color: var(--on-surface-variant);
    flex-shrink: 0;
}

.fd-diario-aviso p {
    margin: 0;
    font-size: 12px;
    line-height: 1.4;
    color: var(--on-surface-variant);
}

/* ─── Densidade Essencial ─────────────────────────────────────────── */
[data-density="essencial"] .fd-curso-card-meta {
    display: none;
}

[data-density="essencial"] .fd-curso-card-title {
    font-size: 18px;
}

[data-density="essencial"] .fd-curso-card-cta {
    min-height: var(--fd-touch-target);
    display: inline-flex;
    align-items: center;
}

/* ════════════════════════════════════════════════════════════════════
   Cadastro rápido de módulos/capítulos — toggle Manual/Lote (2026-08-24)
   ════════════════════════════════════════════════════════════════════
   curso_modulo_formulario.php / curso_capitulo_formulario.php (em
   "novo" só) — 2 forms + 2 blocos de ação convivem no DOM, alternados
   só com CSS via `:has()` (mesmo padrão já usado em `.fd-choice-card`
   do onboarding) — sem JS novo, funciona mesmo sem JavaScript (o rádio
   "Manual" já nasce marcado no HTML).

   Atualização 2026-08-25 (pedido da Cristiane, com evidência de "Novo
   módulo"): botão "Manual" saía roxo/azul em vez do verde padrão do
   projeto. Mesma causa-raiz já corrigida em `.fd-form-*`/`.fd-section-
   title`/módulos-capítulos em 24-25/08 (ver PENDENCIAS.md): esta tela
   usa `_app_shell`, que nunca passa `data-layout`, então `--color-
   primary` (e os outros tokens antigos aqui) resolviam pela combinação
   errada `[data-layout="light"][data-theme="jornada_vibrante"]` (roxo),
   não pelo tema realmente selecionado. Migrado pros tokens novos
   (Material Design 3), consistentes em qualquer tema. Aproveitado pra
   também aumentar o respiro entre título da tela ↔ toggle ↔ campo
   "Nome do módulo" ↔ rodapé de ações, mesmo pedido. */

.fd-form-modo {
    display: flex;
    gap: 8px;
    margin: 28px 18px 8px;
}

.fd-form-modo-opcao {
    position: relative;
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    height: 44px;
    border-radius: var(--fd-rounded-md);
    border: 1px solid var(--outline-variant);
    background: var(--surface-container-low);
    color: var(--on-surface-variant);
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
}

.fd-form-modo-opcao input {
    position: absolute;
    inset: 0;
    opacity: 0;
    margin: 0;
    cursor: pointer;
}

.fd-form-modo-opcao:has(input:checked) {
    background: var(--primary);
    border-color: var(--primary);
    color: var(--on-primary);
}

/* Rodapé Cancelar/Salvar (e Cadastrar lista) do toggle Manual/Cadastro
   rápido — mais respiro em relação à dica ("Ordem"/lista) acima, mesmo
   pedido de 2026-08-25 acima. Modificador: não mexe no `.fd-form-
   actions` base (rodapé simples de "editar", sem toggle, deve continuar
   igual). */
.fd-form-actions.fd-form-modo-manual,
.fd-form-actions.fd-form-modo-lote {
    margin-top: 8px;
}

.fd-form-input--lista {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 13px;
    line-height: 1.5;
}

/* Painel "Cadastro rápido" começa escondido — só aparece quando o
   rádio correspondente está marcado. */
.fd-form-modo-wrap .fd-form-modo-lote {
    display: none;
}

.fd-form-modo-wrap:has(input[value="lote"]:checked) .fd-form-modo-manual {
    display: none;
}

.fd-form-modo-wrap:has(input[value="lote"]:checked) .fd-form-modo-lote {
    display: block;
}

.fd-form-modo-wrap:has(input[value="lote"]:checked) .fd-form-actions.fd-form-modo-lote {
    display: flex;
}

/*
 * ─── Conteúdo do curso — cadastro inline de módulo/capítulo ─────────
 * Atualização 2026-08-24 (pedido da Cristiane): cursos_conteudo.php
 * trocou o botão "Editar" + tag de status "Pendente"/"Concluído" por
 * Nome/Descrição/Ordem editáveis direto na linha (mesmos campos do
 * formulário de edição) e ganhou um ícone de marcador no nome do
 * módulo + um <details>/<summary> nativo pra expandir/recolher os
 * capítulos (sem JS novo, mesmo espírito de .fd-form-modo:has()).
 *
 * Atualização 2026-08-24 (2), a partir do feedback da Cristiane com
 * screenshot: trocado o botão "Salvar" por auto-save de verdade (ver
 * FD_APP.initItemEdicaoAutoSave() em app.js — dispara quando o foco
 * sai do item, não a cada campo). Nome virou input editável e foi pro
 * topo junto com Ordem (.fd-item-edicao-topo); Excluir foi pro rodapé
 * do item, dentro de .fd-curso-actions — na 1ª versão o botão estava
 * FORA dessa classe (só ela dá borda/fundo/padding ao botão), por isso
 * tinha ficado sem estilo nenhum. Os campos também ganharam fundo
 * branco fixo — o `.fd-form-input` padrão usa `--color-bg`, que nesse
 * contexto (dentro do card/linha, também `--color-bg`/`--color-surface`)
 * ficava com a MESMA cor do fundo em volta, sem contraste nenhum.
 */
/*
 * ─── Grade do card de módulo/capítulo (Nome/Ordem/Descrição/Excluir) ─
 * Atualização 2026-08-24 (8): a Cristiane pediu que, no mobile, o campo
 * "Ordem" saia de perto do Nome (onde reduzia o espaço do título) e vá
 * pra última linha, ao lado do botão Excluir, alinhado à esquerda —
 * pra dar mais espaço de edição pro título de módulo/capítulo.
 *
 * Antes disso, `.fd-item-edicao` (o <form>) e `.fd-item-edicao-topo`
 * eram flexbox comuns, com Nome/Ordem lado a lado dentro do MESMO
 * elemento. O botão Excluir mora num <form> SEPARADO (form próprio de
 * exclusão, fora do form de edição) — não dá pra colocar Ordem e
 * Excluir lado a lado com flexbox comum porque eles pertencem a dois
 * <form>s diferentes, em ramos diferentes do HTML.
 *
 * Solução: `.fd-item-edicao-bloco` virou um CSS Grid, e o <form> de
 * edição + `.fd-item-edicao-topo` viraram `display: contents` — isso
 * "dissolve" a caixa deles sem tirar nada do HTML/do form em si (ainda
 * funcionam normalmente pro auto-save/CSRF/submit), só faz os FILHOS
 * deles (ícone, título, Ordem, Descrição) virarem itens diretos do
 * grid, ao lado do bloco de Excluir (que já é filho direto do
 * `.fd-item-edicao-bloco`). Cada peça recebe um `grid-area` nomeado
 * (ver `.fd-modulo-marcador`/`.fd-titulo-dica`/`.fd-item-edicao-ordem`/
 * `.fd-form-field`/`.fd-item-edicao-excluir` abaixo) e o layout muda só
 * TROCANDO `grid-template-areas` por breakpoint — no desktop (padrão
 * abaixo) o resultado visual é IDÊNTICO ao de antes (ícone, título e
 * Ordem na mesma linha); só o `@media (max-width: 767px)` no fim deste
 * bloco mexe na posição de Ordem.
 */
.fd-item-edicao-bloco {
    display: grid;
    grid-template-columns: auto 1fr auto;
    grid-template-areas:
        "icone titulo ordem"
        "descricao descricao descricao"
        ".     .      excluir";
    column-gap: 10px;
    row-gap: 10px;
    align-items: center;
    margin: 0 0 14px;
}

.fd-item-edicao-bloco > form.fd-item-edicao {
    display: contents;
}

.fd-item-edicao-bloco .fd-item-edicao-topo {
    display: contents;
}

.fd-item-edicao-titulo {
    width: 100%;
    font-weight: 700;
}

/* Migrado pra --on-surface-variant em 2026-08-25 — mesma causa raiz
   das outras classes de módulo/capítulo migradas junto (ver comentário
   de .fd-resumo-ia mais acima). */
.fd-item-edicao-ordem {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--on-surface-variant);
    white-space: nowrap;
    grid-area: ordem;
    justify-self: end;
}

.fd-item-edicao-ordem input {
    width: 52px;
    padding: 6px 4px;
    text-align: center;
}

/* Atualização 2026-08-24 (8): no mobile, Ordem sai da linha do título e
   desce pra última linha, ao lado de Excluir, alinhado à esquerda —
   ver comentário completo acima de .fd-item-edicao-bloco. */
@media (max-width: 767px) {
    .fd-item-edicao-bloco {
        grid-template-areas:
            "icone  titulo titulo"
            "descricao descricao descricao"
            "ordem  ordem  excluir";
    }

    .fd-item-edicao-ordem {
        justify-self: start;
    }
}

/*
 * ─── "Hospedeiro" do tooltip de auto-save (fd-campo-dica-host) ──────
 * Atualização 2026-08-24 (5): o balão de [data-tooltip] (ver bloco lá
 * embaixo) é um `::after` — e `::before`/`::after` simplesmente NÃO
 * renderizam em <input>/<textarea> (elementos "substituídos" pra fins
 * de CSS, sem caixa de conteúdo pro pseudo-elemento aparecer; só
 * funcionava no botão Excluir porque ali é um <button>, que não tem
 * essa limitação). Resultado: o auto-save salvava de verdade, mas o
 * balão de confirmação nunca aparecia — reportado pela Cristiane
 * ("alterações silenciosas, sem notificação"). Corrigido envolvendo
 * cada campo editável (Nome/Ordem/Descrição, em cursos_conteudo.php)
 * num <span>/<div> que carrega o `data-tooltip`/classe no lugar do
 * campo em si — FD_APP.mostrarDicaCampo() em app.js já procura esse
 * "host" (`.fd-campo-dica-host`) antes de cair no campo direto.
 */
.fd-campo-dica-host {
    position: relative;
}

.fd-titulo-dica {
    display: block;
    min-width: 0;
    grid-area: titulo;
}

.fd-ordem-dica {
    display: inline-block;
}

.fd-descricao-dica {
    display: block;
}

.fd-item-edicao .fd-form-field {
    margin-bottom: 0;
}

/* Atualização 2026-08-24 (8): .fd-form-field (o bloco "Descrição") é
   item direto do grid de .fd-item-edicao-bloco agora — ver comentário
   grande lá em cima. Selector escopado (não é .fd-form-field sozinho)
   porque essa classe é reaproveitada em VÁRIOS outros formulários do
   app — não pode ganhar grid-area fora deste contexto específico. */
.fd-item-edicao-bloco .fd-form-field {
    grid-area: descricao;
}

/* Removido em 2026-08-25 (branco fixo, `#ffffff`/`#1b1b1b`, sem relação
   com tema nenhum) — era necessário quando esta regra foi escrita em
   24/08 porque `.fd-form-input` E o card em volta (`.fd-modulo-card`/
   `.fd-capitulo-row`) usavam os MESMOS tokens antigos (`--color-bg`),
   então o campo ficava sem contraste nenhum contra o fundo. Hoje os 2
   lados já foram migrados pros tokens Material Design 3 (`.fd-form-input`
   usa `--surface-container-low`, `.fd-modulo-card`/`.fd-capitulo-row`
   usam `--surface-container-lowest`/`--surface-container` — ver
   migração logo acima) — já nascem em tons diferentes um do outro nos
   2 temas, então o branco fixo não faz mais falta. Pior: ele passou a
   ATRAPALHAR — reportado pela Cristiane como "módulos totalmente fora
   do padrão" no Tema Escuro, campo branco-vivo cravado dentro de um
   card escuro. */

.fd-item-edicao-excluir {
    justify-content: flex-end;
    grid-area: excluir;
    justify-self: end;
    margin-top: 0;
}

/* .fd-modulo-marcador/.fd-modulo-capitulos-toggle migrados pros
   tokens Material Design 3 em 2026-08-25 — mesma causa raiz das
   outras classes desta seção. */
.fd-modulo-marcador {
    flex-shrink: 0;
    font-size: 20px;
    color: var(--primary);
    grid-area: icone;
}

.fd-modulo-capitulos {
    margin-top: 4px;
}

.fd-modulo-capitulos-toggle {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 8px 0;
    font-size: 13px;
    font-weight: 700;
    color: var(--on-surface-variant);
    cursor: pointer;
    list-style: none;
    border-radius: var(--fd-rounded-sm);
    outline: none;
}

/* Substitui o retângulo preto nativo do navegador por um indicador de
   foco acessível e coerente com os demais campos do projeto. */
.fd-modulo-capitulos-toggle:focus-visible {
    outline: 2px solid var(--primary);
    outline-offset: 2px;
}

/* Separa visualmente o seletor/expansor do primeiro capítulo sem criar
   espaço vazio quando a lista estiver recolhida. */
.fd-modulo-capitulos[open] .fd-modulo-capitulos-toggle {
    margin-bottom: 10px;
}

.fd-modulo-capitulos-toggle::-webkit-details-marker {
    display: none;
}

.fd-modulo-capitulos-seta {
    font-size: 20px;
    transition: transform .15s ease;
}

.fd-modulo-capitulos[open] .fd-modulo-capitulos-seta {
    transform: rotate(180deg);
}

/*
 * ─── Excluir com destaque de perigo — módulo/capítulo (cursos_conteudo.php) ───
 * Atualização 2026-08-24: a Cristiane reportou que o botão "Excluir"
 * ficou sem NENHUMA cor de destaque nem ícone (a correção anterior só
 * tinha resolvido o botão estar sem borda/fundo nenhum — ele ainda
 * usava a mesma cor neutra de ".fd-curso-actions .fd-acao-excluir",
 * usada em telas onde excluir divide espaço com "Editar" e não precisa
 * chamar tanta atenção). Aqui, dentro de ".fd-item-edicao-excluir", o
 * botão vira vermelho de propósito (mesmo par de cor já usado em
 * ".fd-status-badge--rejeitado", não uma cor nova) + ícone de lixeira
 * (`material-symbols-outlined`) + hover mais escuro. Escopado só pra
 * esse contexto — não muda o Excluir neutro usado em outras telas
 * (aprovacoes.php, cursos_index.php etc.).
 */
.fd-item-edicao-excluir .fd-acao-excluir {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: #FEE2E2;
    color: #991B1B;
    border: 1px solid #F3C9C9;
    transition: background-color .15s ease, border-color .15s ease;
}

.fd-item-edicao-excluir .fd-acao-excluir:hover {
    background: #FECACA;
    border-color: #F87171;
}

.fd-item-edicao-excluir .fd-acao-excluir .material-symbols-outlined {
    font-size: 16px;
}

/*
 * ─── Ajustar Cronograma ───────────────────────────────────────────
 * curso_cronograma_formulario.php (2026-08-26, última peça da Fase 4
 * da migração do menu Cursos — ver
 * [[project-facilita-desenvolve-migracao-cursos]]). Segue
 * `Hoje - ajustar_cronograma_revisado` como referência de conteúdo.
 * Reaproveita .fd-form-card/.fd-form-field/.fd-form-label/
 * .fd-form-input/.fd-form-hint/.fd-form-btn-* (já usados nos outros
 * formulários de Cursos) — só o que é NOVO desta tela ganha classe
 * própria aqui.
 */
.fd-cronograma-info {
    display: flex;
    align-items: flex-start;
    gap: var(--fd-stack-sm);
    background: var(--primary-container);
    color: var(--on-primary-container);
    border-radius: var(--fd-rounded-lg);
    padding: var(--fd-stack-md);
    margin: 0 18px var(--fd-stack-md);
}

.fd-cronograma-info .material-symbols-outlined {
    font-size: 22px;
    flex-shrink: 0;
}

.fd-cronograma-info p {
    margin: 0;
    font-size: 14px;
}

/* Seletor de dias da semana — checkbox real escondido (acessível,
   focável) + label em pílula fazendo a vez do controle visual, mesmo
   raciocínio de outros toggles do app (ex. .fd-form-modo-opcao). */
.fd-cronograma-dias {
    display: flex;
    justify-content: space-between;
    gap: 6px;
}

.fd-cronograma-dia {
    flex: 1;
    position: relative;
}

.fd-cronograma-dia-input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.fd-cronograma-dia-label {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 40px;
    border-radius: var(--fd-rounded-full);
    border: 1px solid var(--outline-variant);
    color: var(--on-surface-variant);
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}

.fd-cronograma-dia-input:checked + .fd-cronograma-dia-label {
    background: var(--primary);
    border-color: var(--primary);
    color: var(--on-primary);
}

.fd-cronograma-dia-input:focus-visible + .fd-cronograma-dia-label {
    outline: 2px solid var(--primary-container);
    outline-offset: 2px;
}

.fd-cronograma-campos {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--fd-stack-md);
}

@media (max-width: 767px) {
    .fd-cronograma-campos {
        grid-template-columns: 1fr;
    }
}

.fd-cronograma-marcos {
    margin: var(--fd-stack-lg) 18px 0;
    display: flex;
    flex-direction: column;
    gap: var(--fd-stack-sm);
}

.fd-cronograma-marcos-topo {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--fd-stack-sm);
}

.fd-cronograma-marcos-titulo {
    margin: 0;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 18px;
    color: var(--on-surface);
}

.fd-cronograma-ver-todos {
    font-size: 13px;
    font-weight: 700;
    color: var(--primary);
    text-decoration: none;
}

.fd-cronograma-ver-todos:hover {
    text-decoration: underline;
}

.fd-cronograma-marcos-lista {
    display: flex;
    flex-direction: column;
    gap: var(--fd-stack-sm);
    margin-bottom: 10px;
}

.fd-cronograma-marco {
    display: flex;
    align-items: center;
    gap: var(--fd-stack-md);
    background: var(--surface-container-lowest);
    border: 1px solid var(--outline-variant);
    border-radius: var(--fd-rounded-lg);
    padding: 10px var(--fd-stack-md);
}

.fd-cronograma-marco-indice {
    width: 40px;
    height: 40px;
    border-radius: var(--fd-rounded-full);
    background: var(--primary-container);
    color: var(--on-primary-container);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 700;
    flex-shrink: 0;
}

.fd-cronograma-marco-main {
    min-width: 0;
    flex: 1;
}

.fd-cronograma-marco-nome {
    margin: 0;
    font-size: 14px;
    font-weight: 700;
    color: var(--on-surface);
}

.fd-cronograma-marco-periodo {
    margin: 2px 0 0;
    font-size: 13px;
    color: var(--on-surface-variant);
}

.fd-cronograma-marco-editar {
    width: 40px;
    height: 40px;
    border-radius: var(--fd-rounded-full);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--on-surface-variant);
    flex-shrink: 0;
    transition: background-color .15s ease;
}

.fd-cronograma-marco-editar:hover {
    background: var(--surface-container-low);
}

.fd-cronograma-rodape {
    margin: 0 18px 20px;
}

/* Botões de ação com ícone (Salvar/Restaurar) — class própria em vez
   de depender do ancestral, já que "Salvar Cronograma" fica dentro do
   `.fd-form-actions` padrão (ao lado do Cancelar) e "Restaurar
   Recomendação" fica sozinho, full-width, logo abaixo. */
.fd-cronograma-btn-acao {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    width: 100%;
}

.fd-cronograma-btn-acao .material-symbols-outlined {
    font-size: 18px;
}

/* ─── Formulário guiado da Central de Atividades ─────────────────
   O seletor de tipo é a assinatura visual da tela. O restante usa os
   tokens M3 existentes para continuar coerente nos três temas. */
.fd-atividade-form {
    --atividade-accent: var(--primary);
    --atividade-accent-soft: var(--primary-container);
    width: min(100% - 36px, 1040px);
    margin: 24px auto 0;
}

.fd-atividade-form[data-tipo="fisica"] { --atividade-accent: #e7604a; --atividade-accent-soft: #ffe0da; }
.fd-atividade-form[data-tipo="domestica"] { --atividade-accent: #b86a00; --atividade-accent-soft: #ffddb3; }
.fd-atividade-form[data-tipo="compromisso"] { --atividade-accent: #3566b8; --atividade-accent-soft: #d9e6ff; }
.fd-atividade-form[data-tipo="exame"] { --atividade-accent: #7556b3; --atividade-accent-soft: #eaddff; }
.fd-atividade-form[data-tipo="consulta"] { --atividade-accent: #22856f; --atividade-accent-soft: #c1f1e4; }

.fd-microtarefas-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.fd-microtarefas-coluna { border: 1px solid var(--border); border-radius: 16px; padding: 16px; background: var(--background); }
.fd-microtarefas-head { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; margin-bottom: 12px; }
.fd-microtarefas-head strong, .fd-microtarefas-head small { display: block; }
.fd-microtarefas-head small { color: var(--muted-foreground); margin-top: 4px; }
.fd-microtarefas-head button, .fd-microtarefas-sugestoes button { border: 0; border-radius: 999px; color: var(--atividade-accent); background: var(--atividade-accent-soft); cursor: pointer; padding: 7px 10px; }
.fd-microtarefas-head button { display: inline-flex; align-items: center; gap: 3px; white-space: nowrap; }
.fd-microtarefas-head .material-symbols-outlined { font-size: 18px; }
.fd-microtarefa-item { display: grid; grid-template-columns: minmax(0, 1fr) auto 36px; gap: 8px; margin-top: 8px; align-items: center; }
.fd-microtarefa-item label { display: flex; align-items: center; gap: 5px; color: var(--muted-foreground); font-size: 12px; white-space: nowrap; }
.fd-microtarefa-item label input { width: 62px; }
.fd-microtarefa-item > button { border: 0; background: transparent; color: var(--muted-foreground); cursor: pointer; padding: 6px; }
.fd-microtarefas-sugestoes { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 12px; }
.fd-microtarefas-sugestoes small { color: var(--muted-foreground); }
.fd-microtarefas-sugestoes button { font-size: 12px; padding: 6px 9px; }
@media (max-width: 767px) { .fd-microtarefas-grid { grid-template-columns: 1fr; } .fd-microtarefa-item { grid-template-columns: minmax(0, 1fr) 36px; } .fd-microtarefa-item label { grid-column: 1 / -1; grid-row: 2; } }

.fd-card-microtarefas { min-width: 0; margin-top: 16px; padding: 14px; border: 1px solid color-mix(in srgb, var(--atividade-accent, var(--primary)) 16%, var(--outline-variant)); border-radius: 14px; background: color-mix(in srgb, var(--atividade-accent-soft, var(--primary-container)) 22%, var(--surface-container-lowest)); display: grid; gap: 12px; }
.fd-hoje-agenda-item > .fd-card-microtarefas { grid-column: 1 / -1; width: 100%; margin-top: 2px; }
.fd-card-microtarefas-resumo { display: flex; align-items: center; gap: 7px; }
.fd-card-microtarefas-resumo > .material-symbols-outlined { display: grid; place-items: center; width: 32px; height: 32px; flex: 0 0 32px; border-radius: 10px; background: var(--atividade-accent-soft, var(--primary-container)); font-size: 18px; color: var(--atividade-accent, var(--primary)); }
.fd-card-microtarefas-resumo > span:not(.material-symbols-outlined):not(.fd-card-microtarefas-feedback) { min-width: 0; }
.fd-card-microtarefas-resumo strong, .fd-card-microtarefas-resumo small { display: block; }
.fd-card-microtarefas-resumo strong { color: var(--on-surface); font-size: 13px; }
.fd-card-microtarefas-resumo small { margin-top: 1px; color: var(--muted-foreground); font-size: 11px; }
.fd-card-microtarefas-resumo em { margin-left: auto; padding: 4px 8px; border-radius: 999px; background: var(--surface-container-lowest); color: var(--on-surface-variant); font-size: 11px; font-style: normal; font-weight: 750; white-space: nowrap; }
.fd-card-microtarefas-feedback { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.fd-card-microtarefa.is-saving { opacity: .68; }
.fd-card-microtarefa-acoes button:disabled { cursor: wait; opacity: .55; }
.fd-card-microtarefas-grupo { display: grid; gap: 6px; }
.fd-card-microtarefas-etapa { width: fit-content; padding: 3px 7px; border-radius: 999px; color: var(--atividade-accent, var(--primary)); background: var(--atividade-accent-soft, var(--primary-container)); font-size: 9px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.fd-card-microtarefa { display: grid; grid-template-columns: 22px minmax(0, 1fr) auto auto; align-items: center; gap: 10px; min-height: 54px; padding: 8px 10px; border: 1px solid var(--outline-variant); border-radius: 11px; background: var(--surface-container-lowest); }
.fd-card-microtarefa-status { font-size: 19px; color: var(--muted-foreground); }
.fd-card-microtarefa-titulo { min-width: 0; }
.fd-card-microtarefa-titulo > strong, .fd-card-microtarefa-titulo > small { display: block; }
.fd-card-microtarefa-titulo > strong { overflow-wrap: anywhere; font-size: 13px; line-height: 1.3; }
.fd-card-microtarefa-titulo > small { margin-top: 2px; color: var(--muted-foreground); font-size: 11px; }
.fd-card-microtarefa-data { display: inline-flex; align-items: center; gap: 4px; color: var(--on-surface-variant); font-size: 11px; font-weight: 750; white-space: nowrap; }
.fd-card-microtarefa-data .material-symbols-outlined { color: var(--atividade-accent, var(--primary)); font-size: 15px; }
.fd-card-microtarefa-acoes { display: flex; align-items: center; justify-content: center; gap: 5px; }
.fd-card-microtarefa-acoes form { margin: 0; }
.fd-card-microtarefa-acoes button { width: 40px; height: 40px; padding: 0; border: 1px solid var(--border); border-radius: 9px; background: var(--background); color: var(--foreground); cursor: pointer; display: inline-grid; place-items: center; }
.fd-card-microtarefa-acoes button .material-symbols-outlined { font-size: 17px; }
.fd-card-microtarefa-acoes button.is-concluida { color: #18705d; border-color: #87cbbb; }
.fd-card-microtarefa-acoes button.is-cancelada { color: #8a4a4a; border-color: #d8abab; }
.fd-card-microtarefa.is-concluida { background: color-mix(in srgb, #58b69e 14%, var(--background)); }
.fd-card-microtarefa.is-cancelada { opacity: .72; }
.fd-card-microtarefa.is-concluida .fd-card-microtarefa-status { color: #22856f; }
.fd-card-microtarefa.is-cancelada .fd-card-microtarefa-status { color: #9b5a5a; }
.fd-card-microtarefa-estado { justify-self: center; font-size: 12px; font-weight: 700; color: var(--muted-foreground); }
@media (max-width: 620px) {
    .fd-card-microtarefas { padding: 11px; }
    .fd-card-microtarefas-resumo { align-items: flex-start; flex-wrap: wrap; }
    .fd-card-microtarefas-resumo em { margin-left: 39px; }
    .fd-card-microtarefa { grid-template-columns: 20px minmax(0, 1fr); gap: 6px 8px; }
    .fd-card-microtarefa-data, .fd-card-microtarefa-acoes, .fd-card-microtarefa-estado { grid-column: 2; justify-self: start; }
    .fd-card-microtarefa-acoes { gap: 5px; }
    .fd-card-microtarefa-acoes button { width: 40px; height: 40px; }
}
.fd-atividade-form[data-tipo="medicacao"] { --atividade-accent: #a84d78; --atividade-accent-soft: #ffd8e9; }

[data-theme="jornada_vibrante"] .fd-atividade-form {
    --atividade-accent-soft: color-mix(in srgb, var(--atividade-accent) 20%, var(--surface-container-lowest));
}

.fd-atividade-hero {
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    min-height: 168px;
    padding: 28px 32px;
    margin-bottom: 24px;
    color: var(--on-surface);
    background: linear-gradient(125deg, var(--atividade-accent-soft), var(--surface-container-lowest) 76%);
    border: 1px solid color-mix(in srgb, var(--atividade-accent) 24%, var(--outline-variant));
    border-radius: 28px;
}

.fd-atividade-hero::after {
    content: "";
    position: absolute;
    width: 190px;
    height: 190px;
    right: -72px;
    bottom: -105px;
    border: 28px solid color-mix(in srgb, var(--atividade-accent) 14%, transparent);
    border-radius: 50%;
}

.fd-atividade-eyebrow {
    display: inline-flex;
    margin-bottom: 8px;
    font-size: 12px;
    line-height: 1;
    font-weight: 800;
    letter-spacing: .11em;
    text-transform: uppercase;
    color: var(--atividade-accent);
}

.fd-atividade-hero-title {
    margin: 0;
    max-width: 650px;
    font-family: var(--font-heading);
    font-size: clamp(26px, 4vw, 38px);
    line-height: 1.08;
    letter-spacing: -.025em;
}

.fd-atividade-hero-copy {
    max-width: 650px;
    margin: 12px 0 0;
    color: var(--on-surface-variant);
    font-size: 15px;
    line-height: 1.55;
}

.fd-atividade-hero-icon {
    position: relative;
    z-index: 1;
    display: grid;
    place-items: center;
    flex: 0 0 78px;
    width: 78px;
    height: 78px;
    font-size: 40px;
    color: var(--atividade-accent);
    background: color-mix(in srgb, var(--surface-container-lowest) 82%, transparent);
    border: 1px solid color-mix(in srgb, var(--atividade-accent) 28%, transparent);
    border-radius: 24px;
    box-shadow: 0 14px 34px color-mix(in srgb, var(--atividade-accent) 16%, transparent);
}

.fd-atividade-tipos {
    padding: 0;
    margin: 0 0 24px;
    border: 0;
}

.fd-atividade-section-title {
    display: block;
    width: 100%;
    padding: 0;
    margin: 0 0 12px;
    font-family: var(--font-heading);
    font-size: 16px;
    font-weight: 800;
    color: var(--on-surface);
}

.fd-atividade-tipos-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
}

.fd-atividade-tipo {
    --tipo-cor: var(--primary);
    --tipo-fundo: var(--primary-container);
    position: relative;
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr);
    grid-template-rows: auto auto;
    column-gap: 12px;
    align-items: center;
    min-height: 92px;
    padding: 14px;
    color: var(--on-surface);
    background: var(--surface-container-lowest);
    border: 1px solid var(--outline-variant);
    border-radius: 18px;
    cursor: pointer;
    transition: border-color .18s ease, transform .18s ease, box-shadow .18s ease, background-color .18s ease;
}

.fd-atividade-tipo--coral { --tipo-cor: #d95540; --tipo-fundo: #ffe0da; }
.fd-atividade-tipo--ambar { --tipo-cor: #a96100; --tipo-fundo: #ffddb3; }
.fd-atividade-tipo--azul { --tipo-cor: #3566b8; --tipo-fundo: #d9e6ff; }
.fd-atividade-tipo--violeta { --tipo-cor: #7556b3; --tipo-fundo: #eaddff; }
.fd-atividade-tipo--verde { --tipo-cor: #197965; --tipo-fundo: #c1f1e4; }
.fd-atividade-tipo--rosa { --tipo-cor: #a84d78; --tipo-fundo: #ffd8e9; }

.fd-atividade-tipo:hover { transform: translateY(-2px); border-color: color-mix(in srgb, var(--tipo-cor) 55%, var(--outline-variant)); }
.fd-atividade-tipo:has(input:checked) { background: color-mix(in srgb, var(--tipo-fundo) 68%, var(--surface-container-lowest)); border-color: var(--tipo-cor); box-shadow: 0 8px 22px color-mix(in srgb, var(--tipo-cor) 13%, transparent); }
.fd-atividade-tipo:has(input:focus-visible) { outline: 3px solid color-mix(in srgb, var(--tipo-cor) 38%, transparent); outline-offset: 2px; }
.fd-atividade-tipo input { position: absolute; opacity: 0; pointer-events: none; }
.fd-atividade-tipo-icon { grid-row: 1 / 3; display: grid; place-items: center; width: 44px; height: 44px; color: var(--tipo-cor); background: var(--tipo-fundo); border-radius: 14px; font-size: 24px; }
.fd-atividade-tipo strong { align-self: end; font-size: 14px; line-height: 1.25; }
.fd-atividade-tipo small { align-self: start; margin-top: 3px; color: var(--on-surface-variant); font-size: 11px; line-height: 1.3; }
.fd-atividade-tipo-check { position: absolute; top: 8px; right: 8px; display: none; color: var(--tipo-cor); font-size: 18px; }
.fd-atividade-tipo:has(input:checked) .fd-atividade-tipo-check { display: block; }

.fd-atividade-section {
    margin-bottom: 18px;
    background: var(--surface-container-lowest);
    border: 1px solid var(--outline-variant);
    border-radius: 22px;
    box-shadow: 0 3px 14px color-mix(in srgb, var(--on-surface) 5%, transparent);
}

.fd-atividade-section-head {
    display: flex;
    align-items: center;
    gap: 13px;
    padding: 18px 22px;
    border-bottom: 1px solid var(--outline-variant);
}

.fd-atividade-section-icon { display: grid; place-items: center; flex: 0 0 38px; width: 38px; height: 38px; color: var(--atividade-accent); background: var(--atividade-accent-soft); border-radius: 12px; font-size: 21px; }
.fd-atividade-section-head h2 { margin: 0; font-family: var(--font-heading); font-size: 17px; line-height: 1.25; color: var(--on-surface); }
.fd-atividade-section-head p { margin: 3px 0 0; color: var(--on-surface-variant); font-size: 12px; line-height: 1.35; }
.fd-atividade-section-body { padding: 22px; }
.fd-atividade-section-body .fd-form-field { margin: 0; }
.fd-atividade-grid-2, .fd-atividade-grid-3 { display: grid; gap: 18px; }
.fd-atividade-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.fd-atividade-place-field { min-width: 0; }
.fd-atividade-place-control { position: relative; }
.fd-atividade-place-control > .material-symbols-outlined { position: absolute; z-index: 2; top: 50%; left: 13px; color: var(--primary); font-size: 20px; transform: translateY(-50%); pointer-events: none; }
.fd-atividade-place-control > .fd-form-input { padding-left: 43px; }
.fd-atividade-place-widget { width: 100%; }
.fd-atividade-place-widget gmp-place-autocomplete { box-sizing: border-box; width: 100%; min-height: 46px; color-scheme: light; }
.fd-atividade-place-field.is-google-ready .fd-atividade-place-control > .material-symbols-outlined { display: none; }
.fd-atividade-place-status.is-success { color: var(--primary); font-weight: 700; }
.fd-atividade-place-status.is-error { color: var(--error); }
.fd-atividade-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.fd-atividade-field-wide { grid-column: 1 / -1; }
.fd-atividade-input-lg { min-height: 48px; font-size: 16px; font-weight: 650; }
.fd-atividade-section .fd-form-input, .fd-atividade-section .fd-form-select { min-height: 44px; background: var(--surface-container-low); }
.fd-atividade-section textarea.fd-form-input { min-height: 88px; resize: vertical; }

.fd-atividade-dias { display: flex; flex-wrap: wrap; gap: 8px; }
.fd-atividade-dia input { position: absolute; opacity: 0; }
.fd-atividade-dia span { display: grid; place-items: center; width: 38px; height: 38px; color: var(--on-surface-variant); background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 50%; cursor: pointer; font-size: 13px; font-weight: 800; transition: .16s ease; }
.fd-atividade-dia input:checked + span { color: #fff; background: var(--atividade-accent); border-color: var(--atividade-accent); }
.fd-atividade-dia input:focus-visible + span { outline: 3px solid color-mix(in srgb, var(--atividade-accent) 32%, transparent); outline-offset: 2px; }
.fd-atividade-input-suffix { position: relative; }
.fd-atividade-input-suffix .fd-form-input { padding-right: 50px; }
.fd-atividade-input-suffix > span { position: absolute; right: 13px; top: 50%; transform: translateY(-50%); color: var(--on-surface-variant); font-size: 12px; font-weight: 700; }

.fd-atividade-options-grid, .fd-atividade-pessoas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.fd-atividade-option, .fd-atividade-pessoa { position: relative; display: flex; align-items: center; gap: 12px; padding: 14px; color: var(--on-surface); background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 16px; cursor: pointer; }
.fd-atividade-pessoa-wrap { display: grid; min-width: 0; }
.fd-atividade-pessoa-wrap[hidden] { display: none !important; }
.fd-atividade-pessoa-wrap.is-prestador { overflow: hidden; background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-radius: 16px; }
.fd-atividade-pessoa-wrap.is-prestador .fd-atividade-pessoa { border: 0; border-radius: 15px 15px 0 0; }
.fd-atividade-pessoa-nome small { display: block; margin-top: 2px; color: var(--on-surface-variant); font-size: 10px; font-weight: 650; }
.fd-atividade-acordo { display: grid; grid-template-columns: minmax(0, .8fr) minmax(130px, 1.2fr); gap: 9px; padding: 10px 13px 13px; color: var(--on-surface-variant); border-top: 1px solid var(--outline-variant); }
.fd-atividade-acordo label { display: grid; gap: 5px; min-width: 0; font-size: 10px; font-weight: 800; }
.fd-atividade-acordo label > span { display: flex; align-items: center; overflow: hidden; background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 9px; }
.fd-atividade-acordo b { padding-left: 9px; color: var(--primary); font-size: 10px; }
.fd-atividade-acordo input, .fd-atividade-acordo select { box-sizing: border-box; width: 100%; min-width: 0; padding: 8px; color: var(--on-surface); background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 9px; outline: 0; font: 750 11px var(--font-body); }
.fd-atividade-acordo span input { background: transparent; border: 0; border-radius: 0; }
.fd-atividade-acordo input:focus, .fd-atividade-acordo select:focus { border-color: var(--primary); box-shadow: 0 0 0 2px color-mix(in srgb, var(--primary) 18%, transparent); }
.fd-atividade-duration-control { display: grid; grid-template-columns: minmax(0, 1fr) 112px; gap: 8px; }
.fd-atividade-duration-control .fd-form-input, .fd-atividade-duration-control .fd-form-select { min-width: 0; }
.fd-atividade-option:has(input:checked), .fd-atividade-pessoa:has(input:checked) { border-color: var(--atividade-accent); background: color-mix(in srgb, var(--atividade-accent-soft) 55%, var(--surface-container-lowest)); }
.fd-atividade-option input, .fd-atividade-pessoa input { position: absolute; opacity: 0; }
.fd-atividade-option:has(input:focus-visible), .fd-atividade-pessoa:has(input:focus-visible) { outline: 3px solid color-mix(in srgb, var(--atividade-accent) 30%, transparent); outline-offset: 2px; }
.fd-atividade-option-icon { display: grid; place-items: center; flex: 0 0 40px; width: 40px; height: 40px; color: var(--atividade-accent); background: var(--atividade-accent-soft); border-radius: 12px; }
.fd-atividade-option strong, .fd-atividade-option small { display: block; }
.fd-atividade-option strong { font-size: 14px; }
.fd-atividade-option small { margin-top: 3px; color: var(--on-surface-variant); font-size: 12px; line-height: 1.3; }
.fd-atividade-pessoa-avatar { display: grid; place-items: center; flex: 0 0 40px; width: 40px; height: 40px; color: var(--on-primary); background: var(--primary); border-radius: 50%; font-weight: 800; }
.fd-atividade-pessoa-nome { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; font-weight: 700; }
.fd-atividade-pessoa-check { margin-left: auto; color: var(--outline); }
.fd-atividade-pessoa:has(input:checked) .fd-atividade-pessoa-check { color: var(--atividade-accent); font-variation-settings: "FILL" 1; }
.fd-atividade-empty { display: grid; justify-items: center; gap: 6px; padding: 24px; text-align: center; color: var(--on-surface-variant); background: var(--surface-container-low); border: 1px dashed var(--outline); border-radius: 16px; }
.fd-atividade-empty > span { font-size: 30px; }
.fd-atividade-empty p { margin: 0; }
.fd-atividade-empty a { color: var(--primary); font-size: 13px; font-weight: 800; }

.fd-atividade-actions { position: sticky; z-index: 5; bottom: 0; display: flex; justify-content: flex-end; gap: 12px; width: min(100% - 36px, 1040px); padding: 14px 0 calc(14px + env(safe-area-inset-bottom)); margin: 0 auto; background: color-mix(in srgb, var(--surface) 91%, transparent); backdrop-filter: blur(12px); }
.fd-atividade-actions .fd-form-btn-primary, .fd-atividade-actions .fd-form-btn-secondary { width: auto; min-width: 150px; margin: 0; }
.fd-atividade-actions .fd-form-btn-primary { display: inline-flex; align-items: center; justify-content: center; gap: 7px; }
.fd-atividade-actions .material-symbols-outlined { font-size: 19px; }
[data-atividade-campo][hidden], [data-recorrencia-campo][hidden] { display: none !important; }

@media (max-width: 800px) {
    .fd-atividade-tipos-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .fd-atividade-grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 560px) {
    .fd-atividade-form, .fd-atividade-actions { width: calc(100% - (var(--fd-margin-mobile) * 2)); }
    .fd-atividade-hero { min-height: 0; padding: 22px; border-radius: 22px; }
    .fd-atividade-hero-icon { display: none; }
    .fd-atividade-tipos-grid, .fd-atividade-grid-2, .fd-atividade-grid-3, .fd-atividade-options-grid, .fd-atividade-pessoas { grid-template-columns: minmax(0, 1fr); }
    .fd-atividade-tipo { min-height: 78px; }
    .fd-atividade-section-head { align-items: flex-start; padding: 16px; }
    .fd-atividade-section-body { padding: 16px; }
    .fd-atividade-actions { justify-content: stretch; }
    .fd-atividade-actions .fd-form-btn-primary, .fd-atividade-actions .fd-form-btn-secondary { flex: 1; min-width: 0; padding-left: 12px; padding-right: 12px; }
}

@media (prefers-reduced-motion: reduce) {
    .fd-atividade-tipo, .fd-atividade-dia span { transition: none; }
}

/* ─── Quadro de Rotina Familiar ──────────────────────────────────
   Compartilha a codificação por cor do formulário de criação, mas
   usa a hierarquia de consulta: categoria → pessoa → itens do dia. */
.fd-rotina-page {
    width: min(100% - 36px, 1120px);
    margin: 24px auto 44px;
}

.fd-rotina-hero {
    position: relative;
    overflow: hidden;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    align-items: center;
    gap: 28px;
    min-height: 168px;
    padding: 28px 30px;
    color: var(--on-surface);
    background: linear-gradient(125deg, color-mix(in srgb, var(--primary-container) 82%, var(--surface-container-lowest)), var(--surface-container-lowest) 74%);
    border: 1px solid color-mix(in srgb, var(--primary) 25%, var(--outline-variant));
    border-radius: 28px;
}

.fd-rotina-hero::after {
    content: "";
    position: absolute;
    z-index: 0;
    width: 210px;
    height: 210px;
    right: -98px;
    bottom: -130px;
    border: 30px solid color-mix(in srgb, var(--primary) 10%, transparent);
    border-radius: 50%;
}

.fd-rotina-hero-main, .fd-rotina-progresso, .fd-rotina-config { position: relative; z-index: 1; }
.fd-rotina-eyebrow, .fd-rotina-section-kicker { display: block; color: var(--primary); font-size: 11px; line-height: 1; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.fd-rotina-hero h1 { margin: 8px 0 0; font-family: var(--font-heading); font-size: clamp(27px, 4vw, 38px); line-height: 1.08; letter-spacing: -.025em; }
.fd-rotina-hero-main p { max-width: 620px; margin: 10px 0 0; color: var(--on-surface-variant); font-size: 14px; line-height: 1.5; }
.fd-rotina-progresso { display: flex; align-items: center; gap: 12px; padding: 12px 16px; background: color-mix(in srgb, var(--surface-container-lowest) 80%, transparent); border: 1px solid color-mix(in srgb, var(--primary) 18%, var(--outline-variant)); border-radius: 18px; }
.fd-rotina-progresso-ring { --angulo: calc(var(--progresso) * 3.6deg); display: grid; place-items: center; width: 54px; height: 54px; background: conic-gradient(var(--primary) var(--angulo), var(--surface-container-high) 0); border-radius: 50%; }
.fd-rotina-progresso-ring::before { content: ""; grid-area: 1 / 1; width: 42px; height: 42px; background: var(--surface-container-lowest); border-radius: 50%; }
.fd-rotina-progresso-ring span { z-index: 1; grid-area: 1 / 1; font-size: 11px; font-weight: 850; }
.fd-rotina-progresso strong, .fd-rotina-progresso small { display: block; white-space: nowrap; }
.fd-rotina-progresso strong { font-family: var(--font-heading); font-size: 18px; }
.fd-rotina-progresso small { margin-top: 1px; color: var(--on-surface-variant); font-size: 11px; }
.fd-rotina-config { display: inline-flex; align-items: center; gap: 7px; min-height: 44px; padding: 0 14px; color: var(--on-surface); background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-radius: 14px; text-decoration: none; font-size: 13px; font-weight: 750; }
.fd-rotina-config:hover { border-color: var(--primary); color: var(--primary); }
.fd-rotina-config .material-symbols-outlined { font-size: 19px; }

.fd-rotina-filtros, .fd-rotina-pessoas-section, .fd-rotina-evolucao, .fd-rotina-lista { margin-top: 26px; }
.fd-rotina-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 18px; margin-bottom: 12px; }
.fd-rotina-section-heading h2 { margin: 5px 0 0; font-family: var(--font-heading); font-size: 19px; line-height: 1.2; color: var(--on-surface); }
.fd-rotina-section-count { flex: 0 0 auto; padding: 6px 10px; color: var(--on-surface-variant); background: var(--surface-container-low); border-radius: 999px; font-size: 11px; font-weight: 750; }

.fd-rotina-tipos { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.fd-rotina-tipo { --tipo-cor: var(--primary); --tipo-fundo: var(--primary-container); position: relative; display: grid; grid-template-columns: 42px minmax(0, 1fr); align-items: center; gap: 11px; min-height: 78px; padding: 12px; color: var(--on-surface); background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-radius: 17px; text-decoration: none; transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease; }
.fd-rotina-tipo--todos { --tipo-cor: var(--primary); --tipo-fundo: var(--primary-container); }
.fd-rotina-tipo--coral { --tipo-cor: #d95540; --tipo-fundo: #ffe0da; }
.fd-rotina-tipo--ambar { --tipo-cor: #a96100; --tipo-fundo: #ffddb3; }
.fd-rotina-tipo--azul { --tipo-cor: #3566b8; --tipo-fundo: #d9e6ff; }
.fd-rotina-tipo--violeta { --tipo-cor: #7556b3; --tipo-fundo: #eaddff; }
.fd-rotina-tipo--verde { --tipo-cor: #197965; --tipo-fundo: #c1f1e4; }
.fd-rotina-tipo--rosa { --tipo-cor: #a84d78; --tipo-fundo: #ffd8e9; }
.fd-rotina-tipo:hover { transform: translateY(-2px); border-color: color-mix(in srgb, var(--tipo-cor) 58%, var(--outline-variant)); }
.fd-rotina-tipo.is-active { background: color-mix(in srgb, var(--tipo-fundo) 65%, var(--surface-container-lowest)); border-color: var(--tipo-cor); box-shadow: 0 8px 20px color-mix(in srgb, var(--tipo-cor) 12%, transparent); }
.fd-rotina-tipo:focus-visible, .fd-rotina-pessoa:focus-visible, .fd-rotina-config:focus-visible, .fd-rotina-card-action a:focus-visible { outline: 3px solid color-mix(in srgb, var(--primary) 36%, transparent); outline-offset: 2px; }
.fd-rotina-tipo-icon { display: grid; place-items: center; width: 42px; height: 42px; color: var(--tipo-cor); background: var(--tipo-fundo); border-radius: 13px; font-size: 22px; }
.fd-rotina-tipo strong, .fd-rotina-tipo small { display: block; min-width: 0; }
.fd-rotina-tipo strong { display: -webkit-box; overflow: hidden; white-space: normal; font-size: 13px; line-height: 1.2; overflow-wrap: anywhere; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.fd-rotina-tipo small { margin-top: 3px; color: var(--on-surface-variant); font-size: 10px; }
.fd-rotina-tipo-check { position: absolute; top: 7px; right: 7px; display: none; color: var(--tipo-cor); font-size: 16px; }
.fd-rotina-tipo.is-active .fd-rotina-tipo-check { display: block; }

[data-theme="jornada_vibrante"] .fd-rotina-tipo { --tipo-fundo: color-mix(in srgb, var(--tipo-cor) 20%, var(--surface-container-lowest)); }

.fd-rotina-pessoas { display: flex; gap: 10px; padding: 2px 2px 8px; overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: thin; }
.fd-rotina-pessoa { position: relative; display: grid; grid-template-columns: 44px minmax(140px, 1fr) 22px; grid-template-rows: minmax(34px, auto) 4px; grid-template-areas: "avatar info check" "avatar progress check"; align-items: center; column-gap: 11px; row-gap: 9px; flex: 0 0 260px; min-height: 88px; padding: 12px; color: var(--on-surface); background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-radius: 17px; text-decoration: none; scroll-snap-align: start; }
.fd-rotina-pessoa.is-active { border-color: var(--primary); background: color-mix(in srgb, var(--primary-container) 38%, var(--surface-container-lowest)); }
.fd-rotina-pessoa-avatar { grid-area: avatar; display: grid; place-items: center; width: 44px; height: 44px; overflow: hidden; color: var(--on-primary); background: var(--primary); border: 3px solid var(--surface-container-lowest); border-radius: 50%; box-shadow: 0 0 0 1px var(--outline-variant); font-size: 11px; font-weight: 850; }
.fd-rotina-pessoa-avatar img { width: 100%; height: 100%; object-fit: cover; }
.fd-rotina-pessoa-avatar .material-symbols-outlined { font-size: 22px; }
.fd-rotina-pessoa-info { grid-area: info; min-width: 0; }
.fd-rotina-pessoa-info strong, .fd-rotina-pessoa-info small { display: block; }
.fd-rotina-pessoa-info strong { display: -webkit-box; overflow: hidden; white-space: normal; font-size: 13px; line-height: 1.2; overflow-wrap: anywhere; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.fd-rotina-pessoa-info small { margin-top: 2px; color: var(--on-surface-variant); font-size: 10px; }
.fd-rotina-pessoa-progress { grid-area: progress; height: 4px; overflow: hidden; background: var(--surface-container-high); border-radius: 999px; }
.fd-rotina-pessoa-progress > span { display: block; height: 100%; background: var(--primary); border-radius: inherit; }
.fd-rotina-pessoa-check { grid-area: check; align-self: center; justify-self: center; color: var(--outline); font-size: 20px; }
.fd-rotina-pessoa.is-active .fd-rotina-pessoa-check { color: var(--primary); font-variation-settings: "FILL" 1; }

.fd-rotina-evolucao-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.fd-rotina-evolucao-card { position: relative; min-width: 0; padding: 17px; background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-radius: 18px; }
.fd-rotina-evolucao-card.is-latest { border-color: #d95540; box-shadow: inset 0 3px 0 #d95540, 0 8px 22px color-mix(in srgb, #d95540 10%, transparent); }
.fd-rotina-evolucao-card > header { display: flex; align-items: center; gap: 10px; padding-bottom: 13px; border-bottom: 1px solid var(--outline-variant); }
.fd-rotina-evolucao-card > header > div { min-width: 0; }
.fd-rotina-evolucao-card > header > button { display: grid; place-items: center; flex: 0 0 40px; width: 40px; height: 40px; margin-left: auto; color: var(--on-surface-variant); background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 12px; cursor: pointer; }
.fd-rotina-evolucao-card > header > button:hover, .fd-rotina-evolucao-card > header > button:focus-visible { color: #b74432; border-color: #d95540; }
.fd-rotina-evolucao-lock { display: grid; place-items: center; flex: 0 0 40px; width: 40px; height: 40px; margin-left: auto; color: var(--on-surface-variant); background: var(--surface-container-low); border-radius: 12px; font-size: 19px; }
.fd-rotina-evolucao-card > header > .material-symbols-outlined { display: grid; place-items: center; flex: 0 0 42px; width: 42px; height: 42px; color: #b74432; background: #ffe0da; border-radius: 13px; font-size: 22px; }
.fd-rotina-evolucao-card > header strong, .fd-rotina-evolucao-card > header small { display: block; }
.fd-rotina-evolucao-card > header strong { color: var(--on-surface); font-size: 17px; }
.fd-rotina-evolucao-card > header small { margin-top: 2px; color: var(--on-surface-variant); font-size: 14px; }
.fd-rotina-evolucao-medidas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 12px; }
.fd-rotina-evolucao-medidas > span { min-width: 0; padding: 10px; background: var(--surface-container-low); border-radius: 11px; }
.fd-rotina-evolucao-medidas small, .fd-rotina-evolucao-medidas strong, .fd-rotina-evolucao-medidas em { display: block; }
.fd-rotina-evolucao-medidas small { color: var(--on-surface-variant); font-size: 13px; }
.fd-rotina-evolucao-medidas strong { margin-top: 2px; color: var(--on-surface); font-size: 15px; }
.fd-rotina-evolucao-medidas em { margin-top: 3px; color: var(--on-surface-variant); font-size: 13px; font-style: normal; font-weight: 800; }
.fd-rotina-evolucao-medidas em.is-up { color: #9a3c2d; }
.fd-rotina-evolucao-medidas em.is-down { color: #087866; }
.fd-rotina-evolucao-vestuario { display: flex; flex-wrap: wrap; gap: 8px; padding-top: 11px; margin-top: 12px; border-top: 1px solid var(--outline-variant); }
.fd-rotina-evolucao-vestuario > span { display: grid; grid-template-columns: 22px auto; grid-template-rows: auto auto; align-items: center; gap: 1px 6px; min-width: 116px; padding: 8px 10px; color: var(--on-surface); background: color-mix(in srgb, #ffe0da 32%, var(--surface-container-low)); border-radius: 10px; }
.fd-rotina-evolucao-vestuario .material-symbols-outlined { grid-row: 1 / 3; color: #b74432; font-size: 19px; }
.fd-rotina-evolucao-vestuario small { color: var(--on-surface-variant); font-size: 10px; }
.fd-rotina-evolucao-vestuario strong { min-width: 0; font-size: 12px; white-space: pre-line; overflow-wrap: anywhere; }
.fd-rotina-evolucao-vestuario > span.is-roupas { flex: 1 1 100%; }
.fd-rotina-evolucao-card > p { padding-top: 11px; margin: 12px 0 0; color: var(--on-surface-variant); border-top: 1px solid var(--outline-variant); font-size: 14px; line-height: 1.45; }
.fd-rotina-evolucao-empty { display: flex; align-items: center; gap: 14px; padding: 20px; background: var(--surface-container-lowest); border: 1px dashed var(--outline); border-radius: 18px; }
.fd-rotina-evolucao-empty > .material-symbols-outlined { display: grid; place-items: center; flex: 0 0 48px; width: 48px; height: 48px; color: #b74432; background: #ffe0da; border-radius: 15px; }
.fd-rotina-evolucao-empty h3, .fd-rotina-evolucao-empty p { margin: 0; }
.fd-rotina-evolucao-empty h3 { color: var(--on-surface); font-size: 17px; }
.fd-rotina-evolucao-empty p { margin-top: 4px; color: var(--on-surface-variant); font-size: 14px; }
.fd-rotina-evolucao-empty button, .fd-rotina-evolucao-actions button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 44px; padding: 0 15px; margin-left: auto; color: #fff; background: #b74432; border: 0; border-radius: 13px; font-family: inherit; font-size: 14px; font-weight: 800; cursor: pointer; }
.fd-rotina-evolucao-actions { display: flex; align-items: center; gap: 8px; }
.fd-rotina-evolucao-actions button { margin-left: 0; }
.fd-rotina-evolucao-actions .material-symbols-outlined { font-size: 19px; }

.fd-avaliacao-modal-dialog { width: min(100%, 760px); max-width: 760px; padding: 0; overflow: hidden; }
.fd-avaliacao-modal-dialog > form { display: flex; flex-direction: column; max-height: 90vh; }
.fd-avaliacao-modal .fd-modal-form-cabecalho { align-items: flex-start; padding: 22px 24px 18px; margin: 0; background: color-mix(in srgb, #ffe0da 42%, var(--surface-container-lowest)); border-bottom: 1px solid var(--outline-variant); }
.fd-avaliacao-modal .fd-modal-form-cabecalho h2 { margin: 6px 0 0; color: var(--on-surface); font-family: var(--font-heading); font-size: 24px; }
.fd-avaliacao-modal .fd-modal-form-cabecalho p { margin: 6px 0 0; color: var(--on-surface-variant); font-size: 14px; line-height: 1.45; }
.fd-avaliacao-modal-body { display: grid; gap: 16px; padding: 20px 24px 24px; overflow-y: auto; }
.fd-avaliacao-modal-body .fd-form-field { margin: 0; }
.fd-avaliacao-modal-intro { display: flex; align-items: center; gap: 11px; padding: 12px 14px; color: var(--on-surface); background: var(--surface-container-low); border-radius: 13px; }
.fd-avaliacao-modal-intro > .material-symbols-outlined { display: grid; place-items: center; width: 40px; height: 40px; color: #b74432; background: #ffe0da; border-radius: 12px; }
.fd-avaliacao-modal-intro small, .fd-avaliacao-modal-intro strong { display: block; }
.fd-avaliacao-modal-intro small { color: var(--on-surface-variant); font-size: 13px; }
.fd-avaliacao-modal-intro strong { margin-top: 2px; font-size: 16px; }
.fd-avaliacao-modal-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.fd-avaliacao-modal-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.fd-avaliacao-modal-grid--vestuario { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.fd-avaliacao-roupas-detalhe { grid-column: 1 / -1; }
.fd-avaliacao-roupas-detalhe textarea { min-height: 92px; resize: vertical; }
.fd-avaliacao-modal-subtitulo { display: flex; align-items: center; gap: 7px; padding-top: 4px; color: var(--on-surface); }
.fd-avaliacao-modal-subtitulo .material-symbols-outlined { color: #b74432; font-size: 21px; }
.fd-avaliacao-modal-subtitulo small { margin-left: auto; color: var(--on-surface-variant); font-size: 13px; }
.fd-avaliacao-modal-actions { flex: 0 0 auto; justify-content: flex-end; padding: 15px 24px; background: var(--surface-container-lowest); border-top: 1px solid var(--outline-variant); }
.fd-avaliacao-modal-actions .fd-form-btn-secondary, .fd-avaliacao-modal-actions .fd-form-btn-primary { display: inline-flex; align-items: center; justify-content: center; gap: 6px; flex: 0 0 auto; width: auto; min-width: 150px; min-height: 44px; margin: 0; }

.fd-rotina-cards { display: grid; gap: 12px; }
.fd-rotina-card { --tipo-cor: var(--primary); --tipo-fundo: var(--primary-container); --atividade-accent: var(--tipo-cor); --atividade-accent-soft: var(--tipo-fundo); display: grid; grid-template-columns: 50px minmax(0, 1fr); align-items: start; gap: 15px; padding: 18px; background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-left: 4px solid var(--tipo-cor); border-radius: 18px; }
.fd-rotina-card--coral { --tipo-cor: #d95540; --tipo-fundo: #ffe0da; }
.fd-rotina-card--ambar { --tipo-cor: #a96100; --tipo-fundo: #ffddb3; }
.fd-rotina-card--azul { --tipo-cor: #3566b8; --tipo-fundo: #d9e6ff; }
.fd-rotina-card--violeta { --tipo-cor: #7556b3; --tipo-fundo: #eaddff; }
.fd-rotina-card--verde { --tipo-cor: #197965; --tipo-fundo: #c1f1e4; }
.fd-rotina-card--rosa { --tipo-cor: #a84d78; --tipo-fundo: #ffd8e9; }
[data-theme="jornada_vibrante"] .fd-rotina-card { --tipo-fundo: color-mix(in srgb, var(--tipo-cor) 20%, var(--surface-container-lowest)); }
.fd-rotina-card.is-done { opacity: .72; }
.fd-rotina-card-icon { display: grid; place-items: center; width: 50px; height: 50px; color: var(--tipo-cor); background: var(--tipo-fundo); border-radius: 15px; font-size: 25px; }
.fd-rotina-card-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.fd-rotina-card-type { color: var(--tipo-cor); font-size: 10px; font-weight: 850; letter-spacing: .07em; text-transform: uppercase; }
.fd-rotina-card-summary { display: grid; grid-template-columns: minmax(220px, 320px) minmax(0, 1fr); align-items: center; gap: 16px 36px; margin-top: 7px; }
.fd-rotina-card h3 { margin: 0; color: var(--on-surface); font-family: var(--font-heading); font-size: 17px; line-height: 1.3; }
.fd-rotina-card-identity > p { display: -webkit-box; overflow: hidden; margin: 5px 0 0; color: var(--on-surface-variant); font-size: 12px; line-height: 1.4; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.fd-rotina-card-agenda { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.fd-rotina-card-agenda > time, .fd-rotina-card-agenda > span { display: inline-flex; align-items: center; gap: 7px; min-height: 42px; padding: 6px 10px; border: 1px solid var(--outline-variant); border-radius: 11px; background: var(--surface-container-low); color: var(--on-surface-variant); }
.fd-rotina-card-agenda .material-symbols-outlined { color: var(--tipo-cor); font-size: 18px; }
.fd-rotina-card-agenda small, .fd-rotina-card-agenda strong { display: block; line-height: 1.2; }
.fd-rotina-card-agenda small { font-size: 9px; font-weight: 650; }
.fd-rotina-card-agenda strong { margin-top: 2px; color: var(--on-surface); font-size: 12px; }
.fd-rotina-card-details { display: flex; flex-wrap: wrap; gap: 8px 14px; margin-top: 9px; }
.fd-rotina-card-details > span { display: inline-flex; align-items: center; gap: 4px; color: var(--on-surface-variant); font-size: 11px; }
.fd-rotina-card-details .material-symbols-outlined { color: var(--tipo-cor); font-size: 15px; }
.fd-atividade-map-link, .fd-atividade-map-actions a { display: inline-flex; align-items: center; gap: 4px; min-height: 32px; padding: 0 9px; color: var(--tipo-cor); background: color-mix(in srgb, var(--tipo-fundo) 52%, var(--surface-container-lowest)); border: 1px solid color-mix(in srgb, var(--tipo-cor) 25%, var(--outline-variant)); border-radius: 9px; text-decoration: none; font-size: 10px; font-weight: 800; }
.fd-atividade-map-link:hover, .fd-atividade-map-actions a:hover { border-color: var(--tipo-cor); }
.fd-atividade-map-link:focus-visible, .fd-atividade-map-actions a:focus-visible { outline: 3px solid color-mix(in srgb, var(--tipo-cor) 28%, transparent); outline-offset: 2px; }
.fd-atividade-map-actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 7px; }
.fd-atividade-map-actions .material-symbols-outlined { font-size: 15px; }
.fd-rotina-card-action { grid-column: 2; display: flex; justify-content: flex-end; }
.fd-rotina-card-buttons { display: flex; align-items: center; justify-content: flex-end; gap: 8px; margin-top: 2px; }
.fd-rotina-card-buttons > a { display: inline-flex; align-items: center; justify-content: center; gap: 5px; min-width: 118px; min-height: 42px; padding: 0 14px; color: #fff; background: var(--tipo-cor); border-radius: 13px; text-decoration: none; font-size: 12px; font-weight: 800; }
.fd-rotina-card-buttons > a .material-symbols-outlined { font-size: 18px; } .fd-rotina-nao-realizada{margin:0}.fd-rotina-nao-realizada button{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-width:118px;min-height:40px;padding:0 12px;color:var(--error);background:color-mix(in srgb,var(--error-container) 42%,var(--surface-container-lowest));border:1px solid color-mix(in srgb,var(--error) 36%,var(--outline-variant));border-radius:12px;cursor:pointer;font:800 11px var(--font-body)}.fd-rotina-nao-realizada button:hover{background:color-mix(in srgb,var(--error-container) 66%,var(--surface-container-lowest));border-color:var(--error)}.fd-rotina-nao-realizada button:focus-visible{outline:3px solid color-mix(in srgb,var(--error) 28%,transparent);outline-offset:2px}.fd-rotina-nao-realizada .material-symbols-outlined{font-size:17px}
.fd-rotina-status { display: inline-flex; align-items: center; gap: 4px; padding: 5px 8px; border-radius: 999px; font-size: 10px; font-weight: 800; white-space: nowrap; }
.fd-rotina-status .material-symbols-outlined { font-size: 15px; }
.fd-rotina-status--concluido { color: var(--on-primary-container); background: var(--primary-container); }
.fd-rotina-status--aguardando { color: var(--on-tertiary-container); background: var(--tertiary-container); }
.fd-rotina-status--rejeitado { color: var(--on-error-container); background: var(--error-container); }
.fd-rotina-status--programado { color: #204f86; background: #d9e8ff; }
.fd-rotina-empty { display: grid; justify-items: center; padding: 34px 20px; text-align: center; color: var(--on-surface-variant); background: var(--surface-container-lowest); border: 1px dashed var(--outline); border-radius: 20px; }
.fd-rotina-empty > .material-symbols-outlined { font-size: 38px; color: var(--primary); }
.fd-rotina-empty h3 { margin: 10px 0 0; color: var(--on-surface); font-family: var(--font-heading); font-size: 17px; }
.fd-rotina-empty p { margin: 5px 0 0; font-size: 13px; }
.fd-rotina-empty a { margin-top: 14px; color: var(--primary); font-size: 13px; font-weight: 800; }

@media (max-width: 980px) {
    .fd-rotina-hero { grid-template-columns: minmax(0, 1fr) auto; }
    .fd-rotina-config { grid-column: 1 / -1; justify-self: start; }
    .fd-rotina-tipos { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .fd-rotina-evolucao-grid { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 680px) {
    .fd-rotina-page { width: calc(100% - 24px); margin-top: 10px; margin-bottom: 28px; }
    .fd-rotina-hero { display: flex; flex-wrap: wrap; gap: 12px; min-height: 0; padding: 16px; border-radius: 18px; }
    .fd-rotina-hero-main { flex: 1 0 100%; }
    .fd-rotina-eyebrow, .fd-rotina-section-kicker { font-size: 9px; letter-spacing: .08em; }
    .fd-rotina-hero h1 { margin-top: 6px; font-size: 23px; line-height: 1.1; }
    .fd-rotina-hero-main p { margin-top: 7px; font-size: 12px; line-height: 1.4; }
    .fd-rotina-progresso { flex: 1; gap: 9px; padding: 9px 11px; border-radius: 14px; }
    .fd-rotina-progresso-ring { width: 46px; height: 46px; }
    .fd-rotina-progresso-ring::before { width: 36px; height: 36px; }
    .fd-rotina-progresso-ring span, .fd-rotina-progresso small { font-size: 9px; }
    .fd-rotina-progresso strong { font-size: 15px; }
    .fd-rotina-config span:last-child { display: none; }
    .fd-rotina-config { min-height: 42px; padding: 0 11px; }
    .fd-rotina-filtros, .fd-rotina-pessoas-section, .fd-rotina-evolucao, .fd-rotina-lista { margin-top: 20px; }
    .fd-rotina-section-heading { align-items: center; gap: 8px; margin-bottom: 10px; }
    .fd-rotina-section-heading h2 { margin-top: 4px; font-size: 16px; }
    .fd-rotina-section-count { padding: 5px 8px; font-size: 9px; }
    .fd-rotina-tipos, .fd-rotina-pessoas { padding: 2px 1px 8px; scroll-padding-inline: 1px; }
    .fd-rotina-tipos { display: flex; overflow-x: auto; scroll-snap-type: x proximity; }
    .fd-rotina-tipo { flex: 0 0 178px; min-height: 70px; grid-template-columns: 38px minmax(0, 1fr); gap: 9px; padding: 10px; border-radius: 15px; scroll-snap-align: start; }
    .fd-rotina-tipo-icon { width: 38px; height: 38px; border-radius: 11px; font-size: 20px; }
    .fd-rotina-tipo strong { font-size: 11px; }
    .fd-rotina-tipo small { font-size: 9px; }
    .fd-rotina-pessoa { grid-template-columns: 40px minmax(126px, 1fr) 20px; flex-basis: 232px; min-height: 80px; padding: 10px; column-gap: 9px; border-radius: 15px; }
    .fd-rotina-pessoa-avatar { width: 40px; height: 40px; }
    .fd-rotina-pessoa-info strong { font-size: 12px; }
    .fd-rotina-pessoa-info small { font-size: 9px; }
    .fd-rotina-pessoa-check { font-size: 18px; }
    .fd-rotina-cards { gap: 10px; }
    .fd-rotina-card { width: 100%; min-width: 0; grid-template-columns: 40px minmax(0, 1fr); align-items: start; gap: 10px; padding: 13px; border-width: 1px 1px 1px 3px; border-radius: 15px; }
    .fd-rotina-card-icon { width: 40px; height: 40px; border-radius: 12px; font-size: 21px; }
    .fd-rotina-card-top { gap: 8px; }
    .fd-rotina-card-type { font-size: 9px; }
    .fd-rotina-card-summary { grid-template-columns: 1fr; gap: 10px; margin-top: 4px; }
    .fd-rotina-card h3 { font-size: 14px; }
    .fd-rotina-card-identity > p { font-size: 11px; }
    .fd-rotina-card-agenda { justify-content: flex-start; }
    .fd-rotina-card-agenda > time, .fd-rotina-card-agenda > span { min-height: 39px; padding: 5px 8px; }
    .fd-rotina-card-details { gap: 6px 10px; margin-top: 7px; }
    .fd-rotina-card-details > span { font-size: 10px; }
    .fd-rotina-card-action { grid-column: 1 / -1; width: 100%; min-width: 0; }
    .fd-rotina-card-buttons { min-width: 0; margin-left: auto; }
    .fd-rotina-card-buttons > a { min-width: 104px; min-height: 40px; padding-inline: 12px; font-size: 11px; }
    .fd-rotina-card-buttons .fd-rotina-nao-realizada button { min-width: 104px; }
    .fd-rotina-status { font-size: 9px; }
    .fd-rotina-empty { padding: 26px 16px; border-radius: 16px; }
    .fd-rotina-empty h3 { font-size: 15px; }
    .fd-rotina-empty p, .fd-rotina-empty a { font-size: 11px; }
    .fd-rotina-evolucao-card { padding: 14px; border-radius: 15px; }
    .fd-rotina-evolucao-card > header strong { font-size: 14px; }
    .fd-rotina-evolucao-card > header small { font-size: 11px; }
    .fd-rotina-evolucao-medidas small, .fd-rotina-evolucao-medidas em { font-size: 11px; }
    .fd-rotina-evolucao-medidas strong { font-size: 13px; }
    .fd-rotina-evolucao-card > p { font-size: 12px; }
    .fd-rotina-evolucao-empty { align-items: flex-start; flex-wrap: wrap; }
    .fd-rotina-evolucao-empty button { width: 100%; margin-left: 0; }
    .fd-rotina-evolucao-actions { align-items: flex-end; flex-direction: column; }
    .fd-avaliacao-modal { align-items: flex-end; padding: 0; }
    .fd-avaliacao-modal-dialog { width: 100%; max-height: 94vh; border-radius: 22px 22px 0 0; }
    .fd-avaliacao-modal-dialog > form { max-height: 94vh; }
    .fd-avaliacao-modal-grid, .fd-avaliacao-modal-grid--3, .fd-avaliacao-modal-grid--vestuario { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .fd-avaliacao-modal-actions .fd-form-btn-secondary, .fd-avaliacao-modal-actions .fd-form-btn-primary { flex: 1; min-width: 0; }
}

@media (max-width: 430px) {
    .fd-avaliacao-modal-grid, .fd-avaliacao-modal-grid--3, .fd-avaliacao-modal-grid--vestuario { grid-template-columns: minmax(0, 1fr); }
}

@media (prefers-reduced-motion: reduce) {
    .fd-rotina-tipo { transition: none; }
}

/* ─── Catálogo de configuração das atividades ─────────────────── */
.fd-ativ-config-page { width: min(100% - 36px, 1120px); margin: 24px auto 44px; }
.fd-ativ-config-hero { position: relative; overflow: hidden; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 22px 32px; padding: 28px 30px; background: linear-gradient(125deg, color-mix(in srgb, var(--primary-container) 82%, var(--surface-container-lowest)), var(--surface-container-lowest) 74%); border: 1px solid color-mix(in srgb, var(--primary) 25%, var(--outline-variant)); border-radius: 28px; }
.fd-ativ-config-hero::after { content: ""; position: absolute; width: 210px; height: 210px; right: -100px; bottom: -132px; border: 30px solid color-mix(in srgb, var(--primary) 10%, transparent); border-radius: 50%; }
.fd-ativ-config-hero-copy, .fd-ativ-config-stats, .fd-ativ-config-hero-actions { position: relative; z-index: 1; }
.fd-ativ-config-hero-copy h1 { margin: 8px 0 0; color: var(--on-surface); font-family: var(--font-heading); font-size: clamp(27px, 4vw, 38px); line-height: 1.08; letter-spacing: -.025em; }
.fd-ativ-config-hero-copy p { max-width: 620px; margin: 10px 0 0; color: var(--on-surface-variant); font-size: 14px; line-height: 1.5; }
.fd-ativ-config-stats { display: grid; grid-template-columns: repeat(3, minmax(108px, 1fr)); gap: 8px; }
.fd-ativ-config-stats > div { display: grid; grid-template-columns: 30px auto; grid-template-rows: auto auto; align-items: center; column-gap: 8px; min-height: 68px; padding: 10px; background: color-mix(in srgb, var(--surface-container-lowest) 82%, transparent); border: 1px solid var(--outline-variant); border-radius: 15px; }
.fd-ativ-config-stats .material-symbols-outlined { grid-row: 1 / 3; color: var(--primary); font-size: 24px; }
.fd-ativ-config-stats strong { color: var(--on-surface); font-family: var(--font-heading); font-size: 18px; line-height: 1; }
.fd-ativ-config-stats small { color: var(--on-surface-variant); font-size: 9px; white-space: nowrap; }
.fd-ativ-config-stats .has-warning .material-symbols-outlined, .fd-ativ-config-stats .has-warning strong { color: var(--error); }
.fd-ativ-config-hero-actions { grid-column: 1 / -1; display: flex; gap: 10px; }
.fd-ativ-config-hero-actions a { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 44px; padding: 0 16px; border-radius: 14px; text-decoration: none; font-size: 13px; font-weight: 800; }
.fd-ativ-config-hero-actions .material-symbols-outlined { font-size: 19px; }
.fd-ativ-config-back { color: var(--on-surface); background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); }
.fd-ativ-config-new { color: var(--on-primary); background: var(--primary); border: 1px solid var(--primary); }
.fd-ativ-config-types, .fd-ativ-config-list { margin-top: 26px; }

.fd-ativ-config-type-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.fd-ativ-config-type { --tipo-cor: var(--primary); --tipo-fundo: var(--primary-container); position: relative; min-height: 80px; background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-radius: 17px; transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease; }
.fd-ativ-config-type--todos { --tipo-cor: var(--primary); --tipo-fundo: var(--primary-container); }
.fd-ativ-config-type--coral { --tipo-cor: #d95540; --tipo-fundo: #ffe0da; }
.fd-ativ-config-type--ambar { --tipo-cor: #a96100; --tipo-fundo: #ffddb3; }
.fd-ativ-config-type--azul { --tipo-cor: #3566b8; --tipo-fundo: #d9e6ff; }
.fd-ativ-config-type--violeta { --tipo-cor: #7556b3; --tipo-fundo: #eaddff; }
.fd-ativ-config-type--verde { --tipo-cor: #197965; --tipo-fundo: #c1f1e4; }
.fd-ativ-config-type--rosa { --tipo-cor: #a84d78; --tipo-fundo: #ffd8e9; }
[data-theme="jornada_vibrante"] .fd-ativ-config-type { --tipo-fundo: color-mix(in srgb, var(--tipo-cor) 20%, var(--surface-container-lowest)); }
.fd-ativ-config-type:hover { transform: translateY(-2px); border-color: color-mix(in srgb, var(--tipo-cor) 58%, var(--outline-variant)); }
.fd-ativ-config-type.is-active { background: color-mix(in srgb, var(--tipo-fundo) 65%, var(--surface-container-lowest)); border-color: var(--tipo-cor); box-shadow: 0 8px 20px color-mix(in srgb, var(--tipo-cor) 12%, transparent); }
.fd-ativ-config-type-filter { display: grid; grid-template-columns: 42px minmax(0, 1fr); align-items: center; gap: 11px; min-height: 78px; padding: 12px 42px 12px 12px; color: var(--on-surface); text-decoration: none; }
.fd-ativ-config-type-icon { display: grid; place-items: center; width: 42px; height: 42px; color: var(--tipo-cor); background: var(--tipo-fundo); border-radius: 13px; font-size: 22px; }
.fd-ativ-config-type-filter strong, .fd-ativ-config-type-filter small { display: block; min-width: 0; }
.fd-ativ-config-type-filter strong { display: -webkit-box; overflow: hidden; white-space: normal; font-size: 13px; line-height: 1.2; overflow-wrap: anywhere; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.fd-ativ-config-type-filter small { margin-top: 3px; color: var(--on-surface-variant); font-size: 10px; }
.fd-ativ-config-type-check { position: absolute; top: 7px; right: 8px; display: none; color: var(--tipo-cor); font-size: 16px; }
.fd-ativ-config-type.is-active .fd-ativ-config-type-check { display: block; }
.fd-ativ-config-type-add { position: absolute; right: 8px; bottom: 8px; display: grid; place-items: center; width: 28px; height: 28px; color: var(--tipo-cor); background: var(--tipo-fundo); border-radius: 9px; text-decoration: none; }
.fd-ativ-config-type-add .material-symbols-outlined { font-size: 18px; }
.fd-ativ-config-type-filter:focus-visible, .fd-ativ-config-type-add:focus-visible, .fd-ativ-config-card-actions a:focus-visible, .fd-ativ-config-card-actions button:focus-visible, .fd-ativ-config-hero-actions a:focus-visible { outline: 3px solid color-mix(in srgb, var(--primary) 36%, transparent); outline-offset: 2px; }

.fd-ativ-config-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.fd-ativ-config-card { --tipo-cor: var(--primary); --tipo-fundo: var(--primary-container); display: flex; flex-direction: column; min-width: 0; padding: 18px; background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-top: 4px solid var(--tipo-cor); border-radius: 19px; }
.fd-ativ-config-card--coral { --tipo-cor: #d95540; --tipo-fundo: #ffe0da; }
.fd-ativ-config-card--ambar { --tipo-cor: #a96100; --tipo-fundo: #ffddb3; }
.fd-ativ-config-card--azul { --tipo-cor: #3566b8; --tipo-fundo: #d9e6ff; }
.fd-ativ-config-card--violeta { --tipo-cor: #7556b3; --tipo-fundo: #eaddff; }
.fd-ativ-config-card--verde { --tipo-cor: #197965; --tipo-fundo: #c1f1e4; }
.fd-ativ-config-card--rosa { --tipo-cor: #a84d78; --tipo-fundo: #ffd8e9; }
[data-theme="jornada_vibrante"] .fd-ativ-config-card { --tipo-fundo: color-mix(in srgb, var(--tipo-cor) 20%, var(--surface-container-lowest)); }
.fd-ativ-config-card-head { display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; align-items: center; gap: 12px; }
.fd-ativ-config-card-icon { display: grid; place-items: center; width: 48px; height: 48px; color: var(--tipo-cor); background: var(--tipo-fundo); border-radius: 14px; font-size: 24px; }
.fd-ativ-config-card-type { color: var(--tipo-cor); font-size: 9px; font-weight: 850; letter-spacing: .07em; text-transform: uppercase; }
.fd-ativ-config-card h3 { margin: 4px 0 0; color: var(--on-surface); font-family: var(--font-heading); font-size: 16px; line-height: 1.25; }
.fd-ativ-config-active { display: inline-flex; align-items: center; gap: 5px; padding: 6px 9px; color: var(--on-primary-container); background: var(--primary-container); border-radius: 999px; font-size: 11px; font-weight: 800; }
.fd-ativ-config-active > span { width: 6px; height: 6px; background: var(--primary); border-radius: 50%; }
.fd-ativ-config-active.is-off { color: var(--on-surface-variant); background: var(--surface-container-high); }
.fd-ativ-config-active.is-off > span { background: var(--outline); }
.fd-ativ-config-card-description { display: -webkit-box; overflow: hidden; margin: 13px 0 0; color: var(--on-surface-variant); font-size: 12px; line-height: 1.45; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.fd-ativ-config-card-meta { display: flex; flex-wrap: wrap; gap: 8px 13px; padding: 13px 0; margin-top: 13px; border-top: 1px solid var(--outline-variant); border-bottom: 1px solid var(--outline-variant); }
.fd-ativ-config-card-meta > span { display: inline-flex; align-items: center; gap: 5px; color: var(--on-surface-variant); font-size: 12px; line-height: 1.35; }
.fd-ativ-config-card-meta .material-symbols-outlined { color: var(--tipo-cor); font-size: 15px; }
.fd-ativ-config-card-footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: auto; padding-top: 14px; }
.fd-ativ-config-assignees { display: flex; align-items: center; min-width: 0; color: var(--on-surface-variant); font-size: 12px; line-height: 1.35; }
.fd-ativ-config-avatar-stack { display: flex; padding-left: 5px; margin-right: 8px; }
.fd-ativ-config-avatar-stack > span { display: grid; place-items: center; width: 30px; height: 30px; overflow: hidden; margin-left: -5px; color: var(--on-primary); background: var(--primary); border: 2px solid var(--surface-container-lowest); border-radius: 50%; font-size: 9px; font-weight: 850; }
.fd-ativ-config-avatar-stack img { width: 100%; height: 100%; object-fit: cover; }
.fd-ativ-config-avatar-stack .material-symbols-outlined { font-size: 16px; }
.fd-ativ-config-no-person { display: inline-flex; align-items: center; gap: 5px; color: var(--error); font-weight: 750; }
.fd-ativ-config-no-person .material-symbols-outlined { font-size: 16px; }
.fd-ativ-config-card-actions { display: flex; align-items: center; gap: 7px; }
.fd-ativ-config-card-actions > a { display: inline-flex; align-items: center; gap: 4px; min-height: 38px; padding: 0 9px; color: var(--tipo-cor); background: var(--tipo-fundo); border-radius: 11px; text-decoration: none; white-space: nowrap; font-size: 9px; font-weight: 800; }
.fd-ativ-config-card-actions .material-symbols-outlined { font-size: 17px; }
.fd-ativ-config-card-actions form { margin: 0; }
.fd-ativ-config-card-actions button { display: grid; place-items: center; width: 38px; height: 38px; padding: 0; border: 0; border-radius: 11px; cursor: pointer; }
.fd-ativ-config-card-actions .fd-ativ-config-duplicate { color: var(--primary); background: var(--primary-container); }
.fd-ativ-config-card-actions .fd-ativ-config-delete { color: var(--error); background: var(--error-container); }
.fd-ativ-config-list--encerradas { padding-top: 24px; border-top: 1px solid var(--outline-variant); }
.fd-ativ-config-list--encerradas .fd-ativ-config-card { border-top-color: var(--outline); }
.fd-ativ-config-list--encerradas .fd-ativ-config-card-icon { color: var(--on-surface-variant); background: var(--surface-container-high); }
.fd-atividade-duplicar-dialog { width: min(100%, 520px); max-width: 520px; padding: 0; overflow: visible; }
.fd-atividade-duplicar-dialog > form { display: flex; flex-direction: column; max-height: 90vh; }
.fd-atividade-duplicar-dialog .fd-modal-form-cabecalho { align-items: flex-start; padding: 22px 24px 18px; margin: 0; background: color-mix(in srgb, var(--primary-container) 55%, var(--surface-container-lowest)); border-bottom: 1px solid var(--outline-variant); }
.fd-atividade-duplicar-dialog .fd-modal-form-cabecalho > div { min-width: 0; }
.fd-atividade-duplicar-dialog .fd-modal-form-cabecalho h2 { margin: 5px 0 4px; color: var(--on-surface); font-family: var(--font-heading); font-size: 24px; line-height: 1.2; }
.fd-atividade-duplicar-dialog .fd-modal-form-cabecalho p { max-width: 390px; margin: 0; color: var(--on-surface-variant); font-size: 13px; line-height: 1.45; }
.fd-atividade-duplicar-dialog .fd-modal-fechar-btn { flex: 0 0 44px; width: 44px; height: 44px; margin: -6px -8px 0 0; color: var(--on-surface-variant); background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); }
.fd-atividade-duplicar-dialog .fd-modal-fechar-btn:hover { color: var(--on-surface); background: var(--surface-container-high); }
.fd-atividade-duplicar-dialog .fd-modal-fechar-btn:focus-visible { outline: 3px solid color-mix(in srgb, var(--primary) 35%, transparent); outline-offset: 2px; }
.fd-atividade-duplicar-dialog .fd-modal-fechar-btn .material-symbols-outlined { font-size: 22px; }
.fd-atividade-duplicar-body { display: grid; gap: 15px; padding: 20px 24px; }
.fd-atividade-duplicar-body .fd-form-field { display: grid; gap: 6px; margin: 0; }
.fd-atividade-duplicar-body .fd-form-label { margin: 0; }
.fd-atividade-duplicar-body .fd-form-input, .fd-atividade-duplicar-body .fd-form-select { box-sizing: border-box; min-height: 46px; }
.fd-atividade-duplicar-body .fd-date-popover { right: 0; left: auto; width: min(268px, 100%); min-width: 240px; }
.fd-atividade-duplicar-origin { display: flex; align-items: center; gap: 11px; padding: 12px; color: var(--on-surface); background: var(--surface-container-low); border-radius: 13px; }
.fd-atividade-duplicar-origin > span { color: var(--primary); }
.fd-atividade-duplicar-origin small, .fd-atividade-duplicar-origin strong { display: block; }
.fd-atividade-duplicar-origin small { color: var(--on-surface-variant); font-size: 10px; font-weight: 750; text-transform: uppercase; letter-spacing: .06em; }
.fd-atividade-duplicar-origin strong { margin-top: 2px; font-size: 14px; }
.fd-modal-form-acoes { display: flex; align-items: center; justify-content: flex-end; gap: 10px; flex: 0 0 auto; padding: 15px 24px; background: var(--surface-container-lowest); border-top: 1px solid var(--outline-variant); }
.fd-modal-form-acoes .fd-form-btn-secondary, .fd-modal-form-acoes .fd-form-btn-primary { display: inline-flex; align-items: center; justify-content: center; gap: 7px; flex: 0 0 auto; width: auto; min-width: 150px; min-height: 46px; padding: 0 18px; margin: 0; }
.fd-modal-form-acoes .material-symbols-outlined { font-size: 19px; }

@media (max-width: 980px) {
    .fd-ativ-config-hero { grid-template-columns: minmax(0, 1fr); }
    .fd-ativ-config-stats { max-width: 520px; }
    .fd-ativ-config-type-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 720px) {
    .fd-ativ-config-page { width: calc(100% - (var(--fd-margin-mobile) * 2)); margin-top: 16px; }
    .fd-ativ-config-hero { padding: 22px; border-radius: 22px; }
    .fd-ativ-config-stats { grid-template-columns: minmax(0, 1fr); }
    .fd-ativ-config-stats > div { min-height: 58px; }
    .fd-ativ-config-type-grid { display: flex; padding: 2px 2px 8px; overflow-x: auto; scroll-snap-type: x proximity; }
    .fd-ativ-config-type { flex: 0 0 210px; scroll-snap-align: start; }
    .fd-ativ-config-cards { grid-template-columns: minmax(0, 1fr); }
    .fd-ativ-config-card-footer { align-items: flex-start; flex-direction: column; }
    .fd-ativ-config-card-actions { width: 100%; }
    .fd-ativ-config-card-actions > a { flex: 1; justify-content: center; min-height: 44px; }
    .fd-ativ-config-card-actions button { width: 44px; height: 44px; }
    .fd-atividade-acordo { grid-template-columns: 1fr; }
    .fd-atividade-duplicar-body { padding: 18px; }
    .fd-atividade-duplicar-dialog .fd-modal-form-cabecalho { padding: 19px 18px 16px; }
    .fd-modal-form-acoes { padding: 14px 18px; }
    .fd-modal-form-acoes .fd-form-btn-secondary, .fd-modal-form-acoes .fd-form-btn-primary { flex: 1; min-width: 0; padding: 0 10px; }
}

@media (prefers-reduced-motion: reduce) {
    .fd-ativ-config-type { transition: none; }
}

/* ─── Nova linguagem visual do menu Cursos ──────────────────────
   Mesmas superfícies, hierarquia e verde primário dos demais módulos,
   preservando os componentes funcionais e o contraste entre temas. */
.fd-cursos-novo { width: min(100% - 36px, 1120px); margin: 24px auto 44px; padding: 0; }
.fd-cursos-novo-hero { position: relative; overflow: hidden; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 22px 32px; min-height: 170px; padding: 28px 30px; background: linear-gradient(125deg, color-mix(in srgb, var(--primary-container) 78%, var(--surface-container-lowest)), var(--surface-container-lowest) 74%); border: 1px solid color-mix(in srgb, var(--primary) 28%, var(--outline-variant)); border-radius: 28px; }
[data-theme="jornada_vibrante"] .fd-cursos-novo-hero { background: linear-gradient(125deg, color-mix(in srgb, var(--primary) 22%, var(--surface-container-lowest)), var(--surface-container-lowest) 74%); }
.fd-cursos-novo-hero::after { content: ""; position: absolute; width: 220px; height: 220px; right: -105px; bottom: -136px; border: 31px solid color-mix(in srgb, var(--primary) 11%, transparent); border-radius: 50%; }
.fd-cursos-novo-hero-copy, .fd-cursos-novo-stats, .fd-cursos-novo-create { position: relative; z-index: 1; }
.fd-cursos-novo-hero-copy h1 { margin: 8px 0 0; color: var(--on-surface); font-family: var(--font-heading); font-size: clamp(27px, 4vw, 38px); line-height: 1.08; letter-spacing: -.025em; }
.fd-cursos-novo-hero-copy p { max-width: 650px; margin: 10px 0 0; color: var(--on-surface-variant); font-size: 14px; line-height: 1.5; }
.fd-cursos-novo-stats { display: grid; grid-template-columns: repeat(2, minmax(120px, 1fr)); gap: 8px; }
.fd-cursos-novo--config .fd-cursos-novo-stats { grid-template-columns: repeat(3, minmax(105px, 1fr)); }
.fd-cursos-novo-stats > div { display: grid; grid-template-columns: 30px auto; grid-template-rows: auto auto; align-items: center; column-gap: 8px; min-height: 66px; padding: 10px; background: color-mix(in srgb, var(--surface-container-lowest) 84%, transparent); border: 1px solid var(--outline-variant); border-radius: 15px; }
.fd-cursos-novo-stats .material-symbols-outlined { grid-row: 1 / 3; color: var(--primary); font-size: 24px; }
.fd-cursos-novo-stats strong { color: var(--on-surface); font-family: var(--font-heading); font-size: 18px; line-height: 1; }
.fd-cursos-novo-stats small { color: var(--on-surface-variant); font-size: 9px; white-space: nowrap; }
.fd-cursos-novo-create { grid-column: 1 / -1; justify-self: start; display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 44px; padding: 0 16px; color: var(--on-primary); background: var(--primary); border-radius: 14px; text-decoration: none; font-size: 13px; font-weight: 800; }
.fd-cursos-novo-create .material-symbols-outlined { font-size: 19px; }

.fd-cursos-novo .fd-cursos-abas { display: inline-flex; gap: 4px; width: auto; padding: 4px; margin: 22px 0 4px; background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 14px; }
.fd-cursos-novo .fd-cursos-aba { min-width: 130px; min-height: 42px; padding: 0 16px; border: 0; border-radius: 10px; font-size: 12px; }
.fd-cursos-novo .fd-cursos-aba.is-active { color: var(--on-primary); background: var(--primary); box-shadow: 0 5px 14px color-mix(in srgb, var(--primary) 24%, transparent); }
.fd-cursos-novo .fd-cursos-filtros { display: flex; flex-wrap: wrap; gap: 8px; padding: 0; margin: 18px 0 0; }
.fd-cursos-novo .fd-cursos-filtro { min-height: 44px; padding: 0 13px; color: var(--on-surface-variant); background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-radius: 13px; font-size: 11px; }
.fd-cursos-novo .fd-cursos-filtro:hover { border-color: var(--primary); color: var(--primary); }
.fd-cursos-novo .fd-cursos-filtro.is-active { color: var(--on-primary); background: var(--primary); border-color: var(--primary); box-shadow: 0 5px 14px color-mix(in srgb, var(--primary) 20%, transparent); }
.fd-cursos-novo .fd-cursos-filtro--status { border-radius: 13px; }
.fd-cursos-novo .fd-cursos-filtro-avatar, .fd-cursos-novo .fd-avatar-preset { border-color: currentColor; }

.fd-cursos-novo .fd-cursos-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: 18px; }
.fd-cursos-novo .fd-curso-card { position: relative; min-width: 0; padding: 18px; background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-top: 4px solid var(--primary); border-radius: 20px; box-shadow: 0 3px 14px color-mix(in srgb, var(--on-surface) 5%, transparent); }
.fd-cursos-novo .fd-curso-card-header { align-items: center; gap: 13px; }
.fd-cursos-novo .fd-curso-card-icon { width: 58px; height: 58px; color: var(--primary); background: color-mix(in srgb, var(--primary-container) 75%, var(--surface-container-lowest)); border-radius: 16px; font-size: 27px; }
.fd-cursos-novo .fd-curso-card-icon--img { object-fit: cover; }
.fd-cursos-novo .fd-curso-card-title { color: var(--on-surface); font-family: var(--font-heading); font-size: 17px; line-height: 1.25; }
.fd-cursos-novo .fd-curso-card-meta { margin-top: 4px; color: var(--on-surface-variant); font-size: 11px; }
.fd-cursos-novo .fd-curso-card-progresso { padding: 14px 0; margin-top: 15px; border-top: 1px solid var(--outline-variant); border-bottom: 1px solid var(--outline-variant); }
.fd-cursos-novo .fd-curso-card-progresso-top { font-size: 11px; }
.fd-cursos-novo .fd-curso-card-progresso-valor { color: var(--primary); font-size: 12px; }
.fd-cursos-novo .fd-curso-card-progress-track { height: 7px; background: var(--surface-container-high); border-radius: 999px; }
.fd-cursos-novo .fd-curso-card-progress-fill { background: var(--primary); border-radius: inherit; }
.fd-cursos-novo .fd-curso-card-agenda { padding: 12px; margin-top: 13px; background: color-mix(in srgb, var(--primary-container) 34%, var(--surface-container-low)); border: 1px solid color-mix(in srgb, var(--primary) 18%, var(--outline-variant)); border-radius: 14px; }
.fd-cursos-novo .fd-curso-card-agenda-icon { color: var(--primary); background: color-mix(in srgb, var(--primary-container) 72%, var(--surface-container-lowest)); border-radius: 11px; }
.fd-cursos-novo .fd-curso-card-footer { padding-top: 14px; margin-top: auto; border-top: 1px solid var(--outline-variant); }
.fd-cursos-novo .fd-curso-card-pessoa { color: var(--on-surface-variant); font-size: 11px; }
.fd-cursos-novo .fd-curso-atribuido-avatar { background: var(--primary); }
.fd-cursos-novo .fd-curso-card-cta { display: inline-flex; align-items: center; justify-content: center; min-height: 42px; padding: 0 16px; color: var(--on-primary); background: var(--primary); border-radius: 12px; font-size: 12px; font-weight: 800; line-height: 1; }
.fd-cursos-novo .fd-curso-card-actions { flex-wrap: wrap; gap: 7px; padding-top: 14px; margin-top: 15px; border-top: 1px solid var(--outline-variant); }
.fd-cursos-novo .fd-curso-card-actions.fd-curso-actions a, .fd-cursos-novo .fd-curso-card-actions.fd-curso-actions button { flex: 1 1 100px; min-height: 40px; border-radius: 11px; font-size: 10px; }
.fd-cursos-novo .fd-curso-card-actions .fd-acao-ver { color: var(--on-primary); background: var(--primary); }
.fd-cursos-novo .fd-curso-card-actions .fd-acao-atribuir { color: var(--on-secondary-container); background: var(--secondary-container); }
.fd-cursos-novo .fd-curso-card-excluir-canto { top: 10px; right: 10px; }
.fd-cursos-novo .fd-curso-card-excluir-canto .fd-acao-excluir { width: 38px; height: 38px; color: var(--error); background: var(--error-container); border-radius: 11px; }
.fd-cursos-novo .fd-cursos-empty { margin-top: 18px; background: var(--surface-container-lowest); border: 1px dashed var(--outline); border-radius: 20px; }
.fd-cursos-novo .fd-cursos-empty-icon { color: var(--primary); }
.fd-cursos-novo .fd-cursos-empty-cta { color: var(--on-primary); background: var(--primary); border-radius: 13px; }

.fd-curso-form-novo { width: min(100% - 36px, 920px); margin: 24px auto 44px; }
.fd-curso-form-hero { position: relative; overflow: hidden; display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 164px; padding: 28px 30px; background: linear-gradient(125deg, color-mix(in srgb, var(--primary-container) 78%, var(--surface-container-lowest)), var(--surface-container-lowest) 74%); border: 1px solid color-mix(in srgb, var(--primary) 28%, var(--outline-variant)); border-radius: 28px; }
[data-theme="jornada_vibrante"] .fd-curso-form-hero { background: linear-gradient(125deg, color-mix(in srgb, var(--primary) 22%, var(--surface-container-lowest)), var(--surface-container-lowest) 74%); }
.fd-curso-form-hero h1 { margin: 8px 0 0; color: var(--on-surface); font-family: var(--font-heading); font-size: clamp(27px, 4vw, 36px); line-height: 1.08; letter-spacing: -.025em; }
.fd-curso-form-hero p { max-width: 620px; margin: 10px 0 0; color: var(--on-surface-variant); font-size: 14px; line-height: 1.5; }
.fd-curso-form-hero-icon { display: grid; place-items: center; flex: 0 0 76px; width: 76px; height: 76px; color: var(--primary); background: color-mix(in srgb, var(--surface-container-lowest) 84%, transparent); border: 1px solid color-mix(in srgb, var(--primary) 28%, transparent); border-radius: 23px; font-size: 38px; box-shadow: 0 14px 34px color-mix(in srgb, var(--primary) 16%, transparent); }
.fd-curso-form-dados { padding: 24px; margin: 18px 0 16px; background: #fff; border: 1px solid var(--outline-variant); border-radius: 22px; box-shadow: 0 8px 24px color-mix(in srgb, var(--on-surface) 7%, transparent); }
.fd-curso-form-dados-cabecalho { display: flex; align-items: center; gap: 12px; padding-bottom: 18px; margin-bottom: 20px; border-bottom: 1px solid var(--outline-variant); }
.fd-curso-form-dados-cabecalho > .material-symbols-outlined { display: grid; place-items: center; flex: 0 0 42px; width: 42px; height: 42px; color: var(--primary); background: var(--primary-container); border-radius: 13px; font-size: 22px; }
.fd-curso-form-dados-cabecalho h2 { margin: 0; color: var(--on-surface); font-family: var(--font-heading); font-size: 18px; line-height: 1.2; }
.fd-curso-form-dados-cabecalho p { margin: 4px 0 0; color: var(--on-surface-variant); font-size: 11px; line-height: 1.45; }
.fd-curso-form-novo .fd-curso-form-card { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; padding: 24px; margin: 18px 0 16px; border-radius: 22px; }
.fd-curso-form-novo .fd-curso-form-card--edicao { padding: 0; margin: 0; background: transparent; border: 0; border-radius: 0; }
.fd-curso-form-novo .fd-curso-form-card > .fd-form-field { margin: 0; }
.fd-curso-form-novo .fd-curso-form-card > .fd-form-field:nth-of-type(-n+4), .fd-curso-form-novo .fd-curso-form-card > .fd-form-row { grid-column: 1 / -1; }
.fd-curso-form-novo .fd-curso-form-card > .fd-curso-mesada { --atividade-accent: var(--primary); --atividade-accent-soft: var(--primary-container); grid-column: 1 / -1; width: 100%; }
.fd-curso-mesada .fd-atividade-option { transition: border-color .18s ease, background-color .18s ease, box-shadow .18s ease; }
.fd-curso-mesada .fd-atividade-option:has(input:checked) { border-width: 2px; box-shadow: 0 7px 20px color-mix(in srgb, var(--atividade-accent) 18%, transparent); }
.fd-curso-mesada .fd-atividade-option:has(input:checked) .fd-atividade-option-icon { color: var(--on-primary); background: var(--atividade-accent); font-variation-settings: "FILL" 1; }
.fd-curso-form-novo .fd-curso-form-card > .fd-form-row { margin: 0; }
.fd-curso-form-novo .fd-curso-form-card .fd-form-input, .fd-curso-form-novo .fd-curso-form-card .fd-form-select { min-height: 44px; background: var(--surface-container-low); }
.fd-curso-form-novo .fd-curso-form-card textarea.fd-form-input { min-height: 92px; resize: vertical; }
.fd-curso-form-novo .fd-form-actions { margin-left: 0; margin-right: 0; }
.fd-curso-form-novo > .fd-form-actions:last-child { position: sticky; z-index: 5; bottom: 0; padding: 14px 0 calc(14px + env(safe-area-inset-bottom)); background: color-mix(in srgb, var(--surface) 91%, transparent); backdrop-filter: blur(12px); }
.fd-curso-form-novo > .fd-form-actions:last-child .fd-form-btn-primary { display: inline-flex; align-items: center; justify-content: center; gap: 7px; }
.fd-curso-form-novo > .fd-form-actions:last-child .material-symbols-outlined { font-size: 19px; }

@media (max-width: 900px) {
    .fd-cursos-novo-hero { grid-template-columns: minmax(0, 1fr); }
    .fd-cursos-novo-stats, .fd-cursos-novo--config .fd-cursos-novo-stats { max-width: 560px; }
}

@media (max-width: 700px) {
    .fd-cursos-novo, .fd-curso-form-novo { width: calc(100% - (var(--fd-margin-mobile) * 2)); margin-top: 16px; }
    .fd-cursos-novo-hero, .fd-curso-form-hero { min-height: 0; padding: 22px; border-radius: 22px; }
    .fd-cursos-novo-stats, .fd-cursos-novo--config .fd-cursos-novo-stats { grid-template-columns: minmax(0, 1fr); }
    .fd-cursos-novo-stats > div { min-height: 58px; }
    .fd-cursos-novo .fd-cursos-abas { display: flex; width: 100%; }
    .fd-cursos-novo .fd-cursos-aba { flex: 1; min-width: 0; }
    .fd-cursos-novo .fd-cursos-filtros { flex-wrap: nowrap; padding-bottom: 7px; overflow-x: auto; }
    .fd-cursos-novo .fd-cursos-filtro { flex: 0 0 auto; }
    .fd-cursos-novo .fd-cursos-grid { grid-template-columns: minmax(0, 1fr); }
    .fd-curso-form-hero-icon { display: none; }
    .fd-curso-form-dados { padding: 18px; border-radius: 18px; }
    .fd-curso-form-novo .fd-curso-form-card { grid-template-columns: minmax(0, 1fr); padding: 18px; }
    .fd-curso-form-novo .fd-curso-form-card--edicao { padding: 0; }
    .fd-curso-form-novo .fd-curso-form-card > .fd-form-field, .fd-curso-form-novo .fd-curso-form-card > .fd-form-row { grid-column: 1; }
}

@media (prefers-reduced-motion: reduce) {
    .fd-cursos-novo .fd-curso-card { transition: none; }
}

/* ─── Cursos: navegação no cabeçalho e jornada por pessoa ─────────
   Replica a leitura da Rotina de hoje: primeiro o contexto, depois
   quem está sendo acompanhado e, por fim, as sessões de aprendizado. */
.fd-cursos-novo-hero-nav { position: relative; z-index: 2; grid-column: 1 / -1; min-width: 0; }
.fd-cursos-novo .fd-cursos-novo-hero-nav .fd-cursos-abas { display: inline-flex; width: auto; max-width: none; padding: 4px; margin: 0; background: color-mix(in srgb, var(--surface-container-lowest) 82%, transparent); border-color: color-mix(in srgb, var(--primary) 24%, var(--outline-variant)); box-shadow: 0 7px 22px color-mix(in srgb, var(--primary) 9%, transparent); backdrop-filter: blur(10px); }
.fd-cursos-novo .fd-cursos-novo-hero-nav .fd-cursos-aba { min-width: 142px; }

.fd-cursos-pessoas, .fd-cursos-aprendizado { margin-top: 26px; }
.fd-cursos-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 18px; margin-bottom: 12px; }
.fd-cursos-section-heading h2 { margin: 5px 0 0; color: var(--on-surface); font-family: var(--font-heading); font-size: 19px; line-height: 1.2; }
.fd-cursos-section-kicker { color: var(--primary); font-size: 10px; font-weight: 850; letter-spacing: .09em; text-transform: uppercase; }
.fd-cursos-section-count { flex: 0 0 auto; padding: 6px 10px; color: var(--on-surface-variant); background: var(--surface-container-low); border-radius: 999px; font-size: 11px; font-weight: 750; }
.fd-cursos-section-heading--compact { align-items: center; margin-bottom: 0; }
.fd-cursos-section-heading--compact .fd-cursos-filtros { justify-content: flex-end; margin: 0; }

.fd-cursos-pessoa-lista { display: flex; gap: 10px; padding: 7px 5px 10px; margin: -5px -3px 0; overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: thin; }
.fd-cursos-pessoa-seletor { position: relative; display: grid; grid-template-columns: 46px minmax(125px, 1fr) auto; grid-template-rows: auto 5px; align-items: center; column-gap: 11px; row-gap: 9px; flex: 0 0 270px; min-height: 88px; padding: 12px; color: var(--on-surface); background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-radius: 17px; text-align: left; scroll-snap-align: start; cursor: pointer; transition: border-color .18s ease, background .18s ease, transform .18s ease, box-shadow .18s ease; }
.fd-cursos-pessoa-seletor:hover { transform: translateY(-2px); border-color: color-mix(in srgb, var(--primary) 58%, var(--outline-variant)); }
.fd-cursos-pessoa-seletor.is-active { border-color: var(--primary); background: color-mix(in srgb, var(--primary-container) 48%, var(--surface-container-lowest)); box-shadow: 0 8px 20px color-mix(in srgb, var(--primary) 12%, transparent); }
.fd-cursos-pessoa-seletor:focus-visible { outline: 3px solid color-mix(in srgb, var(--primary) 34%, transparent); outline-offset: 2px; }
.fd-cursos-pessoa-avatar, .fd-cursos-pessoa-icone { grid-row: 1 / 3; display: grid; place-items: center; width: 46px; height: 46px; overflow: hidden; color: var(--on-primary); background: var(--primary); border: 3px solid var(--surface-container-lowest); border-radius: 50%; box-shadow: 0 0 0 1px var(--outline-variant); }
.fd-cursos-pessoa-avatar > *, .fd-cursos-pessoa-avatar img { width: 100%; height: 100%; }
.fd-cursos-pessoa-avatar img { object-fit: cover; }
.fd-cursos-pessoa-avatar .fd-cursos-filtro-avatar, .fd-cursos-pessoa-avatar .fd-avatar-preset { display: grid; place-items: center; border: 0; border-radius: 50%; }
.fd-cursos-pessoa-icone { font-size: 23px; }
.fd-cursos-pessoa-conteudo { min-width: 0; }
.fd-cursos-pessoa-conteudo strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fd-cursos-pessoa-conteudo strong { font-size: 13px; line-height: 1.25; }
.fd-cursos-pessoa-conteudo small { display: block; margin-top: 3px; overflow: visible; color: var(--on-surface-variant); font-size: 10px; white-space: normal; }
.fd-cursos-pessoa-progresso { grid-column: 2 / 4; display: block; height: 5px; margin-top: 9px; overflow: hidden; background: var(--surface-container-high); border-radius: 999px; }
.fd-cursos-pessoa-progresso > span { display: block; height: 100%; background: var(--primary); border-radius: inherit; }
.fd-cursos-pessoa-valor { align-self: start; padding: 4px 7px; color: var(--on-primary-container); background: color-mix(in srgb, var(--primary-container) 74%, var(--surface-container-lowest)); border-radius: 999px; font-size: 10px; font-weight: 850; }

.fd-cursos-novo .fd-curso-card-agenda { position: relative; align-items: center; min-height: 76px; padding: 12px 13px 12px 12px; overflow: hidden; border-left: 4px solid var(--primary); }
.fd-cursos-novo .fd-curso-card-agenda::after { content: ""; position: absolute; width: 58px; height: 58px; right: -34px; bottom: -37px; border: 9px solid color-mix(in srgb, var(--primary) 10%, transparent); border-radius: 50%; }
.fd-cursos-novo .fd-curso-card-agenda-icon { position: relative; z-index: 1; display: grid; place-items: center; width: 40px; height: 40px; flex: 0 0 40px; margin: 0; }
.fd-cursos-novo .fd-curso-card-agenda-main { position: relative; z-index: 1; }
.fd-cursos-novo .fd-curso-card-agenda-label { color: var(--primary); font-weight: 850; }

@media (max-width: 700px) {
    .fd-cursos-novo .fd-cursos-novo-hero-nav .fd-cursos-abas { width: 100%; }
    .fd-cursos-novo .fd-cursos-novo-hero-nav .fd-cursos-aba { min-width: 0; }
    .fd-cursos-section-heading, .fd-cursos-section-heading--compact { align-items: stretch; flex-direction: column; gap: 10px; }
    .fd-cursos-section-heading--compact .fd-cursos-filtros { justify-content: flex-start; margin: 0; }
    .fd-cursos-pessoa-seletor { flex-basis: min(82vw, 270px); }
}

@media (prefers-reduced-motion: reduce) {
    .fd-cursos-pessoa-seletor { transition: none; }
}

/* ─── Diário de aprendizado: registro reflexivo da jornada ─── */
.fd-diario-formulario { width: min(100% - 36px, 920px); margin: 24px auto 44px; padding: 0; }
.fd-diario-hero { position: relative; overflow: hidden; display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, .72fr); align-items: center; gap: 22px 28px; min-height: 210px; padding: 24px 28px 28px; background: linear-gradient(125deg, color-mix(in srgb, var(--primary-container) 78%, var(--surface-container-lowest)), var(--surface-container-lowest) 74%); border: 1px solid color-mix(in srgb, var(--primary) 28%, var(--outline-variant)); border-radius: 28px; }
.fd-diario-hero::after { content: ""; position: absolute; width: 210px; height: 210px; right: -112px; bottom: -142px; border: 30px solid color-mix(in srgb, var(--primary) 10%, transparent); border-radius: 50%; pointer-events: none; }
.fd-diario-voltar, .fd-diario-hero-copy, .fd-diario-hero .fd-diario-info { position: relative; z-index: 1; }
.fd-diario-voltar { grid-column: 1 / -1; justify-self: start; display: inline-flex; align-items: center; gap: 6px; min-height: 38px; padding: 0 7px; margin: -8px 0 -4px; color: var(--primary); border-radius: 10px; font-size: 12px !important; font-weight: 800; text-decoration: none; }
.fd-diario-voltar:hover { background: color-mix(in srgb, var(--primary-container) 48%, transparent); }
.fd-diario-voltar:focus-visible { outline: 3px solid color-mix(in srgb, var(--primary) 30%, transparent); outline-offset: 2px; }
.fd-diario-voltar .material-symbols-outlined { font-size: 19px; }
.fd-diario-hero-copy h1 { margin: 8px 0 0; color: var(--on-surface); font-family: var(--font-heading); font-size: clamp(28px, 4vw, 38px); line-height: 1.08; letter-spacing: -.025em; }
.fd-diario-hero-copy p { max-width: 520px; margin: 11px 0 0; color: var(--on-surface-variant); font-size: 14px; line-height: 1.55; }
.fd-diario-hero .fd-diario-info { display: grid; gap: 8px; padding: 0; margin: 0; background: transparent; border: 0; border-radius: 0; }
.fd-diario-hero .fd-diario-info-linha { display: grid; grid-template-columns: 42px minmax(0, 1fr); align-items: center; gap: 11px; min-height: 68px; padding: 11px 13px; background: color-mix(in srgb, var(--surface-container-lowest) 84%, transparent); border: 1px solid var(--outline-variant); border-radius: 15px; }
.fd-diario-hero .fd-diario-info-linha:last-child:not(:first-child) { padding-top: 11px; border-top: 1px solid var(--outline-variant); }
.fd-diario-hero .fd-diario-info-linha > .material-symbols-outlined { display: grid; place-items: center; width: 42px; height: 42px; color: var(--primary); background: var(--primary-container); border-radius: 12px; font-size: 22px; }
.fd-diario-info-label { margin-bottom: 3px; color: var(--primary); letter-spacing: .06em; }
.fd-diario-info-valor { overflow-wrap: anywhere; font-family: var(--font-heading); font-size: 15px; line-height: 1.3; }
.fd-diario-formulario > .fd-diario-card { display: block; width: 100%; max-width: none; padding: 24px; margin: 18px 0 0; background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-radius: 22px; box-shadow: 0 8px 24px color-mix(in srgb, var(--on-surface) 7%, transparent); box-sizing: border-box; }
.fd-diario-card-cabecalho { display: grid; grid-template-columns: 44px minmax(0, 1fr); align-items: center; gap: 12px; padding-bottom: 18px; margin-bottom: 18px; border-bottom: 1px solid var(--outline-variant); }
.fd-diario-card-cabecalho > .material-symbols-outlined { display: grid; place-items: center; width: 44px; height: 44px; color: var(--primary); background: var(--primary-container); border-radius: 13px; font-size: 24px; }
.fd-diario-card-cabecalho h2 { margin: 0; color: var(--on-surface); font-family: var(--font-heading); font-size: 20px; line-height: 1.2; }
.fd-diario-card-cabecalho p { margin: 4px 0 0; color: var(--on-surface-variant); font-size: 13px; line-height: 1.45; }
.fd-diario-formulario .fd-diario-modos { gap: 6px; padding: 5px; margin-bottom: 18px; background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 15px; }
.fd-diario-formulario .fd-diario-modo { min-height: 46px; border-radius: 11px; font-size: 12px; }
.fd-diario-formulario .fd-diario-modo.is-active { color: var(--on-primary); background: var(--primary); box-shadow: 0 5px 14px color-mix(in srgb, var(--primary) 20%, transparent); }
.fd-diario-formulario .fd-diario-modo:focus-visible { outline: 3px solid color-mix(in srgb, var(--primary) 30%, transparent); outline-offset: 2px; }
.fd-diario-formulario .fd-diario-audio { padding: 17px; margin-bottom: 18px; background: color-mix(in srgb, var(--primary-container) 22%, var(--surface-container-low)); border-color: color-mix(in srgb, var(--primary) 22%, var(--outline-variant)); border-radius: 16px; }
.fd-diario-formulario .fd-diario-gravar { min-height: 46px; border-radius: 12px; }
.fd-diario-formulario .fd-diario-textarea { min-height: 220px; padding: 16px; background: var(--surface-container-low); border-radius: 14px; line-height: 1.6; resize: vertical; }
.fd-diario-formulario .fd-diario-textarea:focus { background: var(--surface-container-lowest); }
.fd-diario-formulario .fd-diario-contador { margin-top: 7px; font-variant-numeric: tabular-nums; }
.fd-diario-formulario .fd-diario-aviso { gap: 10px; padding: 13px 14px; margin-top: 17px; background: color-mix(in srgb, var(--secondary-container) 48%, var(--surface-container-low)); border: 1px solid color-mix(in srgb, var(--secondary) 18%, var(--outline-variant)); border-radius: 14px; }
.fd-diario-formulario .fd-diario-aviso .material-symbols-outlined { color: var(--secondary); font-size: 20px; }
.fd-diario-formulario > .fd-diario-actions { position: sticky; z-index: 5; bottom: 0; gap: 10px; padding: 14px 0 calc(14px + env(safe-area-inset-bottom)); margin: 0; background: color-mix(in srgb, var(--surface) 91%, transparent); backdrop-filter: blur(12px); }
.fd-diario-actions .fd-form-btn-primary { display: inline-flex; align-items: center; justify-content: center; gap: 7px; }
.fd-diario-actions .fd-form-btn-primary .material-symbols-outlined { font-size: 19px; }
@media (max-width: 700px) {
    .fd-diario-formulario { width: calc(100% - (var(--fd-margin-mobile) * 2)); margin-top: 12px; margin-bottom: 28px; }
    .fd-diario-hero { grid-template-columns: minmax(0, 1fr); min-height: 0; padding: 20px; border-radius: 22px; }
    .fd-diario-hero .fd-diario-info { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .fd-diario-hero .fd-diario-info-linha { grid-template-columns: 36px minmax(0, 1fr); min-height: 64px; padding: 10px; }
    .fd-diario-hero .fd-diario-info-linha > .material-symbols-outlined { width: 36px; height: 36px; font-size: 20px; }
    .fd-diario-formulario > .fd-diario-card { padding: 18px; border-radius: 18px; }
    .fd-diario-card-cabecalho { grid-template-columns: 40px minmax(0, 1fr); }
    .fd-diario-card-cabecalho > .material-symbols-outlined { width: 40px; height: 40px; }
    .fd-diario-formulario .fd-diario-textarea { min-height: 190px; }
}
@media (max-width: 480px) {
    .fd-diario-hero .fd-diario-info { grid-template-columns: minmax(0, 1fr); }
    .fd-diario-formulario .fd-diario-audio { grid-template-columns: minmax(0, 1fr) auto; }
    .fd-diario-formulario > .fd-diario-actions { flex-direction: column; }
}
@media (prefers-reduced-motion: reduce) {
    .fd-diario-voltar, .fd-diario-modo, .fd-diario-gravar { transition: none; }
}
/* ─── Página de estudo: alinhamento com a linguagem visual atual ─── */
.fd-estudo-detalhe { width: min(100% - 36px, 1120px); margin: 24px auto 44px; padding: 0; }
.fd-estudo-detalhe > * { margin-top: 20px; }
.fd-estudo-detalhe > *:first-child { margin-top: 0; }
.fd-estudo-detalhe > .fd-cursos-filtros { display: flex; flex-wrap: nowrap; gap: 8px; padding: 5px; overflow-x: auto; background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 15px; }
.fd-estudo-detalhe > .fd-cursos-filtros .fd-cursos-filtro { flex: 0 0 auto; min-height: 42px; background: var(--surface-container-lowest); border-radius: 11px; }
.fd-estudo-detalhe > .fd-cursos-filtros .fd-cursos-filtro.is-active { color: var(--on-primary); background: var(--primary); border-color: var(--primary); }
.fd-estudo-header { position: relative; overflow: hidden; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 20px 26px; padding: 28px 30px; background: linear-gradient(125deg, color-mix(in srgb, var(--primary-container) 78%, var(--surface-container-lowest)), var(--surface-container-lowest) 74%); border-color: color-mix(in srgb, var(--primary) 28%, var(--outline-variant)); border-radius: 28px; }
.fd-estudo-header::after { content: ""; position: absolute; width: 220px; height: 220px; right: -112px; bottom: -145px; border: 31px solid color-mix(in srgb, var(--primary) 10%, transparent); border-radius: 50%; pointer-events: none; }
.fd-estudo-header-top, .fd-estudo-header > .fd-curso-card-progresso, .fd-estudo-header > .fd-estudo-cta { position: relative; z-index: 1; }
.fd-estudo-header-top { grid-column: 1 / -1; align-items: center; }
.fd-estudo-header-main > .fd-rotina-eyebrow { display: block; margin-bottom: 8px; }
.fd-estudo-badge-row { margin-bottom: 8px; }
.fd-estudo-titulo { margin: 0; font-size: clamp(27px, 4vw, 38px); line-height: 1.08; letter-spacing: -.025em; }
.fd-estudo-pessoa { display: inline-flex; align-items: center; min-height: 30px; padding: 5px 10px; margin-top: 10px; color: var(--on-primary-container); background: color-mix(in srgb, var(--primary-container) 68%, var(--surface-container-lowest)); border-radius: 999px; font-weight: 750; }
.fd-estudo-capa { width: 88px; height: 88px; background: color-mix(in srgb, var(--surface-container-lowest) 88%, transparent); border: 1px solid color-mix(in srgb, var(--primary) 25%, var(--outline-variant)); border-radius: 24px; box-shadow: 0 14px 34px color-mix(in srgb, var(--primary) 14%, transparent); font-size: 38px; }
.fd-estudo-header > .fd-curso-card-progresso { min-width: 0; padding: 14px 16px; margin: 0; background: color-mix(in srgb, var(--surface-container-lowest) 82%, transparent); border: 1px solid var(--outline-variant); border-radius: 15px; }
.fd-estudo-header .fd-curso-card-progress-track { height: 8px; border-radius: 999px; }
.fd-estudo-header > .fd-estudo-cta { align-self: stretch; width: auto; min-width: 230px; min-height: 54px; padding: 0 20px; color: var(--on-primary); background: var(--primary); border-radius: 15px; box-shadow: 0 8px 20px color-mix(in srgb, var(--primary) 22%, transparent); }
.fd-estudo-header > .fd-estudo-cta:focus-visible { outline-color: var(--on-primary); }
.fd-estudo-proxima-sessao { position: relative; padding: 17px 19px; background: color-mix(in srgb, var(--secondary-container) 70%, var(--surface-container-lowest)); border: 1px solid color-mix(in srgb, var(--secondary) 24%, var(--outline-variant)); border-radius: 18px; }
.fd-estudo-proxima-sessao-icon { width: 48px; height: 48px; border-radius: 14px; box-shadow: 0 5px 14px color-mix(in srgb, var(--secondary) 12%, transparent); }
.fd-estudo-proxima-sessao-valor { font-family: var(--font-heading); font-size: 16px; }
.fd-estudo-abas { position: sticky; z-index: 4; top: 70px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 5px; padding: 5px; background: color-mix(in srgb, var(--surface-container-lowest) 92%, transparent); border: 1px solid var(--outline-variant); border-radius: 16px; box-shadow: 0 8px 24px color-mix(in srgb, var(--on-surface) 7%, transparent); backdrop-filter: blur(12px); }
.fd-estudo-aba { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 44px; padding: 0 14px; margin: 0; border: 0; border-radius: 11px; }
.fd-estudo-aba .material-symbols-outlined { font-size: 19px; }
.fd-estudo-aba.is-active { color: var(--on-primary); background: var(--primary); box-shadow: 0 5px 14px color-mix(in srgb, var(--primary) 22%, transparent); }
.fd-estudo-aba:focus-visible { color: var(--primary); outline: 3px solid color-mix(in srgb, var(--primary) 30%, transparent); outline-offset: -3px; box-shadow: none; }
.fd-estudo-aba.is-active:focus-visible { color: var(--on-primary); }
.fd-estudo-bento { gap: 14px; }
.fd-estudo-bento-card { min-height: 150px; padding: 20px; gap: 11px; border-radius: 20px; box-shadow: 0 4px 16px color-mix(in srgb, var(--on-surface) 5%, transparent); }
.fd-estudo-bento-card-titulo { gap: 10px; }
.fd-estudo-bento-card-titulo > .material-symbols-outlined { display: grid; place-items: center; flex: 0 0 40px; width: 40px; height: 40px; background: color-mix(in srgb, currentColor 12%, var(--surface-container-lowest)); border-radius: 12px; }
.fd-estudo-bento-card-titulo h3 { color: var(--on-surface); font-family: var(--font-heading); font-size: 17px; }
.fd-estudo-bento-card-texto { color: var(--on-surface-variant); line-height: 1.55; }
.fd-estudo-prazo-item { padding: 13px; border-radius: 13px; }
.fd-estudo-habilidade-chip { min-height: 30px; display: inline-flex; align-items: center; padding: 4px 11px; color: var(--on-primary-container); background: var(--primary-container); border-color: color-mix(in srgb, var(--primary) 20%, var(--outline-variant)); }
.fd-estudo-acoes-secundarias { gap: 10px; }
.fd-estudo-acao-secundaria { min-height: 48px; border-radius: 14px; }
.fd-estudo-sessoes-lista { gap: 10px; }
.fd-estudo-sessao-item, .fd-cronograma-resumo, .fd-cronograma-semana { border-radius: 18px; box-shadow: 0 4px 16px color-mix(in srgb, var(--on-surface) 5%, transparent); }
@media (max-width: 700px) {
    .fd-estudo-detalhe { width: calc(100% - (var(--fd-margin-mobile) * 2)); margin-top: 12px; margin-bottom: 30px; }
    .fd-estudo-header { grid-template-columns: minmax(0, 1fr); padding: 21px; border-radius: 22px; }
    .fd-estudo-header-top { align-items: flex-start; }
    .fd-estudo-capa { width: 64px; height: 64px; border-radius: 18px; }
    .fd-estudo-header > .fd-estudo-cta { width: 100%; min-width: 0; }
    .fd-estudo-abas { top: 62px; }
    .fd-estudo-aba { padding: 0 8px; font-size: 11px !important; }
    .fd-estudo-aba .material-symbols-outlined { font-size: 18px; }
    .fd-estudo-bento { grid-template-columns: minmax(0, 1fr); }
    .fd-estudo-bento-card { min-height: 0; padding: 17px; }
}
@media (max-width: 430px) {
    .fd-estudo-aba { gap: 4px; padding: 0 5px; }
    .fd-estudo-aba .material-symbols-outlined { display: none; }
    .fd-estudo-prazo-comparacao { grid-template-columns: minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) {
    .fd-estudo-header > .fd-estudo-cta, .fd-estudo-aba, .fd-estudo-bento-card { transition: none; }
}
/* ════════════════════════════════════════════════════════════════════
   LEGIBILIDADE GLOBAL — WCAG 2.2 AA (2026-08-27)
   Piso tipográfico compartilhado por todas as telas. Preserva títulos
   e ícones, mas impede que conteúdo necessário volte a 9–12px.
   ════════════════════════════════════════════════════════════════════ */
html { font-size: 16px; }
body { font-size: 1rem; line-height: 1.55; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; }

:where(p, li, dt, dd, label, input, select, textarea, th, td) {
    font-size: 1rem !important;
    line-height: 1.5;
}

:where(a[href], button, summary) {
    font-size: .9375rem !important;
    line-height: 1.4;
}

:where(a[href], button, summary) strong {
    font-size: inherit !important;
}

:where(
    small,
    time,
    [class*="-meta"],
    [class*="-label"],
    [class*="-kicker"],
    [class*="-eyebrow"],
    [class*="-count"],
    [class*="-status"],
    [class*="-description"],
    [class*="-descricao"],
    [class*="-texto"]
) {
    font-size: .875rem !important;
    line-height: 1.45;
}

:where(
    [class*="-meta"],
    [class*="-label"],
    [class*="-kicker"],
    [class*="-eyebrow"],
    [class*="-description"],
    [class*="-descricao"],
    [class*="-texto"]
) {
    font-weight: 600;
}

:where(input, select, textarea)::placeholder {
    color: var(--on-surface-variant);
    opacity: .9;
}

@media (max-width: 700px) {
    html { font-size: 16px; }
    :where(a[href], button, summary) { line-height: 1.35; }
}

/* ─── Ajuste de cronograma: linguagem visual do menu Cursos ──────── */
.fd-cronograma-ajuste { width: min(100% - 36px, 1040px); margin: 24px auto 48px; }
.fd-cronograma-ajuste-hero { position: relative; overflow: hidden; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 22px 28px; padding: 28px 30px; background: linear-gradient(125deg, color-mix(in srgb, var(--primary-container) 78%, var(--surface-container-lowest)), var(--surface-container-lowest) 74%); border: 1px solid color-mix(in srgb, var(--primary) 28%, var(--outline-variant)); border-radius: 28px; }
[data-theme="jornada_vibrante"] .fd-cronograma-ajuste-hero { background: linear-gradient(125deg, color-mix(in srgb, var(--primary) 22%, var(--surface-container-lowest)), var(--surface-container-lowest) 74%); }
.fd-cronograma-ajuste-hero::after { content: ""; position: absolute; width: 220px; height: 220px; right: -118px; bottom: -142px; border: 31px solid color-mix(in srgb, var(--primary) 11%, transparent); border-radius: 50%; }
.fd-cronograma-ajuste-hero-copy, .fd-cronograma-ajuste-resumo, .fd-cronograma-ajuste-hero .fd-cronograma-info { position: relative; z-index: 1; }
.fd-cronograma-ajuste-voltar { display: inline-flex; align-items: center; gap: 6px; margin-bottom: 20px; color: var(--primary); text-decoration: none; font-weight: 800; }
.fd-cronograma-ajuste-voltar .material-symbols-outlined { font-size: 19px; }
.fd-cronograma-ajuste-voltar:hover { text-decoration: underline; }
.fd-cronograma-ajuste-eyebrow { display: block; color: var(--primary); font-size: 14px; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.fd-cronograma-ajuste-hero h1 { max-width: 620px; margin: 8px 0 0; color: var(--on-surface); font-family: var(--font-heading); font-size: clamp(29px, 4vw, 40px); line-height: 1.08; letter-spacing: -.025em; }
.fd-cronograma-ajuste-hero-copy > p { max-width: 660px; margin: 12px 0 0; color: var(--on-surface-variant); line-height: 1.55; }
.fd-cronograma-ajuste-resumo { display: grid; grid-template-columns: repeat(3, minmax(112px, 1fr)); gap: 9px; }
.fd-cronograma-ajuste-resumo > div { display: grid; grid-template-columns: 32px auto; grid-template-rows: auto auto; align-items: center; column-gap: 8px; min-height: 76px; padding: 11px; background: color-mix(in srgb, var(--surface-container-lowest) 86%, transparent); border: 1px solid var(--outline-variant); border-radius: 16px; }
.fd-cronograma-ajuste-resumo .material-symbols-outlined { grid-row: 1 / 3; color: var(--primary); font-size: 25px; }
.fd-cronograma-ajuste-resumo strong { color: var(--on-surface); font-family: var(--font-heading); font-size: 18px; line-height: 1.1; white-space: nowrap; }
.fd-cronograma-ajuste-resumo small { color: var(--on-surface-variant); white-space: nowrap; }
.fd-cronograma-ajuste-hero .fd-cronograma-info { grid-column: 1 / -1; align-items: center; padding: 13px 15px; margin: 0; color: var(--on-primary-container); background: color-mix(in srgb, var(--primary-container) 35%, var(--surface-container-lowest)); border: 1px solid color-mix(in srgb, var(--primary) 20%, var(--outline-variant)); border-radius: 15px; }

.fd-cronograma-ajuste .fd-cronograma-ajuste-card { display: block; width: 100%; max-width: none; padding: 26px; margin: 18px 0 0; background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-radius: 22px; box-shadow: 0 4px 18px color-mix(in srgb, var(--on-surface) 5%, transparent); }
.fd-cronograma-ajuste-section-head { display: flex; align-items: center; gap: 13px; padding-bottom: 18px; margin-bottom: 20px; border-bottom: 1px solid var(--outline-variant); }
.fd-cronograma-ajuste-section-head > .material-symbols-outlined { display: grid; place-items: center; flex: 0 0 44px; width: 44px; height: 44px; color: var(--on-primary-container); background: color-mix(in srgb, var(--primary-container) 72%, var(--surface-container-lowest)); border-radius: 13px; font-size: 23px; }
.fd-cronograma-ajuste-section-head h2 { margin: 0; color: var(--on-surface); font-family: var(--font-heading); font-size: 20px; line-height: 1.2; }
.fd-cronograma-ajuste-section-head p { margin: 4px 0 0; color: var(--on-surface-variant); }
.fd-cronograma-ajuste-dias-field { padding: 16px; margin: 0; background: var(--surface-container-low); border-radius: 17px; }
.fd-cronograma-ajuste-dias-field .fd-form-hint { margin: 4px 0 13px; }
.fd-cronograma-ajuste .fd-cronograma-dias { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 8px; }
.fd-cronograma-ajuste .fd-cronograma-dia { min-width: 0; }
.fd-cronograma-ajuste .fd-cronograma-dia-label { min-height: 48px; height: auto; padding: 0 6px; color: var(--on-surface); background: var(--surface-container-lowest); border-radius: 14px; font-weight: 800; }
.fd-cronograma-ajuste .fd-cronograma-dia-input:checked + .fd-cronograma-dia-label { background: var(--primary); border-color: var(--primary); color: var(--on-primary); box-shadow: 0 6px 14px color-mix(in srgb, var(--primary) 20%, transparent); }
.fd-cronograma-ajuste .fd-cronograma-dia-input:focus-visible + .fd-cronograma-dia-label { outline: 3px solid color-mix(in srgb, var(--primary) 35%, transparent); outline-offset: 2px; }
.fd-cronograma-ajuste .fd-cronograma-campos { gap: 14px; margin-top: 18px; }
.fd-cronograma-ajuste .fd-cronograma-campos .fd-form-field { padding: 15px; margin: 0; background: var(--surface-container-low); border: 1px solid transparent; border-radius: 16px; }
.fd-cronograma-campo-label { display: flex; align-items: center; gap: 7px; }
.fd-cronograma-campo-label .material-symbols-outlined { color: var(--primary); font-size: 20px; }
.fd-cronograma-ajuste .fd-form-input, .fd-cronograma-ajuste .fd-form-select { min-height: 48px; margin-top: 9px; background: var(--surface-container-lowest); border-color: var(--outline-variant); border-radius: 12px; }

.fd-cronograma-ajuste .fd-cronograma-marcos { gap: 14px; padding: 24px 26px; margin: 18px 0 0; background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-radius: 22px; box-shadow: 0 4px 18px color-mix(in srgb, var(--on-surface) 5%, transparent); }
.fd-cronograma-ajuste .fd-cronograma-marcos-topo { align-items: center; }
.fd-cronograma-ajuste .fd-cronograma-ajuste-section-head--marcos { flex: 1; padding: 0; margin: 0; border: 0; }
.fd-cronograma-ajuste .fd-cronograma-ver-todos { display: inline-flex; align-items: center; gap: 5px; flex: 0 0 auto; min-height: 44px; padding: 0 13px; color: var(--on-primary-container); background: color-mix(in srgb, var(--primary-container) 58%, var(--surface-container-lowest)); border-radius: 12px; }
.fd-cronograma-ajuste .fd-cronograma-ver-todos .material-symbols-outlined { font-size: 18px; }
.fd-cronograma-ajuste .fd-cronograma-marcos-lista { gap: 10px; margin: 4px 0 0; }
.fd-cronograma-ajuste .fd-cronograma-marco { position: relative; min-height: 72px; padding: 13px 14px; background: var(--surface-container-low); border-left: 4px solid var(--primary); border-radius: 15px; }
.fd-cronograma-ajuste .fd-cronograma-marco-indice { width: 44px; height: 44px; color: var(--on-primary-container); background: color-mix(in srgb, var(--primary-container) 74%, var(--surface-container-lowest)); }
.fd-cronograma-ajuste .fd-cronograma-marco-nome { font-size: 16px; }
.fd-cronograma-ajuste .fd-cronograma-marco-editar { width: 44px; height: 44px; color: var(--primary); background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-radius: 12px; }

.fd-cronograma-ajuste-actions { position: sticky; z-index: 5; bottom: 0; display: grid; grid-template-columns: auto auto minmax(190px, 1fr); gap: 10px; padding: 14px 0 calc(14px + env(safe-area-inset-bottom)); margin-top: 12px; background: color-mix(in srgb, var(--surface) 91%, transparent); backdrop-filter: blur(12px); }
.fd-cronograma-ajuste-actions .fd-form-btn-primary, .fd-cronograma-ajuste-actions .fd-form-btn-secondary { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: 0 18px; margin: 0; border-radius: 13px; text-align: center; }
.fd-cronograma-ajuste-actions .fd-cronograma-btn-acao { width: auto; }
.fd-cronograma-ajuste-actions .fd-form-btn-primary { color: var(--on-primary); background: var(--primary); }

@media (max-width: 900px) {
    .fd-cronograma-ajuste-hero { grid-template-columns: minmax(0, 1fr); }
    .fd-cronograma-ajuste-resumo { max-width: 620px; }
}

@media (max-width: 700px) {
    .fd-cronograma-ajuste { width: calc(100% - (var(--fd-margin-mobile) * 2)); margin-top: 16px; }
    .fd-cronograma-ajuste-hero { padding: 22px; border-radius: 22px; }
    .fd-cronograma-ajuste-resumo { grid-template-columns: minmax(0, 1fr); }
    .fd-cronograma-ajuste-resumo > div { min-height: 64px; }
    .fd-cronograma-ajuste .fd-cronograma-ajuste-card, .fd-cronograma-ajuste .fd-cronograma-marcos { padding: 19px; border-radius: 19px; }
    .fd-cronograma-ajuste .fd-cronograma-dias { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .fd-cronograma-ajuste .fd-cronograma-marcos-topo { align-items: stretch; flex-direction: column; }
    .fd-cronograma-ajuste .fd-cronograma-ver-todos { align-self: flex-start; }
    .fd-cronograma-ajuste-actions { grid-template-columns: minmax(0, 1fr); }
    .fd-cronograma-ajuste-actions .fd-form-btn-primary { grid-row: 1; }
}

@media (prefers-reduced-motion: reduce) {
    .fd-cronograma-ajuste .fd-cronograma-dia-label, .fd-cronograma-ajuste .fd-cronograma-marco-editar { transition: none; }
}

/* ─── Atividade física: avaliação e evolução corporal ───────────── */
.fd-avaliacao-corporal .fd-atividade-section-icon { color: #b74432; background: #ffe0da; }
.fd-atividade-objetivo { padding: 14px; background: color-mix(in srgb, #ffe0da 38%, var(--surface-container-low)); border: 1px solid color-mix(in srgb, #e7604a 24%, var(--outline-variant)); border-radius: 14px; }
.fd-atividade-select-icon { position: relative; }
.fd-atividade-select-icon > .material-symbols-outlined { position: absolute; z-index: 1; top: 50%; left: 13px; color: #b74432; font-size: 21px; pointer-events: none; transform: translateY(-50%); }
.fd-atividade-select-icon .fd-form-select { padding-left: 43px; background-color: var(--surface); }
.fd-atividade-objetivo .fd-form-hint { margin: 8px 0 0; }
.fd-atividade-objetivo-outro { padding: 14px; background: var(--surface-container-low); border-left: 4px solid #e7604a; border-radius: 0 12px 12px 0; }
.fd-ativ-config-card-goal { color: #8f3528; background: color-mix(in srgb, #ffe0da 58%, var(--surface)); border-color: color-mix(in srgb, #e7604a 24%, var(--outline-variant)) !important; font-weight: 750; }
.fd-avaliacao-corporal-intro { display: flex; align-items: center; gap: 11px; padding: 13px 15px; margin-bottom: 18px; color: var(--on-surface); background: color-mix(in srgb, #ffe0da 50%, var(--surface-container-low)); border: 1px solid color-mix(in srgb, #e7604a 22%, var(--outline-variant)); border-radius: 14px; }
.fd-avaliacao-corporal-intro > .material-symbols-outlined { flex: 0 0 auto; color: #b74432; font-size: 24px; }
.fd-avaliacao-corporal-intro p { margin: 0; }
.fd-avaliacao-corporal-grid { display: grid; gap: 14px; }
.fd-avaliacao-corporal-grid--contexto { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.fd-avaliacao-corporal-grid--medidas { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.fd-avaliacao-corporal-grid .fd-form-field { margin: 0; }
.fd-avaliacao-corporal-subtitulo { display: flex; align-items: center; gap: 7px; padding-top: 18px; margin: 18px 0 12px; border-top: 1px solid var(--outline-variant); color: var(--on-surface); }
.fd-avaliacao-corporal-subtitulo .material-symbols-outlined { color: #b74432; font-size: 21px; }
.fd-avaliacao-corporal-subtitulo small { margin-left: auto; color: var(--on-surface-variant); }
.fd-avaliacao-corporal > .fd-atividade-section-body > .fd-form-field:last-of-type { margin-top: 18px; }

.fd-avaliacao-historico { padding-top: 22px; margin-top: 24px; border-top: 1px solid var(--outline-variant); }
.fd-avaliacao-historico-head { display: flex; align-items: end; justify-content: space-between; gap: 14px; margin-bottom: 12px; }
.fd-avaliacao-historico-head h3 { margin: 5px 0 0; color: var(--on-surface); font-family: var(--font-heading); font-size: 20px; }
.fd-avaliacao-historico-head > span { padding: 6px 10px; color: var(--on-surface-variant); background: var(--surface-container-low); border-radius: 999px; font-size: 14px; font-weight: 750; }
.fd-avaliacao-historico-lista { display: grid; gap: 10px; }
.fd-avaliacao-historico-card { display: grid; grid-template-columns: minmax(160px, .7fr) minmax(0, 1.8fr); align-items: center; gap: 14px 20px; padding: 15px; background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-left: 4px solid #e7604a; border-radius: 16px; }
.fd-avaliacao-historico-data { display: flex; align-items: center; gap: 10px; min-width: 0; }
.fd-avaliacao-historico-data > .material-symbols-outlined { display: grid; place-items: center; flex: 0 0 40px; width: 40px; height: 40px; color: #b74432; background: #ffe0da; border-radius: 12px; font-size: 21px; }
.fd-avaliacao-historico-data strong, .fd-avaliacao-historico-data small { display: block; }
.fd-avaliacao-historico-data small { margin-top: 2px; color: var(--on-surface-variant); }
.fd-avaliacao-historico-valores { display: grid; grid-template-columns: repeat(4, minmax(80px, 1fr)); gap: 8px; }
.fd-avaliacao-historico-valores > span { min-width: 0; padding: 9px 10px; background: var(--surface-container-lowest); border-radius: 11px; }
.fd-avaliacao-historico-valores small, .fd-avaliacao-historico-valores strong { display: block; }
.fd-avaliacao-historico-valores small { color: var(--on-surface-variant); }
.fd-avaliacao-historico-valores strong { margin-top: 2px; color: var(--on-surface); font-size: 15px; }
.fd-avaliacao-historico-valores em { display: inline-block; margin-top: 4px; color: var(--on-surface-variant); font-size: 13px; font-style: normal; font-weight: 800; }
.fd-avaliacao-historico-valores em.is-aumento { color: #9a3c2d; }
.fd-avaliacao-historico-valores em.is-reducao { color: #087866; }
.fd-avaliacao-historico-card > p { grid-column: 1 / -1; padding-top: 10px; margin: 0; color: var(--on-surface-variant); border-top: 1px solid var(--outline-variant); }

@media (max-width: 760px) {
    .fd-avaliacao-corporal-grid--contexto, .fd-avaliacao-corporal-grid--medidas { grid-template-columns: minmax(0, 1fr); }
    .fd-avaliacao-historico-card { grid-template-columns: minmax(0, 1fr); }
    .fd-avaliacao-historico-valores { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 420px) {
    .fd-avaliacao-historico-head { align-items: stretch; flex-direction: column; }
    .fd-avaliacao-historico-head > span { align-self: flex-start; }
    .fd-avaliacao-historico-valores { grid-template-columns: minmax(0, 1fr); }
}
/* ─── Recompensas, mesadas e pagamentos ─────────────────────────── */
.fd-recomp-page { display:grid; gap:24px; max-width:1180px; margin:0 auto; padding-bottom:32px; }
.fd-recomp-hero { position:relative; display:flex; align-items:center; justify-content:space-between; gap:28px; overflow:hidden; padding:28px 30px; color:var(--on-surface); background:linear-gradient(125deg,color-mix(in srgb,var(--primary-container) 52%,var(--surface-container-lowest)),var(--surface-container-lowest) 62%); border:1px solid var(--outline-variant); border-radius:24px; box-shadow:0 10px 28px color-mix(in srgb,var(--primary) 8%,transparent); }
.fd-recomp-hero h1 { margin:5px 0 7px; color:var(--primary); font-family:var(--font-heading); font-size:clamp(25px,3vw,34px); }
.fd-recomp-hero p { max-width:650px; margin:0; color:var(--on-surface-variant); font-size:14px; line-height:1.55; }
.fd-recomp-balance { display:flex; align-items:center; gap:14px; flex:0 0 auto; min-width:245px; padding:16px 18px; background:var(--surface-container-lowest); border:1px solid color-mix(in srgb,var(--primary) 24%,var(--outline-variant)); border-radius:18px; }
.fd-recomp-balance>.material-symbols-outlined,.fd-recomp-hero-symbol { display:grid; place-items:center; width:50px; height:50px; color:var(--primary); background:var(--primary-container); border-radius:15px; font-size:27px; }
.fd-recomp-balance small,.fd-recomp-balance strong,.fd-recomp-balance span { display:block; }
.fd-recomp-balance small { color:var(--on-surface-variant); font-size:10px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.fd-recomp-balance strong { margin-top:2px; color:var(--primary); font-family:var(--font-heading); font-size:26px; }
.fd-recomp-balance div>span { color:var(--on-surface-variant); font-size:10px; }
.fd-recomp-nav { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; padding:7px; background:var(--surface-container-low); border:1px solid var(--outline-variant); border-radius:18px; }
.fd-recomp-nav a { display:flex; align-items:center; justify-content:center; gap:7px; min-height:46px; padding:8px 12px; color:var(--on-surface-variant); border-radius:13px; text-decoration:none; font-size:12px; font-weight:800; }
.fd-recomp-nav a:hover { color:var(--primary); background:var(--surface-container-lowest); }
.fd-recomp-nav a.is-active { color:var(--on-primary); background:var(--primary); box-shadow:0 5px 13px color-mix(in srgb,var(--primary) 24%,transparent); }
.fd-recomp-nav .material-symbols-outlined { font-size:19px; }
.fd-recomp-goal-strip { display:grid; grid-template-columns:44px minmax(0,1fr) auto auto; align-items:center; gap:14px; padding:15px 18px; color:var(--on-surface); background:color-mix(in srgb,var(--tertiary-container) 42%,var(--surface-container-lowest)); border:1px solid color-mix(in srgb,var(--tertiary) 28%,var(--outline-variant)); border-radius:18px; }
.fd-recomp-goal-strip>.material-symbols-outlined { display:grid; place-items:center; width:44px; height:44px; color:var(--on-tertiary-container); background:var(--tertiary-container); border-radius:13px; }
.fd-recomp-goal-strip small,.fd-recomp-goal-strip strong { display:block; }.fd-recomp-goal-strip small { color:var(--on-surface-variant); font-size:10px; }.fd-recomp-goal-strip strong { margin:2px 0 6px; font-size:14px; }
.fd-recomp-goal-strip div>div,.fd-recomp-goal-bar { height:6px; overflow:hidden; background:var(--surface-container-high); border-radius:999px; }.fd-recomp-goal-strip div>div span,.fd-recomp-goal-bar span { display:block; height:100%; background:var(--tertiary); border-radius:inherit; }.fd-recomp-goal-strip>a { color:var(--on-tertiary-container); font-size:12px; font-weight:850; }
.fd-recomp-catalog { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.fd-recomp-card { --tipo-cor:var(--primary); --tipo-fundo:var(--primary-container); display:grid; grid-template-columns:52px minmax(0,1fr) auto; align-items:center; gap:14px; padding:17px; background:var(--surface-container-lowest); border:1px solid var(--outline-variant); border-left:4px solid var(--tipo-cor); border-radius:18px; }.fd-recomp-card--azul{--tipo-cor:#3566b8;--tipo-fundo:#d9e6ff}.fd-recomp-card--coral{--tipo-cor:#d95540;--tipo-fundo:#ffe0da}.fd-recomp-card--verde{--tipo-cor:#197965;--tipo-fundo:#c1f1e4}.fd-recomp-card--violeta{--tipo-cor:#7556b3;--tipo-fundo:#eaddff}.fd-recomp-card--ambar{--tipo-cor:#a96100;--tipo-fundo:#ffddb3}
.fd-recomp-card-icon { display:grid; place-items:center; width:52px; height:52px; color:var(--tipo-cor); background:var(--tipo-fundo); border-radius:15px; font-size:26px; }.fd-recomp-card-copy>span { color:var(--tipo-cor); font-size:9px; font-weight:850; letter-spacing:.08em; text-transform:uppercase; }.fd-recomp-card h3 { margin:4px 0; color:var(--on-surface); font-family:var(--font-heading); font-size:16px; }.fd-recomp-card p { margin:0; color:var(--on-surface-variant); font-size:11px; line-height:1.4; }
.fd-recomp-card-action { display:grid; justify-items:end; gap:7px; }.fd-recomp-card-action strong { color:var(--tipo-cor); font-size:16px; }.fd-recomp-card-action button,.fd-recomp-rule-card>button,.fd-recomp-create button,.fd-recomp-close-form button,.fd-recomp-statements button { display:inline-flex; align-items:center; justify-content:center; gap:5px; min-height:40px; padding:0 13px; color:#fff; background:var(--primary); border:0; border-radius:12px; font:800 11px inherit; cursor:pointer; }.fd-recomp-card-action button:disabled,.fd-recomp-close-form button:disabled { color:var(--on-surface-variant); background:var(--surface-container-high); cursor:not-allowed; }
.fd-recomp-ledger { display:grid; gap:8px; }.fd-recomp-ledger article { display:grid; grid-template-columns:42px minmax(0,1fr) auto auto auto; align-items:center; gap:12px; padding:12px 15px; background:var(--surface-container-lowest); border:1px solid var(--outline-variant); border-radius:15px; }.fd-recomp-ledger article>.material-symbols-outlined { display:grid; place-items:center; width:42px; height:42px; color:var(--primary); background:var(--primary-container); border-radius:12px; }.fd-recomp-ledger strong,.fd-recomp-ledger small { display:block; }.fd-recomp-ledger strong { font-size:13px; }.fd-recomp-ledger small { margin-top:2px; color:var(--on-surface-variant); font-size:10px; }.fd-recomp-ledger b { color:var(--on-surface-variant); font-size:12px; }.fd-recomp-ledger em,.fd-recomp-statements em { padding:5px 8px; border-radius:999px; font-size:9px; font-style:normal; font-weight:850; }.fd-recomp-ledger em.is-pendente,.fd-recomp-statements em.is-fechada{color:var(--on-tertiary-container);background:var(--tertiary-container)}.fd-recomp-ledger em.is-liberado,.fd-recomp-statements em.is-paga{color:var(--on-primary-container);background:var(--primary-container)}.fd-recomp-ledger em.is-negado{color:var(--on-error-container);background:var(--error-container)}.fd-recomp-ledger form{display:flex;gap:4px}.fd-recomp-ledger button{display:grid;place-items:center;width:34px;height:34px;color:var(--primary);background:var(--surface-container-low);border:0;border-radius:10px;cursor:pointer}.fd-recomp-ledger button:last-child{color:var(--error)}.fd-recomp-ledger button span{font-size:18px}
.fd-recomp-rules { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }.fd-recomp-rule-card,.fd-recomp-create,.fd-recomp-close-form { padding:20px; background:var(--surface-container-lowest); border:1px solid var(--outline-variant); border-radius:20px; }.fd-recomp-rule-card header { display:flex; align-items:center; gap:11px; margin-bottom:15px; }.fd-recomp-rule-card header>.material-symbols-outlined { display:grid;place-items:center;width:44px;height:44px;color:var(--primary);background:var(--primary-container);border-radius:13px}.fd-recomp-rule-card header strong,.fd-recomp-rule-card header small{display:block}.fd-recomp-rule-card header small{margin-top:2px;color:var(--on-surface-variant);font-size:10px}.fd-recomp-rule-card label,.fd-recomp-create label,.fd-recomp-close-form label { display:grid; gap:5px; color:var(--on-surface-variant); font-size:10px; font-weight:800; }.fd-recomp-rule-card input,.fd-recomp-rule-card select,.fd-recomp-create input,.fd-recomp-create select,.fd-recomp-create textarea,.fd-recomp-close-form input,.fd-recomp-close-form select { width:100%; min-height:42px; padding:9px 11px; color:var(--on-surface); background:var(--surface-container-low); border:1px solid var(--outline-variant); border-radius:11px; font:inherit; }.fd-recomp-rule-card>button { margin-top:14px; }.fd-recomp-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:12px; }
.fd-recomp-split { display:grid; grid-template-columns:minmax(0,1.5fr) minmax(290px,.7fr); gap:18px; align-items:start; }.fd-recomp-goals { display:grid; gap:10px; }.fd-recomp-goals article { padding:18px; background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:18px}.fd-recomp-goals header {display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:11px}.fd-recomp-goals header>.material-symbols-outlined{display:grid;place-items:center;width:42px;height:42px;color:#a96100;background:#ffddb3;border-radius:12px}.fd-recomp-goals header strong,.fd-recomp-goals header small{display:block}.fd-recomp-goals header small,.fd-recomp-goals>article>small{color:var(--on-surface-variant);font-size:10px}.fd-recomp-goals p{margin:12px 0;color:var(--on-surface-variant);font-size:12px}.fd-recomp-goal-values{display:flex;justify-content:space-between;margin-bottom:6px;color:var(--on-surface-variant);font-size:10px;font-weight:800}.fd-recomp-goal-bar{margin-bottom:8px}.fd-recomp-create{position:sticky;top:82px}.fd-recomp-create h2{margin:5px 0 15px;font-family:var(--font-heading);font-size:20px}.fd-recomp-create form{display:grid;gap:11px}.fd-recomp-create button{margin-top:4px}
.fd-recomp-goal-actions{display:flex;align-items:center;gap:10px}.fd-recomp-goal-actions>b{color:var(--on-surface);font-size:13px}.fd-recomp-goal-actions>a{display:inline-flex;align-items:center;gap:4px;min-height:34px;padding:0 10px;color:var(--primary);background:var(--primary-container);border-radius:10px;font-size:10px;font-weight:850}.fd-recomp-goal-actions>a .material-symbols-outlined{font-size:15px}.fd-recomp-goal-values{gap:12px}.fd-recomp-goal-values>span{display:grid;gap:2px}.fd-recomp-goal-values>span:last-child{text-align:right}.fd-recomp-goal-values strong{color:var(--on-surface);font-size:12px}.fd-recomp-edit-cancel{display:flex;justify-content:center;padding:8px;color:var(--on-surface-variant);font-size:11px;font-weight:800}
.fd-recomp-store-goals{padding:20px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:20px}.fd-recomp-store-goals .fd-rotina-section-heading{margin-bottom:14px}.fd-recomp-store-goals-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.fd-recomp-store-goals-list>article{padding:16px;background:var(--surface-container-low);border:1px solid var(--outline-variant);border-radius:16px}.fd-recomp-store-goals-list header{display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:10px}.fd-recomp-store-goals-list header>.material-symbols-outlined{display:grid;place-items:center;width:40px;height:40px;color:var(--on-tertiary-container);background:var(--tertiary-container);border-radius:12px}.fd-recomp-store-goals-list header small,.fd-recomp-store-goals-list header strong{display:block}.fd-recomp-store-goals-list header small{color:var(--on-surface-variant);font-size:9px}.fd-recomp-store-goals-list header strong{margin-top:2px;font-size:13px}.fd-recomp-store-goals-list header>b{color:var(--tertiary);font-size:13px}.fd-recomp-store-goal-numbers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:14px 0 10px}.fd-recomp-store-goal-numbers>span{display:grid;gap:3px;padding:9px;background:var(--surface-container-lowest);border-radius:10px}.fd-recomp-store-goal-numbers small{color:var(--on-surface-variant);font-size:8px;font-weight:800}.fd-recomp-store-goal-numbers strong{font-size:11px}.fd-recomp-store-goals-list footer{display:flex;align-items:center;gap:5px;color:var(--on-surface-variant);font-size:10px}.fd-recomp-store-goals-list footer .material-symbols-outlined{font-size:15px}
.fd-recomp-close-form>div>h2 { margin:5px 0; font-family:var(--font-heading); font-size:20px; }.fd-recomp-close-form>div>p { margin:0 0 15px; color:var(--on-surface-variant); font-size:12px; }.fd-recomp-close-form form { display:grid; grid-template-columns:1.3fr repeat(3,1fr); gap:10px; align-items:end; }.fd-recomp-close-form .is-wide { grid-column:1/4; }.fd-recomp-warning{margin:12px 0 0;color:var(--error);font-size:11px;font-weight:750}.fd-recomp-statements{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.fd-recomp-statements article{padding:18px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:18px}.fd-recomp-statements header{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:10px;padding-bottom:13px;border-bottom:1px solid var(--outline-variant)}.fd-recomp-statements header>.material-symbols-outlined{display:grid;place-items:center;width:42px;height:42px;color:var(--primary);background:var(--primary-container);border-radius:12px}.fd-recomp-statements header strong,.fd-recomp-statements header small{display:block}.fd-recomp-statements header small{color:var(--on-surface-variant);font-size:10px}.fd-recomp-statements dl{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:13px 0}.fd-recomp-statements dl div{padding:9px;background:var(--surface-container-low);border-radius:10px}.fd-recomp-statements dt{color:var(--on-surface-variant);font-size:9px}.fd-recomp-statements dd{margin:3px 0 0;font-size:12px;font-weight:800}.fd-recomp-statements footer{display:flex;align-items:center;gap:9px;padding-top:12px;border-top:1px solid var(--outline-variant)}.fd-recomp-statements footer>strong{color:var(--primary);font-size:20px}.fd-recomp-statements footer form,.fd-recomp-statements footer small{margin-left:auto}.fd-recomp-statements footer small{color:var(--on-surface-variant);font-size:9px}
@media(max-width:900px){.fd-recomp-catalog,.fd-recomp-rules,.fd-recomp-statements{grid-template-columns:1fr}.fd-recomp-split{grid-template-columns:1fr}.fd-recomp-create{position:static}.fd-recomp-close-form form{grid-template-columns:repeat(2,1fr)}.fd-recomp-close-form .is-wide{grid-column:1/-1}}
@media(max-width:680px){.fd-recomp-page{gap:18px}.fd-recomp-hero{align-items:flex-start;flex-direction:column;padding:21px}.fd-recomp-balance{width:100%;min-width:0}.fd-recomp-nav{grid-template-columns:repeat(4,1fr);overflow-x:auto}.fd-recomp-nav a{min-width:76px;flex-direction:column;padding:7px 4px;text-align:center;font-size:9px}.fd-recomp-card{grid-template-columns:44px minmax(0,1fr)}.fd-recomp-card-icon{width:44px;height:44px}.fd-recomp-card-action{grid-column:1/-1;grid-template-columns:1fr auto;align-items:center;justify-items:start;padding-top:10px;border-top:1px solid var(--outline-variant)}.fd-recomp-ledger article{grid-template-columns:38px minmax(0,1fr) auto}.fd-recomp-ledger article>em{grid-column:2}.fd-recomp-ledger article>form{grid-column:3;grid-row:2}.fd-recomp-form-grid,.fd-recomp-close-form form{grid-template-columns:1fr}.fd-recomp-close-form .is-wide{grid-column:auto}.fd-recomp-goal-strip{grid-template-columns:40px minmax(0,1fr) auto}.fd-recomp-goal-strip>a{grid-column:2}.fd-recomp-statements dl{grid-template-columns:1fr 1fr}}
@media (max-width: 680px) {
    .fd-recomp-page { width: calc(100% - 20px); gap: 16px; margin-inline: auto; padding-bottom: calc(var(--fd-shell-bottomnav-height) + 24px); }
    .fd-recomp-hero { gap: 16px; padding: 16px; border-radius: 20px; }
    .fd-recomp-hero h1 { margin-block: 4px 6px; font-size: 20px; }
    .fd-recomp-hero p { font-size: 11px; line-height: 1.45; }
    .fd-recomp-balance { gap: 12px; padding: 12px; border-radius: 16px; }
    .fd-recomp-balance > .material-symbols-outlined { width: 44px; height: 44px; border-radius: 13px; font-size: 24px; }
    .fd-recomp-balance strong { font-size: 19px; }
    .fd-recomp-nav--single { display: none; }
    .fd-recomp-page > .fd-rotina-pessoas-section { margin-top: 0; }
    .fd-recomp-page .fd-rotina-pessoas { padding-bottom: 0; }
    .fd-recomp-page .fd-rotina-pessoas > .fd-rotina-pessoa:only-child { flex-basis: 100%; }
    .fd-recomp-page .fd-rotina-section-kicker { font-size: 8px; }
    .fd-recomp-page .fd-rotina-section-heading h2 { font-size: 14px; }
    .fd-recomp-page .fd-rotina-section-count { font-size: 8px; }
    .fd-recomp-page .fd-rotina-pessoa-info strong { font-size: 11px; }
    .fd-recomp-page .fd-rotina-pessoa-info small { font-size: 8px; }
    .fd-recomp-page .fd-rotina-empty h3 { font-size: 13px; line-height: 1.3; }
    .fd-recomp-page .fd-rotina-empty p, .fd-recomp-page .fd-rotina-empty a { font-size: 10px; line-height: 1.45; }
    .fd-recomp-page .fd-prestador-payment-panel h2 { font-size: 17px; }
    .fd-recomp-page .fd-prestador-payment-panel header p { font-size: 10px; line-height: 1.45; }
    .fd-recomp-page .fd-prestador-activities strong { font-size: 11px; }
    .fd-recomp-page .fd-prestador-activities small { font-size: 8px; }
    .fd-recomp-page .fd-prestador-activities b { font-size: 12px; }
    .fd-recomp-page .fd-recomp-statements header strong { font-size: 11px; }
    .fd-recomp-page .fd-recomp-statements header small, .fd-recomp-page .fd-recomp-statements footer small { font-size: 8px; }
    .fd-recomp-page .fd-recomp-statements footer > strong { font-size: 17px; }
}
@media (max-width: 420px) {
    .fd-recomp-page { gap: 12px; }
    .fd-recomp-hero { padding: 14px; }
    .fd-recomp-hero p { font-size: 11px; }
    .fd-recomp-balance { padding: 10px 12px; }
}
@media(prefers-reduced-motion:reduce){.fd-recomp-nav a,.fd-recomp-card-action button{transition:none}}

/* Extrato mensal: detalha a mesma apuração usada no saldo e nas metas. */
.fd-mesada-extrato-filtros { padding:18px; background:var(--surface-container-lowest); border:1px solid var(--outline-variant); border-radius:18px; }
.fd-mesada-extrato-filtros form { display:grid; grid-template-columns:minmax(220px,1.5fr) minmax(170px,1fr) auto; align-items:end; gap:12px; }
.fd-mesada-extrato-filtros label { display:grid; gap:6px; color:var(--on-surface-variant); font-size:11px; font-weight:800; }
.fd-mesada-extrato-filtros select,.fd-mesada-extrato-filtros input { min-height:44px; padding:0 12px; color:var(--on-surface); background:var(--surface-container-low); border:1px solid var(--outline-variant); border-radius:12px; font:700 13px var(--font-body); }
.fd-mesada-extrato-filtros form > button { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:44px; padding:0 17px; color:var(--on-primary); background:var(--primary); border:0; border-radius:12px; font:800 12px var(--font-body); cursor:pointer; }
.fd-mesada-extrato-filtros form > button .material-symbols-outlined { font-size:18px; }
.fd-mesada-extrato-filtros .fd-month-picker > .fd-date-display { min-height:44px; cursor:pointer; }
.fd-month-popover { width:268px; }
.fd-month-header { display:grid; grid-template-columns:34px minmax(0,1fr) 34px; align-items:center; gap:7px; }
.fd-month-header strong { color:var(--on-surface); font:850 14px var(--font-heading); text-align:center; }
.fd-month-header button,.fd-month-grid button { display:grid; place-items:center; min-height:0; padding:0; color:var(--on-surface-variant); background:transparent; border:0; box-shadow:none; cursor:pointer; }
.fd-month-header button { width:34px; height:34px; border-radius:9px; }
.fd-month-header button:hover { color:var(--primary); background:var(--primary-container); }
.fd-month-header .material-symbols-outlined { font-size:19px; }
.fd-month-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; margin-top:10px; }
.fd-month-grid button { min-height:38px; border:1px solid var(--outline-variant); border-radius:9px; font:800 10px var(--font-body); }
.fd-month-grid button:hover,.fd-month-grid button:focus-visible { color:var(--primary); background:var(--primary-container); border-color:var(--primary); outline:none; }
.fd-month-grid button.is-current { border-color:color-mix(in srgb,var(--primary) 55%,var(--outline-variant)); }
.fd-month-grid button.is-selected { color:var(--on-primary); background:var(--primary); border-color:var(--primary); }
.fd-month-popover .fd-date-footer { justify-content:flex-end; }
.fd-mesada-extrato-resumo { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
.fd-mesada-extrato-resumo article { display:grid; gap:4px; min-height:100px; align-content:center; padding:16px; background:var(--surface-container-lowest); border:1px solid var(--outline-variant); border-radius:16px; }
.fd-mesada-extrato-resumo span,.fd-mesada-extrato-resumo small { color:var(--on-surface-variant); font-size:24px; font-weight:750; }
.fd-mesada-extrato-resumo strong { color:var(--on-surface); font-size:20px; }
.fd-mesada-extrato-resumo .is-positive strong { color:var(--primary); }
.fd-mesada-extrato-resumo .is-negative strong { color:var(--error); }
.fd-mesada-extrato-resumo .is-total { grid-column:1/-1; display:flex; align-items:center; justify-content:space-between; min-height:78px; color:var(--on-primary); background:var(--primary); border-color:var(--primary); }
.fd-mesada-extrato-resumo .is-total span,.fd-mesada-extrato-resumo .is-total strong { color:var(--on-primary); }
.fd-mesada-extrato-resumo .is-total strong { font-size:27px; }
.fd-mesada-extrato-lista { display:grid; gap:8px; }
.fd-mesada-extrato-lista article { display:grid; grid-template-columns:42px minmax(0,1fr) minmax(90px,auto) auto minmax(92px,auto); align-items:center; gap:12px; padding:12px 15px; background:var(--surface-container-lowest); border:1px solid var(--outline-variant); border-radius:15px; }
.fd-mesada-extrato-icone { display:grid; place-items:center; width:42px; height:42px; color:var(--primary); background:var(--primary-container); border-radius:12px; font-size:21px; }
.fd-mesada-extrato-info { min-width:0; }
.fd-mesada-extrato-info strong,.fd-mesada-extrato-info small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fd-mesada-extrato-info strong { color:var(--on-surface); font-size:13px; }
.fd-mesada-extrato-info small { margin-top:3px; color:var(--on-surface-variant); font-size:10px; }
.fd-mesada-extrato-regra { color:var(--on-surface-variant); font-size:11px; font-weight:750; }
.fd-mesada-extrato-lista em { padding:5px 8px; color:var(--on-surface-variant); background:var(--surface-container-low); border-radius:999px; font-size:9px; font-style:normal; font-weight:850; }
.fd-mesada-extrato-lista .is-concluido em { color:var(--on-primary-container); background:var(--primary-container); }
.fd-mesada-extrato-lista .is-pendente { opacity:.72; }
.fd-mesada-extrato-lista .is-resgate .fd-mesada-extrato-icone { color:var(--error); background:var(--error-container); }
.fd-mesada-extrato-valor { justify-self:end; color:var(--primary); font-size:13px; white-space:nowrap; }
.fd-mesada-extrato-lista .is-pendente .fd-mesada-extrato-valor { color:var(--on-surface-variant); }
.fd-mesada-extrato-lista .is-resgate .fd-mesada-extrato-valor { color:var(--error); }
@media(max-width:800px){.fd-mesada-extrato-resumo{grid-template-columns:repeat(2,minmax(0,1fr))}.fd-mesada-extrato-lista article{grid-template-columns:38px minmax(0,1fr) auto}.fd-mesada-extrato-icone{width:38px;height:38px}.fd-mesada-extrato-regra{grid-column:2}.fd-mesada-extrato-lista em{grid-column:2}.fd-mesada-extrato-valor{grid-column:3;grid-row:1/4}}
@media(max-width:560px){.fd-mesada-extrato-filtros form{grid-template-columns:1fr}.fd-mesada-extrato-resumo{grid-template-columns:1fr}.fd-mesada-extrato-resumo .is-total{grid-column:auto}.fd-mesada-extrato-info small{white-space:normal}.fd-mesada-extrato-lista article{gap:8px;padding:11px}.fd-mesada-extrato-valor{font-size:12px}}
/* Modal de recompensa — mesma estrutura do cadastro de medidas corporais. */
.fd-recompensa-modal { z-index: 1100; }
.fd-recompensa-modal-dialog { width: min(100%, 780px); max-width: 780px; padding: 0; overflow: hidden; }
.fd-recompensa-modal-dialog > form { display: flex; flex-direction: column; max-height: 90vh; }
.fd-recompensa-modal .fd-modal-form-cabecalho { align-items: flex-start; padding: 22px 24px 18px; margin: 0; background: color-mix(in srgb, var(--primary-container) 44%, var(--surface-container-lowest)); border-bottom: 1px solid var(--outline-variant); }
.fd-recompensa-modal .fd-modal-form-cabecalho h2 { margin: 6px 0 0; color: var(--on-surface); font-family: var(--font-heading); font-size: 24px; }
.fd-recompensa-modal .fd-modal-form-cabecalho p { margin: 6px 0 0; color: var(--on-surface-variant); font-size: 14px; line-height: 1.45; }
.fd-recompensa-modal .fd-modal-fechar-btn { text-decoration: none; }
.fd-recompensa-modal-body { gap: 20px; }
.fd-recompensa-modal-body > section { display: grid; gap: 12px; }
.fd-recompensa-imagem-editor { display: grid; grid-template-columns: 150px minmax(0, 1fr); align-items: center; gap: 17px; padding: 14px; background: var(--surface-container-low); border: 1px dashed var(--outline); border-radius: 16px; }
.fd-recompensa-imagem-preview { display: grid; place-items: center; width: 150px; height: 104px; overflow: hidden; color: var(--primary); background: color-mix(in srgb, var(--primary-container) 62%, var(--surface-container-lowest)); border-radius: 13px; }
.fd-recompensa-imagem-preview img { width: 100%; height: 100%; object-fit: cover; }
.fd-recompensa-imagem-preview > .material-symbols-outlined { font-size: 38px; }
.fd-recompensa-imagem-copy { min-width: 0; }
.fd-recompensa-imagem-copy > strong { color: var(--on-surface); font-size: 14px; }
.fd-recompensa-imagem-copy > p { margin: 4px 0 10px; color: var(--on-surface-variant); font-size: 11px; line-height: 1.45; }
.fd-recompensa-imagem-copy .fd-file-upload { margin: 0; }
.fd-recompensa-imagem-copy .fd-file-upload-btn { display: inline-flex; align-items: center; gap: 5px; }
.fd-recompensa-imagem-copy .fd-file-upload-btn .material-symbols-outlined { font-size: 17px; }
.fd-recompensa-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.fd-recompensa-fields .fd-form-field { margin: 0; }
.fd-recompensa-field-wide { grid-column: 1 / -1; }
.fd-recompensa-input-prefix { position: relative; }
.fd-recompensa-input-prefix > span { position: absolute; z-index: 1; left: 12px; top: 50%; color: var(--on-surface-variant); font-size: 12px; font-weight: 800; transform: translateY(-50%); }
.fd-recompensa-input-prefix .fd-form-input { padding-left: 39px; }
.fd-recompensa-disponivel { display: grid; grid-template-columns: 22px minmax(0, 1fr); align-items: center; gap: 10px; padding: 12px 14px; color: var(--on-surface); background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 13px; cursor: pointer; }
.fd-recompensa-disponivel input { position: absolute; opacity: 0; pointer-events: none; }
.fd-recompensa-disponivel-check { display: grid; place-items: center; width: 22px; height: 22px; color: transparent; background: var(--surface-container-lowest); border: 2px solid var(--outline); border-radius: 7px; font-size: 16px; }
.fd-recompensa-disponivel input:checked + .fd-recompensa-disponivel-check { color: var(--on-primary); background: var(--primary); border-color: var(--primary); }
.fd-recompensa-disponivel input:focus-visible + .fd-recompensa-disponivel-check { outline: 3px solid color-mix(in srgb, var(--primary) 30%, transparent); outline-offset: 2px; }
.fd-recompensa-disponivel strong, .fd-recompensa-disponivel small { display: block; }
.fd-recompensa-disponivel strong { font-size: 13px; }
.fd-recompensa-disponivel small { margin-top: 2px; color: var(--on-surface-variant); font-size: 10px; }
.fd-recompensa-modal .fd-avaliacao-modal-actions .fd-form-btn-secondary { text-decoration: none; }
.fd-recomp-card-media { width: 52px; height: 52px; overflow: hidden; border-radius: 15px; }
.fd-recomp-card-media img { width: 100%; height: 100%; object-fit: cover; }
.fd-ativ-config-card-image { width: 48px; height: 48px; overflow: hidden; border-radius: 14px; }
.fd-ativ-config-card-image img { width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 680px) {
    .fd-recompensa-modal { align-items: flex-end; padding: 0; }
    .fd-recompensa-modal-dialog { width: 100%; max-height: 94vh; border-radius: 22px 22px 0 0; }
    .fd-recompensa-modal-dialog > form { max-height: 94vh; }
    .fd-recompensa-imagem-editor { grid-template-columns: 108px minmax(0, 1fr); }
    .fd-recompensa-imagem-preview { width: 108px; height: 96px; }
}
@media (max-width: 460px) {
    .fd-recompensa-fields { grid-template-columns: minmax(0, 1fr); }
    .fd-recompensa-field-wide { grid-column: auto; }
    .fd-recompensa-imagem-editor { grid-template-columns: minmax(0, 1fr); }
    .fd-recompensa-imagem-preview { width: 100%; height: 140px; }
}
.fd-recompensa-icon-picker { min-width: 0; padding: 0; border: 0; }
@media(max-width:900px){.fd-recomp-store-goals-list{grid-template-columns:1fr}}
@media(max-width:560px){.fd-recomp-store-goal-numbers{grid-template-columns:1fr}.fd-recomp-goal-actions{align-items:flex-end;flex-direction:column;gap:4px}.fd-recomp-goal-values{align-items:stretch;flex-direction:column}.fd-recomp-goal-values>span:last-child{text-align:left}}

.fd-recomp-create .fd-recomp-form-grid { grid-template-columns: minmax(0, 1fr); margin-top: 0; }
.fd-recomp-create .fd-recomp-form-grid > label, .fd-recomp-create input[type="date"] { min-width: 0; max-width: 100%; box-sizing: border-box; }
.fd-recompensa-icon-picker legend { padding: 0; }
.fd-recompensa-icon-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 8px; margin-top: 7px; }
.fd-recompensa-icon-grid label { position: relative; min-width: 0; cursor: pointer; }
.fd-recompensa-icon-grid input { position: absolute; opacity: 0; pointer-events: none; }
.fd-recompensa-icon-option { position: relative; display: grid; justify-items: center; align-content: center; gap: 5px; min-height: 76px; padding: 8px 4px; color: var(--on-surface-variant); background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 13px; transition: border-color .15s ease, background .15s ease, transform .15s ease; }
.fd-recompensa-icon-option > .material-symbols-outlined:first-child { font-size: 25px; }
.fd-recompensa-icon-option small { width: 100%; overflow: hidden; font-size: 9px; font-weight: 750; text-align: center; text-overflow: ellipsis; white-space: nowrap; }
.fd-recompensa-icon-check { position: absolute; top: 5px; right: 5px; display: none; color: var(--primary); font-size: 15px; font-variation-settings: "FILL" 1; }
.fd-recompensa-icon-grid label:hover .fd-recompensa-icon-option { color: var(--primary); border-color: color-mix(in srgb, var(--primary) 45%, var(--outline-variant)); transform: translateY(-1px); }
.fd-recompensa-icon-grid input:checked + .fd-recompensa-icon-option { color: var(--primary); background: color-mix(in srgb, var(--primary-container) 55%, var(--surface-container-lowest)); border-color: var(--primary); box-shadow: 0 4px 12px color-mix(in srgb, var(--primary) 12%, transparent); }
.fd-recompensa-icon-grid input:checked + .fd-recompensa-icon-option .fd-recompensa-icon-check { display: block; }
.fd-recompensa-icon-grid input:focus-visible + .fd-recompensa-icon-option { outline: 3px solid color-mix(in srgb, var(--primary) 30%, transparent); outline-offset: 2px; }
@media (max-width: 680px) { .fd-recompensa-icon-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 420px) { .fd-recompensa-icon-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (prefers-reduced-motion: reduce) { .fd-recompensa-icon-option { transition: none; } }
.fd-date-picker { position: relative; display: block; min-width: 0; }
.fd-date-picker--global { width: 100%; }
.fd-date-picker--global > .fd-date-display { width: 100%; min-height: 42px; padding: 9px 42px 9px 11px; color: var(--on-surface); background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 11px; font: inherit; }
.fd-date-picker--global > .fd-date-display:focus { border-color: var(--primary); outline: 3px solid color-mix(in srgb, var(--primary) 22%, transparent); outline-offset: 1px; }
.fd-date-picker--global > .fd-date-display.is-invalid { border-color: var(--error); background: color-mix(in srgb, var(--error) 5%, var(--surface-container-low)); }
.fd-date-picker > .fd-date-picker-toggle { position: absolute; top: 0; right: 0; display: grid; place-items: center; width: 42px; height: 42px; min-height: 0; margin: 0; padding: 0; color: var(--primary); background: transparent; border: 0; border-radius: 0 11px 11px 0; box-shadow: none; cursor: pointer; }
.fd-date-picker > .fd-date-picker-toggle:hover { color: var(--on-primary-container); background: transparent; }
.fd-date-picker > .fd-date-picker-toggle:focus-visible { outline: 2px solid var(--primary); outline-offset: -4px; }
.fd-date-picker > .fd-date-picker-toggle:disabled { color: var(--outline); background: transparent; cursor: not-allowed; }
.fd-recomp-create .fd-date-picker > input[data-date-display] { padding-right: 42px; }
.fd-recomp-create .fd-date-picker-toggle { position: absolute; top: 0; right: 0; display: grid; place-items: center; width: 42px; height: 42px; min-height: 0; margin: 0; padding: 0; color: var(--primary); background: transparent; border: 0; border-radius: 0 11px 11px 0; box-shadow: none; cursor: pointer; }
.fd-recomp-create .fd-date-picker-toggle:hover { color: var(--on-primary-container); background: transparent; }
.fd-recomp-create .fd-date-picker-toggle:focus-visible { outline: 2px solid var(--primary); outline-offset: -4px; }
.fd-date-picker-toggle .material-symbols-outlined { font-size: 20px; }
.fd-date-popover { position: absolute; z-index: 30; top: calc(100% + 7px); right: 0; display: block; width: 100%; min-width: 224px; padding: 11px; color: var(--on-surface); background: var(--surface-container-lowest); border: 1px solid color-mix(in srgb, var(--primary) 30%, var(--outline-variant)); border-radius: 15px; box-shadow: 0 14px 34px color-mix(in srgb, var(--on-surface) 17%, transparent); }
.fd-date-popover[hidden] { display: none; }
.fd-date-picker.is-calendar-above .fd-date-popover { top: auto; bottom: calc(100% + 7px); }
.fd-date-header { display: grid; grid-template-columns: minmax(0, 1fr) 86px; align-items: center; gap: 7px; }
.fd-date-header select { width: 100%; min-width: 0; min-height: 34px; padding: 5px 25px 5px 8px; color: var(--on-surface); background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 9px; font: 800 10px var(--font-body); cursor: pointer; }
.fd-date-header select[data-date-year-select] { min-width: 86px; padding: 5px 6px; text-align: center; text-align-last: center; appearance: none; -webkit-appearance: none; }
.fd-date-header select:focus-visible { border-color: var(--primary); outline: 3px solid color-mix(in srgb, var(--primary) 25%, transparent); outline-offset: 1px; }
.fd-date-header button, .fd-date-grid button, .fd-date-footer button { min-height: 0; padding: 0; color: var(--on-surface-variant); background: transparent; border: 0; box-shadow: none; cursor: pointer; }
.fd-date-header button { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 9px; }
.fd-date-header button:hover { color: var(--primary); background: var(--primary-container); }
.fd-date-header .material-symbols-outlined { font-size: 19px; }
.fd-date-weekdays, .fd-date-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; }
.fd-date-weekdays { margin: 8px 0 4px; }
.fd-date-weekdays b { color: var(--on-surface-variant); font-size: 8px; text-align: center; }
.fd-date-grid button { position: relative; display: grid; place-items: center; width: 100%; aspect-ratio: 1; border-radius: 8px; font: 750 9px var(--font-body); }
.fd-date-grid button:hover, .fd-date-grid button:focus-visible { color: var(--primary); background: color-mix(in srgb, var(--primary-container) 62%, var(--surface-container-lowest)); outline: none; }
.fd-date-grid button.is-outside { color: var(--outline); }
.fd-date-grid button.is-today::after { content: ""; position: absolute; right: 4px; bottom: 3px; left: 4px; height: 2px; background: var(--primary); border-radius: 999px; }
.fd-date-grid button.is-selected { color: var(--on-primary); background: var(--primary); }
.fd-date-grid button.is-selected::after { background: var(--on-primary); }
.fd-date-footer { display: flex; justify-content: space-between; gap: 8px; padding-top: 8px; margin-top: 7px; border-top: 1px solid var(--outline-variant); }
.fd-date-footer button { min-height: 30px; padding: 0 6px; color: var(--primary); border-radius: 8px; font-size: 9px; font-weight: 850; }
.fd-date-footer button:hover { background: var(--primary-container); }
.fd-recomp-create input[data-date-display].is-invalid { border-color: var(--error); background: color-mix(in srgb, var(--error) 5%, var(--surface-container-low)); }
.fd-date-error { display: block; margin-top: 5px; color: var(--error); font-size: 9px; font-weight: 750; line-height: 1.35; }
.fd-date-error[hidden] { display: none; }
.fd-time-picker { position: relative; display: block; width: 100%; min-width: 0; }
.fd-time-picker > .fd-time-display { width: 100%; min-height: 42px; padding: 9px 42px 9px 11px; color: var(--on-surface); background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 11px; font: inherit; }
.fd-time-picker > .fd-time-display:focus { border-color: var(--primary); outline: 3px solid color-mix(in srgb, var(--primary) 22%, transparent); outline-offset: 1px; }
.fd-time-picker > .fd-time-display.is-invalid { border-color: var(--error); background: color-mix(in srgb, var(--error) 5%, var(--surface-container-low)); }
.fd-time-picker-toggle { position: absolute; top: 0; right: 0; display: grid; place-items: center; width: 42px; height: 42px; min-height: 0; margin: 0; padding: 0; color: var(--primary); background: transparent; border: 0; border-radius: 0 11px 11px 0; box-shadow: none; cursor: pointer; }
.fd-time-picker-toggle:hover { color: var(--on-primary-container); background: transparent; }
.fd-time-picker-toggle:focus-visible { outline: 2px solid var(--primary); outline-offset: -4px; }
.fd-time-picker-toggle:disabled { color: var(--outline); cursor: not-allowed; }
.fd-time-picker-toggle .material-symbols-outlined { font-size: 20px; }
.fd-time-popover { position: absolute; z-index: 30; top: calc(100% + 7px); right: 0; display: block; width: 238px; padding: 12px; color: var(--on-surface); background: var(--surface-container-lowest); border: 1px solid color-mix(in srgb, var(--primary) 30%, var(--outline-variant)); border-radius: 15px; box-shadow: 0 14px 34px color-mix(in srgb, var(--on-surface) 17%, transparent); }
.fd-time-popover[hidden] { display: none; }
.fd-time-picker.is-time-above .fd-time-popover { top: auto; bottom: calc(100% + 7px); }
.fd-time-title { display: block; margin-bottom: 11px; color: var(--on-surface); font: 800 13px/1.25 var(--font-heading); letter-spacing: 0; }
.fd-time-controls { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: end; gap: 7px; }
.fd-time-controls label, .fd-time-controls small { display: block; }
.fd-time-controls small { min-height: 13px; margin-bottom: 5px; color: var(--on-surface-variant); font: 750 10px/1.3 var(--font-body); }
.fd-time-controls strong { display: grid; place-items: center; height: 40px; padding: 0; color: var(--primary); font: 800 17px/1 var(--font-body); }
.fd-time-controls select { width: 100%; min-height: 40px; padding: 6px 25px 6px 9px; color: var(--on-surface); background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 9px; font: 800 12px/1.2 var(--font-body); cursor: pointer; }
.fd-time-controls select:focus-visible { border-color: var(--primary); outline: 3px solid color-mix(in srgb, var(--primary) 25%, transparent); outline-offset: 1px; }
.fd-time-footer { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: center; gap: 5px; padding-top: 9px; margin-top: 10px; border-top: 1px solid var(--outline-variant); }
.fd-time-footer button { display: inline-flex; align-items: center; justify-content: center; min-height: 32px; padding: 0 5px; color: var(--primary); background: transparent; border: 0; border-radius: 8px; box-shadow: none; font: 800 10px/1 var(--font-body); letter-spacing: 0; white-space: nowrap; cursor: pointer; }
.fd-time-footer button:hover { background: var(--primary-container); }
.fd-time-footer button.is-primary { color: var(--on-primary); background: var(--primary); }
.fd-time-footer button.is-primary:hover { background: color-mix(in srgb, var(--primary) 88%, var(--on-surface)); }
.fd-time-error { display: block; margin-top: 5px; color: var(--error); font-size: 9px; font-weight: 750; line-height: 1.35; }
.fd-time-error[hidden] { display: none; }
.fd-prestador-payment-panel { overflow: hidden; background: color-mix(in srgb, var(--primary-container) 42%, var(--surface-container-lowest)); border: 1px solid var(--outline-variant); border-radius: 20px; }
.fd-prestador-payment-panel > header { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 20px; background: color-mix(in srgb, var(--primary-container) 42%, var(--surface-container-lowest)); border-bottom: 0; }
.fd-prestador-payment-panel h2 { margin: 4px 0; font-family: var(--font-heading); font-size: 20px; }
.fd-prestador-payment-panel header p { margin: 0; color: var(--on-surface-variant); font-size: 11px; }
.fd-prestador-payment-panel header a { display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto; min-height: 40px; padding: 0 14px; color: var(--on-primary); background: var(--primary); border-radius: 12px; font-size: 11px; font-weight: 850; text-decoration: none; }
.fd-prestador-payment-panel header a .material-symbols-outlined { font-size: 18px; }
.fd-prestador-activities { display: grid; gap: 0; }
.fd-prestador-activities article { display: grid; grid-template-columns: 38px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 13px 18px; background: var(--surface-container-lowest); border-bottom: 1px solid var(--outline-variant); }
.fd-prestador-activities article:last-child { border-bottom: 0; }
.fd-prestador-activities article > .material-symbols-outlined { display: grid; place-items: center; width: 38px; height: 38px; color: var(--primary); background: var(--primary-container); border-radius: 11px; font-size: 20px; }
.fd-prestador-activities strong, .fd-prestador-activities small { display: block; }
.fd-prestador-activities strong { font-size: 12px; }
.fd-prestador-activities small { margin-top: 2px; color: var(--on-surface-variant); font-size: 9px; }
.fd-prestador-activities b { color: var(--primary); font-size: 13px; }
.fd-recomp-provider-rule p { margin: 0 0 15px; color: var(--on-surface-variant); font-size: 11px; line-height: 1.5; }
.fd-recomp-provider-rule > a { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 40px; padding: 0 13px; color: var(--primary); background: var(--primary-container); border-radius: 12px; font-size: 11px; font-weight: 850; text-decoration: none; }
.fd-recomp-provider-rule > a .material-symbols-outlined { font-size: 18px; }
@media (max-width: 680px) { .fd-prestador-payment-panel > header { align-items: stretch; flex-direction: column; } .fd-prestador-payment-panel header a { justify-content: center; } }
@media (max-width: 680px) { .fd-prestador-payment-panel { border-radius: 18px; } .fd-prestador-payment-panel > header { gap: 12px; padding: 16px; } }
@media (max-width: 420px) { .fd-date-popover { right: auto; left: 0; min-width: 0; } .fd-atividade-duplicar-body .fd-date-popover { width: 100%; min-width: 0; } }
@media (max-width: 420px) { .fd-time-popover { right: auto; left: 0; width: min(238px, calc(100vw - 40px)); } }
@media (prefers-reduced-motion: reduce) { .fd-date-popover { scroll-behavior: auto; } }

/* ─── Conteúdo do curso: trilha de módulos e capítulos ─────────── */
.fd-conteudo-page { width: min(100% - 36px, 1120px); margin: 24px auto 44px; }
.fd-conteudo-hero { position: relative; overflow: hidden; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 22px 30px; min-height: 188px; padding: 28px 30px; background: linear-gradient(125deg, color-mix(in srgb, var(--primary-container) 76%, var(--surface-container-lowest)), var(--surface-container-lowest) 74%); border: 1px solid color-mix(in srgb, var(--primary) 26%, var(--outline-variant)); border-radius: 28px; }
.fd-conteudo-hero::after { content: ""; position: absolute; width: 230px; height: 230px; right: -112px; bottom: -148px; border: 32px solid color-mix(in srgb, var(--primary) 10%, transparent); border-radius: 50%; }
.fd-conteudo-hero-copy, .fd-conteudo-hero-resumo, .fd-conteudo-hero-acao { position: relative; z-index: 1; }
.fd-conteudo-voltar { display: inline-flex; align-items: center; gap: 5px; min-height: 34px; margin: -8px 0 8px; color: var(--primary); font-size: 11px !important; font-weight: 800; text-decoration: none; }
.fd-conteudo-voltar .material-symbols-outlined { font-size: 18px; }
.fd-conteudo-hero h1 { max-width: 650px; margin: 7px 0 0; color: var(--on-surface); font-family: var(--font-heading); font-size: clamp(27px, 4vw, 38px); line-height: 1.08; letter-spacing: -.025em; }
.fd-conteudo-hero-copy > p { max-width: 650px; margin: 10px 0 0; color: var(--on-surface-variant); font-size: 13px; line-height: 1.5; }
.fd-conteudo-hero-resumo { display: grid; grid-template-columns: repeat(2, minmax(112px, 1fr)); gap: 8px; }
.fd-conteudo-hero-resumo > div { display: grid; grid-template-columns: 34px auto; grid-template-rows: auto auto; align-items: center; column-gap: 9px; min-height: 70px; padding: 11px 13px; background: color-mix(in srgb, var(--surface-container-lowest) 86%, transparent); border: 1px solid var(--outline-variant); border-radius: 16px; }
.fd-conteudo-hero-resumo .material-symbols-outlined { grid-row: 1 / 3; color: var(--primary); font-size: 25px; }
.fd-conteudo-hero-resumo strong { color: var(--on-surface); font-family: var(--font-heading); font-size: 19px; line-height: 1; }
.fd-conteudo-hero-resumo small { color: var(--on-surface-variant); font-size: 9px !important; }
.fd-conteudo-hero-acao { grid-column: 1 / -1; justify-self: start; display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 44px; padding: 0 16px; color: var(--on-primary); background: var(--primary); border-radius: 13px; font-size: 12px !important; font-weight: 850; text-decoration: none; box-shadow: 0 7px 18px color-mix(in srgb, var(--primary) 18%, transparent); }
.fd-conteudo-hero-acao .material-symbols-outlined { font-size: 19px; }
.fd-conteudo-estrutura { margin-top: 28px; }
.fd-conteudo-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 20px; padding-bottom: 15px; margin-bottom: 15px; border-bottom: 1px solid var(--outline-variant); }
.fd-conteudo-section-heading h2 { margin: 5px 0 0; color: var(--on-surface); font-family: var(--font-heading); font-size: 21px; line-height: 1.2; }
.fd-conteudo-section-heading p { margin: 5px 0 0; color: var(--on-surface-variant); font-size: 11px; }
.fd-conteudo-section-count { flex: 0 0 auto; padding: 6px 10px; color: var(--on-primary-container); background: var(--primary-container); border-radius: 999px; font-size: 10px !important; font-weight: 800; }
.fd-conteudo-modulos { display: grid; gap: 16px; counter-reset: fd-modulo; }
.fd-conteudo-page .fd-modulo-card { position: relative; counter-increment: fd-modulo; padding: 54px 22px 22px; margin: 0; border-top: 4px solid var(--primary); border-radius: 20px; box-shadow: 0 5px 18px color-mix(in srgb, var(--on-surface) 6%, transparent); }
.fd-conteudo-page .fd-modulo-card::before { content: "Módulo " counter(fd-modulo, decimal-leading-zero); position: absolute; top: 15px; left: 22px; color: var(--primary); font-size: 10px; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.fd-conteudo-page .fd-modulo-card::after { content: ""; position: absolute; top: 31px; left: 104px; right: 22px; height: 1px; background: var(--outline-variant); }
.fd-conteudo-page .fd-item-edicao-bloco { padding: 16px; margin-bottom: 16px; background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 16px; }
.fd-conteudo-page .fd-item-edicao-titulo { min-height: 44px; color: var(--on-surface); background: var(--surface-container-lowest); border-radius: 11px; font-family: var(--font-heading); font-size: 16px; }
.fd-conteudo-page .fd-item-edicao-ordem input { min-height: 40px; background: var(--surface-container-lowest); border-radius: 10px; }
.fd-conteudo-page .fd-item-edicao-bloco textarea { background: var(--surface-container-lowest); border-radius: 11px; resize: vertical; }
.fd-conteudo-page .fd-modulo-marcador { display: grid; place-items: center; align-self: start; width: 40px; height: 40px; margin-top: 2px; color: var(--on-primary-container); background: var(--primary-container); border-radius: 12px; }
.fd-conteudo-page .fd-modulo-capitulos { padding: 0; margin-top: 0; }
.fd-conteudo-page .fd-modulo-capitulos-toggle { width: 100%; min-height: 46px; padding: 0 13px; color: var(--on-surface); background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 13px; font-size: 12px !important; font-weight: 800; box-sizing: border-box; }
.fd-conteudo-page .fd-modulo-capitulos-toggle:hover { color: var(--primary); border-color: color-mix(in srgb, var(--primary) 45%, var(--outline-variant)); }
.fd-conteudo-page .fd-modulo-capitulos[open] .fd-modulo-capitulos-toggle { margin-bottom: 12px; color: var(--primary); background: color-mix(in srgb, var(--primary-container) 42%, var(--surface-container-low)); border-color: color-mix(in srgb, var(--primary) 28%, var(--outline-variant)); }
.fd-conteudo-page .fd-capitulo-row { position: relative; padding: 13px; margin-bottom: 10px; background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-left: 4px solid color-mix(in srgb, var(--primary) 72%, var(--outline-variant)); border-radius: 14px; }
.fd-conteudo-page .fd-capitulo-row .fd-item-edicao-bloco { padding: 12px; margin: 0; background: var(--surface-container-lowest); }
.fd-conteudo-page .fd-capitulo-row .fd-item-edicao-titulo, .fd-conteudo-page .fd-capitulo-row textarea, .fd-conteudo-page .fd-capitulo-row .fd-item-edicao-ordem input { background: var(--surface-container-low); }
.fd-conteudo-capitulo-acao { display: flex; justify-content: flex-end; margin: 0 0 10px; }
.fd-conteudo-page .fd-btn-add-capitulo { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 42px; padding: 0 14px; margin: 0; color: var(--on-primary-container); background: var(--primary-container); border: 1px solid color-mix(in srgb, var(--primary) 24%, var(--outline-variant)); border-radius: 12px; font-size: 11px !important; font-weight: 850; text-decoration: none; }
.fd-conteudo-page .fd-btn-add-capitulo .material-symbols-outlined { font-size: 18px; }
.fd-conteudo-page > .fd-form-actions { gap: 10px; padding: 15px; margin-top: 20px; background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-radius: 17px; }
.fd-conteudo-page > .fd-conteudo-actions { position: sticky; z-index: 5; bottom: 0; padding: 14px 0 calc(14px + env(safe-area-inset-bottom)); background: color-mix(in srgb, var(--surface) 91%, transparent); border: 0; border-radius: 0; backdrop-filter: blur(12px); }
.fd-conteudo-empty { display: grid; justify-items: center; padding: 42px 20px; text-align: center; background: var(--surface-container-lowest); border: 1px dashed var(--outline); border-radius: 20px; }
.fd-conteudo-empty > .material-symbols-outlined { display: grid; place-items: center; width: 64px; height: 64px; color: var(--primary); background: var(--primary-container); border-radius: 20px; font-size: 31px; }
.fd-conteudo-empty h3 { margin: 13px 0 0; color: var(--on-surface); font-family: var(--font-heading); font-size: 18px; }
.fd-conteudo-empty p { max-width: 390px; margin: 6px 0 0; color: var(--on-surface-variant); font-size: 11px; line-height: 1.5; }
.fd-conteudo-empty a { display: inline-flex; align-items: center; min-height: 42px; padding: 0 15px; margin-top: 15px; color: var(--on-primary); background: var(--primary); border-radius: 12px; font-size: 11px !important; font-weight: 850; text-decoration: none; }
@media (max-width: 820px) { .fd-conteudo-hero { grid-template-columns: minmax(0, 1fr); } .fd-conteudo-hero-resumo { max-width: 400px; } }
@media (max-width: 767px) { .fd-conteudo-page { width: calc(100% - 24px); margin-top: 10px; margin-bottom: 28px; } .fd-conteudo-hero { gap: 16px; min-height: 0; padding: 19px; border-radius: 19px; } .fd-conteudo-hero h1 { font-size: 24px; } .fd-conteudo-hero-copy > p { font-size: 11px; } .fd-conteudo-hero-resumo { width: 100%; grid-template-columns: repeat(2, minmax(0, 1fr)); } .fd-conteudo-hero-resumo > div { min-width: 0; } .fd-conteudo-hero-acao { width: 100%; box-sizing: border-box; } .fd-conteudo-section-heading { align-items: flex-start; flex-direction: column; gap: 9px; } .fd-conteudo-page .fd-modulo-card { padding: 50px 13px 13px; border-radius: 17px; } .fd-conteudo-page .fd-modulo-card::before { left: 14px; } .fd-conteudo-page .fd-modulo-card::after { left: 96px; right: 14px; } .fd-conteudo-page .fd-item-edicao-bloco { padding: 11px; } .fd-conteudo-page .fd-modulo-marcador { width: 36px; height: 36px; } .fd-conteudo-page .fd-capitulo-row { padding: 9px; } .fd-conteudo-page > .fd-form-actions { flex-direction: column; } }
@media (prefers-reduced-motion: reduce) { .fd-conteudo-page .fd-modulo-capitulos-seta { transition: none; } }

/* ─── Novo/editar módulo em modal ──────────────────────────────── */
.fd-modulo-modal { z-index: 100; padding: 18px; }
.fd-modulo-modal-dialog { width: min(100%, 680px); max-width: 680px; max-height: calc(100vh - 36px); padding: 0; overflow: hidden; border-radius: 24px; }
.fd-modulo-modal-cabecalho { position: relative; display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; padding: 22px 24px 18px; background: linear-gradient(125deg, color-mix(in srgb, var(--primary-container) 72%, var(--surface-container-lowest)), var(--surface-container-lowest)); border-bottom: 1px solid color-mix(in srgb, var(--primary) 22%, var(--outline-variant)); }
.fd-modulo-modal-cabecalho > div { min-width: 0; }
.fd-modulo-modal-cabecalho h1 { margin: 6px 0 0; color: var(--on-surface); font-family: var(--font-heading); font-size: 24px; line-height: 1.15; }
.fd-modulo-modal-cabecalho p { overflow: hidden; margin: 5px 0 0; color: var(--on-surface-variant); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.fd-modulo-modal-cabecalho .fd-modal-fechar-btn { flex: 0 0 42px; width: 42px; height: 42px; margin: -5px -6px 0 0; color: var(--on-surface-variant); background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); text-decoration: none; }
.fd-modulo-modal-corpo { max-height: calc(100vh - 145px); padding: 18px 24px 24px; overflow-y: auto; }
.fd-modulo-modal-modos .fd-form-modo { gap: 7px; padding: 5px; margin: 0 0 16px; background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 15px; }
.fd-modulo-modal-modos .fd-form-modo-opcao { min-height: 42px; height: auto; background: transparent; border: 0; border-radius: 11px; font-size: 11px; font-weight: 800; }
.fd-modulo-modal-modos .fd-form-modo-opcao:has(input:checked) { color: var(--on-primary); background: var(--primary); box-shadow: 0 5px 13px color-mix(in srgb, var(--primary) 20%, transparent); }
.fd-modulo-modal .fd-form-card { display: grid; gap: 15px; width: 100%; max-width: none; padding: 18px; margin: 0; background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 17px; box-shadow: none; box-sizing: border-box; }
.fd-modulo-modal-modos .fd-form-modo-lote { display: none; }
.fd-modulo-modal-modos:has(input[value="lote"]:checked) .fd-form-modo-manual { display: none; }
.fd-modulo-modal-modos:has(input[value="lote"]:checked) form.fd-form-modo-lote { display: grid; }
.fd-modulo-modal-modos:has(input[value="lote"]:checked) .fd-form-actions.fd-form-modo-lote { display: flex; }
.fd-modulo-modal .fd-form-field { margin: 0; }
.fd-modulo-modal .fd-form-label { font-size: 11px; }
.fd-modulo-modal .fd-form-input { min-height: 44px; margin-top: 7px; padding: 10px 12px; color: var(--on-surface); background: var(--surface-container-lowest); border-color: var(--outline-variant); border-radius: 11px; font-size: 12px; }
.fd-modulo-modal textarea.fd-form-input { min-height: 92px; line-height: 1.45; resize: vertical; }
.fd-modulo-modal textarea.fd-form-input--lista { min-height: 210px; font-size: 11px; }
.fd-modulo-modal .fd-form-hint { margin: 7px 0 0; color: var(--on-surface-variant); font-size: 9px; line-height: 1.4; }
.fd-modulo-modal .fd-form-actions { display: flex; gap: 9px; padding: 14px 0 0; margin: 0; }
.fd-modulo-modal .fd-form-actions.fd-form-modo-lote { display: none; }
.fd-modulo-modal-modos:has(input[value="lote"]:checked) .fd-form-actions.fd-form-modo-lote { display: flex; }
.fd-modulo-modal .fd-form-actions .fd-form-btn-secondary, .fd-modulo-modal .fd-form-actions .fd-form-btn-primary { flex: 1; min-height: 44px; margin: 0; border-radius: 12px; font-size: 11px !important; }
.fd-modulo-modal .fd-form-actions .fd-form-btn-primary { color: var(--on-primary); background: var(--primary); }
@media (max-width: 600px) { .fd-modulo-modal { align-items: flex-end; padding: 0; } .fd-modulo-modal-dialog { width: 100%; max-height: calc(100vh - 10px); border-radius: 22px 22px 0 0; } .fd-modulo-modal-cabecalho { padding: 19px 18px 16px; } .fd-modulo-modal-cabecalho h1 { font-size: 21px; } .fd-modulo-modal-corpo { max-height: calc(100vh - 128px); padding: 15px 16px calc(18px + env(safe-area-inset-bottom)); } .fd-modulo-modal .fd-form-card { padding: 14px; } .fd-modulo-modal .fd-form-actions { position: sticky; bottom: 0; padding: 12px 0 0; background: var(--surface-container-lowest); } }

/* Tela Hoje — visão do responsável */
.fd-hoje-page{width:min(1180px,calc(100% - 36px));margin:22px auto 44px;color:var(--on-surface)}
.fd-hoje-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:28px;min-height:190px;padding:34px 38px;color:var(--on-primary-container);background:linear-gradient(118deg,var(--primary-container),color-mix(in srgb,var(--primary-container) 62%,var(--tertiary-container)));border:1px solid color-mix(in srgb,var(--primary) 18%,var(--outline-variant));border-radius:26px;overflow:hidden;position:relative}
.fd-hoje-hero:after{content:"";position:absolute;right:-70px;top:-120px;width:280px;height:280px;border:44px solid color-mix(in srgb,var(--primary) 10%,transparent);border-radius:50%;pointer-events:none}
.fd-hoje-hero-copy{position:relative;z-index:1}.fd-hoje-hero h1{margin:8px 0 0;font-family:var(--font-heading);font-size:clamp(29px,3vw,43px);line-height:1.08}.fd-hoje-hero p{max-width:620px;margin:10px 0 0;color:color-mix(in srgb,var(--on-primary-container) 78%,transparent);font-size:15px;line-height:1.55}
.fd-hoje-focus{display:flex;align-items:flex-end;gap:8px;max-width:520px;margin-top:18px}.fd-hoje-focus label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.fd-hoje-focus select{min-width:220px;height:42px;padding:0 38px 0 14px;color:var(--on-surface);background:var(--surface-container-lowest);border:1px solid color-mix(in srgb,var(--primary) 26%,var(--outline-variant));border-radius:12px;font:700 13px var(--font-body);cursor:pointer}.fd-hoje-focus button{display:flex;align-items:center;gap:5px;height:42px;padding:0 14px;color:var(--on-primary);background:var(--primary);border:0;border-radius:12px;font:800 12px var(--font-body);cursor:pointer}.fd-hoje-focus button .material-symbols-outlined{font-size:17px}.fd-hoje-focus select:focus-visible,.fd-hoje-focus button:focus-visible{outline:3px solid color-mix(in srgb,var(--primary) 35%,transparent);outline-offset:2px}
.fd-hoje-progress{display:flex;align-items:center;gap:14px;min-width:230px;padding:14px 18px;background:color-mix(in srgb,var(--surface-container-lowest) 74%,transparent);border:1px solid color-mix(in srgb,var(--primary) 15%,transparent);border-radius:19px;position:relative;z-index:1}.fd-hoje-progress-ring{display:grid;place-items:center;width:62px;height:62px;background:conic-gradient(var(--primary) calc(var(--progresso)*1%),var(--surface-container-high) 0);border-radius:50%;position:relative}.fd-hoje-progress-ring:before{content:"";position:absolute;inset:7px;background:var(--surface-container-lowest);border-radius:50%}.fd-hoje-progress-ring strong{position:relative;font-size:13px}.fd-hoje-progress>div:last-child>*{display:block}.fd-hoje-progress small,.fd-hoje-progress span{color:var(--on-surface-variant);font-size:11px}.fd-hoje-progress>div:last-child>strong{margin:2px 0;font-size:20px}
.fd-hoje-atencao{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;margin-top:16px;padding:18px 20px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:20px}.fd-hoje-atencao.is-urgent{background:color-mix(in srgb,var(--tertiary-container) 32%,var(--surface-container-lowest));border-color:color-mix(in srgb,var(--tertiary) 35%,var(--outline-variant))}.fd-hoje-atencao-icon{display:grid;place-items:center;width:48px;height:48px;color:var(--primary);background:var(--primary-container);border-radius:15px}.fd-hoje-atencao.is-urgent .fd-hoje-atencao-icon{color:var(--on-tertiary-container);background:var(--tertiary-container)}.fd-hoje-atencao h2{margin:3px 0 0;font-family:var(--font-heading);font-size:18px}.fd-hoje-atencao p{margin:3px 0 0;color:var(--on-surface-variant);font-size:13px}.fd-hoje-atencao>a,.fd-hoje-section-link{display:inline-flex;align-items:center;gap:5px;color:var(--primary);text-decoration:none;font-size:13px;font-weight:800}.fd-hoje-atencao>a{min-height:44px;padding:0 16px;color:var(--on-primary);background:var(--primary);border-radius:13px}.fd-hoje-atencao>a .material-symbols-outlined{font-size:18px}
.fd-hoje-metricas{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px}.fd-hoje-metricas>a{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:12px;padding:16px;color:var(--on-surface);background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:18px;text-decoration:none;transition:transform .2s,border-color .2s}.fd-hoje-metricas>a:hover{transform:translateY(-2px);border-color:var(--primary)}.fd-hoje-metricas>a>.material-symbols-outlined:first-child{display:grid;place-items:center;width:44px;height:44px;color:var(--primary);background:var(--primary-container);border-radius:13px}.fd-hoje-metricas div>*{display:block}.fd-hoje-metricas strong{font-size:20px}.fd-hoje-metricas small{color:var(--on-surface-variant);font-size:12px}.fd-hoje-metricas>a>.material-symbols-outlined:last-child{color:var(--outline)}
.fd-hoje-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,.85fr);gap:18px;margin-top:26px}.fd-hoje-section{min-width:0;padding:22px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:22px}.fd-hoje-section .fd-rotina-section-heading{margin-bottom:16px}.fd-hoje-section-link{min-height:40px;padding:0 4px}.fd-hoje-agenda-grupos{display:grid;gap:16px}.fd-hoje-agenda-grupo{padding:15px;background:var(--surface-container-low);border:1px solid var(--outline-variant);border-radius:17px}.fd-hoje-agenda-grupo--atividades-do-dia{background:color-mix(in srgb,var(--primary-container) 24%,var(--surface-container-lowest));border-color:color-mix(in srgb,var(--primary) 24%,var(--outline-variant))}.fd-hoje-agenda-grupo-header{display:flex;align-items:center;gap:9px;margin-bottom:12px;color:var(--on-surface)}.fd-hoje-agenda-grupo-header>.material-symbols-outlined{display:grid;place-items:center;width:32px;height:32px;color:var(--primary);background:var(--primary-container);border-radius:10px;font-size:19px}.fd-hoje-agenda-grupo-header h3{margin:0;font-family:var(--font-heading);font-size:15px}.fd-hoje-agenda-contagem{display:grid;place-items:center;min-width:25px;height:25px;margin-left:auto;padding:0 7px;color:var(--on-primary-container);background:var(--primary-container);border-radius:999px;font-size:11px;font-weight:850}.fd-hoje-agenda-vazio{display:flex;align-items:center;justify-content:center;gap:8px;min-height:72px;padding:14px;color:var(--on-surface-variant);background:var(--surface-container-lowest);border:1px dashed var(--outline-variant);border-radius:13px;font-size:12px;font-weight:650;text-align:center}.fd-hoje-agenda-vazio .material-symbols-outlined{font-size:20px}.fd-hoje-agenda-list{display:grid;gap:9px}.fd-hoje-agenda-item{display:grid;grid-template-columns:52px 42px minmax(0,1fr) auto;align-items:center;gap:12px;padding:13px;background:color-mix(in srgb,var(--tipo-fundo) 34%,var(--surface-container-lowest));border:1px solid color-mix(in srgb,var(--tipo-cor) 28%,var(--outline-variant));border-left:4px solid var(--tipo-cor);border-radius:15px}.fd-hoje-agenda-item>time{color:var(--tipo-cor);font-size:12px;font-weight:800}.fd-hoje-agenda-icon{display:grid;place-items:center;width:42px;height:42px;color:var(--tipo-cor);background:var(--tipo-fundo);border-radius:12px}.fd-hoje-agenda-item .fd-hoje-agenda-meta{display:flex;align-items:center;flex-wrap:wrap;gap:5px 7px;min-width:0;color:var(--tipo-cor);font-size:10px;font-weight:850;text-transform:uppercase}.fd-hoje-agenda-tipo{color:var(--tipo-cor)}.fd-hoje-agenda-responsavel{display:inline-flex;align-items:center;gap:4px;max-width:100%;padding:4px 8px;color:var(--on-primary-container);background:color-mix(in srgb,var(--primary-container) 68%,var(--surface-container-lowest));border:1px solid color-mix(in srgb,var(--primary) 28%,var(--outline-variant));border-radius:999px;font-size:9px;font-weight:850;line-height:1.25;text-transform:uppercase}.fd-hoje-agenda-responsavel .material-symbols-outlined{flex:0 0 auto;font-size:13px;font-variation-settings:"FILL" 1}.fd-hoje-agenda-item h3{margin:3px 0 0;font-family:var(--font-heading);font-size:14px}.fd-hoje-agenda-item p{display:flex;align-items:center;gap:3px;margin:4px 0 0;color:var(--on-surface-variant);font-size:11px}.fd-hoje-agenda-item p .material-symbols-outlined{font-size:14px}.fd-hoje-agenda-pendente,.fd-hoje-agenda-programado{display:inline-flex;align-items:center;justify-content:center;min-height:28px;padding:0 10px;border-radius:999px;font-size:9px;font-weight:850;letter-spacing:.02em}.fd-hoje-agenda-pendente{color:#7a4300;background:#ffddb3;border:1px solid #efbd76}.fd-hoje-agenda-programado{color:#204f86;background:#d9e8ff;border:1px solid #abc9ef}.fd-hoje-agenda-item>time span,.fd-hoje-agenda-item>time small{display:block}.fd-hoje-agenda-item>time small{margin-top:2px;font-size:9px;font-weight:750}.fd-hoje-agenda-duration{padding-top:3px;margin-top:4px!important;color:var(--on-surface-variant);border-top:1px solid color-mix(in srgb,var(--tipo-cor) 22%,transparent);line-height:1.25}.fd-hoje-agenda-duration b{display:block;color:var(--tipo-cor);font-size:8px}.fd-hoje-agenda-check{display:grid;place-items:center;width:28px;height:28px;color:#087866;font-size:21px;font-weight:700}
.fd-hoje-course-list{display:grid;gap:8px}.fd-hoje-course-list>a{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:11px;padding:12px;color:var(--on-surface);background:var(--surface-container-low);border-radius:15px;text-decoration:none}.fd-hoje-course-icon{display:grid;place-items:center;width:42px;height:42px;color:var(--primary);background:var(--primary-container);border-radius:12px}.fd-hoje-course-list div>*{display:block}.fd-hoje-course-list small,.fd-hoje-course-list em{color:var(--on-surface-variant);font-size:10px;font-style:normal}.fd-hoje-course-list strong{overflow:hidden;margin:2px 0 7px;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.fd-hoje-course-progress{height:5px;background:var(--surface-container-highest);border-radius:99px;overflow:hidden}.fd-hoje-course-progress i,.fd-hoje-person-main>span i{display:block;height:100%;background:var(--primary);border-radius:inherit}.fd-hoje-course-list em{margin-top:5px}
.fd-hoje-pessoas{margin-top:18px}.fd-hoje-people-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.fd-hoje-person-card{display:grid;grid-template-columns:52px minmax(0,1fr) auto 24px;align-items:center;gap:13px;padding:15px;color:var(--on-surface);background:var(--surface-container-low);border:1px solid transparent;border-radius:17px;text-decoration:none}.fd-hoje-person-card:hover{border-color:var(--primary)}.fd-hoje-person-avatar{display:grid;place-items:center;width:52px;height:52px;overflow:hidden;color:var(--on-primary);background:var(--primary);border:3px solid var(--surface-container-lowest);border-radius:50%;box-shadow:0 0 0 1px var(--outline-variant);font-size:12px;font-weight:850}.fd-hoje-person-avatar img{width:100%;height:100%;object-fit:cover}.fd-hoje-person-main>*{display:block}.fd-hoje-person-main small{color:var(--on-surface-variant);font-size:10px}.fd-hoje-person-main strong{margin:2px 0 8px;font-size:14px}.fd-hoje-person-main>span{height:5px;background:var(--surface-container-highest);border-radius:99px;overflow:hidden}.fd-hoje-person-stats{display:grid;grid-template-columns:auto auto;gap:1px 7px;text-align:right}.fd-hoje-person-stats strong{font-size:12px}.fd-hoje-person-stats small{color:var(--on-surface-variant);font-size:9px}.fd-hoje-person-stats em{grid-column:1/-1;margin-top:4px;color:var(--on-tertiary-container);font-size:9px;font-style:normal;font-weight:800}.fd-hoje-person-card>.material-symbols-outlined{color:var(--outline);font-size:19px}
.fd-hoje-financeiro{margin-top:18px}.fd-hoje-financeiro-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}.fd-hoje-financeiro-card{--fin-cor:var(--primary);--fin-fundo:var(--primary-container);display:grid;grid-template-columns:44px minmax(0,1fr) 20px;align-items:center;gap:12px;min-width:0;padding:15px;color:var(--on-surface);background:color-mix(in srgb,var(--fin-fundo) 30%,var(--surface-container-low));border:1px solid color-mix(in srgb,var(--fin-cor) 20%,var(--outline-variant));border-radius:16px;text-decoration:none;transition:transform .18s ease,border-color .18s ease}.fd-hoje-financeiro-card.is-pagamentos{--fin-cor:var(--error);--fin-fundo:var(--error-container)}.fd-hoje-financeiro-card.is-resgates{--fin-cor:var(--tertiary);--fin-fundo:var(--tertiary-container)}.fd-hoje-financeiro-card:hover{transform:translateY(-2px);border-color:var(--fin-cor)}.fd-hoje-financeiro-card:focus-visible{outline:3px solid color-mix(in srgb,var(--fin-cor) 30%,transparent);outline-offset:2px}.fd-hoje-financeiro-icon{display:grid;place-items:center;width:44px;height:44px;color:var(--fin-cor);background:var(--fin-fundo);border-radius:13px}.fd-hoje-financeiro-card>div>*{display:block}.fd-hoje-financeiro-card small{color:var(--on-surface-variant);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.045em}.fd-hoje-financeiro-card strong{margin:3px 0;font-family:var(--font-heading);font-size:19px}.fd-hoje-financeiro-card div>span{color:var(--on-surface-variant);font-size:12px;line-height:1.3}.fd-hoje-financeiro-card>.material-symbols-outlined:last-child{color:var(--fin-cor);font-size:19px}.fd-hoje-proximos{margin-top:18px}.fd-hoje-proximos>div:last-child{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.fd-hoje-proximos article{display:flex;align-items:center;gap:10px;padding:13px;background:var(--surface-container-low);border-radius:14px}.fd-hoje-proximos article>.material-symbols-outlined{color:var(--primary)}.fd-hoje-proximos article strong,.fd-hoje-proximos article small{display:block}.fd-hoje-proximos article strong{font-size:12px}.fd-hoje-proximos article small{margin-top:3px;color:var(--on-surface-variant);font-size:10px}
@media(max-width:900px){.fd-hoje-page{width:calc(100% - 24px);margin-top:12px}.fd-hoje-hero{padding:24px}.fd-hoje-grid{grid-template-columns:1fr}.fd-hoje-people-grid,.fd-hoje-financeiro-grid{grid-template-columns:1fr}.fd-hoje-proximos>div:last-child{grid-template-columns:1fr}}
@media(max-width:600px){.fd-hoje-page{width:calc(100% - 20px);margin-bottom:94px}.fd-hoje-hero{display:block;min-height:0;padding:20px;border-radius:20px}.fd-hoje-hero h1{font-size:26px}.fd-hoje-hero p{font-size:12px}.fd-hoje-focus{align-items:stretch}.fd-hoje-focus select{min-width:0;flex:1}.fd-hoje-focus button{padding:0 12px}.fd-hoje-progress{margin-top:16px;min-width:0}.fd-hoje-atencao{grid-template-columns:42px minmax(0,1fr);padding:14px}.fd-hoje-atencao-icon{width:42px;height:42px}.fd-hoje-atencao h2{font-size:15px}.fd-hoje-atencao p{font-size:11px}.fd-hoje-atencao>a{grid-column:1/-1;justify-content:center;width:100%}.fd-hoje-metricas{display:flex;overflow-x:auto;scroll-snap-type:x proximity;padding-bottom:4px}.fd-hoje-metricas>a{flex:0 0 220px;scroll-snap-align:start}.fd-hoje-grid{margin-top:18px}.fd-hoje-section{padding:15px;border-radius:18px}.fd-hoje-agenda-grupo{padding:12px}.fd-hoje-agenda-item{grid-template-columns:38px minmax(0,1fr) auto}.fd-hoje-agenda-item>time{grid-column:1}.fd-hoje-agenda-icon{display:none}.fd-hoje-agenda-item>div{grid-column:2}.fd-hoje-agenda-item>.fd-rotina-status,.fd-hoje-agenda-item>.fd-hoje-agenda-pendente,.fd-hoje-agenda-item>.fd-hoje-agenda-programado,.fd-hoje-agenda-item>.fd-hoje-agenda-check{grid-column:3;grid-row:1}.fd-hoje-person-card{grid-template-columns:46px minmax(0,1fr) 20px}.fd-hoje-person-avatar{width:46px;height:46px}.fd-hoje-person-stats{grid-column:2;display:flex;gap:5px;text-align:left}.fd-hoje-person-card>.material-symbols-outlined{grid-column:3;grid-row:1/3}.fd-hoje-proximos{margin-top:12px}}

/* Pessoas — visão dedicada da rede de acompanhamento. */
.fd-pessoas-page{width:min(1180px,calc(100% - 48px));margin:24px auto 72px}.fd-pessoas-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:30px 34px;color:var(--on-primary-container);background:linear-gradient(125deg,var(--primary-container),color-mix(in srgb,var(--tertiary-container) 64%,var(--primary-container)));border:1px solid color-mix(in srgb,var(--primary) 18%,var(--outline-variant));border-radius:24px}.fd-pessoas-hero h1{margin:7px 0 5px;font:800 clamp(28px,3vw,40px)/1.1 var(--font-heading)}.fd-pessoas-hero p{max-width:650px;margin:0;color:color-mix(in srgb,var(--on-primary-container) 78%,transparent)}.fd-pessoas-hero>a,.fd-pessoas-empty>a{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:0 16px;color:var(--on-primary);background:var(--primary);border-radius:13px;text-decoration:none;font-size:12px;font-weight:800}.fd-pessoas-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0}.fd-pessoas-summary article{display:flex;align-items:center;gap:12px;padding:17px 19px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:17px}.fd-pessoas-summary article>.material-symbols-outlined{display:grid;place-items:center;width:42px;height:42px;color:var(--primary);background:var(--primary-container);border-radius:13px}.fd-pessoas-summary strong,.fd-pessoas-summary small{display:block}.fd-pessoas-summary strong{font-size:23px}.fd-pessoas-summary small{color:var(--on-surface-variant);font-size:11px}.fd-pessoas-section{margin-top:16px;padding:24px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:21px}.fd-pessoas-section>header{display:flex;align-items:flex-end;justify-content:space-between;gap:15px;margin-bottom:17px}.fd-pessoas-section h2{margin:4px 0 0;font:800 22px var(--font-heading)}.fd-pessoas-section>header>a{color:var(--primary);font-size:12px;font-weight:800;text-decoration:none}.fd-pessoas-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.fd-pessoa-card{display:grid;grid-template-columns:54px minmax(0,1fr);gap:13px;padding:16px;background:var(--surface-container-low);border:1px solid transparent;border-radius:17px}.fd-pessoa-card:hover{border-color:color-mix(in srgb,var(--primary) 48%,var(--outline-variant))}.fd-pessoa-card-avatar,.fd-pessoa-card-avatar>*{display:grid;place-items:center;width:54px;height:54px;overflow:hidden;border-radius:50%}.fd-pessoa-card-avatar img{width:100%;height:100%;object-fit:cover}.fd-pessoa-card-copy>span{display:flex;align-items:center;gap:4px;color:var(--primary);font-size:10px;font-weight:850;text-transform:uppercase;letter-spacing:.04em}.fd-pessoa-card-copy>span .material-symbols-outlined{font-size:15px}.fd-pessoa-card-copy h3{margin:4px 0 2px;font-size:15px}.fd-pessoa-card-copy p{margin:0;color:var(--on-surface-variant);font-size:11px}.fd-pessoa-card-actions{grid-column:1/-1;display:flex;justify-content:flex-end;border-top:1px solid var(--outline-variant);padding-top:11px}.fd-pessoa-card-actions a{display:flex;align-items:center;gap:4px;color:var(--primary);font-size:11px;font-weight:800;text-decoration:none}.fd-pessoa-card-actions .material-symbols-outlined{font-size:16px}.fd-pessoas-empty{display:grid;justify-items:center;padding:30px;text-align:center;color:var(--on-surface-variant);background:var(--surface-container-low);border:1px dashed var(--outline-variant);border-radius:17px}.fd-pessoas-empty>.material-symbols-outlined{font-size:38px;color:var(--primary)}.fd-pessoas-empty h3{margin:8px 0 3px;color:var(--on-surface)}.fd-pessoas-empty p{margin:0 0 14px;font-size:12px}.fd-pessoas-empty.is-compact{padding:22px}.fd-pessoas-page a:focus-visible{outline:3px solid color-mix(in srgb,var(--primary) 35%,transparent);outline-offset:3px}
@media(max-width:800px){.fd-pessoas-page{width:calc(100% - 24px);margin-top:14px}.fd-pessoas-hero{align-items:flex-start;padding:23px}.fd-pessoas-summary{grid-template-columns:1fr}.fd-pessoas-grid{grid-template-columns:1fr}}
@media(max-width:600px){.fd-pessoas-page{width:calc(100% - 20px);margin-bottom:94px}.fd-pessoas-hero{display:block;padding:20px;border-radius:20px}.fd-pessoas-hero h1{font-size:27px}.fd-pessoas-hero p{font-size:12px}.fd-pessoas-hero>a{width:100%;margin-top:16px}.fd-pessoas-section{padding:15px;border-radius:18px}.fd-pessoas-section>header{align-items:flex-start}.fd-pessoa-card{grid-template-columns:48px minmax(0,1fr)}.fd-pessoa-card-avatar,.fd-pessoa-card-avatar>*{width:48px;height:48px}}

/* Prestadores — valores variáveis, registro e confirmação de pagamento. */
.fd-prestador-valor-final{display:grid;grid-template-columns:minmax(180px,.7fr) minmax(260px,1.3fr);gap:14px;padding:16px;background:var(--surface-container-low);border:1px solid var(--outline-variant);border-radius:15px}.fd-money-input{display:flex;align-items:center}.fd-money-input>span{display:grid;place-items:center;align-self:stretch;min-width:46px;color:var(--primary);background:var(--primary-container);border:1px solid var(--outline-variant);border-right:0;border-radius:11px 0 0 11px;font-weight:850}.fd-money-input .fd-form-input{border-radius:0 11px 11px 0}.fd-payment-report-form{display:grid!important;grid-template-columns:repeat(4,minmax(120px,1fr));gap:8px;width:100%;margin-top:12px;padding-top:12px;border-top:1px solid var(--outline-variant)}.fd-payment-report-form label{display:grid;gap:4px;color:var(--on-surface-variant);font-size:10px;font-weight:800}.fd-payment-report-form input,.fd-payment-confirm-box input,.fd-payment-confirm-box select{min-width:0;height:38px;padding:0 10px;color:var(--on-surface);background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:9px}.fd-payment-report-form .is-wide{grid-column:span 2}.fd-payment-report-form button{grid-column:1/-1;justify-self:end}.fd-payment-confirm-box{display:grid;grid-template-columns:1fr auto;gap:10px;margin:12px 0;padding:14px;background:var(--primary-container);border-radius:13px}.fd-payment-confirm-box>p{grid-column:1/-1;margin:0;color:var(--on-primary-container);font-size:12px}.fd-payment-confirm-box form{display:flex;gap:7px}.fd-payment-confirm-box button{min-height:38px;padding:0 12px;color:var(--on-primary);background:var(--primary);border:0;border-radius:9px;font-weight:800;cursor:pointer}.fd-payment-confirm-box button.is-danger{color:var(--on-error-container);background:var(--error-container)}.fd-payment-dispute{margin:10px 14px;padding:10px 12px;color:var(--on-error-container);background:var(--error-container);border-radius:10px;font-size:11px}.fd-recomp-statements em.is-aguardando_confirmacao{color:var(--on-tertiary-container);background:var(--tertiary-container)}.fd-recomp-statements em.is-contestada{color:var(--on-error-container);background:var(--error-container)}
@media(max-width:760px){.fd-prestador-valor-final{grid-template-columns:1fr}.fd-payment-report-form{grid-template-columns:1fr 1fr}.fd-payment-confirm-box{grid-template-columns:1fr}.fd-payment-confirm-box form{display:grid}.fd-payment-confirm-box input,.fd-payment-confirm-box select{width:100%}}
@media(max-width:480px){.fd-payment-report-form{grid-template-columns:1fr}.fd-payment-report-form .is-wide{grid-column:auto}.fd-payment-report-form button{justify-self:stretch}.fd-payment-confirm-box{padding:11px}}

/* Módulo operacional de prestadores — linha de serviço e equipe. */
.fd-prest-page{width:min(1180px,calc(100% - 48px));margin:24px auto 80px}.fd-prest-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:30px 34px;color:var(--on-primary-container);background:linear-gradient(120deg,var(--primary-container),color-mix(in srgb,var(--secondary-container) 68%,var(--primary-container)));border:1px solid color-mix(in srgb,var(--primary) 18%,var(--outline-variant));border-radius:24px}.fd-prest-hero h1{margin:6px 0;font:800 clamp(28px,3vw,40px)/1.1 var(--font-heading)}.fd-prest-hero p{margin:0;max-width:680px;color:color-mix(in srgb,var(--on-primary-container) 76%,transparent)}.fd-prest-hero>a{display:flex;align-items:center;gap:6px;padding:11px 14px;color:var(--on-primary);background:var(--primary);border-radius:12px;text-decoration:none;font-size:11px;font-weight:850}.fd-prest-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:14px 0}.fd-prest-kpis article{padding:17px 20px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:16px}.fd-prest-kpis strong,.fd-prest-kpis span{display:block}.fd-prest-kpis strong{font-size:25px}.fd-prest-kpis span{color:var(--on-surface-variant);font-size:11px}.fd-prest-section{margin-top:15px;padding:22px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:20px}.fd-prest-section>header{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:15px}.fd-prest-section h2{margin:3px 0 0;font:800 21px var(--font-heading)}.fd-prest-section>header>a{color:var(--primary);font-size:11px;font-weight:850}.fd-prest-timeline,.fd-prest-contracts,.fd-prest-occurrences{display:grid;gap:9px}.fd-prest-timeline>a{display:grid;grid-template-columns:64px 38px minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px;color:var(--on-surface);background:var(--surface-container-low);border-radius:13px;text-decoration:none}.fd-prest-timeline time{font-weight:850}.fd-prest-timeline time small{display:block;color:var(--on-surface-variant);font-size:9px}.fd-prest-timeline>a>.material-symbols-outlined{color:var(--primary)}.fd-prest-timeline div small{display:block;color:var(--on-surface-variant)}.fd-prest-timeline em,.fd-prest-status,.fd-prest-contracts em{padding:5px 8px;color:var(--on-primary-container);background:var(--primary-container);border-radius:99px;font-size:9px;font-style:normal;font-weight:850}.fd-prest-contracts{grid-template-columns:repeat(2,minmax(0,1fr))}.fd-prest-contracts>a{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:10px;align-items:center;padding:14px;color:var(--on-surface);background:var(--surface-container-low);border:1px solid transparent;border-radius:15px;text-decoration:none}.fd-prest-contracts>a:hover{border-color:var(--primary)}.fd-prest-contracts>a>.material-symbols-outlined{display:grid;place-items:center;width:42px;height:42px;color:var(--primary);background:var(--primary-container);border-radius:12px}.fd-prest-contracts small,.fd-prest-contracts p{display:block;margin:0;color:var(--on-surface-variant);font-size:9px}.fd-prest-contracts strong{display:block}.fd-prest-contracts em{grid-column:3}.fd-prest-form{display:grid;gap:0}.fd-prest-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.fd-prest-fields>label,.fd-prest-complete>label{display:grid;gap:5px;color:var(--on-surface-variant);font-size:11px;font-weight:800}.fd-prest-fields input,.fd-prest-fields select,.fd-prest-fields textarea,.fd-prest-helper-form input,.fd-prest-occ-actions input,.fd-prest-complete input,.fd-prest-complete textarea{width:100%;padding:10px 11px;color:var(--on-surface);background:var(--surface-container-low);border:1px solid var(--outline-variant);border-radius:10px}.fd-prest-fields .is-wide{grid-column:1/-1}.fd-prest-fields fieldset{display:flex;flex-wrap:wrap;gap:10px;border:0}.fd-prest-fields fieldset label,.fd-prest-check{display:flex!important;align-items:center;gap:5px}.fd-prest-fields input[type=checkbox],.fd-prest-checklist-builder input[type=checkbox],.fd-prest-complete input[type=checkbox]{width:auto}.fd-prest-checklist-builder{margin-top:16px}.fd-prest-checklist-builder>div{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:9px;margin-top:7px}.fd-prest-checklist-builder label{display:flex;align-items:center;gap:4px;font-size:10px}.fd-prest-detail-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:15px}.fd-prest-checklist{display:grid;gap:8px;padding:0;list-style:none}.fd-prest-checklist li{display:flex;gap:8px}.fd-prest-checklist li>.material-symbols-outlined{color:var(--primary)}.fd-prest-checklist small{display:block;color:var(--on-surface-variant)}.fd-prest-team{display:flex;flex-wrap:wrap;gap:7px}.fd-prest-team>span{display:flex;align-items:center;gap:5px;padding:7px 9px;background:var(--surface-container-low);border-radius:99px;font-size:10px}.fd-prest-helper-form{display:grid;grid-template-columns:1fr 1fr auto;gap:7px;margin-top:12px}.fd-prest-helper-form button,.fd-prest-occ-actions button,.fd-prest-complete button{padding:9px 11px;color:var(--on-primary);background:var(--primary);border:0;border-radius:9px;font-weight:850;cursor:pointer}.fd-prest-occurrences>article{padding:14px;background:var(--surface-container-low);border-left:4px solid var(--primary);border-radius:13px}.fd-prest-occurrences>article>header{display:flex;justify-content:space-between}.fd-prest-occurrences em{font-size:9px;font-style:normal;font-weight:850}.fd-prest-occ-actions{display:flex;gap:9px;margin-top:10px}.fd-prest-occ-actions details{flex:1}.fd-prest-occ-actions summary{cursor:pointer;color:var(--primary);font-size:10px;font-weight:850}.fd-prest-occ-actions form{display:grid;gap:6px;margin-top:7px}.fd-prest-occ-actions .is-danger{background:var(--error)}.fd-prest-complete{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:12px;padding:13px;background:var(--surface-container-lowest);border-radius:11px}.fd-prest-complete h3,.fd-prest-complete fieldset,.fd-prest-complete button{grid-column:1/-1}.fd-prest-complete>label:has(textarea),.fd-prest-complete>label:has(input[type=file]){grid-column:1/-1}.fd-prest-complete fieldset{display:flex;flex-wrap:wrap;gap:8px;border:0}.fd-prest-muted{color:var(--on-surface-variant);font-size:11px}.fd-payment-dispute form{display:flex;gap:7px}.fd-payment-dispute input{flex:1;min-height:38px;padding:0 9px;border:1px solid color-mix(in srgb,var(--error) 30%,var(--outline-variant));border-radius:8px}.fd-payment-dispute button{padding:0 10px;color:var(--on-error);background:var(--error);border:0;border-radius:8px}
@media(max-width:800px){.fd-prest-page{width:calc(100% - 24px)}.fd-prest-contracts,.fd-prest-detail-grid{grid-template-columns:1fr}.fd-prest-hero{align-items:flex-start}.fd-prest-fields{grid-template-columns:1fr}.fd-prest-fields .is-wide{grid-column:auto}}
@media(max-width:560px){.fd-prest-page{width:calc(100% - 20px);margin-bottom:95px}.fd-prest-hero{display:block;padding:20px}.fd-prest-hero>a{justify-content:center;margin-top:14px}.fd-prest-kpis{grid-template-columns:1fr 1fr}.fd-prest-kpis article:last-child{grid-column:1/-1}.fd-prest-section{padding:14px}.fd-prest-timeline>a{grid-template-columns:52px 28px minmax(0,1fr)}.fd-prest-timeline em{grid-column:3}.fd-prest-contracts{grid-template-columns:1fr}.fd-prest-checklist-builder>div,.fd-prest-helper-form,.fd-prest-complete{grid-template-columns:1fr}.fd-prest-checklist-builder label,.fd-prest-complete h3,.fd-prest-complete fieldset,.fd-prest-complete button{grid-column:auto}.fd-prest-occ-actions{display:grid}.fd-payment-dispute form{display:grid}}
.fd-prest-status-actions{display:grid;justify-items:end;gap:8px}.fd-prest-status-actions form{display:flex;gap:5px}.fd-prest-status-actions select,.fd-prest-status-actions button{min-height:34px;padding:0 8px;border:1px solid var(--outline-variant);border-radius:8px}.fd-prest-status-actions button{color:var(--on-primary);background:var(--primary);font-weight:800}
@media(prefers-reduced-motion:reduce){.fd-hoje-metricas>a{transition:none}}
/* Aprovações — fila de revisão */
.fd-aprov-page{width:min(1040px,calc(100% - 36px));margin:22px auto 48px;color:var(--on-surface)}
.fd-aprov-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:28px;padding:30px 34px;background:linear-gradient(118deg,var(--primary-container),color-mix(in srgb,var(--primary-container) 68%,var(--tertiary-container)));border:1px solid color-mix(in srgb,var(--primary) 18%,var(--outline-variant));border-radius:25px}
.fd-aprov-hero h1{max-width:650px;margin:7px 0 0;font-family:var(--font-heading);font-size:clamp(27px,3vw,39px);line-height:1.12}.fd-aprov-hero>div:first-child>p{max-width:620px;margin:9px 0 0;color:var(--on-surface-variant);font-size:14px;line-height:1.5}
.fd-aprov-hero-summary{display:flex;align-items:center;gap:13px;min-width:225px;padding:15px 17px;background:color-mix(in srgb,var(--surface-container-lowest) 80%,transparent);border:1px solid color-mix(in srgb,var(--primary) 16%,transparent);border-radius:18px}.fd-aprov-hero-summary>.material-symbols-outlined{display:grid;place-items:center;width:46px;height:46px;color:var(--primary);background:var(--primary-container);border-radius:14px}.fd-aprov-hero-summary div>*{display:block}.fd-aprov-hero-summary strong{font-size:24px;line-height:1}.fd-aprov-hero-summary small{margin-top:3px;color:var(--on-surface-variant);font-size:11px}.fd-aprov-hero-summary em{margin-top:6px;color:var(--primary);font-size:10px;font-style:normal;font-weight:800}
.fd-aprov-empty{display:grid;grid-template-columns:58px minmax(0,1fr) auto;align-items:center;gap:17px;margin-top:18px;padding:22px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:20px}.fd-aprov-empty>.material-symbols-outlined{display:grid;place-items:center;width:58px;height:58px;color:var(--primary);background:var(--primary-container);border-radius:18px;font-size:29px}.fd-aprov-empty h2,.fd-aprov-empty p{margin:0}.fd-aprov-empty h2{font-family:var(--font-heading);font-size:18px}.fd-aprov-empty p{margin-top:4px;color:var(--on-surface-variant);font-size:13px}.fd-aprov-empty a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 16px;color:var(--on-primary);background:var(--primary);border-radius:13px;text-decoration:none;font-size:12px;font-weight:800}
.fd-aprov-jump{display:flex;gap:9px;overflow-x:auto;margin-top:16px;padding:2px 1px 7px;scroll-snap-type:x proximity}.fd-aprov-jump a{display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0 13px;color:var(--on-surface);background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:13px;text-decoration:none;font-size:11px;font-weight:800;white-space:nowrap;scroll-snap-align:start}.fd-aprov-jump a:hover,.fd-aprov-jump a:focus-visible{border-color:var(--primary)}.fd-aprov-jump .material-symbols-outlined{color:var(--primary);font-size:19px}.fd-aprov-jump b{display:grid;place-items:center;min-width:22px;height:22px;padding:0 6px;color:var(--on-primary);background:var(--primary);border-radius:999px;font-size:9px}
.fd-aprov-section{margin-top:28px;scroll-margin-top:24px}.fd-aprov-section .fd-rotina-section-heading{margin-bottom:12px}.fd-aprov-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
.fd-aprov-card{--aprov-cor:var(--primary);--aprov-fundo:var(--primary-container);overflow:hidden;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-top:4px solid var(--aprov-cor);border-radius:20px}.fd-aprov-card--licao{--aprov-cor:#3566b8;--aprov-fundo:#d9e6ff}.fd-aprov-card--tarefa{--aprov-cor:#a96100;--aprov-fundo:#ffddb3}.fd-aprov-card--fisica{--aprov-cor:#d95540;--aprov-fundo:#ffe0da}.fd-aprov-card--atividade{--aprov-cor:#197965;--aprov-fundo:#c1f1e4}.fd-aprov-card--resgate{--aprov-cor:#7b4da8;--aprov-fundo:#eedcff}[data-theme="jornada_vibrante"] .fd-aprov-card{--aprov-fundo:color-mix(in srgb,var(--aprov-cor) 18%,var(--surface-container-lowest))}
.fd-aprov-card>header{display:grid;grid-template-columns:42px minmax(0,1fr);gap:10px 11px;align-items:center;padding:14px 16px;border-bottom:1px solid var(--outline-variant)}.fd-aprov-avatar{display:grid;grid-row:1/3;place-items:center;width:42px;height:42px;color:#fff;background:var(--aprov-cor);border:3px solid var(--surface-container-lowest);border-radius:50%;box-shadow:0 0 0 1px var(--outline-variant);font-size:11px;font-weight:850}.fd-aprov-card>header div{min-width:0}.fd-aprov-card>header strong,.fd-aprov-card>header small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-aprov-card>header strong{font-size:13px}.fd-aprov-card>header small{margin-top:2px;color:var(--on-surface-variant);font-size:10px}.fd-aprov-card>header time{grid-column:2;display:flex;align-items:center;gap:4px;color:var(--aprov-cor);font-size:10px;font-weight:800}.fd-aprov-card>header time .material-symbols-outlined{font-size:15px}
.fd-aprov-card-body{display:grid;grid-template-columns:46px minmax(0,1fr);gap:13px;padding:16px}.fd-aprov-type-icon{display:grid;place-items:center;width:46px;height:46px;color:var(--aprov-cor);background:var(--aprov-fundo);border-radius:14px;font-size:23px}.fd-aprov-card-body h3{margin:0;font-family:var(--font-heading);font-size:17px;line-height:1.25}.fd-aprov-label{display:block;margin-bottom:4px;color:var(--aprov-cor);font-size:9px;font-weight:850;letter-spacing:.06em;text-transform:uppercase}.fd-aprov-occurrence{display:flex;align-items:center;gap:4px;margin:7px 0 0;color:var(--on-surface-variant);font-size:11px}.fd-aprov-occurrence .material-symbols-outlined{color:var(--aprov-cor);font-size:16px}.fd-aprov-reference{margin:8px 0 0;color:var(--on-surface-variant);font-size:11px;line-height:1.45}.fd-aprov-card blockquote{margin:11px 0 0;padding:11px 12px;color:var(--on-surface);background:var(--surface-container-low);border-left:3px solid var(--aprov-cor);border-radius:0 11px 11px 0;font-size:12px;line-height:1.5}.fd-aprov-card blockquote>span{display:block;margin-bottom:4px;color:var(--aprov-cor);font-size:9px;font-weight:850;text-transform:uppercase}.fd-aprov-proof{display:block;width:calc(100% - 32px);max-height:230px;margin:0 16px 16px;object-fit:cover;border:1px solid var(--outline-variant);border-radius:14px}
.fd-aprov-card>footer{display:grid;grid-template-columns:1fr 1fr;gap:9px;padding:13px 16px;background:var(--surface-container-low);border-top:1px solid var(--outline-variant)}.fd-aprov-card>footer form{min-width:0}.fd-aprov-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;width:100%;min-height:46px;padding:0 12px;border:1px solid transparent;border-radius:13px;font-family:inherit;font-size:12px;font-weight:850;cursor:pointer}.fd-aprov-btn .material-symbols-outlined{font-size:18px}.fd-aprov-btn--approve{color:#fff;background:#087866;border-color:#087866}.fd-aprov-btn--reject{color:var(--on-error-container);background:var(--error-container);border-color:color-mix(in srgb,var(--error) 25%,var(--error-container))}.fd-aprov-btn:hover{filter:brightness(.96)}.fd-aprov-btn:focus-visible{outline:3px solid color-mix(in srgb,var(--primary) 35%,transparent);outline-offset:2px}
@media(max-width:820px){.fd-aprov-page{width:calc(100% - 24px);margin-top:12px}.fd-aprov-hero{padding:23px}.fd-aprov-list{grid-template-columns:1fr}}
@media(max-width:560px){.fd-aprov-page{width:calc(100% - 20px);margin-bottom:94px}.fd-aprov-hero{display:block;padding:19px;border-radius:20px}.fd-aprov-hero h1{font-size:25px}.fd-aprov-hero>div:first-child>p{font-size:12px}.fd-aprov-hero-summary{min-width:0;margin-top:15px}.fd-aprov-empty{grid-template-columns:48px minmax(0,1fr);padding:16px}.fd-aprov-empty>.material-symbols-outlined{width:48px;height:48px;border-radius:15px}.fd-aprov-empty a{grid-column:1/-1}.fd-aprov-section{margin-top:22px}.fd-aprov-card{border-radius:17px}.fd-aprov-card>header{padding:13px}.fd-aprov-card-body{grid-template-columns:38px minmax(0,1fr);gap:10px;padding:14px 13px}.fd-aprov-type-icon{width:38px;height:38px;border-radius:11px;font-size:20px}.fd-aprov-card-body h3{font-size:15px}.fd-aprov-card>footer{position:sticky;bottom:72px;padding:11px 13px}.fd-aprov-btn{min-height:48px}.fd-aprov-proof{width:calc(100% - 26px);margin:0 13px 13px}}
@media(prefers-reduced-motion:reduce){.fd-aprov-btn{transition:none}}
/* Reprovação de lição — orientação e reenvio */
.fd-aprov-card>footer.fd-aprov-decision-footer{grid-template-columns:minmax(0,1.3fr) minmax(180px,.7fr);align-items:stretch;gap:12px;padding:15px}
.fd-aprov-reject-form,.fd-aprov-approve-form{display:flex;flex-direction:column;min-width:0;padding:12px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:14px}.fd-aprov-reject-form label{margin-bottom:7px;color:var(--on-surface);font-size:11px;font-weight:850}.fd-aprov-reject-form label span{color:var(--error)}.fd-aprov-reject-form textarea{width:100%;min-height:78px;padding:10px 11px;resize:vertical;color:var(--on-surface);background:var(--surface-container-low);border:1px solid var(--outline);border-radius:10px;font:inherit;font-size:12px;line-height:1.45}.fd-aprov-reject-form textarea:focus{border-color:var(--error);outline:3px solid color-mix(in srgb,var(--error) 18%,transparent)}.fd-aprov-reject-form .fd-aprov-btn{margin-top:9px}.fd-aprov-approve-form{justify-content:space-between}.fd-aprov-approve-form p{display:flex;align-items:flex-start;gap:7px;margin:0 0 12px;color:var(--on-surface-variant);font-size:11px;line-height:1.4}.fd-aprov-approve-form p .material-symbols-outlined{color:#087866;font-size:19px}
.fd-cronograma-sessao.is-rejected .fd-cronograma-sessao-marker{background:var(--error);color:var(--on-error)}.fd-cronograma-sessao.is-rejected .fd-cronograma-sessao-card{align-items:flex-start;flex-wrap:wrap;background:color-mix(in srgb,var(--error-container) 25%,var(--surface-container-lowest));border-color:color-mix(in srgb,var(--error) 42%,var(--outline-variant));box-shadow:inset 4px 0 0 var(--error)}.fd-cronograma-sessao.is-rejected .fd-cronograma-sessao-data{color:var(--error)}.fd-cronograma-reprovacao{flex:1 1 310px;min-width:260px;padding:13px;background:var(--surface-container-lowest);border:1px solid color-mix(in srgb,var(--error) 24%,var(--outline-variant));border-radius:13px}.fd-cronograma-reprovacao-title{display:flex;align-items:center;gap:9px}.fd-cronograma-reprovacao-title>.material-symbols-outlined{display:grid;place-items:center;width:36px;height:36px;color:var(--on-error-container);background:var(--error-container);border-radius:11px;font-size:20px}.fd-cronograma-reprovacao-title strong,.fd-cronograma-reprovacao-title small{display:block}.fd-cronograma-reprovacao-title strong{color:var(--on-error-container);font-size:12px}.fd-cronograma-reprovacao-title small{margin-top:2px;color:var(--on-surface-variant);font-size:9px}.fd-cronograma-reprovacao>p{margin:10px 0 0;padding:10px 11px;color:var(--on-surface);background:var(--surface-container-low);border-left:3px solid var(--error);border-radius:0 9px 9px 0;font-size:11px;line-height:1.5}.fd-cronograma-reprovacao>p>span{display:block;margin-bottom:3px;color:var(--error);font-size:9px;font-weight:850;letter-spacing:.04em;text-transform:uppercase}.fd-cronograma-reprovacao>a{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:0 14px;margin-top:10px;color:var(--on-primary);background:var(--primary);border-radius:12px;text-decoration:none;font-size:11px;font-weight:850}.fd-cronograma-reprovacao>a .material-symbols-outlined{font-size:18px}
@media(max-width:650px){.fd-aprov-card>footer.fd-aprov-decision-footer{position:static;grid-template-columns:1fr;padding:12px}.fd-aprov-approve-form{min-height:112px}.fd-cronograma-sessao.is-rejected .fd-cronograma-sessao-card{display:block}.fd-cronograma-reprovacao{min-width:0;margin-top:12px}.fd-cronograma-reprovacao>a{width:100%}}
.fd-diario-correcao{display:grid;grid-template-columns:52px minmax(0,1fr);gap:14px;margin-bottom:16px;padding:17px;color:var(--on-error-container);background:color-mix(in srgb,var(--error-container) 38%,var(--surface-container-lowest));border:1px solid color-mix(in srgb,var(--error) 35%,var(--outline-variant));border-left:4px solid var(--error);border-radius:17px}.fd-diario-correcao-icon{display:grid;place-items:center;width:52px;height:52px;color:var(--on-error-container);background:var(--error-container);border-radius:15px;font-size:25px}.fd-diario-correcao h2,.fd-diario-correcao p{margin:0}.fd-diario-correcao h2{margin-top:4px;font-family:var(--font-heading);font-size:18px}.fd-diario-correcao p{margin-top:8px;padding:10px 11px;color:var(--on-surface);background:var(--surface-container-lowest);border-radius:10px;font-size:13px;line-height:1.5}.fd-diario-correcao small{display:block;margin-top:7px;color:var(--on-surface-variant);font-size:10px;font-weight:750}@media(max-width:560px){.fd-diario-correcao{grid-template-columns:42px minmax(0,1fr);gap:10px;padding:14px}.fd-diario-correcao-icon{width:42px;height:42px;border-radius:12px;font-size:21px}.fd-diario-correcao h2{font-size:15px}.fd-diario-correcao p{font-size:11px}}
/* Concluir atividade — jornada de registro */
.fd-concluir-page{--concluir-cor:#197965;--concluir-fundo:#c1f1e4;width:min(1080px,calc(100% - 36px));margin:18px auto 46px;color:var(--on-surface)}.fd-concluir-page--coral{--concluir-cor:#d95540;--concluir-fundo:#ffe0da}.fd-concluir-page--ambar{--concluir-cor:#a96100;--concluir-fundo:#ffddb3}.fd-concluir-page--azul{--concluir-cor:#3566b8;--concluir-fundo:#d9e6ff}.fd-concluir-page--violeta{--concluir-cor:#7556b3;--concluir-fundo:#eaddff}.fd-concluir-page--verde{--concluir-cor:#197965;--concluir-fundo:#c1f1e4}.fd-concluir-page--rosa{--concluir-cor:#a84d78;--concluir-fundo:#ffd8e9}[data-theme="jornada_vibrante"] .fd-concluir-page{--concluir-fundo:color-mix(in srgb,var(--concluir-cor) 18%,var(--surface-container-lowest))}
.fd-concluir-back{display:inline-flex;align-items:center;gap:6px;min-height:40px;margin-bottom:10px;color:var(--on-surface-variant);text-decoration:none;font-size:12px;font-weight:750}.fd-concluir-back:hover{color:var(--concluir-cor)}.fd-concluir-back .material-symbols-outlined{font-size:18px}
.fd-concluir-hero{display:grid;grid-template-columns:68px minmax(0,1fr) auto;align-items:center;gap:20px;padding:27px 30px;background:linear-gradient(118deg,var(--concluir-fundo),color-mix(in srgb,var(--concluir-fundo) 52%,var(--surface-container-lowest)));border:1px solid color-mix(in srgb,var(--concluir-cor) 25%,var(--outline-variant));border-radius:25px;position:relative;overflow:hidden}.fd-concluir-hero:after{content:"";position:absolute;right:-70px;top:-105px;width:240px;height:240px;border:38px solid color-mix(in srgb,var(--concluir-cor) 9%,transparent);border-radius:50%;pointer-events:none}.fd-concluir-hero-icon{display:grid;place-items:center;width:68px;height:68px;color:var(--concluir-cor);background:var(--surface-container-lowest);border:1px solid color-mix(in srgb,var(--concluir-cor) 22%,transparent);border-radius:20px;box-shadow:0 10px 24px color-mix(in srgb,var(--concluir-cor) 12%,transparent);position:relative;z-index:1}.fd-concluir-hero-icon .material-symbols-outlined{font-size:34px}.fd-concluir-hero-copy{min-width:0;position:relative;z-index:1}.fd-concluir-hero .fd-rotina-eyebrow{color:var(--concluir-cor)}.fd-concluir-hero h1{margin:6px 0 0;font-family:var(--font-heading);font-size:clamp(26px,3vw,37px);line-height:1.12}.fd-concluir-hero-copy>p{max-width:620px;margin:8px 0 0;color:var(--on-surface-variant);font-size:13px;line-height:1.5}.fd-concluir-date{display:flex;align-items:center;gap:10px;min-width:190px;padding:13px 15px;background:color-mix(in srgb,var(--surface-container-lowest) 80%,transparent);border:1px solid color-mix(in srgb,var(--concluir-cor) 18%,transparent);border-radius:16px;position:relative;z-index:1}.fd-concluir-date>.material-symbols-outlined{color:var(--concluir-cor);font-size:24px}.fd-concluir-date div>*{display:block}.fd-concluir-date small,.fd-concluir-date span{color:var(--on-surface-variant);font-size:9px}.fd-concluir-date strong{margin:2px 0;font-size:14px}
.fd-concluir-steps{grid-column:1/-1;display:grid;grid-template-columns:auto minmax(28px,1fr) auto minmax(28px,1fr) auto;align-items:center;gap:9px;padding-top:19px;margin-top:3px;border-top:1px solid color-mix(in srgb,var(--concluir-cor) 18%,transparent);position:relative;z-index:1}.fd-concluir-steps span{display:inline-flex;align-items:center;gap:6px;color:var(--on-surface-variant);font-size:10px;font-weight:800}.fd-concluir-steps b{display:grid;place-items:center;width:24px;height:24px;background:var(--surface-container-high);border-radius:50%;font-size:9px}.fd-concluir-steps span.is-done,.fd-concluir-steps span.is-active{color:var(--concluir-cor)}.fd-concluir-steps span.is-done b,.fd-concluir-steps span.is-active b{color:#fff;background:var(--concluir-cor)}.fd-concluir-steps i{height:2px;background:var(--outline-variant);border-radius:9px}.fd-concluir-steps i:first-of-type{background:var(--concluir-cor)}
.fd-concluir-return{display:grid;grid-template-columns:48px minmax(0,1fr);gap:14px;margin-top:15px;padding:16px;background:color-mix(in srgb,var(--error-container) 36%,var(--surface-container-lowest));border:1px solid color-mix(in srgb,var(--error) 32%,var(--outline-variant));border-left:4px solid var(--error);border-radius:17px}.fd-concluir-return>.material-symbols-outlined{display:grid;place-items:center;width:48px;height:48px;color:var(--on-error-container);background:var(--error-container);border-radius:14px}.fd-concluir-return h2,.fd-concluir-return p{margin:0}.fd-concluir-return h2{margin-top:3px;font-family:var(--font-heading);font-size:17px}.fd-concluir-return p{margin-top:7px;color:var(--on-surface);font-size:12px;line-height:1.5}.fd-concluir-return small{display:block;margin-top:5px;color:var(--on-surface-variant);font-size:9px}
.fd-concluir-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(270px,.65fr);align-items:start;gap:17px;margin-top:18px}.fd-concluir-main,.fd-concluir-aside{display:grid;gap:14px}.fd-concluir-card{padding:20px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:20px}.fd-concluir-section-head{display:flex;align-items:flex-start;gap:11px;margin-bottom:16px}.fd-concluir-section-head>.material-symbols-outlined{display:grid;place-items:center;flex:0 0 42px;width:42px;height:42px;color:var(--concluir-cor);background:var(--concluir-fundo);border-radius:13px;font-size:21px}.fd-concluir-section-head h2,.fd-concluir-section-head p{margin:0}.fd-concluir-section-head h2{margin-top:3px;font-family:var(--font-heading);font-size:17px}.fd-concluir-section-head p{margin-top:4px;color:var(--on-surface-variant);font-size:11px}.fd-concluir-instructions>p{margin:0;padding:13px 14px;color:var(--on-surface);background:var(--surface-container-low);border-left:3px solid var(--concluir-cor);border-radius:0 12px 12px 0;font-size:12px;line-height:1.55}.fd-concluir-video{display:grid;grid-template-columns:42px minmax(0,1fr) 20px;align-items:center;gap:10px;margin-top:11px;padding:11px;color:var(--on-surface);background:color-mix(in srgb,var(--concluir-fundo) 35%,var(--surface-container-lowest));border:1px solid color-mix(in srgb,var(--concluir-cor) 24%,var(--outline-variant));border-radius:13px;text-decoration:none}.fd-concluir-video>.material-symbols-outlined:first-child{display:grid;place-items:center;width:42px;height:42px;color:var(--concluir-cor);background:var(--surface-container-lowest);border-radius:12px;font-size:25px}.fd-concluir-video strong,.fd-concluir-video small{display:block}.fd-concluir-video strong{font-size:12px}.fd-concluir-video small{margin-top:2px;color:var(--on-surface-variant);font-size:9px}.fd-concluir-video>.material-symbols-outlined:last-child{color:var(--outline);font-size:18px}
.fd-concluir-optional{margin-left:5px;color:var(--on-surface-variant);font-size:9px;font-weight:650}.fd-concluir-textarea{min-height:126px;resize:vertical;line-height:1.5}.fd-concluir-proof{padding:15px;margin-top:18px;background:var(--surface-container-low);border:1px dashed var(--outline);border-radius:15px}.fd-concluir-proof.is-required{border-color:color-mix(in srgb,var(--concluir-cor) 52%,var(--outline));background:color-mix(in srgb,var(--concluir-fundo) 24%,var(--surface-container-low))}.fd-concluir-proof-heading{display:flex;align-items:flex-start;gap:10px}.fd-concluir-proof-heading>.material-symbols-outlined{color:var(--concluir-cor);font-size:23px}.fd-concluir-proof-heading label{display:block;color:var(--on-surface);font-size:12px;font-weight:850}.fd-concluir-proof-heading label b,.fd-concluir-proof-heading label small{margin-left:4px;color:var(--concluir-cor);font-size:9px}.fd-concluir-proof-heading p{margin:3px 0 0;color:var(--on-surface-variant);font-size:10px}.fd-concluir-upload{margin-top:12px}.fd-concluir-upload .fd-file-upload-btn{gap:6px;min-height:44px;color:#fff;background:var(--concluir-cor)}.fd-concluir-upload .fd-file-upload-btn .material-symbols-outlined{font-size:18px}
.fd-concluir-summary dl{display:grid;gap:0;margin:0}.fd-concluir-summary dl>div{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--outline-variant)}.fd-concluir-summary dl>div:last-child{border-bottom:0}.fd-concluir-summary dt{color:var(--on-surface-variant);font-size:10px}.fd-concluir-summary dd{margin:0;text-align:right;color:var(--on-surface);font-size:11px;font-weight:800}.fd-concluir-after{display:flex;align-items:flex-start;gap:11px;padding:15px;color:var(--on-surface);background:var(--concluir-fundo);border:1px solid color-mix(in srgb,var(--concluir-cor) 24%,var(--outline-variant));border-radius:17px}.fd-concluir-after>.material-symbols-outlined{color:var(--concluir-cor);font-size:25px}.fd-concluir-after strong{font-size:12px}.fd-concluir-after p{margin:4px 0 0;color:var(--on-surface-variant);font-size:10px;line-height:1.45}
.fd-concluir-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:14px 0 0;margin-top:18px;border-top:1px solid var(--outline-variant)}.fd-concluir-actions .fd-form-btn-secondary,.fd-concluir-actions .fd-form-btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:48px;padding-inline:19px}.fd-concluir-actions .fd-form-btn-primary{background:var(--concluir-cor)}.fd-concluir-actions .material-symbols-outlined{font-size:19px}
@media(max-width:820px){.fd-concluir-page{width:calc(100% - 24px);margin-top:10px}.fd-concluir-hero{grid-template-columns:58px minmax(0,1fr);padding:22px}.fd-concluir-hero-icon{width:58px;height:58px;border-radius:17px}.fd-concluir-date{grid-column:1/-1;min-width:0}.fd-concluir-layout{grid-template-columns:1fr}.fd-concluir-aside{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.fd-concluir-page{width:calc(100% - 20px);margin-bottom:92px}.fd-concluir-hero{grid-template-columns:46px minmax(0,1fr);gap:12px;padding:17px;border-radius:19px}.fd-concluir-hero-icon{width:46px;height:46px;border-radius:14px}.fd-concluir-hero-icon .material-symbols-outlined{font-size:25px}.fd-concluir-hero h1{font-size:23px}.fd-concluir-hero-copy>p{font-size:11px}.fd-concluir-date{padding:11px}.fd-concluir-steps{gap:5px;padding-top:14px}.fd-concluir-steps span{font-size:8px}.fd-concluir-steps b{width:21px;height:21px}.fd-concluir-return{grid-template-columns:40px minmax(0,1fr);gap:10px;padding:13px}.fd-concluir-return>.material-symbols-outlined{width:40px;height:40px;border-radius:11px}.fd-concluir-layout{margin-top:13px}.fd-concluir-card{padding:15px;border-radius:17px}.fd-concluir-section-head{margin-bottom:13px}.fd-concluir-aside{grid-template-columns:1fr}.fd-concluir-actions{position:sticky;z-index:5;bottom:72px;padding:10px;background:var(--surface);box-shadow:0 -8px 20px color-mix(in srgb,var(--on-surface) 7%,transparent);border-radius:15px}.fd-concluir-actions .fd-form-btn-secondary{flex:0 0 auto}.fd-concluir-actions .fd-form-btn-primary{flex:1;padding-inline:10px;font-size:11px}}
@media(prefers-reduced-motion:reduce){.fd-concluir-video,.fd-concluir-actions button{transition:none}}

.fd-prest-day input{min-height:0!important;padding:0!important}.fd-prest-toggle-card>input{min-height:18px!important;padding:0!important}.fd-prest-check-control input{min-height:16px!important;padding:0!important}
/* Nova contratação: o formulário funciona como um combinado em três etapas. */
.fd-prest-form-page{max-width:920px}.fd-prest-form-page .fd-concluir-back{margin-bottom:15px}.fd-prest-form-hero{display:grid;grid-template-columns:auto minmax(0,1fr) auto}.fd-prest-form-hero-mark{display:grid;place-items:center;width:58px;height:58px;color:var(--on-primary);background:var(--primary);border-radius:18px;box-shadow:0 9px 24px color-mix(in srgb,var(--primary) 22%,transparent)}.fd-prest-form-hero-mark .material-symbols-outlined{font-size:30px}.fd-prest-form-progress{display:flex;align-items:center;gap:4px;padding:0;margin:0;list-style:none}.fd-prest-form-progress li{display:grid;position:relative;justify-items:center;gap:4px;min-width:52px;color:var(--on-primary-container);font-size:9px;font-weight:800}.fd-prest-form-progress li+li:before{content:"";position:absolute;top:13px;right:42px;width:18px;border-top:1px solid color-mix(in srgb,var(--primary) 35%,var(--outline-variant))}.fd-prest-form-progress b{display:grid;place-items:center;width:28px;height:28px;color:var(--primary);background:var(--surface-container-lowest);border:1px solid color-mix(in srgb,var(--primary) 30%,var(--outline-variant));border-radius:50%;font-size:10px}.fd-prest-form{gap:16px;margin-top:16px}.fd-prest-form .fd-prest-section{margin-top:0;padding:26px 28px}.fd-prest-step{box-shadow:0 8px 24px color-mix(in srgb,var(--on-surface) 4%,transparent)}.fd-prest-step-title{display:flex;align-items:flex-start;gap:13px}.fd-prest-step-title>div>p{margin:4px 0 0;color:var(--on-surface-variant);font-size:10px}.fd-prest-step-number{display:grid;flex:0 0 36px;place-items:center;width:36px;height:36px;color:var(--on-primary);background:var(--primary);border-radius:12px;font-size:13px;font-weight:900;box-shadow:0 6px 14px color-mix(in srgb,var(--primary) 18%,transparent)}.fd-prest-form .fd-prest-fields{gap:16px}.fd-prest-form .fd-prest-fields input,.fd-prest-form .fd-prest-fields select,.fd-prest-form .fd-prest-fields textarea{min-height:46px;padding:12px 13px;background:var(--surface-container-lowest);border-color:color-mix(in srgb,var(--outline) 38%,var(--outline-variant));border-radius:12px;transition:border-color .18s ease,box-shadow .18s ease}.fd-prest-form .fd-prest-fields textarea{min-height:88px;resize:vertical}.fd-prest-form .fd-prest-fields input:focus,.fd-prest-form .fd-prest-fields select:focus,.fd-prest-form .fd-prest-fields textarea:focus{outline:0;border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 15%,transparent)}.fd-prest-weekdays{display:grid!important;gap:5px;padding:14px!important;background:var(--surface-container-low);border:1px solid var(--outline-variant)!important;border-radius:15px}.fd-prest-weekdays legend{padding:0 4px;color:var(--on-surface);font-size:11px;font-weight:850}.fd-prest-weekdays>p{margin:0 0 5px;color:var(--on-surface-variant);font-size:9px;font-weight:500}.fd-prest-weekdays>div{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.fd-prest-day{display:block!important;cursor:pointer}.fd-prest-day input{position:absolute;width:1px!important;height:1px;opacity:0}.fd-prest-day span{display:grid;place-items:center;min-height:42px;color:var(--on-surface-variant);background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:11px;font-size:10px;font-weight:850;transition:.18s ease}.fd-prest-day input:checked+span{color:var(--on-primary);background:var(--primary);border-color:var(--primary);box-shadow:0 5px 12px color-mix(in srgb,var(--primary) 20%,transparent)}.fd-prest-day input:focus-visible+span{outline:3px solid color-mix(in srgb,var(--primary) 25%,transparent);outline-offset:2px}.fd-prest-payment-fields>label>small{color:var(--on-surface-variant);font-size:8px;font-weight:500}.fd-prest-input-affix{display:flex;align-items:center;min-height:46px;background:var(--surface-container-lowest);border:1px solid color-mix(in srgb,var(--outline) 38%,var(--outline-variant));border-radius:12px;overflow:hidden}.fd-prest-input-affix>b{padding:0 12px;color:var(--primary);font-size:10px}.fd-prest-input-affix input{min-width:0;border:0!important;border-left:1px solid var(--outline-variant)!important;border-radius:0!important;box-shadow:none!important}.fd-prest-number input{border-right:1px solid var(--outline-variant)!important;border-left:0!important}.fd-prest-toggle-card{display:grid!important;grid-template-columns:auto auto minmax(0,1fr);align-items:center;align-self:start;gap:10px;min-height:70px;margin-top:18px;padding:12px 14px;color:var(--on-surface)!important;background:var(--surface-container-low);border:1px solid var(--outline-variant);border-radius:14px;cursor:pointer}.fd-prest-toggle-card>input{width:18px!important;height:18px;accent-color:var(--primary)}.fd-prest-toggle-card>.material-symbols-outlined{color:var(--primary);font-size:23px}.fd-prest-toggle-card strong,.fd-prest-toggle-card small{display:block}.fd-prest-toggle-card small{margin-top:2px;color:var(--on-surface-variant);font-size:8px;font-weight:500}.fd-prest-checklist-builder{margin-top:22px;padding-top:20px;border-top:1px solid var(--outline-variant)}.fd-prest-checklist-head,.fd-prest-checklist-head>div{display:flex;align-items:center;justify-content:space-between;gap:10px}.fd-prest-checklist-head>div>.material-symbols-outlined{display:grid;place-items:center;width:38px;height:38px;color:var(--primary);background:var(--primary-container);border-radius:11px}.fd-prest-checklist-head h3,.fd-prest-checklist-head p{margin:0}.fd-prest-checklist-head h3{font:800 16px var(--font-heading)}.fd-prest-checklist-head p{margin-top:3px;color:var(--on-surface-variant);font-size:9px}.fd-prest-checklist-head>small{padding:5px 8px;color:var(--primary);background:var(--primary-container);border-radius:99px;font-size:8px;font-weight:850}.fd-prest-checklist-list{display:grid;gap:8px;margin-top:13px}.fd-prest-checklist-row{display:grid!important;grid-template-columns:30px minmax(0,1fr) auto auto;align-items:center;gap:9px;margin:0!important;padding:8px;background:var(--surface-container-low);border:1px solid transparent;border-radius:13px}.fd-prest-checklist-row:focus-within{border-color:color-mix(in srgb,var(--primary) 45%,var(--outline-variant))}.fd-prest-checklist-index{display:grid;place-items:center;width:28px;height:28px;color:var(--primary);background:var(--primary-container);border-radius:9px;font-size:9px;font-weight:900}.fd-prest-checklist-row>input{min-width:0;min-height:40px;padding:9px 11px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:10px}.fd-prest-check-control{display:flex!important;align-items:center;gap:5px;min-height:40px;padding:0 9px;color:var(--on-surface-variant);background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:10px;cursor:pointer;font-size:9px!important}.fd-prest-check-control input{width:16px!important;height:16px;accent-color:var(--primary)}.fd-prest-check-control .material-symbols-outlined{color:var(--primary);font-size:16px}.fd-prest-form-actions{position:sticky;z-index:5;bottom:16px;margin-top:0;padding:12px;background:color-mix(in srgb,var(--surface) 92%,transparent);border:1px solid var(--outline-variant);border-radius:16px;box-shadow:0 12px 32px color-mix(in srgb,var(--on-surface) 10%,transparent);backdrop-filter:blur(12px)}.fd-prest-form-actions .fd-form-btn-secondary{min-width:140px}.fd-prest-form-actions .fd-form-btn-primary{min-width:210px!important;color:var(--on-primary)!important;background:var(--primary)!important;border-color:var(--primary)!important;box-shadow:0 7px 18px color-mix(in srgb,var(--primary) 24%,transparent)}
@media(max-width:720px){.fd-prest-form-hero{grid-template-columns:auto minmax(0,1fr)}.fd-prest-form-progress{grid-column:1/-1;justify-content:center;width:100%;padding-top:16px}.fd-prest-weekdays>div{grid-template-columns:repeat(4,minmax(0,1fr))}.fd-prest-checklist-row{grid-template-columns:28px minmax(0,1fr)}.fd-prest-check-control:first-of-type{grid-column:2}.fd-prest-form-actions{bottom:76px}}
@media(max-width:480px){.fd-prest-form-page{width:calc(100% - 16px)}.fd-prest-form-hero{padding:18px}.fd-prest-form-hero-mark{width:46px;height:46px;border-radius:14px}.fd-prest-form-hero h1{font-size:24px}.fd-prest-form .fd-prest-section{padding:17px 14px}.fd-prest-step-number{flex-basis:31px;width:31px;height:31px}.fd-prest-toggle-card{margin-top:0}.fd-prest-checklist-head>small{display:none}.fd-prest-checklist-row{padding:7px}.fd-prest-check-control{justify-content:center}.fd-prest-form-actions{display:grid;grid-template-columns:1fr 1.35fr}.fd-prest-form-actions .fd-form-btn-secondary,.fd-prest-form-actions .fd-form-btn-primary{min-width:0!important;padding-inline:8px}}
@media(prefers-reduced-motion:reduce){.fd-prest-form input,.fd-prest-form select,.fd-prest-day span{transition:none}}

/* Seletores sem checkbox aparente e checklist com descrição realmente ampla. */
.fd-prest-fields .fd-prest-weekdays>div{display:grid!important;grid-template-columns:repeat(7,minmax(0,1fr))!important;width:100%}.fd-prest-fields .fd-prest-weekdays .fd-prest-day{display:block!important;width:100%;min-width:0}.fd-prest-fields .fd-prest-weekdays .fd-prest-day>span{width:100%;min-height:44px;padding:0 6px;box-sizing:border-box}.fd-prest-checklist-builder>.fd-prest-checklist-head{display:flex!important;grid-template-columns:none!important;margin-top:0!important}.fd-prest-checklist-builder>.fd-prest-checklist-list{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:10px!important;width:100%;margin-top:13px!important}
.fd-prest-day input[type=checkbox],.fd-prest-toggle-card>input[type=checkbox],.fd-prest-check-control>input[type=checkbox]{position:absolute!important;width:1px!important;height:1px!important;min-height:0!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important;opacity:0!important}.fd-prest-day input:checked+span,.fd-prest-day:has(input:checked)>span{color:var(--on-primary);background:var(--primary);border-color:var(--primary);box-shadow:0 5px 12px color-mix(in srgb,var(--primary) 24%,transparent)}.fd-prest-toggle-card{grid-template-columns:auto minmax(0,1fr);transition:border-color .18s ease,background-color .18s ease,box-shadow .18s ease}.fd-prest-toggle-card:has(>input:checked){color:var(--on-primary-container)!important;background:var(--primary-container);border-color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 12%,transparent)}.fd-prest-toggle-card:has(>input:focus-visible),.fd-prest-check-control:has(>input:focus-visible){outline:3px solid color-mix(in srgb,var(--primary) 25%,transparent);outline-offset:2px}.fd-prest-checklist-row{grid-template-columns:30px minmax(0,1fr) auto auto!important;align-items:center!important;padding:11px!important}.fd-prest-checklist-row>input{grid-column:2/-1;width:100%;min-height:48px;font-size:11px}.fd-prest-check-control:first-of-type{grid-column:2}.fd-prest-check-control{justify-content:center;min-width:126px;transition:border-color .18s ease,background-color .18s ease,color .18s ease}.fd-prest-check-control:has(>input:checked){color:var(--on-primary-container);background:var(--primary-container);border-color:var(--primary);font-weight:850}.fd-prest-check-control:has(>input:checked) .material-symbols-outlined{font-variation-settings:'FILL' 1;color:var(--primary)}
@media(max-width:720px){.fd-prest-fields .fd-prest-weekdays>div{grid-template-columns:repeat(4,minmax(0,1fr))!important}.fd-prest-checklist-row{grid-template-columns:28px minmax(0,1fr) minmax(108px,auto)!important}.fd-prest-checklist-row>input{grid-column:2/-1}.fd-prest-check-control:first-of-type{grid-column:2}.fd-prest-check-control{min-width:0}}
@media(max-width:480px){.fd-prest-checklist-row{grid-template-columns:26px 1fr 1fr!important}.fd-prest-check-control span:last-child{font-size:8px}}

/* Checklist: 70% para descrição e 15% para cada decisão. */
.fd-prest-checklist-columns,.fd-prest-checklist-row{grid-template-columns:30px minmax(0,7fr) minmax(72px,1.5fr) minmax(72px,1.5fr)!important}.fd-prest-checklist-columns{display:grid;align-items:end;gap:9px;padding:0 11px;color:var(--on-surface-variant);font-size:8px;font-weight:850;text-transform:uppercase;letter-spacing:.04em}.fd-prest-checklist-columns span:nth-child(n+3){text-align:center}.fd-prest-checklist-row>input{grid-column:2!important}.fd-prest-check-control:first-of-type{grid-column:3!important}.fd-prest-check-control{width:100%;min-width:0;padding:0!important}.fd-prest-check-control .material-symbols-outlined{font-size:20px}
@media(max-width:560px){.fd-prest-checklist-columns{display:none}.fd-prest-checklist-row{grid-template-columns:26px minmax(0,7fr) 46px 46px!important;gap:6px}.fd-prest-checklist-row>input{min-height:44px}.fd-prest-check-control{min-height:44px}}
.fd-prest-checklist-add{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:42px;margin-top:12px;padding:0 15px;color:var(--primary);background:var(--surface-container-lowest);border:1px solid var(--primary);border-radius:11px;font-size:10px;font-weight:850;cursor:pointer;transition:background-color .18s ease,color .18s ease,box-shadow .18s ease}.fd-prest-checklist-add:hover{color:var(--on-primary);background:var(--primary);box-shadow:0 5px 14px color-mix(in srgb,var(--primary) 20%,transparent)}.fd-prest-checklist-add:focus-visible{outline:3px solid color-mix(in srgb,var(--primary) 25%,transparent);outline-offset:2px}.fd-prest-checklist-add:disabled{cursor:not-allowed;opacity:.5}.fd-prest-checklist-add .material-symbols-outlined{font-size:18px}
.fd-prest-helper-card>header p{margin:4px 0 0;color:var(--on-surface-variant);font-size:10px}.fd-prest-helper-empty{display:grid;justify-items:center;gap:5px;width:100%;padding:18px;color:var(--on-surface-variant);background:var(--surface-container-low);border-radius:12px;text-align:center}.fd-prest-helper-empty .material-symbols-outlined{font-size:25px}.fd-prest-helper-empty p{margin:0}.fd-prest-helper-form{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:11px!important;margin-top:16px!important}.fd-prest-helper-form label{display:grid;gap:5px;color:var(--on-surface-variant);font-size:10px;font-weight:800}.fd-prest-helper-form input{min-height:44px;background:var(--surface-container-lowest)}.fd-prest-helper-form button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px}.fd-prest-helper-form button .material-symbols-outlined{font-size:18px}.fd-prest-acceptance{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:14px;margin-top:15px;padding:18px 20px;border:1px solid var(--outline-variant);border-radius:17px}.fd-prest-acceptance>span{display:grid;place-items:center;width:44px;height:44px;border-radius:13px}.fd-prest-acceptance h2,.fd-prest-acceptance p{margin:0}.fd-prest-acceptance h2{font:800 18px var(--font-heading)}.fd-prest-acceptance p{margin-top:3px;color:var(--on-surface-variant);font-size:10px}.fd-prest-acceptance.is-pending{background:color-mix(in srgb,var(--secondary-container) 45%,var(--surface-container-lowest))}.fd-prest-acceptance.is-pending>span{color:var(--on-secondary-container);background:var(--secondary-container)}.fd-prest-acceptance.is-accepted{background:color-mix(in srgb,var(--primary-container) 42%,var(--surface-container-lowest));border-color:color-mix(in srgb,var(--primary) 35%,var(--outline-variant))}.fd-prest-acceptance.is-accepted>span{color:var(--primary);background:var(--primary-container)}.fd-prest-acceptance form{display:grid;grid-column:2;gap:10px;margin-top:4px}.fd-prest-acceptance form label{display:flex;align-items:flex-start;gap:8px;font-size:10px;font-weight:750}.fd-prest-acceptance form input{flex:0 0 auto;width:18px;height:18px;accent-color:var(--primary)}.fd-prest-acceptance form button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;color:var(--on-primary);background:var(--primary);border:0;border-radius:11px;font-weight:850;cursor:pointer}.fd-prest-acceptance form button .material-symbols-outlined{font-size:18px}@media(max-width:560px){.fd-prest-acceptance{grid-template-columns:1fr}.fd-prest-acceptance form{grid-column:1}.fd-prest-acceptance>span{width:38px;height:38px}}
.fd-prest-status-actions{display:grid;min-width:250px;justify-items:stretch!important;gap:10px!important;padding:13px;background:color-mix(in srgb,var(--surface-container-lowest) 78%,transparent);border:1px solid color-mix(in srgb,var(--primary) 20%,var(--outline-variant));border-radius:16px;box-shadow:0 8px 22px color-mix(in srgb,var(--on-surface) 8%,transparent);backdrop-filter:blur(10px)}.fd-prest-status-summary{display:flex;align-items:center;gap:9px}.fd-prest-status-summary>.material-symbols-outlined{display:grid;place-items:center;width:34px;height:34px;color:var(--primary);background:var(--primary-container);border-radius:10px;font-size:20px}.fd-prest-status-summary small,.fd-prest-status-summary strong{display:block}.fd-prest-status-summary small{color:var(--on-surface-variant);font-size:8px;font-weight:750;text-transform:uppercase;letter-spacing:.06em}.fd-prest-status-summary strong{margin-top:1px;font-size:12px}.fd-prest-status-summary.is-pendente>.material-symbols-outlined{color:var(--on-secondary-container);background:var(--secondary-container)}.fd-prest-status-summary.is-encerrada>.material-symbols-outlined{color:var(--on-surface-variant);background:var(--surface-container-high)}.fd-prest-status-actions form{display:grid!important;gap:5px!important;padding-top:9px;border-top:1px solid var(--outline-variant)}.fd-prest-status-actions form>label{color:var(--on-surface-variant);font-size:8px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.fd-prest-status-actions form>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px}.fd-prest-status-actions select,.fd-prest-status-actions button{min-height:42px!important;border-radius:10px!important}.fd-prest-status-actions select{width:100%;padding:0 32px 0 10px!important;color:var(--on-surface);background:var(--surface-container-lowest);font-weight:750}.fd-prest-status-actions button{display:inline-flex;align-items:center;gap:5px;padding:0 12px!important;white-space:nowrap;cursor:pointer}.fd-prest-status-actions button .material-symbols-outlined{font-size:17px}.fd-prest-status-actions form>small{color:var(--on-surface-variant);font-size:8px}@media(max-width:720px){.fd-prest-hero{align-items:stretch}.fd-prest-status-actions{width:100%;min-width:0}.fd-prest-status-actions form>div{grid-template-columns:1fr 1fr}}@media(max-width:420px){.fd-prest-status-actions form>div{grid-template-columns:1fr}.fd-prest-status-actions button{justify-content:center}}
.fd-prest-occurrences>article{border-left-width:5px;transition:border-color .18s ease,background-color .18s ease}.fd-prest-occurrences>article>header{align-items:center;gap:12px}.fd-prest-occurrences>article>header time{font-size:11px;font-weight:800}.fd-prest-occurrences>article>header em{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:32px;padding:0 11px;color:var(--primary);background:var(--primary-container);border:1px solid color-mix(in srgb,var(--primary) 28%,var(--outline-variant));border-radius:99px;font-size:9px;font-weight:850;line-height:1;white-space:nowrap}.fd-prest-occurrences>article>header em:before{content:'event';font-family:'Material Symbols Outlined';font-size:16px;font-style:normal;font-variation-settings:'FILL' 1}.fd-prest-occurrences>article.is-concluida{border-left-color:var(--primary)}.fd-prest-occurrences>article.is-concluida>header em:before{content:'task_alt'}.fd-prest-occurrences>article.is-cancelada{border-left-color:var(--error)}.fd-prest-occurrences>article.is-cancelada>header em{color:var(--error);background:color-mix(in srgb,var(--error) 10%,var(--surface-container-lowest));border-color:color-mix(in srgb,var(--error) 30%,var(--outline-variant))}.fd-prest-occurrences>article.is-cancelada>header em:before{content:'cancel'}@media(max-width:480px){.fd-prest-occurrences>article>header{align-items:flex-start}.fd-prest-occurrences>article>header em{min-height:30px;padding:0 9px}}
.fd-hoje-agenda-aceitar{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:0 12px;color:var(--on-primary);background:var(--primary);border:1px solid var(--primary);border-radius:11px;font-size:10px;font-weight:850;text-decoration:none;white-space:nowrap;box-shadow:0 5px 13px color-mix(in srgb,var(--primary) 20%,transparent);transition:filter .18s ease,transform .18s ease}.fd-hoje-agenda-aceitar .material-symbols-outlined{font-size:17px}.fd-hoje-agenda-aceitar:hover{filter:brightness(.92);transform:translateY(-1px)}.fd-hoje-agenda-aceitar:focus-visible{outline:3px solid color-mix(in srgb,var(--primary) 30%,transparent);outline-offset:2px}@media(max-width:600px){.fd-hoje-agenda-item>.fd-hoje-agenda-aceitar{grid-column:2/-1;grid-row:2;width:100%;margin-top:4px}}
.fd-hoje-agenda-servico{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:0 12px;color:var(--primary);background:var(--surface-container-lowest);border:1px solid var(--primary);border-radius:11px;font-size:10px;font-weight:850;text-decoration:none;white-space:nowrap;transition:color .18s ease,background-color .18s ease,transform .18s ease}.fd-hoje-agenda-servico .material-symbols-outlined{font-size:17px}.fd-hoje-agenda-servico:hover{color:var(--on-primary);background:var(--primary);transform:translateY(-1px)}.fd-hoje-agenda-servico:focus-visible{outline:3px solid color-mix(in srgb,var(--primary) 30%,transparent);outline-offset:2px}@media(max-width:600px){.fd-hoje-agenda-item>.fd-hoje-agenda-servico{grid-column:2/-1;grid-row:2;width:100%;margin-top:4px}}
.fd-prest-contractor-contact{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:13px;margin-top:15px;padding:16px 18px;background:var(--surface-container-lowest);border:1px solid color-mix(in srgb,var(--primary) 28%,var(--outline-variant));border-radius:16px}.fd-prest-contractor-contact>span:first-child{display:grid;place-items:center;width:42px;height:42px;color:var(--primary);background:var(--primary-container);border-radius:12px}.fd-prest-contractor-contact small,.fd-prest-contractor-contact strong{display:block}.fd-prest-contractor-contact small{color:var(--primary);font-size:8px;font-weight:850;text-transform:uppercase;letter-spacing:.06em}.fd-prest-contractor-contact strong{margin-top:1px;font-size:13px}.fd-prest-contractor-contact p{margin:3px 0 0;color:var(--on-surface-variant);font-size:10px}.fd-prest-contractor-contact>a{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:42px;padding:0 13px;color:#fff;background:#128c7e;border-radius:11px;font-size:10px;font-weight:850;text-decoration:none;white-space:nowrap}.fd-prest-contractor-contact>a .material-symbols-outlined{font-size:17px}.fd-prest-contractor-contact>a:focus-visible{outline:3px solid color-mix(in srgb,#128c7e 30%,transparent);outline-offset:2px}.fd-prest-contact-unavailable{padding:8px 10px;color:var(--on-surface-variant);background:var(--surface-container-low);border-radius:9px;font-size:9px;font-weight:750}@media(max-width:600px){.fd-prest-contractor-contact{grid-template-columns:42px minmax(0,1fr)}.fd-prest-contractor-contact>a,.fd-prest-contact-unavailable{grid-column:1/-1;width:100%;text-align:center}}
.fd-hoje-agenda-item.is-servico-contratado{grid-template-columns:62px minmax(0,1fr)!important;align-items:start;gap:8px 14px;padding:16px}.fd-hoje-agenda-item.is-servico-contratado>time{grid-column:1;grid-row:1/3;display:grid;justify-items:center;align-content:center;min-height:72px;padding:9px 5px;background:color-mix(in srgb,var(--tipo-fundo) 72%,var(--surface-container-lowest));border-radius:12px;text-align:center}.fd-hoje-agenda-item.is-servico-contratado>.fd-hoje-agenda-icon{grid-column:1;grid-row:2;z-index:1;justify-self:center;align-self:end;width:30px;height:30px;margin-bottom:-4px;border:2px solid var(--surface-container-lowest);border-radius:9px;font-size:17px}.fd-hoje-agenda-item.is-servico-contratado>div{grid-column:2;grid-row:1}.fd-hoje-agenda-item.is-servico-contratado .fd-hoje-agenda-meta{gap:7px;margin-bottom:3px}.fd-hoje-agenda-item.is-servico-contratado .fd-hoje-agenda-responsavel{padding:5px 9px;text-transform:none}.fd-hoje-agenda-item.is-servico-contratado .fd-atividade-map-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.fd-hoje-agenda-item.is-servico-contratado>.fd-hoje-agenda-aceitar,.fd-hoje-agenda-item.is-servico-contratado>.fd-hoje-agenda-servico{grid-column:2;grid-row:2;justify-self:stretch;width:100%;min-height:42px}.fd-hoje-agenda-item.is-servico-contratado>.fd-card-microtarefas{grid-column:1/-1}@media(max-width:480px){.fd-hoje-agenda-item.is-servico-contratado{grid-template-columns:50px minmax(0,1fr)!important;padding:12px}.fd-hoje-agenda-item.is-servico-contratado>time{min-height:64px}.fd-hoje-agenda-item.is-servico-contratado>.fd-hoje-agenda-aceitar,.fd-hoje-agenda-item.is-servico-contratado>.fd-hoje-agenda-servico{grid-column:1/-1;grid-row:3}}

/* A tela Hoje usa os mesmos estados auditáveis da Saúde Familiar. */
.fd-hoje-clinical-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:6px}.fd-hoje-clinical-actions a{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:34px;padding:0 10px;color:var(--tipo-cor);background:var(--surface-container-lowest);border:1px solid color-mix(in srgb,var(--tipo-cor) 35%,var(--outline-variant));border-radius:9px;font-size:10px;font-weight:800;text-decoration:none}.fd-hoje-clinical-actions a .material-symbols-outlined{font-size:16px}.fd-hoje-medication-doses{display:grid;gap:7px;margin-top:10px}.fd-hoje-medication-dose{display:grid;grid-template-columns:48px minmax(110px,1fr) auto;align-items:center;gap:8px;padding:8px;color:var(--on-surface-variant);background:var(--surface-container-lowest);border:1px solid color-mix(in srgb,#b44f7c 25%,var(--outline-variant));border-radius:11px;font-size:10px}.fd-hoje-medication-dose>time{color:#9c3f6a;font-weight:850}.fd-hoje-medication-dose>span b{color:var(--on-surface)}.fd-hoje-medication-dose>div{display:flex;gap:5px}.fd-hoje-medication-dose form{display:flex;margin:0}.fd-hoje-medication-dose button{display:inline-flex;align-items:center;justify-content:center;gap:3px;min-height:30px;padding:0 8px;border-radius:8px;cursor:pointer;font-size:9px;font-weight:800}.fd-hoje-medication-dose button .material-symbols-outlined{font-size:14px}.fd-hoje-medication-dose.is-medicado{border-left:3px solid #b44f7c}.fd-hoje-medication-dose.is-nao_medicado{border-left:3px solid var(--error)}.fd-hoje-dose-observation{grid-column:2/-1!important;display:block!important;margin:0!important;padding:6px 8px;color:var(--error)!important;background:var(--error-container);border-radius:7px;font-size:9px!important;line-height:1.4;white-space:normal}.fd-hoje-agenda-item .fd-saude-overdue-alert{margin-top:8px}.fd-hoje-agenda-item .fd-saude-overdue-alert p{display:block;margin:2px 0 0}.fd-hoje-agenda-item>.fd-card-microtarefas{grid-column:1/-1}@media(max-width:760px){.fd-hoje-clinical-actions{grid-column:1/-1;justify-content:stretch}.fd-hoje-clinical-actions a{flex:1}.fd-hoje-medication-dose{grid-template-columns:44px 1fr}.fd-hoje-medication-dose>div{grid-column:1/-1}.fd-hoje-medication-dose>div form,.fd-hoje-medication-dose>div button{flex:1}.fd-hoje-medication-dose>div button{width:100%}.fd-hoje-dose-observation{grid-column:1/-1!important}}

/* Detalhe do serviço: leitura contratual, aceite e histórico em uma só hierarquia. */
.fd-prest-page:has(>.fd-prest-acceptance){max-width:1040px}.fd-prest-page:has(>.fd-prest-acceptance)>.fd-concluir-back{display:inline-flex;align-items:center;gap:6px;min-height:40px;margin-bottom:10px;color:var(--on-surface-variant);font-size:10px;font-weight:800;text-decoration:none}.fd-prest-page:has(>.fd-prest-acceptance)>.fd-concluir-back:hover{color:var(--primary)}.fd-prest-page:has(>.fd-prest-acceptance)>.fd-prest-hero{position:relative;overflow:hidden;padding:28px 30px}.fd-prest-page:has(>.fd-prest-acceptance)>.fd-prest-hero:before{content:'';position:absolute;inset:0 auto 0 0;width:6px;background:var(--primary)}.fd-prest-page:has(>.fd-prest-acceptance)>.fd-prest-hero>div:first-child{position:relative;z-index:1}.fd-prest-page:has(>.fd-prest-acceptance)>.fd-prest-hero h1{font-size:clamp(27px,3vw,38px)}.fd-prest-page:has(>.fd-prest-acceptance)>.fd-prest-hero p{margin-top:7px;font-size:11px}.fd-prest-page:has(>.fd-prest-acceptance)>.fd-prest-acceptance{position:relative;grid-template-columns:48px minmax(0,1fr);gap:14px 16px;padding:20px 22px;overflow:hidden}.fd-prest-page:has(>.fd-prest-acceptance)>.fd-prest-acceptance:after{content:'';position:absolute;right:-45px;bottom:-65px;width:150px;height:150px;border:28px solid color-mix(in srgb,var(--primary) 7%,transparent);border-radius:50%;pointer-events:none}.fd-prest-acceptance>span:first-child{width:48px;height:48px}.fd-prest-acceptance form{position:relative;z-index:1;gap:12px}.fd-prest-acceptance form label{position:relative;display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:10px;min-height:52px;padding:10px 12px;color:var(--on-surface);background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:13px;cursor:pointer;font-size:10px;font-weight:750;transition:border-color .18s ease,background-color .18s ease,box-shadow .18s ease}.fd-prest-acceptance form label input{position:absolute;width:1px!important;height:1px!important;margin:-1px;clip:rect(0 0 0 0);clip-path:inset(50%);opacity:0}.fd-prest-acceptance form label span{display:contents}.fd-prest-acceptance form label:before{content:'check';display:grid;place-items:center;width:28px;height:28px;color:transparent;background:var(--surface-container-low);border:2px solid var(--outline);border-radius:9px;font-family:'Material Symbols Outlined';font-size:19px;font-variation-settings:'wght' 700;transition:.18s ease}.fd-prest-acceptance form label:has(input:checked){color:var(--on-primary-container);background:color-mix(in srgb,var(--primary-container) 55%,var(--surface-container-lowest));border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 10%,transparent)}.fd-prest-acceptance form label:has(input:checked):before{color:var(--on-primary);background:var(--primary);border-color:var(--primary)}.fd-prest-acceptance form label:has(input:focus-visible){outline:3px solid color-mix(in srgb,var(--primary) 28%,transparent);outline-offset:2px}.fd-prest-acceptance form button{min-height:46px;box-shadow:0 7px 18px color-mix(in srgb,var(--primary) 22%,transparent)}.fd-prest-detail-grid{grid-template-columns:minmax(0,1.35fr) minmax(290px,.65fr);align-items:stretch;gap:14px}.fd-prest-detail-grid>.fd-prest-section{height:100%;margin-top:14px;padding:20px}.fd-prest-checklist{gap:6px}.fd-prest-checklist li{align-items:flex-start;padding:10px 11px;background:var(--surface-container-low);border:1px solid transparent;border-radius:11px}.fd-prest-checklist li>.material-symbols-outlined{font-size:20px;font-variation-settings:'FILL' 1}.fd-prest-checklist li strong{font-size:11px}.fd-prest-checklist li small{margin-top:2px;font-size:9px}.fd-prest-page:has(>.fd-prest-acceptance)>section:last-child{position:relative;margin-top:14px;padding:22px}.fd-prest-page:has(>.fd-prest-acceptance)>section:last-child>header{align-items:center;padding-bottom:14px;border-bottom:1px solid var(--outline-variant)}.fd-prest-page:has(>.fd-prest-acceptance)>section:last-child>header h2{font-size:22px}.fd-prest-occurrences{position:relative;gap:12px;padding-left:22px}.fd-prest-occurrences:before{content:'';position:absolute;top:6px;bottom:6px;left:7px;width:2px;background:var(--outline-variant);border-radius:2px}.fd-prest-occurrences>article{position:relative;padding:16px 17px;background:var(--surface-container-low);border:1px solid var(--outline-variant);border-left:0;border-radius:14px;box-shadow:0 5px 14px color-mix(in srgb,var(--on-surface) 4%,transparent)}.fd-prest-occurrences>article:before{content:'';position:absolute;top:22px;left:-21px;width:12px;height:12px;background:var(--primary);border:3px solid var(--surface-container-lowest);border-radius:50%;box-shadow:0 0 0 1px var(--outline-variant)}.fd-prest-occurrences>article.is-cancelada:before{background:var(--error)}.fd-prest-occurrences>article>header time{display:inline-flex;align-items:center;gap:5px;font-size:12px}.fd-prest-occurrences>article>header time:before{content:'calendar_today';font-family:'Material Symbols Outlined';color:var(--primary);font-size:17px}.fd-prest-occ-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:13px;padding-top:12px;border-top:1px solid var(--outline-variant)}.fd-prest-occ-actions details{min-width:0}.fd-prest-occ-actions summary{display:flex;align-items:center;justify-content:center;min-height:40px;padding:0 10px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:10px;list-style:none;font-size:10px}.fd-prest-occ-actions summary::-webkit-details-marker{display:none}.fd-prest-occ-actions details:first-child summary:before{content:'event_repeat'}.fd-prest-occ-actions details:last-child summary:before{content:'event_busy'}.fd-prest-occ-actions summary:before{margin-right:6px;font-family:'Material Symbols Outlined';font-size:17px}.fd-prest-occ-actions details[open] summary{color:var(--on-primary);background:var(--primary);border-color:var(--primary)}.fd-prest-occ-actions form{gap:8px;padding:10px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:0 0 10px 10px}.fd-prest-occ-actions input{min-height:42px;background:var(--surface-container-lowest)}.fd-prest-occ-actions button{min-height:42px}.fd-prest-occurrences dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:12px 0 0}.fd-prest-occurrences dl>div{padding:10px;background:var(--surface-container-lowest);border-radius:10px}.fd-prest-occurrences dt{color:var(--on-surface-variant);font-size:8px;font-weight:800;text-transform:uppercase}.fd-prest-occurrences dd{margin:3px 0 0;font-size:11px;font-weight:800}@media(max-width:760px){.fd-prest-detail-grid{grid-template-columns:1fr}.fd-prest-page:has(>.fd-prest-acceptance)>.fd-prest-hero{padding:20px}.fd-prest-page:has(>.fd-prest-acceptance)>.fd-prest-acceptance{grid-template-columns:42px minmax(0,1fr);padding:16px}.fd-prest-acceptance form{grid-column:1/-1}.fd-prest-occurrences{padding-left:18px}.fd-prest-occurrences>article:before{left:-18px}}@media(max-width:480px){.fd-prest-occ-actions{grid-template-columns:1fr}.fd-prest-occurrences dl{grid-template-columns:1fr}.fd-prest-page:has(>.fd-prest-acceptance)>section:last-child{padding:15px}.fd-prest-occurrences{padding-left:14px}.fd-prest-occurrences>article{padding:13px}.fd-prest-occurrences>article:before{left:-15px}}

/* Conclusão do serviço: checklist acionável e campos sem sobreposição. */
.fd-prest-complete{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px;margin-top:14px;padding:18px!important;background:var(--surface-container-lowest);border:1px solid color-mix(in srgb,var(--primary) 20%,var(--outline-variant));border-radius:15px!important;box-shadow:0 5px 16px color-mix(in srgb,var(--on-surface) 4%,transparent)}.fd-prest-complete>h3{display:grid;grid-template-columns:36px minmax(0,1fr);align-items:center;gap:10px;margin:0 0 2px;padding-bottom:13px;border-bottom:1px solid var(--outline-variant);font:800 17px var(--font-heading)}.fd-prest-complete>h3:before{content:'task_alt';display:grid;place-items:center;width:36px;height:36px;color:var(--primary);background:var(--primary-container);border-radius:10px;font-family:'Material Symbols Outlined';font-size:21px;font-variation-settings:'FILL' 1}.fd-prest-complete>label:has(>input[type=checkbox]){position:relative;display:grid!important;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:9px;min-height:58px;padding:10px 11px;color:var(--on-surface)!important;background:var(--surface-container-low);border:1px solid var(--outline-variant);border-radius:12px;cursor:pointer;font-size:10px!important;font-weight:800;line-height:1.35;transition:border-color .18s ease,background-color .18s ease,box-shadow .18s ease}.fd-prest-complete>label:has(>input[type=checkbox]):before{content:'check';display:grid;place-items:center;width:28px;height:28px;color:transparent;background:var(--surface-container-lowest);border:2px solid var(--outline);border-radius:8px;font-family:'Material Symbols Outlined';font-size:18px}.fd-prest-complete>label>input[type=checkbox]{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;opacity:0!important}.fd-prest-complete>label:has(>input[type=checkbox]:checked){color:var(--on-primary-container)!important;background:color-mix(in srgb,var(--primary-container) 52%,var(--surface-container-lowest));border-color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 9%,transparent)}.fd-prest-complete>label:has(>input[type=checkbox]:checked):before{color:var(--on-primary);background:var(--primary);border-color:var(--primary)}.fd-prest-complete>label:has(>input[type=checkbox]:focus-visible){outline:3px solid color-mix(in srgb,var(--primary) 25%,transparent);outline-offset:2px}.fd-prest-complete>label:not(:has(>input[type=checkbox])){display:grid;gap:6px;color:var(--on-surface);font-size:10px;font-weight:800}.fd-prest-complete>label:not(:has(>input[type=checkbox])) input,.fd-prest-complete>label textarea{min-height:44px;padding:11px 12px;background:var(--surface-container-low);border-color:var(--outline-variant);border-radius:10px}.fd-prest-complete>label:not(:has(>input[type=checkbox])) input:focus,.fd-prest-complete>label textarea:focus{outline:0;border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 12%,transparent)}.fd-prest-complete>label:has(input[type=file]){padding:12px;background:var(--surface-container-low);border:1px dashed var(--outline);border-radius:12px}.fd-prest-complete input[type=file]{min-height:48px;padding:5px!important;background:var(--surface-container-lowest)!important}.fd-prest-complete input[type=file]::file-selector-button{height:36px;margin-right:9px;padding:0 12px;color:var(--primary);background:var(--primary-container);border:0;border-radius:8px;font-weight:800;cursor:pointer}.fd-prest-complete>label:has(textarea){grid-column:1/-1}.fd-prest-complete textarea{min-height:96px;resize:vertical}.fd-prest-complete fieldset{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:0;padding:12px;background:var(--surface-container-low);border:1px solid var(--outline-variant)!important;border-radius:12px}.fd-prest-complete fieldset legend{padding:0 5px;font-size:10px;font-weight:800}.fd-prest-complete fieldset label{display:flex;align-items:center;gap:7px;min-height:36px;padding:6px 8px;background:var(--surface-container-lowest);border-radius:8px;font-size:10px}.fd-prest-complete fieldset input{width:17px!important;height:17px;accent-color:var(--primary)}.fd-prest-complete>button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:48px;margin-top:2px;border-radius:11px!important;box-shadow:0 7px 18px color-mix(in srgb,var(--primary) 22%,transparent)}.fd-prest-complete>button .material-symbols-outlined{font-size:20px}@media(max-width:640px){.fd-prest-complete{grid-template-columns:1fr!important;padding:14px!important}.fd-prest-complete>h3,.fd-prest-complete>label,.fd-prest-complete>fieldset,.fd-prest-complete>button{grid-column:1!important}.fd-prest-complete fieldset{grid-template-columns:1fr}}
.fd-prest-file-status{display:flex;align-items:flex-start;gap:7px;min-height:38px;padding:9px 10px;color:var(--on-surface-variant);background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:9px;font-size:9px;font-weight:700;line-height:1.4;overflow-wrap:anywhere}.fd-prest-file-status:before{content:'image_search';flex:0 0 auto;font-family:'Material Symbols Outlined';font-size:18px}.fd-prest-file-status.is-selected{color:var(--on-primary-container);background:var(--primary-container);border-color:var(--primary)}.fd-prest-file-status.is-selected:before{content:'check_circle';color:var(--primary);font-variation-settings:'FILL' 1}@media(max-width:640px){.fd-prest-complete input[type=file]{font-size:0}.fd-prest-complete input[type=file]::file-selector-button{width:100%;margin:0;font-size:10px}.fd-prest-file-status{min-height:44px;font-size:10px}}
.fd-address-book{scroll-margin-top:80px}.fd-address-book-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.fd-address-book-heading>.fd-perfil-card-titulo{margin-bottom:3px}.fd-address-book-heading>div>.fd-perfil-hint{margin:0}.fd-address-book-heading>span{flex:0 0 auto;padding:5px 9px;color:var(--primary);background:var(--primary-container);border-radius:99px;font-size:9px;font-weight:800}.fd-address-list{display:grid;gap:8px;margin-top:14px}.fd-address-list>article{display:grid;grid-template-columns:38px minmax(0,1fr) 40px;align-items:center;gap:10px;padding:11px;background:var(--surface-container-low);border:1px solid var(--outline-variant);border-radius:12px}.fd-address-list>article>.material-symbols-outlined{display:grid;place-items:center;width:38px;height:38px;color:var(--primary);background:var(--primary-container);border-radius:10px}.fd-address-list strong{display:flex;align-items:center;gap:7px;font-size:11px}.fd-address-list strong em{padding:3px 6px;color:var(--primary);background:var(--primary-container);border-radius:99px;font-size:8px;font-style:normal}.fd-address-list p{margin:3px 0 0;color:var(--on-surface-variant);font-size:9px;line-height:1.45}.fd-address-list form button{display:grid;place-items:center;width:40px;height:40px;padding:0;color:var(--error);background:transparent;border:1px solid transparent;border-radius:10px;cursor:pointer}.fd-address-list form button:hover{background:color-mix(in srgb,var(--error) 9%,transparent)}.fd-address-list form button:focus-visible{outline:3px solid color-mix(in srgb,var(--error) 25%,transparent)}.fd-address-empty{display:flex;align-items:center;gap:9px;margin-top:14px;padding:13px;color:var(--on-surface-variant);background:var(--surface-container-low);border:1px dashed var(--outline);border-radius:12px}.fd-address-empty p{margin:0;font-size:10px}.fd-address-add-toggle{width:100%;margin-top:14px}.fd-address-form{display:grid;gap:12px;margin-top:14px;padding-top:14px;border-top:1px solid var(--outline-variant)}.fd-address-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 12px}.fd-address-fields>.is-wide{grid-column:1/-1}.fd-address-form .fd-perfil-field{min-width:0}.fd-address-form .fd-perfil-label{display:block;margin-bottom:6px}.fd-address-form .fd-perfil-input{width:100%}.fd-address-cep-control{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.fd-address-cep-control>button{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:44px;padding:0 14px;color:var(--primary);background:var(--surface-container-lowest);border:1px solid var(--primary);border-radius:10px;font-size:10px;font-weight:800;cursor:pointer}.fd-address-cep-control>button:hover{background:var(--primary-container)}.fd-address-cep-control>button:focus-visible{outline:3px solid color-mix(in srgb,var(--primary) 24%,transparent);outline-offset:2px}.fd-address-cep-control>button:disabled{opacity:.6;cursor:wait}.fd-address-cep-control .material-symbols-outlined{font-size:17px}.fd-address-cep-status{min-height:16px;margin:5px 0 0}.fd-address-cep-status.is-loading{color:var(--primary)}.fd-address-cep-status.is-success{color:var(--primary);font-weight:700}.fd-address-cep-status.is-error{color:var(--error);font-weight:700}.fd-address-form>.fd-address-primary{display:grid;grid-template-columns:22px 24px minmax(0,1fr);align-items:center;gap:8px;padding:10px;background:var(--surface-container-low);border-radius:11px;cursor:pointer}.fd-address-primary input{width:18px;min-height:18px;accent-color:var(--primary)}.fd-address-primary>.material-symbols-outlined{color:var(--primary);font-size:20px}.fd-address-primary strong,.fd-address-primary small{display:block}.fd-address-primary small{margin-top:2px;color:var(--on-surface-variant);font-weight:500}.fd-address-form>button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px}.fd-address-form>button .material-symbols-outlined{font-size:19px}@media(max-width:520px){.fd-address-fields{grid-template-columns:1fr}.fd-address-fields>.is-wide{grid-column:1}.fd-address-cep-control{grid-template-columns:1fr}.fd-address-cep-control>button{width:100%}.fd-address-list>article{grid-template-columns:38px minmax(0,1fr) 40px}.fd-address-book-heading{align-items:center}}

.fd-address-form>.fd-address-primary{position:relative;grid-template-columns:34px minmax(0,1fr);border:1px solid var(--outline-variant);transition:background-color .18s ease,border-color .18s ease,box-shadow .18s ease}.fd-address-primary input{position:absolute;width:1px!important;height:1px!important;min-height:1px!important;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.fd-address-primary>.material-symbols-outlined{display:grid;place-items:center;width:34px;height:34px;color:var(--on-surface-variant);background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:9px;font-variation-settings:'FILL' 0}.fd-address-form>.fd-address-primary:has(input:checked){color:var(--on-primary-container);background:var(--primary-container);border-color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 10%,transparent)}.fd-address-primary:has(input:checked)>.material-symbols-outlined{color:var(--on-primary);background:var(--primary);border-color:var(--primary);font-variation-settings:'FILL' 1}.fd-address-primary:has(input:checked) small{color:var(--on-primary-container)}.fd-address-form>.fd-address-primary:has(input:focus-visible){outline:3px solid color-mix(in srgb,var(--primary) 25%,transparent);outline-offset:2px}

/* Escala tipográfica comum do conteúdo mobile. Mantém navegação, campos,
   botões e ícones em seus tamanhos próprios para não reduzir áreas de toque. */
@media (max-width: 767px) {
    .fd-shell-title { font-size: 19px; line-height: 24px; }
    .fd-shell-content [class*="-hero"] h1 { font-size: 21px; line-height: 1.12; }
    .fd-shell-content [class*="-hero"] p { font-size: 11px; line-height: 1.45; }
    .fd-shell-content [class*="-section-heading"] h2,
    .fd-shell-content [class*="-section-head"] h2 { font-size: 14px; line-height: 1.25; }
    .fd-shell-content [class*="-empty"] h2,
    .fd-shell-content [class*="-empty"] h3 { font-size: 14px; line-height: 1.3; }
    .fd-shell-content [class*="-empty"] p { font-size: 11px; line-height: 1.45; }
}

/* Login — apresentação da proposta + acesso, sem afetar cadastro/convites. */
.fd-app:has(.fd-login-page) { max-width: none; margin: 0; padding: 0; }
.fd-login-page { position: relative; isolation: isolate; overflow: hidden; padding: 28px; background: color-mix(in srgb, var(--primary-container) 30%, var(--surface)); }
.fd-login-page::before, .fd-login-page::after { content: ""; position: fixed; z-index: -1; width: 420px; height: 420px; border: 72px solid color-mix(in srgb, var(--primary) 7%, transparent); border-radius: 50%; pointer-events: none; }
.fd-login-page::before { top: -260px; left: -190px; }
.fd-login-page::after { right: -230px; bottom: -270px; }
.fd-login-shell { display: grid; grid-template-columns: minmax(0, .95fr) minmax(360px, .78fr); width: min(100%, 920px); min-height: 590px; overflow: hidden; background: var(--surface-container-lowest); border: 1px solid color-mix(in srgb, var(--primary) 18%, var(--outline-variant)); border-radius: 28px; box-shadow: 0 24px 70px color-mix(in srgb, var(--primary) 16%, transparent); }
.fd-login-story { position: relative; display: flex; flex-direction: column; overflow: hidden; padding: 38px; color: var(--on-primary); background: linear-gradient(180deg, color-mix(in srgb, var(--primary-container) 22%, var(--surface-container-lowest)) 0%, color-mix(in srgb, var(--primary-container) 54%, var(--surface-container-lowest)) 18%, var(--primary) 42%, color-mix(in srgb, var(--primary) 88%, #003d35) 100%); }
.fd-login-story::after { content: ""; position: absolute; right: -110px; bottom: -140px; width: 300px; height: 300px; border: 46px solid color-mix(in srgb, var(--primary-container) 16%, transparent); border-radius: 50%; pointer-events: none; }
.fd-login-brand { position: relative; z-index: 1; display: flex; align-items: center; align-self: flex-start; gap: 10px; }
.fd-login-brand-image { display: block; width: 225px; max-width: 100%; height: auto; filter: drop-shadow(0 5px 8px color-mix(in srgb, #003d35 24%, transparent)); }
.fd-login-brand-mark { display: grid; place-items: center; width: 38px; height: 38px; color: var(--primary); background: var(--on-primary); border-radius: 12px; font-size: 21px; }
.fd-login-brand strong { font-family: var(--font-heading); font-size: 17px; }
.fd-login-brand strong span { color: var(--primary-container); }
.fd-login-story-copy { position: relative; z-index: 1; margin-top: 58px; }
.fd-login-eyebrow { display: block; color: var(--primary-container); font-size: 10px; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.fd-login-story h2 { max-width: 390px; margin: 11px 0 0; font-family: var(--font-heading); font-size: 30px; line-height: 1.16; letter-spacing: -.02em; }
.fd-login-story-copy > p { max-width: 390px; margin: 14px 0 0; color: color-mix(in srgb, var(--on-primary) 78%, transparent); font-size: 13px; line-height: 1.55; }
.fd-login-path { position: relative; z-index: 1; display: grid; gap: 16px; padding: 0; margin: 34px 0 0; list-style: none; }
.fd-login-path li { position: relative; display: grid; grid-template-columns: 36px minmax(0, 1fr); align-items: center; gap: 12px; }
.fd-login-path li:not(:last-child)::after { content: ""; position: absolute; top: 34px; bottom: -18px; left: 17px; width: 2px; background: color-mix(in srgb, var(--primary-container) 34%, transparent); }
.fd-login-path li > .material-symbols-outlined { position: relative; z-index: 1; display: grid; place-items: center; width: 36px; height: 36px; color: var(--on-primary-container); background: var(--primary-container); border-radius: 11px; font-size: 19px; }
.fd-login-path strong, .fd-login-path small { display: block; }
.fd-login-path strong { font-size: 12px; }
.fd-login-path small { margin-top: 2px; color: color-mix(in srgb, var(--on-primary) 70%, transparent); font-size: 9px; line-height: 1.4; }
.fd-login-story-note { position: relative; z-index: 1; display: flex; align-items: center; gap: 6px; margin: auto 0 0; color: color-mix(in srgb, var(--on-primary) 72%, transparent); font-size: 9px; }
.fd-login-story-note .material-symbols-outlined { font-size: 15px; }
.fd-login-access { display: flex; flex-direction: column; justify-content: center; padding: 46px 48px; }
.fd-login-header { margin-bottom: 28px; text-align: left; }
.fd-login-access-icon { width: 48px; height: 48px; margin: 0 0 18px; border-radius: 15px; }
.fd-login-access-icon .material-symbols-outlined { font-size: 24px; }
.fd-login-header .fd-auth2-title { color: var(--on-surface); font-size: 27px; line-height: 1.2; }
.fd-login-header .fd-auth2-subtitle { margin-top: 7px; font-size: 13px; line-height: 1.45; }
.fd-login-access .fd-auth2-form { gap: 18px; }
.fd-login-forgot { align-self: flex-end; margin-top: 7px; color: var(--primary); font-size: 12px; font-weight: 800; text-decoration: none; }
.fd-login-forgot:hover { text-decoration: underline; }
.fd-password-recovery-copy { margin: -4px 0 4px; color: var(--muted-foreground); font-size: 13px; line-height: 1.55; }
.fd-password-recovery-actions { display: grid; gap: 12px; }
.fd-password-recovery-actions .fd-auth2-link { justify-self: center; }
.fd-login-access .fd-auth2-input { height: 52px; border-radius: 13px; font-size: 14px; }
.fd-login-access .fd-auth2-btn-primary { height: 52px; margin-top: 4px; border-radius: 13px; box-shadow: 0 10px 24px color-mix(in srgb, var(--primary) 22%, transparent); }
.fd-login-access .fd-auth2-footer { margin-top: 26px; font-size: 12px; }
.fd-auth2-input-wrap .fd-toggle-senha { display: grid; place-items: center; width: 36px; height: 36px; padding: 0; font-family: "Material Symbols Outlined"; font-size: 20px; font-weight: normal; font-style: normal; line-height: 1; letter-spacing: normal; text-transform: none; white-space: nowrap; word-wrap: normal; direction: ltr; font-feature-settings: "liga"; -webkit-font-feature-settings: "liga"; }
@media (max-width: 767px) {
    .fd-login-page { justify-content: flex-start; min-height: 100dvh; padding: 14px; overflow: auto; }
    .fd-login-shell { grid-template-columns: minmax(0, 1fr); min-height: 0; border-radius: 22px; }
    .fd-login-story { min-height: 190px; padding: 22px; }
    .fd-login-brand-mark { width: 34px; height: 34px; border-radius: 10px; font-size: 19px; }
    .fd-login-brand strong { font-size: 15px; }
    .fd-login-story { background: linear-gradient(180deg, color-mix(in srgb, var(--primary-container) 22%, var(--surface-container-lowest)) 0%, color-mix(in srgb, var(--primary-container) 54%, var(--surface-container-lowest)) 24%, var(--primary) 52%, color-mix(in srgb, var(--primary) 88%, #003d35) 100%); }
    .fd-login-brand-image { width: 190px; }
    .fd-login-story-copy { margin-top: 25px; }
    .fd-login-story h2 { max-width: 310px; margin-top: 8px; font-size: 21px; }
    .fd-login-story-copy > p { max-width: 310px; margin-top: 8px; font-size: 10px; }
    .fd-login-path, .fd-login-story-note { display: none; }
    .fd-login-access { padding: 25px 22px 27px; }
    .fd-login-header { margin-bottom: 22px; }
    .fd-login-access-icon { display: none; }
    .fd-login-header .fd-auth2-title { font-size: 21px; }
    .fd-login-header .fd-auth2-subtitle { font-size: 11px; }
    .fd-login-access .fd-auth2-label { font-size: 12px; }
    .fd-login-access .fd-auth2-input { height: 48px; font-size: 13px; }
    .fd-login-access .fd-auth2-btn-primary { height: 48px; font-size: 14px; }
    .fd-login-access .fd-auth2-footer { margin-top: 22px; font-size: 11px; }
}
@media (max-width: 380px) {
    .fd-login-page { padding: 8px; }
    .fd-login-story { min-height: 170px; padding: 18px; }
    .fd-login-story-copy { margin-top: 20px; }
    .fd-login-story h2 { font-size: 19px; }
    .fd-login-access { padding: 22px 18px 24px; }
}
@media (prefers-reduced-motion: reduce) { .fd-login-access .fd-auth2-btn-primary { transition: none; } }

/* Administração SaaS — área restrita da operação da plataforma. */
.fd-app:has(.fd-admin-shell) { max-width: none; margin: 0; padding: 0; }
.fd-admin-shell { min-height: 100vh; color: var(--on-surface); background: var(--surface); }
.fd-admin-sidebar { position: fixed; inset: 0 auto 0 0; z-index: 30; display: flex; flex-direction: column; width: 248px; padding: 24px 16px; color: var(--on-primary); background: var(--primary); }
.fd-admin-brand { display: flex; align-items: center; gap: 11px; color: inherit; text-decoration: none; }
.fd-admin-brand > .material-symbols-outlined { display: grid; place-items: center; width: 42px; height: 42px; color: var(--primary); background: var(--on-primary); border-radius: 13px; font-size: 23px; }
.fd-admin-brand strong, .fd-admin-brand small { display: block; }
.fd-admin-brand strong { font-family: var(--font-heading); font-size: 17px; }
.fd-admin-brand small { margin-top: 1px; color: color-mix(in srgb, var(--on-primary) 68%, transparent); font-size: 10px; }
.fd-admin-sidebar nav { display: grid; gap: 7px; margin-top: 42px; }
.fd-admin-nav-item { display: flex; align-items: center; gap: 12px; min-height: 46px; padding: 0 13px; color: color-mix(in srgb, var(--on-primary) 75%, transparent); border-radius: 13px; font-size: 13px; font-weight: 700; text-decoration: none; }
.fd-admin-nav-item .material-symbols-outlined { font-size: 21px; }
.fd-admin-nav-item:hover, .fd-admin-nav-item.is-active { color: var(--primary); background: var(--on-primary); }
.fd-admin-sidebar-footer { display: grid; gap: 5px; padding-top: 18px; margin-top: auto; border-top: 1px solid color-mix(in srgb, var(--on-primary) 18%, transparent); }
.fd-admin-sidebar-footer a { display: flex; align-items: center; gap: 9px; min-height: 38px; padding: 0 10px; color: color-mix(in srgb, var(--on-primary) 72%, transparent); font-size: 11px; text-decoration: none; }
.fd-admin-sidebar-footer .material-symbols-outlined { font-size: 18px; }
.fd-admin-main { min-height: 100vh; padding: 0 36px 50px; margin-left: 248px; }
.fd-admin-page-head { display: flex; align-items: center; justify-content: space-between; min-height: 92px; padding: 16px 0; border-bottom: 1px solid var(--outline-variant); }
.fd-admin-page-head > div:first-child > span, .fd-admin-panel > header > div > span, .fd-admin-panel > header > span:first-child { color: var(--primary); font-size: 9px; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.fd-admin-page-head h1 { margin: 5px 0 0; font-family: var(--font-heading); font-size: 25px; line-height: 1.15; }
.fd-admin-identity { display: flex; align-items: center; gap: 10px; }
.fd-admin-identity > .material-symbols-outlined { display: grid; place-items: center; width: 39px; height: 39px; color: var(--primary); background: var(--primary-container); border-radius: 50%; }
.fd-admin-identity small, .fd-admin-identity strong { display: block; text-align: right; }
.fd-admin-identity small { color: var(--muted-foreground); font-size: 9px; }
.fd-admin-identity strong { margin-top: 2px; font-size: 11px; }
.fd-admin-mobile-header, .fd-admin-mobile-nav { display: none; }
.fd-admin-main > section:first-of-type, .fd-admin-main > div:first-of-type, .fd-admin-main > a:first-of-type { margin-top: 28px; }
.fd-admin-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-top: 10px }
.fd-admin-kpis > a { display: flex; align-items: flex-start; gap: 13px; min-height: 128px; padding: 20px; color: var(--on-surface); background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-radius: 18px; box-shadow: 0 8px 24px color-mix(in srgb, var(--on-surface) 4%, transparent); text-decoration: none; transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease; }
.fd-admin-kpis > a:hover { border-color: var(--primary); box-shadow: 0 12px 28px color-mix(in srgb, var(--primary) 13%, transparent); transform: translateY(-2px); }
.fd-admin-kpis > a:focus-visible, .fd-admin-insights > a:focus-visible { outline: 3px solid color-mix(in srgb, var(--primary) 34%, transparent); outline-offset: 3px; }
.fd-admin-kpis > a > .material-symbols-outlined { display: grid; flex: 0 0 39px; place-items: center; width: 39px; height: 39px; color: var(--primary); background: var(--primary-container); border-radius: 12px; font-size: 21px; }
.fd-admin-kpis > a.is-warning > .material-symbols-outlined { color: #9a5700; background: #fff0d8; }
.fd-admin-kpis small, .fd-admin-kpis strong, .fd-admin-kpis em { display: block; }
.fd-admin-kpis small { color: var(--muted-foreground); font-size: 10px; font-weight: 700; }
.fd-admin-kpis strong { margin-top: 7px; font-family: var(--font-heading); font-size: 22px; line-height: 1.1; }
.fd-admin-kpis em { margin-top: 7px; color: var(--muted-foreground); font-size: 0.9em; font-style: normal; }
.fd-admin-kpis b { display: flex; align-items: center; gap: 4px; margin-top: 11px; color: var(--primary); font-size: 10px; }
.fd-admin-kpis b .material-symbols-outlined { font-size: 14px; transition: transform .18s ease; }
.fd-admin-kpis > a:hover b .material-symbols-outlined { transform: translateX(3px); }
.fd-admin-insights { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; overflow: hidden; margin-top: 14px; background: var(--outline-variant); border: 1px solid var(--outline-variant); border-radius: 16px; }
.fd-admin-insights > a { padding: 16px 18px; color: var(--on-surface); background: var(--surface-container-lowest); text-decoration: none; transition: background .18s ease; }
.fd-admin-insights > a:hover { background: var(--primary-container); }
.fd-admin-insights span, .fd-admin-insights strong, .fd-admin-insights small { display: block; }
.fd-admin-insights span { color: var(--primary); font-size: 9px; font-weight: 800; text-transform: uppercase; }
.fd-admin-insights strong { margin-top: 4px; font-size: 20px; }
.fd-admin-insights small { margin-top: 2px; color: var(--muted-foreground); font-size: 9px; }
.fd-admin-active-filter { display: flex; align-items: center; gap: 12px; margin-top: 28px; padding: 13px 16px; color: var(--on-primary-container); background: var(--primary-container); border: 1px solid color-mix(in srgb, var(--primary) 28%, transparent); border-radius: 14px; }
.fd-admin-active-filter > .material-symbols-outlined { color: var(--primary); }
.fd-admin-active-filter div { flex: 1; }
.fd-admin-active-filter small, .fd-admin-active-filter strong { display: block; }
.fd-admin-active-filter small { font-size: 9px; font-weight: 800; text-transform: uppercase; }
.fd-admin-active-filter strong { margin-top: 2px; font-size: 13px; }
.fd-admin-active-filter a { min-height: 38px; padding: 10px 12px; color: var(--primary); font-size: 10px; font-weight: 800; text-decoration: none; background: var(--surface-container-lowest); border-radius: 10px; }
.fd-admin-active-filter + .fd-admin-filter-panel { margin-top: 14px; }
@media (prefers-reduced-motion: reduce) {
    .fd-admin-kpis > a, .fd-admin-kpis b .material-symbols-outlined, .fd-admin-insights > a, .fd-admin-users-kpi-group a { transition: none; }
}
.fd-admin-grid-2 { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(310px, .65fr); gap: 18px; margin-top: 18px; }
.fd-admin-grid-2.is-forms { grid-template-columns: minmax(290px, .65fr) minmax(440px, 1.35fr); }
.fd-admin-panel { overflow: hidden; margin-top: 18px; background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-radius: 18px; box-shadow: 0 8px 24px color-mix(in srgb, var(--on-surface) 3%, transparent); }
.fd-admin-grid-2 > .fd-admin-panel { margin-top: 0; }
.fd-admin-panel > header { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 19px 20px; border-bottom: 1px solid var(--outline-variant); }
.fd-admin-panel > header h2 { margin: 4px 0 0; font-family: var(--font-heading); font-size: 16px; }
.fd-admin-panel > header p { max-width: 540px; margin: 0; color: var(--muted-foreground); font-size: 10px; }
.fd-admin-panel > header a { color: var(--primary); font-size: 10px; font-weight: 800; text-decoration: none; }
.fd-admin-table-wrap { overflow-x: auto; }
.fd-admin-table { width: 100%; border-collapse: collapse; font-size: 10px; }
.fd-admin-table th { padding: 11px 14px; color: var(--muted-foreground); background: var(--surface-container-low); font-size: 8px; letter-spacing: .06em; text-align: left; text-transform: uppercase; }
.fd-admin-table td { padding: 13px 14px; border-top: 1px solid var(--outline-variant); vertical-align: middle; }
.fd-admin-table td a { color: inherit; text-decoration: none; }
.fd-admin-table td a strong, .fd-admin-table td a small { display: block; }
.fd-admin-table td a small { margin-top: 3px; color: var(--muted-foreground); font-size: 8px; }
.fd-admin-network-profile, .fd-admin-plan-summary { display: grid; gap: 8px; min-width: 154px; }
.fd-admin-network-type, .fd-admin-plan-name { display: inline-flex; align-items: center; gap: 7px; width: max-content; min-height: 29px; padding: 0 9px; color: var(--primary); background: var(--primary-container); border-radius: 9px; }
.fd-admin-network-type .material-symbols-outlined, .fd-admin-plan-name .material-symbols-outlined { font-size: 16px; }
.fd-admin-network-type strong, .fd-admin-plan-name strong { font-size: 9px; line-height: 1; }
.fd-admin-network-metrics { display: flex; flex-wrap: wrap; gap: 5px; }
.fd-admin-network-metrics > span, .fd-admin-plan-value { display: grid; gap: 2px; padding-left: 8px; border-left: 2px solid var(--outline-variant); }
.fd-admin-network-metrics small, .fd-admin-plan-value small { color: var(--muted-foreground); font-size: 7px; line-height: 1.2; }
.fd-admin-network-metrics b, .fd-admin-plan-value b { color: var(--on-surface); font-size: 11px; line-height: 1.2; }
.fd-admin-plan-summary { min-width: 132px; }
.fd-admin-plan-value { width: max-content; border-left-color: var(--primary); }
.fd-admin-access-state { display: flex; align-items: center; gap: 8px; min-width: 150px; }
.fd-admin-access-state > .material-symbols-outlined { display: grid; flex: 0 0 30px; place-items: center; width: 30px; height: 30px; color: var(--muted-foreground); background: var(--surface-container); border-radius: 9px; font-size: 16px; }
.fd-admin-access-state strong, .fd-admin-access-state small { display: block; }
.fd-admin-access-state strong { font-size: 11px; line-height: 1.2; }
.fd-admin-access-state small { margin-top: 3px; color: var(--muted-foreground); font-size: 7px; line-height: 1.25; }
.fd-admin-access-state.is-ativo > .material-symbols-outlined { color: #006b5c; background: #d7f7ef; }
.fd-admin-access-state.is-pendente > .material-symbols-outlined { color: #7b5a00; background: #fff3c4; }
.fd-admin-access-state.is-expirado > .material-symbols-outlined, .fd-admin-access-state.is-bloqueado > .material-symbols-outlined { color: #a21b1b; background: #ffe7e7; }
.fd-admin-empty-cell { padding: 28px !important; color: var(--muted-foreground); text-align: center; }
.fd-admin-status { display: inline-flex; align-items: center; min-height: 22px; padding: 0 8px; margin-left: 6px; color: var(--muted-foreground); background: var(--surface-container); border-radius: 999px; font-size: 8px; font-weight: 850; text-transform: capitalize; }
.fd-admin-status.is-ativa, .fd-admin-status.is-trial { color: #006b5c; background: #d7f7ef; }
.fd-admin-status.is-inadimplente { color: #9b4300; background: #fff0dc; }
.fd-admin-status.is-cancelada, .fd-admin-status.is-expirada { color: #a21b1b; background: #ffe7e7; }
.fd-admin-event-list { display: grid; }
.fd-admin-event-list > a { display: flex; align-items: center; gap: 10px; min-height: 61px; padding: 11px 18px; color: inherit; border-top: 1px solid var(--outline-variant); text-decoration: none; }
.fd-admin-event-list > a:first-child { border-top: 0; }
.fd-admin-event-list > a > .material-symbols-outlined { color: var(--primary); font-size: 20px; }
.fd-admin-event-list strong, .fd-admin-event-list small { display: block; }
.fd-admin-event-list strong { font-size: 10px; }
.fd-admin-event-list small { margin-top: 2px; color: var(--muted-foreground); font-size: 8px; }
.fd-admin-event-list b { margin-left: auto; font-size: 10px; }
.fd-admin-empty { padding: 30px 20px; color: var(--muted-foreground); text-align: center; }
.fd-admin-empty .material-symbols-outlined { color: var(--primary); font-size: 30px; }
.fd-admin-empty strong, .fd-admin-empty p { display: block; margin: 6px 0 0; font-size: 10px; }
.fd-admin-empty p { font-size: 9px; }
.fd-admin-filter-panel { padding: 18px; }
.fd-admin-users-kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.fd-admin-users-kpi-group { overflow: hidden; background: var(--surface-container-lowest); border: 1px solid var(--outline-variant); border-radius: 16px; box-shadow: 0 8px 24px color-mix(in srgb, var(--on-surface) 3%, transparent); }
.fd-admin-users-kpi-group > header { display: flex; align-items: center; gap: 7px; padding: 12px 14px; color: var(--primary); border-bottom: 1px solid var(--outline-variant); }
.fd-admin-users-kpi-group > header .material-symbols-outlined { font-size: 18px; }
.fd-admin-users-kpi-group > header strong { font-size: 11px; }
.fd-admin-users-kpi-group > div { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.fd-admin-users-kpi-group a { min-width: 0; min-height: 74px; padding: 13px 11px; color: var(--on-surface); text-decoration: none; border-right: 1px solid var(--outline-variant); transition: background .18s ease, box-shadow .18s ease; }
.fd-admin-users-kpi-group a:last-child { border-right: 0; }
.fd-admin-users-kpi-group a:hover { background: var(--surface-container-low); }
.fd-admin-users-kpi-group a:focus-visible { position: relative; z-index: 1; outline: 3px solid color-mix(in srgb, var(--primary) 34%, transparent); outline-offset: -3px; }
.fd-admin-users-kpi-group a.is-active { background: var(--primary-container); box-shadow: inset 0 -3px 0 var(--primary); }
.fd-admin-users-kpi-group a.is-warning strong { color: #9a5700; }
.fd-admin-users-kpi-group small, .fd-admin-users-kpi-group a strong { display: block; }
.fd-admin-users-kpi-group small { min-height: 24px; overflow-wrap: anywhere; color: var(--muted-foreground); font-size: 9px; font-weight: 700; line-height: 1.3; }
.fd-admin-users-kpi-group a strong { margin-top: 4px; font-family: var(--font-heading); font-size: 20px; line-height: 1; }
.fd-admin-filters, .fd-admin-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.fd-admin-filters { grid-template-columns: minmax(210px, 2fr) repeat(2, minmax(140px, 1fr)) auto auto; align-items: end; }
.fd-admin-filters label, .fd-admin-form label { display: grid; gap: 6px; }
.fd-admin-filters label > span, .fd-admin-form label > span:first-child { color: var(--muted-foreground); font-size: 13px; font-weight: 750; }
.fd-admin-filters input, .fd-admin-filters select, .fd-admin-form input, .fd-admin-form select, .fd-admin-form textarea { width: 100%; min-height: 42px; padding: 9px 11px; color: var(--on-surface); background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 10px; font: inherit; font-size: 11px; outline: none; }
.fd-admin-filters .is-search > div { position: relative; }
.fd-admin-filters .is-search input { padding-right: 40px; }
.fd-admin-filters .is-search div > .material-symbols-outlined { position: absolute; top: 50%; right: 12px; color: var(--muted-foreground); transform: translateY(-50%); pointer-events: none; }
.fd-admin-form textarea { resize: vertical; }
.fd-admin-filters input:focus, .fd-admin-filters select:focus, .fd-admin-form input:focus, .fd-admin-form select:focus, .fd-admin-form textarea:focus { border-color: var(--primary); box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 12%, transparent); }
.fd-admin-filters button, .fd-admin-form button, .fd-admin-secondary-btn { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 42px; padding: 0 16px; color: var(--on-primary); background: var(--primary); border: 0; border-radius: 10px; font-size: 10px; font-weight: 850; text-decoration: none; cursor: pointer; }
.fd-admin-secondary-btn { color: var(--primary); background: var(--primary-container); }
.fd-admin-filters .material-symbols-outlined, .fd-admin-form button .material-symbols-outlined, .fd-admin-secondary-btn .material-symbols-outlined { font-size: 17px; }
.fd-admin-count { padding: 6px 9px; color: var(--on-surface) !important; background: var(--surface-container); border-radius: 999px; letter-spacing: 0 !important; text-transform: none !important; }
.fd-admin-pagination { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px; padding: 17px; border-top: 1px solid var(--outline-variant); }
.fd-admin-pagination a { display: inline-flex; align-items: center; justify-content: center; min-width: 32px; min-height: 32px; padding: 0 9px; color: var(--primary); background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 8px; font-size: 10px; font-weight: 800; text-decoration: none; }
.fd-admin-pagination a:hover { background: var(--primary-container); border-color: var(--primary); }
.fd-admin-pagination a.is-active { color: var(--on-primary); background: var(--primary); border-color: var(--primary); }
.fd-admin-pagination span { color: var(--muted-foreground); font-size: 9px; }
.fd-admin-icon-link { display: grid; place-items: center; width: 32px; height: 32px; color: var(--primary); background: var(--primary-container); border-radius: 9px; }
.fd-admin-icon-link .material-symbols-outlined { font-size: 18px; }
.fd-admin-back { display: inline-flex; align-items: center; gap: 6px; color: var(--primary); font-size: 10px; font-weight: 800; text-decoration: none; }
.fd-admin-back .material-symbols-outlined { font-size: 17px; }
.fd-admin-user-hero { display: flex; align-items: center; gap: 14px; padding: 20px; margin-top: 12px; background: linear-gradient(110deg, var(--primary-container), var(--surface-container-lowest)); border: 1px solid var(--outline-variant); border-radius: 18px; }
.fd-admin-user-avatar { display: grid; flex: 0 0 48px; place-items: center; width: 48px; height: 48px; color: var(--on-primary); background: var(--primary); border-radius: 15px; font-size: 18px; font-weight: 850; }
.fd-admin-user-hero > div:nth-child(2) span { color: var(--primary); font-size: 8px; font-weight: 850; text-transform: uppercase; }
.fd-admin-user-hero h2 { margin: 3px 0 0; font-family: var(--font-heading); font-size: 19px; }
.fd-admin-user-hero p { margin: 3px 0 0; color: var(--muted-foreground); font-size: 9px; }
.fd-admin-user-hero > .fd-admin-status { margin-left: auto; }
.fd-admin-form { display: grid; gap: 14px; padding: 20px; }
.fd-admin-form label > small, .fd-admin-new-price > p { color: var(--muted-foreground); font-size: 8px; line-height: 1.45; }
.fd-admin-form > button { justify-self: start; }
.fd-admin-check { display: flex !important; grid-column: auto !important; align-items: flex-start; gap: 10px !important; padding: 11px 12px; background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 10px; cursor: pointer; transition: background-color .2s ease, border-color .2s ease, box-shadow .2s ease; }
.fd-admin-check:hover { background: var(--primary-container); border-color: color-mix(in srgb, var(--primary) 45%, var(--outline-variant)); }
.fd-admin-check:has(input:checked) { background: color-mix(in srgb, var(--primary-container) 55%, var(--surface-container-lowest)); border-color: var(--primary); }
.fd-admin-check:has(input:focus-visible) { border-color: var(--primary); box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 16%, transparent); }
.fd-admin-check input { display: grid; flex: 0 0 20px; place-content: center; appearance: none; width: 20px; height: 20px; min-height: 20px; padding: 0; margin: 0; color: var(--on-primary); background: var(--surface-container-lowest); border: 2px solid var(--outline); border-radius: 6px; outline: none; cursor: pointer; transition: background-color .2s ease, border-color .2s ease, transform .15s ease; }
.fd-admin-check input::before { width: 10px; height: 8px; content: ""; background: currentColor; clip-path: polygon(14% 44%, 0 59%, 39% 100%, 100% 18%, 84% 3%, 38% 71%); transform: scale(0); transition: transform .15s ease; }
.fd-admin-check input:checked { background: var(--primary); border-color: var(--primary); }
.fd-admin-check input:checked::before { transform: scale(1); }
.fd-admin-check input:active { transform: scale(.92); }
.fd-admin-check input:disabled { cursor: not-allowed; opacity: .5; }
.fd-admin-check:has(input:disabled) { cursor: not-allowed; opacity: .7; }
.fd-admin-check strong, .fd-admin-check small { display: block; }
.fd-admin-check strong { font-size: 10px; }
.fd-admin-check small { margin-top: 2px; font-size: 8px; }
.fd-admin-payment-box { display: grid; gap: 11px; padding: 12px; background: color-mix(in srgb, var(--primary-container) 35%, var(--surface-container-lowest)); border: 1px dashed var(--primary); border-radius: 12px; }
.fd-admin-timeline { padding: 6px 20px 20px; }
.fd-admin-timeline article { display: flex; align-items: flex-start; gap: 12px; padding: 15px 0; border-bottom: 1px solid var(--outline-variant); }
.fd-admin-timeline article > .material-symbols-outlined { color: var(--primary); }
.fd-admin-timeline article div { flex: 1; }
.fd-admin-timeline strong, .fd-admin-timeline p, .fd-admin-timeline small { display: block; margin: 0; }
.fd-admin-timeline strong { font-size: 11px; }
.fd-admin-timeline p, .fd-admin-timeline small { margin-top: 3px; color: var(--muted-foreground); font-size: 9px; }
.fd-admin-timeline article > b { font-size: 10px; }
.fd-admin-plan-create > header { align-items: flex-end; }
.fd-admin-plan-form { grid-template-columns: repeat(4, minmax(0, 1fr)); align-items: end; }
.fd-admin-plan-form .is-wide { grid-column: span 2; }
.fd-admin-plan-list { display: grid; gap: 20px; margin-top: 20px; }
.fd-admin-plan-list > .fd-admin-panel { margin: 0; }
.fd-admin-plan-catalog { margin-top: 20px; }
.fd-admin-plan-identity { display: flex; align-items: center; gap: 10px; min-width: 220px; color: inherit; text-decoration: none; }
.fd-admin-plan-identity > .material-symbols-outlined { display: grid; flex: 0 0 34px; place-items: center; width: 34px; height: 34px; color: var(--primary); background: var(--primary-container); border-radius: 9px; font-size: 18px; }
.fd-admin-plan-identity strong, .fd-admin-plan-identity small, .fd-admin-plan-period strong, .fd-admin-plan-period small { display: block; }
.fd-admin-plan-identity small, .fd-admin-plan-period small { margin-top: 3px; color: var(--muted-foreground); font-size: 8px; line-height: 1.35; }
.fd-admin-plan-period strong { font-size: 10px; }
.fd-admin-plan-period { display: grid; justify-items: start; gap: 5px; }
.fd-admin-period-tag { display: inline-flex; align-items: center; min-height: 22px; padding: 0 8px; border-radius: 999px; font-size: 8px; font-weight: 850; white-space: nowrap; }
.fd-admin-period-tag.is-current { color: #006b5c; background: #d7f7ef; }
.fd-admin-period-tag.is-empty { color: var(--muted-foreground); background: var(--surface-container); }
.fd-admin-plan-card > header { background: color-mix(in srgb, var(--primary-container) 32%, var(--surface-container-lowest)); }
.fd-admin-plan-card > header p { margin-top: 5px; }
.fd-admin-plan-price { text-align: right; }
.fd-admin-plan-price small, .fd-admin-plan-price strong { display: block; }
.fd-admin-plan-price small { color: var(--muted-foreground); font-size: 8px; }
.fd-admin-plan-price strong { margin-top: 4px; color: var(--primary); font-size: 18px; }
.fd-admin-plan-columns { display: grid; grid-template-columns: 1.2fr .8fr; }
.fd-admin-plan-columns > form + form { border-left: 1px solid var(--outline-variant); }
.fd-admin-form h3, .fd-admin-price-history h3 { margin: 0; font-family: var(--font-heading); font-size: 13px; }
.fd-admin-new-price { background: var(--surface-container-low); }
.fd-admin-price-history { padding: 0 20px 20px; }
.fd-admin-price-history > h3 { padding: 17px 0 11px; border-top: 1px solid var(--outline-variant); }
.fd-admin-report-filter { padding: 18px; }
.fd-admin-report-filter .fd-admin-filters { grid-template-columns: repeat(2, minmax(160px, 1fr)) auto auto; }
.fd-admin-plan-breakdown, .fd-admin-month-list { padding: 9px 20px 18px; }
.fd-admin-plan-breakdown article { display: grid; grid-template-columns: 1fr auto; gap: 4px 12px; padding: 11px 0; border-bottom: 1px solid var(--outline-variant); }
.fd-admin-plan-breakdown strong, .fd-admin-plan-breakdown small { display: block; }
.fd-admin-plan-breakdown strong, .fd-admin-plan-breakdown b { font-size: 10px; }
.fd-admin-plan-breakdown small { margin-top: 2px; color: var(--muted-foreground); font-size: 8px; }
.fd-admin-plan-breakdown article > span { grid-column: 1 / -1; height: 5px; overflow: hidden; background: var(--surface-container); border-radius: 999px; }
.fd-admin-plan-breakdown article > span i { display: block; width: var(--valor); height: 100%; background: var(--primary); border-radius: inherit; }
.fd-admin-month-list article { display: grid; grid-template-columns: .7fr 1fr 1fr 1fr; gap: 8px; align-items: center; padding: 12px 0; border-bottom: 1px solid var(--outline-variant); font-size: 9px; }
.fd-admin-month-list article span { color: var(--muted-foreground); }
.fd-admin-month-list article b { text-align: right; }

@media (max-width: 1080px) {
    .fd-admin-kpis { grid-template-columns: repeat(2, 1fr); }
    .fd-admin-users-kpis { grid-template-columns: minmax(0, 1fr); }
    .fd-admin-plan-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .fd-admin-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 820px) {
    .fd-admin-sidebar { display: none; }
    .fd-admin-mobile-header { position: sticky; top: 0; z-index: 30; display: flex; align-items: center; justify-content: space-between; min-height: 62px; padding: 9px 15px; color: var(--on-primary); background: var(--primary); }
    .fd-admin-mobile-header .fd-admin-brand > .material-symbols-outlined { width: 34px; height: 34px; border-radius: 10px; font-size: 19px; }
    .fd-admin-mobile-header .fd-admin-brand strong { font-size: 14px; }
    .fd-admin-mobile-header > a:last-child { display: grid; place-items: center; width: 38px; height: 38px; color: var(--on-primary); text-decoration: none; }
    .fd-admin-main { padding: 0 15px 32px; margin-left: 0; }
    .fd-admin-page-head { min-height: 76px; }
    .fd-admin-page-head h1 { font-size: 20px; }
    .fd-admin-identity { display: none; }
    .fd-admin-mobile-nav { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 5px; padding: 7px; margin: 0 -15px 19px; overflow-x: auto; background: var(--surface-container-lowest); border-bottom: 1px solid var(--outline-variant); }
    .fd-admin-mobile-nav a { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; min-width: 70px; min-height: 50px; color: var(--muted-foreground); border-radius: 10px; font-size: 8px; font-weight: 750; text-decoration: none; }
    .fd-admin-mobile-nav a.is-active { color: var(--primary); background: var(--primary-container); }
    .fd-admin-mobile-nav .material-symbols-outlined { font-size: 20px; }
    .fd-admin-main > section:first-of-type, .fd-admin-main > div:first-of-type, .fd-admin-main > a:first-of-type { margin-top: 0; }
    .fd-admin-grid-2, .fd-admin-grid-2.is-forms, .fd-admin-plan-columns { grid-template-columns: minmax(0, 1fr); }
    .fd-admin-plan-columns > form + form { border-top: 1px solid var(--outline-variant); border-left: 0; }
    .fd-admin-insights { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
    .fd-admin-kpis { grid-template-columns: minmax(0, 1fr); gap: 10px; }
    .fd-admin-kpis > a { min-height: 105px; padding: 16px; }
    .fd-admin-kpis strong { font-size: 19px; }
    .fd-admin-insights { grid-template-columns: minmax(0, 1fr); }
    .fd-admin-insights > a { padding: 13px 15px; }
    .fd-admin-users-kpis { gap: 10px; }
    .fd-admin-users-kpi-group a { min-height: 70px; padding: 11px 9px; }
    .fd-admin-active-filter { align-items: flex-start; flex-wrap: wrap; }
    .fd-admin-active-filter a { width: 100%; text-align: center; }
    .fd-admin-panel > header { align-items: flex-start; padding: 16px; }
    .fd-admin-panel > header p { display: none; }
    .fd-admin-filters, .fd-admin-report-filter .fd-admin-filters, .fd-admin-form-grid, .fd-admin-plan-form { grid-template-columns: minmax(0, 1fr); }
    .fd-admin-plan-form .is-wide { grid-column: auto; }
    .fd-admin-filters button, .fd-admin-secondary-btn { width: 100%; }
    .fd-admin-form { padding: 16px; }
    .fd-admin-user-hero { align-items: flex-start; padding: 16px; }
    .fd-admin-user-hero > .fd-admin-status { margin-left: 0; }
    .fd-admin-user-hero p { line-height: 1.45; }
    .fd-admin-plan-card > header { flex-direction: column; }
    .fd-admin-plan-price { text-align: left; }
    .fd-admin-report-table thead, .fd-admin-users-table thead { display: none; }
    .fd-admin-report-table, .fd-admin-report-table tbody, .fd-admin-report-table tr, .fd-admin-report-table td,
    .fd-admin-users-table, .fd-admin-users-table tbody, .fd-admin-users-table tr, .fd-admin-users-table td { display: block; width: 100%; }
    .fd-admin-report-table tr, .fd-admin-users-table tr { padding: 10px 15px; border-top: 1px solid var(--outline-variant); }
    .fd-admin-report-table td, .fd-admin-users-table td { display: flex; align-items: center; justify-content: space-between; gap: 15px; padding: 5px 0; border: 0; text-align: right; }
    .fd-admin-report-table td::before, .fd-admin-users-table td::before { content: attr(data-label); color: var(--muted-foreground); font-size: 8px; font-weight: 800; text-transform: uppercase; }
    .fd-admin-report-table .fd-admin-empty-cell::before, .fd-admin-users-table .fd-admin-empty-cell::before, .fd-admin-users-table td:last-child::before { display: none; }
    .fd-admin-users-table td:last-child { justify-content: flex-end; }
    .fd-admin-users-table .fd-admin-network-profile, .fd-admin-users-table .fd-admin-plan-summary { justify-items: end; min-width: 0; }
    .fd-admin-users-table .fd-admin-network-type, .fd-admin-users-table .fd-admin-plan-name { width: max-content; }
    .fd-admin-users-table .fd-admin-network-metrics { justify-content: flex-end; }
    .fd-admin-users-table .fd-admin-network-metrics > span, .fd-admin-users-table .fd-admin-plan-value { padding-right: 7px; padding-left: 0; border-right: 2px solid var(--outline-variant); border-left: 0; }
    .fd-admin-users-table .fd-admin-plan-value { border-right-color: var(--primary); }
    .fd-admin-users-table .fd-admin-access-state { justify-content: flex-end; min-width: 0; }
    .fd-admin-users-table .fd-admin-access-state span:last-child { text-align: right; }
    .fd-admin-month-list article { grid-template-columns: 1fr 1fr; }
    .fd-admin-month-list article b { text-align: left; }
}
/* Saúde Familiar usa deliberadamente a gramática visual de Atividades. */
.fd-saude-page .fd-rotina-pessoa-avatar > span,.fd-saude-page .fd-rotina-pessoa-avatar > img{width:100%;height:100%;border-radius:50%}
.fd-saude-section{scroll-margin-top:24px}.fd-saude-section-button,.fd-saude-card-action,.fd-saude-treatment-actions button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:42px;padding:0 15px;color:var(--on-primary);background:var(--primary);border:0;border-radius:12px;font-size:12px;font-weight:800;cursor:pointer}.fd-saude-section-button .material-symbols-outlined,.fd-saude-card-action .material-symbols-outlined,.fd-saude-treatment-actions .material-symbols-outlined{font-size:18px}
.fd-saude-page .fd-rotina-card--rosa{--card-accent:#a84d78;--card-soft:#ffd8e9}.fd-saude-page .fd-rotina-card-action button{width:100%}
.fd-saude-profile-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}.fd-saude-profile-grid article{display:flex;align-items:flex-start;gap:11px;min-height:100px;padding:15px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:16px}.fd-saude-profile-grid>article>.material-symbols-outlined{display:grid;place-items:center;flex:0 0 39px;width:39px;height:39px;color:#197965;background:#c1f1e4;border-radius:12px}.fd-saude-profile-grid small,.fd-saude-profile-grid strong{display:block}.fd-saude-profile-grid small{color:var(--on-surface-variant);font-size:10px;font-weight:750;text-transform:uppercase;letter-spacing:.04em}.fd-saude-profile-grid strong{margin-top:5px;font-size:12px;line-height:1.45;overflow-wrap:anywhere}
.fd-saude-treatment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.fd-saude-treatment{display:grid;grid-template-columns:46px minmax(0,1fr);gap:12px;padding:16px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:17px}.fd-saude-treatment h3{margin:4px 0 2px;font-size:15px}.fd-saude-treatment p{margin:0;color:var(--on-surface-variant);font-size:11px}.fd-saude-treatment-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px;padding-top:11px;border-top:1px solid var(--outline-variant)}.fd-saude-treatment-actions form{display:flex;gap:6px}.fd-saude-treatment-actions .fd-form-select{min-width:112px;min-height:42px;padding:0 10px}.fd-saude-treatment-actions form button{width:42px;padding:0}
.fd-saude-timeline{display:grid;gap:0}.fd-saude-timeline article{display:grid;grid-template-columns:92px 38px minmax(0,1fr);gap:12px;position:relative;padding:11px 0}.fd-saude-timeline article:not(:last-child)::after{content:"";position:absolute;left:110px;top:48px;bottom:-11px;width:2px;background:var(--outline-variant)}.fd-saude-timeline time{padding-top:4px;color:var(--on-surface);font-size:11px;font-weight:800;text-align:right}.fd-saude-timeline time small,.fd-saude-timeline article div small{display:block;color:var(--on-surface-variant);font-size:10px}.fd-saude-timeline article>.material-symbols-outlined{display:grid;place-items:center;z-index:1;width:38px;height:38px;color:var(--primary);background:var(--primary-container);border-radius:50%}.fd-saude-timeline article div{padding:9px 12px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:13px}.fd-saude-timeline article div p{margin:6px 0 0;font-size:11px}
.fd-saude-page button:focus-visible{outline:3px solid color-mix(in srgb,var(--primary) 36%,transparent);outline-offset:2px}
@media(max-width:760px){.fd-saude-profile-grid,.fd-saude-treatment-grid{grid-template-columns:1fr}.fd-saude-section .fd-rotina-section-heading{align-items:flex-start}.fd-saude-section-button{min-height:38px;padding:0 11px;font-size:10px}.fd-saude-treatment-actions{flex-wrap:wrap}.fd-saude-treatment-actions form{flex:1}.fd-saude-treatment-actions .fd-form-select{flex:1}.fd-saude-timeline article{grid-template-columns:60px 34px minmax(0,1fr);gap:8px}.fd-saude-timeline article:not(:last-child)::after{left:76px}.fd-saude-timeline article>.material-symbols-outlined{width:34px;height:34px;font-size:18px}}

/* Vínculos adota o mesmo ritmo visual da tela Saúde Familiar/Pessoas. */
.fd-vinculos-page{width:min(1180px,calc(100% - 48px));margin:24px auto 72px}.fd-vinculos-page .fd-perfil-hero{padding:30px 34px;border-radius:24px}.fd-vinculos-page .fd-perfil-hero-resumo{flex-wrap:wrap}.fd-vinculos-hero-add{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;margin-left:8px;padding:0 16px;color:var(--on-primary);background:var(--primary);border:0;border-radius:13px;font-size:12px;font-weight:800;cursor:pointer}.fd-vinculos-hero-add .material-symbols-outlined{font-size:19px}.fd-vinculos-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:11px;margin:16px 0}.fd-vinculos-kpis article{display:flex;align-items:center;gap:11px;min-height:76px;padding:14px 16px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:17px}.fd-vinculos-kpis article>.material-symbols-outlined{display:grid;place-items:center;flex:0 0 42px;width:42px;height:42px;color:var(--on-primary);background:var(--primary);border-radius:13px}.fd-vinculos-kpis strong,.fd-vinculos-kpis small{display:block}.fd-vinculos-kpis strong{font-size:22px}.fd-vinculos-kpis small{margin-top:2px;color:var(--on-surface-variant);font-size:10px;line-height:1.2}.fd-vinculos-page .fd-vinculos-grid{display:block;margin-top:16px}.fd-vinculos-page .fd-perfil-col{display:grid;grid-template-columns:1fr;gap:16px}.fd-vinculos-page .fd-perfil-col:empty{display:none}.fd-vinculos-page .fd-perfil-card{margin:0;padding:24px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:21px;box-shadow:none}.fd-vinculos-page .fd-perfil-card-titulo{font:800 20px/1.2 var(--font-heading)}.fd-vinculos-page .fd-perfil-vinculo-lista{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.fd-vinculos-page .fd-perfil-vinculo-row{display:grid;grid-template-columns:54px minmax(0,1fr);align-items:start;gap:13px;margin:0;padding:16px;background:var(--surface-container-low);border:1px solid transparent;border-radius:17px}.fd-vinculos-page .fd-perfil-vinculo-row:hover{border-color:color-mix(in srgb,var(--primary) 48%,var(--outline-variant))}.fd-vinculos-page .fd-perfil-vinculo-avatar{width:54px;height:54px}.fd-vinculos-page .fd-perfil-vinculo-info{min-width:0}.fd-vinculos-page .fd-perfil-vinculo-acoes,.fd-vinculos-page .fd-perfil-vinculo-contato-linha{grid-column:1/-1}.fd-vinculos-page .fd-perfil-vinculo-acoes{display:flex;align-items:center;justify-content:flex-end;gap:7px;padding-top:10px;border-top:1px solid var(--outline-variant)}.fd-vinculos-page .fd-perfil-convites{grid-column:1/-1}.fd-vinculos-page .fd-vinculo-grupo-titulo{grid-column:1/-1;margin:12px 0 0}.fd-vinculos-abrir-saude{display:inline-flex;align-items:center;gap:5px;margin-right:auto;color:var(--primary);font-size:11px;font-weight:800;text-decoration:none}.fd-vinculos-abrir-saude .material-symbols-outlined{font-size:17px}
@media(max-width:1000px){.fd-vinculos-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.fd-vinculos-kpis{display:flex;overflow-x:auto;scroll-snap-type:x proximity;padding-bottom:7px}.fd-vinculos-kpis article{flex:0 0 180px;scroll-snap-align:start}.fd-vinculos-page .fd-perfil-vinculo-lista{grid-template-columns:1fr}}
@media(max-width:600px){.fd-vinculos-page{width:calc(100% - 20px);margin:14px auto 94px}.fd-vinculos-page .fd-perfil-hero{padding:20px;border-radius:20px}.fd-vinculos-page .fd-perfil-hero-resumo{width:100%}.fd-vinculos-hero-add{width:100%;margin:10px 0 0}.fd-vinculos-page .fd-perfil-card{padding:15px;border-radius:18px}}

/* Mantém contato/atalho e todos os botões do vínculo em uma única linha. */
.fd-vinculos-page .fd-perfil-vinculo-contato-linha {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 8px;
    min-width: 0;
    padding-top: 10px;
    border-top: 1px solid var(--outline-variant);
    overflow-x: auto;
}

.fd-vinculos-page .fd-perfil-vinculo-contato-linha .fd-perfil-vinculo-contato {
    flex: 0 1 auto;
    min-width: 0;
    white-space: nowrap;
}

.fd-vinculos-page .fd-perfil-vinculo-contato-linha .fd-perfil-vinculo-acoes {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    flex-wrap: nowrap;
    gap: 7px;
    margin-left: auto;
    padding: 0;
    border: 0;
}

.fd-vinculos-page .fd-perfil-vinculo-acoes form,
.fd-vinculos-page .fd-vinculos-abrir-saude {
    flex: 0 0 auto;
    margin-top: 0;
    margin-bottom: 0;
    white-space: nowrap;
}

.fd-vinculos-page .fd-vinculos-abrir-saude {
    margin-right: 0;
}

.fd-saude-tipos-clinicos{margin:14px 0 18px}.fd-saude-page .fd-rotina-empty .fd-saude-section-button{margin-top:14px;color:var(--on-primary);text-decoration:none}
.fd-receita-upload{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;padding:10px;background:var(--surface-container-low);border:1px solid var(--outline-variant);border-radius:13px}.fd-receita-upload .fd-file-upload-btn{display:inline-flex;align-items:center;gap:7px;min-height:42px;padding:0 15px;color:var(--on-primary);background:var(--primary);border-radius:10px}.fd-receita-upload .fd-file-upload-btn .material-symbols-outlined{font-size:19px}.fd-receita-upload .fd-file-upload-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fd-medicacao-horarios-field{margin-top:4px}.fd-medicacao-horarios-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:11px}.fd-medicacao-horarios-heading strong,.fd-medicacao-horarios-heading small{display:block}.fd-medicacao-horarios-heading strong{font-size:12px}.fd-medicacao-horarios-heading small{margin-top:3px;color:var(--on-surface-variant);font-size:10px}.fd-medicacao-horarios{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.fd-medicacao-horario{display:grid;grid-template-columns:32px minmax(0,1fr) 38px;align-items:center;gap:8px;padding:9px;background:var(--surface-container-low);border:1px solid var(--outline-variant);border-radius:13px}.fd-medicacao-horario-ordem{display:grid;place-items:center;width:32px;height:32px;color:var(--primary);background:var(--primary-container);border-radius:9px;font-size:10px;font-weight:850}.fd-medicacao-horario>div>small{display:block;margin-bottom:4px;color:var(--on-surface-variant);font-size:9px;font-weight:750}.fd-medicacao-horario .fd-time-picker{width:100%}.fd-medicacao-horario .fd-time-popover{right:auto;left:0}.fd-medicacao-horario button,.fd-medicacao-horario-adicionar{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--outline-variant);background:var(--surface-container-lowest);color:var(--primary);cursor:pointer}.fd-medicacao-horario>button{width:38px;height:38px;border-radius:10px}.fd-medicacao-horario-adicionar{flex:0 0 auto;gap:6px;min-height:40px;padding:0 13px;border-radius:11px;font-weight:800}.fd-medicacao-horario button .material-symbols-outlined,.fd-medicacao-horario-adicionar .material-symbols-outlined{font-size:18px}
@media(max-width:900px){.fd-medicacao-horarios{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.fd-receita-upload{grid-template-columns:1fr}.fd-receita-upload .fd-file-upload-btn{justify-content:center}.fd-medicacao-horarios-heading{align-items:flex-start;flex-direction:column}.fd-medicacao-horarios{grid-template-columns:1fr}.fd-medicacao-horario-adicionar{width:100%}}

/* Todos os horários, inclusive os adicionados em tela, ocupam a mesma grade. */
.fd-medicacao-horarios{align-items:stretch}.fd-medicacao-horario{min-height:82px}.fd-medicacao-horario>div{min-width:0}.fd-medicacao-horario>div>small{min-height:12px}.fd-medicacao-horario .fd-time-picker{width:100%}.fd-medicacao-horario .fd-time-picker>.fd-time-display{height:42px}.fd-medicacao-horario>button{align-self:end;height:42px}

/* O cadastro clínico unificado substitui os dois blocos legados de medicamentos. */
.fd-saude-page>#hoje,.fd-saude-page>#medicamentos{display:none}

/* A rede de apoio separa cuidado recebido de cuidado compartilhado. */
.fd-saude-overdue-alert{display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:10px;margin:10px 0 2px;padding:10px 11px;color:#8a1c1c;background:#fff0ed;border:1px solid #e7a29a;border-left:4px solid #ba1a1a;border-radius:12px}.fd-saude-overdue-alert>.material-symbols-outlined{display:grid;place-items:center;width:36px;height:36px;color:#fff;background:#ba1a1a;border-radius:10px;font-size:20px}.fd-saude-overdue-alert strong{display:block;font-size:11px}.fd-saude-overdue-alert p{margin:2px 0 0;font-size:10px}.fd-saude-overdue-alert a{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:34px;padding:0 10px;color:#fff;background:#ba1a1a;border-radius:9px;font-size:10px;font-weight:800;text-decoration:none}.fd-saude-overdue-alert a .material-symbols-outlined{font-size:16px}.fd-saude-overdue-alert a:focus-visible{outline:3px solid color-mix(in srgb,#ba1a1a 32%,transparent);outline-offset:2px}@media(max-width:560px){.fd-saude-overdue-alert{grid-template-columns:36px minmax(0,1fr)}.fd-saude-overdue-alert a{grid-column:1/-1;width:100%}}
.fd-saude-shared{margin-top:28px;scroll-margin-top:24px}.fd-saude-shared-manage{display:inline-flex;align-items:center;gap:5px;color:var(--primary);font-size:11px;font-weight:800;text-decoration:none}.fd-saude-shared-manage .material-symbols-outlined{font-size:17px}.fd-saude-shared-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.fd-saude-shared-columns>article{overflow:hidden;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:18px}.fd-saude-shared-columns>article>header{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:11px;padding:14px 15px;background:linear-gradient(110deg,var(--primary-container),var(--surface-container-lowest) 72%)}.fd-saude-shared-columns>article>header>.material-symbols-outlined{display:grid;place-items:center;width:42px;height:42px;color:var(--primary);background:var(--surface-container-lowest);border-radius:12px}.fd-saude-shared-columns h3{margin:0;font-size:14px}.fd-saude-shared-columns header p{margin:2px 0 0;color:var(--on-surface-variant);font-size:9px}.fd-saude-shared-columns header strong{display:grid;place-items:center;width:30px;height:30px;color:var(--on-primary);background:var(--primary);border-radius:50%;font-size:11px}.fd-saude-shared-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:11px}.fd-saude-shared-person{display:flex;align-items:center;gap:9px;min-width:0;padding:9px;background:var(--surface-container-low);border-radius:12px}.fd-saude-shared-avatar{flex:0 0 38px;width:38px;height:38px}.fd-saude-shared-avatar>img,.fd-saude-shared-avatar>span{width:100%;height:100%;border-radius:50%}.fd-saude-shared-person>span:last-child{min-width:0}.fd-saude-shared-person b,.fd-saude-shared-person small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-saude-shared-person b{font-size:11px}.fd-saude-shared-person small{margin-top:2px;color:var(--on-surface-variant);font-size:9px}.fd-saude-shared-empty{display:flex;align-items:center;justify-content:center;gap:7px;min-height:68px;padding:12px;color:var(--on-surface-variant)}.fd-saude-shared-empty .material-symbols-outlined{font-size:20px}.fd-saude-shared-empty p{margin:0;font-size:10px}@media(max-width:800px){.fd-saude-shared-columns{grid-template-columns:1fr}}@media(max-width:520px){.fd-saude-shared-list{grid-template-columns:1fr}.fd-saude-shared .fd-rotina-section-heading{align-items:flex-start}}

/* Doses são ocorrências curtas: informação e decisão cabem no mesmo cartão. */
.fd-saude-dose-observation{display:grid;grid-template-columns:18px minmax(0,1fr);gap:6px;margin-top:8px;padding:7px 8px;color:var(--error);background:color-mix(in srgb,var(--error-container) 52%,var(--surface-container-lowest));border-radius:9px}.fd-saude-dose-observation>.material-symbols-outlined{font-size:16px}.fd-saude-page .fd-saude-dose-observation p{display:block;overflow:visible;margin:0;color:inherit;font-size:9px;line-height:1.4;white-space:normal;overflow-wrap:anywhere;-webkit-line-clamp:unset}.fd-saude-dose-observation b{display:block;margin-bottom:1px;font-size:8px;text-transform:uppercase;letter-spacing:.04em}
.fd-saude-page .fd-saude-dose-ok{color:#fff;background:#b44f7c;border-color:#b44f7c}.fd-saude-page .fd-saude-dose-ok:hover{background:#963a66;border-color:#963a66}
.fd-saude-shared-columns>article:nth-child(2) .fd-saude-shared-list{grid-template-columns:1fr}.fd-saude-shared-columns>article:nth-child(2) .fd-saude-shared-person{width:100%;align-items:flex-start}.fd-saude-shared-columns>article:nth-child(2) .fd-saude-shared-person small{overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere;line-height:1.4}
.fd-saude-dose-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:10px}.fd-saude-dose{display:grid;grid-template-columns:58px minmax(0,1fr);gap:11px;min-height:142px;padding:14px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-left:4px solid #b44f7c;border-radius:16px}.fd-saude-dose-time{display:flex;flex-direction:column;align-items:center;justify-content:center;align-self:start;min-height:62px;color:#9c3f6a;background:#ffe0ed;border-radius:12px}.fd-saude-dose-time .material-symbols-outlined{font-size:17px}.fd-saude-dose-time time{margin-top:2px;font:850 14px var(--font-heading)}.fd-saude-dose-info{min-width:0}.fd-saude-dose-info>span{color:#a33f70;font-size:9px;font-weight:850;letter-spacing:.06em;text-transform:uppercase}.fd-saude-dose-info h3{margin:2px 0 2px;font-size:15px;line-height:1.25}.fd-saude-dose-info p{display:-webkit-box;overflow:hidden;margin:0;color:var(--on-surface-variant);font-size:10px;line-height:1.45;-webkit-box-orient:vertical;-webkit-line-clamp:2}.fd-saude-dose-info p strong{color:var(--on-surface);font-weight:750}.fd-saude-dose-info small{display:flex;align-items:center;gap:4px;margin-top:6px;color:var(--primary);font-size:9px;font-weight:750}.fd-saude-dose-info small .material-symbols-outlined{font-size:15px}.fd-saude-dose-actions{grid-column:1/-1;display:flex;align-items:center;justify-content:flex-end;gap:7px;padding-top:9px;border-top:1px solid var(--outline-variant)}.fd-saude-dose-actions form{display:flex;margin:0}.fd-saude-dose-actions button{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:34px;padding:0 11px;border-radius:10px;cursor:pointer;font:800 10px var(--font-body)}.fd-saude-dose-actions button .material-symbols-outlined{font-size:16px}.fd-saude-dose-ok{color:var(--on-primary);background:var(--primary);border:1px solid var(--primary)}.fd-saude-dose-missed{color:var(--error);background:var(--surface-container-lowest);border:1px solid color-mix(in srgb,var(--error) 38%,var(--outline-variant))}.fd-saude-dose-edit{color:var(--primary);background:var(--surface-container-lowest);border:1px solid var(--outline-variant)}.fd-saude-dose.is-medicado{border-left-color:var(--primary)}.fd-saude-dose.is-medicado .fd-saude-dose-time{color:var(--primary);background:var(--primary-container)}.fd-saude-dose.is-nao_medicado{border-left-color:var(--error)}.fd-saude-dose.is-nao_medicado .fd-saude-dose-time{color:var(--error);background:var(--error-container)}.fd-saude-dose.is-nao_medicado .fd-saude-dose-info small{color:var(--error)}.fd-saude-dose-actions button:focus-visible{outline:3px solid color-mix(in srgb,var(--primary) 30%,transparent);outline-offset:2px}@media(max-width:620px){.fd-saude-dose-grid{grid-template-columns:1fr}.fd-saude-dose{min-height:132px}.fd-saude-dose-actions{justify-content:stretch}.fd-saude-dose-actions form,.fd-saude-dose-actions button{flex:1}.fd-saude-dose-actions button{width:100%}}

/* Agenda e aprendizado precisam de espaço integral para leitura e manutenção. */
.fd-hoje-grid{grid-template-columns:minmax(0,1fr)}
.fd-hoje-agenda,.fd-hoje-cursos{width:100%}
.fd-hoje-course-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}
.fd-hoje-agenda-item{grid-template-columns:64px 48px minmax(0,1fr) auto;gap:14px;padding:15px}
.fd-hoje-agenda-item .fd-saude-overdue-alert{max-width:none}
.fd-hoje-medication-doses{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.fd-hoje-medication-dose{align-content:center}
@media(max-width:680px){.fd-hoje-agenda-item{grid-template-columns:52px 42px minmax(0,1fr)}.fd-hoje-agenda-item>.fd-hoje-clinical-actions{grid-column:1/-1}.fd-hoje-medication-doses{grid-template-columns:1fr}}

/* Na agenda do dia, a cor pertence ao card — o agrupador permanece neutro. */
.fd-hoje-agenda-grupo--atividades-do-dia{background:var(--surface-container-low);border-color:var(--outline-variant)}
.fd-hoje-agenda-item.is-medication{grid-template-columns:minmax(0,1fr)}
.fd-hoje-agenda-item.is-medication>.fd-hoje-medication-main{grid-column:1;grid-row:1;min-width:0}
.fd-hoje-agenda-tipo{display:inline-flex;align-items:center;gap:5px}
.fd-hoje-agenda-tipo>.material-symbols-outlined{font-size:17px;font-variation-settings:"FILL" 1}

/* Cada horário forma uma unidade alinhada: estado no topo, decisão na base. */
.fd-hoje-medication-doses{align-items:stretch;grid-auto-rows:1fr;gap:10px}
.fd-hoje-medication-dose{display:flex;align-items:center;align-content:flex-start;flex-wrap:wrap;gap:8px 10px;min-height:112px;padding:11px 12px}
.fd-hoje-medication-dose>time{flex:0 0 48px;font-size:12px;line-height:1.2}
.fd-hoje-medication-dose>span{flex:1 1 130px;min-width:0;line-height:1.35}
.fd-hoje-medication-dose>.fd-hoje-dose-observation{order:2;flex:1 0 100%;width:100%;margin:0!important}
.fd-hoje-medication-dose>div:not(.fd-hoje-dose-observation){order:3;display:flex;align-items:center;justify-content:flex-end;flex:1 0 100%;width:100%;margin-top:auto;padding-top:8px;border-top:1px solid color-mix(in srgb,#b44f7c 18%,var(--outline-variant))}
.fd-hoje-medication-dose>div:not(.fd-hoje-dose-observation) form{flex:0 0 auto}
.fd-hoje-medication-dose>div:not(.fd-hoje-dose-observation) button{min-width:96px;min-height:34px}
.fd-hoje-medication-dose .fd-saude-dose-ok{color:#fff;background:#b44f7c;border-color:#b44f7c}
.fd-hoje-medication-dose .fd-saude-dose-ok:hover{background:#963a66;border-color:#963a66}
.fd-hoje-medication-dose .fd-saude-dose-ok:focus-visible{outline-color:color-mix(in srgb,#b44f7c 38%,transparent)}
@media(max-width:520px){.fd-hoje-medication-dose>div:not(.fd-hoje-dose-observation){align-items:stretch}.fd-hoje-medication-dose>div:not(.fd-hoje-dose-observation) form,.fd-hoje-medication-dose>div:not(.fd-hoje-dose-observation) button{flex:1}.fd-hoje-medication-dose>div:not(.fd-hoje-dose-observation) button{width:100%;min-width:0}}

/* Prescrição no cabeçalho e ocorrência organizada em duas linhas. */
.fd-hoje-agenda-item.is-medication{gap:10px}
.fd-hoje-medication-summary{grid-column:1;grid-row:1;padding:0 1px}
.fd-hoje-medication-summary h3{margin:5px 0 0;font-family:var(--font-heading);font-size:14px}
.fd-hoje-medication-summary p{margin:4px 0 0;color:var(--on-surface-variant);font-size:11px;line-height:1.45}
.fd-hoje-medication-summary p strong{color:var(--on-surface)}
.fd-hoje-medication-main{grid-row:2!important}
.fd-hoje-medication-main>.fd-hoje-agenda-meta,.fd-hoje-medication-main>h3{display:none}
.fd-hoje-medication-main>.fd-hoje-medication-doses{margin-top:0}
.fd-hoje-medication-dose>time{order:0}
.fd-hoje-medication-dose>div:not(.fd-hoje-dose-observation){order:1;flex:1 1 auto;width:auto;margin:0;padding:0;border:0}
.fd-hoje-medication-dose>span{order:2;flex:1 0 100%;width:100%;padding-top:8px;border-top:1px solid color-mix(in srgb,#b44f7c 22%,var(--outline-variant))}
.fd-hoje-medication-dose>.fd-hoje-dose-observation{order:3;padding-top:0!important;background:transparent!important}
@media(max-width:520px){.fd-hoje-medication-dose>div:not(.fd-hoje-dose-observation){flex:1 1 auto;width:auto}.fd-hoje-medication-dose>div:not(.fd-hoje-dose-observation) form,.fd-hoje-medication-dose>div:not(.fd-hoje-dose-observation) button{flex:0 1 auto}.fd-hoje-medication-dose>div:not(.fd-hoje-dose-observation) button{width:auto}}
.fd-hoje-medication-dose{font-size:14px}
.fd-hoje-dose-observation{font-size:14px!important}
.fd-hoje-agenda-list>.fd-hoje-consulta-card{width:100%;margin:0}.fd-hoje-consulta-card .fd-rotina-card-top{display:flex;align-items:center;flex-wrap:wrap;gap:7px}.fd-hoje-consulta-card .fd-hoje-agenda-responsavel{margin-right:auto}.fd-hoje-consulta-card>.fd-rotina-card-action:empty{display:none}

/* Na tela Hoje, a preparação do exame herda a paleta violeta da atividade. */
.fd-hoje-page .fd-hoje-agenda-item.fd-rotina-card--violeta{
    --atividade-accent:var(--tipo-cor);
    --atividade-accent-soft:var(--tipo-fundo)
}

/* Serviço contratado: identidade à esquerda, ação compacta à direita. */
.fd-hoje-page .fd-hoje-agenda-item.is-servico-contratado{
    grid-template-columns:62px minmax(0,1fr) auto!important;
    align-items:center
}
.fd-hoje-page .fd-hoje-agenda-item.is-servico-contratado>time{grid-row:1}
.fd-hoje-page .fd-hoje-agenda-item.is-servico-contratado>div{grid-column:2;grid-row:1}
.fd-hoje-page .fd-hoje-agenda-item.is-servico-contratado>.fd-hoje-agenda-servico{
    grid-column:3;
    grid-row:1;
    justify-self:end;
    align-self:center;
    width:auto;
    min-height:38px
}
.fd-hoje-page .fd-hoje-agenda-item.is-servico-contratado>.fd-hoje-agenda-servico{
    color:var(--tipo-cor);
    background:var(--tipo-fundo);
    border-color:color-mix(in srgb,var(--tipo-cor) 55%,var(--outline-variant))
}
.fd-hoje-page .fd-hoje-agenda-item.is-servico-contratado>.fd-hoje-agenda-servico:hover{
    color:#fff;
    background:var(--tipo-cor);
    border-color:var(--tipo-cor)
}
.fd-hoje-page .fd-hoje-agenda-item.is-servico-contratado>.fd-hoje-agenda-servico:focus-visible{
    outline-color:color-mix(in srgb,var(--tipo-cor) 38%,transparent)
}
@media(max-width:680px){
    .fd-hoje-page .fd-hoje-agenda-item.is-servico-contratado{grid-template-columns:52px minmax(0,1fr)!important}
    .fd-hoje-page .fd-hoje-agenda-item.is-servico-contratado>.fd-hoje-agenda-servico{grid-column:2;grid-row:2;justify-self:start}
}

/* O responsável faz parte da identidade cromática de cada atividade. */
.fd-hoje-page .fd-hoje-agenda-responsavel{
    color:#fff;
    background:color-mix(in srgb,var(--tipo-cor) 82%,#111);
    border-color:color-mix(in srgb,var(--tipo-cor) 88%,#111);
    text-transform:uppercase;
    letter-spacing:.035em
}
.fd-hoje-page .fd-hoje-agenda-responsavel>.material-symbols-outlined{color:currentColor}
.fd-hoje-page .fd-hoje-agenda-item.is-servico-contratado .fd-hoje-agenda-responsavel{text-transform:uppercase}

/* Vínculos mantém no hero apenas a ação principal. */
.fd-vinculos-page .fd-vinculos-hero-action{
    min-width:0;
    padding:0;
    background:transparent;
    border:0;
    border-radius:0;
    backdrop-filter:none
}
.fd-vinculos-page .fd-vinculos-hero-action .fd-vinculos-hero-add{margin:0}
@media(max-width:600px){
    .fd-vinculos-page .fd-vinculos-hero-action{width:auto}
    .fd-vinculos-page .fd-vinculos-hero-action .fd-vinculos-hero-add{width:auto}
}

/* Títulos principais dos cabeçalhos usam preto, independentemente do tema. */
.fd-hoje-hero h1,
.fd-prest-hero h1,
.fd-recomp-hero h1{color:#111}

/* Hoje: execução em primeiro plano e medicação agrupada por ocorrência. */
.fd-hoje-page .fd-hoje-hero{min-height:0;padding:22px 26px;gap:18px}
.fd-hoje-page .fd-hoje-hero h1{font-size:clamp(26px,3vw,34px)}
.fd-hoje-page .fd-hoje-hero p{margin-top:6px}
.fd-hoje-page .fd-hoje-resumo-excecao{font-weight:700;color:var(--on-surface)}
.fd-hoje-medicacoes{margin-bottom:22px;scroll-margin-top:90px}
.fd-hoje-med-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.fd-hoje-med-toolbar h3{font-size:21px;margin:4px 0}
.fd-hoje-med-view{display:flex;gap:4px;padding:4px;border:1px solid var(--outline-variant);border-radius:12px;background:var(--surface-container-low)}
.fd-hoje-med-view button,.fd-hoje-dose-acoes button,.fd-hoje-dose-edicao summary{min-height:44px;padding:10px 14px;font:inherit;font-size:14px;cursor:pointer;border-radius:9px;border:1px solid var(--outline-variant);background:var(--surface-container-lowest);color:var(--on-surface)}
.fd-hoje-med-view button[aria-pressed=true],.fd-hoje-dose-acoes .fd-hoje-dose-administrar{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}
.fd-hoje-medicacoes :is(button,summary,textarea,select):focus-visible,.fd-hoje-concluidas>summary:focus-visible{outline:3px solid var(--primary);outline-offset:3px}
.fd-hoje-dose-acoes button:disabled{opacity:.65;cursor:wait}
.fd-hoje-dose-resumo{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 8px}
.fd-hoje-dose-resumo>span{padding:7px 11px;border-radius:8px;background:var(--surface-container-low);color:var(--on-surface);font-size:14px}
.fd-hoje-dose-proxima{font-size:14px;line-height:1.5;color:var(--on-surface-variant);margin:8px 0 16px}
.fd-hoje-dose-grupos{display:grid;gap:14px}
.fd-hoje-dose-grupo{min-width:0;border:1px solid var(--outline-variant);border-radius:14px;overflow:hidden;background:var(--surface-container-lowest)}
.fd-hoje-dose-grupo>header{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;padding:13px 16px;background:var(--primary-container);color:var(--on-primary-container)}
.fd-hoje-dose-grupo h4{margin:0;font-size:19px;overflow-wrap:anywhere}
.fd-hoje-dose-grupo h4 span{font-size:16px;font-weight:600}
.fd-hoje-dose-grupo>header>span{font-size:13px}
.fd-hoje-dose-linha{display:grid;grid-template-columns:minmax(0,1fr) minmax(190px,240px);align-items:center;gap:16px;padding:14px 16px;border-top:1px solid var(--outline-variant);scroll-margin-top:100px}
.fd-hoje-dose-identidade{min-width:0;overflow-wrap:anywhere}
.fd-hoje-dose-identidade h5{margin:0;font-size:16px;line-height:1.4}
.fd-hoje-dose-identidade p{margin:4px 0;font-size:14px;line-height:1.5}
.fd-hoje-dose-identidade>small{display:block;margin-top:6px;font-size:13px;color:var(--on-surface-variant)}
.fd-hoje-dose-situacao{display:inline-block;margin-top:6px;padding:4px 8px;border:1px solid var(--outline-variant);border-radius:6px;font-size:13px;font-weight:650;color:var(--on-surface)}
.fd-hoje-dose-linha.is-administradas .fd-hoje-dose-situacao{color:#075a43;background:#d5f6e8;border-color:#8dceba}
.fd-hoje-dose-linha.is-nao_administradas .fd-hoje-dose-situacao{color:#87381b;background:#ffeadc;border-color:#e8b39a}
.fd-hoje-dose-acoes{display:grid;gap:6px;min-width:0}
.fd-hoje-dose-acoes button{width:100%}
.fd-hoje-dose-edicao summary{text-align:center;list-style:revert}
.fd-hoje-dose-edicao[open] summary{margin-bottom:8px}
.fd-hoje-dose-edicao form{display:grid;gap:7px}
.fd-hoje-dose-edicao label{font-size:14px;font-weight:600}
.fd-hoje-dose-edicao textarea,.fd-hoje-dose-edicao select{width:100%;box-sizing:border-box;min-height:44px;padding:8px;font:inherit;font-size:16px;color:var(--on-surface);background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:8px}
.fd-hoje-dose-edicao small{font-size:12px;color:var(--on-surface-variant)}
.fd-hoje-concluidas{margin-top:12px;border:1px solid var(--outline-variant);border-radius:12px;padding:0 12px;background:var(--surface-container-lowest)}
.fd-hoje-concluidas>summary{cursor:pointer;min-height:48px;align-content:center;padding:10px 2px;font-size:15px;font-weight:650;color:var(--on-surface)}
.fd-hoje-concluidas[open]{padding-bottom:12px}
.fd-hoje-feedback{position:fixed!important;bottom:88px;right:20px;z-index:1200;max-width:min(460px,calc(100vw - 40px));box-shadow:0 6px 25px #0003;display:flex;gap:12px;align-items:center}
.fd-hoje-feedback button{min-height:44px;border:1px solid currentColor;border-radius:8px;padding:8px;background:transparent;color:inherit;cursor:pointer}
@media(max-width:600px){
 .fd-hoje-page .fd-hoje-hero{padding:18px}
 .fd-hoje-dose-linha{grid-template-columns:minmax(0,1fr);gap:10px;padding:12px}
 .fd-hoje-dose-acoes{grid-template-columns:1fr}
 .fd-hoje-med-view{width:100%}
 .fd-hoje-med-view button{flex:1;padding:10px 8px}
 .fd-hoje-dose-grupo>header{padding:12px}
 .fd-hoje-feedback{right:12px;max-width:calc(100vw - 24px)}
}
