/* Fonts served from this origin: no second domain, no render-blocking request
   to fonts.googleapis.com before the first paint. */
@font-face{font-family:Manrope;font-style:normal;font-weight:400 800;font-display:swap;
  src:url(/assets/fonts/manrope400800latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Manrope;font-style:normal;font-weight:400 800;font-display:swap;
  src:url(/assets/fonts/manrope400800latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;
  src:url(/assets/fonts/ibmplexmono500latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;
  src:url(/assets/fonts/ibmplexmono500latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;
  src:url(/assets/fonts/ibmplexmono600latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;
  src:url(/assets/fonts/ibmplexmono600latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

/* Same-origin navigations cross-fade instead of flashing white. Browsers that do
   not support it simply navigate as before. */
@view-transition{navigation:auto}
/* The system is the mark: a bright arc sweeping over a coral dot, on navy, in a
   softly rounded square. Navy is the ground, the arc blue carries everything
   active, the dot red marks the one thing that matters on a screen, and the arc
   itself recurs — in the scan, in the scores, between sections. */
:root{
  --navy:#002449;--navy-2:#06325F;--navy-3:#0B3E72;--ink:#0A1A2E;
  --paper:#F4F7FB;--paper-2:#E7EEF6;--white:#fff;
  --text:#0A1A2E;--soft:#4A6076;--faint:#7D93A8;
  --line:#DBE5EF;--line-d:rgba(255,255,255,.14);
  --arc:#00B3FA;--arc-d:#0090D6;--arc-l:#6FD9FF;
  --dot:#E93D58;--dot-l:#FF7E90;--good:#12C08A;
  --r:12px;--r-lg:18px;--r-sm:8px;
  --f:'Manrope',system-ui,-apple-system,sans-serif;--d:'Manrope',system-ui,sans-serif;
  --m:'IBM Plex Mono',ui-monospace,Menlo,monospace;
  --gut:clamp(20px,4vw,52px);--max:1320px;
  --sh:0 1px 2px rgba(10,26,46,.05),0 10px 26px -10px rgba(10,26,46,.16);
  --sh-2:0 2px 6px rgba(10,26,46,.06),0 26px 60px -18px rgba(10,26,46,.26);
}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;background:var(--navy)}
body{margin:0;font-family:var(--f);font-size:17px;line-height:1.55;color:var(--text);background:var(--paper);overflow-x:hidden;-webkit-font-smoothing:antialiased}
h1,h2,h3{margin:0;scroll-margin-top:110px;font-family:var(--d);font-weight:600;letter-spacing:-.032em;line-height:1.08;text-wrap:balance;color:inherit}
h1{font-size:clamp(40px,5.4vw,76px);letter-spacing:-.038em}
h2{font-size:clamp(30px,3.6vw,50px)}
h3{font-size:20px;letter-spacing:-.022em;line-height:1.3}
.h-sm{font-size:clamp(24px,2.6vw,34px)}
p{margin:0}
a{color:inherit;text-underline-offset:3px}
img{max-width:100%;height:auto;display:block}
.in{max-width:var(--max);margin:0 auto;padding-inline:var(--gut)}
.skip{position:absolute;left:-9999px;background:#fff;padding:12px 18px;z-index:99}
.skip:focus{left:12px;top:12px}
:focus-visible{outline:2px solid var(--arc);outline-offset:3px;border-radius:4px}

/* the arc, as a reusable mark: a sweep over a point */
.arcmark{display:block;width:100%;height:auto}
.arcmark .sweep{fill:none;stroke:var(--arc);stroke-linecap:round}
.arcmark .pt{fill:var(--dot)}

.kick{display:block;font-family:var(--m);font-size:11.5px;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:var(--arc-d);margin-bottom:20px}
.dark .kick,.hero .kick,.closer .kick{color:var(--arc-l)}
.lede{font-size:clamp(17px,1.5vw,20px);line-height:1.6;color:var(--soft);max-width:58ch;margin-top:22px}
.hero .lede,.dark .lede,.closer .lede{color:rgba(255,255,255,.72)}
.mini{font-size:13.5px;line-height:1.6;color:var(--faint);margin-top:28px;max-width:76ch}
.mini a{color:var(--arc-d)}
.more{margin-top:32px;font-size:16px;font-weight:600}
.more a{color:var(--arc-d);text-decoration:none}
.more a:hover{text-decoration:underline}

/* ---------- header ---------- */
.wire{background:var(--arc);color:#00243D;text-align:center;font-size:13.5px;font-weight:600;padding:11px var(--gut);position:relative;z-index:70}
.wire a{text-decoration:underline;text-underline-offset:3px}
.top{position:sticky;top:0;z-index:60;background:rgba(0,36,73,.9);backdrop-filter:blur(16px);border-bottom:1px solid var(--line-d)}
.top .in{display:flex;align-items:center;gap:16px;min-height:70px;max-width:var(--max)}
.brand{display:inline-flex;align-items:center;gap:11px;font-family:var(--d);font-weight:700;font-size:18.5px;letter-spacing:-.03em;color:#fff;text-decoration:none}
.brand img{border-radius:9px}
.burger{display:none;margin-left:auto;width:42px;height:42px;border:0;background:none;cursor:pointer;flex-direction:column;justify-content:center;gap:5px}
.burger span{display:block;height:2px;background:#fff;border-radius:2px}
.top nav{margin-left:auto;display:flex;align-items:center;gap:2px}
.nav-i{position:relative}
.nav-i>button{display:inline-flex;align-items:center;gap:7px;font:inherit;font-size:15px;font-weight:600;color:rgba(255,255,255,.75);background:none;border:0;padding:10px 14px;border-radius:var(--r-sm);cursor:pointer;transition:.14s}
.nav-i>button svg{width:9px;height:9px;opacity:.55;transition:transform .2s}
.nav-i>button:hover,.nav-i[data-open]>button,.nav-i>button[data-on]{color:#fff;background:rgba(255,255,255,.08)}
.nav-i[data-open]>button svg{transform:rotate(45deg);opacity:1}
.nav-p{position:absolute;top:calc(100% + 14px);left:-14px;width:min(400px,calc(100vw - 40px));background:var(--white);border-radius:var(--r-lg);padding:12px;opacity:0;visibility:hidden;transform:translateY(-6px);transition:.17s;z-index:70;box-shadow:var(--sh-2)}
.nav-p.wide{width:min(720px,calc(100vw - 40px));display:grid;grid-template-columns:1.25fr 1fr;gap:12px}
.nav-p.wide .nav-u{background:var(--paper);border-radius:var(--r);padding:12px 8px}
.nav-i[data-open] .nav-p{opacity:1;visibility:visible;transform:none}
.nav-p[data-flip]{left:auto;right:-14px}
.nav-b{font-family:var(--m);font-size:10.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--faint);margin:10px 12px}
.nav-p ul{list-style:none;margin:0;padding:0}
.nav-p ul.flat{display:grid;grid-template-columns:1fr 1fr}
.nav-p a{display:block;padding:11px 12px;border-radius:var(--r-sm);text-decoration:none;color:var(--text);transition:background .12s}
.nav-p a:hover{background:var(--paper)}
.nav-u a:hover{background:var(--white)}
.nav-p b{display:block;font-size:14.5px;font-weight:700;letter-spacing:-.018em}
.nav-p span{display:block;font-size:12.5px;color:var(--soft);margin-top:3px;line-height:1.4}
.nav-cta{display:flex;align-items:center;gap:16px;margin-left:12px}
.nav-cta .link{font-size:14.5px;font-weight:600;color:rgba(255,255,255,.75);text-decoration:none;white-space:nowrap}
.nav-cta .link:hover{color:#fff}

.btn{display:inline-flex;align-items:center;gap:10px;font-weight:700;font-size:15px;text-decoration:none;padding:13px 22px;border-radius:var(--r);background:var(--arc);color:#00243D!important;border:0;white-space:nowrap;cursor:pointer;transition:.15s}
.btn:hover{background:var(--arc-l);transform:translateY(-1px)}
.btn::after{content:"→";transition:transform .18s}
.btn:hover::after{transform:translateX(3px)}
.btn-d{background:var(--navy);color:#fff!important}
.btn-d:hover{background:var(--navy-2)}
.btn-o{background:transparent;color:#fff!important;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.3)}
.btn-o:hover{background:rgba(255,255,255,.1)}
.btns{display:flex;flex-wrap:wrap;gap:12px;margin-top:38px}

@media(max-width:1120px){
  .burger{display:flex}
  .top nav{position:fixed;inset:70px 0 0;background:var(--navy);flex-direction:column;align-items:stretch;gap:0;padding:14px var(--gut) 40px;overflow-y:auto;opacity:0;visibility:hidden;transition:.18s;margin:0}
  .top nav.open{opacity:1;visibility:visible}
  .nav-i>button{width:100%;justify-content:space-between;font-size:18px;padding:17px 0;border-bottom:1px solid var(--line-d);border-radius:0}
  .nav-p,.nav-p.wide{position:static;width:auto;display:none;box-shadow:none;padding:4px 0 14px;opacity:1;visibility:visible;transform:none;grid-template-columns:1fr;background:none}
  .nav-i[data-open] .nav-p{display:block}
  .nav-p a{color:rgba(255,255,255,.9)}
  .nav-p a:hover{background:rgba(255,255,255,.07)}
  .nav-p span{color:rgba(255,255,255,.5)}
  .nav-p.wide .nav-u{background:none;padding:0}
  .nav-cta{margin:26px 0 0;flex-direction:column;align-items:stretch;gap:14px}
  .nav-cta .btn{justify-content:center}
}

/* ---------- sections, with the arc between them ---------- */
.sec{padding:clamp(64px,8vw,112px) 0;position:relative}
.sec.alt{background:var(--paper-2)}
.sec.dark,.closer{background:var(--navy);color:#fff}
.sec.tight{padding-block:clamp(40px,5vw,64px)}
.hero{background:var(--navy);color:#fff;padding:clamp(60px,7vw,100px) 0 clamp(72px,8vw,110px);position:relative;overflow:hidden}
.hero h1{color:#fff;max-width:17ch}
.hero .ac{color:var(--arc)}
.hero .in{position:relative;z-index:2}
/* the mark, enormous, bleeding off the right edge */
.hero-art{position:absolute;top:50%;right:-3%;width:min(44%,520px);transform:translateY(-50%);z-index:1;pointer-events:none}
.hero-art svg{width:100%;height:auto;overflow:visible}
.hero-art .sweep{stroke:var(--arc);opacity:.92;filter:drop-shadow(0 0 70px rgba(0,179,250,.35))}
.hero-art .pt{fill:var(--dot);opacity:.95;filter:drop-shadow(0 0 50px rgba(233,61,88,.4))}
@media(max-width:900px){.hero-art{display:none}}
/* the arc as the seam between a dark block and a light one */
.seam{height:clamp(40px,5vw,72px);background:var(--navy);position:relative;margin-bottom:-1px}
.seam::after{content:"";position:absolute;inset:0;background:var(--paper);border-radius:clamp(40px,6vw,88px) clamp(40px,6vw,88px) 0 0}
.seam.to-alt::after{background:var(--paper-2)}
.seam.up{background:var(--paper)}
.seam.up::after{background:var(--navy);border-radius:clamp(40px,6vw,88px) clamp(40px,6vw,88px) 0 0}
.crumb{background:var(--navy);padding-top:30px}
.crumb .in{display:flex;align-items:center;gap:9px;font-family:var(--m);font-size:12px;color:rgba(255,255,255,.45);flex-wrap:wrap}
.crumb a{color:rgba(255,255,255,.78);text-decoration:none}
.crumb a:hover{color:var(--arc-l)}
.crumb i{font-style:normal;opacity:.4}
.crumb+.hero{padding-top:34px}
.closer h2{color:#fff;max-width:19ch}

/* ---------- the band ---------- */
.band{background:var(--navy-2);color:#fff;padding:clamp(44px,5vw,72px) 0}
.band-2{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:clamp(28px,4vw,64px)}
.band .claim h2{font-size:clamp(25px,2.9vw,40px);margin:0 0 20px;max-width:21ch;color:#fff}
.band .claim p{font-size:16.5px;line-height:1.6;color:rgba(255,255,255,.72);max-width:54ch}
.band .claim a{color:var(--arc-l);text-decoration:none;font-weight:600}
.band .claim a:hover{text-decoration:underline}
.band .live{background:rgba(255,255,255,.06);border-radius:var(--r-lg);padding:24px}
.ticker{list-style:none;margin:0;padding:0}
.ticker li+li{border-top:1px solid var(--line-d)}
.ticker a{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 0;text-decoration:none;font-family:var(--m);font-size:13.5px;color:rgba(255,255,255,.68);transition:color .14s}
.ticker a:hover{color:#fff}
.ticker span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ticker i{font-style:normal;font-size:14px;font-weight:700;padding:3px 10px;border-radius:var(--r-sm);flex:none;font-family:var(--f)}
.ticker .t-y{background:rgba(18,192,138,.2);color:#5FE8B5}
.ticker .t-w{background:rgba(255,176,60,.2);color:#FFCB7D}
.ticker .t-n{background:rgba(233,61,88,.2);color:var(--dot-l)}
.live-n{font-size:12.5px;color:rgba(255,255,255,.45);margin-top:16px}
@media(max-width:860px){.band-2{grid-template-columns:1fr}}

/* ---------- rows ---------- */
.rows{margin-top:46px;border-top:1px solid var(--line)}
.dark .rows,.closer .rows{border-color:var(--line-d)}
.row-i{display:grid;grid-template-columns:6ch minmax(0,1fr) minmax(0,.85fr);gap:clamp(18px,3vw,44px);padding:clamp(24px,3vw,34px) clamp(14px,1.6vw,22px);border-bottom:1px solid var(--line);align-items:center;text-decoration:none;color:inherit;transition:.18s;border-radius:var(--r)}
.row-i:hover{background:var(--white);box-shadow:var(--sh);border-color:transparent}
.row-i .n{font-family:var(--m);font-size:12.5px;color:var(--arc-d)}
.row-i h3{font-size:clamp(20px,2vw,27px);font-weight:600}
.row-i .sub{color:var(--soft);font-size:16px;margin-top:8px;max-width:46ch}
.row-i .side{font-size:14.5px;color:var(--soft);display:grid;gap:6px}
.row-i .go{font-size:14px;color:var(--arc-d);font-weight:600;white-space:nowrap}
@media(max-width:860px){.row-i{grid-template-columns:4ch minmax(0,1fr);gap:14px}.row-i .side{grid-column:2}}

/* ---------- cells ---------- */
.cells{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,268px),1fr));gap:14px;margin-top:44px}
.cell-i{background:var(--white);border-radius:var(--r-lg);padding:28px;text-decoration:none;color:inherit;display:flex;flex-direction:column;box-shadow:var(--sh);transition:.2s;position:relative;overflow:hidden}
.cell-i::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--arc);transform:scaleX(0);transform-origin:left;transition:transform .3s cubic-bezier(.2,.8,.3,1)}
a.cell-i:hover{transform:translateY(-3px);box-shadow:var(--sh-2)}
a.cell-i:hover::before{transform:scaleX(1)}
.dark .cell-i,.closer .cell-i{background:rgba(255,255,255,.07);box-shadow:none;color:#fff}
.cell-i .n{font-family:var(--m);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--arc-d);margin-bottom:14px}
.dark .cell-i .n{color:var(--arc-l)}
.cell-i h3{margin-bottom:9px}
.cell-i p{font-size:15.5px;color:var(--soft)}
.dark .cell-i p{color:rgba(255,255,255,.65)}
.cell-i .go{margin-top:auto;padding-top:20px;font-size:14px;font-weight:600;color:var(--arc-d)}
.dark .cell-i .go{color:var(--arc-l)}
.cell-i.num{flex-direction:row;gap:16px;align-items:flex-start}
.cell-i.num .n{margin:0;font-size:16px;color:var(--dot)}

.pills{list-style:none;padding:0;margin:20px 0 0;display:flex;flex-wrap:wrap;gap:6px}
.pills li{font-size:13px;background:var(--paper);border-radius:999px;padding:6px 13px;color:var(--soft)}
.dark .pills li{background:rgba(255,255,255,.1);color:rgba(255,255,255,.72)}
.pills.big{margin-top:26px}
.pills.big li{font-size:15px;padding:10px 18px;background:var(--white);box-shadow:var(--sh);font-weight:600;color:var(--text)}

/* ---------- the spec ---------- */
.spec{margin-top:46px}
.spec-g{display:grid;grid-template-columns:minmax(0,4.5fr) minmax(0,7.5fr);gap:clamp(22px,4vw,60px);padding:clamp(26px,3vw,40px) 0;border-top:1px solid var(--line);align-items:start}
.spec-g h3{font-size:clamp(19px,1.9vw,25px);display:flex;gap:16px;align-items:baseline}
.spec-g h3 .n{font-family:var(--m);font-size:12px;color:var(--arc-d);font-weight:400}
.spec-g ul{list-style:none;margin:0;padding:0}
.spec-g li{font-size:16.5px;line-height:1.5;color:var(--soft);padding:12px 0 12px 28px;position:relative}
.spec-g li+li{border-top:1px solid var(--line)}
.spec-g li::before{content:"";position:absolute;left:0;top:1.28em;width:13px;height:7px;border:2px solid var(--arc);border-bottom:0;border-radius:13px 13px 0 0}
@media(max-width:880px){.spec-g{grid-template-columns:1fr;gap:14px}}

/* ---------- long-form ---------- */
.two{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(30px,5vw,72px);align-items:start}
.prose p{font-size:18px;line-height:1.68;color:var(--soft)}
.prose p+p{margin-top:20px}
.prose h2+p{margin-top:24px}
.side-x{background:var(--white);border-radius:var(--r-lg);padding:28px;box-shadow:var(--sh)}
.alt .side-x{background:var(--white)}
.side-x h3{font-family:var(--m);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);font-weight:500;margin-bottom:18px}
.side-x h3:not(:first-child){margin-top:32px}
.side-p{color:var(--soft);font-size:16px}
.ticks{list-style:none;padding:0;margin:0}
.ticks li{font-size:16px;color:var(--text);line-height:1.5;padding:13px 0;display:grid;grid-template-columns:20px 1fr;gap:12px}
.ticks li+li{border-top:1px solid var(--line)}
.ticks li::before{content:"";width:14px;height:7px;margin-top:.42em;border:2px solid var(--arc);border-bottom:0;border-radius:14px 14px 0 0}
.ticks.warn li::before{border-color:var(--dot)}
.ticks.big li{font-size:17.5px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:0 20px;margin:0;font-size:15.5px}
.kv dt{color:var(--faint);padding:11px 0}
.kv dd{margin:0;font-family:var(--m);font-size:14px;padding:11px 0;text-align:right}
.kv dt+dd,.kv dt{border-bottom:1px solid var(--line)}
.sib{margin-top:clamp(52px,6vw,80px);padding-top:34px;border-top:1px solid var(--line)}
.sib h3{font-family:var(--m);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);font-weight:500}
.metric{padding:22px;background:var(--navy);color:#fff;border-radius:var(--r);margin-bottom:28px}
.metric b{display:block;font-family:var(--d);font-weight:700;font-size:30px;letter-spacing:-.04em;color:var(--arc-l)}
.metric span{display:block;font-size:14px;color:rgba(255,255,255,.65);margin-top:9px;line-height:1.5}
@media(max-width:880px){.two{grid-template-columns:1fr;gap:30px}}

/* ---------- footer ---------- */
footer.site{background:var(--navy);color:rgba(255,255,255,.65);padding:72px 0 36px}
footer.site .in{display:grid;grid-template-columns:1.6fr repeat(5,minmax(0,1fr));gap:clamp(18px,2vw,30px)}
footer.site .f-b p{font-size:15px;margin-top:14px;max-width:28ch;color:rgba(255,255,255,.5)}
footer.site nav{display:flex;flex-direction:column;gap:11px;align-items:flex-start}
footer.site h2{font-family:var(--m);font-size:10.5px;letter-spacing:.15em;text-transform:uppercase;color:rgba(255,255,255,.4);font-weight:500;margin-bottom:3px}
footer.site nav a,footer.site .c a{color:rgba(255,255,255,.78);font-size:15px;text-decoration:none}
footer.site nav a:hover,footer.site .c a:hover{color:var(--arc-l)}
footer.site .c{grid-column:1/-1;border-top:1px solid var(--line-d);padding-top:26px;margin-top:22px;font-size:13.5px;color:rgba(255,255,255,.45);display:flex;gap:20px;flex-wrap:wrap}
@media(max-width:1300px){footer.site .in{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:640px){footer.site .in{grid-template-columns:1fr 1fr}}

/* ---------- the scanner ---------- */
.tool{margin-top:40px;max-width:640px}
.tool form{display:flex;gap:8px;background:rgba(255,255,255,.08);border:1.5px solid rgba(255,255,255,.2);border-radius:var(--r);padding:7px 7px 7px 20px;transition:.18s}
.tool form:focus-within{border-color:var(--arc);background:rgba(255,255,255,.12);box-shadow:0 0 0 4px rgba(0,179,250,.18)}
.tool input{flex:1;min-width:0;font:inherit;font-family:var(--m);font-size:16px;color:#fff;background:none;border:0;outline:0;padding:13px 0}
.tool input::placeholder{color:rgba(255,255,255,.4)}
.tool button{flex:none;font:inherit;font-weight:700;font-size:15px;padding:13px 24px;border:0;border-radius:var(--r-sm);background:var(--arc);color:#00243D;cursor:pointer;transition:.15s}
.tool button:hover{background:var(--arc-l)}
.tool button[disabled]{background:rgba(255,255,255,.14);color:rgba(255,255,255,.42);cursor:default}
.tool.busy form{opacity:.5;pointer-events:none}
.tool-n{margin-top:16px;font-size:14px;color:rgba(255,255,255,.55)}
.tool-n b{color:var(--arc-l);font-weight:700}
.tool-e{margin-top:14px;font-size:15px;color:var(--dot-l)}
.tool-log{list-style:none;margin:18px 0 0;padding:6px 0;background:rgba(0,0,0,.22);border-radius:var(--r);max-height:300px;overflow-y:auto;font-family:var(--m);font-size:12.5px}
.tool-log li{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:0 10px;align-items:center;padding:9px 18px 9px 0;opacity:0;transform:translateY(4px);transition:opacity .25s,transform .25s}
.tool-log li.in{opacity:1;transform:none}
.tool-log li::before{content:"";width:13px;height:7px;justify-self:center;border:2px solid rgba(255,255,255,.22);border-bottom:0;border-radius:13px 13px 0 0}
.tool-log li.s-run::before{border-color:var(--arc);animation:ping 1s ease-out infinite}
.tool-log li.s-ok::before{border-color:var(--good)}
.tool-log li.s-warn::before{border-color:#FFB03C}
.tool-log li.s-bad::before{border-color:var(--dot)}
@keyframes ping{0%{transform:scale(.6);opacity:.4}70%{transform:scale(1.25);opacity:1}100%{transform:scale(1.5);opacity:0}}
.tool-log b{font-weight:400;color:rgba(255,255,255,.9);overflow-wrap:anywhere}
.tool-log li.s-run b{color:rgba(255,255,255,.5)}
.tool-log span{color:rgba(255,255,255,.45);text-align:right;white-space:nowrap;font-size:11.5px}
@media(max-width:560px){.tool form{flex-direction:column;padding:12px}.tool button{width:100%}.tool-log li{grid-template-columns:38px minmax(0,1fr)}.tool-log span{grid-column:2;text-align:left}}

/* ---------- diagrams ---------- */
.dia{margin:44px 0 0;background:var(--white);border-radius:var(--r-lg);box-shadow:var(--sh);overflow:hidden}
.dark .dia{background:rgba(255,255,255,.06);box-shadow:none}
.dia-f{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr))}
.dia-f li{padding:26px 22px;display:flex;flex-direction:column;gap:9px;position:relative}
.dia-f li+li::before{content:"";position:absolute;left:0;top:22px;bottom:22px;width:1px;background:var(--line)}
.dark .dia-f li+li::before{background:var(--line-d)}
.dia-i{font-family:var(--m);font-size:11px;color:var(--arc-d)}
.dark .dia-i{color:var(--arc-l)}
.dia-f b{font-size:16.5px;font-weight:700;letter-spacing:-.02em}
.dia-f span:not(.dia-i){font-size:14px;color:var(--soft);line-height:1.45}
.dark .dia-f span:not(.dia-i){color:rgba(255,255,255,.6)}
.dia-f .n-ai{background:rgba(0,179,250,.06)}
.dia-f .n-guard{background:rgba(233,61,88,.055)}
.dia-f .n-out{background:rgba(18,192,138,.06)}
.dia-br{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line)}
.br{padding:26px 22px}
.br+.br{border-left:1px solid var(--line)}
.br b{display:block;font-size:17px;font-weight:700;margin-bottom:8px}
.br p{font-size:14.5px;line-height:1.5;color:var(--soft)}
.br-bad{background:rgba(233,61,88,.05)}.br-bad b{color:var(--dot)}
.br-good{background:rgba(18,192,138,.06)}.br-good b{color:#0A8A62}
.dia figcaption{padding:20px 22px;border-top:1px solid var(--line);font-size:14.5px;color:var(--soft);line-height:1.55}
.dia figcaption em{font-style:normal;color:var(--text);font-weight:700}
@media(max-width:720px){.dia-f li+li::before{left:22px;right:22px;top:0;bottom:auto;width:auto;height:1px}.dia-br{grid-template-columns:1fr}.br+.br{border-left:0;border-top:1px solid var(--line)}}

/* ---------- artefact ---------- */
.art{margin:0;background:var(--navy);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-2)}
.art figcaption{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:15px 20px;border-bottom:1px solid var(--line-d)}
.art figcaption b{color:#fff;font-size:14px;font-weight:700}
.art figcaption code{font-family:var(--m);font-size:11.5px;color:var(--arc-l)}
.art pre{margin:0;padding:20px;font-family:var(--m);font-size:12.5px;line-height:1.8;color:rgba(255,255,255,.88);overflow-x:auto;white-space:pre-wrap;word-break:break-word}
.art .a-c{color:var(--arc-l)}.art .a-k{color:#79E3B8}.art .a-d{color:rgba(255,255,255,.5)}

/* ---------- data ---------- */
.scores{display:grid;grid-template-columns:auto minmax(0,1fr);gap:clamp(28px,5vw,66px);align-items:center;margin-top:46px;background:var(--white);border-radius:var(--r-lg);padding:clamp(24px,3vw,38px);box-shadow:var(--sh)}
.gauges{display:flex;gap:clamp(10px,2vw,22px)}
.gauge svg{width:clamp(90px,9vw,128px)}
.gauge text{font-family:var(--d);font-weight:700;font-size:42px}
.gauge .lab{font-family:var(--m);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin-top:12px;text-align:center}
.scores-t h3{font-size:clamp(21px,2.3vw,30px)}
.scores-t p{color:var(--soft);font-size:16.5px;margin-top:14px;max-width:52ch}
.scores-t .lcp b{font-family:var(--m);font-size:.92em;color:var(--navy);font-weight:600}
table{border-collapse:collapse;width:100%;margin-top:40px;font-size:16px;background:var(--white);border-radius:var(--r);overflow:hidden;box-shadow:var(--sh)}
th{font-family:var(--m);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);font-weight:500;text-align:left;padding:16px;background:var(--paper)}
td{padding:15px 16px;border-top:1px solid var(--line)}
th.n,td.n{text-align:right;font-family:var(--m);font-variant-numeric:tabular-nums}
td.bad,td.was{color:var(--dot);font-weight:600}
td.good,td.now{color:#0A8A62;font-weight:700}
table.cmp{max-width:720px}
.bars{display:grid;gap:0;margin-top:20px;background:var(--white);border-radius:var(--r-lg);padding:clamp(20px,2.6vw,32px);box-shadow:var(--sh)}
.bar{display:grid;grid-template-columns:minmax(0,22ch) minmax(0,1fr) auto;gap:clamp(14px,2.5vw,26px);align-items:center;padding:16px 0}
.bar+.bar{border-top:1px solid var(--line)}
.bar-l{font-size:16px;font-weight:600}
.bar-t{height:12px;background:var(--paper-2);border-radius:999px;overflow:hidden}
.bar-t i{display:block;height:100%;border-radius:999px;width:0;transition:width 1.1s cubic-bezier(.2,.8,.3,1)}
.seen .bar-t i,.bar-t i.go{width:var(--w)}
.bar-t i.none{background:var(--navy)}.bar-t i.block{background:#7A5AF5}.bar-t i.fake{background:#FFB03C}.bar-t i.yes{background:var(--good)}
.bar-v{font-family:var(--d);font-weight:700;font-size:21px;white-space:nowrap}
.bar-v small{font-family:var(--f);font-size:12.5px;color:var(--faint);margin-left:8px;font-weight:500}
@media(max-width:860px){.bar{grid-template-columns:minmax(0,1fr) auto}.bar-t{grid-column:1/-1}.scores{grid-template-columns:1fr}}
@media(max-width:620px){table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}table thead,table tbody,table tr{display:table;width:100%;table-layout:fixed}}
.bar-v{font-size:19px}

/* ---------- forms ---------- */
.form{display:grid;gap:20px;max-width:640px;background:var(--white);border-radius:var(--r-lg);padding:clamp(24px,3vw,34px);box-shadow:var(--sh)}
.form label{display:grid;gap:9px}
.form label span{font-family:var(--m);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}
.form input,.form select,.form textarea{font:inherit;font-size:16px;color:var(--text);background:var(--paper);border:1.5px solid transparent;border-radius:var(--r-sm);padding:14px 16px;width:100%;transition:.15s}
.form input:focus,.form select:focus,.form textarea:focus{outline:0;background:#fff;border-color:var(--arc);box-shadow:0 0 0 4px rgba(0,179,250,.15)}
.form textarea{resize:vertical;min-height:130px}
.f2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:620px){.f2{grid-template-columns:1fr}}
.form .hp{position:absolute;left:-9999px}
.f-act{display:flex;flex-wrap:wrap;align-items:center;gap:18px}
.f-msg{font-size:15px}.f-msg.ok{color:#0A8A62}.f-msg.bad{color:var(--dot)}
.f-fine{font-size:13px;color:var(--faint)}

/* ---------- report ---------- */
.rp-top{background:var(--navy);color:#fff;padding:clamp(44px,5vw,72px) 0 clamp(38px,4vw,58px)}
.rp-top h1{color:#fff;font-family:var(--m);font-weight:500;font-size:clamp(26px,4.2vw,52px);letter-spacing:-.03em;overflow-wrap:anywhere}
.rp-head{display:grid;grid-template-columns:auto minmax(0,1fr);gap:clamp(26px,4vw,54px);align-items:center;margin-top:34px}
.rp-ring{text-align:center}
.rp-ring span{display:block;font-family:var(--m);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.45);margin-top:8px}
.tagv{display:inline-block;font-family:var(--m);font-size:11px;letter-spacing:.12em;text-transform:uppercase;padding:8px 14px;border-radius:999px;margin-bottom:16px}
.tagv.good{background:rgba(18,192,138,.2);color:#5FE8B5}
.tagv.warn{background:rgba(255,176,60,.2);color:#FFCB7D}
.tagv.block{background:rgba(122,90,245,.22);color:#BBA6FF}
.tagv.bad{background:rgba(233,61,88,.2);color:var(--dot-l)}
.rp-v p{color:rgba(255,255,255,.76);font-size:17.5px;line-height:1.55;max-width:56ch}
.rp-bench{margin-top:16px;font-size:14.5px!important;color:rgba(255,255,255,.5)!important}
.rp-bench b{color:#fff}.rp-bench a{color:var(--arc-l);text-decoration:none}
.rp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:14px;align-items:start}
.rp{background:var(--white);border-radius:var(--r-lg);padding:28px;margin:0;box-shadow:var(--sh)}
.rp header{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding-bottom:18px;border-bottom:1px solid var(--line)}
.rp h2{font-size:21px}
.rp-s{font-family:var(--d);font-weight:700;font-size:30px;letter-spacing:-.04em}
.rp-s small{font-family:var(--m);font-size:12px;color:var(--faint);margin-left:3px}
.rp-s.good{color:#0A8A62}.rp-s.warn{color:#B07518}.rp-s.bad{color:var(--dot)}
.rp-l{list-style:none;margin:0;padding:0}
.rp-l li{display:grid;grid-template-columns:20px minmax(0,1fr);gap:4px 12px;padding:15px 0}
.rp-l li+li{border-top:1px solid var(--line)}
.rp-l li::before{content:"";grid-row:1/span 2;width:14px;height:7px;margin-top:.46em;border:2px solid var(--good);border-bottom:0;border-radius:14px 14px 0 0}
.rp-l li.n::before{border-color:var(--dot)}
.rp-l b{grid-column:2;font-size:15.5px;font-weight:700}
.rp-l span{grid-column:2;font-size:14.5px;color:var(--soft);line-height:1.5;overflow-wrap:anywhere}
.rp-give{margin-top:clamp(44px,5vw,70px);display:grid;gap:24px}
.rp-give code{font-family:var(--m);font-size:.9em;color:var(--arc-d)}
.rp-give .art pre{max-height:380px;overflow:auto}
.rp-next{margin-top:clamp(44px,5vw,70px);background:var(--navy);color:#fff;padding:clamp(30px,4vw,52px);border-radius:var(--r-lg)}
.rp-next h2{color:#fff}.rp-next .lede{color:rgba(255,255,255,.72)}
.rp-form{margin-top:30px;background:rgba(255,255,255,.07);box-shadow:none}
.rp-form label span{color:rgba(255,255,255,.5)}
.rp-form input{background:rgba(255,255,255,.08);color:#fff}
.rp-form input:focus{background:rgba(255,255,255,.14);color:#fff}
.ringv{animation:draw 1.2s cubic-bezier(.2,.8,.3,1) .15s forwards}
@keyframes draw{to{stroke-dashoffset:var(--to)}}

/* ---------- motion ---------- */
@media (prefers-reduced-motion:no-preference){
  .rise{opacity:0;transform:translateY(18px);transition:opacity .65s cubic-bezier(.2,.8,.3,1),transform .65s cubic-bezier(.2,.8,.3,1)}
  .rise.seen{opacity:1;transform:none}
  .hero-art .sweep{animation:sweepin 1.5s cubic-bezier(.2,.8,.3,1) both}
  .hero-art .pt{animation:pop .6s cubic-bezier(.2,1.6,.4,1) 1s both}
}
@keyframes sweepin{from{stroke-dasharray:0 1}to{stroke-dasharray:1 0}}
@keyframes pop{from{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}
@media (prefers-reduced-motion:reduce){.ringv{animation:none;stroke-dashoffset:var(--to)}.bar-t i{transition:none;width:var(--w)}}
.hero-art{transform:translateY(-50%) translate3d(var(--mx,0),var(--my,0),0);transition:transform .7s cubic-bezier(.2,.8,.3,1)}
/* "Ongoing" sits beside the three phases but is not one of them: three cards
   under a heading that says three phases, then an unexplained fourth, read as
   a mistake. Tinted and dashed so it is plainly the thing that comes after. */
.cell-i.cell-after { background: var(--paper); border-style: dashed; }
.cell-i.cell-after .n { color: var(--faint); }
