@font-face{font-family:Oswald;src:url(fonts/Oswald-normal-500-700-latin.woff2)format('woff2');font-weight:500 700;font-display:swap}
@font-face{font-family:'Source Sans 3';src:url(fonts/SourceSans3-normal-400-700-latin.woff2)format('woff2');font-weight:400 700;font-display:swap}
@font-face{font-family:'Source Sans 3';src:url(fonts/SourceSans3-italic-400-latin.woff2)format('woff2');font-weight:400;font-style:italic;font-display:swap}

:root{
 --paper:oklch(97.5% 0.008 120);--panel:oklch(99% 0.004 120);
 --ink:oklch(24% 0.03 135);--muted:oklch(52% 0.02 130);--faint:oklch(48% 0.02 130);
 --rule:oklch(87% 0.012 125);--rule-soft:oklch(93.5% 0.008 125);
 --forest:oklch(34% 0.075 135);--forest-deep:oklch(27% 0.07 135);--leaf:oklch(45% 0.09 133);
 --wash:oklch(95.5% 0.016 128);--chip:oklch(94% 0.014 128);
 --you:oklch(52% 0.13 42);--you-wash:oklch(95% 0.028 45);
 --amber:oklch(42% 0.09 72);--amber-wash:oklch(95% 0.04 80);
 --sp:1rem;
}
.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;
 overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--forest);color:var(--paper);
 padding:.6rem 1rem;font-weight:700}
.skip:focus{left:0}
/* F13: one consistent focus ring instead of relying on UA defaults. */
:focus-visible{outline:2px solid var(--leaf);outline-offset:2px}
.mast :focus-visible,.selbar :focus-visible{outline-color:var(--paper)}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);
 font:400 17px/1.6 'Source Sans 3',system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}
.wrap{max-width:1180px;margin:0 auto;padding:0 2rem}
@media(max-width:640px){.wrap{padding:0 1.1rem}body{font-size:16px}}

/* masthead + nav */
.mast{background:var(--forest);color:var(--paper);padding:.7rem 0}
.mast .wrap{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap}
.mast a.home{color:var(--paper);text-decoration:none;font:600 .95rem/1 Oswald,sans-serif;
 letter-spacing:.09em;text-transform:uppercase}
.mast span{font-size:.8rem;color:oklch(85% 0.04 128)}
nav.tabs{border-bottom:1px solid var(--rule);margin-bottom:2.5rem;background:var(--paper);
 position:sticky;top:0;z-index:20}
nav.tabs .wrap{display:flex;gap:1.6rem;overflow-x:auto;scrollbar-width:none}
nav.tabs .wrap::-webkit-scrollbar{display:none}
nav.tabs a{padding:.85rem 0;color:var(--muted);text-decoration:none;font-size:.88rem;font-weight:600;
 white-space:nowrap;border-bottom:2px solid transparent;margin-bottom:-1px}
nav.tabs a:hover{color:var(--forest-deep)}
nav.tabs a.on{color:var(--forest-deep);border-bottom-color:var(--leaf)}

/* type */
.eyebrow{font:600 .75rem/1.4 Oswald,sans-serif;letter-spacing:.14em;text-transform:uppercase;
 color:var(--muted);margin:0 0 .9rem}
.verdict{font-size:1.9rem;line-height:1.3;font-weight:400;margin:0 0 1rem;max-width:30ch;letter-spacing:-.011em}
.verdict b{font-weight:700}
@media(max-width:640px){.verdict{font-size:1.45rem;max-width:none}}
.qual{color:var(--muted);font-size:1rem;margin:0 0 2.5rem;max-width:68ch}
h2.sec{font:600 .78rem/1.4 Oswald,sans-serif;letter-spacing:.14em;text-transform:uppercase;
 color:var(--muted);margin:0 0 .2rem}
section{margin:0 0 3rem}
.n{color:var(--muted);font-size:.85rem}
.na{color:var(--faint);font-style:italic}
.caution{color:var(--you);font-weight:600;font-size:.88rem}
.tnum{font-variant-numeric:tabular-nums}

/* controls */
.controls{border-top:1.5px solid var(--ink);border-bottom:1px solid var(--rule);
 padding:1.1rem 0 1.2rem;margin:0 0 1.75rem}
.searchrow{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;margin-bottom:1rem}
.search{flex:1 1 16rem;min-width:0;position:relative}
.search input{width:100%;font:inherit;font-size:1rem;padding:.6rem .8rem;background:var(--panel);
 border:1px solid var(--rule);color:var(--ink);border-radius:0}
.search input:focus{outline:2px solid var(--leaf);outline-offset:-1px;border-color:var(--leaf)}
.facets{display:flex;flex-direction:column;gap:.65rem}
.facet{display:flex;gap:.5rem;align-items:baseline}
.facet>b{font:600 .68rem/1.9 Oswald,sans-serif;letter-spacing:.11em;text-transform:uppercase;
 color:var(--faint);width:7.5rem;flex:none;padding-top:.2rem}
/* Chips wrap inside their own column, so a second row lines up under the first
   chip rather than sliding back under the label. */
.facet .chips{display:flex;gap:.4rem;flex-wrap:wrap;flex:1 1 auto;min-width:0}
@media(max-width:640px){
 .facet{display:block}
 .facet>b{width:auto;display:block;margin-bottom:.35rem}
}
.chip{font:600 .82rem/1 'Source Sans 3',sans-serif;padding:.42rem .7rem;background:var(--chip);
 color:var(--muted);border:1px solid transparent;cursor:pointer;user-select:none;white-space:nowrap}
.chip:hover{color:var(--forest-deep)}
.chip[aria-pressed=true]{background:var(--forest);color:var(--paper);border-color:var(--forest)}
.chip .ct{opacity:.6;font-weight:400;margin-left:.3rem}
.clearall{background:none;border:0;color:var(--you);font:600 .85rem 'Source Sans 3',sans-serif;
 cursor:pointer;padding:.42rem .2rem}

/* live stat strip */
.stats{display:flex;gap:2.5rem;flex-wrap:wrap;margin:0 0 1.5rem;padding-bottom:1.25rem;
 border-bottom:1px solid var(--rule)}
.stat b{display:block;font:600 .68rem/1.9 Oswald,sans-serif;letter-spacing:.11em;
 text-transform:uppercase;color:var(--faint)}
.stat i{display:block;font-style:normal;font-size:1.5rem;font-weight:600;font-variant-numeric:tabular-nums;
 line-height:1.2}
.stat u{display:block;text-decoration:none;font-size:.82rem;color:var(--muted)}

/* data table doubling as the chart */
.scrollx{overflow-x:auto}
table.grid{width:100%;border-collapse:collapse}
table.grid th.col{font:600 .68rem/1.4 Oswald,sans-serif;letter-spacing:.1em;text-transform:uppercase;
 color:var(--muted);text-align:left;padding:0 .7rem .5rem;border-bottom:1.5px solid var(--ink);white-space:nowrap}
table.grid th.col.r{text-align:right}
table.grid th.col button{background:none;border:0;font:inherit;color:inherit;cursor:pointer;
 letter-spacing:inherit;text-transform:inherit}
table.grid th.col button:hover{color:var(--forest-deep)}
table.grid th.col .dir{color:var(--leaf)}
table.grid td{padding:.6rem .7rem;border-bottom:1px solid var(--rule-soft);vertical-align:middle}
table.grid td.r{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
table.grid td.cty{font-weight:600;font-size:.95rem;white-space:nowrap}
table.grid td.pick{width:2.5rem;padding-left:0}
table.grid td.pick input{width:20px;height:20px}
table.grid th.col button{padding:.45rem 0}
table.grid .meta{display:block;font-weight:400;font-size:.76rem;color:var(--faint);letter-spacing:.01em}
table.grid tr.me td{background:var(--you-wash)}
table.grid tr.me td.cty{color:var(--you)}
table.grid tr.sel td{background:var(--wash)}
table.grid tr.me.sel td{background:var(--you-wash)}
.track{position:relative;height:20px;min-width:90px}
.track .dot{position:absolute;top:50%;width:11px;height:11px;margin:-5.5px 0 0 -5.5px;border-radius:50%;
 background:var(--muted);opacity:.5}
tr.me .track .dot{background:var(--you);opacity:1;width:14px;height:14px;margin:-7px 0 0 -7px}
.track .med{position:absolute;top:2px;bottom:2px;width:1px;background:var(--forest);opacity:.35}
.axis{position:relative;height:1.5rem;border-top:1px solid var(--rule);font-size:.74rem;color:var(--faint);margin-top:.3rem}
.axis span{position:absolute;top:.35rem;white-space:nowrap}
.axis .a{left:0}.axis .z{right:0}.axis .m{transform:translateX(-50%)}

.flag{display:inline-block;font-size:.66rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
 padding:.08rem .35rem;vertical-align:1px;margin-left:.25rem;background:var(--amber-wash);
 color:var(--amber);border:1px solid var(--amber)}
.flag-q{background:oklch(95% 0.03 30);color:var(--you);border-color:var(--you)}
.legendbox dl{display:grid;grid-template-columns:auto 1fr;gap:.35rem .8rem;margin:.4rem 0 0;
 font-size:.85rem;align-items:baseline}
.legendbox dt{margin:0}
.legendbox dd{margin:0;color:var(--muted)}
.info{font-size:.62rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:.05rem .3rem;
 background:var(--chip);color:var(--muted);cursor:help;margin-left:.25rem;vertical-align:2px}

/* selection bar */
.selbar{position:sticky;bottom:0;background:var(--forest);color:var(--paper);padding:.8rem 0;
 margin-top:1.5rem;z-index:15}
.selbar .wrap{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.selbar p{margin:0;font-size:.95rem}
.selbar .go{background:var(--paper);color:var(--forest-deep);text-decoration:none;padding:.5rem 1rem;
 font-weight:700;font-size:.9rem}
.selbar .drop{background:none;border:1px solid var(--paper);color:var(--paper);
 font:600 .85rem 'Source Sans 3',sans-serif;padding:.5rem .9rem;cursor:pointer}
.act{display:inline-block;background:var(--forest);color:var(--paper);text-decoration:none;
 padding:.75rem 1.4rem;font-weight:600;font-size:.95rem}
.act:hover{background:var(--forest-deep)}
.empty{padding:3rem 0;text-align:center;color:var(--muted)}
footer.foot{border-top:1px solid var(--rule);margin-top:3rem;padding:1.25rem 0 3rem;
 color:var(--muted);font-size:.83rem}
footer.foot p{margin:.3rem 0;max-width:80ch}
@media print{nav.tabs,.controls,.selbar,.mast{display:none!important}}

.over{color:var(--you);font-weight:600}

table.grid td.nw{white-space:nowrap}

/* ranked peer list */
.plotwrap{position:relative;margin:1rem 0 .3rem;max-width:760px}
table.rank{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
table.rank td{padding:.42rem 0;border-bottom:1px solid var(--rule-soft);vertical-align:middle}
table.rank tr:last-child td{border-bottom:0}
table.rank .nm{width:12rem;font-weight:600;font-size:.95rem;white-space:nowrap}
table.rank .nm .meta{display:block;font-weight:400;font-size:.76rem;color:var(--faint)}
table.rank .amt{width:7rem;text-align:right;padding-right:1.5rem;font-size:.95rem;color:var(--muted)}
table.rank .track{position:relative;height:22px}
table.rank .track .dot{position:absolute;top:50%;width:11px;height:11px;margin:-5.5px 0 0 -5.5px;
 border-radius:50%;background:var(--muted);opacity:.55}
table.rank tr.me .nm,table.rank tr.me .amt{color:var(--you);font-weight:700}
table.rank tr.me .track .dot{background:var(--you);opacity:1;width:15px;height:15px;margin:-7.5px 0 0 -7.5px}
.fact{border-top:2px solid var(--ink);padding-top:1rem;margin:0 0 3rem;max-width:66ch}
.fact p{margin:0 0 .6rem}.fact p:last-child{margin:0}
.fact .lede{font-weight:600;font-size:1.1rem}
.callout{border-top:2px solid var(--you);padding-top:1rem;margin:0 0 2.5rem;max-width:66ch}
.callout h2{font:600 1.05rem/1.35 'Source Sans 3',sans-serif;margin:0 0 .5rem;color:var(--you)}

/* structure matrix */
table.matrix td{font-size:.86rem;vertical-align:top}
table.matrix .ttl{display:block;font-weight:600;line-height:1.35}
table.matrix .amt{display:block;color:var(--muted);font-variant-numeric:tabular-nums;margin-top:.1rem}
table.matrix td.merged{background:var(--wash);text-align:center;
 border-left:2px solid var(--paper);border-right:2px solid var(--paper)}
table.matrix td.merged .covers{display:block;font-size:.72rem;color:var(--faint);
 text-transform:uppercase;letter-spacing:.09em;margin-top:.25rem}
table.matrix tr.me td.merged{background:oklch(93% 0.035 45)}
table.matrix td.nolayer{color:var(--faint);font-style:italic}
table.matrix td.dash{color:var(--faint)}
.legend{display:flex;gap:1.8rem;flex-wrap:wrap;margin:.9rem 0 0;font-size:.82rem;color:var(--muted)}
.legend i{display:inline-block;width:.85rem;height:.85rem;background:var(--wash);
 vertical-align:-1px;margin-right:.35rem;border:1px solid var(--muted)}

/* printable brief */
.briefdoc{background:var(--panel)}
.backlink{max-width:7.6in;margin:1rem auto;padding:0 .45in;font-size:.9rem;color:var(--muted)}
.brief{max-width:7.6in;margin:0 auto 3rem;padding:0 .45in}
.brief header{border-bottom:2.5px solid var(--forest);padding-bottom:.55rem;margin-bottom:1.3rem}
.brief h1{font:600 1.55rem/1.2 Oswald,sans-serif;margin:0;letter-spacing:.01em}
.brief .sub{color:var(--muted);font-size:.88rem;margin:.3rem 0 0}
.brief .leadline{font-size:1.25rem;line-height:1.4;margin:0 0 1.6rem;max-width:44ch}
.brief section{margin:0 0 1.7rem;break-inside:avoid}
.brief h2{font:600 .76rem/1.4 Oswald,sans-serif;letter-spacing:.13em;text-transform:uppercase;
 color:var(--muted);margin:0 0 .6rem;padding-bottom:.35rem;border-bottom:1px solid var(--rule)}
.kv{border-collapse:collapse;width:100%}
.kv th,.kv td{padding:.4rem .6rem .4rem 0;border-bottom:1px solid var(--rule-soft);
 text-align:left;vertical-align:top;font-size:.92rem}
.kv th{width:13rem;font-weight:600}
.brief .method{border-top:1px solid var(--rule);padding-top:.8rem;font-size:.78rem;color:var(--muted)}
.brief .method h2{border:0;padding:0}
.brief .method ul{margin:.3rem 0;padding-left:1.1rem}
.brief .method li{margin:.25rem 0}
@media print{
 .backlink,.skip,.noprint{display:none!important}
 body.briefdoc{background:#fff}
 html{font-size:10.5pt}
 .brief{max-width:none;padding:0}
 /* B3: overflow:auto CLIPS in print, silently truncating right-hand columns. */
 .scrollx{overflow:visible!important}
 /* B2: without this every peer dot and the median line drop out, leaving one
    lone dot on an empty track above a fully labelled axis. */
 table.rank .track .dot,.track .dot,.track .med,
 table.rank tr.me .track .dot,table.grid tr.me td,table.matrix td.merged,
 .flag,.info{-webkit-print-color-adjust:exact;print-color-adjust:exact}
 /* F27: hairlines at 1.13:1 disappear on paper and on a photocopy. */
 table.grid td,table.rank td,.kv th,.kv td{border-bottom-color:#b8bdb2}
 table.grid th.col{border-bottom-color:#5f6b57}
 /* F25: let long peer tables break across pages properly. */
 .brief section{break-inside:auto}
 thead{display:table-header-group}
 tr{break-inside:avoid}
 a{color:inherit;text-decoration:none}
 @page{margin:.6in}
}

.legend .dashkey{color:var(--muted);font-weight:700;margin-right:.2rem}

/* F14: the sticky nav and selection bar could cover a focused row. */
main :focus-visible{scroll-margin-block:5rem 6rem}
/* F50: at phone widths the tab strip scrolls with no cue that more exists. */
@media(max-width:640px){
  nav.tabs .wrap{scrollbar-width:thin}
  nav.tabs .wrap::-webkit-scrollbar{display:block;height:3px}
  nav.tabs{background:linear-gradient(to left,var(--wash),transparent 3rem)}
  .selbar .wrap{gap:.5rem}
  .selbar p{flex:1 0 100%;font-size:.85rem}
}
/* F48: the ranked list must not overflow at 375px. */
@media(max-width:640px){
  table.rank .nm{width:auto;white-space:normal}
  table.rank .amt{width:5.5rem;padding-right:.6rem}
  table.rank .track{min-width:60px}
  .axis .a,.axis .z{display:none}
}
/* F39: the no-script fallback page uses these. */
.scopebar{display:flex;gap:1.2rem;flex-wrap:wrap;margin:0 0 1rem;padding:.7rem .9rem;
 background:var(--panel);border:1px solid var(--rule);font-size:.93rem}
.picker{background:var(--panel);border:1px solid var(--rule);padding:.9rem 1.1rem;margin:0 0 1rem}
.picker .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.3rem .8rem;margin:.7rem 0}
.picker button{background:var(--forest);color:var(--paper);border:0;padding:.5rem 1rem;font:inherit;font-weight:600;cursor:pointer}
.note{color:var(--muted);font-size:.88rem}
.sub{color:var(--muted);margin:.15rem 0 1rem;font-size:.94rem}
.youtag{background:var(--leaf);color:var(--paper);font-size:.68rem;padding:.05rem .35rem;
 font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.alttitle{display:block;font-weight:400;font-size:.8rem;color:var(--muted)}
