/* Modo noite: a plataforma inteira com o aspeto do painel do Sage (tinta profunda, grelha azul, linhas finas,
   legendas em mono maiúsculas, valores em mono branco). Ativo com <html data-tema="noite" data-bs-theme="dark">
   (public/js/tema.js). O Bootstrap trata do modo escuro base; aqui ficam as cores da marca e as superfícies que
   os outros CSS pintam de branco. Carregado no fim, depois de todos os outros. */

:root[data-tema="noite"] {
  color-scheme: dark;
  --n-bg: #070a0e;
  --n-card: #0d131a;
  --n-card-grad: linear-gradient(120deg, #0b0f14 0%, #141c26 100%);
  --n-2: #131b24;
  --n-3: #1a2430;
  --n-line: rgba(0, 158, 229, .16);
  --n-line-soft: rgba(255, 255, 255, .06);
  --n-text: #c9d3dc;
  --n-head: #fff;
  --n-muted: #7d8d9c;
  --n-label: #6f8090;
  --n-glow: 0 0 0 1px rgba(0, 158, 229, .35), 0 8px 28px rgba(0, 158, 229, .14);

  --ctc-bg: var(--n-bg);
  --ctc-bg-alt: var(--n-2);
  --ctc-line: var(--n-line-soft);
  --ctc-text: var(--n-text);
  --ctc-muted: var(--n-muted);
  --ctc-head: var(--n-head);
  --ctc-blue-soft: rgba(0, 158, 229, .12);
  --ctc-blue-text: #3eb4e9;
  --ctc-gold-text: #d9c25a;
  --ctc-black: #05080b;
  --ctc-dark: #0d131a;
  --shadow: 0 10px 24px rgba(0, 0, 0, .45);
  --ctc-glow: var(--n-glow);

  --bs-body-bg: var(--n-bg);
  --bs-body-bg-rgb: 7, 10, 14;
  --bs-body-color: var(--n-text);
  --bs-body-color-rgb: 201, 211, 220;
  --bs-emphasis-color: #fff;
  --bs-emphasis-color-rgb: 255, 255, 255;
  --bs-secondary-color: var(--n-muted);
  --bs-secondary-bg: var(--n-2);
  --bs-tertiary-bg: var(--n-2);
  --bs-tertiary-color: var(--n-muted);
  --bs-border-color: var(--n-line-soft);
  --bs-border-color-translucent: var(--n-line-soft);
  --bs-heading-color: #fff;
  --bs-link-color: #3eb4e9;
  --bs-link-color-rgb: 62, 180, 233;
  --bs-link-hover-color: #8fd3f4;
  --bs-link-hover-color-rgb: 143, 211, 244;
  --bs-code-color: #8fd3f4;
  --bs-light-rgb: 19, 27, 36;
  --bs-white-rgb: 13, 19, 26;
  --bs-dark-rgb: 201, 211, 220;
  --bs-success-text-emphasis: #6fdca6;
  --bs-success-bg-subtle: rgba(46, 157, 106, .14);
  --bs-success-border-subtle: rgba(46, 157, 106, .35);
  --bs-warning-text-emphasis: #f0d36b;
  --bs-warning-bg-subtle: rgba(229, 180, 40, .12);
  --bs-warning-border-subtle: rgba(229, 180, 40, .35);
  --bs-danger-text-emphasis: #ff8a80;
  --bs-danger-bg-subtle: rgba(229, 83, 75, .13);
  --bs-danger-border-subtle: rgba(229, 83, 75, .4);
  --bs-info-text-emphasis: #8fd3f4;
  --bs-info-bg-subtle: rgba(0, 158, 229, .12);
  --bs-info-border-subtle: rgba(0, 158, 229, .35);
  --bs-primary-text-emphasis: #8fd3f4;
  --bs-primary-bg-subtle: rgba(0, 158, 229, .12);
  --bs-primary-border-subtle: rgba(0, 158, 229, .35);
  --bs-secondary-text-emphasis: #c9d3dc;
  --bs-secondary-bg-subtle: rgba(255, 255, 255, .05);
  --bs-secondary-border-subtle: rgba(255, 255, 255, .1);
  --bs-light-text-emphasis: #c9d3dc;
  --bs-light-bg-subtle: var(--n-2);
  --bs-light-border-subtle: var(--n-line-soft);
  --bs-dark-text-emphasis: #c9d3dc;
  --bs-dark-bg-subtle: var(--n-2);
  --bs-dark-border-subtle: var(--n-line-soft);
}

[data-tema="noite"] body { background: var(--n-bg); color: var(--n-text); }
[data-tema="noite"] body::before {
  background-image: repeating-linear-gradient(90deg, rgba(0, 158, 229, .045) 0 1px, transparent 1px 48px),
    repeating-linear-gradient(0deg, rgba(0, 158, 229, .025) 0 1px, transparent 1px 48px);
  background-size: auto;
}
[data-tema="noite"] h1, [data-tema="noite"] h2, [data-tema="noite"] h3, [data-tema="noite"] h4, [data-tema="noite"] h5, [data-tema="noite"] h6 { color: #fff; }
[data-tema="noite"] ::selection { background: rgba(0, 158, 229, .35); color: #fff; }
[data-tema="noite"] .text-muted, [data-tema="noite"] .text-secondary { color: var(--n-muted) !important; }
[data-tema="noite"] .text-dark, [data-tema="noite"] .text-body, [data-tema="noite"] .text-black { color: var(--n-text) !important; }
[data-tema="noite"] .text-success { color: #4fd18f !important; }
[data-tema="noite"] .text-danger { color: #ff6f66 !important; }
[data-tema="noite"] .text-warning { color: #f0c84b !important; }
[data-tema="noite"] .text-primary, [data-tema="noite"] .text-blue, [data-tema="noite"] .text-info { color: #3eb4e9 !important; }
[data-tema="noite"] .bg-white, [data-tema="noite"] .bg-light, [data-tema="noite"] .bg-body { background-color: var(--n-2) !important; }
[data-tema="noite"] .border, [data-tema="noite"] .border-top, [data-tema="noite"] .border-bottom,
[data-tema="noite"] .border-start, [data-tema="noite"] .border-end { border-color: var(--n-line-soft) !important; }
[data-tema="noite"] hr { border-color: var(--n-line); opacity: 1; }
[data-tema="noite"] code { color: #8fd3f4; }

/* ---------- Superfícies: cartões em gradiente tinta, linha fina azul ---------- */
[data-tema="noite"] .card,
[data-tema="noite"] .kpi,
[data-tema="noite"] .perm-mod,
[data-tema="noite"] .nl-b,
[data-tema="noite"] .mg,
[data-tema="noite"] .pt-today,
[data-tema="noite"] .lb-item,
[data-tema="noite"] .files .f,
[data-tema="noite"] .ai-file,
[data-tema="noite"] .list-toolbar {
  background: var(--n-card-grad);
  border-color: var(--n-line);
  color: var(--n-text);
}
[data-tema="noite"] .card { --bs-card-bg: transparent; --bs-card-cap-bg: transparent; --bs-card-border-color: var(--n-line); position: relative; }
[data-tema="noite"] .card:hover { border-color: rgba(0, 158, 229, .38); }
[data-tema="noite"] .card-header, [data-tema="noite"] .card-footer { background: transparent; border-color: var(--n-line-soft); }
[data-tema="noite"] .card-header h2, [data-tema="noite"] .card-header h3, [data-tema="noite"] .card-header .title { color: var(--n-label); }
[data-tema="noite"] .list-toolbar { background: transparent; border-color: var(--n-line-soft); }
[data-tema="noite"] .list-foot { border-color: var(--n-line-soft); }

/* KPIs como os valores do painel do Sage */
[data-tema="noite"] .kpi .lbl, [data-tema="noite"] .dl-grid .k, [data-tema="noite"] .small-caps,
[data-tema="noite"] .form-label, [data-tema="noite"] .page-head .crumbs, [data-tema="noite"] .crumbs a {
  color: var(--n-label);
}
[data-tema="noite"] .kpi .val { color: #fff; }
[data-tema="noite"] .kpi .sub { color: var(--n-muted); }
[data-tema="noite"] .kpi .ico { color: rgba(0, 158, 229, .35); }
[data-tema="noite"] .kpi:hover { box-shadow: var(--n-glow); }
[data-tema="noite"] .dl-grid .v { color: #fff; }
[data-tema="noite"] .form-section { color: #3eb4e9; border-color: var(--n-line); }

/* ---------- Topo, menu, rodapé ---------- */
[data-tema="noite"] .topbar { background: rgba(7, 10, 14, .78); border-bottom-color: var(--n-line); }
[data-tema="noite"] .topbar .tb-btn { color: #8fa1b2; }
[data-tema="noite"] .topbar .tb-btn:hover { color: #3eb4e9; }
[data-tema="noite"] .topbar .search input { background: var(--n-2); color: var(--n-text); border-color: var(--n-line-soft); }
[data-tema="noite"] .topbar .search input:focus { background: var(--n-2); }
[data-tema="noite"] .topbar .search .results { background: var(--n-card); border: 1px solid var(--n-line); box-shadow: 0 18px 40px rgba(0, 0, 0, .6); }
[data-tema="noite"] .topbar .search .results a { color: var(--n-text); border-color: var(--n-line-soft); }
[data-tema="noite"] .topbar .search .results a:hover, [data-tema="noite"] .topbar .search .results a.active { background: rgba(0, 158, 229, .1); }
[data-tema="noite"] .topbar .lh-sm .fw-500 { color: #fff; }
[data-tema="noite"] .sidebar { background: linear-gradient(180deg, #05080b 0%, #0a0f15 100%); border-right-color: var(--n-line); }
[data-tema="noite"] .app-footer { background: transparent; border-top-color: var(--n-line-soft); color: var(--n-label); }
[data-tema="noite"] .app-footer .oi img, [data-tema="noite"] .auth .oi img { filter: invert(1) grayscale(1) brightness(1.7); opacity: .7; }
[data-tema="noite"] .net-pill { background: transparent; border-color: var(--n-line); color: #8fa1b2; }
[data-tema="noite"] .net-pill.ok { color: #4fd18f; border-color: rgba(79, 209, 143, .35); }
[data-tema="noite"] .net-pill.warn { background: rgba(229, 180, 40, .12); color: #f0c84b; border-color: rgba(229, 180, 40, .4); }
[data-tema="noite"] .avatar { background: rgba(0, 158, 229, .14); color: #8fd3f4; }

/* ---------- Botões: os claros passam a "chips" como o fluxo do Sage ---------- */
[data-tema="noite"] .btn-light,
[data-tema="noite"] .btn-outline-secondary,
[data-tema="noite"] .btn-outline-dark,
[data-tema="noite"] .btn-white {
  --bs-btn-color: #c9d3dc; --bs-btn-bg: rgba(255, 255, 255, .02); --bs-btn-border-color: rgba(0, 158, 229, .32);
  --bs-btn-hover-color: #fff; --bs-btn-hover-bg: rgba(0, 158, 229, .12); --bs-btn-hover-border-color: rgba(0, 158, 229, .6);
  --bs-btn-active-color: #fff; --bs-btn-active-bg: rgba(0, 158, 229, .2); --bs-btn-active-border-color: var(--ctc-blue);
  --bs-btn-disabled-color: #5f6b78; --bs-btn-disabled-bg: transparent; --bs-btn-disabled-border-color: var(--n-line-soft);
}
[data-tema="noite"] .btn-dark { --bs-btn-bg: #1a2430; --bs-btn-border-color: #2a3644; --bs-btn-hover-bg: #23303e; --bs-btn-hover-border-color: #3eb4e9; }
[data-tema="noite"] .btn-link { color: #3eb4e9; }
[data-tema="noite"] .btn-close { filter: invert(1) grayscale(1) brightness(1.6); }
[data-tema="noite"] .btn-check:checked + .btn-light, [data-tema="noite"] .btn-light.active, [data-tema="noite"] .nt-pills .btn.active {
  background: rgba(0, 158, 229, .2); color: #fff; border-color: var(--ctc-blue);
}

/* ---------- Formulários ---------- */
[data-tema="noite"] .form-control, [data-tema="noite"] .form-select, [data-tema="noite"] .input-group-text,
[data-tema="noite"] .ms .chips, [data-tema="noite"] textarea, [data-tema="noite"] .form-control:disabled, [data-tema="noite"] .form-control[readonly] {
  background-color: var(--n-2); color: var(--n-text); border-color: rgba(255, 255, 255, .1);
}
[data-tema="noite"] .form-control:focus, [data-tema="noite"] .form-select:focus { background-color: var(--n-3); color: #fff; border-color: var(--ctc-blue); box-shadow: var(--n-glow); }
[data-tema="noite"] .form-control::placeholder { color: #55626f; }
[data-tema="noite"] .form-check-input:not(:checked) { background-color: var(--n-2); border-color: rgba(255, 255, 255, .22); }
[data-tema="noite"] .ms input { background: transparent; color: var(--n-text); }
[data-tema="noite"] .ms .chip { background: rgba(0, 158, 229, .16); color: #8fd3f4; }
[data-tema="noite"] .ms .opts, [data-tema="noite"] .rs-opts, [data-tema="noite"] .rs-menu { background: var(--n-card); border-color: var(--n-line); }
[data-tema="noite"] .ms .opts div:hover { background: rgba(0, 158, 229, .12); }
[data-tema="noite"] input[type="date"]::-webkit-calendar-picker-indicator,
[data-tema="noite"] input[type="time"]::-webkit-calendar-picker-indicator,
[data-tema="noite"] input[type="datetime-local"]::-webkit-calendar-picker-indicator,
[data-tema="noite"] input[type="month"]::-webkit-calendar-picker-indicator { filter: invert(1) opacity(.7); }
[data-tema="noite"] .dropzone { background: rgba(255, 255, 255, .02); border-color: rgba(0, 158, 229, .3); color: var(--n-muted); }
[data-tema="noite"] .dropzone.over, [data-tema="noite"] .dropzone:hover { background: rgba(0, 158, 229, .08); color: #8fd3f4; }
[data-tema="noite"] .sign-pad { background: #e9eef2; border-color: rgba(0, 158, 229, .4); }

/* ---------- Tabelas ---------- */
[data-tema="noite"] .table {
  --bs-table-bg: transparent; --bs-table-color: var(--n-text); --bs-table-border-color: var(--n-line-soft);
  --bs-table-hover-bg: rgba(0, 158, 229, .07); --bs-table-hover-color: #fff;
  --bs-table-striped-bg: rgba(255, 255, 255, .02); --bs-table-active-bg: rgba(0, 158, 229, .12);
}
[data-tema="noite"] .table > thead th { background: rgba(255, 255, 255, .02); color: var(--n-label); border-bottom-color: var(--n-line); }
[data-tema="noite"] .table > tbody td { border-color: var(--n-line-soft); }
[data-tema="noite"] .table tfoot td, [data-tema="noite"] .table tfoot th { background: rgba(0, 158, 229, .05); color: #fff; border-color: var(--n-line); }
[data-tema="noite"] .table-light { --bs-table-bg: rgba(255, 255, 255, .03); --bs-table-color: var(--n-text); }
[data-tema="noite"] .pagination { --bs-pagination-bg: transparent; --bs-pagination-color: var(--n-text); --bs-pagination-border-color: var(--n-line-soft); --bs-pagination-hover-bg: rgba(0, 158, 229, .1); --bs-pagination-hover-color: #fff; --bs-pagination-disabled-bg: transparent; --bs-pagination-disabled-color: #4d5866; }
[data-tema="noite"] .empty i { color: #2a3644; }

/* ---------- Badges e estados ---------- */
[data-tema="noite"] .badge-soft { background: rgba(0, 158, 229, .14); color: #8fd3f4; }
[data-tema="noite"] .badge-gold { background: rgba(197, 172, 58, .15); color: #e2cb63; }
[data-tema="noite"] .badge-ok { background: rgba(46, 157, 106, .16); color: #5fe0a0; }
[data-tema="noite"] .badge-warn { background: rgba(229, 180, 40, .14); color: #f0c84b; }
[data-tema="noite"] .badge-bad { background: rgba(229, 83, 75, .16); color: #ff8a80; }
[data-tema="noite"] .badge-grey { background: rgba(255, 255, 255, .07); color: #a7b3bf; }
[data-tema="noite"] .badge.bg-light, [data-tema="noite"] .badge.text-bg-light { background: rgba(255, 255, 255, .07) !important; color: #c9d3dc !important; }
[data-tema="noite"] .alert { --bs-alert-bg: rgba(255, 255, 255, .03); border-color: var(--n-line); }
[data-tema="noite"] .alert-warning { --bs-alert-bg: rgba(229, 180, 40, .1); --bs-alert-color: #f0d36b; --bs-alert-border-color: rgba(229, 180, 40, .35); }
[data-tema="noite"] .alert-danger { --bs-alert-bg: rgba(229, 83, 75, .1); --bs-alert-color: #ff9a92; --bs-alert-border-color: rgba(229, 83, 75, .4); }
[data-tema="noite"] .alert-success { --bs-alert-bg: rgba(46, 157, 106, .1); --bs-alert-color: #6fdca6; --bs-alert-border-color: rgba(46, 157, 106, .4); }
[data-tema="noite"] .alert-info, [data-tema="noite"] .alert-primary { --bs-alert-bg: rgba(0, 158, 229, .08); --bs-alert-color: #8fd3f4; --bs-alert-border-color: rgba(0, 158, 229, .35); }
[data-tema="noite"] .alert-light, [data-tema="noite"] .alert-secondary { --bs-alert-bg: rgba(255, 255, 255, .03); --bs-alert-color: var(--n-text); --bs-alert-border-color: var(--n-line-soft); }
[data-tema="noite"] .progress { background: rgba(255, 255, 255, .06); }
[data-tema="noite"] .timeline li { border-left-color: var(--n-line); }
[data-tema="noite"] .timeline li::before { box-shadow: 0 0 0 3px rgba(0, 158, 229, .2), 0 0 8px rgba(0, 158, 229, .6); }

/* ---------- Separadores, modais, menus, avisos ---------- */
[data-tema="noite"] .nav-tabs { --bs-nav-tabs-link-active-bg: transparent; --bs-nav-tabs-link-active-color: #fff; --bs-nav-link-color: var(--n-muted); border-bottom-color: var(--n-line); }
[data-tema="noite"] .nav-tabs .nav-link.active { color: #fff; }
[data-tema="noite"] .nav-pills { --bs-nav-link-color: var(--n-text); --bs-nav-pills-link-active-bg: rgba(0, 158, 229, .2); --bs-nav-pills-link-active-color: #fff; }
[data-tema="noite"] .modal { --bs-modal-bg: var(--n-card); --bs-modal-color: var(--n-text); --bs-modal-border-color: var(--n-line); --bs-modal-header-border-color: var(--n-line-soft); --bs-modal-footer-border-color: var(--n-line-soft); }
[data-tema="noite"] .modal-content { background: var(--n-card-grad); box-shadow: 0 30px 80px rgba(0, 0, 0, .7), 0 0 0 1px var(--n-line); }
[data-tema="noite"] .modal-backdrop { --bs-backdrop-bg: #000; --bs-backdrop-opacity: .7; }
[data-tema="noite"] .dropdown-menu { --bs-dropdown-bg: var(--n-card); --bs-dropdown-color: var(--n-text); --bs-dropdown-border-color: var(--n-line); --bs-dropdown-link-color: var(--n-text); --bs-dropdown-link-hover-bg: rgba(0, 158, 229, .12); --bs-dropdown-link-hover-color: #fff; --bs-dropdown-divider-bg: var(--n-line-soft); --bs-dropdown-header-color: var(--n-label); box-shadow: 0 18px 40px rgba(0, 0, 0, .6); }
[data-tema="noite"] .list-group { --bs-list-group-bg: transparent; --bs-list-group-color: var(--n-text); --bs-list-group-border-color: var(--n-line-soft); --bs-list-group-action-hover-bg: rgba(0, 158, 229, .08); --bs-list-group-action-hover-color: #fff; --bs-list-group-active-bg: rgba(0, 158, 229, .2); --bs-list-group-active-border-color: var(--ctc-blue); }
[data-tema="noite"] .accordion { --bs-accordion-bg: transparent; --bs-accordion-color: var(--n-text); --bs-accordion-border-color: var(--n-line); --bs-accordion-button-bg: transparent; --bs-accordion-button-color: #fff; --bs-accordion-active-bg: rgba(0, 158, 229, .08); --bs-accordion-active-color: #fff; }
[data-tema="noite"] .offcanvas { --bs-offcanvas-bg: var(--n-card); --bs-offcanvas-color: var(--n-text); }
[data-tema="noite"] .popover { --bs-popover-bg: var(--n-card); --bs-popover-border-color: var(--n-line); --bs-popover-body-color: var(--n-text); --bs-popover-header-bg: var(--n-2); }
[data-tema="noite"] .tooltip { --bs-tooltip-bg: #1a2430; --bs-tooltip-color: #fff; }
[data-tema="noite"] .toast-x { background: #0d131a; box-shadow: 0 14px 34px rgba(0, 0, 0, .7), 0 0 0 1px var(--n-line); }
[data-tema="noite"] .notif-list .n { color: var(--n-text); border-color: var(--n-line-soft); }
[data-tema="noite"] .notif-list .n.unread { background: rgba(0, 158, 229, .08); }
[data-tema="noite"] .notif-list .n .t { color: #fff; }

/* ---------- Assistente IA ---------- */
[data-tema="noite"] .ai-panel { background: var(--n-card); box-shadow: 0 30px 70px rgba(0, 0, 0, .7); }
[data-tema="noite"] .ai-msgs { background: var(--n-bg); }
[data-tema="noite"] .ai-msg.assistant { background: var(--n-2); border-color: var(--n-line); color: var(--n-text); }
[data-tema="noite"] .ai-msg.assistant table td, [data-tema="noite"] .ai-msg.assistant table th { border-color: var(--n-line-soft); }
[data-tema="noite"] .ai-input { border-color: var(--n-line); }
[data-tema="noite"] .ai-suggest button { background: transparent; border-color: rgba(0, 158, 229, .3); color: var(--n-text); }
[data-tema="noite"] .ai-quote { background: rgba(197, 172, 58, .08); color: var(--n-text); }
[data-tema="noite"] .ai-file .ic { background: rgba(0, 158, 229, .14); }
[data-tema="noite"] .ai-file .t { color: #fff; }

/* ---------- Login ---------- */
[data-tema="noite"] .auth .panel { background: var(--n-bg); }
[data-tema="noite"] .auth .panel img[src*="logo-dark"], [data-tema="noite"] img.logo-escuro { filter: invert(1) hue-rotate(180deg) brightness(1.15); }

/* ---------- Agenda (FullCalendar) ---------- */
[data-tema="noite"] .fc {
  --fc-border-color: var(--n-line-soft); --fc-page-bg-color: transparent; --fc-neutral-bg-color: rgba(255, 255, 255, .03);
  --fc-list-event-hover-bg-color: rgba(0, 158, 229, .08); --fc-today-bg-color: rgba(0, 158, 229, .09);
  --fc-button-bg-color: transparent; --fc-button-border-color: rgba(0, 158, 229, .32); --fc-button-text-color: var(--n-text);
  --fc-button-hover-bg-color: rgba(0, 158, 229, .12); --fc-button-hover-border-color: rgba(0, 158, 229, .6);
  --fc-button-active-bg-color: rgba(0, 158, 229, .25); --fc-button-active-border-color: var(--ctc-blue);
  --fc-now-indicator-color: #ff6f66;
}
[data-tema="noite"] .fc .fc-col-header-cell-cushion, [data-tema="noite"] .fc .fc-daygrid-day-number { color: var(--n-muted); }
[data-tema="noite"] .fc .fc-list-day-cushion, [data-tema="noite"] .fc .fc-list-event.ag-ev td { background: transparent; }
[data-tema="noite"] .fc .fc-event.ag-ev { background: color-mix(in srgb, var(--c) 22%, #0d131a); color: #e6edf3; }
[data-tema="noite"] .fc .fc-event.ag-ev .fc-event-main { color: #e6edf3; }
[data-tema="noite"] .fc .fc-event.ag-ferias { background: rgba(197, 172, 58, .16); color: #e2cb63; }
[data-tema="noite"] .fc .fc-event.ag-ferias .fc-event-main { color: #e2cb63; }
[data-tema="noite"] .fc .fc-bg-event.ag-feriado { background: rgba(197, 172, 58, .08); }
[data-tema="noite"] .fc .fc-bg-event.ag-feriado .fc-event-title { color: #d9c25a; }
[data-tema="noite"] .fc-theme-standard .fc-popover { background: var(--n-card); border-color: var(--n-line); }
[data-tema="noite"] .fc-theme-standard .fc-popover-header { background: var(--n-2); }

/* ---------- Mapas: tiles da OSM em modo noite (sem mudar os marcadores) ---------- */
[data-tema="noite"] .leaflet-container { background: #0a0f15; }
[data-tema="noite"] .leaflet-tile-pane { filter: invert(1) hue-rotate(180deg) brightness(.92) contrast(.88) saturate(.55); }
[data-tema="noite"] .leaflet-popup-content-wrapper, [data-tema="noite"] .leaflet-popup-tip { background: var(--n-card); color: var(--n-text); box-shadow: 0 10px 30px rgba(0, 0, 0, .7); }
[data-tema="noite"] .leaflet-bar a { background: var(--n-card); color: var(--n-text); border-color: var(--n-line-soft); }
[data-tema="noite"] .leaflet-control-attribution { background: rgba(7, 10, 14, .75) !important; color: var(--n-muted); }

/* ---------- Superfícies brancas escritas nos estilos dos módulos ---------- */
[data-tema="noite"] [style*="background:#fff"], [data-tema="noite"] [style*="background: #fff"],
[data-tema="noite"] [style*="background:#ffffff"], [data-tema="noite"] [style*="background: #ffffff"],
[data-tema="noite"] [style*="background:white"], [data-tema="noite"] [style*="background-color:#fff"],
[data-tema="noite"] [style*="background:#f"], [data-tema="noite"] [style*="background: #f"] {
  background: var(--n-2) !important;
}
[data-tema="noite"] [style*="color:#111"], [data-tema="noite"] [style*="color:#222"], [data-tema="noite"] [style*="color:#333"],
[data-tema="noite"] [style*="color: #111"], [data-tema="noite"] [style*="color: #222"], [data-tema="noite"] [style*="color: #333"],
[data-tema="noite"] [style*="color:#000"], [data-tema="noite"] [style*="color:#0b0f14"], [data-tema="noite"] [style*="color:#191919"] {
  color: var(--n-text) !important;
}

/* Conteúdo que tem de continuar claro: QR, assinaturas, pré-visualizações de email/PDF, notas coloridas */
[data-tema="noite"] .qr-box, [data-tema="noite"] .em-frame, [data-tema="noite"] .nl-prev iframe { background: #fff !important; }
[data-tema="noite"] .nt-card { filter: brightness(.88) saturate(.9); }

/* ==========================================================================
   Módulos (classes encontradas pelo varrimento tests/e2e/noite.js)
   ========================================================================== */

/* Superfícies brancas dos módulos */
[data-tema="noite"] .g5-card, [data-tema="noite"] .rel-card, [data-tema="noite"] .db-tech, [data-tema="noite"] .iot-card,
[data-tema="noite"] .iot-sug, [data-tema="noite"] .iot-strip, [data-tema="noite"] .pd-q, [data-tema="noite"] .pd-sug,
[data-tema="noite"] .pd-eta > div, [data-tema="noite"] .orc-sum, [data-tema="noite"] .orc-banner, [data-tema="noite"] .at-date,
[data-tema="noite"] .iot-seg, [data-tema="noite"] .g5-tag, [data-tema="noite"] .perm-mod .h, [data-tema="noite"] .orc-add,
[data-tema="noite"] .lb-group, [data-tema="noite"] .nl-b > .h, [data-tema="noite"] .fe-sim {
  background: var(--n-card-grad); border-color: var(--n-line); color: var(--n-text);
}
[data-tema="noite"] .sg-chips a { background: transparent; border-color: rgba(0, 158, 229, .3); color: var(--n-text); }
[data-tema="noite"] .sg-chips a.on { color: #fff; background: rgba(0, 158, 229, .12); }
[data-tema="noite"] .iot-seg button { color: var(--n-muted); }
[data-tema="noite"] .iot-seg button.on { background: rgba(0, 158, 229, .2); color: #fff; }
[data-tema="noite"] .pd-q:hover, [data-tema="noite"] .pd-q.sel, [data-tema="noite"] .pd-plan td.drop:hover,
[data-tema="noite"] .db-item:hover, [data-tema="noite"] .at-row.link:hover, [data-tema="noite"] .em-list .it:hover,
[data-tema="noite"] .mg-c:hover, [data-tema="noite"] .fe-map tr:hover td.u { background: rgba(0, 158, 229, .08); }
[data-tema="noite"] .at-row.link, [data-tema="noite"] .at-row { background: transparent; }
[data-tema="noite"] .nv-tree a.on, [data-tema="noite"] .em-nav a.on, [data-tema="noite"] .mg-c.on { background: rgba(0, 158, 229, .14); color: #fff; }
[data-tema="noite"] .prod-thumb, [data-tema="noite"] .prod-img { background-color: #e9eef2; } /* fotografias com fundo transparente continuam legíveis */
[data-tema="noite"] .cm-map > div, [data-tema="noite"] .cm-map .coord { background: rgba(7, 10, 14, .8); }

/* Barras de progresso e trilhos */
[data-tema="noite"] .g5-score .bar, [data-tema="noite"] .g5-prog, [data-tema="noite"] .db-bar, [data-tema="noite"] .pd-bar,
[data-tema="noite"] .pd-plan .load, [data-tema="noite"] .pt-bar, [data-tema="noite"] .nl-bar { background: rgba(255, 255, 255, .08); }
[data-tema="noite"] .pd-steps .st::before { background: rgba(255, 255, 255, .1); }
[data-tema="noite"] .pd-steps .st i { background: var(--n-bg); border-color: #2a3644; }
[data-tema="noite"] .pd-steps .st.now i { background: var(--n-bg); border-color: var(--ctc-blue); }
[data-tema="noite"] .g5-prog .p { background: #fff; }

/* Texto que usava a cor tinta e ficava invisível */
[data-tema="noite"] .g5-big, [data-tema="noite"] .pd-q .t, [data-tema="noite"] .pd-sug .sc, [data-tema="noite"] .pd-eta .v,
[data-tema="noite"] .pd-steps .st.now, [data-tema="noite"] .iot-card .vals .v, [data-tema="noite"] .iot-strip .v,
[data-tema="noite"] .pd-plan tbody th, [data-tema="noite"] .db-tech .nm, [data-tema="noite"] .db-tech .hrs,
[data-tema="noite"] .rel-card .n, [data-tema="noite"] .at-date b, [data-tema="noite"] .db-n, [data-tema="noite"] .db-item .t1 { color: #fff; }
[data-tema="noite"] .pd-steps .st.done, [data-tema="noite"] .pd-q .r, [data-tema="noite"] .pd-why { color: var(--n-text); }
[data-tema="noite"] .iot-local > h3, [data-tema="noite"] .g5-cap, [data-tema="noite"] .g5-kv .k, [data-tema="noite"] .pd-mono,
[data-tema="noite"] .iot-live, [data-tema="noite"] .iot-card .cl, [data-tema="noite"] .iot-card .ft { color: var(--n-label); }
[data-tema="noite"] .g5-tag { color: #a7b3bf; }
[data-tema="noite"] .pd-why li b, [data-tema="noite"] .pd-num { color: #3eb4e9; }
[data-tema="noite"] .pd-plan tbody th, [data-tema="noite"] .pd-plan thead th, [data-tema="noite"] .db-grid tr.we td,
[data-tema="noite"] .db-grid td.tot, [data-tema="noite"] .db-grid th.tot, [data-tema="noite"] .tot { background: rgba(255, 255, 255, .03); }
[data-tema="noite"] .pd-plan thead th.hoje { background: rgba(0, 158, 229, .14); color: #8fd3f4; }
[data-tema="noite"] .pd-plan td.fer { background: repeating-linear-gradient(45deg, rgba(255, 255, 255, .02), rgba(255, 255, 255, .02) 6px, rgba(255, 255, 255, .05) 6px, rgba(255, 255, 255, .05) 12px); }

/* Fases, prioridades e chips coloridos: cor por cima de tinta em vez de branco */
[data-tema="noite"] .pd-fase, [data-tema="noite"] .pd-plan .ch { background: color-mix(in srgb, var(--c, #009ee5) 20%, #0d131a); color: #e6edf3; }
[data-tema="noite"] .pd-prio.urgente { background: rgba(229, 83, 75, .16); color: #ff8a80; }
[data-tema="noite"] .pd-prio.alta { background: rgba(224, 160, 48, .15); color: #f0c060; }
[data-tema="noite"] .pd-prio.normal { background: rgba(0, 158, 229, .15); color: #8fd3f4; }
[data-tema="noite"] .pd-prio.baixa { background: rgba(255, 255, 255, .06); color: #a7b3bf; }
[data-tema="noite"] .g5-alerta { background: rgba(229, 83, 75, .14); color: #ff9a92; border-color: rgba(229, 83, 75, .4); }
[data-tema="noite"] .db-ico, [data-tema="noite"] .rel-card .ic { background: rgba(0, 158, 229, .14); color: #8fd3f4; }
[data-tema="noite"] .db-ico.bad { background: rgba(229, 83, 75, .16); color: #ff8a80; }
[data-tema="noite"] .db-ico.warn { background: rgba(229, 180, 40, .14); color: #f0c84b; }
[data-tema="noite"] .db-ico.ok { background: rgba(46, 157, 106, .16); color: #5fe0a0; }
[data-tema="noite"] .iot-sinal { background: rgba(229, 180, 40, .08); color: var(--n-text); }
[data-tema="noite"] .iot-sinal.alto { background: rgba(229, 83, 75, .1); }
[data-tema="noite"] .pd-chat .m { background: var(--n-2); border-left-color: #2a3644; color: var(--n-text); }
[data-tema="noite"] .pd-chat .m.eu { background: rgba(0, 158, 229, .12); border-left-color: var(--ctc-blue); }
[data-tema="noite"] .pd-tl li { border-left-color: var(--n-line); }
[data-tema="noite"] .kpi .sub .down, [data-tema="noite"] .down { color: #ff7a6e; }
[data-tema="noite"] .kpi .sub .up, [data-tema="noite"] .up { color: #5fe0a0; }

/* Mapa de férias */
[data-tema="noite"] .fe-map th, [data-tema="noite"] .fe-map td { border-color: var(--n-line-soft); }
[data-tema="noite"] .fe-map thead th, [data-tema="noite"] .fe-map th.u, [data-tema="noite"] .fe-map td.u { background: var(--n-card); }
[data-tema="noite"] .fe-map thead th b { color: #fff; }
[data-tema="noite"] .fe-map thead th.we b, [data-tema="noite"] .fe-map thead th.hol b { color: #5f6b78; }
[data-tema="noite"] .fe-map thead th.today { background: rgba(0, 158, 229, .25); }
[data-tema="noite"] .fe-map td.we { background: rgba(255, 255, 255, .035); }
[data-tema="noite"] .fe-map td.hol { background: rgba(197, 172, 58, .1); }
[data-tema="noite"] .fe-map td.enc { background: rgba(255, 255, 255, .06); }
[data-tema="noite"] .fe-map td.blk { background: repeating-linear-gradient(45deg, rgba(229, 83, 75, .14), rgba(229, 83, 75, .14) 4px, transparent 4px, transparent 8px); }
[data-tema="noite"] .fe-map td .c.p { background: repeating-linear-gradient(135deg, color-mix(in srgb, var(--uc, #e8873a) 45%, #0d131a), color-mix(in srgb, var(--uc, #e8873a) 45%, #0d131a) 3px, #0d131a 3px, #0d131a 6px); color: #e6edf3; }
[data-tema="noite"] .fe-sim.err { background: rgba(229, 83, 75, .12); color: #ff9a92; }

/* Avatares com cor própria (style inline): fundo sólido escuro por trás da cor translúcida */
[data-tema="noite"] .avatar[style] { box-shadow: inset 0 0 0 100px rgba(255, 255, 255, .03); }

/* Contador das secções do menu, um pouco mais legível */
[data-tema="noite"] .sidebar button.sec .n { color: #7d8d9c; }

/* Mapa da frota (Cartrack), eficiência do técnico, sugestões IoT, estantes do stock */
[data-tema="noite"] .ct-wrap, [data-tema="noite"] .ct-side { background: var(--n-card); border-color: var(--n-line); }
[data-tema="noite"] .ct-side-head { background: rgba(255, 255, 255, .02); border-color: var(--n-line-soft); }
[data-tema="noite"] .ct-map, [data-tema="noite"] .ct-nomap { background: #0a0f15; }
[data-tema="noite"] .ct-item { background: transparent; border-color: var(--n-line-soft); }
[data-tema="noite"] .ct-item:hover { background: rgba(0, 158, 229, .07); }
[data-tema="noite"] .ct-item.sel { background: rgba(0, 158, 229, .14); }
[data-tema="noite"] .ct-plate { background: transparent; color: #fff; border-color: rgba(0, 158, 229, .4); font-family: var(--mono); }
[data-tema="noite"] .ct-tl { border-left-color: var(--n-line); }
[data-tema="noite"] .ct-tl li::before { border-color: var(--n-bg); }
[data-tema="noite"] .ct-empty > i { color: #2a3644; }
[data-tema="noite"] .at-eff { background: rgba(255, 255, 255, .08); }
[data-tema="noite"] .iot-sug .d { color: var(--n-muted); }
[data-tema="noite"] .stk-rack .rt { color: var(--n-label); }
[data-tema="noite"] .cm-map { background: radial-gradient(circle at 50% 45%, rgba(0, 158, 229, .16), transparent 60%), repeating-linear-gradient(90deg, rgba(0, 158, 229, .07) 0 1px, transparent 1px 24px), repeating-linear-gradient(0deg, rgba(0, 158, 229, .07) 0 1px, transparent 1px 24px), #0a0f15; border: 1px solid var(--n-line); }
[data-tema="noite"] .cm-map > div, [data-tema="noite"] .cm-map .coord { background: transparent; }
[data-tema="noite"] .orc-steps li.off { color: #5f6b78; }
[data-tema="noite"] .orc-steps li.off i { background: rgba(255, 255, 255, .04); color: #4d5866; }
[data-tema="noite"] .orc-search .opts { background: var(--n-card); border-color: var(--n-line); }

/* Etiquetas com a cor da categoria/estado misturada com branco: no modo noite mistura-se com tinta */
[data-tema="noite"] .at-cat, [data-tema="noite"] .at-chip input:checked + span { background: color-mix(in srgb, var(--c) 22%, #0d131a); color: color-mix(in srgb, var(--c) 45%, #fff); }
[data-tema="noite"] .orc-state { background: color-mix(in srgb, var(--c, #8a8a8a) 20%, #0d131a); color: color-mix(in srgb, var(--c, #8a8a8a) 45%, #fff); }
[data-tema="noite"] .at-chip span { background: transparent; border-color: rgba(255, 255, 255, .12); color: var(--n-text); }

/* Linhas finas claras escritas nos módulos */
[data-tema="noite"] .at-row, [data-tema="noite"] .db-item, [data-tema="noite"] .orc-lines td, [data-tema="noite"] .notif-list .n,
[data-tema="noite"] .mg-c, [data-tema="noite"] .em-list .it, [data-tema="noite"] .ag-next { border-color: var(--n-line-soft); }

/* Contraste AA (4,5:1) no texto: vermelhos e roxos da marca ficam mais claros no fundo tinta */
[data-tema="noite"] .sidebar .foot { color: #8a96a3; }
[data-tema="noite"] .g5-bad, [data-tema="noite"] .pt-neg, [data-tema="noite"] .lb-item .when.late, [data-tema="noite"] .iot-strip .v.fora,
[data-tema="noite"] .fe-map td .c.r, [data-tema="noite"] [style*="color:#d0453b"], [data-tema="noite"] [style*="color: #d0453b"] { color: #ff7a6e !important; }
[data-tema="noite"] .g5-ok, [data-tema="noite"] .pt-pos, [data-tema="noite"] [style*="color:#2e9d6a"] { color: #4fd18f !important; }
[data-tema="noite"] .g5-warn { color: #e2c45a; }
[data-tema="noite"] .badge[style="background:#2e9d6a"] { background: #1f7a4f !important; }
[data-tema="noite"] .fe-map thead th.we b, [data-tema="noite"] .fe-map thead th.hol b, [data-tema="noite"] .orc-steps li.off { color: #8593a1; }

/* Texto branco sobre azul: no modo noite o azul de fundo é o profundo da marca (#0079b0, 4,8:1) e o brilho fica à volta */
[data-tema="noite"] .btn-accent, [data-tema="noite"] .btn-primary {
  --bs-btn-color: #fff; --bs-btn-hover-color: #fff; --bs-btn-active-color: #fff; --bs-btn-disabled-color: rgba(255, 255, 255, .75);
  --bs-btn-bg: #0079b0; --bs-btn-border-color: #0079b0; --bs-btn-hover-bg: #006a9c; --bs-btn-hover-border-color: #006a9c;
  --bs-btn-disabled-bg: #0079b0; --bs-btn-disabled-border-color: #0079b0;
  color: #fff; background-image: linear-gradient(135deg, #0079b0 0%, #006fa3 50%, #00618f 100%);
  box-shadow: 0 0 0 1px rgba(62, 180, 233, .45), 0 6px 18px rgba(0, 158, 229, .28);
}
[data-tema="noite"] .btn-accent:hover, [data-tema="noite"] .btn-primary:hover { box-shadow: 0 0 0 1px rgba(62, 180, 233, .7), 0 8px 24px rgba(0, 158, 229, .4); }
[data-tema="noite"] .topbar .tb-btn .dot, [data-tema="noite"] .em-nav a .n.b, [data-tema="noite"] .badge.bg-primary, [data-tema="noite"] .badge.text-bg-primary { background: #0079b0 !important; color: #fff; }
[data-tema="noite"] .pagination { --bs-pagination-active-bg: #0079b0; --bs-pagination-active-border-color: #0079b0; }
[data-tema="noite"] .dropdown-item:active { background: #0079b0; }
[data-tema="noite"] .pd-tech .av, [data-tema="noite"] .ai-msg.user { background: linear-gradient(135deg, #0079b0, #00618f); color: #fff; }
/* Eventos sólidos do calendário (cor da categoria): a cor fica na borda e o fundo leva uma camada de tinta,
   para o texto branco ter contraste com qualquer cor da paleta */
[data-tema="noite"] .fc-event:not(.ag-ev):not(.fc-daygrid-dot-event):not(.fc-bg-event) { background-image: linear-gradient(rgba(7, 10, 14, .55), rgba(7, 10, 14, .55)); border-left-width: 3px; }
[data-tema="noite"] .fc-event:not(.ag-ev):not(.fc-daygrid-dot-event):not(.fc-bg-event) .fc-event-main,
[data-tema="noite"] .fc-event:not(.ag-ev):not(.fc-daygrid-dot-event):not(.fc-bg-event) .fc-event-time,
[data-tema="noite"] .fc-event:not(.ag-ev):not(.fc-daygrid-dot-event):not(.fc-bg-event) .fc-event-title { color: #fff; font-weight: 500; }
/* Marcações por aprovar / concluídas: sem transparência (o texto perdia contraste e os eventos de baixo viam-se através);
   distinguem-se pela borda tracejada e por uma camada de tinta mais forte */
[data-tema="noite"] .fc .fc-pendente, [data-tema="noite"] .fc .fc-concluida { opacity: 1; }
[data-tema="noite"] .fc .fc-pendente:not(.fc-daygrid-dot-event) { background-image: repeating-linear-gradient(135deg, rgba(7, 10, 14, .72) 0 6px, rgba(7, 10, 14, .62) 6px 12px) !important; }
[data-tema="noite"] .fc .fc-concluida:not(.fc-daygrid-dot-event) { background-image: linear-gradient(rgba(7, 10, 14, .75), rgba(7, 10, 14, .75)) !important; }
[data-tema="noite"] .fc .fc-concluida .fc-event-main, [data-tema="noite"] .fc .fc-concluida .fc-event-title, [data-tema="noite"] .fc .fc-concluida .fc-event-time { color: #b8c4cf; }
[data-tema="noite"] .fc .fc-daygrid-day-number { color: #c9d3dc; }
[data-tema="noite"] .fc .fc-day-other .fc-daygrid-day-top { opacity: 1; }
[data-tema="noite"] .fc .fc-day-other .fc-daygrid-day-number { color: #7d8d9c; }
[data-tema="noite"] .iot-card.off { opacity: 1; filter: saturate(.35); }
[data-tema="noite"] .iot-card.off .vals .v, [data-tema="noite"] .iot-card.off .nm { color: #a7b3bf; }

/* Pacote F (feedback 28/10): avisos das equipas de férias e contagens no mapa. */
[data-tema="noite"] .fe-eq { background: rgba(232, 135, 58, .12); color: #f5c08f; }
[data-tema="noite"] .fe-eq.bad { background: rgba(229, 83, 75, .12); color: #ff9a92; }
[data-tema="noite"] .fe-eq-mini { color: #f5c08f; }
[data-tema="noite"] .fe-eq-mini.bad { color: #ff9a92; }
[data-tema="noite"] .fe-map td.fe-cnt.lim, [data-tema="noite"] .fe-legend .fe-sw-lim { background: rgba(232, 135, 58, .25); color: #f5c08f; }
[data-tema="noite"] .fe-map td.fe-cnt.over, [data-tema="noite"] .fe-legend .fe-sw-over { background: rgba(229, 83, 75, .3); color: #ffb3ad; }
/* Feedback 28/10 (pacote A): cores de estado da assistência no modo noite. */
[data-tema="noite"] { --at-st-agendado: #7d8d9c; --at-st-curso: #2aa9e8; --at-st-terminado: #3fb47e; --at-st-pendente: #f0924a; --at-st-base: #10161d; }
[data-tema="noite"] .badge-pend { background: rgba(240, 146, 74, .16); color: #f6ad74; }
[data-tema="noite"] .at-pend-box .t, [data-tema="noite"] .text-pend { color: #f6ad74; }
[data-tema="noite"] .fc :is(.fc-timegrid-event, .fc-daygrid-block-event).at-ev-st:not(.st-agendado) :is(.fc-event-main, .fc-event-time, .fc-event-title) { color: #0b0f14; }
/* Cartões das máquinas na ficha do serviço (estavam brancos no modo noite). */
[data-tema="noite"] .at-maq { background: var(--ctc-bg-alt); }
[data-tema="noite"] .at-maq .tx { color: var(--ctc-muted); }

/* Pacote D (feedback 28/10/2026): páginas públicas (QR da máquina, avaliação) também no modo noite; antes ficava o
   cartão branco com o texto claro do tema (nome da máquina, marca e n.º de série invisíveis). */
:root[data-tema="noite"] .at-pub-card { background: var(--n-card); border: 1px solid var(--n-line); }
/* Pacote B (feedback 28/10/2026): página pública da proposta (aceitar/recusar) no modo noite; o cartão ficava branco
   com o texto claro do tema. */
:root[data-tema="noite"] .orc-pub-card { background: var(--n-card); border: 1px solid var(--n-line); }
:root[data-tema="noite"] .orc-pub-head { background: var(--ctc-black); }
