.tgn-election-live-root{--eg:#0d6b39;--eg2:#084b2a;--gold:#c7a13b;--ink:#101613;--muted:#647068;--line:#e3e8e5;max-width:1500px;margin:0 auto;padding:36px 32px 72px;color:var(--ink);font-family:Inter,Arial,sans-serif}.tgn-election-mast{background:linear-gradient(135deg,#071a11,#0b3923);color:#fff;border-radius:18px;padding:34px 38px;display:flex;justify-content:space-between;gap:30px;align-items:flex-end;box-shadow:0 16px 40px rgba(5,30,18,.15)}.tgn-election-live-badge{display:inline-flex;align-items:center;gap:8px;font-size:12px;letter-spacing:.16em;font-weight:800;color:#e9c75b}.tgn-election-live-badge i,.tgn-election-feed-title i{width:8px;height:8px;border-radius:50%;background:#f04444;box-shadow:0 0 0 5px rgba(240,68,68,.13);display:inline-block}.tgn-election-mast h1{font-size:clamp(32px,4.3vw,64px);line-height:.98;margin:14px 0 12px;max-width:900px}.tgn-election-mast p{margin:0;max-width:780px;color:#d2ddd6;font-size:16px;line-height:1.55}.tgn-election-updated{text-align:right;color:#b8c8bf;font-size:12px;line-height:1.5;white-space:nowrap}.tgn-election-updated strong{color:#fff;font-size:14px}.tgn-election-progress-row{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:14px 14px 0 0;margin-top:22px;background:#fff;overflow:hidden}.tgn-election-progress-row>div{padding:20px 22px;border-right:1px solid var(--line)}.tgn-election-progress-row>div:last-child{border:0}.tgn-election-progress-row span{display:block;font-size:10px;letter-spacing:.12em;color:var(--muted);font-weight:800;margin-bottom:5px}.tgn-election-progress-row strong{font-size:28px}.tgn-election-progress-row small{font-size:14px;color:var(--muted)}.tgn-election-progress{height:5px;background:#e9eeeb;border-radius:0 0 5px 5px;overflow:hidden}.tgn-election-progress span{display:block;height:100%;background:linear-gradient(90deg,var(--eg),#39a963);transition:width .4s ease}.tgn-election-layout{display:grid;grid-template-columns:minmax(0,1fr) 390px;gap:34px;margin-top:38px}.tgn-election-section-head{display:flex;justify-content:space-between;align-items:end;border-bottom:2px solid #172219;padding-bottom:12px;margin-bottom:16px}.tgn-election-section-head span,.tgn-election-source-card>span{font-size:10px;letter-spacing:.14em;font-weight:900;color:var(--eg)}.tgn-election-section-head h2{margin:3px 0 0;font-size:27px}.tgn-election-section-head small{color:var(--muted)}.tgn-election-candidates{display:grid;gap:10px}.tgn-election-candidate{display:grid;grid-template-columns:38px 58px minmax(180px,1fr) 140px 180px auto;gap:14px;align-items:center;padding:15px 18px;border:1px solid var(--line);border-radius:12px;background:#fff;position:relative}.tgn-election-candidate.is-leading{border-color:#b9d9c7;box-shadow:inset 4px 0 var(--eg)}.tgn-election-rank{font-weight:900;font-size:18px;color:#89928d}.tgn-election-avatar{width:50px;height:50px;border-radius:50%;overflow:hidden;background:#e8efe9;display:grid;place-items:center;font-weight:900;color:var(--eg)}.tgn-election-avatar img{width:100%;height:100%;object-fit:cover}.tgn-election-person h3{margin:0;font-size:17px}.tgn-election-person p{margin:3px 0 0;color:var(--muted);font-size:12px;font-weight:800}.tgn-election-votes{text-align:right}.tgn-election-votes strong,.tgn-election-share>strong{font-size:20px}.tgn-election-votes span{font-size:11px;color:var(--muted);display:block}.tgn-election-share>div{height:5px;background:#e9eeeb;border-radius:9px;margin-top:5px;overflow:hidden}.tgn-election-share>div span{height:100%;display:block}.tgn-election-leading{font-size:9px;letter-spacing:.08em;font-weight:900;color:var(--eg);background:#e6f3eb;padding:6px 8px;border-radius:20px}.tgn-election-declarations-head{margin-top:34px}.tgn-election-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px}.tgn-election-table{width:100%;border-collapse:collapse;background:#fff;min-width:650px}.tgn-election-table th,.tgn-election-table td{text-align:left;padding:13px 15px;border-bottom:1px solid var(--line);font-size:13px}.tgn-election-table th{background:#f4f7f5;font-size:10px;letter-spacing:.09em}.tgn-election-table a{color:var(--eg);font-weight:700}.tgn-election-live-feed,.tgn-election-source-card{border:1px solid var(--line);border-radius:14px;background:#fff;overflow:hidden}.tgn-election-feed-title{display:flex;justify-content:space-between;padding:16px 18px;background:#0b2518;color:#fff;font-size:11px;font-weight:900;letter-spacing:.1em}.tgn-election-feed-title span{display:flex;gap:8px;align-items:center}.tgn-election-feed-title small{color:#aebfb5;letter-spacing:0}.tgn-election-live-feed article{display:grid;grid-template-columns:46px 1fr;gap:10px;padding:17px 18px;border-bottom:1px solid var(--line)}.tgn-election-live-feed article:last-child{border:0}.tgn-election-live-feed time{font-size:12px;font-weight:900;color:var(--muted)}.tgn-election-live-feed article span{display:inline-block;font-size:8px;letter-spacing:.12em;font-weight:900;color:var(--eg);margin-bottom:4px}.tgn-election-live-feed h3{font-size:14px;line-height:1.35;margin:0 0 5px}.tgn-election-live-feed p{font-size:12px;color:var(--muted);line-height:1.45;margin:0}.tgn-election-source-card{padding:20px;margin-top:16px;background:#f5f7f5}.tgn-election-source-card strong{display:block;margin:5px 0 9px;font-size:15px}.tgn-election-source-card p{margin:0;color:var(--muted);font-size:12px;line-height:1.55}.tgn-election-empty,.tgn-election-empty-sm{padding:25px;color:var(--muted);background:#f6f8f7;border-radius:10px}.tgn-election-empty-sm{margin:0;border-radius:0;background:#fff}.tgn-election-disabled{max-width:1000px;margin:40px auto;padding:30px;background:#f5f5f5;border-radius:10px;text-align:center}
@media(max-width:1050px){.tgn-election-layout{grid-template-columns:1fr}.tgn-election-candidate{grid-template-columns:34px 50px 1fr 120px 160px}.tgn-election-leading{display:none}.tgn-election-progress-row{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.tgn-election-live-root{padding:20px 14px 55px}.tgn-election-mast{padding:26px 21px;display:block}.tgn-election-updated{text-align:left;margin-top:18px}.tgn-election-progress-row{grid-template-columns:repeat(2,1fr)}.tgn-election-progress-row>div{padding:14px}.tgn-election-progress-row strong{font-size:22px}.tgn-election-candidate{grid-template-columns:30px 46px 1fr auto;padding:12px;gap:9px}.tgn-election-avatar{width:42px;height:42px}.tgn-election-votes{grid-column:4;grid-row:1 / span 2}.tgn-election-share{grid-column:2 / span 3}.tgn-election-person h3{font-size:14px}.tgn-election-layout{margin-top:28px}.tgn-election-section-head h2{font-size:22px}.tgn-election-section-head small{display:none}}
.tgn-election-filter{margin:-2px 0 12px}.tgn-election-filter input{width:100%;max-width:430px;border:1px solid var(--line);border-radius:9px;padding:11px 13px;font:inherit;background:#fff;color:var(--ink);outline:none}.tgn-election-filter input:focus{border-color:#7db697;box-shadow:0 0 0 3px rgba(13,107,57,.08)}

/* v5.6.3 — Homepage election snapshot */
.tgn-election-snapshot-root{max-width:1500px;margin:22px auto 28px;padding:0 28px}.tgn-home-election{border:1px solid #d9e0dc;background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 8px 28px rgba(12,32,22,.05)}.tgn-home-election-head{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 22px;background:linear-gradient(135deg,#071a11,#103a25);color:#fff}.tgn-home-election-live{display:flex;align-items:center;gap:9px;color:#ebcc68;font-size:10px;font-weight:900;letter-spacing:.12em}.tgn-home-election-live i{width:8px;height:8px;border-radius:50%;background:#ef4444;box-shadow:0 0 0 5px rgba(239,68,68,.13);animation:tgnElectionHomePulse 1.7s infinite}.tgn-home-election-head h2{margin:6px 0 0;font-size:clamp(19px,2vw,29px);line-height:1.1;color:#fff}.tgn-home-election-link{flex-shrink:0;color:#fff!important;border:1px solid rgba(255,255,255,.22);padding:10px 13px;border-radius:5px;font-size:11px;font-weight:800;text-decoration:none!important}.tgn-home-election-link:hover{background:#fff;color:#0d6b39!important}.tgn-home-election-body{display:grid;grid-template-columns:280px 1fr;gap:0}.tgn-home-election-stats{display:grid;grid-template-columns:1fr;border-right:1px solid #e4e9e6;background:#f6f8f7}.tgn-home-election-stats>div{padding:13px 18px;border-bottom:1px solid #e2e7e4}.tgn-home-election-stats>div:last-child{border-bottom:0}.tgn-home-election-stats span{display:block;color:#738077;font-size:9px;font-weight:900;letter-spacing:.11em}.tgn-home-election-stats strong{display:block;margin-top:3px;color:#142219;font-size:21px}.tgn-home-election-stats small{font-size:12px;color:#7d8981;margin-left:3px}.tgn-home-election-candidates{padding:8px 18px}.tgn-home-election-candidate{display:grid;grid-template-columns:28px minmax(150px,1fr) 135px;gap:12px;align-items:center;padding:10px 0;position:relative;border-bottom:1px solid #edf0ee}.tgn-home-election-candidate:last-child{border-bottom:0}.tgn-home-election-candidate.is-leading .tgn-home-election-rank{background:#e4f3e9;color:#0d6b39}.tgn-home-election-rank{width:25px;height:25px;border-radius:50%;display:grid;place-items:center;background:#f0f3f1;color:#66746b;font-weight:900;font-size:11px}.tgn-home-election-name strong{display:block;font-size:14px;color:#172019}.tgn-home-election-name span{display:block;margin-top:2px;color:#7c8780;font-size:10px;font-weight:800}.tgn-home-election-votes{text-align:right}.tgn-home-election-votes strong{font-size:15px}.tgn-home-election-votes span{display:block;color:#0d6b39;font-size:11px;font-weight:900}.tgn-home-election-bar{grid-column:2/4;height:4px;background:#edf1ee;border-radius:4px;overflow:hidden;margin-top:-7px}.tgn-home-election-bar span,.tgn-home-election-progress span{display:block;height:100%}.tgn-home-election-progress{height:4px;background:#e9eeeb}.tgn-home-election-progress span{background:linear-gradient(90deg,#0d6b39,#46a86d)}.tgn-home-election-empty{margin:18px;color:#758078}.tgn-home-election-live i{animation-name:tgnElectionHomePulse}@keyframes tgnElectionHomePulse{0%,100%{box-shadow:0 0 0 3px rgba(239,68,68,.12)}50%{box-shadow:0 0 0 7px rgba(239,68,68,0)}}

/* v5.6.3 — stronger mobile Election Live page */
@media(max-width:700px){
  .tgn-election-live-root{padding:12px 10px 46px!important;background:#f5f7f5}
  .tgn-election-centre{width:100%}
  .tgn-election-mast{padding:21px 17px!important;border-radius:11px;min-height:0}
  .tgn-election-live-badge{font-size:9px}
  .tgn-election-mast h1{font-size:30px!important;line-height:1.03!important;margin:11px 0 9px!important;letter-spacing:-.02em}
  .tgn-election-mast p{font-size:13px!important;line-height:1.5!important}
  .tgn-election-updated{margin-top:14px!important;padding-top:12px;border-top:1px solid rgba(255,255,255,.13);font-size:10px!important}.tgn-election-updated strong{font-size:12px!important}
  .tgn-election-progress-row{margin-top:10px!important;border-radius:10px 10px 0 0!important;gap:0}.tgn-election-progress-row>div{padding:12px 11px!important;min-height:76px}.tgn-election-progress-row>div:nth-child(2){border-right:0}.tgn-election-progress-row>div:nth-child(-n+2){border-bottom:1px solid var(--line)}.tgn-election-progress-row span{font-size:8px!important;line-height:1.25}.tgn-election-progress-row strong{font-size:20px!important}.tgn-election-progress-row small{font-size:10px!important}
  .tgn-election-progress{height:4px}
  .tgn-election-layout{gap:16px!important;margin-top:22px!important}
  .tgn-election-section-head{align-items:flex-start;margin-bottom:11px;padding-bottom:9px}.tgn-election-section-head span{font-size:8px}.tgn-election-section-head h2{font-size:20px!important;line-height:1.15}
  .tgn-election-candidates{gap:8px!important}
  .tgn-election-candidate{display:grid!important;grid-template-columns:27px 43px minmax(0,1fr) auto!important;grid-template-rows:auto auto!important;padding:11px!important;gap:7px 9px!important;border-radius:9px!important}
  .tgn-election-rank{font-size:14px!important}.tgn-election-avatar{width:40px!important;height:40px!important}.tgn-election-person{min-width:0}.tgn-election-person h3{font-size:13px!important;line-height:1.2;white-space:normal}.tgn-election-person p{font-size:9px!important}.tgn-election-votes{grid-column:4!important;grid-row:1!important;align-self:center}.tgn-election-votes strong{font-size:15px!important}.tgn-election-votes span{font-size:9px!important}.tgn-election-share{grid-column:2/5!important;display:grid;grid-template-columns:52px 1fr;align-items:center;gap:8px}.tgn-election-share>strong{font-size:13px!important}.tgn-election-share>div{margin:0!important}.tgn-election-leading{display:none!important}
  .tgn-election-declarations-head{margin-top:24px!important}.tgn-election-filter{margin-bottom:9px}.tgn-election-filter input{max-width:none;padding:10px 11px;font-size:13px}
  .tgn-election-table-wrap{border:0!important;overflow:visible!important}.tgn-election-table{min-width:0!important;background:transparent!important}.tgn-election-table thead{display:none}.tgn-election-table,.tgn-election-table tbody,.tgn-election-table tr,.tgn-election-table td{display:block;width:100%}.tgn-election-table tr{margin-bottom:9px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:8px 11px}.tgn-election-table td{display:grid!important;grid-template-columns:90px minmax(0,1fr);gap:8px;padding:5px 0!important;border:0!important;font-size:12px!important;line-height:1.35}.tgn-election-table td:before{content:attr(data-label);font-size:8px;letter-spacing:.08em;text-transform:uppercase;font-weight:900;color:#77827b}.tgn-election-table td:first-child strong{font-size:13px}.tgn-election-table td[colspan]{display:block!important}.tgn-election-table td[colspan]:before{display:none}
  .tgn-election-live-feed,.tgn-election-source-card{border-radius:10px!important}.tgn-election-feed-title{padding:13px 14px!important;font-size:9px!important}.tgn-election-live-feed article{grid-template-columns:38px 1fr!important;padding:13px 14px!important}.tgn-election-live-feed time{font-size:10px!important}.tgn-election-live-feed h3{font-size:13px!important}.tgn-election-live-feed p{font-size:11px!important}.tgn-election-source-card{padding:15px!important;margin-top:10px!important}
  .tgn-election-snapshot-root{padding:0 12px!important;margin:14px auto 20px!important}.tgn-home-election-head{padding:14px 15px!important;align-items:flex-start}.tgn-home-election-head h2{font-size:18px!important}.tgn-home-election-link{font-size:0!important;padding:8px!important}.tgn-home-election-link span{font-size:18px}.tgn-home-election-body{grid-template-columns:1fr!important}.tgn-home-election-stats{grid-template-columns:repeat(3,1fr)!important;border-right:0!important;border-bottom:1px solid #e4e9e6}.tgn-home-election-stats>div{padding:10px 8px!important;border-bottom:0!important;border-right:1px solid #e2e7e4;text-align:center}.tgn-home-election-stats>div:last-child{border-right:0}.tgn-home-election-stats span{font-size:7px!important}.tgn-home-election-stats strong{font-size:15px!important}.tgn-home-election-candidates{padding:4px 12px!important}.tgn-home-election-candidate{grid-template-columns:24px minmax(0,1fr) 96px!important;padding:9px 0!important;gap:8px!important}.tgn-home-election-name strong{font-size:12px!important}.tgn-home-election-votes strong{font-size:13px!important}.tgn-home-election-bar{grid-column:2/4!important}
}

/* v5.6.4 — two-candidate transparency + Zambia province leadership map */
.tgn-election-tracking-notice,.tgn-home-election-note{background:#fff8df;border:1px solid #ead28a;color:#55430b;font-size:12px;line-height:1.55}.tgn-election-tracking-notice{padding:11px 13px;border-radius:9px;margin:-4px 0 14px}.tgn-home-election-note{padding:10px 18px;border-width:1px 0 0}.tgn-election-share small{display:block;font-size:8px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:800;margin-top:1px}.tgn-election-map-card{margin-top:34px}.tgn-election-map-wrap{display:grid;grid-template-columns:minmax(280px,1fr) minmax(260px,.8fr);gap:24px;align-items:center;border:1px solid var(--line);border-radius:14px;padding:20px;background:linear-gradient(180deg,#f8faf9,#fff)}.tgn-election-map{display:block;width:100%;height:auto;max-height:500px}.tgn-election-country{fill:#eef3f0;stroke:#83978c;stroke-width:2.3;vector-effect:non-scaling-stroke}.tgn-election-map-point circle:first-child{stroke:#fff;stroke-width:3;filter:drop-shadow(0 3px 5px rgba(0,0,0,.18))}.tgn-election-map-point.no-result circle:first-child{fill:#9aa59f!important}.tgn-election-map-core{fill:#fff}.tgn-election-map-list{display:grid;grid-template-columns:1fr 1fr;gap:8px}.tgn-election-map-list>div{display:flex;gap:9px;align-items:flex-start;border-bottom:1px solid #edf0ee;padding:8px 0}.tgn-election-map-list i{display:block;flex:0 0 10px;width:10px;height:10px;border-radius:50%;margin-top:4px}.tgn-election-map-list span{min-width:0}.tgn-election-map-list strong{display:block;font-size:12px}.tgn-election-map-list small{display:block;margin-top:2px;color:var(--muted);font-size:10px;line-height:1.35}.tgn-election-map-note{margin:10px 0 0;color:var(--muted);font-size:10px;line-height:1.5}.tgn-election-candidate .tgn-election-share{grid-template-columns:auto 1fr}.tgn-election-candidate .tgn-election-share small{grid-column:1}.tgn-election-candidate .tgn-election-share>div{grid-column:1/-1}
@media(max-width:800px){.tgn-election-map-wrap{grid-template-columns:1fr}.tgn-election-map{max-height:390px}.tgn-election-map-list{grid-template-columns:1fr 1fr}.tgn-home-election-note{font-size:10px;padding:9px 12px}}
@media(max-width:520px){.tgn-election-map-card{margin-top:24px}.tgn-election-map-wrap{padding:12px;gap:12px}.tgn-election-map{max-height:300px}.tgn-election-map-list{grid-template-columns:1fr}.tgn-election-map-list>div{padding:6px 0}.tgn-election-map-note{font-size:9px}.tgn-election-tracking-notice{font-size:10px;padding:9px 10px}.tgn-election-share small{font-size:7px}}
