/* LegisCâmara — estilos do ambiente interno, do plenário e do portal público */
/* Identidade visual LegisCâmara — Montserrat (títulos) + Open Sans (textos); azul #0B2D5B, dourado #D4A017, verde #0B7A3E, cinza #F4F6F9 */
@font-face { font-family: "Montserrat"; src: url("../vendor/fonts/montserrat-variable-latin.woff2") format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; }
@font-face { font-family: "Open Sans"; src: url("../vendor/fonts/opensans-variable-latin.woff2") format("woff2"); font-weight: 300 800; font-style: normal; font-display: swap; }
:root {
  --lc-primary: #0b2d5b;
  --lc-secondary: #d4a017;
  --lc-verde: #0b7a3e;
  --lc-ouro-escuro: #8a6508;
  --lc-sidebar-w: 268px;
  --lc-sidebar-w-min: 68px;
  --lc-radius: .75rem;
  --lc-bg: #f4f6f9;
  --lc-card: #ffffff;
  --lc-border: #e0e6ee;
  --lc-text: #1b2536;
  --lc-muted: #5d6a7c;
  --lc-side-bg: #0b2d5b;
  --lc-side-bg2: #071f42;
  --lc-side-text: #c9d6ea;
  --lc-shadow: 0 1px 2px rgba(11, 45, 91, .06), 0 4px 14px rgba(11, 45, 91, .05);
  --lc-fonte-titulo: "Montserrat", "Segoe UI", system-ui, sans-serif;
  --bs-primary: var(--lc-primary);
  --bs-primary-rgb: 11, 45, 91;
  --bs-success: #0b7a3e;
  --bs-success-rgb: 11, 122, 62;
  --bs-link-color: var(--lc-primary);
  --bs-link-hover-color: #07224a;
  --bs-body-font-family: "Open Sans", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
  --bs-border-radius: .55rem;
}
[data-bs-theme="dark"] {
  --lc-bg: #0a1424;
  --lc-card: #121e33;
  --lc-border: #243653;
  --lc-text: #e4eaf4;
  --lc-muted: #93a3bb;
  --lc-side-bg: #081a35;
  --lc-side-bg2: #050f20;
  --lc-shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 4px 14px rgba(0, 0, 0, .25);
  --bs-link-color: #86b3ee;
  --bs-link-hover-color: #b0cdf5;
  --bs-body-bg: #0a1424;
  --bs-body-color: #e4eaf4;
  --bs-primary-rgb: 96, 150, 224;
  --bs-success: #1fa55b;
  --bs-success-rgb: 31, 165, 91;
}
h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6, .display-1, .display-2, .display-3, .display-4, .navbar-brand, .modal-title, .card-header, .page-head h1 { font-family: var(--lc-fonte-titulo); }
h1, h2, h3, .h1, .h2, .h3 { letter-spacing: -.01em; }
body { background: var(--lc-bg); color: var(--lc-text); }
.btn-primary { --bs-btn-bg: var(--lc-primary); --bs-btn-border-color: var(--lc-primary); --bs-btn-hover-bg: #07224a; --bs-btn-hover-border-color: #07224a; --bs-btn-active-bg: #051a38; --bs-btn-active-border-color: #051a38; --bs-btn-disabled-bg: var(--lc-primary); --bs-btn-disabled-border-color: var(--lc-primary); }
[data-bs-theme="dark"] .btn-primary { --bs-btn-bg: #2f6db3; --bs-btn-border-color: #2f6db3; --bs-btn-hover-bg: #3a7cc7; --bs-btn-hover-border-color: #3a7cc7; }
.btn-outline-primary { --bs-btn-color: var(--lc-primary); --bs-btn-border-color: var(--lc-primary); --bs-btn-hover-bg: var(--lc-primary); --bs-btn-hover-border-color: var(--lc-primary); }
.btn, .form-control, .form-select { transition: all .15s ease; }
.btn:not(:disabled):hover { transform: translateY(-1px); }
.skip-link { position: absolute; left: .5rem; top: .5rem; z-index: 3000; background: #fff; padding: .4rem .8rem; border-radius: .4rem; }
:focus-visible { outline: 3px solid #4d9bff !important; outline-offset: 2px; }

/* ---------- estrutura ---------- */
.app-shell { display: flex; min-height: 100vh; }
.app-sidebar { width: var(--lc-sidebar-w); background: linear-gradient(180deg, var(--lc-side-bg) 0%, var(--lc-side-bg2) 100%); color: var(--lc-side-text); flex: 0 0 var(--lc-sidebar-w); position: sticky; top: 0; height: 100vh; display: flex; flex-direction: column; transition: width .2s ease, flex-basis .2s ease; z-index: 1030; }
.app-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
html.menu-fechado .app-sidebar { width: var(--lc-sidebar-w-min); flex-basis: var(--lc-sidebar-w-min); }
html.menu-fechado .app-sidebar .txt, html.menu-fechado .app-sidebar .brand-text, html.menu-fechado .app-sidebar .seta { display: none; }
html.menu-fechado .app-sidebar .nav-grupo-btn, html.menu-fechado .app-sidebar .nav-lista a { justify-content: center; padding-left: 0; padding-right: 0; }
html.menu-fechado .app-sidebar .nav-lista { padding-left: 0; }
html.menu-fechado .app-sidebar .collapse:not(.show) { display: none; }
.sidebar-brand { padding: .9rem 1rem; border-bottom: 1px solid rgba(255,255,255,.07); min-height: 64px; display: flex; align-items: center; }
.sidebar-brand a { color: #fff; }
.sidebar-brand .brasao { height: 38px; width: auto; max-width: 44px; object-fit: contain; }
.brasao-ph { width: 38px; height: 38px; border-radius: 50%; background: var(--lc-secondary); color: #fff; display: grid; place-items: center; font-size: 1.2rem; flex: none; }
.brand-text { display: flex; flex-direction: column; line-height: 1.15; overflow: hidden; }
.brand-text strong { font-size: .92rem; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; }
.brand-text small { color: var(--lc-side-text); opacity: .7; font-size: .7rem; letter-spacing: .06em; text-transform: uppercase; }
.sidebar-nav { flex: 1 1 auto; overflow-y: auto; padding: .5rem .55rem; scrollbar-width: thin; scrollbar-color: #2a3c55 transparent; }
.nav-grupo-btn { width: 100%; display: flex; align-items: center; gap: .65rem; background: none; border: 0; color: #e8eef7; padding: .55rem .65rem; border-radius: .5rem; font-weight: 600; font-size: .86rem; text-align: left; }
.nav-grupo-btn:hover { background: rgba(255,255,255,.06); }
.nav-grupo-btn .seta { margin-left: auto; font-size: .7rem; transition: transform .2s; }
.nav-grupo-btn:not(.collapsed) .seta { transform: rotate(180deg); }
.nav-lista { list-style: none; margin: 0 0 .35rem; padding: 0 0 0 .6rem; }
.nav-lista a { display: flex; align-items: center; gap: .6rem; padding: .42rem .65rem; border-radius: .45rem; color: var(--lc-side-text); text-decoration: none; font-size: .84rem; transition: background .15s, color .15s; }
.nav-lista a:hover { background: rgba(255,255,255,.07); color: #fff; }
.nav-lista a.ativo { background: rgba(212,160,23,.2); color: #fff; font-weight: 600; box-shadow: inset 3px 0 0 var(--lc-secondary); }
.nav-lista a.ativo i { color: var(--lc-secondary); opacity: 1; }
.nav-lista a i { width: 1.1rem; text-align: center; opacity: .9; }
.sidebar-rodape { padding: .6rem 1rem; font-size: .7rem; opacity: .55; border-top: 1px solid rgba(255,255,255,.07); }

.app-topbar { position: sticky; top: 0; z-index: 1020; background: var(--lc-card); border-bottom: 1px solid var(--lc-border); display: flex; align-items: center; gap: .6rem; padding: .5rem 1rem; min-height: 60px; }
.btn-icon { border: 0; background: transparent; color: var(--lc-text); width: 2.4rem; height: 2.4rem; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; }
.btn-icon:hover { background: rgba(127,127,127,.15); }
.busca-global { position: relative; flex: 1 1 320px; max-width: 460px; }
.busca-global i { position: absolute; left: .8rem; top: 50%; transform: translateY(-50%); color: var(--lc-muted); }
.busca-global input { width: 100%; border: 1px solid var(--lc-border); background: var(--lc-bg); color: var(--lc-text); border-radius: 2rem; padding: .45rem 1rem .45rem 2.3rem; font-size: .9rem; }
.busca-global input:focus { background: var(--lc-card); border-color: var(--lc-primary); outline: 0; box-shadow: 0 0 0 .2rem rgba(11,45,91,.16); }
.user-btn { display: flex; align-items: center; gap: .55rem; border: 0; background: transparent; color: var(--lc-text); padding: .2rem .5rem; border-radius: 2rem; }
.user-btn:hover { background: rgba(127,127,127,.12); }
.avatar { width: 2.1rem; height: 2.1rem; border-radius: 50%; background: var(--lc-primary); color: #fff; display: grid; place-items: center; font-weight: 700; font-size: .8rem; }
.notif-badge { position: absolute; top: .1rem; right: .05rem; font-size: .6rem; }
.notif-menu { width: 360px; max-width: 94vw; }
.notif-lista { max-height: 380px; overflow-y: auto; }
.notif-item { display: block; padding: .6rem .9rem; border-bottom: 1px solid var(--lc-border); text-decoration: none; color: var(--lc-text); }
.notif-item:hover { background: rgba(127,127,127,.08); }
.notif-item.nova { background: rgba(13,110,253,.07); }
.notif-item small { color: var(--lc-muted); }

.app-conteudo { padding: 1.25rem 1.5rem 2rem; flex: 1 1 auto; max-width: 1600px; width: 100%; margin: 0 auto; }
.app-rodape { text-align: center; padding: 1rem; font-size: .78rem; color: var(--lc-muted); border-top: 1px solid var(--lc-border); background: var(--lc-card); }

/* ---------- componentes ---------- */
.card { background: var(--lc-card); border: 1px solid var(--lc-border); border-radius: var(--lc-radius); box-shadow: var(--lc-shadow); }
.card-header { background: transparent; border-bottom: 1px solid var(--lc-border); font-weight: 600; }
.page-head { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; margin-bottom: 1rem; }
.page-head h1 { font-size: 1.5rem; margin: 0; font-weight: 700; }
.page-head .acoes { margin-left: auto; display: flex; flex-wrap: wrap; gap: .5rem; }
.stat { display: flex; align-items: center; gap: .9rem; padding: 1rem 1.1rem; }
.stat .ico { width: 3rem; height: 3rem; border-radius: .8rem; display: grid; place-items: center; font-size: 1.4rem; color: #fff; background: var(--lc-primary); flex: none; }
.stat .valor { font-size: 1.65rem; font-weight: 700; line-height: 1.1; }
.stat .rot { color: var(--lc-muted); font-size: .8rem; }
.stat.sec .ico { background: var(--lc-secondary); }
.stat.ok .ico { background: var(--lc-verde); }
.stat.alerta .ico { background: #d97706; }
.stat.perigo .ico { background: #c0392b; }
.stat.info .ico { background: #0d8aa8; }
a.stat { color: inherit; text-decoration: none; transition: transform .15s, box-shadow .15s; }
a.stat:hover { transform: translateY(-2px); }
.table { --bs-table-bg: transparent; }
.table thead th { font-size: .74rem; text-transform: uppercase; letter-spacing: .04em; color: var(--lc-muted); border-bottom-width: 1px; white-space: nowrap; }
.table thead th a { color: inherit; text-decoration: none; }
.table-hover > tbody > tr:hover > * { --bs-table-hover-bg: rgba(127,127,127,.07); }
.table td { vertical-align: middle; }
.form-label { font-weight: 600; font-size: .85rem; margin-bottom: .25rem; }
.form-label .req { color: #c0392b; }
.form-text { font-size: .76rem; }
.def-lista { display: grid; grid-template-columns: minmax(130px, 220px) 1fr; gap: .45rem 1rem; margin: 0; }
.def-lista dt { color: var(--lc-muted); font-weight: 600; font-size: .82rem; }
.def-lista dd { margin: 0; overflow-wrap: anywhere; }
@media (max-width: 600px) { .def-lista { grid-template-columns: 1fr; } .def-lista dt { margin-top: .4rem; } }
.linha-tempo { list-style: none; padding: 0; margin: 0; position: relative; }
.linha-tempo::before { content: ""; position: absolute; left: 7px; top: 6px; bottom: 6px; width: 2px; background: var(--lc-border); }
.linha-tempo li { position: relative; padding: 0 0 1rem 1.6rem; }
.linha-tempo li::before { content: ""; position: absolute; left: 1px; top: 5px; width: 14px; height: 14px; border-radius: 50%; background: var(--lc-card); border: 3px solid var(--lc-primary); }
.linha-tempo li.fim::before { border-color: var(--lc-verde); background: var(--lc-verde); }
.conteudo-rico { line-height: 1.65; }
.conteudo-rico table { width: 100%; }
.conteudo-rico table td, .conteudo-rico table th { border: 1px solid var(--lc-border); padding: .3rem .5rem; }
.texto-lei { font-family: Georgia, "Times New Roman", serif; line-height: 1.75; font-size: 1.02rem; }

/* editor de texto rico */
.editor-rico { border: 1px solid var(--lc-border); border-radius: .55rem; background: var(--lc-card); overflow: hidden; }
.editor-rico .barra { display: flex; flex-wrap: wrap; gap: .15rem; padding: .3rem; border-bottom: 1px solid var(--lc-border); background: rgba(127,127,127,.06); }
.editor-rico .barra button { border: 0; background: transparent; color: var(--lc-text); min-width: 2rem; height: 2rem; border-radius: .35rem; }
.editor-rico .barra button:hover { background: rgba(127,127,127,.2); }
.editor-rico .area { min-height: 220px; max-height: 60vh; overflow-y: auto; padding: .75rem .9rem; outline: 0; }
.editor-rico:focus-within { border-color: var(--lc-primary); box-shadow: 0 0 0 .2rem rgba(11,45,91,.16); }

/* ---------- mapa ---------- */
.mapa-caixa { height: 560px; border-radius: var(--lc-radius); border: 1px solid var(--lc-border); z-index: 0; }
.mapa-pick { height: 280px; border-radius: .55rem; border: 1px solid var(--lc-border); }
.pino { width: 28px; height: 28px; border-radius: 50% 50% 50% 0; transform: rotate(-45deg); border: 2px solid #fff; box-shadow: 0 2px 6px rgba(0,0,0,.4); display: grid; place-items: center; }
.pino i { transform: rotate(45deg); color: #fff; font-size: .8rem; }

/* ---------- autenticação ---------- */
.auth-wrap { min-height: 100vh; display: grid; grid-template-columns: minmax(320px, 1.1fr) minmax(320px, 1fr); }
.auth-lado { background: linear-gradient(155deg, var(--lc-primary) 0%, #071f42 100%); color: #fff; padding: 3rem; display: flex; flex-direction: column; justify-content: center; position: relative; overflow: hidden; }
.auth-lado::after { content: ""; position: absolute; width: 520px; height: 520px; border-radius: 50%; right: -180px; bottom: -200px; background: radial-gradient(circle, rgba(255,255,255,.14), transparent 70%); }
.auth-lado .brasao { height: 92px; width: auto; margin-bottom: 1.5rem; filter: drop-shadow(0 4px 12px rgba(0,0,0,.35)); }
.auth-lado h1 { font-size: 2rem; font-weight: 700; }
.auth-form { display: flex; align-items: center; justify-content: center; padding: 2rem; background: var(--lc-bg); }
.auth-caixa { width: 100%; max-width: 410px; }
@media (max-width: 860px) { .auth-wrap { grid-template-columns: 1fr; } .auth-lado { padding: 1.6rem; min-height: 0; } .auth-lado h1 { font-size: 1.4rem; } .auth-lado .brasao { height: 56px; margin-bottom: .6rem; } }

/* ---------- responsivo ---------- */
@media (max-width: 991.98px) {
  .app-sidebar { position: fixed; left: 0; top: 0; transform: translateX(-100%); width: var(--lc-sidebar-w) !important; box-shadow: 0 0 40px rgba(0,0,0,.4); transition: transform .2s; }
  html:not(.menu-fechado) .app-sidebar.aberto, .app-sidebar.aberto { transform: translateX(0); }
  html.menu-fechado .app-sidebar .txt, html.menu-fechado .app-sidebar .brand-text, html.menu-fechado .app-sidebar .seta { display: initial; }
  .app-sidebar .brand-text { display: flex !important; }
  .app-conteudo { padding: 1rem; }
}
.sidebar-fundo { display: none; }
@media (max-width: 991.98px) { .sidebar-fundo.aberto { display: block; position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 1025; } }

/* tabelas largas → rolagem horizontal em telas pequenas */
.tabela-resp { overflow-x: auto; }
@media print { .app-sidebar, .app-topbar, .app-rodape, .no-print { display: none !important; } .app-conteudo { padding: 0; } body { background: #fff; } .card { box-shadow: none; } }

/* ---------- telão do plenário ---------- */
.telao { background: radial-gradient(circle at 20% 0%, #12418a 0%, #061836 70%); color: #fff; min-height: 100vh; padding: 1.4rem 2rem; font-family: "Open Sans", "Segoe UI", system-ui, sans-serif; }
.telao h1, .telao .placar .n, .telao .resultado-faixa, .telao .telao-crono { font-family: var(--lc-fonte-titulo); }
.telao-topo { display: flex; align-items: center; gap: 1.2rem; border-bottom: 2px solid rgba(255,255,255,.18); padding-bottom: .9rem; margin-bottom: 1.1rem; }
.telao-topo .brasao { height: 84px; width: auto; }
.telao-topo h1 { font-size: 1.9rem; margin: 0; font-weight: 700; }
.telao-topo .sub { opacity: .8; font-size: 1.1rem; }
.telao-relogio { margin-left: auto; text-align: right; font-size: 2.2rem; font-weight: 300; font-variant-numeric: tabular-nums; }
.telao-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 1.2rem; }
.telao-card { background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.14); border-radius: 1rem; padding: 1.2rem 1.4rem; }
.telao-materia { font-size: 1.9rem; line-height: 1.3; }
.telao-materia .tipo { color: #e9b92f; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; font-size: 1.1rem; }
.telao-crono { font-size: 5.5rem; font-weight: 200; font-variant-numeric: tabular-nums; line-height: 1; }
.telao-crono.alerta { color: #f6c453; } .telao-crono.estouro { color: #ff6b5e; animation: piscar 1s infinite; }
@keyframes piscar { 50% { opacity: .35; } }
.vereadores-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .8rem; }
.vereador-card { text-align: center; border-radius: .9rem; padding: .6rem .4rem; background: rgba(255,255,255,.06); border: 2px solid transparent; transition: all .25s; }
.vereador-card img { width: 84px; height: 84px; border-radius: 50%; object-fit: cover; border: 3px solid rgba(255,255,255,.3); background: #223; }
.vereador-card .nome { font-size: .95rem; font-weight: 600; margin-top: .35rem; line-height: 1.15; }
.vereador-card .part { font-size: .75rem; opacity: .7; }
.vereador-card.presente { background: rgba(46,160,90,.18); border-color: rgba(46,160,90,.6); }
.vereador-card.ausente { opacity: .45; }
.vereador-card.falando { border-color: #f6c453; box-shadow: 0 0 22px rgba(246,196,83,.5); }
.vereador-card.v-sim { background: rgba(46,160,90,.4); border-color: #2fbf71; }
.vereador-card.v-nao { background: rgba(220,53,69,.4); border-color: #ff6b7a; }
.vereador-card.v-abstencao { background: rgba(255,193,7,.3); border-color: #ffc107; }
.vereador-card.v-aguardando { background: rgba(255,255,255,.04); }
.vereador-card .voto-tag { display: inline-block; font-weight: 700; font-size: .78rem; margin-top: .2rem; padding: .05rem .5rem; border-radius: 1rem; background: rgba(0,0,0,.35); }
.placar { display: flex; gap: .8rem; }
.placar > div { flex: 1; text-align: center; border-radius: .9rem; padding: .8rem; }
.placar .n { font-size: 3.8rem; font-weight: 700; line-height: 1; font-variant-numeric: tabular-nums; }
.placar .sim { background: rgba(46,160,90,.3); } .placar .nao { background: rgba(220,53,69,.3); } .placar .abs { background: rgba(255,193,7,.25); }
.resultado-faixa { text-align: center; font-size: 3rem; font-weight: 800; letter-spacing: .04em; border-radius: 1rem; padding: .7rem; }
.resultado-faixa.aprovada { background: #1f9d57; } .resultado-faixa.rejeitada { background: #c93545; } .resultado-faixa.empate, .resultado-faixa.sem_quorum { background: #c98a1a; }
.fila-fala { list-style: none; margin: 0; padding: 0; } .fila-fala li { padding: .35rem 0; border-bottom: 1px solid rgba(255,255,255,.1); font-size: 1.15rem; display: flex; gap: .6rem; }
@media (max-width: 1100px) { .telao-grid { grid-template-columns: 1fr; } .telao-crono { font-size: 3.5rem; } }

/* painel do vereador (toque) */
.voto-btn { font-size: 1.6rem; font-weight: 800; padding: 1.4rem .5rem; border-radius: 1rem; border: 0; color: #fff; letter-spacing: .05em; box-shadow: 0 6px 16px rgba(0,0,0,.22); }
.voto-btn:active { transform: scale(.97); }
.voto-btn.sim { background: #1f9d57; } .voto-btn.nao { background: #c93545; } .voto-btn.abstencao { background: #d9a31a; color: #1a1a1a; }

/* ---------- portal público ---------- */
.pub-topo { background: var(--lc-primary); color: #fff; }
.pub-topo a { color: #fff; text-decoration: none; }
.pub-faixa { background: linear-gradient(90deg, var(--lc-primary) 0 34%, var(--lc-verde) 34% 67%, var(--lc-secondary) 67% 100%); height: 4px; }
.pub-menu { background: #fff; border-bottom: 1px solid var(--lc-border); position: sticky; top: 0; z-index: 1020; }
[data-bs-theme="dark"] .pub-menu { background: var(--lc-card); }
.pub-menu .nav-link { color: var(--lc-text); font-weight: 600; font-size: .9rem; padding: .85rem .9rem; border-bottom: 3px solid transparent; }
.pub-menu .nav-link:hover, .pub-menu .nav-link.ativo { border-bottom-color: var(--lc-secondary); color: var(--lc-primary); }
[data-bs-theme="dark"] .pub-menu .nav-link:hover, [data-bs-theme="dark"] .pub-menu .nav-link.ativo { color: #fff; }
.pub-hero { background: linear-gradient(140deg, var(--lc-primary), #071f42); color: #fff; padding: 2.4rem 0; }
.pub-card-link { display: flex; align-items: center; gap: .9rem; padding: 1rem; color: inherit; text-decoration: none; height: 100%; }
.pub-card-link:hover { transform: translateY(-2px); }
.pub-card-link .ico { width: 3rem; height: 3rem; border-radius: .8rem; display: grid; place-items: center; background: color-mix(in srgb, var(--lc-primary) 12%, transparent); color: var(--lc-primary); font-size: 1.4rem; flex: none; }
[data-bs-theme="dark"] .pub-card-link .ico { color: #7db4f0; }
.vereador-pub { text-align: center; padding: 1rem; }
.vereador-pub img { width: 120px; height: 120px; border-radius: 50%; object-fit: cover; border: 4px solid var(--lc-card); box-shadow: 0 2px 10px rgba(0,0,0,.18); }
.pub-rodape { background: #071f42; color: #c9d6ea; border-top: 4px solid var(--lc-secondary); padding: 2rem 0 1rem; margin-top: 3rem; }
.pub-rodape a { color: #e8eef7; }
.alto-contraste { filter: contrast(1.25); }

/* ---------- identidade visual LegisCâmara: logotipo, selos e faixas ---------- */
.lc-logo { display: inline-flex; align-items: center; gap: .5em; line-height: 1; text-decoration: none; font-size: 1rem; }
.lc-logo-icone { height: 2.5em; width: auto; flex: none; }
.lc-logo-texto { display: flex; flex-direction: column; gap: .3em; min-width: 0; }
.lc-logo-nome { font-family: var(--lc-fonte-titulo); font-weight: 800; font-size: 1.5em; letter-spacing: -.03em; line-height: 1; white-space: nowrap; }
.lc-logo-nome b { font-weight: 800; color: #0b2d5b; }
.lc-logo-nome i { font-style: normal; color: #d4a017; }
.lc-logo-sub { font-family: var(--lc-fonte-titulo); font-weight: 600; font-size: .4em; letter-spacing: .2em; text-transform: uppercase; line-height: 1.45; color: #2b3547; white-space: nowrap; }
.lc-logo-branco .lc-logo-nome b { color: #fff; }
.lc-logo-branco .lc-logo-nome i { color: #e9b92f; }
.lc-logo-branco .lc-logo-sub { color: rgba(255,255,255,.82); }
.lc-so-escuro { display: none; }
[data-bs-theme="dark"] .lc-logo-cor .lc-so-claro { display: none; }
[data-bs-theme="dark"] .lc-logo-cor .lc-so-escuro { display: inline; }
[data-bs-theme="dark"] .lc-logo-cor .lc-logo-nome b { color: #fff; }
[data-bs-theme="dark"] .lc-logo-cor .lc-logo-nome i { color: #e9b92f; }
[data-bs-theme="dark"] .lc-logo-cor .lc-logo-sub { color: #c9d6ea; }
.mt-selo { display: inline-flex; align-items: center; background: #fff; border-radius: .45rem; padding: .2rem .55rem; vertical-align: middle; }
.mt-selo img { width: auto; display: block; }
.faixa-marca { height: 4px; background: linear-gradient(90deg, var(--lc-primary) 0 34%, var(--lc-verde) 34% 67%, var(--lc-secondary) 67% 100%); }
.btn-success { --bs-btn-bg: var(--lc-verde); --bs-btn-border-color: var(--lc-verde); --bs-btn-hover-bg: #086030; --bs-btn-hover-border-color: #086030; --bs-btn-active-bg: #06502a; --bs-btn-active-border-color: #06502a; --bs-btn-disabled-bg: var(--lc-verde); --bs-btn-disabled-border-color: var(--lc-verde); }
.btn-outline-success { --bs-btn-color: var(--lc-verde); --bs-btn-border-color: var(--lc-verde); --bs-btn-hover-bg: var(--lc-verde); --bs-btn-hover-border-color: var(--lc-verde); --bs-btn-active-bg: var(--lc-verde); --bs-btn-active-border-color: var(--lc-verde); }
.text-bg-success, .bg-success { --bs-success-rgb: 11, 122, 62; }
.badge-ouro { background: var(--lc-secondary); color: #1b2536; }
.nav-pills .nav-link.active, .nav-tabs .nav-link.active { font-weight: 600; }
.nav-tabs .nav-link.active { border-top: 3px solid var(--lc-secondary); }
.page-head h1 { position: relative; padding-left: .85rem; }
.page-head h1::before { content: ""; position: absolute; left: 0; top: .12em; bottom: .12em; width: 4px; border-radius: 2px; background: linear-gradient(180deg, var(--lc-secondary), var(--lc-verde)); }

/* barra lateral: logotipo do sistema + identificação da Câmara */
.sidebar-brand { padding: .85rem 1rem .75rem; min-height: 0; flex-direction: column; align-items: flex-start; gap: .1rem; }
.sidebar-brand .lc-logo { font-size: 1.02rem; }
.sidebar-camara { display: flex; align-items: center; gap: .55rem; padding: .55rem 1rem; border-bottom: 1px solid rgba(255,255,255,.08); background: rgba(0,0,0,.14); color: #fff; min-height: 52px; }
.sidebar-camara .brasao { height: 30px; width: auto; max-width: 34px; object-fit: contain; }
.sidebar-camara .brasao-ph { width: 30px; height: 30px; font-size: .95rem; }
.sidebar-camara .brand-text strong { font-family: var(--lc-fonte-titulo); font-size: .8rem; font-weight: 600; }
.sidebar-camara .brand-text small { color: var(--lc-secondary); opacity: .95; }
html.menu-fechado .app-sidebar .lc-logo-texto { display: none; }
html.menu-fechado .sidebar-brand { align-items: center; padding-left: 0; padding-right: 0; }
html.menu-fechado .sidebar-camara { justify-content: center; padding-left: 0; padding-right: 0; }
@media (max-width: 991.98px) { html.menu-fechado .app-sidebar .lc-logo-texto { display: flex; } html.menu-fechado .sidebar-brand { align-items: flex-start; padding-left: 1rem; } }
.app-rodape { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .5rem 1rem; }
.app-rodape .lc-logo { font-size: .62rem; }

/* autenticação: lado institucional com ondas verde e dourada */
.auth-lado { background-image: url("../img/onda-marca.svg"), linear-gradient(155deg, var(--lc-primary) 0%, #071f42 100%); background-repeat: no-repeat, no-repeat; background-position: left bottom, 0 0; background-size: 100% auto, cover; }
.auth-lado::after { display: none; }
.auth-lado .lc-logo { font-size: 2.1rem; margin-bottom: 2rem; }
.auth-lado .camara-id { display: flex; align-items: center; gap: .9rem; padding: .9rem 1rem; border-radius: .8rem; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.14); margin-bottom: 1.4rem; max-width: 30rem; }
.auth-lado .camara-id .brasao { height: 54px; width: auto; margin: 0; filter: none; }
.auth-lado .camara-id .brasao-ph { width: 54px; height: 54px; font-size: 1.5rem; }
.auth-lado .camara-id strong { font-family: var(--lc-fonte-titulo); font-size: 1.05rem; line-height: 1.2; display: block; }
.auth-lado .camara-id small { color: #e9b92f; }
.auth-lado h1 { font-size: 1.55rem; }
.auth-form .auth-marca-mobile { display: none; }
@media (max-width: 860px) { .auth-lado .lc-logo { font-size: 1.5rem; margin-bottom: 1rem; } .auth-lado { background-size: 160% auto, cover; } }

/* portal público */
.pub-rodape .lc-logo { font-size: 1.15rem; }
.pub-rodape .mt-selo { margin-left: .4rem; }
.pub-topo { background: linear-gradient(90deg, var(--lc-primary), #0f3a74); }
.pub-menu .nav-link { font-family: var(--lc-fonte-titulo); font-size: .82rem; letter-spacing: .01em; }
.pub-hero { position: relative; overflow: hidden; }
.pub-hero::after { content: ""; position: absolute; left: 0; bottom: 0; width: 60%; height: 38%; background: url("../img/onda-marca.svg") left bottom / 100% auto no-repeat; opacity: .8; pointer-events: none; }
@media (max-width: 991.98px) { .pub-hero::after { width: 100%; height: 22%; opacity: .5; } }
.pub-hero > * { position: relative; z-index: 1; }

/* telão e telas de erro */
.telao-rodape { display: flex; align-items: center; justify-content: space-between; margin-top: 1rem; padding-top: .8rem; border-top: 1px solid rgba(255,255,255,.14); opacity: .85; font-size: .9rem; }
.telao-rodape .lc-logo { font-size: .85rem; }
.erro-marca { background: var(--lc-bg); }
.erro-marca .lc-logo { font-size: 1.5rem; margin-bottom: 1.5rem; }
