
:root{
  --bg:#090a0b;
  --bg2:#111315;
  --panel:#151719;
  --panel2:#1b1e20;
  --line:#2a2d30;
  --text:#f4f1e8;
  --muted:#9b9c98;
  --gold:#c9a85d;
  --gold2:#e2c67f;
  --danger:#f08b8b;
  --shadow:0 18px 60px rgba(0,0,0,.35);
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
body{min-height:100vh}
button,input{font:inherit}
.hidden{display:none!important}
.view{min-height:100vh}
.login-shell{
  display:grid;place-items:center;padding:28px;
  background:
    radial-gradient(circle at 50% 5%,rgba(201,168,93,.13),transparent 31%),
    linear-gradient(180deg,#0d0e0f 0%,#08090a 100%);
}
.login-card{
  width:min(100%,470px);padding:48px 42px;border:1px solid #2a2b29;border-radius:22px;
  background:linear-gradient(180deg,rgba(25,27,28,.96),rgba(13,14,15,.98));box-shadow:var(--shadow);text-align:center
}
.brand-mark{
  width:74px;height:74px;margin:0 auto 18px;border:1px solid rgba(201,168,93,.55);border-radius:50%;
  display:grid;place-items:center;font-family:Georgia,serif;font-size:38px;color:var(--gold2);
  background:radial-gradient(circle,rgba(201,168,93,.12),transparent 68%)
}
.brand-mark.small{width:42px;height:42px;margin:0;font-size:22px}
.eyebrow,.panel-kicker{font-size:11px;letter-spacing:.21em;color:var(--gold);font-weight:800}
h1{font-family:Georgia,serif;font-weight:500;font-size:38px;margin:8px 0 10px}
.subtitle{color:#c5c4be;line-height:1.6;margin:0 auto 30px;max-width:360px}
.login-form{display:grid;gap:17px;text-align:left}
label{display:grid;gap:8px;color:#d8d5cb;font-size:13px;font-weight:700}
input{
  width:100%;border:1px solid #343638;border-radius:11px;background:#0f1112;color:white;padding:14px 15px;outline:none;
  transition:.2s border,.2s box-shadow
}
input:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(201,168,93,.1)}
.btn{border:0;border-radius:10px;padding:13px 16px;cursor:pointer;font-weight:800;letter-spacing:.03em}
.btn-primary{background:linear-gradient(135deg,var(--gold2),#b79248);color:#12100b}
.btn-primary:hover{filter:brightness(1.06)}
.btn-ghost{background:#181a1b;border:1px solid #303234;color:#ddd}
.compact{padding:10px 16px}
.status{min-height:20px;text-align:center;font-size:13px;color:var(--muted)}
.status.error{color:var(--danger)}
.login-note{font-size:12px;color:#777;margin:25px 0 0}
.dashboard{display:grid;grid-template-columns:250px 1fr;min-height:100vh}
.sidebar{
  position:sticky;top:0;height:100vh;padding:24px 18px;border-right:1px solid #252729;background:#0c0e0f;
  display:flex;flex-direction:column;justify-content:space-between
}
.brand{display:flex;align-items:center;gap:12px;padding:4px 8px 26px}
.brand strong{display:block;font-size:12px;letter-spacing:.13em;color:var(--gold2)}
.brand span{display:block;font-size:11px;color:#888;margin-top:3px}
nav{display:grid;gap:7px}
.nav-item{
  text-align:left;background:transparent;border:1px solid transparent;color:#aaa;padding:12px 14px;border-radius:10px;
  cursor:pointer;font-weight:700
}
.nav-item:hover{background:#141617;color:#eee}
.nav-item.active{background:linear-gradient(90deg,rgba(201,168,93,.14),transparent);border-color:rgba(201,168,93,.2);color:var(--gold2)}
.sidebar-footer{display:grid;gap:10px}
.user-email{font-size:11px;color:#777;overflow-wrap:anywhere}
.main{min-width:0;padding:32px 34px 24px;background:linear-gradient(180deg,#0e1011,#090a0b)}
.topbar{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:28px}
.topbar h2{font-family:Georgia,serif;font-size:34px;font-weight:500;margin:5px 0 0}
.topbar-badge{font-size:10px;letter-spacing:.14em;color:#9d8a5c;border:1px solid #3a3427;padding:9px 11px;border-radius:999px}
.panel-section{display:none}
.panel-section.active{display:block}
.cards-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;margin-bottom:18px}
.card{
  min-height:128px;padding:20px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(180deg,#17191b,#111315)
}
.card .label{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:#8d8e8a}
.card .value{font-family:Georgia,serif;font-size:36px;color:#f5f0e3;margin:14px 0 4px}
.card .note{font-size:12px;color:var(--muted)}
.card.highlight{border-color:rgba(201,168,93,.35);background:linear-gradient(180deg,rgba(201,168,93,.11),#121313)}
.grid-2{display:grid;grid-template-columns:1.15fr .85fr;gap:18px;margin-bottom:18px}
.panel{
  border:1px solid var(--line);border-radius:16px;background:linear-gradient(180deg,#151719,#101213);padding:20px;box-shadow:0 8px 30px rgba(0,0,0,.13)
}
.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}
.panel-head h3{font-size:18px;margin:5px 0 0}
.panel-head.split{gap:18px;flex-wrap:wrap}
.rank-list{display:grid;gap:12px}
.rank-item{display:grid;grid-template-columns:30px minmax(130px,1fr) 3fr 54px;gap:10px;align-items:center}
.rank-num{color:#696b6c;font-weight:800;font-size:12px}
.rank-name{font-size:12px;color:#d9d7cf}
.bar{height:8px;background:#232628;border-radius:999px;overflow:hidden}
.bar > span{display:block;height:100%;background:linear-gradient(90deg,#8e743e,var(--gold2));border-radius:999px}
.rank-score{text-align:right;color:var(--gold2);font-weight:900;font-size:12px}
.rank-list.large .rank-item{padding:9px 0;border-bottom:1px solid #212325}
.origin-list{display:grid;gap:10px}
.origin-item{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid #222426}
.origin-item strong{font-size:13px}
.origin-item span{font-size:12px;color:#aaa}
.origin-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.origin-card{padding:18px;border:1px solid #2b2e30;border-radius:14px;background:#111315}
.origin-card .origin-name{font-weight:800;color:#eee;margin-bottom:14px}
.origin-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.origin-metric{padding:10px;border-radius:10px;background:#17191b}
.origin-metric span{display:block;font-size:10px;color:#777;text-transform:uppercase}
.origin-metric strong{display:block;margin-top:6px;color:var(--gold2)}
.table-wrap{overflow:auto;border:1px solid #232628;border-radius:12px}
table{border-collapse:collapse;width:100%;min-width:760px}
th,td{padding:12px 13px;text-align:left;border-bottom:1px solid #25282a;font-size:12px}
th{color:#858782;text-transform:uppercase;letter-spacing:.08em;font-size:10px;background:#111315}
td{color:#d6d4cd}
tbody tr:hover{background:#151819}
.search-row{display:flex;gap:8px;min-width:min(100%,420px)}
.search-row input{padding:10px 12px}
.error-box{margin-bottom:16px;padding:12px 14px;border:1px solid rgba(240,139,139,.35);background:rgba(240,139,139,.08);color:#f3aaaa;border-radius:10px;font-size:13px}
.empty{color:#777;font-size:13px;padding:14px 0}
.footer{display:flex;justify-content:space-between;gap:18px;margin-top:22px;padding:18px 4px 2px;color:#6f716d;font-size:10px;letter-spacing:.1em}
.footer strong{color:#97845d;font-weight:700;letter-spacing:0}
@media(max-width:1100px){
  .cards-grid{grid-template-columns:repeat(3,1fr)}
  .grid-2{grid-template-columns:1fr}
  .origin-cards{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:760px){
  .dashboard{grid-template-columns:1fr}
  .sidebar{position:static;height:auto;border-right:0;border-bottom:1px solid #252729;padding:15px}
  .brand{padding-bottom:14px}
  nav{grid-template-columns:repeat(2,1fr)}
  .sidebar-footer{grid-template-columns:1fr auto;align-items:center;margin-top:12px}
  .main{padding:22px 15px}
  .topbar{display:block}
  .topbar-badge{display:inline-block;margin-top:14px}
  .cards-grid{grid-template-columns:repeat(2,1fr)}
  .origin-cards{grid-template-columns:1fr}
  .rank-item{grid-template-columns:24px 1.5fr 2fr 42px}
  .footer{display:grid}
}
@media(max-width:480px){
  .login-card{padding:34px 22px}
  h1{font-size:32px}
  .cards-grid{grid-template-columns:1fr}
}


/* V1.1 — identidade oficial Governadamente */
.official-logo{
  display:block;
  object-fit:contain;
  mix-blend-mode:screen;
}
.login-logo{
  width:190px;
  max-width:60%;
  height:auto;
  margin:0 auto 18px;
  filter:drop-shadow(0 8px 24px rgba(201,168,93,.10));
}
.sidebar-logo{
  width:54px;
  height:54px;
  border-radius:8px;
  flex:0 0 auto;
}
.login-card{
  border-color:rgba(201,168,93,.28);
  box-shadow:0 22px 80px rgba(0,0,0,.48),0 0 80px rgba(201,168,93,.04);
}
.login-card h1{
  margin-top:2px;
}
.login-divider{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  gap:12px;
  align-items:center;
  margin:8px 0 0;
}
.login-divider span{
  height:1px;
  background:linear-gradient(90deg,transparent,rgba(201,168,93,.42));
}
.login-divider span:last-child{
  background:linear-gradient(90deg,rgba(201,168,93,.42),transparent);
}
.login-divider strong{
  color:#8f7b50;
  font-size:9px;
  letter-spacing:.18em;
  white-space:nowrap;
}
#loginBtn{
  margin-top:2px;
  min-height:49px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:12px;
}
#loginBtn span{
  font-size:20px;
  line-height:1;
}
@media(max-width:480px){
  .login-logo{width:155px;max-width:66%}
  .login-divider{gap:7px}
  .login-divider strong{font-size:7px;letter-spacing:.11em}
}

/* V1.2 — módulo Campanhas */
select,textarea{
  width:100%;border:1px solid #343638;border-radius:11px;background:#0f1112;color:white;padding:14px 15px;outline:none;
  transition:.2s border,.2s box-shadow;font:inherit
}
select:focus,textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(201,168,93,.1)}
textarea{resize:vertical;min-height:92px}
.grid-campaigns{display:grid;grid-template-columns:1.08fr .92fr;gap:18px;margin-bottom:18px}
.campaign-form{display:grid;gap:15px}
.form-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.form-grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.result-panel{min-height:560px}
.campaign-empty{min-height:400px;display:grid;place-items:center;text-align:center;color:#747670;border:1px dashed #303336;border-radius:14px;padding:28px;line-height:1.6}
.campaign-created-name{font-family:Georgia,serif;font-size:24px;text-align:center;color:var(--gold2);margin:4px 0 18px}
.qr-shell{width:280px;height:280px;max-width:100%;margin:0 auto 18px;padding:16px;background:#fff;border-radius:18px;display:grid;place-items:center}
.qr-shell canvas{max-width:100%;height:auto!important}
.generated-link{padding:13px;border:1px solid #343638;background:#0d0f10;border-radius:10px;color:#b9b7af;font-size:12px;line-height:1.5;word-break:break-all;margin-bottom:14px}
.campaign-actions{display:flex;gap:9px;justify-content:center;flex-wrap:wrap}
.microcopy{font-size:11px;color:#777;text-align:center;line-height:1.55;margin:18px auto 0;max-width:430px}
.campaigns-list-panel{margin-top:18px}
.type-pill{display:inline-flex;padding:5px 8px;border-radius:999px;border:1px solid #373a3c;background:#151719;font-size:10px;color:#aaa}
.action-link{background:transparent;border:0;color:var(--gold2);cursor:pointer;font-weight:800;font-size:11px;padding:4px 6px}
@media(max-width:980px){.grid-campaigns{grid-template-columns:1fr}.result-panel{min-height:auto}.campaign-empty{min-height:220px}}
@media(max-width:620px){.form-grid-2,.form-grid-3{grid-template-columns:1fr}.qr-shell{width:240px;height:240px}}

.qr-code-host{width:248px;height:248px;display:flex;align-items:center;justify-content:center}
.qr-code-host img{display:block;width:248px;height:248px;max-width:100%;background:#fff}
.qr-loading{font-size:12px;color:#777;text-align:center;padding:20px}
