:root{
  --green-900:#16331f;
  --green-800:#1d4129;
  --green-700:#28553a;
  --green-accent:#3a7d4f;
  --bg:#f3f3ee;
  --card:#ffffff;
  --text:#1f2a22;
  --muted:#6b7570;
  --border:#e4e3da;
  --warn-bg:#fdeceb;
  --warn-border:#f1b3ad;
  --warn-text:#9c3b32;
  --ok:#2f8f4e;
  /* Semantic status tokens */
  --danger:        #b91c1c;
  --danger-bg:     #fee2e2;
  --danger-text:   #991b1b;
  --warning:       #b45309;
  --warning-bg:    #fef3c7;
  --warning-text:  #92400e;
  --success:       #15803d;
  --success-bg:    #d1fae5;
  --success-text:  #065f46;
  /* Surface tokens */
  --surface:       #f9fafb;
  --surface-hover: #f3f4f6;
  /* Chart tokens */
  --chart-line:    #16a34a;
  --chart-meta:    #f97316;
  --chart-grid:    #e5e7eb;
  --chart-label:   #9ca3af;
  /* Badge tokens */
  --badge-vacina-bg:        #dbeafe;
  --badge-vacina-text:      #1e40af;
  --badge-medicamento-bg:   #fce7f3;
  --badge-medicamento-text: #9d174d;
  --radius-lg:16px;
  --radius-md:12px;
  --radius-sm:8px;
  --shadow:0 1px 2px rgba(20,30,20,.06), 0 8px 24px -12px rgba(20,30,20,.12);
  --safe-top:env(safe-area-inset-top);
  --safe-bottom:env(safe-area-inset-bottom);
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  font-family:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
  background:var(--bg);
  color:var(--text);
  -webkit-tap-highlight-color:transparent;
  overscroll-behavior-y:contain;
}

input,button,select{font-family:inherit;}

a{color:inherit;text-decoration:none;}

.app-shell{
  max-width:480px;
  margin:0 auto;
  min-height:100vh;
  display:flex;
  flex-direction:column;
  background:var(--bg);
}

/* ---------- Topbar ---------- */
.topbar{
  position:sticky; top:0; z-index:20;
  background:var(--green-900);
  color:#fff;
  padding:calc(12px + var(--safe-top)) 14px 12px;
  display:flex; align-items:center; gap:10px;
}
.topbar .back-btn,
.topbar .logout-btn{
  width:36px;height:36px;border-radius:var(--radius-sm);
  background:rgba(255,255,255,.08);
  border:none; color:#fff; display:flex; align-items:center; justify-content:center;
  flex:0 0 auto; cursor:pointer;
}
.topbar .titles{flex:1; min-width:0;}
.topbar .titles h1{font-size:15px;font-weight:600;margin:0;line-height:1.2;}
.topbar .titles p{font-size:11.5px;margin:1px 0 0;color:rgba(255,255,255,.65);}
.status-pill{
  margin-left:auto;
  font-size:11px; font-weight:600;
  padding:4px 9px; border-radius:999px;
  background:rgba(255,255,255,.1);
  display:flex; align-items:center; gap:5px;
  white-space:nowrap;
}
.status-pill.online{color:#9be8b4;}
.status-pill.offline{color:#f3c98f;}
.status-pill .dot{width:6px;height:6px;border-radius:50%;background:currentColor;}

/* ---------- Content ---------- */
.content{
  flex:1;
  padding:14px 14px calc(28px + var(--safe-bottom));
  display:flex; flex-direction:column; gap:14px;
}

.card{
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow);
  padding:18px;
}

.field{margin-bottom:14px;}
.field:last-child{margin-bottom:0;}
.field label{
  display:flex; align-items:center; gap:6px;
  font-size:11.5px; font-weight:700; letter-spacing:.04em;
  text-transform:uppercase; color:var(--muted);
  margin-bottom:6px;
}
.field .hint{font-size:12px; color:var(--green-accent); margin-top:4px; display:block;}

select, input[type="date"], input[type="number"], input[type="email"], input[type="password"], input[type="text"]{
  width:100%;
  border:1.5px solid var(--border);
  border-radius:var(--radius-md);
  padding:13px 14px;
  font-size:15px;
  color:var(--text);
  background:#fff;
  outline:none;
  transition:border-color .15s;
}
select:focus, input:focus{border-color:var(--green-accent);}

input[type="number"]::placeholder{color:#b9bdb6; font-weight:600;}

.btn{
  width:100%;
  display:flex; align-items:center; justify-content:center; gap:8px;
  border:none; border-radius:var(--radius-md);
  padding:15px 16px;
  font-size:15px; font-weight:600;
  cursor:pointer;
  transition:transform .08s ease, filter .15s ease;
}
.btn:active{transform:scale(.98);}
.btn-primary{background:var(--green-900); color:#fff;}
.btn-primary:hover{filter:brightness(1.08);}
.btn-primary:disabled{opacity:.55; cursor:not-allowed;}
.btn-outline{background:#fff; border:1.5px solid var(--border); color:var(--text);}

.quick-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-top:14px;}
.quick-grid button{
  border:1px solid var(--border); background:#fafaf6; border-radius:var(--radius-sm);
  padding:10px 6px; font-size:11.5px; font-weight:600; color:var(--green-800);
  display:flex; flex-direction:column; align-items:center; gap:6px; cursor:pointer;
}
.quick-grid button svg{width:18px;height:18px;}

.alert-box{
  border:1.5px solid var(--warn-border);
  background:var(--warn-bg);
  border-radius:var(--radius-lg);
  padding:14px 16px;
}
.alert-box .alert-title{
  display:flex; align-items:center; gap:8px;
  font-size:13px; font-weight:700; color:var(--warn-text); margin-bottom:10px;
}
.alert-stats{display:grid; grid-template-columns:repeat(3,1fr); gap:8px;}
.alert-stats .stat{
  background:#fff; border:1px solid var(--warn-border); border-radius:var(--radius-sm);
  text-align:center; padding:8px 4px;
}
.alert-stats .stat .v{font-size:15px; font-weight:700; color:var(--text);}
.alert-stats .stat .l{font-size:9.5px; color:var(--muted); text-transform:uppercase; letter-spacing:.03em;}

/* ---------- Indicador de Postura ---------- */
.indicador-header{
  display:flex; align-items:center; justify-content:space-between;
  margin-bottom:4px;
}
.indicador-titulo{
  font-size:11px; font-weight:700; letter-spacing:.06em;
  text-transform:uppercase; color:var(--muted);
}
.indicador-linhagem{
  font-size:11.5px; color:var(--muted); font-weight:500;
}
.indicador-pct{
  font-size:52px; font-weight:700; text-align:center;
  color:var(--text); line-height:1;
  margin:14px 0 22px; letter-spacing:-1px;
  font-variant-numeric:tabular-nums;
  transition:color .3s ease;
}
.zona-bar{
  position:relative; height:14px; border-radius:999px;
  background:linear-gradient(to right,
    #ef4444 0%, #dc2626 36%,
    #fbbf24 38.5%, #f59e0b 53%,
    #4ade80 55%, #16a34a 100%
  );
}
.zona-agulha{
  position:absolute; top:-6px; bottom:-6px; width:3px;
  background:var(--text); border-radius:2px;
  transform:translateX(-50%); left:0;
  transition:left .45s cubic-bezier(.34,1.56,.64,1), opacity .2s ease;
  box-shadow:0 0 0 2px #fff, 0 2px 6px rgba(0,0,0,.25);
  opacity:0;
}
.zona-labels{
  display:grid; grid-template-columns:38fr 17fr 45fr;
  margin-top:6px; font-size:11px; color:var(--muted);
}
.zona-labels span:nth-child(1){text-align:left;}
.zona-labels span:nth-child(2){text-align:center;}
.zona-labels span:nth-child(3){text-align:right;}
.indicador-pill{
  display:flex; align-items:center; justify-content:center;
  padding:9px 16px; border-radius:999px;
  font-size:13px; font-weight:700; margin-top:14px;
  transition:background .3s ease, color .3s ease;
}
.indicador-pill.verde    { background:var(--success-bg); color:var(--success); }
.indicador-pill.amarelo  { background:var(--warning-bg); color:var(--warning); }
.indicador-pill.vermelho { background:var(--danger-bg);  color:var(--danger);  }
.indicador-pill.neutro   { background:var(--bg); color:var(--muted); }

.kpi-row{display:grid; grid-template-columns:repeat(3,1fr); gap:10px;}
.kpi{
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius-md);
  padding:12px 10px; text-align:left;
}
.kpi .icon{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;margin-bottom:8px;}
.kpi.green .icon{background:#e3f1e6; color:var(--ok);}
.kpi.amber .icon{background:#fbeee0; color:#c07a25;}
.kpi.red .icon{background:#fbe4e2; color:#c4453a;}
.kpi .val{font-size:18px; font-weight:700;}
.kpi .lab{font-size:10.5px; color:var(--muted); margin-top:2px;}

.section-title{font-size:15px; font-weight:700; margin:4px 0 -2px;}

.module-list{display:flex; flex-direction:column; gap:10px;}
.module-item{
  display:flex; align-items:center; gap:12px;
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius-md);
  padding:14px; cursor:pointer; transition:background .12s;
}
.module-item.featured{background:var(--green-900); border-color:var(--green-900); color:#fff;}
.module-item .m-icon{
  width:38px;height:38px;border-radius:10px;flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;
  background:rgba(22,51,31,.08); color:var(--green-900);
}
.module-item.featured .m-icon{background:rgba(255,255,255,.14); color:#fff;}
.module-item .m-text{flex:1; min-width:0;}
.module-item .m-text .t{font-size:14.5px; font-weight:700;}
.module-item .m-text .s{font-size:12px; color:var(--muted); margin-top:1px;}
.module-item.featured .m-text .s{color:rgba(255,255,255,.7);}
.module-item .chev{flex:0 0 auto; opacity:.5;}

.placeholder-icon{
  width:46px;height:46px;border-radius:12px;background:var(--green-900);
  display:flex;align-items:center;justify-content:center;color:#fff;margin-bottom:4px;
}
.feature-list{display:flex; flex-direction:column; gap:0;}
.feature-list .f-row{display:flex; gap:10px; align-items:flex-start; padding:10px 0; border-bottom:1px solid var(--border); font-size:13.5px;}
.feature-list .f-row:last-child{border-bottom:none;}
.feature-list .f-row .arrow{color:var(--green-accent); font-weight:700; flex:0 0 auto;}
.eyebrow{font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--green-accent); display:flex; align-items:center; gap:6px; margin-bottom:6px;}

.dev-banner{
  background:#fdf3e2; border:1px solid #f0d49b; border-radius:var(--radius-lg);
  padding:14px 16px;
}
.dev-banner .t1{font-weight:700; font-size:13.5px; color:#8a5c12;}
.dev-banner .t2{font-size:12px; color:#9c7430; margin-top:3px;}

/* Login screen */
.login-wrap{
  min-height:100vh; min-height:100dvh;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  padding:24px 18px calc(24px + var(--safe-bottom));
  background:linear-gradient(180deg, rgba(15,30,18,.55), rgba(10,20,12,.78)),
    radial-gradient(circle at 50% 0%, #1d3a24, #0c1a0f 70%);
  position:relative;
}
.login-logo{
  width:56px;height:56px;border-radius:14px;background:#fff;color:var(--green-900);
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:26px;
  margin-bottom:14px; box-shadow:0 8px 24px rgba(0,0,0,.25);
}
.login-wrap h1{color:#fff; margin:0; font-size:24px; font-weight:700;}
.login-wrap .tagline{color:rgba(255,255,255,.78); font-size:13px; text-align:center; margin:6px 0 22px; max-width:260px;}
.login-card{
  width:100%; max-width:340px; background:#fff; border-radius:var(--radius-lg);
  padding:22px 20px; box-shadow:0 20px 50px -20px rgba(0,0,0,.5);
}
.divider-text{
  text-align:center; font-size:10.5px; letter-spacing:.05em; color:var(--muted);
  text-transform:uppercase; margin:16px 0 10px;
}
.error-msg{
  background:var(--warn-bg); border:1px solid var(--warn-border); color:var(--warn-text);
  font-size:12.5px; padding:9px 12px; border-radius:var(--radius-sm); margin-bottom:12px; display:none;
}
.error-msg.show{display:block;}

.toast{
  position:fixed; left:50%; bottom:28px; transform:translateX(-50%) translateY(20px);
  background:var(--green-900); color:#fff; padding:12px 18px; border-radius:999px;
  font-size:13px; font-weight:600; box-shadow:0 10px 30px rgba(0,0,0,.25);
  opacity:0; pointer-events:none; transition:opacity .25s, transform .25s; z-index:50;
  display:flex; align-items:center; gap:8px; max-width:90%;
}
.toast.show{opacity:1; transform:translateX(-50%) translateY(0); pointer-events:auto;}
.toast.error{background:var(--warn-text);}

.sync-badge{
  font-size:10.5px; font-weight:700; color:#fff; background:#c07a25;
  border-radius:999px; padding:2px 7px; margin-left:6px;
}

@media (min-width:480px){
  .app-shell{box-shadow:0 0 0 1px var(--border); min-height:100vh;}
}

::placeholder{color:#aab0a6;}

/* ---------- Dashboard Gerencial ---------- */
.tab-nav{
  display:flex; gap:6px; overflow-x:auto; padding:10px 14px 0;
  background:var(--bg); border-bottom:1px solid var(--border);
  -webkit-overflow-scrolling:touch;
}
.tab-nav::-webkit-scrollbar{display:none;}
.tab-btn{
  flex:0 0 auto; border:none; background:transparent; color:var(--muted);
  font-size:13px; font-weight:600; padding:8px 12px 10px; cursor:pointer;
  border-bottom:2px solid transparent; white-space:nowrap;
}
.tab-btn.active{color:var(--green-900); border-bottom-color:var(--green-900);}
.tab-btn:disabled{opacity:.4; cursor:not-allowed;}

.tab-section{display:none;}
.tab-section.active{display:block;}

.section-header{display:flex; align-items:center; justify-content:space-between; margin-bottom:10px;}
.btn-sm{width:auto; padding:9px 14px; font-size:13px;}

.muted-note{font-size:13px; color:var(--muted); text-align:center; padding:20px 0;}

.table-wrap{
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius-md);
  overflow-x:auto;
}
.data-table{width:100%; border-collapse:collapse; font-size:13px;}
.data-table th{
  text-align:left; padding:10px 12px; font-size:11px; text-transform:uppercase;
  letter-spacing:.03em; color:var(--muted); border-bottom:1px solid var(--border);
  white-space:nowrap;
}
.data-table td{padding:10px 12px; border-bottom:1px solid var(--border); white-space:nowrap;}
.data-table tr:last-child td{border-bottom:none;}
.row-actions{text-align:right;}
.btn-icon{
  border:none; background:transparent; cursor:pointer; font-size:15px; padding:4px 6px;
  border-radius:6px;
}
.btn-icon:hover{background:var(--bg);}

.modal-overlay{
  position:fixed; inset:0; background:rgba(10,20,12,.55); z-index:60;
  display:flex; align-items:center; justify-content:center; padding:16px;
}
.modal-card{
  background:#fff; border-radius:var(--radius-lg); padding:20px; width:100%; max-width:380px;
  max-height:88vh; overflow-y:auto; box-shadow:0 20px 50px -20px rgba(0,0,0,.5);
}
.modal-header{display:flex; align-items:center; justify-content:space-between; margin-bottom:14px;}
.modal-header h3{margin:0; font-size:16px;}
.modal-close{border:none; background:transparent; font-size:22px; line-height:1; cursor:pointer; color:var(--muted);}
.field-checkbox label{
  display:flex; align-items:center; gap:8px; font-size:13.5px; font-weight:500;
  text-transform:none; color:var(--text); cursor:pointer;
}
.field-checkbox input{width:auto;}

/* ---------- Lançamentos — filtros e edição inline ---------- */
.filter-bar{margin-bottom:12px;}
.filter-row{display:flex; gap:10px; align-items:flex-end; flex-wrap:wrap;}
.filter-row .field label{font-size:10.5px;}
.filter-row .field input,
.filter-row .field select{padding:9px 10px; font-size:13px;}

.inline-edit{
  border:none; background:transparent; font-size:13px; width:100%;
  text-align:right; color:var(--text); cursor:text;
  border-bottom:1.5px dashed transparent; padding:2px 4px; border-radius:0;
}
.inline-edit:focus{
  outline:none; border-bottom-color:var(--green-accent);
  background:var(--bg); border-radius:4px;
}
.save-row-btn{
  border:none; background:var(--green-900); color:#fff;
  border-radius:6px; padding:4px 10px; font-size:11px;
  cursor:pointer; white-space:nowrap; display:none;
}
.tr-dirty .save-row-btn{display:inline-block;}
.tr-dirty{background:var(--warn-bg) !important;}

.data-table .num{text-align:right;}
.data-table td.num input{text-align:right;}

/* ---------- Centro de Alertas ---------- */
.alert-badge{
  display:inline-flex; align-items:center; justify-content:center;
  background:#c4453a; color:#fff; border-radius:999px;
  font-size:9px; font-weight:700; min-width:16px; height:16px;
  padding:0 4px; margin-left:4px; vertical-align:middle;
}
.alerta-card{
  background:var(--card); border:1px solid var(--border);
  border-left:4px solid var(--border);
  border-radius:var(--radius-md); padding:12px 14px; margin-bottom:10px;
  display:flex; align-items:flex-start; gap:12px;
}
.alerta-card.nivel-alto   { border-left-color:#c4453a; }
.alerta-card.nivel-medio  { border-left-color:#c07a25; }
.alerta-card.nivel-baixo  { border-left-color:var(--green-accent); }
.alerta-card.lido         { opacity:.55; }
.alerta-card .alerta-icon { font-size:20px; flex:0 0 auto; margin-top:1px; }
.alerta-card .alerta-body { flex:1; min-width:0; }
.alerta-card .alerta-msg  { font-size:13.5px; font-weight:600; margin:0 0 4px; }
.alerta-card .alerta-meta { font-size:11px; color:var(--muted); }
.alerta-card .alerta-actions { flex:0 0 auto; }
.btn-marcar-lido{
  border:1px solid var(--border); background:#fff; border-radius:6px;
  font-size:11px; padding:4px 10px; cursor:pointer; color:var(--muted);
  white-space:nowrap;
}
.btn-marcar-lido:hover{ background:var(--bg); }

/* ---------- Auditoria ---------- */
.acao-badge{
  display:inline-block; font-size:10px; font-weight:700;
  padding:2px 7px; border-radius:999px; text-transform:uppercase;
  letter-spacing:.04em;
}
.acao-create{ background:#e3f1e6; color:#1d4129; }
.acao-update{ background:#fbeee0; color:#8a5c12; }
.acao-delete{ background:#fbe4e2; color:#9c3b32; }

/* ---------- Sidebar de navegação (oculta no mobile) ---------- */
.sidebar-nav { display: none; }

/* ---------- Layout desktop >= 1024px ---------- */
@media (min-width: 1024px) {
  .app-shell {
    max-width: 100%;
    margin: 0;
    box-shadow: none;
    display: grid;
    grid-template-columns: 240px 1fr;
    min-height: 100vh;
  }

  .topbar { grid-column: 1 / -1; }

  .sidebar-nav {
    display: flex;
    flex-direction: column;
    grid-column: 1;
    grid-row: 2 / 999;
    background: var(--green-900);
    padding: 20px 0;
    position: sticky;
    top: 60px;
    height: calc(100vh - 60px);
    overflow-y: auto;
    align-self: start;
  }

  .sidebar-nav a {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 20px;
    color: rgba(255,255,255,.75);
    font-size: 13.5px;
    font-weight: 500;
    text-decoration: none;
    border-left: 3px solid transparent;
    transition: color .15s, background .15s, border-left-color .15s;
  }

  .sidebar-nav a:hover,
  .sidebar-nav a.active {
    color: #fff;
    background: rgba(255,255,255,.08);
    border-left-color: #9be8b4;
  }

  .sidebar-nav a svg { flex: 0 0 auto; }

  .tab-nav { grid-column: 2; position: sticky; top: 60px; z-index: 10; }

  .content { grid-column: 2; padding: 24px 32px; max-width: none; }

  .kpi-row { grid-template-columns: repeat(3, 1fr) !important; }

  .modal-card { max-width: 520px; }

  .back-btn { display: none !important; }

  .module-list { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
}

/* ---------- Nota de meta IA (tela de lançamento) ---------- */
.nota-meta-ia{
  font-size:11px; color:var(--muted); text-align:center;
  margin:6px 0 0; min-height:14px;
}

/* ---------- Botão IA na tabela ---------- */
.btn-ia{ color:#7c3aed; }

/* ---------- Modal de análise IA ---------- */
.analise-bloco{ margin-bottom:16px; }
.analise-label{
  font-size:10.5px; font-weight:700; letter-spacing:.07em;
  text-transform:uppercase; color:var(--muted); margin-bottom:6px;
}
.analise-barra-wrap{
  height:10px; background:var(--bg);
  border-radius:999px; overflow:hidden; margin-bottom:4px;
}
.analise-barra{ height:100%; border-radius:999px; transition:width .5s ease; }
.analise-indice-row{ display:flex; align-items:baseline; gap:7px; }
.analise-indice-num{
  font-size:38px; font-weight:700; line-height:1;
  font-variant-numeric:tabular-nums;
}
.analise-indice-label{ font-size:13px; color:var(--muted); }
/* Analise state classes (dashboard) */
.analise-saudavel .analise-barra      { background:var(--success); }
.analise-saudavel .analise-indice-num { color:var(--success); }
.analise-atencao .analise-barra       { background:var(--warning); }
.analise-atencao .analise-indice-num  { color:var(--warning); }
.analise-critico .analise-barra       { background:var(--danger); }
.analise-critico .analise-indice-num  { color:var(--danger); }
/* Utility zone color classes */
.cor-verde    { color:var(--success); }
.cor-amarelo  { color:var(--warning); }
.cor-vermelho { color:var(--danger); }
/* Field label helpers */
.label-aviso  { color:var(--warning); }
.label-perigo { color:var(--danger); }
/* Module badge */
.mod-badge-ativo   { font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px;background:var(--success-bg);color:var(--success-text);border:1px solid #a5d6a7;display:inline-block; }
.mod-badge-inativo { font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px;background:var(--bg);color:var(--muted);border:1px solid var(--border);display:inline-block; }
/* Financial value colors */
.fin-despesa-cor { color:var(--danger);  font-weight:600; }
.fin-receita-cor { color:var(--success); font-weight:600; }
.fin-saldo-pos   { color:var(--success); }
.fin-saldo-neg   { color:var(--danger);  }
.meta-prox-grid{
  display:grid; grid-template-columns:repeat(4,1fr); gap:8px;
}
.meta-prox-item{
  background:var(--bg); border-radius:var(--radius-sm);
  padding:8px 4px; text-align:center;
}
.meta-prox-sem{ display:block; font-size:10px; color:var(--muted); }
.meta-prox-val{
  display:block; font-size:15px; font-weight:700; margin-top:2px;
  font-variant-numeric:tabular-nums;
}
.analise-renovacao-alert{
  background:#fff7ed; border:1px solid #fed7aa;
  border-radius:var(--radius-md); padding:12px 14px;
}
.analise-renovacao-motivo{ font-size:13px; margin:0 0 4px; line-height:1.45; }
.analise-renovacao-prazo{ font-size:11.5px; color:var(--muted); margin:0; }
