/* analytics — page-specific (shell + tokens come from p2-shell.css) */
.apage{max-width:var(--col); margin:0 auto; padding:26px 22px 64px}
/* footer spans the same wide column as .apage so its edges align with the content above */
.foot3{max-width:var(--col)}
.atitle{font-family:var(--disp); font-weight:400; font-size:var(--fs-num); margin:0}
.asub{color:var(--ink-2); font-size:var(--fs-small); max-width:72ch; margin:6px 0 0; line-height:1.7}
.astatus{color:var(--faint); font-size:var(--fs-meta); margin:12px 0 0; word-break:break-all}
.ansec{margin-top:30px}
.anh{font-size:var(--fs-meta); letter-spacing:.09em; text-transform:uppercase; color:var(--faint); border-bottom:1px solid var(--hair); padding-bottom:6px; margin-bottom:14px}
.antiles{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:1px; background:var(--hair); border:1px solid var(--hair)}
.antile{background:var(--paper); padding:14px 16px}
.anlabel{color:var(--faint); font-size:var(--fs-meta); letter-spacing:.06em; text-transform:uppercase}
.anval{font-size:var(--fs-lead); font-family:var(--disp); margin-top:6px; line-height:1.15; word-break:break-all}
.anballot{border:1px solid var(--hair); background:var(--panel); padding:14px 16px; margin-bottom:12px}
.anbq{font-size:var(--fs-body); margin-bottom:10px}
.anopt{display:grid; grid-template-columns:130px 1fr 54px; align-items:center; gap:10px; margin:6px 0}
.anoptname{color:var(--ink-2); font-size:var(--fs-small)}
.anbarwrap{background:var(--paper); border:1px solid var(--hair); height:12px; overflow:hidden}
.anbar{display:block; height:100%; width:0; background:var(--ink); transition:width .45s ease}
.anoptv{text-align:right; font-size:var(--fs-small); color:var(--ink-2)}
.anfoot{color:var(--faint); font-size:var(--fs-meta); margin-top:8px}
.ancharts{display:grid; grid-template-columns:1fr 1fr; gap:16px}
.anchartcard{border:1px solid var(--hair); background:var(--panel); padding:14px 16px}
.anchartcard .anlabel{display:flex; justify-content:space-between; align-items:center}
.illus{color:var(--dn); font-size:10px; letter-spacing:.08em; text-transform:uppercase; border:1px solid var(--dn); padding:1px 5px; border-radius:2px}
.anchart{margin-top:10px}
.annote{border:1px dashed var(--data-bd); background:var(--paper); padding:14px 16px; color:var(--ink-2); font-size:var(--fs-small); line-height:1.7}
.annote b{color:var(--ink)}
@media (max-width:640px){ .ancharts{grid-template-columns:1fr} .anopt{grid-template-columns:96px 1fr 48px} }
/* node status — public health badges (reads /status.json; mod-nodestatus.js) */
.nsgrid{display:grid; gap:1px; background:var(--hair); border:1px solid var(--hair)}
.nsrow{display:flex; align-items:center; justify-content:space-between; gap:12px; padding:13px 16px; background:var(--paper)}
.nsname{font-size:var(--fs-small); color:var(--ink-2)}
.nssub{color:var(--faint); font-size:var(--fs-meta); margin-left:7px}
.nsbadge{display:inline-flex; align-items:center; gap:8px; font-size:var(--fs-small); font-family:var(--disp); color:var(--ink); white-space:nowrap}
.nsdot{width:9px; height:9px; border-radius:50%; background:var(--faint); flex:none}
.nsdot.nsup{background:var(--ink)}
.nsdot.nsdn{background:var(--dn)}
@media (max-width:640px){ .nsrow{flex-direction:column; align-items:flex-start; gap:6px} }

/* utilities: former inline style= attributes (CSP style-src is now self) */
.ub9199e{font-size:20px}
.ud2c171{margin-top:10px}

/* safety meter section — MainNet only; JS reveals it when network === MainNet */
.mnet-only{display:none}
/* trust meters — decentralization (live one-way doors) + safety (added separately) */
.mtwrap{display:grid; grid-template-columns:1fr 1fr; gap:16px}
.mtcard{border:1px solid var(--hair); background:var(--panel); padding:16px 18px}
.mthead{display:flex; align-items:baseline; justify-content:space-between; gap:12px}
.mtname{font-size:var(--fs-small); letter-spacing:.06em; text-transform:uppercase; color:var(--ink-2)}
.mtpct{font-family:var(--disp); font-size:var(--fs-lead); color:var(--ink); line-height:1}
.mtden{font-size:var(--fs-small); color:var(--faint); margin-left:2px}
.mtgauge{margin-top:12px; height:10px; background:var(--paper); border:1px solid var(--hair); overflow:hidden}
.mtgfill{display:block; height:100%; width:0; background:var(--ink); transition:width .5s ease}
.mtsub{color:var(--faint); font-size:var(--fs-meta); margin-top:8px; letter-spacing:.03em}
.mtrows{margin-top:12px; display:grid; gap:1px; background:var(--hair); border:1px solid var(--hair)}
.mtdoor{display:flex; align-items:center; justify-content:space-between; gap:10px; padding:9px 12px; background:var(--paper)}
.mtdname{font-size:var(--fs-small); color:var(--ink-2)}
.mtdw{color:var(--faint); font-size:var(--fs-meta); margin-left:7px}
.mtdstate{display:inline-flex; align-items:center; gap:7px; font-size:var(--fs-meta); font-family:var(--disp); white-space:nowrap; color:var(--faint)}
.mtdstate.mtok{color:var(--ink)}
.mtdot{width:8px; height:8px; border-radius:50%; background:var(--faint); flex:none}
.mtdot.mtok{background:var(--ink)}
.mtdot.mtunk{background:var(--dn)}
.mtdim{display:grid; grid-template-columns:1fr 90px 42px; align-items:center; gap:10px; padding:8px 12px; background:var(--paper)}
.mtdlabel{font-size:var(--fs-small); color:var(--ink-2)}
.mtdbar{background:var(--paper); border:1px solid var(--hair); height:9px; overflow:hidden}
.mtdbarfill{display:block; height:100%; width:0; background:var(--ink-2); transition:width .5s ease}
.mtdscore{text-align:right; font-size:var(--fs-meta); color:var(--faint); font-family:var(--disp)}
.mtnote{color:var(--ink-2); font-size:var(--fs-meta); line-height:1.7; margin:12px 0 0}
.mtnote b{color:var(--ink)}
@media (max-width:760px){ .mtwrap{grid-template-columns:1fr} }
@media (max-width:640px){ .mtdim{grid-template-columns:1fr 60px 38px} }
