/* munivia.css, design system Munivia 1.1 (06/10/2026)
 * tokens.css (cores, papéis, temas claro e escuro, cores de cada prefeitura, tipo, espaço, raio, sombra, movimento) + componentes.css.
 * No sistema, carregue antes fontes/fontes.css. Gerado por ds/gera_ds.py: não edite este arquivo à mão. */

/* tokens.css · Munivia · versão 2.0 (06/10/2026)
   Fonte única da verdade da marca no sistema, na landing page e nos documentos.
   Nas telas, use os PAPÉIS (--mv-fundo, --mv-texto, --mv-primaria...). As cores da marca e as escalas
   servem para montar papéis novos, nunca direto no componente.
   Tema: claro por padrão. data-tema="escuro" em qualquer elemento troca aquele trecho; data-tema="auto" segue o aparelho.
   Prefeitura: data-municipio="<nome>" troca as nove cores do município (ação, foco, menu ativo, portal). */


:root {
  /* cores da marca */
  --mv-asfalto: #121315;
  --mv-cal: #F4F1EA;
  --mv-tacha: #E9A23B;
  --mv-placa: #1C2E5C;
  --mv-grafite: #25272C;
  --mv-concreto: #D9D4C9;
  --mv-nevoa: #8A8E96;
  --mv-siga: #2E8A57;
  --mv-pare: #C8432F;
  --mv-atencao: var(--mv-tacha);

  /* escalas tonais */
  --mv-neutro-0: #FFFFFF;
  --mv-neutro-25: #FAF8F4;
  --mv-neutro-50: #F4F1EA;
  --mv-neutro-100: #E9E5DC;
  --mv-neutro-200: #D9D4C9;
  --mv-neutro-300: #BAB6AE;
  --mv-neutro-400: #9B9A97;
  --mv-neutro-500: #8A8E96;
  --mv-neutro-600: #62666E;
  --mv-neutro-700: #41444B;
  --mv-neutro-800: #25272C;
  --mv-neutro-850: #1B1C20;
  --mv-neutro-900: #121315;
  --mv-neutro-950: #0A0B0C;
  --mv-tacha-50: #FDF6E9;
  --mv-tacha-100: #FBE9C8;
  --mv-tacha-200: #F6D49A;
  --mv-tacha-300: #F1BE6A;
  --mv-tacha-400: #EDAF50;
  --mv-tacha-500: #E9A23B;
  --mv-tacha-600: #C7862B;
  --mv-tacha-700: #93601F;
  --mv-tacha-800: #6F4A19;
  --mv-tacha-900: #45300F;
  --mv-placa-50: #EEF1F7;
  --mv-placa-100: #D7DDEB;
  --mv-placa-200: #AEBAD5;
  --mv-placa-300: #8395BD;
  --mv-placa-400: #5A71A3;
  --mv-placa-500: #3B5487;
  --mv-placa-600: #2A4071;
  --mv-placa-700: #1C2E5C;
  --mv-placa-800: #152349;
  --mv-placa-900: #0D1630;
  --mv-siga-50: #E9F4EE;
  --mv-siga-300: #6DBF91;
  --mv-siga-500: #2E8A57;
  --mv-siga-700: #1F6640;
  --mv-siga-900: #123D27;
  --mv-pare-50: #FBECE9;
  --mv-pare-300: #EC8B7C;
  --mv-pare-500: #C8432F;
  --mv-pare-700: #9B3123;
  --mv-pare-900: #581B13;

  /* papéis, tema claro */
  --mv-fundo: #FAF8F4;
  --mv-superficie: #FFFFFF;
  --mv-superficie-2: #F4F1EA;
  --mv-borda: #E2DED5;
  --mv-borda-forte: #8A8E96;
  --mv-texto: #121315;
  --mv-texto-2: #41444B;
  --mv-texto-3: #62666E;
  --mv-primaria: #1C2E5C;
  --mv-primaria-hover: #152349;
  --mv-primaria-press: #0D1630;
  --mv-sobre-primaria: #F4F1EA;
  --mv-destaque: #E9A23B;
  --mv-sobre-destaque: #121315;
  --mv-link: #2A4071;
  --mv-foco: #1C2E5C;
  --mv-selecao: #D7DDEB;
  --mv-sucesso: #1F6640;
  --mv-sucesso-fundo: #E9F4EE;
  --mv-aviso: #93601F;
  --mv-aviso-fundo: #FDF6E9;
  --mv-erro: #9B3123;
  --mv-erro-fundo: #FBECE9;
  --mv-info: #2A4071;
  --mv-info-fundo: #EEF1F7;
  --mv-sucesso-borda: #A7D3B9;
  --mv-aviso-borda: #EFD29C;
  --mv-erro-borda: #EBC0B8;
  --mv-info-borda: #C2CCE3;
  --mv-nav-fundo: #F4F1EA;
  --mv-nav-texto: #121315;
  --mv-nav-texto-2: #41444B;
  --mv-nav-ativo: #FFFFFF;
  --mv-nav-linha: #E2DED5;

  /* tema do município (padrão: Munivia). A instalação troca só estes nove valores */
  --mv-mun-primaria: #1C2E5C;
  --mv-mun-primaria-forte: #152349;
  --mv-mun-primaria-clara: #EEF1F7;
  --mv-mun-sobre-primaria: #F4F1EA;
  --mv-mun-acento: #E9A23B;
  --mv-mun-acento-texto: #93601F;
  --mv-mun-primaria-escuro: #E9A23B;
  --mv-mun-primaria-escuro-forte: #F1BE6A;
  --mv-mun-sobre-primaria-escuro: #121315;

  /* tipografia: display em Archivo expandida (125%), texto em Public Sans, dados em IBM Plex Mono */
  --mv-familia-display: 'Archivo', 'Public Sans', system-ui, sans-serif;
  --mv-familia-texto: 'Public Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --mv-familia-mono: 'IBM Plex Mono', ui-monospace, 'SFMono-Regular', Menlo, monospace;
  --mv-tipo-display-1: 800 expanded 72px/76px var(--mv-familia-display);
  --mv-tipo-display-2: 800 expanded 56px/60px var(--mv-familia-display);
  --mv-tipo-titulo-1: 700 expanded 40px/46px var(--mv-familia-display);
  --mv-tipo-titulo-2: 700 normal 28px/36px var(--mv-familia-texto);
  --mv-tipo-titulo-3: 700 normal 22px/30px var(--mv-familia-texto);
  --mv-tipo-titulo-4: 600 normal 18px/26px var(--mv-familia-texto);
  --mv-tipo-corpo-g: 400 normal 18px/28px var(--mv-familia-texto);
  --mv-tipo-corpo: 400 normal 16px/24px var(--mv-familia-texto);
  --mv-tipo-corpo-p: 400 normal 14px/20px var(--mv-familia-texto);
  --mv-tipo-legenda: 500 normal 12px/16px var(--mv-familia-texto);
  --mv-tipo-rotulo: 500 normal 12px/16px var(--mv-familia-mono);
  --mv-tipo-numero: 700 expanded 32px/36px var(--mv-familia-display);
  --mv-rotulo-espaco: .08em;

  /* espaço (base 4) */
  --mv-espaco-0: 0px;
  --mv-espaco-1: 2px;
  --mv-espaco-2: 4px;
  --mv-espaco-3: 8px;
  --mv-espaco-4: 12px;
  --mv-espaco-5: 16px;
  --mv-espaco-6: 20px;
  --mv-espaco-7: 24px;
  --mv-espaco-8: 32px;
  --mv-espaco-9: 40px;
  --mv-espaco-10: 48px;
  --mv-espaco-11: 64px;
  --mv-espaco-12: 80px;
  --mv-espaco-13: 96px;
  --mv-espaco-14: 128px;

  /* raio, sombra, movimento, camadas */
  --mv-raio-0: 0;
  --mv-raio-1: 2px;
  --mv-raio-2: 4px;
  --mv-raio-3: 8px;
  --mv-raio-redondo: 999px;
  --mv-sombra-0: none;
  --mv-sombra-1: 0 1px 2px rgba(18,19,21,.08);
  --mv-sombra-2: 0 4px 12px rgba(18,19,21,.10);
  --mv-sombra-3: 0 16px 40px rgba(18,19,21,.18);
  --mv-duracao-rapido: 120ms;
  --mv-duracao-medio: 200ms;
  --mv-duracao-lento: 320ms;
  --mv-curva-saida: cubic-bezier(.2,.8,.2,1);
  --mv-curva-entrada: cubic-bezier(.4,0,1,1);
  --mv-curva-padrao: cubic-bezier(.4,0,.2,1);
  --mv-camada-menu: 100;
  --mv-camada-fixo: 200;
  --mv-camada-veu: 300;
  --mv-camada-modal: 400;
  --mv-camada-aviso: 500;
  --mv-largura-site: 1280px;
  --mv-largura-menu: 256px;
  color-scheme: light;
}

/* apelidos de ação: resolvidos em cada escopo, para que tema e município possam mudar em qualquer elemento */
:root, [data-tema], [data-municipio] {
  --mv-acao: var(--mv-mun-primaria); --mv-acao-hover: var(--mv-mun-primaria-forte); --mv-acao-press: var(--mv-mun-primaria-forte);
  --mv-sobre-acao: var(--mv-mun-sobre-primaria); --mv-acao-clara: var(--mv-mun-primaria-clara);
  --mv-link: var(--mv-mun-primaria); --mv-foco: var(--mv-mun-primaria); --mv-marca-ativa: var(--mv-mun-acento);
  --mv-foco-anel: 0 0 0 2px var(--mv-fundo), 0 0 0 4px var(--mv-foco);
}

/* tema claro forçado num trecho (o claro já é o padrão) */
[data-tema="claro"] {
  --mv-fundo: #FAF8F4;
  --mv-superficie: #FFFFFF;
  --mv-superficie-2: #F4F1EA;
  --mv-borda: #E2DED5;
  --mv-borda-forte: #8A8E96;
  --mv-texto: #121315;
  --mv-texto-2: #41444B;
  --mv-texto-3: #62666E;
  --mv-primaria: #1C2E5C;
  --mv-primaria-hover: #152349;
  --mv-primaria-press: #0D1630;
  --mv-sobre-primaria: #F4F1EA;
  --mv-destaque: #E9A23B;
  --mv-sobre-destaque: #121315;
  --mv-link: #2A4071;
  --mv-foco: #1C2E5C;
  --mv-selecao: #D7DDEB;
  --mv-sucesso: #1F6640;
  --mv-sucesso-fundo: #E9F4EE;
  --mv-aviso: #93601F;
  --mv-aviso-fundo: #FDF6E9;
  --mv-erro: #9B3123;
  --mv-erro-fundo: #FBECE9;
  --mv-info: #2A4071;
  --mv-info-fundo: #EEF1F7;
  --mv-sucesso-borda: #A7D3B9;
  --mv-aviso-borda: #EFD29C;
  --mv-erro-borda: #EBC0B8;
  --mv-info-borda: #C2CCE3;
  --mv-nav-fundo: #F4F1EA;
  --mv-nav-texto: #121315;
  --mv-nav-texto-2: #41444B;
  --mv-nav-ativo: #FFFFFF;
  --mv-nav-linha: #E2DED5;
  --mv-acao: var(--mv-mun-primaria); --mv-acao-hover: var(--mv-mun-primaria-forte); --mv-acao-press: var(--mv-mun-primaria-forte);
  --mv-sobre-acao: var(--mv-mun-sobre-primaria); --mv-acao-clara: var(--mv-mun-primaria-clara);
  --mv-link: var(--mv-mun-primaria); --mv-foco: var(--mv-mun-primaria); --mv-marca-ativa: var(--mv-mun-acento);
  --mv-foco-anel: 0 0 0 2px var(--mv-fundo), 0 0 0 4px var(--mv-foco);
  color-scheme: light;
}

/* tema escuro: em qualquer elemento, com o atributo; ponha data-municipio no MESMO elemento */
[data-tema="escuro"] {
  --mv-fundo: #121315;
  --mv-superficie: #1B1C20;
  --mv-superficie-2: #25272C;
  --mv-borda: #2E3036;
  --mv-borda-forte: #6E727A;
  --mv-texto: #F4F1EA;
  --mv-texto-2: #BAB6AE;
  --mv-texto-3: #8A8E96;
  --mv-primaria: #E9A23B;
  --mv-primaria-hover: #F1BE6A;
  --mv-primaria-press: #C7862B;
  --mv-sobre-primaria: #121315;
  --mv-destaque: #E9A23B;
  --mv-sobre-destaque: #121315;
  --mv-link: #F1BE6A;
  --mv-foco: #E9A23B;
  --mv-selecao: #2A4071;
  --mv-sucesso: #6DBF91;
  --mv-sucesso-fundo: #123D27;
  --mv-aviso: #F1BE6A;
  --mv-aviso-fundo: #45300F;
  --mv-erro: #EC8B7C;
  --mv-erro-fundo: #581B13;
  --mv-info: #8395BD;
  --mv-info-fundo: #152349;
  --mv-sucesso-borda: #2E6B4A;
  --mv-aviso-borda: #6F4A19;
  --mv-erro-borda: #7A2A1F;
  --mv-info-borda: #2A4071;
  --mv-nav-fundo: #0E0F11;
  --mv-nav-texto: #F4F1EA;
  --mv-nav-texto-2: #BAB6AE;
  --mv-nav-ativo: #25272C;
  --mv-nav-linha: #2E3036;
  --mv-acao: var(--mv-mun-primaria-escuro); --mv-acao-hover: var(--mv-mun-primaria-escuro-forte); --mv-acao-press: var(--mv-mun-primaria-escuro-forte);
  --mv-sobre-acao: var(--mv-mun-sobre-primaria-escuro); --mv-acao-clara: color-mix(in srgb, var(--mv-acao) 16%, var(--mv-superficie));
  --mv-link: var(--mv-mun-primaria-escuro); --mv-foco: var(--mv-mun-primaria-escuro); --mv-marca-ativa: var(--mv-mun-acento);
  --mv-foco-anel: 0 0 0 2px var(--mv-fundo), 0 0 0 4px var(--mv-foco);
  color-scheme: dark;
}

/* tema automático (opcional): segue o aparelho só onde data-tema="auto" */
@media (prefers-color-scheme: dark) {
  [data-tema="auto"] {
    --mv-fundo: #121315;
    --mv-superficie: #1B1C20;
    --mv-superficie-2: #25272C;
    --mv-borda: #2E3036;
    --mv-borda-forte: #6E727A;
    --mv-texto: #F4F1EA;
    --mv-texto-2: #BAB6AE;
    --mv-texto-3: #8A8E96;
    --mv-primaria: #E9A23B;
    --mv-primaria-hover: #F1BE6A;
    --mv-primaria-press: #C7862B;
    --mv-sobre-primaria: #121315;
    --mv-destaque: #E9A23B;
    --mv-sobre-destaque: #121315;
    --mv-link: #F1BE6A;
    --mv-foco: #E9A23B;
    --mv-selecao: #2A4071;
    --mv-sucesso: #6DBF91;
    --mv-sucesso-fundo: #123D27;
    --mv-aviso: #F1BE6A;
    --mv-aviso-fundo: #45300F;
    --mv-erro: #EC8B7C;
    --mv-erro-fundo: #581B13;
    --mv-info: #8395BD;
    --mv-info-fundo: #152349;
    --mv-sucesso-borda: #2E6B4A;
    --mv-aviso-borda: #6F4A19;
    --mv-erro-borda: #7A2A1F;
    --mv-info-borda: #2A4071;
    --mv-nav-fundo: #0E0F11;
    --mv-nav-texto: #F4F1EA;
    --mv-nav-texto-2: #BAB6AE;
    --mv-nav-ativo: #25272C;
    --mv-nav-linha: #2E3036;
    --mv-acao: var(--mv-mun-primaria-escuro); --mv-acao-hover: var(--mv-mun-primaria-escuro-forte); --mv-acao-press: var(--mv-mun-primaria-escuro-forte);
    --mv-sobre-acao: var(--mv-mun-sobre-primaria-escuro); --mv-acao-clara: color-mix(in srgb, var(--mv-acao) 16%, var(--mv-superficie));
    --mv-link: var(--mv-mun-primaria-escuro); --mv-foco: var(--mv-mun-primaria-escuro); --mv-marca-ativa: var(--mv-mun-acento);
    --mv-foco-anel: 0 0 0 2px var(--mv-fundo), 0 0 0 4px var(--mv-foco);
    color-scheme: dark;
  }
}

/* tema de prefeitura: ibirite */
[data-municipio="ibirite"] {
  --mv-mun-primaria: #1D2C96;
  --mv-mun-primaria-forte: #141F6E;
  --mv-mun-primaria-clara: #E9ECFB;
  --mv-mun-sobre-primaria: #FFFFFF;
  --mv-mun-acento: #F0B400;
  --mv-mun-acento-texto: #7A5300;
  --mv-mun-primaria-escuro: #93A3F5;
  --mv-mun-primaria-escuro-forte: #B6C1F8;
  --mv-mun-sobre-primaria-escuro: #121315;
}

/* tema de prefeitura: verde */
[data-municipio="verde"] {
  --mv-mun-primaria: #1F6640;
  --mv-mun-primaria-forte: #164A2E;
  --mv-mun-primaria-clara: #E9F4EE;
  --mv-mun-sobre-primaria: #FFFFFF;
  --mv-mun-acento: #E9A23B;
  --mv-mun-acento-texto: #93601F;
  --mv-mun-primaria-escuro: #6DBF91;
  --mv-mun-primaria-escuro-forte: #93D1AE;
  --mv-mun-sobre-primaria-escuro: #121315;
}

/* tema de prefeitura: vinho */
[data-municipio="vinho"] {
  --mv-mun-primaria: #7A1F33;
  --mv-mun-primaria-forte: #5C1626;
  --mv-mun-primaria-clara: #F8EAED;
  --mv-mun-sobre-primaria: #FFFFFF;
  --mv-mun-acento: #C9A227;
  --mv-mun-acento-texto: #7A5B0E;
  --mv-mun-primaria-escuro: #E58A9B;
  --mv-mun-primaria-escuro-forte: #EDAAB6;
  --mv-mun-sobre-primaria-escuro: #121315;
}

/* pontos de quebra (use nas media queries): p 480px, m 768px, g 1024px, gg 1280px, xg 1440px */

/* base mínima */
body { margin: 0; background: var(--mv-fundo); color: var(--mv-texto); font: var(--mv-tipo-corpo); -webkit-font-smoothing: antialiased; }
:focus-visible { outline: 2px solid var(--mv-foco); outline-offset: 2px; }
::selection { background: var(--mv-selecao); }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
}

/* componentes.css · Design system Munivia 1.1 (06/10/2026)
 *
 * Componentes do painel do servidor, dos subsistemas do ERP e do portal do cidadão. Desenhados a partir das telas
 * que já existem no portal de Ibirité (homologação) e redesenhados na marca Munivia: tons claros por padrão, tema
 * escuro por atributo, e as cores de ação de cada prefeitura por data-municipio. Só papéis do tokens.css: nenhuma
 * cor, raio ou tamanho solto.
 *
 * Regras herdadas do portal:
 *  · a tela funciona sem JavaScript; estado vem do HTML (aria-current, aria-pressed, aria-selected, aria-invalid,
 *    aria-busy, :checked, disabled), nunca de classe posta por script;
 *  · situação sempre com palavra, nunca só com cor;
 *  · foco sempre visível; alvo de toque de 44 px em tela de toque;
 *  · grade com piso que cede: minmax(min(NNNpx, 100%), 1fr).
 */

/* ── base ───────────────────────────────────────────────────────────────────────────────────── */
.mv { font: 400 15px/1.55 var(--mv-familia-texto); color: var(--mv-texto); background: var(--mv-fundo);
      -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
.mv *, .mv *::before, .mv *::after { box-sizing: border-box; }
/* :where() zera a especificidade: a regra geral nunca vence a cor de um componente */
:where(.mv) :focus-visible { outline: 2px solid var(--mv-foco); outline-offset: 2px; }
:where(.mv) a { color: var(--mv-link); text-underline-offset: .18em; }
:where(.mv) a:hover { text-decoration-thickness: 2px; }
:where(.mv) ::selection { background: var(--mv-acao-clara); }
.mv-num { font-variant-numeric: tabular-nums; }
.mv-cod { font-family: var(--mv-familia-mono); font-size: .92em; letter-spacing: -.01em; }
.mv-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
.mv-icone { width: 18px; height: 18px; flex: none; stroke: currentColor; fill: none; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.mv-icone--16 { width: 16px; height: 16px; }
.mv-icone--20 { width: 20px; height: 20px; }
.mv-icone--24 { width: 24px; height: 24px; }
.mv-h1 { margin: 0; font: 700 28px/1.15 var(--mv-familia-display); font-stretch: 125%; letter-spacing: -.005em; text-wrap: balance; }
.mv-h2 { margin: 0; font: 700 17px/1.3 var(--mv-familia-texto); }
.mv-h3 { margin: 0; font: 700 15px/1.35 var(--mv-familia-texto); }
.mv-texto-2 { color: var(--mv-texto-2); }
.mv-texto-3 { color: var(--mv-texto-3); }
.mv-legenda { font-size: 12px; line-height: 1.45; color: var(--mv-texto-2); }
.mv-pilha { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.mv-linha { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.mv-grade-2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr)); gap: 20px; }
.mv-grade-3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); gap: 20px; }

/* painel: a superfície que agrupa uma área da tela; borda fina, sem sombra */
.mv-painel { display: flex; flex-direction: column; gap: 16px; min-width: 0; padding: 20px 22px; border: 1px solid var(--mv-borda); border-radius: var(--mv-raio-3);
             background: var(--mv-superficie); }
.mv-painel--sem-espaco { padding: 0; gap: 0; overflow: hidden; }
.mv-painel__cab { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px 16px; }
.mv-painel--sem-espaco .mv-painel__cab { padding: 16px 22px; border-bottom: 1px solid var(--mv-borda); }
.mv-painel__corpo { padding: 0 22px; }
.mv-painel:not(.mv-painel--sem-espaco) > .mv-painel__rodape { margin: 4px -22px -20px; }
.mv-painel__rodape { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px; padding: 12px 22px; border-top: 1px solid var(--mv-borda);
                     font-size: 13px; color: var(--mv-texto-2); }

/* ── botões ─────────────────────────────────────────────────────────────────────────────────── */
.mv-botao { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 40px; padding: 0 16px;
            border: 1px solid transparent; border-radius: var(--mv-raio-2); background: transparent; color: var(--mv-texto);
            font: 600 14px/1.2 var(--mv-familia-texto); text-decoration: none; white-space: nowrap; cursor: pointer;
            transition: background-color var(--mv-duracao-rapido) var(--mv-curva-padrao), border-color var(--mv-duracao-rapido) var(--mv-curva-padrao),
                        color var(--mv-duracao-rapido) var(--mv-curva-padrao); }
.mv-botao:hover { text-decoration: none; }
.mv-botao--primario { background: var(--mv-acao); color: var(--mv-sobre-acao); }
.mv-botao--primario:hover { background: var(--mv-acao-hover); }
.mv-botao--primario:active { background: var(--mv-acao-press); }
.mv-botao--secundario { background: var(--mv-superficie); color: var(--mv-texto); border-color: var(--mv-borda-forte); }
.mv-botao--secundario:hover { background: var(--mv-superficie-2); }
.mv-botao--suave { background: var(--mv-acao-clara); color: var(--mv-acao); }
.mv-botao--suave:hover { background: var(--mv-superficie-2); }
.mv-botao--texto { min-height: 32px; padding: 0 8px; color: var(--mv-link); }
.mv-botao--texto:hover { background: var(--mv-superficie-2); }
.mv-botao--perigo { background: var(--mv-erro); color: var(--mv-superficie); }
.mv-botao--perigo:hover { filter: brightness(.9); }
.mv-botao--pequeno { min-height: 32px; padding: 0 12px; font-size: 13px; }
.mv-botao--grande { min-height: 48px; padding: 0 22px; font-size: 16px; }
.mv-botao--icone { width: 40px; padding: 0; }
.mv-botao--pequeno.mv-botao--icone { width: 32px; }
.mv-botao[disabled], .mv-botao[aria-disabled="true"] { background: var(--mv-superficie-2); color: var(--mv-texto-3); border-color: var(--mv-borda); cursor: not-allowed; }
.mv-botao[aria-busy="true"] { cursor: progress; }
.mv-botao[aria-busy="true"]::before { content: ""; width: 14px; height: 14px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%;
                                      animation: mv-gira .8s linear infinite; }
.mv-grupo-botoes { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
@media (pointer: coarse), (max-width: 767px) { .mv-botao { min-height: 44px; } .mv-botao--icone { width: 44px; } }

/* ── campos ─────────────────────────────────────────────────────────────────────────────────── */
.mv-campo { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.mv-campo__rotulo { display: flex; gap: 8px; align-items: baseline; font: 600 13px/1.3 var(--mv-familia-texto); color: var(--mv-texto); }
.mv-campo__obrigatorio { font-weight: 500; font-size: 12px; color: var(--mv-texto-3); }
.mv-campo__ajuda { margin: 0; font-size: 12px; line-height: 1.45; color: var(--mv-texto-2); }
.mv-campo__erro { margin: 0; display: flex; gap: 6px; align-items: baseline; font-size: 12px; line-height: 1.45; font-weight: 600; color: var(--mv-erro); }
.mv-campo__erro::before { content: ""; flex: none; width: 7px; height: 7px; background: currentColor; transform: translateY(-1px); }
.mv-campo__rodape { display: flex; justify-content: space-between; gap: 12px; }
.mv-campo__contador { font-size: 12px; color: var(--mv-texto-3); font-variant-numeric: tabular-nums; margin-left: auto; }
.mv-entrada { width: 100%; min-height: 40px; padding: 0 12px; border: 1px solid var(--mv-borda-forte); border-radius: var(--mv-raio-2);
              background: var(--mv-superficie); color: var(--mv-texto); font: 400 15px/1.4 var(--mv-familia-texto);
              transition: border-color var(--mv-duracao-rapido) var(--mv-curva-padrao), box-shadow var(--mv-duracao-rapido) var(--mv-curva-padrao); }
textarea.mv-entrada { min-height: 104px; padding: 10px 12px; resize: vertical; }
select.mv-entrada { appearance: none; padding-right: 36px; cursor: pointer;
  background-image: linear-gradient(45deg, transparent 50%, var(--mv-texto-2) 50%), linear-gradient(135deg, var(--mv-texto-2) 50%, transparent 50%);
  background-position: calc(100% - 19px) 52%, calc(100% - 14px) 52%; background-size: 5px 5px; background-repeat: no-repeat; }
.mv-entrada::placeholder { color: var(--mv-texto-3); }
.mv-entrada:hover { border-color: var(--mv-texto-2); }
.mv-entrada:focus-visible { outline: none; border-color: var(--mv-foco); box-shadow: 0 0 0 3px var(--mv-acao-clara); }
.mv-entrada[aria-invalid="true"] { border-color: var(--mv-erro); box-shadow: 0 0 0 3px var(--mv-erro-fundo); }
.mv-entrada:disabled { background: var(--mv-superficie-2); color: var(--mv-texto-3); cursor: not-allowed; }
.mv-entrada--cod { font-family: var(--mv-familia-mono); font-size: 14px; letter-spacing: .01em; }
.mv-entrada-grupo { display: flex; align-items: stretch; }
.mv-entrada-grupo > :first-child { border-radius: var(--mv-raio-2) 0 0 var(--mv-raio-2); }
.mv-entrada-grupo > :last-child { border-radius: 0 var(--mv-raio-2) var(--mv-raio-2) 0; margin-left: -1px; }
.mv-entrada-grupo__fixo { display: inline-flex; align-items: center; padding: 0 12px; border: 1px solid var(--mv-borda-forte); background: var(--mv-superficie-2);
                          color: var(--mv-texto-2); font-size: 14px; white-space: nowrap; }
.mv-formulario { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); gap: 18px 20px; }
.mv-formulario .mv-campo--largo { grid-column: 1 / -1; }
.mv-formulario__secao { grid-column: 1 / -1; padding-top: 6px; border-top: 1px solid var(--mv-borda); }
.mv-formulario__acoes { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 8px; padding-top: 6px; }
@media (pointer: coarse), (max-width: 767px) { .mv-entrada { min-height: 44px; font-size: 16px; } }

/* editor de texto rico */
.mv-editor { border: 1px solid var(--mv-borda-forte); border-radius: var(--mv-raio-2); background: var(--mv-superficie); overflow: hidden; }
.mv-editor__barra { display: flex; flex-wrap: wrap; gap: 2px; padding: 6px; border-bottom: 1px solid var(--mv-borda); background: var(--mv-superficie-2); }
.mv-editor__barra button { min-width: 32px; height: 30px; padding: 0 8px; border: 0; border-radius: var(--mv-raio-1); background: transparent; color: var(--mv-texto-2);
                           font: 600 13px/1 var(--mv-familia-texto); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.mv-editor__barra button:hover, .mv-editor__barra button[aria-pressed="true"] { background: var(--mv-superficie); color: var(--mv-texto); }
.mv-editor__barra hr { width: 1px; height: 22px; margin: 4px 4px; border: 0; background: var(--mv-borda); }
.mv-editor__area { min-height: 160px; padding: 14px 16px; font-size: 15px; line-height: 1.65; }
.mv-editor__area p { margin: 0 0 10px; }

/* marcar, opção, chave, arquivo, cor */
.mv-marcar { display: flex; gap: 10px; align-items: flex-start; font-size: 14px; line-height: 1.45; cursor: pointer; }
.mv-marcar input { appearance: none; flex: none; width: 18px; height: 18px; margin: 1px 0 0; border: 1.5px solid var(--mv-borda-forte);
                   border-radius: var(--mv-raio-1); background: var(--mv-superficie); display: grid; place-content: center; cursor: pointer; }
.mv-marcar input[type="radio"] { border-radius: 50%; }
.mv-marcar input:checked { background: var(--mv-acao); border-color: var(--mv-acao); }
.mv-marcar input[type="checkbox"]:checked::after { content: ""; width: 9px; height: 5px; border-left: 2px solid var(--mv-sobre-acao);
                                                    border-bottom: 2px solid var(--mv-sobre-acao); transform: translateY(-1px) rotate(-45deg); }
.mv-marcar input[type="radio"]:checked { background: var(--mv-superficie); border: 5px solid var(--mv-acao); }
.mv-marcar input:disabled { background: var(--mv-superficie-2); border-color: var(--mv-borda); }
.mv-marcar small { display: block; font-size: 12px; color: var(--mv-texto-2); }
.mv-marcar--cartao { align-items: center; padding: 14px 16px; border: 1px solid var(--mv-borda-forte); border-radius: var(--mv-raio-2); background: var(--mv-superficie); font-size: 15px; }
.mv-marcar--cartao:hover { border-color: var(--mv-texto-2); }
.mv-marcar--cartao:has(input:checked) { border-color: var(--mv-acao); background: var(--mv-acao-clara); box-shadow: inset 0 0 0 1px var(--mv-acao); }
.mv-chave { display: inline-flex; gap: 10px; align-items: center; font-size: 14px; cursor: pointer; }
.mv-chave input { appearance: none; position: relative; flex: none; width: 36px; height: 20px; margin: 0; border-radius: var(--mv-raio-redondo);
                  background: var(--mv-borda-forte); cursor: pointer; transition: background-color var(--mv-duracao-rapido) var(--mv-curva-padrao); }
.mv-chave input::after { content: ""; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: var(--mv-superficie);
                         box-shadow: 0 1px 2px rgba(18, 19, 21, .2); transition: transform var(--mv-duracao-rapido) var(--mv-curva-saida); }
.mv-chave input:checked { background: var(--mv-acao); }
.mv-chave input:checked::after { transform: translateX(16px); }
.mv-arquivo { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 22px 16px; border: 1px dashed var(--mv-borda-forte);
              border-radius: var(--mv-raio-3); background: var(--mv-superficie); text-align: center; font-size: 14px; color: var(--mv-texto-2); }
.mv-arquivo b { color: var(--mv-acao); }
.mv-arquivo .mv-icone { width: 24px; height: 24px; color: var(--mv-texto-2); }
.mv-anexo { display: flex; gap: 10px; align-items: center; padding: 10px 12px; border: 1px solid var(--mv-borda); border-radius: var(--mv-raio-2);
            background: var(--mv-superficie); font-size: 14px; }
.mv-anexo__nome { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mv-anexo__tam { font-size: 12px; color: var(--mv-texto-2); font-variant-numeric: tabular-nums; }
.mv-cor { display: flex; align-items: center; gap: 10px; }
.mv-cor__amostra { width: 40px; height: 40px; flex: none; border-radius: var(--mv-raio-2); box-shadow: inset 0 0 0 1px rgba(18, 19, 21, .12); }

/* ── tabelas ────────────────────────────────────────────────────────────────────────────────── */
.mv-rolagem { overflow-x: auto; max-width: 100%; }
.mv-tabela { width: 100%; border-collapse: collapse; font-size: 14px; line-height: 1.45; }
.mv-tabela caption { text-align: left; padding: 0 0 8px; font-size: 13px; color: var(--mv-texto-2); }
.mv-tabela th { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--mv-borda); background: var(--mv-superficie-2); font: 600 12px/1.3 var(--mv-familia-texto);
                color: var(--mv-texto-2); white-space: nowrap; vertical-align: bottom; }
.mv-tabela td { padding: 12px; border-bottom: 1px solid var(--mv-borda); vertical-align: middle; }
.mv-tabela tbody tr:hover td { background: var(--mv-acao-clara); }
.mv-tabela tr[aria-selected="true"] td { background: var(--mv-acao-clara); }
.mv-tabela .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.mv-tabela .cod { font-family: var(--mv-familia-mono); font-size: 13px; white-space: nowrap; }
.mv-tabela .sel { width: 36px; padding-right: 0; }
.mv-tabela .fraco { color: var(--mv-texto-2); }
.mv-tabela small { display: block; margin-top: 2px; font-size: 12px; color: var(--mv-texto-2); }
.mv-tabela__grupo td { padding: 10px 12px; font: 700 12px/1.3 var(--mv-familia-texto); color: var(--mv-texto); background: var(--mv-fundo) !important; }
.mv-tabela__grupo .mv-conta { margin-left: 6px; }
.mv-tabela__total td { font-weight: 700; border-top: 1px solid var(--mv-texto); border-bottom: 0; background: var(--mv-superficie) !important; }
.mv-tabela__detalhe td { padding: 4px 12px 16px 48px; background: var(--mv-fundo) !important; font-size: 13px; color: var(--mv-texto-2); }
.mv-tabela__vazia td { padding: 36px 12px; text-align: center; color: var(--mv-texto-2); }
.mv-tabela--compacta td { padding: 7px 12px; font-size: 13px; }
.mv-tabela--compacta th { padding: 8px 12px; }
.mv-tabela--fixa thead th { position: sticky; top: 0; z-index: 1; }
.mv-ordena { display: inline-flex; gap: 6px; align-items: center; color: inherit; text-decoration: none; }
.mv-ordena::after { content: ""; width: 0; height: 0; border-left: 4px solid transparent; border-right: 4px solid transparent; border-top: 5px solid var(--mv-borda-forte); }
.mv-ordena[aria-sort="ascending"]::after { border-top: 0; border-bottom: 5px solid var(--mv-texto); }
.mv-ordena[aria-sort="descending"]::after { border-top-color: var(--mv-texto); }
.mv-acoes-linha { display: flex; flex-wrap: wrap; gap: 4px; justify-content: flex-end; }
.mv-acoes-lote { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; padding: 10px 16px; border-radius: var(--mv-raio-2); background: var(--mv-texto);
                 color: var(--mv-fundo); font-size: 14px; }
.mv-acoes-lote b { font-weight: 700; }
.mv-acoes-lote .mv-botao { color: var(--mv-fundo); }
.mv-acoes-lote .mv-botao:hover { background: rgba(255, 255, 255, .12); }
.mv-acoes-lote .mv-botao--claro { background: var(--mv-fundo); color: var(--mv-texto); }
.mv-tabela-barra { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px 20px; padding: 12px 0; font-size: 13px; color: var(--mv-texto-2); }
.mv-tabela-barra .mv-exportar { display: flex; gap: 6px; align-items: center; }
.mv-pessoa { display: flex; gap: 10px; align-items: center; min-width: 0; }
.mv-pessoa b { display: block; font-weight: 600; white-space: nowrap; }
.mv-pessoa small { margin: 0; }

/* paginação e trilha */
.mv-paginacao { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; font-size: 14px; }
.mv-paginacao a, .mv-paginacao span { min-width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; padding: 0 8px;
                                      border-radius: var(--mv-raio-2); color: var(--mv-texto); text-decoration: none; font-variant-numeric: tabular-nums; }
.mv-paginacao a:hover { background: var(--mv-superficie-2); }
.mv-paginacao [aria-current="page"] { background: var(--mv-acao); color: var(--mv-sobre-acao); font-weight: 600; }
.mv-paginacao__info { margin-left: auto; color: var(--mv-texto-2); font-size: 13px; }
.mv-trilha { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: 0; padding: 0; list-style: none; font-size: 13px; color: var(--mv-texto-2); }
.mv-trilha li + li::before { content: "/"; margin-right: 6px; color: var(--mv-texto-3); }
.mv-trilha a { color: var(--mv-texto-2); text-decoration: none; }
.mv-trilha a:hover { color: var(--mv-acao); text-decoration: underline; }
.mv-trilha [aria-current="page"] { color: var(--mv-texto); }

/* ── barra de ferramentas, filtros, visões e período ───────────────────────────────────────── */
.mv-ferramentas { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.mv-ferramentas .mv-busca { flex: 1 1 260px; }
.mv-ferramentas__fim { margin-left: auto; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.mv-filtro { display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 0 10px 0 12px; border: 1px solid var(--mv-borda);
             border-radius: var(--mv-raio-2); background: var(--mv-superficie); color: var(--mv-texto-2); font: 500 13px/1.2 var(--mv-familia-texto);
             cursor: pointer; white-space: nowrap; }
.mv-filtro b { color: var(--mv-texto); font-weight: 600; }
.mv-filtro .mv-icone { width: 15px; height: 15px; color: var(--mv-texto-3); }
.mv-filtro:hover { border-color: var(--mv-borda-forte); }
.mv-filtro[aria-pressed="true"] { border-color: var(--mv-acao); background: var(--mv-acao-clara); color: var(--mv-acao); }
.mv-filtro[aria-pressed="true"] b { color: var(--mv-acao); }
.mv-filtro[aria-pressed="true"] .mv-icone { color: var(--mv-acao); }
.mv-busca { position: relative; display: flex; }
.mv-busca .mv-entrada { min-height: 36px; padding-left: 36px; font-size: 14px; }
.mv-busca .mv-icone { position: absolute; left: 11px; top: 50%; transform: translateY(-50%); width: 16px; height: 16px; color: var(--mv-texto-3); pointer-events: none; }
.mv-busca kbd { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); padding: 1px 6px; border: 1px solid var(--mv-borda); border-radius: var(--mv-raio-1);
                font: 600 11px/1.4 var(--mv-familia-texto); color: var(--mv-texto-3); background: var(--mv-superficie-2); }
.mv-filtros-ativos { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; font-size: 13px; color: var(--mv-texto-2); }
.mv-filtro-ativo { display: inline-flex; gap: 4px; align-items: center; min-height: 28px; padding: 0 2px 0 10px; border-radius: var(--mv-raio-2);
                   background: var(--mv-superficie-2); color: var(--mv-texto); font-size: 13px; }
.mv-filtro-ativo span { color: var(--mv-texto-2); }
.mv-filtro-ativo button { width: 24px; height: 24px; display: grid; place-items: center; border: 0; border-radius: var(--mv-raio-1); background: transparent;
                          color: var(--mv-texto-2); cursor: pointer; }
.mv-filtro-ativo button:hover { background: var(--mv-borda); color: var(--mv-texto); }
.mv-filtro-ativo .mv-icone { width: 14px; height: 14px; }
.mv-segmentos { display: inline-flex; flex-wrap: wrap; gap: 2px; padding: 3px; border-radius: var(--mv-raio-2); background: var(--mv-superficie-2); }
.mv-segmentos a, .mv-segmentos button { display: inline-flex; align-items: center; gap: 6px; min-height: 30px; padding: 0 12px; border: 0; border-radius: var(--mv-raio-1);
                                        background: transparent; color: var(--mv-texto-2); font: 600 13px/1 var(--mv-familia-texto); text-decoration: none; cursor: pointer; }
.mv-segmentos a:hover, .mv-segmentos button:hover { color: var(--mv-texto); }
.mv-segmentos [aria-current="true"], .mv-segmentos [aria-pressed="true"] { background: var(--mv-superficie); color: var(--mv-texto);
                                                                        box-shadow: 0 1px 2px rgba(18, 19, 21, .08), 0 0 0 1px var(--mv-borda); }
.mv-abas { display: flex; flex-wrap: wrap; gap: 4px 22px; border-bottom: 1px solid var(--mv-borda); }
.mv-abas a { display: inline-flex; gap: 8px; align-items: center; padding: 10px 0; margin-bottom: -1px; border-bottom: 2px solid transparent;
             color: var(--mv-texto-2); font: 600 14px/1.3 var(--mv-familia-texto); text-decoration: none; }
.mv-abas a:hover { color: var(--mv-texto); }
.mv-abas a[aria-current="page"] { color: var(--mv-texto); border-bottom-color: var(--mv-acao); }
.mv-conta { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; height: 20px; padding: 0 6px; border-radius: var(--mv-raio-1);
            background: var(--mv-superficie-2); color: var(--mv-texto-2); font: 700 11px/1 var(--mv-familia-texto); font-variant-numeric: tabular-nums; }
.mv-abas a[aria-current="page"] .mv-conta { background: var(--mv-acao-clara); color: var(--mv-acao); }
.mv-conta--alerta { background: var(--mv-erro-fundo); color: var(--mv-erro); }

/* ── situação e prazo ───────────────────────────────────────────────────────────────────────── */
.mv-etiqueta { display: inline-flex; align-items: center; gap: 7px; min-height: 24px; padding: 0 10px 0 8px; border-radius: var(--mv-raio-2);
               background: var(--mv-superficie-2); color: var(--mv-texto-2); font: 600 12px/1.2 var(--mv-familia-texto); white-space: nowrap; }
.mv-etiqueta::before { content: ""; flex: none; width: 7px; height: 7px; border-radius: 1px; background: currentColor; }
.mv-etiqueta--recebido { background: var(--mv-aviso-fundo); color: var(--mv-aviso); }
.mv-etiqueta--analise { background: var(--mv-info-fundo); color: var(--mv-info); }
.mv-etiqueta--aguardando { background: var(--mv-superficie-2); color: var(--mv-texto-2); }
.mv-etiqueta--aguardando::before { background: transparent; box-shadow: inset 0 0 0 1.5px currentColor; }
.mv-etiqueta--respondido, .mv-etiqueta--publicado, .mv-etiqueta--deferido, .mv-etiqueta--ativo { background: var(--mv-sucesso-fundo); color: var(--mv-sucesso); }
.mv-etiqueta--encerrado, .mv-etiqueta--inativo { background: var(--mv-superficie-2); color: var(--mv-texto-3); }
.mv-etiqueta--rascunho { background: var(--mv-superficie-2); color: var(--mv-texto-2); }
.mv-etiqueta--rascunho::before { background: transparent; box-shadow: inset 0 0 0 1.5px currentColor; }
.mv-etiqueta--fora, .mv-etiqueta--indeferido, .mv-etiqueta--critico { background: var(--mv-erro-fundo); color: var(--mv-erro); }
.mv-etiqueta--agendado { background: var(--mv-acao-clara); color: var(--mv-acao); }
.mv-prazo { font-size: 13px; line-height: 1.35; font-variant-numeric: tabular-nums; color: var(--mv-texto-2); white-space: nowrap; }
.mv-prazo--vencido { color: var(--mv-erro); font-weight: 600; }
.mv-prazo--hoje { color: var(--mv-aviso); font-weight: 600; }
.mv-prazo--parado { color: var(--mv-texto-3); }
/* prazo com barra: quanto do prazo legal já foi consumido */
.mv-prazo-b { display: inline-flex; flex-direction: column; gap: 5px; min-width: 136px; font-size: 12px; line-height: 1.2; font-variant-numeric: tabular-nums; }
.mv-prazo-b__texto { color: var(--mv-texto-2); white-space: nowrap; }
.mv-prazo-b__texto b { color: var(--mv-texto); font-weight: 600; }
.mv-prazo-b__trilho { display: block; height: 4px; border-radius: 2px; background: var(--mv-borda); overflow: hidden; }
.mv-prazo-b__trilho i { display: block; height: 100%; background: var(--mv-sucesso); border-radius: 2px; }
.mv-prazo-b--perto .mv-prazo-b__trilho i { background: var(--mv-tacha); }
.mv-prazo-b--perto .mv-prazo-b__texto b { color: var(--mv-aviso); }
.mv-prazo-b--vencido .mv-prazo-b__trilho i { background: var(--mv-erro); }
.mv-prazo-b--vencido .mv-prazo-b__texto b { color: var(--mv-erro); }
.mv-prazo-b--parado .mv-prazo-b__trilho i { background: repeating-linear-gradient(90deg, var(--mv-texto-3) 0 4px, transparent 4px 7px); }
.mv-prazo-b--parado .mv-prazo-b__texto b { color: var(--mv-texto-2); }

/* ── avisos e retorno ───────────────────────────────────────────────────────────────────────── */
.mv-aviso { display: grid; grid-template-columns: 10px minmax(0, 1fr) auto; gap: 2px 12px; align-items: start; padding: 14px 16px; border: 1px solid var(--mv-borda);
            border-radius: var(--mv-raio-3); background: var(--mv-superficie); font-size: 14px; line-height: 1.5; color: var(--mv-texto); }
.mv-aviso::before { content: ""; grid-row: 1 / span 3; width: 9px; height: 9px; margin-top: 6px; border-radius: 1px; background: var(--mv-texto-2); }
.mv-aviso__titulo { grid-column: 2; margin: 0; font-weight: 700; }
.mv-aviso__texto { grid-column: 2; margin: 0; color: var(--mv-texto-2); }
.mv-aviso__acoes { grid-column: 2; display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.mv-aviso__fechar { grid-column: 3; grid-row: 1; }
.mv-aviso--info { background: var(--mv-info-fundo); border-color: var(--mv-info-borda); }
.mv-aviso--info::before { background: var(--mv-info); }
.mv-aviso--atencao { background: var(--mv-aviso-fundo); border-color: var(--mv-aviso-borda); }
.mv-aviso--atencao::before { background: var(--mv-tacha); }
.mv-aviso--erro { background: var(--mv-erro-fundo); border-color: var(--mv-erro-borda); }
.mv-aviso--erro::before { background: var(--mv-erro); }
.mv-aviso--sucesso { background: var(--mv-sucesso-fundo); border-color: var(--mv-sucesso-borda); }
.mv-aviso--sucesso::before { background: var(--mv-sucesso); }
.mv-toast { display: flex; gap: 14px; align-items: center; max-width: 460px; padding: 12px 12px 12px 16px; border-radius: var(--mv-raio-3);
            background: var(--mv-texto); color: var(--mv-fundo); box-shadow: var(--mv-sombra-3); font-size: 14px; line-height: 1.4; }
.mv-toast__texto { flex: 1; }
.mv-toast .mv-botao--texto { color: var(--mv-tacha); }
.mv-vazio { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px; padding: 36px 24px; border: 1px dashed var(--mv-borda-forte);
            border-radius: var(--mv-raio-3); background: var(--mv-superficie); }
.mv-vazio__icone { width: 48px; height: 48px; display: grid; place-items: center; border-radius: var(--mv-raio-3); background: var(--mv-acao-clara); color: var(--mv-acao); }
.mv-vazio__titulo { margin: 0; font: 700 16px/1.3 var(--mv-familia-texto); }
.mv-vazio__texto { margin: 0; font-size: 14px; color: var(--mv-texto-2); max-width: 52ch; }
.mv-vazio .mv-grupo-botoes { justify-content: center; margin-top: 6px; }
.mv-esqueleto { display: block; height: 12px; border-radius: var(--mv-raio-1); background: var(--mv-superficie-2); animation: mv-pulso 1.6s ease-in-out infinite; }
@keyframes mv-pulso { 50% { opacity: .45; } }
@keyframes mv-gira { to { transform: rotate(360deg); } }
.mv-progresso { display: block; height: 6px; border-radius: 3px; background: var(--mv-superficie-2); overflow: hidden; }
.mv-progresso i { display: block; height: 100%; background: var(--mv-acao); border-radius: 3px; }

/* ── diálogo e gaveta ───────────────────────────────────────────────────────────────────────── */
.mv-veu { position: fixed; inset: 0; z-index: var(--mv-camada-modal); display: grid; place-items: center; padding: 24px; background: rgba(18, 19, 21, .45); }
.mv-dialogo { width: min(640px, 100%); max-height: calc(100vh - 48px); overflow: auto; display: flex; flex-direction: column;
              border-radius: var(--mv-raio-3); background: var(--mv-superficie); color: var(--mv-texto); box-shadow: var(--mv-sombra-3); }
.mv-dialogo__cab { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; padding: 20px 24px 14px; border-bottom: 1px solid var(--mv-borda); }
.mv-dialogo__titulo { margin: 0; font: 700 18px/1.3 var(--mv-familia-texto); }
.mv-dialogo__sub { margin: 4px 0 0; font-size: 13px; color: var(--mv-texto-2); }
.mv-dialogo__corpo { display: flex; flex-direction: column; gap: 16px; padding: 18px 24px; }
.mv-dialogo__rodape { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; padding: 14px 24px; border-top: 1px solid var(--mv-borda); }
.mv-ficha { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(160px, 100%), 1fr)); gap: 14px 20px; margin: 0; }
.mv-ficha div { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.mv-ficha dt { font-size: 12px; font-weight: 600; color: var(--mv-texto-2); }
.mv-ficha dd { margin: 0; font-size: 14px; color: var(--mv-texto); }

/* ── casca do painel e do ERP ───────────────────────────────────────────────────────────────── */
.mv-casca { display: flex; flex-wrap: wrap; min-height: 100%; background: var(--mv-fundo); }
.mv-casca__menu { flex: 1 1 var(--mv-largura-menu); max-width: 100%; }
.mv-casca__area { flex: 999 1 560px; min-width: 0; display: flex; flex-direction: column; }
.mv-menu { display: flex; flex-direction: column; gap: 12px; height: 100%; overflow-y: auto; padding: 14px 12px; background: var(--mv-nav-fundo); color: var(--mv-nav-texto);
           border-right: 1px solid var(--mv-nav-linha); }
.mv-menu__municipio { display: flex; gap: 10px; align-items: center; padding: 6px 8px 14px; border-bottom: 1px solid var(--mv-nav-linha); text-decoration: none; }
.mv-menu__municipio b { display: block; font-size: 14px; line-height: 1.25; color: var(--mv-nav-texto); }
.mv-menu__municipio span span { display: block; font-size: 12px; color: var(--mv-nav-texto-2); }
.mv-brasao { flex: none; width: 36px; height: 36px; display: grid; place-items: center; border-radius: var(--mv-raio-2); background: var(--mv-mun-primaria);
             color: var(--mv-mun-sobre-primaria); font: 800 13px/1 var(--mv-familia-display); font-stretch: 125%; letter-spacing: -.02em; }
.mv-brasao--grande { width: 48px; height: 48px; font-size: 16px; }
.mv-brasao img { display: block; width: 66%; height: auto; }
.mv-menu__grupo { display: flex; flex-direction: column; gap: 1px; margin: 0; padding: 0; list-style: none; }
.mv-menu__titulo { margin: 0; padding: 0 10px 4px; font: 600 12px/1.3 var(--mv-familia-texto); color: var(--mv-nav-texto-2); }
.mv-menu__secao > summary { list-style: none; display: flex; align-items: center; gap: 8px; min-height: 30px; padding: 0 10px; border-radius: var(--mv-raio-2);
                            font: 600 12px/1.3 var(--mv-familia-texto); color: var(--mv-nav-texto-2); cursor: pointer; }
.mv-menu__secao > summary::-webkit-details-marker { display: none; }
.mv-menu__secao > summary > span:first-child { flex: 1; }
.mv-menu__secao > summary::after { content: ""; flex: none; width: 6px; height: 6px; margin: 0 2px 3px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor;
                                   transform: rotate(45deg); }
.mv-menu__secao:not([open]) > summary::after { transform: rotate(-45deg); margin-bottom: 0; }
.mv-menu__secao > summary:hover { color: var(--mv-nav-texto); }
.mv-menu__secao > summary .mv-conta { margin-left: 0; }
.mv-menu__secao > .mv-menu__grupo { margin-top: 2px; }
.mv-menu__sistema { display: flex; gap: 10px; align-items: center; padding: 8px; border-radius: var(--mv-raio-2); background: var(--mv-nav-ativo);
                    box-shadow: 0 0 0 1px var(--mv-nav-linha); text-decoration: none; }
.mv-menu__sistema > span:first-child { flex: none; width: 32px; height: 32px; display: grid; place-items: center; border-radius: var(--mv-raio-2);
                                        background: var(--mv-acao-clara); color: var(--mv-acao); }
.mv-menu__sistema b { display: block; font-size: 14px; line-height: 1.25; color: var(--mv-nav-texto); }
.mv-menu__sistema small { display: block; font-size: 12px; color: var(--mv-nav-texto-2); }
.mv-menu .mv-busca .mv-entrada { min-height: 34px; }
.mv-menu__grupo a { display: flex; align-items: center; gap: 10px; min-height: 34px; padding: 0 10px; border-radius: var(--mv-raio-2);
             color: var(--mv-nav-texto-2); font-size: 14px; text-decoration: none; }
.mv-menu__grupo a:hover { background: var(--mv-nav-realce, var(--mv-nav-ativo)); color: var(--mv-nav-texto); }
.mv-menu__grupo a[aria-current="page"] { background: var(--mv-nav-ativo); color: var(--mv-nav-ativo-texto, var(--mv-nav-texto)); font-weight: 600; box-shadow: 0 1px 2px rgba(18, 19, 21, .07), 0 0 0 1px var(--mv-nav-linha); }
.mv-menu__grupo a[aria-current="page"] .mv-icone { color: var(--mv-acao); }
.mv-menu .mv-conta { margin-left: auto; background: var(--mv-acao-clara); color: var(--mv-acao); }
.mv-menu .mv-conta--alerta { background: var(--mv-erro-fundo); color: var(--mv-erro); }
.mv-menu__pe { margin-top: auto; display: flex; flex-direction: column; gap: 12px; padding: 12px 8px 4px; border-top: 1px solid var(--mv-nav-linha); font-size: 13px; }
.mv-menu__pessoa { display: flex; gap: 10px; align-items: center; }
.mv-menu__pessoa b { display: block; color: var(--mv-nav-texto); font-weight: 600; }
.mv-menu__pessoa span { color: var(--mv-nav-texto-2); font-size: 12px; }
.mv-menu__produto { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 11px; color: var(--mv-nav-texto-2); }
.mv-menu__produto img { display: block; width: 72px; height: auto; }
.mv-avatar { flex: none; width: 32px; height: 32px; display: grid; place-items: center; border-radius: 50%; background: var(--mv-acao-clara);
             color: var(--mv-acao); font: 700 12px/1 var(--mv-familia-texto); }
.mv-avatar--p { width: 26px; height: 26px; font-size: 11px; }
.mv-contexto { display: flex; flex-wrap: wrap; gap: 6px 22px; align-items: center; min-height: 52px; padding: 8px 32px; border-bottom: 1px solid var(--mv-borda);
               background: var(--mv-superficie); font-size: 13px; color: var(--mv-texto-2); }
.mv-contexto b { color: var(--mv-texto); font-weight: 600; }
.mv-contexto__seletor { display: inline-flex; align-items: center; gap: 6px; min-height: 32px; padding: 0 10px; border: 1px solid var(--mv-borda); border-radius: var(--mv-raio-2);
                        background: var(--mv-superficie); color: var(--mv-texto); font-size: 13px; }
.mv-contexto__seletor span { color: var(--mv-texto-3); }
.mv-contexto__fim { margin-left: auto; display: flex; gap: 10px; align-items: center; }
.mv-contexto .mv-busca { width: min(320px, 100%); }
.mv-cabecalho { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 14px 32px; padding: 24px 32px 18px; }
.mv-cabecalho > div:first-child { flex: 1 1 420px; min-width: 0; }
.mv-cabecalho__desc { margin: 6px 0 0; font-size: 14px; line-height: 1.5; color: var(--mv-texto-2); max-width: 72ch; }
.mv-conteudo { display: flex; flex-direction: column; gap: 20px; padding: 0 32px 40px; }
.mv-secao { display: flex; flex-direction: column; gap: 12px; }
.mv-secao__cab { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px 16px; }

/* ── indicadores e gráficos ─────────────────────────────────────────────────────────────────── */
.mv-indicadores { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(180px, 100%), 1fr)); border: 1px solid var(--mv-borda); border-radius: var(--mv-raio-3);
                  background: var(--mv-superficie); overflow: hidden; }
.mv-indicador { display: flex; flex-direction: column; gap: 6px; padding: 16px 20px 18px; border-right: 1px solid var(--mv-borda); margin-right: -1px; }
.mv-indicador__rotulo { font: 600 12px/1.35 var(--mv-familia-texto); color: var(--mv-texto-2); }
.mv-indicador__valor { font: 700 30px/1 var(--mv-familia-display); font-stretch: 125%; font-variant-numeric: tabular-nums; color: var(--mv-texto); }
.mv-indicador__nota { font-size: 12px; line-height: 1.4; color: var(--mv-texto-2); }
.mv-indicador__nota--alerta { color: var(--mv-erro); font-weight: 600; }
.mv-indicador__nota--bom { color: var(--mv-sucesso); font-weight: 600; }
.mv-indicador svg { display: block; width: 100%; height: 30px; margin-top: 2px; }
.mv-providencias { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); gap: 12px; }
.mv-providencia { display: grid; grid-template-columns: 10px minmax(0, 1fr); grid-template-rows: auto 1fr auto; gap: 4px 12px; padding: 16px 18px; border: 1px solid var(--mv-borda);
                  border-radius: var(--mv-raio-3); background: var(--mv-superficie); }
.mv-providencia::before { content: ""; grid-row: 1 / span 3; width: 9px; height: 9px; margin-top: 5px; border-radius: 1px; background: var(--mv-tacha); }
.mv-providencia--urgente::before { background: var(--mv-erro); }
.mv-providencia--leve::before { background: var(--mv-acao); }
.mv-providencia__titulo { margin: 0; font-weight: 700; font-size: 14px; }
.mv-providencia__texto { margin: 0; font-size: 13px; color: var(--mv-texto-2); }
.mv-providencia .mv-botao { justify-self: start; margin-left: -8px; }
.mv-barras { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 2fr) 44px; gap: 10px 12px; align-items: center; font-size: 13px; }
.mv-barras__trilho { height: 8px; border-radius: 4px; background: var(--mv-superficie-2); overflow: hidden; }
.mv-barras__valor { display: block; height: 100%; border-radius: 4px; background: var(--mv-acao); }
.mv-barras__num { text-align: right; font-variant-numeric: tabular-nums; color: var(--mv-texto-2); }
.mv-grafico-legenda { display: flex; flex-wrap: wrap; gap: 6px 16px; font-size: 12px; color: var(--mv-texto-2); }
.mv-grafico-legenda span { display: inline-flex; gap: 6px; align-items: center; }
.mv-grafico-legenda i { width: 10px; height: 10px; border-radius: 2px; display: inline-block; }
.mv-colunas { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); align-items: end; gap: 8px; height: 140px; padding-bottom: 22px; position: relative;
              border-bottom: 1px solid var(--mv-borda); }
.mv-colunas span { position: relative; display: block; border-radius: 3px 3px 0 0; background: var(--mv-acao); }
.mv-colunas span:nth-child(even) { background: var(--mv-acao); opacity: .8; }
.mv-colunas span em { position: absolute; left: 50%; bottom: -20px; transform: translateX(-50%); font-style: normal; font-size: 11px; color: var(--mv-texto-3); }
.mv-colunas span b { position: absolute; left: 50%; top: -18px; transform: translateX(-50%); font-size: 11px; color: var(--mv-texto-2); font-variant-numeric: tabular-nums; }
.mv-pilha-barra { display: flex; height: 12px; border-radius: 6px; overflow: hidden; background: var(--mv-superficie-2); }
.mv-pilha-barra i { display: block; height: 100%; }
.mv-mapa-calor { display: grid; grid-template-columns: repeat(auto-fill, minmax(64px, 1fr)); gap: 4px; }
.mv-mapa-calor span { display: flex; flex-direction: column; justify-content: space-between; min-height: 56px; padding: 6px 8px; border-radius: var(--mv-raio-2);
                      font-size: 11px; line-height: 1.2; background: var(--mv-superficie-2); color: var(--mv-texto-2); }
.mv-mapa-calor span b { font: 700 16px/1 var(--mv-familia-display); font-stretch: 125%; font-variant-numeric: tabular-nums; }
.mv-mapa-calor .n1 { background: var(--mv-acao-clara); color: var(--mv-texto); }
.mv-mapa-calor .n2 { background: color-mix(in srgb, var(--mv-acao) 32%, var(--mv-superficie)); color: var(--mv-texto); }
.mv-mapa-calor .n3 { background: color-mix(in srgb, var(--mv-acao) 72%, var(--mv-superficie)); color: var(--mv-sobre-acao); }
.mv-mapa-calor .n4 { background: var(--mv-acao); color: var(--mv-sobre-acao); }

/* ── linha do tempo, selo, matriz, árvore ───────────────────────────────────────────────────── */
.mv-linha-tempo { display: flex; flex-direction: column; margin: 0; padding: 0; list-style: none; }
.mv-linha-tempo li { position: relative; display: grid; grid-template-columns: 10px minmax(0, 1fr); gap: 2px 14px; padding-bottom: 18px; font-size: 14px; }
.mv-linha-tempo li::before { content: ""; width: 10px; height: 10px; margin-top: 5px; border-radius: 2px; background: var(--mv-borda-forte); }
.mv-linha-tempo li::after { content: ""; position: absolute; left: 4.5px; top: 18px; bottom: 0; width: 1px; background: var(--mv-borda); }
.mv-linha-tempo li:last-child::after { display: none; }
.mv-linha-tempo li > * { grid-column: 2; }
.mv-linha-tempo__quando { font-size: 12px; color: var(--mv-texto-2); font-variant-numeric: tabular-nums; }
.mv-linha-tempo li.feito::before { background: var(--mv-sucesso); }
.mv-linha-tempo li.atual::before { background: var(--mv-acao); box-shadow: 0 0 0 4px var(--mv-acao-clara); }
.mv-selo { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 12px 14px; align-items: center; padding-top: 12px; border-top: 1px solid var(--mv-borda);
           font-size: 12px; line-height: 1.45; color: var(--mv-texto-2); }
.mv-selo__qr { width: 72px; height: 72px; display: grid; grid-template-columns: repeat(9, 1fr); background: #FFFFFF; padding: 4px; box-shadow: inset 0 0 0 1px var(--mv-borda); }
.mv-selo__qr i { background: #121315; }
.mv-selo__qr i.v { background: transparent; }
.mv-selo b { color: var(--mv-texto); }
.mv-matriz td, .mv-matriz th { text-align: center; }
.mv-matriz th:first-child { text-align: left; }
.mv-matriz td:first-child { text-align: left; font-weight: 600; }
.mv-nivel { display: inline-flex; align-items: center; justify-content: center; min-width: 82px; min-height: 26px; padding: 0 8px; border-radius: var(--mv-raio-2);
            font-size: 12px; font-weight: 600; background: var(--mv-superficie-2); color: var(--mv-texto-3); }
.mv-nivel--consulta { background: var(--mv-info-fundo); color: var(--mv-info); }
.mv-nivel--edita { background: var(--mv-acao-clara); color: var(--mv-acao); }
.mv-nivel--publica { background: var(--mv-sucesso-fundo); color: var(--mv-sucesso); }
.mv-arvore { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 4px; }
.mv-arvore ul { margin: 4px 0 0 22px; padding: 0 0 0 14px; list-style: none; border-left: 1px solid var(--mv-borda); display: flex; flex-direction: column; gap: 4px; }
.mv-arvore__item { display: flex; align-items: center; gap: 10px; min-height: 42px; padding: 0 10px; border: 1px solid var(--mv-borda); border-radius: var(--mv-raio-2);
                   background: var(--mv-superficie); font-size: 14px; }
.mv-arvore__item .mv-icone:first-child { color: var(--mv-texto-3); cursor: grab; }
.mv-arvore__item .mv-cod { margin-left: auto; color: var(--mv-texto-3); font-size: 12px; }

/* ── portal do cidadão: claro, com as cores do município ────────────────────────────────────── */
.mv-portal { --mv-portal-margem: max(32px, calc((100% - var(--mv-largura-site)) / 2)); background: var(--mv-fundo); color: var(--mv-texto); }
.mv-portal-faixa { display: flex; height: 4px; }
.mv-portal-faixa i { flex: 1; background: var(--mv-mun-primaria); }
.mv-portal-faixa i:nth-child(2) { background: var(--mv-mun-acento); }
.mv-portal-faixa i:nth-child(3) { background: var(--mv-mun-primaria-clara); }
.mv-a11y { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px 24px; padding: 7px var(--mv-portal-margem, 32px); border-bottom: 1px solid var(--mv-borda);
           background: var(--mv-superficie-2); font-size: 13px; }
.mv-a11y nav, .mv-a11y div { display: flex; flex-wrap: wrap; gap: 4px 16px; align-items: center; }
.mv-a11y a { color: var(--mv-texto-2); text-decoration: none; display: inline-flex; gap: 6px; align-items: center; }
.mv-a11y a:hover { color: var(--mv-texto); }
.mv-a11y .mv-icone { width: 15px; height: 15px; }
.mv-tecla { display: inline-grid; place-items: center; min-width: 18px; height: 18px; padding: 0 4px; border: 1px solid var(--mv-borda-forte); border-radius: var(--mv-raio-1);
            font: 600 11px/1 var(--mv-familia-texto); color: var(--mv-texto-2); background: var(--mv-superficie); }
.mv-portal-cab { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 16px 32px; padding: 18px var(--mv-portal-margem, 32px); background: var(--mv-superficie); }
.mv-portal-cab__topo { display: contents; }
.mv-portal-cab__id { display: flex; gap: 14px; align-items: center; text-decoration: none; }
.mv-portal-cab__nome { display: flex; flex-direction: column; gap: 1px; }
.mv-portal-cab__nome b { font-size: 17px; color: var(--mv-texto); }
.mv-portal-cab__nome span { font-size: 13px; color: var(--mv-texto-2); }
.mv-portal-menu { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px 24px; padding: 0 var(--mv-portal-margem, 32px); background: var(--mv-superficie);
                  border-top: 1px solid var(--mv-borda); border-bottom: 1px solid var(--mv-borda); }
.mv-portal-menu ul { display: flex; flex-wrap: wrap; gap: 0 26px; margin: 0; padding: 0; list-style: none; }
.mv-portal-menu ul a { display: inline-flex; align-items: center; gap: 5px; min-height: 50px; color: var(--mv-texto); font: 600 14px/1 var(--mv-familia-texto);
                    text-decoration: none; border-bottom: 2px solid transparent; }
.mv-portal-menu ul a:hover { color: var(--mv-acao); }
.mv-portal-menu ul a[aria-current="page"] { border-bottom-color: var(--mv-acao); color: var(--mv-acao); }
.mv-portal-menu ul a .mv-icone { width: 14px; height: 14px; color: var(--mv-texto-3); }
.mv-portal-menu .mv-busca { width: min(320px, 100%); }
.mv-portal-miolo { display: flex; flex-direction: column; gap: 36px; padding: 32px var(--mv-portal-margem, 32px) 56px; }
.mv-destaque { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 0; border-radius: var(--mv-raio-3); overflow: hidden; background: var(--mv-mun-primaria);
               color: var(--mv-mun-sobre-primaria); }
.mv-destaque__texto { display: flex; flex-direction: column; justify-content: center; gap: 12px; padding: 32px 36px; }
.mv-destaque__texto h2 { margin: 0; font: 700 28px/1.12 var(--mv-familia-display); font-stretch: 125%; text-wrap: balance; }
.mv-destaque__texto p { margin: 0; font-size: 15px; opacity: .88; }
.mv-destaque__img { min-height: 240px; background: var(--mv-mun-primaria-forte); }
.mv-destaque__img svg { display: block; width: 100%; height: 100%; }
.mv-destaque__rotulo { font: 700 12px/1.3 var(--mv-familia-texto); color: var(--mv-mun-acento); }
.mv-destaque .mv-botao--acento { align-self: flex-start; background: var(--mv-mun-acento); color: var(--mv-asfalto); }
.mv-destaque .mv-botao--acento:hover { filter: brightness(1.06); }
.mv-destaque__pontos { display: flex; gap: 6px; margin-top: 4px; }
.mv-destaque__pontos i { width: 18px; height: 4px; border-radius: 2px; background: var(--mv-mun-sobre-primaria); opacity: .35; }
.mv-destaque__pontos i:first-child { opacity: 1; }
.mv-preciso { display: flex; flex-direction: column; gap: 14px; }
.mv-preciso__cab { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.mv-preciso__titulo { margin: 0; font: 700 22px/1.2 var(--mv-familia-display); font-stretch: 125%; }
/* as telhas de uma grade têm sempre a mesma altura: a mais alta puxa as outras (cada linha mede 1fr, o li estica e a telha enche o li) */
.mv-telhas { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(150px, 100%), 1fr)); grid-auto-rows: 1fr; gap: 10px; margin: 0; padding: 0; list-style: none; }
.mv-telhas > li { display: flex; min-width: 0; }
.mv-telhas a { flex: 1; display: flex; flex-direction: column; gap: 14px; min-height: 112px; padding: 14px; border: 1px solid var(--mv-borda); border-radius: var(--mv-raio-3);
               background: var(--mv-superficie); color: var(--mv-texto); font: 600 14px/1.3 var(--mv-familia-texto); text-decoration: none;
               transition: border-color var(--mv-duracao-rapido) var(--mv-curva-padrao); }
.mv-telhas a:hover { border-color: var(--mv-acao); }
.mv-telhas__icone { width: 40px; height: 40px; display: grid; place-items: center; border-radius: var(--mv-raio-2); background: var(--mv-acao-clara); color: var(--mv-acao); }
.mv-telhas__icone .mv-icone { width: 20px; height: 20px; }
.mv-noticias { display: flex; flex-direction: column; margin: 0; padding: 0; list-style: none; }
.mv-noticias li { display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--mv-borda); }
.mv-data { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 52px; border-radius: var(--mv-raio-2); background: var(--mv-acao-clara);
           font-variant-numeric: tabular-nums; }
.mv-data b { font: 700 18px/1 var(--mv-familia-display); font-stretch: 125%; color: var(--mv-acao); }
.mv-data span { font-size: 11px; font-weight: 600; color: var(--mv-texto-2); }
.mv-noticias a { color: var(--mv-texto); font-weight: 600; text-decoration: none; }
.mv-noticias a:hover { color: var(--mv-acao); text-decoration: underline; }
.mv-noticias small { display: block; margin-top: 4px; font-size: 12px; font-weight: 600; color: var(--mv-texto-3); }
.mv-guia { display: flex; flex-direction: column; gap: 16px; padding: 20px; border-radius: var(--mv-raio-3); background: var(--mv-acao-clara); font-size: 13px; line-height: 1.5; }
.mv-guia__passos { display: flex; flex-direction: column; gap: 12px; margin: 0; padding: 0; list-style: none; counter-reset: passo; }
.mv-guia__passos li { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 10px; counter-increment: passo; }
.mv-guia__passos li::before { content: counter(passo); width: 22px; height: 22px; display: grid; place-items: center; border-radius: var(--mv-raio-1); background: var(--mv-acao);
                              color: var(--mv-sobre-acao); font: 700 11px/1 var(--mv-familia-texto); }
.mv-guia__prazo { display: flex; flex-direction: column; gap: 2px; padding-top: 14px; border-top: 1px solid var(--mv-borda); }
.mv-guia__prazo b { font: 700 26px/1 var(--mv-familia-display); font-stretch: 125%; color: var(--mv-texto); font-variant-numeric: tabular-nums; }
/* rodapé: contato da prefeitura (LAI, art. 8º, § 1º, I), marca, colunas e a régua de acessibilidade */
.mv-portal-rodape { display: flex; flex-direction: column; gap: 28px; padding: 36px var(--mv-portal-margem, 32px) 26px; background: var(--mv-mun-primaria-forte);
                    color: var(--mv-mun-sobre-primaria); font-size: 14px; line-height: 1.6; }
.mv-portal-rodape__contato { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px 32px; padding-bottom: 26px;
                             border-bottom: 1px solid color-mix(in srgb, var(--mv-mun-sobre-primaria) 20%, transparent); }
.mv-portal-rodape__contato > div { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 0 12px; align-items: start; }
.mv-portal-rodape__contato .mv-icone { grid-row: span 2; width: 26px; height: 26px; color: var(--mv-mun-acento); }
.mv-portal-rodape__contato b { font-size: 15px; }
.mv-portal-rodape__contato span { opacity: .9; }
.mv-portal-rodape__colunas { display: grid; grid-template-columns: minmax(0, 1.25fr) repeat(3, minmax(0, 1fr)); gap: 24px 40px; }
.mv-portal-rodape__marca { display: flex; flex-direction: column; gap: 14px; font-size: 13px; }
.mv-portal-rodape__marca img { display: block; width: 176px; height: auto; }
.mv-portal-rodape__marca p { margin: 0; opacity: .88; }
.mv-portal-rodape h3 { margin: 0 0 10px; font-size: 14px; font-weight: 700; color: var(--mv-mun-acento); }
.mv-portal-rodape ul { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 5px; }
.mv-portal-rodape p { margin: 0 0 10px; }
.mv-portal-rodape a { color: var(--mv-mun-sobre-primaria); text-decoration: none; opacity: .9; }
.mv-portal-rodape a:hover { opacity: 1; text-decoration: underline; }
.mv-portal-rodape a .mv-icone { width: 13px; height: 13px; margin-left: 4px; vertical-align: -1px; }
.mv-portal-rodape__base { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px 24px; padding-top: 18px;
                          border-top: 1px solid color-mix(in srgb, var(--mv-mun-sobre-primaria) 20%, transparent); font-size: 13px; }
.mv-portal-rodape__munivia { display: flex; align-items: center; gap: 10px; font-size: 12px; opacity: .88; }
@media (max-width: 900px) { .mv-portal-rodape__contato { grid-template-columns: minmax(0, 1fr); } .mv-portal-rodape__colunas { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .mv-portal-rodape__colunas { grid-template-columns: minmax(0, 1fr); } }

/* ── ERP ────────────────────────────────────────────────────────────────────────────────────── */
.mv-sistemas { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(280px, 100%), 1fr)); gap: 12px; }
.mv-sistema { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 4px 14px; padding: 16px; border: 1px solid var(--mv-borda); border-radius: var(--mv-raio-3);
              background: var(--mv-superficie); text-decoration: none; color: var(--mv-texto); }
.mv-sistema:hover { border-color: var(--mv-acao); }
.mv-sistema__icone { grid-row: 1 / span 3; width: 40px; height: 40px; display: grid; place-items: center; border-radius: var(--mv-raio-2); background: var(--mv-acao-clara); color: var(--mv-acao); }
.mv-sistema__nome { margin: 0; font-weight: 700; font-size: 15px; }
.mv-sistema__desc { margin: 0; font-size: 13px; color: var(--mv-texto-2); }
.mv-sistema__meta { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-top: 6px; font-size: 12px; color: var(--mv-texto-3); }
.mv-nivel-estoque { display: flex; flex-direction: column; gap: 4px; min-width: 120px; font-size: 12px; }
.mv-nivel-estoque__barra { position: relative; display: block; height: 6px; border-radius: 3px; background: var(--mv-superficie-2); }
.mv-nivel-estoque__barra i { display: block; height: 100%; border-radius: 3px; background: var(--mv-sucesso); }
.mv-nivel-estoque__barra u { position: absolute; top: -3px; width: 2px; height: 12px; background: var(--mv-texto); text-decoration: none; }
.mv-nivel-estoque--baixo .mv-nivel-estoque__barra i { background: var(--mv-tacha); }
.mv-nivel-estoque--critico .mv-nivel-estoque__barra i { background: var(--mv-erro); }
.mv-prioridade { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 600; }
.mv-prioridade::before { content: ""; width: 10px; height: 10px; border-radius: 50%; background: currentColor; }
.mv-prioridade--vermelho { color: var(--mv-erro); }
.mv-prioridade--amarelo { color: var(--mv-aviso); }
.mv-prioridade--verde { color: var(--mv-sucesso); }
.mv-prioridade--azul { color: var(--mv-info); }
.mv-tramite { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 22px; margin: 0; padding: 0; list-style: none; font-size: 13px; }
.mv-tramite li { position: relative; display: inline-flex; align-items: center; gap: 6px; min-height: 30px; padding: 0 12px; border-radius: var(--mv-raio-2);
                 background: var(--mv-superficie-2); color: var(--mv-texto-2); white-space: nowrap; }
.mv-tramite li.feito { background: var(--mv-sucesso-fundo); color: var(--mv-sucesso); }
.mv-tramite li.atual { background: var(--mv-acao); color: var(--mv-sobre-acao); font-weight: 600; }
.mv-tramite li + li::before { content: ""; position: absolute; left: -15px; top: 50%; width: 6px; height: 6px; border-right: 1.5px solid var(--mv-texto-3);
                              border-top: 1.5px solid var(--mv-texto-3); transform: translateY(-50%) rotate(45deg); }
.mv-tramite .mv-icone { width: 15px; height: 15px; }

/* ── peças das telas de referência ──────────────────────────────────────────────────────────── */
/* página com coluna lateral: conteúdo e uma lateral de 360 px que desce para baixo no celular */
/* duas colunas lado a lado terminam juntas: o cartão mais alto puxa o do lado. Numa pilha, o último cartão estica; num painel
   esticado, o rodapé (paginação, ações) desce para o fim do cartão em vez de deixar o vão embaixo dele */
.mv-dupla { display: grid; grid-template-columns: minmax(0, 1fr) var(--mv-lado, 360px); gap: 20px; align-items: stretch; }
.mv-dupla > .mv-pilha > :last-child { flex-grow: 1; }
.mv-dupla > .mv-painel > .mv-painel__rodape, .mv-dupla > .mv-pilha > .mv-painel:last-child > .mv-painel__rodape { margin-top: auto; }
@media (max-width: 1100px) { .mv-dupla { grid-template-columns: minmax(0, 1fr); } }
/* rótulo neutro: categoria ou função, nunca situação (situação é etiqueta) */
.mv-rotulos { display: flex; flex-wrap: wrap; gap: 4px; }
.mv-rotulo { display: inline-flex; align-items: center; min-height: 22px; padding: 0 8px; border-radius: var(--mv-raio-1); background: var(--mv-superficie-2);
             color: var(--mv-texto-2); font: 600 12px/1.2 var(--mv-familia-texto); white-space: nowrap; }
/* miniatura de imagem em lista de conteúdo */
.mv-miniatura { flex: none; width: 64px; height: 44px; display: grid; place-items: center; border-radius: var(--mv-raio-1); background: var(--mv-superficie-2);
                color: var(--mv-texto-3); overflow: hidden; }
.mv-miniatura img { width: 100%; height: 100%; object-fit: cover; }
/* passos de um formulário em etapas: a barra mostra onde a pessoa está */
.mv-passos { display: flex; gap: 10px; margin: 0; padding: 0; list-style: none; counter-reset: passo; }
.mv-passos li { flex: 1 1 0; min-width: 0; display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 8px 6px; counter-increment: passo;
                font: 600 13px/1.3 var(--mv-familia-texto); color: var(--mv-texto-3); }
.mv-passos li::before { content: ""; grid-column: 1 / -1; height: 4px; border-radius: 2px; background: var(--mv-borda); }
.mv-passos li::after { content: counter(passo); grid-row: 2; grid-column: 1; font-variant-numeric: tabular-nums; }
.mv-passos li.feito { color: var(--mv-texto-2); }
.mv-passos li.feito::before { background: var(--mv-sucesso); }
.mv-passos li[aria-current="step"] { color: var(--mv-texto); }
.mv-passos li[aria-current="step"]::before { background: var(--mv-acao); }
/* opção em cartão: escolha entre poucas, com descrição */
.mv-opcoes { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(150px, 100%), 1fr)); gap: 8px; }
.mv-opcao { position: relative; display: flex; flex-direction: column; gap: 3px; padding: 12px 14px; border: 1px solid var(--mv-borda-forte); border-radius: var(--mv-raio-2);
            background: var(--mv-superficie); color: var(--mv-texto-2); font-size: 12px; line-height: 1.4; cursor: pointer; }
.mv-opcao b { font-size: 14px; color: var(--mv-texto); }
.mv-opcao input { position: absolute; opacity: 0; pointer-events: none; }
.mv-opcao:hover { border-color: var(--mv-texto-2); }
.mv-opcao:has(input:checked) { border-color: var(--mv-acao); background: var(--mv-acao-clara); box-shadow: inset 0 0 0 1px var(--mv-acao); }
.mv-opcao:has(input:checked) b { color: var(--mv-acao); }
.mv-opcao:has(input:focus-visible) { outline: 2px solid var(--mv-foco); outline-offset: 2px; }
/* botão do Login Único: a cor é a da marca gov.br, exigida pelo manual do Login Único, e por isso fica fora dos tokens */
.mv-botao--govbr { background: #1351B4; color: #FFFFFF; }
.mv-botao--govbr:hover { background: #0C326F; }
.mv-botao--govbr b { font-weight: 800; }
/* mapa agregado: contorno do município e um círculo por bairro, nunca por endereço */
.mv-mapa { position: relative; border: 1px solid var(--mv-borda); border-radius: var(--mv-raio-3); background: var(--mv-superficie-2); overflow: hidden; }
.mv-mapa svg { display: block; width: 100%; height: auto; }
.mv-mapa__contorno { fill: var(--mv-superficie); stroke: var(--mv-borda-forte); stroke-width: 1.5; }
.mv-mapa__divisa { fill: none; stroke: var(--mv-borda); stroke-width: 1; }
.mv-mapa__ponto { fill: var(--mv-acao); fill-opacity: .82; stroke: var(--mv-superficie); stroke-width: 2; }
.mv-mapa__rotulo { font: 600 11px var(--mv-familia-texto); fill: var(--mv-texto-2); }
.mv-mapa__legenda { position: absolute; left: 12px; bottom: 10px; display: flex; gap: 12px; align-items: center; padding: 6px 10px; border-radius: var(--mv-raio-2);
                    background: var(--mv-superficie); box-shadow: 0 0 0 1px var(--mv-borda); font-size: 12px; color: var(--mv-texto-2); }
/* lista com marcador quadrado na cor de ação */
.mv-lista { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 6px; font-size: 15px; line-height: 1.55; }
.mv-lista li { display: grid; grid-template-columns: 8px minmax(0, 1fr); gap: 10px; }
.mv-lista li::before { content: ""; width: 6px; height: 6px; margin-top: 9px; background: var(--mv-acao); }
/* página interna do portal: conteúdo e lateral */
.mv-portal-pagina { display: grid; grid-template-columns: minmax(0, 1fr) minmax(260px, 340px); gap: 32px; align-items: start; }
@media (max-width: 900px) { .mv-portal-pagina { grid-template-columns: minmax(0, 1fr); } }
.mv-portal-titulo { display: flex; flex-direction: column; gap: 10px; }
.mv-portal-titulo .mv-h1 { font-size: 32px; }
.mv-portal-titulo p { margin: 0; max-width: 72ch; font-size: 16px; line-height: 1.6; color: var(--mv-texto-2); }
.mv-etapas { margin: 0; padding: 0; list-style: none; counter-reset: etapa; display: flex; flex-direction: column; }
.mv-etapas li { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--mv-borda); counter-increment: etapa;
                font-size: 15px; line-height: 1.55; }
.mv-etapas li::before { content: counter(etapa); width: 28px; height: 28px; display: grid; place-items: center; border-radius: var(--mv-raio-2); background: var(--mv-acao-clara);
                        color: var(--mv-acao); font: 700 13px/1 var(--mv-familia-texto); }

/* ── portal: o que o edital pede em toda página ─────────────────────────────────────────────── */
/* letreiro de avisos: anda devagar e para com o ponteiro, com o foco ou com o botão de pausa (WCAG 2.2.2) */
.mv-letreiro { display: flex; align-items: center; gap: 12px; min-height: 40px; padding: 0 var(--mv-portal-margem, 32px); border-bottom: 1px solid var(--mv-borda);
               background: var(--mv-superficie); color: var(--mv-acao); font: 600 13px/1.3 var(--mv-familia-texto); }
.mv-letreiro__fita { flex: 1; min-width: 0; overflow: hidden; }
.mv-letreiro__trilho { display: flex; width: max-content; animation: mv-letreiro 70s linear infinite; }
.mv-letreiro__trilho span { display: inline-flex; align-items: center; gap: 20px; padding-right: 20px; white-space: nowrap; }
.mv-letreiro__trilho span::after { content: ""; width: 5px; height: 5px; background: var(--mv-mun-acento); }
.mv-letreiro:hover .mv-letreiro__trilho, .mv-letreiro:focus-within .mv-letreiro__trilho,
.mv-letreiro:has(.mv-letreiro__pausa input:checked) .mv-letreiro__trilho { animation-play-state: paused; }
@keyframes mv-letreiro { to { transform: translateX(-50%); } }
.mv-letreiro__ctl { display: flex; align-items: center; gap: 4px; padding-left: 12px; border-left: 1px solid var(--mv-borda); }
.mv-letreiro__pausa { position: relative; display: grid; place-items: center; width: 32px; height: 32px; border-radius: var(--mv-raio-2); color: var(--mv-acao); cursor: pointer; }
.mv-letreiro__pausa:hover { background: var(--mv-superficie-2); }
.mv-letreiro__pausa input { position: absolute; inset: 0; margin: 0; opacity: 0; cursor: pointer; }
.mv-letreiro__pausa:has(input:focus-visible) { outline: 2px solid var(--mv-foco); outline-offset: 2px; }
.mv-idioma { position: relative; }
.mv-idioma > summary { list-style: none; display: inline-flex; align-items: center; gap: 6px; min-height: 32px; padding: 0 8px; border-radius: var(--mv-raio-2);
                       color: var(--mv-texto); font-weight: 600; cursor: pointer; }
.mv-idioma > summary::-webkit-details-marker { display: none; }
.mv-idioma > summary:hover { background: var(--mv-superficie-2); }
.mv-idioma__lista { position: absolute; right: 0; top: calc(100% + 6px); z-index: var(--mv-camada-menu); display: flex; flex-direction: column; gap: 2px; min-width: 210px;
                    padding: 6px; border: 1px solid var(--mv-borda); border-radius: var(--mv-raio-3); background: var(--mv-superficie); box-shadow: var(--mv-sombra-3); }
.mv-idioma__lista a, .mv-idioma__lista span { display: flex; flex-direction: column; padding: 8px 10px; border-radius: var(--mv-raio-2); color: var(--mv-texto);
                                              font-weight: 600; text-decoration: none; }
.mv-idioma__lista a:hover { background: var(--mv-superficie-2); }
.mv-idioma__lista small { font-weight: 400; color: var(--mv-texto-2); }
.mv-idioma__lista [aria-current] { background: var(--mv-acao-clara); }
/* faixa urgente: interdição, enchente, ponto facultativo; sai sozinha na data marcada. Ouro da prefeitura, e não vermelho */
.mv-urgente { display: flex; align-items: center; gap: 12px; padding: 10px var(--mv-portal-margem, 32px); background: var(--mv-mun-acento); color: var(--mv-asfalto);
              font-size: 14px; line-height: 1.45; }
.mv-urgente .mv-icone { width: 20px; height: 20px; }
.mv-urgente p { flex: 1; margin: 0; font-weight: 600; }
.mv-urgente a { color: inherit; font-weight: 700; white-space: nowrap; }
/* identidade no cabeçalho: brasão e nome, ou a logo da prefeitura */
.mv-portal-cab__logo { display: block; height: 30px; width: auto; }
.mv-portal-cab__orgao { display: flex; flex-direction: column; gap: 1px; padding-left: 16px; border-left: 1px solid var(--mv-borda); }
.mv-portal-cab__orgao b { font-size: 15px; color: var(--mv-texto); }
.mv-portal-cab__orgao span { font-size: 13px; color: var(--mv-texto-2); }
.mv-portal-cab__dir { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; }
.mv-redes { display: flex; align-items: center; gap: 2px; font-size: 13px; color: var(--mv-texto-2); }
.mv-redes > span { margin-right: 6px; }
.mv-redes a { display: grid; place-items: center; width: 34px; height: 34px; border-radius: var(--mv-raio-2); color: var(--mv-texto-2); }
.mv-redes a:hover { background: var(--mv-superficie-2); color: var(--mv-acao); }
/* botões que flutuam: menu de acessibilidade e cookies à esquerda, VLibras à direita */
.mv-flutuantes { position: fixed; left: 24px; bottom: 24px; z-index: var(--mv-camada-fixo); display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
.mv-flutuante-a11y { display: grid; place-items: center; width: 56px; height: 56px; border-radius: 50%; background: var(--mv-mun-primaria); color: var(--mv-mun-sobre-primaria);
                     box-shadow: inset 0 0 0 4px var(--mv-mun-primaria), inset 0 0 0 6px var(--mv-mun-sobre-primaria), var(--mv-sombra-3); }
.mv-flutuante-a11y .mv-icone { width: 26px; height: 26px; }
.mv-flutuante-cookies { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 16px; border-radius: var(--mv-raio-3); background: var(--mv-superficie);
                        color: var(--mv-texto); font: 700 14px/1 var(--mv-familia-texto); text-decoration: none; box-shadow: 0 0 0 1px var(--mv-borda), var(--mv-sombra-3); }
/* o VLibras é o widget do governo federal: o botão é dele, com a cor dele, e o portal só reserva o lugar */
.mv-vlibras { position: fixed; right: 0; top: 50%; z-index: var(--mv-camada-fixo); display: grid; place-items: center; width: 52px; height: 52px; transform: translateY(-50%);
              border-radius: var(--mv-raio-3) 0 0 var(--mv-raio-3); background: #1351B4; color: #FFFFFF; box-shadow: var(--mv-sombra-2); }
.mv-vlibras .mv-icone { width: 26px; height: 26px; }
/* menu de acessibilidade: ajustes de conteúdo, de cor e ferramentas; cada opção é um botão com estado */
.mv-menu-a11y { display: flex; flex-direction: column; width: min(392px, 100%); overflow: hidden; border-radius: var(--mv-raio-3); background: var(--mv-superficie);
                color: var(--mv-texto); box-shadow: 0 0 0 1px var(--mv-borda), var(--mv-sombra-3); }
.mv-menu-a11y__cab { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 12px 12px 18px; background: var(--mv-mun-primaria);
                     color: var(--mv-mun-sobre-primaria); }
.mv-menu-a11y__cab b { font-size: 16px; }
.mv-menu-a11y__cab .mv-botao { color: var(--mv-mun-sobre-primaria); }
.mv-menu-a11y__corpo { display: flex; flex-direction: column; gap: 14px; padding: 16px 18px; }
.mv-menu-a11y h3 { margin: 0; font: 700 13px/1.3 var(--mv-familia-texto); color: var(--mv-texto-2); }
.mv-a11y-fonte { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 10px; border: 1px solid var(--mv-borda); border-radius: var(--mv-raio-2);
                 font-size: 14px; font-weight: 600; }
.mv-a11y-fonte__ctl { display: flex; align-items: center; gap: 4px; }
.mv-a11y-fonte__ctl b { min-width: 52px; text-align: center; font-variant-numeric: tabular-nums; }
.mv-a11y-opcoes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.mv-a11y-opcao { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; min-height: 74px; padding: 8px 6px;
                 border: 1px solid var(--mv-borda); border-radius: var(--mv-raio-2); background: var(--mv-superficie); color: var(--mv-texto);
                 font: 600 12px/1.25 var(--mv-familia-texto); text-align: center; cursor: pointer; }
.mv-a11y-opcao .mv-icone { width: 22px; height: 22px; color: var(--mv-acao); }
.mv-a11y-opcao:hover { border-color: var(--mv-borda-forte); }
.mv-a11y-opcao[aria-pressed="true"] { border-color: var(--mv-acao); background: var(--mv-acao-clara); box-shadow: inset 0 0 0 1px var(--mv-acao); }
.mv-menu-a11y__pe { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 18px; border-top: 1px solid var(--mv-borda); font-size: 13px; }
/* consentimento de cookies por categoria (LGPD): o essencial fica ligado e diz por quê; o que não se usa diz que não se usa */
.mv-cookie { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 3px 16px; align-items: start; padding: 12px 0; border-bottom: 1px solid var(--mv-borda); }
.mv-cookie b { font-size: 14px; }
.mv-cookie p { grid-column: 1; margin: 0; font-size: 13px; line-height: 1.5; color: var(--mv-texto-2); }
.mv-cookie > :last-child { grid-column: 2; grid-row: 1 / span 2; align-self: center; }

/* ── entrar: as duas portas (equipe e cidadão) ──────────────────────────────────────────────── */
.mv-entrar { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); min-height: 100%; background: var(--mv-fundo); }
.mv-entrar__marca { position: relative; display: flex; flex-direction: column; justify-content: space-between; gap: 32px; padding: 48px 56px; overflow: hidden;
                    background: var(--mv-mun-primaria-forte); color: var(--mv-mun-sobre-primaria); }
.mv-entrar__marca h1 { margin: 0; font: 700 40px/1.1 var(--mv-familia-display); font-stretch: 125%; text-wrap: balance; }
.mv-entrar__marca p { margin: 0; max-width: 46ch; font-size: 16px; line-height: 1.6; opacity: .9; }
.mv-entrar__ilustra { height: 300px; margin: 0 -56px -48px; }
.mv-entrar__ilustra svg { display: block; width: 100%; height: 100%; }
.mv-entrar__lado { display: grid; place-items: center; padding: 48px; }
.mv-entrar__cartao { display: flex; flex-direction: column; gap: 18px; width: min(420px, 100%); }
.mv-entrar__cartao h2 { margin: 0; font: 700 26px/1.15 var(--mv-familia-display); font-stretch: 125%; }
.mv-ou { display: flex; align-items: center; gap: 12px; font-size: 13px; color: var(--mv-texto-2); }
.mv-ou::before, .mv-ou::after { content: ""; flex: 1; height: 1px; background: var(--mv-borda); }
.mv-entrada-opcao { display: grid; grid-template-columns: 64px minmax(0, 1fr) 18px; align-items: center; gap: 12px; padding: 12px 14px; border: 1px solid var(--mv-borda-forte);
                    border-radius: var(--mv-raio-2); background: var(--mv-superficie); color: var(--mv-texto); text-decoration: none; }
.mv-entrada-opcao:hover { border-color: var(--mv-acao); }
.mv-entrada-opcao b { display: block; font-size: 15px; }
.mv-entrada-opcao small { display: block; font-size: 12px; line-height: 1.4; color: var(--mv-texto-2); }
.mv-entrada-opcao > .mv-icone:last-child { color: var(--mv-texto-3); }
.mv-entrada-opcao__selo { display: grid; place-items: center; height: 36px; border-radius: var(--mv-raio-2); background: var(--mv-superficie-2); color: var(--mv-acao); }
/* a marca gov.br nas cores dela: é o Login Único, não a Munivia */
.mv-govbr { font: 800 19px/1 var(--mv-familia-texto); letter-spacing: -.03em; }
.mv-govbr i { font-style: normal; color: #1351B4; }
.mv-govbr i:nth-child(2) { color: #E5A900; }
.mv-govbr i:nth-child(3) { color: #168821; }
[data-tema="escuro"] .mv-govbr i:first-child, [data-tema="escuro"] .mv-govbr i:last-child { color: #FFFFFF; }

/* ── webmail ────────────────────────────────────────────────────────────────────────────────── */
.mv-wm { display: flex; flex-direction: column; height: 100%; background: var(--mv-fundo); }
.mv-wm__topo { display: flex; align-items: center; gap: 20px; min-height: 60px; padding: 0 20px; border-bottom: 1px solid var(--mv-borda); background: var(--mv-superficie); }
.mv-wm__marca { display: flex; align-items: center; gap: 10px; min-width: 216px; text-decoration: none; }
.mv-wm__marca b { display: block; font-size: 15px; color: var(--mv-texto); }
.mv-wm__marca small { display: block; font-size: 12px; color: var(--mv-texto-2); }
.mv-wm__topo .mv-busca { flex: 1; max-width: 560px; }
.mv-wm__corpo { flex: 1; min-height: 0; display: grid; grid-template-columns: 240px minmax(0, 430px) minmax(0, 1fr); }
.mv-wm__lista { display: flex; flex-direction: column; min-height: 0; border-right: 1px solid var(--mv-borda); background: var(--mv-superficie); }
.mv-wm__barra { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; min-height: 52px; padding: 8px 12px; border-bottom: 1px solid var(--mv-borda); }
.mv-msg { display: grid; grid-template-columns: 18px 32px minmax(0, 1fr) auto; gap: 2px 10px; align-items: start; padding: 12px 14px; border-bottom: 1px solid var(--mv-borda);
          color: var(--mv-texto); font-size: 13px; line-height: 1.4; text-decoration: none; }
.mv-msg:hover { background: var(--mv-superficie-2); }
.mv-msg[aria-current="true"] { background: var(--mv-acao-clara); }
.mv-msg .mv-marcar { grid-row: 1 / span 3; padding-top: 6px; }
.mv-msg .mv-avatar { grid-row: 1 / span 3; }
.mv-msg__de { font-size: 14px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mv-msg__quando { font-size: 12px; color: var(--mv-texto-2); white-space: nowrap; font-variant-numeric: tabular-nums; }
.mv-msg__assunto { grid-column: 3 / -1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mv-msg__trecho { grid-column: 3 / -1; color: var(--mv-texto-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mv-msg[data-nova] .mv-msg__de, .mv-msg[data-nova] .mv-msg__assunto { font-weight: 700; }
.mv-msg[data-nova] .mv-msg__quando { color: var(--mv-acao); font-weight: 700; }
.mv-marcador { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 600; color: var(--mv-texto-2); white-space: nowrap; }
.mv-marcador::before { content: ""; width: 8px; height: 8px; border-radius: 2px; background: var(--cor, var(--mv-acao)); }
.mv-wm__leitura { display: flex; flex-direction: column; gap: 18px; min-height: 0; padding: 24px 32px; overflow: auto; background: var(--mv-superficie); }
.mv-wm__leitura h2 { margin: 0; font: 700 22px/1.25 var(--mv-familia-texto); text-wrap: balance; }
.mv-wm__corpo-msg { font-size: 15px; line-height: 1.65; max-width: 72ch; }
.mv-wm__corpo-msg p { margin: 0 0 12px; }
.mv-cota { display: flex; flex-direction: column; gap: 6px; font-size: 12px; color: var(--mv-nav-texto-2); }
.mv-cota b { color: var(--mv-nav-texto); }
.mv-destinatarios { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; min-height: 40px; padding: 4px 8px; border: 1px solid var(--mv-borda-forte); border-radius: var(--mv-raio-2);
                    background: var(--mv-superficie); }
.mv-destinatario { display: inline-flex; align-items: center; gap: 6px; min-height: 28px; padding: 0 4px 0 10px; border-radius: var(--mv-raio-2); background: var(--mv-superficie-2);
                   font-size: 13px; }
.mv-destinatario .mv-icone { width: 14px; height: 14px; color: var(--mv-texto-2); }

/* ── pesquisas: enquete, avaliação e satisfação ─────────────────────────────────────────────── */
.mv-enquete { display: flex; flex-direction: column; gap: 14px; }
.mv-enquete__pergunta { margin: 0; font: 700 20px/1.3 var(--mv-familia-texto); text-wrap: balance; }
.mv-resultado { display: flex; flex-direction: column; gap: 10px; }
.mv-resultado__linha { display: grid; grid-template-columns: minmax(0, 1fr) 56px; gap: 4px 12px; font-size: 14px; }
.mv-resultado__linha b { text-align: right; font-variant-numeric: tabular-nums; }
.mv-resultado__barra { grid-column: 1 / -1; display: block; height: 8px; border-radius: 4px; background: var(--mv-superficie-2); overflow: hidden; }
.mv-resultado__barra i { display: block; height: 100%; border-radius: 4px; background: var(--mv-acao); }
.mv-resultado__linha--vence .mv-resultado__barra i { background: var(--mv-mun-acento); }
.mv-nota { display: inline-flex; gap: 4px; }
.mv-nota label { position: relative; display: grid; place-items: center; width: 40px; height: 40px; border: 1px solid var(--mv-borda-forte); border-radius: var(--mv-raio-2);
                 background: var(--mv-superficie); font-weight: 700; cursor: pointer; }
.mv-nota input { position: absolute; inset: 0; margin: 0; opacity: 0; cursor: pointer; }
.mv-nota label:has(input:checked) { border-color: var(--mv-acao); background: var(--mv-acao); color: var(--mv-sobre-acao); }
.mv-nota label:has(input:focus-visible) { outline: 2px solid var(--mv-foco); outline-offset: 2px; }

/* ── módulo: lista e ações de registro ──────────────────────────────────────────────────────── */
.mv-menu-acoes { position: absolute; right: 0; top: calc(100% + 4px); z-index: var(--mv-camada-menu); display: flex; flex-direction: column; min-width: 220px; padding: 6px;
                 border: 1px solid var(--mv-borda); border-radius: var(--mv-raio-3); background: var(--mv-superficie); box-shadow: var(--mv-sombra-3); }
.mv-menu-acoes a { display: flex; align-items: center; gap: 10px; min-height: 34px; padding: 0 10px; border-radius: var(--mv-raio-2); color: var(--mv-texto); font-size: 14px;
                   text-decoration: none; }
.mv-menu-acoes a:hover { background: var(--mv-superficie-2); }
.mv-menu-acoes hr { height: 1px; margin: 6px 0; border: 0; background: var(--mv-borda); }
.mv-menu-acoes .perigo { color: var(--mv-erro); }
.mv-ancora { position: relative; display: inline-flex; }
.mv-codigo { margin: 0; padding: 14px 16px; border-radius: var(--mv-raio-3); background: var(--mv-asfalto); color: var(--mv-cal); font: 400 12px/1.6 var(--mv-familia-mono);
             white-space: pre; overflow-x: auto; tab-size: 2; }
.mv-codigo b { color: var(--mv-tacha); font-weight: 500; }
.mv-codigo i { color: #8A8E96; font-style: normal; }

/* ── erros e estados (seção 10) ───────────────────────────────────────────────────────────────
 * Acesso de demonstração: os dados para copiar, só nas telas de entrar da instância de demonstração. O valor também se
 * seleciona inteiro com um clique, para quem estiver sem script. */
.mv-demo-acesso { display: flex; flex-direction: column; gap: 10px; padding: 14px 16px; border: 1px dashed var(--mv-acao); border-radius: var(--mv-raio-3); background: var(--mv-acao-clara); }
.mv-demo-acesso__titulo { display: flex; align-items: center; gap: 8px; margin: 0; font: 700 14px/1.3 var(--mv-familia-texto); color: var(--mv-texto); }
.mv-demo-acesso__titulo .mv-icone { width: 16px; height: 16px; color: var(--mv-acao); }
.mv-demo-acesso dl { display: flex; flex-direction: column; gap: 6px; margin: 0; }
.mv-demo-acesso dl div { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: 8px; align-items: center; font-size: 13px; }
.mv-demo-acesso dt { color: var(--mv-texto-2); }
.mv-demo-acesso dd { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-width: 0; margin: 0; }
.mv-demo-acesso dd span { min-width: 0; font-family: var(--mv-familia-mono); color: var(--mv-texto); overflow-wrap: anywhere; user-select: all; }
.mv-demo-acesso__dica { margin: 0; font-size: 12px; line-height: 1.45; color: var(--mv-texto-2); }
.mv-copiar { flex: none; display: inline-flex; align-items: center; gap: 6px; min-height: 30px; padding: 0 10px; border: 1px solid var(--mv-borda-forte); border-radius: var(--mv-raio-2);
             background: var(--mv-superficie); color: var(--mv-texto); font: 600 12px/1 var(--mv-familia-texto); cursor: pointer; }
.mv-copiar:hover { border-color: var(--mv-texto-2); }
.mv-copiar[data-copiado] { border-color: var(--mv-sucesso); color: var(--mv-sucesso); }
.mv-copiar .mv-icone { width: 14px; height: 14px; }
/* página de erro: sem permissão, não encontrada, erro do sistema; sempre com o caminho de volta e um código para o suporte */
.mv-pagina-erro { display: flex; flex-direction: column; align-items: center; gap: 14px; max-width: 600px; margin: 48px auto; padding: 0 16px; text-align: center; }
.mv-pagina-erro__icone { width: 64px; height: 64px; display: grid; place-items: center; border-radius: 50%; background: var(--mv-superficie-2); color: var(--mv-texto-2); }
.mv-pagina-erro__icone .mv-icone { width: 28px; height: 28px; }
.mv-pagina-erro__icone--alerta { background: var(--mv-erro-fundo); color: var(--mv-erro); }
.mv-pagina-erro__icone--aviso { background: var(--mv-aviso-fundo); color: var(--mv-aviso); }
.mv-pagina-erro__titulo { margin: 0; font: 700 28px/1.15 var(--mv-familia-display); font-stretch: 125%; text-wrap: balance; }
.mv-pagina-erro__texto { margin: 0; max-width: 54ch; font-size: 15px; line-height: 1.55; color: var(--mv-texto-2); }
.mv-pagina-erro__codigo { font: 500 12px/1.4 var(--mv-familia-mono); color: var(--mv-texto-3); }
.mv-pagina-erro .mv-grupo-botoes { justify-content: center; margin-top: 4px; }
.mv-pagina-erro .mv-busca { width: min(420px, 100%); }
.mv-pagina-erro .mv-telhas { width: 100%; margin-top: 8px; text-align: left; }
/* avisos rápidos presos ao pé da tela e diálogo curto, com ícone */
.mv-toasts { position: fixed; left: 50%; bottom: 24px; z-index: var(--mv-camada-aviso); display: flex; flex-direction: column; gap: 8px; width: min(480px, calc(100% - 32px)); translate: -50% 0; }
.mv-dialogo--pequeno { width: min(460px, 100%); }
.mv-dialogo__icone { flex: none; width: 44px; height: 44px; display: grid; place-items: center; border-radius: 50%; background: var(--mv-aviso-fundo); color: var(--mv-aviso); }
.mv-dialogo__icone .mv-icone { width: 22px; height: 22px; }

/* ── celular: o mesmo sistema de 360 a 767 px ───────────────────────────────────────────────────
 * A página é a mesma do computador, com o mesmo HTML. Abaixo de 768 px ela se reorganiza: o menu lateral vira a barra do
 * topo com o botão Menu e abre por cima (popover, sem script), duas colunas viram uma, a tabela de trabalho vira lista e
 * nada rola de lado. .mv-so-celular e .mv-so-largo mostram um trecho só num dos tamanhos. */
.mv-ficha--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.mv-portal-dupla { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 32px; align-items: start; }
@media (max-width: 900px) { .mv-portal-dupla { grid-template-columns: minmax(0, 1fr); } }
/* no computador o menu é a coluna fixa: aqui se desfaz o estilo que o navegador dá a [popover] */
.mv-casca__menu[popover] { display: block; position: static; inset: auto; width: auto; height: auto; margin: 0; padding: 0; border: 0; overflow: visible; color: inherit; background: none; }
.mv-portal-menu[popover] { position: static; inset: auto; width: auto; height: auto; margin: 0; overflow: visible; color: inherit; border: 0;
                           border-top: 1px solid var(--mv-borda); border-bottom: 1px solid var(--mv-borda); }
.mv-wm__pastas[popover] { position: static; inset: auto; width: auto; height: 100%; margin: 0; border: 0; border-right: 1px solid var(--mv-nav-linha); }
/* peças que só existem no celular */
/* a barra do celular é um cartão solto da borda, preso a 8 px do alto quando a página rola (sticky); o botão de três traços
   abre o menu logo abaixo dele, no mesmo cartão. É o desenho do portal: quem anda entre o site e o painel aprende um gesto só */
.mv-barra-movel { position: sticky; top: 8px; z-index: var(--mv-camada-fixo); display: flex; align-items: center; gap: 6px; height: 64px; margin: 8px; padding: 0 10px 0 12px;
                  border: 1px solid var(--mv-nav-linha); border-radius: 16px; background: var(--mv-nav-fundo); color: var(--mv-nav-texto); box-shadow: 0 8px 24px rgba(18, 19, 21, .10); }
.mv-barra-movel__id { display: flex; align-items: center; gap: 10px; min-width: 0; margin-right: auto; color: inherit; text-decoration: none; }
.mv-barra-movel__id > span { min-width: 0; }
.mv-barra-movel__id b, .mv-barra-movel__id small { display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.mv-barra-movel__id b { font-size: 14px; line-height: 1.25; }
.mv-barra-movel__id small { font-size: 12px; color: var(--mv-nav-texto-2); }
.mv-barra-movel > .mv-botao--texto { color: var(--mv-nav-texto); }
/* o botão de três traços: o mesmo desenho aberto ou fechado (um X leria como «fechar a página»); quem quer fechar toca no mesmo lugar */
.mv-hamb { flex: none; display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 1px solid var(--mv-hamb-borda, var(--mv-nav-linha)); border-radius: 11px;
           background: var(--mv-hamb-fundo, var(--mv-nav-ativo)); color: var(--mv-hamb-traco, var(--mv-nav-texto)); cursor: pointer; }
.mv-hamb:hover { filter: brightness(.97); }
.mv-hamb i, .mv-hamb i::before, .mv-hamb i::after { display: block; width: 20px; height: 2px; border-radius: 2px; background: currentColor; }
.mv-hamb i { position: relative; }
.mv-hamb i::before, .mv-hamb i::after { content: ""; position: absolute; left: 0; }
.mv-hamb i::before { top: -6px; }
.mv-hamb i::after { top: 6px; }
.mv-portal-cab .mv-hamb { --mv-hamb-fundo: var(--mv-acao-clara); --mv-hamb-borda: var(--mv-borda); --mv-hamb-traco: var(--mv-acao); }
/* área do cidadão: o menu é um cartão na cor da prefeitura, solto da borda, no computador e no celular. A cor diz à pessoa que
   ela está na área dela, e não no painel da equipe, que usa a mesma casca */
.mv-casca[data-area="cidadao"] > .mv-casca__menu, .mv-casca[data-area="cidadao"] .mv-barra-movel {
  --mv-nav-fundo: var(--mv-mun-primaria); --mv-nav-texto: var(--mv-mun-sobre-primaria);
  --mv-nav-texto-2: color-mix(in srgb, var(--mv-mun-sobre-primaria) 74%, var(--mv-mun-primaria));
  --mv-nav-ativo: var(--mv-mun-sobre-primaria); --mv-nav-ativo-texto: var(--mv-mun-primaria);
  --mv-nav-realce: color-mix(in srgb, var(--mv-mun-sobre-primaria) 14%, transparent);
  --mv-nav-linha: color-mix(in srgb, var(--mv-mun-sobre-primaria) 16%, transparent);
  --mv-hamb-fundo: color-mix(in srgb, var(--mv-mun-sobre-primaria) 10%, transparent);
  --mv-hamb-borda: color-mix(in srgb, var(--mv-mun-sobre-primaria) 28%, transparent); --mv-hamb-traco: var(--mv-mun-sobre-primaria); }
.mv-casca[data-area="cidadao"] .mv-menu, .mv-casca[data-area="cidadao"] .mv-barra-movel { background: linear-gradient(180deg, var(--mv-mun-primaria), var(--mv-mun-primaria-forte)); }
.mv-casca[data-area="cidadao"] .mv-barra-movel { border-color: transparent; box-shadow: 0 10px 30px rgba(18, 19, 21, .18); }
.mv-casca[data-area="cidadao"] .mv-barra-movel__id small { font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
.mv-casca[data-area="cidadao"] .mv-menu .mv-avatar { background: var(--mv-mun-sobre-primaria); color: var(--mv-mun-primaria); }
.mv-casca[data-area="cidadao"] .mv-brasao { background: color-mix(in srgb, var(--mv-mun-sobre-primaria) 10%, transparent); box-shadow: 0 0 0 1px var(--mv-nav-linha); }
.mv-casca[data-area="cidadao"] > .mv-casca__menu[popover] { margin: 12px 0 12px 12px; border-radius: 20px; overflow: hidden; box-shadow: 0 10px 30px rgba(18, 19, 21, .18); }
.mv-casca__fechar { position: absolute; top: 12px; right: 8px; z-index: 1; }
.mv-wm__escrever { position: fixed; right: 16px; bottom: 16px; z-index: var(--mv-camada-fixo); box-shadow: var(--mv-sombra-3); }
@media (min-width: 768px) {
  .mv-barra-movel, .mv-casca__fechar, .mv-hamb, .mv-wm__escrever, .mv-so-celular { display: none !important; }
}

@media (max-width: 767px) {
  .mv-so-largo { display: none !important; }
  /* casca: o menu sai da lateral e abre logo abaixo da barra, no mesmo cartão. Aberto, a barra passa a fixed (o sticky já a
     segurava a 8 px, então nada se move aos olhos), perde os cantos de baixo e a sombra, e o menu continua o cartão até o fim;
     se não couber, rola por dentro. Sem véu: a página continua à vista, e um toque fora fecha (popover) */
  .mv-casca__menu[popover]:not(:popover-open):not([data-aberto]) { display: none; }
  .mv-casca__menu:popover-open, .mv-casca__menu[data-aberto] { position: fixed; inset: 72px 8px auto; z-index: var(--mv-camada-veu); width: auto; height: auto; margin: 0;
                                                               max-height: calc(100vh - 84px); max-height: calc(100dvh - 84px); overflow-y: auto; border: 1px solid var(--mv-nav-linha); border-top: 0;
                                                               border-radius: 0 0 16px 16px; background: var(--mv-nav-fundo); box-shadow: 0 16px 40px rgba(18, 19, 21, .18); }
  .mv-casca:has(> .mv-casca__menu:popover-open) .mv-barra-movel,
  .mv-casca:has(> .mv-casca__menu[data-aberto]) .mv-barra-movel { position: fixed; top: 8px; left: 8px; right: 8px; z-index: var(--mv-camada-veu); margin: 0;
                                                                  border-radius: 16px 16px 0 0; border-bottom-color: var(--mv-nav-linha); box-shadow: none; }
  .mv-casca__menu .mv-menu { height: auto; overflow: visible; padding: 10px 10px 14px; }
  /* no cartão, a prefeitura já está na barra: o bloco dela no menu repetiria o que está dois dedos acima */
  .mv-casca__menu .mv-menu__municipio, .mv-casca__fechar { display: none; }
  .mv-casca[data-area="cidadao"] > .mv-casca__menu:popover-open, .mv-casca[data-area="cidadao"] > .mv-casca__menu[data-aberto] { margin: 0; border: 0; border-radius: 0 0 16px 16px;
                                                                                                                                box-shadow: 0 16px 40px rgba(18, 19, 21, .24); }
  .mv-contexto { gap: 6px 8px; min-height: 0; padding: 8px 16px; }
  .mv-contexto:has(.mv-contexto__seletor) { flex-wrap: nowrap; }
  .mv-contexto__seletor { min-width: 0; flex: 0 1 auto; }
  .mv-contexto__seletor ~ .mv-contexto__seletor { flex: none; }
  .mv-contexto__seletor > span:first-child { display: none; }
  .mv-contexto__seletor b { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .mv-contexto .mv-busca { display: none; }
  .mv-cabecalho { gap: 12px; padding: 18px 16px 14px; }
  .mv-cabecalho > div:first-child { flex-basis: 100%; }
  .mv-cabecalho .mv-grupo-botoes { width: 100%; }
  .mv-cabecalho .mv-grupo-botoes > .mv-botao { flex: 1 1 auto; justify-content: center; }
  .mv-cabecalho .mv-grupo-botoes > .mv-botao--primario { order: -1; flex-basis: 100%; }
  .mv-h1 { font-size: 24px; }
  .mv-conteudo { gap: 16px; padding: 0 16px 32px; }
  .mv-painel { padding: 16px; }
  .mv-painel--sem-espaco { padding: 0; }
  .mv-painel--sem-espaco .mv-painel__cab { padding: 14px 16px; }
  .mv-painel__rodape { padding: 12px 16px; }
  .mv-painel:not(.mv-painel--sem-espaco) > .mv-painel__rodape { margin: 4px -16px -16px; }
  .mv-dupla, .mv-portal-pagina, .mv-portal-dupla { grid-template-columns: minmax(0, 1fr) !important; }
  .mv-indicadores { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .mv-indicador { padding: 14px 14px 16px; border-bottom: 1px solid var(--mv-borda); margin-bottom: -1px; }
  .mv-indicador__valor { font-size: 22px; font-stretch: 108%; white-space: nowrap; }
  /* abas e segmentos rolam de lado dentro deles mesmos; a página nunca */
  .mv-abas, .mv-segmentos { flex-wrap: nowrap; max-width: 100%; overflow-x: auto; scrollbar-width: none; }
  .mv-abas > *, .mv-segmentos > * { flex: none; white-space: nowrap; }
  .mv-ferramentas .mv-busca { flex-basis: 100%; }
  .mv-ferramentas:has(.mv-filtro--todos) > .mv-filtro:not(.mv-filtro--todos) { display: none; }
  .mv-ferramentas__fim { width: 100%; margin-left: 0; }
  .mv-acoes-lote { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2px 8px; padding: 8px 10px; }
  .mv-acoes-lote > b { align-self: center; padding-left: 6px; }
  .mv-acoes-lote .mv-botao { justify-content: flex-start; margin-left: 0 !important; }
  .mv-paginacao a:not([aria-current]):not([aria-label]) { display: none; }
  /* tabela de trabalho vira lista: cada linha é um bloco e o nome da coluna (data-rot) vem em cima do valor */
  .mv-tabela--empilha thead { display: none; }
  .mv-tabela--empilha, .mv-tabela--empilha tbody { display: block; width: 100%; }
  .mv-tabela--empilha tr { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-flow: row dense; gap: 10px 16px; padding: 14px 16px;
                           border-bottom: 1px solid var(--mv-borda); }
  .mv-tabela--empilha td { grid-column: 1 / -1; min-width: 0; padding: 0; border: 0; text-align: left; white-space: normal; }
  .mv-tabela--empilha td.num, .mv-tabela--empilha td.fraco, .mv-tabela--empilha td.cod, .mv-tabela--empilha td:has(> .mv-etiqueta) { grid-column: auto; text-align: left; }
  .mv-tabela--empilha td[data-rot]::before { content: attr(data-rot); display: block; margin-bottom: 2px; font: 600 11px/1.3 var(--mv-familia-texto); color: var(--mv-texto-3); }
  .mv-tabela--empilha td.sel { display: none; }
  .mv-tabela--empilha tbody tr:hover td, .mv-tabela--empilha tr[aria-selected="true"] td { background: none; }
  .mv-tabela--empilha tr[aria-selected="true"] { background: var(--mv-acao-clara); }
  .mv-tabela--empilha .mv-tabela__grupo { display: block; padding: 0; }
  .mv-tabela--empilha .mv-tabela__grupo td { display: block; padding: 10px 16px; }
  .mv-tabela--empilha .mv-acoes-linha { justify-content: flex-start; }
  /* a fila tem lugar marcado: número e situação, assunto, prazo, responsável e ação */
  .mv-fila tr:not(.mv-tabela__grupo) { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "cod situacao" "assunto assunto" "prazo prazo" "resp acoes";
                                        gap: 8px 12px; align-items: center; }
  .mv-fila tr:has(> td.sel) { grid-template-columns: 26px minmax(0, 1fr) auto; grid-template-areas: "sel cod situacao" "sel assunto assunto" ". prazo prazo" ". resp acoes"; }
  .mv-fila td[data-rot]::before { content: none; }
  .mv-fila td.sel { display: block; grid-area: sel; align-self: start; padding-top: 1px; }
  .mv-fila td.cod { grid-area: cod; }
  .mv-fila td.cod small { display: inline; margin: 0 0 0 8px; font-family: var(--mv-familia-texto); }
  .mv-fila td.situacao { grid-area: situacao; justify-self: end; }
  .mv-fila td.assunto { grid-area: assunto; font-weight: 600; }
  .mv-fila td.assunto small { font-weight: 400; }
  .mv-fila td.prazo { grid-area: prazo; }
  .mv-fila td.prazo .mv-prazo-b { display: flex; width: 100%; }
  .mv-fila td.resp { grid-area: resp; }
  .mv-fila td.acoes { grid-area: acoes; justify-self: end; }
  .mv-fila td.setor { display: none; }
  /* entrar */
  .mv-entrar { grid-template-columns: minmax(0, 1fr); }
  .mv-entrar__marca { gap: 16px; padding: 24px 20px; }
  .mv-entrar__marca h1 { font-size: 28px; }
  .mv-entrar__marca p { font-size: 15px; }
  .mv-entrar__ilustra { display: none; }
  .mv-entrar__orgao { padding-left: 0 !important; border-left: 0 !important; }
  .mv-entrar__lado { place-items: start stretch; padding: 24px 20px 40px; }
  /* formulário: um campo por linha; as etapas mostram o nome só da atual */
  .mv-formulario { grid-template-columns: minmax(0, 1fr) !important; }
  .mv-formulario > * { grid-column: 1 / -1 !important; }
  .mv-formulario__acoes { flex-direction: column-reverse; align-items: stretch; }
  .mv-formulario__acoes > .mv-botao { justify-content: center; }
  .mv-campo__contador { white-space: nowrap; }
  .mv-ficha--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .mv-passos li { font-size: 0; }
  .mv-passos li[aria-current="step"] { flex-grow: 3; font-size: 13px; }
  /* acesso de demonstração: no celular o botão de copiar fica só com o ícone (o texto continua para o leitor de tela), e o e-mail cabe numa linha */
  .mv-copiar { justify-content: center; min-width: 36px; padding: 0 8px; }
  .mv-copiar__texto { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
  /* portal: letreiro e régua enxutos, cabeçalho com Conta e Menu */
  .mv-letreiro { gap: 8px; padding: 0 6px 0 16px; font-size: 13px; }
  .mv-urgente { flex-wrap: wrap; gap: 4px 10px; padding: 10px 16px; font-size: 14px; }
  .mv-urgente p { flex: 1 1 calc(100% - 40px); }
  .mv-urgente a { margin-left: 30px; }
  /* régua: contraste e tamanho da letra num grupo só, no meio */
  .mv-a11y { justify-content: center; padding: 10px 16px 2px; border-bottom: 0; }
  .mv-a11y nav { display: none; }
  .mv-a11y > div { gap: 0; border: 1px solid var(--mv-borda); border-radius: 12px; background: var(--mv-superficie); overflow: hidden; }
  .mv-a11y > div > a { min-height: 40px; padding: 0 13px; border-left: 1px solid var(--mv-borda); color: var(--mv-texto); font-weight: 600; }
  .mv-a11y > div > a:first-child { border-left: 0; }
  /* cabeçalho: só a faixa da marca gruda no alto, num cartão solto da borda. As redes e as duas portas (conta e painel) ficam
     abaixo dela, na página: são o que a pessoa usa sem procurar, e esconder atrás do menu trocaria um toque por dois */
  .mv-portal-cab { display: contents; }
  .mv-portal-cab__topo { position: sticky; top: 8px; z-index: var(--mv-camada-fixo); display: flex; align-items: center; gap: 10px; height: 64px; margin: 8px 8px 0;
                         padding: 0 10px 0 14px; border: 1px solid var(--mv-borda); border-radius: 16px; background: var(--mv-superficie); box-shadow: 0 8px 24px rgba(18, 19, 21, .10); }
  .mv-portal-cab__id { flex: 1; min-width: 0; gap: 10px; }
  .mv-portal-cab__orgao, .mv-portal-cab__nome { min-width: 0; }
  .mv-portal-cab__orgao { padding-left: 0; border-left: 0; }
  .mv-portal-cab__orgao b, .mv-portal-cab__orgao span, .mv-portal-cab__nome b, .mv-portal-cab__nome span { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .mv-portal-cab__orgao b, .mv-portal-cab__nome b { font-size: 14px; line-height: 1.25; }
  .mv-portal-cab__orgao span, .mv-portal-cab__nome span { font-size: 12px; line-height: 1.3; }
  .mv-portal-cab .mv-brasao--grande { width: 40px; height: 40px; }
  .mv-portal-cab__dir { flex-direction: column; justify-content: center; gap: 8px; padding: 14px 16px 4px; }
  .mv-portal-cab__dir .mv-grupo-botoes { flex-direction: column; flex-wrap: nowrap; align-items: stretch; width: 100%; max-width: 340px; gap: 8px; }
  .mv-portal-cab__dir .mv-botao { justify-content: center; }
  /* o menu do portal abre logo abaixo da faixa, no mesmo cartão: a busca primeiro (o caminho de quem não sabe em que seção
     procurar) e as seções em lista, com a atual acesa */
  .mv-portal-menu[popover]:not(:popover-open):not([data-aberto]) { display: none; }
  .mv-portal-menu:popover-open, .mv-portal-menu[data-aberto] { position: fixed; inset: 72px 8px auto; z-index: var(--mv-camada-veu); width: auto; height: auto;
                                                               max-height: calc(100vh - 84px); max-height: calc(100dvh - 84px); flex-direction: column; flex-wrap: nowrap;
                                                               justify-content: flex-start; align-items: stretch; gap: 8px; padding: 12px 12px 14px; overflow-y: auto;
                                                               border: 1px solid var(--mv-borda); border-top: 0; border-radius: 0 0 16px 16px; box-shadow: 0 16px 40px rgba(18, 19, 21, .18); }
  .mv-portal:has(.mv-portal-menu:popover-open) .mv-portal-cab__topo,
  .mv-portal:has(.mv-portal-menu[data-aberto]) .mv-portal-cab__topo { position: fixed; top: 8px; left: 8px; right: 8px; z-index: var(--mv-camada-veu); margin: 0;
                                                                       border-radius: 16px 16px 0 0; box-shadow: none; }
  .mv-portal-menu > .mv-busca { order: -1; width: 100%; }
  .mv-portal-menu ul { flex-direction: column; flex-wrap: nowrap; gap: 0; }
  .mv-portal-menu ul a { display: flex; justify-content: space-between; min-height: 52px; padding: 0 10px; border-bottom: 1px solid var(--mv-borda); font-size: 16px; }
  .mv-portal-menu ul li:last-child a { border-bottom: 0; }
  .mv-portal-menu ul a[aria-current="page"] { border-radius: 10px; border-bottom-color: transparent; background: var(--mv-acao-clara); color: var(--mv-acao); }
  .mv-portal-miolo { gap: 28px; padding: 20px 16px 40px; }
  .mv-portal-titulo .mv-h1 { font-size: 26px; }
  .mv-portal-titulo p { font-size: 15px; }
  .mv-destaque { grid-template-columns: minmax(0, 1fr); }
  .mv-destaque__texto { gap: 10px; padding: 22px 20px 24px; }
  .mv-destaque__texto h2 { font-size: 22px; }
  .mv-destaque__img { height: 150px; min-height: 0; }
  .mv-destaque .mv-botao--acento { align-self: stretch; justify-content: center; }
  .mv-preciso__cab { flex-wrap: wrap; }
  .mv-preciso__titulo { font-size: 20px; }
  .mv-telhas { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 8px; }
  .mv-telhas a { min-height: 96px; gap: 10px; padding: 12px; font-size: 13px; }
  .mv-portal-rodape { gap: 22px; padding: 28px 16px 24px; }
  .mv-portal-rodape__colunas { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px 16px; }
  .mv-portal-rodape__colunas > :first-child, .mv-portal-rodape__colunas > :last-child { grid-column: 1 / -1; }
  .mv-flutuantes { left: 16px; bottom: 16px; }
  .mv-flutuante-a11y { width: 48px; height: 48px; }
  .mv-flutuante-cookies { width: 44px; padding: 0; justify-content: center; }
  .mv-flutuante-cookies span { display: none; }
  .mv-vlibras { width: 44px; height: 44px; }
  /* webmail: uma coluna por vez, a lista ou a mensagem aberta (data-vista); as pastas abrem por cima */
  .mv-wm__topo { gap: 4px; min-height: 56px; padding: 0 10px; }
  .mv-wm__topo > .mv-busca, .mv-wm__topo > .mv-contexto__seletor, .mv-wm__topo > .mv-botao--secundario { display: none; }
  .mv-wm__marca { min-width: 0; margin-right: auto; }
  .mv-wm__marca > span { min-width: 0; }
  .mv-wm__marca small { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .mv-wm__corpo { grid-template-columns: minmax(0, 1fr) !important; }
  .mv-wm__pastas[popover]:not(:popover-open):not([data-aberto]) { display: none; }
  .mv-wm__pastas:popover-open, .mv-wm__pastas[data-aberto] { position: fixed; inset: 0 auto 0 0; z-index: var(--mv-camada-veu); width: min(300px, 84vw); height: 100%;
                                                             box-shadow: 0 0 0 100vmax rgba(18, 19, 21, .45); }
  .mv-wm:not([data-vista="mensagem"]) .mv-wm__leitura { display: none; }
  .mv-wm[data-vista="mensagem"] .mv-wm__lista, .mv-wm[data-vista="mensagem"] .mv-wm__escrever { display: none; }
  .mv-wm__pastas > .mv-botao--primario { display: none; }
  .mv-wm__leitura { gap: 14px; padding: 12px 16px 24px; }
  .mv-msg { padding: 12px; }
}

/* ── movimento reduzido ─────────────────────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  .mv-esqueleto, .mv-botao[aria-busy="true"]::before, .mv-letreiro__trilho { animation: none; }
  .mv-botao, .mv-chave input, .mv-chave input::after, .mv-entrada, .mv-telhas a { transition: none; }
}
