/* ── Portal do Cliente — estilos complementares ao Sneat ──────── */

/* ── Layout ──────────────────────────────────────────────────── */
.portal-page         { max-width:1100px; margin:0 auto; padding:2rem 1rem; }
.portal-page-narrow  { max-width:760px;  margin:0 auto; padding:2rem 1rem; }

/* ── Nav superior (todas as páginas autenticadas) ────────────── */
.portal-nav { display:flex; justify-content:space-between; align-items:center; margin-bottom:1.5rem; gap:1rem; flex-wrap:wrap; }
.portal-nav-title { font-size:1.35rem; font-weight:700; color:var(--text-heading); margin:0; line-height:1.3; }
.portal-nav-sub   { margin:.25rem 0 0; color:var(--text-secondary); font-size:.88rem; }
.portal-nav-actions { display:flex; gap:.6rem; align-items:center; flex-wrap:wrap; }

/* ── KPI grid ────────────────────────────────────────────────── */
.portal-kpi-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; margin-bottom:1.5rem; }
@media (max-width:640px) { .portal-kpi-grid { grid-template-columns:1fr; } }

/* ── Table ───────────────────────────────────────────────────── */
.portal-table           { width:100%; border-collapse:collapse; }
.portal-table th        { padding:.75rem 1rem; font-weight:600; color:var(--text-secondary);
                          background:var(--bg-table-header); text-align:left; font-size:.78rem;
                          text-transform:uppercase; letter-spacing:.04em; white-space:nowrap; }
.portal-table td        { padding:.7rem 1rem; color:var(--text-primary); font-size:.9rem; }
.portal-table tbody tr  { border-top:1px solid var(--border-light); transition:background .12s; cursor:pointer; }
.portal-table tbody tr:hover { background:var(--bg-hover); }
.portal-table td.portal-col-id   { font-family:monospace; font-size:.82rem; color:var(--text-secondary); font-weight:500; }
.portal-table td.portal-col-date { white-space:nowrap; color:var(--text-secondary); font-size:.85rem; }

/* ── Table → cards mobile ────────────────────────────────────── */
.portal-table-mobile { display:none; }
@media (max-width:640px) {
  .portal-table-wrap { overflow-x:auto; }
  .portal-table thead { display:none; }
  .portal-table tbody tr { display:block; padding:1rem; margin-bottom:.75rem; border:1px solid var(--border-default); border-radius:.5rem; background:var(--bg-surface); }
  .portal-table td { display:flex; justify-content:space-between; padding:.3rem 0; border:none; }
  .portal-table td::before { content:attr(data-label); font-weight:600; color:var(--text-secondary); font-size:.78rem; }
}

/* ── Badge com cor do banco ──────────────────────────────────── */
.portal-badge { display:inline-block; padding:.2rem .65rem; border-radius:9999px; font-size:.78rem; font-weight:600; line-height:1.4; }

/* ── Empty state ─────────────────────────────────────────────── */
.portal-empty { padding:2.5rem 1.5rem; text-align:center; color:var(--text-muted); font-size:.9rem; }
.portal-empty i { font-size:1.6rem; display:block; margin-bottom:.6rem; color:var(--text-muted); }

/* ── Section card ────────────────────────────────────────────── */
.portal-section { background:var(--bg-surface); border-radius:.625rem; box-shadow:var(--shadow-card); padding:1.5rem; margin-top:1.25rem; }
.portal-section-title { font-size:1rem; font-weight:600; color:var(--text-heading); margin:0 0 .75rem; }
.portal-section-title i { color:var(--accent); margin-right:.45rem; }

/* ── Timeline ────────────────────────────────────────────────── */
.portal-tl-item { border-left:4px solid var(--accent); border-radius:.6rem; background:var(--bg-surface);
                  box-shadow:var(--shadow-card); padding:.85rem 1rem; margin-bottom:.7rem; }
.portal-tl-item.tl-comentario { border-left-color:var(--success); }
.portal-tl-item.tl-status     { border-left-color:var(--info); }
.portal-tl-header { display:flex; justify-content:space-between; font-size:.76rem; color:var(--text-muted); margin-bottom:.3rem; }
.portal-tl-header span:first-child { font-weight:600; }
.portal-tl-text { color:var(--text-primary); font-size:.88rem; white-space:pre-wrap; }

/* ── Login ───────────────────────────────────────────────────── */
.portal-login-wrap { min-height:100vh; display:flex; align-items:center; justify-content:center; padding:1rem; }
.portal-login-card { width:100%; max-width:400px; background:var(--bg-surface); border-radius:1rem;
                     box-shadow:var(--shadow-card); padding:2.25rem; }
.portal-login-icon { width:42px; height:42px; border-radius:.75rem; background:var(--accent);
                     display:flex; align-items:center; justify-content:center; color:var(--accent-text); flex-shrink:0; }
.portal-login-error { display:none; align-items:flex-start; gap:.5rem; background:var(--danger-bg);
                      border:1px solid var(--danger-border); color:var(--danger-strong);
                      padding:.65rem .85rem; border-radius:.5rem; font-size:.82rem; margin-bottom:1.125rem; }
.portal-login-error.visible { display:flex; }

/* ── Form labels ─────────────────────────────────────────────── */
.portal-label { display:block; font-size:.78rem; font-weight:600; color:var(--text-secondary); margin-bottom:.35rem; letter-spacing:.02em; }

/* ── Info / notice boxes ─────────────────────────────────────── */
.portal-notice { border-radius:.6rem; padding:1rem 1.25rem; font-size:.85rem; line-height:1.5; }
.portal-notice-success { background:var(--success-bg); border:1px solid var(--success-border); color:var(--success-strong); }
.portal-notice-warning { background:var(--warning-bg); border:1px solid var(--warning-border); color:var(--warning-strong); }
.portal-notice-info    { background:var(--info-bg); border:1px solid var(--info-border); color:var(--text-primary); }

/* ── Filtros (chips) ─────────────────────────────────────────── */
.portal-filters { display:flex; gap:.45rem; flex-wrap:wrap; margin-bottom:1rem; }
.portal-chip { display:inline-flex; align-items:center; gap:.3rem; padding:.35rem .75rem; border-radius:9999px;
               font-size:.82rem; font-weight:500; text-decoration:none; transition:all .15s;
               border:1px solid var(--border-default); color:var(--text-primary); background:var(--bg-surface); }
.portal-chip:hover { background:var(--bg-hover); border-color:var(--accent); }
.portal-chip.active { background:var(--accent); color:var(--accent-text); border-color:var(--accent); }
.portal-chip-count { font-size:.72rem; opacity:.7; }

/* ── Scrollbar ───────────────────────────────────────────────── */
.portal-table-wrap { overflow-x:auto; -webkit-overflow-scrolling:touch; }

/* ── Topbar ──────────────────────────────────────────────────── */
.portal-topbar { border-bottom:1px solid var(--border-light); background:var(--bg-surface); }
.portal-topbar-inner { max-width:1100px; margin:0 auto; padding:.65rem 1rem; display:flex; align-items:center; gap:1rem; flex-wrap:wrap; }
.portal-topbar-brand { display:flex; align-items:center; gap:.6rem; text-decoration:none; color:var(--text-heading); font-weight:700; }
.portal-topbar-logo { width:64px; height:64px; border-radius:.6rem; background:transparent !important; display:flex; align-items:center; justify-content:center; font-size:1.3rem; color:var(--accent-text); } .portal-topbar-logo img { width:100%; height:100%; object-fit:contain; }
.portal-topbar-title { font-size:.95rem; }
.portal-topbar-nav { display:flex; align-items:center; gap:.35rem; flex-wrap:wrap; margin-left:auto; }
.portal-topbar-link { display:inline-flex; align-items:center; gap:.4rem; padding:.45rem .7rem; border-radius:.5rem; font-size:.85rem; color:var(--text-secondary); text-decoration:none; transition:all .15s; }
.portal-topbar-link:hover { background:var(--bg-hover); color:var(--text-primary); }
.portal-topbar-link.active { background:var(--accent); color:var(--accent-text); font-weight:600; }
.portal-topbar-btn { display:inline-flex; align-items:center; gap:.4rem; padding:.45rem .8rem; border-radius:.5rem; font-size:.85rem; font-weight:600; color:#fff; background:var(--accent); text-decoration:none; }
.portal-topbar-btn:hover { filter:brightness(1.05); }
.portal-topbar-right { display:flex; align-items:center; gap:.35rem; }
.portal-topbar-iconbtn { border:1px solid var(--border-default); background:var(--bg-surface); color:var(--text-secondary); width:34px; height:34px; border-radius:.5rem; cursor:pointer; display:flex; align-items:center; justify-content:center; font-size:.85rem; }
.portal-topbar-iconbtn:hover { color:var(--text-primary); border-color:var(--accent); }
.portal-topbar-context { max-width:1100px; margin:0 auto; padding:.25rem 1rem .6rem; font-size:.75rem; color:var(--text-secondary); display:flex; align-items:center; gap:.4rem; }
.portal-topbar-context i { color:var(--accent); }

/* ── Toolbar da lista (filtros + busca) ──────────────────────── */
.portal-toolbar { display:flex; justify-content:space-between; align-items:flex-start; gap:1rem; margin-bottom:1rem; flex-wrap:wrap; }
.portal-search { display:flex; align-items:center; gap:.4rem; background:var(--bg-surface); border:1px solid var(--border-default); border-radius:.5rem; padding:.25rem .4rem .25rem .7rem; }
.portal-search i { color:var(--text-muted); font-size:.85rem; }
.portal-search input { border:none; background:transparent; outline:none; color:var(--text-primary); font-size:.85rem; min-width:180px; padding:.35rem 0; }
.portal-search .sneat-btn { padding:.3rem .7rem; font-size:.8rem; white-space:nowrap; }

/* ── Banner de etapa ─────────────────────────────────────────── */
.portal-etapa { display:flex; align-items:flex-start; gap:.6rem; border-radius:.6rem; padding:.85rem 1.1rem; font-size:.85rem; line-height:1.5; margin-bottom:1.25rem; }
.portal-etapa i { margin-top:.15rem; }
.portal-etapa-action { background:var(--info-bg); border:1px solid var(--info-border); color:var(--text-primary); }
.portal-etapa-wait   { background:var(--warning-bg); border:1px solid var(--warning-border); color:var(--warning-strong); }
.portal-etapa-success{ background:var(--success-bg); border:1px solid var(--success-border); color:var(--success-strong); }

/* ── Tabs — Sneat Filled Tabs (nav-fill) ─────────────────────── */
.portal-tabs { display:flex; gap:.5rem; border-bottom:none; margin-bottom:1.25rem; background:var(--bg-hover);
               border-radius:.5rem; padding:.3rem; }
.portal-tabs .nav-link { flex:1; display:inline-flex; align-items:center; justify-content:center; gap:.4rem;
                         padding:.55rem .75rem; border:none; border-radius:.375rem; background:transparent;
                         color:var(--text-secondary); font-size:.85rem; font-weight:500; cursor:pointer;
                         white-space:nowrap; transition:all .15s; }
.portal-tabs .nav-link i { font-size:.82rem; }
.portal-tabs .nav-link:hover { color:var(--text-primary); background:var(--bg-surface); }
.portal-tabs .nav-link.active { color:var(--accent); background:var(--bg-surface); box-shadow:var(--shadow-card); font-weight:600; }
.portal-tab-panel { animation:portalTabFade .15s ease-out; }
@keyframes portalTabFade { from{opacity:0;transform:translateY(3px)} to{opacity:1;transform:translateY(0)} }

/* ── Detalhe: barra de info (acima das tabs) ────────────────── */
.portal-detail-info { padding:1.5rem 1.75rem; }
.portal-detail-info h1 { font-size:1.25rem; font-weight:700; color:var(--text-heading); margin:0 0 .35rem; }
.portal-detail-meta { color:var(--text-muted); font-size:.8rem; margin:0; }

/* ── Quill editor (conversas / demanda nova) ────────────────── */
.portal-ql-wrap { background:var(--bg-surface); border:1px solid var(--border-default); border-radius:.375rem; }
.portal-ql-wrap .ql-toolbar { border:none; border-bottom:1px solid var(--border-light); border-radius:.375rem .375rem 0 0; }
.portal-ql-wrap .ql-container { min-height:120px; border:none; font-size:.92rem; }
.portal-ql-wrap .ql-editor { color:var(--text-primary); min-height:120px; }
.portal-ql-wrap .ql-editor.ql-blank::before { color:var(--text-muted); font-style:normal; }
.portal-ql-desc .ql-container { min-height:180px; }
.portal-ql-desc .ql-editor { min-height:180px; }

/* ── File preview (upload de anexos) ─────────────────────────── */
.portal-file-preview { display:flex; flex-wrap:wrap; gap:.5rem; margin-top:.5rem; }
.portal-file-item { display:inline-flex; align-items:center; gap:.4rem; background:var(--bg-hover);
                    border:1px solid var(--border-default); border-radius:.5rem; padding:.3rem .6rem;
                    font-size:.8rem; color:var(--text-primary); }
.portal-file-item img { height:2rem; width:2rem; object-fit:cover; border-radius:.25rem; }
.portal-file-item .fp-remove { cursor:pointer; color:var(--danger); margin-left:.25rem; font-size:.75rem; }
.portal-file-item .fp-remove:hover { opacity:.7; }
.portal-desc-counter { display:block; text-align:right; font-size:.72rem; color:var(--text-muted); margin-top:.3rem; }

/* ── Seção colapsável (homologação) ──────────────────────────── */
.portal-collapse > summary { cursor:pointer; list-style:none; }
.portal-collapse > summary::-webkit-details-marker { display:none; }
.portal-collapse > summary::after { content:'\f107'; font-family:'Font Awesome 6 Free'; font-weight:900; margin-left:auto; color:var(--text-muted); font-size:.8rem; transition:transform .15s; }
.portal-collapse[open] > summary::after { transform:rotate(180deg); }
.portal-collapse[open] { }

/* ── Paginação: reticências ──────────────────────────────────── */
.sneat-page-ellipsis { display:inline-flex; align-items:center; padding:.3rem .45rem; color:var(--text-muted); font-size:.85rem; }

@media (max-width: 640px) {
  .portal-topbar-inner { padding:.6rem .85rem; gap:.6rem; }
  .portal-topbar-title { display:none; }
  .portal-topbar-link span, .portal-topbar-btn span { display:none; }
  .portal-topbar-link, .portal-topbar-btn { padding:.5rem .65rem; }
  .portal-topbar-context { padding-left:.85rem; }
  .portal-search { width:100%; }
  .portal-search input { flex:1; min-width:0; }
}

/* ── Layout do portal (sem sidebar) ──────────────────────────── */
.portal-layout { min-height:100vh; display:flex; flex-direction:column; }
.portal-shell { flex:1 0 auto; display:flex; flex-direction:column; width:100%; }

.portal-topbar { position:sticky; top:0; z-index:40; }
.portal-topbar-spacer { flex:1; }
.portal-topbar-user { display:inline-flex; align-items:center; gap:.45rem; font-size:.82rem; color:var(--text-secondary); background:var(--bg-hover); border:1px solid var(--border-default); padding:.3rem .7rem; border-radius:9999px; }

.portal-main { flex:1; width:100%; }
.portal-container { max-width:1100px; margin:0 auto; padding:1.75rem 1.25rem 3rem; }

@media (max-width:640px) {
  .portal-topbar-user { display:none; }
  .portal-container { padding:1.25rem .85rem 2.5rem; }
}

/* ── Botão voltar ao topo ────────────────────────────────────── */
.portal-backtop {
  position:fixed; right:1.25rem; bottom:1.25rem; z-index:45;
  width:42px; height:42px; border-radius:.625rem;
  border:1px solid var(--border-default);
  background:var(--accent); color:var(--accent-text); box-shadow:var(--shadow-card);
  display:flex; align-items:center; justify-content:center; cursor:pointer; font-size:.95rem;
}
.portal-backtop:hover { filter:brightness(1.08); }

/* ── Badge de prioridade ─────────────────────────────────────── */
.portal-prio { display:inline-block; padding:.15rem .55rem; border-radius:9999px; font-size:.74rem; font-weight:600; white-space:nowrap; }
.portal-prio-baixa   { color:var(--success-strong); background:var(--success-bg); border:1px solid var(--success-border); }
.portal-prio-media   { color:var(--info); background:var(--info-bg); border:1px solid var(--info-border); }
.portal-prio-alta    { color:var(--warning-strong); background:var(--warning-bg); border:1px solid var(--warning-border); }
.portal-prio-critica { color:var(--danger-strong); background:var(--danger-bg); border:1px solid var(--danger-border); }
.portal-prio-none    { color:var(--text-muted); background:var(--bg-hover); border:1px solid var(--border-default); }

/* ── Hover elevado nas linhas de tabela ──────────────────────── */
.portal-table tbody tr { transition: transform .15s ease, box-shadow .15s ease, background .12s; }
.portal-table tbody tr:hover {
  background:var(--bg-hover);
  transform:translateY(-1px);
  box-shadow:0 4px 14px -6px rgba(0,0,0,.18);
  position:relative; z-index:1;
}

/* ── Indicador "requerem ação" (home) ────────────────────────── */
.portal-action-indicator {
  display:inline-flex; align-items:center; gap:.5rem;
  background:var(--warning-bg); border:1px solid var(--warning-border);
  color:var(--warning-strong); font-size:.85rem; font-weight:600;
  padding:.5rem .9rem; border-radius:9999px; margin-bottom:1rem;
}
.portal-action-dot {
  width:.55rem; height:.55rem; border-radius:50%;
  background:var(--warning-strong);
  animation:portalPulse 1.6s ease-in-out infinite;
}
@keyframes portalPulse { 0%,100%{opacity:1} 50%{opacity:.35} }

/* ── Filtro ativo (home) ────────────────────────────────────── */
.portal-filter-active { display:flex; flex-wrap:wrap; }

/* ── Login split-screen ──────────────────────────────────────── */
.portal-login-shell { min-height:100vh; display:grid; grid-template-columns:1fr 1.1fr; }
.portal-login-brand {
  background:linear-gradient(135deg, var(--accent), var(--accent-hover));
  color:#fff; display:flex; align-items:center; justify-content:center;
  padding:2.5rem; position:relative; overflow:hidden;
}
.portal-login-brand::before, .portal-login-brand::after {
  content:''; position:absolute; border-radius:50%; background:rgba(255,255,255,.08);
}
.portal-login-brand::before { width:22rem; height:22rem; top:-8rem; right:-8rem; }
.portal-login-brand::after  { width:16rem; height:16rem; bottom:-6rem; left:-5rem; }
.portal-login-brand-inner { max-width:390px; width:100%; position:relative; z-index:1; }

.portal-login-logo-wrap {
  flex-shrink:0; background:#fff; border-radius:.75rem; padding:.55rem .9rem;
  box-shadow:0 6px 18px rgba(0,0,0,.18); display:flex; align-items:center; justify-content:center;
}
.portal-login-logo { height:36px; max-width:200px; object-fit:contain; display:block; }

.portal-login-carousel { display:flex; flex-direction:column; align-items:center; gap:1.5rem; }
.portal-login-slides { position:relative; width:100%; min-height:9rem; display:flex; align-items:center; justify-content:center; }
.portal-login-slide { position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
                      opacity:0; visibility:hidden; transition:opacity .6s ease, visibility .6s; }
.portal-login-slide.is-active { opacity:1; visibility:visible; }
.portal-login-logo-wrap--big { padding:1rem 1.6rem; border-radius:1rem; }
.portal-login-logo-wrap--big .portal-login-logo { height:64px; max-width:300px; }
.portal-login-fallback-icon { width:84px; height:84px; border-radius:1.25rem;
                              background:rgba(255,255,255,.18); display:flex; align-items:center; justify-content:center; }
.portal-login-fallback-icon i { color:#fff; font-size:2.4rem; }
.portal-login-carousel-dots { display:flex; gap:.4rem; }
.portal-login-carousel-dots span { width:8px; height:8px; border-radius:50%; background:rgba(255,255,255,.4); transition:background .3s; }
.portal-login-carousel-dots span.is-active { background:#fff; }

.portal-login-features li { display:flex; align-items:center; gap:.7rem; font-size:.88rem; color:rgba(255,255,255,.95); }
.portal-login-feature-icon {
  width:30px; height:30px; border-radius:.5rem; flex-shrink:0;
  background:rgba(255,255,255,.16); display:flex; align-items:center; justify-content:center; font-size:.85rem;
}
.portal-login-form { display:flex; align-items:center; justify-content:center; padding:2rem 1.25rem; }

@media (max-width:900px) {
  .portal-login-shell { grid-template-columns:1fr; }
  .portal-login-brand { display:none; }
  .portal-login-form { padding:1.25rem; }
}

/* ── Distribuição por status ─────────────────────────────────── */
.portal-dist { display:flex; flex-direction:column; gap:.7rem; }
.portal-dist-row { display:grid; grid-template-columns:130px 1fr 40px; gap:.6rem; align-items:center; font-size:.82rem; }
.portal-dist-name { color:var(--text-secondary); font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.portal-dist-track { height:.55rem; border-radius:9999px; background:var(--bg-hover); overflow:hidden; }
.portal-dist-fill { height:100%; border-radius:9999px; transition:width .3s ease; }
.portal-dist-count { text-align:right; color:var(--text-muted); font-variant-numeric:tabular-nums; }

/* ── Rodapé do portal ─────────────────────────────────────────── */
.portal-footer {
  margin-top:auto; border-top:1px solid var(--border-default);
  background:var(--bg-secondary, var(--bg-body)); padding:1.25rem 1.25rem 1.5rem;
}
.portal-footer-content {
  max-width:1100px; margin:0 auto;
  display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap;
}
.portal-footer-brand { display:inline-flex; align-items:center; gap:.6rem; text-decoration:none; color:inherit; }
.portal-footer-logo {
  width:38px; height:38px; border-radius:.6rem; flex-shrink:0;
  background:var(--accent); color:var(--accent-text);
  display:flex; align-items:center; justify-content:center; font-size:1.05rem;
}
.portal-footer-brand-text { display:flex; flex-direction:column; line-height:1.2; }
.portal-footer-brand-text strong { font-size:.95rem; }
.portal-footer-brand-text small { font-size:.75rem; color:var(--text-muted); }
.portal-footer-copyright { font-size:.8rem; color:var(--text-muted); margin:0; }
.portal-footer-copyright a { color:var(--accent); text-decoration:none; }
.portal-footer-copyright a:hover { text-decoration:underline; }

/* ── Ação necessária ("!") por linha ──────────────────────────── */
.portal-demand-acao {
  background:color-mix(in srgb, var(--accent) 6%, transparent);
}
.portal-urgente {
  display:inline-flex; align-items:center; justify-content:center;
  width:22px; height:22px; border-radius:50%; flex-shrink:0;
  background:#d6372f; color:#fff; font-weight:700; font-size:.85rem; line-height:1;
  animation:portalUrgente 1.8s infinite;
}
.portal-urgente-none { display:inline-block; width:22px; height:22px; }
@keyframes portalUrgente {
  0%   { box-shadow:0 0 0 0 rgba(214,55,47,.5); }
  70%  { box-shadow:0 0 0 9px rgba(214,55,47,0); }
  100% { box-shadow:0 0 0 0 rgba(214,55,47,0); }
}

/* ── Previsão vencida ─────────────────────────────────────────── */
.portal-vencida { color:#d6372f; font-weight:600; }
.portal-vencida-tag {
  margin-left:.35rem; padding:.1rem .4rem; border-radius:.4rem;
  background:rgba(214,55,47,.12); color:#d6372f;
  font-size:.68rem; font-weight:700; text-transform:uppercase; letter-spacing:.03em;
  white-space:nowrap;
}

/* ── Banner de sucesso (ação em lote aplicada) ────────────────── */
.portal-ok-banner {
  display:flex; align-items:center; gap:.4rem;
  margin:0 0 1rem; padding:.7rem 1rem; border-radius:.625rem;
  background:rgba(34,197,94,.12); border:1px solid rgba(34,197,94,.35);
  color:#15803d; font-size:.88rem;
}

/* ── Filtros da lista única (busca, abertura, previsão) ───────── */
.portal-filtros-form { margin:.95rem 0; }
.portal-filtros-inline { display:flex; align-items:flex-end; gap:.6rem; flex-wrap:wrap; }
.portal-filtro-busca { position:relative; flex:1 1 220px; min-width:200px; }
.portal-filtro-busca i {
  position:absolute; left:.7rem; top:50%; transform:translateY(-50%);
  color:var(--text-muted); font-size:.85rem; pointer-events:none;
}
.portal-filtro-busca input {
  width:100%; padding:.55rem .8rem .55rem 2rem;
  border:1px solid var(--border-default); border-radius:.55rem;
  background:var(--bg-body); color:var(--text); font-size:.87rem; outline:none;
}
.portal-filtro-busca input:focus,
.portal-filtro-date:focus,
.portal-filtro-select:focus {
  border-color:var(--accent);
  box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent);
}
.portal-filtro-label { font-size:.75rem; font-weight:600; color:var(--text-secondary); margin-bottom:.2rem; }
.portal-filtro-date, .portal-filtro-select {
  padding:.5rem .7rem; border:1px solid var(--border-default); border-radius:.55rem;
  background:var(--bg-body); color:var(--text); font-size:.85rem; outline:none;
}
.portal-filtro-sep { align-self:center; color:var(--text-muted); font-size:.8rem; }

@media (max-width:640px) {
  .portal-filtros-inline { flex-direction:column; align-items:stretch; }
  .portal-filtro-busca { min-width:0; }
  .portal-filtro-date, .portal-filtro-select { width:100%; }
  .portal-footer-content { justify-content:center; text-align:center; }
}
