/* ============================================================================
   LINHA · componentes
   Cobre o vocabulário que os templates já usam (.btn, .au-fld, .glass, .kpi,
   .au-table, .modal-overlay...). Painel refeito pode usar os mesmos nomes; o
   visual vem daqui e de mais lugar nenhum.
   ============================================================================ */

/* ================================================================ utilitários */
.flex{ display:flex; gap:var(--l-e2); align-items:center; flex-wrap:wrap }
.flex-col{ display:flex; flex-direction:column; gap:var(--l-e3) }
.flex-wrap{ flex-wrap:wrap }
.space-between{ justify-content:space-between }
.center{ text-align:center }
.bold{ font-weight:600 }
.w-full{ width:100% }
.mt-2, .mt-4{ margin-top:var(--l-e4) }
.mb-1{ margin-bottom:var(--l-e1) } .mb-2, .mb-4{ margin-bottom:var(--l-e4) } .mb-3{ margin-bottom:var(--l-e3) }
.gap-1{ gap:var(--l-e1) } .gap-2{ gap:var(--l-e2) } .gap-3{ gap:var(--l-e3) } .gap-6{ gap:var(--l-e6) }
.small, .text-sm{ font-size:var(--l-t-peq); color:var(--l-texto-2) }
.text-muted, .text-gray-500, .text-gray-600{ color:var(--l-texto-2) }
.text-danger{ color:var(--l-erro) }
.ta-r{ text-align:right; justify-self:end }
.esp{ color:var(--l-texto-2) }
.num, .proto{ font-variant-numeric:tabular-nums }
.proto{ color:var(--l-texto-2); font-size:var(--l-t-peq) }

/* ================================================================ botões */
.btn, .ds-btn, button.g{
  display:inline-flex; align-items:center; justify-content:center; gap:var(--l-e2);
  height:var(--l-controle); padding:0 14px;
  border:1px solid var(--l-borda); border-radius:var(--l-raio-2);
  background:var(--l-sup); color:var(--l-texto);
  font-size:var(--l-t-corpo); font-weight:500; line-height:1; white-space:nowrap; text-decoration:none;
  transition:background var(--l-rapido), border-color var(--l-rapido), color var(--l-rapido);
}
.btn:hover, .ds-btn:hover{ background:var(--l-sup-3); border-color:var(--l-borda-forte); text-decoration:none }
.btn:active{ transform:translateY(1px) }
.btn i[data-lucide], .btn svg{ width:16px; height:16px }

.btn.primary, .btn.btn-primary, button.primary, .ds-btn-primary, .btn-roxo{
  background:var(--l-marca); border-color:var(--l-marca); color:var(--l-sobre-marca);
}
.btn.primary:hover, .btn.btn-primary:hover, button.primary:hover, .ds-btn-primary:hover{
  background:var(--l-marca-forte); border-color:var(--l-marca-forte);
}
.btn.ghost, .btn.exit{ background:transparent; border-color:transparent; color:var(--l-texto-2) }
.btn.ghost:hover, .btn.exit:hover{ background:var(--l-sup-3); color:var(--l-texto); border-color:transparent }
.btn.soft{ background:var(--l-marca-suave); border-color:transparent; color:var(--l-marca-tinta) }
.btn.soft:hover{ background:var(--l-marca-clara) }
.btn.danger, .btn.btn-danger, button.dang, .ds-btn-danger{ background:var(--l-erro); border-color:var(--l-erro); color:#fff }
.btn.danger:hover, .btn.btn-danger:hover{ filter:brightness(.92) }
.btn.ghost.danger{ background:transparent; border-color:transparent; color:var(--l-erro) }
.btn.ghost.danger:hover{ background:var(--l-erro-fundo); filter:none }
.btn.small, .btn.btn-sm, .btn.sm{ height:var(--l-controle-p); padding:0 10px; font-size:var(--l-t-peq) }
.btn.btn-xs{ height:26px; padding:0 8px; font-size:var(--l-t-mini) }
.btn:disabled, .btn[disabled], .btn[aria-disabled="true"]{ opacity:.45; pointer-events:none }

.icon-btn, .ui-icon-btn{
  display:inline-grid; place-items:center; flex:none;
  width:var(--l-controle); height:var(--l-controle); padding:0;
  border:0; border-radius:var(--l-raio-2); background:transparent; color:var(--l-texto-2);
  transition:background var(--l-rapido), color var(--l-rapido);
}
.icon-btn:hover, .ui-icon-btn:hover{ background:var(--l-sup-3); color:var(--l-texto) }
.icon-btn i[data-lucide], .icon-btn svg{ width:18px; height:18px }

/* tema: sol/lua */
.theme .i-moon{ display:none }
body.theme-dark .theme .i-sun{ display:none }
body.theme-dark .theme .i-moon{ display:block }

/* ================================================================ campos */
input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]):not([type=color]),
select, textarea, .ds-input{
  width:100%; min-height:var(--l-controle); padding:7px 11px;
  border:1px solid var(--l-campo-borda); border-radius:var(--l-raio-2);
  background:var(--l-campo); color:var(--l-texto);
  font-size:var(--l-t-corpo); line-height:1.4;
  transition:border-color var(--l-rapido), box-shadow var(--l-rapido);
}
textarea{ min-height:84px; resize:vertical }
select{
  appearance:none; -webkit-appearance:none; padding-right:32px; cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236c7263' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 11px center;
}
input::placeholder, textarea::placeholder{ color:var(--l-texto-3); opacity:1 }
input:hover:not(:focus):not(:disabled), select:hover:not(:focus):not(:disabled), textarea:hover:not(:focus):not(:disabled){ border-color:var(--l-borda-forte) }
input:focus, select:focus, textarea:focus, .ds-input:focus{
  outline:none; border-color:var(--l-marca); box-shadow:var(--l-anel);
}
input:disabled, select:disabled, textarea:disabled{ background:var(--l-sup-3); color:var(--l-texto-3) }
input[type=checkbox], input[type=radio]{ width:16px; height:16px; margin:0; accent-color:var(--l-marca); cursor:pointer; vertical-align:middle }
input[type=file]{ font-size:var(--l-t-peq); color:var(--l-texto-2) }
input[type=search]::-webkit-search-cancel-button{ -webkit-appearance:none }

label{ font-size:var(--l-t-peq); font-weight:500; color:var(--l-texto-2) }

.au-form{ display:grid; gap:var(--l-e4) }
.au-form-2{ grid-template-columns:repeat(2,minmax(0,1fr)) }
.au-form-3{ grid-template-columns:repeat(3,minmax(0,1fr)) }
@media (max-width:720px){ .au-form-2, .au-form-3{ grid-template-columns:1fr } }

.au-fld, .field, .um-field{ display:flex; flex-direction:column; gap:6px; min-width:0 }
.au-fld > label, .au-fld > .lbl, .field .lbl, .field > label, .lbl{
  font-size:var(--l-t-peq); font-weight:500; color:var(--l-texto-2); text-transform:none; letter-spacing:0;
}
.au-hint, .au-fld .au-hint{ font-size:var(--l-t-mini); color:var(--l-texto-3) }
.au-fld.is-invalid input, .au-fld.is-invalid select, .au-fld.is-invalid textarea{ border-color:var(--l-erro); box-shadow:0 0 0 3px var(--l-erro-fundo) }

/* busca: o rótulo é a caixa, o input fica cru dentro */
.field.search, .search-box{
  flex-direction:row; align-items:center; gap:var(--l-e2);
  height:var(--l-controle); padding:0 11px;
  border:1px solid var(--l-campo-borda); border-radius:var(--l-raio-2);
  background:var(--l-campo); color:var(--l-texto-3);
}
.field.search:focus-within{ border-color:var(--l-marca); box-shadow:var(--l-anel) }
.field.search input, .field.search input:focus{
  border:0 !important; box-shadow:none !important; background:transparent !important;
  min-height:0; height:100%; padding:0; width:100%;
}
.field.search svg{ flex:none; color:var(--l-texto-3) }

/* ================================================================ superfícies */
.glass, .card, .panel-container, .ds-card{
  position:relative;
  background:var(--l-sup);
  border:1px solid var(--l-borda);
  border-radius:var(--l-raio-3);
}
.card, .panel-container{ padding:var(--l-e5) }

.au-sec{ display:flex; flex-direction:column; gap:var(--l-e3); margin-bottom:var(--l-e8) }
.au-sec:last-child{ margin-bottom:0 }
.au-sec-head{ display:flex; align-items:center; justify-content:space-between; gap:var(--l-e3); flex-wrap:wrap; min-height:var(--l-controle) }
.au-sec-head h2, .au-sec-head h3{ font-size:var(--l-t-titulo); font-weight:600 }
.au-toolbar{ display:flex; align-items:flex-end; gap:var(--l-e2); flex-wrap:wrap }
.au-toolbar .au-fld{ flex-direction:column }

.filters{ display:flex; gap:var(--l-e3); padding:var(--l-e3) var(--l-e4); flex-wrap:wrap; align-items:flex-end }

/* vazio: sem moldura, só a frase */
.au-empty, .pp-empty, .fat-empty, .empty-row, .empty-state{
  grid-column:1/-1; padding:var(--l-e8) var(--l-e4); text-align:center;
  font-size:var(--l-t-corpo); color:var(--l-texto-3); line-height:1.5;
}
.au-empty strong, .au-empty > b{ display:block; color:var(--l-texto); font-size:var(--l-t-corpo); font-weight:600; margin-bottom:2px }

/* ================================================================ KPI */
.kpis{ display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:0; border:1px solid var(--l-borda); border-radius:var(--l-raio-3); background:var(--l-sup); overflow:hidden }
.kpis > .kpi{ border:0; border-radius:0; border-right:1px solid var(--l-fio); background:transparent }
.kpis > .kpi:last-child{ border-right:0 }
.kpi{ display:flex; flex-direction:column; gap:6px; padding:var(--l-e4) var(--l-e5); min-width:0; position:relative }
.k-top{ display:flex; align-items:center; justify-content:space-between; gap:var(--l-e2); order:0 }
.k-ico{ display:inline-grid; place-items:center; width:auto; height:auto; background:none !important; color:var(--l-texto-3) !important }
.k-ico svg{ width:16px; height:16px }
.k-tag{ font-size:var(--l-t-mini); font-weight:500; color:var(--l-texto-3); background:none; padding:0; text-transform:none; letter-spacing:0 }
.k-tag.alert{ color:var(--l-erro) }
.k-val{ font-size:var(--l-t-numero); font-weight:600; letter-spacing:-.02em; line-height:1.1; display:flex; align-items:baseline; gap:6px; color:var(--l-texto) }
.k-val em{ font-style:normal; font-size:var(--l-t-peq); font-weight:500; color:var(--l-texto-3) }
.k-val .pct{ font-size:var(--l-t-titulo); color:var(--l-texto-2) }
.k-sub{ font-size:var(--l-t-peq); color:var(--l-texto-2) }
.k-bar{ height:3px; border-radius:3px; background:var(--l-fio); overflow:hidden; margin-top:auto }
.k-bar i{ display:block; height:100%; width:var(--w); background:var(--l-marca) }
.k-bar.warn i{ background:var(--l-r-laranja) }
.k-sla .k-val{ color:var(--l-erro) }
.spark{ margin-top:auto; color:var(--l-marca-media); height:24px }
.spark svg{ width:100%; height:100% }
.ring{ --sz:40px; position:absolute; right:var(--l-e4); bottom:var(--l-e4); width:var(--sz); height:var(--sz); border-radius:50%;
  background:conic-gradient(var(--l-marca) calc(var(--p)*1%), var(--l-fio) 0); display:grid; place-items:center }
.ring::before{ content:""; position:absolute; inset:4px; border-radius:50%; background:var(--l-sup) }
.ring span{ position:relative; font-size:10px; font-weight:600; color:var(--l-texto) }

/* ================================================================ abas: sublinhado */
.tabs, .ds-tabs{
  flex-shrink:0;
  display:flex; gap:var(--l-e5); align-items:stretch; overflow-x:auto; scrollbar-width:none;
  border-bottom:1px solid var(--l-borda); padding:0; background:none; border-radius:0;
}
.tabs::-webkit-scrollbar{ display:none }
.tab, .ds-tab{
  position:relative; display:inline-flex; align-items:center; gap:6px;
  height:40px; padding:0 2px; margin-bottom:-1px;
  border:0; border-bottom:2px solid transparent; border-radius:0; background:none;
  color:var(--l-texto-2); font-size:var(--l-t-corpo); font-weight:500; white-space:nowrap;
  transition:color var(--l-rapido), border-color var(--l-rapido);
}
.tab:hover, .ds-tab:hover{ color:var(--l-texto) }
.tab.active, .ds-tab.active, [role="tab"][aria-selected="true"]{
  color:var(--l-texto); border-bottom-color:var(--l-marca); background:none;
}
.tab-ink{ display:none }

/* ================================================================ chips (filtro) */
.chips{ display:flex; gap:6px; flex-wrap:wrap }
.chip{
  display:inline-flex; align-items:center; gap:6px; height:30px; padding:0 12px;
  border:1px solid var(--l-borda); border-radius:var(--l-raio-pilula); background:var(--l-sup);
  color:var(--l-texto-2); font-size:var(--l-t-peq); font-weight:500; white-space:nowrap;
  transition:background var(--l-rapido), border-color var(--l-rapido), color var(--l-rapido);
}
.chip:hover{ border-color:var(--l-borda-forte); color:var(--l-texto) }
.chip.active, .chip.is-active, .chip[aria-pressed="true"]{ background:var(--l-marca-suave); border-color:var(--l-marca); color:var(--l-marca-tinta) }
.chip.p0.active{ background:var(--l-r-vermelho); border-color:var(--l-r-vermelho); color:#fff }
.chip.p1.active{ background:var(--l-r-laranja); border-color:var(--l-r-laranja); color:var(--l-sobre-claro) }
.chip.p2.active{ background:var(--l-r-amarelo); border-color:var(--l-r-amarelo); color:var(--l-sobre-claro) }
.chip.p3.active{ background:var(--l-r-verde); border-color:var(--l-r-verde); color:#fff }

/* ================================================================ status: ponto + texto */
.st{
  display:inline-flex; align-items:center; gap:6px; padding:0; background:none; border-radius:0;
  font-style:normal; font-size:var(--l-t-peq); font-weight:500; color:var(--l-texto-2); white-space:nowrap;
}
.st::before{ content:""; width:7px; height:7px; border-radius:50%; background:currentColor; flex:none }
.st.defer, .st.ok{ color:var(--l-ok) }
.st.pend, .st.warn{ color:var(--l-atencao) }
.st.neg, .st.err{ color:var(--l-erro) }
.st.info{ color:var(--l-info) }
.st.neu{ color:var(--l-texto-3) }

.dot{ width:7px; height:7px; border-radius:50%; display:inline-block; flex:none }
.d-defer{ background:var(--l-ok) } .d-pend{ background:var(--l-r-laranja) } .d-neg{ background:var(--l-erro) }

/* etiqueta genérica */
.pill, .ds-badge, .badge, .reg-chip, .pp-badge{
  display:inline-flex; align-items:center; gap:4px; height:22px; padding:0 8px;
  border-radius:var(--l-raio-1); background:var(--l-sup-3); color:var(--l-texto-2);
  font-size:var(--l-t-mini); font-weight:500; white-space:nowrap;
}

/* Manchester: preenchimento, é a informação */
.prio{ display:inline-flex; align-items:center; height:22px; padding:0 8px; border-radius:var(--l-raio-1);
  font-style:normal; font-size:var(--l-t-mini); font-weight:600; color:#fff; background:var(--l-texto-3) }
.prio.p0{ background:var(--l-r-vermelho) }
.prio.p1{ background:var(--l-r-laranja); color:var(--l-sobre-claro) }
.prio.p2{ background:var(--l-r-amarelo); color:var(--l-sobre-claro) }
.prio.p3{ background:var(--l-r-verde) }
.prio.p4{ background:var(--l-r-azul) }

.sla{ font-variant-numeric:tabular-nums; font-weight:500; font-size:var(--l-t-peq); text-align:right }
.sla.ok{ color:var(--l-ok) } .sla.warn{ color:var(--l-atencao) } .sla.late{ color:var(--l-erro) }
.au-pulse{ animation:l-pulsa-alerta 1.4s ease-in-out infinite }
@keyframes l-pulsa-alerta{ 0%,100%{ opacity:1 } 50%{ opacity:.5 } }

/* iniciais */
.av{ flex:none; width:32px; height:32px; border-radius:50%; display:inline-grid; place-items:center;
  font-size:var(--l-t-mini); font-weight:600; font-style:normal; color:var(--l-marca-tinta); background:var(--l-marca-suave) }

/* ================================================================ tabela */
.au-table-wrap, .table-wrap{ overflow-x:auto; border:1px solid var(--l-borda); border-radius:var(--l-raio-3); background:var(--l-sup) }
.au-table, table.table{ width:100%; border-collapse:collapse; font-size:var(--l-t-corpo) }
.au-table th, table.table th{
  text-align:left; font-size:var(--l-t-peq); font-weight:500; color:var(--l-texto-3);
  padding:10px var(--l-e4); border-bottom:1px solid var(--l-borda); white-space:nowrap; background:var(--l-sup-2);
  text-transform:none; letter-spacing:0;
}
.au-table td, table.table td{ padding:12px var(--l-e4); border-bottom:1px solid var(--l-fio); vertical-align:middle }
.au-table tbody tr:last-child td, table.table tbody tr:last-child td{ border-bottom:0 }
.au-table tbody tr:hover, table.table tbody tr:hover{ background:var(--l-sup-2) }

/* fila em grade (.q-*) */
.q-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:var(--l-e3); padding:var(--l-e4) var(--l-e5); flex-wrap:wrap }
.q-head h2{ font-size:var(--l-t-titulo) }
.q-head p{ margin-top:2px; font-size:var(--l-t-peq); color:var(--l-texto-2) }
.q-legend{ display:flex; gap:var(--l-e4); font-size:var(--l-t-peq); color:var(--l-texto-2) }
.q-legend span{ display:flex; align-items:center; gap:6px }
.q-list{ padding:0 }
.q-row{
  display:grid; grid-template-columns:minmax(0,1.7fr) minmax(0,1.1fr) minmax(0,.7fr) minmax(0,.9fr) minmax(0,.95fr) minmax(0,.6fr);
  align-items:center; gap:var(--l-e3); padding:12px var(--l-e5); border-top:1px solid var(--l-fio); font-size:var(--l-t-corpo);
}
.q-row.head{ padding:10px var(--l-e5); font-size:var(--l-t-peq); font-weight:500; color:var(--l-texto-3); background:var(--l-sup-2); border-top:1px solid var(--l-borda) }
.q-row:not(.head){ cursor:pointer }
.q-row:not(.head):hover{ background:var(--l-sup-2) }
.pt{ display:flex; align-items:center; gap:var(--l-e3); min-width:0 }
.pt b{ font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis }

/* tendência */
.trend{ padding:var(--l-e4) var(--l-e5); display:flex; flex-direction:column; gap:var(--l-e2) }
.t-head{ display:flex; align-items:center; justify-content:space-between }
.t-head h2{ font-size:var(--l-t-titulo) }
.t-pill{ font-size:var(--l-t-peq); font-weight:500 }
.t-pill.up{ color:var(--l-ok) } .t-pill.down{ color:var(--l-erro) }
.t-sub{ font-size:var(--l-t-peq); color:var(--l-texto-2) }
.chart{ height:120px }
.chart svg{ width:100%; height:100% }
.t-stats{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--l-e2) }
.t-stats li{ display:flex; flex-direction:column; gap:2px }
.t-stats span{ font-size:var(--l-t-mini); color:var(--l-texto-3) }
.t-stats b{ font-size:var(--l-t-titulo); font-weight:600 }
.t-note{ font-size:var(--l-t-peq); color:var(--l-texto-2); border-top:1px solid var(--l-fio); padding-top:var(--l-e3); margin-top:var(--l-e2) }

/* ================================================================ modal */
.modal-overlay, .ds-modal-overlay, .reg-modal-overlay, .au-modal-ovl, .ovl{
  position:fixed; inset:0; z-index:1000;
  display:grid; place-items:center; padding:var(--l-e6);
  background:var(--l-veu);
  overflow-y:auto;
  animation:l-veu var(--l-medio) var(--l-curva);
}
.modal-overlay.hidden, .ds-modal-overlay.hidden, .reg-modal-overlay.hidden{ display:none !important }
@keyframes l-veu{ from{ opacity:0 } to{ opacity:1 } }

.modal-box, .modal-content, .ds-modal, .au-modal, .modal-overlay > .glass, .modal-overlay > form.glass{
  width:min(760px,100%); max-height:calc(100dvh - 48px); overflow:auto;
  background:var(--l-sup); border:1px solid var(--l-borda); border-radius:var(--l-raio-4);
  box-shadow:var(--l-sombra-modal);
  animation:l-modal var(--l-medio) var(--l-curva);
}
.modal-box, .modal-content, .ds-modal, .au-modal{ padding:var(--l-e8) }
/* formulário dentro de modal: duas colunas no computador; textarea, grupos e ações ocupam a linha toda */
.modal-box > form.flex-col, form.modal-box.flex-col, .modal-box .flex-col{ gap:var(--l-e4) }
@keyframes l-modal{ from{ opacity:0; transform:translateY(8px) scale(.99) } to{ opacity:1; transform:none } }
.modal-box > h2, .modal-box > h3, .modal-box > form > h3, .au-modal h2{ font-size:17px; font-weight:600; margin-bottom:var(--l-e4) }
.modal-actions, .reg-modal-actions, .ds-modal-actions{
  display:flex; justify-content:flex-end; gap:var(--l-e2); flex-wrap:wrap;
  margin-top:var(--l-e6); padding-top:var(--l-e4); border-top:1px solid var(--l-fio);
}

/* ================================================================ alerta em linha */
.alert, .ds-alert, .notice{
  display:flex; gap:var(--l-e3); align-items:flex-start; padding:var(--l-e3) var(--l-e4);
  border-radius:var(--l-raio-2); background:var(--l-sup-3); color:var(--l-texto-2); font-size:var(--l-t-peq);
  border-left:3px solid var(--l-borda-forte);
}
.alert.warn, .alert-warning{ background:var(--l-atencao-fundo); color:var(--l-atencao); border-left-color:var(--l-atencao) }
.alert.err, .alert-danger, .alert.danger{ background:var(--l-erro-fundo); color:var(--l-erro); border-left-color:var(--l-erro) }
.alert.ok, .alert-success{ background:var(--l-ok-fundo); color:var(--l-ok); border-left-color:var(--l-ok) }
.alert.info, .alert-info{ background:var(--l-info-fundo); color:var(--l-info); border-left-color:var(--l-info) }

/* ================================================================ diversos */
.foot{ text-align:center; font-size:var(--l-t-mini); color:var(--l-texto-3); padding:var(--l-e4) 0 }
details > summary{ cursor:pointer; list-style:none }
details > summary::-webkit-details-marker{ display:none }
progress{ accent-color:var(--l-marca) }

/* X de fechar injetado em todo .modal-box (js/init/06-notificacoes-sino.js) */
.modal-box{ position:relative }
.modal-close-x{
  position:absolute; top:var(--l-e4); right:var(--l-e4); z-index:5;
  display:grid; place-items:center; width:32px; height:32px; padding:0;
  border:0; border-radius:var(--l-raio-2); background:transparent; color:var(--l-texto-3);
}
.modal-close-x:hover{ background:var(--l-sup-3); color:var(--l-texto) }
.modal-box > h3:first-of-type, .modal-box > form > h3:first-of-type, .modal-box .l-modal-cab{ padding-right:40px }
/* caixa de modal recebe foco por script para prender o Tab: sem contorno nela */
.modal-box:focus, .modal-content:focus, .pf-modal:focus, .app-modal-box:focus, [tabindex="-1"]:focus{ outline:none }

/* ================================================================ regras globais do modelo */
/* campo cujo controle o JS escondeu some inteiro (rótulo junto) */
.au-fld:has(> :is(input, select:not([data-dept-search]), textarea):is(.hidden, [style*="display: none"], [style*="display:none"])),
.um-field:has(> :is(input, select:not([data-dept-search]), textarea):is(.hidden, [style*="display: none"], [style*="display:none"])){ display:none }
/* espaçador numa linha flex (empurra o que vem depois para a direita) */
.l-esp{ flex:1 }
/* chave liga/desliga */
.l-chave{
  position:relative; width:34px; height:20px; padding:0; border:0; border-radius:10px;
  background:var(--l-borda-forte); transition:background var(--l-rapido); vertical-align:middle;
}
.l-chave::after{ content:""; position:absolute; top:2px; left:2px; width:16px; height:16px; border-radius:50%; background:#fff; box-shadow:0 1px 2px rgba(0,0,0,.2); transition:transform var(--l-rapido) var(--l-curva) }
.l-chave.on{ background:var(--l-marca) }
.l-chave.on::after{ transform:translateX(14px) }
.l-chave.busy{ opacity:.5; pointer-events:none }
/* área de gráfico (os scripts de gráfico medem a largura daqui) */
.l-grafico{ width:100%; min-height:210px }
.l-grafico:has(> .lg-partes, > .lg-rank, > .lg-vazio){ min-height:0 }
.l-grafico-p{ min-height:180px }

/* seletor de departamentos com busca (<select data-dept-search>, montado por app.admin.searchableDept) */
.sd-wrap{ position:relative; display:flex; flex-direction:column; gap:var(--l-e2); padding:6px; border:1px solid var(--l-campo-borda); border-radius:var(--l-raio-2); background:var(--l-campo) }
.sd-wrap:focus-within{ border-color:var(--l-marca); box-shadow:var(--l-anel) }
.sd-chips{ display:flex; flex-wrap:wrap; gap:4px }
.sd-chips:empty{ display:none }
.sd-empty{ font-size:var(--l-t-peq); color:var(--l-texto-3); padding:2px 4px }
.sd-chip{ display:inline-flex; align-items:center; gap:2px; height:26px; padding:0 4px 0 10px; border-radius:var(--l-raio-pilula); background:var(--l-marca-suave); color:var(--l-marca-tinta); font-size:var(--l-t-peq); font-weight:500 }
.sd-chip button{ display:grid; place-items:center; width:20px; height:20px; border:0; border-radius:50%; background:none; color:inherit; font-size:15px; line-height:1 }
.sd-chip button:hover{ background:var(--l-erro-fundo); color:var(--l-erro) }
.sd-input-row{ display:flex; align-items:center; gap:var(--l-e2) }
.sd-wrap .sd-input, .sd-wrap .sd-input:focus{ flex:1; min-height:30px; border:0 !important; box-shadow:none !important; background:transparent; padding:0 6px }
.sd-clear{ border:0; background:none; color:var(--l-texto-3); font-size:18px; line-height:1; padding:0 6px }
.sd-clear:hover{ color:var(--l-erro) }
.sd-add{ height:30px !important; font-size:var(--l-t-peq) !important }
.sd-drop{ position:absolute; left:-1px; right:-1px; top:calc(100% + 6px); z-index:60; max-height:220px; overflow:auto; padding:var(--l-e1); background:var(--l-sup); border:1px solid var(--l-borda); border-radius:var(--l-raio-3); box-shadow:var(--l-sombra-flutua) }
.sd-opt{ padding:8px 10px; border-radius:var(--l-raio-2); font-size:var(--l-t-corpo); cursor:pointer }
.sd-opt:hover, .sd-opt.sd-cur{ background:var(--l-sup-3) }
.sd-opt.sd-cur{ font-weight:600 }
.sd-none{ padding:10px; font-size:var(--l-t-peq); color:var(--l-texto-3) }
.l-linha-toda{ grid-column:1 / -1 }

/* KPI: o número é o que se lê. Ícone, anel, minigráfico e barrinha dos
   templates antigos são enfeite e saem em todo o portal (regra global). */
.kpi .k-ico, .kpi .ring, .kpi .spark, .kpi .k-bar{ display:none !important }
.kpi .k-top{ min-height:0 }
.kpi .k-tag.alert{ border:0; padding:0; background:none; color:var(--l-erro) }

/* faixa de números: cartões com tom por significado, em 99-refino.css */
