/* ===================== JG ENGENHARIA — tema ===================== */
:root {
  --jg-azul: #0B3D68;
  --jg-azul-escuro: #072a49;
  --jg-laranja: #F28C28;
  --jg-laranja-escuro: #d97818;
  --jg-sidebar-w: 248px;
  --jg-raio: .7rem;
  --jg-raio-sm: .5rem;
  --bs-primary: #0B3D68;
  --bs-primary-rgb: 11, 61, 104;
  --bs-link-color: #0B5CA0;
  --bs-link-color-rgb: 11, 92, 160;
  --bs-body-font-family: Lato, "Segoe UI", "DejaVu Sans", system-ui, sans-serif;
  --bs-border-radius: var(--jg-raio-sm);
}

/* ---------- Tema claro: fundo branco e cinza suave ---------- */
[data-bs-theme="light"] {
  --bs-body-bg: #f3f5f9; --bs-body-color: #1f2a37; --bs-secondary-color: #667085;
  --bs-border-color: #e3e8ef; --bs-tertiary-bg: #f6f8fb;
  --jg-card-bg: #ffffff; --jg-campo-bg: #ffffff; --jg-campo-borda: #d5dce6;
  --jg-thead-bg: #f6f8fb; --jg-hover-bg: #f3f6fa; --jg-sombra: 0 1px 2px rgba(16,24,40,.05), 0 1px 3px rgba(16,24,40,.06);
}

/* ---------- Tema escuro: menu azul-marinho, fundo grafite azulado, cartões um pouco mais claros ---------- */
[data-bs-theme="dark"] {
  --bs-body-bg: #1a2230; --bs-body-color: #e2e8f0; --bs-emphasis-color: #f5f8fc;
  --bs-secondary-color: #9aa9bd; --bs-secondary-color-rgb: 154, 169, 189;
  --bs-tertiary-bg: #263142; --bs-secondary-bg: #263142;
  --bs-border-color: #314055; --bs-border-color-translucent: rgba(255,255,255,.08);
  --bs-primary: #6aaeea; --bs-primary-rgb: 106, 174, 234;
  --bs-link-color: #7db8ee; --bs-link-color-rgb: 125, 184, 238; --bs-link-hover-color: #a6cff5;
  --bs-heading-color: #f1f5fa;
  --jg-card-bg: #222c3b; --jg-campo-bg: #1b2431; --jg-campo-borda: #3a4a60;
  --jg-thead-bg: #273243; --jg-hover-bg: #283445; --jg-sombra: 0 1px 2px rgba(0,0,0,.25);
  --jg-sidebar-bg: #0e2340; --jg-sidebar-bg2: #0a1b33;
}
.btn-primary { --bs-btn-bg: var(--jg-azul); --bs-btn-border-color: var(--jg-azul); --bs-btn-hover-bg: var(--jg-azul-escuro);
  --bs-btn-hover-border-color: var(--jg-azul-escuro); --bs-btn-active-bg: var(--jg-azul-escuro); --bs-btn-disabled-bg: var(--jg-azul);
  --bs-btn-disabled-border-color: var(--jg-azul); }
[data-bs-theme="dark"] .btn-primary { --bs-btn-bg: #2b6cab; --bs-btn-border-color: #2b6cab; --bs-btn-hover-bg: #3580c6; --bs-btn-hover-border-color: #3580c6;
  --bs-btn-active-bg: #245d94; --bs-btn-active-border-color: #245d94; --bs-btn-disabled-bg: #2b6cab; --bs-btn-disabled-border-color: #2b6cab; }
.btn-outline-primary { --bs-btn-color: var(--bs-primary); --bs-btn-border-color: var(--bs-primary); --bs-btn-hover-bg: var(--bs-primary); --bs-btn-hover-border-color: var(--bs-primary); --bs-btn-active-bg: var(--bs-primary); }
[data-bs-theme="dark"] .btn-outline-primary { --bs-btn-hover-color: #0f1a28; --bs-btn-active-color: #0f1a28; }
[data-bs-theme="dark"] .btn-outline-secondary { --bs-btn-color: #c3cedc; --bs-btn-border-color: #3f4f66; --bs-btn-hover-bg: #2d3a4d; --bs-btn-hover-border-color: #4b5d77; --bs-btn-hover-color: #fff; }
.btn-laranja { --bs-btn-bg: var(--jg-laranja); --bs-btn-border-color: var(--jg-laranja); --bs-btn-color: #fff; --bs-btn-hover-bg: var(--jg-laranja-escuro); --bs-btn-hover-border-color: var(--jg-laranja-escuro); --bs-btn-hover-color: #fff; }
.text-primary { color: var(--bs-primary) !important; }
.bg-primary { background-color: var(--jg-azul) !important; }

/* ===================== Estrutura ===================== */
body { min-height: 100vh; }
.jg-sidebar {
  width: var(--jg-sidebar-w); background: linear-gradient(180deg, var(--jg-azul) 0%, var(--jg-azul-escuro) 100%);
  color: #dce6f2; position: fixed; inset: 0 auto 0 0; z-index: 1040; display: flex; flex-direction: column;
}
.jg-sidebar .marca { display: flex; align-items: center; gap: .65rem; padding: 1.1rem 1.1rem; border-bottom: 1px solid rgba(255,255,255,.08); text-decoration: none; }
.jg-sidebar .marca img { width: 38px; height: 38px; }
.jg-sidebar .marca strong { color: #fff; font-size: 1.02rem; letter-spacing: .04em; line-height: 1.1; display: block; }
.jg-sidebar .marca small { color: var(--jg-laranja); font-size: .68rem; letter-spacing: .18em; display: block; }
.jg-sidebar nav { padding: .75rem .6rem; overflow-y: auto; flex: 1; }
.jg-sidebar .nav-link, .jg-sidebar .btn-sair {
  color: #c8d6e6; border-radius: .5rem; padding: .55rem .8rem; display: flex; align-items: center; gap: .7rem; font-size: .93rem; margin-bottom: 2px;
  width: 100%; background: none; border: 0; text-align: left;
}
.jg-sidebar .nav-link i, .jg-sidebar .btn-sair i { font-size: 1.05rem; width: 1.2rem; text-align: center; }
.jg-sidebar .nav-link:hover { background: rgba(255,255,255,.08); color: #fff; }
.jg-sidebar .nav-link.active { background: rgba(242,140,40,.18); color: #fff; box-shadow: inset 3px 0 0 var(--jg-laranja); }
.jg-sidebar .secao { font-size: .68rem; text-transform: uppercase; letter-spacing: .12em; color: #7f98b3; padding: .9rem .8rem .3rem; }
.jg-sidebar .rodape { padding: .6rem .6rem; border-top: 1px solid rgba(255,255,255,.08); }
.jg-sidebar .btn-sair { color: #ffb4a8; }
.jg-sidebar .btn-sair:hover { background: rgba(255,120,100,.12); color: #fff; }

.jg-main { margin-left: var(--jg-sidebar-w); min-height: 100vh; display: flex; flex-direction: column; }
.jg-topbar {
  position: sticky; top: 0; z-index: 1030; background: var(--jg-card-bg); border-bottom: 1px solid var(--bs-border-color);
  padding: .55rem 1.25rem; display: flex; align-items: center; gap: .75rem;
}
.jg-topbar .titulo { font-weight: 700; font-size: 1.08rem; margin: 0; }
.jg-conteudo { padding: 1.25rem; flex: 1; }
.jg-backdrop { display: none; }

@media (max-width: 991.98px) {
  .jg-sidebar { transform: translateX(-100%); transition: transform .2s ease; }
  body.menu-aberto .jg-sidebar { transform: none; }
  body.menu-aberto .jg-backdrop { display: block; position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 1035; }
  .jg-main { margin-left: 0; }
  .jg-conteudo { padding: .85rem; }
}

/* ===================== Componentes ===================== */
.card { background: var(--jg-card-bg); border-color: var(--bs-border-color); border-radius: .75rem; }
.card-header { background: transparent; font-weight: 700; }
.shadow-jg { box-shadow: 0 1px 3px rgba(16,24,40,.06), 0 1px 2px rgba(16,24,40,.04); }

.kpi { border: 0; border-left: 4px solid var(--kpi-cor, var(--jg-azul)); height: 100%; }
.kpi .card-body { display: flex; align-items: center; gap: .9rem; padding: .95rem 1rem; }
.kpi .icone {
  width: 46px; height: 46px; border-radius: .7rem; display: grid; place-items: center; font-size: 1.35rem; flex-shrink: 0;
  background: color-mix(in srgb, var(--kpi-cor, var(--jg-azul)) 14%, transparent); color: var(--kpi-cor, var(--jg-azul));
}
.kpi .rotulo { font-size: .78rem; color: var(--bs-secondary-color); text-transform: uppercase; letter-spacing: .04em; }
.kpi .valor { font-size: 1.32rem; font-weight: 800; line-height: 1.2; }
.kpi-azul { --kpi-cor: #1f6fb5; } .kpi-laranja { --kpi-cor: #F28C28; } .kpi-verde { --kpi-cor: #1e9e5a; }
.kpi-vermelho { --kpi-cor: #d63a3a; } .kpi-roxo { --kpi-cor: #7a4cc2; } .kpi-cinza { --kpi-cor: #6b7785; } .kpi-ciano { --kpi-cor: #0f9bb0; }

.atalho { text-decoration: none; color: inherit; display: flex; flex-direction: column; align-items: center; gap: .35rem;
  padding: .9rem .4rem; border-radius: .7rem; border: 1px solid var(--bs-border-color); background: var(--jg-card-bg); font-size: .85rem; text-align: center; }
.atalho i { font-size: 1.5rem; color: var(--jg-laranja); }
.atalho:hover { border-color: var(--jg-laranja); color: var(--bs-primary); }

.table { --bs-table-bg: transparent; }
.table > :not(caption) > * > * { padding: .55rem .6rem; }
.table thead th { font-size: .76rem; text-transform: uppercase; letter-spacing: .04em; color: var(--bs-secondary-color); font-weight: 700; white-space: nowrap; }
.table td { vertical-align: middle; }
.text-valor { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.form-label { font-weight: 600; font-size: .86rem; margin-bottom: .3rem; }
.form-label .obrig { color: #dc3545; }
.secao-form { font-size: .8rem; text-transform: uppercase; letter-spacing: .08em; color: var(--bs-secondary-color); font-weight: 700;
  border-bottom: 1px solid var(--bs-border-color); padding-bottom: .35rem; margin: 1.2rem 0 .8rem; }
.secao-form:first-child { margin-top: 0; }
.badge { font-weight: 600; }
.dl-dados dt { font-size: .75rem; color: var(--bs-secondary-color); font-weight: 600; text-transform: uppercase; letter-spacing: .03em; }
.dl-dados dd { margin-bottom: .7rem; }
.linha-tempo { list-style: none; padding-left: 0; margin: 0; }
.linha-tempo li { position: relative; padding: 0 0 .9rem 1.4rem; border-left: 2px solid var(--bs-border-color); margin-left: .4rem; }
.linha-tempo li::before { content: ""; position: absolute; left: -7px; top: 3px; width: 12px; height: 12px; border-radius: 50%; background: var(--jg-laranja); }
.linha-tempo li:last-child { border-left-color: transparent; }
.vazio { text-align: center; color: var(--bs-secondary-color); padding: 2rem 1rem; }
.vazio i { font-size: 2.2rem; display: block; margin-bottom: .4rem; opacity: .5; }
.filtros { background: var(--jg-card-bg); border: 1px solid var(--bs-border-color); border-radius: .75rem; padding: .85rem 1rem .3rem; margin-bottom: 1rem; }
.compromisso-proximo { border-left: 3px solid var(--jg-laranja) !important; }
.compromisso-agora { background: color-mix(in srgb, var(--jg-laranja) 12%, transparent); }
.matriz-permissoes td, .matriz-permissoes th { text-align: center; }
.matriz-permissoes td:first-child, .matriz-permissoes th:first-child { text-align: left; }
#avisoSessao { position: fixed; right: 1rem; bottom: 1rem; z-index: 2000; max-width: 340px; }

/* ===================== Login ===================== */
.login-fundo {
  min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 1rem;
  background: radial-gradient(circle at 15% 20%, #1a5a92 0%, transparent 45%), linear-gradient(135deg, #072a49 0%, #0B3D68 60%, #12497a 100%);
}
.login-card { width: 100%; max-width: 430px; border: 0; border-radius: 1rem; box-shadow: 0 20px 50px rgba(0,0,0,.35); }
.login-card .topo { text-align: center; padding: 2rem 2rem 1rem; }
.login-card .topo img { width: 72px; height: 72px; }
.login-card .topo h1 { font-size: 1.45rem; font-weight: 800; letter-spacing: .06em; margin: .8rem 0 0; color: var(--bs-primary); }
.login-card .topo p { color: var(--bs-secondary-color); font-size: .88rem; margin: 0; }
.login-rodape { color: #a9c0d8; font-size: .78rem; text-align: center; margin-top: 1rem; }

/* ===================== Agenda ===================== */
#calendario { --fc-border-color: var(--bs-border-color); --fc-page-bg-color: var(--jg-card-bg); --fc-today-bg-color: rgba(242,140,40,.10);
  --fc-button-bg-color: #0B3D68; --fc-button-border-color: #0B3D68; --fc-button-hover-bg-color: #072a49; --fc-button-hover-border-color: #072a49;
  --fc-button-active-bg-color: #F28C28; --fc-button-active-border-color: #F28C28; --fc-neutral-bg-color: var(--bs-tertiary-bg); }
#calendario .fc-toolbar-title { font-size: 1.15rem; font-weight: 700; }
#calendario .fc-toolbar-title::first-letter { text-transform: uppercase; }
#calendario .fc-event { cursor: pointer; }
#calendario .fc-daygrid-block-event .fc-event-main { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .8rem; }
#calendario .fc-col-header-cell-cushion { text-transform: capitalize; }
[data-bs-theme="light"] #calendario { --fc-non-business-color: rgba(0,0,0,.025); }
[data-bs-theme="dark"] #calendario { --fc-non-business-color: rgba(255,255,255,.025); --fc-list-event-hover-bg-color: #232b35; }
#calendario a { color: inherit; text-decoration: none; }

/* ===================== Impressão ===================== */
@media print {
  .jg-sidebar, .jg-topbar, .no-print, .btn { display: none !important; }
  .jg-main { margin: 0; }
}

/* ===================== Etapas da OS e agenda simplificada ===================== */
.etapa-item { transition: background-color .2s; }
.etapa-item .form-check-input { width: 1.25em; height: 1.25em; cursor: pointer; flex-shrink: 0; }
.etapa-concluida { background: color-mix(in srgb, #1e9e5a 9%, transparent); }
.etapa-concluida .etapa-nome { color: var(--bs-success-text-emphasis); font-weight: 600; }
.compromisso .compromisso-check { width: 1.3em; height: 1.3em; cursor: pointer; }
.compromisso-atrasado { border-left: 4px solid #d63a3a !important; background: color-mix(in srgb, #d63a3a 7%, transparent); }
.compromisso-proximo { border-left: 4px solid var(--jg-laranja) !important; }
.compromisso-concluido .compromisso-titulo { text-decoration: line-through; color: var(--bs-secondary-color) !important; }
.min-w-0 { min-width: 0; }
details > summary { cursor: pointer; list-style: none; }
details > summary::-webkit-details-marker { display: none; }

/* Seletor de tema */
.seletor-tema .btn.active { background: var(--jg-laranja); border-color: var(--jg-laranja); color: #fff; }

/* Etapas na listagem de OS */
.tabela-os .linha-os > td { border-bottom-width: 0; padding-bottom: .25rem; }
.tabela-os .linha-etapas > td { padding-top: 0; padding-bottom: .7rem; }
.tabela-os .linha-os:hover > td, .tabela-os .linha-os:hover + .linha-etapas > td { background: var(--bs-tertiary-bg); }
.etapas-inline { display: flex; flex-wrap: wrap; gap: .35rem .45rem; align-items: center; }
.etapa-chip { display: inline-flex; align-items: center; gap: .35rem; padding: .18rem .55rem; border: 1px solid var(--bs-border-color);
  border-radius: 999px; font-size: .78rem; cursor: pointer; user-select: none; background: var(--jg-card-bg); margin: 0; }
.etapa-chip .form-check-input { margin: 0; width: 1em; height: 1em; cursor: pointer; }
.etapa-chip.concluida { border-color: #1e9e5a; background: color-mix(in srgb, #1e9e5a 12%, transparent); color: var(--bs-success-text-emphasis); font-weight: 600; }
.etapa-chip:has(input:disabled) { cursor: default; opacity: .85; }

/* Menu lateral: só rolagem vertical em telas baixas */
.jg-sidebar nav { overflow-x: hidden; }

/* Novo projeto: escolha do tipo de contratação */
.escolha-tipo { border: 2px solid var(--bs-border-color); transition: border-color .15s, box-shadow .15s, transform .15s; }
.escolha-tipo:hover, .escolha-tipo:focus-visible { border-color: var(--bs-primary); box-shadow: 0 .4rem 1rem rgba(0,0,0,.08); transform: translateY(-2px); }

/* =====================================================================
   Visual 2026 — cartões, tabelas, campos e botões padronizados (claro e escuro)
   ===================================================================== */
.jg-conteudo { padding: 1.1rem 1.4rem 1.6rem; }
@media (max-width: 991.98px) { .jg-conteudo { padding: .8rem .75rem 1.2rem; } }
.jg-topbar { background: color-mix(in srgb, var(--jg-card-bg) 92%, transparent); backdrop-filter: saturate(140%) blur(6px); padding: .5rem 1.4rem; }

/* Menu lateral escuro: azul-marinho, laranja só no item ativo */
[data-bs-theme="dark"] .jg-sidebar { background: linear-gradient(180deg, var(--jg-sidebar-bg) 0%, var(--jg-sidebar-bg2) 100%); border-right: 1px solid rgba(255,255,255,.04); }
[data-bs-theme="dark"] .jg-sidebar .nav-link { color: #b9c7d8; }
[data-bs-theme="dark"] .jg-sidebar .nav-link:hover { background: rgba(255,255,255,.06); color: #fff; }
[data-bs-theme="dark"] .jg-sidebar .nav-link.active { background: rgba(255,255,255,.08); color: #fff; box-shadow: inset 3px 0 0 var(--jg-laranja); }
[data-bs-theme="dark"] .jg-sidebar .nav-link.active i { color: var(--jg-laranja); }
[data-bs-theme="dark"] .jg-sidebar .secao { color: #6f86a3; }

/* Cartões */
.card { border-radius: var(--jg-raio); border: 1px solid var(--bs-border-color); }
.shadow-jg { box-shadow: var(--jg-sombra); }
.card-header { padding: .7rem 1rem; border-bottom: 1px solid var(--bs-border-color); font-size: .92rem; }
.card-header > i:first-child, .card-header > span > i:first-child { color: var(--bs-secondary-color); }
.card-body { padding: 1rem 1.1rem; }
.card-footer { background: var(--jg-thead-bg); border-top: 1px solid var(--bs-border-color); padding: .7rem 1.1rem; }
.card-footer:last-child { border-radius: 0 0 var(--jg-raio) var(--jg-raio); }
[data-bs-theme="dark"] .card { border-color: transparent; }
[data-bs-theme="dark"] .card-header, [data-bs-theme="dark"] .card-footer { border-color: var(--bs-border-color); }

/* Campos */
.form-control, .form-select { border-radius: var(--jg-raio-sm); border-color: var(--jg-campo-borda); background-color: var(--jg-campo-bg); }
.form-control:focus, .form-select:focus { border-color: #5b9bd5; box-shadow: 0 0 0 .2rem rgba(43,108,171,.18); }
.form-control:disabled, .form-control[readonly], .form-select:disabled { background-color: var(--bs-tertiary-bg); }
.form-control::placeholder { color: color-mix(in srgb, var(--bs-secondary-color) 75%, transparent); }
.input-group-text { background: var(--bs-tertiary-bg); border-color: var(--jg-campo-borda); color: var(--bs-secondary-color); }
.input-group > .btn-outline-secondary { border-color: var(--jg-campo-borda); }
.form-check-input { border-color: color-mix(in srgb, var(--bs-secondary-color) 70%, transparent); }
.form-check-input:checked { background-color: #2b6cab; border-color: #2b6cab; }
[data-bs-theme="dark"] .form-check-input { background-color: var(--jg-campo-bg); }
[data-bs-theme="dark"] .form-check-input:checked { background-color: #3580c6; border-color: #3580c6; }
.form-text { font-size: .8rem; }
.form-label { color: var(--bs-body-color); }
.secao-form { color: var(--bs-primary); border-bottom-color: var(--bs-border-color); margin: 1.1rem 0 .75rem; padding-bottom: .4rem; font-size: .76rem; }
[data-bs-theme="light"] .secao-form { color: var(--jg-azul); }

/* Botões */
.btn { border-radius: var(--jg-raio-sm); font-weight: 600; }
.btn-sm { border-radius: .4rem; }
.btn-link { font-weight: 500; }

/* Tabelas */
.table { --bs-table-hover-bg: var(--jg-hover-bg); --bs-table-border-color: var(--bs-border-color); margin-bottom: 0; }
.table > :not(caption) > * > * { padding: .6rem .75rem; }
.table thead th { background: var(--jg-thead-bg); font-size: .72rem; border-bottom: 1px solid var(--bs-border-color); padding-top: .55rem; padding-bottom: .55rem; }
.card > .table-responsive:first-child .table thead th:first-child { border-top-left-radius: var(--jg-raio); }
.card > .table-responsive:first-child .table thead th:last-child { border-top-right-radius: var(--jg-raio); }
.table tfoot th { background: var(--jg-thead-bg); }
.table td .btn-sm { padding: .2rem .45rem; }

/* Filtros */
.filtros { border-radius: var(--jg-raio); padding: .75rem 1rem .25rem; box-shadow: var(--jg-sombra); }
[data-bs-theme="dark"] .filtros { border-color: transparent; }

/* Selos e alertas no escuro: menos brilho */
[data-bs-theme="dark"] .text-bg-light { background-color: #2c3849 !important; color: #d8e1ec !important; }
[data-bs-theme="dark"] .text-bg-light.border { border-color: #3a4a60 !important; }
[data-bs-theme="dark"] .alert-light { --bs-alert-bg: #263142; --bs-alert-color: #d8e1ec; --bs-alert-border-color: #34445a; }
[data-bs-theme="dark"] .modal-content, [data-bs-theme="dark"] .dropdown-menu { --bs-modal-bg: var(--jg-card-bg); --bs-dropdown-bg: var(--jg-card-bg); background-color: var(--jg-card-bg); }
[data-bs-theme="dark"] .list-group { --bs-list-group-bg: var(--jg-card-bg); --bs-list-group-border-color: var(--bs-border-color); }
[data-bs-theme="dark"] .nav-tabs { --bs-nav-tabs-link-active-bg: var(--jg-card-bg); --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--jg-card-bg); }
[data-bs-theme="dark"] .etapa-chip { background: var(--jg-campo-bg); }
[data-bs-theme="dark"] .kpi .icone { background: color-mix(in srgb, var(--kpi-cor, #6aaeea) 20%, transparent); }
.nav-pills { --bs-nav-pills-link-active-bg: var(--jg-azul); }
[data-bs-theme="dark"] .nav-pills { --bs-nav-pills-link-active-bg: #2b6cab; }
.nav-pills .nav-link { border-radius: var(--jg-raio-sm); font-weight: 600; font-size: .9rem; padding: .4rem .8rem; }

/* Listagens de Clientes e Projetos */
.tabela-os .linha-etapas > td { padding-bottom: .65rem; }
.tabela-os .linha-os > td { padding-top: .65rem; }
.escolha-tipo { border-radius: var(--jg-raio); background: var(--jg-card-bg); }
.escolha-tipo:hover, .escolha-tipo:focus-visible { border-color: var(--jg-laranja); }

/* ===================== Usuários ===================== */
.codigo-chip { display: inline-block; min-width: 2rem; padding: .1rem .45rem; border-radius: 999px; font-weight: 700; font-variant-numeric: tabular-nums;
  background: color-mix(in srgb, var(--bs-primary) 12%, transparent); color: var(--bs-primary); font-size: .85rem; }
.codigo-usuario { font-size: 1.05rem; letter-spacing: .04em; }
.form-usuario .coluna-dados { background: color-mix(in srgb, var(--bs-tertiary-bg) 55%, transparent); border-radius: var(--jg-raio) 0 0 0; }
@media (min-width: 992px) { .form-usuario .coluna-dados { border-right: 1px solid var(--bs-border-color); } }
@media (max-width: 991.98px) { .form-usuario .coluna-dados { border-bottom: 1px solid var(--bs-border-color); border-radius: var(--jg-raio) var(--jg-raio) 0 0; } }
.form-usuario .secao-form { margin-top: 0; }
.caixa-redefinir { border: 1px dashed var(--jg-campo-borda); border-radius: var(--jg-raio-sm); padding: .7rem .8rem .5rem; }
.matriz-permissoes { table-layout: fixed; min-width: 560px; }
.matriz-permissoes .col-modulo { width: 30%; text-align: left; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.matriz-permissoes .col-acao { width: 11.5%; text-align: center; }
.matriz-permissoes thead th { text-transform: none; letter-spacing: 0; font-size: .74rem; line-height: 1.15; vertical-align: bottom; white-space: normal; }
.matriz-permissoes thead th i { font-size: .95rem; color: var(--bs-secondary-color); }
.matriz-permissoes .form-check-input { width: 1.2em; height: 1.2em; margin: 0; float: none; cursor: pointer; vertical-align: middle; }
.matriz-permissoes .form-check-input:disabled { cursor: default; }
.matriz-permissoes tbody tr:not(.grupo-permissoes):hover > * { background: var(--jg-hover-bg); }
.matriz-permissoes .grupo-permissoes th { background: transparent; font-size: .68rem; text-transform: uppercase; letter-spacing: .1em;
  color: var(--bs-secondary-color); padding: .75rem .75rem .25rem; border-bottom: 1px solid var(--bs-border-color); font-weight: 700; }
.matriz-permissoes .col-todos { border-left: 1px dashed var(--bs-border-color); }
.matriz-permissoes tbody th.col-modulo { font-weight: 600; }

/* Selo "info" (ex.: Construtora, Senha temporária) em tom azul discreto, nos dois temas */
.badge.text-bg-info { background-color: #e3eefa !important; color: #0b4a7a !important; border: 1px solid #c9dcf1; }
[data-bs-theme="dark"] .badge.text-bg-info { background-color: #213a57 !important; color: #cfe3f8 !important; border-color: #2f5179; }
.form-check-input:indeterminate { background-color: #2b6cab; border-color: #2b6cab; }
[data-bs-theme="dark"] .form-check-input:indeterminate { background-color: #3580c6; border-color: #3580c6; }
.matriz-permissoes { min-width: 640px; }
.matriz-permissoes thead th { white-space: nowrap; }
.table-sm > :not(caption) > * > * { padding: .35rem .45rem; }
[data-bs-theme="dark"] .text-bg-primary { background-color: #2b6cab !important; color: #fff !important; }
@media (max-width: 575.98px) {
  .kpi .card-body { gap: .6rem; padding: .75rem .7rem; }
  .kpi .icone { width: 36px; height: 36px; font-size: 1.05rem; border-radius: .55rem; }
  .kpi .rotulo { font-size: .66rem; letter-spacing: 0; hyphens: auto; -webkit-hyphens: auto; }
  .kpi .valor { font-size: 1.12rem; white-space: nowrap; }
}

/* =====================================================================
   TEMA CORPORATIVO JG ENGENHARIA (claro e escuro)
   Menu azul-marinho fixo, densidade de sistema de gestão, textos digitados em MAIÚSCULAS.
   ===================================================================== */
html { font-size: 15px; }
:root { --bs-body-font-family: "Ubuntu Sans", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; --jg-raio: .375rem; --jg-raio-sm: .3rem;
  --jg-marinho: #0c2340; --jg-marinho-2: #0a1c33; --bs-border-radius: .3rem; --bs-border-radius-sm: .25rem; --bs-border-radius-lg: .4rem; }
[data-bs-theme="light"] {
  --bs-body-bg: #eef1f5; --bs-body-color: #1d2939; --bs-secondary-color: #5d6b7e; --bs-border-color: #dae0e7; --bs-tertiary-bg: #f5f7fa;
  --jg-card-bg: #ffffff; --jg-campo-bg: #ffffff; --jg-campo-borda: #c9d2dc; --jg-thead-bg: #eef2f6; --jg-faixa: #f7f9fb;
  --jg-zebra: #fafbfc; --jg-hover-bg: #eef4fb; --jg-rotulo: #4a5a70; --jg-sombra: 0 1px 2px rgba(16,24,40,.04);
}
[data-bs-theme="dark"] {
  --bs-body-bg: #19212d; --jg-card-bg: #212b39; --jg-campo-bg: #1a2230; --jg-campo-borda: #3a4a60; --jg-thead-bg: #273343;
  --jg-faixa: #253041; --jg-zebra: rgba(255,255,255,.015); --jg-hover-bg: #29364a; --jg-rotulo: #a7b5c8; --jg-sombra: none;
  --jg-marinho: #0b1d36; --jg-marinho-2: #08162a;
}
body { letter-spacing: .005em; }

/* ---------- Menu lateral: azul-marinho nos dois temas ---------- */
.jg-sidebar, [data-bs-theme="dark"] .jg-sidebar {
  background: linear-gradient(180deg, var(--jg-marinho) 0%, var(--jg-marinho-2) 100%); color: #c9d5e3; border-right: 0; box-shadow: none;
}
.jg-sidebar .marca { padding: 1rem 1.1rem; border-bottom: 1px solid rgba(255,255,255,.07); }
.jg-sidebar .marca strong { color: #fff; font-size: 1rem; letter-spacing: .06em; }
.jg-sidebar .marca small { color: var(--jg-laranja); letter-spacing: .24em; font-weight: 700; }
.jg-sidebar nav { padding: .6rem .55rem; }
.jg-sidebar .secao { color: #6c84a3; font-size: .66rem; font-weight: 700; letter-spacing: .14em; padding: 1rem .75rem .35rem; }
.jg-sidebar .nav-link { color: #c3d0df; border-radius: .3rem; padding: .5rem .75rem; font-size: .92rem; font-weight: 500; }
.jg-sidebar .nav-link i { color: #8ea4bf; }
.jg-sidebar .nav-link:hover { background: rgba(255,255,255,.06); color: #fff; }
.jg-sidebar .nav-link:hover i { color: #fff; }
.jg-sidebar .nav-link.active, [data-bs-theme="dark"] .jg-sidebar .nav-link.active {
  background: rgba(255,255,255,.09); color: #fff; font-weight: 700; box-shadow: inset 3px 0 0 var(--jg-laranja);
}
.jg-sidebar .nav-link.active i { color: var(--jg-laranja); }
.jg-sidebar .rodape { border-top: 1px solid rgba(255,255,255,.07); }
.jg-sidebar .btn-sair { color: #f3a99c; }
.jg-sidebar .btn-sair:hover { background: rgba(255,120,100,.12); color: #fff; }

/* ---------- Barra superior ---------- */
.jg-topbar { background: var(--jg-card-bg); backdrop-filter: none; border-bottom: 1px solid var(--bs-border-color); padding: .55rem 1.35rem; min-height: 54px; }
.jg-topbar .titulo { font-size: 1.05rem; font-weight: 700; color: var(--jg-azul); letter-spacing: .01em; }
[data-bs-theme="dark"] .jg-topbar .titulo { color: #f1f5fa; }
.jg-conteudo { padding: 1.1rem 1.35rem 1.5rem; }

/* ---------- Cartões com faixa de título ---------- */
.card { border: 1px solid var(--bs-border-color); border-radius: var(--jg-raio); box-shadow: var(--jg-sombra); }
[data-bs-theme="dark"] .card { border-color: #2d3a4d; }
.card-header { background: var(--jg-faixa); border-bottom: 1px solid var(--bs-border-color); padding: .6rem 1rem;
  font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--jg-azul); }
[data-bs-theme="dark"] .card-header { color: #dbe6f3; border-color: #2d3a4d; }
.card-header:first-child { border-radius: calc(var(--jg-raio) - 1px) calc(var(--jg-raio) - 1px) 0 0; }
.card-header i { color: var(--jg-laranja) !important; }
.card-body { padding: 1rem; }
.card-footer { background: var(--jg-faixa); padding: .6rem 1rem; }
.shadow-jg { box-shadow: var(--jg-sombra); }

/* ---------- Seções de formulário ---------- */
.secao-form { display: flex; align-items: center; gap: .45rem; font-size: .76rem; font-weight: 700; text-transform: uppercase; letter-spacing: .07em;
  color: var(--jg-azul); border-bottom: 1px solid var(--bs-border-color); padding: 0 0 .4rem; margin: 1.15rem 0 .8rem; }
.secao-form::before { content: ""; width: 3px; height: .95rem; background: var(--jg-laranja); border-radius: 2px; flex-shrink: 0; }
[data-bs-theme="dark"] .secao-form { color: #cfe0f2; }
.secao-form > i { display: none; }

/* ---------- Campos ---------- */
.form-label { font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--jg-rotulo); margin-bottom: .25rem; }
.form-control, .form-select { border-radius: var(--jg-raio-sm); border-color: var(--jg-campo-borda); font-size: .93rem; padding-top: .42rem; padding-bottom: .42rem; }
.form-control:focus, .form-select:focus { border-color: #2b6cab; box-shadow: 0 0 0 .18rem rgba(43,108,171,.16); }
.form-text { font-size: .76rem; }
/* Textos digitados aparecem em MAIÚSCULAS (o servidor grava em maiúsculas). Login, e-mail e senha não mudam. */
input.form-control:not([type=email]):not([type=password]):not([type=date]):not([type=datetime-local]):not([type=time]):not([type=number]):not([type=file]):not([name=Login]):not([autocomplete*=password]):not([name*=Senha]):not([name*=senha]):not(.sem-maiusculas),
textarea.form-control:not(.sem-maiusculas) { text-transform: uppercase; }
.form-control::placeholder { text-transform: none; }

/* ---------- Botões ---------- */
.btn { border-radius: var(--jg-raio-sm); font-weight: 600; font-size: .9rem; letter-spacing: .01em; }
.btn-sm { font-size: .8rem; }
.btn-primary { box-shadow: none; }
.btn-outline-secondary { --bs-btn-color: #3d4b5f; --bs-btn-border-color: #c9d2dc; --bs-btn-hover-bg: #eef2f6; --bs-btn-hover-color: #1d2939; --bs-btn-hover-border-color: #b6c1ce; --bs-btn-active-bg: #e3e9f0; --bs-btn-active-color: #1d2939; }
[data-bs-theme="dark"] .btn-outline-secondary { --bs-btn-color: #c3cedc; --bs-btn-border-color: #3f4f66; --bs-btn-hover-bg: #2d3a4d; --bs-btn-hover-color: #fff; --bs-btn-hover-border-color: #4b5d77; --bs-btn-active-bg: #33435a; }
.seletor-tema .btn.active { background: var(--jg-laranja); border-color: var(--jg-laranja); color: #fff; }

/* ---------- Tabelas: cabeçalho em faixa, linhas zebradas ---------- */
.table > :not(caption) > * > * { padding: .55rem .7rem; }
.table thead th { background: var(--jg-thead-bg); color: var(--jg-rotulo); font-size: .7rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
  border-bottom: 1px solid var(--bs-border-color); padding-top: .55rem; padding-bottom: .55rem; }
.table > tbody > tr:nth-of-type(even):not(.linha-etapas):not(.grupo-permissoes) > * { background-color: var(--jg-zebra); }
.table-hover > tbody > tr:hover > * { background-color: var(--jg-hover-bg) !important; --bs-table-bg-state: transparent; }
.table td a.fw-semibold, .table td a.fw-bold { text-decoration: none; }
.card > .table-responsive:first-child .table thead th:first-child { border-top-left-radius: calc(var(--jg-raio) - 1px); }
.card > .table-responsive:first-child .table thead th:last-child { border-top-right-radius: calc(var(--jg-raio) - 1px); }
.text-valor { font-weight: 600; }

/* ---------- Filtros ---------- */
.filtros { border-radius: var(--jg-raio); padding: .7rem .9rem .2rem; background: var(--jg-card-bg); box-shadow: var(--jg-sombra); }
[data-bs-theme="dark"] .filtros { border: 1px solid #2d3a4d; }

/* ---------- Selos ---------- */
.badge { border-radius: .25rem; font-weight: 700; letter-spacing: .03em; padding: .32em .55em; }
.badge.text-bg-light { background: #eef2f6 !important; color: #3d4b5f !important; }
[data-bs-theme="dark"] .badge.text-bg-light { background: #2c3849 !important; color: #d8e1ec !important; }

/* ---------- Dashboard: indicadores sóbrios ---------- */
.kpi { border: 1px solid var(--bs-border-color); border-left: 4px solid var(--kpi-cor, var(--jg-azul)); }
[data-bs-theme="dark"] .kpi { border-color: #2d3a4d; border-left-color: var(--kpi-cor, #6aaeea); }
.kpi .rotulo { font-weight: 700; font-size: .7rem; letter-spacing: .06em; }
.atalho { border-radius: var(--jg-raio); font-weight: 600; font-size: .82rem; text-transform: uppercase; letter-spacing: .04em; }
.atalho:hover { border-color: var(--jg-laranja); background: color-mix(in srgb, var(--jg-laranja) 6%, var(--jg-card-bg)); }

/* ---------- Navegação por abas ---------- */
.nav-pills .nav-link { border-radius: var(--jg-raio-sm); font-size: .82rem; text-transform: uppercase; letter-spacing: .04em; font-weight: 700; color: var(--jg-rotulo); }
.nav-pills .nav-link.active { color: #fff; }
.nav-tabs .nav-link { font-size: .8rem; text-transform: uppercase; letter-spacing: .04em; font-weight: 700; color: var(--jg-rotulo); }
.nav-tabs .nav-link.active { color: var(--jg-azul); box-shadow: inset 0 2px 0 var(--jg-laranja); }
[data-bs-theme="dark"] .nav-tabs .nav-link.active { color: #f1f5fa; }

/* ---------- Detalhes (dl) ---------- */
.dl-dados dt { font-size: .68rem; letter-spacing: .06em; color: var(--jg-rotulo); }
.dl-dados dd { font-weight: 500; margin-bottom: .65rem; }

/* ---------- Usuários ---------- */
.form-usuario .coluna-dados { background: var(--jg-faixa); }
.codigo-usuario { font-size: 1.1rem; color: var(--jg-azul); }
[data-bs-theme="dark"] .codigo-usuario { color: #9cc8f2; }
.matriz-permissoes .grupo-permissoes th { color: var(--jg-azul); background: transparent; }
[data-bs-theme="dark"] .matriz-permissoes .grupo-permissoes th { color: #9cc8f2; }

/* ---------- Escolha de tipo (cadastro / projeto) ---------- */
.escolha-tipo { border: 1px solid var(--bs-border-color); border-top: 3px solid var(--jg-azul); }
.escolha-tipo:hover, .escolha-tipo:focus-visible { border-color: var(--jg-laranja); border-top-color: var(--jg-laranja); transform: none; box-shadow: 0 4px 14px rgba(16,24,40,.08); }
.escolha-tipo .fs-5 { text-transform: uppercase; letter-spacing: .05em; font-size: 1rem !important; }

/* ---------- Etapas ---------- */
.etapa-chip { border-radius: .3rem; font-size: .74rem; font-weight: 600; letter-spacing: .02em; }
.list-group-item.etapa-item { padding-top: .45rem; padding-bottom: .45rem; font-weight: 500; }

/* ---------- Login ---------- */
.login-card { border-radius: .5rem; }
.login-card .topo h1 { letter-spacing: .08em; }
