body { background-color: #f4f6f9; }
.process-card { border-color: #e0e0e0; border-radius: 8px; overflow: hidden; }
.pub-row { padding: 14px 20px; border-bottom: 1px solid #f1f1f1; }
.pub-row:last-child { border-bottom: 0; }
.pub-antiga { background: #fafafa; }
.data-pub { font-size: 12px; font-weight: 600; color: #b02a67; background: #fdf2f8; padding: 3px 8px; border-radius: 4px; }
.pub-antiga .data-pub { background: #e9ecef; color: #495057; }
.resumo-pub { font-size: 14px; color: #555; margin-top: 8px; overflow-wrap: anywhere; }
.modal-text { white-space: pre-wrap; font-size: 15px; line-height: 1.7; overflow-wrap: anywhere; }
.caixa-estreita { max-width: 400px; }
.caixa-media { max-width: 800px; }

/* ---------- Telas de acesso (login / cadastro) ---------- */
.auth { min-height: 100vh; display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); }
.auth-brand {
  background: linear-gradient(160deg, #0b2545 0%, #13396b 100%);
  color: #eef4ff; padding: 3rem 3.5rem;
  display: flex; flex-direction: column; justify-content: space-between; gap: 2rem;
}
.auth-marca { display: flex; align-items: center; gap: .75rem; }
.auth-logo { flex: none; color: #8ab4f8; }
.auth-marca-nome { font-size: 1.25rem; font-weight: 700; letter-spacing: .2px; }
.auth-destaque h2 { font-size: 2.1rem; line-height: 1.2; font-weight: 700; max-width: 18ch; margin: 0 0 1.75rem; }
.auth-destaque ul { list-style: none; padding: 0; margin: 0; display: grid; gap: .9rem; }
.auth-destaque li { position: relative; padding-left: 1.75rem; color: #c9d8f0; line-height: 1.45; }
.auth-destaque li::before {
  content: ""; position: absolute; left: 0; top: .35em; width: .9rem; height: .9rem; border-radius: 50%;
  background: #2f6fd1; box-shadow: inset 0 0 0 .22rem #0f2f5a;
}
.auth-rodape { color: #9fb3d1; }
.auth-main { display: flex; align-items: center; justify-content: center; padding: 2.5rem 1.25rem; background: #f4f6f9; }
.auth-card { width: 100%; max-width: 420px; }
.auth-saudacao { margin: 0 0 .25rem; color: #2f6fd1; font-weight: 600; }
.auth-titulo { font-size: 1.75rem; font-weight: 700; margin: 0 0 .5rem; color: #0b2545; text-wrap: balance; }
.auth-subtitulo { color: #5b6b82; margin: 0 0 1.75rem; }
.auth-aviso { text-align: center; color: #7b8aa0; font-size: .85rem; margin: 2rem 0 0; }

@media (max-width: 767.98px) {
  .auth { grid-template-columns: 1fr; grid-template-rows: auto 1fr; }
  .auth-brand { padding: 1.1rem 1.25rem; }
  .auth-destaque, .auth-rodape { display: none; }
  .auth-main { align-items: flex-start; padding-top: 1.75rem; }
  .auth-titulo { font-size: 1.5rem; }
}

/* ---------- Administração ---------- */
.admin-menu .nav-link { padding: .35rem .8rem; font-size: .92rem; color: #3c4b64; }
.admin-menu .nav-link.active { background: #0b2545; color: #fff; }
.stat .stat-n { font-size: 2rem; font-weight: 700; line-height: 1.1; color: #0b2545; }
.sha { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .8rem; word-break: break-all;
       background: #f4f6f9; border: 1px solid #e0e4ea; border-radius: 6px; padding: .5rem .6rem; user-select: all; }
.det-senha summary { list-style: none; cursor: pointer; }
.det-senha summary::-webkit-details-marker { display: none; }
.log-lista { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .78rem; }
.log-linha { display: flex; flex-wrap: wrap; gap: .5rem; padding: .3rem .75rem; border-bottom: 1px solid #f1f1f1; }
.log-linha:last-child { border-bottom: 0; }
.log-quando { color: #6b7a90; white-space: nowrap; }
.log-origem { color: #5b6b82; }
.log-msg { flex: 1 1 100%; white-space: pre-wrap; overflow-wrap: anywhere; }
.log-nivel { background: #e9ecef; color: #495057; min-width: 4.5rem; }
.log-warning { background: #fffbeb; }
.log-warning .log-nivel { background: #f59e0b; color: #fff; }
.log-error, .log-critical { background: #fef2f2; }
.log-error .log-nivel, .log-critical .log-nivel { background: #dc2626; color: #fff; }

.col-detalhe { min-width: 15rem; }

/* ---------- Estrutura com menu lateral ---------- */
.app-shell { display: flex; min-height: 100vh; }
.app-main { flex: 1 1 auto; min-width: 0; max-width: 1180px; padding: 1.5rem 1.75rem 3rem; }
.sidebar { --bs-offcanvas-width: 17rem; --bs-offcanvas-bg: #0b2545; --bs-offcanvas-color: #d7e3f7; flex: 0 0 15.5rem; }
.sidebar-corpo { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; background: #0b2545; color: #d7e3f7; padding: 1.1rem .85rem; overflow-y: auto; }
.sidebar-topo { display: flex; align-items: center; justify-content: space-between; margin: 0 .35rem 1.25rem; }
.sidebar-marca { color: #fff; font-weight: 700; font-size: 1.15rem; text-decoration: none; letter-spacing: .2px; }
.sidebar-lista { list-style: none; margin: 0; padding: 0; display: grid; gap: .2rem; }
.sidebar-link { display: flex; align-items: center; gap: .5rem; padding: .6rem .75rem; border-radius: 8px; color: #c9d8f0; text-decoration: none; font-weight: 500; }
.sidebar-link:hover { background: rgba(255, 255, 255, .08); color: #fff; }
.sidebar-link.ativo { background: #1d4f91; color: #fff; }
.sidebar-rodape { margin-top: auto; padding-top: 1.25rem; display: grid; gap: .6rem; }
.sidebar-usuario { display: grid; line-height: 1.3; min-width: 0; padding: 0 .35rem; }
.sidebar-usuario strong { color: #fff; font-size: .92rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sidebar-usuario span { color: #9fb3d1; font-size: .78rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sidebar-versao { color: #7f93b3; text-align: center; }
.topbar { position: sticky; top: 0; z-index: 1030; display: flex; align-items: center; justify-content: space-between; gap: .75rem; background: #0b2545; padding: .5rem .85rem; }
.topbar-marca { color: #fff; font-weight: 700; text-decoration: none; }
@media (min-width: 768px) {
  .sidebar-corpo { position: sticky; top: 0; height: 100vh; }
}
@media (max-width: 767.98px) {
  .app-shell { flex-direction: column; }
  .app-main { padding: 1rem 1rem 2.5rem; max-width: none; }
  .sidebar-corpo { height: 100%; }
}

/* ---------- Processos: vermelho = há publicação não lida; azul = tudo lido ---------- */
.proc-num { font-weight: 700; font-variant-numeric: tabular-nums; text-decoration: none; overflow-wrap: anywhere; }
.proc-num:hover { text-decoration: underline; }
.proc-lido { color: #0b5ed7; }
.proc-novo { color: #c1121f; }
.proc-item { padding: .85rem 1rem; border-left: 4px solid transparent; }
.proc-item.tem-novidade { border-left: 4px solid #c1121f; }
.proc-meta { color: #5b6b82; font-size: .85rem; margin-top: .25rem; overflow-wrap: anywhere; }
.acao-etiqueta { white-space: nowrap; }
.data-passou { color: #c1121f; font-weight: 600; }
.data-hoje, .data-breve { color: #b45309; font-weight: 600; }
.pub-nao-lida { border-left: 4px solid #c1121f; background: #fff8f8; }
.nota { padding: .75rem 1rem; border-bottom: 1px solid #f1f1f1; }
.nota:last-child { border-bottom: 0; }
.nota-quando { color: #6b7a90; font-size: .8rem; }
.nota-texto { white-space: pre-wrap; overflow-wrap: anywhere; margin-top: .2rem; }
.rotulo-dado { color: #6b7a90; font-size: .78rem; text-transform: uppercase; letter-spacing: .4px; }
.valor-dado { overflow-wrap: anywhere; }

/* ---------- Meu dia e prazos ---------- */
.agenda-item { display: flex; flex-wrap: wrap; gap: .5rem 1rem; align-items: flex-start; padding: .75rem 1rem; border-bottom: 1px solid #f1f1f1; border-left: 4px solid transparent; }
.agenda-item:last-child { border-bottom: 0; }
.agenda-atrasado { border-left-color: #c1121f; background: #fff8f8; }
.agenda-hoje { border-left-color: #b45309; background: #fffbeb; }
.agenda-data { flex: 0 0 8.5rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.agenda-corpo { flex: 1 1 14rem; min-width: 0; overflow-wrap: anywhere; }
.agenda-acoes { display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; }
.resumo-curto { overflow-wrap: anywhere; }
.min-w-0 { min-width: 0; }
@media (max-width: 575.98px) {
  .agenda-data { flex-basis: 100%; }
}
