*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:#f5f6f8;color:#1f2937}
.topbar{background:#0f5132;color:#fff;padding:.75rem 1.25rem;display:flex;justify-content:space-between;align-items:center}
.topbar .brand strong{color:#ffd44f}
.topbar .nav{display:flex;align-items:center;gap:1rem}
.topbar .nav a{color:#fff;text-decoration:none}
.topbar .nav a:hover{text-decoration:underline}
.topbar .nav .user small{opacity:.8}
.logout-form{display:inline}
.logout-form .link{background:none;border:none;color:#fff;cursor:pointer;text-decoration:underline;font:inherit}
.container{max-width:1100px;margin:1.25rem auto;padding:0 1.25rem}
h1{margin:.5rem 0 1rem}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem;margin-bottom:1.5rem}
.card{background:#fff;padding:1rem 1.25rem;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.card.card-action{display:flex;flex-direction:column;justify-content:space-between;min-height:140px}
.card.stat{text-align:center}
.card.stat .num{display:block;font-size:2rem;font-weight:700;color:#0f5132}
.card.stat .lbl{display:block;color:#475569;font-size:.85rem;text-transform:uppercase;letter-spacing:.05em}
.btn{display:inline-block;padding:.55rem 1rem;border-radius:6px;border:none;cursor:pointer;font-weight:600;text-decoration:none;text-align:center}
.btn-primary{background:#0f5132;color:#fff}
.btn-primary:hover{background:#0c4127}
.messages{list-style:none;padding:0}
.msg{padding:.5rem .75rem;border-radius:6px;margin-bottom:.5rem}
.msg-error{background:#fee2e2;color:#7f1d1d}
.msg-success{background:#dcfce7;color:#166534}
.login-box{max-width:380px;margin:4rem auto;background:#fff;padding:2rem;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.05)}
.login-box label{display:block;margin-bottom:.75rem;color:#475569;font-size:.9rem}
.login-box input{display:block;width:100%;padding:.55rem;border:1px solid #cbd5e1;border-radius:6px;margin-top:.25rem;font-size:1rem}
.login-box .btn{width:100%;margin-top:.5rem}
.footer{text-align:center;padding:1rem;color:#94a3b8;font-size:.85rem}

/* --- Workflow de autorizacao --- */
.btn-success{background:#16a34a;color:#fff}
.btn-success:hover{background:#15803d}
.btn-danger{background:#dc2626;color:#fff}
.btn-danger:hover{background:#b91c1c}

.badge-pending,.badge-authorized,.badge-emitted,.badge-revoked{
  display:inline-block;padding:.2rem .55rem;border-radius:999px;font-size:.78rem;font-weight:600;white-space:nowrap
}
.badge-pending{background:#fef3c7;color:#92400e}
.badge-authorized{background:#dcfce7;color:#166534}
.badge-emitted{background:#dbeafe;color:#1e40af}
.badge-revoked{background:#fee2e2;color:#7f1d1d}

.table{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.table th,.table td{padding:.6rem .85rem;text-align:left;border-bottom:1px solid #e2e8f0;font-size:.9rem}
.table th{background:#f8fafc;font-weight:600;color:#475569;text-transform:uppercase;font-size:.78rem;letter-spacing:.04em}
.table tr:last-child td{border-bottom:none}
.table .acoes{display:flex;gap:.4rem;flex-wrap:wrap}

/* Modal overlay (Alpine.js) */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:100}
.modal-box{background:#fff;border-radius:8px;padding:1.5rem;max-width:460px;width:100%;box-shadow:0 8px 32px rgba(0,0,0,.18)}
.modal-box h3{margin:0 0 .75rem;font-size:1.1rem}
[x-cloak]{display:none!important}

/* -----------------------------------------------------------------------
   Pessoas: tabelas, forms, badges, busca, camera widget
   ----------------------------------------------------------------------- */

/* --- Badges de status --- */
.badge{display:inline-block;padding:.2em .55em;border-radius:4px;font-size:.78rem;font-weight:600;letter-spacing:.02em;vertical-align:middle}
.badge-verde{background:#dcfce7;color:#166534}
.badge-vermelho{background:#fee2e2;color:#7f1d1d}

/* --- Botao secundario --- */
.btn-secondary{background:#e2e8f0;color:#1e293b}
.btn-secondary:hover{background:#cbd5e1}
.btn-sm{padding:.3rem .65rem;font-size:.85rem}
.btn-link{color:#0f5132;text-decoration:underline;background:none;border:none;cursor:pointer;font:inherit}

/* --- Page header --- */
.page-header{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:.5rem;margin-bottom:1.25rem}
.page-header h1{margin:0}
.page-header small{color:#64748b;display:block;margin-top:.2rem}
.page-actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}

/* --- Tabela --- */
.table-wrapper{overflow-x:auto;margin-bottom:1rem}
.tabela{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.tabela th{background:#0f5132;color:#fff;font-weight:600;font-size:.82rem;text-transform:uppercase;letter-spacing:.04em;padding:.6rem .75rem;text-align:left}
.tabela td{padding:.55rem .75rem;border-bottom:1px solid #f1f5f9;font-size:.92rem;vertical-align:middle}
.tabela tr:last-child td{border-bottom:none}
.tabela tr:hover td{background:#f8fafc}
.tabela td.acoes{white-space:nowrap;display:flex;gap:.4rem;align-items:center}
.tabela td.vazio{text-align:center;color:#94a3b8;padding:1.5rem}

/* --- Paginacao --- */
.paginacao{display:flex;gap:.5rem;align-items:center;justify-content:center;margin-top:1rem}

/* --- Busca --- */
.busca-box{background:#fff;padding:1.25rem;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.06);margin-bottom:1rem}
.busca-label{display:block;font-weight:600;color:#475569;margin-bottom:.5rem}
.busca-input{width:100%;max-width:520px;padding:.6rem .85rem;border:1px solid #cbd5e1;border-radius:6px;font-size:1rem}
.busca-input:focus{outline:2px solid #0f5132;border-color:#0f5132}
.busca-spinner{display:none;margin-left:.75rem;color:#64748b;font-size:.88rem}
.htmx-request .busca-spinner{display:inline}
.htmx-indicator{display:none}
.htmx-request .htmx-indicator{display:inline}
.busca-novo{margin-top:1rem;color:#475569}

/* --- Resultados de busca --- */
.resultados-lista{list-style:none;padding:0;margin:0}
.resultado-item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.65rem .75rem;border-bottom:1px solid #f1f5f9;background:#fff}
.resultado-item:last-child{border-bottom:none}
.resultado-item:hover{background:#f8fafc}
.resultado-info{flex:1;min-width:0}
.resultado-info strong{display:block;font-size:.95rem}
.resultado-meta{font-size:.82rem;color:#64748b;display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}
.sem-resultado{color:#64748b;padding:.75rem 0}

/* --- Form de cadastro --- */
.form-cadastro{max-width:900px}
.fieldset{border:1px solid #e2e8f0;border-radius:8px;padding:1rem 1.25rem;margin-bottom:1.25rem;background:#fff}
.fieldset legend{font-weight:700;color:#0f5132;padding:0 .4rem;font-size:.92rem}
.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.85rem}
.field{display:flex;flex-direction:column;gap:.3rem}
.field.col-wide{grid-column:span 2}
.field label{font-size:.85rem;font-weight:600;color:#374151}
.form-control{padding:.5rem .7rem;border:1px solid #cbd5e1;border-radius:6px;font-size:.95rem;width:100%}
.form-control:focus{outline:2px solid #0f5132;border-color:#0f5132}
.field-error{color:#dc2626;font-size:.8rem}
.form-errors{background:#fee2e2;color:#7f1d1d;padding:.6rem .85rem;border-radius:6px;margin-bottom:.85rem}
.form-errors .erro{margin:0;font-size:.9rem}
.form-check-group{display:flex;flex-wrap:wrap;gap:1rem;padding:.25rem 0}
.form-check-label{display:flex;align-items:center;gap:.4rem;cursor:pointer;font-size:.92rem}
.form-check-input{width:1rem;height:1rem;cursor:pointer}
.form-actions{display:flex;gap:.75rem;align-items:center;margin-top:1rem;flex-wrap:wrap}

/* --- Meta do cadastro (topo da edicao) --- */
.cadastro-meta{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;padding:.6rem 1rem;display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1rem;font-size:.85rem;color:#475569}
.cadastro-meta code{color:#1e293b;font-size:.82rem}

/* --- Cards dashboard com dois botoes --- */
.card-action-btns{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.5rem}

/* --- Widget de camera --- */
.camera-widget{display:flex;flex-direction:column;gap:.75rem}
.foto-atual{display:flex;flex-direction:column;gap:.3rem}
.foto-preview-atual{max-width:120px;max-height:120px;border-radius:6px;object-fit:cover;border:2px solid #cbd5e1}
.foto-preview-wrap{margin:.25rem 0}
.foto-preview{max-width:200px;max-height:200px;border-radius:6px;object-fit:cover;border:2px solid #0f5132}
.foto-controles{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.camera-video-wrap{margin-top:.5rem}
.camera-video{max-width:480px;width:100%;border-radius:8px;border:2px solid #0f5132;background:#000}
[x-cloak]{display:none!important}


/* =======================================================================
   POLISH v2 adicionado pelo agente de UI
   ======================================================================= */

/* Variaveis CSS */
:root {
  --verde:       #0f5132;
  --verde-hover: #0c4127;
  --verde-light: #dcfce7;
  --verde-dark:  #0a3323;
  --amarelo:     #ffd44f;
  --amarelo-dark:#b8970a;
  --cinza-100:   #f8fafc;
  --cinza-200:   #f1f5f9;
  --cinza-300:   #e2e8f0;
  --cinza-400:   #cbd5e1;
  --cinza-500:   #94a3b8;
  --cinza-600:   #64748b;
  --cinza-700:   #475569;
  --cinza-800:   #1e293b;
  --cinza-900:   #1f2937;
  --vermelho:    #dc2626;
  --vermelho-bg: #fee2e2;
  --verde-btn:   #16a34a;
  --radius-sm:   4px;
  --radius-md:   6px;
  --radius-lg:   8px;
  --radius-full: 999px;
  --shadow-sm:   0 1px 3px rgba(0,0,0,.06);
  --shadow-md:   0 4px 12px rgba(0,0,0,.10);
  --shadow-lg:   0 8px 32px rgba(0,0,0,.18);
  --transition:  .18s ease;
}
body { line-height: 1.6; }
h1 { font-size: 1.6rem; font-weight: 700; line-height: 1.2; color: var(--cinza-900); }
h2 { font-size: 1.25rem; font-weight: 700; line-height: 1.3; color: var(--cinza-900); }
h3 { font-size: 1.05rem; font-weight: 600; line-height: 1.4; color: var(--cinza-800); }
h4 { font-size: .95rem; font-weight: 600; color: var(--cinza-700); }
p  { margin: 0 0 .75rem; }
.btn { transition: background var(--transition), box-shadow var(--transition), opacity var(--transition); }
.btn:focus-visible { outline: 3px solid var(--amarelo); outline-offset: 2px; }
.btn:active { opacity: .85; transform: translateY(1px); }
.btn:disabled,.btn[disabled] { opacity:.5; cursor:not-allowed; pointer-events:none; }
.btn-lg { padding:.75rem 1.5rem; font-size:1.05rem; }
.btn-primary:focus-visible,.btn-success:focus-visible,.btn-danger:focus-visible { outline-color: var(--amarelo); }
.form-control:focus,.busca-input:focus,input:focus,select:focus,textarea:focus {
  outline: 2px solid var(--verde); outline-offset: 1px; border-color: var(--verde);
}
.form-control.is-invalid,input.is-invalid,select.is-invalid { border-color: var(--vermelho); background:#fff5f5; }
.field-helptext { font-size:.78rem; color:var(--cinza-600); margin-top:.15rem; }
.tabela tbody tr:nth-child(even) td { background: var(--cinza-100); }
.tabela tbody tr:hover td           { background: #ecfdf5; }
.tabela thead                       { position: sticky; top: 0; z-index: 1; }
.badge {
  min-width:4.5rem; text-align:center; border-radius:var(--radius-full);
  padding:.2em .65em; font-size:.75rem; font-weight:600; white-space:nowrap; line-height:1.6;
}
.badge-verde    { background:var(--verde-light);  color:#166534; }
.badge-vermelho { background:var(--vermelho-bg);  color:#7f1d1d; }
.badge-cinza    { background:var(--cinza-200);    color:var(--cinza-700); }
.badge-amarelo  { background:#fef3c7;             color:#92400e; }
.badge-azul     { background:#dbeafe;             color:#1e40af; }
.htmx-request { opacity:.6; cursor:wait; pointer-events:none; transition:opacity .3s; }
.htmx-request .htmx-indicator { display:inline !important; }
.modal { backdrop-filter:blur(2px); animation:fadeIn .18s ease; }
.modal-box { animation:slideUp .2s ease; max-height:90vh; overflow-y:auto; }
@keyframes fadeIn  { from{opacity:0} to{opacity:1} }
@keyframes slideUp { from{transform:translateY(16px);opacity:0} to{transform:translateY(0);opacity:1} }
.empty-state {
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  padding:3rem 1rem; color:var(--cinza-500); text-align:center; gap:.5rem;
}
.empty-state h3 { color:var(--cinza-600); margin:0; }
.empty-state p  { font-size:.9rem; margin:0; }
.cards { grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); }
.card  { transition:box-shadow var(--transition); }
.card:hover { box-shadow:var(--shadow-md); }
.card-stat-icon { display:flex; align-items:center; gap:.85rem; }
.card-stat-icon .icon-wrap {
  width:48px; height:48px; border-radius:var(--radius-md);
  background:var(--verde-light); display:flex; align-items:center; justify-content:center;
  flex-shrink:0; color:var(--verde);
}
.card-stat-icon .icon-wrap.amarelo { background:#fef3c7; color:var(--amarelo-dark); }
.card-stat-icon .icon-wrap.azul    { background:#dbeafe; color:#1e40af; }
.atividade-lista { list-style:none; padding:0; margin:0; }
.atividade-item {
  display:flex; align-items:center; gap:.75rem;
  padding:.55rem .25rem; border-bottom:1px solid var(--cinza-200);
}
.atividade-item:last-child { border-bottom:none; }
.atividade-icon {
  width:32px; height:32px; border-radius:50%; background:var(--verde-light);
  display:flex; align-items:center; justify-content:center; flex-shrink:0; color:var(--verde);
}
.atividade-icon.carteirinha { background:#dbeafe; color:#1e40af; }
.atividade-text { flex:1; min-width:0; }
.atividade-text strong { display:block; font-size:.88rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.atividade-text small  { color:var(--cinza-600); font-size:.78rem; }
.topbar .nav a { padding:.2rem .4rem; border-radius:var(--radius-sm); transition:background var(--transition); }
.topbar .nav a:hover { background:rgba(255,255,255,.15); text-decoration:none; }
.login-page {
  min-height:100vh;
  background:linear-gradient(135deg,#0a3323 0%,#0f5132 60%,#1a7a48 100%);
  display:flex; align-items:center; justify-content:center; padding:1.5rem;
}
.login-card {
  background:#fff; border-radius:var(--radius-lg); box-shadow:var(--shadow-lg);
  padding:2.25rem 2rem 2rem; width:100%; max-width:380px;
}
.login-logo { text-align:center; margin-bottom:1.5rem; }
.login-logo .org-name { font-size:1.3rem; font-weight:800; color:var(--verde); line-height:1; }
.login-logo .org-sub  { font-size:.82rem; color:var(--cinza-600); margin-top:.15rem; }
.login-title { text-align:center; font-size:1rem; font-weight:600; color:var(--cinza-700); margin:0 0 1.25rem; }
.login-field { margin-bottom:1rem; }
.login-field label { display:block; font-size:.85rem; font-weight:600; color:var(--cinza-700); margin-bottom:.3rem; }
.login-field input {
  display:block; width:100%; padding:.6rem .75rem;
  border:1px solid var(--cinza-400); border-radius:var(--radius-md);
  font-size:1rem; box-sizing:border-box;
}
.login-field input:focus { outline:2px solid var(--verde); border-color:var(--verde); }
.login-btn   { width:100%; margin-top:.5rem; padding:.65rem; font-size:1rem; }
.login-error {
  background:var(--vermelho-bg); color:#7f1d1d; border:1px solid #fca5a5;
  border-radius:var(--radius-md); padding:.6rem .85rem; font-size:.88rem; margin-bottom:1rem;
}
.login-error-locked { background:#fef3c7; color:#92400e; border-color:#fcd34d; }
.error-page {
  min-height:70vh; display:flex; flex-direction:column;
  align-items:center; justify-content:center; text-align:center; gap:1rem; padding:2rem;
}
.error-page .error-code { font-size:5rem; font-weight:800; color:var(--cinza-300); line-height:1; }
.error-page h2 { color:var(--cinza-700); font-size:1.4rem; margin:0; }
.error-page p  { color:var(--cinza-500); max-width:400px; margin:0 auto; }
@media (max-width:768px) {
  .cards  { grid-template-columns:1fr; }
  .topbar { flex-wrap:wrap; gap:.5rem; }
  .topbar .nav { flex-wrap:wrap; gap:.5rem; font-size:.88rem; }
  .container { padding:0 .75rem; }
  .tabela thead { position:static; }
  h1 { font-size:1.25rem; }
  .page-header  { flex-direction:column; }
  .page-actions { width:100%; }
  .form-grid    { grid-template-columns:1fr; }
  .field.col-wide { grid-column:span 1; }
  .login-card { padding:1.5rem 1.25rem; }
}
@media (max-width:480px) {
  .modal-box { margin:.5rem; width:calc(100% - 1rem); }
  .btn-lg    { width:100%; }
}
