﻿/* ==========================================================================
   DeskNow - Tema
   Camada de personalização sobre o Tabler (que por sua vez assenta em
   Bootstrap 5), para dar identidade de marca à plataforma (app interna,
   portal do cliente, site público e painel de plataforma) sem precisar de
   um pipeline de build. A maior parte do visual (cards, tabelas, botões,
   formulários, sidebar) já vem pronta do Tabler; aqui só ajustamos cores de
   marca e alguns componentes que o Tabler não cobre (hero, pricing, etc).
   ========================================================================== */

:root,
[data-bs-theme="light"] {
    --dn-primary-strong: #a94c10;
    --dn-primary: #bf5a16;
    --dn-primary-soft: #de8741;
    --dn-primary-rgb: 191, 90, 22;
    --dn-primary-shadow-rgb: 169, 76, 16;
    --dn-charcoal: #211b18;
    --dn-charcoal-soft: #342b27;
    --dn-charcoal-rgb: 33, 27, 24;
    --dn-surface-soft: #fff7f0;
    --dn-surface-muted: #f6efe8;
    --dn-border-soft: #eadccf;
    --dn-text-muted: #3d342e;
    --dn-link-hover: #8f400d;
    --dn-topbar-bg: linear-gradient(135deg, #2b221e 0%, #171311 100%);
    --dn-hero-bg: radial-gradient(circle at top left, #b85817 0%, #2b221e 38%, #171311 100%);
    --dn-auth-bg: #171311;
    --dn-auth-mesh:
        radial-gradient(ellipse 72% 56% at 12% 16%, rgba(222, 135, 65, .22) 0%, rgba(191, 90, 22, .08) 42%, transparent 68%),
        radial-gradient(ellipse 52% 44% at 88% 12%, rgba(191, 90, 22, .16) 0%, transparent 58%),
        radial-gradient(ellipse 58% 48% at 72% 88%, rgba(169, 76, 16, .18) 0%, transparent 62%),
        radial-gradient(ellipse 44% 40% at 20% 78%, rgba(84, 54, 36, .48) 0%, transparent 66%),
        linear-gradient(162deg, #2a211c 0%, #1a1512 48%, #120f0d 100%);
    --dn-brand-gradient: linear-gradient(135deg, #de8741 0%, #a94c10 55%, #2b221e 100%);
    --dn-brand-sheen: rgba(255, 255, 255, .18);
    --tblr-primary: var(--dn-primary);
    --tblr-primary-rgb: var(--dn-primary-rgb);
    --tblr-primary-fg: #fff;
    --tblr-body-bg: #efe6dc;
    --tblr-bg-surface: #ffffff;
    --tblr-bg-forms: #ffffff;
    --tblr-body-color: #111111;
    --tblr-secondary: #2e2e2e;
    --tblr-secondary-color: #2e2e2e;
    --tblr-muted: #3d342e;
    --tblr-border-color: var(--dn-border-soft);
    --tblr-border-color-translucent: rgba(17, 17, 17, .12);
    --tblr-link-color: var(--tblr-primary);
    --tblr-link-hover-color: var(--dn-link-hover);
    --tblr-emphasis-color: var(--tblr-body-color);
    --tblr-emphasis-color-rgb: 17, 17, 17;
    --tblr-card-cap-bg: rgba(191, 90, 22, .05);
    --tblr-font-sans-serif: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --bs-body-color: #111111;
    --bs-secondary-color: #2e2e2e;
    --bs-tertiary-color: #3d342e;
}

[data-bs-theme="dark"] {
    --dn-primary-strong: #bf5a16;
    --dn-primary: #cf6c22;
    --dn-primary-soft: #e29658;
    --dn-primary-rgb: 207, 108, 34;
    --dn-primary-shadow-rgb: 191, 90, 22;
    --dn-charcoal: #151210;
    --dn-charcoal-soft: #241d19;
    --dn-charcoal-rgb: 21, 18, 16;
    --dn-surface-soft: #1f1a17;
    --dn-surface-muted: #271f1b;
    --dn-border-soft: rgba(255, 244, 236, .16);
    /* Muted text: light enough to read on dark surfaces, still dimmer than body */
    --dn-text-muted: #cbbab0;
    --dn-text-muted-dim: #9e8f84;
    --dn-link-hover: #e29658;
    --dn-topbar-bg: linear-gradient(135deg, #261d19 0%, #110f0d 100%);
    --dn-hero-bg: radial-gradient(circle at top left, #a94c10 0%, #261d19 34%, #110f0d 100%);
    --dn-auth-bg: #110f0d;
    --dn-auth-mesh:
        radial-gradient(ellipse 72% 56% at 12% 16%, rgba(226, 150, 88, .18) 0%, rgba(207, 108, 34, .07) 42%, transparent 68%),
        radial-gradient(ellipse 52% 44% at 88% 12%, rgba(207, 108, 34, .14) 0%, transparent 58%),
        radial-gradient(ellipse 58% 48% at 72% 88%, rgba(191, 90, 22, .16) 0%, transparent 62%),
        radial-gradient(ellipse 44% 40% at 20% 78%, rgba(58, 42, 32, .55) 0%, transparent 66%),
        linear-gradient(162deg, #241d19 0%, #14110f 48%, #0c0a09 100%);
    --dn-brand-gradient: linear-gradient(135deg, #e29658 0%, #bf5a16 55%, #241d19 100%);
    --dn-brand-sheen: rgba(255, 255, 255, .14);
    --tblr-primary: var(--dn-primary);
    --tblr-primary-rgb: var(--dn-primary-rgb);
    --tblr-primary-fg: #fff;
    --tblr-body-bg: #110f0d;
    --tblr-bg-surface: #1b1613;
    --tblr-bg-forms: #1f1a17;
    --tblr-body-color: #f6efe8;
    --tblr-secondary: #cbbab0;
    --tblr-secondary-color: var(--dn-text-muted);
    --tblr-muted: var(--dn-text-muted);
    --tblr-border-color: var(--dn-border-soft);
    --tblr-border-color-translucent: rgba(255, 255, 255, .12);
    --tblr-link-color: var(--tblr-primary);
    --tblr-link-hover-color: var(--dn-link-hover);
    --tblr-emphasis-color: var(--tblr-body-color);
    --tblr-emphasis-color-rgb: 246, 239, 232;
    --tblr-card-cap-bg: rgba(233, 137, 50, .1);
    --tblr-font-sans-serif: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --bs-body-color: #f6efe8;
    --bs-secondary-color: #cbbab0;
    --bs-tertiary-color: #9e8f84;
    --bs-border-color: var(--dn-border-soft);
}

body {
    -webkit-font-smoothing: antialiased;
    color: var(--tblr-body-color);
    font-weight: 500;
}
h1, h2, h3, h4, h5, h6, .page-title, .card-title {
    color: var(--tblr-body-color);
}
.text-secondary,
.text-muted,
.form-text,
.form-hint,
.form-label,
.card-subtitle,
.datagrid-title,
.navbar-nav .nav-link,
.page-subtitle,
.dn-page-subtitle,
.table thead th,
code {
    color: var(--tblr-secondary-color) !important;
}
a {
    color: var(--tblr-link-color);
    text-decoration-color: rgba(var(--tblr-primary-rgb), .35);
}
a:hover,
a:focus {
    color: var(--tblr-link-hover-color);
    text-decoration-color: currentColor;
}
h1, h2, h3, h4, h5, h6, .page-title {
    font-family: "Lexend", "Inter", sans-serif;
    letter-spacing: -0.01em;
}

/*
 * Overflow horizontal + margins negativos (.row, .card-header-tabs do Tabler)
 * alargam o scrollWidth para a ESQUERDA. Com scrollLeft=0 o browser mostra
 * esse overflow primeiro → faixa bege à esquerda e navbar "recuada" (~8–9px).
 * Só acontece em páginas com .row / tabs largos (Painel, ficha); listas sem
 * .row (Clientes) ficam flush em x=0. Cortar overflow e forçar stretch.
 */
html {
    overflow-x: hidden;
}

body.layout-fluid {
    overflow-x: hidden;
    max-width: 100%;
}

.page {
    background: var(--tblr-body-bg);
    width: 100%;
    max-width: 100%;
    margin-left: 0;
    margin-right: 0;
    padding-left: 0;
    padding-right: 0;
    align-items: stretch;
    overflow-x: clip;
    box-sizing: border-box;
}

.page-wrapper {
    background: var(--tblr-body-bg);
    width: 100%;
    max-width: 100%;
    margin-left: 0;
    margin-right: 0;
    padding-left: 0;
    padding-right: 0;
    align-items: stretch;
    min-width: 0;
    overflow-x: clip;
    box-sizing: border-box;
}

.page > .navbar,
.page > header,
.page-body,
.navbar,
.page > header .navbar-collapse {
    align-self: stretch;
    width: 100%;
    max-width: 100%;
    margin-left: 0;
    margin-right: 0;
    min-width: 0;
    box-sizing: border-box;
}

.page > header.navbar-expand-md .navbar-collapse {
    flex-basis: 100%;
    flex-grow: 1;
}

/* Cabeçalho da app: NÃO usar .page-header do Tabler (flex column + wrap
   encolhe a barra ao título/acções). Mesmo inset que a navbar DeskNow. */
.dn-app-header {
    display: block;
    width: 100%;
    max-width: 100%;
    margin: 0;
    padding: var(--tblr-page-padding-y) 0 0;
    background: var(--tblr-body-bg);
    box-sizing: border-box;
    min-width: 0;
}

.navbar > .container-fluid,
.dn-app-header > .container-fluid,
.page-body > .container-fluid,
.layout-fluid .container-fluid {
    width: 100%;
    max-width: 100%;
    margin-left: 0;
    margin-right: 0;
    min-width: 0;
    box-sizing: border-box;
}

.dn-page-header-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .5rem 1rem;
    width: 100%;
    max-width: none;
    min-width: 0;
}

.dn-page-header-title {
    min-width: 0;
    flex: 1 1 0%;
}

.dn-page-header-title .page-title {
    display: block;
    min-width: 0;
    max-width: 100%;
}

.dn-page-header-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    flex: 0 0 auto;
    width: auto;
    max-width: 100%;
    margin-left: auto;
}

.dn-page-header-actions:empty {
    display: none;
}

.card,
.dropdown-menu,
.modal-content,
.offcanvas,
.navbar,
.form-control,
.form-select,
.input-group-text {
    border-color: var(--tblr-border-color);
}

.card,
.dropdown-menu,
.modal-content,
.offcanvas {
    box-shadow: 0 12px 30px -24px rgba(var(--dn-charcoal-rgb), .45);
}

/* ---------- Marca ---------- */
.dn-brand-tenant {
    display: block;
    font-size: .7rem;
    font-weight: 500;
    color: var(--tblr-secondary);
    max-width: 14rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.dn-brand-mark {
    width: 34px;
    height: 34px;
    border-radius: .6rem;
    background: var(--dn-brand-gradient);
    box-shadow: inset 0 1px 0 var(--dn-brand-sheen), 0 12px 24px -18px rgba(var(--dn-primary-shadow-rgb), .9);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 800;
    font-size: 1rem;
    color: #fff;
    flex-shrink: 0;
}

/* ---------- Barra de navegação horizontal da app interna ---------- */
.dropdown-menu-card {
    min-width: 22rem;
    padding: 0;
    overflow: hidden;
}
.dropdown-menu-card .card { border: 0; margin-bottom: 0; }

/* ---------- Subtítulo de página (por baixo do page-title) ---------- */
.dn-page-subtitle {
    color: var(--tblr-secondary-color, #6c7a91);
    font-size: .875rem;
    margin-top: .15rem;
}

/* Filtros no page-header (Painel): compactos, à direita do título */
.dn-page-filters {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: .5rem;
    width: auto;
    max-width: 100%;
    min-width: 0;
}

.dn-page-filters .form-select {
    width: 12.5rem;
    max-width: 100%;
    flex: 0 1 12.5rem;
}

@media (max-width: 767.98px) {
    .dn-page-header-actions {
        margin-left: 0;
        width: 100%;
        justify-content: flex-start;
    }
    .dn-page-filters {
        justify-content: flex-start;
        width: 100%;
        margin-left: 0;
    }
    .dn-page-filters .form-select {
        flex: 1 1 12.5rem;
    }
}

/* ---------- Páginas de autenticação (login da app e da plataforma) ---------- */
/*
 * Split SaaS clássico: marca à esquerda, formulário à direita.
 * Setup 2FA mantém cartão centrado (sem painel de marca) para não partir o layout compacto.
 * Top-align + margin auto no cartão em mobile / setup: scroll seguro em viewports baixos.
 */
.dn-auth-page {
    --dn-auth-space-1: .5rem;
    --dn-auth-space-2: 1rem;
    --dn-auth-space-3: 1.5rem;
    --dn-auth-space-4: 2rem;
    --dn-auth-radius: 1rem;
    --dn-auth-radius-sm: .5rem;
    --dn-auth-control-h: 2.75rem; /* 44px */
    position: relative;
    isolation: isolate;
    box-sizing: border-box;
    min-height: 100vh;
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    background-color: var(--dn-auth-bg);
    padding:
        max(var(--dn-auth-space-3), env(safe-area-inset-top, 0px))
        var(--dn-auth-space-3)
        max(var(--dn-auth-space-3), env(safe-area-inset-bottom, 0px));
}
.dn-auth-atmosphere {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
}
.dn-auth-atmosphere__mesh {
    position: absolute;
    inset: -12%;
    background: var(--dn-auth-mesh);
}
.dn-auth-atmosphere__grid {
    position: absolute;
    inset: 0;
    opacity: .022;
    background-image:
        linear-gradient(rgba(255, 244, 236, .45) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 244, 236, .45) 1px, transparent 1px);
    background-size: 64px 64px;
    mask-image: radial-gradient(ellipse 65% 58% at 50% 40%, #000 8%, transparent 70%);
    -webkit-mask-image: radial-gradient(ellipse 65% 58% at 50% 40%, #000 8%, transparent 70%);
}
.dn-auth-atmosphere__glow {
    position: absolute;
    border-radius: 50%;
    filter: blur(72px);
    will-change: transform;
}
.dn-auth-atmosphere__glow--a {
    top: -12%;
    right: -10%;
    width: min(42vw, 440px);
    height: min(42vw, 440px);
    background: rgba(var(--dn-primary-rgb), .22);
    animation: dn-auth-orb-a 40s cubic-bezier(.45, .05, .55, .95) infinite;
}
.dn-auth-atmosphere__glow--b {
    bottom: -16%;
    left: -12%;
    width: min(46vw, 480px);
    height: min(46vw, 480px);
    background: rgba(var(--dn-primary-rgb), .12);
    animation: dn-auth-orb-b 48s cubic-bezier(.45, .05, .55, .95) infinite;
}
.dn-auth-atmosphere__vignette {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 76% 66% at 50% 42%, transparent 32%, rgba(12, 10, 9, .58) 100%),
        linear-gradient(180deg, rgba(12, 10, 9, .36) 0%, transparent 14%, transparent 78%, rgba(12, 10, 9, .5) 100%),
        linear-gradient(90deg, rgba(12, 10, 9, .22) 0%, transparent 20%, transparent 80%, rgba(12, 10, 9, .18) 100%);
}
.dn-auth-atmosphere__mark {
    position: absolute;
    right: max(-4%, -2rem);
    bottom: max(-8%, -3rem);
    font-family: "Lexend", "Inter", sans-serif;
    font-weight: 800;
    font-size: clamp(11rem, 26vw, 20rem);
    line-height: .8;
    letter-spacing: -0.06em;
    color: rgba(255, 244, 236, .024);
    user-select: none;
    transform: rotate(-6deg);
}
@keyframes dn-auth-orb-a {
    0%, 100% { transform: translate3d(0, 0, 0) scale(1); }
    50% { transform: translate3d(-2.5%, 3%, 0) scale(1.04); }
}
@keyframes dn-auth-orb-b {
    0%, 100% { transform: translate3d(0, 0, 0) scale(1); }
    50% { transform: translate3d(3%, -2.5%, 0) scale(1.03); }
}
@media (prefers-reduced-motion: reduce) {
    .dn-auth-atmosphere__glow--a,
    .dn-auth-atmosphere__glow--b {
        animation: none;
    }
}
.dn-auth-brand-panel {
    display: none;
}
.dn-auth-mobile-brand {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: var(--dn-auth-space-3);
    flex-shrink: 0;
}
.dn-auth-mobile-brand__inner {
    display: inline-flex;
    align-items: center;
    gap: .625rem;
}
.dn-auth-mobile-brand__mark {
    width: 1.75rem;
    height: 1.75rem;
    font-size: .78rem;
    border-radius: .375rem;
    box-shadow: inset 0 1px 0 var(--dn-brand-sheen);
}
.dn-auth-mobile-brand__name {
    font-family: "Lexend", "Inter", sans-serif;
    font-weight: 600;
    font-size: 1rem;
    letter-spacing: -0.025em;
    color: rgba(255, 244, 236, .92);
    line-height: 1;
}
.dn-auth-card {
    position: relative;
    z-index: 1;
    background: #ffffff;
    border-radius: var(--dn-auth-radius);
    border: 1px solid rgba(234, 220, 207, .85);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, .9) inset,
        0 24px 48px -28px rgba(var(--dn-charcoal-rgb), .72);
    padding: var(--dn-auth-space-4) var(--dn-auth-space-3) var(--dn-auth-space-3);
    width: 100%;
    max-width: 400px;
    margin-inline: auto;
    margin-block: 0 auto;
    flex-shrink: 0;
}
.dn-auth-head {
    text-align: left;
    margin-bottom: var(--dn-auth-space-3);
}
.dn-auth-card.text-center .dn-auth-head {
    text-align: center;
}
.dn-auth-head__eyebrow {
    margin: 0 0 .375rem;
    font-family: "Inter", sans-serif;
    font-weight: 500;
    font-size: .75rem;
    line-height: 1.3;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--dn-text-muted);
}
.dn-auth-head__mark {
    width: 3rem;
    height: 3rem;
    font-size: 1.25rem;
    border-radius: .625rem;
    margin: 0 auto var(--dn-auth-space-2);
    box-shadow:
        inset 0 1px 0 var(--dn-brand-sheen),
        0 12px 24px -14px rgba(var(--dn-primary-shadow-rgb), .85);
}
.dn-auth-head__title {
    margin: 0 0 .35rem;
    font-family: "Lexend", "Inter", sans-serif;
    font-weight: 700;
    font-size: 1.375rem; /* 22px */
    line-height: 1.25;
    letter-spacing: -0.03em;
    color: var(--dn-charcoal);
}
.dn-auth-head__subtitle {
    margin: 0;
    font-family: "Inter", sans-serif;
    font-weight: 400;
    font-size: .875rem;
    line-height: 1.45;
    letter-spacing: 0;
    color: var(--dn-text-muted);
}
.dn-auth-form .dn-auth-field {
    margin-bottom: var(--dn-auth-space-2);
}
.dn-auth-form .dn-auth-field:last-of-type {
    margin-bottom: var(--dn-auth-space-3);
}
.dn-auth-card .form-label {
    font-family: "Inter", sans-serif;
    font-size: .8125rem; /* 13px */
    font-weight: 500;
    letter-spacing: .005em;
    color: var(--dn-charcoal-soft);
    margin-bottom: .375rem; /* 6px — optical to control */
}
.dn-auth-input {
    position: relative;
}
.dn-auth-input__icon {
    position: absolute;
    left: .875rem; /* 14px */
    top: 50%;
    transform: translateY(-50%);
    font-size: 1rem;
    color: rgba(var(--dn-charcoal-rgb), .36);
    pointer-events: none;
    z-index: 2;
    transition: color .18s ease;
}
.dn-auth-input .form-control {
    padding-left: 2.5rem; /* 40px */
}
.dn-auth-card .form-control {
    height: var(--dn-auth-control-h);
    min-height: var(--dn-auth-control-h);
    padding-top: 0;
    padding-bottom: 0;
    font-size: .9375rem; /* 15px */
    font-weight: 400;
    line-height: 1.4;
    color: var(--dn-charcoal);
    border-radius: var(--dn-auth-radius-sm);
    border: 1px solid #e2d4c6;
    background-color: #fff;
    box-shadow: none;
    transition: border-color .18s ease, box-shadow .18s ease;
}
.dn-auth-card .form-control::placeholder {
    color: rgba(var(--dn-charcoal-rgb), .38);
    font-weight: 400;
    opacity: 1;
}
.dn-auth-card .form-control:hover:not(:focus):not(:disabled) {
    border-color: #d4c2b0;
}
.dn-auth-card .form-control:focus {
    border-color: rgba(var(--dn-primary-rgb), .55);
    box-shadow: 0 0 0 3px rgba(var(--dn-primary-rgb), .14);
    background-color: #fff;
    outline: none;
}
.dn-auth-input:focus-within .dn-auth-input__icon {
    color: var(--dn-primary);
}
.dn-auth-submit {
    height: var(--dn-auth-control-h);
    min-height: var(--dn-auth-control-h);
    border-radius: var(--dn-auth-radius-sm);
    font-family: "Lexend", "Inter", sans-serif;
    font-weight: 600;
    font-size: .9375rem;
    letter-spacing: .01em;
    border: 1px solid transparent;
    box-shadow: 0 1px 0 rgba(255, 255, 255, .18) inset;
    transition: background-color .18s ease, border-color .18s ease, box-shadow .18s ease, filter .18s ease;
}
.dn-auth-submit:hover {
    filter: brightness(1.04);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, .2) inset,
        0 8px 20px -12px rgba(var(--dn-primary-shadow-rgb), .75);
}
.dn-auth-submit:active {
    filter: brightness(.97);
    box-shadow: 0 1px 0 rgba(255, 255, 255, .12) inset;
}
.dn-auth-submit:focus-visible {
    outline: none;
    box-shadow:
        0 1px 0 rgba(255, 255, 255, .18) inset,
        0 0 0 3px rgba(var(--dn-primary-rgb), .22);
}
.dn-auth-footer {
    text-align: center;
    margin-top: var(--dn-auth-space-2);
    padding-top: var(--dn-auth-space-2);
    border-top: 1px solid rgba(234, 220, 207, .65);
}
.dn-auth-footer-link {
    font-size: .8125rem;
    font-weight: 500;
    color: var(--dn-text-muted);
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: color .18s ease, border-color .18s ease;
}
.dn-auth-footer-link:hover {
    color: var(--dn-primary-strong);
    border-bottom-color: rgba(var(--dn-primary-rgb), .3);
}
@media (min-width: 992px) {
    .dn-auth-page:not(.dn-auth-page--2fa-setup) {
        display: grid;
        grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
        grid-template-rows: minmax(100vh, auto);
        align-items: stretch;
        padding: 0;
        overflow: hidden;
    }
    @supports (height: 100dvh) {
        .dn-auth-page:not(.dn-auth-page--2fa-setup) {
            grid-template-rows: minmax(100dvh, auto);
        }
    }
    .dn-auth-page:not(.dn-auth-page--2fa-setup) .dn-auth-brand-panel {
        display: flex;
        position: relative;
        z-index: 1;
        grid-column: 1;
        grid-row: 1;
        align-items: center;
        min-height: 100%;
        padding:
            max(3rem, env(safe-area-inset-top, 0px) + 2rem)
            clamp(2rem, 4.5vw, 4rem)
            max(3rem, env(safe-area-inset-bottom, 0px) + 2rem)
            clamp(2.25rem, 5.5vw, 5rem);
        overflow: hidden;
        background-color: var(--dn-auth-bg);
    }
    .dn-auth-page:not(.dn-auth-page--2fa-setup) .dn-auth-mobile-brand {
        display: none;
    }
    .dn-auth-page:not(.dn-auth-page--2fa-setup) .dn-auth-card {
        grid-column: 2;
        grid-row: 1;
        display: flex;
        flex-direction: column;
        justify-content: center;
        width: 100%;
        max-width: none;
        min-height: 100%;
        margin: 0;
        border-radius: 0;
        border: none;
        border-left: 1px solid rgba(234, 220, 207, .55);
        box-shadow: none;
        padding:
            max(3rem, env(safe-area-inset-top, 0px) + 2rem)
            clamp(2rem, 5vw, 4.5rem)
            max(3rem, env(safe-area-inset-bottom, 0px) + 2rem);
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }
    .dn-auth-page:not(.dn-auth-page--2fa-setup) .dn-auth-card > * {
        width: 100%;
        max-width: 24rem; /* 384px */
        margin-inline: auto;
    }
    .dn-auth-brand-panel__inner {
        position: relative;
        z-index: 1;
        max-width: 22rem;
    }
    .dn-auth-brand-panel__mark {
        width: 2.75rem; /* 44px */
        height: 2.75rem;
        font-size: 1.2rem;
        border-radius: .625rem;
        margin-bottom: var(--dn-auth-space-3);
        box-shadow:
            inset 0 1px 0 var(--dn-brand-sheen),
            0 14px 28px -16px rgba(var(--dn-primary-shadow-rgb), .8);
    }
    .dn-auth-brand-panel__eyebrow {
        margin: 0 0 .5rem;
        font-family: "Inter", sans-serif;
        font-weight: 500;
        font-size: .75rem;
        line-height: 1.3;
        letter-spacing: .04em;
        text-transform: uppercase;
        color: rgba(255, 244, 236, .48);
    }
    .dn-auth-brand-panel__title {
        margin: 0 0 .75rem;
        font-family: "Lexend", "Inter", sans-serif;
        font-weight: 700;
        font-size: clamp(1.75rem, 2.8vw, 2.35rem);
        line-height: 1.1;
        letter-spacing: -0.035em;
        color: rgba(255, 244, 236, .96);
    }
    .dn-auth-brand-panel__tagline {
        margin: 0 0 var(--dn-auth-space-3);
        font-family: "Inter", sans-serif;
        font-weight: 400;
        font-size: .9375rem;
        line-height: 1.55;
        color: rgba(255, 244, 236, .58);
        max-width: 19rem;
    }
    .dn-auth-brand-panel__features {
        list-style: none;
        margin: 0;
        padding: 0;
        display: flex;
        flex-direction: column;
        gap: .625rem;
    }
    .dn-auth-brand-panel__features li {
        position: relative;
        padding-left: 1rem;
        font-family: "Inter", sans-serif;
        font-size: .8125rem;
        font-weight: 400;
        line-height: 1.4;
        color: rgba(255, 244, 236, .5);
    }
    .dn-auth-brand-panel__features li::before {
        content: "";
        position: absolute;
        left: 0;
        top: .55em;
        width: .3125rem;
        height: .3125rem;
        border-radius: 50%;
        background: rgba(var(--dn-primary-rgb), .7);
    }
}
.dn-auth-card--2fa {
    max-width: 440px;
}
.dn-auth-card--2fa .dn-auth-head__title,
.dn-auth-card--2fa-wide .dn-auth-head__title {
    font-size: 1.35rem;
}
.dn-auth-card--2fa-wide {
    max-width: 460px;
}
.dn-2fa-lede {
    font-size: .9rem;
    line-height: 1.5;
    color: var(--tblr-secondary-color);
}
.dn-2fa-notice {
    background: var(--dn-surface-soft);
    border: 1px solid var(--dn-border-soft);
    border-left: 3px solid var(--dn-primary);
    border-radius: .55rem;
    padding: .85rem 1rem;
    font-size: .875rem;
    line-height: 1.45;
    color: var(--tblr-body-color);
    margin-bottom: 1rem;
}
.dn-2fa-steps {
    margin: 0 0 1.15rem;
    padding-left: 1.2rem;
    font-size: .875rem;
    line-height: 1.45;
    color: var(--tblr-secondary-color);
}
.dn-2fa-steps li + li {
    margin-top: .45rem;
}
.dn-2fa-qr-wrap {
    display: flex;
    justify-content: center;
    margin-bottom: .85rem;
}
.dn-2fa-qr {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: .65rem;
    background: #ffffff;
    border: 1px solid var(--dn-border-soft);
    border-radius: .75rem;
    box-shadow: 0 8px 20px -16px rgba(var(--dn-charcoal-rgb), .55);
}
.dn-2fa-qr img {
    display: block;
    width: 168px;
    height: 168px;
    max-width: 100%;
}
.dn-2fa-manual {
    text-align: center;
    margin-bottom: 1.15rem;
}
.dn-2fa-manual-label {
    display: block;
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .02em;
    text-transform: uppercase;
    color: var(--tblr-secondary-color);
    margin-bottom: .35rem;
    opacity: .85;
}
.dn-2fa-manual-secret {
    display: inline-block;
    max-width: 100%;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
    font-size: .78rem;
    letter-spacing: .05em;
    word-break: break-all;
    color: var(--tblr-secondary-color);
    background: var(--dn-surface-muted);
    border: 1px solid var(--dn-border-soft);
    border-radius: .45rem;
    padding: .45rem .7rem;
    user-select: all;
}
.dn-2fa-token input,
.dn-2fa-token .form-control {
    letter-spacing: .28em;
    font-variant-numeric: tabular-nums;
}
.dn-2fa-actions {
    display: flex;
    flex-direction: column;
    gap: .75rem;
}
.dn-2fa-backup-codes {
    list-style: none;
    margin: 0 0 1.5rem;
    padding: 0;
    display: grid;
    gap: .45rem;
}
.dn-2fa-backup-codes li {
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
    font-size: .95rem;
    letter-spacing: .08em;
    text-align: center;
    padding: .7rem .85rem;
    color: var(--tblr-body-color);
    background: var(--dn-surface-muted);
    border: 1px solid var(--dn-border-soft);
    border-radius: .5rem;
    user-select: all;
}
.dn-2fa-footer-links {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: .75rem 1.25rem;
    margin-top: 1rem;
}

/* ---------- Setup 2FA: cartão compacto centrado (sem painel de marca) ---------- */
.dn-auth-page--2fa-setup {
    align-items: center;
    justify-content: flex-start;
    padding: 1.25rem 1.25rem;
    padding-top: max(1.25rem, env(safe-area-inset-top, 0px) + 1rem);
    padding-bottom: max(1.25rem, env(safe-area-inset-bottom, 0px));
}
.dn-auth-page--2fa-setup .dn-auth-brand-panel,
.dn-auth-page--2fa-setup .dn-auth-mobile-brand {
    display: none;
}
.dn-auth-page--2fa-setup .dn-auth-card {
    margin-block: auto;
}
.dn-auth-card--2fa-setup {
    max-width: 520px;
    padding: 1.35rem 1.5rem 1.25rem;
}
.dn-2fa-setup-head {
    text-align: center;
    margin-bottom: .65rem;
}
.dn-2fa-setup-head .dn-auth-head__eyebrow {
    margin-bottom: .45rem;
}
.dn-2fa-setup-title {
    margin: 0 0 .2rem;
    font-family: "Lexend", "Inter", sans-serif;
    font-size: 1.15rem;
    font-weight: 700;
    line-height: 1.25;
    letter-spacing: -0.025em;
}
.dn-2fa-setup-lede {
    margin: 0;
    font-size: .8125rem;
    line-height: 1.35;
}
.dn-2fa-steps--compact {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    align-content: center;
    justify-content: center;
    gap: .2rem .55rem;
    list-style: none;
    margin: 0 0 .85rem;
    padding: 0;
    font-size: .75rem;
    line-height: 1.3;
    color: var(--tblr-secondary-color);
}
.dn-2fa-steps--compact li {
    display: inline-flex;
    align-items: center;
    margin: 0;
    min-height: 1.3rem;
    white-space: nowrap;
}
.dn-2fa-steps--compact li + li::before {
    content: "·";
    margin-right: .55rem;
    opacity: .45;
    line-height: 1;
}
.dn-2fa-step-n {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 1.1rem;
    height: 1.1rem;
    margin-right: .15rem;
    border-radius: 50%;
    background: var(--dn-surface-muted);
    border: 1px solid var(--dn-border-soft);
    font-size: .65rem;
    font-weight: 700;
    line-height: 1;
    color: var(--tblr-body-color);
}
.dn-auth-card--2fa-setup .dn-2fa-notice,
.dn-2fa-notice--compact {
    padding: .45rem .65rem;
    font-size: .78rem;
    line-height: 1.35;
    margin-bottom: .65rem;
    border-radius: .45rem;
}
.dn-2fa-setup-grid {
    display: flex;
    flex-direction: column;
    gap: .75rem;
}
.dn-2fa-setup-scan {
    display: flex;
    flex-direction: column;
    align-items: center;
}
.dn-auth-card--2fa-setup .dn-2fa-qr-wrap {
    margin-bottom: .5rem;
}
.dn-auth-card--2fa-setup .dn-2fa-qr {
    padding: .4rem;
    border-radius: .55rem;
    box-shadow: 0 4px 12px -10px rgba(var(--dn-charcoal-rgb), .5);
}
.dn-auth-card--2fa-setup .dn-2fa-qr img {
    width: 132px;
    height: 132px;
}
.dn-auth-card--2fa-setup .dn-2fa-manual {
    margin-bottom: 0;
    width: 100%;
}
.dn-auth-card--2fa-setup .dn-2fa-manual-label {
    margin-bottom: .2rem;
    font-size: .65rem;
}
.dn-auth-card--2fa-setup .dn-2fa-manual-secret {
    display: block;
    width: 100%;
    box-sizing: border-box;
    font-size: .7rem;
    letter-spacing: .04em;
    padding: .35rem .5rem;
    text-align: center;
}
.dn-2fa-setup-confirm .dn-2fa-token {
    margin-bottom: .65rem;
}
.dn-2fa-setup-confirm .form-label {
    margin-bottom: .25rem;
    font-size: .8125rem;
}
.dn-2fa-setup-confirm .form-control-lg {
    min-height: 2.5rem;
    padding: .45rem .75rem;
    font-size: 1.05rem;
}
.dn-2fa-token-hint {
    margin-top: .25rem;
    font-size: .72rem;
    line-height: 1.3;
}
.dn-auth-card--2fa-setup .dn-2fa-actions {
    gap: .2rem;
}
.dn-auth-card--2fa-setup .dn-2fa-actions .btn-primary {
    padding: .55rem .85rem;
}
.dn-2fa-cancel {
    padding-top: .15rem !important;
    padding-bottom: .15rem !important;
    font-size: .8125rem;
}

@media (min-width: 992px) {
    .dn-auth-page--2fa-setup {
        padding: 1.5rem 1.5rem;
        padding-top: max(1.5rem, env(safe-area-inset-top, 0px) + 1.15rem);
        padding-bottom: max(1.5rem, env(safe-area-inset-bottom, 0px));
    }
    .dn-auth-card--2fa-setup {
        max-width: 640px;
        padding: 1.5rem 1.65rem 1.35rem;
    }
    .dn-2fa-setup-head {
        margin-bottom: .55rem;
    }
    .dn-2fa-setup-title {
        font-size: 1.2rem;
    }
    .dn-2fa-steps--compact {
        margin-bottom: .95rem;
        gap: .25rem .75rem;
        font-size: .78rem;
    }
    .dn-2fa-setup-grid {
        display: grid;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
        gap: 1.15rem 1.5rem;
        align-items: start;
    }
    .dn-2fa-setup-scan {
        padding-top: .15rem;
    }
    .dn-auth-card--2fa-setup .dn-2fa-qr img {
        width: 148px;
        height: 148px;
    }
    .dn-2fa-setup-confirm {
        display: flex;
        flex-direction: column;
        min-height: 100%;
    }
    .dn-2fa-setup-form {
        display: flex;
        flex-direction: column;
        flex: 1;
    }
    .dn-2fa-setup-confirm .dn-2fa-actions {
        margin-top: auto;
    }
}

@media (max-width: 991.98px) {
    .dn-auth-card--2fa-setup .dn-2fa-qr img {
        width: 124px;
        height: 124px;
    }
}

@media (max-width: 575.98px) {
    .dn-auth-page {
        padding: var(--dn-auth-space-2);
        padding-top: max(var(--dn-auth-space-2), env(safe-area-inset-top, 0px) + .75rem);
        padding-bottom: max(var(--dn-auth-space-2), env(safe-area-inset-bottom, 0px));
    }
    .dn-auth-page--2fa-setup {
        padding: .85rem .85rem;
        padding-top: max(.85rem, env(safe-area-inset-top, 0px) + .55rem);
        padding-bottom: max(.85rem, env(safe-area-inset-bottom, 0px));
    }
    .dn-auth-mobile-brand {
        margin-bottom: var(--dn-auth-space-2);
    }
    .dn-auth-atmosphere__mark {
        font-size: clamp(8rem, 40vw, 13rem);
    }
    .dn-auth-card {
        padding: var(--dn-auth-space-3) var(--dn-auth-space-2) var(--dn-auth-space-2);
        border-radius: .875rem;
    }
    .dn-auth-head {
        margin-bottom: var(--dn-auth-space-3);
    }
    .dn-auth-head__title {
        font-size: 1.25rem;
    }
    .dn-auth-card--2fa,
    .dn-auth-card--2fa-wide {
        padding: var(--dn-auth-space-3) var(--dn-auth-space-2);
    }
    .dn-auth-card--2fa-setup {
        padding: 1rem .95rem .9rem;
        max-width: 100%;
    }
    .dn-2fa-setup-title {
        font-size: 1.05rem;
    }
    .dn-2fa-setup-lede {
        font-size: .75rem;
    }
    .dn-2fa-steps--compact {
        gap: .15rem .4rem;
        font-size: .7rem;
        margin-bottom: .65rem;
    }
    .dn-2fa-steps--compact li {
        white-space: normal;
    }
    .dn-auth-card--2fa-setup .dn-2fa-notice,
    .dn-2fa-notice--compact {
        padding: .4rem .55rem;
        font-size: .72rem;
        margin-bottom: .55rem;
    }
    .dn-2fa-qr {
        padding: .5rem;
    }
    .dn-auth-card--2fa-setup .dn-2fa-qr {
        padding: .3rem;
    }
    .dn-2fa-qr img {
        width: 148px;
        height: 148px;
    }
    .dn-auth-card--2fa-setup .dn-2fa-qr img {
        width: 120px;
        height: 120px;
    }
    .dn-2fa-token-hint {
        display: none;
    }
}

/* ---------- Portal do cliente ---------- */
.dn-portal-body {
    background: var(--dn-surface-muted);
    min-height: 100vh;
}
.dn-portal-shell {
    max-width: 720px;
}
.dn-portal-header {
    background: var(--dn-topbar-bg);
    padding: .85rem 1rem;
    color: #fff;
    position: sticky;
    top: 0;
    z-index: 1030;
}
.dn-portal-brand {
    display: flex;
    align-items: center;
    gap: .7rem;
    min-width: 0;
}
.dn-portal-brand-mark {
    width: 32px;
    height: 32px;
    font-size: .9rem;
}
.dn-portal-brand-text {
    display: flex;
    flex-direction: column;
    min-width: 0;
    line-height: 1.15;
}
.dn-portal-brand-name {
    font-weight: 700;
    font-size: .95rem;
    color: #fff;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.dn-portal-brand-sub {
    font-size: .68rem;
    font-weight: 500;
    color: rgba(255, 244, 236, .62);
    letter-spacing: .02em;
}
.dn-portal-brand-empresa {
    color: rgba(255, 244, 236, .9);
    font-size: .78rem;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.dn-portal-sair {
    background: rgba(255, 255, 255, .08);
    border: 1px solid rgba(255, 255, 255, .18);
    color: rgba(255, 255, 255, .9);
    font-weight: 500;
}
.dn-portal-sair:hover {
    background: rgba(255, 255, 255, .14);
    border-color: rgba(255, 255, 255, .28);
    color: #fff;
}
.dn-portal-main {
    padding: 1.25rem 1rem 1.5rem;
}
.dn-portal-nav-top {
    background: #fff;
    border-bottom: 1px solid var(--dn-border-soft);
}
.dn-portal-nav-top .nav-link {
    color: var(--dn-text-muted);
    font-weight: 500;
    font-size: .8rem;
    border-radius: 0;
    padding: .85rem .9rem .75rem;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
}
.dn-portal-nav-top .nav-link.active {
    color: var(--tblr-primary);
    background: transparent;
    border-bottom-color: var(--tblr-primary);
    font-weight: 600;
}
.dn-portal-nav-top .nav-link:hover {
    color: var(--tblr-primary);
    background: transparent;
}
.dn-portal-nav-top .nav-link .icon {
    width: 1rem;
    height: 1rem;
    vertical-align: -0.15rem;
}
.dn-portal-nav-bottom {
    display: none;
}
.dn-portal-intro {
    margin-bottom: 1.15rem;
}
.dn-portal-greeting {
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--dn-charcoal);
    margin: 0 0 .25rem;
    line-height: 1.3;
}
.dn-portal-lede,
.dn-portal-page-lede {
    color: var(--dn-text-muted);
    font-size: .875rem;
    margin: 0;
    line-height: 1.45;
}
.dn-portal-cta {
    margin-bottom: 1.5rem;
    padding-top: .9rem;
    padding-bottom: .9rem;
    font-weight: 600;
    box-shadow: 0 10px 24px -16px rgba(var(--dn-primary-shadow-rgb), .85);
}
.dn-portal-cta .icon {
    width: 1.15rem;
    height: 1.15rem;
    vertical-align: -0.2rem;
}
.dn-portal-section {
    margin-bottom: 1.25rem;
}
.dn-portal-section-head,
.dn-portal-page-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: .75rem;
    margin-bottom: .55rem;
}
.dn-portal-section-title,
.dn-portal-page-title {
    font-size: .95rem;
    font-weight: 700;
    color: var(--dn-charcoal);
    margin: 0;
}
.dn-portal-page-title {
    font-size: 1.15rem;
    margin-bottom: .2rem;
}
.dn-portal-page-head {
    align-items: flex-start;
    margin-bottom: 1rem;
}
.dn-portal-section-link {
    font-size: .78rem;
    font-weight: 600;
    color: var(--tblr-primary);
    text-decoration: none;
    white-space: nowrap;
}
.dn-portal-section-link:hover {
    color: var(--dn-link-hover);
    text-decoration: underline;
}
.dn-portal-panel {
    border-color: var(--dn-border-soft);
    box-shadow: 0 8px 20px -18px rgba(var(--dn-charcoal-rgb), .35);
    overflow: hidden;
}
.dn-portal-alert-duplicado {
    font-size: .95rem;
    line-height: 1.4;
}
.dn-portal-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: .75rem;
    padding: .8rem 1rem;
}
.dn-portal-row-main {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: .3rem;
}
.dn-portal-row-title {
    font-weight: 600;
    font-size: .875rem;
    color: var(--dn-charcoal);
}
.dn-portal-row-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .35rem .5rem;
}
.dn-portal-row-side {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .15rem;
    font-size: .75rem;
    color: var(--tblr-secondary);
    flex-shrink: 0;
    padding-top: .1rem;
}
.dn-portal-row-valor {
    font-weight: 600;
    font-size: .8125rem;
    color: var(--dn-charcoal);
}
.dn-portal-row-validity {
    font-size: .75rem;
    line-height: 1.35;
    color: var(--dn-text-muted, var(--tblr-secondary));
}
.dn-portal-row-validity-soon {
    color: var(--tblr-warning);
    font-weight: 600;
}
/* Past payment-guide validity: muted only — portal does not track payment. */
.dn-portal-row .dn-status-badge-muted {
    opacity: .78;
}
.dn-portal-row[class*="dn-portal-row-status-"] {
    position: relative;
}
.dn-portal-row[class*="dn-portal-row-status-"]::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 3px;
    border-radius: 0;
}
.dn-portal-row-status-pendente::before {
    background: rgba(var(--tblr-warning-rgb, 247, 183, 49), .95);
}
.dn-portal-row-status-aceite::before {
    background: rgba(var(--tblr-success-rgb, 47, 179, 68), .95);
}
.dn-portal-row-status-nao_aceite::before {
    background: rgba(var(--tblr-danger-rgb, 214, 57, 57), .95);
}
.dn-portal-row-status-disponivel::before {
    background: rgba(var(--tblr-secondary-rgb, 108, 117, 125), .85);
}
.dn-portal-row-status-proxima::before {
    background: rgba(var(--tblr-warning-rgb, 247, 183, 49), .95);
}
.dn-portal-row-status-vencida::before {
    background: rgba(var(--tblr-secondary-rgb, 108, 117, 125), .55);
}
.dn-portal-row-note {
    font-size: .75rem;
    color: var(--dn-text-muted);
    line-height: 1.35;
    max-width: 100%;
}
.dn-portal-row .dn-status-badge {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
}
.dn-portal-row .dn-status-dot {
    width: .4rem;
    height: .4rem;
    border-radius: 50%;
    background: currentColor;
    flex-shrink: 0;
}
.dn-portal-empty {
    padding: 1rem 1.1rem;
    color: var(--dn-text-muted);
    font-size: .875rem;
}
.dn-portal-empty-lg {
    padding: 2rem 1.25rem;
    text-align: center;
}
.dn-portal-precisa {
    margin-bottom: 1.25rem;
}
.dn-portal-precisa .dn-portal-panel {
    border-color: #eadccf;
    background: #fffdf8;
}
.dn-portal-precisa-row {
    align-items: center;
}

@media (max-width: 767.98px) {
    .dn-portal-nav-top {
        display: none;
    }
    .dn-portal-nav-bottom {
        display: grid;
        grid-template-columns: repeat(4, 1fr);
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 1030;
        background: #fff;
        border-top: 1px solid var(--dn-border-soft);
        padding: .35rem .25rem calc(.35rem + env(safe-area-inset-bottom, 0px));
        box-shadow: 0 -8px 24px -18px rgba(var(--dn-charcoal-rgb), .45);
    }
    .dn-portal-nav-item {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: .15rem;
        padding: .45rem .2rem;
        color: var(--dn-text-muted);
        text-decoration: none;
        font-size: .65rem;
        font-weight: 600;
        border-radius: .45rem;
    }
    .dn-portal-nav-item .icon {
        width: 1.2rem;
        height: 1.2rem;
    }
    .dn-portal-nav-item.active {
        color: var(--tblr-primary);
        background: rgba(var(--tblr-primary-rgb), .08);
    }
    .dn-portal-main {
        padding-bottom: calc(4.75rem + env(safe-area-inset-bottom, 0px));
    }
}

/* ---------- Site público ---------- */
.dn-navbar { background: var(--dn-topbar-bg) !important; }
.dn-hero {
    background: var(--dn-hero-bg);
    color: #fff;
    padding: 6rem 0 8rem;
}
.dn-hero h1 { color: #fff; }
.dn-hero .lead { color: rgba(255, 244, 236, .82); }
.dn-pill {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    background: rgba(255, 255, 255, .08);
    color: #fff1e4;
    border-radius: 999px;
    padding: .35rem .9rem;
    font-size: .8rem;
    font-weight: 600;
    margin-bottom: 1.25rem;
}
.dn-feature-icon {
    width: 56px;
    height: 56px;
    border-radius: 1rem;
    background: rgba(var(--tblr-primary-rgb), .12);
    color: var(--tblr-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    margin: 0 auto 1rem;
}
.dn-pricing-card {
    border-radius: 1.1rem;
    transition: transform .15s ease, box-shadow .15s ease;
}
.dn-pricing-card:hover { transform: translateY(-4px); }
.dn-pricing-card.dn-pricing-featured {
    border-color: var(--tblr-primary) !important;
    box-shadow: 0 20px 40px -12px rgba(var(--dn-primary-shadow-rgb), .35);
}

/* ---------- Page loader (padrão Tabler: overlay + progress-bar-indeterminate) ---------- */
.dn-page-loader {
    position: fixed;
    inset: 0;
    z-index: 2000;
    display: flex;
    align-items: center;
    justify-content: center;
    background:
        radial-gradient(circle at top, rgba(var(--tblr-primary-rgb), .08), transparent 35%),
        var(--tblr-bg-surface, var(--tblr-body-bg, #fff));
    transition: opacity .25s ease;
}
.dn-page-loader .dn-brand-mark {
    width: 48px;
    height: 48px;
    font-size: 1.3rem;
    margin-inline: auto;
}
.dn-page-loader.is-hidden {
    opacity: 0;
    pointer-events: none;
}
/* Rede de segurança: mesmo que o JavaScript falhe ou demore (rede móvel lenta, app instalada),
   o ecrã de carregamento desaparece sozinho ao fim de alguns segundos. */
.dn-page-loader {
    animation: dn-loader-fim .3s ease 5s forwards;
}
@keyframes dn-loader-fim {
    to { opacity: 0; visibility: hidden; pointer-events: none; }
}
.dn-page-loader--bar {
    inset: 0 0 auto;
    height: auto;
    display: block;
    background: transparent;
}
.dn-page-loader--bar .progress {
    border-radius: 0;
}

.dn-page-loader--bar .progress-bar {
    background-color: var(--tblr-primary);
}

/* Toasts Tabler: header colorido + body + barra de progresso */
.toast-container.position-fixed {
    z-index: 1100;
}
.toast.shadow {
    min-width: 320px;
    background: var(--tblr-bg-surface);
    border: 1px solid var(--tblr-border-color);
    box-shadow: 0 20px 40px -28px rgba(var(--dn-charcoal-rgb), .75) !important;
}

/* Ficha do cliente: tabela de credenciais com scroll interno (8–9 linhas) */
.dn-credenciais-scroll {
    max-height: 28rem;
    overflow: auto;
}

/* ---------- Tabelas de listagem: linhas arejadas + hover ---------- */
.card-table thead th,
.table thead th {
    font-size: .75rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--tblr-secondary);
    font-weight: 600;
    border-bottom-width: 1px;
}

.table > :not(caption) > * > * {
    padding-top: 1rem;
    padding-bottom: 1rem;
    border-bottom-color: var(--tblr-border-color);
}

/*
 * Tabler 1.4 pinta o hover com box-shadow inset via --tblr-table-bg-state,
 * alimentado por --tblr-table-hover-bg (rgba(emphasis, .075) por omissão).
 * --tblr-emphasis-color-rgb é escuro em light e branco em dark, por isso o
 * realce funciona nos dois temas sem cinza claro sólido.
 */
.table {
    --tblr-table-hover-bg: rgba(var(--tblr-emphasis-color-rgb), .08);
}

.btn-primary {
    --bs-btn-bg: var(--tblr-primary);
    --bs-btn-border-color: var(--tblr-primary);
    --bs-btn-hover-bg: var(--dn-primary-strong);
    --bs-btn-hover-border-color: var(--dn-primary-strong);
    --bs-btn-active-bg: var(--dn-link-hover);
    --bs-btn-active-border-color: var(--dn-link-hover);
    --bs-btn-disabled-bg: var(--tblr-primary);
    --bs-btn-disabled-border-color: var(--tblr-primary);
    box-shadow: 0 10px 24px -18px rgba(var(--dn-primary-shadow-rgb), .9);
}

.btn-outline-primary {
    --bs-btn-color: var(--tblr-primary);
    --bs-btn-border-color: rgba(var(--tblr-primary-rgb), .38);
    --bs-btn-hover-bg: rgba(var(--tblr-primary-rgb), .1);
    --bs-btn-hover-border-color: var(--tblr-primary);
    --bs-btn-hover-color: var(--tblr-primary);
    --bs-btn-active-bg: var(--tblr-primary);
    --bs-btn-active-border-color: var(--tblr-primary);
    --bs-btn-active-color: #fff;
}

.btn-link,
.nav-link.active,
.nav-link:hover,
.text-primary {
    color: var(--tblr-primary) !important;
}

.badge.bg-primary-lt,
.bg-primary-lt {
    background: rgba(var(--tblr-primary-rgb), .14) !important;
    color: var(--tblr-primary) !important;
}

.bg-primary-subtle {
    background: rgba(var(--tblr-primary-rgb), .12) !important;
}

.text-primary-emphasis {
    color: var(--dn-link-hover) !important;
}

.nav-tabs .nav-link {
    color: var(--tblr-secondary-color);
    border-bottom-color: transparent;
}

.nav-tabs .nav-link:hover,
.nav-tabs .nav-link:focus {
    color: var(--tblr-primary);
    background: rgba(var(--tblr-primary-rgb), .06);
}

.nav-tabs .nav-link.active,
.nav-tabs .nav-item.show .nav-link {
    color: var(--tblr-primary);
    border-bottom-color: var(--tblr-primary);
    background: linear-gradient(180deg, rgba(var(--tblr-primary-rgb), .08), rgba(var(--tblr-primary-rgb), 0));
}

/* Ficha do cliente: Tabler .card-header-tabs { flex:1; margin:-cap } alarga
   o scroll para a esquerda e recua a navbar. Sem overflow-x:auto — isso
   força overflow-y:auto e mostra uma scrollbar vertical (▲●▼) à direita
   dos tabs, parecida com ti-selector. */
[data-dn-cliente-tabs] {
    min-width: 0;
    max-width: 100%;
    overflow-x: clip;
}
[data-dn-cliente-tabs] > .card-header {
    min-width: 0;
    max-width: 100%;
    overflow: hidden;
    /* Padding horizontal/topo a 0: os tabs ficam edge-to-edge sem
       precisarem das margins negativas do Tabler (que geravam overflow). */
    padding-top: 0;
    padding-left: 0;
    padding-right: 0;
}
[data-dn-cliente-tabs] .card-header-tabs {
    flex: 1 1 auto;
    flex-wrap: wrap;
    min-width: 0;
    max-width: 100%;
    margin-top: 0;
    margin-left: 0;
    margin-right: 0;
}

/* Mobile: barra de tabs sticky ao scroll da ficha */
@media (max-width: 767.98px) {
    [data-dn-cliente-tabs] > .card-header {
        position: sticky;
        top: 0;
        z-index: 20;
        background: var(--tblr-bg-surface, #fff);
        box-shadow: 0 1px 0 rgba(0, 0, 0, 0.06);
        overflow-x: auto;
        overflow-y: hidden;
        -webkit-overflow-scrolling: touch;
    }
    [data-dn-cliente-tabs] .card-header-tabs {
        flex-wrap: nowrap;
        width: max-content;
        min-width: 100%;
    }
    [data-dn-cliente-tabs] .card-header-tabs .nav-link {
        white-space: nowrap;
    }
}

[data-dn-cliente-tabs] .nav-tabs .nav-link {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    padding: .72rem .95rem .68rem;
    font-weight: 500;
    font-size: .8125rem;
    line-height: 1.2;
    border-top: 0;
    border-left: 0;
    border-right: 0;
}
[data-dn-cliente-tabs] .dn-client-tab-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.7rem;
    height: 1.7rem;
    border-radius: .45rem;
    flex-shrink: 0;
    font-size: 1rem;
    line-height: 1;
    transition: background-color .15s ease, color .15s ease;
}
[data-dn-cliente-tabs] .dn-client-tab-icon i {
    font-size: 1rem;
    line-height: 1;
}
[data-dn-cliente-tabs] .dn-client-tab-label {
    font-weight: 600;
}
[data-dn-cliente-tabs] .dn-client-tab-count {
    margin-left: .15rem;
    min-width: 1.25rem;
    padding: .15rem .4rem;
    font-size: .65rem;
    font-weight: 700;
    border-radius: 999px;
    background: var(--dn-surface-muted) !important;
    color: var(--dn-text-muted) !important;
}
[data-dn-cliente-tabs] .dn-client-tab-count-alert {
    background: #fff3cd !important;
    color: #b54708 !important;
}
[data-dn-cliente-tabs] .nav-link.active .dn-client-tab-count-alert {
    background: #f59f00 !important;
    color: #fff !important;
}

[data-dn-cliente-tabs] .nav-link[data-dn-tab-id="ficha"] .dn-client-tab-icon {
    background: rgba(var(--tblr-primary-rgb), .14);
    color: var(--tblr-primary) !important;
}
[data-dn-cliente-tabs] .nav-link[data-dn-tab-id="credenciais"] .dn-client-tab-icon {
    background: rgba(112, 72, 232, .14);
    color: #7048e8 !important;
}
[data-dn-cliente-tabs] .nav-link[data-dn-tab-id="obrigacoes"] .dn-client-tab-icon {
    background: rgba(245, 159, 0, .16);
    color: #f59f00 !important;
}
[data-dn-cliente-tabs] .nav-link[data-dn-tab-id="documentos"] .dn-client-tab-icon {
    background: rgba(66, 153, 225, .16);
    color: #2b6cb0 !important;
}
[data-dn-cliente-tabs] .nav-link[data-dn-tab-id="guias"] .dn-client-tab-icon {
    background: rgba(12, 166, 120, .14);
    color: #0ca678 !important;
}
[data-dn-cliente-tabs] .nav-link[data-dn-tab-id="fecho"] .dn-client-tab-icon {
    background: rgba(190, 75, 219, .14);
    color: #ae3ec9 !important;
}
[data-dn-cliente-tabs] .nav-link[data-dn-tab-id="ppc"] .dn-client-tab-icon {
    background: rgba(21, 170, 191, .16);
    color: #0c8599 !important;
}
[data-dn-cliente-tabs] .nav-link[data-dn-tab-id="planos"] .dn-client-tab-icon {
    background: rgba(66, 99, 235, .14);
    color: #4263eb !important;
}

[data-dn-cliente-tabs] .nav-link.active[data-dn-tab-id="ficha"] .dn-client-tab-icon {
    background: var(--tblr-primary);
    color: #fff !important;
}
[data-dn-cliente-tabs] .nav-link.active[data-dn-tab-id="credenciais"] .dn-client-tab-icon {
    background: #7048e8;
    color: #fff !important;
}
[data-dn-cliente-tabs] .nav-link.active[data-dn-tab-id="obrigacoes"] .dn-client-tab-icon {
    background: #f59f00;
    color: #fff !important;
}
[data-dn-cliente-tabs] .nav-link.active[data-dn-tab-id="documentos"] .dn-client-tab-icon {
    background: #4299e1;
    color: #fff !important;
}
[data-dn-cliente-tabs] .nav-link.active[data-dn-tab-id="guias"] .dn-client-tab-icon {
    background: #0ca678;
    color: #fff !important;
}
[data-dn-cliente-tabs] .nav-link.active[data-dn-tab-id="fecho"] .dn-client-tab-icon {
    background: #ae3ec9;
    color: #fff !important;
}
[data-dn-cliente-tabs] .nav-link.active[data-dn-tab-id="ppc"] .dn-client-tab-icon {
    background: #15aabf;
    color: #fff !important;
}
[data-dn-cliente-tabs] .nav-link.active[data-dn-tab-id="planos"] .dn-client-tab-icon {
    background: #4263eb;
    color: #fff !important;
}

[data-bs-theme="dark"] [data-dn-cliente-tabs] .dn-client-tab-count {
    background: rgba(255, 244, 236, .1) !important;
    color: var(--dn-text-muted) !important;
}
[data-bs-theme="dark"] [data-dn-cliente-tabs] .dn-client-tab-count-alert {
    background: rgba(245, 159, 0, .22) !important;
    color: #ffc078 !important;
}

.pagination .page-link,
.list-group-item.active,
.active > .page-link {
    --bs-pagination-active-bg: var(--tblr-primary);
    --bs-pagination-active-border-color: var(--tblr-primary);
}

.table-hover > tbody > tr:hover > * {
    --tblr-table-bg-state: var(--tblr-table-hover-bg);
}

/* Toast: barra de progresso (5s) — pausa no hover via animation-play-state */
@keyframes dn-toast-shrink {
    from { width: 100%; }
    to { width: 0%; }
}
.dn-toast-progress {
    width: 100%;
    flex: 0 0 auto;
    transition: none;
}
.toast > .progress {
    height: 0.25rem;
    margin: 0;
}
.toast.show .dn-toast-progress {
    animation: dn-toast-shrink 5s linear forwards;
}
.toast:hover .dn-toast-progress {
    animation-play-state: paused;
}

/* Auditoria: JSON de detalhe */
.dn-audit-json {
    white-space: pre-wrap;
    word-break: break-word;
    max-height: 28rem;
    overflow: auto;
}

/* ---------- Calendário DeskNow (folha «Selecionar data de») ---------- */
.dn-datepicker-overlay {
    position: fixed;
    inset: 0;
    z-index: 1080;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 1.25rem;
    background: rgba(17, 15, 13, .55);
}
.dn-datepicker-overlay.is-open,
.dn-datepicker-overlay:not([hidden]) {
    display: flex;
}
.dn-datepicker-overlay[hidden] {
    display: none !important;
}

.dn-datepicker-sheet {
    width: min(24.5rem, 100%);
    max-height: min(40rem, calc(100vh - 2rem));
    overflow: auto;
    padding: 1.15rem 1.2rem 1.25rem;
    border-radius: 1.35rem;
    background: var(--tblr-bg-surface, #fff);
    color: var(--tblr-body-color);
    box-shadow: 0 24px 64px -20px rgba(var(--dn-charcoal-rgb, 33, 27, 24), .55);
    border: 1px solid var(--dn-border-soft);
    font-family: var(--tblr-font-sans-serif, inherit);
}
.dn-datepicker-sheet button {
    font-family: inherit;
}

.dn-datepicker-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: .75rem;
    margin: -1.15rem -1.2rem 1.15rem;
    padding: 1.15rem 1.2rem .95rem;
    background: var(--dn-surface-soft, #fff7f0);
    border-bottom: 1px solid var(--dn-border-soft);
    border-radius: 1.35rem 1.35rem 0 0;
}
.dn-datepicker-title {
    margin: 0;
    font-size: 1.2rem;
    font-weight: 700;
    letter-spacing: -.02em;
    line-height: 1.25;
    color: var(--tblr-body-color);
}
.dn-datepicker-close {
    flex: 0 0 auto;
    width: 2rem;
    height: 2rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: 50%;
    background: rgba(var(--tblr-emphasis-color-rgb, 17, 17, 17), .08);
    color: var(--tblr-secondary-color, var(--dn-text-muted));
    cursor: pointer;
}
.dn-datepicker-close:hover,
.dn-datepicker-close:focus-visible {
    background: rgba(var(--tblr-emphasis-color-rgb, 17, 17, 17), .14);
    color: var(--tblr-body-color);
    outline: none;
}

.dn-datepicker-monthbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    margin-bottom: .85rem;
}
.dn-datepicker-month-label {
    border: 0;
    background: transparent;
    padding: 0;
    color: var(--tblr-body-color);
    font-weight: 700;
    font-size: 1.02rem;
    text-transform: lowercase;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: .35rem;
}
.dn-datepicker-month-label:hover,
.dn-datepicker-month-label:focus-visible {
    color: var(--dn-primary);
    outline: none;
}
.dn-datepicker-month-chevron {
    color: var(--dn-primary);
    font-size: 1.15rem;
    line-height: 1;
    font-weight: 600;
    transform: translateY(-1px);
    display: inline-block;
    transition: transform .15s ease;
}
.dn-datepicker-month-chevron.is-open {
    transform: rotate(90deg);
}
.dn-datepicker-nav {
    display: flex;
    align-items: center;
    gap: .15rem;
}
.dn-datepicker-nav-btn {
    width: 2.1rem;
    height: 2.1rem;
    border: 0;
    background: transparent;
    color: var(--dn-primary);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: .5rem;
    cursor: pointer;
}
.dn-datepicker-nav-btn:hover,
.dn-datepicker-nav-btn:focus-visible {
    background: rgba(var(--dn-primary-rgb), .12);
    outline: none;
}

.dn-datepicker-weekdays {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    margin-bottom: .35rem;
}
.dn-datepicker-weekdays span {
    text-align: center;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .04em;
    color: var(--tblr-secondary-color, var(--dn-text-muted));
    padding: .2rem 0;
}

.dn-datepicker-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: .15rem .1rem;
    min-height: 14.5rem;
    margin-bottom: 1.15rem;
}
.dn-datepicker-grid-months {
    grid-template-columns: repeat(3, 1fr);
    gap: .5rem;
    min-height: 12rem;
}

.dn-datepicker-day {
    width: 2.35rem;
    height: 2.35rem;
    margin: .05rem auto;
    border: 0;
    padding: 0;
    border-radius: 50%;
    background: transparent;
    color: var(--tblr-body-color);
    font-size: .98rem;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}
.dn-datepicker-day.is-empty {
    pointer-events: none;
    visibility: hidden;
}
.dn-datepicker-day:hover:not(.is-selected) {
    background: rgba(var(--dn-primary-rgb), .12);
    color: var(--dn-primary);
}
.dn-datepicker-day:focus-visible {
    outline: 2px solid var(--dn-primary);
    outline-offset: 2px;
}
.dn-datepicker-day.is-today:not(.is-selected) {
    box-shadow: inset 0 0 0 1.5px var(--dn-primary-soft);
    color: var(--dn-primary);
}
.dn-datepicker-day.is-selected {
    background: var(--dn-primary);
    color: #fff;
    box-shadow: 0 8px 18px -12px rgba(var(--dn-primary-shadow-rgb), .95);
}
.dn-datepicker-day.is-selected:hover {
    background: var(--dn-primary-strong);
    color: #fff;
}

.dn-datepicker-month-cell {
    border: 0;
    border-radius: .75rem;
    background: transparent;
    color: var(--tblr-body-color);
    font-weight: 600;
    padding: .7rem .4rem;
    cursor: pointer;
}
.dn-datepicker-month-cell:hover,
.dn-datepicker-month-cell:focus-visible {
    background: rgba(var(--dn-primary-rgb), .12);
    color: var(--dn-primary);
    outline: none;
}
.dn-datepicker-month-cell.is-selected {
    background: var(--dn-primary);
    color: #fff;
}
.dn-datepicker-month-cell.is-current:not(.is-selected) {
    box-shadow: inset 0 0 0 1.5px var(--dn-primary-soft);
}

.dn-datepicker-footer {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .75rem;
}
.dn-datepicker-btn {
    border: 0;
    border-radius: .75rem;
    min-height: 2.75rem;
    font-weight: 700;
    cursor: pointer;
}
.dn-datepicker-btn-cancel {
    background: rgba(var(--tblr-emphasis-color-rgb, 17, 17, 17), .08);
    color: var(--tblr-body-color);
}
.dn-datepicker-btn-cancel:hover,
.dn-datepicker-btn-cancel:focus-visible {
    background: rgba(var(--tblr-emphasis-color-rgb, 17, 17, 17), .14);
    outline: none;
}
.dn-datepicker-btn-confirm {
    background: var(--dn-brand-gradient);
    color: #fff;
    box-shadow: inset 0 1px 0 var(--dn-brand-sheen), 0 10px 22px -16px rgba(var(--dn-primary-shadow-rgb), .9);
}
.dn-datepicker-btn-confirm:hover,
.dn-datepicker-btn-confirm:focus-visible {
    filter: brightness(1.05);
    outline: none;
    color: #fff;
}

[data-bs-theme="dark"] .dn-datepicker-sheet {
    background: #1b1613;
    border-color: rgba(255, 244, 236, .1);
    box-shadow: 0 28px 70px -18px rgba(0, 0, 0, .65);
}
[data-bs-theme="dark"] .dn-datepicker-head {
    background: #241d19;
    border-bottom-color: rgba(255, 244, 236, .08);
}
[data-bs-theme="dark"] .dn-datepicker-close {
    background: rgba(255, 255, 255, .08);
}
[data-bs-theme="dark"] .dn-datepicker-btn-cancel {
    background: rgba(255, 255, 255, .1);
    color: var(--tblr-body-color);
}

@media (max-width: 575.98px) {
    .dn-datepicker-overlay {
        align-items: flex-end;
        padding: 0;
    }
    .dn-datepicker-sheet {
        width: 100%;
        max-width: none;
        border-radius: 1.25rem 1.25rem 0 0;
        max-height: min(92vh, 40rem);
        padding-bottom: calc(1.15rem + env(safe-area-inset-bottom, 0px));
    }
    .dn-datepicker-head {
        border-radius: 1.25rem 1.25rem 0 0;
    }
}

input[data-dn-datepicker],
input[data-dn-datepicker][readonly] {
    cursor: pointer;
    background-color: var(--tblr-bg-forms, #fff);
}
[data-bs-theme="dark"] input[data-dn-datepicker][readonly] {
    background-color: var(--tblr-bg-forms, #1f1a17);
}

[data-bs-theme="dark"] .card,
[data-bs-theme="dark"] .dropdown-menu,
[data-bs-theme="dark"] .modal-content,
[data-bs-theme="dark"] .offcanvas,
[data-bs-theme="dark"] .form-control,
[data-bs-theme="dark"] .form-select,
[data-bs-theme="dark"] .input-group-text {
    background-color: var(--tblr-bg-surface);
    color: var(--tblr-body-color);
}

[data-bs-theme="dark"] .navbar,
[data-bs-theme="dark"] .dn-app-header,
[data-bs-theme="dark"] .table,
[data-bs-theme="dark"] .card-header,
[data-bs-theme="dark"] .card-footer {
    border-color: var(--tblr-border-color);
}

[data-bs-theme="dark"] .card {
    border-color: var(--tblr-border-color);
}

[data-bs-theme="dark"] .card-header,
[data-bs-theme="dark"] .card-footer {
    background-color: var(--tblr-card-cap-bg);
    color: var(--tblr-body-color);
}

[data-bs-theme="dark"] .card-title,
[data-bs-theme="dark"] .page-title,
[data-bs-theme="dark"] .navbar-brand,
[data-bs-theme="dark"] .datagrid-content {
    color: var(--tblr-body-color);
}

[data-bs-theme="dark"] .datagrid-title,
[data-bs-theme="dark"] .form-label,
[data-bs-theme="dark"] .form-text,
[data-bs-theme="dark"] .form-hint,
[data-bs-theme="dark"] .card-subtitle,
[data-bs-theme="dark"] .page-subtitle,
[data-bs-theme="dark"] .dn-page-subtitle,
[data-bs-theme="dark"] .dn-brand-tenant,
[data-bs-theme="dark"] .table thead th {
    color: var(--tblr-secondary-color) !important;
}

/* Nav: icons/titles visible; inactive still dimmer than active */
[data-bs-theme="dark"] .navbar-nav .nav-link,
[data-bs-theme="dark"] .navbar .nav-link {
    color: var(--tblr-secondary-color) !important;
}
[data-bs-theme="dark"] .navbar-nav .nav-link .icon,
[data-bs-theme="dark"] .navbar .nav-link .icon,
[data-bs-theme="dark"] .navbar-nav .nav-link i,
[data-bs-theme="dark"] .navbar .nav-link i {
    color: inherit;
    opacity: 1;
}
[data-bs-theme="dark"] .navbar-nav .nav-link:hover,
[data-bs-theme="dark"] .navbar-nav .nav-link.active,
[data-bs-theme="dark"] .navbar .nav-link:hover,
[data-bs-theme="dark"] .navbar .nav-link.active {
    color: var(--tblr-primary) !important;
}

/* Inactive / disabled: dimmer than active, still readable */
[data-bs-theme="dark"] .text-secondary.disabled,
[data-bs-theme="dark"] .disabled,
[data-bs-theme="dark"] :disabled,
[data-bs-theme="dark"] .nav-link.disabled,
[data-bs-theme="dark"] .dropdown-item.disabled,
[data-bs-theme="dark"] .list-group-item.disabled {
    color: var(--dn-text-muted-dim) !important;
    opacity: 1;
}
[data-bs-theme="dark"] .badge.bg-secondary-lt,
[data-bs-theme="dark"] .bg-secondary-lt {
    background: rgba(255, 244, 236, .1) !important;
    color: var(--dn-text-muted) !important;
}
[data-bs-theme="dark"] .badge.bg-secondary-lt.text-secondary,
[data-bs-theme="dark"] .bg-secondary-lt.text-secondary {
    color: var(--dn-text-muted) !important;
}

[data-bs-theme="dark"] .form-control::placeholder,
[data-bs-theme="dark"] .form-select::placeholder {
    color: var(--dn-text-muted-dim);
    opacity: 1;
}

[data-bs-theme="dark"] .bg-light {
    background-color: rgba(255, 255, 255, .04) !important;
}

[data-bs-theme="dark"] .toast-body {
    color: var(--tblr-body-color);
}

[data-bs-theme="dark"] .list-group-item {
    color: var(--tblr-body-color);
    border-color: var(--tblr-border-color);
}

[data-bs-theme="dark"] .hr,
[data-bs-theme="dark"] hr {
    border-color: var(--tblr-border-color);
    opacity: 1;
}

[data-bs-theme="dark"] .dn-fecho-ring {
    background: conic-gradient(var(--dn-primary) calc(var(--p) * 1%), rgba(255, 244, 236, .14) 0);
}
[data-bs-theme="dark"] .dn-fecho-ring > span {
    color: var(--tblr-body-color);
}

/* ---------- Ficha do cliente: tab Credenciais ---------- */
.dn-credenciais-col-portal {
    width: 18%;
}

.dn-credenciais-col-password {
    width: 18%;
    min-width: 9rem;
}

.dn-credencial-cell {
    min-width: 0;
}

.dn-credencial-toolbar {
    padding: .125rem;
    border: 1px solid var(--tblr-border-color);
    border-radius: var(--tblr-border-radius);
    background: var(--tblr-bg-surface);
}

.dn-credenciais-pane .card-header {
    border-bottom-color: rgba(var(--tblr-emphasis-color-rgb), .16) !important;
}

.dn-credenciais-pane .table thead th {
    background: rgba(var(--tblr-emphasis-color-rgb), .03);
}

.dn-credenciais-pane .dn-credencial-toolbar {
    border-color: rgba(var(--tblr-emphasis-color-rgb), .22);
    background: rgba(var(--tblr-emphasis-color-rgb), .02);
}

.dn-credenciais-pane .dn-credencial-actions .btn {
    white-space: nowrap;
}

.dn-credenciais-pane .avatar.avatar-xs {
    width: 2rem;
    height: 2rem;
    font-size: 1rem;
}

.dn-credenciais-pane .avatar.avatar-xs i,
.dn-credenciais-pane .avatar.avatar-xs .icon {
    width: 1rem;
    height: 1rem;
    font-size: 1rem;
    line-height: 1;
}

.dn-credencial-toolbar .btn.btn-icon {
    width: 2rem;
    height: 2rem;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.dn-credencial-toolbar .btn.btn-icon .icon {
    width: 1rem;
    height: 1rem;
    stroke-width: 1.8;
}

.dn-credencial-toolbar .btn.btn-icon i {
    font-size: 1rem;
    line-height: 1;
}

.dn-password-display {
    min-width: 0;
    color: var(--tblr-body-color);
}

.dn-password-mask,
.dn-password-value {
    display: inline-block;
    letter-spacing: .08em;
}

.dn-password-mask {
    color: var(--tblr-body-color);
    opacity: .8;
}

/* Fotos de utilizador: sempre redondas, cortadas ao centro (nunca esticadas). */
.dn-avatar-image,
.avatar.rounded-circle {
    position: relative;
    overflow: hidden;
    border-radius: 50% !important;
    aspect-ratio: 1 / 1;
    flex-shrink: 0;
}

.dn-avatar-image img,
.avatar.rounded-circle img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 50%;
    display: block;
}

/* ---------- Botões utilitários (ícone-only) unificados ---------- */
.dn-util-icon-btn.btn.btn-icon.btn-sm {
    width: 2rem;
    height: 2rem;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.dn-util-icon-btn.btn.btn-icon.btn-sm i {
    font-size: 1.05rem;
    line-height: 1;
}

.dn-util-icon-btn.dn-action-preview,
.dn-util-icon-btn.dn-action-download,
.dn-util-icon-btn.dn-action-send,
.dn-util-icon-btn.dn-action-schedule,
.dn-util-icon-btn.dn-action-cancel-schedule,
.dn-util-icon-btn.dn-action-edit,
.dn-util-icon-btn.dn-action-open,
.dn-util-icon-btn.dn-action-delete,
.dn-util-icon-btn.dn-action-accept,
.dn-util-icon-btn.dn-action-reject {
    color: #fff;
}
.dn-util-icon-btn.dn-action-accept {
    background: #2fb344;
    border-color: #2fb344;
}
.dn-util-icon-btn.dn-action-accept:hover,
.dn-util-icon-btn.dn-action-accept:focus-visible {
    background: #278f38;
    border-color: #278f38;
    color: #fff;
}
.dn-util-icon-btn.dn-action-reject {
    background: #f76707;
    border-color: #f76707;
}
.dn-util-icon-btn.dn-action-reject:hover,
.dn-util-icon-btn.dn-action-reject:focus-visible,
.dn-util-icon-btn.dn-action-reject.show {
    background: #d9570a;
    border-color: #d9570a;
    color: #fff;
}
.dn-util-icon-btn.dn-action-preview {
    background: #4299e1;
    border-color: #4299e1;
}
.dn-util-icon-btn.dn-action-preview:hover,
.dn-util-icon-btn.dn-action-preview:focus-visible {
    background: #2b6cb0;
    border-color: #2b6cb0;
    color: #fff;
}
.dn-util-icon-btn.dn-action-download {
    background: #0ca678;
    border-color: #0ca678;
}
.dn-util-icon-btn.dn-action-download:hover,
.dn-util-icon-btn.dn-action-download:focus-visible {
    background: #0a8a63;
    border-color: #0a8a63;
    color: #fff;
}
.dn-util-icon-btn.dn-action-send {
    background: var(--dn-primary);
    border-color: var(--dn-primary);
}
.dn-util-icon-btn.dn-action-send:hover,
.dn-util-icon-btn.dn-action-send:focus-visible {
    background: var(--dn-primary-strong);
    border-color: var(--dn-primary-strong);
    color: #fff;
}
.dn-util-icon-btn.dn-action-send:disabled,
.dn-util-icon-btn.dn-action-send[disabled],
.dn-util-icon-btn.dn-action-resend:disabled,
.dn-util-icon-btn.dn-action-resend[disabled] {
    opacity: .55;
    cursor: not-allowed;
}
.dn-util-icon-btn.dn-action-send:disabled,
.dn-util-icon-btn.dn-action-send[disabled] {
    background: #adb5bd;
    border-color: #adb5bd;
    color: #fff;
}
.dn-util-icon-btn.dn-action-resend:disabled,
.dn-util-icon-btn.dn-action-resend[disabled] {
    background: #f1f3f5;
    border-color: #ced4da;
    color: #868e96;
}
.dn-util-icon-btn.dn-action-schedule {
    background: #7048e8;
    border-color: #7048e8;
}
.dn-util-icon-btn.dn-action-schedule:hover,
.dn-util-icon-btn.dn-action-schedule:focus-visible {
    background: #5f3dc4;
    border-color: #5f3dc4;
    color: #fff;
}
.dn-util-icon-btn.dn-action-cancel-schedule {
    background: #868e96;
    border-color: #868e96;
}
.dn-util-icon-btn.dn-action-cancel-schedule:hover,
.dn-util-icon-btn.dn-action-cancel-schedule:focus-visible {
    background: #495057;
    border-color: #495057;
    color: #fff;
}
.dn-util-icon-btn.dn-action-resend {
    background: transparent;
    border: 1px solid #f76707;
    color: #f76707;
}
.dn-util-icon-btn.dn-action-resend:hover,
.dn-util-icon-btn.dn-action-resend:focus-visible {
    background: #f76707;
    border-color: #f76707;
    color: #fff;
}
.dn-util-icon-btn.dn-action-edit {
    background: #4263eb;
    border-color: #4263eb;
}
.dn-util-icon-btn.dn-action-edit:hover,
.dn-util-icon-btn.dn-action-edit:focus-visible {
    background: #314fc4;
    border-color: #314fc4;
    color: #fff;
}
.dn-util-icon-btn.dn-action-open {
    background: #15aabf;
    border-color: #15aabf;
}
.dn-util-icon-btn.dn-action-open:hover,
.dn-util-icon-btn.dn-action-open:focus-visible {
    background: #1098ad;
    border-color: #1098ad;
    color: #fff;
}
.dn-util-icon-btn.dn-action-delete {
    background: #d63939;
    border-color: #d63939;
}
.dn-util-icon-btn.dn-action-delete:hover,
.dn-util-icon-btn.dn-action-delete:focus-visible {
    background: #b02a37;
    border-color: #b02a37;
    color: #fff;
}

/* ---------- Exportar PDF / Excel ---------- */
.dn-export-btn.btn.btn-icon {
    width: 2.5rem;
    height: 2.5rem;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #fff;
}
.dn-export-btn.btn.btn-icon i,
.dn-export-btn.btn.btn-icon i::before {
    font-size: 1.55rem;
    line-height: 1;
}
.dn-export-pdf {
    background: #d63939;
    border-color: #d63939;
}
.dn-export-pdf:hover,
.dn-export-pdf:focus-visible {
    background: #b02a2a;
    border-color: #b02a2a;
    color: #fff;
}
.dn-export-excel {
    background: #2fb344;
    border-color: #2fb344;
}
.dn-export-excel:hover,
.dn-export-excel:focus-visible {
    background: #238c34;
    border-color: #238c34;
    color: #fff;
}
.dn-export-history {
    background: #7048e8;
    border-color: #7048e8;
}
.dn-export-history:hover,
.dn-export-history:focus-visible {
    background: #5f3dc4;
    border-color: #5f3dc4;
    color: #fff;
}

/* ---------- Seletor visual de ícones (portais) ---------- */
.dn-icon-picker {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(7.25rem, 1fr));
    gap: .5rem;
}
.dn-icon-option {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .35rem;
    min-height: 4.75rem;
    padding: .7rem .4rem;
    border: 1px solid var(--tblr-border-color);
    border-radius: var(--tblr-border-radius);
    background: var(--tblr-bg-surface);
    cursor: pointer;
    text-align: center;
    margin: 0;
}
.dn-icon-option input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
.dn-icon-option i {
    font-size: 1.4rem;
    line-height: 1;
}
.dn-icon-option span {
    font-size: .75rem;
    color: var(--tblr-secondary);
}
.dn-icon-option:hover {
    border-color: var(--tblr-primary);
}
.dn-icon-option:has(input:checked) {
    border-color: var(--tblr-primary);
    background: rgba(var(--tblr-primary-rgb), .08);
    box-shadow: inset 0 0 0 1px var(--tblr-primary);
}
.dn-icon-option:has(input:checked) i,
.dn-icon-option:has(input:checked) span {
    color: var(--tblr-primary);
}

/* ---------- Controlo de fecho de ano ---------- */
.dn-fecho-ring {
    --p: 0;
    width: 5.5rem;
    height: 5.5rem;
    border-radius: 50%;
    background: conic-gradient(#bf5a16 calc(var(--p) * 1%), #eadccf 0);
    display: grid;
    place-items: center;
}
.dn-fecho-ring > span {
    width: 4.15rem;
    height: 4.15rem;
    border-radius: 50%;
    background: var(--tblr-bg-surface, #fff);
    display: grid;
    place-items: center;
    font-weight: 800;
    font-size: 1.1rem;
    color: #251f1b;
}
.dn-fecho-bloco {
    border-left: 4px solid transparent;
}
.dn-fecho-bloco--apuramento { border-left-color: #bf5a16; }
.dn-fecho-bloco--m22 { border-left-color: #2fb344; }
.dn-fecho-bloco--ies { border-left-color: #4299e1; }
.dn-fecho-bloco--m10 { border-left-color: #2fb344; }

/* ---------- Planos prestacionais: detalhe ---------- */
.ls-1 {
    letter-spacing: .04em;
}
.dn-plano-field {
    background: var(--tblr-bg-surface-secondary, var(--dn-surface-muted));
    border: 1px solid var(--tblr-border-color);
    border-radius: var(--tblr-border-radius, .5rem);
    padding: .75rem .9rem;
    min-height: 100%;
}
.dn-plano-field--block {
    min-height: 4.5rem;
}
.dn-plano-field-label {
    font-size: .7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--tblr-secondary-color);
    margin-bottom: .25rem;
}
.dn-plano-field-value {
    font-weight: 600;
    color: var(--tblr-body-color);
    line-height: 1.35;
}
.dn-plano-field-value--wrap {
    font-weight: 500;
    white-space: pre-wrap;
}
.dn-plano-field-value--highlight {
    color: var(--tblr-primary);
    font-size: 1.15rem;
    font-weight: 700;
}
[data-bs-theme="dark"] .dn-plano-field {
    background: var(--tblr-bg-surface);
    border-color: var(--tblr-border-color);
}
[data-bs-theme="dark"] .dn-plano-field-label {
    color: var(--tblr-secondary-color);
}
[data-bs-theme="dark"] .dn-plano-field-value {
    color: var(--tblr-body-color);
}
[data-bs-theme="dark"] .dn-plano-field-value--highlight {
    color: var(--tblr-primary);
}

/* Pré-visualização de PDF antes de enviar por email */
.dn-pdf-preview-row {
    margin-top: 0;
}

.dn-pdf-preview {
    width: 100%;
    margin-top: .25rem;
    margin-bottom: 1rem;
    border: 1px solid var(--tblr-border-color);
    border-radius: var(--tblr-border-radius, .375rem);
    background: var(--tblr-bg-surface, #fff);
    overflow: hidden;
}

.dn-pdf-preview-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding: .5rem .75rem;
    border-bottom: 1px solid var(--tblr-border-color);
    background: var(--tblr-bg-surface-secondary, var(--tblr-card-cap-bg, rgba(0, 0, 0, .03)));
}

.dn-pdf-preview-title {
    font-weight: 600;
    font-size: .875rem;
    color: var(--tblr-body-color);
}

.dn-pdf-preview-body {
    max-height: 520px;
    overflow: auto;
    padding: 0;
    background: var(--tblr-bg-surface, #fff);
}

.dn-pdf-preview-frame,
.dn-pdf-preview-modal-frame {
    display: block;
    width: 100%;
    border: 0;
    background: var(--tblr-bg-surface, #fff);
}

.dn-pdf-preview-frame {
    min-height: 480px;
    height: 520px;
}

.dn-pdf-preview-msg {
    padding: .75rem 1rem;
}

/* Modal PDF: header/footer acima do iframe para o X continuar clicável
 * (o visualizador nativo de PDF pode criar uma camada que rouba cliques). */
#dn-pdf-preview-modal .modal-content {
    overflow: hidden;
}

#dn-pdf-preview-modal .modal-header,
#dn-pdf-preview-modal .modal-footer {
    position: relative;
    z-index: 5;
    background-color: var(--tblr-bg-surface, #fff);
}

#dn-pdf-preview-modal .modal-header .btn-close {
    position: relative;
    z-index: 6;
    pointer-events: auto;
}

#dn-pdf-preview-modal .modal-body {
    position: relative;
    z-index: 1;
    overflow: hidden;
    isolation: isolate;
}

.dn-pdf-preview-modal-frame {
    position: relative;
    z-index: 0;
    height: 70vh;
    max-height: 70vh;
    min-height: 320px;
}

/* ---------- Filtros por estado (chips) ---------- */
.dn-filter-chips {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}

.dn-filter-chip {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    padding: .35rem .75rem;
    border-radius: var(--tblr-border-radius);
    border: 1px solid var(--tblr-border-color);
    background: var(--tblr-bg-surface);
    color: var(--tblr-body-color);
    text-decoration: none;
    font-size: .8125rem;
    font-weight: 500;
    transition: border-color .15s ease, background .15s ease, color .15s ease;
}

/* Fundo por tom (o chip activo sobrepõe-se mais abaixo) */
.dn-filter-chip-pending { background: rgba(var(--tblr-warning-rgb), .12); border-color: rgba(var(--tblr-warning-rgb), .3); }
.dn-filter-chip-danger { background: rgba(var(--tblr-danger-rgb), .1); border-color: rgba(var(--tblr-danger-rgb), .28); }
.dn-filter-chip-success { background: rgba(var(--tblr-success-rgb), .12); border-color: rgba(var(--tblr-success-rgb), .3); }
.dn-filter-chip-muted,
.dn-filter-chip-neutral { background: rgba(var(--tblr-emphasis-color-rgb), .06); }

.dn-filter-chip:hover {
    border-color: rgba(var(--dn-primary-rgb), .45);
    color: var(--dn-primary);
    text-decoration: none;
}

.dn-filter-chip.is-active {
    border-color: var(--dn-primary);
    background: rgba(var(--dn-primary-rgb), .18);
    box-shadow: 0 0 0 1px var(--dn-primary);
    color: var(--dn-primary-strong, var(--dn-primary));
}

.dn-filter-chip-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.4rem;
    padding: 0 .35rem;
    border-radius: 999px;
    font-size: .75rem;
    font-weight: 600;
    background: rgba(var(--tblr-emphasis-color-rgb), .08);
    color: var(--tblr-secondary-color, var(--dn-text-muted));
}

/* Chip activo: marca primária (sobrepõe tons success/warning/…) */
.dn-filter-chip.is-active .dn-filter-chip-count,
.dn-filter-chip.is-active .dn-filter-chip-count.bg-success-lt,
.dn-filter-chip.is-active .dn-filter-chip-count.bg-warning-lt,
.dn-filter-chip.is-active .dn-filter-chip-count.bg-danger-lt,
.dn-filter-chip.is-active .dn-filter-chip-count.bg-secondary-lt {
    background: rgba(var(--dn-primary-rgb), .18);
    color: var(--dn-primary-strong, var(--dn-primary));
}

/* ---------- Inbox+ ---------- */
.dn-inbox-item-unread {
    background: rgba(var(--dn-primary-rgb), .04);
    box-shadow: inset 3px 0 0 var(--dn-primary);
}

.dn-inbox-item .avatar {
    --tblr-avatar-size: 2.25rem;
}

.dn-comunicacao-timeline {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.dn-comunicacao-item {
    border-left: 3px solid rgba(var(--dn-primary-rgb), .35);
    padding-left: .85rem;
}

.dn-comunicacao-corpo {
    white-space: pre-wrap;
    word-break: break-word;
    font-family: inherit;
}

/* Corpo de email na thread (texto plano; legível em tema claro e escuro) */
.dn-email-body {
    margin: 0;
    padding: .75rem 1rem;
    max-width: 100%;
    font-size: var(--tblr-body-font-size, .875rem);
    line-height: 1.55;
    color: var(--tblr-body-color, #1e293b);
    background: var(--tblr-bg-surface, #fff);
    border: 1px solid var(--tblr-border-color, rgba(0, 0, 0, .08));
    border-radius: var(--tblr-border-radius, .375rem);
    white-space: pre-wrap;
    word-break: break-word;
    overflow-x: auto;
}

[data-bs-theme="dark"] .dn-email-body {
    color: var(--tblr-body-color, #e8e0da);
    background: var(--dn-surface-soft, #1f1a17);
    border-color: var(--dn-border-soft, rgba(255, 244, 236, .16));
}

/* Se algum corpo HTML escapado for mostrado com |safe no futuro */
.dn-email-body table,
.dn-email-body td,
.dn-email-body th,
.dn-email-body div,
.dn-email-body p,
.dn-email-body span {
    color: inherit !important;
    background: transparent !important;
    background-color: transparent !important;
}

/* Zona drag-and-drop para PDF de guias */
.dn-guia-pdf-dropzone {
    position: relative;
    border: 2px dashed var(--tblr-border-color, #cad5e2);
    border-radius: var(--tblr-border-radius, 6px);
    padding: 1.25rem 1rem;
    text-align: center;
    cursor: pointer;
    transition: border-color 0.15s ease, background-color 0.15s ease;
    background: var(--tblr-bg-surface-secondary, rgba(0, 0, 0, 0.02));
}

.dn-guia-pdf-dropzone:focus {
    outline: 2px solid rgba(var(--dn-primary-rgb, 32, 107, 196), 0.45);
    outline-offset: 2px;
}

.dn-guia-pdf-dropzone.is-dragover {
    border-color: var(--dn-primary, #206bc4);
    background: rgba(var(--dn-primary-rgb, 32, 107, 196), 0.06);
}

.dn-guia-pdf-dropzone-input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.dn-guia-pdf-dropzone-icon {
    font-size: 1.75rem;
    color: var(--dn-primary, #206bc4);
    display: block;
    margin-bottom: 0.35rem;
}

.dn-guia-pdf-dropzone-text {
    font-size: 0.9375rem;
    color: var(--tblr-body-color, inherit);
}

.dn-guia-pdf-dropzone-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.5rem;
}

.dn-guia-pdf-dropzone-actions .btn {
    pointer-events: auto;
}

.dn-guia-pdf-dropzone.is-last-pdf-unavailable [data-dn-guia-pdf-last-btn] {
    opacity: 0.45;
    cursor: not-allowed;
    filter: grayscale(.6);
}
.dn-guia-pdf-dropzone.is-last-pdf-unavailable [data-dn-guia-pdf-last-btn]:hover,
.dn-guia-pdf-dropzone.is-last-pdf-unavailable [data-dn-guia-pdf-last-btn]:focus {
    background: transparent;
    color: var(--tblr-primary, #bf5a16);
    box-shadow: none;
}

.dn-guia-recent-pdfs-list {
    max-height: min(50vh, 320px);
    overflow-y: auto;
}

.dn-guia-recent-pdf-item {
    cursor: pointer;
}

.dn-guia-recent-pdf-item-multi {
    cursor: default;
}

.dn-guia-pdf-dropzone.has-pdf-queue .dn-guia-pdf-dropzone-text {
    font-weight: 600;
}

.dn-guia-recent-pdf-item .dn-guia-recent-pdf-name {
    word-break: break-word;
}

/* Documento em destaque (chegada via notificação ?doc=) */
.dn-row-highlight > * {
    background: rgba(var(--dn-primary-rgb), .08) !important;
    box-shadow: inset 3px 0 0 var(--dn-primary);
}

/* ---------- Badges de estado (tema escuro legível) ---------- */
.dn-status-badge {
    font-weight: 600;
    letter-spacing: .01em;
}

[data-bs-theme="dark"] .badge.bg-success-lt {
    color: #8fd9a8 !important;
}

[data-bs-theme="dark"] .badge.bg-danger-lt {
    color: #f0a0a0 !important;
}

[data-bs-theme="dark"] .badge.bg-warning-lt {
    color: #e8c878 !important;
}

[data-bs-theme="dark"] .badge.bg-secondary-lt {
    color: var(--dn-text-muted) !important;
}

/* ---------- Empty states com CTA Gerar ---------- */
.dn-empty-gerar .empty-icon {
    color: var(--dn-primary);
    opacity: .85;
}

.dn-empty-gerar .empty-title {
    color: var(--tblr-body-color);
}

/* ---------- Tabelas densas / sticky 1.ª coluna (mobile) ---------- */
@media (max-width: 767.98px) {
    .dn-table-dense.table-nowrap,
    .dn-table-dense.text-nowrap {
        white-space: nowrap;
    }

    .dn-table-dense .dn-col-sticky,
    .dn-table-mapa .dn-col-sticky,
    .dn-table-retencoes .dn-col-sticky,
    .dn-credenciais-pane .dn-credenciais-col-portal {
        position: sticky;
        left: 0;
        z-index: 2;
        background: var(--tblr-bg-surface);
        box-shadow: 4px 0 8px -4px rgba(0, 0, 0, .18);
    }

    .dn-table-dense thead .dn-col-sticky,
    .dn-table-mapa thead .dn-col-sticky,
    .dn-table-retencoes thead .dn-col-sticky {
        z-index: 3;
        background: var(--tblr-bg-surface-secondary, var(--tblr-card-cap-bg, var(--tblr-bg-surface)));
    }

    .dn-credenciais-pane .table-responsive,
    .dn-table-dense,
    .dn-table-mapa,
    .dn-table-retencoes {
        font-size: .8125rem;
    }

    .dn-credenciais-pane .dn-credenciais-col-password {
        min-width: 9rem;
    }
}

/* ---------- Nova guia: plano prestacional ---------- */
.dn-guia-plano-section {
    border-color: var(--dn-border-soft) !important;
}

.dn-guia-plano-panel {
    padding: 1rem 1.25rem;
    border-radius: var(--tblr-border-radius, .375rem);
    background: var(--dn-surface-soft, #fff7f0);
    border: 1px solid var(--dn-border-soft);
}

[data-bs-theme="dark"] .dn-guia-plano-panel {
    background: var(--tblr-bg-surface-secondary, rgba(255, 255, 255, .04));
    border-color: var(--tblr-border-color);
}

/* ---------- Planeamento: KPIs e mistura por tipo ---------- */
.dn-plan {
    --dn-plan-entregue: #2fb344;
    --dn-plan-atrasado: #d63939;
    --dn-plan-pendente: #d9a116;
    --dn-plan-nao: #8a8178;
    --dn-plan-track: #eadccf;
    --dn-plan-hole: var(--tblr-bg-surface, #fff);
}
.dn-plan-kpi {
    position: relative;
    overflow: hidden;
}
.dn-plan-kpi::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: .28rem;
}
.dn-plan-kpi--total::before,
.dn-plan-kpi--clientes::before { background: var(--dn-primary); }
.dn-plan-kpi--concluido::before { background: var(--dn-plan-entregue); }
.dn-plan-kpi--em_andamento::before { background: var(--dn-plan-pendente); }
.dn-plan-kpi--nao_iniciado::before { background: var(--dn-plan-nao, #8a8178); }

a.dn-plan-kpi.is-active {
    border-color: color-mix(in srgb, var(--dn-primary) 45%, var(--dn-border-soft));
    box-shadow: var(--tblr-box-shadow-sm, 0 .25rem .75rem rgba(33, 27, 24, .08));
}

a.dn-plan-kpi,
a.dn-plan-type {
    text-decoration: none;
    color: inherit;
    display: block;
    cursor: pointer;
    transition: box-shadow .15s ease, border-color .15s ease, transform .15s ease;
}
a.dn-plan-kpi:hover,
a.dn-plan-type:hover {
    color: inherit;
    box-shadow: var(--tblr-box-shadow-sm, 0 .25rem .75rem rgba(33, 27, 24, .08));
    border-color: color-mix(in srgb, var(--dn-primary) 35%, var(--dn-border-soft));
}
a.dn-plan-kpi:focus-visible,
a.dn-plan-type:focus-visible {
    outline: 2px solid var(--dn-primary);
    outline-offset: 2px;
}

.dn-plan-kpi-row {
    display: flex;
    align-items: center;
    gap: .9rem;
    min-height: 4.5rem;
}
.dn-plan-kpi-copy {
    min-width: 0;
    flex: 1;
}
.dn-plan-kpi-value {
    font-size: 1.85rem;
    font-weight: 800;
    line-height: 1.05;
    letter-spacing: -.03em;
    font-variant-numeric: tabular-nums;
    color: var(--tblr-body-color);
    white-space: nowrap;
}
.dn-plan-kpi-value small {
    font-size: .55em;
    font-weight: 700;
    margin-left: .05em;
}
.dn-plan-kpi-label {
    font-size: .82rem;
    font-weight: 700;
    color: var(--tblr-body-color);
    margin-top: .15rem;
}
.dn-plan-kpi-meta {
    font-size: .75rem;
    color: var(--tblr-secondary-color, var(--dn-text-muted));
    line-height: 1.3;
    margin-top: .1rem;
}

.dn-plan-ring {
    --p: 0;
    --e: 0;
    --ea: 0;
    --eap: 0;
    flex: 0 0 4.35rem;
    width: 4.35rem;
    height: 4.35rem;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: conic-gradient(var(--dn-plan-track) 0 100%);
}
.dn-plan-ring > span {
    width: 3.05rem;
    height: 3.05rem;
    border-radius: 50%;
    background: var(--dn-plan-hole);
    display: grid;
    place-items: center;
    font-weight: 800;
    font-size: 1.2rem;
    font-variant-numeric: tabular-nums;
    letter-spacing: -.03em;
    color: var(--tblr-body-color);
    line-height: 1;
}
.dn-plan-ring--mix {
    background: conic-gradient(
        var(--dn-plan-entregue) 0 calc(var(--e) * 1%),
        var(--dn-plan-atrasado) calc(var(--e) * 1%) calc(var(--ea) * 1%),
        var(--dn-plan-pendente) calc(var(--ea) * 1%) calc(var(--eap) * 1%),
        var(--dn-plan-track) 0
    );
}
.dn-plan-ring--mix.is-empty,
.dn-plan-ring.is-empty {
    background: conic-gradient(var(--dn-plan-track) 0 100%);
}
.dn-plan-ring--entregue {
    background: conic-gradient(
        var(--dn-plan-entregue) 0 calc(var(--p) * 1%),
        var(--dn-plan-track) 0
    );
}
.dn-plan-ring--atrasado {
    background: conic-gradient(
        var(--dn-plan-atrasado) 0 calc(var(--p) * 1%),
        var(--dn-plan-track) 0
    );
}
.dn-plan-ring--pendente {
    background: conic-gradient(
        var(--dn-plan-pendente) 0 calc(var(--p) * 1%),
        var(--dn-plan-track) 0
    );
}
.dn-plan-ring--clientes {
    background: conic-gradient(
        var(--dn-primary) 0 calc(var(--p) * 1%),
        var(--dn-plan-track) 0
    );
}
.dn-plan-ring--concluido {
    background: conic-gradient(
        var(--dn-plan-entregue) 0 calc(var(--p) * 1%),
        var(--dn-plan-track) 0
    );
}
.dn-plan-ring--em_andamento {
    background: conic-gradient(
        var(--dn-plan-pendente) 0 calc(var(--p) * 1%),
        var(--dn-plan-track) 0
    );
}
.dn-plan-ring--nao_iniciado {
    background: conic-gradient(
        var(--dn-plan-nao, #8a8178) 0 calc(var(--p) * 1%),
        var(--dn-plan-track) 0
    );
}
.dn-plan-ring--fecho {
    background: conic-gradient(
        var(--dn-plan-entregue) 0 calc(var(--e) * 1%),
        var(--dn-plan-pendente) calc(var(--e) * 1%) calc(var(--ea) * 1%),
        var(--dn-plan-nao, #8a8178) calc(var(--ea) * 1%) calc(var(--eap) * 1%),
        var(--dn-plan-track) calc(var(--eap) * 1%) 100%
    );
}

.dn-plan-legend {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem 1.1rem;
    list-style: none;
    width: fit-content;
    max-width: 100%;
    margin: 0 0 1rem;
    padding: .45rem .85rem;
    font-size: .8rem;
    font-weight: 600;
    color: var(--tblr-body-color);
    background: var(--tblr-bg-surface, #fff);
    border: 1px solid var(--dn-border-soft);
    border-radius: 999px;
}
.dn-plan-legend li {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
}
.dn-plan-swatch {
    width: .7rem;
    height: .7rem;
    border-radius: 50%;
    flex: 0 0 .7rem;
    box-shadow: inset 0 0 0 1px rgba(17, 17, 17, .12);
}
.dn-plan-swatch--entregue { background: var(--dn-plan-entregue); }
.dn-plan-swatch--atrasado { background: var(--dn-plan-atrasado); }
.dn-plan-swatch--pendente { background: var(--dn-plan-pendente); }
.dn-plan-swatch--nao { background: var(--dn-plan-nao, #8a8178); }

.dn-plan-type {
    height: 100%;
    padding: .9rem 1rem 1rem;
    border: 1px solid var(--dn-border-soft);
    border-radius: var(--tblr-border-radius, .5rem);
    background: var(--dn-surface-soft, #fff7f0);
}
.dn-plan-type.is-empty {
    background: transparent;
    border-style: dashed;
}
.dn-plan-type-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: .75rem;
    margin-bottom: .7rem;
}
.dn-plan-type-name {
    font-weight: 700;
    font-size: .9rem;
    line-height: 1.25;
    color: var(--tblr-body-color);
}
.dn-plan-type-count {
    font-weight: 800;
    font-size: 1.25rem;
    font-variant-numeric: tabular-nums;
    letter-spacing: -.03em;
    line-height: 1;
    color: var(--tblr-body-color);
}
.dn-plan-type.is-empty .dn-plan-type-name,
.dn-plan-type.is-empty .dn-plan-type-count {
    color: var(--tblr-secondary-color, var(--dn-text-muted));
}

.dn-plan-bar {
    display: flex;
    height: 1.15rem;
    border-radius: 999px;
    overflow: hidden;
    background: var(--dn-plan-track);
    margin-bottom: .75rem;
}
.dn-plan-bar.is-empty {
    align-items: center;
    justify-content: center;
    background: transparent;
    box-shadow: inset 0 0 0 1px var(--dn-border-soft);
}
.dn-plan-bar-empty {
    font-size: .68rem;
    font-weight: 600;
    color: var(--tblr-secondary-color, var(--dn-text-muted));
    letter-spacing: .02em;
}
.dn-plan-bar-seg {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 0;
    height: 100%;
    font-size: .65rem;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    line-height: 1;
    color: #fff;
    white-space: nowrap;
    overflow: hidden;
}
.dn-plan-bar-seg--entregue { background: var(--dn-plan-entregue); }
.dn-plan-bar-seg--atrasado { background: var(--dn-plan-atrasado); }
.dn-plan-bar-seg--pendente {
    background: var(--dn-plan-pendente);
    color: #211b18;
}

.dn-plan-type-stats {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: .28rem;
}
.dn-plan-type-stats li {
    display: grid;
    grid-template-columns: .7rem minmax(0, 1fr) auto auto;
    align-items: center;
    gap: .45rem;
    font-size: .75rem;
    line-height: 1.2;
}
.dn-plan-type-stats li.is-zero {
    opacity: .55;
}
.dn-plan-type-stat-label {
    color: var(--tblr-body-color);
}
.dn-plan-type-stat-count {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    min-width: 1.1rem;
    text-align: right;
}
.dn-plan-type-stat-pct {
    color: var(--tblr-secondary-color, var(--dn-text-muted));
    font-variant-numeric: tabular-nums;
    min-width: 2.4rem;
    text-align: right;
}

.dn-plan-ring--sm {
    flex: 0 0 2.15rem;
    width: 2.15rem;
    height: 2.15rem;
}
.dn-plan-ring--sm > span {
    width: 1.4rem;
    height: 1.4rem;
    font-size: .68rem;
}

.dn-plan-bar--sm {
    height: .5rem;
    margin-bottom: 0;
    min-width: 4.5rem;
    max-width: 9rem;
}
.dn-plan-bar--sm .dn-plan-bar-seg {
    font-size: 0;
}

.dn-plan-person {
    display: flex;
    align-items: center;
    gap: .7rem;
    min-width: 0;
    text-decoration: none;
    color: inherit;
}
.dn-plan-person-copy {
    min-width: 0;
    flex: 1;
}
.dn-plan-person-name {
    display: block;
    font-weight: 700;
    font-size: .875rem;
    line-height: 1.25;
    color: inherit;
    text-decoration: none;
    margin-bottom: .35rem;
}
a.dn-plan-person:hover,
a.dn-plan-person-name:hover {
    color: inherit;
}
a.dn-plan-person:hover .dn-plan-person-name,
a.dn-plan-person-name:hover {
    color: var(--dn-primary);
}
a.dn-plan-person:focus-visible,
a.dn-plan-person-name:focus-visible {
    outline: 2px solid var(--dn-primary);
    outline-offset: 2px;
    border-radius: .25rem;
}

@media (max-width: 575.98px) {
    .dn-plan-kpi-value { font-size: 1.65rem; }
    .dn-plan-ring:not(.dn-plan-ring--sm) {
        flex-basis: 3.85rem;
        width: 3.85rem;
        height: 3.85rem;
    }
    .dn-plan-ring:not(.dn-plan-ring--sm) > span {
        width: 2.7rem;
        height: 2.7rem;
        font-size: 1.05rem;
    }
}

[data-bs-theme="dark"] .dn-plan {
    --dn-plan-entregue: #3ecf5a;
    --dn-plan-atrasado: #e85a5a;
    --dn-plan-pendente: #e6b84a;
    --dn-plan-nao: #a89f96;
    --dn-plan-track: rgba(255, 244, 236, .16);
    --dn-plan-hole: var(--tblr-bg-surface, #1b1613);
}
[data-bs-theme="dark"] .dn-plan-type {
    background: var(--dn-surface-muted, #271f1b);
    border-color: var(--dn-border-soft);
}
[data-bs-theme="dark"] .dn-plan-type.is-empty {
    background: transparent;
}
[data-bs-theme="dark"] .dn-plan-bar-seg--pendente {
    color: #1a1512;
}
[data-bs-theme="dark"] .dn-plan-swatch {
    box-shadow: inset 0 0 0 1px rgba(255, 244, 236, .22);
}

/* ---------- Painel: horizonte e listas acionáveis ---------- */
.dn-dash-horizon {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem .75rem;
    margin: 0 0 1rem;
    padding: .45rem .85rem;
    background: var(--tblr-bg-surface, #fff);
    border: 1px solid var(--dn-border-soft);
    border-radius: 999px;
    width: fit-content;
    max-width: 100%;
}
.dn-dash-horizon-item {
    display: inline-flex;
    align-items: baseline;
    gap: .35rem;
    text-decoration: none;
    color: inherit;
    font-size: .8rem;
    font-weight: 600;
    padding: .15rem .45rem;
    border-radius: 999px;
}
.dn-dash-horizon-item:hover {
    color: inherit;
    background: var(--dn-surface-soft, #fff7f0);
}
.dn-dash-horizon-item strong {
    font-variant-numeric: tabular-nums;
    font-weight: 800;
}
.dn-dash-horizon-label {
    color: var(--tblr-secondary-color, var(--dn-text-muted));
    font-weight: 700;
}
.dn-dash-horizon-note {
    font-size: .75rem;
    color: var(--tblr-secondary-color, var(--dn-text-muted));
    font-weight: 600;
    margin-left: .25rem;
}
.dn-dash-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem 1rem;
    flex-wrap: wrap;
}
.dn-dash-item-main {
    display: flex;
    align-items: center;
    gap: .75rem;
    min-width: 0;
    flex: 1 1 12rem;
}
.dn-dash-item-copy {
    min-width: 0;
    flex: 1;
}
.dn-dash-item-meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: .4rem;
    flex: 0 1 auto;
}
.dn-dash-prazo {
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.dn-dash-prazo.is-overdue {
    font-weight: 700;
}

@media (max-width: 575.98px) {
    .dn-dash-horizon {
        border-radius: .75rem;
        width: 100%;
    }
    .dn-dash-item-meta {
        width: 100%;
        justify-content: flex-start;
        padding-left: 2.75rem;
    }
}

[data-bs-theme="dark"] .dn-dash-horizon {
    background: var(--tblr-bg-surface, #1b1613);
}
[data-bs-theme="dark"] .dn-dash-horizon-item:hover {
    background: var(--dn-surface-muted, #271f1b);
}

/* ---------- Mapa de responsabilidades (agrupado por cliente) ---------- */
.dn-mapa {
    --dn-plan-entregue: #2fb344;
    --dn-plan-atrasado: #d63939;
    --dn-plan-pendente: #d9a116;
}
.dn-mapa-hint {
    font-size: .8125rem;
    line-height: 1.45;
}
.dn-mapa-hint a {
    font-weight: 600;
    color: var(--dn-primary);
    text-decoration: none;
}
.dn-mapa-hint a:hover {
    text-decoration: underline;
}
.dn-mapa-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .75rem 1.25rem;
    margin-bottom: .75rem;
    font-size: .8125rem;
}
.dn-mapa-checkall {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    cursor: pointer;
    user-select: none;
    color: var(--tblr-secondary-color, var(--dn-text-muted));
}
.dn-mapa-cliente {
    margin-bottom: .75rem;
    overflow: hidden;
}
.dn-mapa-cliente.is-atrasado {
    box-shadow: inset 3px 0 0 var(--dn-plan-atrasado);
}
.dn-mapa-cliente-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .5rem 1rem;
    padding: .7rem 1rem;
    background: var(--tblr-bg-surface-secondary, var(--dn-surface-soft, #fff7f0));
    border-bottom: 1px solid var(--tblr-border-color);
}
.dn-mapa-cliente-id {
    display: flex;
    align-items: center;
    gap: .7rem;
    min-width: 0;
}
.dn-mapa-cliente-id > div {
    min-width: 0;
}
.dn-mapa-cliente-nome {
    display: block;
    font-weight: 700;
    color: var(--tblr-body-color);
    text-decoration: none;
    line-height: 1.25;
}
.dn-mapa-cliente-nome:hover {
    color: var(--dn-primary);
    text-decoration: none;
}
.dn-mapa-cliente-meta {
    font-size: .75rem;
    color: var(--tblr-secondary-color, var(--dn-text-muted));
}
.dn-mapa-cliente-counts {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
}
.dn-mapa-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .6rem .85rem;
    padding: .65rem 1rem;
    border-top: 1px solid var(--tblr-border-color);
}
.dn-mapa-row:first-child {
    border-top: 0;
}
.dn-mapa-row.is-entregue {
    opacity: .72;
}
.dn-mapa-row.is-atrasado {
    background: color-mix(in srgb, var(--dn-plan-atrasado) 6%, transparent);
}
.dn-mapa-row-main {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .35rem .6rem;
    min-width: 0;
    flex: 1 1 12rem;
}
.dn-mapa-row-tipo {
    display: inline-flex;
    flex-wrap: wrap;
    gap: .25rem;
}
.dn-mapa-periodo,
.dn-mapa-row-conta {
    font-size: .75rem;
    color: var(--tblr-secondary-color, var(--dn-text-muted));
    white-space: nowrap;
}
.dn-mapa-row-focus {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .4rem .65rem;
    margin-left: auto;
}
.dn-mapa-prazo {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    letter-spacing: .01em;
    white-space: nowrap;
    color: var(--tblr-body-color);
}
.dn-mapa-prazo.is-overdue {
    color: var(--dn-plan-atrasado);
}
.dn-mapa-prazo.is-soon {
    color: var(--dn-plan-pendente);
}

@media (max-width: 575.98px) {
    .dn-mapa-row-focus {
        width: 100%;
        margin-left: 1.7rem;
    }
    .dn-mapa-cliente-head {
        padding: .65rem .85rem;
    }
    .dn-mapa-row {
        padding: .6rem .85rem;
    }
}

[data-bs-theme="dark"] .dn-mapa-cliente-head {
    background: var(--tblr-bg-surface-secondary, rgba(255, 255, 255, .04));
}
[data-bs-theme="dark"] .dn-mapa-row.is-atrasado {
    background: rgba(214, 57, 57, .12);
}

/* ---------- Fecho de ano: listagem por estado e etapas ---------- */
.dn-fecho-hint {
    border-left: .28rem solid var(--dn-primary);
}
.dn-fecho-grupo {
    overflow: hidden;
}
.dn-fecho-grupo-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding: .7rem 1rem;
    background: var(--tblr-bg-surface-secondary, var(--dn-surface-soft, #fff7f0));
    border-bottom: 1px solid var(--tblr-border-color);
}
.dn-fecho-grupo--em_andamento {
    border-left: .28rem solid var(--dn-plan-pendente, #d9a116);
}
.dn-fecho-grupo--nao_iniciado {
    border-left: .28rem solid var(--dn-plan-nao, #8a8178);
}
.dn-fecho-grupo--concluido {
    border-left: .28rem solid var(--dn-plan-entregue, #2fb344);
}
.dn-fecho-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .65rem 1rem;
    padding: .75rem 1rem;
    border-top: 1px solid var(--tblr-border-color);
}
.dn-fecho-row:first-child {
    border-top: 0;
}
.dn-fecho-row.is-done {
    opacity: .82;
}
.dn-fecho-row-id {
    display: flex;
    align-items: center;
    gap: .65rem;
    min-width: 12rem;
    flex: 1 1 12rem;
}
.dn-fecho-row-nome {
    font-weight: 700;
    color: inherit;
    text-decoration: none;
}
.dn-fecho-row-nome:hover {
    color: var(--dn-primary);
}
.dn-fecho-row-meta {
    font-size: .75rem;
    color: var(--tblr-secondary-color, var(--dn-text-muted));
}
.dn-fecho-steps {
    display: flex;
    flex-wrap: wrap;
    gap: .3rem;
    list-style: none;
    margin: 0;
    padding: 0;
    flex: 1 1 14rem;
}
.dn-fecho-step {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    padding: .18rem .5rem;
    border-radius: 999px;
    font-size: .72rem;
    font-weight: 700;
    line-height: 1.2;
    border: 1px solid transparent;
}
.dn-fecho-step i {
    font-size: .85rem;
}
.dn-fecho-step.is-done {
    background: color-mix(in srgb, var(--dn-plan-entregue, #2fb344) 14%, transparent);
    color: var(--dn-plan-entregue, #2fb344);
}
.dn-fecho-step.is-pending {
    background: color-mix(in srgb, var(--dn-plan-pendente, #d9a116) 14%, transparent);
    color: #8a6a12;
}
.dn-fecho-step.is-late {
    background: color-mix(in srgb, var(--dn-plan-atrasado, #d63939) 14%, transparent);
    color: var(--dn-plan-atrasado, #d63939);
}
.dn-fecho-step.is-na {
    background: rgba(var(--tblr-emphasis-color-rgb), .05);
    color: var(--tblr-secondary-color, var(--dn-text-muted));
}
.dn-fecho-row-focus {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem .75rem;
    margin-left: auto;
}
.dn-fecho-pct {
    display: flex;
    align-items: center;
    gap: .45rem;
    min-width: 9.5rem;
    font-size: .75rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: var(--tblr-secondary-color, var(--dn-text-muted));
}
.dn-fecho-pct .progress {
    width: 4.5rem;
    flex: 0 0 4.5rem;
}

@media (max-width: 575.98px) {
    .dn-fecho-row-focus {
        width: 100%;
        margin-left: 0;
    }
}

[data-bs-theme="dark"] .dn-fecho-grupo-head {
    background: var(--tblr-bg-surface-secondary, rgba(255, 255, 255, .04));
}
[data-bs-theme="dark"] .dn-fecho-step.is-pending {
    color: #e6b84a;
}
[data-bs-theme="dark"] .dn-fecho-row.is-done {
    opacity: .7;
}

/* ---------- Pagamentos por conta (IRC): listagem ---------- */
.dn-plan-kpi--pago::before,
.dn-plan-kpi--entregue::before { background: var(--dn-plan-entregue); }
.dn-plan-kpi--pendente::before { background: var(--dn-plan-pendente); }
.dn-plan-kpi--atrasado::before { background: var(--dn-plan-atrasado); }
.dn-plan-ring--pago {
    background: conic-gradient(
        var(--dn-plan-entregue) 0 calc(var(--p) * 1%),
        var(--dn-plan-track) 0
    );
}

.dn-ppc-hint {
    border-left: .28rem solid var(--dn-primary);
}
.dn-ppc-grupo {
    overflow: hidden;
}
.dn-ppc-grupo-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding: .7rem 1rem;
    background: var(--tblr-bg-surface-secondary, var(--dn-surface-soft, #fff7f0));
    border-bottom: 1px solid var(--tblr-border-color);
}
.dn-ppc-grupo--atrasado {
    border-left: .28rem solid var(--dn-plan-atrasado, #d63939);
}
.dn-ppc-grupo--pendente {
    border-left: .28rem solid var(--dn-plan-pendente, #d9a116);
}
.dn-ppc-grupo--pago {
    border-left: .28rem solid var(--dn-plan-entregue, #2fb344);
}
.dn-ppc-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .65rem 1rem;
    padding: .75rem 1rem;
    border-top: 1px solid var(--tblr-border-color);
}
.dn-ppc-row:first-child {
    border-top: 0;
}
.dn-ppc-row.is-done {
    opacity: .82;
}
.dn-ppc-row-id {
    display: flex;
    align-items: center;
    gap: .65rem;
    min-width: 12rem;
    flex: 1 1 12rem;
}
.dn-ppc-row-nome {
    font-weight: 700;
    color: inherit;
    text-decoration: none;
}
.dn-ppc-row-nome:hover {
    color: var(--dn-primary);
}
.dn-ppc-row-meta {
    font-size: .75rem;
    color: var(--tblr-secondary-color, var(--dn-text-muted));
}
.dn-ppc-steps {
    display: flex;
    flex-wrap: wrap;
    gap: .3rem;
    list-style: none;
    margin: 0;
    padding: 0;
    flex: 1 1 16rem;
}
.dn-ppc-step {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    padding: .18rem .5rem;
    border-radius: 999px;
    font-size: .72rem;
    font-weight: 700;
    line-height: 1.2;
    border: 1px solid transparent;
}
.dn-ppc-step i {
    font-size: .85rem;
}
.dn-ppc-step.is-done {
    background: color-mix(in srgb, var(--dn-plan-entregue, #2fb344) 14%, transparent);
    color: var(--dn-plan-entregue, #2fb344);
}
.dn-ppc-step.is-pending {
    background: color-mix(in srgb, var(--dn-plan-pendente, #d9a116) 14%, transparent);
    color: #8a6a12;
}
.dn-ppc-step.is-late {
    background: color-mix(in srgb, var(--dn-plan-atrasado, #d63939) 14%, transparent);
    color: var(--dn-plan-atrasado, #d63939);
}
.dn-ppc-step.is-na {
    background: rgba(var(--tblr-emphasis-color-rgb), .05);
    color: var(--tblr-secondary-color, var(--dn-text-muted));
}
.dn-ppc-row-focus {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem .75rem;
    margin-left: auto;
}
.dn-ppc-pct {
    display: flex;
    align-items: center;
    gap: .45rem;
    min-width: 9.5rem;
    font-size: .75rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: var(--tblr-secondary-color, var(--dn-text-muted));
}
.dn-ppc-pct .progress {
    width: 4.5rem;
    flex: 0 0 4.5rem;
}

@media (max-width: 575.98px) {
    .dn-ppc-row-focus {
        width: 100%;
        margin-left: 0;
    }
}

[data-bs-theme="dark"] .dn-ppc-grupo-head {
    background: var(--tblr-bg-surface-secondary, rgba(255, 255, 255, .04));
}
[data-bs-theme="dark"] .dn-ppc-step.is-pending {
    color: #e6b84a;
}
[data-bs-theme="dark"] .dn-ppc-row.is-done {
    opacity: .7;
}

/* ---------- Ficha: tab Documentos (checklist SNC + arquivo) ---------- */
.dn-documentos-falta {
    padding: 1.5rem 1.25rem 1.75rem;
}
.dn-documentos-falta-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem 1.75rem;
    flex-wrap: wrap;
    margin-bottom: 1rem;
}
.dn-documentos-falta-title {
    margin: 0 0 .4rem;
    font-size: 1.25rem;
    font-weight: 650;
    letter-spacing: 0;
    line-height: 1.35;
}
.dn-documentos-falta-empty,
.dn-documentos-importar-ajuda {
    margin: 0;
    max-width: 28rem;
    color: var(--tblr-secondary-color, var(--dn-text-muted));
    font-size: .875rem;
    line-height: 1.5;
    letter-spacing: 0;
}
.dn-documentos-importar-ajuda {
    margin-top: .45rem;
}
.dn-documentos-falta-accao {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .45rem;
}
.dn-documentos-falta-accao-botoes {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    justify-content: flex-end;
    align-items: stretch;
}
.dn-documentos-falta-accao-botoes .btn,
.dn-documentos-falta-accao-botoes .dn-documentos-importar .btn {
    min-height: 2.5rem;
    padding: .5rem 1rem;
    font-size: .875rem;
    line-height: 1.25;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.dn-documentos-importar {
    display: flex;
    margin: 0;
}
.dn-doc-estado-cards {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .75rem;
    margin-bottom: 1rem;
}
.dn-doc-estado-card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: .15rem;
    padding: .85rem 1rem;
    border-radius: .65rem;
    text-decoration: none;
    color: inherit;
    border: 1px solid var(--tblr-border-color);
    background: var(--tblr-bg-surface, #fff);
    min-height: 4.5rem;
}
.dn-doc-estado-card:hover {
    text-decoration: none;
    color: inherit;
    filter: brightness(.98);
}
.dn-doc-estado-card.is-active {
    box-shadow: inset 0 0 0 2px currentColor;
}
.dn-doc-estado-num {
    font-size: 1.75rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    line-height: 1.1;
    letter-spacing: 0;
}
.dn-doc-estado-lbl {
    font-size: .9rem;
    font-weight: 650;
    letter-spacing: 0;
}
.dn-doc-estado-card.is-tens {
    background: #ecfdf3;
    border-color: #abefc6;
    color: #067647;
}
.dn-doc-estado-card.is-pedido {
    background: #fff6e5;
    border-color: #f7c948;
    color: #9a6700;
}
.dn-doc-estado-card.is-falta {
    background: #fef3f2;
    border-color: #fecdca;
    color: #b42318;
}
.dn-doc-estado-filtro {
    margin: 0 0 .75rem;
    max-width: 12rem;
}
.dn-doc-pill {
    display: inline-block;
    padding: .15rem .55rem;
    border-radius: 999px;
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: 0;
    line-height: 1.4;
    white-space: nowrap;
}
.dn-doc-pill.is-tens {
    background: #abefc6;
    color: #054f31;
}
.dn-doc-pill.is-pedido {
    background: #f7c948;
    color: #7a5200;
}
.dn-doc-pill.is-falta {
    background: #fecdca;
    color: #912018;
}
.dn-doc-linha.is-tens td:nth-child(2) { box-shadow: inset 3px 0 0 #17b26a; }
.dn-doc-linha.is-pedido td:nth-child(2) { box-shadow: inset 3px 0 0 #f79009; }
.dn-doc-linha.is-falta td:nth-child(2) { box-shadow: inset 3px 0 0 #f04438; }
.dn-documentos-falta-tabela .dn-pedir-check {
    width: 2rem;
    vertical-align: middle;
}
.dn-documentos-ja-ficheiro-link {
    display: inline-block;
    margin-top: .15rem;
    font-size: .75rem;
}
.dn-documentos-fornecedor {
    letter-spacing: 0;
    line-height: 1.4;
}
.dn-documentos-arquivo {
    margin-top: .25rem;
    padding: 2.25rem 1.25rem 1.5rem;
    border-top: 1px solid var(--tblr-border-color);
}
.dn-documentos-arquivo-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 1.25rem;
}
.dn-documentos-arquivo-title {
    margin: 0;
    font-size: 1rem;
    font-weight: 500;
    color: var(--tblr-secondary-color, var(--dn-text-muted));
    letter-spacing: 0;
    line-height: 1.4;
}
.dn-documentos-arquivo-vazio {
    padding-top: 1rem;
    padding-bottom: 2rem;
}

/* ---------- Painel: listas compactas ---------- */
.dn-section-title {
    font-size: .8rem;
    font-weight: 700;
    letter-spacing: .05em;
    text-transform: uppercase;
    color: var(--tblr-secondary-color, var(--dn-text-muted));
}
.dn-dash-dot {
    display: inline-block;
    width: .55rem;
    height: .55rem;
    border-radius: 50%;
    margin-right: .5rem;
    background: var(--dn-primary);
}
.dn-dash-dot.is-danger { background: var(--tblr-danger, #d63939); }
.dn-dash-card .dn-dash-item { padding: .7rem 1rem; }
.dn-dash-card .dn-dash-item-meta { flex-wrap: nowrap; gap: .5rem; }
.dn-dash-card .dn-dash-item-main { flex-basis: 0; }
.dn-dash-card .dn-dash-item:hover .ti-chevron-right { color: var(--dn-primary) !important; transform: translateX(2px); }
.dn-dash-card .ti-chevron-right { transition: transform .12s ease, color .12s ease; }

/* Portal do cliente: segunda linha das listas de documentos */
.dn-portal-row-sub {
    display: block;
    font-size: .8rem;
    color: var(--tblr-secondary-color, var(--dn-text-muted));
}

/* Painel: ícone colorido nos cartões de números (substitui os anéis de percentagem) */
.dn-kpi-icon { width: 44px; height: 44px; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; font-size: 1.4rem; flex: 0 0 auto; }
.dn-kpi-icon--aberto { background: #e7f1ff; color: #206bc4; }
.dn-kpi-icon--atrasado { background: #fdecec; color: #d63939; }

/* Menus com secções (Obrigações, Configurações): títulos discretos e itens mais recuados */
.dn-menu-secoes .dropdown-header {
    padding-left: 1rem;
    margin-top: .25rem;
    font-size: .72rem;
    letter-spacing: .05em;
    color: var(--tblr-secondary, #667382);
}
.dn-menu-secoes .dropdown-item {
    padding-left: 2.25rem;
}

/* Separadores da ficha sem cor própria: Trabalho, Bens e acessos e Compras */
[data-dn-cliente-tabs] .nav-link[data-dn-tab-id="trabalho"] .dn-client-tab-icon {
    background: rgba(214, 51, 108, .14);
    color: #d6336c !important;
}
[data-dn-cliente-tabs] .nav-link[data-dn-tab-id="bens"] .dn-client-tab-icon {
    background: rgba(232, 89, 12, .14);
    color: #e8590c !important;
}
[data-dn-cliente-tabs] .nav-link[data-dn-tab-id="compras"] .dn-client-tab-icon {
    background: rgba(92, 148, 13, .14);
    color: #5c940d !important;
}
[data-dn-cliente-tabs] .nav-link.active[data-dn-tab-id="trabalho"] .dn-client-tab-icon {
    background: #d6336c;
    color: #fff !important;
}
[data-dn-cliente-tabs] .nav-link.active[data-dn-tab-id="bens"] .dn-client-tab-icon {
    background: #e8590c;
    color: #fff !important;
}
[data-dn-cliente-tabs] .nav-link.active[data-dn-tab-id="compras"] .dn-client-tab-icon {
    background: #5c940d;
    color: #fff !important;
}

/* Separadores Acessos (azul-turquesa) e Avença (verde-azulado) */
[data-dn-cliente-tabs] .nav-link[data-dn-tab-id="acessos"] .dn-client-tab-icon {
    background: rgba(12, 166, 120, .14);
    color: #0ca678 !important;
}
[data-dn-cliente-tabs] .nav-link[data-dn-tab-id="avenca"] .dn-client-tab-icon {
    background: rgba(66, 99, 235, .14);
    color: #4263eb !important;
}
[data-dn-cliente-tabs] .nav-link.active[data-dn-tab-id="acessos"] .dn-client-tab-icon {
    background: #0ca678;
    color: #fff !important;
}
[data-dn-cliente-tabs] .nav-link.active[data-dn-tab-id="avenca"] .dn-client-tab-icon {
    background: #4263eb;
    color: #fff !important;
}


/* Ficha: duas colunas equilibradas em ecrãs grandes (cartões não se partem entre colunas) */
@media (min-width: 992px) {
    .dn-ficha-colunas {
        display: block !important;
        column-count: 2;
        column-gap: 1.25rem;
        margin: 0;
    }
    .dn-ficha-colunas > [class*="col-"] {
        display: contents;
    }
    .dn-ficha-colunas .card {
        display: block;
        width: 100%;
        break-inside: avoid;
        margin-bottom: 1.25rem;
    }
}


/* Dicas (tooltip) escuras: substituem o popup nativo do navegador nos botões com título. */
[data-dn-tip] {
    position: relative;
}
[data-dn-tip]::after {
    content: attr(data-dn-tip);
    position: absolute;
    bottom: calc(100% + 6px);
    left: 50%;
    transform: translateX(-50%);
    background: #111827;
    color: #ffffff;
    font-size: 0.75rem;
    line-height: 1.2;
    padding: 0.3rem 0.55rem;
    border-radius: 0.375rem;
    white-space: nowrap;
    opacity: 0;
    pointer-events: none;
    z-index: 1100;
    /* Fora de vista não ocupa espaço: uma dica larga junto à margem direita criava scroll horizontal nas tabelas. */
    display: none;
}
[data-dn-tip]:hover::after,
[data-dn-tip]:focus-visible::after {
    display: block;
    opacity: 1;
    animation: dn-dica-entrar 0.12s ease;
}
@keyframes dn-dica-entrar {
    from { opacity: 0; }
    to { opacity: 1; }
}
/* Última coluna das tabelas: a dica abre para a esquerda, para não sair do ecrã. */
td:last-child [data-dn-tip]::after {
    left: auto;
    right: 0;
    transform: none;
}


/* Painel: gráfico de colunas e barras horizontais (sem biblioteca externa). */
.dn-grafico {
    display: flex;
    align-items: stretch;
    gap: 0.5rem;
    height: 240px;
}
.dn-grafico-coluna {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
}
.dn-grafico-barras {
    flex: 1 1 auto;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    gap: 3px;
}
.dn-barra {
    width: 42%;
    max-width: 14px;
    border-radius: 4px 4px 0 0;
    min-height: 2px;
}
.dn-barra--este { background: #f97316; }
.dn-barra--ant { background: #9ca3af; }
.dn-grafico-rotulo {
    margin-top: 0.4rem;
    text-align: center;
    font-size: 0.72rem;
    color: #6b7280;
}
.dn-legenda { display: inline-flex; align-items: center; gap: 0.35rem; }
.dn-legenda-cor { display: inline-block; width: 10px; height: 10px; border-radius: 3px; }
.dn-legenda-cor--este { background: #f97316; }
.dn-legenda-cor--ant { background: #9ca3af; }
.dn-hbarra {
    height: 8px;
    border-radius: 4px;
    background: rgba(148, 163, 184, 0.25);
    overflow: hidden;
}
.dn-hbarra-preench {
    height: 100%;
    border-radius: 4px;
    background: #f97316;
}

/* Painel: linha de cartões de topo, 4 colunas iguais (2 em ecrãs médios, 1 no telemóvel). */
.dn-kpis {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1rem;
}
.dn-kpi-coluna .card {
    height: 100%;
}
@media (max-width: 1199.98px) {
    .dn-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 575.98px) {
    .dn-kpis { grid-template-columns: minmax(0, 1fr); }
}


/* Obrigações: cartões com ícone por grupo, número em tempo real e destaque ao passar o rato. */
.dn-hub-grupo-titulo {
    display: flex;
    align-items: baseline;
    gap: 0.75rem;
    margin-bottom: 0.9rem;
    padding-left: 0.75rem;
    border-left: 4px solid #f97316;
}
.dn-hub-grupo-titulo--azul { border-left-color: #2563eb; }
.dn-hub-grupo-titulo--verde { border-left-color: #16a34a; }
/* Cada grupo define a sua cor (--hub-rgb) e tudo no cartão a usa. */
.dn-hub-card { --hub-rgb: 249, 115, 22; --hub-cor: #ea580c; }
.dn-hub-card--azul { --hub-rgb: 37, 99, 235; --hub-cor: #2563eb; }
.dn-hub-card--verde { --hub-rgb: 22, 163, 74; --hub-cor: #15803d; }
.dn-hub-card--roxo { --hub-rgb: 124, 58, 237; --hub-cor: #7c3aed; }
.dn-hub-card {
    position: relative;
    min-height: 176px;
    overflow: hidden;
    border: 1px solid rgba(148, 163, 184, 0.28);
    border-radius: 1rem;
    background:
        radial-gradient(120% 90% at 100% 0%, rgba(var(--hub-rgb), 0.09) 0%, rgba(var(--hub-rgb), 0) 55%),
        var(--tblr-bg-surface, #fff);
    transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
}
.dn-hub-card::before {
    content: "";
    position: absolute;
    inset: 0 0 auto 0;
    height: 4px;
    background: linear-gradient(90deg, var(--hub-cor), rgba(var(--hub-rgb), 0.35));
    opacity: 0.85;
    transition: height 0.18s ease;
}
.dn-hub-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 1rem 2rem rgba(var(--hub-rgb), 0.18), 0 0.25rem 0.6rem rgba(33, 27, 24, 0.08);
    border-color: rgba(var(--hub-rgb), 0.5);
}
.dn-hub-card:hover::before { height: 6px; }
.dn-hub-icone {
    flex: 0 0 auto;
    width: 3.4rem;
    height: 3.4rem;
    border-radius: 1rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.65rem;
    color: var(--hub-cor);
    background: linear-gradient(145deg, rgba(var(--hub-rgb), 0.22), rgba(var(--hub-rgb), 0.08));
    box-shadow: inset 0 0 0 1px rgba(var(--hub-rgb), 0.22);
    transition: transform 0.18s ease, background 0.18s ease, color 0.18s ease;
}
.dn-hub-card:hover .dn-hub-icone {
    transform: scale(1.06) rotate(-4deg);
    background: linear-gradient(145deg, var(--hub-cor), rgba(var(--hub-rgb), 0.78));
    color: #fff;
}
.dn-hub-titulo { font-size: 1.1rem; font-weight: 700; line-height: 1.25; margin-bottom: 0.3rem; letter-spacing: -0.01em; }
.dn-hub-desc { font-size: 0.86rem; line-height: 1.45; color: var(--tblr-secondary, #6b7280); }
.dn-hub-rodape { border-top: 1px dashed rgba(148, 163, 184, 0.4); }
.dn-hub-rodape .badge { font-weight: 600; padding: 0.4em 0.75em; border-radius: 999px; }
.dn-hub-abrir {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.82rem;
    font-weight: 600;
    color: #6b7280;
    transition: color 0.15s ease;
}
.dn-hub-seta {
    width: 1.7rem;
    height: 1.7rem;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: rgba(var(--hub-rgb), 0.1);
    color: var(--hub-cor);
    transition: background 0.18s ease, color 0.18s ease, transform 0.18s ease;
}
.dn-hub-card:hover .dn-hub-abrir { color: var(--hub-cor); }
.dn-hub-card:hover .dn-hub-seta { background: var(--hub-cor); color: #fff; transform: translateX(3px); }
[data-bs-theme="dark"] .dn-hub-card { background: radial-gradient(120% 90% at 100% 0%, rgba(var(--hub-rgb), 0.14) 0%, rgba(var(--hub-rgb), 0) 55%), var(--tblr-bg-surface); }

.dn-hub-grupo-titulo--roxo { border-left-color: #7c3aed; }

/* Cabeçalho de todos os cartões da app com um tom de fundo também no tema claro
   (no escuro já usa o fundo próprio do tema). Cabeçalhos com cor própria (bg-*) e a
   barra de separadores da ficha do cliente mantêm o seu estilo. */
.card-header {
    background-color: #f6f2ed;
}
[data-bs-theme="dark"] .card-header {
    background-color: var(--tblr-card-cap-bg);
}

/* Cabeçalho das janelas (modais) com o mesmo tom dos cabeçalhos dos cartões. */
.modal-header,
#dn-pdf-preview-modal .modal-header {
    background-color: #f6f2ed;
}
[data-bs-theme="dark"] .modal-header,
[data-bs-theme="dark"] #dn-pdf-preview-modal .modal-header {
    background-color: var(--tblr-card-cap-bg);
}

/* ---------- Campos de palavra-passe com olho ---------- */
.dn-pw { position: relative; display: block; width: 100%; }
.dn-pw .dn-pw-input { padding-right: 2.75rem; }
.dn-pw-toggle {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    width: 2.75rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 0;
    background: transparent;
    color: var(--tblr-secondary-color, var(--dn-text-muted));
    cursor: pointer;
    border-radius: 0 var(--tblr-border-radius, .375rem) var(--tblr-border-radius, .375rem) 0;
}
.dn-pw-toggle:hover { color: var(--dn-primary); }
.dn-pw-toggle:focus-visible { outline: 2px solid var(--dn-primary); outline-offset: -2px; }
.dn-pw-toggle .ti { font-size: 1.15rem; }

/* ---------- Listas longas com pesquisa (ex.: clientes) ---------- */
.dn-combo { position: relative; display: block; }
.dn-combo .dn-combo-select-oculto { position: absolute; left: 0; bottom: 0; width: 100%; height: 1px; opacity: 0; pointer-events: none; }
.dn-combo .dn-combo-campo { width: 100%; cursor: text; text-overflow: ellipsis; }
/* Campo com pesquisa + botão «+» (criar novo): o botão fica ao lado do campo, não por cima. */
.dn-combo:has(> .d-flex > select[data-dn-quick-create]) { display: flex; align-items: center; gap: .5rem; }
.dn-combo:has(> .d-flex > select[data-dn-quick-create]) > .d-flex { order: 2; flex: 0 0 auto; width: auto; }
.dn-combo:has(> .d-flex > select[data-dn-quick-create]) > .dn-combo-campo { order: 1; flex: 1 1 auto; width: auto; min-width: 0; }
.dn-combo-lista {
    position: absolute;
    z-index: 1060;
    top: calc(100% + 4px);
    left: 0;
    min-width: 100%;
    width: max-content;
    max-width: min(32rem, 90vw);
    max-height: 18rem;
    overflow-y: auto;
    padding: .25rem;
    background: var(--tblr-bg-surface, #fff);
    border: 1px solid var(--dn-border-soft, #eadccf);
    border-radius: .5rem;
    box-shadow: 0 12px 32px rgba(33, 27, 24, .18);
}
.dn-combo-item {
    padding: .45rem .65rem;
    border-radius: .375rem;
    cursor: pointer;
    font-size: .9rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.dn-combo-item.is-todos { color: var(--tblr-secondary-color, #6b6b6b); font-style: italic; }
.dn-combo-item.is-atual { font-weight: 700; }
.dn-combo-item.is-ativo,
.dn-combo-item:hover { background: var(--dn-surface-soft, #fff7f0); color: var(--dn-primary-strong, #a94c10); }
.dn-combo-vazio { padding: .6rem .75rem; color: var(--tblr-secondary-color, #6b6b6b); font-size: .875rem; }
[data-bs-theme="dark"] .dn-combo-lista { background: var(--tblr-bg-surface, #1b1613); border-color: var(--tblr-border-color, #3a2f29); }
[data-bs-theme="dark"] .dn-combo-item.is-ativo,
[data-bs-theme="dark"] .dn-combo-item:hover { background: var(--dn-surface-muted, #271f1b); }

/* ---------- Escolha múltipla com caixas (ex.: «Outros contabilistas») ---------- */
.dn-checks {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr));
    gap: .5rem 1.25rem;
    max-height: 14rem;
    overflow-y: auto;
    padding: .75rem 1rem;
    background: var(--tblr-bg-surface, #fff);
    border: 1px solid var(--dn-border-soft, #eadccf);
    border-radius: .5rem;
}
.dn-checks .form-check { display: flex; align-items: center; gap: .5rem; padding-left: 0; margin: 0; cursor: pointer; }
.dn-checks .form-check-input { float: none; margin: 0; flex: 0 0 auto; }
.dn-checks .form-check-label { cursor: pointer; }
[data-bs-theme="dark"] .dn-checks { background: var(--tblr-bg-surface, #1b1613); border-color: var(--tblr-border-color, #3a2f29); }


/* Contador de notificações: bola vermelha, número branco e centrado, no canto do sino. */
.nav-link .badge.dn-notif-badge {
    position: absolute;
    top: -0.15rem;
    right: -0.4rem;
    box-sizing: border-box;
    min-width: 1.3rem;
    height: 1.3rem;
    padding: 0 0.25rem;
    display: grid;
    place-items: center;
    text-align: center;
    font-size: 0.7rem;
    font-weight: 700;
    line-height: 1;
    letter-spacing: 0;
    text-indent: 0;
    color: #fff !important;
    box-shadow: 0 0 0 2px var(--tblr-bg-surface, #fff);
}


.dn-portal-kpis { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; margin-bottom: 1.25rem; }
.dn-portal-kpi { display: flex; align-items: center; gap: .85rem; padding: 1rem; border-radius: .9rem; background: #fff; border: 1px solid var(--dn-border-soft, #eadccf); color: inherit; text-decoration: none; transition: transform .15s, box-shadow .15s; }
.dn-portal-kpi:hover { transform: translateY(-2px); box-shadow: 0 .6rem 1.2rem -.8rem rgba(33, 27, 24, .35); color: inherit; }
.dn-portal-kpi.is-alerta { border-color: rgba(214, 57, 57, .45); background: #fff8f7; }
.dn-portal-kpi-icone { flex: 0 0 auto; width: 2.6rem; height: 2.6rem; border-radius: .75rem; display: inline-flex; align-items: center; justify-content: center; font-size: 1.3rem; }
.dn-portal-kpi-num { display: block; font-family: "Lexend", "Inter", sans-serif; font-weight: 700; font-size: 1.6rem; line-height: 1.05; color: var(--dn-charcoal, #251f1b); }
.dn-portal-kpi-rotulo { display: block; font-size: .78rem; color: var(--tblr-secondary, #6b6b6b); }
.dn-portal-atividade { display: flex; align-items: center; gap: .85rem; padding: .75rem 1rem; }
.dn-portal-atividade .dn-portal-kpi-icone { width: 2.2rem; height: 2.2rem; font-size: 1.1rem; }
.dn-portal-alerta-panel { border-color: rgba(214, 57, 57, .35); }
.dn-portal-envio-dicas { margin-top: 1rem; }
.dn-portal-pesquisa .form-control, .dn-portal-pesquisa .form-select { background: #fff; }

/* ---------- Portal do cliente no computador (≥ 992px): mais largo, em colunas, sem o ar de telemóvel ---------- */
.dn-portal-dash { display: flex; flex-direction: column; }
.dn-portal-ctas { display: flex; flex-direction: column; gap: .6rem; margin-bottom: 1rem; }
.dn-portal-ctas .btn { width: 100%; }
.dn-portal-lote-convite { display: none; }  /* o convite ao lote só se mostra no computador */
@media (min-width: 992px) {
    .dn-portal-shell { max-width: 1180px; }
    .dn-portal-main { padding: 2rem 1.5rem 2.5rem; }
    .dn-portal-header { padding: 1rem 1.5rem; }
    .dn-portal-nav-top .nav { justify-content: flex-start !important; }
    .dn-portal-nav-top .nav-link { font-size: .95rem; padding: 1rem 1.25rem .9rem; }
    .dn-portal-greeting { font-size: 1.9rem; }
    .dn-portal-lede, .dn-portal-page-lede { font-size: 1rem; }
    /* Início: coluna principal (em falta + recentes) e coluna lateral (atalhos + guias) */
    .dn-portal-dash {
        display: grid;
        grid-template-columns: minmax(0, 1fr) 360px;
        grid-template-areas:
            "intro ctas"
            "kpis  kpis"
            "falta guias"
            "docs  guias"
            "fat   guias";
        column-gap: 2rem;
        align-items: start;
    }
    .dn-portal-a-intro { grid-area: intro; }
    .dn-portal-a-kpis { grid-area: kpis; }
    .dn-portal-a-falta { grid-area: falta; }
    .dn-portal-a-ctas { grid-area: ctas; align-self: end; }
    .dn-portal-a-guias { grid-area: guias; }
    .dn-portal-a-docs { grid-area: docs; }
    .dn-portal-a-faturas { grid-area: fat; }
    .dn-portal-a-ctas .dn-portal-ctas { margin-bottom: 1.25rem; }
    .dn-portal-row { padding: 1rem 1.25rem; }
    .dn-portal-row-title { font-size: 1rem; }
    .dn-portal-lote-convite { display: flex; }
    .dn-portal-envio { display: grid; grid-template-columns: minmax(0, 1fr) 380px; column-gap: 2rem; align-items: start; }
    .dn-portal-envio-principal { grid-column: 1; grid-row: 1; }
    .dn-portal-envio-lateral { grid-column: 2; grid-row: 1; }
    .dn-portal-envio-dicas { display: block !important; }
    .dn-portal-envio-dicas.d-none { display: block !important; }
    .dn-portal-kpis { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 1rem; margin: .5rem 0 1.75rem; }
    /* No computador não se tira fotografia com a câmara do browser: escolhe-se o ficheiro */
    #dn-camara-abrir, .dn-portal-camara-dicas { display: none !important; }
}

/* ---------- Ecrã de entrada: painel de marca mais completo e cartão do formulário mais cuidado ---------- */
.dn-auth-card { box-shadow: 0 1px 0 rgba(255,255,255,.9) inset, 0 30px 60px -30px rgba(var(--dn-charcoal-rgb), .8); }
.dn-auth-head__title { font-size: 1.65rem; letter-spacing: -0.03em; }
.dn-auth-head__eyebrow { color: var(--dn-primary-strong, #a94c10); font-weight: 700; letter-spacing: .12em; }
.dn-auth-card .form-control { border-radius: .65rem; }
.dn-auth-submit {
    background: linear-gradient(180deg, #cf651a 0%, #b4530f 100%);
    border: 0;
    box-shadow: 0 1px 0 rgba(255,255,255,.22) inset, 0 12px 24px -14px rgba(var(--dn-primary-shadow-rgb), .9);
}
.dn-auth-submit:hover { filter: brightness(1.06); transform: translateY(-1px); }
.dn-auth-footer { display: flex; flex-direction: column; gap: .5rem; align-items: center; }

@media (min-width: 992px) {
    .dn-auth-page:not(.dn-auth-page--2fa-setup) .dn-auth-brand-panel { align-items: stretch; }
    .dn-auth-hero { max-width: 34rem !important; width: 100%; min-height: 100%; display: flex; flex-direction: column; justify-content: space-between; gap: 2rem; }
    .dn-auth-hero__brand { display: flex; align-items: center; gap: .85rem; }
    .dn-auth-hero__brand .dn-auth-brand-panel__mark { margin: 0; }
    .dn-auth-hero__name { font-family: "Lexend", "Inter", sans-serif; font-weight: 700; font-size: 1.4rem; letter-spacing: -0.03em; color: rgba(255,244,236,.96); }
    .dn-auth-hero__headline { margin: 0 0 1rem; font-family: "Lexend", "Inter", sans-serif; font-weight: 700; font-size: clamp(2rem, 3.4vw, 2.9rem); line-height: 1.08; letter-spacing: -0.04em; color: #fff4ec; }
    .dn-auth-hero__headline em { font-style: normal; background: linear-gradient(90deg, #ff9a4d, #ffcf99); -webkit-background-clip: text; background-clip: text; color: transparent; }
    .dn-auth-hero__lede { margin: 0 0 1.75rem; font-size: 1.02rem; line-height: 1.6; color: rgba(255,244,236,.66); max-width: 30rem; }
    .dn-auth-hero__features { list-style: none; margin: 0 0 1.75rem; padding: 0; display: grid; gap: .75rem; }
    .dn-auth-hero__features li { display: flex; gap: .9rem; align-items: flex-start; padding: .85rem 1rem; border-radius: .9rem; background: rgba(255,244,236,.045); border: 1px solid rgba(255,244,236,.08); backdrop-filter: blur(6px); }
    .dn-auth-hero__features li::before { display: none; }
    .dn-auth-hero__features strong { display: block; color: rgba(255,244,236,.95); font-size: .92rem; font-weight: 600; margin-bottom: .1rem; }
    .dn-auth-hero__features small { display: block; color: rgba(255,244,236,.55); font-size: .8rem; line-height: 1.45; }
    .dn-auth-hero__icon { flex: 0 0 auto; width: 2.4rem; height: 2.4rem; display: inline-flex; align-items: center; justify-content: center; border-radius: .7rem; font-size: 1.2rem; color: #ffb26b; background: linear-gradient(145deg, rgba(var(--dn-primary-rgb), .32), rgba(var(--dn-primary-rgb), .1)); box-shadow: inset 0 0 0 1px rgba(var(--dn-primary-rgb), .35); }
    .dn-auth-hero__preview { display: flex; flex-wrap: wrap; gap: .6rem; }
    .dn-auth-hero__chip { display: inline-flex; align-items: center; gap: .45rem; padding: .45rem .8rem; border-radius: 999px; font-size: .78rem; font-weight: 600; background: rgba(255,244,236,.07); border: 1px solid rgba(255,244,236,.1); color: rgba(255,244,236,.85); }
    .dn-auth-hero__chip--ok i { color: #5fd38d; }
    .dn-auth-hero__chip--warn i { color: #ffc15e; }
    .dn-auth-hero__chip--info i { color: #6cb6ff; }
    .dn-auth-hero__trust { display: flex; flex-wrap: wrap; gap: .5rem 1.4rem; padding-top: 1.25rem; border-top: 1px solid rgba(255,244,236,.1); font-size: .78rem; color: rgba(255,244,236,.5); }
    .dn-auth-hero__trust i { margin-right: .35rem; color: rgba(var(--dn-primary-rgb), .95); }
}
@media (max-width: 991.98px) { .dn-auth-hero { display: none; } }

/* Início do portal em ecrãs pequenos: atalhos logo a seguir ao título */
.dn-portal-a-intro { order: 0; }
.dn-portal-a-ctas { order: 1; }
.dn-portal-a-kpis { order: 2; }
.dn-portal-a-falta { order: 3; }
.dn-portal-a-guias { order: 4; }
.dn-portal-a-docs { order: 5; }
.dn-portal-a-faturas { order: 6; }
@media (min-width: 576px) and (max-width: 991.98px) { .dn-portal-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); } }


/* Botão «Analisar com IA» nas linhas dos documentos */
.dn-util-icon-btn.dn-action-ia { background: linear-gradient(135deg, #7c3aed, #4263eb); border-color: #6d4ee0; color: #fff; }
.dn-util-icon-btn.dn-action-ia:hover, .dn-util-icon-btn.dn-action-ia:focus-visible { filter: brightness(1.1); color: #fff; }
.dn-util-icon-btn.dn-action-ia.disabled { opacity: .75; pointer-events: none; }


/* Marca própria do gabinete (planos que a incluem) */
.dn-auth-hero__logo { max-height: 3.4rem; max-width: 16rem; width: auto; object-fit: contain; border-radius: .5rem; background: #fff; padding: .4rem .7rem; }
.dn-auth-mobile-brand__logo { max-height: 2.4rem; max-width: 12rem; object-fit: contain; border-radius: .4rem; background: #fff; padding: .2rem .5rem; }
.dn-portal-brand-logo { max-height: 2.4rem; max-width: 9rem; object-fit: contain; border-radius: .4rem; background: #fff; padding: .15rem .4rem; }
.dn-marca-pre { display: flex; align-items: center; gap: 1rem; padding: 1rem; border-radius: .9rem; background: #2b221e; color: #fff; }
.dn-marca-pre img { max-height: 3rem; max-width: 12rem; background: #fff; border-radius: .4rem; padding: .25rem .5rem; }

/* Número dentro de um botão ativo (laranja): cápsula branca com texto escuro, legível nos dois temas */
.btn-primary .badge,
.btn-primary .badge[class*="bg-"] {
    background: #fff !important;
    color: #8a3d0c !important;
    font-weight: 700;
}

/* Logótipo do gabinete no ecrã de entrada: maior no ecrã largo; no telemóvel não aparece */
.dn-auth-hero__logo { max-height: 5rem; max-width: 22rem; padding: .55rem .9rem; }
.dn-auth-mobile-brand:has(.dn-auth-mobile-brand__logo) { display: none; }

/* Envio em lote: passos numerados a cor */
.dn-lote-passo { display: flex; align-items: center; gap: .6rem; color: var(--tblr-primary, #bf5a16); }
.dn-lote-num {
    display: inline-grid; place-items: center; width: 1.9rem; height: 1.9rem; flex: 0 0 auto;
    border-radius: 50%; background: var(--tblr-primary, #bf5a16); color: #fff; font-size: .95rem; font-weight: 700;
    box-shadow: 0 .25rem .6rem rgba(191, 90, 22, .28);
}


/* Marca DeskNow: o D com relógio dentro do quadrado laranja */
.dn-brand-mark .dn-brand-glifo { width: 74%; height: 74%; display: block; }


/* Nome DeskNow: «Desk» normal e «Now» a laranja e a negrito (mais claro nos fundos escuros) */
.dn-wordmark { font-weight: 500; }
.dn-wordmark .dn-wordmark-now { font-weight: 800; color: var(--dn-primary); }
:root[data-bs-theme="dark"] .dn-wordmark .dn-wordmark-now { color: #e29658; }
.dn-auth-hero__name.dn-wordmark .dn-wordmark-now,
.dn-auth-mobile-brand__name.dn-wordmark .dn-wordmark-now { color: #f0a468; }


/* Credenciais: botão com texto («Abrir portal»), para se perceber o que abre */
.dn-abrir-portal {
    background: #15aabf; border-color: #15aabf; color: #fff; white-space: nowrap; font-weight: 600;
    /* mesma altura dos botões de ícone ao lado (2rem) */
    height: 2rem; padding: 0 .75rem; display: inline-flex; align-items: center; justify-content: center;
    font-size: .8125rem; line-height: 1;
}
.dn-abrir-portal i { font-size: 1.05rem; line-height: 1; }
.dn-abrir-portal:hover, .dn-abrir-portal:focus-visible { background: #1098ad; border-color: #1098ad; color: #fff; }


/* Seletor de hora (mesma folha do calendário) */
.dn-timepicker-cols { display: flex; align-items: flex-start; justify-content: center; gap: .5rem; padding: 1rem 1.25rem .5rem; }
.dn-timepicker-col { flex: 1 1 0; min-width: 0; text-align: center; }
.dn-timepicker-colhead { font-size: .75rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--tblr-secondary-color, #6c7a89); margin-bottom: .5rem; }
.dn-timepicker-sep { align-self: center; font-size: 1.5rem; font-weight: 700; padding-top: 1.6rem; color: var(--tblr-secondary-color, #6c7a89); }
.dn-timepicker-list { max-height: 14rem; overflow-y: auto; display: flex; flex-direction: column; gap: .15rem; padding: .15rem; }
.dn-timepicker-opt {
    border: 0; border-radius: .75rem; background: transparent; color: var(--tblr-body-color);
    font-size: 1.05rem; font-weight: 600; padding: .5rem 0; cursor: pointer; flex: 0 0 auto;
}
.dn-timepicker-opt:hover:not(.is-selected) { background: rgba(var(--dn-primary-rgb), .12); color: var(--dn-primary); }
.dn-timepicker-opt:focus-visible { outline: 2px solid var(--dn-primary); outline-offset: 2px; }
.dn-timepicker-opt.is-selected { background: var(--dn-primary); color: #fff; box-shadow: 0 8px 18px -12px rgba(var(--dn-primary-shadow-rgb), .95); }


/* Seta «>» que roda ao expandir as linhas de recibos e notas de crédito do histórico de faturas */
.dn-chev { border: 0; background: transparent; box-shadow: none; color: var(--tblr-secondary, #6c7a91); }
.dn-chev:hover { background: rgba(var(--dn-primary-rgb, 196, 90, 20), .1); color: var(--tblr-body-color, inherit); }
.dn-chev:focus { box-shadow: none; }
.dn-chev:focus-visible { outline: 2px solid rgba(var(--dn-primary-rgb, 196, 90, 20), .45); outline-offset: 1px; }
.dn-chev i { transition: transform .15s ease; }
.dn-chev[aria-expanded="true"] i { transform: rotate(90deg); }


/* Janela «Confirmar ação» (data-dn-confirm): ícone em círculo, texto à vontade, dois botões lado a lado */
.dn-confirm-dialog { max-width: 26rem; }
.dn-confirm.modal-content { border: 0; border-radius: 1rem; overflow: hidden; box-shadow: 0 1.5rem 3.5rem rgba(0, 0, 0, .28); }
.dn-confirm-icone {
    display: inline-flex; align-items: center; justify-content: center; width: 3.5rem; height: 3.5rem;
    border-radius: 50%; background: rgba(245, 159, 0, .16); color: #f59f00; font-size: 1.75rem; margin-bottom: .9rem;
}
.dn-confirm-titulo { font-size: 1.15rem; font-weight: 700; margin: 0 0 .4rem; }
.dn-confirm-texto { color: var(--tblr-secondary, #6c7a91); margin: 0; line-height: 1.5; }
.dn-confirm-botoes { display: flex; gap: .6rem; padding: .25rem 1.5rem 1.5rem; }
.dn-confirm-botoes .btn { flex: 1; border-radius: .6rem; font-weight: 600; padding: .6rem 1rem; }
.dn-confirm-cancelar { background: transparent; border: 1px solid var(--tblr-border-color, rgba(128, 128, 128, .4)); color: inherit; }
.dn-confirm-cancelar:hover { background: rgba(128, 128, 128, .14); color: inherit; }


/* Logótipo claro com fundo transparente: aparece direto sobre o fundo escuro, sem a janela branca */
.dn-auth-hero__logo.is-claro,
.dn-auth-mobile-brand__logo.is-claro,
.dn-portal-brand-logo.is-claro { background: transparent; padding: 0; border-radius: 0; }
