/* =============================================================================
   MINDHUB — base de design do grupo
   =============================================================================

   O QUE É ISTO
   Uma folha só, compartilhada por todos os sistemas do grupo (Marketing, CRM,
   Monitor, Portal). Ela define o VOCABULÁRIO — cor, tipografia, espaço, raio,
   sombra — e os componentes que toda tela usa: botão, campo, cartão, tabela,
   pastilha, modal, cabeçalho de página.

   POR QUE ELA EXISTE
   Até 14/09/2026 cada sistema tinha o seu CSS escrito do zero, e cada tela
   inventava o seu: o Marketing era escuro com Segoe UI e meia dúzia de
   variáveis, o CRM era claro com Syne/DM Sans e um conjunto próprio, e
   telas novas nasciam com classes inventadas que ninguém mais usava (foi o
   que aconteceu com a tela de Metas em 10/09). O resultado é o que o Eduardo
   descreveu em 14/09: "parece que eu acabei de criar o CSS".

   COMO USAR NUMA TELA NOVA
     {% load static %}
     <link rel="stylesheet" href="{% static 'mindhub/mindhub.css' %}">
   e depois use as classes `mh-*` abaixo. Nada de `<style>` solto no template:
   se falta um componente, ele nasce AQUI e serve pra todo mundo.

   REGRAS DA CASA
   1. Cor, tamanho de fonte, espaço e raio vêm de variável. Valor cru no meio
      da regra é remendo — é assim que dois botões ficam com vermelhos
      diferentes sem ninguém notar.
   2. Todo token tem par no claro e no escuro. Definir cor só dentro do bloco
      escuro deixa a tela quebrada no claro (e vice-versa).
   3. Componente novo entra aqui com nome `mh-`. Classe específica de uma tela
      só continua na tela — mas se ela repetir numa segunda, vira componente.

   TEMA
   O padrão é o ESCURO (é o que o Marketing usa hoje). Pra abrir no claro,
   ponha `data-tema="claro"` no <html>; `data-tema="escuro"` força o escuro.
   ============================================================================= */

/* --------------------------------------------------------------------------
   1. TOKENS
   -------------------------------------------------------------------------- */
:root {
  /* ---- Marca ---------------------------------------------------------- */
  /* O vermelho do logo. `--mh-marca` é o de AÇÃO (botão, link, aba ativa);
     `--mh-marca-forte` é o estado pressionado/hover, e `--mh-marca-suave` o
     fundo de realce. Um vermelho só pra tudo deixava botão e alerta com o
     mesmo peso visual. */
  --mh-marca:        #f83531;
  --mh-marca-forte:  #d92320;
  --mh-marca-clara:  #fc8f8d;
  --mh-marca-suave:  rgba(248, 53, 49, 0.14);
  --mh-marca-contraste: #ffffff;   /* texto POR CIMA do vermelho */

  /* ---- Superfícies ----------------------------------------------------- */
  /* Três níveis, do fundo pro que está por cima: página → cartão → elevado
     (campo dentro do cartão, linha em hover, menu aberto). Mais de três
     níveis ninguém distingue, menos de três achata a tela. */
  --mh-fundo:        #131418;
  --mh-superficie:   #1c1e24;
  --mh-elevado:      #24272f;
  --mh-borda:        #31353f;
  --mh-borda-forte:  #454b58;

  /* ---- Texto ----------------------------------------------------------- */
  /* `--mh-texto-suave` é a cor de QUASE todo texto de apoio (rótulo, data,
     contagem). Foi escolhida com contraste ≥ 4.5:1 sobre `--mh-superficie`:
     abaixo disso a tela fica "elegante" e ilegível. */
  --mh-texto:        #f2f3f5;
  --mh-texto-suave:  #a9aebb;
  --mh-texto-fraco:  #767d8c;   /* só placeholder e texto desativado */

  /* ---- Estados com SIGNIFICADO ----------------------------------------- */
  /* Não podem virar cinza: elas informam. Cada uma com fundo e texto no par,
     senão o texto escuro fica por cima do fundo escuro. */
  --mh-ok-bg:      rgba(29, 168, 108, 0.18);   --mh-ok-fg:      #4ade9b;
  --mh-aviso-bg:   rgba(217, 158, 21, 0.18);   --mh-aviso-fg:   #f0c14b;
  --mh-erro-bg:    rgba(229, 62, 62, 0.18);    --mh-erro-fg:    #ff8a8a;
  --mh-info-bg:    rgba(56, 132, 255, 0.18);   --mh-info-fg:    #7ab0ff;
  --mh-neutro-bg:  rgba(255, 255, 255, 0.07);  --mh-neutro-fg:  #c3c8d4;

  /* ---- Tipografia ------------------------------------------------------ */
  /* Syne pro que é TÍTULO e rótulo (a voz da marca); DM Sans pro que se lê
     em quantidade. A pilha de reserva é real: se a fonte do Google não
     carregar, a tela continua com o mesmo ritmo, não vira Times New Roman. */
  --mh-fonte-titulo: 'Syne', 'Segoe UI', system-ui, -apple-system, sans-serif;
  --mh-fonte:        'DM Sans', 'Segoe UI', system-ui, -apple-system, sans-serif;

  /* Escala de 1.20 (terça menor): cada degrau é distinguível sem gritar. */
  --mh-t-xs:   0.75rem;   /* 12px — rótulo caixa-alta, selo */
  --mh-t-sm:   0.8125rem; /* 13px — apoio, tabela densa */
  --mh-t-base: 0.9375rem; /* 15px — corpo */
  --mh-t-md:   1.125rem;  /* 18px — título de cartão */
  --mh-t-lg:   1.5rem;    /* 24px — título de página */
  --mh-t-xl:   2rem;      /* 32px — número em destaque */

  --mh-peso-normal: 400;
  --mh-peso-medio:  500;
  --mh-peso-forte:  700;
  --mh-altura:      1.55;   /* entrelinha do corpo */
  --mh-altura-curta: 1.2;   /* entrelinha de título */

  /* ---- Espaço ---------------------------------------------------------- */
  /* Base 4px. Usar a escala é o que faz telas diferentes parecerem o mesmo
     produto — 13px aqui e 15px ali é exatamente o "feito às pressas". */
  --mh-e-1: 4px;
  --mh-e-2: 8px;
  --mh-e-3: 12px;
  --mh-e-4: 16px;
  --mh-e-5: 24px;
  --mh-e-6: 32px;
  --mh-e-7: 48px;

  /* ---- Forma ----------------------------------------------------------- */
  --mh-raio-sm:  6px;
  --mh-raio:     10px;
  --mh-raio-lg:  16px;
  --mh-raio-cheio: 999px;

  /* Sombra some quase toda no tema escuro; o que separa os planos ali é a
     BORDA. Por isso as duas coisas andam juntas nos componentes. */
  --mh-sombra-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
  --mh-sombra:    0 4px 16px rgba(0, 0, 0, 0.35);
  --mh-sombra-lg: 0 18px 48px rgba(0, 0, 0, 0.5);

  --mh-foco: 0 0 0 3px var(--mh-marca-suave);

  /* ---- Movimento ------------------------------------------------------- */
  --mh-rapido: 120ms ease;
  --mh-suave:  220ms cubic-bezier(0.2, 0, 0.2, 1);

  --mh-largura-max: 1180px;

  color-scheme: dark;
}

/* Tema claro. Só os tokens mudam — nenhum componente sabe em que tema está. */
:root[data-tema="claro"] {
  --mh-fundo:        #f6f7f9;
  --mh-superficie:   #ffffff;
  --mh-elevado:      #f1f3f6;
  --mh-borda:        #e2e5ea;
  --mh-borda-forte:  #c8ccd4;

  --mh-texto:        #14161a;
  --mh-texto-suave:  #5a6070;
  --mh-texto-fraco:  #8b91a0;

  --mh-marca:        #d92320;
  --mh-marca-forte:  #b31b19;
  --mh-marca-suave:  rgba(217, 35, 32, 0.10);

  --mh-ok-bg:      #d8f5e7;   --mh-ok-fg:     #0b6b41;
  --mh-aviso-bg:   #fdf0cf;   --mh-aviso-fg:  #855c05;
  --mh-erro-bg:    #fde0e0;   --mh-erro-fg:   #a81f1c;
  --mh-info-bg:    #dfeaff;   --mh-info-fg:   #1d4ea8;
  --mh-neutro-bg:  #eef0f4;   --mh-neutro-fg: #474d5b;

  --mh-sombra-sm: 0 1px 2px rgba(16, 20, 30, 0.06);
  --mh-sombra:    0 4px 14px rgba(16, 20, 30, 0.08);
  --mh-sombra-lg: 0 18px 44px rgba(16, 20, 30, 0.14);

  color-scheme: light;
}

/* --------------------------------------------------------------------------
   2. BASE
   -------------------------------------------------------------------------- */
*,
*::before,
*::after { box-sizing: border-box; }

body {
  margin: 0;
  font-family: var(--mh-fonte);
  font-size: var(--mh-t-base);
  line-height: var(--mh-altura);
  color: var(--mh-texto);
  background: var(--mh-fundo);
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 {
  font-family: var(--mh-fonte-titulo);
  font-weight: var(--mh-peso-forte);
  line-height: var(--mh-altura-curta);
  margin: 0;
  letter-spacing: -0.01em;
}
h1 { font-size: var(--mh-t-lg); }
h2 { font-size: var(--mh-t-md); }
h3 { font-size: var(--mh-t-base); }

p { margin: 0; }

a {
  color: var(--mh-marca);
  text-decoration: none;
  transition: color var(--mh-rapido);
}
a:hover { color: var(--mh-marca-clara); text-decoration: underline; }

img { max-width: 100%; }

/* Foco visível em tudo que recebe teclado. Tirar o anel sem repor é o jeito
   mais rápido de tornar uma tela inutilizável sem mouse. */
:where(a, button, input, select, textarea, [tabindex]):focus-visible {
  outline: 2px solid var(--mh-marca);
  outline-offset: 2px;
}

[hidden] { display: none !important; }

::placeholder { color: var(--mh-texto-fraco); }

@media (prefers-reduced-motion: reduce) {
  * { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}

/* --------------------------------------------------------------------------
   3. ESTRUTURA DE PÁGINA
   -------------------------------------------------------------------------- */
.mh-pagina {
  max-width: var(--mh-largura-max);
  margin: 0 auto;
  padding: var(--mh-e-6) var(--mh-e-5) var(--mh-e-7);
}

/* Cabeçalho de tela: título e ação principal na mesma linha; no celular a
   ação cai pra baixo em vez de espremer o título. */
.mh-cabecalho {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--mh-e-4);
  flex-wrap: wrap;
  margin-bottom: var(--mh-e-5);
}
.mh-cabecalho h1 { display: flex; align-items: center; gap: var(--mh-e-2); }
.mh-cabecalho .mh-sub {
  color: var(--mh-texto-suave);
  font-size: var(--mh-t-sm);
  margin-top: var(--mh-e-1);
  max-width: 62ch;   /* linha longa demais cansa: ~65 caracteres é o limite */
}

/* Barra de filtros/ações acima de uma lista. */
.mh-barra {
  display: flex;
  align-items: center;
  gap: var(--mh-e-2);
  flex-wrap: wrap;
  margin-bottom: var(--mh-e-4);
}
.mh-barra .mh-cresce { flex: 1 1 240px; min-width: 0; }

.mh-secao { margin-bottom: var(--mh-e-6); }

/* --------------------------------------------------------------------------
   4. BOTÕES
   -------------------------------------------------------------------------- */
.mh-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--mh-e-2);
  padding: 9px var(--mh-e-4);
  border: 1px solid transparent;
  border-radius: var(--mh-raio-sm);
  background: var(--mh-elevado);
  color: var(--mh-texto);
  font-family: var(--mh-fonte);
  font-size: var(--mh-t-sm);
  font-weight: var(--mh-peso-medio);
  line-height: 1.2;
  cursor: pointer;
  white-space: nowrap;
  transition: background var(--mh-rapido), border-color var(--mh-rapido),
              color var(--mh-rapido), transform var(--mh-rapido);
}
.mh-btn:hover { background: var(--mh-borda); text-decoration: none; }
.mh-btn:active { transform: translateY(1px); }
.mh-btn:disabled,
.mh-btn[aria-disabled="true"] { opacity: 0.5; cursor: not-allowed; transform: none; }

/* Uma ação principal por tela. Duas competindo já é nenhuma. */
.mh-btn--principal {
  background: var(--mh-marca);
  color: var(--mh-marca-contraste);
  font-weight: var(--mh-peso-forte);
}
.mh-btn--principal:hover { background: var(--mh-marca-forte); color: var(--mh-marca-contraste); }

.mh-btn--contorno {
  background: transparent;
  border-color: var(--mh-borda-forte);
  color: var(--mh-texto);
}
.mh-btn--contorno:hover { background: var(--mh-elevado); border-color: var(--mh-marca); }

.mh-btn--discreto {
  background: transparent;
  color: var(--mh-texto-suave);
  padding-inline: var(--mh-e-2);
}
.mh-btn--discreto:hover { background: var(--mh-elevado); color: var(--mh-texto); }

/* Destrutivo só fica vermelho sólido no hover: enquanto a intenção não está
   clara, ele não disputa atenção com a ação principal. */
.mh-btn--perigo {
  background: transparent;
  border-color: var(--mh-erro-fg);
  color: var(--mh-erro-fg);
}
.mh-btn--perigo:hover {
  background: var(--mh-erro-fg);
  border-color: var(--mh-erro-fg);
  color: var(--mh-marca-contraste);
}

.mh-btn--sm { padding: 6px var(--mh-e-3); font-size: var(--mh-t-xs); }
.mh-btn--icone { padding: 7px; width: 32px; height: 32px; }

/* --------------------------------------------------------------------------
   5. CAMPOS
   -------------------------------------------------------------------------- */
.mh-campo,
.mh-pagina input[type="text"],
.mh-pagina input[type="search"],
.mh-pagina input[type="email"],
.mh-pagina input[type="password"],
.mh-pagina input[type="number"],
.mh-pagina input[type="date"],
.mh-pagina input[type="url"],
.mh-pagina select,
.mh-pagina textarea {
  width: 100%;
  padding: 9px var(--mh-e-3);
  background: var(--mh-elevado);
  color: var(--mh-texto);
  border: 1px solid var(--mh-borda);
  border-radius: var(--mh-raio-sm);
  font-family: var(--mh-fonte);
  font-size: var(--mh-t-sm);
  transition: border-color var(--mh-rapido), box-shadow var(--mh-rapido);
}
.mh-campo:focus,
.mh-pagina :is(input, select, textarea):focus {
  outline: none;
  border-color: var(--mh-marca);
  box-shadow: var(--mh-foco);
}
.mh-pagina textarea { resize: vertical; min-height: 72px; line-height: var(--mh-altura); }
.mh-campo--auto { width: auto; }

/* Grupo de opções (rádio) e anexo — Central de Pedidos, 26/10/2026. O
   fieldset vinha com a moldura branca do navegador e o "Escolher arquivo"
   cinza do Windows, fora do tema. */
.mh-pagina fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
.mh-pagina :is(input[type="radio"], input[type="checkbox"]) { accent-color: var(--mh-marca); }
.mh-pagina input[type="file"] { max-width: 100%; color: var(--mh-texto-suave); font-family: var(--mh-fonte); font-size: var(--mh-t-sm); }
.mh-pagina input[type="file"]::file-selector-button {
  margin-right: var(--mh-e-3);
  padding: 8px var(--mh-e-4);
  border: 1px solid var(--mh-borda-forte);
  border-radius: var(--mh-raio-sm);
  background: transparent;
  color: var(--mh-texto);
  font-family: var(--mh-fonte);
  font-weight: var(--mh-peso-medio);
  cursor: pointer;
}
.mh-pagina input[type="file"]::file-selector-button:hover { border-color: var(--mh-marca); }

.mh-rotulo {
  display: block;
  font-family: var(--mh-fonte-titulo);
  font-size: var(--mh-t-xs);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--mh-texto-suave);
  margin-bottom: var(--mh-e-1);
}
.mh-ajuda { font-size: var(--mh-t-xs); color: var(--mh-texto-suave); margin-top: var(--mh-e-1); }

.mh-form { display: grid; gap: var(--mh-e-4); }
.mh-form-2 { display: grid; grid-template-columns: 1fr 1fr; gap: var(--mh-e-3); }
@media (max-width: 640px) { .mh-form-2 { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------------------
   6. CARTÃO
   -------------------------------------------------------------------------- */
.mh-cartao {
  background: var(--mh-superficie);
  border: 1px solid var(--mh-borda);
  border-radius: var(--mh-raio);
  padding: var(--mh-e-4);
  box-shadow: var(--mh-sombra-sm);
}
.mh-cartao + .mh-cartao { margin-top: var(--mh-e-3); }

/* Cartão que é link pra outro lugar: sobe de leve e a borda acende. */
.mh-cartao--clicavel {
  display: block;
  color: inherit;
  transition: border-color var(--mh-suave), transform var(--mh-suave),
              box-shadow var(--mh-suave);
}
.mh-cartao--clicavel:hover {
  border-color: var(--mh-marca);
  transform: translateY(-2px);
  box-shadow: var(--mh-sombra);
  text-decoration: none;
  color: inherit;
}

.mh-cartao-topo {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--mh-e-3);
  margin-bottom: var(--mh-e-2);
}
.mh-cartao-titulo {
  font-family: var(--mh-fonte-titulo);
  font-size: var(--mh-t-md);
  font-weight: var(--mh-peso-forte);
  color: var(--mh-texto);
}
.mh-cartao-meta { font-size: var(--mh-t-xs); color: var(--mh-texto-suave); }

/* Grade de cartões que se ajusta sozinha — sem media query por quantidade. */
.mh-grade {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: var(--mh-e-3);
}

/* --------------------------------------------------------------------------
   7. PASTILHA
   -------------------------------------------------------------------------- */
.mh-selo {
  display: inline-flex;
  align-items: center;
  gap: var(--mh-e-1);
  padding: 2px 10px;
  border-radius: var(--mh-raio-cheio);
  background: var(--mh-neutro-bg);
  color: var(--mh-neutro-fg);
  font-size: var(--mh-t-xs);
  font-weight: var(--mh-peso-medio);
  white-space: nowrap;
}
.mh-selo--marca  { background: var(--mh-marca-suave); color: var(--mh-marca-clara); }
.mh-selo--ok     { background: var(--mh-ok-bg);    color: var(--mh-ok-fg); }
.mh-selo--aviso  { background: var(--mh-aviso-bg); color: var(--mh-aviso-fg); }
.mh-selo--erro   { background: var(--mh-erro-bg);  color: var(--mh-erro-fg); }
.mh-selo--info   { background: var(--mh-info-bg);  color: var(--mh-info-fg); }

/* --------------------------------------------------------------------------
   8. TABELA
   -------------------------------------------------------------------------- */
/* Tabela larga rola DENTRO da própria caixa. Sem isto, é a página inteira que
   ganha barra horizontal e o menu sai da tela no celular. */
.mh-tabela-caixa {
  overflow-x: auto;
  border: 1px solid var(--mh-borda);
  border-radius: var(--mh-raio);
  background: var(--mh-superficie);
}
.mh-tabela { width: 100%; border-collapse: collapse; font-size: var(--mh-t-sm); }
.mh-tabela th {
  font-family: var(--mh-fonte-titulo);
  font-size: var(--mh-t-xs);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--mh-texto-suave);
  text-align: left;
  padding: var(--mh-e-3);
  border-bottom: 1px solid var(--mh-borda);
  white-space: nowrap;
}
.mh-tabela td { padding: var(--mh-e-3); border-bottom: 1px solid var(--mh-borda); }
.mh-tabela tr:last-child td { border-bottom: none; }
.mh-tabela tbody tr:hover { background: var(--mh-elevado); }
.mh-tabela .mh-dir { text-align: right; font-variant-numeric: tabular-nums; }

/* --------------------------------------------------------------------------
   9. MODAL
   -------------------------------------------------------------------------- */
.mh-modal {
  width: min(560px, calc(100vw - var(--mh-e-6)));
  max-height: calc(100vh - var(--mh-e-7));
  padding: 0;
  border: 1px solid var(--mh-borda);
  border-radius: var(--mh-raio-lg);
  background: var(--mh-superficie);
  color: var(--mh-texto);
  box-shadow: var(--mh-sombra-lg);
}
.mh-modal::backdrop { background: rgba(8, 9, 12, 0.66); backdrop-filter: blur(2px); }
.mh-modal-topo {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--mh-e-3);
  padding: var(--mh-e-4);
  border-bottom: 1px solid var(--mh-borda);
}
.mh-modal-corpo { padding: var(--mh-e-4); overflow-y: auto; display: grid; gap: var(--mh-e-3); }
.mh-modal-pe {
  display: flex;
  justify-content: flex-end;
  gap: var(--mh-e-2);
  padding: var(--mh-e-4);
  border-top: 1px solid var(--mh-borda);
}

/* --------------------------------------------------------------------------
   10. AVISOS E VAZIO
   -------------------------------------------------------------------------- */
.mh-aviso {
  display: flex;
  align-items: flex-start;
  gap: var(--mh-e-2);
  padding: var(--mh-e-3) var(--mh-e-4);
  border-radius: var(--mh-raio-sm);
  border-left: 3px solid currentColor;
  background: var(--mh-neutro-bg);
  color: var(--mh-neutro-fg);
  font-size: var(--mh-t-sm);
  margin-bottom: var(--mh-e-3);
}
.mh-aviso--ok    { background: var(--mh-ok-bg);    color: var(--mh-ok-fg); }
.mh-aviso--erro  { background: var(--mh-erro-bg);  color: var(--mh-erro-fg); }
.mh-aviso--atencao { background: var(--mh-aviso-bg); color: var(--mh-aviso-fg); }

/* Tela vazia não é erro: diz o que fazer agora. */
.mh-vazio {
  text-align: center;
  padding: var(--mh-e-7) var(--mh-e-4);
  border: 1px dashed var(--mh-borda-forte);
  border-radius: var(--mh-raio);
  color: var(--mh-texto-suave);
  font-size: var(--mh-t-sm);
}
.mh-vazio strong { color: var(--mh-texto); }

/* --------------------------------------------------------------------------
   11. AJUDAS
   -------------------------------------------------------------------------- */
.mh-suave  { color: var(--mh-texto-suave); }
.mh-pequeno { font-size: var(--mh-t-sm); }
.mh-mini   { font-size: var(--mh-t-xs); }
.mh-forte  { font-weight: var(--mh-peso-forte); }
.mh-titulo-fonte { font-family: var(--mh-fonte-titulo); }
.mh-numero { font-family: var(--mh-fonte-titulo); font-size: var(--mh-t-xl); font-weight: 800; line-height: 1; }
.mh-linha  { display: flex; align-items: center; gap: var(--mh-e-2); flex-wrap: wrap; }
.mh-empurra { margin-left: auto; }

@media (max-width: 720px) {
  .mh-pagina { padding: var(--mh-e-4) var(--mh-e-3) var(--mh-e-6); }
  h1 { font-size: 1.3rem; }
  .mh-cabecalho { gap: var(--mh-e-3); }
}

/* --------------------------------------------------------------------------
   12. GRAMÁTICA "PAINEL" (07/10/2026 — Modelo 1 escolhido pela Manu)
   --------------------------------------------------------------------------
   A Manu escolheu o Modelo 1 ("Painel") como o padrão de organização do
   Portal do Monitor inteiro. As reclamações que ele resolve: botão demais
   perto do título, número em Syne 800 difícil de ler, cada aba com um jeito
   próprio. A gramática é a mesma em toda tela:

     cabeçalho (título + contexto curto + 1 ação principal + "Mais ações ▾")
     → faixa de urgência, .mh-agora (só quando há algo urgente)
     → faixa de 3 a 5 cartões-resumo
     → abas/filtros em pílula com contador
     → conteúdo em cartões com título claro.

   Os componentes moram AQUI (e não no portal) porque não são do monitor:
   qualquer sistema do grupo que queira o mesmo desenho usa as mesmas
   classes. Número é DM Sans (legível), Syne só no título de página. */

/* ---- Menu "Mais ações ▾" ------------------------------------------------
   Agrupa o que não é a ação do dia. O botão é um <button> com
   aria-expanded; a lista abre logo abaixo, alinhada à direita. Grupos têm
   rótulo; o destrutivo (Excluir) vem separado no fim, em vermelho. */
.mh-menu { position: relative; display: inline-block; }
.mh-menu-lista {
  position: absolute; right: 0; top: calc(100% + 6px); z-index: 60;
  min-width: 248px; max-height: 70vh; overflow-y: auto;
  padding: var(--mh-e-2) 0;
  background: var(--mh-superficie);
  border: 1px solid var(--mh-borda-forte);
  border-radius: var(--mh-raio);
  box-shadow: var(--mh-sombra-lg);
}
.mh-menu-lista[hidden] { display: none; }
.mh-menu-grupo {
  padding: var(--mh-e-2) var(--mh-e-4) var(--mh-e-1);
  font-size: var(--mh-t-xs); font-weight: var(--mh-peso-forte);
  letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--mh-texto-fraco);
}
.mh-menu-item {
  display: block; width: 100%; text-align: left;
  padding: 8px var(--mh-e-4);
  background: none; border: 0; cursor: pointer;
  font-family: var(--mh-fonte); font-size: var(--mh-t-base);
  color: var(--mh-texto); line-height: 1.35;
}
.mh-menu-item:hover { background: var(--mh-elevado); color: var(--mh-texto); text-decoration: none; }
.mh-menu-item small { display: block; color: var(--mh-texto-suave); font-size: var(--mh-t-xs); }
.mh-menu-sep { height: 1px; background: var(--mh-borda); margin: var(--mh-e-2) 0; }
.mh-menu-item--perigo { color: var(--mh-erro-fg); }
.mh-menu-item--perigo:hover { background: var(--mh-erro-bg); color: var(--mh-erro-fg); }

/* ---- Faixa de urgência (.mh-agora) -------------------------------------
   Só existe quando há urgência. O motivo vai POR EXTENSO e em DM Sans de
   corpo — a Syne larga espremida neste cartão era a principal queixa de
   leitura (06/10). */
.mh-agora {
  display: flex; align-items: center; gap: var(--mh-e-3);
  padding: var(--mh-e-4) var(--mh-e-5);
  margin-bottom: var(--mh-e-4);
  background: var(--mh-erro-bg);
  border: 1px solid color-mix(in srgb, var(--mh-erro-fg) 28%, transparent);
  border-left: 3px solid var(--mh-marca);
  border-radius: var(--mh-raio);
  color: var(--mh-texto);
  font-size: 1.0625rem;  /* 17px: é a frase mais importante da tela */
  line-height: 1.5;
}
.mh-agora-icone {
  flex: 0 0 auto; width: 30px; height: 30px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--mh-marca-clara); color: #4a0b0a;
  font-weight: var(--mh-peso-forte);
}
.mh-agora strong { font-weight: var(--mh-peso-forte); }
.mh-agora--aviso { background: var(--mh-aviso-bg); border-left-color: var(--mh-aviso-fg);
  border-color: color-mix(in srgb, var(--mh-aviso-fg) 28%, transparent); }
.mh-agora--aviso .mh-agora-icone { background: var(--mh-aviso-fg); color: #3a2a00; }

/* ---- Faixa de cartões-resumo --------------------------------------------
   3 a 5 números que importam naquela tela, colados numa faixa só (no
   celular viram duas colunas). O tom pinta SÓ o valor; o cartão "destaque"
   (o próximo passo da ficha) ganha fundo próprio. */
.mh-resumos {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  margin-bottom: var(--mh-e-5);
  background: var(--mh-superficie);
  border: 1px solid var(--mh-borda);
  border-radius: var(--mh-raio);
  overflow: hidden;
}
.mh-resumo {
  padding: var(--mh-e-4) var(--mh-e-5);
  border-left: 1px solid var(--mh-borda);
  min-width: 0;
  color: inherit;
}
.mh-resumo:first-child { border-left: 0; }
a.mh-resumo:hover { background: var(--mh-elevado); text-decoration: none; color: inherit; }
.mh-resumo-rotulo { font-size: var(--mh-t-sm); font-weight: var(--mh-peso-medio); color: var(--mh-texto-suave); margin-bottom: var(--mh-e-2); }
.mh-resumo-valor {
  font-family: var(--mh-fonte); font-weight: var(--mh-peso-forte);
  font-size: 1.5rem; line-height: 1.15; color: var(--mh-texto);
  font-variant-numeric: tabular-nums; word-break: break-word;
}
.mh-resumo-nota { font-size: var(--mh-t-sm); color: var(--mh-texto-suave); margin-top: var(--mh-e-1); line-height: 1.5; }
.mh-resumo--perigo .mh-resumo-valor { color: var(--mh-erro-fg); }
.mh-resumo--aviso  .mh-resumo-valor { color: var(--mh-aviso-fg); }
.mh-resumo--ok     .mh-resumo-valor { color: var(--mh-ok-fg); }
.mh-resumo--destaque { background: var(--mh-erro-bg); }
.mh-resumo--destaque .mh-resumo-valor { font-size: var(--mh-t-md); line-height: 1.35; }
.mh-resumo--calmo { background: var(--mh-neutro-bg); }
.mh-resumo--calmo .mh-resumo-valor { font-size: var(--mh-t-md); color: var(--mh-texto-suave); }
@media (max-width: 720px) {
  .mh-resumos { grid-template-columns: 1fr 1fr; }
  .mh-resumo { border-left: 0; border-top: 1px solid var(--mh-borda); }
  .mh-resumo:nth-child(-n+2) { border-top: 0; }
  .mh-resumo:nth-child(even) { border-left: 1px solid var(--mh-borda); }
  .mh-resumo--destaque { grid-column: 1 / -1; border-left: 0 !important; }
}

/* ---- Abas e filtros em pílula, com contador ------------------------------ */
.mh-abas { display: flex; gap: var(--mh-e-2); flex-wrap: wrap; margin-bottom: var(--mh-e-5); }
.mh-aba {
  display: inline-flex; align-items: center; gap: var(--mh-e-2);
  padding: 9px 18px;
  border: 1px solid var(--mh-borda-forte); border-radius: var(--mh-raio-cheio);
  background: transparent; color: var(--mh-texto);
  font-family: var(--mh-fonte); font-size: var(--mh-t-base); font-weight: var(--mh-peso-medio);
  cursor: pointer; white-space: nowrap; text-decoration: none;
}
.mh-aba:hover { border-color: var(--mh-texto-suave); color: var(--mh-texto); text-decoration: none; }
.mh-aba.ativa, .mh-aba[aria-current] { border-color: var(--mh-marca); background: var(--mh-marca-suave); }
.mh-aba-conta {
  display: inline-block; min-width: 20px; padding: 0 6px;
  border-radius: var(--mh-raio-cheio);
  background: var(--mh-elevado); color: var(--mh-texto-suave);
  font-size: var(--mh-t-xs); font-weight: var(--mh-peso-forte); text-align: center; line-height: 20px;
}
.mh-aba.ativa .mh-aba-conta, .mh-aba[aria-current] .mh-aba-conta { background: var(--mh-marca); color: var(--mh-marca-contraste); }
.mh-aba-conta--alerta { background: var(--mh-erro-bg); color: var(--mh-erro-fg); }
@media (max-width: 720px) {
  .mh-abas { flex-wrap: nowrap; overflow-x: auto; padding-bottom: var(--mh-e-1); scrollbar-width: thin; }
  .mh-aba { flex: 0 0 auto; padding: 8px 14px; }
  /* `--quebra`: no celular as pílulas descem de linha em vez de rolar pro
     lado (Eduardo, 26/10: nada de barra de rolagem lateral). */
  .mh-abas--quebra { flex-wrap: wrap; overflow-x: visible; }
}

/* ---- Título de bloco em caixa-alta ("URGENTES · HOJE") ------------------- */
.mh-bloco-titulo {
  font-family: var(--mh-fonte-titulo); font-size: var(--mh-t-sm); font-weight: var(--mh-peso-forte);
  letter-spacing: 0.08em; text-transform: uppercase; color: var(--mh-texto-suave);
  margin: 0 0 var(--mh-e-3);
}

/* ---- Anel de nota (0–100) ------------------------------------------------
   A nota de 0 a 100 numa linha de lista. `--p` é a nota; a cor vem do
   modificador. Desenho só com CSS (conic-gradient), sem SVG por linha. */
.mh-anel {
  --p: 0; --cor: var(--mh-texto-fraco);
  flex: 0 0 auto; width: 40px; height: 40px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  background:
    radial-gradient(closest-side, var(--mh-superficie) 76%, transparent 78% 100%),
    conic-gradient(var(--cor) calc(var(--p) * 1%), var(--mh-borda) 0);
  font-weight: var(--mh-peso-forte); font-size: var(--mh-t-sm);
  font-variant-numeric: tabular-nums; color: var(--mh-texto);
}
.mh-anel--grande { width: 60px; height: 60px; font-size: var(--mh-t-md); }
.mh-anel--verde    { --cor: var(--mh-ok-fg); }
.mh-anel--amarelo  { --cor: var(--mh-aviso-fg); }
.mh-anel--laranja  { --cor: #f59e4a; }
.mh-anel--vermelho { --cor: var(--mh-erro-fg); }

/* ---- Atalho: cartão que abre um sistema (home do time, 24/10/2026) -------
   Pedido da Bia: a home virou grandes grupos (Comercial, Ferramentas,
   Financeiro...). O mesmo cartão serve pro grupo na home e pro sistema na
   página do grupo: ícone num quadrinho com o tom do sistema (`--cor`), título,
   uma linha de apoio e a seta. No celular é uma LISTA (ícone à esquerda); a
   partir de 720px o `--grupo` fica em pé, como os cartões grandes de antes. */
.mh-grade > .mh-cartao + .mh-cartao { margin-top: 0; }   /* na grade quem espaça é o gap */
.mh-atalho {
  display: grid;
  grid-template-columns: 48px 1fr auto;
  column-gap: var(--mh-e-4);
  align-items: center;
  text-align: left;
}
.mh-atalho-icone {
  --cor: var(--mh-marca);
  width: 48px; height: 48px;
  display: flex; align-items: center; justify-content: center;
  border-radius: var(--mh-raio);
  font-size: 22px; line-height: 1;
  background: color-mix(in srgb, var(--cor) 16%, transparent);
  border: 1px solid color-mix(in srgb, var(--cor) 30%, transparent);
}
.mh-atalho-texto { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.mh-atalho-rotulo {
  font-size: var(--mh-t-xs); font-weight: var(--mh-peso-forte);
  letter-spacing: 0.08em; text-transform: uppercase; color: var(--mh-texto-suave);
}
.mh-atalho-titulo {
  font-family: var(--mh-fonte-titulo); font-size: var(--mh-t-md);
  font-weight: var(--mh-peso-forte); line-height: var(--mh-altura-curta); color: var(--mh-texto);
}
.mh-atalho-desc { font-size: var(--mh-t-sm); color: var(--mh-texto-suave); line-height: 1.45; }
.mh-atalho-seta { color: var(--mh-texto-fraco); font-size: var(--mh-t-md); transition: transform var(--mh-suave), color var(--mh-suave); }
.mh-atalho:hover .mh-atalho-seta { color: var(--mh-marca); transform: translateX(3px); }
@media (min-width: 720px) {
  .mh-atalho--grande {
    grid-template-columns: 1fr auto;
    grid-template-areas: "icone seta" "texto texto";
    row-gap: var(--mh-e-4);
    align-items: start;
    padding: var(--mh-e-5);
    min-height: 168px;
  }
  .mh-atalho--grande .mh-atalho-icone { grid-area: icone; width: 56px; height: 56px; font-size: 26px; border-radius: var(--mh-raio-lg); }
  .mh-atalho--grande .mh-atalho-texto { grid-area: texto; }
  .mh-atalho--grande .mh-atalho-seta { grid-area: seta; }
  .mh-atalho--grande .mh-atalho-titulo { font-size: var(--mh-t-lg); }
}

/* Nome do grupo em texto, com o "mindhub" no vermelho da marca. */
.mh-logo-texto {
  font-family: var(--mh-fonte-titulo); font-size: var(--mh-t-xl); font-weight: 800;
  letter-spacing: -0.03em; line-height: 1; color: var(--mh-texto);
}
.mh-logo-texto span { color: var(--mh-marca); }
a.mh-logo-texto, a.mh-logo-texto:hover { color: var(--mh-texto); text-decoration: none; }
@media (max-width: 720px) { .mh-logo-texto { font-size: var(--mh-t-lg); } }
