:root{--primary:#7c3aed;--primary2:#5b21b6;--ink:#111827;--muted:#6b7280;--bg:#f7f8fa;--card:#fff;--line:#e5e7eb;--green:#10b981;--blue:#3b82f6;--amber:#f59e0b;--purple:#8b5cf6;--danger:#dc2626}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--ink);background:var(--bg)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.container{max-width:1220px;margin:0 auto;padding:0 18px}.public-container{max-width:1220px}.topbar{background:#fff;border-bottom:1px solid #eceff3}.topbar-inner{min-height:72px;display:flex;align-items:center;justify-content:space-between;gap:18px}.brand{display:flex;align-items:center;gap:12px}.brand-logo,.brand-mark{width:44px;height:44px;border-radius:13px;background:linear-gradient(135deg,var(--primary),var(--primary2));color:#fff;display:grid;place-items:center;font-weight:800;box-shadow:0 8px 22px rgba(124,58,237,.2)}.brand h1{font-size:16px;margin:0}.brand small{color:var(--muted)}.logo-mini{width:42px;height:42px;border-radius:10px;object-fit:contain;background:#fff}.hero{padding:30px 0 16px;background:#fff}.crumb{font-size:13px;color:#5f6b7a;margin-bottom:18px}.hero h2{font-size:31px;line-height:1.1;margin:0;color:#101828;letter-spacing:-.6px}.hero p{color:var(--muted);margin:8px 0 0}.card{background:var(--card);border:1px solid #e1e5ea;border-radius:15px;box-shadow:0 2px 8px rgba(16,24,40,.04)}.panel-card{margin:8px 0 22px}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:17px 16px 8px;font-size:14px;font-weight:700}.panel-head .title-icon{display:inline-flex;align-items:center;gap:8px}.panel-head svg{width:17px;height:17px;color:#475467}.chevron{color:#667085}.filter-card{padding:8px 16px 15px}.filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 14px}.field{display:flex;flex-direction:column;gap:6px}.field label,label{font-size:13px;font-weight:650;color:#344054}.field input,.field select,.field textarea,input,select,textarea{width:100%;border:1px solid #d0d5dd;border-radius:9px;padding:10px 12px;background:#fff;color:#101828;outline:none;min-height:40px}.field input:focus,.field select:focus,.field textarea:focus,input:focus,select:focus,textarea:focus{border-color:#9b75ef;box-shadow:0 0 0 3px rgba(124,58,237,.09)}.search-field{grid-column:span 3}.actions{display:flex;justify-content:flex-end;align-items:end;gap:9px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid #d0d5dd;border-radius:9px;padding:9px 13px;min-height:40px;background:#fff;color:#344054;cursor:pointer;font-weight:650;white-space:nowrap}.btn:hover{filter:brightness(.985)}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.success{background:#ecfdf3;border-color:#a6f4c5;color:#067647}.btn.danger{color:var(--danger);border-color:#fecaca}.btn.small{min-height:34px;padding:6px 10px;font-size:12px}.btn.wide{width:100%}.btn svg,.icon-btn svg{width:17px;height:17px}.indicator-panel{padding:0 15px 15px;margin-bottom:22px}.indicators{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.metric{padding:18px 20px;position:relative;min-height:104px;border-radius:15px;border:1px solid #e4e7ec;background:#fff;box-shadow:none}.metric::before{content:"";position:absolute;left:-1px;top:-1px;bottom:-1px;width:4px;border-radius:15px 0 0 15px;background:var(--purple)}.metric:nth-child(2)::before{background:var(--blue)}.metric:nth-child(3)::before{background:var(--amber)}.metric:nth-child(4)::before{background:var(--green)}.metric span{display:block;color:#344054;font-size:13px;padding-right:44px}.metric strong{display:block;margin-top:16px;font-size:19px;line-height:1.1;color:#101828;letter-spacing:-.3px}.metric-icon{position:absolute;right:15px;top:16px;width:29px;height:29px;border-radius:9px;display:grid;place-items:center;background:#f4ebff;color:#7f56d9}.metric:nth-child(2) .metric-icon{background:#eff8ff;color:#2e90fa}.metric:nth-child(3) .metric-icon{background:#fffaeb;color:#f79009}.metric:nth-child(4) .metric-icon{background:#ecfdf3;color:#12b76a}.metric-icon svg{width:16px;height:16px}.table-card{overflow:hidden;margin-bottom:28px}.table-head{padding:15px 15px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.table-head h3{margin:0 0 2px;font-size:15px}.muted{color:var(--muted)}.table-head .muted{font-size:12px}.table-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.per-page{display:flex;align-items:center;gap:8px;font-size:12px;color:#344054}.per-page select{width:auto;min-height:36px;padding:7px 28px 7px 10px}.export-btn{min-height:36px;padding:7px 12px;font-size:12px}.table-wrap{overflow:auto;border-top:1px solid var(--line)}table{width:100%;border-collapse:collapse;font-size:13px}th{background:#fafafa;color:#344054;text-align:left;font-size:12px;font-weight:650;white-space:nowrap}th,td{padding:14px 15px;border-bottom:1px solid #eaecf0;vertical-align:top}.agreement-row:hover{background:#fcfcfd}.instrument-chip{display:inline-block;background:#f2f4f7;color:#475467;border-radius:999px;padding:4px 8px;font-size:11px}.money-total{color:var(--primary);font-weight:700;white-space:nowrap}.status-badge,.badge{display:inline-block;border-radius:6px;padding:3px 7px;font-size:11px;font-weight:700}.status-badge.green,.badge.green{background:#dcfae6;color:#067647}.status-badge.amber,.badge.amber{background:#fef0c7;color:#b54708}.status-badge.gray,.badge.gray{background:#f2f4f7;color:#475467}.status-badge.blue,.badge.blue{background:#eff8ff;color:#175cd3}.detail-eye{width:37px;height:37px;border:0;border-radius:10px;display:inline-grid;place-items:center;background:#f4ebff;color:#7f56d9;cursor:pointer}.detail-eye:hover{background:#eadcff}.detail-eye svg{width:17px;height:17px}.details-row{display:none;background:#fff}.details-row.is-open{display:table-row}.details-row>td{padding:0;border-bottom:1px solid #dfe3e8}.expanded{padding:18px 20px 20px;background:#fff}.detail-columns{display:grid;grid-template-columns:1fr 1fr 1.1fr;gap:22px}.detail-block h4{font-size:12px;font-weight:700;color:#344054;margin:0 0 9px;padding-bottom:8px;border-bottom:1px solid #eaecf0;letter-spacing:.02em}.kv-line{display:grid;grid-template-columns:120px 1fr;gap:8px;margin:9px 0;font-size:12px;line-height:1.45}.kv-line b{font-weight:650;color:#475467}.kv-line span{color:#101828;overflow-wrap:anywhere}.detail-text{font-size:12px;line-height:1.5;margin:8px 0}.detail-link{color:#2563eb;font-size:12px}.value-lines{border-top:1px solid #eaecf0;margin-top:12px;padding-top:7px}.value-line{display:flex;justify-content:space-between;gap:10px;padding:5px 0;font-size:12px}.value-line.total{font-weight:800}.notes-wrap{margin-top:18px;padding-top:14px;border-top:1px solid #eaecf0}.notes-title{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:650;color:#344054;margin-bottom:10px}.count-pill{background:#f4ebff;color:#7f56d9;border-radius:999px;padding:2px 7px;font-size:10px}.notes-table{border:1px solid #e4e7ec;border-radius:10px;overflow:auto}.notes-table table{min-width:940px}.notes-table th,.notes-table td{font-size:11px;padding:9px 10px}.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 15px}.pagination-info{font-size:12px;color:var(--muted)}.pagination-links{display:flex;gap:5px;flex-wrap:wrap}.page-link{min-width:32px;height:32px;padding:0 9px;border:1px solid #d0d5dd;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;background:#fff;font-size:12px}.page-link.active{background:var(--primary);border-color:var(--primary);color:#fff}.footer{padding:25px 18px 36px;text-align:center;color:#667085;font-size:12px}.section{margin:18px 0}.section .card{padding:20px}.section h3{margin:0 0 15px}.detail-page-grid{display:grid;grid-template-columns:1fr 1fr 1.15fr;gap:22px}.top-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.alert{padding:12px 14px;border-radius:9px;margin:12px 0}.alert.success{background:#ecfdf3;color:#067647}.alert.danger{background:#fef3f2;color:#b42318}.alert.info{background:#eff8ff;color:#175cd3}.install-body,.login-body{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at top,#f5efff,#f8fafc 60%)}.install-card,.login-card{width:min(560px,calc(100vw - 32px));background:#fff;border:1px solid #e4e7ec;border-radius:18px;padding:28px;box-shadow:0 20px 60px rgba(16,24,40,.1)}.login-card{max-width:430px}.install-card h1,.login-card h1{margin:12px 0 5px}.form-grid{display:grid;gap:13px}.form-grid label{display:grid;gap:6px}.form-grid hr{width:100%;border:0;border-top:1px solid #eaecf0;margin:4px 0}.admin-shell{min-height:100vh;display:grid;grid-template-columns:245px 1fr}.sidebar{background:#17102d;color:#ede9fe;padding:20px 14px;position:sticky;top:0;height:100vh}.side-brand{display:flex;align-items:center;gap:10px;padding:0 6px 20px}.side-brand .brand-mark{width:40px;height:40px;margin:0}.side-brand b{color:#fff;line-height:1.15}.nav{display:grid;gap:5px}.nav a{padding:10px 11px;border-radius:9px;color:#d8d1ea}.nav a:hover,.nav a.active{background:#2d2052;color:#fff}.side-foot{position:absolute;left:14px;right:14px;bottom:18px}.admin-main{min-width:0}.admin-top{height:66px;background:#fff;border-bottom:1px solid #e4e7ec;display:flex;align-items:center;justify-content:space-between;padding:0 22px;position:sticky;top:0;z-index:10}.admin-content{padding:22px;max-width:1500px}.page-title{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:17px}.page-title h1{font-size:24px;margin:0}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:18px}.stat{padding:17px}.stat span{font-size:12px;color:var(--muted)}.stat strong{display:block;margin-top:6px;font-size:22px}.admin-card{padding:17px}.admin-card h3{margin-top:0}.row-actions{display:flex;gap:7px;flex-wrap:wrap}.code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;background:#f2f4f7;padding:8px;border-radius:7px;word-break:break-all}
@media(max-width:980px){.filters{grid-template-columns:repeat(2,1fr)}.search-field{grid-column:span 1}.indicators{grid-template-columns:repeat(2,1fr)}.detail-columns,.detail-page-grid{grid-template-columns:1fr}.admin-shell{grid-template-columns:78px 1fr}.side-brand b,.nav span,.side-foot span{display:none}.sidebar{padding:16px 9px}.nav a{text-align:center}.stat-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:720px){.container{padding:0 12px}.hero{padding-top:22px}.hero h2{font-size:25px}.filters,.indicators,.stat-grid{grid-template-columns:1fr}.actions{justify-content:stretch}.actions .btn{flex:1}.table-head{align-items:flex-start}.table-tools{width:100%}.per-page{width:100%;justify-content:space-between}.detail-columns{gap:15px}.expanded{padding:15px 12px}.admin-shell{display:block}.sidebar{height:auto;position:relative}.nav{grid-template-columns:repeat(3,1fr)}.side-brand b{display:block}.side-foot{position:static;margin-top:10px}.admin-content{padding:14px}.admin-top{padding:0 14px}}

/* V0.5.3 — Portal público por município */
.municipality-hero{padding-bottom:28px}.municipality-directory{padding-top:12px;padding-bottom:30px}.municipality-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.municipality-card{display:flex;flex-direction:column;gap:18px;padding:20px;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.municipality-card:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(16,24,40,.08);border-color:#cfc4f7}.municipality-card-top{display:flex;align-items:center;gap:13px}.municipality-avatar,.municipality-logo{width:50px;height:50px;border-radius:13px;flex:0 0 50px}.municipality-avatar{display:grid;place-items:center;background:linear-gradient(135deg,var(--primary),var(--primary2));color:#fff;font-size:14px;font-weight:800}.municipality-logo{object-fit:contain;background:#fff;border:1px solid #eaecf0;padding:3px}.municipality-label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#667085;font-weight:700;margin-bottom:2px}.municipality-card h3{margin:0;font-size:18px;line-height:1.25}.municipality-card h3 small{font-size:12px;color:#667085;font-weight:650}.municipality-stats{display:flex;gap:10px;flex-wrap:wrap}.municipality-stats span{background:#f8f9fb;border:1px solid #eaecf0;border-radius:8px;padding:7px 9px;font-size:11px;color:#667085}.municipality-stats b{color:#344054}.municipality-open{margin-top:auto;padding-top:13px;border-top:1px solid #eaecf0;color:var(--primary);font-size:13px;font-weight:750;display:flex;justify-content:space-between;gap:10px}.municipality-open span{font-size:17px}.empty-municipality{max-width:620px;margin:20px auto;padding:30px;text-align:center}.empty-municipality .brand-mark{margin:0 auto}.municipality-context{display:inline-flex;align-items:center;gap:5px;margin-bottom:10px;padding:6px 10px;border-radius:999px;background:#f4ebff;color:#6941c6;font-size:12px;font-weight:600}.municipality-context strong{color:#53389e}.crumb a{color:#475467;text-decoration:underline;text-underline-offset:2px}
@media(max-width:980px){.municipality-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.municipality-grid{grid-template-columns:1fr}.topbar-inner{align-items:flex-start;padding-top:13px;padding-bottom:13px}.topbar-inner>.top-actions{flex-direction:column;align-items:stretch}.topbar-inner>.top-actions .btn{min-height:32px}.municipality-card{padding:16px}}
