/* ================================================================
   ADMIN UI — fonte unica de tokens do painel (redesign 2026-09)
   ----------------------------------------------------------------
   Documentacao: docs/ui-admin/TOKENS.md. Tema escuro e o padrao;
   o claro e alternavel na topbar (localStorage.adminTema).
   Cor de marca = preto/branco. Verde/vermelho/ambar/azul so com
   significado (lucro/prejuizo/pendencia/informacao).
   Carregado por partials/head-css.php DEPOIS de admin-theme-v2.css.
   Paginas nao declaram cor, espaco, raio ou duracao: usam estes tokens.
   ================================================================ */

/* ---------- Constantes (iguais nos dois temas) ---------- */
:root {
    --adm-font: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;

    --adm-fs-kpi: 26px;
    --adm-fs-h1: 22px;
    --adm-fs-h2: 16px;
    --adm-fs-body: 14px;
    --adm-fs-sm: 13px;
    --adm-fs-xs: 12px;
    --adm-fs-2xs: 11px;

    --adm-sp-1: 4px;
    --adm-sp-2: 8px;
    --adm-sp-3: 12px;
    --adm-sp-4: 16px;
    --adm-sp-5: 20px;
    --adm-sp-6: 24px;
    --adm-sp-8: 32px;
    --adm-sp-10: 40px;

    --adm-r-sm: 6px;
    --adm-r: 10px;
    --adm-r-lg: 14px;
    --adm-r-pill: 999px;

    --adm-ctl-h: 38px;
    --adm-sidebar-w: 248px;
    --adm-sidebar-w-min: 76px;
    --adm-topbar-h: 64px;
    --adm-content-max: 1440px;

    --adm-z-sidebar: 1030;
    --adm-z-topbar: 1040;
    --adm-z-dropdown: 1050;
    --adm-z-modal: 1060;
    --adm-z-toast: 1080;

    --adm-dur-1: .16s;
    --adm-dur-2: .24s;
    --adm-dur-3: .5s;
    --adm-dur-line: .68s;
    --adm-ease: cubic-bezier(.16, 1, .3, 1);
    --adm-stagger: .06s;
}

/* ---------- Tema ESCURO (padrao) ---------- */
:root,
html[data-bs-theme=dark] {
    color-scheme: dark;

    --adm-bg: #0a0a0b;          --adm-bg-rgb: 10, 10, 11;
    --adm-bg-2: #0f0f11;
    --adm-surface: #141416;     --adm-surface-rgb: 20, 20, 22;
    --adm-surface-2: #1b1b1e;   --adm-surface-2-rgb: 27, 27, 30;
    --adm-surface-3: #232327;
    --adm-line: #2a2a2e;
    --adm-line-strong: #3a3a40;

    --adm-text: #fafafa;        --adm-text-rgb: 250, 250, 250;
    --adm-text-dim: #b4b4bb;
    --adm-text-mute: #8b8b94;
    --adm-text-hint: #71717a;

    --adm-accent: #fafafa;      --adm-accent-rgb: 250, 250, 250;
    --adm-accent-hover: #e4e4e7;
    --adm-on-accent: #0a0a0b;
    --adm-accent-soft: rgba(255, 255, 255, .08);
    --adm-focus: #fafafa;

    --adm-pos: #34d399;  --adm-pos-soft: rgba(52, 211, 153, .12);  --adm-pos-line: rgba(52, 211, 153, .32);
    --adm-neg: #fb7185;  --adm-neg-soft: rgba(251, 113, 133, .12); --adm-neg-line: rgba(251, 113, 133, .36); --adm-neg-soft-2: rgba(251, 113, 133, .2);
    --adm-warn: #fbbf24; --adm-warn-soft: rgba(251, 191, 36, .12); --adm-warn-line: rgba(251, 191, 36, .32);
    --adm-info: #60a5fa; --adm-info-soft: rgba(96, 165, 250, .12); --adm-info-line: rgba(96, 165, 250, .32);

    --adm-shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);
    --adm-shadow: 0 10px 30px rgba(0, 0, 0, .35);
    --adm-shadow-pop: 0 18px 48px rgba(0, 0, 0, .55);
    --adm-glow: radial-gradient(120% 90% at 100% 0%, rgba(255, 255, 255, .06), transparent 55%);
}

/* ---------- Tema CLARO ---------- */
html[data-bs-theme=light] {
    color-scheme: light;

    --adm-bg: #f4f4f5;          --adm-bg-rgb: 244, 244, 245;
    --adm-bg-2: #fafafa;
    --adm-surface: #ffffff;     --adm-surface-rgb: 255, 255, 255;
    --adm-surface-2: #f7f7f8;   --adm-surface-2-rgb: 247, 247, 248;
    --adm-surface-3: #efeff1;
    --adm-line: #e4e4e7;
    --adm-line-strong: #d4d4d8;

    --adm-text: #09090b;        --adm-text-rgb: 9, 9, 11;
    --adm-text-dim: #3f3f46;
    --adm-text-mute: #66666f;
    --adm-text-hint: #8b8b94;

    --adm-accent: #09090b;      --adm-accent-rgb: 9, 9, 11;
    --adm-accent-hover: #27272a;
    --adm-on-accent: #ffffff;
    --adm-accent-soft: rgba(9, 9, 11, .06);
    --adm-focus: #09090b;

    --adm-pos: #047857;  --adm-pos-soft: rgba(4, 120, 87, .10);   --adm-pos-line: rgba(4, 120, 87, .28);
    --adm-neg: #be123c;  --adm-neg-soft: rgba(190, 18, 60, .08);  --adm-neg-line: rgba(190, 18, 60, .30); --adm-neg-soft-2: rgba(190, 18, 60, .14);
    --adm-warn: #b45309; --adm-warn-soft: rgba(180, 83, 9, .10);  --adm-warn-line: rgba(180, 83, 9, .28);
    --adm-info: #1d4ed8; --adm-info-soft: rgba(29, 78, 216, .08); --adm-info-line: rgba(29, 78, 216, .26);

    --adm-shadow-sm: 0 1px 2px rgba(9, 9, 11, .05);
    --adm-shadow: 0 1px 2px rgba(9, 9, 11, .04), 0 8px 24px rgba(9, 9, 11, .06);
    --adm-shadow-pop: 0 18px 48px rgba(9, 9, 11, .14);
    --adm-glow: radial-gradient(120% 90% at 100% 0%, rgba(9, 9, 11, .035), transparent 55%);
}

/* ---------- Ponte para Bootstrap e tokens legados ----------
   Telas ainda nao migradas herdam o tema por aqui. O !important
   e necessario enquanto admin-theme-v2 / styles.min.css existirem. */
:root,
html[data-bs-theme=dark],
html[data-bs-theme=light] {
    --bs-body-bg: var(--adm-bg) !important;
    --bs-body-bg-rgb: var(--adm-bg-rgb) !important;
    --bs-body-color: var(--adm-text) !important;
    --bs-body-color-rgb: var(--adm-text-rgb) !important;
    --bs-secondary-bg: var(--adm-surface) !important;
    --bs-secondary-bg-rgb: var(--adm-surface-rgb) !important;
    --bs-tertiary-bg: var(--adm-surface-2) !important;
    --bs-tertiary-bg-rgb: var(--adm-surface-2-rgb) !important;
    --bs-border-color: var(--adm-line) !important;
    --bs-border-color-translucent: var(--adm-line) !important;
    --bs-emphasis-color: var(--adm-text) !important;
    --bs-secondary-color: var(--adm-text-mute) !important;
    --bs-heading-color: var(--adm-text) !important;
    --bs-link-color: var(--adm-text) !important;
    --bs-link-hover-color: var(--adm-text-dim) !important;
    --bs-primary: var(--adm-accent) !important;
    --bs-primary-rgb: var(--adm-accent-rgb) !important;
    --bs-primary-text: var(--adm-on-accent) !important;
    --bs-success: var(--adm-pos) !important;
    --bs-danger: var(--adm-neg) !important;
    --bs-warning: var(--adm-warn) !important;
    --bs-info: var(--adm-info) !important;
    --bs-success-text-emphasis: var(--adm-pos) !important;
    --bs-danger-text-emphasis: var(--adm-neg) !important;
    --bs-warning-text-emphasis: var(--adm-warn) !important;
    --bs-info-text-emphasis: var(--adm-info) !important;
    --bs-success-bg-subtle: var(--adm-pos-soft) !important;
    --bs-danger-bg-subtle: var(--adm-neg-soft) !important;
    --bs-warning-bg-subtle: var(--adm-warn-soft) !important;
    --bs-info-bg-subtle: var(--adm-info-soft) !important;
    --bs-success-border-subtle: var(--adm-pos-line) !important;
    --bs-danger-border-subtle: var(--adm-neg-line) !important;
    --bs-warning-border-subtle: var(--adm-warn-line) !important;
    --bs-info-border-subtle: var(--adm-info-line) !important;

    --adm-text-1: var(--adm-text) !important;
    --adm-text-2: var(--adm-text-dim) !important;
    --adm-text-3: var(--adm-text-mute) !important;
    --adm-text-4: var(--adm-text-hint) !important;

    --admin-notice-success: var(--adm-pos) !important;
    --admin-notice-error: var(--adm-neg) !important;
    --admin-notice-warning: var(--adm-warn) !important;
    --admin-notice-info: var(--adm-info) !important;
}

/* ---------- Base ---------- */
body {
    background-color: var(--adm-bg) !important;
    color: var(--adm-text-dim) !important;
}

/* Texto "escuro/preto" do template sumia no tema escuro (ex.: rotulos do detalhe do usuario) */
.text-dark, .text-black, .text-body, .text-body-emphasis { color: var(--adm-text) !important; }
.text-success { color: var(--adm-pos) !important; }
.text-danger  { color: var(--adm-neg) !important; }
.text-warning { color: var(--adm-warn) !important; }
.text-info    { color: var(--adm-info) !important; }

/* Botao "claro" do template: no escuro virava branco sobre branco
   (ex.: "Exportar Dados" em Usuarios, com .text-primary). */
.btn-light {
    background-color: var(--adm-surface-2) !important;
    border-color: var(--adm-line-strong) !important;
    color: var(--adm-text) !important;
}
.btn-light:hover { background-color: var(--adm-surface-3) !important; color: var(--adm-text) !important; }

/* Codigo inline: tom neutro (o rosa do Bootstrap nao tem significado aqui) */
code { color: var(--adm-text); background: var(--adm-surface-3); padding: 1px 5px; border-radius: var(--adm-r-sm); font-size: .88em; }
pre code { background: transparent; padding: 0; }

/* Numeros legiveis em qualquer lugar que mostre valor */
.adm-num, .tabular-nums { font-variant-numeric: tabular-nums; font-feature-settings: 'tnum' 1; }

/* Foco visivel sem movimento (MOVIMENTO.md) */
:focus-visible {
    outline: 2px solid var(--adm-focus);
    outline-offset: 3px;
}

/* Movimento reduzido: preferencia do sistema OU escolha salva */
html[data-motion=reduced] *,
html[data-motion=reduced] *::before,
html[data-motion=reduced] *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
}

/* ================================================================
   SHELL — sidebar, topbar, cabecalho de pagina, abas, rodape
   (partials/startbar.php, topbar.php, subtabs.php, footer.php;
   comportamento em assets/js/admin-ui.js)
   ================================================================ */

/* ---------- Pular para o conteudo ---------- */
.adm-skip-link {
    position: fixed; top: var(--adm-sp-2); left: var(--adm-sp-2);
    z-index: calc(var(--adm-z-toast) + 1);
    padding: var(--adm-sp-2) var(--adm-sp-4);
    border-radius: var(--adm-r);
    background: var(--adm-accent); color: var(--adm-on-accent);
    font-weight: 600; text-decoration: none;
    transform: translateY(-160%);
    transition: transform var(--adm-dur-1) var(--adm-ease);
}
.adm-skip-link:focus { transform: none; color: var(--adm-on-accent); }
[tabindex="-1"]:focus:not(:focus-visible) { outline: none; }

/* ---------- Botao de icone (topbar e shell) ---------- */
.adm-icon-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: var(--adm-ctl-h); height: var(--adm-ctl-h); padding: 0;
    border: 1px solid transparent; border-radius: var(--adm-r);
    background: transparent; color: var(--adm-text-dim);
    font-size: 19px; line-height: 1; cursor: pointer;
    transition: background-color var(--adm-dur-1) var(--adm-ease), color var(--adm-dur-1) var(--adm-ease), border-color var(--adm-dur-1) var(--adm-ease), transform var(--adm-dur-1) var(--adm-ease);
}
.adm-icon-btn:hover { background: var(--adm-surface-2); color: var(--adm-text); border-color: var(--adm-line); }
.adm-icon-btn:active { transform: scale(.94); }
.adm-icon-btn[aria-pressed="false"] { color: var(--adm-text-mute); }
@media (pointer: coarse) { .adm-icon-btn { width: 44px; height: 44px; } }
/* Variante de linha de tabela: icone ao lado do dado, sem estourar a altura da linha. */
.adm-icon-btn--sm { width: 28px; height: 28px; font-size: 15px; border-color: var(--adm-line); vertical-align: middle; }
@media (pointer: coarse) { .adm-icon-btn--sm { width: 36px; height: 36px; } }
.adm-user-cell { display: inline-flex; align-items: center; gap: var(--adm-sp-2); white-space: nowrap; }

/* ---------- Sidebar ---------- */
.startbar {
    position: fixed; top: 0; left: 0; bottom: 0;
    width: var(--adm-sidebar-w);
    display: flex; flex-direction: column;
    background: var(--adm-bg-2) !important;
    border-right: 1px solid var(--adm-line);
    z-index: var(--adm-z-sidebar);
    transition: width var(--adm-dur-2) var(--adm-ease), transform var(--adm-dur-2) var(--adm-ease);
}
.startbar .brand {
    height: var(--adm-topbar-h); flex: none;
    display: flex; align-items: center;
    padding: 0 var(--adm-sp-5);
    border-bottom: 1px solid var(--adm-line);
}
.startbar .brand .logo { display: flex; align-items: center; min-width: 0; text-decoration: none; }
.startbar .logo-sm { max-height: 30px; max-width: 160px; object-fit: contain; }
.startbar .brand-mini {
    display: none; width: 34px; height: 34px; border-radius: var(--adm-r);
    align-items: center; justify-content: center;
    background: var(--adm-accent); color: var(--adm-on-accent);
    font-weight: 700; font-size: 15px;
}
.startbar .brand-name { display: none; font-weight: 700; font-size: var(--adm-fs-body); color: var(--adm-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.startbar .brand.sem-logo .brand-mini { display: inline-flex; flex: none; }
.startbar .brand.sem-logo .brand-name { display: block; margin-left: var(--adm-sp-3); }
.startbar-menu { flex: 1; overflow-y: auto; overflow-x: hidden; padding: var(--adm-sp-2) var(--adm-sp-3) var(--adm-sp-4); scrollbar-width: thin; scrollbar-color: var(--adm-line) transparent; }
.startbar-list { list-style: none; margin: 0; padding: 0; }
.startbar .menu-label { list-style: none; padding: var(--adm-sp-3) var(--adm-sp-3) var(--adm-sp-1); }
.startbar .menu-label:first-child { padding-top: var(--adm-sp-2); }
.startbar .menu-label span {
    display: block; font-size: var(--adm-fs-2xs); font-weight: 600;
    letter-spacing: .06em; text-transform: uppercase; color: var(--adm-text-mute);
    white-space: nowrap; overflow: hidden;
}
.startbar .nav-item { list-style: none; margin: 1px 0; }
.startbar .nav-link {
    position: relative; display: flex; align-items: center; gap: var(--adm-sp-3);
    min-height: 36px; padding: 0 var(--adm-sp-3);
    border-radius: var(--adm-r);
    color: var(--adm-text-dim) !important; font-size: var(--adm-fs-sm); font-weight: 500;
    text-decoration: none;
    transition: background-color var(--adm-dur-1) var(--adm-ease), color var(--adm-dur-1) var(--adm-ease);
}
.startbar .nav-link .menu-icon {
    flex: none; width: 20px; font-size: 19px; line-height: 1; text-align: center;
    color: var(--adm-text-mute);
    transition: transform var(--adm-dur-1) var(--adm-ease), color var(--adm-dur-1) var(--adm-ease);
}
.startbar .nav-label { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.startbar .nav-link:hover { background: var(--adm-surface-2); color: var(--adm-text) !important; }
.startbar .nav-link:hover .menu-icon { color: var(--adm-text); transform: translateX(2px); }
.startbar .nav-link[aria-current="page"],
.startbar .nav-link.active { background: var(--adm-accent-soft); color: var(--adm-text) !important; font-weight: 600; }
.startbar .nav-link[aria-current="page"] .menu-icon,
.startbar .nav-link.active .menu-icon { color: var(--adm-text); }
.startbar .nav-link[aria-current="page"]::before {
    content: ""; position: absolute; left: calc(-1 * var(--adm-sp-3)); top: 8px; bottom: 8px;
    width: 3px; border-radius: 0 3px 3px 0; background: var(--adm-accent);
}
.startbar .nav-link:focus-visible { outline: 2px solid var(--adm-focus); outline-offset: -2px; }
.startbar .nav-count {
    flex: none; min-width: 26px; height: 20px; padding: 0 6px;
    display: inline-flex; align-items: center; justify-content: center;
    border-radius: var(--adm-r-pill); border: 1px solid var(--adm-line);
    font-size: var(--adm-fs-2xs); font-weight: 600; font-variant-numeric: tabular-nums;
    color: var(--adm-text-mute); background: transparent;
}
.startbar .nav-count.is-pending { color: var(--adm-warn); background: var(--adm-warn-soft); border-color: var(--adm-warn-line); }
.startbar-foot { flex: none; padding: var(--adm-sp-2) var(--adm-sp-3); border-top: 1px solid var(--adm-line); }
.startbar-collapse-btn {
    display: flex; align-items: center; gap: var(--adm-sp-3); width: 100%;
    min-height: 40px; padding: 0 var(--adm-sp-3);
    border: 0; border-radius: var(--adm-r); background: transparent;
    color: var(--adm-text-mute); font-size: var(--adm-fs-sm); font-weight: 500; text-align: left;
}
.startbar-collapse-btn i { width: 20px; font-size: 19px; text-align: center; }
.startbar-collapse-btn:hover { background: var(--adm-surface-2); color: var(--adm-text); }

body.startbar-open { padding-left: var(--adm-sidebar-w); transition: padding-left var(--adm-dur-2) var(--adm-ease); }
/* O recuo do conteudo nao espera o JS. Antes o corpo nascia sem recuo e, quando o
   admin-ui.js (no fim da pagina) punha .startbar-open, a tela inteira deslizava da
   esquerda para a direita a cada troca de aba. Aqui o recuo ja vale no primeiro quadro. */
@media (min-width: 992px) {
    body:has(#adminSidebar) { padding-left: var(--adm-sidebar-w); }
    html[data-sidebar=min] body:has(#adminSidebar) { padding-left: var(--adm-sidebar-w-min); }
}

/* Recolhido (desktop) */
@media (min-width: 992px) {
    html[data-sidebar=min] .startbar { width: var(--adm-sidebar-w-min); }
    html[data-sidebar=min] body.startbar-open { padding-left: var(--adm-sidebar-w-min); }
    html[data-sidebar=min] .startbar .brand { justify-content: center; padding: 0; }
    html[data-sidebar=min] .startbar .logo-sm { display: none; }
    html[data-sidebar=min] .startbar .brand-mini { display: inline-flex; }
    html[data-sidebar=min] .startbar .brand .brand-name { display: none; }
    html[data-sidebar=min] .startbar .nav-label,
    html[data-sidebar=min] .startbar .menu-label span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
    html[data-sidebar=min] .startbar .menu-label { padding: var(--adm-sp-2) 0; }
    html[data-sidebar=min] .startbar .menu-label::after { content: ""; display: block; height: 1px; margin: 0 var(--adm-sp-3); background: var(--adm-line); }
    html[data-sidebar=min] .startbar .menu-label:first-child::after { display: none; }
    html[data-sidebar=min] .startbar .nav-link,
    html[data-sidebar=min] .startbar-collapse-btn { justify-content: center; padding: 0; }
    html[data-sidebar=min] .startbar .nav-count { position: absolute; top: 2px; right: 4px; min-width: 18px; height: 16px; padding: 0 4px; font-size: 10px; }
    html[data-sidebar=min] .startbar .nav-count:not(.is-pending) { display: none; }
    .startbar-overlay { display: none; }
}

/* Gaveta (celular/tablet) */
@media (max-width: 991.98px) {
    /* A gaveta comeca abaixo da topbar: o botao do menu segue visivel. */
    .startbar { top: var(--adm-topbar-h); transform: translateX(-100%); box-shadow: none; }
    .startbar .brand { display: none; }
    .startbar.show { transform: none; box-shadow: var(--adm-shadow-pop); }
    body.startbar-open { padding-left: 0; }
    .startbar-foot { display: none; }
    .startbar-overlay {
        position: fixed; inset: var(--adm-topbar-h) 0 0 0; z-index: calc(var(--adm-z-sidebar) - 1);
        background: rgba(0, 0, 0, .55);
        opacity: 0; visibility: hidden;
        transition: opacity var(--adm-dur-2) var(--adm-ease), visibility var(--adm-dur-2) var(--adm-ease);
    }
    .startbar.show + .startbar-overlay { opacity: 1; visibility: visible; }
}

/* ---------- Topbar ---------- */
.topbar {
    position: sticky !important; top: 0; z-index: var(--adm-z-topbar) !important;
    background: rgba(var(--adm-bg-rgb), .82) !important;
    -webkit-backdrop-filter: saturate(140%) blur(10px);
    backdrop-filter: saturate(140%) blur(10px);
    border-bottom: 1px solid var(--adm-line) !important;
}
.topbar-inner {
    max-width: var(--adm-content-max); margin: 0 auto;
    min-height: var(--adm-topbar-h);
    display: flex; align-items: center; justify-content: space-between; gap: var(--adm-sp-3);
    padding: 0 var(--adm-sp-6);
}
.topbar-start, .topbar-end { display: flex; align-items: center; gap: var(--adm-sp-2); min-width: 0; }
.topbar-end { gap: var(--adm-sp-1); }
.topbar .welcome-text { font-size: var(--adm-fs-body); color: var(--adm-text-mute); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.topbar .welcome-text strong { color: var(--adm-text); font-weight: 600; }
.mobile-menu-btn { display: none; }
@media (max-width: 991.98px) { .mobile-menu-btn { display: inline-flex; } .topbar-inner { padding: 0 var(--adm-sp-4); } }

.topbar .rtp-control {
    display: flex; align-items: center; gap: var(--adm-sp-2);
    height: var(--adm-ctl-h); margin-right: var(--adm-sp-2); padding: 0 var(--adm-sp-3);
    border: 1px solid var(--adm-line); border-radius: var(--adm-r); background: var(--adm-surface);
}
.topbar .rtp-control label { margin: 0; font-size: var(--adm-fs-xs); font-weight: 600; color: var(--adm-text) !important; text-transform: none !important; letter-spacing: 0 !important; white-space: nowrap; }
.topbar .rtp-control .rtp-api { font-size: 10px; color: var(--adm-text-mute); font-weight: 500; }
.topbar .rtp-control input[type="range"] { width: 96px; accent-color: var(--adm-accent); }
.topbar .rtp-control input[type="range"]:disabled { opacity: .5; }

.adm-avatar-btn {
    display: inline-flex; align-items: center; gap: var(--adm-sp-1);
    height: var(--adm-ctl-h); margin-left: var(--adm-sp-1); padding: 0 var(--adm-sp-2) 0 3px;
    border: 1px solid var(--adm-line); border-radius: var(--adm-r-pill);
    background: var(--adm-surface); color: var(--adm-text-mute);
}
.adm-avatar-btn:hover { border-color: var(--adm-line-strong); color: var(--adm-text); }
.adm-avatar {
    flex: none; width: 30px; height: 30px; border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--adm-accent); color: var(--adm-on-accent);
    font-size: 13px; font-weight: 700;
}

/* Avatar grande (detalhe do usuario) */
.adm-avatar--lg { width: 88px; height: 88px; font-size: 28px; }
/* Caixas tracejadas do template (numeros do detalhe do usuario) */
.border-dashed { border: 1px dashed var(--adm-line-strong) !important; }
.border-theme-color { border-color: var(--adm-line-strong) !important; background: var(--adm-surface-2); border-radius: var(--adm-r) !important; }

/* Menus suspensos do shell */
.adm-menu.dropdown-menu {
    min-width: 220px; padding: var(--adm-sp-1);
    background: var(--adm-surface) !important; border: 1px solid var(--adm-line) !important;
    border-radius: var(--adm-r-lg) !important; box-shadow: var(--adm-shadow-pop) !important;
    z-index: var(--adm-z-dropdown);
}
.adm-menu .dropdown-item {
    display: flex; align-items: center; gap: var(--adm-sp-2);
    min-height: 36px; border-radius: var(--adm-r-sm);
    color: var(--adm-text-dim); font-size: var(--adm-fs-sm);
}
.adm-menu .dropdown-item i { font-size: 17px; color: var(--adm-text-mute); }
.adm-menu .dropdown-item:hover, .adm-menu .dropdown-item:focus { background: var(--adm-surface-2); color: var(--adm-text); }
.adm-menu .dropdown-item[aria-current="true"] { color: var(--adm-text); font-weight: 600; }
.adm-menu .adm-menu-danger, .adm-menu .adm-menu-danger i { color: var(--adm-neg) !important; }
.adm-menu-head { display: flex; align-items: center; gap: var(--adm-sp-3); padding: var(--adm-sp-3); border-bottom: 1px solid var(--adm-line); margin: calc(-1 * var(--adm-sp-1)) calc(-1 * var(--adm-sp-1)) var(--adm-sp-1); }
.adm-menu-name { font-size: var(--adm-fs-body); font-weight: 600; color: var(--adm-text); }
.adm-menu-meta { font-size: var(--adm-fs-xs); color: var(--adm-text-mute); }
.adm-menu-label { margin: var(--adm-sp-2) var(--adm-sp-3) var(--adm-sp-1); font-size: var(--adm-fs-2xs); font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--adm-text-mute); }
.min-w-0 { min-width: 0; }

/* Notificacoes */
.notification-dropdown.adm-menu { width: min(440px, calc(100vw - 24px)); padding: 0; overflow: hidden; }
.notification-header { display: flex; align-items: center; justify-content: space-between; gap: var(--adm-sp-2); padding: var(--adm-sp-3) var(--adm-sp-4) !important; border-bottom: 1px solid var(--adm-line) !important; }
.notification-title { font-size: var(--adm-fs-body) !important; font-weight: 600; color: var(--adm-text); }
#headerBadge { background: var(--adm-surface-3) !important; color: var(--adm-text) !important; border: 1px solid var(--adm-line) !important; }
.notification-badge {
    position: absolute; top: 3px; right: 3px;
    min-width: 17px; height: 17px; padding: 0 4px; border-radius: var(--adm-r-pill);
    display: flex; align-items: center; justify-content: center;
    background: var(--adm-neg); color: var(--adm-on-accent); font-size: 10px; font-weight: 700; font-variant-numeric: tabular-nums;
    box-shadow: 0 0 0 2px var(--adm-bg);
}
.notification-tab { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.notification-tab .tab-badge { font-variant-numeric: tabular-nums; }
.notification-tab.active .tab-badge { background: var(--adm-accent) !important; color: var(--adm-on-accent) !important; border-color: var(--adm-accent) !important; }
.notification-item { display: flex; align-items: flex-start; gap: var(--adm-sp-3); padding: var(--adm-sp-3) var(--adm-sp-4) !important; }
.notification-item:focus-visible { outline: 2px solid var(--adm-focus); outline-offset: -2px; }
.notification-icon { width: 34px; height: 34px; border-radius: var(--adm-r) !important; font-size: 17px; }
.notification-icon.is-neg  { background: var(--adm-neg-soft) !important;  color: var(--adm-neg); border-color: var(--adm-neg-line) !important; }
.notification-icon.is-pos  { background: var(--adm-pos-soft) !important;  color: var(--adm-pos); border-color: var(--adm-pos-line) !important; }
.notification-icon.is-warn { background: var(--adm-warn-soft) !important; color: var(--adm-warn); border-color: var(--adm-warn-line) !important; }
.notification-icon.is-info { background: var(--adm-info-soft) !important; color: var(--adm-info); border-color: var(--adm-info-line) !important; }
.notification-body { flex: 1; min-width: 0; }
.notification-item-title { margin: 0 0 2px; font-size: var(--adm-fs-sm); font-weight: 600; color: var(--adm-text); }
.notification-item-text { margin: 0 0 4px; font-size: var(--adm-fs-xs); color: var(--adm-text-dim); overflow-wrap: anywhere; }
.notification-time { display: inline-flex; align-items: center; gap: 4px; font-size: var(--adm-fs-2xs) !important; color: var(--adm-text-mute) !important; }
.notification-item .mark-read-btn { position: static; opacity: .55; width: 30px; height: 30px; font-size: 16px; flex: none; }
.notification-item:hover .mark-read-btn, .notification-item .mark-read-btn:focus-visible { opacity: 1; }
.notification-empty { color: var(--adm-text-mute) !important; }
.notification-empty i { display: block; font-size: 30px; opacity: .6; margin-bottom: var(--adm-sp-2); }
@media (max-width: 768px) {
    .notification-dropdown.adm-menu { position: fixed !important; top: calc(var(--adm-topbar-h) - 4px) !important; left: 12px !important; right: 12px !important; width: auto; transform: none !important; }
}

/* ---------- Area de conteudo ---------- */
.page-wrapper { background: transparent; }
.page-content > .container-xxl,
.page-content > main.container-xxl { max-width: var(--adm-content-max); padding: var(--adm-sp-6) var(--adm-sp-6) var(--adm-sp-8); }
@media (max-width: 767.98px) {
    .page-content > .container-xxl,
    .page-content > main.container-xxl { padding: var(--adm-sp-4) var(--adm-sp-4) var(--adm-sp-6); }
}

/* ---------- Cabecalho de pagina + sub-abas ---------- */
.admin-page-header { padding: 0 0 var(--adm-sp-4) !important; margin: 0 0 var(--adm-sp-5) !important; border: 0 !important; background: transparent !important; }
.admin-page-title {
    margin: 0 0 var(--adm-sp-3) !important;
    font-size: var(--adm-fs-h1) !important; font-weight: 650 !important; line-height: 1.25;
    letter-spacing: -.015em; color: var(--adm-text) !important;
}
.adm-tabs-nav { position: relative; }
.admin-subtabs.adm-tabs {
    display: flex; flex-wrap: nowrap; gap: var(--adm-sp-1);
    margin: 0 !important; padding: 0 0 1px !important;
    overflow-x: auto; scrollbar-width: none;
    border-bottom: 1px solid var(--adm-line) !important;
}
.admin-subtabs.adm-tabs::-webkit-scrollbar { display: none; }
.admin-subtabs.adm-tabs .nav-item { flex: none; }
.admin-subtabs.adm-tabs .nav-link {
    position: relative; display: inline-flex; align-items: center;
    height: 40px; padding: 0 var(--adm-sp-3) !important; margin: 0 !important;
    border: 0 !important; border-radius: var(--adm-r-sm) var(--adm-r-sm) 0 0 !important;
    background: transparent !important; color: var(--adm-text-mute) !important;
    font-size: var(--adm-fs-sm) !important; font-weight: 500 !important; white-space: nowrap;
    transition: color var(--adm-dur-1) var(--adm-ease), background-color var(--adm-dur-1) var(--adm-ease);
}
.admin-subtabs.adm-tabs .nav-link:hover { color: var(--adm-text) !important; background: var(--adm-surface-2) !important; }
.admin-subtabs.adm-tabs .nav-link.active,
.admin-subtabs.adm-tabs .nav-link[aria-current="page"] { color: var(--adm-text) !important; font-weight: 600 !important; }
.admin-subtabs.adm-tabs .nav-link.active::after {
    content: ""; position: absolute; left: var(--adm-sp-2); right: var(--adm-sp-2); bottom: -1px;
    height: 2px; border-radius: 2px; background: var(--adm-accent);
}
.admin-subtabs.adm-tabs .nav-link:focus-visible { outline: 2px solid var(--adm-focus); outline-offset: -2px; }

/* ---------- Rodape ---------- */
.footer { background: transparent !important; border-top: 1px solid var(--adm-line); color: var(--adm-text-mute); }
.footer .container-xxl { max-width: var(--adm-content-max); padding: var(--adm-sp-3) var(--adm-sp-6) !important; }
.footer .small, .footer .text-muted { color: var(--adm-text-mute) !important; font-size: var(--adm-fs-xs); }

/* ================================================================
   COMPONENTES — docs/ui-admin/COMPONENTES.md
   Classes adm-* para telas migradas; helpers em partials/ui.php.
   Bootstrap (.card, .btn, .form-control, .table, .badge, .alert)
   e restilizado por admin-theme-v2.css, que so consome tokens.
   ================================================================ */

/* ---------- Barra de carregamento (partials/head-css.php) ---------- */
.adm-loadbar {
    position: fixed; top: 0; left: 0; right: 0; height: 2px;
    z-index: var(--adm-z-toast); pointer-events: none; overflow: hidden;
    /* So aparece se a tela demorar: troca rapida de aba nao pisca barra nenhuma. */
    opacity: 0; animation: adm-loadbar-show 0s linear .4s forwards;
}
@keyframes adm-loadbar-show { to { opacity: 1; } }
.adm-loadbar span {
    display: block; width: 40%; height: 100%;
    background: var(--adm-accent); opacity: .7;
    animation: adm-loadbar 1s var(--adm-ease) infinite;
}
@keyframes adm-loadbar { from { transform: translateX(-100%); } to { transform: translateX(260%); } }

/* ---------- Cabecalho de pagina (quando a tela nao usa subtabs.php) ---------- */
.adm-page-head {
    display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between;
    gap: var(--adm-sp-3) var(--adm-sp-6); margin-bottom: var(--adm-sp-6);
}
.adm-page-head__title { margin: 0; font-size: var(--adm-fs-h1); font-weight: 650; letter-spacing: -.015em; color: var(--adm-text); }
.adm-page-head__desc { margin: var(--adm-sp-1) 0 0; font-size: var(--adm-fs-sm); color: var(--adm-text-mute); max-width: 72ch; }
.adm-page-head__actions { display: flex; flex-wrap: wrap; gap: var(--adm-sp-2); }
.adm-section-title { margin: 0 0 var(--adm-sp-3); font-size: var(--adm-fs-h2); font-weight: 600; color: var(--adm-text); }

/* ---------- Card ---------- */
.adm-card {
    position: relative; background: var(--adm-surface); color: var(--adm-text-dim);
    border: 1px solid var(--adm-line); border-radius: var(--adm-r-lg); box-shadow: var(--adm-shadow);
    min-width: 0;
}
.adm-card__head {
    display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--adm-sp-3);
    padding: var(--adm-sp-4) var(--adm-sp-5); border-bottom: 1px solid var(--adm-line);
}
.adm-card__title { margin: 0; font-size: var(--adm-fs-h2); font-weight: 600; color: var(--adm-text); }
.adm-card__meta { font-size: var(--adm-fs-xs); color: var(--adm-text-mute); }
.adm-card__body { padding: var(--adm-sp-5); }
.adm-card__body--flush { padding: 0; }
.adm-card__foot { padding: var(--adm-sp-3) var(--adm-sp-5); border-top: 1px solid var(--adm-line); font-size: var(--adm-fs-xs); color: var(--adm-text-mute); }
a.adm-card, .adm-card--link { text-decoration: none; cursor: pointer; transition: transform var(--adm-dur-2) var(--adm-ease), border-color var(--adm-dur-2) var(--adm-ease), box-shadow var(--adm-dur-2) var(--adm-ease); }

/* ---------- Grades ---------- */
.adm-grid { display: grid; gap: var(--adm-sp-4); }
.adm-grid--kpi { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.adm-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 1400px) { .adm-grid--kpi-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); } .adm-grid--kpi-6 .adm-kpi__value { font-size: 22px; } }
@media (min-width: 1200px) and (max-width: 1399.98px) { .adm-grid--kpi-6 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.adm-grid--main { grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); }
.adm-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 991.98px) { .adm-grid--3 { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 1199.98px) { .adm-grid--kpi { grid-template-columns: repeat(2, minmax(0, 1fr)); } .adm-grid--main { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 575.98px) { .adm-grid--kpi, .adm-grid--2 { grid-template-columns: minmax(0, 1fr); } }
.adm-stack { display: flex; flex-direction: column; gap: var(--adm-sp-5); }
.adm-stack--sm { gap: var(--adm-sp-4); }

/* ---------- KPI ---------- */
.adm-kpi {
    position: relative; overflow: hidden;
    display: flex; flex-direction: column; gap: var(--adm-sp-2);
    padding: var(--adm-sp-5);
    background: var(--adm-glow), var(--adm-surface);
    border: 1px solid var(--adm-line); border-radius: var(--adm-r-lg); box-shadow: var(--adm-shadow);
    min-width: 0;
    transition: transform var(--adm-dur-2) var(--adm-ease), border-color var(--adm-dur-2) var(--adm-ease);
}
.adm-kpi__top { display: flex; align-items: center; justify-content: space-between; gap: var(--adm-sp-3); }
.adm-kpi__label { font-size: var(--adm-fs-xs); font-weight: 600; color: var(--adm-text-mute); letter-spacing: .01em; }
.adm-kpi__icon {
    flex: none; width: 34px; height: 34px; border-radius: var(--adm-r);
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--adm-surface-2); border: 1px solid var(--adm-line); color: var(--adm-text);
    font-size: 19px;
    transition: transform var(--adm-dur-2) var(--adm-ease);
}
.adm-kpi__value {
    font-size: var(--adm-fs-kpi); font-weight: 700; line-height: 1.1; letter-spacing: -.02em;
    color: var(--adm-text); font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.adm-kpi__foot { display: flex; flex-wrap: wrap; align-items: center; gap: var(--adm-sp-2); font-size: var(--adm-fs-xs); color: var(--adm-text-mute); }
.adm-kpi__value--texto { font-size: var(--adm-fs-h2); font-weight: 600; letter-spacing: 0; white-space: normal; }
.adm-kpi--pos .adm-kpi__value { color: var(--adm-pos); }
.adm-kpi--neg .adm-kpi__value { color: var(--adm-neg); }
.adm-kpi--warn .adm-kpi__icon { color: var(--adm-warn); background: var(--adm-warn-soft); border-color: var(--adm-warn-line); }

/* Variacao / valor com sinal: a cor acompanha o texto, nunca sozinha */
.adm-delta { display: inline-flex; align-items: center; gap: 2px; font-weight: 600; font-variant-numeric: tabular-nums; }
.adm-delta--pos, .adm-pos { color: var(--adm-pos) !important; }
.adm-delta--neg, .adm-neg { color: var(--adm-neg) !important; }
.adm-delta--flat { color: var(--adm-text-mute); }
.adm-warn { color: var(--adm-warn) !important; }
.adm-money { font-variant-numeric: tabular-nums; white-space: nowrap; }

/* ---------- Badge ---------- */
.adm-badge {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 2px 9px; border-radius: var(--adm-r-pill); border: 1px solid var(--adm-line);
    background: var(--adm-surface-3); color: var(--adm-text);
    font-size: var(--adm-fs-2xs); font-weight: 600; line-height: 1.6; white-space: nowrap;
    max-width: 100%;
}
/* Texto vindo de dado pode ser longo: no limite da largura o badge quebra em vez de estourar */
.adm-badge { overflow-wrap: anywhere; }
@media (max-width: 575.98px) { .adm-badge { white-space: normal; } }
.adm-card__head .btn-group { flex-wrap: wrap; }
.adm-badge i { font-size: 13px; }
.adm-badge--pos  { background: var(--adm-pos-soft);  border-color: var(--adm-pos-line);  color: var(--adm-pos); }
.adm-badge--neg  { background: var(--adm-neg-soft);  border-color: var(--adm-neg-line);  color: var(--adm-neg); }
.adm-badge--warn { background: var(--adm-warn-soft); border-color: var(--adm-warn-line); color: var(--adm-warn); }
.adm-badge--info { background: var(--adm-info-soft); border-color: var(--adm-info-line); color: var(--adm-info); }

/* ---------- Alerta de pagina ---------- */
.adm-alert {
    display: flex; align-items: flex-start; gap: var(--adm-sp-3);
    padding: var(--adm-sp-3) var(--adm-sp-4); border-radius: var(--adm-r);
    border: 1px solid var(--adm-line); border-left-width: 3px;
    background: var(--adm-surface-2); color: var(--adm-text); font-size: var(--adm-fs-sm);
}
.adm-alert > i { font-size: 18px; line-height: 1.3; flex: none; }
.adm-alert__body { flex: 1; min-width: 0; }
.adm-alert__title { display: block; font-weight: 600; margin-bottom: 2px; }
.adm-alert--pos  { background: var(--adm-pos-soft);  border-color: var(--adm-pos-line);  border-left-color: var(--adm-pos); }
.adm-alert--neg  { background: var(--adm-neg-soft);  border-color: var(--adm-neg-line);  border-left-color: var(--adm-neg); }
.adm-alert--warn { background: var(--adm-warn-soft); border-color: var(--adm-warn-line); border-left-color: var(--adm-warn); }
.adm-alert--info { background: var(--adm-info-soft); border-color: var(--adm-info-line); border-left-color: var(--adm-info); }
.adm-alert--pos > i { color: var(--adm-pos); } .adm-alert--neg > i { color: var(--adm-neg); }
.adm-alert--warn > i { color: var(--adm-warn); } .adm-alert--info > i { color: var(--adm-info); }

/* ---------- Tabela ---------- */
.adm-table-wrap { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.adm-table { width: 100%; margin: 0; border-collapse: separate; border-spacing: 0; }
.adm-table th.num, .adm-table td.num, .table th.num, .table td.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.adm-table td.acoes, .adm-table th.acoes { text-align: right; white-space: nowrap; }
.adm-table .acoes .btn + .btn { margin-left: var(--adm-sp-1); }
/* Coluna de acoes fixa a direita: em tabela larga o botao nao some na rolagem */
.adm-table-wrap .adm-table th.acoes,
.adm-table-wrap .adm-table td.acoes { position: sticky; right: 0; z-index: 1; background: var(--adm-surface) !important; box-shadow: -8px 0 12px -10px rgba(0, 0, 0, .5); }
.adm-table-wrap .adm-table tr:hover td.acoes { background: var(--adm-surface-2) !important; }
.adm-table caption { caption-side: top; padding: 0 0 var(--adm-sp-2); color: var(--adm-text-mute); font-size: var(--adm-fs-xs); }

/* ---------- Filtros e paginacao ---------- */
.adm-filters { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--adm-sp-3); margin-bottom: var(--adm-sp-4); }
.adm-filters .adm-field { flex: 1 1 180px; margin: 0; }
.adm-filters__search { flex: 2 1 260px !important; }
.adm-pager {
    display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--adm-sp-3);
    padding: var(--adm-sp-3) var(--adm-sp-5); border-top: 1px solid var(--adm-line);
    font-size: var(--adm-fs-xs); color: var(--adm-text-mute);
}
.adm-pager__nav { display: flex; gap: var(--adm-sp-1); }
.pagination { --bs-pagination-bg: var(--adm-surface); --bs-pagination-color: var(--adm-text-dim); --bs-pagination-border-color: var(--adm-line); --bs-pagination-hover-bg: var(--adm-surface-2); --bs-pagination-hover-color: var(--adm-text); --bs-pagination-hover-border-color: var(--adm-line-strong); --bs-pagination-active-bg: var(--adm-accent); --bs-pagination-active-color: var(--adm-on-accent); --bs-pagination-active-border-color: var(--adm-accent); --bs-pagination-disabled-bg: var(--adm-surface); --bs-pagination-disabled-color: var(--adm-text-hint); --bs-pagination-disabled-border-color: var(--adm-line); --bs-pagination-focus-box-shadow: 0 0 0 3px var(--adm-accent-soft); --bs-pagination-border-radius: var(--adm-r); font-variant-numeric: tabular-nums; }

/* ---------- Campo ---------- */
.adm-field { display: flex; flex-direction: column; gap: var(--adm-sp-1); margin-bottom: var(--adm-sp-4); min-width: 0; }
.adm-field > label { margin: 0 !important; }
.adm-field__help { font-size: var(--adm-fs-xs); color: var(--adm-text-mute); }
.adm-field__error { font-size: var(--adm-fs-xs); color: var(--adm-neg); font-weight: 600; }
.adm-field--money .input-group-text { font-weight: 600; }
.adm-form-section { padding: var(--adm-sp-5); border-bottom: 1px solid var(--adm-line); }
.adm-form-section:last-child { border-bottom: 0; }
.adm-form-section__title { margin: 0 0 var(--adm-sp-1); font-size: var(--adm-fs-h2); font-weight: 600; color: var(--adm-text); }
.adm-form-section__desc { margin: 0 0 var(--adm-sp-4); font-size: var(--adm-fs-sm); color: var(--adm-text-mute); }
.adm-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 var(--adm-sp-5); }
.adm-form-grid__full { grid-column: 1 / -1; }
.adm-form-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.adm-form-grid--4 .adm-form-grid__half { grid-column: span 2; }
@media (max-width: 991.98px) { .adm-form-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.adm-inline-form { display: flex; gap: var(--adm-sp-1); justify-content: flex-end; }
.adm-inline-form .form-control { max-width: 160px; }
/* Bloco recolhivel (configuracao, nunca consequencia — PAINEL_MAPA) */
.adm-details > summary { cursor: pointer; list-style: none; }
.adm-details > summary::-webkit-details-marker { display: none; }
.adm-details:not([open]) > summary { border-bottom: 0; }
.adm-details > summary .ti-chevron-down { transition: transform var(--adm-dur-1) var(--adm-ease); display: inline-block; }
.adm-details[open] > summary .ti-chevron-down { transform: rotate(180deg); }

/* Utilitarios de tipografia pelos tokens (substituem style="font-size:11px" das telas antigas) */
.adm-fs-2xs { font-size: var(--adm-fs-2xs) !important; }
.adm-fs-xs  { font-size: var(--adm-fs-xs) !important; }
.adm-fs-sm  { font-size: var(--adm-fs-sm) !important; }

/* Conversa (chamados): uma mensagem por bloco, a do atendimento marcada na borda */
.adm-thread { display: grid; gap: var(--adm-sp-3); }
.adm-msg { border-left: 2px solid var(--adm-line-strong); padding: 2px 0 2px var(--adm-sp-3); }
.adm-msg--admin { border-left-color: var(--adm-accent); }
.adm-msg__who { font-size: var(--adm-fs-2xs); color: var(--adm-text-mute); }
.adm-msg__body { white-space: pre-wrap; word-break: break-word; font-size: var(--adm-fs-body); color: var(--adm-text); }
.adm-anexo img { max-width: 100%; border-radius: var(--adm-r-sm); border: 1px solid var(--adm-line); }
/* Miniatura de imagem em lista (popups, banners, floats) */
/* A base vem ANTES dos modificadores: mesma especificidade, quem vem depois ganha. */
.adm-thumb { display: block; max-width: 100%; height: auto; border-radius: var(--adm-r-sm); border: 1px solid var(--adm-line); background: var(--adm-surface-2); object-fit: contain; }
.adm-thumb--sm { width: 72px; height: 48px; object-fit: contain; }
.adm-thumb--md { width: 96px; height: 54px; object-fit: cover; flex: 0 0 auto; }
.adm-thumb--sq { width: 60px; height: 60px; object-fit: contain; flex: 0 0 auto; }
.adm-thumb--promo { width: 100px; height: 46px; object-fit: cover; flex: 0 0 auto; }
.adm-thumb--vazio { display: inline-flex; align-items: center; justify-content: center; font-size: var(--adm-fs-2xs); color: var(--adm-text-mute); }

/* Acoes da linha: cada acao pode ser um <form> (POST); sem nowrap os botoes quebram e desalinham */
.adm-row-actions { display: flex; flex-wrap: nowrap; align-items: center; gap: var(--adm-sp-2); }
.adm-row-actions form { margin: 0; flex: 0 0 auto; }
.adm-row-actions .btn { white-space: nowrap; }

/* Ordem manual por arrastar (modais, promocoes): alca, posicao e realce do alvo */
.adm-sort-handle { cursor: grab; color: var(--adm-text-mute); font-size: 17px; line-height: 1; padding: 2px 4px; user-select: none; }
.adm-sort-handle:active { cursor: grabbing; }
.adm-sort-pos { display: inline-flex; align-items: center; justify-content: center; min-width: 26px; height: 22px; margin-left: 2px; border-radius: var(--adm-r-sm); font-size: var(--adm-fs-2xs); font-weight: 600; background: var(--adm-surface-3); color: var(--adm-text-dim); font-variant-numeric: tabular-nums; }
tr.adm-sort-row.arrastando { opacity: .4; }
/* Realce do alvo em box-shadow nas <td>: borda em <tr> nao pinta com border-collapse */
tr.adm-sort-row.alvo > td { box-shadow: inset 0 -2px 0 0 var(--adm-accent); }
/* Previa da imagem atual acima do campo de upload */
.adm-preview { display: flex; align-items: center; justify-content: center; min-height: 150px; margin-bottom: var(--adm-sp-3); padding: var(--adm-sp-3); border: 1px dashed var(--adm-line-strong); border-radius: var(--adm-r-sm); background: var(--adm-surface); text-align: center; }
.adm-preview img { max-width: 100%; max-height: 150px; object-fit: contain; }
/* Log curto de processamento em lote (mais recente no topo) */
.adm-log { max-height: 180px; overflow: auto; font-size: var(--adm-fs-xs); }
.adm-log li { padding: var(--adm-sp-1) 0; border-bottom: 1px solid var(--adm-line); }
.adm-progress { height: 10px; background: var(--adm-surface-3); border-radius: var(--adm-r-pill); }
.adm-section-label { margin: var(--adm-sp-4) 0 var(--adm-sp-1); font-size: var(--adm-fs-2xs); font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--adm-text-mute); }

/* Tabela que vira cartoes no celular: cada <td data-rot="Rotulo"> mostra o rotulo */
@media (max-width: 767.98px) {
    .adm-table--stack thead { display: none; }
    .adm-table--stack tbody tr { display: block; border: 1px solid var(--adm-line); border-radius: var(--adm-r-sm); padding: var(--adm-sp-2) var(--adm-sp-3); margin-bottom: var(--adm-sp-2); }
    .adm-table--stack tbody td { display: flex; justify-content: space-between; gap: var(--adm-sp-3); border: 0; padding: var(--adm-sp-1) 0; }
    .adm-table--stack tbody td::before { content: attr(data-rot); font-size: var(--adm-fs-xs); color: var(--adm-text-mute); }
}

/* Funil (push): barra horizontal com a cor da etapa vinda de token */
.adm-funnel { display: grid; gap: var(--adm-sp-2); }
.adm-funnel__row { display: grid; grid-template-columns: minmax(120px, 190px) 1fr minmax(96px, auto); align-items: center; gap: var(--adm-sp-3); font-size: var(--adm-fs-xs); }
.adm-funnel__label { color: var(--adm-text-mute); }
.adm-funnel__track { height: 22px; border-radius: var(--adm-r-sm); background: var(--adm-surface-3); overflow: hidden; }
.adm-funnel__track > span { display: block; height: 100%; width: var(--adm-funnel, 0%); background: var(--adm-funnel-cor, var(--adm-text-mute)); border-radius: inherit; }
.adm-funnel__value { text-align: right; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--adm-text); }
@media (max-width: 575.98px) { .adm-funnel__row { grid-template-columns: 1fr auto; } .adm-funnel__track { grid-column: 1 / -1; order: 3; } }
@media (max-width: 767.98px) { .adm-form-grid { grid-template-columns: minmax(0, 1fr); } }
.adm-form-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--adm-sp-2); padding: var(--adm-sp-4) var(--adm-sp-5); border-top: 1px solid var(--adm-line); }
/* Acoes dentro do corpo de um card (e nao no rodape dele) */
.adm-form-actions--flush { padding: var(--adm-sp-4) 0 0; margin-top: var(--adm-sp-4); }
/* Card de acao destrutiva/irreversivel ("Zona de Perigo"): borda e titulo na cor de erro */
.adm-card--danger { border-color: var(--adm-neg-line); }
.adm-card--danger .adm-card__head { border-bottom-color: var(--adm-neg-line); }
.adm-card--danger .adm-card__title { color: var(--adm-neg); }

/* Sub-card (card dentro de card, ex.: cada taxa) */
.adm-subcard { padding: var(--adm-sp-4); background: var(--adm-surface-2); box-shadow: none; border-radius: var(--adm-r); }
.adm-subcard__head { display: flex; align-items: center; justify-content: space-between; gap: var(--adm-sp-2); margin-bottom: var(--adm-sp-2); }
.adm-subcard__title { margin: 0; font-size: var(--adm-fs-body); font-weight: 600; color: var(--adm-text); }
.adm-form-grid--confirm { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); }
@media (max-width: 767.98px) { .adm-form-grid--confirm { grid-template-columns: minmax(0, 1fr); } }
.adm-wrap { white-space: normal; min-width: 220px; }

/* ---------- Estado vazio ---------- */
.adm-empty {
    display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center;
    gap: var(--adm-sp-2); padding: var(--adm-sp-10) var(--adm-sp-5); color: var(--adm-text-mute);
}
.adm-empty__icon {
    width: 44px; height: 44px; border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--adm-surface-2); border: 1px solid var(--adm-line); color: var(--adm-text-dim); font-size: 21px;
}
.adm-empty__title { margin: 0; font-size: var(--adm-fs-body); font-weight: 600; color: var(--adm-text); }
.adm-empty__text { margin: 0; font-size: var(--adm-fs-sm); max-width: 48ch; }
.adm-empty--error .adm-empty__icon { color: var(--adm-neg); background: var(--adm-neg-soft); border-color: var(--adm-neg-line); }

/* ---------- Esqueleto de carregamento ---------- */
.adm-skeleton {
    display: block; height: 1em; border-radius: var(--adm-r-sm);
    background: linear-gradient(90deg, var(--adm-surface-2) 0%, var(--adm-surface-3) 50%, var(--adm-surface-2) 100%);
    background-size: 200% 100%; animation: adm-shimmer 1.2s linear infinite;
}
@keyframes adm-shimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }
[aria-busy="true"] { cursor: progress; }

/* ---------- Grafico ---------- */
.adm-chart { position: relative; min-height: 260px; }
.adm-chart__legend { display: flex; flex-wrap: wrap; gap: var(--adm-sp-3); font-size: var(--adm-fs-xs); color: var(--adm-text-mute); }
.adm-chart__legend span { display: inline-flex; align-items: center; gap: 6px; }
.adm-chart__legend span::before { content: ""; width: 10px; height: 3px; border-radius: 2px; background: var(--adm-legend, var(--adm-text)); }
.adm-chart__legend .is-pos { --adm-legend: var(--adm-pos); }
.adm-chart__legend .is-neg { --adm-legend: var(--adm-neg); }
.adm-chart__legend .is-mute { --adm-legend: var(--adm-text-mute); }
.apexcharts-tooltip { background: var(--adm-surface) !important; border: 1px solid var(--adm-line) !important; color: var(--adm-text) !important; box-shadow: var(--adm-shadow-pop) !important; border-radius: var(--adm-r) !important; }
.apexcharts-tooltip-title { background: var(--adm-surface-2) !important; border-bottom: 1px solid var(--adm-line) !important; }
.apexcharts-xaxistooltip { background: var(--adm-surface) !important; border-color: var(--adm-line) !important; color: var(--adm-text) !important; }
.apexcharts-text, .apexcharts-legend-text { fill: var(--adm-text-mute); color: var(--adm-text-mute) !important; }

/* ---------- Utilitarios de fundo do Bootstrap ----------
   .bg-danger/.bg-success/... liam o RGB do template (salmao, verde-agua).
   Fora de badge viram faixa suave com texto na cor do significado. */
.bg-danger:not(.badge), .text-bg-danger:not(.badge)   { background-color: var(--adm-neg-soft) !important;  color: var(--adm-neg) !important; }
.bg-success:not(.badge), .text-bg-success:not(.badge) { background-color: var(--adm-pos-soft) !important;  color: var(--adm-pos) !important; }
.bg-warning:not(.badge), .text-bg-warning:not(.badge) { background-color: var(--adm-warn-soft) !important; color: var(--adm-warn) !important; }
.bg-info:not(.badge), .text-bg-info:not(.badge)       { background-color: var(--adm-info-soft) !important; color: var(--adm-info) !important; }
.bg-primary:not(.badge), .text-bg-primary:not(.badge) { background-color: var(--adm-surface-3) !important; color: var(--adm-text) !important; }
.bg-danger .text-white, .bg-danger.text-white, .bg-danger .modal-title { color: var(--adm-neg) !important; }
.bg-success .text-white, .bg-success.text-white, .bg-success .modal-title { color: var(--adm-pos) !important; }
.bg-warning .text-white, .bg-warning.text-white, .bg-warning .modal-title { color: var(--adm-warn) !important; }
.bg-info .text-white, .bg-info.text-white, .bg-info .modal-title { color: var(--adm-info) !important; }
.bg-primary .text-white, .bg-primary.text-white, .bg-primary .modal-title { color: var(--adm-text) !important; }
.modal-header[class*="bg-"] .btn-close { filter: none; }
html[data-bs-theme=dark] .modal-header[class*="bg-"] .btn-close { filter: invert(1) grayscale(100%) brightness(200%); }

/* ---------- Modal ---------- */
.modal-content {
    background: var(--adm-surface) !important; color: var(--adm-text-dim) !important;
    border: 1px solid var(--adm-line) !important; border-radius: var(--adm-r-lg) !important;
    box-shadow: var(--adm-shadow-pop) !important;
}
.modal-header { border-bottom: 1px solid var(--adm-line) !important; padding: var(--adm-sp-4) var(--adm-sp-5) !important; }
.modal-title { font-size: var(--adm-fs-h2) !important; font-weight: 600 !important; color: var(--adm-text) !important; }
.modal-body { padding: var(--adm-sp-5) !important; }
.modal-footer { border-top: 1px solid var(--adm-line) !important; padding: var(--adm-sp-3) var(--adm-sp-5) !important; gap: var(--adm-sp-2); }
.btn-close { filter: none; opacity: .7; }
html[data-bs-theme=dark] .btn-close { filter: invert(1) grayscale(100%) brightness(200%); }
.dropdown-menu { background: var(--adm-surface); border: 1px solid var(--adm-line); border-radius: var(--adm-r); box-shadow: var(--adm-shadow-pop); }
.tooltip { --bs-tooltip-bg: var(--adm-accent); --bs-tooltip-color: var(--adm-on-accent); --bs-tooltip-border-radius: var(--adm-r-sm); --bs-tooltip-font-size: var(--adm-fs-xs); }

/* ---------- Faixa de resumo (varios numeros num card) ---------- */
.adm-strip { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.adm-strip__item { padding: var(--adm-sp-4) var(--adm-sp-5); border-left: 1px solid var(--adm-line); min-width: 0; }
.adm-strip__item:first-child { border-left: 0; }
.adm-strip__label { display: flex; align-items: center; gap: 6px; margin-bottom: var(--adm-sp-1); font-size: var(--adm-fs-xs); font-weight: 600; color: var(--adm-text-mute); }
.adm-strip__label i { font-size: 15px; }
.adm-strip__value { font-size: 20px; font-weight: 700; letter-spacing: -.015em; color: var(--adm-text); font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.adm-strip__note { margin-top: 2px; font-size: var(--adm-fs-xs); color: var(--adm-text-mute); }
.adm-strip__note a { color: var(--adm-text-dim); text-decoration: underline; text-underline-offset: 2px; }
.adm-strip__note a:hover { color: var(--adm-text); }
@media (max-width: 1199.98px) {
    .adm-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .adm-strip__item:nth-child(3) { border-left: 0; }
    .adm-strip__item:nth-child(n+3) { border-top: 1px solid var(--adm-line); }
}
@media (max-width: 575.98px) {
    .adm-strip { grid-template-columns: minmax(0, 1fr); }
    .adm-strip__item { border-left: 0; }
    .adm-strip__item + .adm-strip__item { border-top: 1px solid var(--adm-line); }
}

@media (min-width: 1200px) {
    .adm-strip--5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
    .adm-strip--5 .adm-strip__item:nth-child(n+3) { border-top: 0; }
    .adm-strip--5 .adm-strip__item:nth-child(3) { border-left: 1px solid var(--adm-line); }
}

/* Abas dentro do cabecalho do card */
.adm-card__head--tabs { padding-bottom: 0; border-bottom: 1px solid var(--adm-line); overflow-x: auto; scrollbar-width: none; }
.adm-card__head--tabs .nav-tabs { border-bottom: 0 !important; flex-wrap: nowrap; }
.adm-card__head--tabs .nav-tabs .nav-link { white-space: nowrap; }

/* ---------- Alternador de periodo (links, estado na URL) ---------- */
.adm-segmented { display: inline-flex; flex-wrap: wrap; gap: 4px; margin-top: var(--adm-sp-2); padding: 3px; border: 1px solid var(--adm-line); border-radius: var(--adm-r-pill); background: var(--adm-surface-2); }
.adm-segmented a { padding: 2px 10px; border-radius: var(--adm-r-pill); font-size: var(--adm-fs-2xs); font-weight: 600; color: var(--adm-text-mute); text-decoration: none; }
.adm-segmented a:hover { color: var(--adm-text); }
.adm-segmented a[aria-current="page"] { background: var(--adm-accent); color: var(--adm-on-accent); }

/* ---------- Barra de medida (proporcao com rotulo) ---------- */
.adm-meter { display: grid; grid-template-columns: 1fr auto; gap: 2px var(--adm-sp-3); align-items: end; }
.adm-meter__label { font-size: var(--adm-fs-sm); color: var(--adm-text-dim); }
.adm-meter__value { font-size: var(--adm-fs-sm); font-weight: 700; color: var(--adm-text); font-variant-numeric: tabular-nums; }
.adm-meter__sub { font-size: var(--adm-fs-xs); color: var(--adm-text-mute); }
.adm-meter__track { grid-column: 1 / -1; height: 6px; margin-top: var(--adm-sp-1); border-radius: var(--adm-r-pill); background: var(--adm-surface-3); overflow: hidden; }
.adm-meter__track > span { display: block; height: 100%; width: var(--adm-meter, 0%); border-radius: inherit; background: var(--adm-meter-cor, var(--adm-text)); transform-origin: left; }
html:not([data-motion=reduced]) .adm-meter__track > span { animation: adm-meter var(--adm-dur-3) var(--adm-ease) both; }
@keyframes adm-meter { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.adm-meter--pos  { --adm-meter-cor: var(--adm-pos); }
.adm-meter--warn { --adm-meter-cor: var(--adm-warn); }
.adm-meter--neg  { --adm-meter-cor: var(--adm-neg); }

/* ---------- Lista chave-valor ---------- */
.adm-kv { margin: 0; }
.adm-kv__row { display: flex; align-items: baseline; justify-content: space-between; gap: var(--adm-sp-4); padding: var(--adm-sp-3) 0; border-top: 1px solid var(--adm-line); }
.adm-kv__row:first-child { border-top: 0; padding-top: 0; }
.adm-kv__row:last-child { padding-bottom: 0; }
.adm-kv dt { font-weight: 400; font-size: var(--adm-fs-sm); color: var(--adm-text-dim); }
.adm-kv dt small { display: block; margin-top: 2px; font-size: var(--adm-fs-xs); color: var(--adm-text-mute); }
.adm-kv dd { margin: 0; font-size: var(--adm-fs-sm); font-weight: 700; color: var(--adm-text); font-variant-numeric: tabular-nums; white-space: nowrap; text-align: right; }
.adm-kv dd a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
/* Valor de texto livre (nome, motivo): quebra linha em vez de estourar a largura */
.adm-kv--texto dd { white-space: normal; overflow-wrap: anywhere; font-weight: 600; }

/* ---------- Atalho (tile) ---------- */
.adm-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: var(--adm-sp-3); }
.adm-tile {
    display: flex; align-items: center; gap: var(--adm-sp-3); padding: var(--adm-sp-3) var(--adm-sp-4);
    border: 1px solid var(--adm-line); border-radius: var(--adm-r); background: var(--adm-surface-2);
    color: var(--adm-text-dim); text-decoration: none; min-width: 0;
    transition: border-color var(--adm-dur-1) var(--adm-ease), background-color var(--adm-dur-1) var(--adm-ease), transform var(--adm-dur-2) var(--adm-ease);
}
.adm-tile > i { flex: none; font-size: 19px; color: var(--adm-text-mute); transition: transform var(--adm-dur-1) var(--adm-ease), color var(--adm-dur-1) var(--adm-ease); }
.adm-tile__title { display: block; font-size: var(--adm-fs-sm); font-weight: 600; color: var(--adm-text); line-height: 1.25; }
.adm-tile__sub { display: block; font-size: var(--adm-fs-xs); color: var(--adm-text-mute); }
.adm-tile:hover { border-color: var(--adm-line-strong); background: var(--adm-surface-3); }
.adm-tile:hover > i { color: var(--adm-text); }
@media (hover: hover) and (min-width: 760px) {
    html:not([data-motion=reduced]) .adm-tile:hover { transform: translateY(-2px); }
    html:not([data-motion=reduced]) .adm-tile:hover > i { transform: translateX(2px); }
}

/* ---------- Botao de ajuda (i) com dica ---------- */
.adm-help { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; padding: 0; margin-left: 2px; border: 0; border-radius: 50%; background: transparent; color: var(--adm-text-mute); font-size: 14px; vertical-align: middle; cursor: help; }
.adm-help:hover, .adm-help:focus-visible { color: var(--adm-text); background: var(--adm-surface-3); }
/* Controles de RTP individual na tabela */
.rtp-individual { min-width: 140px; }
.rtp-individual label { font-size: var(--adm-fs-xs) !important; font-weight: 600 !important; color: var(--adm-text) !important; margin-bottom: 2px !important; }
.rtp-individual .form-range { accent-color: var(--adm-accent); }

/* ---------- Codigo curto (id de transacao) ---------- */
.adm-code { font-size: var(--adm-fs-xs); color: var(--adm-text-dim); background: var(--adm-surface-2); border: 1px solid var(--adm-line); border-radius: var(--adm-r-sm); padding: 1px 6px; }
/* Bloco de texto de maquina (log, payload) dentro de card: quebra em vez de estourar a largura. */
.adm-pre { max-height: 320px; overflow: auto; margin: 0; padding: var(--adm-sp-3); background: var(--adm-surface-2); border: 1px solid var(--adm-line); border-radius: var(--adm-r-sm); font-size: var(--adm-fs-xs); color: var(--adm-text-dim); white-space: pre-wrap; overflow-wrap: anywhere; }
.adm-hist__jogo { max-width: 190px; vertical-align: bottom; }
.adm-table td strong { color: var(--adm-text); font-weight: 600; }

/* ---------- Arvore em tabela (niveis de indicacao) ---------- */
.adm-tree td:first-child { white-space: nowrap; }
.adm-tree__marca { display: inline-block; width: 0; }
.adm-tree__n2 td:first-child { padding-left: calc(var(--adm-sp-4) + 20px); }
.adm-tree__n3 td:first-child { padding-left: calc(var(--adm-sp-4) + 40px); }
.adm-tree__n2 td:first-child, .adm-tree__n3 td:first-child { position: relative; }
.adm-tree__n2 td:first-child::before, .adm-tree__n3 td:first-child::before {
    content: ""; position: absolute; top: 0; bottom: 50%; width: 10px;
    border-left: 1px solid var(--adm-line-strong); border-bottom: 1px solid var(--adm-line-strong);
    left: calc(var(--adm-sp-4) + 6px);
}
.adm-tree__n3 td:first-child::before { left: calc(var(--adm-sp-4) + 26px); }

/* ---------- Linha de acao em tabela ("Abrir") ---------- */
.adm-go { display: inline-flex; align-items: center; gap: 4px; font-size: var(--adm-fs-xs); font-weight: 600; color: var(--adm-text); text-decoration: none; white-space: nowrap; }
.adm-go:hover { text-decoration: underline; text-underline-offset: 3px; }
.adm-go i { transition: transform var(--adm-dur-1) var(--adm-ease); }
.adm-go:hover i { transform: translateX(2px); }
.adm-table td small, .adm-table td .adm-sub { display: block; margin-top: 2px; font-size: var(--adm-fs-xs); color: var(--adm-text-mute); }

/* ---------- Movimento: hover e entrada (MOVIMENTO.md) ---------- */
@media (hover: hover) and (min-width: 760px) {
    html:not([data-motion=reduced]) .adm-kpi:hover,
    html:not([data-motion=reduced]) a.adm-card:hover,
    html:not([data-motion=reduced]) .adm-card--link:hover { transform: translateY(-4px); border-color: var(--adm-line-strong); }
    html:not([data-motion=reduced]) .adm-kpi:hover .adm-kpi__icon { transform: translateY(-2px) rotate(-8deg) scale(1.08); }
    html:not([data-motion=reduced]) .btn:hover:not(:disabled):not(.btn-link) { transform: translateY(-1px); }
}
html:not([data-motion=reduced]) .adm-enter { animation: adm-enter var(--adm-dur-3) var(--adm-ease) both; animation-delay: calc(var(--adm-i, 0) * var(--adm-stagger)); }
@keyframes adm-enter { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

/* ================================================================
   AUTENTICACAO — auth-login.php, 2fa_gate.php, bloqueado.php
   ================================================================ */
body.adm-auth {
    min-height: 100vh; padding: 0 !important;
    background:
        radial-gradient(60% 50% at 50% 0%, rgba(var(--adm-text-rgb), .06), transparent 70%),
        var(--adm-bg) !important;
}
.adm-auth__main {
    min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: var(--adm-sp-6); padding: var(--adm-sp-10) var(--adm-sp-4);
}
.adm-auth__tools { position: fixed; top: var(--adm-sp-4); right: var(--adm-sp-4); display: flex; align-items: center; gap: var(--adm-sp-2); z-index: var(--adm-z-dropdown); }
.adm-auth__lang {
    display: inline-flex; align-items: center; gap: var(--adm-sp-2);
    height: var(--adm-ctl-h); padding: 0 var(--adm-sp-3);
    border: 1px solid var(--adm-line); border-radius: var(--adm-r-pill);
    background: var(--adm-surface); color: var(--adm-text-dim); font-size: var(--adm-fs-sm); font-weight: 500;
}
.adm-auth__lang:hover { color: var(--adm-text); border-color: var(--adm-line-strong); }
.adm-auth__card {
    width: 100%; max-width: 420px;
    padding: var(--adm-sp-8) var(--adm-sp-8) var(--adm-sp-6);
    background: var(--adm-surface); border: 1px solid var(--adm-line);
    border-radius: var(--adm-r-lg); box-shadow: var(--adm-shadow-pop);
}
@media (max-width: 480px) { .adm-auth__card { padding: var(--adm-sp-6) var(--adm-sp-5); } }
.adm-auth__brand { display: flex; align-items: center; justify-content: center; gap: var(--adm-sp-3); margin-bottom: var(--adm-sp-6); text-decoration: none; }
.adm-auth__brand .auth-logo { max-height: 56px; max-width: 220px; object-fit: contain; }
.adm-auth__mark, .adm-auth__name { display: none; }
.adm-auth__brand.sem-logo .adm-auth__mark {
    display: inline-flex; width: 40px; height: 40px; border-radius: var(--adm-r);
    align-items: center; justify-content: center;
    background: var(--adm-accent); color: var(--adm-on-accent); font-weight: 700; font-size: 18px;
}
.adm-auth__brand.sem-logo .adm-auth__name { display: block; font-size: var(--adm-fs-h2); font-weight: 700; color: var(--adm-text); }
.adm-auth__title { margin: 0 0 var(--adm-sp-5); font-size: var(--adm-fs-h1); font-weight: 650; text-align: center; color: var(--adm-text); letter-spacing: -.015em; }
.adm-auth__lead { margin: calc(-1 * var(--adm-sp-3)) 0 var(--adm-sp-5); text-align: center; color: var(--adm-text-mute); font-size: var(--adm-fs-sm); }
.adm-auth__eye { cursor: pointer; border-left: 0 !important; }
.adm-auth__eye:hover { color: var(--adm-text) !important; }
.adm-auth__card .input-group > .form-control { border-right: 0 !important; }
.adm-auth__card .input-group:focus-within .input-group-text { border-color: var(--adm-focus) !important; }
.adm-auth__card .btn-lg { margin-top: var(--adm-sp-2); }
.adm-auth__status { min-height: 1.5em; margin: var(--adm-sp-3) 0 0; font-size: var(--adm-fs-sm); text-align: center; color: var(--adm-text-mute); }
.adm-auth__status.is-neg { color: var(--adm-neg); font-weight: 600; }
.adm-auth__status.is-pos { color: var(--adm-pos); font-weight: 600; }
.adm-auth__foot { margin: 0; font-size: var(--adm-fs-xs); color: var(--adm-text-mute); text-align: center; }
.adm-auth__noscript { max-width: 420px; }

/* Portao de 2FA (modal sobre a pagina vazia) */
.adm-auth--gate .modal-backdrop.show { opacity: .7; }
.adm-auth--gate .modal-dialog { max-width: 440px; }
.adm-auth__gate-head { flex-direction: column; align-items: center !important; gap: var(--adm-sp-3); text-align: center; border-bottom: 0 !important; padding-top: var(--adm-sp-6) !important; }
.adm-auth__gate-head .modal-title { font-size: var(--adm-fs-h1) !important; }
.adm-auth__gate-icon {
    display: inline-flex; width: 44px; height: 44px; border-radius: 50%;
    align-items: center; justify-content: center; font-size: 22px;
    background: var(--adm-surface-2); border: 1px solid var(--adm-line); color: var(--adm-text);
}
.adm-auth__card > .adm-auth__gate-icon { display: flex; margin: 0 auto var(--adm-sp-4); }
.adm-auth__gate-icon.is-neg { background: var(--adm-neg-soft); border-color: var(--adm-neg-line); color: var(--adm-neg); }
.adm-otp { letter-spacing: .4em; font-size: 1.3rem !important; font-variant-numeric: tabular-nums; height: 52px !important; font-weight: 600; }
.adm-auth__hint { font-size: var(--adm-fs-xs); color: var(--adm-text-mute); }
.adm-auth__secret { font-size: var(--adm-fs-sm); color: var(--adm-text); background: var(--adm-surface-2); padding: 2px 8px; border-radius: var(--adm-r-sm); word-break: break-all; }
#qr-box { background: #ffffff; } /* QR precisa de fundo branco para ser lido pela camera, nos dois temas */
