/* Tema do sistema (fase 9): Direção D (claro) e Direção C (escuro), escolhidas
   pelo Grupo GS em 2026-09-25. O modo vem de data-bs-theme no <html> (light /
   dark), que o próprio Bootstrap 5.3 já usa para escurecer tabelas, formulários,
   menus e alertas; aqui ficam as duas paletas e o acabamento (fontes, cantos,
   sombras). As telas usam as variáveis --gs-* em vez de cor fixa, para
   funcionar nos dois modos. Páginas de impressão e as públicas têm visual próprio.

   Fontes: IBM Plex Sans (texto) e Space Grotesk (títulos e números grandes). */

/* ── Direção D: claro ─────────────────────────────────────────────── */
:root, [data-bs-theme="light"] {
  --gs-p: #16305c;           /* ação principal (botão, destaque) */
  --gs-p-hover: #1f4380;
  --gs-p-texto: #ffffff;     /* texto em cima da ação principal */
  --gs-acc: #f0b429;         /* âmbar */
  --gs-bg: #f7f6f2;
  --gs-surface: #ffffff;     /* cartões */
  --gs-surface-2: #fcfbf8;   /* campos, faixas */
  --gs-text: #16203a;
  --gs-muted: #646a80;       /* 4,9:1 sobre o fundo (AA) */
  --gs-border: #ece9e0;
  --gs-border-forte: #d9d5c9;
  --gs-link: #16305c;
  --gs-link-hover: #0e8a83;
  --gs-sidebar: #16305c;
  --gs-sidebar-texto: #b9c6e0;
  --gs-sidebar-hover: rgba(255, 255, 255, .08);
  --gs-sidebar-ativo-bg: #f0b429;
  --gs-sidebar-ativo-texto: #4a3300;
  --gs-sidebar-ativo-borda: transparent;
  --gs-red: #e5484d; --gs-amber: #f0b429; --gs-green: #17845c; --gs-teal: #0e8a83; --gs-slate: #4b5568; --gs-blue: #2554a0;
  --gs-grafico-1: #16305c;   /* série principal dos gráficos */
  --gs-grafico-2: #9fb3d9;   /* série de apoio */
  --gs-grade: rgba(22, 32, 58, .08);
  --gs-raio: 18px;
  --gs-raio-sm: 12px;
  --gs-sombra: 0 1px 1px rgba(20, 20, 10, .02), 0 14px 34px -18px rgba(20, 20, 10, .16);

  --bs-body-bg: var(--gs-bg);
  --bs-body-color: var(--gs-text);
  --bs-emphasis-color: #0b1224;
  --bs-secondary-color: var(--gs-muted);
  --bs-tertiary-color: #9aa0b3;
  --bs-border-color: var(--gs-border);
  --bs-secondary-bg: #f1efe8;
  --bs-tertiary-bg: #faf9f5;
  --bs-link-color: var(--gs-link);
  --bs-link-color-rgb: 22, 48, 92;
  --bs-link-hover-color: var(--gs-link-hover);
  --bs-link-hover-color-rgb: 14, 138, 131;
  --bs-primary: #16305c;
  --bs-primary-rgb: 22, 48, 92;
}

/* ── Direção C: escuro ────────────────────────────────────────────────
   Só na tela: na impressão (Ctrl+P) valem as cores do claro acima, mesmo com
   o escuro ligado — papel branco com texto escuro (ver @media print no fim). */
@media not print {
[data-bs-theme="dark"] {
  --gs-p: #f0b429;
  --gs-p-hover: #ffc94d;
  --gs-p-texto: #1a1305;
  --gs-acc: #f0b429;
  --gs-bg: #0b1120;
  --gs-surface: #121a2c;
  --gs-surface-2: #161f34;
  --gs-text: #e7ecf7;
  --gs-muted: #8b96b3;
  --gs-border: rgba(255, 255, 255, .08);
  --gs-border-forte: rgba(255, 255, 255, .16);
  --gs-link: #4fd6ff;
  --gs-link-hover: #9be7ff;
  --gs-sidebar: #090d18;
  --gs-sidebar-texto: #8b96b3;
  --gs-sidebar-hover: rgba(255, 255, 255, .05);
  --gs-sidebar-ativo-bg: rgba(240, 180, 41, .12);
  --gs-sidebar-ativo-texto: #f0b429;
  --gs-sidebar-ativo-borda: rgba(240, 180, 41, .25);
  --gs-red: #ff6b6b; --gs-amber: #ffcf6b; --gs-green: #3ee6a8; --gs-teal: #4fd6ff; --gs-slate: #8b96b3; --gs-blue: #4fd6ff;
  --gs-grafico-1: #f0b429;
  --gs-grafico-2: #3a4a6b;
  --gs-grade: rgba(255, 255, 255, .07);
  --gs-sombra: 0 0 0 1px rgba(0, 0, 0, .2), 0 12px 30px -16px rgba(0, 0, 0, .6);

  --bs-body-bg: var(--gs-bg);
  --bs-body-color: var(--gs-text);
  --bs-emphasis-color: #ffffff;
  --bs-secondary-color: var(--gs-muted);
  --bs-tertiary-color: #66728f;
  --bs-border-color: var(--gs-border);
  --bs-secondary-bg: #1b2540;
  --bs-tertiary-bg: #10182a;
  --bs-link-color: var(--gs-link);
  --bs-link-color-rgb: 79, 214, 255;
  --bs-link-hover-color: var(--gs-link-hover);
  --bs-link-hover-color-rgb: 155, 231, 255;
  --bs-primary: #f0b429;
  --bs-primary-rgb: 240, 180, 41;
  color-scheme: dark;
}
}

/* ── Base ─────────────────────────────────────────────────────────── */
body {
  background: var(--gs-bg);
  color: var(--gs-text);
  font-family: 'IBM Plex Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  font-variant-numeric: tabular-nums;
}
h1, h2, h3, h4, h5, h6, .h4, .h5, .h6, .card-title, .display-6, .fs-3, .fs-4, .fs-5, .modal-title {
  font-family: 'Space Grotesk', 'IBM Plex Sans', system-ui, sans-serif;
  letter-spacing: -0.01em;
}
.text-muted { color: var(--gs-muted) !important; }

/* ── Cartões ──────────────────────────────────────────────────────── */
.card {
  --bs-card-bg: var(--gs-surface);
  --bs-card-border-color: var(--gs-border);
  --bs-card-border-radius: var(--gs-raio);
  --bs-card-inner-border-radius: calc(var(--gs-raio) - 1px);
  --bs-card-cap-bg: transparent;
  box-shadow: var(--gs-sombra);
}
[data-bs-theme="light"] .card { border-color: transparent; }
.card-header { font-family: 'Space Grotesk', 'IBM Plex Sans', sans-serif; font-weight: 600; border-bottom-color: var(--gs-border); }
.card .card { box-shadow: none; border-color: var(--gs-border); }   /* cartão dentro de cartão: sem sombra dupla */

/* ── Botões ───────────────────────────────────────────────────────── */
.btn { --bs-btn-border-radius: 999px; --bs-btn-font-weight: 500; }
.btn-sm { --bs-btn-border-radius: 999px; }
[data-bs-theme="dark"] .btn { --bs-btn-border-radius: 10px; }
[data-bs-theme="dark"] .btn-sm { --bs-btn-border-radius: 8px; }
.btn-gs, .btn-primary {
  --bs-btn-bg: var(--gs-p); --bs-btn-border-color: var(--gs-p); --bs-btn-color: var(--gs-p-texto);
  --bs-btn-hover-bg: var(--gs-p-hover); --bs-btn-hover-border-color: var(--gs-p-hover); --bs-btn-hover-color: var(--gs-p-texto);
  --bs-btn-active-bg: var(--gs-p-hover); --bs-btn-active-border-color: var(--gs-p-hover); --bs-btn-active-color: var(--gs-p-texto);
  --bs-btn-disabled-bg: var(--gs-p); --bs-btn-disabled-border-color: var(--gs-p); --bs-btn-disabled-color: var(--gs-p-texto);
  font-weight: 600;
}
[data-bs-theme="dark"] .btn-gs, [data-bs-theme="dark"] .btn-primary { box-shadow: 0 0 0 1px rgba(240, 180, 41, .4), 0 6px 18px -8px rgba(240, 180, 41, .55); }
.btn-outline-secondary {
  --bs-btn-color: var(--gs-text); --bs-btn-border-color: var(--gs-border-forte); --bs-btn-bg: var(--gs-surface);
  --bs-btn-hover-bg: var(--bs-secondary-bg); --bs-btn-hover-color: var(--gs-text); --bs-btn-hover-border-color: var(--gs-border-forte);
  --bs-btn-active-bg: var(--bs-secondary-bg); --bs-btn-active-color: var(--gs-text); --bs-btn-active-border-color: var(--gs-border-forte);
}
[data-bs-theme="dark"] .btn-outline-secondary { --bs-btn-bg: rgba(255, 255, 255, .04); }
.btn-outline-primary {
  --bs-btn-color: var(--gs-link); --bs-btn-border-color: var(--gs-link);
  --bs-btn-hover-bg: var(--gs-link); --bs-btn-hover-border-color: var(--gs-link); --bs-btn-hover-color: var(--gs-surface);
  --bs-btn-active-bg: var(--gs-link); --bs-btn-active-border-color: var(--gs-link); --bs-btn-active-color: var(--gs-surface);
}
.btn-link { --bs-btn-color: var(--gs-link); --bs-btn-hover-color: var(--gs-link-hover); }
/* Opção escolhida num grupo de botões (btn-check marcado ou .active, ex.:
   30/90/365 dias e Quantidade/Valor no Estoque): cor da ação principal. O
   "active" do Bootstrap aqui era o --bs-secondary-bg, quase igual ao fundo
   do botão nos dois modos — não dava para ver qual estava escolhido. */
.btn-check:checked + .btn-outline-secondary,
.btn-outline-secondary.active, .btn-outline-secondary.active:hover {
  background-color: var(--gs-p); border-color: var(--gs-p); color: var(--gs-p-texto); font-weight: 600;
}

/* ── Formulários ──────────────────────────────────────────────────── */
.form-control, .form-select {
  --bs-border-radius: var(--gs-raio-sm); --bs-border-radius-sm: 10px;
  background-color: var(--gs-surface-2); border-color: var(--gs-border-forte);
}
.form-control:focus, .form-select:focus {
  border-color: var(--gs-p);
  box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--gs-p) 22%, transparent);
}
.input-group-text { background-color: var(--bs-secondary-bg); border-color: var(--gs-border-forte); }

/* ── Tabelas ──────────────────────────────────────────────────────── */
.table { --bs-table-bg: transparent; --bs-table-border-color: var(--gs-border); --bs-table-hover-bg: color-mix(in srgb, var(--gs-p) 5%, transparent); }
.table > thead th { font-size: .78rem; text-transform: uppercase; letter-spacing: .05em; color: var(--gs-muted); font-weight: 600; }
.table-sm > thead th { font-size: .72rem; }
[data-bs-theme="dark"] .table-danger { --bs-table-bg: rgba(255, 107, 107, .12); --bs-table-color: var(--gs-text); --bs-table-border-color: rgba(255, 107, 107, .2); --bs-table-hover-bg: rgba(255, 107, 107, .18); }
[data-bs-theme="dark"] .table-warning { --bs-table-bg: rgba(255, 207, 107, .10); --bs-table-color: var(--gs-text); --bs-table-border-color: rgba(255, 207, 107, .18); --bs-table-hover-bg: rgba(255, 207, 107, .16); }
[data-bs-theme="dark"] .table-success { --bs-table-bg: rgba(62, 230, 168, .10); --bs-table-color: var(--gs-text); }

/* ── Abas, selos, alertas, paginação ──────────────────────────────── */
.nav-tabs { --bs-nav-tabs-border-color: var(--gs-border); --bs-nav-tabs-link-active-bg: var(--gs-surface); --bs-nav-tabs-link-active-border-color: var(--gs-border) var(--gs-border) var(--gs-surface); --bs-nav-link-color: var(--gs-link); --bs-nav-link-hover-color: var(--gs-link-hover); }
.nav-tabs .nav-link.active { font-weight: 600; }
.badge { font-weight: 600; letter-spacing: .01em; }
.badge.rounded-pill, .badge { --bs-badge-border-radius: 999px; }
[data-bs-theme="dark"] .text-bg-light { background-color: rgba(255, 255, 255, .08) !important; color: var(--gs-text) !important; }
[data-bs-theme="dark"] .text-bg-light.border { border-color: var(--gs-border-forte) !important; }
/* Selo "primário" no escuro é âmbar: texto escuro (o branco do Bootstrap some). */
[data-bs-theme="dark"] .text-bg-primary, [data-bs-theme="dark"] .badge.bg-primary { color: var(--gs-p-texto) !important; }
/* Ciano do bg-info com texto branco tem pouco contraste nos dois modos. */
.text-bg-info, .badge.bg-info { color: #052c36 !important; }
/* bg-dark ("Cancelado") no escuro ficava da cor do fundo: vira chip cinza com borda. */
[data-bs-theme="dark"] .text-bg-dark, [data-bs-theme="dark"] .badge.bg-dark {
  background-color: rgba(255, 255, 255, .14) !important; color: var(--gs-text) !important;
  box-shadow: inset 0 0 0 1px var(--gs-border-forte);
}
/* Amarelo puro do text-warning não se lê no fundo claro: âmbar escuro
   (#8a5a00: 5,9:1 no branco, 5,5:1 no --gs-bg). No escuro segue o âmbar claro. */
[data-bs-theme="light"] .text-warning { color: #8a5a00 !important; }
[data-bs-theme="light"] .link-warning { color: #8a5a00 !important; text-decoration-color: rgba(138, 90, 0, .5) !important; }
[data-bs-theme="dark"] .text-warning { color: var(--gs-amber) !important; }
.alert { --bs-alert-border-radius: var(--gs-raio-sm); }
.pagination { --bs-pagination-bg: var(--gs-surface); --bs-pagination-color: var(--gs-link); --bs-pagination-border-color: var(--gs-border); --bs-pagination-active-bg: var(--gs-p); --bs-pagination-active-border-color: var(--gs-p); --bs-pagination-active-color: var(--gs-p-texto); }
.progress { --bs-progress-bg: color-mix(in srgb, var(--gs-text) 9%, transparent); --bs-progress-border-radius: 999px; }
.list-group { --bs-list-group-bg: transparent; --bs-list-group-border-color: var(--gs-border); }
.dropdown-menu { --bs-dropdown-bg: var(--gs-surface); --bs-dropdown-border-color: var(--gs-border); --bs-dropdown-border-radius: var(--gs-raio-sm); box-shadow: var(--gs-sombra); }
.modal { --bs-modal-bg: var(--gs-surface); --bs-modal-border-radius: var(--gs-raio); }
.offcanvas { --bs-offcanvas-bg: var(--gs-surface); }

/* ── Menu lateral e topo ──────────────────────────────────────────── */
.gs-header { background: var(--gs-sidebar) !important; color: #fff; }
.gs-header .navbar-brand { font-family: 'Space Grotesk', sans-serif; }
.gs-sidebar, .gs-sidebar .offcanvas-body { background-color: var(--gs-sidebar) !important; }
[data-bs-theme="dark"] .gs-sidebar { border-right: 1px solid var(--gs-border); }
.gs-sidebar .nav-link, .gs-header .nav-link { color: var(--gs-sidebar-texto) !important; border-radius: 12px; font-weight: 500; border: 1px solid transparent; }
.gs-sidebar .nav-link:hover, .gs-sidebar .nav-link:focus { background: var(--gs-sidebar-hover); color: #fff !important; }
.gs-sidebar .nav-link.active, .gs-sidebar .nav-link.gs-ativo {
  background: var(--gs-sidebar-ativo-bg); color: var(--gs-sidebar-ativo-texto) !important;
  border-color: var(--gs-sidebar-ativo-borda); font-weight: 700;
}
.gs-sidebar .collapse .nav-link, .gs-sidebar .collapsing .nav-link { font-size: .92rem; }

/* ── Seletor de tema ──────────────────────────────────────────────── */
.gs-tema-btn { display: inline-flex; align-items: center; gap: 8px; }
.gs-tema-btn svg { width: 16px; height: 16px; }
[data-bs-theme="dark"] .gs-tema-btn .gs-icone-lua, [data-bs-theme="light"] .gs-tema-btn .gs-icone-sol { display: none; }

/* ── Ícones (função icone() do PHP) ───────────────────────────────── */
.gs-icone { width: 1.15em; height: 1.15em; vertical-align: -.2em; flex-shrink: 0; }
.btn .gs-icone { margin-right: .3em; }
.btn .gs-icone:only-child, .btn-icone .gs-icone { margin-right: 0; }
#chat-toggle { display: inline-flex; align-items: center; justify-content: center; padding: 0; }
/* Busca com sugestões na OS: o formulário fica acima dos botões seguintes ("+ Peça sem cadastro"),
   senão a lista aberta aparece por baixo deles. */
#form-vincular-item-estoque, #form-vincular-equipamento, #form-vincular-servico { z-index: 3; }
/* Listas com busca (Tom Select, /assets/js/busca-select.js): cores do tema, legíveis nos modos claro e escuro. */
.ts-wrapper .ts-control, .ts-wrapper .ts-control input, .ts-dropdown { color: var(--bs-body-color); }
.ts-dropdown { background: var(--bs-body-bg); border-color: var(--bs-border-color); z-index: 1060; }
.ts-dropdown .option, .ts-dropdown .no-results { color: var(--bs-body-color); }
.ts-dropdown .active { background: var(--bs-tertiary-bg); color: var(--bs-emphasis-color); }
.ts-dropdown .option:hover { background: var(--bs-secondary-bg); }
.ts-wrapper .ts-control input::placeholder { color: var(--bs-secondary-color); }
/* Escolhido em uma linha só (nome longo vira "…"); lista mais larga que o campo nos filtros estreitos. */
.ts-wrapper.single .ts-control { flex-wrap: nowrap; }
.ts-wrapper.single .ts-control .item { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.ts-wrapper .ts-dropdown { min-width: min(360px, 92vw); }
.ts-dropdown .dropdown-input-wrap { padding: 6px; }
.ts-dropdown .dropdown-input { background: var(--bs-body-bg); color: var(--bs-body-color); border: 1px solid var(--bs-border-color); border-radius: 6px; padding: 4px 8px; width: 100%; }
/* Obrigatório vazio: borda vermelha como os outros campos */
.ts-wrapper.invalid, .ts-wrapper.invalid .ts-control { border-color: var(--bs-border-color); }
.ts-wrapper.ts-erro, .ts-wrapper.ts-erro .ts-control { border-color: var(--bs-form-invalid-border-color, #dc3545); }
/* Paginação no celular: só a página atual e as vizinhas (a barra cabe numa linha). */
@media (max-width: 575.98px) { .pagination .pg-longe { display: none; } .pagination { flex-wrap: wrap; row-gap: 4px; } }
/* Celular: espaço no fim da página para o botão do chat (fixo no canto) não cobrir o último conteúdo. */
@media (max-width: 991.98px) { body { padding-bottom: 84px; } }
#chat-toggle .gs-icone-chat { width: 26px; height: 26px; margin: 0; }
.gs-sidebar .nav-link .gs-icone { width: 18px; height: 18px; margin-right: 10px; opacity: .85; vertical-align: -4px; }
.gs-sidebar .nav-link.gs-ativo .gs-icone { opacity: 1; }
.gs-sidebar .nav-link .gs-seta { width: 14px; height: 14px; margin: 0; transition: transform .15s; }
.gs-sidebar .nav-link[aria-expanded="true"] .gs-seta { transform: rotate(180deg); }

/* ── Cards de número ──────────────────────────────────────────────────
   <div class="card gs-stat gs-stat-red [gs-stat-alerta]"> com um
   icone(..., 'gs-stat-icone') no começo do card-body. Claro (D): bloco de cor
   sólida com texto branco. Escuro (C): card escuro, ícone num chip da cor e
   brilho quando é alerta. Faixa larga de aviso: gs-faixa (chip nos dois modos). */
.gs-stat, .gs-faixa { --gs-stat-cor: var(--gs-p); --gs-stat-tinta: #fff; }
.gs-stat-navy  { --gs-stat-cor: #16305c; }
.gs-stat-blue  { --gs-stat-cor: #2554a0; }
.gs-stat-red   { --gs-stat-cor: var(--gs-red); }
.gs-stat-amber { --gs-stat-cor: var(--gs-amber); --gs-stat-tinta: #4a3300; }
.gs-stat-slate { --gs-stat-cor: var(--gs-slate); }
.gs-stat-green { --gs-stat-cor: var(--gs-green); }
.gs-stat-teal  { --gs-stat-cor: var(--gs-teal); }
.gs-stat-roxo  { --gs-stat-cor: #6c3fc5; }
[data-bs-theme="dark"] .gs-stat-navy  { --gs-stat-cor: var(--gs-text); }
[data-bs-theme="dark"] .gs-stat-blue  { --gs-stat-cor: #7aa7ff; }
[data-bs-theme="dark"] .gs-stat-roxo  { --gs-stat-cor: #b69cff; }

.gs-stat .gs-stat-icone { display: block; width: 20px; height: 20px; margin-bottom: 12px; }
.gs-stat .fs-1 { font-family: 'Space Grotesk', 'IBM Plex Sans', sans-serif; line-height: 1.1; font-variant-numeric: normal; }
a:hover > .gs-stat { transform: translateY(-2px); }
.gs-stat { transition: transform .15s, box-shadow .15s; }

[data-bs-theme="light"] .gs-stat { background: var(--gs-stat-cor); color: var(--gs-stat-tinta); border: 0; }
[data-bs-theme="light"] .gs-stat-green { background: linear-gradient(135deg, var(--gs-teal), var(--gs-green)); }
[data-bs-theme="light"] .gs-stat .gs-stat-icone { opacity: .6; }
[data-bs-theme="light"] .gs-stat .text-muted,
[data-bs-theme="light"] .gs-stat .text-body-secondary { color: inherit !important; opacity: .8; }
[data-bs-theme="light"] .gs-stat .text-danger,
[data-bs-theme="light"] .gs-stat .text-success,
[data-bs-theme="light"] .gs-stat .text-body,
[data-bs-theme="light"] .gs-stat .text-warning-emphasis,
[data-bs-theme="light"] .gs-stat .text-warning,
[data-bs-theme="light"] .gs-stat a:not(.btn) { color: inherit !important; }
[data-bs-theme="light"] .gs-stat.gs-stat-selecionado { box-shadow: 0 0 0 3px var(--gs-bg), 0 0 0 5px var(--gs-stat-cor), var(--gs-sombra); }

.gs-faixa .gs-stat-icone,
[data-bs-theme="dark"] .gs-stat .gs-stat-icone {
  box-sizing: content-box; width: 18px; height: 18px; padding: 8px; border-radius: 10px;
  color: var(--gs-stat-cor); background: color-mix(in srgb, var(--gs-stat-cor) 14%, transparent);
}
.gs-faixa .gs-stat-icone { flex-shrink: 0; }
[data-bs-theme="dark"] .gs-stat .fs-1, [data-bs-theme="dark"] .gs-stat .fs-4 { font-family: 'JetBrains Mono', ui-monospace, monospace; letter-spacing: -.02em; }
[data-bs-theme="dark"] .gs-stat-alerta, [data-bs-theme="dark"] .gs-faixa.gs-stat-alerta {
  border-color: color-mix(in srgb, var(--gs-stat-cor) 38%, transparent);
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--gs-stat-cor) 25%, transparent), 0 0 24px -4px color-mix(in srgb, var(--gs-stat-cor) 28%, transparent);
}
[data-bs-theme="dark"] .gs-stat-alerta .fs-1 { color: var(--gs-stat-cor); }
[data-bs-theme="dark"] .gs-stat.gs-stat-selecionado { border-color: var(--gs-stat-cor); }

/* ── Números e utilitários ────────────────────────────────────────── */
.gs-num { font-family: 'Space Grotesk', 'IBM Plex Sans', sans-serif; font-variant-numeric: tabular-nums; }
[data-bs-theme="dark"] .gs-num { font-family: 'JetBrains Mono', ui-monospace, monospace; }
.gs-superficie-2 { background: var(--gs-surface-2) !important; }
[data-bs-theme="dark"] .bg-white { background-color: var(--gs-surface) !important; }
[data-bs-theme="dark"] .bg-light { background-color: var(--gs-surface-2) !important; }
code { color: var(--gs-teal); }

/* ── Agenda (FullCalendar 6) ──────────────────────────────────────────
   O CSS dele vem dentro do JS, com cores fixas de tema claro; aqui as
   variáveis dele passam a seguir as --gs-* (vale nos dois modos). */
.fc {
  --fc-page-bg-color: var(--gs-surface);
  --fc-neutral-bg-color: var(--bs-secondary-bg);
  --fc-neutral-text-color: var(--gs-muted);
  --fc-border-color: var(--gs-border-forte);
  --fc-today-bg-color: color-mix(in srgb, var(--gs-acc) 14%, transparent);
  --fc-highlight-color: color-mix(in srgb, var(--gs-p) 14%, transparent);
  --fc-non-business-color: color-mix(in srgb, var(--gs-text) 4%, transparent);
  --fc-list-event-hover-bg-color: var(--bs-secondary-bg);
  --fc-more-link-bg-color: var(--bs-secondary-bg);
  --fc-more-link-text-color: var(--gs-text);
  --fc-now-indicator-color: var(--gs-red);
  --fc-button-text-color: var(--gs-p-texto);
  --fc-button-bg-color: var(--gs-p);
  --fc-button-border-color: var(--gs-p);
  --fc-button-hover-bg-color: var(--gs-p-hover);
  --fc-button-hover-border-color: var(--gs-p-hover);
  --fc-button-active-bg-color: color-mix(in srgb, var(--gs-p) 78%, #000);
  --fc-button-active-border-color: color-mix(in srgb, var(--gs-p) 78%, #000);
  color: var(--gs-text);
}
.fc .fc-toolbar-title { font-family: 'Space Grotesk', 'IBM Plex Sans', sans-serif; font-size: 1.35rem; }
.fc .fc-button { font-weight: 600; }
/* Botão de visão ativo (Mês/Semana/Lista) e "Hoje" desabilitado: cartão com
   borda dourada em vez de dourado escurecido com texto escuro (mal se via no escuro). */
.fc .fc-button-primary:not(:disabled).fc-button-active,
.fc .fc-button-primary:not(:disabled):active { background: var(--gs-surface); color: var(--gs-text); border-color: var(--gs-p); box-shadow: inset 0 -3px 0 var(--gs-p); }
.fc .fc-button-primary:disabled { background: var(--gs-surface-2); color: var(--gs-muted); border-color: var(--gs-border-forte); opacity: 1; }
.fc .fc-button:focus { box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--gs-p) 30%, transparent) !important; }
.fc .fc-col-header-cell-cushion, .fc .fc-daygrid-day-number, .fc .fc-list-day-cushion a { color: var(--gs-text); }
.fc .fc-list-event:hover td { background-color: var(--fc-list-event-hover-bg-color); }
@media (max-width: 575.98px) {   /* celular: botões e título quebram linha em vez de sair do card */
  .fc .fc-toolbar { flex-wrap: wrap; gap: .5rem; }
  .fc .fc-toolbar-chunk:nth-child(2) { order: -1; flex-basis: 100%; text-align: center; }
  .fc .fc-toolbar-title { font-size: 1.15rem; }
}

/* ── Impressão ────────────────────────────────────────────────────────
   Com o escuro ligado, as --gs-* já voltam às do claro (a paleta escura só
   vale fora da impressão, lá em cima); aqui voltam também as do próprio
   Bootstrap que a paleta clara não redefine. */
@media print {
  [data-bs-theme="dark"] {
    color-scheme: light;
    --bs-body-color-rgb: 22, 32, 58; --bs-body-bg-rgb: 255, 255, 255;
    --bs-emphasis-color-rgb: 0, 0, 0; --bs-secondary-color-rgb: 100, 106, 128;
    --bs-heading-color: inherit;
    --bs-border-color-translucent: rgba(0, 0, 0, .175);
    --bs-code-color: #d63384; --bs-highlight-color: #212529; --bs-highlight-bg: #fff3cd;
    --bs-form-valid-color: #198754; --bs-form-valid-border-color: #198754;
    --bs-form-invalid-color: #dc3545; --bs-form-invalid-border-color: #dc3545;
    --bs-primary-text-emphasis: #052c65; --bs-primary-bg-subtle: #cfe2ff; --bs-primary-border-subtle: #9ec5fe;
    --bs-secondary-text-emphasis: #2b2f32; --bs-secondary-bg-subtle: #e2e3e5; --bs-secondary-border-subtle: #c4c8cb;
    --bs-success-text-emphasis: #0a3622; --bs-success-bg-subtle: #d1e7dd; --bs-success-border-subtle: #a3cfbb;
    --bs-info-text-emphasis: #055160; --bs-info-bg-subtle: #cff4fc; --bs-info-border-subtle: #9eeaf9;
    --bs-warning-text-emphasis: #664d03; --bs-warning-bg-subtle: #fff3cd; --bs-warning-border-subtle: #ffe69c;
    --bs-danger-text-emphasis: #58151c; --bs-danger-bg-subtle: #f8d7da; --bs-danger-border-subtle: #f1aeb5;
    --bs-light-text-emphasis: #495057; --bs-light-bg-subtle: #fcfcfd; --bs-light-border-subtle: #e9ecef;
    --bs-dark-text-emphasis: #495057; --bs-dark-bg-subtle: #ced4da; --bs-dark-border-subtle: #adb5bd;
  }
  /* Regras "só do escuro" que não passam por variável. */
  [data-bs-theme="dark"] .text-warning { color: #8a5a00 !important; }
  [data-bs-theme="dark"] .text-bg-light { background-color: #f1efe8 !important; }
  [data-bs-theme="dark"] .text-bg-dark, [data-bs-theme="dark"] .badge.bg-dark { background-color: #212529 !important; color: #fff !important; box-shadow: none; }
  [data-bs-theme="dark"] .text-bg-primary, [data-bs-theme="dark"] .badge.bg-primary { color: #fff !important; }
  [data-bs-theme="dark"] .btn-close { filter: none; }
  [data-bs-theme="dark"] .btn-outline-secondary { --bs-btn-bg: var(--gs-surface); }
  [data-bs-theme="dark"] .btn-gs, [data-bs-theme="dark"] .btn-primary { box-shadow: none; }
  /* Sem "gráficos de fundo" (padrão do Ctrl+P) o fundo do botão/selo some e o
     texto branco fica quase invisível no papel: esses fundos pequenos saem. */
  .btn, .badge { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  body { background: #fff !important; color: #000 !important; }
  .card { box-shadow: none !important; }
}

/* ── Abas das áreas do Financeiro (header.php) ────────────────────── */
/* Sublinhado (não "tabs") para não confundir com as abas internas de algumas telas. */
.gs-abas-financeiro .nav-underline { overflow-x: auto; overflow-y: hidden; scrollbar-width: thin; border-bottom: 1px solid var(--gs-border); gap: 1.25rem; padding: .25rem .25rem 0; }
.gs-abas-financeiro .nav-underline .nav-link:focus-visible { box-shadow: inset 0 0 0 .2rem rgba(var(--bs-primary-rgb), .35); border-radius: .25rem .25rem 0 0; }
@media print { .gs-abas-financeiro { display: none !important; } }
.gs-abas-financeiro .nav-underline .nav-link { white-space: nowrap; color: var(--gs-muted); font-weight: 500; padding-bottom: .5rem; }
.gs-abas-financeiro .nav-underline .nav-link:hover { color: var(--gs-text); }
.gs-abas-financeiro .nav-underline .nav-link.active { color: var(--gs-text); font-weight: 600; border-bottom-color: var(--gs-p); }

/* Modo escuro: verde e vermelho do Bootstrap ficam abaixo de 4,5:1 sobre os cartões; usa os tons "emphasis". */
[data-bs-theme="dark"] .text-success { color: var(--bs-success-text-emphasis) !important; }
[data-bs-theme="dark"] .text-danger { color: var(--bs-danger-text-emphasis) !important; }

/* Espaço no fim da página para o botão flutuante do chat não cobrir o último conteúdo. */
.gs-pagina { padding-bottom: 6rem; }

/* Agenda: atividades/reuniões (não são OS) com borda tracejada; canceladas riscadas. */
.fc .gs-compromisso { border-style: dashed !important; border-width: 1.5px !important; }
.fc .gs-compromisso-cancelada .fc-event-title, .fc .gs-compromisso-cancelada .fc-list-event-title { text-decoration: line-through; opacity: .75; }
.fc .gs-compromisso-feita .fc-event-title::before, .fc .gs-compromisso-feita .fc-list-event-title a::before { content: "✓ "; }

/* ── Agenda: quadro da semana (agenda/semana.php) ───────────────────── */
.gs-quadro-rolagem { overflow-x: auto; }
.gs-quadro { width: 100%; min-width: 980px; border-collapse: separate; border-spacing: 0; table-layout: fixed; }
.gs-quadro th, .gs-quadro td { border-bottom: 1px solid var(--gs-border); border-right: 1px solid var(--gs-border); vertical-align: top; }
.gs-quadro thead th { position: sticky; top: 0; z-index: 2; background: var(--gs-surface); font-size: .8rem; font-weight: 600; padding: .55rem .5rem; text-transform: none; }
.gs-quadro .gs-quadro-pessoa { width: 150px; position: sticky; left: 0; z-index: 1; background: var(--gs-surface); padding: .55rem .6rem; font-size: .85rem; }
.gs-quadro thead .gs-quadro-pessoa { z-index: 3; }
.gs-quadro tr:last-child th, .gs-quadro tr:last-child td { border-bottom: 0; }
.gs-quadro th:last-child, .gs-quadro td:last-child { border-right: 0; }
.gs-quadro th.gs-hoje { color: var(--gs-p); box-shadow: inset 0 -2px 0 var(--gs-p); }
.gs-cel { padding: .35rem; height: 70px; }
.gs-cel.gs-hoje { background: color-mix(in srgb, var(--gs-acc) 6%, transparent); }
.gs-cel-alvo { background: color-mix(in srgb, var(--gs-p) 16%, transparent) !important; outline: 2px dashed var(--gs-p); outline-offset: -3px; }
.gs-cel-mais { display: block; text-align: center; color: var(--gs-muted); text-decoration: none; border: 1px dashed transparent; border-radius: 6px; line-height: 1.4; font-size: .9rem; opacity: 0; transition: opacity .15s; }
.gs-cel:hover .gs-cel-mais, .gs-cel-mais:focus-visible { opacity: 1; border-color: var(--gs-border-forte); }
@media (hover: none) { .gs-cel-mais { opacity: .6; } }
.gs-card { display: block; text-decoration: none; color: var(--gs-text); background: var(--gs-surface-2); border: 1px solid var(--gs-border-forte); border-left: 4px solid var(--gs-muted); border-radius: 7px; padding: .3rem .45rem; margin-bottom: .3rem; font-size: .76rem; line-height: 1.3; overflow: hidden; }
.gs-card:hover { color: var(--gs-text); border-color: var(--gs-p); }
.gs-card[draggable="true"] { cursor: grab; }
.gs-card span { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gs-card-l1 { font-weight: 600; }
.gs-card-l1 .gs-icone { width: 13px; height: 13px; margin-right: 3px; vertical-align: -2px; }
.gs-card-l3 { color: var(--gs-muted); }
.gs-card-marca { display: inline !important; font-weight: 500; font-size: .68rem; text-transform: uppercase; letter-spacing: .03em; color: var(--gs-muted); margin-left: 2px; }
.gs-card-os.gs-st-agendada { border-left-color: #2554a0; }
.gs-card-os.gs-st-em_andamento { border-left-color: #e8b800; }
.gs-card-os.gs-st-concluida { border-left-color: #1d9e6f; opacity: .6; }
.gs-card-os.gs-st-cancelada { border-left-color: #c0392b; opacity: .5; text-decoration: line-through; }
.gs-card-os.gs-st-solicitada { border-left-color: var(--gs-muted); }
.gs-card-aux { opacity: .75; border-style: solid; border-left-style: dotted; }
.gs-card-comp { border-style: dashed; border-left: 4px solid #7a4fb3; }
.gs-card-comp.gs-sit-feita { opacity: .65; }
.gs-card-comp.gs-sit-cancelada { opacity: .5; text-decoration: line-through; }
[data-bs-theme="dark"] .gs-card-os.gs-st-agendada { border-left-color: #5b8ee0; }
[data-bs-theme="dark"] .gs-card-comp { border-left-color: #a98ae0; }
.gs-arrastando { opacity: .4; }
.gs-salvando { opacity: .55; pointer-events: none; }
.gs-leg { display: inline-block; width: 18px; height: 11px; border-radius: 3px; vertical-align: -1px; margin-right: 4px; border: 1px solid var(--gs-border-forte); border-left: 4px solid #2554a0; }
.gs-leg-comp { border-style: dashed; border-left: 4px solid #7a4fb3; }
@media print { .gs-cel-mais { display: none; } .gs-quadro { min-width: 0; } }

/* Agenda no celular: lista por dia (agenda/semana.php). */
.gs-item-dia { border-left: 4px solid var(--gs-muted); }   /* sem id: a cor da situação (.gs-card-os.gs-st-*) ganha */
.gs-item-dia.gs-card-comp { border-left-style: dashed; border-left-color: #7a4fb3; }
#lista-semana .gs-item-dia .gs-icone { width: 14px; height: 14px; margin-right: 3px; vertical-align: -2px; }
#lista-semana .gs-dia-hoje { border-color: var(--gs-p); }
[data-bs-theme="dark"] .gs-item-dia.gs-card-comp { border-left-color: #a98ae0; }
