/* ==========================================================================
   AVTax UI — Design System
   Camada visual própria, desacoplada do Bootstrap 4.6 (usado só para grid e
   JS de modal/dropdown/collapse). Carregar SEMPRE por último.
   Índice:
     1. Tokens (tema claro / escuro)
     2. Base
     3. Shell: topbar, sidebar (drawer no mobile), conteúdo
     4. Componentes Bootstrap reestilizados
     5. Componentes próprios (av-*)
     6. Transições e animações
     7. Responsivo
     8. Movimento reduzido
   ========================================================================== */

/* 1. Tokens ---------------------------------------------------------------- */
:root {
    --av-gold-50: #fbf7ee;
    --av-gold-100: #f5ecd6;
    --av-gold-200: #ead8ad;
    --av-gold-300: #dcc187;
    --av-gold-400: #cdaf70;
    --av-gold-500: #c1a160;
    --av-gold-600: #a8853f;
    --av-gold-700: #8a6a2c;
    --av-gold-800: #6b5020;
    --av-gold-900: #543a14;
    --av-graphite: #3c3c3b;

    --av-primary: var(--av-gold-500);
    --av-primary-hover: var(--av-gold-600);
    --av-primary-ink: var(--av-gold-800);
    --av-primary-soft: rgba(193, 161, 96, .14);
    --av-on-primary: #fff;

    --av-bg: #f5f2eb;
    --av-bg-glow-1: rgba(193, 161, 96, .22);
    --av-bg-glow-2: rgba(84, 58, 20, .08);
    --av-surface: #ffffff;
    --av-surface-2: #faf8f3;
    --av-surface-3: #f1ede3;
    --av-glass: rgba(255, 255, 255, .78);
    --av-text: #1f1c17;
    --av-text-muted: #6d6659;
    --av-border: rgba(60, 48, 25, .12);
    --av-border-strong: rgba(60, 48, 25, .22);

    --av-success: #2f9e6a;
    --av-warning: #d69a1c;
    --av-danger: #d0453b;
    --av-info: #3a7fc1;

    --av-radius-sm: 8px;
    --av-radius: 12px;
    --av-radius-lg: 18px;
    --av-radius-xl: 24px;

    --av-shadow-sm: 0 1px 2px rgba(40, 30, 10, .06), 0 1px 3px rgba(40, 30, 10, .05);
    --av-shadow: 0 4px 14px -4px rgba(40, 30, 10, .12), 0 2px 6px -2px rgba(40, 30, 10, .06);
    --av-shadow-lg: 0 24px 48px -16px rgba(40, 30, 10, .22), 0 8px 16px -8px rgba(40, 30, 10, .08);
    --av-ring: 0 0 0 3px rgba(193, 161, 96, .35);

    --av-font: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;

    --av-topbar-h: 64px;
    --av-sidebar-w: 252px;
    --av-gap: 16px;
    --av-safe-top: env(safe-area-inset-top, 0px);
    --av-safe-bottom: env(safe-area-inset-bottom, 0px);
    --av-safe-left: env(safe-area-inset-left, 0px);
    --av-safe-right: env(safe-area-inset-right, 0px);

    --av-ease: cubic-bezier(.2, .8, .2, 1);
    --av-ease-spring: cubic-bezier(.34, 1.4, .64, 1);
    --av-dur-1: 140ms;
    --av-dur-2: 240ms;
    --av-dur-3: 420ms;

    color-scheme: light;
}

:root[data-theme="dark"] {
    --av-primary: #d2b476;
    --av-primary-hover: #e0c68d;
    --av-primary-ink: #e3cb96;
    --av-primary-soft: rgba(210, 180, 118, .14);
    --av-on-primary: #1d1911;

    --av-bg: #12110f;
    --av-bg-glow-1: rgba(193, 161, 96, .12);
    --av-bg-glow-2: rgba(193, 161, 96, .05);
    --av-surface: #1c1a17;
    --av-surface-2: #23201c;
    --av-surface-3: #2c2823;
    --av-glass: rgba(28, 26, 23, .78);
    --av-text: #efe9dd;
    --av-text-muted: #a79f90;
    --av-border: rgba(255, 240, 210, .09);
    --av-border-strong: rgba(255, 240, 210, .18);

    --av-shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);
    --av-shadow: 0 6px 18px -6px rgba(0, 0, 0, .55);
    --av-shadow-lg: 0 28px 56px -18px rgba(0, 0, 0, .7);

    color-scheme: dark;
}

/* 2. Base ------------------------------------------------------------------ */
html {
    -webkit-text-size-adjust: 100%;
    scroll-behavior: smooth;
}

body.av-shell,
body.av-auth {
    font-family: var(--av-font);
    color: var(--av-text);
    background-color: var(--av-bg);
    background-image:
        radial-gradient(1200px 600px at 110% -10%, var(--av-bg-glow-1), transparent 60%),
        radial-gradient(900px 500px at -10% 110%, var(--av-bg-glow-2), transparent 60%);
    background-attachment: fixed;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    /* neutraliza o fade de 2s legado (.mainGeralDark/.mainGeralLight) */
    opacity: 1 !important;
    transition: background-color var(--av-dur-3) var(--av-ease), color var(--av-dur-3) var(--av-ease);
}

body.av-shell *,
body.av-auth * {
    -webkit-tap-highlight-color: transparent;
}

/* links comuns; links estilizados como botão (classe com "btn") mantêm as próprias cores */
body.av-shell a:where(:not([class*="btn"])) {
    color: var(--av-primary-ink);
    transition: color var(--av-dur-1) var(--av-ease);
}

body.av-shell a:where(:not([class*="btn"])):hover {
    color: var(--av-primary-hover);
    text-decoration: none;
}

body.av-shell h1, body.av-shell h2, body.av-shell h3,
body.av-shell h4, body.av-shell h5, body.av-shell h6 {
    color: var(--av-text);
    font-weight: 600;
    letter-spacing: -.01em;
}

body.av-shell .text-muted {
    color: var(--av-text-muted) !important;
}

::selection {
    background: var(--av-gold-200);
    color: var(--av-gold-900);
}

:focus-visible {
    outline: 2px solid var(--av-primary);
    outline-offset: 2px;
}

/* Scrollbar discreta */
body.av-shell ::-webkit-scrollbar { width: 10px; height: 10px; }
body.av-shell ::-webkit-scrollbar-thumb {
    background: var(--av-border-strong);
    border-radius: 10px;
    border: 3px solid transparent;
    background-clip: content-box;
}
body.av-shell ::-webkit-scrollbar-thumb:hover { background-color: var(--av-primary); }
body.av-shell ::-webkit-scrollbar-track { background: transparent; }

/* O checkbox global de style.css é redondo e usa ::after absoluto; aqui ele
   ganha posição relativa para o ✓ não "escapar" do controle. */
body.av-shell input[type="checkbox"] {
    position: relative;
    flex-shrink: 0;
    border-color: var(--av-border-strong);
    transition: background-color var(--av-dur-1) var(--av-ease), border-color var(--av-dur-1) var(--av-ease), transform var(--av-dur-1) var(--av-ease);
}
body.av-shell input[type="checkbox"]:not(:checked) { background-color: var(--av-surface); }
body.av-shell input[type="checkbox"]:checked {
    background-color: var(--av-primary);
    border-color: var(--av-primary);
}
body.av-shell input[type="checkbox"]:active { transform: scale(.9); }

/* 3. Shell ----------------------------------------------------------------- */
body.av-shell {
    min-height: 100vh;
    min-height: 100dvh;
    padding-top: calc(var(--av-topbar-h) + var(--av-safe-top) + var(--av-gap));
    padding-left: calc(var(--av-sidebar-w) + var(--av-gap) * 2 + var(--av-safe-left));
    padding-right: calc(var(--av-gap) + var(--av-safe-right));
    padding-bottom: calc(var(--av-gap) * 2 + var(--av-safe-bottom));
}

/* 3.1 Topbar */
.av-topbar {
    position: fixed;
    z-index: 1030;
    top: calc(var(--av-gap) * .75 + var(--av-safe-top));
    left: calc(var(--av-sidebar-w) + var(--av-gap) * 2 + var(--av-safe-left));
    right: calc(var(--av-gap) + var(--av-safe-right));
    height: var(--av-topbar-h);
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 0 10px 0 14px;
    background: var(--av-glass);
    -webkit-backdrop-filter: saturate(160%) blur(16px);
    backdrop-filter: saturate(160%) blur(16px);
    border: 1px solid var(--av-border);
    border-radius: var(--av-radius-lg);
    box-shadow: var(--av-shadow);
    view-transition-name: av-topbar;
    transition: box-shadow var(--av-dur-2) var(--av-ease), background-color var(--av-dur-3) var(--av-ease);
}

.av-topbar.is-scrolled { box-shadow: var(--av-shadow-lg); }

.av-topbar__brand {
    display: none;
    align-items: center;
    height: 100%;
    margin-right: 4px;
}
.av-topbar__brand img { height: 30px; width: auto; }

/* Seletor de módulo */
.av-switch { min-width: 0; }
.av-switch__btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    max-width: 100%;
    height: 48px;
    padding: 4px 14px 4px 4px;
    border: 0;
    border-radius: 14px;
    background: transparent;
    color: var(--av-text);
    text-align: left;
    cursor: pointer;
    transition: background-color var(--av-dur-1) var(--av-ease);
}
.av-switch__btn:hover,
.av-switch__btn[aria-expanded="true"] { background: var(--av-surface-3); }
.av-switch__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 40px;
    height: 40px;
    border-radius: 12px;
    background: linear-gradient(135deg, var(--av-gold-400), var(--av-gold-600));
    color: #fff;
    font-size: 16px;
    box-shadow: 0 6px 14px -8px rgba(168, 133, 63, .9);
    transition: transform var(--av-dur-3) var(--av-ease-spring);
}
.av-switch__btn:hover .av-switch__icon { transform: rotate(-6deg) scale(1.05); }
.av-switch__text { display: flex; flex-direction: column; min-width: 0; line-height: 1.15; }
.av-switch__text small { font-size: 11px; color: var(--av-text-muted); font-weight: 500; letter-spacing: .04em; text-transform: uppercase; }
.av-switch__text strong { font-size: 15px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.av-switch__chev { font-size: 11px; color: var(--av-text-muted); transition: transform var(--av-dur-2) var(--av-ease); }
.av-switch__btn[aria-expanded="true"] .av-switch__chev { transform: rotate(180deg); }

body.av-shell .av-switch__menu { min-width: 280px; }
body.av-shell .av-switch__menu.show { transform-origin: top left; }
body.av-shell .av-switch__menu .dropdown-item { min-height: 44px; }
body.av-shell .av-switch__menu .dropdown-item > i:first-child {
    width: 32px;
    height: 32px;
    border-radius: 10px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--av-surface-3);
    transition: background-color var(--av-dur-1) var(--av-ease), color var(--av-dur-1) var(--av-ease);
}
body.av-shell .av-switch__menu .dropdown-item:hover > i:first-child,
body.av-shell .av-switch__menu .dropdown-item.is-active > i:first-child { background: var(--av-primary); color: var(--av-on-primary); }
body.av-shell .av-switch__menu .dropdown-item.is-active { color: var(--av-primary-ink); font-weight: 600; }
body.av-shell .av-switch__menu .av-switch__ext { margin-left: auto; width: auto; font-size: 11px; }

.av-topbar__spacer { flex: 1 1 auto; }

.av-topbar__actions {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}

/* Botão de ícone (hamburger, downloads, tema) */
.av-icon-btn,
body.av-shell .av-icon-btn {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    padding: 0;
    border: 0;
    border-radius: 12px;
    background: transparent;
    color: var(--av-text-muted);
    font-size: 17px;
    cursor: pointer;
    overflow: hidden;
    transition: background-color var(--av-dur-1) var(--av-ease), color var(--av-dur-1) var(--av-ease), transform var(--av-dur-1) var(--av-ease);
}
.av-icon-btn:hover,
body.av-shell .av-icon-btn:hover { background: var(--av-surface-3); color: var(--av-text); }
.av-icon-btn:active { transform: scale(.92); }

body.av-shell .av-menu-btn,
body.av-shell .av-sidebar__close { display: none; }

/* Relógio/registro de ponto */
.av-clock,
body.av-shell .av-clock {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    height: 42px;
    padding: 0 14px 0 6px;
    border-radius: 999px;
    background: var(--av-primary-soft);
    color: var(--av-primary-ink);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    cursor: pointer;
    transition: background-color var(--av-dur-1) var(--av-ease), transform var(--av-dur-1) var(--av-ease), box-shadow var(--av-dur-2) var(--av-ease);
}
.av-clock:hover,
body.av-shell .av-clock:hover { color: var(--av-primary-ink); box-shadow: var(--av-ring); }
.av-clock:active { transform: scale(.97); }
.av-clock__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: var(--av-primary);
    color: var(--av-on-primary);
    font-size: 13px;
    position: relative;
}
.av-clock__icon::after {
    content: "";
    position: absolute;
    inset: -3px;
    border-radius: 50%;
    border: 2px solid var(--av-primary);
    opacity: 0;
    animation: av-pulse 2.4s var(--av-ease) infinite;
}
.av-clock__time { font-size: 15px; line-height: 1; }
.av-clock__date {
    font-size: 12px;
    font-weight: 500;
    color: var(--av-text-muted);
    padding-left: 10px;
    border-left: 1px solid var(--av-border-strong);
}
.av-clock label { margin: 0; cursor: inherit; }

/* Alternador de tema — mantém o <input id="theme-toggle"> legado */
.av-theme-switch {
    position: relative;
    display: inline-flex;
    width: 60px;
    height: 32px;
    margin: 0 4px;
    flex-shrink: 0;
}
.av-theme-switch input {
    position: absolute !important;
    inset: 0;
    width: 100% !important;
    height: 100% !important;
    opacity: 0;
    margin: 0;
    cursor: pointer;
    z-index: 2;
    border: 0 !important;
    background: none !important;
}
.av-theme-switch input::after { content: none !important; }
.av-theme-switch__track {
    position: absolute;
    inset: 0;
    border-radius: 999px;
    background: var(--av-surface-3);
    border: 1px solid var(--av-border);
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 9px;
    font-size: 12px;
    color: var(--av-text-muted);
    transition: background-color var(--av-dur-2) var(--av-ease);
}
.av-theme-switch__thumb {
    position: absolute;
    top: 3px;
    left: 3px;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--av-surface);
    box-shadow: var(--av-shadow);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--av-gold-600);
    font-size: 12px;
    transition: transform var(--av-dur-3) var(--av-ease-spring), background-color var(--av-dur-2) var(--av-ease);
}
.av-theme-switch input:checked ~ .av-theme-switch__thumb {
    transform: translateX(28px) rotate(360deg);
    background: var(--av-gold-500);
    color: #1d1911;
}
.av-theme-switch input:focus-visible ~ .av-theme-switch__track { box-shadow: var(--av-ring); }

/* Usuário */
.av-user { position: relative; }
.av-user__btn,
body.av-shell .av-user__btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    height: 46px;
    padding: 3px 12px 3px 3px;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--av-text);
    cursor: pointer;
    transition: background-color var(--av-dur-1) var(--av-ease);
}
.av-user__btn:hover,
.av-user__btn[aria-expanded="true"] { background: var(--av-surface-3); }
.av-user__btn::after { display: none !important; }
.av-user__avatar,
body.av-shell .av-user__avatar {
    width: 40px !important;
    height: 40px !important;
    border-radius: 50%;
    object-fit: cover;
    box-shadow: 0 0 0 2px var(--av-surface), 0 0 0 4px var(--av-primary-soft);
    background: var(--av-surface-3);
}
.av-user__name {
    font-size: 14px;
    font-weight: 600;
    max-width: 160px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.av-user__chev { font-size: 11px; color: var(--av-text-muted); transition: transform var(--av-dur-2) var(--av-ease); }
.av-user__btn[aria-expanded="true"] .av-user__chev { transform: rotate(180deg); }

.av-user__menu-head {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 14px 12px;
    margin-bottom: 6px;
    border-bottom: 1px solid var(--av-border);
}
.av-user__menu-head strong { display: block; font-size: 14px; color: var(--av-text); }
.av-user__menu-head small { color: var(--av-text-muted); }

/* 3.2 Sidebar */
.av-sidebar {
    position: fixed;
    z-index: 1040;
    top: calc(var(--av-gap) * .75 + var(--av-safe-top));
    bottom: calc(var(--av-gap) * .75 + var(--av-safe-bottom));
    left: calc(var(--av-gap) + var(--av-safe-left));
    width: var(--av-sidebar-w);
    display: flex;
    flex-direction: column;
    background: var(--av-glass);
    -webkit-backdrop-filter: saturate(160%) blur(16px);
    backdrop-filter: saturate(160%) blur(16px);
    border: 1px solid var(--av-border);
    border-radius: var(--av-radius-lg);
    box-shadow: var(--av-shadow);
    overflow: hidden;
    view-transition-name: av-sidebar;
    transition: transform var(--av-dur-3) var(--av-ease), box-shadow var(--av-dur-3) var(--av-ease), background-color var(--av-dur-3) var(--av-ease);
}

.av-sidebar__brand {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 20px 18px 14px;
}
.av-sidebar__brand img {
    max-width: 150px;
    width: 100%;
    height: auto;
    transition: transform var(--av-dur-2) var(--av-ease);
}
.av-sidebar__brand a:hover img { transform: scale(1.03); }


.av-sidebar__scroll {
    flex: 1 1 auto;
    overflow-y: auto;
    padding: 4px 12px 16px;
    overscroll-behavior: contain;
}

.av-sidebar__label {
    margin: 14px 10px 8px;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--av-text-muted);
}

.av-sidebar__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.av-nav-link,
body.av-shell .av-nav-link {
    position: relative;
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 44px;
    padding: 10px 12px;
    border-radius: 12px;
    color: var(--av-text-muted);
    font-size: 14px;
    font-weight: 500;
    line-height: 1.25;
    overflow: hidden;
    transition: color var(--av-dur-1) var(--av-ease), background-color var(--av-dur-1) var(--av-ease), transform var(--av-dur-1) var(--av-ease);
}
.av-nav-link i {
    width: 20px;
    text-align: center;
    font-size: 15px;
    flex-shrink: 0;
    transition: transform var(--av-dur-2) var(--av-ease-spring);
}
.av-nav-link:hover,
body.av-shell .av-nav-link:hover { color: var(--av-text); background: var(--av-surface-3); }
.av-nav-link:hover i { transform: translateX(2px) scale(1.08); }
.av-nav-link:active { transform: scale(.98); }
.av-nav-link.is-active,
body.av-shell .av-nav-link.is-active {
    color: var(--av-primary-ink);
    background: var(--av-primary-soft);
    font-weight: 600;
}
.av-nav-link.is-active::before {
    content: "";
    position: absolute;
    left: 0;
    top: 10px;
    bottom: 10px;
    width: 3px;
    border-radius: 0 3px 3px 0;
    background: var(--av-primary);
    /* sem animação: rodava a cada abertura de página */
}

/* Módulos (links da topbar replicados no drawer em telas menores) */
.av-sidebar__modules { display: none; }

.av-sidebar__foot {
    padding: 12px 16px 16px;
    border-top: 1px solid var(--av-border);
    font-size: 11px;
    color: var(--av-text-muted);
    text-align: center;
}

.av-backdrop {
    position: fixed;
    inset: 0;
    z-index: 1035;
    background: rgba(20, 16, 10, .45);
    -webkit-backdrop-filter: blur(3px);
    backdrop-filter: blur(3px);
    opacity: 0;
    visibility: hidden;
    transition: opacity var(--av-dur-3) var(--av-ease), visibility 0s linear var(--av-dur-3);
}

/* 3.3 Conteúdo — normaliza os wrappers legados */
body.av-shell .conteudo-geral {
    width: auto;
    max-width: none;
    flex: none;
    margin: 0;
    padding: 0;
    min-height: 0;
    overflow: visible;
    background: transparent;
    border-radius: 0;
}
body.av-shell > .container-fluid,
body.av-shell > .container {
    max-width: none;
    padding-left: 0;
    padding-right: 0;
}
body.av-shell .row { margin-top: 0; }

/* Mensagens de sistema legadas */
body.av-shell .msg-success,
body.av-shell .msg-warning,
body.av-shell .msg-fail {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 15px var(--av-gap);
    padding: 12px 16px;
    border-radius: var(--av-radius);
    border: 1px solid transparent;
    font-weight: 500;
    box-shadow: var(--av-shadow-sm);
    animation: av-slide-down var(--av-dur-3) var(--av-ease) both;
    transition: opacity 1s var(--av-ease), transform 1s var(--av-ease);
}
body.av-shell .msg-success { background: rgba(47, 158, 106, .12); border-color: rgba(47, 158, 106, .3); color: var(--av-success); }
body.av-shell .msg-warning { background: rgba(214, 154, 28, .12); border-color: rgba(214, 154, 28, .3); color: var(--av-warning); }
body.av-shell .msg-fail { background: rgba(208, 69, 59, .1); border-color: rgba(208, 69, 59, .3); color: var(--av-danger); }

/* 4. Componentes Bootstrap ------------------------------------------------- */

/* Cards */
body.av-shell .card {
    background: var(--av-surface);
    border: 1px solid var(--av-border);
    border-radius: var(--av-radius-lg);
    box-shadow: var(--av-shadow-sm);
    color: var(--av-text);
    transition: box-shadow var(--av-dur-2) var(--av-ease), transform var(--av-dur-2) var(--av-ease), border-color var(--av-dur-2) var(--av-ease), background-color var(--av-dur-3) var(--av-ease);
}
body.av-shell .card-header,
body.av-shell .card-footer {
    background: transparent;
    border-color: var(--av-border);
}
body.av-shell .card-header:first-child { border-radius: var(--av-radius-lg) var(--av-radius-lg) 0 0; }
body.av-shell .card-footer:last-child { border-radius: 0 0 var(--av-radius-lg) var(--av-radius-lg); }
body.av-shell .bg-white { background-color: var(--av-surface) !important; }
body.av-shell .bg-light { background-color: var(--av-surface-2) !important; }
body.av-shell .border,
body.av-shell .border-top,
body.av-shell .border-bottom { border-color: var(--av-border) !important; }

/* Botões */
body.av-shell .btn,
body.av-auth .btn {
    position: relative;
    overflow: hidden;
    border-radius: 10px;
    font-weight: 500;
    letter-spacing: .01em;
    transition: background-color var(--av-dur-1) var(--av-ease), border-color var(--av-dur-1) var(--av-ease), color var(--av-dur-1) var(--av-ease), box-shadow var(--av-dur-2) var(--av-ease), transform var(--av-dur-1) var(--av-ease);
}
body.av-shell .btn:not(:disabled):active,
body.av-auth .btn:not(:disabled):active { transform: scale(.97); }
body.av-shell .btn:focus,
body.av-shell .btn.focus { box-shadow: var(--av-ring); }

body.av-shell .btn-primary,
body.av-auth .btn-primary {
    background: var(--av-primary);
    border-color: var(--av-primary);
    color: var(--av-on-primary);
    box-shadow: 0 6px 14px -8px rgba(168, 133, 63, .9);
}
body.av-shell .btn-primary:hover,
body.av-auth .btn-primary:hover,
body.av-shell .btn-primary:not(:disabled):not(.disabled):active {
    background: var(--av-primary-hover);
    border-color: var(--av-primary-hover);
    color: var(--av-on-primary);
}
body.av-shell .btn-outline-primary {
    color: var(--av-primary-ink);
    border-color: var(--av-primary);
}
body.av-shell .btn-outline-primary:hover {
    background: var(--av-primary);
    border-color: var(--av-primary);
    color: var(--av-on-primary);
}
body.av-shell .btn-secondary {
    background: var(--av-surface-3);
    border-color: var(--av-border);
    color: var(--av-text);
}
body.av-shell .btn-secondary:hover {
    background: var(--av-border-strong);
    border-color: var(--av-border-strong);
    color: var(--av-text);
}
body.av-shell .btn-light {
    background: var(--av-surface-2);
    border-color: var(--av-border);
    color: var(--av-text);
}
body.av-shell .btn-link { color: var(--av-primary-ink); }

/* Ripple */
.av-ripple {
    position: absolute;
    border-radius: 50%;
    pointer-events: none;
    background: currentColor;
    opacity: .22;
    transform: scale(0);
    animation: av-ripple 600ms var(--av-ease) forwards;
}

/* Formulários */
body.av-shell .form-control,
body.av-shell .custom-select,
body.av-auth .form-control {
    min-height: 42px;
    border-radius: 10px;
    border: 1px solid var(--av-border-strong);
    background-color: var(--av-surface);
    color: var(--av-text);
    transition: border-color var(--av-dur-1) var(--av-ease), box-shadow var(--av-dur-2) var(--av-ease), background-color var(--av-dur-3) var(--av-ease);
}
body.av-shell textarea.form-control { min-height: 84px; }
body.av-shell .form-control::placeholder { color: var(--av-text-muted); opacity: .7; }
body.av-shell .form-control:focus,
body.av-shell .custom-select:focus,
body.av-auth .form-control:focus {
    border-color: var(--av-primary);
    box-shadow: var(--av-ring);
    background-color: var(--av-surface);
    color: var(--av-text);
}
body.av-shell .form-control:disabled,
body.av-shell .form-control[readonly] { background-color: var(--av-surface-3); }
body.av-shell label { font-weight: 500; color: var(--av-text); }
body.av-shell .input-group-text {
    background: var(--av-surface-3);
    border-color: var(--av-border-strong);
    color: var(--av-text-muted);
    border-radius: 10px;
}

/* Tabelas */
body.av-shell .table {
    color: var(--av-text);
    margin-bottom: 0;
}
body.av-shell .table th,
body.av-shell .table td {
    border-color: var(--av-border);
    vertical-align: middle;
}
body.av-shell .table thead th {
    border-bottom: 1px solid var(--av-border-strong);
    background: var(--av-surface-2);
    color: var(--av-text-muted);
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
    white-space: nowrap;
}
body.av-shell .table .thead-light th { background: var(--av-surface-2); color: var(--av-text-muted); border-color: var(--av-border); }
body.av-shell .table-hover tbody tr { transition: background-color var(--av-dur-1) var(--av-ease); }
body.av-shell .table-hover tbody tr:hover { background: var(--av-primary-soft); color: var(--av-text); }
.av-table-scroll {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    border-radius: var(--av-radius);
}

/* Modais */
body.av-shell .modal-content,
body.av-auth .modal-content {
    background: var(--av-surface);
    color: var(--av-text);
    border: 1px solid var(--av-border);
    border-radius: var(--av-radius-xl);
    box-shadow: var(--av-shadow-lg);
    overflow: hidden;
}
body.av-shell .modal-header,
body.av-shell .modal-footer,
body.av-auth .modal-header,
body.av-auth .modal-footer { border-color: var(--av-border); padding: 16px 22px; }
body.av-shell .modal-body,
body.av-auth .modal-body { padding: 20px 22px; }
body.av-shell .modal-title { font-weight: 600; }
body.av-shell .close,
body.av-auth .close {
    width: 36px;
    height: 36px;
    margin: -6px -8px -6px auto !important;
    padding: 0 !important;
    border-radius: 10px;
    color: var(--av-text);
    text-shadow: none;
    opacity: .6;
    transition: background-color var(--av-dur-1) var(--av-ease), opacity var(--av-dur-1) var(--av-ease), transform var(--av-dur-2) var(--av-ease);
}
body.av-shell .close:hover,
body.av-auth .close:hover { opacity: 1; background: var(--av-surface-3); transform: rotate(90deg); }

.modal-backdrop.show { opacity: 1; background: rgba(20, 16, 10, .5); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.modal-backdrop { background: rgba(20, 16, 10, 0); }
.modal-backdrop.fade { transition: opacity var(--av-dur-3) var(--av-ease); }

body.av-shell .modal.fade .modal-dialog,
body.av-auth .modal.fade .modal-dialog {
    transform: translateY(24px) scale(.96);
    opacity: 0;
    transition: transform var(--av-dur-3) var(--av-ease-spring), opacity var(--av-dur-2) var(--av-ease);
}
body.av-shell .modal.show .modal-dialog,
body.av-auth .modal.show .modal-dialog { transform: none; opacity: 1; }

/* Dropdowns */
body.av-shell .dropdown-menu {
    min-width: 220px;
    padding: 6px;
    border: 1px solid var(--av-border);
    border-radius: 14px;
    background: var(--av-surface);
    box-shadow: var(--av-shadow-lg);
    color: var(--av-text);
}
body.av-shell .dropdown-menu.show {
    animation: av-pop var(--av-dur-2) var(--av-ease) both;
    transform-origin: top right;
}
body.av-shell .dropdown-item {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 40px;
    padding: 8px 12px;
    border-radius: 10px;
    color: var(--av-text);
    font-size: 14px;
    transition: background-color var(--av-dur-1) var(--av-ease), color var(--av-dur-1) var(--av-ease);
}
body.av-shell .dropdown-item i { width: 18px; text-align: center; color: var(--av-text-muted); }
body.av-shell .dropdown-item:hover,
body.av-shell .dropdown-item:focus { background: var(--av-primary-soft); color: var(--av-primary-ink); }
body.av-shell .dropdown-item.av-danger:hover { background: rgba(208, 69, 59, .1); color: var(--av-danger); }
body.av-shell .dropdown-divider { border-color: var(--av-border); margin: 6px 4px; }

/* Badges, alerts, nav-tabs, pagination */
body.av-shell .badge { border-radius: 999px; padding: .38em .7em; font-weight: 600; }
body.av-shell .alert { border-radius: var(--av-radius); border-width: 1px; }
body.av-shell .nav-tabs { border-color: var(--av-border); gap: 4px; }
body.av-shell .nav-tabs .nav-link {
    border: 0;
    border-bottom: 2px solid transparent;
    border-radius: 0;
    color: var(--av-text-muted);
    font-weight: 500;
    transition: color var(--av-dur-1) var(--av-ease), border-color var(--av-dur-2) var(--av-ease);
}
body.av-shell .nav-tabs .nav-link:hover { color: var(--av-text); border-color: var(--av-border-strong); }
body.av-shell .nav-tabs .nav-link.active {
    background: transparent;
    color: var(--av-primary-ink);
    border-color: var(--av-primary);
}
body.av-shell .nav-pills .nav-link { border-radius: 10px; color: var(--av-text-muted); }
body.av-shell .nav-pills .nav-link.active { background: var(--av-primary); color: var(--av-on-primary); }
body.av-shell .page-link {
    border-color: var(--av-border);
    background: var(--av-surface);
    color: var(--av-primary-ink);
}
body.av-shell .page-item.active .page-link { background: var(--av-primary); border-color: var(--av-primary); color: var(--av-on-primary); }
body.av-shell .progress { background: var(--av-surface-3); border-radius: 999px; }
body.av-shell .progress-bar { background: var(--av-primary); }

/* Carrossel */
body.av-shell .carousel { border-radius: var(--av-radius-xl); overflow: hidden; box-shadow: var(--av-shadow); }
body.av-shell .carousel-item { transition: transform .8s var(--av-ease), opacity .8s var(--av-ease); }

/* SweetAlert2 no tema -------------------------------------------------------
   Vale para qualquer Swal.fire() do portal e do Retificador. Chamadas que passam
   confirmButtonColor (ex.: exclusões em vermelho) mantêm a cor definida (estilo inline). */
body.av-shell,
body.av-auth {
    /* SweetAlert2 11.15+ lê estas variáveis */
    --swal2-confirm-button-background-color: var(--av-primary);
    --swal2-deny-button-background-color: var(--av-danger);
    --swal2-cancel-button-background-color: transparent;
    --swal2-background: var(--av-surface);
    --swal2-color: var(--av-text);
}

body.av-shell .swal2-container.swal2-backdrop-show,
body.av-auth .swal2-container.swal2-backdrop-show {
    background: rgba(20, 16, 10, .45);
    -webkit-backdrop-filter: blur(4px);
    backdrop-filter: blur(4px);
}

body.av-shell .swal2-popup,
body.av-auth .swal2-popup {
    width: min(92vw, 26rem);
    padding: 1.75rem 1.5rem 1.4rem;
    border: 1px solid var(--av-border);
    border-radius: var(--av-radius-xl);
    background: var(--av-surface);
    color: var(--av-text);
    font-family: var(--av-font);
    box-shadow: var(--av-shadow-lg);
}

/* Ícone menor e mais leve (o padrão tem 5em ≈ 80px) */
body.av-shell .swal2-icon,
body.av-auth .swal2-icon {
    font-size: 10px;           /* ícone de 50px: as medidas internas do Swal são em "em" */
    margin: .25rem auto 1rem;
    border-width: 3px;
}
body.av-shell .swal2-icon.swal2-success,
body.av-auth .swal2-icon.swal2-success { border-color: rgba(47, 158, 106, .35); color: var(--av-success); }
body.av-shell .swal2-icon.swal2-success [class^="swal2-success-line"],
body.av-auth .swal2-icon.swal2-success [class^="swal2-success-line"] { background-color: var(--av-success); }
body.av-shell .swal2-icon.swal2-success .swal2-success-ring,
body.av-auth .swal2-icon.swal2-success .swal2-success-ring { border-color: rgba(47, 158, 106, .3); }
/* recortes brancos da animação de sucesso acompanham o fundo do modal */
body.av-shell .swal2-icon.swal2-success [class^="swal2-success-circular-line"],
body.av-shell .swal2-icon.swal2-success .swal2-success-fix,
body.av-auth .swal2-icon.swal2-success [class^="swal2-success-circular-line"],
body.av-auth .swal2-icon.swal2-success .swal2-success-fix { background-color: var(--av-surface) !important; }
body.av-shell .swal2-icon.swal2-error,
body.av-auth .swal2-icon.swal2-error { border-color: rgba(208, 69, 59, .45); color: var(--av-danger); }
body.av-shell .swal2-icon.swal2-error [class^="swal2-x-mark-line"],
body.av-auth .swal2-icon.swal2-error [class^="swal2-x-mark-line"] { background-color: var(--av-danger); }
body.av-shell .swal2-icon.swal2-warning,
body.av-auth .swal2-icon.swal2-warning { border-color: rgba(214, 154, 28, .5); color: var(--av-warning); }
body.av-shell .swal2-icon.swal2-info,
body.av-auth .swal2-icon.swal2-info { border-color: rgba(58, 127, 193, .45); color: var(--av-info); }
body.av-shell .swal2-icon.swal2-question,
body.av-auth .swal2-icon.swal2-question { border-color: var(--av-tbl-border); color: var(--av-primary); }

body.av-shell .swal2-title,
body.av-auth .swal2-title {
    padding: 0;
    color: var(--av-text);
    font-size: 1.25rem;
    font-weight: 600;
    letter-spacing: -.01em;
}
body.av-shell .swal2-html-container,
body.av-auth .swal2-html-container {
    margin: .6rem .25rem 0;
    padding: 0;
    color: var(--av-text-muted);
    font-size: .95rem;
    line-height: 1.55;
}

body.av-shell .swal2-actions,
body.av-auth .swal2-actions { gap: .5rem; margin-top: 1.4rem; }

body.av-shell .swal2-styled,
body.av-auth .swal2-styled {
    min-height: 42px;
    margin: 0 !important;
    padding: 0 1.25rem !important;
    border-radius: 12px !important;
    font-family: var(--av-font);
    font-size: .9rem !important;
    font-weight: 600;
    box-shadow: none !important;
    transition: background-color var(--av-dur-1) var(--av-ease), filter var(--av-dur-1) var(--av-ease), transform var(--av-dur-1) var(--av-ease) !important;
}
body.av-shell .swal2-styled:active,
body.av-auth .swal2-styled:active { transform: scale(.97); }
body.av-shell .swal2-styled:focus-visible,
body.av-auth .swal2-styled:focus-visible { box-shadow: var(--av-ring) !important; }

/* Confirmar: dourado da marca (quando a chamada não define cor) */
body.av-shell .swal2-styled.swal2-confirm:not([style*="background"]),
body.av-auth .swal2-styled.swal2-confirm:not([style*="background"]),
/* chamadas antigas que passam o dourado #c1a160 fixo também recebem o gradiente */
body.av-shell .swal2-styled.swal2-confirm[style*="rgb(193, 161, 96)"],
body.av-auth .swal2-styled.swal2-confirm[style*="rgb(193, 161, 96)"] {
    background: linear-gradient(135deg, var(--av-gold-400), var(--av-gold-600)) !important;
    color: #fff !important;
}
body.av-shell .swal2-styled.swal2-confirm:hover,
body.av-auth .swal2-styled.swal2-confirm:hover { filter: brightness(1.06); }

/* Cancelar: botão contornado */
body.av-shell .swal2-styled.swal2-cancel,
body.av-auth .swal2-styled.swal2-cancel {
    border: 1px solid var(--av-border-strong) !important;
    background: transparent !important;
    color: var(--av-text) !important;
}
body.av-shell .swal2-styled.swal2-cancel:hover,
body.av-auth .swal2-styled.swal2-cancel:hover { background: var(--av-surface-3) !important; }

/* Negar: vermelho do sistema */
body.av-shell .swal2-styled.swal2-deny:not([style*="background"]),
body.av-auth .swal2-styled.swal2-deny:not([style*="background"]) { background: var(--av-danger) !important; color: #fff !important; }

/* Campos dentro do modal */
body.av-shell .swal2-input,
body.av-shell .swal2-textarea,
body.av-shell .swal2-select,
body.av-auth .swal2-input {
    border: 1px solid var(--av-border-strong);
    border-radius: 10px;
    background: var(--av-surface);
    color: var(--av-text);
    font-family: var(--av-font);
    box-shadow: none;
}
body.av-shell .swal2-input:focus,
body.av-shell .swal2-textarea:focus { border-color: var(--av-primary); box-shadow: var(--av-ring); }
body.av-shell .swal2-validation-message { background: var(--av-tint-red); color: var(--av-danger); }
body.av-shell .swal2-close { color: var(--av-text-muted); border-radius: 10px; }
body.av-shell .swal2-close:hover { color: var(--av-text); background: var(--av-surface-3); }
body.av-shell .swal2-timer-progress-bar { background: var(--av-primary); }
body.av-shell .swal2-loader { border-color: var(--av-primary) transparent var(--av-primary) transparent; }

/* Entrada/saída mais suaves */
body.av-shell .swal2-show,
body.av-auth .swal2-show { animation: av-swal-in 320ms var(--av-ease-spring) both; }
body.av-shell .swal2-hide,
body.av-auth .swal2-hide { animation: av-swal-out 180ms var(--av-ease) both; }
@keyframes av-swal-in { from { opacity: 0; transform: translateY(12px) scale(.96); } to { opacity: 1; transform: none; } }
@keyframes av-swal-out { to { opacity: 0; transform: translateY(6px) scale(.98); } }

/* Toasts */
body.av-shell .swal2-popup.swal2-toast,
body.av-auth .swal2-popup.swal2-toast {
    width: auto;
    max-width: min(92vw, 24rem);
    padding: .7rem 1rem;
    border-radius: 14px;
    box-shadow: var(--av-shadow-lg);
}
body.av-shell .swal2-toast .swal2-icon,
body.av-auth .swal2-toast .swal2-icon { font-size: 5px; margin: 0 .6rem 0 0; }
body.av-shell .swal2-toast .swal2-title,
body.av-auth .swal2-toast .swal2-title { font-size: .92rem; margin: 0; }

/* 5. Componentes próprios -------------------------------------------------- */
.av-page-head {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 20px;
}
.av-page-head h1 { font-size: clamp(1.35rem, 1.1rem + 1vw, 1.9rem); margin: 0; }
.av-page-head p { margin: 4px 0 0; color: var(--av-text-muted); }
.av-eyebrow {
    display: inline-block;
    margin-bottom: 6px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--av-primary-ink);
}

.av-card {
    background: var(--av-surface);
    border: 1px solid var(--av-border);
    border-radius: var(--av-radius-lg);
    box-shadow: var(--av-shadow-sm);
    padding: 20px;
    transition: box-shadow var(--av-dur-2) var(--av-ease), transform var(--av-dur-2) var(--av-ease), border-color var(--av-dur-2) var(--av-ease);
}
.av-card--interactive { cursor: pointer; }
.av-card--interactive:hover { transform: translateY(-3px); box-shadow: var(--av-shadow-lg); border-color: var(--av-border-strong); }

.av-skeleton {
    position: relative;
    overflow: hidden;
    background: var(--av-surface-3);
    border-radius: var(--av-radius-sm);
    color: transparent !important;
}
.av-skeleton::after {
    content: "";
    position: absolute;
    inset: 0;
    transform: translateX(-100%);
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .45), transparent);
    animation: av-shimmer 1.4s infinite;
}
:root[data-theme="dark"] .av-skeleton::after { background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .06), transparent); }

/* Barra de progresso de navegação (topo) */
.av-progress {
    position: fixed;
    z-index: 2000;
    top: 0;
    left: 0;
    height: 3px;
    width: 100%;
    transform-origin: 0 50%;
    transform: scaleX(0);
    background: linear-gradient(90deg, var(--av-gold-300), var(--av-gold-500), var(--av-gold-700));
    box-shadow: 0 0 10px rgba(193, 161, 96, .6);
    opacity: 0;
    pointer-events: none;
}
.av-progress.is-running {
    opacity: 1;
    animation: av-progress 2.5s cubic-bezier(.1, .7, .2, 1) forwards;
}

/* 6. Transições e animações ----------------------------------------------- */
@keyframes av-rise {
    from { opacity: 0; transform: translateY(14px) scale(.985); }
    to { opacity: 1; transform: none; }
}
@keyframes av-fade { from { opacity: 0; } to { opacity: 1; } }
/* usa translate/scale individuais: não sobrescreve o transform que o Popper aplica */
@keyframes av-pop {
    from { opacity: 0; translate: 0 -6px; scale: .97; }
    to { opacity: 1; translate: 0 0; scale: 1; }
}
@keyframes av-slide-down {
    from { opacity: 0; transform: translateY(-10px); }
    to { opacity: 1; transform: none; }
}
@keyframes av-ripple { to { transform: scale(2.6); opacity: 0; } }
@keyframes av-shimmer { to { transform: translateX(100%); } }
@keyframes av-pulse {
    0% { opacity: .7; transform: scale(.9); }
    70%, 100% { opacity: 0; transform: scale(1.35); }
}
@keyframes av-grow-y { from { transform: scaleY(0); } to { transform: scaleY(1); } }
@keyframes av-progress {
    0% { transform: scaleX(0); }
    40% { transform: scaleX(.55); }
    100% { transform: scaleX(.9); }
}
@keyframes av-shake {
    10%, 90% { transform: translateX(-1px); }
    20%, 80% { transform: translateX(2px); }
    30%, 50%, 70% { transform: translateX(-4px); }
    40%, 60% { transform: translateX(4px); }
}

/* Revelação ao rolar (opt-in com .av-reveal) */
@supports (animation-timeline: view()) {
    .av-reveal {
        animation: av-rise linear both;
        animation-timeline: view();
        animation-range: entry 0% entry 40%;
    }
}

/* Sem transição entre páginas: o fade na abertura/recarga parecia um "reload" da tela.
   (A revelação circular do tema continua: é uma transição na mesma página, ver avtax-ui.js.) */
@view-transition { navigation: none; }

/* Troca de tema suave */
html.av-theme-anim,
html.av-theme-anim *,
html.av-theme-anim *::before,
html.av-theme-anim *::after {
    transition: background-color 380ms var(--av-ease), color 380ms var(--av-ease), border-color 380ms var(--av-ease), box-shadow 380ms var(--av-ease) !important;
}

/* 7. Responsivo ------------------------------------------------------------ */

/* Notebook (1200–1399): esconde a data do relógio para caber os módulos */
@media (max-width: 1399.98px) {
    .av-clock__date { display: none; }
    .av-user__name { max-width: 110px; }
}

/* < 992: sidebar vira drawer off-canvas */
@media (max-width: 991.98px) {
    :root { --av-gap: 12px; --av-topbar-h: 60px; }

    body.av-shell {
        padding-left: calc(var(--av-gap) + var(--av-safe-left));
    }

    .av-topbar { left: calc(var(--av-gap) + var(--av-safe-left)); padding-left: 6px; }
    .av-topbar__brand { display: flex; }
    body.av-shell .av-menu-btn,
    body.av-shell .av-sidebar__close { display: inline-flex; }
    .av-sidebar__modules { display: block; }
    .av-switch { display: none; }

    .av-sidebar {
        top: 0;
        bottom: 0;
        left: 0;
        width: min(86vw, 320px);
        padding-top: var(--av-safe-top);
        padding-bottom: var(--av-safe-bottom);
        border-radius: 0 var(--av-radius-xl) var(--av-radius-xl) 0;
        border-left: 0;
        background: var(--av-surface);
        transform: translateX(-104%);
        box-shadow: none;
        visibility: hidden;
        transition: transform var(--av-dur-3) var(--av-ease), box-shadow var(--av-dur-3) var(--av-ease), visibility 0s linear var(--av-dur-3);
    }

    html.av-drawer-open { overflow: hidden; }
    html.av-drawer-open .av-sidebar {
        transform: none;
        visibility: visible;
        box-shadow: var(--av-shadow-lg);
        transition: transform var(--av-dur-3) var(--av-ease), box-shadow var(--av-dur-3) var(--av-ease), visibility 0s;
    }
    html.av-drawer-open .av-backdrop {
        opacity: 1;
        visibility: visible;
        transition: opacity var(--av-dur-3) var(--av-ease), visibility 0s;
    }

    /* itens do drawer entram em cascata */
    html.av-drawer-open .av-sidebar__list > li {
        animation: av-rise 420ms var(--av-ease) both;
    }
    html.av-drawer-open .av-sidebar__list > li:nth-child(2) { animation-delay: 30ms; }
    html.av-drawer-open .av-sidebar__list > li:nth-child(3) { animation-delay: 60ms; }
    html.av-drawer-open .av-sidebar__list > li:nth-child(4) { animation-delay: 90ms; }
    html.av-drawer-open .av-sidebar__list > li:nth-child(5) { animation-delay: 120ms; }
    html.av-drawer-open .av-sidebar__list > li:nth-child(n+6) { animation-delay: 150ms; }
}

/* < 768: tablets em retrato e celulares grandes */
@media (max-width: 767.98px) {
    .av-user__name,
    .av-user__chev { display: none; }
    .av-user__btn,
    body.av-shell .av-user__btn { padding: 3px; }
    .av-topbar__downloads { display: none; }
}

/* < 576: celulares — modais viram bottom sheet */
@media (max-width: 575.98px) {
    :root { --av-gap: 10px; --av-topbar-h: 58px; }

    .av-topbar { gap: 2px; padding-right: 6px; border-radius: 16px; }
    .av-topbar__brand img { height: 26px; }
    .av-clock,
    body.av-shell .av-clock { padding: 0 10px 0 5px; gap: 7px; height: 40px; }
    .av-clock__time { font-size: 14px; }
    .av-theme-switch { width: 52px; margin: 0 2px; }
    .av-theme-switch input:checked ~ .av-theme-switch__thumb { transform: translateX(20px) rotate(360deg); }
    .av-theme-switch__track span { display: none; }

    body.av-shell .modal-dialog,
    body.av-auth .modal-dialog {
        display: flex;
        align-items: flex-end;
        min-height: 100%;
        margin: 0;
        max-width: none;
    }
    body.av-shell .modal-dialog-scrollable,
    body.av-auth .modal-dialog-scrollable { max-height: 100%; }
    body.av-shell .modal-content,
    body.av-auth .modal-content {
        width: 100%;
        max-height: calc(100dvh - 24px - var(--av-safe-top));
        border-radius: var(--av-radius-xl) var(--av-radius-xl) 0 0;
        border-bottom: 0;
        padding-bottom: var(--av-safe-bottom);
    }
    body.av-shell .modal-content::before,
    body.av-auth .modal-content::before {
        content: "";
        display: block;
        width: 40px;
        height: 4px;
        margin: 8px auto 0;
        border-radius: 4px;
        background: var(--av-border-strong);
    }
    body.av-shell .modal-body { overflow-y: auto; }
    body.av-shell .modal.fade .modal-dialog,
    body.av-auth .modal.fade .modal-dialog { transform: translateY(100%); opacity: 1; }
    body.av-shell .modal.show .modal-dialog,
    body.av-auth .modal.show .modal-dialog { transform: none; }
    body.av-shell .modal-footer { flex-wrap: nowrap; }
    body.av-shell .modal-footer > .btn { flex: 1 1 0; }

    body.av-shell .btn { min-height: 44px; }
    body.av-shell .btn-sm { min-height: 36px; }
    body.av-shell .form-control { font-size: 16px; } /* evita zoom no iOS */
}

/* < 360: aparelhos pequenos */
@media (max-width: 359.98px) {
    .av-topbar__brand { display: none; }
    .av-clock__icon { display: none; }
    .av-clock,
    body.av-shell .av-clock { padding: 0 10px; }
}

/* Dispositivos sem hover (touch): remove efeitos de elevação */
@media (hover: none) {
    .av-card--interactive:hover,
    body.av-shell .card:hover { transform: none; }
}

/* 8. Movimento reduzido ---------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
        scroll-behavior: auto !important;
    }
    ::view-transition-group(*),
    ::view-transition-old(*),
    ::view-transition-new(*) { animation: none !important; }
}

/* Páginas sem menu de seção: a sidebar mostra os módulos em qualquer tamanho */
.av-sidebar--modulos .av-sidebar__modules { display: block; }
.av-sidebar--modulos .av-sidebar__modules .av-sidebar__label:first-child { margin-top: 4px; }

/* Menus da topbar descolados da barra */
body.av-shell .av-topbar .dropdown-menu { margin-top: 14px !important; }

/* Itens da topbar não encolhem; em telas estreitas saem por prioridade */
.av-topbar > *,
.av-topbar__actions > * { flex-shrink: 0; }
.av-topbar > .av-switch,
.av-topbar > .av-topbar__spacer { flex-shrink: 1; }

@media (max-width: 767.98px) {
    body.av-shell .av-topbar__downloads { display: none; }
}
@media (max-width: 419.98px) {
    .av-topbar__brand { display: none !important; }
}

/* ==========================================================================
   Tabelas — sem fundo sólido; cores com transparência que funcionam
   sobre o fundo claro e escuro. Vale para todas as tabelas do painel,
   inclusive as com estilos próprios de página (.table-modern etc.).
   ========================================================================== */
:root {
    --av-tbl-border: rgba(138, 106, 44, .18);
    --av-tbl-head-bg: rgba(193, 161, 96, .16);
    --av-tbl-head-text: var(--av-gold-800);
    --av-tbl-stripe: rgba(193, 161, 96, .045);
    --av-tbl-hover: rgba(193, 161, 96, .12);
    --av-tbl-foot-bg: rgba(193, 161, 96, .10);

    /* status de linha (feriado, fim de semana, férias...) */
    --av-tint-amber: rgba(214, 154, 28, .12);
    --av-tint-blue: rgba(58, 127, 193, .10);
    --av-tint-green: rgba(47, 158, 106, .11);
    --av-tint-purple: rgba(142, 99, 196, .11);
    --av-tint-orange: rgba(230, 126, 34, .13);
    --av-tint-red: rgba(208, 69, 59, .12);
    --av-tint-edge-amber: rgba(214, 154, 28, .7);
    --av-tint-edge-blue: rgba(58, 127, 193, .6);
    --av-tint-edge-green: rgba(47, 158, 106, .7);
    --av-tint-edge-purple: rgba(142, 99, 196, .7);
    --av-tint-edge-orange: rgba(230, 126, 34, .75);
    --av-tint-edge-red: rgba(208, 69, 59, .75);
}

:root[data-theme="dark"] {
    --av-tbl-border: rgba(210, 180, 118, .13);
    --av-tbl-head-bg: rgba(210, 180, 118, .12);
    --av-tbl-head-text: var(--av-gold-300);
    --av-tbl-stripe: rgba(255, 240, 210, .025);
    --av-tbl-hover: rgba(210, 180, 118, .09);
    --av-tbl-foot-bg: rgba(210, 180, 118, .08);

    --av-tint-amber: rgba(230, 170, 50, .12);
    --av-tint-blue: rgba(90, 160, 230, .10);
    --av-tint-green: rgba(70, 190, 130, .10);
    --av-tint-purple: rgba(170, 130, 230, .11);
    --av-tint-orange: rgba(240, 140, 60, .12);
    --av-tint-red: rgba(235, 90, 80, .13);
}

/* Contêineres de tabela: sem fundo, só contorno suave */
body.av-shell .table-responsive,
body.av-shell .av-table-scroll,
body.av-shell .table-container-modern {
    background: transparent !important;
    box-shadow: none !important;
}
body.av-shell .table-responsive.bg-light,
body.av-shell .table-responsive.bg-white { background: transparent !important; }
body.av-shell .table-responsive.border,
body.av-shell .table-container-modern {
    border: 1px solid var(--av-tbl-border) !important;
    border-radius: var(--av-radius-lg) !important;
}

body.av-shell table {
    background: transparent !important;
    color: var(--av-text);
    border-color: var(--av-tbl-border);
}

body.av-shell table > thead,
body.av-shell table > tfoot { background: transparent !important; }

body.av-shell table th,
body.av-shell table td { border-color: var(--av-tbl-border) !important; }

body.av-shell table > thead > tr > th,
body.av-shell table > thead > tr > td {
    background: var(--av-tbl-head-bg) !important;
    color: var(--av-tbl-head-text) !important;
    border-bottom: 1px solid var(--av-tbl-border) !important;
    font-weight: 600;
    -webkit-backdrop-filter: blur(6px);
    backdrop-filter: blur(6px);
}

/* Linhas: transparentes, zebra e hover translúcidos */
body.av-shell table > tbody > tr {
    background-color: transparent;
    transition: background-color var(--av-dur-1) var(--av-ease);
}
body.av-shell table > tbody > tr > td { background-color: transparent; }
body.av-shell table > tbody > tr:nth-child(even) { background-color: var(--av-tbl-stripe); }
body.av-shell .table-striped > tbody > tr:nth-of-type(odd) { background-color: var(--av-tbl-stripe); }
body.av-shell .table-striped > tbody > tr:nth-of-type(even) { background-color: transparent; }
body.av-shell table > tbody > tr:hover { background-color: var(--av-tbl-hover); }
body.av-shell .table-hover > tbody > tr:hover { color: inherit; }

/* Linha de total / rodapé */
body.av-shell table tr.av-tr-total,
body.av-shell table > tfoot > tr {
    background-color: var(--av-tbl-foot-bg) !important;
    font-weight: 600;
}
body.av-shell table tr.av-tr-total > td { border-top: 1px solid var(--av-tbl-border-strong, var(--av-tbl-border)) !important; }

/* Linhas de status — tinta translúcida + filete à esquerda */
body.av-shell table tbody tr.tr-feriado,
body.av-shell table tbody tr.tr-feriado > td { background-color: var(--av-tint-amber) !important; }
body.av-shell table tbody tr.tr-fim-semana,
body.av-shell table tbody tr.tr-fim-semana > td { background-color: var(--av-tint-blue) !important; }
body.av-shell table tbody tr.tr-folga-bonificada,
body.av-shell table tbody tr.tr-folga-bonificada > td { background-color: var(--av-tint-green) !important; }
body.av-shell table tbody tr.tr-abono-periodo,
body.av-shell table tbody tr.tr-abono-periodo > td { background-color: var(--av-tint-purple) !important; }
body.av-shell table tbody tr.tr-ferias,
body.av-shell table tbody tr.tr-ferias > td { background-color: var(--av-tint-orange) !important; }
body.av-shell table tbody tr.tr-ocorrencia,
body.av-shell table tbody tr.tr-ocorrencia > td { background-color: var(--av-tint-red) !important; }

/* a célula da linha já recebe a tinta: evita somar duas camadas */
body.av-shell table tbody tr.tr-feriado,
body.av-shell table tbody tr.tr-fim-semana,
body.av-shell table tbody tr.tr-folga-bonificada,
body.av-shell table tbody tr.tr-abono-periodo,
body.av-shell table tbody tr.tr-ferias,
body.av-shell table tbody tr.tr-ocorrencia { background-color: transparent !important; }

body.av-shell table tbody tr.tr-feriado > td:first-child { box-shadow: inset 3px 0 0 var(--av-tint-edge-amber); }
body.av-shell table tbody tr.tr-fim-semana > td:first-child { box-shadow: inset 3px 0 0 var(--av-tint-edge-blue); }
body.av-shell table tbody tr.tr-folga-bonificada > td:first-child { box-shadow: inset 3px 0 0 var(--av-tint-edge-green); }
body.av-shell table tbody tr.tr-abono-periodo > td:first-child { box-shadow: inset 3px 0 0 var(--av-tint-edge-purple); }
body.av-shell table tbody tr.tr-ferias > td:first-child { box-shadow: inset 3px 0 0 var(--av-tint-edge-orange); }
body.av-shell table tbody tr.tr-ocorrencia > td:first-child { box-shadow: inset 3px 0 0 var(--av-tint-edge-red); }

body.av-shell table tbody tr.tr-feriado:hover > td,
body.av-shell table tbody tr.tr-fim-semana:hover > td,
body.av-shell table tbody tr.tr-folga-bonificada:hover > td,
body.av-shell table tbody tr.tr-abono-periodo:hover > td,
body.av-shell table tbody tr.tr-ferias:hover > td,
body.av-shell table tbody tr.tr-ocorrencia:hover > td { filter: brightness(1.04) saturate(1.15); }

/* Amostras de legenda com as mesmas tintas */
.av-swatch {
    display: inline-block;
    width: 28px;
    height: 18px;
    border-radius: 6px;
    border: 1px solid var(--av-tbl-border);
    vertical-align: middle;
}
.av-swatch--normal { background: transparent; }
.av-swatch--amber { background: var(--av-tint-amber); box-shadow: inset 3px 0 0 var(--av-tint-edge-amber); }
.av-swatch--blue { background: var(--av-tint-blue); box-shadow: inset 3px 0 0 var(--av-tint-edge-blue); }
.av-swatch--green { background: var(--av-tint-green); box-shadow: inset 3px 0 0 var(--av-tint-edge-green); }
.av-swatch--purple { background: var(--av-tint-purple); box-shadow: inset 3px 0 0 var(--av-tint-edge-purple); }
.av-swatch--orange { background: var(--av-tint-orange); box-shadow: inset 3px 0 0 var(--av-tint-edge-orange); }
.av-swatch--red { background: var(--av-tint-red); box-shadow: inset 3px 0 0 var(--av-tint-edge-red); }

/* Legenda de tabelas */
.av-legenda {
    margin-top: 20px;
    padding: 14px 18px;
    border: 1px solid var(--av-tbl-border);
    border-radius: var(--av-radius-lg);
    background: transparent;
}
body.av-shell .av-legenda__title {
    margin: 0 0 10px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--av-text-muted);
}
.av-legenda__itens { display: flex; flex-wrap: wrap; gap: 10px 22px; align-items: center; }
.av-legenda__item { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; color: var(--av-text); }
.av-legenda__icon { width: 28px; text-align: center; color: var(--av-primary); }

/* registro-ponto.css aplica margin-top: 30px em toda <table>; dentro de contêineres isso vira uma faixa vazia */
body.av-shell .table-container-modern > table,
body.av-shell .av-table-scroll > table,
body.av-shell .table-responsive > table { margin-top: 0; }

/* ==========================================================================
   Normalizações globais de componentes legados
   ========================================================================== */

/* consultas.css força height: 50px em TODO input/select/button dentro de
   .processa-data (inclusive checkbox/radio). Aqui voltam ao tamanho do sistema. */
body.av-shell .processa-data input,
body.av-shell .processa-data select,
body.av-shell .processa-data button { height: auto; }
body.av-shell .processa-data .form-control { min-height: 42px; padding: .5rem .85rem; }
body.av-shell .processa-data .form-control-sm { min-height: 34px; padding: .25rem .6rem; }
body.av-shell .processa-data select.form-control:not([multiple]):not([size]) { height: 42px; }
body.av-shell .processa-data select.form-control-sm:not([multiple]):not([size]) { height: 34px; }
body.av-shell .processa-data input[type="checkbox"],
body.av-shell .processa-data input[type="radio"] { height: 20px; padding: 0; }
body.av-shell .processa-data .btn { padding: .5rem 1rem; }
body.av-shell .processa-data .btn-sm { padding: .3rem .65rem; }

/* Selos do Bootstrap em versão translúcida (combinam com os dois temas) */
body.av-shell .badge { border: 1px solid transparent; }
body.av-shell .badge-success { background: var(--av-tint-green); color: var(--av-success); border-color: rgba(47, 158, 106, .3); }
body.av-shell .badge-danger { background: var(--av-tint-red); color: var(--av-danger); border-color: rgba(208, 69, 59, .3); }
body.av-shell .badge-warning { background: var(--av-tint-amber); color: var(--av-warning); border-color: rgba(214, 154, 28, .3); }
body.av-shell .badge-info { background: var(--av-tint-blue); color: var(--av-info); border-color: rgba(58, 127, 193, .3); }
body.av-shell .badge-primary { background: var(--av-primary-soft); color: var(--av-primary-ink); border-color: var(--av-tbl-border); }
body.av-shell .badge-secondary,
body.av-shell .badge-light { background: var(--av-surface-3); color: var(--av-text-muted); border-color: var(--av-border); }

/* Botões pequenos de ação em tabelas/listas: tinta translúcida, sólidos no hover */
body.av-shell .btn-sm.btn-info,
body.av-shell .btn-sm.btn-warning,
body.av-shell .btn-sm.btn-danger,
body.av-shell .btn-sm.btn-success {
    border-width: 1px;
    font-weight: 600;
    box-shadow: none;
}
body.av-shell .btn-sm.btn-info { background: var(--av-tint-blue); border-color: rgba(58, 127, 193, .35); color: var(--av-info); }
body.av-shell .btn-sm.btn-warning { background: var(--av-tint-amber); border-color: rgba(214, 154, 28, .35); color: var(--av-warning); }
body.av-shell .btn-sm.btn-danger { background: var(--av-tint-red); border-color: rgba(208, 69, 59, .35); color: var(--av-danger); }
body.av-shell .btn-sm.btn-success { background: var(--av-tint-green); border-color: rgba(47, 158, 106, .35); color: var(--av-success); }
body.av-shell .btn-sm.btn-info:hover { background: var(--av-info); border-color: var(--av-info); color: #fff; }
body.av-shell .btn-sm.btn-warning:hover { background: var(--av-warning); border-color: var(--av-warning); color: #fff; }
body.av-shell .btn-sm.btn-danger:hover { background: var(--av-danger); border-color: var(--av-danger); color: #fff; }
body.av-shell .btn-sm.btn-success:hover { background: var(--av-success); border-color: var(--av-success); color: #fff; }

/* Botões principais com o gradiente da marca */
body.av-shell .btn-primary:not(.btn-sm) { background: linear-gradient(135deg, var(--av-gold-400), var(--av-gold-600)); border-color: transparent; }
body.av-shell .btn-primary:not(.btn-sm):hover { background: linear-gradient(135deg, var(--av-gold-500), var(--av-gold-700)); border-color: transparent; }

/* Estado vazio genérico */
.av-vazio {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    padding: 40px 16px;
    border: 1px dashed var(--av-tbl-border);
    border-radius: var(--av-radius-xl);
    color: var(--av-text-muted);
    text-align: center;
}
.av-vazio i { font-size: 28px; color: var(--av-primary); }
.av-vazio p { margin: 0; }

/* Controle segmentado (filtros tipo "Ativos | Inativos | Todos") */
.av-segmented {
    display: inline-flex;
    padding: 4px;
    gap: 2px;
    border: 1px solid var(--av-tbl-border);
    border-radius: 12px;
}
.av-segmented label { position: relative; margin: 0; cursor: pointer; }
.av-segmented input { position: absolute !important; opacity: 0; width: 1px !important; height: 1px !important; pointer-events: none; }
.av-segmented span {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 34px;
    padding: 0 14px;
    border-radius: 9px;
    color: var(--av-text-muted);
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
    transition: background-color var(--av-dur-1) var(--av-ease), color var(--av-dur-1) var(--av-ease);
}
.av-segmented label:hover span { color: var(--av-text); }
.av-segmented input:checked + span { background: var(--av-primary); color: var(--av-on-primary); box-shadow: 0 6px 14px -8px rgba(168, 133, 63, .9); }
.av-segmented input:focus-visible + span { box-shadow: var(--av-ring); }

/* Campo de busca com ícone */
.av-search { position: relative; }
.av-search > i { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--av-text-muted); pointer-events: none; }
body.av-shell .av-search > .form-control { padding-left: 40px !important; border-radius: 12px; }

/* Campo de arquivo nativo ("Escolher arquivo") no visual do sistema */
body.av-shell input[type="file"]:not([style*="display:none"]):not([style*="display: none"]):not(.d-none) {
    max-width: 100%;
    padding: 6px;
    border: 1px dashed var(--av-border-strong);
    border-radius: 12px;
    background: var(--av-tbl-stripe);
    color: var(--av-text-muted);
    font-size: 13px;
    cursor: pointer;
    transition: border-color var(--av-dur-1) var(--av-ease), background-color var(--av-dur-1) var(--av-ease);
}
body.av-shell input[type="file"]:hover { border-color: var(--av-primary); background: var(--av-primary-soft); }
body.av-shell input[type="file"]::file-selector-button {
    margin-right: 10px;
    padding: 7px 14px;
    border: 0;
    border-radius: 9px;
    background: var(--av-primary);
    color: var(--av-on-primary);
    font: inherit;
    font-weight: 600;
    font-size: 12px;
    cursor: pointer;
    transition: background-color var(--av-dur-1) var(--av-ease);
}
body.av-shell input[type="file"]::file-selector-button:hover { background: var(--av-primary-hover); }

/* Selo da API eSocial por registro: TS = TecnoSpeed, AV = AVTax ------------ */
.av-api-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 9px;
    border: 1px solid transparent;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .04em;
    line-height: 1.5;
    white-space: nowrap;
    vertical-align: middle;
}
.av-api-badge--ts { background: rgba(58, 127, 193, .12); color: var(--av-info); border-color: rgba(58, 127, 193, .3); }
.av-api-badge--av { background: var(--av-primary-soft); color: var(--av-primary-ink); border-color: rgba(193, 161, 96, .5); }
:root[data-theme="dark"] .av-api-badge--av { color: var(--av-gold-300); }
