/* =====================================================================
 * CertFile — Portal · Design System (hi-fi, conforme handoff CertFile Portal)
 * Marca "Guarda": cadeado de barras · petróleo + ciano · IBM Plex Sans/Mono
 * ===================================================================== */

@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap');

:root {
  /* marca / estrutura */
  --cf-petroleum:   #0B2F38;
  --cf-petroleum-hi:#12414C;  /* hover botão */
  --cf-petroleum-ac:#093139;  /* active */
  --cf-cyan:        #14A3B8;
  --cf-cyan-light:  #35C1D6;
  --cf-cyan-text:   #0E8296;

  --cf-text-1:      #1D2A2E;
  --cf-text-2:      #4A4843;
  --cf-text-3:      #6C6A62;
  --cf-text-4:      #8C8A80;
  --cf-text-5:      #9A988E;

  /* fundos */
  --cf-page:        #EEE9DF;
  --cf-white:       #FFFFFF;
  --cf-field:       #F7F4EE;
  --cf-line:        #E6E1D6;  /* card */
  --cf-line-row:    #EFEBE2;  /* linha de tabela */
  --cf-line-2:      #F1EDE4;
  --cf-input:       #E0DACE;
  --cf-input-2:     #C6C0B4;

  /* status */
  --cf-ok:      #2F7A3F; --cf-ok-bg:   #E7F2E9; --cf-ok-bar:  #14A3B8;
  --cf-warn:    #9A5B0B; --cf-warn-bg: #FBEFD6; --cf-warn-bar:#E5A32B;
  --cf-dang:    #B42318; --cf-dang-bg: #FBE9E7; --cf-dang-bar:#C4362A;
  --cf-info:    #0E8296; --cf-info-bg: #E7F6F8;

  --cf-font: 'IBM Plex Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --cf-mono: 'IBM Plex Mono', 'SF Mono', Consolas, monospace;

  --cf-r-card: 10px; --cf-r-btn: 7px; --cf-r-badge: 3px; --cf-r-av: 7px;
  --cf-ease: cubic-bezier(.22, 1, .36, 1);

  /* overrides Bootstrap */
  --bs-body-font-family: var(--cf-font);
  --bs-body-color: #1D2A2E;
  --bs-body-bg: #EEE9DF;
  --bs-border-color: #E6E1D6;
  --bs-link-color: #0E8296;
  --bs-link-hover-color: #0B2F38;
  --bs-emphasis-color: #0B2F38;
  --bs-primary: #0B2F38;
  --bs-primary-rgb: 11,47,56;
}

html, body {
  font-family: var(--cf-font);
  color: var(--cf-text-1);
  background: var(--cf-page);
  letter-spacing: -.004em;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* ---------- tipografia ---------- */
h1, .h1 { font-size: 30px; font-weight: 700; letter-spacing: -.025em; color: var(--cf-petroleum); margin: 0; }
h2, .h2 { font-size: 22px; font-weight: 700; letter-spacing: -.02em; color: var(--cf-petroleum); }
h3, .h3 { font-size: 17px; font-weight: 700; letter-spacing: -.01em; color: var(--cf-petroleum); }
h4, .h4 { font-size: 15px; font-weight: 700; color: var(--cf-petroleum); }
.text-muted { color: var(--cf-text-3) !important; }
.cf-eyebrow { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .13em; color: var(--cf-cyan-text); }
.cf-sub { color: var(--cf-text-3); font-size: 14px; }
.t-mono, .mono, code { font-family: var(--cf-mono); font-variant-numeric: tabular-nums; letter-spacing: 0; }
code { background: var(--cf-field); color: var(--cf-petroleum); padding: 2px 6px; border-radius: var(--cf-r-badge); font-size: .82em; }

/* animação de entrada de tela */
.cf-screen { animation: cfIn .22s var(--cf-ease); }
@keyframes cfIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

/* ---------- ícones (sprite <use>) ---------- */
.i { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0; vertical-align: -3px; }
.i-14 { width: 14px; height: 14px; } .i-16 { width: 16px; height: 16px; } .i-20 { width: 20px; height: 20px; }

/* ---------- botões ---------- */
.btn { font-family: var(--cf-font); font-weight: 600; font-size: 14px; border-radius: var(--cf-r-btn); border: 1px solid transparent; padding: .5rem 1rem; transition: all .15s var(--cf-ease); display: inline-flex; align-items: center; gap: 7px; }
.btn-primary, .btn-primary:visited { background: var(--cf-petroleum); border-color: var(--cf-petroleum); color: #fff; }
.btn-primary:hover, .btn-primary:focus, .btn-primary:active { background: var(--cf-petroleum-hi) !important; border-color: var(--cf-petroleum-hi) !important; color: #fff !important; }
.btn-outline-primary, .btn-outline-secondary { background: #fff; color: var(--cf-petroleum); border-color: var(--cf-input); }
.btn-outline-primary:hover, .btn-outline-secondary:hover { background: #EDF7F8 !important; border-color: var(--cf-cyan) !important; color: var(--cf-petroleum) !important; }
.btn-outline-secondary { color: var(--cf-text-2); }
.btn-danger { background: var(--cf-dang); border-color: var(--cf-dang); }
.btn-outline-danger { background: #fff; color: var(--cf-dang); border-color: #E7C4BF; }
.btn-outline-danger:hover { background: var(--cf-dang) !important; border-color: var(--cf-dang) !important; color: #fff !important; }
.btn-outline-success { background: #fff; color: var(--cf-ok); border-color: #BFDcC6; }
.btn-outline-success:hover { background: var(--cf-ok) !important; border-color: var(--cf-ok) !important; color: #fff !important; }
.btn-warning { background: var(--cf-cyan); border-color: var(--cf-cyan); color: #fff; }
.btn-warning:hover { background: var(--cf-cyan-text) !important; border-color: var(--cf-cyan-text) !important; color: #fff !important; }
.btn-link { color: var(--cf-cyan-text); text-decoration: none; font-weight: 600; padding: 0; }
.btn-link:hover { color: var(--cf-petroleum); text-decoration: underline; }
.btn-lg { padding: .7rem 1.15rem; font-size: 15px; }
.btn-sm { padding: .34rem .72rem; font-size: 12.5px; border-radius: 6px; }

/* ---------- cards ---------- */
.card { background: #fff; border: 1px solid var(--cf-line); border-radius: var(--cf-r-card); box-shadow: none; }
.card-header { background: #fff; border-bottom: 1px solid var(--cf-line); font-weight: 700; font-size: 13px; letter-spacing: -.01em; color: var(--cf-petroleum); text-transform: none; padding: 14px 18px; }
.card-header.text-danger { color: var(--cf-dang) !important; }
.card-body { padding: 18px 20px; }
.cf-card-title { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.cf-card-title h3 { font-size: 15px; }

/* stat cards (fallback) */
.stat-card .stat-bar { height: 4px; width: 34px; background: var(--cf-cyan); border-radius: 2px; margin-bottom: 12px; }
.stat-card .stat-eyebrow { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .09em; color: var(--cf-text-3); }
.stat-card .stat-num { font-weight: 700; font-size: 42px; line-height: 1; letter-spacing: -.03em; font-variant-numeric: tabular-nums; margin-top: 6px; color: var(--cf-petroleum); }
.stat-card.stat-warning .stat-bar { background: var(--cf-warn-bar); } .stat-card.stat-warning .stat-num { color: var(--cf-warn); }
.stat-card.stat-danger .stat-bar { background: var(--cf-dang-bar); } .stat-card.stat-danger .stat-num { color: var(--cf-dang); }
.stat-card.stat-success .stat-bar { background: var(--cf-ok-bar); } .stat-card.stat-success .stat-num { color: var(--cf-ok); }

/* ---------- health hero (painel) ---------- */
.cf-hero { background: var(--cf-petroleum); border-radius: var(--cf-r-card); padding: 26px 30px; color: #fff; display: flex; gap: 40px; align-items: center; flex-wrap: wrap; }
.cf-hero-num { font-size: 62px; font-weight: 700; line-height: 1; letter-spacing: -.04em; font-variant-numeric: tabular-nums; }
.cf-hero-cap { font-size: 14px; color: #9FBEC3; margin-top: 2px; }
.cf-hero-right { flex: 1; min-width: 280px; }
.cf-segbar { display: flex; height: 16px; gap: 2px; border-radius: 3px; overflow: hidden; }
.cf-segbar > span { display: block; }
.cf-hero-legend { display: flex; flex-wrap: wrap; margin-top: 16px; }
.cf-hero-legend .lk { display: flex; align-items: center; gap: 10px; padding-right: 26px; margin-right: 26px; border-right: 1px solid rgba(255,255,255,.14); cursor: pointer; }
.cf-hero-legend .lk:last-child { border-right: none; margin-right: 0; padding-right: 0; }
.cf-hero-legend .sw { width: 11px; height: 11px; border-radius: 3px; }
.cf-hero-legend .n { font-size: 20px; font-weight: 700; line-height: 1; font-variant-numeric: tabular-nums; }
.cf-hero-legend .l { font-size: 11.5px; color: #9FBEC3; margin-top: 4px; }

/* ---------- tabelas ---------- */
.table { color: var(--cf-text-1); --bs-table-bg: transparent; margin: 0; }
.table > thead > tr > th { text-align: left; font-size: 10.5px; font-weight: 600; letter-spacing: .09em; text-transform: uppercase; color: var(--cf-text-4); border-bottom: 1px solid var(--cf-line); padding: 12px 16px; white-space: nowrap; background: transparent; }
.table > tbody > tr > td { padding: 13px 16px; border-bottom: 1px solid var(--cf-line-row); border-top: none; vertical-align: middle; }
.table > tbody > tr:last-child > td { border-bottom: none; }
.table-hover > tbody > tr:hover > * , .rowc:hover { background: #EDF7F8; }
.table .mono, .table .t-mono { font-family: var(--cf-mono); font-variant-numeric: tabular-nums; }
.cf-tablecard { background: #fff; border: 1px solid var(--cf-line); border-radius: var(--cf-r-card); overflow: hidden; }
.cf-tablecard .table > tbody > tr > td { padding: 14px 16px; }

/* ---------- badges / tags ---------- */
.badge, .cf-badge { display: inline-flex; align-items: center; gap: 5px; font-weight: 600; font-size: 11.5px; border-radius: var(--cf-r-badge); padding: 4px 9px; letter-spacing: 0; }
.badge .dot, .cf-badge .dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.badge.bg-success { background: var(--cf-ok-bg) !important; color: var(--cf-ok) !important; }
.badge.bg-warning { background: var(--cf-warn-bg) !important; color: var(--cf-warn) !important; }
.badge.bg-danger  { background: var(--cf-dang-bg) !important; color: var(--cf-dang) !important; }
.badge.bg-info    { background: var(--cf-info-bg) !important; color: var(--cf-info) !important; }
.badge.bg-secondary { background: #fff !important; color: var(--cf-text-2) !important; border: 1px solid var(--cf-input); }
.badge.bg-primary { background: var(--cf-petroleum) !important; color: #fff !important; }
.cf-tag { background: var(--cf-info-bg); color: var(--cf-info); font-size: 11px; font-weight: 600; border-radius: 3px; padding: 3px 8px; display: inline-flex; align-items: center; gap: 5px; }
.cf-tag.gray { background: var(--cf-line-2); color: var(--cf-text-3); }

/* código de ação da auditoria (mono) */
.cf-act { font-family: var(--cf-mono); font-size: 11px; font-weight: 500; border-radius: 3px; padding: 3px 8px; }
.cf-act.co { background: var(--cf-info-bg); color: var(--cf-info); }
.cf-act.uso { background: var(--cf-line-2); color: var(--cf-text-3); }
.cf-act.cad { background: var(--cf-ok-bg); color: var(--cf-ok); }
.cf-act.pwd { background: var(--cf-warn-bg); color: var(--cf-warn); }
.cf-act.blk { background: var(--cf-dang-bg); color: var(--cf-dang); }

/* ---------- barra de validade / progresso ---------- */
.cf-vbar { height: 5px; border-radius: 3px; background: var(--cf-line); overflow: hidden; }
.cf-vbar > span { display: block; height: 100%; border-radius: 3px; }
.cf-vbar.ok > span { background: var(--cf-ok-bar); }
.cf-vbar.warn > span { background: var(--cf-warn-bar); }
.cf-vbar.dang > span { background: var(--cf-dang-bar); }
.cf-vtrack { position: relative; height: 8px; border-radius: 4px; background: linear-gradient(90deg, var(--cf-ok-bar), var(--cf-warn-bar) 70%, var(--cf-dang-bar)); }
.cf-vtoday { position: absolute; top: -5px; width: 2px; height: 18px; background: var(--cf-petroleum); }
.cf-vtoday::after { content: "HOJE"; position: absolute; top: -15px; left: 50%; transform: translateX(-50%); font-size: 8.5px; font-weight: 700; letter-spacing: .06em; color: var(--cf-petroleum); }

/* ---------- avatar ---------- */
.cf-av { width: 34px; height: 34px; border-radius: var(--cf-r-av); background: var(--cf-cyan); color: #04252B; display: inline-flex; align-items: center; justify-content: center; font-weight: 700; font-size: 13px; flex-shrink: 0; }
.cf-av.ico { background: #E7F6F8; color: var(--cf-cyan-text); }
.cf-av.sm { width: 28px; height: 28px; font-size: 11px; }

/* ---------- chips de filtro ---------- */
.cf-chips { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.cf-chip { cursor: pointer; user-select: none; background: #fff; color: var(--cf-text-2); border: 1px solid var(--cf-input); border-radius: 6px; padding: 7px 14px; font-size: 13px; font-weight: 600; transition: all .15s var(--cf-ease); }
.cf-chip span { color: var(--cf-text-5); }
.cf-chip:hover { border-color: var(--cf-cyan); }
.cf-chip.active { background: var(--cf-petroleum); color: #fff; border-color: var(--cf-petroleum); }
.cf-chip.active span { color: #9FBEC3; }

/* ---------- formulários ---------- */
.form-control, .form-select { border: 1px solid var(--cf-input); border-radius: var(--cf-r-btn); color: var(--cf-text-1); font-size: 14px; background: #fff; padding: .5rem .75rem; }
.form-control::placeholder { color: var(--cf-text-4); }
.form-control:focus, .form-select:focus { border-color: var(--cf-cyan); box-shadow: 0 0 0 3px rgba(20,163,184,.12); outline: none; }
.form-label { font-size: 11px; font-weight: 600; color: var(--cf-text-2); text-transform: uppercase; letter-spacing: .05em; margin-bottom: 6px; }
.form-check-input { background-color: #fff; border: 1.5px solid var(--cf-input-2); }
.form-check-input:hover { border-color: var(--cf-cyan); cursor: pointer; }
.form-check-input:checked { background-color: var(--cf-cyan); border-color: var(--cf-cyan); }
.form-check-input:focus { border-color: var(--cf-cyan); box-shadow: 0 0 0 3px rgba(20,163,184,.15); }

/* Switch de permissão (usuários): mais visível e claro que um checkbox pequeno */
.cf-permswitch { display: inline-block; }
.cf-permswitch .form-check-input { width: 2.1em; height: 1.15em; }

/* ---------- alertas ---------- */
.alert { border: 1px solid var(--cf-line); border-left: 3px solid; border-radius: 6px; font-size: 13.5px; padding: 12px 16px; }
.alert-success { background: var(--cf-ok-bg); border-color: #C4E0C9; border-left-color: var(--cf-ok); color: var(--cf-text-1); }
.alert-danger  { background: var(--cf-dang-bg); border-color: #E7C4BF; border-left-color: var(--cf-dang); color: var(--cf-text-1); }
.alert-warning { background: var(--cf-warn-bg); border-left-color: var(--cf-warn-bar); color: var(--cf-text-1); }
.alert-info    { background: var(--cf-info-bg); border-left-color: var(--cf-cyan); color: var(--cf-text-1); }

/* ---------- dropzone (lote) ---------- */
.cf-dropzone { border: 1.5px dashed var(--cf-input-2); background: var(--cf-field); border-radius: var(--cf-r-card); padding: 40px 24px; text-align: center; color: var(--cf-text-3); }
.cf-dropzone .i { width: 40px; height: 40px; stroke-width: 1.5; color: var(--cf-text-4); margin-bottom: 10px; }
.cf-dropzone b { color: var(--cf-text-1); font-weight: 600; }

a { color: var(--cf-cyan-text); text-decoration: none; }
a:hover { color: var(--cf-petroleum); text-decoration: underline; }

/* ---------- Em uso: cabeçalho de página, busca e cards de empréstimo ---------- */
.cf-page-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 6px; }
.cf-toolbar { display: flex; align-items: center; gap: 12px; margin: 18px 0 14px; flex-wrap: wrap; }
.cf-section-h { display: flex; align-items: center; gap: 9px; margin: 26px 0 14px; }
.cf-section-h h4 { margin: 0; }
.cf-count-pill { background: var(--cf-surface-2); color: var(--cf-text-3); font-size: 11px; font-weight: 700; border-radius: 10px; padding: 1px 9px; }
.cf-fieldsearch { display: flex; align-items: center; gap: 8px; width: 280px; max-width: 100%; height: 38px; border: 1px solid var(--cf-input); border-radius: 7px; padding: 0 11px; background: #fff; color: var(--cf-text-4); }
.cf-fieldsearch input { border: none; background: transparent; outline: none; width: 100%; font-family: var(--cf-font); font-size: 13.5px; color: var(--cf-text-1); }

.cf-loans { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 980px) { .cf-loans { grid-template-columns: 1fr; } }
.cf-loan { background: #fff; border: 1px solid var(--cf-line); border-radius: var(--cf-r-card); padding: 16px 18px; display: flex; flex-direction: column; gap: 13px; }
.cf-loan-head { display: flex; align-items: center; gap: 11px; }
.cf-loan-user { font-weight: 600; color: var(--cf-petroleum); font-size: 14px; }
.cf-loan-mac { display: flex; align-items: center; gap: 5px; font-size: 12px; color: var(--cf-text-3); font-family: var(--cf-mono); margin-top: 1px; }
.cf-loan-block { background: var(--cf-field); border-radius: 8px; padding: 12px 14px; }
.cf-loan-cert { font-weight: 600; color: var(--cf-petroleum); font-size: 14px; }
.cf-loan-cert a { color: var(--cf-petroleum); }
.cf-loan-times { display: flex; justify-content: space-between; font-family: var(--cf-mono); font-size: 11.5px; color: var(--cf-text-3); margin: 9px 0 7px; }
.cf-loan-apps { display: flex; flex-wrap: wrap; gap: 6px; }
.cf-loan-apps .lbl { font-size: 11px; color: var(--cf-text-4); width: 100%; margin-bottom: -2px; }
.cf-loan-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.cf-loan-net { font-size: 11px; color: var(--cf-text-3); margin-top: 2px; }
.cf-loan-win { font-size: 11.5px; color: var(--cf-text-2); margin-top: 6px; }
.cf-loan-win b { color: var(--cf-cyan-text); font-weight: 600; }

/* ---------- páginas legais (privacidade/termos/cookies) ---------- */
.cf-legal-shell { min-height: 100vh; display: flex; flex-direction: column; background: #fbfbf9; color: #23262b; }
.cf-legal-top { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 16px 24px; border-bottom: 1px solid #e8e8e3; background: #fff; flex-wrap: wrap; }
.cf-legal-brand { display: inline-flex; align-items: center; gap: 10px; font-weight: 700; font-size: 18px; color: #1f3a5f; text-decoration: none; }
.cf-legal-mark { width: 26px; height: 26px; }
.cf-legal-nav { display: flex; gap: 18px; }
.cf-legal-nav a { color: #55606e; text-decoration: none; font-size: 14px; }
.cf-legal-nav a:hover { color: #1f3a5f; }
.cf-legal-main { flex: 1; width: 100%; max-width: 820px; margin: 0 auto; padding: 32px 24px 48px; }
.cf-legal-doc h1 { font-size: 30px; color: #1f3a5f; margin: 8px 0 4px; }
.cf-legal-doc h2 { font-size: 18px; color: #1f3a5f; margin: 28px 0 8px; }
.cf-legal-doc p, .cf-legal-doc li { line-height: 1.65; font-size: 15px; }
.cf-legal-doc ul { padding-left: 22px; }
.cf-legal-doc li { margin: 4px 0; }
.cf-legal-doc a { color: #0a6b7a; }
.cf-legal-meta { color: #8a8f98; font-size: 13px; }
.cf-legal-badge { display: inline-block; background: #fff6e0; border: 1px solid #f0d68a; color: #8a6d1a; font-size: 12px; font-weight: 600; padding: 4px 10px; border-radius: 999px; margin-bottom: 14px; }
.cf-legal-table { width: 100%; border-collapse: collapse; margin: 8px 0; font-size: 14px; }
.cf-legal-table th, .cf-legal-table td { text-align: left; padding: 8px 10px; border-bottom: 1px solid #e8e8e3; }
.cf-legal-table th { background: #f4f4ef; color: #1f3a5f; }
.cf-legal-foot { border-top: 1px solid #e8e8e3; background: #fff; padding: 18px 24px; font-size: 12.5px; color: #6b7280; display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.cf-legal-foot a { color: #55606e; text-decoration: none; }
.cf-legal-foot-links { white-space: nowrap; }

/* ---------- banner de cookies ---------- */
#cf-cookie-bar { position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 3000; display: flex; align-items: center; gap: 16px; max-width: 720px; margin: 0 auto; background: #1f3a5f; color: #fff; padding: 14px 18px; border-radius: 12px; box-shadow: 0 8px 30px rgba(0,0,0,.25); font-size: 13.5px; }
#cf-cookie-bar a { color: #7fd6e4; }
#cf-cookie-bar button { margin-left: auto; flex: none; background: #35C1D6; color: #08222b; border: 0; font-weight: 600; padding: 8px 16px; border-radius: 8px; cursor: pointer; }
#cf-cookie-bar button:hover { background: #4fd0e2; }

/* ---------- auditoria destrinchada (linha expansível) ---------- */
.cf-audit-tbl tbody tr.cf-audit-row:hover { background: var(--cf-bg-2, #f5f5f1); }
.cf-audit-det > td { background: var(--cf-bg-2, #f7f7f4); border-top: 0; }
.cf-det-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 28px; padding: 10px 4px 14px; }
.cf-det { display: flex; flex-direction: column; gap: 1px; }
.cf-det-wide { grid-column: 1 / -1; }
.cf-det .rot { font-size: 10.5px; text-transform: uppercase; letter-spacing: .03em; color: var(--cf-text-3); }
.cf-det .val { font-size: 13.5px; color: var(--cf-text-1, #222); }
@media (max-width: 720px) { .cf-det-grid { grid-template-columns: 1fr; } }

/* ---------- painel de integridade da trilha (hash-chain) ---------- */
.cf-integridade { display: flex; align-items: center; gap: 14px; padding: 14px 16px; border-radius: var(--cf-r-card); border: 1px solid var(--cf-input-2); background: #fff; margin: 4px 0 18px; }
.cf-integridade .cf-integridade-txt { flex: 1; min-width: 0; }
.cf-integridade-ic { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 10px; background: var(--cf-bg-2, #f2f2ee); color: var(--cf-text-2); flex: none; }
.cf-integridade.ok { border-color: #b7dfc4; background: #f2fbf5; }
.cf-integridade.ok .cf-integridade-ic { background: #d8f3e0; color: #1a7f43; }
.cf-integridade.bad { border-color: #efc0c0; background: #fdf3f3; }
.cf-integridade.bad .cf-integridade-ic { background: #f7d9d9; color: #b02a2a; }

/* ---------- trilha de acesso (timeline expansível no histórico) ---------- */
.cf-acesso-row > td { background: var(--cf-bg-2, #f7f7f4); border-top: 0; padding-top: 0; }
.cf-acesso-tl { padding: 4px 0 14px; }
.cf-acesso-cap { font-size: 11.5px; color: var(--cf-text-3); margin: 6px 0 12px; max-width: 720px; line-height: 1.45; }
.cf-acesso-item { display: flex; flex-direction: column; gap: 2px; padding: 8px 0 8px 14px; border-left: 2px solid var(--cf-input-2); margin-left: 4px; }
.cf-acesso-item + .cf-acesso-item { margin-top: 2px; }
.cf-acesso-win { font-size: 12.5px; color: var(--cf-text-1, #222); font-style: italic; }
.cf-acesso-url { font-size: 11.5px; color: var(--cf-cyan-text, #0a6b7a); word-break: break-all; margin: 1px 0; }
.cf-acesso-meta { font-size: 11px; color: var(--cf-text-3); }
.cf-acesso-just { font-size: 12px; color: var(--cf-text-1, #222); margin-top: 3px; }
.cf-acesso-just .lbl { font-weight: 600; color: var(--cf-text-2); }
.cf-acesso-just.pend { color: var(--cf-text-3); }
.cf-empty { background: #fff; border: 1px dashed var(--cf-input-2); border-radius: var(--cf-r-card); padding: 30px; text-align: center; color: var(--cf-text-3); font-size: 13.5px; }

/* ---------- cabeçalho de página ---------- */
.cf-page-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 22px; flex-wrap: wrap; }
.cf-page-head h1 { margin: 4px 0 2px; }
.cf-page-actions { display: flex; gap: 8px; }
.fw-600 { font-weight: 600; }

/* grid 2 colunas do painel */
.cf-grid-2 { display: grid; grid-template-columns: 1.42fr 1fr; gap: 16px; }
@media (max-width: 980px) { .cf-grid-2 { grid-template-columns: 1fr; } }

/* item "em uso agora" */
.cf-useitem { display: flex; gap: 11px; align-items: flex-start; padding: 12px 0; border-bottom: 1px solid var(--cf-line-2); }
.cf-useitem:last-child { border-bottom: none; padding-bottom: 0; }
.cf-useitem:first-of-type { padding-top: 4px; }
.cf-useitem-body { flex: 1; min-width: 0; }
.cf-useitem-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.cf-useitem-meta { font-size: 12px; color: var(--cf-text-3); margin-top: 3px; }

/* timeline atividade */
.cf-timeline { display: flex; gap: 14px; padding: 9px 0; border-bottom: 1px solid var(--cf-line-2); font-size: 13px; }
.cf-timeline:last-child { border-bottom: none; padding-bottom: 0; }
.cf-tl-time { color: var(--cf-text-4); font-size: 12px; flex-shrink: 0; padding-top: 1px; }
.cf-tl-desc { color: var(--cf-text-2); line-height: 1.4; }

/* titular com avatar-ícone */
.cf-titular { display: flex; align-items: center; gap: 11px; }
.cf-titular-sub { font-size: 12px; color: var(--cf-text-3); margin-top: 1px; }

/* ---------- detalhe ---------- */
.cf-back { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: var(--cf-text-3); margin-bottom: 16px; }
.cf-back:hover { color: var(--cf-petroleum); text-decoration: none; }
.cf-detail-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 22px; flex-wrap: wrap; }
.cf-detail-id { display: flex; gap: 16px; align-items: center; }
.cf-detail-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.cf-detail-grid { display: grid; grid-template-columns: 1.5fr 1fr; gap: 16px; align-items: start; }
@media (max-width: 980px) { .cf-detail-grid { grid-template-columns: 1fr; } }
.cf-datagrid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 24px; }
.cf-dg-item { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.cf-dg-lbl { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: var(--cf-text-4); }
.cf-dg-val { font-size: 13.5px; color: var(--cf-text-1); word-break: break-word; }
.cf-permrow { display: flex; align-items: center; gap: 10px; padding: 7px 0; font-size: 13.5px; cursor: pointer; }
.cf-permrow .form-check-input { margin: 0; }

/* ---------- login overlay ---------- */
.cf-auth-viewport { position: relative; min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 16px; padding: 32px 16px; overflow: hidden;
  background: var(--cf-petroleum); background-image: radial-gradient(ellipse at 50% 12%, #12414C 0%, #0B2F38 55%, #071E24 100%); }
.cf-auth-watermark { position: absolute; width: 420px; height: 420px; opacity: .05; top: 50%; left: 50%; transform: translate(-50%,-52%); pointer-events: none; }

/* ---------- splash de entrada do login (CertFile -> cadeado, one-shot) ---------- */
:root.cf-ls-done .cf-login-splash { display: none; }
.cf-login-splash { position: fixed; inset: 0; z-index: 2000; display: flex; align-items: center; justify-content: center;
  background: radial-gradient(ellipse at 50% 40%, #12414C 0%, #0B2F38 55%, #071E24 100%);
  animation: cf-ls-out .45s ease 2s forwards; }
.cf-login-splash .cf-ls-anim { position: relative; width: 240px; height: 120px; }
.cf-login-splash .cf-ls-word, .cf-login-splash .cf-ls-mark { position: absolute; top: 50%; left: 50%; }
.cf-login-splash .cf-ls-word { transform: translate(-50%,-50%); white-space: nowrap; font: 700 40px/1 var(--cf-font); letter-spacing: -.02em; animation: cf-ls-word 1.6s cubic-bezier(.7,0,.3,1) forwards; }
.cf-login-splash .cf-ls-word .c { color: #fff; }
.cf-login-splash .cf-ls-word .f { color: var(--cf-cyan-light); }
.cf-login-splash .cf-ls-mark { width: 82px; height: 82px; transform: translate(-50%,-50%) scale(.6); opacity: 0; transform-origin: center; animation: cf-ls-mark 1.6s cubic-bezier(.7,0,.3,1) forwards; }
.cf-login-splash .cf-ls-mark .bar { opacity: 0; transform: translateY(10px); transform-origin: center; animation: cf-ls-bar 1.6s cubic-bezier(.7,0,.3,1) forwards; }
.cf-login-splash .cf-ls-mark .b1 { animation-delay: 0s; }
.cf-login-splash .cf-ls-mark .b2 { animation-delay: .05s; }
.cf-login-splash .cf-ls-mark .b3 { animation-delay: .1s; }
@keyframes cf-ls-word { 0%,45% { opacity:1; transform:translate(-50%,-50%) scale(1); filter:blur(0); } 70% { opacity:0; transform:translate(-50%,-50%) scale(.5); filter:blur(2px); } 100% { opacity:0; } }
@keyframes cf-ls-mark { 0%,50% { opacity:0; transform:translate(-50%,-50%) scale(.55); } 72% { opacity:1; transform:translate(-50%,-50%) scale(1); } 84% { transform:translate(-50%,-50%) scale(.95); } 100% { opacity:1; transform:translate(-50%,-50%) scale(1); } }
@keyframes cf-ls-bar { 0%,52% { opacity:0; transform:translateY(10px); } 74%,100% { opacity:1; transform:translateY(0); } }
@keyframes cf-ls-out { to { opacity:0; visibility:hidden; } }
@media (prefers-reduced-motion: reduce) {
  .cf-login-splash { animation: cf-ls-out .35s ease .9s forwards; }
  .cf-login-splash .cf-ls-word { animation: none; opacity: 0; }
  .cf-login-splash .cf-ls-mark { animation: none; opacity: 1; transform: translate(-50%,-50%) scale(1); }
  .cf-login-splash .cf-ls-mark .bar { animation: none; opacity: 1; transform: none; }
}
.cf-auth-card { position: relative; z-index: 1; width: 100%; max-width: 392px; background: #fff; border-radius: var(--cf-r-card); border-top: 3px solid var(--cf-cyan); padding: 38px 34px 24px; box-shadow: 0 30px 70px rgba(0,0,0,.4); text-align: center; }
.cf-auth-icon { width: 60px; height: 60px; border-radius: 14px; display: block; margin: 0 auto 16px; }
.cf-auth-title { font-size: 27px; font-weight: 700; letter-spacing: -.02em; color: var(--cf-petroleum); }
.cf-auth-title span { font-weight: 500; color: var(--cf-cyan-text); }
.cf-auth-sub { color: var(--cf-text-3); font-size: 14px; margin: 4px 0 24px; }
.cf-auth-card form { text-align: left; }
.cf-field { margin-bottom: 14px; }
.cf-field label { display: block; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: var(--cf-text-2); margin-bottom: 6px; }
.cf-auth-card .form-control { height: 42px; }
.cf-remember { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--cf-text-2); margin: 2px 0 8px; cursor: pointer; }
.cf-auth-btn { height: 44px; font-size: 15px; margin-top: 8px; justify-content: center; }
.cf-auth-help { margin-top: 18px; font-size: 12.5px; color: var(--cf-text-3); }
.cf-auth-foot { position: relative; z-index: 1; color: #7FA6AD; font-size: 12.5px; }
