@font-face{font-family:'Mont';font-weight:400;font-style:normal;font-display:swap;src:url(/assets/fonts/montserrat-400.ttf) format('truetype');}@font-face{font-family:'Mont';font-weight:500;font-style:normal;font-display:swap;src:url(/assets/fonts/montserrat-500.ttf) format('truetype');}@font-face{font-family:'Mont';font-weight:600;font-style:normal;font-display:swap;src:url(/assets/fonts/montserrat-600.ttf) format('truetype');}@font-face{font-family:'Mont';font-weight:700;font-style:normal;font-display:swap;src:url(/assets/fonts/montserrat-700.ttf) format('truetype');}@font-face{font-family:'Mont';font-weight:800;font-style:normal;font-display:swap;src:url(/assets/fonts/montserrat-800.ttf) format('truetype');}
:root{
 --bg:#F7F8FB;--raised:#FFFFFF;--ink:#101736;--text:#333A57;--dim:#565D7C;--mute:#646A83;
 --accent:#2E66C9;--accent-ink:#1D4FA8;--bar:#3B7FE0;--amber:#A05F0B;
 --surface:#FFFFFF;--surface2:#EEF1F7;--border:rgba(16,23,54,.13);--hairline:rgba(16,23,54,.18);
 --chart-grid:rgba(16,23,54,.08);--btn-ink:#FFFFFF;--navbg:rgba(247,248,251,.85);
 --shadow:0 1px 2px rgba(16,23,54,.04),0 10px 28px rgba(16,23,54,.06);
 --lockwash:rgba(247,248,251,.5);--tile:#FFFFFF;--constel:22,40,90;
 --sec-fin:#2E66C9;--sec-tel:#2C7C8C;--sec-auto:#2E8A6B;--sec-life:#7E42A8;--sec-energy:#A05F0B;
 --glass:rgba(255,255,255,.52);--glass-b:rgba(255,255,255,.85);--glass-hi:rgba(255,255,255,.95);
 --glass-sh:0 14px 44px rgba(16,23,54,.14);--sheen:.55;--bo:.42;--reg-us:#2E8A6B;--reg-europe:#3D6598;--reg-japan:#2F6FD6;--reg-china:#C24335;--reg-canada:#A8455F;--reg-asia-pacific:#35818F;--reg-india:#9A6A15;--reg-latin-america:#7E42A8;--reg-korea:#5D4BC0;--reg-taiwan:#8F7413;--reg-middle-east:#8F5A33;}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
 --bg:#040620;--raised:#0A0E2E;--ink:#FFFFFF;--text:#BCC1D1;--dim:#AEB1C3;--mute:#7F818D;
 --accent:#5B9BF5;--accent-ink:#8AB6F7;--bar:#5B9BF5;--amber:#E0A34A;
 --surface:rgba(255,255,255,.03);--surface2:rgba(255,255,255,.06);--border:rgba(255,255,255,.13);
 --hairline:rgba(255,255,255,.2);--chart-grid:rgba(255,255,255,.08);--btn-ink:#04122E;
 --navbg:rgba(4,6,32,.82);--shadow:none;--lockwash:rgba(4,6,32,.45);
 --tile:rgba(255,255,255,.92);--constel:150,190,255;
 --sec-fin:#5B9BF5;--sec-tel:#59A9B8;--sec-auto:#4CAF8E;--sec-life:#9C59C7;--sec-energy:#E0A34A;
 --glass:rgba(255,255,255,.055);--glass-b:rgba(255,255,255,.17);--glass-hi:rgba(255,255,255,.22);
 --glass-sh:0 20px 54px rgba(0,0,0,.5);--sheen:.16;--bo:.55;--reg-us:#4CAF8E;--reg-europe:#5F8FC4;--reg-japan:#5B9BF5;--reg-china:#E0574A;--reg-canada:#C75B7A;--reg-asia-pacific:#59A9B8;--reg-india:#C9862B;--reg-latin-america:#9C59C7;--reg-korea:#7B6BD6;--reg-taiwan:#C9A227;--reg-middle-east:#B0704A;}}
:root[data-theme="dark"]{
 --bg:#040620;--raised:#0A0E2E;--ink:#FFFFFF;--text:#BCC1D1;--dim:#AEB1C3;--mute:#7F818D;
 --accent:#5B9BF5;--accent-ink:#8AB6F7;--bar:#5B9BF5;--amber:#E0A34A;
 --surface:rgba(255,255,255,.03);--surface2:rgba(255,255,255,.06);--border:rgba(255,255,255,.13);
 --hairline:rgba(255,255,255,.2);--chart-grid:rgba(255,255,255,.08);--btn-ink:#04122E;
 --navbg:rgba(4,6,32,.82);--shadow:none;--lockwash:rgba(4,6,32,.45);
 --tile:rgba(255,255,255,.92);--constel:150,190,255;
 --sec-fin:#5B9BF5;--sec-tel:#59A9B8;--sec-auto:#4CAF8E;--sec-life:#9C59C7;--sec-energy:#E0A34A;
 --glass:rgba(255,255,255,.055);--glass-b:rgba(255,255,255,.17);--glass-hi:rgba(255,255,255,.22);
 --glass-sh:0 20px 54px rgba(0,0,0,.5);--sheen:.16;--bo:.55;--reg-us:#4CAF8E;--reg-europe:#5F8FC4;--reg-japan:#5B9BF5;--reg-china:#E0574A;--reg-canada:#C75B7A;--reg-asia-pacific:#59A9B8;--reg-india:#C9862B;--reg-latin-america:#9C59C7;--reg-korea:#7B6BD6;--reg-taiwan:#C9A227;--reg-middle-east:#B0704A;}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:'Mont',Montserrat,-apple-system,sans-serif;
font-size:15.5px;line-height:1.6;-webkit-font-smoothing:antialiased;
transition:background-color .35s ease,color .35s ease}
a{color:var(--accent-ink);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3,h4{color:var(--ink);text-wrap:balance;line-height:1.14}
h1{font-size:clamp(31px,4.4vw,50px);font-weight:700;letter-spacing:-.015em}
h2{font-size:clamp(21px,2.6vw,27px);font-weight:700;letter-spacing:-.01em}
h3{font-size:17px;font-weight:600}
h4{font-size:14px;font-weight:600}
.hl{color:var(--amber);font-weight:700}
.kicker{color:var(--accent);font-size:11px;font-weight:600;letter-spacing:.16em;
text-transform:uppercase;margin-bottom:14px}
.stand{font-size:clamp(16px,1.6vw,18.5px);line-height:1.65;color:var(--dim);max-width:36em;margin-top:18px}
.body{max-width:38em;margin:12px 0;color:var(--text)}
.note{color:var(--mute);font-size:13.5px;max-width:44em;margin-top:10px}
.meta{color:var(--mute);font-size:12.5px;letter-spacing:.04em;margin-top:20px;
padding-top:14px;border-top:1px solid var(--hairline);display:inline-block}
.indep{color:var(--mute);font-size:13px;border-top:1px solid var(--hairline);margin-top:30px;padding-top:14px;max-width:44em}
.src{color:var(--mute);font-size:11.5px;margin-top:14px}

/* theme-swapped images: must beat `.logo img` / `footer img` specificity */
img.only-dark{display:none}
img.only-light{display:block}
:root[data-theme="dark"] img.only-dark{display:block}
:root[data-theme="dark"] img.only-light{display:none}
@media (prefers-color-scheme: dark){
 :root:not([data-theme="light"]) img.only-dark{display:block}
 :root:not([data-theme="light"]) img.only-light{display:none}}

.js [data-rv]{opacity:0;transform:translateY(14px);transition:opacity .65s ease,transform .65s ease}
.js [data-rv].in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
 html{scroll-behavior:auto}
 .js [data-rv]{opacity:1;transform:none;transition:none}
 .fl,.fbarfill{transition:none!important}
}

/* nav */
nav{position:sticky;top:0;z-index:50;background:var(--navbg);backdrop-filter:blur(12px);
border-bottom:1px solid var(--border)}
.navin{max-width:1160px;margin:0 auto;padding:0 4vw;height:72px;display:flex;align-items:center;gap:24px}
.logo{display:flex;align-items:center}
.logo img{height:44px;width:auto}
.links{display:flex;gap:4px;margin-left:auto;align-items:center}
.nl{color:var(--dim);font-size:13.5px;font-weight:600;padding:8px 12px;border-radius:8px;
background:none;border:0;cursor:pointer;font-family:inherit;display:flex;align-items:center;gap:6px}
.nl:hover{color:var(--ink);background:var(--surface2);text-decoration:none}
.nl.active{color:var(--ink)}
.nl.cta{color:var(--btn-ink);background:var(--accent)}
.nl.cta:hover{filter:brightness(1.06);color:var(--btn-ink)}
.tglbtn{width:36px;height:36px;border-radius:9px;border:1px solid var(--border);background:none;
color:var(--dim);cursor:pointer;display:flex;align-items:center;justify-content:center}
.tglbtn:hover{color:var(--ink);background:var(--surface2)}
.tglbtn svg{width:16px;height:16px}
.tglbtn .moon{display:none}
:root[data-theme="dark"] .tglbtn .moon{display:block}
:root[data-theme="dark"] .tglbtn .sun{display:none}
@media (prefers-color-scheme: dark){
 :root:not([data-theme="light"]) .tglbtn .moon{display:block}
 :root:not([data-theme="light"]) .tglbtn .sun{display:none}}
.dd{position:relative}
.chev{transition:transform .2s ease}
.dd.open .chev{transform:rotate(180deg)}
.ddmenu{position:absolute;top:calc(100% + 8px);left:auto;right:0;min-width:270px;background:var(--raised);
border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow),0 12px 34px rgba(4,8,30,.16);
padding:8px;opacity:0;transform:translateY(-6px);pointer-events:none;
transition:opacity .18s ease,transform .18s ease}
.dd.open .ddmenu{opacity:1;transform:none;pointer-events:auto}
.ddi{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:9px 12px;
border-radius:8px;color:var(--ink);font-size:13.5px;font-weight:600}
.ddi:hover{background:var(--surface2);text-decoration:none}
.ddi small{color:var(--mute);font-weight:500;font-size:11px;white-space:nowrap}
.ddi.mobonly{display:none}
.ddsep{display:none;height:1px;background:var(--border);margin:6px 10px}
.ddlbl-m{display:none}

/* layout */
.page{display:none}
.page.active{display:block}
.wrap{max-width:1160px;margin:0 auto;padding:44px 4vw}
.herowrap{position:relative;overflow:hidden}
.substrate{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.bloom{position:absolute;border-radius:50%;filter:blur(64px);opacity:var(--bo);
transition:background .9s ease}
.hero{display:grid;grid-template-columns:minmax(0,6.5fr) minmax(0,5.5fr);gap:52px;align-items:center;
padding-top:64px;padding-bottom:32px;position:relative}
.hero.sector{display:block;padding-top:64px}
.herotext,.gpanel{min-width:0}
.herotext.wide{max-width:760px}
.ctas{display:flex;gap:12px;margin-top:26px;flex-wrap:wrap}
.btn{display:inline-block;background:var(--accent);color:var(--btn-ink);font-weight:700;font-size:14px;
padding:11px 20px;border-radius:9px;border:0;cursor:pointer;font-family:inherit}
.btn:hover{filter:brightness(1.06);text-decoration:none}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--border)}
.btn.ghost:hover{border-color:var(--accent);filter:none}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.shead{margin:22px 0 18px;padding-top:26px;border-top:1px solid var(--hairline)}
.band{background:var(--surface2);border-top:1px solid var(--border);border-bottom:1px solid var(--border);margin:34px 0}
.band .shead{border-top:0;padding-top:0}
.cols2{display:grid;grid-template-columns:3fr 2fr;gap:44px;align-items:start}

/* featured-in */
.featwrap{padding-top:0;padding-bottom:30px;position:relative}
.feat{padding-top:22px;border-top:1px solid var(--hairline);display:flex;
align-items:center;gap:34px;flex-wrap:wrap}
.featlab{font-size:10px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;
color:var(--mute);flex:0 0 auto}
.featrow{display:flex;align-items:center;gap:38px;flex-wrap:wrap}
.mlogo{height:19px;width:auto;opacity:.72;filter:grayscale(1)}
.featrow .mlogo:hover{opacity:1;filter:none}
.fwordmark{font-family:Georgia,'Times New Roman',serif;font-size:21px;font-weight:700;
color:var(--ink);opacity:.72;letter-spacing:-.01em}
.fwordmark.lg{font-size:29px;opacity:1}

/* hero liquid switch panel */
.glass{position:relative;background:var(--glass);border:1px solid var(--glass-b);
backdrop-filter:blur(22px) saturate(185%);-webkit-backdrop-filter:blur(22px) saturate(185%);
box-shadow:var(--glass-sh),inset 0 1px 0 var(--glass-hi);border-radius:22px}
.glass::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
background:radial-gradient(520px circle at var(--mx,50%) var(--my,-10%),
 rgba(255,255,255,var(--sheen,.18)),transparent 46%)}
.glass>*{position:relative;z-index:1}
.gpanel{padding:12px;border-radius:26px}
.gtabs{position:relative;display:flex;gap:2px;padding:5px;border-radius:16px;
background:var(--surface2);margin-bottom:4px;overflow-x:auto;scrollbar-width:none}
.gtabs::-webkit-scrollbar{display:none}
.gtabs.scrol{-webkit-mask-image:linear-gradient(90deg,#000 86%,transparent 99%);
mask-image:linear-gradient(90deg,#000 86%,transparent 99%)}
.gind{position:absolute;top:5px;left:0;height:calc(100% - 10px);border-radius:12px;
background:var(--sec);box-shadow:0 4px 14px color-mix(in srgb,var(--sec) 45%,transparent);
will-change:transform,width}
.gtab{position:relative;z-index:2;flex:1 0 auto;background:none;border:0;font-family:inherit;
font-size:12.5px;font-weight:600;color:var(--dim);padding:9px 12px;cursor:pointer;
border-radius:12px;transition:color .3s ease;white-space:nowrap}
.gtab.on{color:#fff}
.ghead{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:16px 14px 12px;
font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--mute);font-weight:600}
/* space-between alone let these two run together on a phone, printing
   "2025 EDITIONINDEX SCORE"; keep them apart and clip the sector label */
.ghead span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ghead span+span{flex:none}
.gstampr{padding:0 14px 12px;margin-top:-2px}
.grows{padding:0 6px 8px}
.grow{display:grid;grid-template-columns:24px 26px 1fr 40px;gap:12px;align-items:center;
padding:8px 10px;border-radius:11px}
.grow+.grow{border-top:1px solid var(--border)}
.grow .lt{width:26px;height:26px}
.grk{font-size:12.5px;color:var(--mute);font-weight:600}
.gnm{font-size:13.5px;color:var(--ink);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gsc{font-size:14.5px;font-weight:700;color:var(--ink);text-align:right}
.gfoot{padding:12px 16px 14px;border-top:1px solid var(--border);font-size:12px;color:var(--mute);
display:flex;justify-content:space-between;gap:12px}
.gfoot a{color:var(--accent-ink);font-weight:600}
.tnum{font-variant-numeric:tabular-nums}
.wipe{position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;
background:linear-gradient(105deg,transparent 38%,rgba(255,255,255,calc(var(--sheen)*1.5)) 50%,transparent 62%)}
@media (max-width:960px){.gtab{font-size:11px}}

/* logo tiles */
.lt{width:24px;height:24px;border-radius:5px;background:var(--tile);border:1px solid var(--border);
display:flex;align-items:center;justify-content:center;overflow:hidden;flex:0 0 auto}
.lt img{width:18px;height:18px;object-fit:contain;display:block}
.lt.mono{font-size:9.5px;font-weight:700;color:#fff;border:0;letter-spacing:.02em}
.lt.lg{width:30px;height:30px;border-radius:6px}
.lt.lg img{width:22px;height:22px}

/* stats */
.statband{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
border-top:2px solid var(--ink);border-bottom:1px solid var(--hairline)}
.stat{padding:20px 22px 20px 0}
.stat + .stat{padding-left:22px;border-left:1px solid var(--hairline)}
.sv{color:var(--ink);font-size:31px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.sl{color:var(--mute);font-size:12.5px;margin-top:5px;line-height:1.45}

/* sector cards */
.sgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:16px}
.scard{display:block;background:var(--surface);border:1px solid var(--border);border-radius:12px;
padding:20px;color:var(--text);box-shadow:var(--shadow);
transition:transform .25s ease,border-color .25s ease}
.scard:hover{transform:translateY(-3px);border-color:var(--accent);text-decoration:none}
.scard.live{border-top:3px solid var(--accent)}
.scard.soon{opacity:.72}
.stag{font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;
color:var(--mute);margin-bottom:9px}
.scard.live .stag{color:var(--accent)}
.scard h3{font-size:19px}
.scard .sline{font-size:13px;color:var(--dim);margin:7px 0 12px}
.slogos{display:flex;gap:5px;margin-bottom:13px;flex-wrap:wrap}
.slink{font-size:13px;font-weight:600;color:var(--accent-ink)}

/* quotes */
.qgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:16px}
.qcard{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:20px;
box-shadow:var(--shadow);display:flex;flex-direction:column}
.qtop{height:30px;display:flex;align-items:center;margin-bottom:14px}
.qlogo{max-height:24px;max-width:130px;width:auto;object-fit:contain}
.qcard blockquote{color:var(--ink);font-size:15px;line-height:1.55;font-weight:500;flex:1}
.qcard blockquote::before{content:'\201C'}
.qcard blockquote::after{content:'\201D'}
.qcard figcaption{margin-top:14px;padding-top:12px;border-top:1px solid var(--border);
display:flex;flex-direction:column;gap:2px;font-size:12.5px;color:var(--dim)}
.qcard figcaption b{color:var(--ink);font-size:13.5px}
.qmeta{color:var(--accent-ink);font-size:11px;font-weight:600;letter-spacing:.06em;
text-transform:uppercase;margin-top:4px}

/* citations */
.cites{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.cite{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:18px;
box-shadow:var(--shadow);display:flex;flex-direction:column;gap:10px}
.cite p{font-size:13px;color:var(--dim);margin:0}
.cite .mlogo{height:20px;opacity:.85;filter:none;align-self:flex-start}
.citemeta{font-size:11px;color:var(--mute);letter-spacing:.04em;margin-top:auto}
.cite.big{grid-column:span 2;border-color:var(--accent);
background:linear-gradient(160deg,rgba(46,102,201,.07),var(--surface))}
.citehead{display:flex;align-items:center;justify-content:space-between;gap:12px}
.citetitle{color:var(--ink);font-weight:700;font-size:16px;line-height:1.35}
.pill{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
background:var(--accent);color:var(--btn-ink);border-radius:99px;padding:4px 10px}
.stamp{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.1em;
text-transform:uppercase;color:var(--amber);border:1px solid var(--amber);
border-radius:99px;padding:3px 11px;vertical-align:middle;white-space:nowrap}
.kicker .stamp{margin-left:10px}
.scard .stamp{margin:0 0 12px}
a.cite:hover{text-decoration:none;transform:translateY(-2px)}
a.cite{transition:transform .25s ease}

/* pillars + sources */
.pillars{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
border-top:1px solid var(--hairline);margin-top:8px}
.pillar{padding:18px 22px 18px 0}
.pillar + .pillar{padding-left:22px;border-left:1px solid var(--hairline)}
.pw{font-size:24px;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums;margin-bottom:8px}
.pillar p{font-size:13.5px;color:var(--dim);margin-top:6px}
.srcgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:0 40px}
.srcitem{padding:14px 0;border-bottom:1px solid var(--border)}
.srcitem p{font-size:13.5px;color:var(--dim);margin-top:4px}

/* about */
.orgs{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.org{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:24px;
box-shadow:var(--shadow)}
.orgrole{color:var(--accent);font-size:11px;font-weight:600;letter-spacing:.12em;
text-transform:uppercase;margin-top:4px}
.orglink{color:var(--ink)}
.orglink:hover{color:var(--accent-ink)}
.ticks{list-style:none;margin-top:14px;display:flex;flex-direction:column;gap:9px}
.ticks li{position:relative;padding-left:22px;font-size:13.5px;color:var(--dim)}
.ticks li::before{content:"";position:absolute;left:0;top:8px;width:9px;height:9px;
border-radius:50%;border:2px solid var(--accent)}
.people{display:grid;grid-template-columns:1fr 1fr;gap:26px}
.person{display:grid;grid-template-columns:96px 1fr;gap:18px;align-items:start}
.person img{width:96px;height:96px;border-radius:50%;object-fit:cover;
border:1px solid var(--border)}
.prole{color:var(--accent);font-size:12.5px;font-weight:600;margin-top:2px}
.person .body{font-size:13.5px;color:var(--dim);margin-top:8px}
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0;
border-top:1px solid var(--hairline)}
.step{padding:16px 20px 16px 0;position:relative}
.step + .step{padding-left:20px;border-left:1px solid var(--hairline)}
.stepn{color:var(--accent);font-size:11px;font-weight:600;letter-spacing:.1em;
text-transform:uppercase;margin-bottom:6px}
.step p{font-size:13px;color:var(--dim);margin-top:5px}

/* minitable */
.minitable{background:var(--raised);border:1px solid var(--border);border-radius:12px;
padding:18px 20px;box-shadow:var(--shadow)}
.mt-title{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;
color:var(--mute);margin-bottom:8px}
.mt-row{display:flex;justify-content:space-between;gap:14px;padding:9px 0;font-size:13.5px;
border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums;align-items:center}
.mt-row>span:last-child{white-space:nowrap}
.mt-row b{color:var(--ink)}
.mt-row .up{color:var(--amber);font-weight:700}
.mt-row .dn{color:#C2594A;font-weight:700}
.mt-sub{font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
color:var(--dim);margin:12px 0 2px}
.mt-row .mn{display:flex;align-items:center;gap:9px}
.mt-note{color:var(--mute);font-size:11.5px;margin-top:10px;line-height:1.5}

/* controls + table */
.controls{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin:6px 0 14px}
input,select,textarea{background:var(--raised);border:1px solid var(--border);border-radius:8px;
color:var(--ink);padding:10px 12px;font-family:inherit;font-size:14px;width:100%}
input:focus,select:focus,textarea:focus,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.controls input{max-width:250px}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{border:1px solid var(--border);border-radius:99px;background:none;color:var(--dim);
font-size:12px;font-weight:600;padding:6px 12px;cursor:pointer;font-family:inherit;
display:flex;gap:7px;align-items:center;transition:border-color .2s ease,color .2s ease}
.chip .dot{width:8px;height:8px;border-radius:50%}
.chip.on{color:var(--ink);border-color:var(--accent);background:var(--surface2)}
.tablewrap{overflow-x:auto;border-top:2px solid var(--ink)}
/* league tables and the scatter are wider than a phone and scroll sideways.
   Touch devices hide scrollbars until you drag, so without this fade there
   is nothing to say more content sits off the right edge. */
.tablewrap.scrol,.scatterwrap.scrol{
-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent 100%);
mask-image:linear-gradient(90deg,#000 88%,transparent 100%)}
table.league{width:100%;border-collapse:collapse;font-size:13.5px;min-width:680px}
.league th{color:var(--mute);font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;
text-align:left;padding:12px 14px 10px;border-bottom:1px solid var(--hairline);cursor:pointer;
user-select:none;white-space:nowrap;background:none}
.league th:hover{color:var(--ink)}
.league th .si{opacity:.5;font-size:9px;margin-left:4px}
.league td{padding:8px 14px;border-bottom:1px solid var(--border);white-space:nowrap;
font-variant-numeric:tabular-nums}
.league tbody tr.mainrow{cursor:pointer}
.league tbody tr.mainrow:hover td{background:var(--surface2)}
.league .rk{color:var(--mute);width:44px}
.league .nm{color:var(--ink);font-weight:600}
.league .nmc{display:flex;align-items:center;gap:10px}
.cbadge{font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
color:var(--dim);border:1px solid var(--border);border-radius:99px;padding:2px 7px;
white-space:nowrap}
.zmark{color:var(--amber);font-weight:700;font-size:15px;margin-left:1px}
.tfoot{margin-top:12px}
.league .rg{color:var(--dim);font-size:12.5px}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.sbar{display:flex;align-items:center;gap:10px;min-width:200px}
.sbar .tr{flex:1;height:7px;background:var(--chart-grid);border-radius:4px;overflow:hidden}
.sbar .fl{height:100%;background:var(--bar);border-radius:4px;transform-origin:left;
transform:scaleX(0);transition:transform .7s cubic-bezier(.22,.8,.3,1)}
.anim .fl{transform:scaleX(1)}
.sbar .vv{color:var(--ink);font-weight:700;width:30px;text-align:right}
td.lockcell{color:var(--mute);cursor:pointer;text-align:center}
td.lockcell span{filter:blur(5px)}
/* The archetype scatter is positioned by the same pillar scores the tables
   blur, so while locked it shows the sector's shape but not who is who:
   dots, axes and quadrants stay visible, the company labels blur at the
   same 5px as the table cells, and a click opens the request gate. */
.scatterwrap.locked{cursor:pointer}
.scatterwrap.locked text.lb{filter:blur(5px)}
body.ul .iflk{display:none}
body:not(.ul) .ifop{display:none}
td.pill2{color:var(--text);text-align:center;font-weight:600}
td.pill2.nodata{color:var(--mute);font-weight:500}
th.pc{text-align:center}
tr.detail td{background:var(--surface2);padding:14px 18px;white-space:normal}
.dbars{display:grid;grid-template-columns:repeat(3,minmax(140px,1fr));gap:18px;max-width:640px}
.dbar .dl{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--mute)}
.dbar .dv{font-size:16px;font-weight:700;color:var(--ink);margin:2px 0 6px}
.dbar .tr{height:6px;background:var(--chart-grid);border-radius:3px;overflow:hidden}
.dbar .fl2{height:100%;background:var(--bar);border-radius:3px}
.dlock{font-size:13px;color:var(--dim);display:flex;gap:14px;align-items:center;flex-wrap:wrap}

/* scatter */
.scatterwrap{overflow-x:auto}
.scatterwrap svg{display:block;min-width:640px;width:100%;height:auto}
.scatterwrap .glx{stroke:var(--chart-grid)}
.scatterwrap .axt{fill:var(--mute);font-size:10px}
.scatterwrap .axl{fill:var(--dim);font-size:11px}
.scatterwrap .qd{stroke:var(--accent);opacity:.4}
.scatterwrap .qt{fill:var(--accent);font-size:10px;font-weight:600;letter-spacing:1.5px}
.scatterwrap .lb{fill:var(--dim);font-size:10px}
.scatterwrap circle{transition:opacity .3s ease}
.scatterwrap circle.dim2{opacity:.12}
.quads{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:0 34px;margin-top:6px}
.quad{padding:12px 0;border-bottom:1px solid var(--border)}
.quad p{font-size:13px;color:var(--dim);margin-top:3px}
.tip{max-width:min(320px,80vw);position:fixed;z-index:80;background:var(--raised);border:1px solid var(--accent);border-radius:8px;
padding:8px 12px;font-size:12.5px;color:var(--ink);pointer-events:none;display:none;box-shadow:var(--shadow)}
.tip .tr2{color:var(--dim);font-size:11.5px}

/* lockbox */
.lockbox{position:relative;border:1px solid var(--border);border-radius:12px;overflow:hidden;
min-height:270px;background:var(--raised);box-shadow:var(--shadow)}
.lockchart{filter:blur(9px);opacity:.6;pointer-events:none;padding:22px}
.lockbox.open .lockchart{filter:none;opacity:1;pointer-events:auto}
.lockover{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;
justify-content:center;gap:7px;background:var(--lockwash);text-align:center;padding:20px}
.lockbox.open .lockover{display:none}
.lockt{color:var(--ink);font-weight:700;font-size:16px}
.locks{color:var(--dim);font-size:13px;margin-bottom:8px}
.regrow{display:grid;grid-template-columns:110px 1fr 90px;gap:12px;align-items:center;font-size:13px;padding:4px 0}
.regrow .rl{color:var(--text)}
.regrow .tr{height:11px;background:var(--chart-grid);border-radius:6px;overflow:hidden}
.regrow .fl3{height:100%;border-radius:6px}
.regrow .rv2{color:var(--ink);font-weight:700;font-variant-numeric:tabular-nums}
.regrow .rn{color:var(--mute);font-weight:400}

/* devs */
.devs{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:0 40px}
.dev{padding:13px 0;border-bottom:1px solid var(--border)}
.dwhen{color:var(--mute);font-size:10.5px;font-weight:600;letter-spacing:.1em;
text-transform:uppercase;margin-bottom:3px}
.dv{color:var(--ink);font-weight:700;font-size:14px}
.dt{color:var(--dim);font-size:13px;margin-top:3px}

/* prior + cta */
.notice{border-left:3px solid var(--accent);background:var(--surface2);border-radius:0 10px 10px 0;
padding:14px 20px;font-size:13.5px;color:var(--text);margin-bottom:10px;max-width:56em}
.ctaband{border-top:1px solid var(--hairline);margin-top:10px}
.ctaband .body{max-width:44em}
.ctaband .btn{margin-top:8px}

/* multi-step form */
.formshell{background:var(--raised);border:1px solid var(--border);border-radius:14px;
box-shadow:var(--shadow);overflow:hidden;max-width:760px}
.fsteps{display:flex;gap:6px;padding:18px 24px 12px;flex-wrap:wrap}
.fstepdot{display:flex;align-items:center;gap:8px;font-size:11.5px;font-weight:600;
color:var(--mute);padding-right:10px}
.fstepdot i{width:20px;height:20px;border-radius:50%;border:1px solid var(--border);
display:flex;align-items:center;justify-content:center;font-style:normal;font-size:10.5px}
.fstepdot.on{color:var(--ink)}
.fstepdot.on i{background:var(--accent);border-color:var(--accent);color:var(--btn-ink)}
.fstepdot.done i{background:var(--surface2);color:var(--accent);border-color:var(--accent)}
.fbar{height:3px;background:var(--chart-grid)}
.fbarfill{height:100%;background:var(--accent);width:25%;transition:width .4s cubic-bezier(.22,.8,.3,1)}
#pform{padding:24px}
.fstep{display:none;flex-direction:column;gap:14px}
.fstep.on{display:flex;animation:fstepin .4s ease}
@keyframes fstepin{from{opacity:0;transform:translateX(10px)}to{opacity:1;transform:none}}
.fstep h3{font-size:19px}
.acbox{border:1px solid var(--border);border-radius:10px;background:var(--raised);
max-height:210px;overflow-y:auto;margin-top:-6px;box-shadow:var(--shadow)}
.acrow{display:flex;align-items:center;gap:10px;padding:9px 12px;cursor:pointer;font-size:13.5px}
.acrow:hover,.acrow.sel{background:var(--surface2)}
.acrow .acn{color:var(--ink);font-weight:600}
.acrow .acs{margin-left:auto;color:var(--mute);font-size:11.5px}
.hitcard{border:1px solid var(--accent);border-radius:10px;padding:16px 18px;
background:linear-gradient(150deg,rgba(46,102,201,.08),transparent);
display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.hitcard .hn{color:var(--ink);font-weight:700;font-size:15px;display:flex;align-items:center;gap:10px}
.hitpos{display:flex;gap:22px;margin-left:auto;flex-wrap:wrap}
.hitpos div{text-align:right}
.hitpos b{display:block;color:var(--ink);font-size:20px;font-weight:800;font-variant-numeric:tabular-nums}
.hitpos span{font-size:10.5px;color:var(--mute);letter-spacing:.08em;text-transform:uppercase}
.hitnote{font-size:12.5px;color:var(--dim);width:100%}
.opts{display:flex;flex-direction:column;gap:10px}
.opt{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--border);
border-radius:10px;padding:14px 16px;cursor:pointer;font-weight:400;transition:border-color .2s}
.opt:hover{border-color:var(--accent)}
.opt input{width:auto;margin-top:3px;accent-color:var(--accent)}
.opt span{display:flex;flex-direction:column;gap:3px;font-size:13px;color:var(--dim)}
.opt b{color:var(--ink);font-size:14px}
.opt:has(input:checked){border-color:var(--accent);background:var(--surface2)}
.numgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}
.chk{flex-direction:row;align-items:center;gap:9px;font-weight:500;color:var(--dim);font-size:13px}
.chk input{width:auto;accent-color:var(--accent)}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:14px}
label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--dim);font-weight:600}
.review{border:1px solid var(--border);border-radius:10px;padding:14px 16px;background:var(--surface2)}
.review .rr{display:flex;justify-content:space-between;gap:16px;font-size:12.5px;padding:4px 0}
.review .rr span:first-child{color:var(--mute)}
.review .rr span:last-child{color:var(--ink);font-weight:600;text-align:right}
.fnav{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:22px;
padding-top:18px;border-top:1px solid var(--border)}
.ferr{color:#C2452F;font-size:12.5px;font-weight:600}
.fdone{padding:34px 24px 40px;text-align:center}
.fnote{color:var(--accent-ink);font-size:13.5px}

/* modal */
.modal{position:fixed;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;
background:rgba(6,10,30,.55);padding:20px}
.modal[hidden]{display:none}
.mbox{position:relative;background:var(--raised);border:1px solid var(--border);border-radius:14px;
padding:32px;max-width:430px;width:100%;box-shadow:0 24px 60px rgba(4,8,30,.35)}
.mbox form{display:flex;flex-direction:column;gap:12px;margin-top:14px}
.mclose{position:absolute;top:12px;right:12px;background:none;border:0;color:var(--mute);
font-size:15px;cursor:pointer;padding:6px}
.mclose:hover{color:var(--ink)}

/* footer */
footer{border-top:1px solid var(--hairline);margin-top:44px}
.fwrap{max-width:1160px;margin:0 auto;padding:36px 4vw;display:grid;
grid-template-columns:auto 1fr auto;gap:30px;align-items:start}
footer img.fmark{height:26px;width:auto}
.fpb{color:var(--mute);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;margin-top:10px}
.fpb b{color:var(--dim)}
.fnav2{display:flex;gap:8px 22px;flex-wrap:wrap;justify-content:center}
.fnav2 a{color:var(--mute);font-size:12.5px}
.fnav2 a:hover{color:var(--text)}
.findep{color:var(--mute);font-size:11px;max-width:260px;text-align:right}
.findep a{color:inherit;text-decoration:underline}
.fpb a{color:inherit}
.fbase{max-width:1160px;margin:0 auto;padding:0 4vw 28px;display:flex;gap:6px 40px;
flex-wrap:wrap;color:var(--mute);font-size:10.5px;line-height:1.6}

/* share row */
.share{display:flex;align-items:center;gap:8px;margin-top:18px}
.sharelab{font-size:10px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;
color:var(--mute);margin-right:4px}
.sharebtn{position:relative;width:32px;height:32px;border-radius:8px;border:1px solid var(--border);
background:none;color:var(--dim);cursor:pointer;display:flex;align-items:center;justify-content:center;
font-family:inherit;padding:0}
.sharebtn:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}
.sharebtn svg{width:15px;height:15px}
.copied{position:absolute;bottom:calc(100% + 7px);left:50%;transform:translateX(-50%);
background:var(--ink);color:var(--bg);font-size:10.5px;font-weight:600;padding:3px 8px;
border-radius:6px;opacity:0;pointer-events:none;transition:opacity .2s ease;white-space:nowrap}
.sharebtn.done .copied{opacity:1}

/* point-of-collection notice */
.cnote{color:var(--mute);font-size:11.5px;line-height:1.55;margin-top:14px;max-width:44em}
.mbox .cnote{margin-top:12px}

/* legal pages */
.legal{max-width:800px;padding-top:6px}
.legal h3{margin-top:30px;font-size:16px}
.legal p,.legal li{font-size:14px;color:var(--text);margin:10px 0;max-width:46em}
.legal ul{padding-left:20px}
.legal li{margin:6px 0;color:var(--dim)}
.legal .lede{color:var(--dim);font-size:13px}

@media (max-width:980px){
 .hero{grid-template-columns:minmax(0,1fr);gap:34px;padding-top:48px}
 .cols2,.orgs,.people{grid-template-columns:1fr;gap:22px}
 .cite.big{grid-column:span 1}
}
@media (max-width:720px){
 .frow,.numgrid{grid-template-columns:1fr}
 .navin{gap:10px;height:auto;padding-top:10px;padding-bottom:10px;flex-wrap:wrap}
 .links{gap:2px;margin-left:0}
 /* the nav cannot fit five items on one row, so Methodology and About move
    into the dropdown and the trigger becomes a general Menu */
 .links a.nl:not(.cta){display:none}
 .ddi.mobonly,.ddsep{display:block}
 .ddi.mobonly{display:flex}
 .ddlbl-d{display:none}
 .ddlbl-m{display:inline}
 .dd .ddmenu{left:0;right:auto;min-width:min(270px,calc(100vw - 30px))}
 .logo img{height:34px}
 .navin{padding-top:8px;padding-bottom:8px}
 .nl{font-size:13px;padding:7px 10px}
 /* the kicker wraps on a phone, so the stamp takes its own line; the
    inline left margin would otherwise read as a stray indent */
 .kicker .stamp{display:table;margin:8px 0 0}
 .dbars{grid-template-columns:1fr}
 .stat{padding-right:14px}
 .fwrap{grid-template-columns:1fr;justify-items:start}
 .findep{text-align:left}
 .person{grid-template-columns:1fr}
 .hitpos{margin-left:0}
}
