/* ============================================================
   EV V2 — overrides/ajustes específicos do Escritório Virtual
   (carregado após theme.css/styles.css no bundle ~/Content/ev-v2-css)
   ============================================================ */

/* Medalhas de qualificação/graduação/kit: as imagens vêm do servidor
   (ImageHelper) sem dimensão; limitamos a altura para o formato de ícone
   do novo layout, em vez de ocuparem a largura toda do card. */
.ev-v2 .kpi-media {
  display: flex;
  align-items: center;
  justify-content: center;
}
.ev-v2 .kpi-media img {
  max-height: 84px;
  width: auto;
  max-width: 100%;
}

/* Trilha de todas as qualificações: medalhas menores por haver várias. */
.ev-v2 .kpi-media.kpi-media-sm img {
  max-height: 56px;
}

/* Medalha/foto à esquerda no mesmo tamanho do .kpi-icon (cards horizontais
   de qualificação/graduação/kit/patrocinador no layout .panel.kpi). */
.ev-v2 .kpi-media-icon {
  width: 46px;
  height: 46px;
  flex-shrink: 0;
  display: grid;
  place-items: center;
}
.ev-v2 .kpi-media-icon img {
  max-width: 46px;
  max-height: 46px;
  width: auto;
  height: auto;
  object-fit: contain;
}

/* Topbar: bandeiras dos seletores de idioma/país. As imagens vêm do servidor
   (UrlIconLanguage / UrlImageCountry) sem dimensão; reduzimos para tamanho de
   ícone, no mesmo formato do modelo (novo layout). */
.ev-v2 .topbar-lang img,
.ev-v2 .topbar-country img {
  width: 20px;
  height: auto;
  max-height: 16px;
  border-radius: 2px;
  vertical-align: middle;
  object-fit: contain;
}
.ev-v2 .topbar-lang .dropdown-item,
.ev-v2 .topbar-country .dropdown-item {
  display: flex;
  align-items: center;
  gap: .5rem;
}

/* Garante a fonte do layout (Inter) nos menus dropdown — alguns navegadores
   não herdam a font-family do body para o conteúdo do .dropdown-menu. */
.ev-v2 .dropdown-menu,
.ev-v2 .dropdown-item,
.ev-v2 .dropdown-header {
    font-family: var(--font-body);
    font-size: 13px;
}

/* Botão "Sair" no rodapé do perfil da sidebar (logout migrado da topbar). */
.ev-v2 .sidebar-logout {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  margin-top: .75rem;
  padding: .55rem .75rem;
  border-radius: 8px;
  color: var(--sidebar-text);
  font-size: .85rem;
  font-weight: 600;
  text-decoration: none;
  transition: background .2s ease, color .2s ease;
}
.ev-v2 .sidebar-logout:hover {
  background: rgba(225, 29, 72, .15);
  color: #fff;
}
.ev-v2 .sidebar-logout i {
  color: var(--danger);
}

/* ============================================================
   Month-picker (Flatpickr + monthSelect) do novo layout.
   O calendario e injetado no <body> (fora de .ev-v2), por isso
   estas regras NAO usam o prefixo .ev-v2. Sao seguras pois o
   bundle ev-v2-css so carrega nas paginas do novo layout.
   ============================================================ */
.flatpickr-calendar {
  border-radius: 12px;
  border: 1px solid var(--card-border);
  box-shadow: 0 12px 32px rgba(16, 24, 64, .16);
  font-family: var(--font-body);
}
.flatpickr-calendar.arrowTop:before,
.flatpickr-calendar.arrowTop:after { border-bottom-color: var(--card-border); }
/* Cabecalho (setas + ano) alinhado verticalmente numa unica linha.
   Por padrao o Flatpickr posiciona setas e ano em absolute, o que deixava
   o ano "mais para cima" que as setas. Aqui passamos para flex centralizado. */
.flatpickr-months { display: flex; align-items: center; padding: 4px 6px; }
.flatpickr-months .flatpickr-prev-month,
.flatpickr-months .flatpickr-next-month {
  position: static; height: auto; padding: 0; line-height: 0;
  display: flex; align-items: center;
}
.flatpickr-months .flatpickr-month { flex: 1 1 auto; height: auto; }
.flatpickr-current-month {
  position: static; width: auto; left: auto; padding: 0; height: auto;
  display: flex; align-items: center; justify-content: center; gap: .15rem;
}
.flatpickr-current-month .numInputWrapper { width: auto; height: auto; }
.flatpickr-current-month input.cur-year { line-height: normal; height: auto; padding: 0; }

.flatpickr-months .flatpickr-month,
.flatpickr-current-month { color: var(--text-strong); font-weight: 700; }
.flatpickr-months .flatpickr-prev-month svg,
.flatpickr-months .flatpickr-next-month svg { fill: var(--text-body); }
.flatpickr-months .flatpickr-prev-month:hover svg,
.flatpickr-months .flatpickr-next-month:hover svg { fill: var(--brand-primary); }

.flatpickr-monthSelect-month {
  border-radius: 8px;
  font-weight: 600;
  color: var(--text-body);
}
.flatpickr-monthSelect-month:hover {
  background: var(--brand-primary-soft);
  color: var(--brand-primary);
}
.flatpickr-monthSelect-month.selected {
  background: var(--brand-primary);
  color: #fff;
}
.flatpickr-monthSelect-month.flatpickr-disabled,
.flatpickr-monthSelect-month.flatpickr-disabled:hover {
  color: var(--text-muted);
  background: transparent;
  opacity: .45;
  cursor: not-allowed;
}

/* Day-picker (Flatpickr em modo data) — mesmo visual da marca do monthSelect. */
.flatpickr-weekday { color: var(--text-muted); font-weight: 600; }
.flatpickr-day:hover,
.flatpickr-day.prevMonthDay:hover,
.flatpickr-day.nextMonthDay:hover {
  background: var(--brand-primary-soft);
  border-color: var(--brand-primary-soft);
  color: var(--brand-primary);
}
.flatpickr-day.today { border-color: var(--brand-primary); }
.flatpickr-day.today:hover { background: var(--brand-primary); border-color: var(--brand-primary); color: #fff; }
.flatpickr-day.selected,
.flatpickr-day.selected:hover,
.flatpickr-day.startRange,
.flatpickr-day.endRange {
  background: var(--brand-primary);
  border-color: var(--brand-primary);
  color: #fff;
}
.flatpickr-day.inRange {
  background: var(--brand-primary-soft);
  border-color: var(--brand-primary-soft);
  box-shadow: -5px 0 0 var(--brand-primary-soft), 5px 0 0 var(--brand-primary-soft);
}
.dropdown-toggle::after {
    margin-left: 0;
}

/* ============================================================
   BOTÕES — modelo do novo layout (.btn-primary-solid de forms.css)
   aplicado a todos os .btn das telas do EV. "Exportar" em verde.
   ============================================================ */
.ev-v2 .btn {
  border: 0;
  border-radius: 10px;
  padding: .65rem 1.5rem;
  font-size: .85rem;
  font-weight: 600;
  line-height: 1.2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .45rem;
  transition: background .15s ease, filter .15s ease, color .15s ease, box-shadow .15s ease;
}
.ev-v2 .btn:focus,
.ev-v2 .btn:focus-visible { outline: none; box-shadow: 0 0 0 3px var(--brand-primary-soft); }

/* Primário / ações principais (calendário, buscar, submit, login...) */
.ev-v2 .btn-primary { background: var(--brand-primary); color: #fff; }
.ev-v2 .btn-primary:hover,
.ev-v2 .btn-primary:active { background: var(--brand-primary-dark); color: #fff; }

/* Info (ex.: Legendas) — variante suave da marca */
.ev-v2 .btn-info { background: var(--brand-primary-soft); color: var(--brand-primary); }
.ev-v2 .btn-info:hover,
.ev-v2 .btn-info:active { background: var(--brand-primary); color: #fff; }

/* Exportar — verde */
.ev-v2 .btn-export,
.ev-v2 .btn-success { background: var(--success); color: #fff; }
.ev-v2 .btn-export:hover,
.ev-v2 .btn-success:hover,
.ev-v2 .btn-export:active,
.ev-v2 .btn-success:active { filter: brightness(.93); color: #fff; }
.ev-v2 .btn-export:focus,
.ev-v2 .btn-success:focus { box-shadow: 0 0 0 3px var(--success-soft); }

/* Perigo */
.ev-v2 .btn-danger { background: var(--danger); color: #fff; }
.ev-v2 .btn-danger:hover,
.ev-v2 .btn-danger:active { filter: brightness(.93); color: #fff; }

/* Aviso */
.ev-v2 .btn-warning { background: var(--warning); color: #fff; }
.ev-v2 .btn-warning:hover { filter: brightness(.95); color: #fff; }

/* Secundário / ghost / outline */
.ev-v2 .btn-secondary,
.ev-v2 .btn-default,
.ev-v2 .btn-light,
.ev-v2 .btn-outline-primary,
.ev-v2 .btn-outline-secondary {
  background: transparent; color: var(--text-body); border: 1px solid var(--card-border);
}
.ev-v2 .btn-secondary:hover,
.ev-v2 .btn-default:hover,
.ev-v2 .btn-light:hover,
.ev-v2 .btn-outline-primary:hover,
.ev-v2 .btn-outline-secondary:hover { background: var(--body-bg); color: var(--text-strong); }

/* Tamanhos */
.ev-v2 .btn-lg { padding: .8rem 1.75rem; font-size: .95rem; border-radius: 12px; }
.ev-v2 .btn-sm { padding: .45rem .9rem; font-size: .78rem; border-radius: 8px; }
.ev-v2 .btn-xs { padding: .3rem .6rem; font-size: .72rem; border-radius: 7px; gap: .3rem; }

/* Botões dentro de input-group (calendário do Ciclo, busca por login):
   mantêm o encaixe com o campo e padding compacto para ícone. */
.ev-v2 .input-group .btn { border-radius: 0 8px 8px 0; padding-left: .9rem; padding-right: .9rem; }
.ev-v2 .input-group > .form-control:first-child { border-radius: 8px 0 0 8px; }

/* ============================================================
   CAMPOS DE FILTRO — modelo do novo layout (.field / .rl-search)
   usado nos filtros Ciclo e Login (rede-indicados-diretos.html).
   ============================================================ */
.ev-v2 .field-label {
  display: block; font-size: .78rem; font-weight: 600;
  color: var(--text-strong); margin-bottom: .35rem;
}
.ev-v2 .field {
  width: 100%; border: 1px solid var(--card-border); border-radius: 10px;
  padding: .6rem .75rem; font-size: .85rem; background: var(--card-bg);
  color: var(--text-strong); font-family: var(--font-body);
  transition: border-color .15s, box-shadow .15s;
}
.ev-v2 .field:focus {
  outline: none; border-color: var(--brand-primary);
  box-shadow: 0 0 0 3px var(--brand-primary-soft);
}
.ev-v2 .rl-search { position: relative; }
.ev-v2 .rl-search .field { padding-right: 2.6rem; cursor: pointer; background: var(--card-bg); color: var(--text-strong); }

/* Campos readonly/disabled aparentam desabilitados (modelo forms.css),
   exceto os pickers interativos dentro de .rl-search (Ciclo, datas). */
.ev-v2 .field[readonly],
.ev-v2 .field:disabled {
  background: var(--body-bg);
  color: var(--text-muted);
  cursor: not-allowed;
}

/* Linha suave separando o titulo do conteudo dentro de um .panel. */
.ev-v2 .panel-title.divider {
  border-bottom: 1px solid var(--card-border);
  padding-bottom: .85rem;
}

/* Cabeçalho de seção padronizado (mesmo estilo do cad-section-head do cadastro):
   o ícone que abre o .panel-title vira uma caixa suave da marca. */
.ev-v2 .panel-title { font-size: .95rem; }
.ev-v2 .panel-title > .bi:first-child {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  background: var(--brand-primary-soft);
  color: var(--brand-primary);
  display: grid;
  place-items: center;
  font-size: .95rem;
  flex-shrink: 0;
}

/* ══════════════════════════════════════════════════════════
   ENTITY CARDS — nova visualização (contatos / endereços)
   ══════════════════════════════════════════════════════════ */
/* Separador entre o formulário de adicionar e a lista de registros */
.ev-v2 .ec-form-sep { border: 0; border-top: 1px solid var(--card-border); margin: 1.25rem 0 0; }

/* Links de divulgação — linha do link + ações (copiar/abrir) */
.ev-v2 .dl-link-row { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin-top: .25rem; font-size: .72rem; color: var(--text-muted); }
.ev-v2 .dl-link-row .link { word-break: break-all; }
.ev-v2 .dl-link-row a,
.ev-v2 .dl-link-row button.copiar { color: var(--brand-primary); text-decoration: none; }
.ev-v2 .dl-link-row button.copiar { background: none; border: 0; padding: 0; cursor: pointer; line-height: 1; font-size: inherit; }
.ev-v2 .dl-link-row a:hover,
.ev-v2 .dl-link-row button.copiar:hover { color: var(--brand-primary-dark); }
.ev-v2 .rl-prod-img { width: 40px; height: 40px; border-radius: 9px; background: var(--card-bg); border: 1px solid var(--card-border); padding: 2px; object-fit: contain; }
.ev-v2 .rl-prod-noimg { width: 40px; height: 40px; border-radius: 9px; display: inline-grid; place-items: center; background: var(--brand-primary-soft); color: var(--brand-primary); font-size: 1.05rem; vertical-align: middle; }
.ev-v2 .rl-code { color: var(--text-muted); }

/* Avatar clicável na topbar (abre o modal de alterar foto) */
.ev-v2 .topbar-user .avatar-link { position: relative; display: inline-flex; cursor: pointer; }
.ev-v2 .topbar-user .avatar-link .avatar-cam {
  position: absolute; right: -2px; bottom: -2px;
  width: 16px; height: 16px; border-radius: 50%;
  background: var(--brand-primary); color: #fff;
  display: grid; place-items: center; font-size: .52rem;
  border: 2px solid var(--card-bg);
  opacity: 0; transition: opacity .15s;
}
.ev-v2 .topbar-user .avatar-link:hover .avatar-cam { opacity: 1; }
.ev-v2 .topbar-user .avatar-link:hover .avatar-img { filter: brightness(.92); }

/* ══════════════════════════════════════════════════════════
   CARTÕES DE CRÉDITO SALVOS (página cartoes-credito)
   ══════════════════════════════════════════════════════════ */
.ev-v2 .saved-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 1.25rem; }
.ev-v2 .saved-card-wrap { display: flex; flex-direction: column; gap: .7rem; }
.ev-v2 .saved-card {
  position: relative; border-radius: 16px; padding: 1.15rem 1.3rem; min-height: 172px;
  background: linear-gradient(135deg, #0a102e 0%, #1e2d6e 100%); color: #fff;
  display: flex; flex-direction: column; justify-content: space-between; overflow: hidden;
  box-shadow: 0 8px 22px rgba(10, 16, 46, .18);
}
.ev-v2 .saved-card::after {
  content: ''; position: absolute; bottom: -40px; right: 20px; width: 140px; height: 140px;
  border-radius: 50%; background: rgba(47, 107, 255, .16); pointer-events: none;
}
.ev-v2 .saved-card .sc-top { display: flex; justify-content: space-between; align-items: flex-start; position: relative; z-index: 1; }
.ev-v2 .saved-card .sc-chip { width: 36px; height: 27px; border-radius: 5px; background: rgba(255, 255, 255, .25); border: 1px solid rgba(255, 255, 255, .35); }
.ev-v2 .saved-card .sc-brand { height: 26px; max-width: 72px; display: flex; align-items: center; justify-content: flex-end; }
.ev-v2 .saved-card .sc-brand svg { height: 26px; width: auto; }
.ev-v2 .saved-card .sc-brand svg path { fill: #fff !important; }
.ev-v2 .saved-card .sc-number { font-family: 'Courier New', monospace; font-size: 1.15rem; letter-spacing: .14em; position: relative; z-index: 1; white-space: nowrap; }
.ev-v2 .saved-card .sc-bottom { display: flex; justify-content: space-between; align-items: flex-end; gap: .5rem; position: relative; z-index: 1; }
.ev-v2 .saved-card .sc-label { font-size: .5rem; text-transform: uppercase; letter-spacing: .06em; color: rgba(255, 255, 255, .5); }
.ev-v2 .saved-card .sc-value { font-size: .74rem; font-weight: 600; text-transform: uppercase; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 170px; }

.ev-v2 .entity-card {
  border: 1px solid var(--card-border);
  border-radius: 14px;
  background: var(--card-bg);
  overflow: visible;
  padding: 1rem;
  gap: .85rem;
  transition: border-color .15s, box-shadow .15s, transform .15s;
}
.ev-v2 .entity-card:hover {
  border-color: var(--brand-primary);
  box-shadow: 0 8px 22px rgba(10, 16, 46, .10);
  transform: translateY(-2px);
}
.ev-v2 .entity-card .ec-top { display: flex; align-items: flex-start; gap: .7rem; }
.ev-v2 .entity-card .ec-avatar {
  width: 40px; height: 40px; border-radius: 11px; flex-shrink: 0;
  display: grid; place-items: center;
  background: var(--brand-primary-soft); color: var(--brand-primary);
  font-size: 1.1rem;
}
.ev-v2 .entity-card .ec-info { min-width: 0; flex: 1; }
.ev-v2 .entity-card .ec-title {
  display: flex; align-items: center; gap: .5rem; flex-wrap: wrap;
  font-weight: 700; font-size: .9rem; color: var(--text-strong);
}
.ev-v2 .entity-card .ec-sub {
  margin-top: .2rem; font-size: .82rem; color: var(--text-muted); line-height: 1.5;
  word-break: break-word;
}
.ev-v2 .entity-card .ec-badge {
  display: inline-flex; align-items: center; gap: .25rem;
  font-size: .62rem; font-weight: 700; text-transform: uppercase; letter-spacing: .03em;
  color: var(--success); background: var(--success-soft);
  padding: .14rem .5rem; border-radius: 99px; white-space: nowrap;
}
.ev-v2 .entity-card .ec-actions {
  display: flex; align-items: center; gap: .45rem; flex-wrap: wrap;
  margin-top: auto; padding-top: .75rem; border-top: 1px dashed var(--card-border);
}
.ev-v2 .entity-card .ec-actions.end { justify-content: flex-end; }
.ev-v2 .ec-btn {
  width: 34px; height: 34px; border-radius: 9px;
  border: 1.5px solid var(--card-border); background: var(--card-bg); color: var(--text-muted);
  display: inline-grid; place-items: center; font-size: .9rem; cursor: pointer;
  transition: all .15s; text-decoration: none;
}
.ev-v2 .ec-btn:hover { border-color: var(--brand-primary); color: var(--brand-primary); }
.ev-v2 .ec-btn.ec-del:hover { border-color: var(--danger); color: var(--danger); background: var(--danger-soft); }
.ev-v2 .ec-set-principal {
  flex: 1; display: inline-flex; align-items: center; gap: .45rem;
  font-size: .78rem; font-weight: 600; color: var(--text-muted);
  text-decoration: none; cursor: pointer; transition: color .15s;
}
.ev-v2 .ec-set-principal:hover { color: var(--brand-primary); }
.ev-v2 .ec-set-principal .radio-off {
  width: 16px; height: 16px; border: 2px solid var(--card-border); border-radius: 50%;
  display: inline-block; flex-shrink: 0; transition: border-color .15s;
}
.ev-v2 .ec-set-principal:hover .radio-off { border-color: var(--brand-primary); }
.ev-v2 .rl-search-btn {
  position: absolute; right: .35rem; top: 50%; transform: translateY(-50%);
  border: 0; background: var(--brand-primary); color: #fff; border-radius: 8px;
  width: 30px; height: 30px; display: grid; place-items: center;
  font-size: .82rem; cursor: pointer; transition: background .15s; padding: 0;
}
.ev-v2 .rl-search-btn:hover { background: var(--brand-primary-dark); }

/* Utilitário de visibilidade usado pelos filtros (toggle via JS).
   O .hidden do Bootstrap 3 não é carregado no layout V2. */
.ev-v2 .hidden { display: none !important; }

/* ============================================================
   MENSAGENS DE VALIDAÇÃO (jQuery validate)
   A mensagem aparece abaixo do input, em vermelho. Os campos dos
   formulários lado a lado usam alinhamento ao topo (não "end"), então
   o erro de um campo não desloca os demais da mesma linha.
   ============================================================ */
.ev-v2 label.error,
.ev-v2 .field-error {
  display: block;
  color: var(--danger);
  font-size: .72rem;
  font-weight: 500;
  line-height: 1.25;
  margin-top: .3rem;
}
.ev-v2 .field.error,
.ev-v2 .field.invalid { border-color: var(--danger); }
/* O input-group-btn de pesquisa de CEP fica relativo para o ícone de feedback. */
.ev-v2 .form-add-address .form-group,
.ev-v2 .form-add-contact .form-group { position: relative; }

/* ============================================================
   MODAIS (ajax-modal) — visual do novo layout
   ============================================================ */
.ev-v2 .modal-content {
  border: 1px solid var(--card-border);
  border-radius: var(--card-radius);
  box-shadow: 0 16px 48px rgba(16, 24, 64, .20);
}
.ev-v2 .modal-header {
  border-bottom: 1px solid var(--card-border);
  padding: 1rem 1.25rem;
  align-items: center;
}
/* Header das modais com o mesmo estilo do .panel-title (tipografia e icone-caixa da marca). */
.ev-v2 .modal-title {
  display: flex; align-items: center; gap: .5rem;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1rem;
  color: var(--text-strong);
  margin: 0;
}
.ev-v2 .modal-title > .bi:first-child {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  background: var(--brand-primary-soft);
  color: var(--brand-primary);
  display: grid;
  place-items: center;
  font-size: .95rem;
  flex-shrink: 0;
}
.ev-v2 .modal-body { padding: 1.25rem; font-size: .88rem; color: var(--text-body); }
.ev-v2 .modal-footer {
  border-top: 1px solid var(--card-border);
  padding: .9rem 1.25rem;
  gap: .5rem;
}

/* ============================================================
   MEUS PEDIDOS — KPIs, estado vazio e coluna de pagamento.
   ============================================================ */
.ev-v2 .mp-kpis {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: .85rem; margin-bottom: 1rem;
}
.ev-v2 .mp-kpi {
  background: var(--card-bg); border: 1px solid var(--card-border);
  border-radius: var(--card-radius); box-shadow: var(--card-shadow);
  padding: .9rem 1rem; display: flex; align-items: center; gap: .75rem;
}
.ev-v2 .mp-kpi__icon {
  width: 40px; height: 40px; border-radius: 11px;
  display: grid; place-items: center; font-size: 1.15rem; flex-shrink: 0;
}
.ev-v2 .mp-kpi__icon.blue   { background: var(--brand-primary-soft); color: var(--brand-primary); }
.ev-v2 .mp-kpi__icon.green  { background: var(--success-soft); color: var(--success); }
.ev-v2 .mp-kpi__icon.purple { background: #f1e8ff; color: var(--brand-accent); }
.ev-v2 .mp-kpi__icon.orange { background: var(--warning-soft); color: var(--warning); }
.ev-v2 .mp-kpi__val { font-family: var(--font-display); font-weight: 800; font-size: 1.45rem; color: var(--text-strong); line-height: 1.1; }
.ev-v2 .mp-kpi__label { font-size: .72rem; color: var(--text-muted); margin-top: .15rem; }

/* Abas de filtro por status (modelo do novo layout) */
.ev-v2 .status-tabs {
  display: flex; gap: 0; overflow-x: auto;
  border-bottom: 1px solid var(--card-border); margin-bottom: 1rem;
}
.ev-v2 .status-tab {
  display: inline-flex; align-items: center; gap: .4rem;
  padding: .75rem 1rem; border: 0; border-bottom: 2px solid transparent;
  background: transparent; font-size: .8rem; font-weight: 600;
  color: var(--text-muted); cursor: pointer; white-space: nowrap;
}
.ev-v2 .status-tab:hover { color: var(--brand-primary); }
.ev-v2 .status-tab.active { color: var(--brand-primary); border-bottom-color: var(--brand-primary); }
.ev-v2 .status-tab .st-count {
  background: var(--body-bg); font-size: .62rem; font-weight: 700;
  padding: .08rem .38rem; border-radius: 99px;
}
.ev-v2 .status-tab.active .st-count { background: var(--brand-primary-soft); color: var(--brand-primary); }

.ev-v2 .orders-empty { padding: 3.5rem 1rem; text-align: center; color: var(--text-muted); }
.ev-v2 .orders-empty .bi { font-size: 3rem; opacity: .25; display: block; margin-bottom: .75rem; }
.ev-v2 .orders-empty p { margin: 0 0 .25rem; font-weight: 600; font-size: .92rem; color: var(--text-strong); }
.ev-v2 .orders-empty small { font-size: .78rem; }

/* Colunas da tabela de pedidos (modelo do novo layout) */
.ev-v2 .mp-order-id { font-weight: 700; color: var(--text-strong); font-size: .85rem; }
.ev-v2 .mp-order-date { font-size: .72rem; color: var(--text-muted); margin-top: .15rem; }
.ev-v2 .mp-products { display: inline-flex; align-items: center; justify-content: center; gap: .3rem; flex-wrap: wrap; }
.ev-v2 .mp-prod-img { height: 20px; max-height: 20px; width: auto; border-radius: 3px; object-fit: contain; vertical-align: middle; }
.ev-v2 .mp-prod-icon { display: inline-grid; place-items: center; color: var(--brand-primary); font-size: .82rem; }
.ev-v2 .op-more { font-size: .6rem; font-weight: 700; color: var(--text-muted); background: var(--body-bg); border: 1px solid var(--card-border); border-radius: 99px; padding: .05rem .4rem; }
.ev-v2 .mp-products-type { font-size: .72rem; color: var(--text-muted); margin-top: .2rem; }
.ev-v2 .mp-points { display: inline-flex; flex-direction: column; gap: .2rem; }
.ev-v2 .mp-pt-row { display: flex; align-items: center; gap: .4rem; font-size: .78rem; }
.ev-v2 .mp-pt-label { font-size: .62rem; font-weight: 700; color: var(--text-muted); background: var(--body-bg); border-radius: 5px; padding: .05rem .35rem; min-width: 34px; text-align: center; }
.ev-v2 .mp-pt-val { font-weight: 700; color: var(--text-strong); }
.ev-v2 .mp-value { font-weight: 800; color: var(--text-strong); font-family: var(--font-display); white-space: nowrap; }
.ev-v2 .mp-delivery { display: inline-flex; align-items: center; gap: .4rem; font-size: .8rem; color: var(--text-body); }
.ev-v2 .mp-delivery .bi { color: var(--text-muted); }
.ev-v2 .mp-track { display: inline-block; font-size: .7rem; margin-top: .15rem; }
.ev-v2 .mp-status { display: inline-flex; align-items: center; gap: .35rem; font-size: .7rem; font-weight: 700; padding: .25rem .6rem; border-radius: 99px; white-space: nowrap; }
.ev-v2 .mp-status.success { background: var(--success-soft); color: var(--success); }
.ev-v2 .mp-status.warning { background: var(--warning-soft); color: var(--warning); }
.ev-v2 .mp-status.danger { background: var(--danger-soft); color: var(--danger); }
/* Dados da coluna "Forma de pagamento" — uma forma por linha, com ícone */
.ev-v2 .mp-pay-line { display: flex; align-items: center; gap: .4rem; font-size: .78rem; color: var(--text-body); white-space: nowrap; padding: .1rem 0; }
.ev-v2 .mp-pay-line .bi { color: var(--brand-primary); font-size: .9rem; flex-shrink: 0; }

/* ===== Modal de detalhes do pedido (modelo do novo layout) ===== */
.ev-v2 .order-modal .modal-dialog { max-width: 760px; }
.ev-v2 .order-modal .modal-content { border-radius: 18px; border: 0; }
.ev-v2 .order-modal .modal-header { padding: 1rem 1.4rem; border-bottom: 1px solid var(--card-border); }
.ev-v2 .order-modal-title { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; }
.ev-v2 .order-modal-id { font-family: var(--font-display); font-weight: 800; font-size: .98rem; color: var(--text-strong); }
.ev-v2 .order-modal .modal-body { padding: 1.25rem 1.4rem; background: var(--body-bg); }
.ev-v2 .modal-section { background: var(--card-bg); border: 1px solid var(--card-border); border-radius: var(--card-radius); padding: 1rem 1.1rem; margin-bottom: .85rem; }
.ev-v2 .modal-section:last-child { margin-bottom: 0; }
.ev-v2 .modal-section-title { font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--text-muted); margin-bottom: .75rem; }
.ev-v2 .modal-product-row { display: flex; align-items: center; gap: .65rem; padding: .55rem 0; border-bottom: 1px solid var(--card-border); }
.ev-v2 .modal-product-row:last-child { border-bottom: 0; }
.ev-v2 .mpr-icon { width: 36px; height: 36px; border-radius: 9px; display: grid; place-items: center; font-size: 1rem; flex-shrink: 0; background: var(--brand-primary-soft); color: var(--brand-primary); overflow: hidden; }
.ev-v2 .mpr-img { width: 100%; height: 100%; object-fit: cover; }
.ev-v2 .mpr-info { flex: 1; min-width: 0; }
.ev-v2 .mpr-name { font-weight: 600; font-size: .83rem; color: var(--text-strong); }
.ev-v2 .mpr-sub { font-size: .72rem; color: var(--text-muted); }
.ev-v2 .mpr-pts { display: flex; gap: .25rem; }
.ev-v2 .mpr-pts .pt-chip { font-size: .62rem; font-weight: 700; padding: .1rem .4rem; border-radius: 6px; background: var(--brand-primary-soft); color: var(--brand-primary); white-space: nowrap; }
.ev-v2 .mpr-val { font-weight: 700; font-size: .88rem; color: var(--text-strong); white-space: nowrap; }
.ev-v2 .modal-points-band { background: var(--brand-primary-soft); border-radius: 10px; padding: .65rem .85rem; display: flex; gap: 1.5rem; margin-top: .65rem; }
.ev-v2 .mpb-item { display: flex; flex-direction: column; gap: .1rem; }
.ev-v2 .mpb-label { font-size: .65rem; color: var(--text-muted); font-weight: 600; text-transform: uppercase; letter-spacing: .04em; }
.ev-v2 .mpb-val { font-family: var(--font-display); font-weight: 800; font-size: 1.05rem; color: var(--brand-primary); }
.ev-v2 .info-row { display: flex; justify-content: space-between; align-items: flex-start; padding: .35rem 0; font-size: .82rem; border-bottom: 1px dashed var(--card-border); }
.ev-v2 .info-row:last-child { border-bottom: 0; }
.ev-v2 .info-row .ir-label { color: var(--text-muted); }
.ev-v2 .info-row .ir-val { font-weight: 600; color: var(--text-strong); text-align: right; max-width: 60%; }
.ev-v2 .order-timeline { display: flex; align-items: flex-start; gap: 0; position: relative; padding: .35rem 0; overflow-x: auto; }
.ev-v2 .tl-step { display: flex; flex-direction: column; align-items: center; flex: 1; position: relative; min-width: 80px; }
.ev-v2 .tl-step + .tl-step::before { content: ''; position: absolute; top: 14px; right: calc(50% + 14px); left: calc(-50% + 14px); height: 2px; background: var(--card-border); }
.ev-v2 .tl-step.done + .tl-step::before { background: var(--success); }
.ev-v2 .tl-step.current + .tl-step::before { background: linear-gradient(90deg, var(--success), var(--card-border)); }
.ev-v2 .tl-dot { width: 28px; height: 28px; border-radius: 50%; border: 2px solid var(--card-border); background: var(--card-bg); display: grid; place-items: center; font-size: .8rem; color: var(--text-muted); position: relative; z-index: 1; flex-shrink: 0; }
.ev-v2 .tl-step.done .tl-dot { background: var(--success); border-color: var(--success); color: #fff; }
.ev-v2 .tl-step.current .tl-dot { background: var(--brand-primary); border-color: var(--brand-primary); color: #fff; box-shadow: 0 0 0 4px var(--brand-primary-soft); }
.ev-v2 .tl-step.cancelled .tl-dot { background: var(--danger); border-color: var(--danger); color: #fff; }
.ev-v2 .tl-label { font-size: .66rem; font-weight: 600; color: var(--text-muted); text-align: center; margin-top: .45rem; line-height: 1.3; }
.ev-v2 .tl-step.done .tl-label { color: var(--success); }
.ev-v2 .tl-step.current .tl-label { color: var(--brand-primary); font-weight: 700; }
.ev-v2 .tl-step.cancelled .tl-label { color: var(--danger); }
.ev-v2 .tl-date { font-size: .6rem; color: var(--text-muted); text-align: center; margin-top: .15rem; }
.ev-v2 .order-modal .modal-footer { padding: .85rem 1.4rem; border-top: 1px solid var(--card-border); display: flex; justify-content: space-between; align-items: center; }
.ev-v2 .btn-reorder { padding: .58rem 1.2rem; border: 0; border-radius: 12px; background: var(--brand-primary); color: #fff; font-family: var(--font-display); font-weight: 700; font-size: .85rem; cursor: pointer; display: inline-flex; align-items: center; gap: .45rem; text-decoration: none; }
.ev-v2 .btn-reorder:hover { opacity: .9; color: #fff; }
.ev-v2 .btn-modal-close { padding: .58rem 1.1rem; border: 1.5px solid var(--card-border); border-radius: 12px; background: var(--card-bg); color: var(--text-body); font-weight: 600; font-size: .84rem; cursor: pointer; }
.ev-v2 .btn-modal-close:hover { border-color: var(--text-muted); }

/* ===== Visualizar pedido (tabelas e comprovantes) ===== */
.ev-v2 .data-table tr.row-section td { background: var(--body-bg); font-size: .8rem; color: var(--text-strong); }
.ev-v2 .data-table tr.row-total td { background: var(--brand-primary-soft); color: var(--text-strong); }
.ev-v2 .data-table tr.row-danger td { color: var(--danger); }
.ev-v2 .op-item { display: flex; align-items: center; gap: .55rem; }
.ev-v2 .op-item-img { width: 34px; height: 34px; border-radius: 7px; object-fit: cover; border: 1px solid var(--card-border); flex-shrink: 0; }
.ev-v2 .op-item-icon { width: 34px; height: 34px; border-radius: 7px; display: inline-grid; place-items: center; background: var(--brand-primary-soft); color: var(--brand-primary); flex-shrink: 0; }
.ev-v2 .proof-img { height: 64px; width: auto; border-radius: 8px; border: 2px solid var(--card-border); object-fit: cover; }
.ev-v2 .proof-img.is-confirmed { border-color: var(--success); }
.ev-v2 .proof-img.is-denied { border-color: var(--danger); }

/* ===== Transferências (observações + alerta senha) ===== */
.ev-v2 .obs-box { background: var(--warning-soft); border: 1px solid color-mix(in srgb, var(--warning) 30%, transparent); border-radius: 12px; padding: .85rem 1rem; }
.ev-v2 .obs-box-title { font-size: .82rem; font-weight: 700; color: var(--text-strong); display: flex; align-items: center; gap: .4rem; margin-bottom: .4rem; }
.ev-v2 .obs-box-title .bi { color: var(--warning); }
.ev-v2 .obs-box-list { margin: 0; padding-left: 1.2rem; font-size: .82rem; color: var(--text-body); line-height: 1.6; }
.ev-v2 .obs-box-list li { margin-bottom: .15rem; }
.ev-v2 .alert-modal-icon { width: 46px; height: 46px; border-radius: 12px; background: var(--warning-soft); color: var(--warning); display: grid; place-items: center; font-size: 1.4rem; flex-shrink: 0; }
.ev-v2 .tr-saldo-hint { margin-top: .45rem; font-size: .78rem; color: var(--text-muted); display: flex; align-items: center; gap: .35rem; }
.ev-v2 .tr-saldo-hint strong { color: var(--success); font-weight: 700; font-size: .88rem; }
.ev-v2 .tr-currency-wrap { display: flex; align-items: stretch; }
.ev-v2 .tr-currency-prefix { display: flex; align-items: center; padding: 0 .75rem; background: var(--body-bg); border: 1px solid var(--card-border); border-right: 0; border-radius: 10px 0 0 10px; font-size: .85rem; font-weight: 700; color: var(--text-muted); }
.ev-v2 .tr-currency-input { border-radius: 0 10px 10px 0 !important; text-align: right; }
/* Iguala a altura dos <select>.field à dos inputs (.field) — o select nativo renderiza mais baixo */
.ev-v2 select.field { height: calc(1.5em + 1.2rem + 2px); }

/* ===== Bônus mensal ===== */
.ev-v2 .bm-timestamp { font-size: .78rem; color: var(--text-muted); display: inline-flex; align-items: center; gap: .35rem; }
.ev-v2 .bm-timestamp strong { color: var(--text-body); font-weight: 600; }
.ev-v2 .bm-alert-open { display: flex; align-items: center; gap: .75rem; background: var(--warning-soft); border: 1px solid color-mix(in srgb, var(--warning) 30%, transparent); border-radius: 12px; padding: .85rem 1.1rem; font-size: .84rem; color: var(--text-strong); font-weight: 500; }
.ev-v2 .bm-alert-open .bi { color: var(--warning); font-size: 1.1rem; flex-shrink: 0; }
.ev-v2 .bm-table thead th { background: var(--body-bg); }
/* Tabela do modal "ver detalhes" do Bonus mensal: cabecalho com fundo (o base .data-table nao tem)
   e sticky, ja' que o corpo do modal rola com a lista de consultores. */
.ev-v2 .detalhes-bonus thead th { background: var(--body-bg); position: sticky; top: 0; z-index: 2; }

/* Autocomplete leve: input .field + lista de sugestoes via AJAX (ex.: campo Franquia na
   Transferencia para franquia, que no layout antigo era um autocomplete jQuery UI). */
.ev-v2 .field-ac { position: relative; }
.ev-v2 .field-ac-list { position: absolute; z-index: 30; top: calc(100% + 4px); left: 0; right: 0; background: var(--card-bg); border: 1px solid var(--card-border); border-radius: 10px; box-shadow: 0 8px 24px rgba(16,24,64,.12); max-height: 240px; overflow-y: auto; display: none; }
.ev-v2 .field-ac-list .ac-item { padding: .55rem .8rem; font-size: .82rem; color: var(--text-body); cursor: pointer; }
.ev-v2 .field-ac-list .ac-item:hover { background: var(--brand-primary-soft); color: var(--brand-primary); }
.ev-v2 .bm-th-tipo { display: inline-flex; align-items: center; gap: .4rem; font-size: .8rem; }
.ev-v2 .bm-th-tipo .bi { color: var(--brand-primary); }
.ev-v2 .bm-th-mes { white-space: nowrap; min-width: 120px; color: var(--brand-primary); font-weight: 700; font-size: .8rem; }
.ev-v2 .bm-tipo { color: var(--text-body); font-size: .84rem; white-space: nowrap; }
.ev-v2 .bm-valor { font-size: .84rem; color: var(--text-strong); white-space: nowrap; min-width: 120px; }
.ev-v2 .bm-total-row td { border-top: 2px solid var(--card-border) !important; background: var(--body-bg); padding: .85rem .75rem; }
.ev-v2 .bm-total-label { font-family: var(--font-display); font-weight: 800; font-size: .88rem; color: var(--text-strong); text-transform: uppercase; letter-spacing: .03em; }
.ev-v2 .bm-total-val { font-family: var(--font-display); font-weight: 800; font-size: 1rem; color: var(--brand-primary); white-space: nowrap; }
.ev-v2 .variacao { font-size: .62rem; font-weight: 700; padding: .05rem .3rem; border-radius: 5px; margin-right: .3rem; }
.ev-v2 .variacao.up { color: var(--success); background: var(--success-soft); }
.ev-v2 .variacao.down { color: var(--danger); background: var(--danger-soft); }

/* ===== Listas de rede (indicados) ===== */
.ev-v2 .rl-table { min-width: 640px; }
.ev-v2 .rl-table thead th { background: var(--body-bg); }
.ev-v2 .rl-login-cell { display: inline-flex; align-items: center; gap: .4rem; font-size: .83rem; font-weight: 600; color: var(--text-strong); white-space: nowrap; }
.ev-v2 .rl-lupa-inline { width: 22px; height: 22px; border-radius: 6px; background: var(--brand-primary-soft); color: var(--brand-primary); display: inline-grid; place-items: center; font-size: .72rem; transition: background .12s, color .12s; flex-shrink: 0; text-decoration: none; vertical-align: middle; }
.ev-v2 .rl-lupa-inline:hover { background: var(--brand-primary); color: #fff; }
.ev-v2 .rl-perfil-badge { display: inline-block; font-size: .72rem; font-weight: 600; border-radius: 99px; padding: .15rem .65rem; white-space: nowrap; background: var(--body-bg); color: var(--text-body); }
.ev-v2 .rl-perfil-badge.consultor { background: var(--brand-primary-soft); color: var(--brand-primary); }
.ev-v2 .rl-perfil-badge.consumidor { background: var(--success-soft); color: var(--success); }
.ev-v2 .rl-bool { display: inline-grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; font-size: .75rem; font-weight: 700; }
.ev-v2 .rl-bool.yes { background: var(--success-soft); color: var(--success); }
.ev-v2 .rl-bool.no { background: var(--danger-soft); color: var(--danger); }
.ev-v2 .rl-acao-btn { display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 8px; background: var(--brand-primary); color: #fff; font-size: .85rem; text-decoration: none; transition: background .15s; }
.ev-v2 .rl-acao-btn:hover { background: var(--brand-primary-dark); color: #fff; }
.ev-v2 .rl-table-footer { padding: .75rem 1.2rem; border-top: 1px solid var(--card-border); font-size: .78rem; color: var(--text-muted); }
.ev-v2 .rl-table-footer strong { color: var(--text-strong); }
.ev-v2 .data-table tr.line-through td { text-decoration: line-through; opacity: .6; }
.ev-v2 .rl-consultor-foto { width: 96px; height: 96px; border-radius: 50%; object-fit: cover; border: 3px solid var(--brand-primary-soft); }
.ev-v2 .rl-table-ativ { min-width: 900px; }
.ev-v2 .rl-nivel { display: inline-grid; place-items: center; min-width: 26px; height: 26px; padding: 0 .35rem; border-radius: 7px; font-size: .72rem; font-weight: 800; font-family: var(--font-display); background: var(--brand-primary); color: #fff; vertical-align: middle; margin-right: .5rem; }
.ev-v2 .rl-contato { font-size: .78rem; color: var(--text-muted); white-space: nowrap; font-family: monospace; }
.ev-v2 .qual-cell { font-size: .82rem; }
.ev-v2 .qual-cell.none { color: var(--text-muted); }
.ev-v2 .rl-totalizador { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .5rem; padding: .75rem 1.2rem; border-bottom: 1px solid var(--card-border); font-size: .83rem; color: var(--text-body); }
.ev-v2 .rl-totalizador strong { color: var(--text-strong); font-weight: 700; }
.ev-v2 .rl-last-update { font-size: .72rem; color: var(--text-muted); }
.ev-v2 .rl-last-update strong { color: var(--text-strong); }
.ev-v2 .rl-check-label { display: inline-flex; align-items: center; gap: .45rem; font-size: .83rem; color: var(--text-body); cursor: pointer; }
.ev-v2 .rl-check-label input { width: 16px; height: 16px; accent-color: var(--brand-primary); cursor: pointer; }
/* Limita o tamanho do pin de qualificacao/graduacao na tabela */
.ev-v2 .rl-pin-cell img { height: 30px; width: auto; vertical-align: middle; margin-right: .25rem; }
/* Top cadastro - badge de posicao (1/2/3 com cores de medalha) */
.ev-v2 .tc-pos { display: inline-flex; align-items: center; gap: .3rem; min-width: 40px; justify-content: center; font-size: .85rem; font-weight: 800; font-family: var(--font-display); color: var(--text-strong); background: var(--body-bg); border-radius: 8px; padding: .25rem .6rem; }
.ev-v2 .tc-pos-1 { background: linear-gradient(135deg,#fbbf24,#d97706); color: #fff; }
.ev-v2 .tc-pos-2 { background: linear-gradient(135deg,#c0c0c0,#8a8a8a); color: #fff; }
.ev-v2 .tc-pos-3 { background: linear-gradient(135deg,#cd7f32,#a05a2c); color: #fff; }
.ev-v2 .tc-pos .bi { font-size: .78rem; }
/* Linha do proprio consultor (nivel 0) na linha ascendente */
.ev-v2 .data-table tr.rl-row-self td { background: var(--brand-primary-soft); font-weight: 600; }

@media (max-width: 991.98px) { .ev-v2 .mp-kpis { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 575.98px) { .ev-v2 .mp-kpis { grid-template-columns: 1fr; } }

/* ============================================================
   PAGINAÇÃO — restiliza o _pagination global (markup BS3:
   ul.pagination > li > a) para o visual do novo layout, sem
   alterar o partial compartilhado.
   ============================================================ */
.ev-v2 .pagination {
  display: flex; flex-wrap: wrap; justify-content: center;
  gap: .35rem; padding: 0; margin: 1.25rem 0; list-style: none;
}
.ev-v2 .pagination > li { display: inline-flex; }
.ev-v2 .pagination > li > a {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 38px; height: 38px; padding: 0 .6rem;
  border: 1px solid var(--card-border); border-radius: 10px;
  background: var(--card-bg); color: var(--text-body);
  font-size: .82rem; font-weight: 600; cursor: pointer;
  transition: background .15s, border-color .15s, color .15s;
}
.ev-v2 .pagination > li > a:hover { border-color: var(--brand-primary); color: var(--brand-primary); background: var(--brand-primary-soft); }
.ev-v2 .pagination > li.active > a {
  background: var(--brand-primary); border-color: var(--brand-primary); color: #fff;
}
.ev-v2 .pagination > li > a.disabled,
.ev-v2 .pagination > li > a.removable {
  border-color: transparent; background: transparent; color: var(--text-muted);
  cursor: default; pointer-events: none;
}

/* ============================================================
   LOADING do blockUI no layout V2 (adicionar/editar/excluir
   contato e endereço): cartão branco com o spinner moderno.
   ============================================================ */
.ev-v2 .ev-block-loading {
  display: flex; flex-direction: column; align-items: center; gap: .8rem;
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  border-radius: var(--card-radius);
  box-shadow: 0 16px 48px rgba(16, 24, 64, .20);
  padding: 1.7rem 2.4rem;
}
/* Faz a caixa do blockUI encolher ao conteudo (spinner + texto) e centraliza, em vez do width padrao de 30% */
.ev-v2 .blockMsg { width: auto !important; left: 50% !important; right: auto !important; transform: translateX(-50%); }

/* ============================================================
   NOTAS FISCAIS — miniatura do arquivo, botao de exclusao e
   area de upload (uploadifive) dentro do modal.
   ============================================================ */
.ev-v2 .nf-table { min-width: 820px; }
/* display !important para vencer o ".fancybox { display: block!important }" do plugin v2 (o link tem as 2 classes). */
.ev-v2 .nf-thumb { display: inline-flex !important; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 8px; background: var(--brand-primary-soft); color: var(--brand-primary); font-size: 1rem; line-height: 1; text-decoration: none; transition: background .15s, color .15s; }
.ev-v2 .nf-thumb > i, .ev-v2 .nf-thumb .bi { line-height: 1; display: block; }
.ev-v2 .nf-thumb:hover { background: var(--brand-primary); color: #fff; }
.ev-v2 .rl-acao-btn.danger { background: var(--danger); }
.ev-v2 .rl-acao-btn.danger:hover { background: color-mix(in srgb, var(--danger) 82%, #000); }
.ev-v2 .nf-upload-field .uploadifive-button { border-radius: 8px !important; }

/* ============================================================
   DADOS PJ — miniatura do documento na tabela e subtitulo.
   ============================================================ */
.ev-v2 .dpj-doc-thumb { display: inline-grid; place-items: center; min-width: 40px; height: 40px; padding: 2px; border-radius: 8px; background: var(--body-bg); color: var(--danger); font-size: 1.2rem; text-decoration: none; overflow: hidden; }
.ev-v2 .dpj-doc-thumb img { height: 36px; width: auto; border-radius: 6px; display: block; }
.ev-v2 .dpj-subtitle { display: flex; align-items: center; gap: .5rem; font-size: .85rem; font-weight: 700; color: var(--text-strong); margin: 1.4rem 0 .6rem; }
/* Checkbox "Ativo" em destaque (habilita o formulario PJ) */
.ev-v2 .check-ativo-box { display: inline-flex; align-items: center; background: var(--brand-primary-soft); border: 1px solid color-mix(in srgb, var(--brand-primary) 32%, transparent); border-radius: 12px; padding: .8rem 1.15rem; margin-bottom: 1.3rem; cursor: pointer; transition: border-color .15s, background .15s; }
.ev-v2 .check-ativo-box:hover { border-color: var(--brand-primary); }
.ev-v2 .check-ativo-box input[type=checkbox] { width: 22px; height: 22px; accent-color: var(--brand-primary); cursor: pointer; flex-shrink: 0; margin-right: .8rem; }
.ev-v2 .check-ativo-box .ca-title { display: block; font-weight: 700; color: var(--text-strong); font-size: .95rem; line-height: 1.2; }
.ev-v2 .check-ativo-box .ca-hint { display: block; font-size: .76rem; color: var(--text-body); margin-top: .15rem; }
/* Senha financeira - dicas, link "esqueci", feedback e botao desabilitado */
.ev-v2 .pin-feedback.warn { color: var(--warning); }
.ev-v2 .btn-primary-solid:disabled, .ev-v2 .btn-primary-solid[disabled] { background: #b9c0d1; color: #fff; cursor: not-allowed; box-shadow: none; opacity: 1; }
.ev-v2 .sf-tips { font-size: .82rem; color: var(--text-body); line-height: 1.7; padding-left: 1.1rem; margin: 0; }
.ev-v2 .sf-link { display: inline-flex; align-items: center; gap: .4rem; font-size: .82rem; font-weight: 600; color: var(--brand-primary); text-decoration: none; }
.ev-v2 .sf-link:hover { text-decoration: underline; }
/* Banner explicativo + lista de regras (senha financeira ev-v2, layout inspirado no MMNIDB). */
.ev-v2 .info-banner { display: flex; gap: 1rem; align-items: flex-start; background: var(--brand-primary-soft); border: 1px solid var(--card-border); border-radius: 14px; padding: 1.1rem 1.2rem; margin-bottom: 1.5rem; }
.ev-v2 .info-banner .ib-icon { width: 44px; height: 44px; border-radius: 12px; background: var(--brand-primary); color: #fff; display: grid; place-items: center; font-size: 1.3rem; flex-shrink: 0; }
.ev-v2 .info-banner .ib-title { font-size: .95rem; font-weight: 700; color: var(--text-strong); margin-bottom: .2rem; }
.ev-v2 .info-banner .ib-text { font-size: .82rem; color: var(--text-body); line-height: 1.5; }
.ev-v2 .info-banner .ib-text strong { color: var(--brand-primary); }
.ev-v2 .rules-list { display: flex; flex-direction: column; gap: .6rem; }
.ev-v2 .rule { display: flex; align-items: center; gap: .55rem; font-size: .82rem; color: var(--text-muted); }
.ev-v2 .rule .bi { font-size: 1rem; flex-shrink: 0; }
.ev-v2 .rule.ok { color: var(--success); }
/* Pin de qualificacao nas tabelas de relatorio (Unilevel Qualificacoes/Graduacoes):
   ImageHelper.GetImgQualification devolve <img class="kmed"> de 150px; sem tamanho fica gigante
   e desproporcional na celula. Constrange a um tamanho de icone alinhado ao texto. */
.ev-v2 td.pin { white-space: nowrap; }
.ev-v2 td.pin img, .ev-v2 .data-table img.kmed { width: 26px; height: 26px; object-fit: contain; vertical-align: middle; margin-right: .4rem; }

/* dpj-subtitle com divider (ex.: "Chave PIX" em Dados bancarios) */
.ev-v2 .dpj-subtitle.divider { margin-top: 2.4rem; border-bottom: 1px solid var(--card-border); padding-bottom: .7rem; }

/* Dependentes: fundo branco do card (contraste com o fundo da pagina) */
.ev-v2 .dep-card { background: var(--card-bg); }
/* Dependentes: destaque do card confirmado e status como pill */
.ev-v2 .dep-card.confirmado { border-color: var(--success); }
.ev-v2 .dep-card.confirmado .dep-head { background: var(--success-soft); color: var(--success); }
.ev-v2 .dep-status { display: inline-flex; align-items: center; gap: .3rem; font-weight: 700; font-size: .72rem; padding: .15rem .55rem; border-radius: 99px; }
.ev-v2 .dep-status.confirmado { background: var(--success-soft); color: var(--success); }
.ev-v2 .dep-status.pendente { background: var(--warning-soft); color: var(--warning); }
.ev-v2 .dep-foot a { cursor: pointer; }

/* Combo pesquisavel (ev-select) */
.ev-v2 .ev-select { position: relative; }
.ev-v2 .ev-select-toggle { display: flex; align-items: center; justify-content: space-between; gap: .5rem; width: 100%; text-align: left; cursor: pointer; }
.ev-v2 .ev-select-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ev-v2 .ev-select-label.is-placeholder { color: var(--text-muted); }
.ev-v2 .ev-select-caret { color: var(--text-muted); font-size: .8rem; transition: transform .15s; flex-shrink: 0; }
.ev-v2 .ev-select.open .ev-select-caret { transform: rotate(180deg); }
.ev-v2 .ev-select-panel { position: absolute; z-index: 30; top: calc(100% + 4px); left: 0; right: 0; background: var(--card-bg); border: 1px solid var(--card-border); border-radius: 12px; box-shadow: 0 16px 40px rgba(16,24,64,.16); padding: .5rem; display: none; }
.ev-v2 .ev-select.open .ev-select-panel { display: block; }
.ev-v2 .ev-select-search { position: relative; margin-bottom: .4rem; }
.ev-v2 .ev-select-search .bi { position: absolute; left: .6rem; top: 50%; transform: translateY(-50%); color: var(--text-muted); font-size: .85rem; pointer-events: none; }
.ev-v2 .ev-select-search-input { width: 100%; border: 1px solid var(--card-border); border-radius: 8px; padding: .5rem .6rem .5rem 2rem; font-size: .82rem; color: var(--text-strong); }
.ev-v2 .ev-select-search-input:focus { outline: none; border-color: var(--brand-primary); box-shadow: 0 0 0 3px var(--brand-primary-soft); }
.ev-v2 .ev-select-list { max-height: 240px; overflow-y: auto; }
.ev-v2 .ev-select-option { padding: .5rem .6rem; border-radius: 8px; font-size: .85rem; cursor: pointer; color: var(--text-body); }
.ev-v2 .ev-select-option:hover { background: var(--brand-primary-soft); color: var(--brand-primary); }
.ev-v2 .ev-select-option.selected { background: var(--brand-primary); color: #fff; }

/* ============================================================
   MINHAS VENDAS ONLINE (vendas-online.css adaptado)
   ============================================================ */
.ev-v2 .vo-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: .85rem; margin-bottom: .85rem; }
.ev-v2 .vo-kpi { background: var(--card-bg); border: 1px solid var(--card-border); border-radius: var(--card-radius); padding: .9rem 1.1rem; display: flex; align-items: center; gap: .75rem; }
.ev-v2 .vo-kpi__icon { width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center; font-size: 1.2rem; flex-shrink: 0; }
.ev-v2 .vo-kpi__icon.blue { background: var(--brand-primary-soft); color: var(--brand-primary); }
.ev-v2 .vo-kpi__icon.green { background: var(--success-soft); color: var(--success); }
.ev-v2 .vo-kpi__icon.purple { background: #f1e8ff; color: var(--brand-accent); }
.ev-v2 .vo-kpi__icon.teal { background: #e0f5f3; color: #0d9488; }
.ev-v2 .vo-kpi__val { font-family: var(--font-display); font-weight: 800; font-size: 1.5rem; color: var(--text-strong); line-height: 1; }
.ev-v2 .vo-kpi__label { font-size: .72rem; color: var(--text-muted); margin-top: .1rem; }
.ev-v2 .vo-kpi__trend { margin-top: .2rem; font-size: .68rem; font-weight: 600; display: flex; align-items: center; gap: .2rem; }
.ev-v2 .vo-kpi__trend.up { color: var(--success); }
.ev-v2 .vo-kpi__trend.down { color: var(--danger); }

.ev-v2 .vo-main-grid { display: grid; grid-template-columns: 1fr 320px; gap: .85rem; align-items: start; }
.ev-v2 .vo-col { display: flex; flex-direction: column; gap: .85rem; }

.ev-v2 .store-card { background: var(--card-bg); border: 1px solid var(--card-border); border-radius: var(--card-radius); overflow: hidden; }
.ev-v2 .store-card-header { background: linear-gradient(135deg, var(--sidebar-bg, #131a3a) 0%, #1e2d6e 100%); padding: 1.25rem 1.4rem; position: relative; overflow: hidden; }
.ev-v2 .store-card-header::before { content: ''; position: absolute; top: -40px; right: -40px; width: 180px; height: 180px; border-radius: 50%; background: rgba(255,255,255,.05); }
.ev-v2 .sch-status { display: inline-flex; align-items: center; gap: .35rem; background: rgba(34,197,94,.15); color: #4ade80; font-size: .7rem; font-weight: 700; padding: .25rem .65rem; border-radius: 99px; margin-bottom: .65rem; }
.ev-v2 .sch-status::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: #4ade80; }
.ev-v2 .sch-title { font-family: var(--font-display); font-weight: 800; font-size: 1.1rem; color: #fff; margin-bottom: .3rem; position: relative; }
.ev-v2 .sch-sub { font-size: .78rem; color: rgba(255,255,255,.55); position: relative; }

.ev-v2 .store-link-section { padding: 1rem 1.4rem; border-bottom: 1px solid var(--card-border); }
.ev-v2 .store-link-label { font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--text-muted); margin-bottom: .45rem; }
.ev-v2 .store-link-row { display: flex; gap: .4rem; }
.ev-v2 .store-link-input { flex: 1; padding: .55rem .75rem; border: 1.5px solid var(--card-border); border-radius: 11px; font-size: .8rem; color: var(--brand-primary); font-weight: 600; background: var(--brand-primary-soft); min-width: 0; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ev-v2 .store-link-btn { padding: .55rem .85rem; border: 0; border-radius: 11px; font-size: .8rem; font-weight: 600; cursor: pointer; display: flex; align-items: center; gap: .35rem; transition: all .15s; white-space: nowrap; flex-shrink: 0; }
.ev-v2 .slb-copy { background: var(--brand-primary); color: #fff; }
.ev-v2 .slb-copy:hover { background: var(--brand-primary-dark); }
.ev-v2 .slb-qr { background: var(--body-bg); border: 1.5px solid var(--card-border); color: var(--text-body); }
.ev-v2 .slb-qr:hover { border-color: var(--brand-primary); color: var(--brand-primary); }

.ev-v2 .share-chips { display: flex; gap: .4rem; padding: .85rem 1.4rem; border-bottom: 1px solid var(--card-border); flex-wrap: wrap; align-items: center; }
.ev-v2 .share-chips-label { font-size: .72rem; color: var(--text-muted); font-weight: 600; }
.ev-v2 .share-chip { display: inline-flex; align-items: center; gap: .35rem; padding: .38rem .75rem; border-radius: 99px; font-size: .76rem; font-weight: 600; cursor: pointer; border: 0; transition: opacity .15s; }
.ev-v2 .share-chip:hover { opacity: .85; }
.ev-v2 .sc-whatsapp { background: #25D366; color: #fff; }
.ev-v2 .sc-telegram { background: #229ED9; color: #fff; }
.ev-v2 .sc-facebook { background: #1877F2; color: #fff; }
.ev-v2 .sc-email { background: var(--body-bg); border: 1.5px solid var(--card-border); color: var(--text-body); }

.ev-v2 .store-stats { display: grid; grid-template-columns: repeat(3, 1fr); }
.ev-v2 .store-stats .ss-item { padding: .85rem 1.4rem; border-right: 1px solid var(--card-border); }
.ev-v2 .store-stats .ss-item:last-child { border-right: 0; }
.ev-v2 .ss-val { font-family: var(--font-display); font-weight: 800; font-size: 1.2rem; color: var(--text-strong); }
.ev-v2 .ss-label { font-size: .72rem; color: var(--text-muted); margin-top: .1rem; }

.ev-v2 .panel-hd { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1rem; gap: .65rem; flex-wrap: wrap; }
.ev-v2 .panel-hd .panel-title { margin: 0; }

/* Energia (nova/editar assinatura solar): espaco entre os panels empilhados */
.ev-v2 .form-energia .panel { margin-bottom: 1.5rem; }
/* Divisor no cabecalho flex do painel: a linha atravessa a largura toda (nao so' o titulo,
   como acontece quando o .divider fica no <h3> dentro de um flex). */
.ev-v2 .panel-hd.divider { border-bottom: 1px solid var(--card-border); padding-bottom: .85rem; }

/* Select "Banco" (jquery.multiple.select) alinhado ao estilo .field do ev-v2:
   o plugin desenha um botao .ms-choice com estilo proprio (menor, borda cinza, cantos 4px),
   destoando dos demais selects. Neutralizamos a caixa do wrapper e vestimos o .ms-choice. */
.ev-v2 .ms-parent.field { padding: 0; overflow: hidden; }
.ev-v2 .ms-choice {
  display: flex;
  align-items: center;
  height: 100%;
  min-height: 40px;
  border: 0;
  border-radius: inherit;
  background: transparent;
  padding: 0 12px;
  color: var(--text-body);
  font-size: inherit;
  line-height: 1.2;
}
.ev-v2 .ms-choice > span { position: static; top: auto; left: auto; padding: 0; line-height: 1.2; color: inherit; }
.ev-v2 .ms-choice > span.placeholder { color: var(--text-muted); }
.ev-v2 .ms-choice > div { position: static; margin-left: auto; flex-shrink: 0; width: auto; height: auto; border: 0; background: none; }
.ev-v2 .ms-choice > div::before {
  content: "\F282"; /* bi-chevron-down */
  font-family: "bootstrap-icons";
  font-size: .8rem;
  color: var(--text-muted);
}
.ev-v2 .ms-choice > div.open::before { content: "\F286"; /* bi-chevron-up */ }
.ev-v2 .ms-drop { border: 1px solid var(--card-border); border-radius: 10px; box-shadow: var(--shadow-md, 0 8px 24px rgba(0,0,0,.08)); }
.ev-v2 .ms-drop .ms-search input { border-radius: 8px; border: 1px solid var(--card-border); }
.ev-v2 .period-sel { padding: .38rem .65rem; border: 1.5px solid var(--card-border); border-radius: 10px; font-size: .76rem; color: var(--text-body); background: var(--body-bg); cursor: pointer; }

/* Mais vendidos - sem barra de progresso (mais espaco para o nome) */
.ev-v2 .prod-rank-item { display: flex; align-items: center; gap: .65rem; padding: .6rem 0; border-bottom: 1px solid var(--card-border); }
.ev-v2 .prod-rank-item:last-child { border-bottom: 0; }
.ev-v2 .pr-pos { font-family: var(--font-display); font-weight: 800; font-size: .9rem; color: var(--text-muted); width: 24px; text-align: center; flex-shrink: 0; }
.ev-v2 .pr-icon { width: 34px; height: 34px; border-radius: 9px; display: grid; place-items: center; font-size: .95rem; flex-shrink: 0; }
.ev-v2 .pr-icon.c-purple { background: #f1e8ff; color: var(--brand-accent); }
.ev-v2 .pr-icon.c-pink { background: var(--danger-soft); color: var(--danger); }
.ev-v2 .pr-icon.c-blue { background: var(--brand-primary-soft); color: var(--brand-primary); }
.ev-v2 .pr-icon.c-green { background: var(--success-soft); color: var(--success); }
.ev-v2 .pr-icon.c-orange { background: var(--warning-soft); color: var(--warning); }
.ev-v2 .pr-info { flex: 1; min-width: 0; }
.ev-v2 .pr-name { font-size: .82rem; font-weight: 600; color: var(--text-strong); }
.ev-v2 .pr-qty { font-size: .7rem; color: var(--text-muted); }
.ev-v2 .pr-val { font-weight: 700; font-size: .82rem; color: var(--text-strong); text-align: right; white-space: nowrap; flex-shrink: 0; }

/* Tabela de pedidos de clientes - celulas especiais */
.ev-v2 .vo-cell-sub { font-size: .72rem; color: var(--text-muted); }
.ev-v2 .cust-cell { display: flex; align-items: center; gap: .55rem; }
.ev-v2 .cust-avatar { width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; font-size: .78rem; font-weight: 700; color: #fff; flex-shrink: 0; background: var(--brand-primary); }
.ev-v2 .cust-name { font-weight: 600; font-size: .82rem; color: var(--text-strong); }
.ev-v2 .cust-city { font-size: .7rem; color: var(--text-muted); }
.ev-v2 .comm-badge { display: inline-block; background: var(--success-soft); color: var(--success); font-weight: 700; font-size: .75rem; padding: .2rem .55rem; border-radius: 99px; white-space: nowrap; }
.ev-v2 .vo-status-badge { display: inline-block; font-weight: 700; font-size: .7rem; padding: .2rem .6rem; border-radius: 99px; white-space: nowrap; }
.ev-v2 .vo-status-badge.ok { background: var(--success-soft); color: var(--success); }
.ev-v2 .vo-status-badge.bad { background: var(--danger-soft); color: var(--danger); }
.ev-v2 .vo-status-badge.neutral { background: var(--brand-primary-soft); color: var(--brand-primary); }

/* ============================================================
   CUPONS E VOUCHERS (vendas-cupons.css adaptado)
   ============================================================ */
.ev-v2 .cv-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: .85rem; margin-bottom: .85rem; }
.ev-v2 .cv-kpi { background: var(--card-bg); border: 1px solid var(--card-border); border-radius: var(--card-radius); padding: .9rem 1.1rem; display: flex; align-items: center; gap: .75rem; }
.ev-v2 .cv-kpi__icon { width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center; font-size: 1.2rem; flex-shrink: 0; }
.ev-v2 .cv-kpi__icon.blue { background: var(--brand-primary-soft); color: var(--brand-primary); }
.ev-v2 .cv-kpi__icon.green { background: var(--success-soft); color: var(--success); }
.ev-v2 .cv-kpi__icon.purple { background: #f1e8ff; color: var(--brand-accent); }
.ev-v2 .cv-kpi__icon.orange { background: var(--warning-soft); color: var(--warning); }
.ev-v2 .cv-kpi__val { font-family: var(--font-display); font-weight: 800; font-size: 1.45rem; color: var(--text-strong); line-height: 1; }
.ev-v2 .cv-kpi__label { font-size: .72rem; color: var(--text-muted); margin-top: .1rem; }

.ev-v2 .cv-panel { background: var(--card-bg); border: 1px solid var(--card-border); border-radius: var(--card-radius); overflow: hidden; }
.ev-v2 .cv-panel-hd { padding: .9rem 1.25rem; border-bottom: 1px solid var(--card-border); display: flex; align-items: center; justify-content: space-between; gap: .65rem; flex-wrap: wrap; }
.ev-v2 .cv-panel-title { font-family: var(--font-display); font-weight: 700; font-size: .95rem; color: var(--text-strong); display: flex; align-items: center; gap: .5rem; }
.ev-v2 .cv-panel .pagination { padding: 0 1.25rem; margin: 0 0 1.1rem; }
.ev-v2 .cv-panel .orders-empty { padding: 2rem 1.25rem; }

.ev-v2 .coupon-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: .85rem; padding: 1.1rem 1.25rem; }
.ev-v2 .coupon-card { border: 1.5px solid var(--card-border); border-radius: 16px; overflow: hidden; transition: border-color .15s, box-shadow .15s; position: relative; }
.ev-v2 .coupon-card:hover { border-color: var(--brand-primary); box-shadow: 0 4px 16px rgba(47,107,255,.08); }
.ev-v2 .coupon-card.expired { opacity: .55; }
.ev-v2 .cc-body { padding: 1rem 1.1rem .8rem; position: relative; }
.ev-v2 .cc-head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin-bottom: .6rem; }
.ev-v2 .cc-discount { font-family: var(--font-display); font-weight: 800; font-size: 1.1rem; padding: .3rem .7rem; border-radius: 10px; line-height: 1; white-space: nowrap; flex-shrink: 0; }
.ev-v2 .cc-discount.pct { background: var(--brand-primary); color: #fff; }
.ev-v2 .cc-discount.fixed { background: var(--success); color: #fff; }
.ev-v2 .cc-discount.frete { background: var(--brand-accent); color: #fff; font-size: .8rem; }
.ev-v2 .cc-type { font-size: .66rem; color: var(--text-muted); text-transform: uppercase; letter-spacing: .06em; font-weight: 700; }
.ev-v2 .cc-code-row { display: flex; align-items: center; gap: .5rem; margin-bottom: .55rem; }
.ev-v2 .cc-code { font-family: 'Courier New', monospace; font-size: 1.1rem; font-weight: 800; color: var(--brand-primary); letter-spacing: .1em; flex: 1; min-width: 0; background: var(--brand-primary-soft); border: 1px dashed color-mix(in srgb, var(--brand-primary) 40%, transparent); border-radius: 9px; padding: .45rem .7rem; text-align: center; }
.ev-v2 .cc-copy-btn { width: 28px; height: 28px; border-radius: 7px; border: 1.5px solid var(--card-border); background: var(--body-bg); color: var(--text-muted); display: grid; place-items: center; cursor: pointer; font-size: .8rem; transition: all .15s; flex-shrink: 0; }
.ev-v2 .cc-copy-btn:hover { border-color: var(--brand-primary); color: var(--brand-primary); }
.ev-v2 .cc-desc { font-size: .73rem; color: var(--text-muted); margin-bottom: 1.1rem; }
.ev-v2 .cc-usage-bar { margin-top: .5rem; }
.ev-v2 .cc-usage-hd { display: flex; justify-content: space-between; font-size: .65rem; color: var(--text-muted); margin-bottom: .25rem; }
.ev-v2 .cc-bar-bg { height: 4px; background: var(--card-border); border-radius: 99px; overflow: hidden; }
.ev-v2 .cc-bar-fill { height: 100%; border-radius: 99px; background: var(--brand-primary); transition: width .4s; }
.ev-v2 .cc-divider { display: flex; align-items: center; position: relative; height: 20px; }
.ev-v2 .cc-divider::before, .ev-v2 .cc-divider::after { content: ''; position: absolute; top: 50%; transform: translateY(-50%); width: 16px; height: 16px; border-radius: 50%; background: var(--body-bg); border: 1.5px solid var(--card-border); z-index: 1; }
.ev-v2 .cc-divider::before { left: -8px; }
.ev-v2 .cc-divider::after { right: -8px; }
.ev-v2 .cc-divider-line { flex: 1; border-top: 1.5px dashed var(--card-border); margin: 0 .65rem; }
.ev-v2 .cc-footer { padding: .65rem 1.1rem .85rem; display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.ev-v2 .cc-stats { display: flex; gap: .85rem; }
.ev-v2 .cc-stat { display: flex; flex-direction: column; gap: .05rem; }
.ev-v2 .cc-stat-val { font-family: var(--font-display); font-weight: 700; font-size: .88rem; color: var(--text-strong); }
.ev-v2 .cc-stat-label { font-size: .64rem; color: var(--text-muted); }
.ev-v2 .coupon-status { display: inline-flex; align-items: center; gap: .28rem; padding: .2rem .6rem; border-radius: 99px; font-size: .65rem; font-weight: 700; white-space: nowrap; }
.ev-v2 .cs-ativo { background: var(--success-soft); color: var(--success); }
.ev-v2 .cs-expirado { background: var(--body-bg); color: var(--text-muted); border: 1px solid var(--card-border); }
.ev-v2 .cs-pausado { background: var(--warning-soft); color: var(--warning); }
.ev-v2 .cs-utilizado { background: var(--danger-soft); color: var(--danger); }
.ev-v2 .cc-code.used { text-decoration: line-through; color: var(--text-muted); background: var(--body-bg); border-color: var(--card-border); }

.ev-v2 .voucher-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: .85rem; padding: 1.1rem 1.25rem; }
.ev-v2 .voucher-card { border: 1.5px solid var(--card-border); border-radius: 16px; overflow: hidden; transition: border-color .15s; position: relative; }
.ev-v2 .voucher-card:hover { border-color: var(--brand-accent); }
.ev-v2 .voucher-card.used { opacity: .55; }
.ev-v2 .vc-header { padding: .85rem 1rem .7rem; display: flex; align-items: flex-start; gap: .65rem; }
.ev-v2 .vc-icon { width: 40px; height: 40px; border-radius: 11px; display: grid; place-items: center; font-size: 1.1rem; flex-shrink: 0; }
.ev-v2 .vc-icon.product { background: var(--brand-primary-soft); color: var(--brand-primary); }
.ev-v2 .vc-info { flex: 1; min-width: 0; }
.ev-v2 .vc-label { font-size: .65rem; text-transform: uppercase; letter-spacing: .06em; font-weight: 700; color: var(--text-muted); margin-bottom: .2rem; }
.ev-v2 .vc-title { font-weight: 700; font-size: .88rem; color: var(--text-strong); line-height: 1.3; }
.ev-v2 .vc-code-row { display: flex; align-items: center; gap: .4rem; margin-top: .35rem; }
.ev-v2 .vc-code { font-family: 'Courier New', monospace; font-size: 1rem; font-weight: 800; color: var(--brand-accent); letter-spacing: .1em; background: #f1e8ff; border: 1px dashed color-mix(in srgb, var(--brand-accent) 40%, transparent); border-radius: 9px; padding: .35rem .6rem; flex: 1; min-width: 0; text-align: center; }
.ev-v2 .vc-footer { border-top: 1px solid var(--card-border); padding: .55rem 1rem .7rem; display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.ev-v2 .vc-usedby { font-size: .72rem; color: var(--text-muted); display: inline-flex; align-items: center; gap: .3rem; }
.ev-v2 .vc-expiry { font-size: .72rem; color: var(--text-muted); display: flex; align-items: center; gap: .3rem; }
.ev-v2 .vc-meta { padding: 0 1rem .55rem; display: flex; flex-direction: column; gap: .3rem; }
.ev-v2 .vc-meta-row { display: flex; align-items: center; justify-content: space-between; gap: .5rem; font-size: .72rem; }
.ev-v2 .vc-meta-lbl { color: var(--text-muted); display: inline-flex; align-items: center; gap: .3rem; }
.ev-v2 .vc-meta-val { color: var(--text-strong); font-weight: 600; }
.ev-v2 .voucher-status { display: inline-flex; align-items: center; gap: .28rem; padding: .2rem .6rem; border-radius: 99px; font-size: .65rem; font-weight: 700; }
.ev-v2 .vs-valido { background: var(--success-soft); color: var(--success); }
.ev-v2 .vs-usado { background: var(--body-bg); color: var(--text-muted); border: 1px solid var(--card-border); }
.ev-v2 .vs-expirado { background: var(--danger-soft); color: var(--danger); }
.ev-v2 .voucher-card.used::after { content: 'USADO'; position: absolute; top: 50%; right: 1rem; transform: translateY(-50%) rotate(-15deg); font-family: var(--font-display); font-weight: 900; font-size: 1.2rem; color: var(--text-muted); opacity: .18; letter-spacing: .12em; pointer-events: none; }

@media (max-width: 1199.98px) { .ev-v2 .cv-kpis { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 575.98px) { .ev-v2 .cv-kpis { grid-template-columns: 1fr; } .ev-v2 .coupon-grid, .ev-v2 .voucher-grid { grid-template-columns: 1fr; } }

.ev-v2 .vo-tips { background: linear-gradient(135deg, var(--brand-primary-soft), #f1e8ff); }
.ev-v2 .vo-tips-list { display: flex; flex-direction: column; gap: .55rem; }
.ev-v2 .vo-tip { display: flex; gap: .5rem; font-size: .8rem; color: var(--text-body); }
.ev-v2 .vo-tip .bi { color: var(--brand-primary); flex-shrink: 0; margin-top: .1rem; }

/* QR modal */
.ev-v2 ~ .qr-modal .modal-dialog, .qr-modal .modal-dialog { max-width: 340px; }
.qr-modal .modal-content { border-radius: 18px; text-align: center; }
.qr-modal .qr-box { width: 180px; height: 180px; border-radius: 14px; background: var(--body-bg); border: 2px dashed var(--card-border); margin: 0 auto .85rem; display: flex; align-items: center; justify-content: center; font-size: 5rem; color: var(--text-muted); }
.qr-modal .qr-url { font-size: .76rem; color: var(--text-muted); word-break: break-all; margin-bottom: .85rem; }
.qr-modal .qr-url strong { color: var(--brand-primary); }

@media (max-width: 1199.98px) {
  .ev-v2 .vo-kpis { grid-template-columns: repeat(2, 1fr); }
  .ev-v2 .vo-main-grid { grid-template-columns: 1fr; }
}
@media (max-width: 575.98px) {
  .ev-v2 .vo-kpis { grid-template-columns: 1fr; }
  .ev-v2 .store-stats { grid-template-columns: 1fr; }
  .ev-v2 .store-stats .ss-item { border-right: 0; border-bottom: 1px solid var(--card-border); }
}

/* ============================================================
   EXTRATO FINANCEIRO — modelo do novo layout (financeiro-extrato.css)
   ============================================================ */
.ev-v2 .ext-label {
  display: block; font-size: .75rem; font-weight: 600;
  color: var(--text-muted); margin-bottom: .35rem;
}
.ev-v2 .ext-select {
  width: 100%; border: 1px solid var(--card-border); border-radius: 10px;
  padding: .55rem .75rem; font-size: .84rem; background: var(--card-bg);
  color: var(--text-strong); font-family: var(--font-body);
  transition: border-color .15s, box-shadow .15s; appearance: auto;
}
.ev-v2 .ext-select:focus {
  outline: none; border-color: var(--brand-primary);
  box-shadow: 0 0 0 3px var(--brand-primary-soft);
}

.ev-v2 .ext-btn-primary {
  display: inline-flex; align-items: center; gap: .45rem;
  padding: .55rem 1.2rem; background: var(--brand-primary); color: #fff;
  border: 0; border-radius: 10px; font-size: .84rem; font-weight: 600;
  cursor: pointer; transition: background .15s, transform .1s;
}
.ev-v2 .ext-btn-primary:hover { background: var(--brand-primary-dark); transform: translateY(-1px); }

.ev-v2 .ext-btn-outline {
  display: inline-flex; align-items: center; gap: .45rem;
  padding: .55rem 1rem; background: transparent; color: var(--text-muted);
  border: 1px solid var(--card-border); border-radius: 10px;
  font-size: .84rem; font-weight: 600; cursor: pointer;
  transition: border-color .15s, color .15s;
}
.ev-v2 .ext-btn-outline:hover { border-color: var(--brand-primary); color: var(--brand-primary); }

/* Barra de saldo + ações */
.ev-v2 .ext-infobar {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: .75rem; background: var(--card-bg);
  border: 1px solid var(--card-border); border-radius: var(--card-radius);
  padding: .9rem 1.2rem; box-shadow: var(--card-shadow);
}
.ev-v2 .ext-saldo-wrap { display: flex; align-items: center; gap: .5rem; }
.ev-v2 .ext-saldo-label { font-size: .84rem; color: var(--text-muted); font-weight: 500; }
.ev-v2 .ext-saldo-val {
  font-family: var(--font-display); font-weight: 800; font-size: 1.4rem;
  color: var(--success); line-height: 1;
}
.ev-v2 .ext-saldo-val.negative { color: var(--danger); }
.ev-v2 .ext-meta { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; }
.ev-v2 .ext-ts { font-size: .77rem; color: var(--text-muted); display: flex; align-items: center; gap: .35rem; }
.ev-v2 .ext-ts strong { color: var(--text-body); font-weight: 600; }
.ev-v2 .ext-btn-action {
  display: inline-flex; align-items: center; gap: .4rem; padding: .45rem .9rem;
  background: var(--body-bg); border: 1px solid var(--card-border); border-radius: 9px;
  font-size: .8rem; font-weight: 600; color: var(--text-strong); cursor: pointer;
  transition: border-color .15s, background .15s, transform .1s;
}
.ev-v2 .ext-btn-action:hover { border-color: var(--brand-primary); background: var(--brand-primary-soft); transform: translateY(-1px); }
.ev-v2 .ext-btn-action.primary { background: var(--success); border-color: var(--success); color: #fff; }
.ev-v2 .ext-btn-action.primary:hover { background: #15803d; border-color: #15803d; }

/* Tabela de extrato */
.ev-v2 .ext-table thead th { background: var(--body-bg); }
.ev-v2 .ext-date { font-size: .8rem; color: var(--text-muted); white-space: nowrap; min-width: 110px; }
.ev-v2 .ext-credit { color: var(--success); font-weight: 700; white-space: nowrap; }
.ev-v2 .ext-debit { color: var(--danger); font-weight: 700; white-space: nowrap; }
.ev-v2 .ext-balance { font-weight: 700; color: var(--text-strong); white-space: nowrap; }
.ev-v2 .ext-total-row td {
  border-top: 2px solid var(--card-border) !important; border-bottom: 0 !important;
  padding: .8rem .75rem; background: var(--body-bg);
}
.ev-v2 .ext-total-label { font-family: var(--font-display); font-weight: 700; font-size: .84rem; color: var(--text-strong); }
.ev-v2 .ext-total-val { font-family: var(--font-display); font-size: .9rem; }

@media (max-width: 767.98px) {
  .ev-v2 .ext-infobar { flex-direction: column; align-items: flex-start; }
  .ev-v2 .ext-meta { width: 100%; justify-content: flex-start; }
  .ev-v2 .ext-saldo-val { font-size: 1.2rem; }
}

/* ============================================================
   Notificações — dropdown da topbar + módulo (inbox) + leitura
   ============================================================ */
/* --- Dropdown da topbar --- */
.ev-v2 .topbar-notif .notif-toggle::after { display: none; }
.ev-v2 .notif-menu { width: 370px; max-width: 92vw; padding: 0; overflow: hidden; }
.ev-v2 .notif-head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding: .85rem 1rem; border-bottom: 1px solid var(--card-border); }
.ev-v2 .notif-head-title { font-family: var(--font-display); font-weight: 700; font-size: .9rem; color: var(--text-strong); display: inline-flex; align-items: center; gap: .45rem; }
.ev-v2 .notif-head-title .bi { color: var(--brand-primary); }
.ev-v2 .notif-head-count { font-size: .68rem; font-weight: 700; color: var(--brand-primary); background: var(--brand-primary-soft); padding: .18rem .5rem; border-radius: 99px; white-space: nowrap; }
.ev-v2 .notif-list { max-height: 360px; overflow-y: auto; }
.ev-v2 .notif-item { display: flex; gap: .7rem; padding: .75rem 1rem; border-bottom: 1px solid var(--card-border); text-decoration: none; transition: background .12s; }
.ev-v2 .notif-item:last-child { border-bottom: 0; }
.ev-v2 .notif-item:hover { background: var(--body-bg); }
.ev-v2 .notif-item.unread { background: color-mix(in srgb, var(--brand-primary) 5%, transparent); }
.ev-v2 .notif-item.unread:hover { background: color-mix(in srgb, var(--brand-primary) 9%, transparent); }
.ev-v2 .notif-item-ic { width: 34px; height: 34px; flex-shrink: 0; border-radius: 10px; display: grid; place-items: center; font-size: .95rem; background: var(--brand-primary-soft); color: var(--brand-primary); }
.ev-v2 .notif-item-body { display: flex; flex-direction: column; gap: .15rem; min-width: 0; }
.ev-v2 .notif-item-subject { font-weight: 700; font-size: .8rem; color: var(--text-strong); line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ev-v2 .notif-item-desc { font-size: .72rem; color: var(--text-muted); line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ev-v2 .notif-item-time { font-size: .66rem; color: var(--text-muted); display: inline-flex; align-items: center; gap: .25rem; margin-top: .1rem; }
.ev-v2 .notif-empty { display: flex; flex-direction: column; align-items: center; gap: .5rem; padding: 2rem 1rem; color: var(--text-muted); text-align: center; font-size: .78rem; }
.ev-v2 .notif-empty .bi { font-size: 1.6rem; opacity: .5; }
.ev-v2 .notif-foot { display: flex; align-items: center; justify-content: center; gap: .4rem; padding: .75rem 1rem; font-weight: 700; font-size: .78rem; color: var(--brand-primary); text-decoration: none; border-top: 1px solid var(--card-border); background: var(--body-bg); }
.ev-v2 .notif-foot:hover { color: var(--brand-primary-dark); background: var(--brand-primary-soft); }

/* --- Módulo: barra de ações --- */
.ev-v2 .ni-toolbar { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; justify-content: space-between; padding: .9rem 1.1rem; border-bottom: 1px solid var(--card-border); }
.ev-v2 .ni-toolbar-left { display: flex; align-items: center; gap: .65rem; flex-wrap: wrap; }
.ev-v2 .ni-selectall { display: inline-flex; align-items: center; gap: .45rem; font-size: .8rem; color: var(--text-muted); font-weight: 600; user-select: none; cursor: pointer; }
.ev-v2 .ni-unread-badge { font-size: .68rem; font-weight: 700; color: var(--brand-primary); background: var(--brand-primary-soft); padding: .2rem .55rem; border-radius: 99px; }

/* --- Módulo: lista (inbox) --- */
.ev-v2 .ni-list { display: flex; flex-direction: column; }
.ev-v2 .ni-row { display: flex; align-items: center; gap: .8rem; padding: .85rem 1.1rem; border-bottom: 1px solid var(--card-border); transition: background .12s; }
.ev-v2 .ni-row:last-child { border-bottom: 0; }
.ev-v2 .ni-row:hover { background: var(--body-bg); }
.ev-v2 .ni-row.unread { background: color-mix(in srgb, var(--brand-primary) 5%, transparent); }
.ev-v2 .ni-row.unread .ni-subject { color: var(--text-strong); }
.ev-v2 .ni-check { flex-shrink: 0; margin: 0; }
.ev-v2 .ni-ic { width: 40px; height: 40px; flex-shrink: 0; border-radius: 11px; display: grid; place-items: center; font-size: 1.05rem; background: var(--body-bg); color: var(--text-muted); border: 1px solid var(--card-border); }
.ev-v2 .ni-row.unread .ni-ic { background: var(--brand-primary-soft); color: var(--brand-primary); border-color: transparent; }
.ev-v2 .ni-main { flex: 1; min-width: 0; text-decoration: none; display: flex; flex-direction: column; gap: .15rem; }
.ev-v2 .ni-subject { font-weight: 700; font-size: .86rem; color: var(--text-strong); line-height: 1.3; display: inline-flex; align-items: center; gap: .45rem; }
.ev-v2 .ni-subject .ni-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--brand-primary); flex-shrink: 0; }
.ev-v2 .ni-desc { font-size: .74rem; color: var(--text-muted); line-height: 1.35; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 640px; }
.ev-v2 .ni-time { flex-shrink: 0; font-size: .72rem; color: var(--text-muted); text-decoration: none; display: inline-flex; align-items: center; gap: .3rem; white-space: nowrap; }
.ev-v2 .ni-time:hover { color: var(--brand-primary); }

/* --- Leitura (visualizar) --- */
.ev-v2 .nv-head { display: flex; align-items: flex-start; gap: .9rem; padding-bottom: 1rem; border-bottom: 1px solid var(--card-border); margin-bottom: 1.1rem; }
.ev-v2 .nv-ic { width: 48px; height: 48px; flex-shrink: 0; border-radius: 13px; display: grid; place-items: center; font-size: 1.3rem; background: var(--brand-primary-soft); color: var(--brand-primary); }
.ev-v2 .nv-headinfo { flex: 1; min-width: 0; }
.ev-v2 .nv-subject { font-family: var(--font-display); font-weight: 700; font-size: 1.15rem; color: var(--text-strong); line-height: 1.3; }
.ev-v2 .nv-meta { display: flex; align-items: center; gap: .9rem; flex-wrap: wrap; margin-top: .35rem; font-size: .76rem; color: var(--text-muted); }
.ev-v2 .nv-meta span { display: inline-flex; align-items: center; gap: .3rem; }
.ev-v2 .nv-content { font-size: .9rem; color: var(--text-strong); line-height: 1.65; }
.ev-v2 .nv-content img { max-width: 100%; height: auto; }

@media (max-width: 575.98px) {
  .ev-v2 .ni-desc { display: none; }
  .ev-v2 .ni-row { padding: .75rem .85rem; gap: .6rem; }
}

/* ============================================================
   Gráficos — seletor de tipo, opções/período e painel do gráfico
   ============================================================ */
.ev-v2 .hidden { display: none !important; }

/* Seletor de tipo de gráfico — cards compactos horizontais */
.ev-v2 .chart-type-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: .75rem; }
.ev-v2 .chart-type-card { position: relative; display: flex; align-items: center; gap: .85rem; padding: .9rem 1rem; border: 1.5px solid var(--card-border); border-radius: 14px; background: var(--card-bg); cursor: pointer; transition: transform .16s, box-shadow .16s, border-color .16s, background .16s; margin: 0; overflow: hidden; }
.ev-v2 .chart-type-card input { position: absolute; opacity: 0; pointer-events: none; }
.ev-v2 .chart-type-card:hover { border-color: var(--brand-primary); transform: translateY(-1px); box-shadow: 0 6px 16px rgba(0, 0, 0, .06); }
.ev-v2 .chart-type-card .ctc-ic { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; font-size: 1.25rem; background: var(--brand-primary-soft); color: var(--brand-primary); flex-shrink: 0; transition: background .16s, color .16s; }
.ev-v2 .chart-type-card .ctc-label { font-family: var(--font-display); font-weight: 700; font-size: .95rem; color: var(--text-strong); flex: 1; transition: color .16s; }
.ev-v2 .chart-type-card .ctc-check { width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; font-size: .8rem; background: rgba(255, 255, 255, .22); color: #fff; opacity: 0; transform: scale(.5); transition: opacity .18s, transform .18s; flex-shrink: 0; }
.ev-v2 .chart-type-card:has(input:checked) { border-color: transparent; background: linear-gradient(135deg, var(--brand-primary), var(--brand-accent)); box-shadow: 0 10px 24px color-mix(in srgb, var(--brand-primary) 28%, transparent); }
.ev-v2 .chart-type-card:has(input:checked) .ctc-ic { background: rgba(255, 255, 255, .2); color: #fff; }
.ev-v2 .chart-type-card:has(input:checked) .ctc-label { color: #fff; }
.ev-v2 .chart-type-card:has(input:checked) .ctc-check { opacity: 1; transform: scale(1); }

/* Blocos de filtro (métricas / período) */
.ev-v2 .chart-field + .chart-field { margin-top: 1.35rem; }
.ev-v2 .chart-section-title { font-family: var(--font-display); font-weight: 700; font-size: .88rem; color: var(--text-strong); display: flex; align-items: center; gap: .5rem; margin: 0 0 .85rem; }
.ev-v2 .chart-section-title .bi { color: var(--brand-primary); }

/* Chips de métricas (checkbox) */
.ev-v2 .opt-chips { display: flex; flex-wrap: wrap; gap: .55rem; }
.ev-v2 .opt-chip { position: relative; display: inline-flex; align-items: center; gap: .5rem; padding: .55rem .85rem; border: 1.5px solid var(--card-border); border-radius: 99px; background: var(--card-bg); cursor: pointer; font-size: .8rem; font-weight: 600; color: var(--text-muted); transition: all .14s; margin: 0; user-select: none; }
.ev-v2 .opt-chip input { position: absolute; opacity: 0; pointer-events: none; }
.ev-v2 .opt-chip:hover { border-color: var(--brand-primary); color: var(--brand-primary); }
.ev-v2 .opt-chip .opt-chip-ic { width: 18px; height: 18px; border-radius: 6px; border: 1.5px solid var(--card-border); display: grid; place-items: center; font-size: .7rem; color: transparent; transition: all .14s; flex-shrink: 0; }
.ev-v2 .opt-chip:has(input:checked) { border-color: transparent; background: var(--brand-primary); color: #fff; box-shadow: 0 4px 12px color-mix(in srgb, var(--brand-primary) 25%, transparent); }
.ev-v2 .opt-chip:has(input:checked) .opt-chip-ic { background: rgba(255, 255, 255, .22); border-color: transparent; color: #fff; }

/* Segmented control (período) */
.ev-v2 .seg { display: flex; gap: .3rem; background: var(--body-bg); border: 1px solid var(--card-border); border-radius: 12px; padding: .3rem; }
.ev-v2 .seg-item { position: relative; flex: 1; display: flex; align-items: center; justify-content: center; padding: .55rem .8rem; border-radius: 9px; cursor: pointer; font-size: .82rem; font-weight: 700; color: var(--text-muted); transition: all .15s; margin: 0; white-space: nowrap; }
.ev-v2 .seg-item input { position: absolute; opacity: 0; pointer-events: none; }
.ev-v2 .seg-item:hover { color: var(--brand-primary); }
.ev-v2 .seg-item:has(input:checked) { background: linear-gradient(135deg, var(--brand-primary), var(--brand-accent)); color: #fff; box-shadow: 0 4px 12px color-mix(in srgb, var(--brand-primary) 26%, transparent); }
.ev-v2 .period-seg { max-width: 460px; }

/* Painel do gráfico */
.ev-v2 .chart-panel { padding: 1.25rem; }
.ev-v2 .chart-panel .chart-box { height: 440px; }
.ev-v2 .chart-panel canvas { max-width: 100%; }

@media (max-width: 767.98px) {
  .ev-v2 .chart-type-grid { grid-template-columns: 1fr; }
  .ev-v2 .chart-panel .chart-box { height: 320px; }
  .ev-v2 .period-seg { max-width: none; }
}

/* ============================================================
   Notícias (Blog) — hero, filtros, grid, mais lidas e leitura
   ============================================================ */
/* Badges de categoria */
.ev-v2 .news-cat-badge { display: inline-flex; align-items: center; font-size: .68rem; font-weight: 700; padding: .18rem .55rem; border-radius: 6px; text-transform: uppercase; letter-spacing: .05em; }
.ev-v2 .news-cat-badge.lancamento  { background: var(--brand-primary-soft); color: var(--brand-primary); }
.ev-v2 .news-cat-badge.bonus       { background: var(--success-soft); color: var(--success); }
.ev-v2 .news-cat-badge.treinamento { background: #f1e8ff; color: var(--brand-accent); }
.ev-v2 .news-cat-badge.evento      { background: var(--danger-soft); color: var(--danger); }
.ev-v2 .news-cat-badge.comunicado  { background: var(--warning-soft); color: var(--warning); }

/* Hero destaque */
.ev-v2 .news-hero { position: relative; display: flex; align-items: flex-end; min-height: 280px; border-radius: var(--card-radius); overflow: hidden; margin-bottom: 1.25rem; text-decoration: none; background: linear-gradient(135deg, #1a2a52 0%, #0a102e 60%, #1a0a40 100%); transition: box-shadow .18s; }
.ev-v2 .news-hero:hover { box-shadow: 0 8px 40px rgba(10, 16, 46, .25); }
.ev-v2 .news-hero-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; }
.ev-v2 .news-hero-ic { position: absolute; z-index: 1; right: 2rem; top: 50%; transform: translateY(-50%); font-size: 7rem; color: rgba(255, 255, 255, .08); pointer-events: none; }
.ev-v2 .news-hero-overlay { position: absolute; inset: 0; z-index: 1; background: linear-gradient(to top, rgba(10, 16, 46, .92) 0%, rgba(10, 16, 46, .35) 60%, rgba(10, 16, 46, .15) 100%); }
.ev-v2 .news-hero-body { position: relative; z-index: 2; padding: 2rem 2.5rem; display: flex; flex-direction: column; gap: .7rem; max-width: 680px; }
.ev-v2 .news-hero-title { color: #fff; font-family: var(--font-display); font-weight: 800; font-size: clamp(1.2rem, 2.5vw, 1.65rem); margin: 0; line-height: 1.2; }
.ev-v2 .news-hero-sub { color: #b9c2e8; font-size: .88rem; line-height: 1.5; margin: 0; }
.ev-v2 .news-hero-meta { display: flex; gap: 1rem; font-size: .78rem; color: rgba(255, 255, 255, .65); flex-wrap: wrap; }
.ev-v2 .news-hero-meta .bi { margin-right: .25rem; }
.ev-v2 .news-hero-btn { display: inline-flex; align-items: center; gap: .4rem; padding: .55rem 1.2rem; border-radius: 10px; background: var(--brand-primary); color: #fff; font-size: .82rem; font-weight: 600; align-self: flex-start; margin-top: .25rem; transition: background .15s; }
.ev-v2 .news-hero:hover .news-hero-btn { background: var(--brand-primary-dark); }

/* Filtro de categorias */
.ev-v2 .news-filter-bar { display: flex; gap: .35rem; flex-wrap: wrap; margin-bottom: 1.1rem; }
.ev-v2 .news-pill { display: inline-flex; align-items: center; gap: .4rem; padding: .38rem .85rem; border-radius: 99px; border: 1px solid var(--card-border); background: transparent; color: var(--text-muted); font-family: var(--font-body); font-size: .78rem; font-weight: 600; cursor: pointer; transition: border-color .15s, background .15s, color .15s; white-space: nowrap; }
.ev-v2 .news-pill:hover { border-color: var(--brand-primary); color: var(--brand-primary); }
.ev-v2 .news-pill.active { background: var(--brand-primary); border-color: var(--brand-primary); color: #fff; }
.ev-v2 .news-pill-count { background: rgba(0, 0, 0, .08); border-radius: 99px; font-size: .68rem; font-weight: 700; padding: .03rem .38rem; }
.ev-v2 .news-pill.active .news-pill-count { background: rgba(255, 255, 255, .22); }

/* Grid de cards */
.ev-v2 .news-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-bottom: 1.25rem; }
.ev-v2 .news-card { border: 1px solid var(--card-border); border-radius: 14px; overflow: hidden; display: flex; flex-direction: column; transition: box-shadow .15s, border-color .15s; }
.ev-v2 .news-card:hover { box-shadow: 0 8px 24px rgba(20, 30, 80, .08); border-color: var(--brand-primary); }
.ev-v2 .news-card-thumb { position: relative; aspect-ratio: 16 / 9; display: flex; align-items: flex-start; justify-content: flex-start; padding: .65rem; text-decoration: none; }
.ev-v2 .news-card-thumb .news-cat-badge { position: relative; z-index: 2; }
.ev-v2 .news-card-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; }
.ev-v2 .news-card-ic { position: absolute; inset: 0; display: grid; place-items: center; font-size: 2.4rem; color: rgba(255, 255, 255, .85); z-index: 1; }
.ev-v2 .nt-blue   { background: linear-gradient(135deg, #1a2a6e, #0a1038); }
.ev-v2 .nt-purple { background: linear-gradient(135deg, #2a1a6a, #100a38); }
.ev-v2 .nt-green  { background: linear-gradient(135deg, #0a4030, #041c14); }
.ev-v2 .nt-dark   { background: linear-gradient(135deg, #1a1a2e, #0a0a18); }
.ev-v2 .nt-orange { background: linear-gradient(135deg, #4a2800, #201000); }
.ev-v2 .news-card-body { padding: .9rem; display: flex; flex-direction: column; gap: .55rem; flex: 1; }
.ev-v2 .news-card-title { font-size: .86rem; font-weight: 700; color: var(--text-strong); line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.ev-v2 .news-card-meta { display: flex; align-items: center; gap: .65rem; font-size: .72rem; color: var(--text-muted); flex-wrap: wrap; }
.ev-v2 .news-card-meta .bi { margin-right: .2rem; }
.ev-v2 .news-card-btn { display: inline-flex; align-items: center; gap: .3rem; color: var(--brand-primary); font-size: .78rem; font-weight: 600; text-decoration: none; margin-top: auto; transition: color .15s; }
.ev-v2 .news-card-btn:hover { color: var(--brand-primary-dark); }

/* Estado vazio */
.ev-v2 .news-empty { text-align: center; padding: 3rem 1rem; color: var(--text-muted); }
.ev-v2 .news-empty .bi { font-size: 2.5rem; display: block; margin-bottom: .75rem; }
.ev-v2 .news-empty p { font-size: .88rem; margin: 0; }

/* Mais lidas (sidebar) */
.ev-v2 .news-top-list { display: flex; flex-direction: column; }
.ev-v2 .news-top-item { display: flex; align-items: flex-start; gap: .85rem; padding: .8rem; border-bottom: 1px dashed var(--card-border); text-align: left; text-decoration: none; transition: background .12s; border-radius: 10px; }
.ev-v2 .news-top-item:last-child { border-bottom: 0; }
.ev-v2 .news-top-item:hover { background: var(--body-bg); }
.ev-v2 .news-top-item:hover .news-top-title { color: var(--brand-primary); }
.ev-v2 .news-top-num { font-family: var(--font-display); font-weight: 800; font-size: 1.2rem; color: var(--card-border); line-height: 1; flex-shrink: 0; min-width: 28px; }
.ev-v2 .news-top-item:nth-child(1) .news-top-num { color: var(--brand-primary); }
.ev-v2 .news-top-item:nth-child(2) .news-top-num { color: var(--brand-accent); }
.ev-v2 .news-top-item:nth-child(3) .news-top-num { color: var(--success); }
.ev-v2 .news-top-body { flex: 1; min-width: 0; }
.ev-v2 .news-top-title { font-size: .82rem; font-weight: 600; color: var(--text-strong); line-height: 1.3; margin-bottom: .3rem; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; transition: color .15s; }
.ev-v2 .news-top-meta { display: flex; align-items: center; gap: .5rem; font-size: .7rem; color: var(--text-muted); flex-wrap: wrap; }
.ev-v2 .news-top-meta .bi { margin-right: .15rem; }
.ev-v2 .news-top-badge { font-size: .6rem; padding: .1rem .4rem; }

/* Leitura da notícia (visualizar) */
.ev-v2 .news-article-head { padding-bottom: 1.1rem; border-bottom: 1px solid var(--card-border); margin-bottom: 1.25rem; display: flex; flex-direction: column; gap: .6rem; }
.ev-v2 .news-article-title { font-family: var(--font-display); font-weight: 800; font-size: 1.5rem; color: var(--text-strong); line-height: 1.25; margin: 0; }
.ev-v2 .news-article-meta { display: flex; gap: 1rem; flex-wrap: wrap; font-size: .78rem; color: var(--text-muted); }
.ev-v2 .news-article-meta .bi { margin-right: .25rem; }
.ev-v2 .news-article-cover { border-radius: 12px; overflow: hidden; margin-bottom: 1.25rem; }
.ev-v2 .news-article-cover img { width: 100%; height: auto; display: block; }
.ev-v2 .news-article-content { font-size: .92rem; color: var(--text-strong); line-height: 1.75; }
.ev-v2 .news-article-content img { max-width: 100%; height: auto; }

@media (max-width: 1199.98px) { .ev-v2 .news-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 767.98px) {
  .ev-v2 .news-grid { grid-template-columns: 1fr; }
  .ev-v2 .news-hero-body { padding: 1.5rem; }
}

/* ============================================================
   Biblioteca — cards de categoria, favoritos, lista, KPIs, recentes
   ============================================================ */
/* Cards de categoria */
.ev-v2 .bib-cat-card { width: 100%; display: flex; align-items: center; gap: 1rem; padding: 1.1rem 1.2rem; background: var(--card-bg); border: 1px solid var(--card-border); border-radius: var(--card-radius); cursor: pointer; text-align: left; transition: border-color .15s, box-shadow .15s, background .15s; }
.ev-v2 .bib-cat-card:hover { border-color: var(--brand-primary); box-shadow: 0 4px 20px color-mix(in srgb, var(--brand-primary) 12%, transparent); }
.ev-v2 .bib-cat-card.active { border-color: var(--brand-primary); background: var(--brand-primary-soft); }
.ev-v2 .bib-cat-icon { width: 48px; height: 48px; border-radius: 14px; display: grid; place-items: center; font-size: 1.3rem; flex-shrink: 0; }
.ev-v2 .bib-cat-icon.blue { background: var(--brand-primary-soft); color: var(--brand-primary); }
.ev-v2 .bib-cat-icon.green { background: var(--success-soft); color: var(--success); }
.ev-v2 .bib-cat-icon.orange { background: var(--warning-soft); color: var(--warning); }
.ev-v2 .bib-cat-body { flex: 1; min-width: 0; }
.ev-v2 .bib-cat-name { font-family: var(--font-display); font-weight: 700; font-size: .88rem; color: var(--text-strong); }
.ev-v2 .bib-cat-count { font-family: var(--font-display); font-weight: 800; font-size: 1.35rem; color: var(--brand-primary); flex-shrink: 0; }

/* Toolbar (filtro pills + busca) */
.ev-v2 .bib-toolbar { display: flex; flex-direction: column; gap: .75rem; margin-bottom: 1rem; }
.ev-v2 .bib-filter-bar { display: flex; gap: .35rem; flex-wrap: wrap; }
.ev-v2 .bib-pill { display: inline-flex; align-items: center; gap: .4rem; padding: .38rem .85rem; border-radius: 99px; border: 1px solid var(--card-border); background: transparent; color: var(--text-muted); font-family: var(--font-body); font-size: .78rem; font-weight: 600; cursor: pointer; transition: border-color .15s, background .15s, color .15s; white-space: nowrap; }
.ev-v2 .bib-pill:hover { border-color: var(--brand-primary); color: var(--brand-primary); }
.ev-v2 .bib-pill.active { background: var(--brand-primary); border-color: var(--brand-primary); color: #fff; }
.ev-v2 .bib-pill-count { background: rgba(0, 0, 0, .08); border-radius: 99px; font-size: .68rem; font-weight: 700; padding: .03rem .38rem; }
.ev-v2 .bib-pill.active .bib-pill-count { background: rgba(255, 255, 255, .22); }
.ev-v2 .bib-search-row { display: flex; gap: .6rem; align-items: center; }
.ev-v2 .bib-search { flex: 1; display: flex; align-items: center; gap: .5rem; background: var(--body-bg); border: 1px solid var(--card-border); border-radius: 10px; padding: .42rem .75rem; }
.ev-v2 .bib-search .bi { color: var(--text-muted); font-size: .9rem; flex-shrink: 0; }
.ev-v2 .bib-search input { border: 0; background: transparent; font-family: var(--font-body); font-size: .82rem; color: var(--text-strong); width: 100%; }
.ev-v2 .bib-search input:focus { outline: none; }
.ev-v2 .bib-search input::placeholder { color: var(--text-muted); }
.ev-v2 .mat-select { border: 1px solid var(--card-border); border-radius: 10px; padding: .42rem .7rem; font-family: var(--font-body); font-size: .8rem; color: var(--text-strong); background: var(--card-bg); cursor: pointer; }

/* Lista de documentos */
.ev-v2 .bib-list { display: flex; flex-direction: column; }
.ev-v2 .bib-doc-row { display: flex; align-items: center; gap: .9rem; padding: .85rem .5rem; border-bottom: 1px dashed var(--card-border); transition: background .12s; }
.ev-v2 .bib-doc-row:last-child { border-bottom: 0; }
.ev-v2 .bib-doc-row:hover { background: var(--body-bg); border-radius: 10px; }
.ev-v2 .bib-doc-icon { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; font-size: 1.1rem; flex-shrink: 0; }
.ev-v2 .bib-doc-icon.pdf, .ev-v2 .bib-type-badge.pdf, .ev-v2 .bib-stat-icon.pdf { background: var(--danger-soft); color: var(--danger); }
.ev-v2 .bib-doc-icon.video, .ev-v2 .bib-type-badge.video, .ev-v2 .bib-stat-icon.video { background: var(--success-soft); color: var(--success); }
.ev-v2 .bib-doc-icon.slides, .ev-v2 .bib-type-badge.slides, .ev-v2 .bib-stat-icon.slides { background: var(--warning-soft); color: var(--warning); }
.ev-v2 .bib-doc-icon.doc, .ev-v2 .bib-type-badge.doc, .ev-v2 .bib-stat-icon.doc { background: var(--brand-primary-soft); color: var(--brand-primary); }
.ev-v2 .bib-doc-body { flex: 1; min-width: 0; }
.ev-v2 .bib-doc-name { font-size: .85rem; font-weight: 600; color: var(--text-strong); display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.ev-v2 .bib-doc-meta { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; margin-top: .3rem; }
.ev-v2 .bib-doc-info { font-size: .72rem; color: var(--text-muted); display: inline-flex; align-items: center; gap: .22rem; }
.ev-v2 .bib-doc-info .bi { font-size: .7rem; }
.ev-v2 .bib-badge-new { font-size: .6rem; font-weight: 700; padding: .12rem .44rem; border-radius: 5px; background: var(--brand-primary); color: #fff; text-transform: uppercase; letter-spacing: .05em; }
.ev-v2 .bib-cat-tag { font-size: .68rem; font-weight: 600; padding: .12rem .44rem; border-radius: 5px; background: var(--body-bg); color: var(--text-muted); border: 1px solid var(--card-border); }
.ev-v2 .bib-type-badge { display: inline-flex; align-items: center; gap: .22rem; font-size: .66rem; font-weight: 700; padding: .13rem .45rem; border-radius: 5px; }

/* Ações por linha */
.ev-v2 .bib-doc-actions { display: flex; align-items: center; gap: .4rem; flex-shrink: 0; }
.ev-v2 .bib-btn-fav { width: 34px; height: 34px; border-radius: 8px; border: 1px solid var(--card-border); background: transparent; color: var(--text-muted); font-size: .9rem; display: grid; place-items: center; cursor: pointer; transition: color .15s, border-color .15s, background .15s; }
.ev-v2 .bib-btn-fav:hover { color: var(--warning); border-color: var(--warning); }
.ev-v2 .bib-btn-fav.active { color: var(--warning); border-color: var(--warning); background: var(--warning-soft); }
.ev-v2 .bib-btn-action { display: inline-flex; align-items: center; gap: .3rem; padding: .32rem .7rem; border-radius: 8px; border: 1px solid var(--card-border); background: transparent; color: var(--text-strong); font-family: var(--font-body); font-size: .75rem; font-weight: 600; cursor: pointer; white-space: nowrap; text-decoration: none; transition: border-color .15s, color .15s, background .15s; }
.ev-v2 .bib-btn-action:hover { border-color: var(--brand-primary); color: var(--brand-primary); }

/* Estado vazio */
.ev-v2 .bib-empty { text-align: center; padding: 3rem 1rem; color: var(--text-muted); }
.ev-v2 .bib-empty .bi { font-size: 2.5rem; display: block; margin-bottom: .75rem; }
.ev-v2 .bib-empty p { font-size: .88rem; margin: 0; }

/* Recém adicionados */
.ev-v2 .bib-recent-item { display: flex; align-items: flex-start; gap: .75rem; padding: .7rem 0; border-bottom: 1px dashed var(--card-border); }
.ev-v2 .bib-recent-item:last-of-type { border-bottom: 0; }
.ev-v2 .bib-recent-icon { width: 36px; height: 36px; font-size: .9rem; border-radius: 10px; }
.ev-v2 .bib-recent-name { font-size: .82rem; }

/* Resumo do acervo (KPIs) */
.ev-v2 .bib-stats { margin-top: 1.25rem; padding-top: 1.1rem; border-top: 1px solid var(--card-border); }
.ev-v2 .bib-stats-title { font-family: var(--font-display); font-size: .8rem; font-weight: 700; color: var(--text-muted); text-transform: uppercase; letter-spacing: .06em; margin: 0 0 .85rem; }
.ev-v2 .bib-stats-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; }
.ev-v2 .bib-stat-item { display: flex; align-items: center; gap: .6rem; }
.ev-v2 .bib-stat-icon { width: 36px; height: 36px; border-radius: 10px; display: grid; place-items: center; font-size: .9rem; flex-shrink: 0; }
.ev-v2 .bib-stat-val { font-family: var(--font-display); font-weight: 800; font-size: 1.15rem; color: var(--text-strong); line-height: 1; }
.ev-v2 .bib-stat-label { font-size: .72rem; color: var(--text-muted); }

@media (max-width: 575.98px) {
  .ev-v2 .bib-search-row { flex-direction: column; align-items: stretch; }
}

/* ============================================================
   Eventos — hero/countdown, filtros, grid de cards, próximos
   ============================================================ */
/* Badge de categoria (evento) */
.ev-v2 .ev-cat-badge { display: inline-flex; align-items: center; font-size: .66rem; font-weight: 700; padding: .15rem .52rem; border-radius: 6px; text-transform: uppercase; letter-spacing: .04em; background: var(--brand-primary-soft); color: var(--brand-primary); }

/* Hero + countdown */
.ev-v2 .ev-hero { position: relative; border-radius: var(--card-radius); overflow: hidden; background: linear-gradient(135deg, #0a1838 0%, #1a0a40 50%, #0a2a1a 100%); padding: 2.1rem 2.4rem; margin-bottom: 1.25rem; min-height: 220px; display: flex; }
.ev-v2 .ev-hero-overlay { position: absolute; inset: 0; background: radial-gradient(ellipse at 80% 50%, color-mix(in srgb, var(--brand-primary) 14%, transparent) 0%, transparent 70%); pointer-events: none; }
.ev-v2 .ev-hero-body { position: relative; z-index: 2; display: flex; flex-direction: column; gap: .8rem; flex: 1; }
.ev-v2 .ev-hero-head { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.ev-v2 .ev-hero-label { font-size: .68rem; text-transform: uppercase; letter-spacing: .08em; font-weight: 700; color: rgba(255, 255, 255, .55); }
.ev-v2 .ev-hero-title { color: #fff; font-family: var(--font-display); font-weight: 800; font-size: clamp(1.1rem, 2.2vw, 1.5rem); margin: 0; line-height: 1.25; max-width: 620px; }
.ev-v2 .ev-hero-meta { display: flex; gap: 1.1rem; font-size: .8rem; color: rgba(255, 255, 255, .6); flex-wrap: wrap; }
.ev-v2 .ev-hero-meta .bi { margin-right: .25rem; }
.ev-v2 .ev-countdown { display: flex; align-items: center; gap: .6rem; margin-top: .25rem; flex-wrap: wrap; }
.ev-v2 .ev-count-item { display: flex; flex-direction: column; align-items: center; background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .12); border-radius: 10px; padding: .5rem .8rem; min-width: 56px; }
.ev-v2 .ev-count-val { font-family: var(--font-display); font-weight: 800; font-size: 1.5rem; color: #fff; line-height: 1; font-variant-numeric: tabular-nums; }
.ev-v2 .ev-count-label { font-size: .6rem; color: rgba(255, 255, 255, .5); text-transform: uppercase; letter-spacing: .06em; margin-top: .2rem; }
.ev-v2 .ev-count-sep { font-family: var(--font-display); font-weight: 800; font-size: 1.3rem; color: rgba(255, 255, 255, .35); line-height: 1; margin-bottom: .9rem; }

/* Filtro pills */
.ev-v2 .ev-filter-bar { display: flex; gap: .35rem; flex-wrap: wrap; margin-bottom: 1.1rem; }
.ev-v2 .ev-pill { display: inline-flex; align-items: center; gap: .4rem; padding: .38rem .85rem; border-radius: 99px; border: 1px solid var(--card-border); background: transparent; color: var(--text-muted); font-family: var(--font-body); font-size: .78rem; font-weight: 600; cursor: pointer; transition: border-color .15s, background .15s, color .15s; white-space: nowrap; }
.ev-v2 .ev-pill:hover { border-color: var(--brand-primary); color: var(--brand-primary); }
.ev-v2 .ev-pill.active { background: var(--brand-primary); border-color: var(--brand-primary); color: #fff; }
.ev-v2 .ev-pill-count { background: rgba(0, 0, 0, .08); border-radius: 99px; font-size: .68rem; font-weight: 700; padding: .03rem .38rem; }
.ev-v2 .ev-pill.active .ev-pill-count { background: rgba(255, 255, 255, .22); }

/* Grid de cards */
.ev-v2 .ev-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; }
.ev-v2 .ev-card { border: 1px solid var(--card-border); border-radius: 14px; overflow: hidden; display: flex; flex-direction: column; transition: box-shadow .15s, border-color .15s; }
.ev-v2 .ev-card:hover { box-shadow: 0 8px 24px rgba(20, 30, 80, .08); border-color: var(--brand-primary); }
.ev-v2 .ev-card-thumb { position: relative; height: 80px; }
.ev-v2 .ev-card-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; }
.ev-v2 .et-blue { background: linear-gradient(135deg, #1a2a6e, #0a1038); }
.ev-v2 .ev-card-ic { position: absolute; inset: 0; display: grid; place-items: center; font-size: 1.9rem; color: rgba(255, 255, 255, .85); z-index: 1; }
.ev-v2 .ev-cat-badge-abs { position: absolute; top: .6rem; left: .6rem; z-index: 2; }
.ev-v2 .ev-new-badge { position: absolute; top: .6rem; right: .6rem; z-index: 2; background: var(--brand-primary); color: #fff; font-size: .6rem; font-weight: 700; padding: .12rem .44rem; border-radius: 5px; text-transform: uppercase; letter-spacing: .05em; }
.ev-v2 .ev-card-body { padding: .95rem; display: flex; flex-direction: column; gap: .6rem; flex: 1; }
.ev-v2 .ev-card-date-row { display: flex; align-items: flex-start; gap: .75rem; }
.ev-v2 .ev-card-datebox { width: 44px; height: 44px; border-radius: 10px; background: var(--brand-primary-soft); display: flex; flex-direction: column; align-items: center; justify-content: center; flex-shrink: 0; }
.ev-v2 .ev-card-day { font-family: var(--font-display); font-weight: 800; font-size: .95rem; color: var(--brand-primary); line-height: 1; }
.ev-v2 .ev-card-month { font-size: .6rem; font-weight: 700; text-transform: uppercase; color: var(--brand-primary); }
.ev-v2 .ev-card-info { flex: 1; min-width: 0; }
.ev-v2 .ev-card-name { font-size: .86rem; font-weight: 700; color: var(--text-strong); line-height: 1.25; margin-bottom: .3rem; }
.ev-v2 .ev-card-sub { font-size: .74rem; color: var(--text-muted); display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; }
.ev-v2 .ev-card-sub .bi { margin-right: .2rem; }

/* Estado vazio */
.ev-v2 .ev-empty { text-align: center; padding: 3rem 1rem; color: var(--text-muted); }
.ev-v2 .ev-empty .bi { font-size: 2.5rem; display: block; margin-bottom: .75rem; }
.ev-v2 .ev-empty p { font-size: .88rem; margin: 0; }

/* Próximos eventos (sidebar) */
.ev-v2 .ev-prox-list { display: flex; flex-direction: column; }
.ev-v2 .ev-prox-row { display: flex; align-items: center; gap: 1rem; padding: .8rem 0; border-bottom: 1px dashed var(--card-border); }
.ev-v2 .ev-prox-row:last-child { border-bottom: 0; }
.ev-v2 .ev-prox-date { width: 48px; height: 48px; border-radius: 12px; background: var(--brand-primary-soft); display: flex; flex-direction: column; align-items: center; justify-content: center; flex-shrink: 0; }
.ev-v2 .ev-idate-day { font-family: var(--font-display); font-weight: 800; font-size: 1rem; color: var(--brand-primary); line-height: 1; }
.ev-v2 .ev-idate-month { font-size: .62rem; font-weight: 700; text-transform: uppercase; color: var(--brand-primary); }
.ev-v2 .ev-prox-body { flex: 1; min-width: 0; }
.ev-v2 .ev-prox-name { font-size: .84rem; font-weight: 600; color: var(--text-strong); margin-bottom: .3rem; }
.ev-v2 .ev-prox-meta { display: flex; align-items: center; gap: .55rem; font-size: .72rem; color: var(--text-muted); flex-wrap: wrap; }
.ev-v2 .ev-prox-meta .bi { margin-right: .18rem; }
.ev-v2 .ev-mini-cal + .ev-prox-list { border-top: 1px solid var(--card-border); margin-top: .5rem; padding-top: .25rem; }

/* Mini calendário */
.ev-v2 .ev-mini-cal { margin-bottom: .75rem; }
.ev-v2 .ev-cal-nav { display: flex; align-items: center; justify-content: space-between; margin-bottom: .75rem; }
.ev-v2 .ev-cal-btn { width: 28px; height: 28px; border-radius: 7px; border: 1px solid var(--card-border); background: transparent; color: var(--text-muted); display: grid; place-items: center; cursor: pointer; font-size: .8rem; transition: border-color .15s, color .15s; }
.ev-v2 .ev-cal-btn:hover { border-color: var(--brand-primary); color: var(--brand-primary); }
.ev-v2 .ev-cal-month-label { font-family: var(--font-display); font-weight: 700; font-size: .88rem; color: var(--text-strong); }
.ev-v2 .ev-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.ev-v2 .ev-cal-dow { text-align: center; font-size: .66rem; font-weight: 700; color: var(--text-muted); padding: .2rem 0; text-transform: uppercase; }
.ev-v2 .ev-cal-day { aspect-ratio: 1; display: grid; place-items: center; font-size: .78rem; border-radius: 8px; color: var(--text-strong); position: relative; }
.ev-v2 .ev-cal-day.today { background: var(--brand-primary-soft); color: var(--brand-primary); font-weight: 700; }
.ev-v2 .ev-cal-day.has-event::after { content: ""; position: absolute; bottom: 3px; width: 5px; height: 5px; border-radius: 50%; background: var(--brand-primary); }
.ev-v2 .ev-cal-day.empty { visibility: hidden; }

@media (max-width: 767.98px) {
  .ev-v2 .ev-grid { grid-template-columns: 1fr; }
  .ev-v2 .ev-hero { padding: 1.5rem; }
  .ev-v2 .ev-countdown { flex-wrap: wrap; }
}

/* ============================================================
   Home residuais — formulário largo no layout de login,
   franquias e utilitários
   ============================================================ */
/* Card largo centralizado sobre o fundo de login (atualizar-dados) */
.ev-v2 .auth-wide { position: relative; z-index: 2; width: 100%; max-width: 960px; margin: 1.5rem auto 3rem; padding: 0 1rem; }
.ev-v2 .auth-wide-brand { text-align: center; margin-bottom: 1.1rem; }
.ev-v2 .auth-wide-brand img, .ev-v2 .auth-wide-brand .logo { max-height: 64px; max-width: 220px; }
.ev-v2 .auth-wide-hint { font-size: .85rem; color: var(--text-muted); margin: -.25rem 0 1.1rem; }

/* Checkbox + rótulo em linha (formulários) */
.ev-v2 .cad-check { display: inline-flex; align-items: center; gap: .5rem; font-size: .85rem; color: var(--text-strong); cursor: pointer; user-select: none; margin: 0; }
.ev-v2 .cad-check .form-check-input { width: 18px; height: 18px; margin: 0; flex-shrink: 0; accent-color: var(--brand-primary); cursor: pointer; }
.ev-v2 .cad-check a { color: var(--brand-primary); text-decoration: none; }
.ev-v2 .cad-check a:hover { text-decoration: underline; }

/* Dica pequena sob um campo */
.ev-v2 .field-hint { display: inline-block; margin-top: .3rem; font-size: .72rem; color: var(--brand-primary); text-decoration: none; }
.ev-v2 .field-hint:hover { text-decoration: underline; }

/* Franquias — filtro por UF + lista */
.ev-v2 .franq-filter { display: flex; gap: .35rem; flex-wrap: wrap; margin-bottom: 1rem; }
.ev-v2 .franq-pill { display: inline-flex; align-items: center; padding: .38rem .85rem; border-radius: 99px; border: 1px solid var(--card-border); background: transparent; color: var(--text-muted); font-family: var(--font-body); font-size: .78rem; font-weight: 600; cursor: pointer; transition: border-color .15s, background .15s, color .15s; }
.ev-v2 .franq-pill:hover { border-color: var(--brand-primary); color: var(--brand-primary); }
.ev-v2 .franq-pill.active { background: var(--brand-primary); border-color: var(--brand-primary); color: #fff; }
.ev-v2 .franq-list { display: flex; flex-direction: column; }
.ev-v2 .franq-item { padding: .85rem .25rem; border-bottom: 1px dashed var(--card-border); }
.ev-v2 .franq-item:last-child { border-bottom: 0; }
.ev-v2 .franq-name { font-weight: 700; font-size: .9rem; color: var(--text-strong); margin-bottom: .3rem; }
.ev-v2 .franq-meta { display: flex; flex-direction: column; gap: .2rem; font-size: .78rem; color: var(--text-muted); }
.ev-v2 .franq-meta span { display: inline-flex; align-items: center; gap: .35rem; }
.ev-v2 .franq-meta .bi { color: var(--brand-primary); }

/* Blocos de estado / mensagem (acesso bloqueado, erro, manutenção) */
.ev-v2 .state-block { display: flex; flex-direction: column; align-items: center; text-align: center; gap: .9rem; padding: 2.5rem 1.5rem; }
.ev-v2 .state-ic { width: 84px; height: 84px; border-radius: 24px; display: grid; place-items: center; font-size: 2.4rem; background: var(--brand-primary-soft); color: var(--brand-primary); }
.ev-v2 .state-ic.danger { background: var(--danger-soft); color: var(--danger); }
.ev-v2 .state-ic.warning { background: var(--warning-soft); color: var(--warning); }
.ev-v2 .state-title { font-family: var(--font-display); font-weight: 800; font-size: 1.4rem; color: var(--text-strong); margin: 0; line-height: 1.25; }
.ev-v2 .state-block p { font-size: .92rem; color: var(--text-muted); line-height: 1.6; margin: 0; max-width: 640px; }
.ev-v2 .state-actions { display: flex; gap: .5rem; flex-wrap: wrap; justify-content: center; margin-top: .5rem; }
.ev-v2 .state-debug { width: 100%; text-align: left; margin-top: 1rem; }
.ev-v2 .state-debug pre { background: var(--body-bg); border: 1px solid var(--card-border); border-radius: 10px; padding: 1rem; font-size: .78rem; color: var(--text-strong); overflow: auto; max-height: 320px; white-space: pre-wrap; word-break: break-word; }

/* Modais de contratos / popup (globais do _LayoutV2) */
.ev-v2 .contrato-embed { width: 100%; height: 420px; border: 1px solid var(--card-border); border-radius: 10px; }
.ev-v2 .conteudo { font-size: .9rem; color: var(--text-strong); line-height: 1.65; }
.ev-v2 .popup-banner { text-align: center; }
.ev-v2 .popup-banner img { max-width: 100%; height: auto; border-radius: 10px; display: inline-block; }
#alerta-modal .error, #popup-modal .error { color: var(--danger); font-size: .8rem; display: block; margin-top: .25rem; }
/* ============================================================
   Modal "Completar cadastro" (primeiro acesso): medidor de força e
   checklist de regras da senha — mesmos estilos da pagina de cadastro.
   ============================================================ */
#modalCompletarCadastro .pw-meter { display: flex; gap: .3rem; margin-top: .55rem; }
#modalCompletarCadastro .pw-meter span { flex: 1; height: 5px; border-radius: 99px; background: var(--card-border, #e7eaf3); transition: background .2s; }
#modalCompletarCadastro .pw-meter[data-score="1"] span:nth-child(1) { background: var(--danger, #e11d48); }
#modalCompletarCadastro .pw-meter[data-score="2"] span:nth-child(-n+2) { background: var(--warning, #d97706); }
#modalCompletarCadastro .pw-meter[data-score="3"] span:nth-child(-n+3) { background: #eab308; }
#modalCompletarCadastro .pw-meter[data-score="4"] span,
#modalCompletarCadastro .pw-meter[data-score="5"] span { background: var(--success, #16a34a); }
#modalCompletarCadastro .pw-rules { display: flex; flex-wrap: wrap; gap: .35rem .9rem; margin: .5rem 0 1rem; padding: 0; }
#modalCompletarCadastro .pw-rules li { list-style: none; display: flex; align-items: center; gap: .3rem; white-space: nowrap; font-size: .68rem; color: var(--text-muted, #7b84a3); transition: color .15s; }
#modalCompletarCadastro .pw-rules li .bi { font-size: .9rem; }
#modalCompletarCadastro .pw-rules li.ok { color: var(--success, #16a34a); }
/* Campos de senha do modal: bolinhas bem menores; altura travada em rem para
   nao encolher com a fonte reduzida e manter o padrao dos demais campos. */
#modalCompletarCadastro input.input-password {
  font-size: .52rem; letter-spacing: .15em;
  line-height: 1.5rem;
  min-height: calc(1.5rem + .75rem + 2px);
}
#modalCompletarCadastro input.input-password::placeholder { font-size: .88rem; letter-spacing: normal; }

/* Telemedicina (ATL) — realce de seleção de plano e beneficiário inativo */
.opcao-plano { display: flex; flex-direction: column; transition: border-color .15s, box-shadow .15s, transform .15s; }
.opcao-plano:hover { border-color: var(--brand-primary); box-shadow: 0 8px 20px rgba(15, 23, 42, .10); transform: translateY(-4px); }
.opcao-plano.selected { border-color: var(--brand-primary); box-shadow: 0 0 0 2px var(--brand-primary-soft); }
.opcao-plano.selected:hover { box-shadow: 0 8px 20px rgba(15, 23, 42, .12), 0 0 0 2px var(--brand-primary-soft); }
/* radio fixo na base do card (alinhado entre cards com titulos de alturas diferentes) */
.opcao-plano input[type="radio"] { margin-top: auto; align-self: center; }
/* protege a imagem de encolher no flex-column */
.opcao-plano img { flex-shrink: 0; }
.item-beneficiario.opacity { opacity: .55; }

/* Sticky footer: rodapé sempre no fundo da tela quando o conteúdo é curto (ATL) */
.app-content { flex: 1 0 auto; }
.app-footer { margin-top: auto; }

/* Ícones ✓/✗ do helper YesOrNo (classes .green/.red) — colorir verde/vermelho no ev-v2 */
i.green { color: var(--success); }
i.red   { color: var(--danger); }

/* KPIs da Rede Unilevel: cards renderizam no load com placeholder de tamanho fixo;
   só o valor é preenchido no retorno do AJAX, sem deslocar o layout. */
.ul-summary-card .ul-sc-value { min-height: 1.3rem; }
.kpi-sk {
  display: inline-block; width: 54px; height: 1.02rem; border-radius: 5px; vertical-align: middle;
  background: linear-gradient(90deg, #e9ebf1 25%, #f3f4f8 37%, #e9ebf1 63%);
  background-size: 400% 100%; animation: kpiShimmer 1.15s ease-in-out infinite;
}
@keyframes kpiShimmer { 0% { background-position: 100% 0; } 100% { background-position: 0 0; } }
