/* ═══════════════════════════════════════════════════════════════
   POSOGNOS design system
   Direction: "Standard Bearer, quieted."
   Red is the primary; navy is the ground. Federal design does the
   opposite, and inverting the hierarchy is what keeps this out of
   the .gov register. No USWDS tokens, no Public Sans, no circular
   seal, no heraldry.
   Light-only by deliberate choice: every accreditation and
   safety body in this category publishes on paper, and a record
   should look like a record. color-scheme is pinned so form
   controls stay light for dark-OS viewers too.
   Data colours validated for CVD against the page surface.
   ═══════════════════════════════════════════════════════════════ */
/* Theme: Posognos teal, light.
   Their hue moved onto paper and deepened for contrast. Reads as the
   accreditation register rather than the product screen, while keeping
   the colour their existing audience already associates with them.
   Chart colours validated all-pairs on the #F7F8F7 surface. */
:root{
  color-scheme: light;
  --paper:#F7F8F7; --card:#FFFFFF; --well:#EDEFEE; --sunk:#E1E5E3;
  --ink:#12211F; --ink-2:#46524F; --ink-3:#7A8683;
  --rule:#DCE0DE; --rule-2:#C2C8C5; --rule-3:#A3ABA8;
  --accent:#00695E; --accent-ink:#005A50; --accent-wash:#E1EFEC;
  --alarm:#B3122B; --alarm-ink:#9C1026; --alarm-wash:#F8E9EB;
  --navy:#12211F; --navy-2:#00695E; --navy-wash:#E1EFEC;
  --ok:#1B6042; --ok-wash:#E3EFE9;
  --viz-surface:#F7F8F7; --viz-data:#008C7A; --viz-emph:#B3122B;
  --viz-grid:#E3E6E4; --viz-axis:#C2C8C5; --viz-muted:#7A8683;
  --banner:#12211F; --banner-ink:#DCE6E3; --on-accent:#FFFFFF;
  --measure:66ch;
  --pad:clamp(1rem,3.5vw,2.25rem);
}


*,*::before,*::after{box-sizing:border-box;}
body{margin:0;background:var(--paper);color:var(--ink);
  font-family:"IBM Plex Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:16.5px;line-height:1.62;-webkit-font-smoothing:antialiased;}
.wrap{max-width:1160px;margin:0 auto;padding:0 var(--pad);}
h1,h2,h3{font-family:Newsreader,Georgia,serif;font-weight:600;letter-spacing:-.012em;text-wrap:balance;margin:0;}
p{margin:0 0 1rem;max-width:var(--measure);}
a{color:var(--accent-ink);text-underline-offset:2px;}
.mono{font-family:"IBM Plex Mono",ui-monospace,monospace;}
.tnum{font-variant-numeric:tabular-nums;}
.lab{font-family:"IBM Plex Mono",monospace;font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-weight:500;}
.lab-q{color:var(--ink-3);}
img,svg{max-width:100%;}

/* concept strip */
.concept{background:var(--banner);color:var(--banner-ink);font-family:"IBM Plex Mono",monospace;font-size:.71rem;padding:.5rem 0;line-height:1.5;}
.concept b{color:var(--accent-ink);}

/* theme switcher strip. Markup is injected by build.py into site builds only,
   so artifact exports never carry it. --switch-h is set in the site head;
   without it the sticky nav sits at the top, which is what artifacts need. */
.switch{position:sticky;top:0;z-index:70;height:34px;display:flex;align-items:center;
  background:var(--well);border-bottom:1px solid var(--rule-2);
  font-family:"IBM Plex Mono",monospace;font-size:.68rem;letter-spacing:.05em;white-space:nowrap;}
.switch .wrap{display:flex;gap:1.1rem;align-items:center;width:100%;overflow-x:auto;}
.switch .sw-l{color:var(--ink-3);text-transform:uppercase;letter-spacing:.12em;flex:none;}
.switch a{color:var(--ink-2);text-decoration:none;flex:none;}
.switch a:hover{color:var(--accent-ink);}
.switch a[aria-current="true"]{color:var(--ink);font-weight:600;box-shadow:inset 0 -2px 0 var(--accent);padding-bottom:1px;}
@media print{.switch{display:none;}}

/* nav */
.nav{position:sticky;top:var(--switch-h,0px);z-index:60;background:var(--paper);border-bottom:1px solid var(--rule-2);}
.nav-in{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.65rem 0;}
.brand{display:flex;align-items:center;gap:.6rem;text-decoration:none;color:var(--ink);}
.bmark{width:32px;height:38px;flex:none;color:var(--ink);}
.brand .nm{font-family:Newsreader,Georgia,serif;font-weight:700;font-size:1.14rem;line-height:1.05;letter-spacing:-.015em;display:block;}
@media(max-width:520px){.brand .say{display:none;}}
.brand .say{font-family:"IBM Plex Mono",monospace;font-size:.66rem;color:var(--ink-3);font-weight:400;letter-spacing:0;margin-left:.4rem;white-space:nowrap;}
.brand .desc{font-family:"IBM Plex Mono",monospace;font-size:.585rem;letter-spacing:.085em;text-transform:uppercase;color:var(--ink-3);display:block;margin-top:.1rem;}
.nav ul{display:flex;gap:1.3rem;list-style:none;margin:0;padding:0;align-items:center;}
.nav ul a{color:var(--ink-2);text-decoration:none;font-size:.87rem;font-weight:500;}
.nav ul a:hover{color:var(--accent-ink);}
.nav ul a[aria-current="page"]{color:var(--ink);border-bottom:2px solid var(--accent);padding-bottom:2px;}
.navtoggle{display:none;}
@media(max-width:880px){
  .nav ul{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;background:var(--paper);border-bottom:1px solid var(--rule-2);padding:.3rem 0;box-shadow:0 8px 20px -12px rgba(16,27,51,.3);}
  .nav ul a{display:block;padding:.75rem var(--pad);}
  .nav ul a[aria-current="page"]{border-bottom:none;border-left:3px solid var(--accent);}
  .nav.open ul{display:flex;}
  .navtoggle{display:grid;place-items:center;width:42px;height:42px;background:none;border:1px solid var(--rule-2);border-radius:3px;color:var(--ink);cursor:pointer;font-size:1.05rem;}
}

/* hero with a right-column artifact */
.hero-grid{display:grid;gap:2.6rem;align-items:start;}
@media(min-width:960px){.hero-grid{grid-template-columns:1fr 400px;}}
.lin{font-size:.85rem;color:var(--ink-2);border-left:3px solid var(--accent);padding-left:.95rem;max-width:56ch;margin:1.3rem 0 0;line-height:1.55;}
.doorline{font-size:.86rem;color:var(--ink-2);margin:1.15rem 0 0;max-width:56ch;}

/* specimen report card */
.spec{position:relative;background:var(--card);border:1px solid var(--rule-2);
  box-shadow:0 1px 0 var(--rule),0 18px 44px -30px rgba(16,27,51,.55);
  padding:1.05rem 1.15rem .9rem;}
.spec::before{content:'';position:absolute;inset:12px -10px -10px 12px;background:var(--well);border:1px solid var(--rule);z-index:-1;}
.sph{display:flex;justify-content:space-between;gap:.7rem;align-items:baseline;border-bottom:2px solid var(--ink);padding-bottom:.45rem;margin-bottom:.8rem;}
.sph .t{font-family:Newsreader,Georgia,serif;font-weight:700;font-size:.98rem;}
.sph .m{font-family:"IBM Plex Mono",monospace;font-size:.58rem;color:var(--ink-3);letter-spacing:.05em;text-align:right;line-height:1.5;}
.sprow{display:grid;grid-template-columns:88px 1fr;gap:.95rem;align-items:center;margin-bottom:.75rem;}
.spec .kpis{display:grid;grid-template-columns:1fr 1fr;gap:.3rem .8rem;font-size:.7rem;color:var(--ink-2);}
.spec .kpis span{line-height:1.35;}
.spec .kpis b{font-family:"IBM Plex Mono",monospace;font-size:.94rem;font-weight:600;display:block;color:var(--ink);}
.spec .kpis .flag b{color:var(--alarm);}
.spec .kpis .ok b{color:var(--ok);}
.spec .dlab{font-family:"IBM Plex Mono",monospace;font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin:.35rem 0 .1rem;}
.spec .dist{margin:.15rem 0 .1rem;}
.spec .dist .drow{font-size:.7rem;}
.spec .catrow{padding:.26rem 0;font-size:.72rem;grid-template-columns:minmax(88px,1fr) minmax(60px,150px) 48px;gap:.7rem;}
.spec .catrow .cv{font-size:.68rem;}
.spf{font-family:"IBM Plex Mono",monospace;font-size:.62rem;color:var(--ink-3);margin-top:.55rem;padding-top:.15rem;white-space:nowrap;}

/* instrument chips */
.chips{margin-top:1.15rem;}
.chips .cl{font-family:"IBM Plex Mono",monospace;font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-bottom:.45rem;}
.chips ul{list-style:none;margin:0;padding:0;display:grid;gap:.4rem;}
.chips li{font-family:"IBM Plex Mono",monospace;font-size:.66rem;border:1px solid var(--rule-3);padding:.3em .6em;color:var(--ink-2);background:var(--card);white-space:nowrap;display:flex;justify-content:space-between;gap:1rem;}
.chips li b{color:var(--ink);font-weight:600;}
.chips li .d{color:var(--ink-3);}

/* grade distribution strip */
.dist{display:grid;gap:.3rem;margin-top:1rem;text-align:left;}
.dist .drow{display:grid;grid-template-columns:16px 1fr 26px;gap:.6rem;align-items:center;font-family:"IBM Plex Mono",monospace;font-size:.72rem;color:var(--ink-2);}
.dist .db{height:9px;background:var(--sunk);}
.dist .db i{display:block;height:100%;background:var(--viz-data);}
.dist .drow.gA .db i{background:var(--ok);}
.dist .drow.gF .db i{background:var(--alarm);}

/* compact verify card (registry hero) */
.verify.small{padding:.95rem 1.05rem;}
.verify.small .vrow{font-size:.72rem;padding:.34rem 0;grid-template-columns:112px 1fr;}

/* collapsible sources */
details.notesbox summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:.5rem;
  font-family:"IBM Plex Mono",monospace;font-size:.74rem;letter-spacing:.05em;color:var(--accent-ink);
  border:1px solid var(--rule-2);background:var(--card);padding:.5rem .85rem;user-select:none;}
details.notesbox summary::-webkit-details-marker{display:none;}
details.notesbox summary::before{content:'+';font-weight:600;}
details.notesbox[open] summary::before{content:'\2212';}
details.notesbox[open] summary{margin-bottom:.9rem;}
details.notesbox summary:hover{border-color:var(--rule-3);}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.62rem 1.1rem;border-radius:2px;
  font-size:.88rem;font-weight:600;text-decoration:none;border:1px solid var(--accent);font-family:"IBM Plex Sans",sans-serif;}
.btn-p{background:var(--accent);color:var(--on-accent);}
.btn-s{background:transparent;color:var(--accent-ink);}
.btn:hover{filter:brightness(1.07);}
.btnrow{display:flex;flex-wrap:wrap;gap:.65rem;}

/* hero */
.hero{padding:3.2rem 0 2.4rem;border-bottom:2px solid var(--ink);}
.hero h1{font-size:clamp(2.05rem,4.8vw,3.35rem);line-height:1.05;max-width:17ch;margin-top:.7rem;}
.hero .dek{font-size:clamp(1.02rem,1.85vw,1.18rem);color:var(--ink-2);margin-top:1.15rem;max-width:58ch;}
.hero .btnrow{margin-top:1.7rem;}

/* sections */
section{padding:3.1rem 0;border-bottom:1px solid var(--rule);}
.shead{margin-bottom:1.6rem;}
.shead h2{font-size:clamp(1.42rem,2.9vw,2rem);margin:.3rem 0 0;max-width:27ch;}
.shead p{margin:.75rem 0 0;color:var(--ink-2);}

/* KPI comparison */
.kpi{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule-2);}
.kpi-h{background:var(--navy);display:grid;gap:1px;font-family:"IBM Plex Mono",monospace;font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--banner-ink);}
.kpi-r{display:grid;gap:1px;background:var(--rule);}
@media(min-width:740px){.kpi-h,.kpi-r{grid-template-columns:1.35fr 1fr 1fr;}}
.kpi-c{background:var(--card);padding:.85rem 1.05rem;}
.kpi-h .kpi-c{background:var(--navy);color:var(--banner-ink);}
.kpi-c .k{font-size:.92rem;font-weight:600;}
.kpi-c .sub{font-size:.78rem;color:var(--ink-3);display:block;margin-top:.2rem;line-height:1.45;}
.kpi-c .v{font-family:"IBM Plex Mono",monospace;font-size:1rem;font-variant-numeric:tabular-nums;font-weight:500;}
.kpi-c.now{background:var(--well);}
.kpi-c.now .v{color:var(--alarm);}
.kpi-c.next{background:var(--navy-wash);}
.kpi-c.next .v{color:var(--navy-2);font-weight:600;}
@media(max-width:739px){
  .kpi-h{display:none;}
  .kpi-c.now::before{content:'Today, ';font-family:"IBM Plex Mono",monospace;font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);display:block;}
  .kpi-c.next::before{content:'With continuous testing, ';font-family:"IBM Plex Mono",monospace;font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);display:block;}
}

/* stat strip */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(158px,1fr));gap:1px;background:var(--rule);border:1px solid var(--rule-2);}
.stat{background:var(--card);padding:1.05rem 1.1rem;}
.stat .n{font-family:"IBM Plex Mono",monospace;font-size:1.52rem;font-weight:600;letter-spacing:-.02em;display:block;line-height:1.08;font-variant-numeric:tabular-nums;}
.stat .l{font-size:.79rem;color:var(--ink-2);display:block;margin-top:.4rem;line-height:1.45;}
.stat .s{font-family:"IBM Plex Mono",monospace;font-size:.63rem;color:var(--ink-3);display:block;margin-top:.5rem;}
.stat.alarm .n{color:var(--alarm);}
.stat.good .n{color:var(--ok);}
.stat.data .n{color:var(--navy-2);}

/* cards */
.cols{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule-2);}
@media(min-width:820px){.cols-3{grid-template-columns:repeat(3,1fr);} .cols-2{grid-template-columns:1fr 1fr;} .cols-4{grid-template-columns:repeat(4,1fr);}}
.col{background:var(--card);padding:1.25rem 1.3rem;}
.col h3{font-size:1.02rem;margin:.4rem 0 .5rem;}
.col p{font-size:.9rem;color:var(--ink-2);margin:0;max-width:none;}
.col .n{font-family:"IBM Plex Mono",monospace;font-size:.67rem;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);}
.col .dur{font-family:"IBM Plex Mono",monospace;font-size:.7rem;color:var(--ink-3);display:block;margin-top:.75rem;}

/* callout */
.callout{border-left:3px solid var(--navy-2);background:var(--well);padding:1.15rem 1.3rem;margin:1.6rem 0;}
.callout.q{border-left-color:var(--navy-2);background:var(--navy-wash);}
.callout.warn{border-left-color:var(--alarm);background:var(--alarm-wash);}
.callout p{margin:0;max-width:72ch;font-size:.95rem;}
.callout p+p{margin-top:.75rem;}
.pull{font-family:Newsreader,Georgia,serif;font-size:clamp(1.18rem,2.5vw,1.55rem);line-height:1.34;
  border-left:3px solid var(--accent);padding:.2rem 0 .2rem 1.3rem;margin:2rem 0;max-width:42ch;font-weight:500;}

/* figure */
.figwrap{border:1px solid var(--rule-2);background:var(--card);padding:1.15rem 1.15rem .7rem;}
.figtitle{font-size:.96rem;font-weight:700;margin:0 0 .2rem;font-family:"IBM Plex Sans",sans-serif;}
.figsub{font-size:.83rem;color:var(--ink-2);margin:0 0 1rem;max-width:72ch;}
.chart{width:100%;display:block;overflow:visible;}
.chartbox{position:relative;}
figcaption{font-size:.78rem;color:var(--ink-3);line-height:1.55;margin-top:.8rem;padding-top:.75rem;border-top:1px solid var(--rule);max-width:80ch;}
.legend{display:flex;flex-wrap:wrap;gap:.4rem 1.2rem;font-size:.78rem;color:var(--ink-2);margin-bottom:.85rem;}
.legend span{display:inline-flex;align-items:center;gap:.4rem;}
.swatch{width:10px;height:10px;border-radius:50%;flex:none;}
.tip{position:absolute;pointer-events:none;opacity:0;transition:opacity .12s;background:var(--ink);color:var(--paper);
  padding:.5rem .62rem;border-radius:3px;font-size:.75rem;line-height:1.45;font-family:"IBM Plex Mono",monospace;white-space:nowrap;z-index:20;}

/* tables */
.tscroll{overflow-x:auto;border:1px solid var(--rule-2);background:var(--card);}
table{border-collapse:collapse;width:100%;font-size:.83rem;min-width:860px;}
th,td{padding:.5rem .72rem;text-align:left;border-bottom:1px solid var(--rule);white-space:nowrap;}
thead th{position:sticky;top:0;background:var(--navy);font-family:"IBM Plex Mono",monospace;font-size:.65rem;letter-spacing:.08em;
  text-transform:uppercase;color:var(--banner-ink);font-weight:500;border-bottom:none;cursor:pointer;user-select:none;}
thead th:hover{color:var(--paper);}
thead th[aria-sort]{color:var(--paper);box-shadow:inset 0 -2px 0 var(--accent);}
td.n{text-align:right;font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums;}
tbody tr:hover{background:var(--well);}
.gtag{display:inline-grid;place-items:center;width:24px;height:24px;font-family:Newsreader,serif;font-weight:700;font-size:.95rem;
  border:1.5px solid var(--ink);color:var(--ink);}
.gtag.gA{border-color:var(--ok);color:var(--ok);}
.gtag.gF{border-color:var(--alarm);color:var(--alarm);}
.controls{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin-bottom:.9rem;}
.controls label{font-family:"IBM Plex Mono",monospace;font-size:.72rem;letter-spacing:.05em;color:var(--ink-3);text-transform:uppercase;}
select,input[type=search],input[type=number]{font:inherit;font-size:.86rem;padding:.42rem .6rem;border:1px solid var(--rule-2);border-radius:2px;background:var(--card);color:var(--ink);}
input[type=search]{min-width:190px;}

/* bands */
.bands{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule-2);}
.band{background:var(--card);display:grid;gap:1rem;padding:1.2rem 1.3rem;align-items:center;}
@media(min-width:760px){.band{grid-template-columns:74px 1fr 128px;}}
.gl{font-family:Newsreader,Georgia,serif;font-weight:700;font-size:2.6rem;line-height:1;text-align:center;}
.band.top .gl{color:var(--ok);} .band.fail .gl{color:var(--alarm);} .band.fail{background:var(--alarm-wash);}
.band .crit{font-family:"IBM Plex Mono",monospace;font-size:.75rem;color:var(--ink-2);line-height:1.6;}
.band .t{font-weight:700;font-size:1rem;display:block;margin-bottom:.25rem;}
.band .cnt{text-align:left;}
@media(min-width:760px){.band .cnt{text-align:right;}}
.band .cnt b{font-family:"IBM Plex Mono",monospace;font-size:1.5rem;font-weight:600;display:block;line-height:1.1;font-variant-numeric:tabular-nums;}
.band .cnt span{font-size:.72rem;color:var(--ink-3);}
.bandmodels{font-family:"IBM Plex Mono",monospace;font-size:.71rem;color:var(--ink-3);margin-top:.5rem;line-height:1.7;}

/* is / is-not */
.two{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule-2);}
@media(min-width:820px){.two{grid-template-columns:1fr 1fr;}}
.two>div{background:var(--card);padding:1.4rem 1.5rem;}
.two h3{font-size:1.02rem;margin-bottom:.85rem;}
.two ul{list-style:none;margin:0;padding:0;}
.two li{padding:.44rem 0 .44rem 1.55rem;position:relative;font-size:.91rem;color:var(--ink-2);border-bottom:1px solid var(--rule);}
.two li:last-child{border-bottom:none;}
.two li::before{position:absolute;left:0;top:.44rem;font-family:"IBM Plex Mono",monospace;font-weight:600;}
.is li::before{content:'✓';color:var(--ok);}
.isnot{background:var(--alarm-wash)!important;}
.isnot li::before{content:'✕';color:var(--alarm);}

/* terms */
.terms{counter-reset:t;}
.term{display:grid;gap:.2rem .95rem;padding:.9rem 0;border-bottom:1px solid var(--rule);max-width:82ch;}
@media(min-width:680px){.term{grid-template-columns:30px 1fr;}}
.term::before{counter-increment:t;content:counter(t,decimal-leading-zero);font-family:"IBM Plex Mono",monospace;font-size:.74rem;color:var(--accent);padding-top:.22rem;}
.term b{display:block;font-size:.94rem;margin-bottom:.15rem;}
.term p{margin:0;font-size:.89rem;color:var(--ink-2);max-width:none;}

/* verify record */
.verify{border:1px solid var(--rule-2);background:var(--card);padding:1.3rem 1.4rem;}
.vrow{font-family:"IBM Plex Mono",monospace;font-size:.81rem;display:grid;gap:.25rem .9rem;padding:.5rem 0;border-bottom:1px solid var(--rule);}
@media(min-width:620px){.vrow{grid-template-columns:158px 1fr;}}
.vrow:last-child{border-bottom:none;}
.vrow span{color:var(--ink-3);}
.vrow b{font-weight:500;word-break:break-word;}

/* seal */
.sealcard{border:1px solid var(--rule-2);background:var(--card);padding:1.4rem;text-align:center;}
.sealcard .cap{font-size:.78rem;color:var(--ink-3);margin:1rem 0 0;max-width:none;}
.sizes{display:flex;flex-wrap:wrap;gap:1.7rem;align-items:flex-end;padding:1.4rem;border:1px solid var(--rule-2);background:var(--card);}
.size-i{text-align:center;}
.size-i .n{font-family:"IBM Plex Mono",monospace;font-size:.63rem;color:var(--ink-3);display:block;margin-top:.5rem;letter-spacing:.05em;}

ol.notes{font-size:.82rem;color:var(--ink-2);padding-left:1.4rem;max-width:84ch;}
ol.notes li{margin-bottom:.5rem;}

/* nav CTA */
.nav ul a.navcta{border:1px solid var(--accent);color:var(--accent-ink);padding:.4rem .75rem;border-radius:2px;font-weight:600;}
.nav ul a.navcta:hover{background:var(--accent);color:var(--on-accent);}
@media(max-width:880px){.nav ul a.navcta{border:none;padding:.75rem var(--pad);border-radius:0;}}

/* pre-footer CTA band */
.ctaband{border-top:2px solid var(--ink);background:var(--banner);color:var(--banner-ink);padding:2.5rem 0;}
.ctaband .wrap{display:grid;gap:1.4rem;align-items:center;}
@media(min-width:860px){.ctaband .wrap{grid-template-columns:1fr auto;}}
.ctaband h2{font-size:clamp(1.25rem,2.5vw,1.65rem);color:var(--banner-ink);}
.ctaband p{margin:.55rem 0 0;font-size:.9rem;color:var(--banner-ink);max-width:58ch;}
.ctaband .btn-s{color:var(--banner-ink);border-color:var(--banner-ink);}
@media print{.ctaband{display:none;}}

/* footer */
footer{border-top:2px solid var(--ink);background:var(--well);padding:2.4rem 0 3rem;}
.fgrid{display:grid;gap:1.7rem;}
@media(min-width:760px){.fgrid{grid-template-columns:2.2fr 1fr 1fr 1fr;}}
footer h4{font-family:"IBM Plex Mono",monospace;font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin:0 0 .6rem;}
footer a{display:block;color:var(--ink-2);text-decoration:none;font-size:.85rem;padding:.17rem 0;}
footer a:hover{color:var(--accent-ink);}
.fbot{border-top:1px solid var(--rule-2);margin-top:1.8rem;padding-top:1.05rem;font-family:"IBM Plex Mono",monospace;font-size:.68rem;color:var(--ink-3);display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;justify-content:space-between;}

/* anchor jumps must clear the sticky switcher + nav stack */
[id]{scroll-margin-top:calc(var(--switch-h,0px) + 82px);}

:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth;}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;}}

/* ── rating mark (grading page + registry) ───────────────── */
.markcard{border:1px solid var(--rule-2);background:var(--card);padding:1.4rem;text-align:center;}
.markcard .cap{font-size:.78rem;color:var(--ink-3);margin:1rem 0 0;max-width:none;}

/* ── sample report ───────────────────────────────────────── */
.report{border:1px solid var(--rule-2);background:var(--card);box-shadow:0 1px 0 var(--rule),0 14px 40px -28px rgba(16,27,51,.5);}
.report-h{background:var(--navy);color:var(--banner-ink);padding:1.1rem 1.4rem;display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;justify-content:space-between;align-items:baseline;}
.report-h .t{font-family:Newsreader,Georgia,serif;font-size:1.15rem;font-weight:600;}
.report-h .m{font-family:"IBM Plex Mono",monospace;font-size:.68rem;color:var(--ink-3);letter-spacing:.06em;}
.report-b{padding:1.3rem 1.4rem;}
.report-grid{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule);margin-bottom:1.2rem;}
@media(min-width:700px){.report-grid{grid-template-columns:repeat(4,1fr);}}
.report-cell{background:var(--card);padding:.85rem .95rem;}
.report-cell .v{font-family:"IBM Plex Mono",monospace;font-size:1.3rem;font-weight:600;display:block;line-height:1.1;font-variant-numeric:tabular-nums;}
.report-cell .k{font-size:.72rem;color:var(--ink-3);display:block;margin-top:.3rem;line-height:1.4;}
.report-cell.flag .v{color:var(--alarm);}
.report-cell.ok .v{color:var(--ok);}
.catrow{display:grid;grid-template-columns:minmax(120px,1fr) minmax(90px,260px) 66px;gap:.9rem;align-items:center;padding:.38rem 0;font-size:.82rem;border-bottom:1px solid var(--rule);}
.catrow:last-child{border-bottom:none;}
.catrow .cn{color:var(--ink-2);}
.catrow .tr{height:10px;background:var(--sunk);border-radius:1px;overflow:hidden;}
.catrow .tr i{display:block;height:100%;background:var(--viz-data);}
.catrow.low .tr i{background:var(--alarm);}
.catrow .cv{text-align:right;font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums;font-size:.78rem;}
.report-f{border-top:1px solid var(--rule);padding:.9rem 1.4rem;font-family:"IBM Plex Mono",monospace;font-size:.68rem;color:var(--ink-3);display:flex;flex-wrap:wrap;gap:.4rem 1.4rem;justify-content:space-between;}

/* ── registry ────────────────────────────────────────────── */
.reg-search{display:grid;gap:.7rem;margin-bottom:1.2rem;}
@media(min-width:700px){.reg-search{grid-template-columns:1fr 190px 190px;}}
.reg-list{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule-2);}
.reg-item{background:var(--card);padding:1.05rem 1.2rem;display:grid;gap:.9rem;align-items:center;}
@media(min-width:720px){.reg-item{grid-template-columns:56px 1fr 190px 150px;}}
.reg-g{display:grid;place-items:center;width:48px;height:56px;border:2px solid var(--ink);font-family:Newsreader,Georgia,serif;font-weight:700;font-size:1.85rem;line-height:1;color:var(--ink);position:relative;}
.reg-g::after{content:'';position:absolute;left:6px;right:6px;top:9px;height:2px;background:var(--accent);}
.reg-g.gA{border-color:var(--ok);color:var(--ok);}
.reg-g.gF{border-color:var(--alarm);color:var(--alarm);}
.reg-item .nm2{font-weight:600;font-size:1rem;}
.reg-item .pv2{font-size:.82rem;color:var(--ink-3);}
.reg-item .meta{font-family:"IBM Plex Mono",monospace;font-size:.71rem;color:var(--ink-3);line-height:1.7;}
.reg-item .vid{font-family:"IBM Plex Mono",monospace;font-size:.71rem;color:var(--ink-2);}
.cls{display:inline-block;font-family:"IBM Plex Mono",monospace;font-size:.62rem;letter-spacing:.08em;padding:.12em .45em;border:1px solid var(--rule-3);color:var(--ink-2);}
.cls.cfg{border-color:var(--navy-2);color:var(--navy-2);}
