/* ==========================================================================
   Hubstake stylesheet.

   Three parts, in this order:
     1. the token block from the design bundle (design/bundle/hubstake.css).
        The designer kept our existing token NAMES, so swapping the values here
        re-skins the pages the bundle does not cover -- methodology, pricing,
        coverage, the legal pages -- without touching their markup.
     2. the legacy component styles, for those pages.
     3. the bundle's component styles.  These come last on purpose: where a
        class name appears in both (.btn, .wrap, .label, .fine), the bundle wins.
   ========================================================================== */

/* IBM Plex, self-hosted.  Nothing on the page waits on a third-party font host,
   which matters when the index is tens of thousands of pages.  Sans is a variable
   font, so one file covers every weight; Mono ships one file per weight. */
@font-face{font-family:"IBM Plex Sans";src:url("/assets/fonts/ibm-plex-sans.woff2") format("woff2");
  font-weight:100 700;font-style:normal;font-display:swap;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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"IBM Plex Mono";src:url("/assets/fonts/ibm-plex-mono-400.woff2") format("woff2");
  font-weight:400;font-style:normal;font-display:swap;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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"IBM Plex Mono";src:url("/assets/fonts/ibm-plex-mono-500.woff2") format("woff2");
  font-weight:500;font-style:normal;font-display:swap;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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"IBM Plex Mono";src:url("/assets/fonts/ibm-plex-mono-600.woff2") format("woff2");
  font-weight:600;font-style:normal;font-display:swap;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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}

:root{
  --bg:oklch(97.8% 0.004 254);
  --surface:oklch(100% 0 0);
  --surface-2:oklch(95.8% 0.006 254);
  --surface-3:oklch(91.5% 0.009 254);
  --line:oklch(87% 0.011 254);
  --line-soft:oklch(92.5% 0.007 254);

  --navy:#132038;
  --ink:#191c22;
  --ink-2:#454a54;
  --ink-3:#666b76;

  --blue:#1f56d8;
  --blue-600:#1a49bb;
  --blue-700:#153b97;
  --blue-wash:#e9effc;
  --blue-ring:rgba(31,86,216,.28);
  --on-accent:#ffffff;

  --series-1:#1f56d8;
  --series-2:#132038;
  --series-3:oklch(80% 0.02 254);
  --pos:#17744a;
  --neg:#b0281f;

  --ok:#17744a;
  --ok-wash:#e7f3eb;
  --ok-line:#b3d9c1;
  --warn:#8a4f00;
  --warn-wash:#fcf1dc;
  --warn-line:#e3b867;

  --radius:10px;
  --radius-sm:6px;
  --radius-xs:3px;
  --maxw:1240px;
  --gut:clamp(16px,4vw,40px);

  --shadow-sm:0 1px 0 rgba(19,32,56,.05);
  --shadow:0 1px 2px rgba(19,32,56,.06),0 4px 14px rgba(19,32,56,.06);
  --shadow-lg:0 2px 4px rgba(19,32,56,.06),0 18px 44px rgba(19,32,56,.13);
  --sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",Helvetica,Arial,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}

/* ---------- legacy components ---------- */
/* ============================================================
   Hubstake design system — light theme only, navy/blue palette
   ============================================================ */


*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink-2);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
h1,h2,h3,h4,h5{font-family:var(--serif);color:var(--ink);font-weight:600;line-height:1.2;letter-spacing:-.017em;margin:0 0 .5em}
h1{font-size:clamp(1.85rem,1.35rem+1.7vw,2.6rem);letter-spacing:-.024em}
h2{font-size:clamp(1.3rem,1.1rem+.7vw,1.6rem);letter-spacing:-.02em}
h3{font-size:1.06rem}
h4{font-size:.95rem}
p{margin:0 0 1rem}
a{color:var(--blue);text-decoration:none}
a:hover{color:var(--blue-600);text-decoration:underline;text-underline-offset:2px}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:3px}
hr{border:0;border-top:1px solid var(--line);margin:2.5rem 0}
small{font-size:.82rem}
ul,ol{margin:0 0 1rem;padding-left:1.25rem}
li{margin:.3rem 0}
strong{color:var(--ink);font-weight:640}

.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--gut)}
.narrow{max-width:760px}
.muted{color:var(--ink-2)}
.dim{color:var(--ink-3)}
.num{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
a.sr-only:focus{position:fixed;top:12px;left:12px;width:auto;height:auto;clip:auto;padding:.6rem 1rem;background:var(--navy);color:#fff;border-radius:var(--radius-xs);z-index:100}

.eyebrow{
  font-size:.74rem;font-weight:670;letter-spacing:.09em;text-transform:uppercase;
  color:var(--ink-3);margin:0 0 .5rem;
}

/* ---------- header ---------- */
.site-head{
  position:sticky;top:0;z-index:50;
  background:rgba(255,255,255,.88);
  backdrop-filter:saturate(180%) blur(12px);
  -webkit-backdrop-filter:saturate(180%) blur(12px);
  border-bottom:1px solid var(--line);
}
.site-head .bar{
  max-width:var(--maxw);margin:0 auto;padding:0 var(--gut);
  height:62px;display:flex;align-items:center;gap:1.5rem;
}
.site-head .brand{display:inline-flex;align-items:center;gap:.5rem;text-decoration:none!important}
.site-head .brand .logo{width:26px;height:26px;border-radius:7px;flex:none;display:block}
.site-head .brand .mark{font-size:1.06rem;font-weight:700;color:var(--navy);letter-spacing:-.03em}
.badge{
  font-size:.64rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  color:var(--blue-700);background:var(--blue-wash);border:1px solid #D2E1FD;
  padding:.16rem .42rem;border-radius:5px;
}
.site-head .nav{margin-left:auto;display:flex;align-items:center;gap:.25rem}
.site-head .nav a{
  color:var(--ink-2);font-size:.9rem;font-weight:520;
  padding:.45rem .7rem;border-radius:var(--radius-xs);text-decoration:none;
}
.site-head .nav a:hover{color:var(--navy);background:var(--surface-2);text-decoration:none}
.site-head .nav a[aria-current="page"]{color:var(--navy);font-weight:620;background:var(--surface-2)}
.site-head .nav .cta{
  margin-left:.4rem;background:var(--blue);color:#fff;font-weight:600;
  padding:.45rem .85rem;box-shadow:var(--shadow-sm);
}
.site-head .nav .cta:hover{background:var(--blue-600);color:#fff}
@media(max-width:720px){
  /* Scoped under .site-head like the rest of the dead header rules.  Unscoped,
     .nav{width:100%;overflow-x:auto;margin-left:0} was still hitting the live
     header and turning it into a full-width scroll strip on a phone, which put
     the account button to the left of the logo. */
  .site-head .bar{height:auto;padding-top:.65rem;padding-bottom:.65rem;flex-wrap:wrap;gap:.5rem}
  .site-head .nav{margin-left:0;width:100%;overflow-x:auto;gap:.1rem;padding-bottom:.1rem}
  .site-head .nav a{padding:.4rem .55rem;font-size:.85rem;white-space:nowrap}
  .site-head .nav .cta{margin-left:.2rem}
}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.45rem;
  font:inherit;font-size:.92rem;font-weight:600;line-height:1;
  padding:.72rem 1.15rem;border-radius:var(--radius-sm);
  border:1px solid transparent;cursor:pointer;text-decoration:none!important;
  transition:background .12s ease, border-color .12s ease, box-shadow .12s ease;
}
.btn-primary{background:var(--blue);color:#fff;box-shadow:0 1px 2px rgba(37,99,235,.25)}
.btn-primary:hover{background:var(--blue-600);color:#fff}
.btn-secondary{background:var(--surface);color:var(--navy);border-color:var(--line);box-shadow:var(--shadow-sm)}
.btn-secondary:hover{border-color:#C3D2E6;background:#fff;color:var(--navy)}
.btn-ghost{background:transparent;color:var(--blue);padding-left:0;padding-right:0}
.btn-lg{padding:.85rem 1.4rem;font-size:.98rem}

/* ---------- cards ---------- */
.card{
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius);padding:1.35rem;box-shadow:var(--shadow-sm);
}
.card-flush{padding:0;overflow:hidden}
.grid{display:grid;gap:1rem}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:900px){.g3,.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.g2,.g3,.g4{grid-template-columns:minmax(0,1fr)}}

/* ---------- stat tiles ---------- */
.stat{padding:1.05rem 1.15rem;border-radius:var(--radius-sm);background:var(--surface)}
.stat .k{font-size:.73rem;font-weight:660;letter-spacing:.075em;text-transform:uppercase;color:var(--ink-3);margin-bottom:.4rem}
.stat .v{font-size:1.5rem;font-weight:660;color:var(--navy);line-height:1.15}
.stat .s{font-size:.8rem;margin-top:.25rem;color:var(--ink-3)}
.statrow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line-soft);
  border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm)}
@media(max-width:860px){.statrow{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:420px){.statrow{grid-template-columns:minmax(0,1fr)}}

/* ---------- pills / chips ---------- */
.pill{
  display:inline-flex;align-items:center;gap:.35rem;font-size:.74rem;font-weight:620;
  padding:.2rem .5rem;border-radius:999px;border:1px solid var(--line);
  background:var(--surface-2);color:var(--ink-2);white-space:nowrap;
}
.pill.s-developer_cfa{background:var(--blue-wash);border-color:#D2E1FD;color:var(--blue-700)}
.pill.s-city_contract{background:#E7ECF4;border-color:#D3DDEB;color:var(--navy)}
.pill.s-txdot{background:var(--surface-2);border-color:var(--line);color:var(--ink-3)}
.chip{
  display:inline-flex;align-items:center;gap:.4rem;font-size:.84rem;font-weight:550;
  padding:.4rem .75rem;border-radius:999px;border:1px solid var(--line);
  background:var(--surface);color:var(--ink-2);text-decoration:none!important;box-shadow:var(--shadow-sm);
}
.chip:hover{border-color:var(--blue);color:var(--blue-700);background:var(--blue-wash)}

/* ---------- search box ---------- */
.sbox{display:flex;align-items:center;gap:.5rem;background:var(--surface);
  border:1px solid var(--line);border-radius:999px;padding:.35rem .35rem .35rem .9rem;
  box-shadow:var(--shadow);transition:border-color .12s, box-shadow .12s}
.sbox:focus-within{border-color:var(--blue);box-shadow:0 0 0 4px var(--blue-ring)}
.sbox .ico{width:18px;height:18px;flex:none;fill:none;stroke:var(--ink-3);stroke-width:2;stroke-linecap:round}
.sbox input{flex:1;min-width:0;border:0;outline:0;background:transparent;font:inherit;
  font-size:.96rem;color:var(--ink);padding:.5rem 0}
.sbox input::placeholder{color:var(--ink-3)}
.sbox .btn{border-radius:999px;padding-left:1.15rem;padding-right:1.15rem}
.sbox.lg input{font-size:1.02rem;padding:.65rem 0}

/* ---------- filters ---------- */
.filters{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;margin:1.25rem 0 1rem}
.filters select{
  font:inherit;font-size:.87rem;color:var(--ink-2);background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius-xs);padding:.45rem 2rem .45rem .7rem;
  appearance:none;box-shadow:var(--shadow-sm);cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5L6 8l3-3.5' fill='none' stroke='%236B7F99' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right .55rem center;background-size:12px;
}
.filters select:hover{border-color:#C3D2E6}

/* ---------- item cards / result rows ---------- */
.itemcard{
  display:block;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:1rem 1.1rem;text-decoration:none!important;box-shadow:var(--shadow-sm);
  transition:border-color .12s, box-shadow .12s, transform .12s;
}
.itemcard:hover{border-color:#BFD2F5;box-shadow:var(--shadow);transform:translateY(-1px)}
.itemcard .cat{font-size:.7rem;font-weight:680;letter-spacing:.075em;text-transform:uppercase;color:var(--blue-700)}
.itemcard .nm{display:block;color:var(--navy);font-weight:620;font-size:1rem;margin:.3rem 0 .55rem;line-height:1.3}
.itemcard .pv{display:block;color:var(--navy);font-weight:660;font-size:1.22rem}
.itemcard .pv small{font-size:.74rem;font-weight:500;color:var(--ink-3);font-family:var(--sans)}
.itemcard .rg{display:block;color:var(--ink-3);font-size:.8rem;margin-top:.2rem}

.results{display:flex;flex-direction:column;gap:1px;background:var(--line-soft);
  border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm)}
.results:empty{display:none}
.rtable .r{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.15rem 1rem;
  padding:.85rem 1.05rem;background:var(--surface);text-decoration:none!important;align-items:baseline}
.rtable .r:hover{background:var(--blue-wash)}
.rtable .r .nm{color:var(--navy);font-weight:600;font-size:.97rem;grid-column:1;line-height:1.35}
.rtable .r .med{grid-column:2;grid-row:1;text-align:right;color:var(--navy);font-weight:660;font-size:1rem;white-space:nowrap}
.rtable .r .sub{grid-column:1;grid-row:2;color:var(--ink-3);font-size:.79rem}
.rtable .r .rng{grid-column:2;grid-row:2;text-align:right;color:var(--ink-3);font-size:.79rem;white-space:nowrap}

/* ---------- tables ---------- */
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
/* Scoped away from the bundle's tables: a bare `thead th{position:sticky}` was
   leaking onto .obs-table and .bands. */
table:not(.obs-table):not(.bands){width:100%;border-collapse:collapse;font-size:.88rem}
table:not(.obs-table):not(.bands) thead th{
  position:sticky;top:0;background:var(--surface-2);
  font-size:.7rem;font-weight:680;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);
  text-align:left;padding:.6rem .7rem;border-bottom:1px solid var(--line);white-space:nowrap;
}
tbody td{padding:.6rem .7rem;border-bottom:1px solid var(--line-soft);vertical-align:top;color:var(--ink-2)}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover{background:var(--surface-2)}
th.n,td.n{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}
td.n strong{color:var(--navy)}
.receipt{
  display:inline-flex;align-items:center;gap:.2rem;font-size:.78rem;font-weight:600;
  color:var(--blue);background:var(--blue-wash);border:1px solid #D8E5FD;
  padding:.16rem .45rem;border-radius:var(--radius-xs);white-space:nowrap;text-decoration:none!important;
}
.receipt:hover{background:#DCE9FE;border-color:#BFD5FB}

/* ---------- charts ---------- */
.chart figcaption{margin-bottom:.6rem}
.chart-box{position:relative}
.chart svg{width:100%;height:auto;display:block;overflow:visible}
.chart .grid{stroke:var(--line);stroke-width:1}
.chart .tick{fill:var(--ink-3);font-size:11px;font-family:var(--sans)}
.chart .line{stroke:var(--blue);stroke-width:2.25;stroke-linejoin:round;stroke-linecap:round}
.chart .area{fill:var(--blue);opacity:.07}
.chart .dot{fill:#fff;stroke:var(--blue);stroke-width:2.25}
.chart .hit{fill:transparent;cursor:pointer}
.chart .pt:hover .dot,.chart .pt:focus .dot{fill:var(--blue)}
.chart .dlabel{fill:var(--navy);font-size:11px;font-weight:640;font-family:var(--mono)}
.tip{
  position:absolute;transform:translate(-50%,-135%);pointer-events:none;
  background:var(--navy);color:#fff;font-size:.76rem;line-height:1.35;
  padding:.4rem .55rem;border-radius:var(--radius-xs);white-space:nowrap;box-shadow:var(--shadow-lg);z-index:5;
}

/* segment bars */
.seg .rows{display:flex;flex-direction:column;gap:.7rem;margin-top:.9rem}
.seg .row{display:grid;grid-template-columns:130px minmax(0,1fr) 88px 58px;gap:.6rem;align-items:center;font-size:.84rem}
.seg .lab{display:flex;align-items:center;gap:.4rem;color:var(--ink-2);font-weight:550}
.seg .swatch{width:9px;height:9px;border-radius:2px;flex:none}
.seg .track{position:relative;height:22px;background:var(--surface-2);border-radius:5px;overflow:hidden}
.seg .bar{position:absolute;left:0;top:0;bottom:0;border-radius:5px}
.seg .rng{position:absolute;top:3px;bottom:3px;border:1.5px solid rgba(15,39,71,.32);border-radius:4px}
.seg .none{display:flex;align-items:center;height:100%;padding-left:.5rem;font-size:.74rem;color:var(--ink-3)}
.seg .val{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--navy);font-weight:620}
.seg .n{text-align:right;font-size:.76rem}
.seg .row[data-empty="true"] .val{color:var(--ink-3);font-weight:500}
@media(max-width:640px){.seg .row{grid-template-columns:110px minmax(0,1fr) 74px;}.seg .n{display:none}}

/* distribution strip */
.dist{margin-top:.25rem}
.dist .bar{position:relative;height:30px;background:linear-gradient(90deg,var(--surface-2),var(--surface-3));border-radius:7px}
.dist .iqr{position:absolute;top:0;bottom:0;background:var(--blue-wash);border:1px solid #C7DBFC;border-radius:6px}
.dist .med{position:absolute;top:-4px;bottom:-4px;width:2.5px;background:var(--blue);border-radius:2px}
.dist .obs{position:absolute;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;
  background:var(--navy);opacity:.42}
.dist .ends{display:flex;justify-content:space-between;margin-top:.4rem;font-size:.75rem;color:var(--ink-3);
  font-family:var(--mono);font-variant-numeric:tabular-nums}

/* ---------- notices ---------- */
.notice{
  background:var(--blue-wash);border:1px solid #D6E4FD;border-left:3px solid var(--blue);
  border-radius:var(--radius-sm);padding:.9rem 1.1rem;color:var(--ink-2);font-size:.9rem;margin:0;
}
.notice.warn{background:#FFF8EC;border-color:#F5E3C0;border-left-color:#C98A17}

/* ---------- breadcrumb ---------- */
.crumb{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;font-size:.82rem;color:var(--ink-3);margin-bottom:1.1rem}
.crumb a{color:var(--ink-3)}
.crumb a:hover{color:var(--blue)}
.crumb span[aria-current]{color:var(--ink-2);font-weight:550}

/* ---------- hero ---------- */
.hero{
  position:relative;overflow:hidden;
  background:
    radial-gradient(1100px 380px at 12% -10%, #E6EFFE 0%, rgba(230,239,254,0) 62%),
    radial-gradient(760px 320px at 92% 0%, #DCEBE2 0%, rgba(220,235,226,0) 60%),
    linear-gradient(180deg,#FFFFFF 0%, var(--bg) 100%);
  border-bottom:1px solid var(--line);
}
.hero .wrap{padding-top:3.6rem;padding-bottom:3rem}
.hero h1{max-width:19ch}
.hero .lede{font-size:1.06rem;color:var(--ink-2);max-width:60ch;margin-bottom:1.6rem}
@media(max-width:640px){.hero .wrap{padding-top:2.4rem;padding-bottom:2.2rem}}

.section{padding:3.2rem 0}
.section-tight{padding:2.2rem 0}
.section-head{margin-bottom:1.5rem}
.section-head p{max-width:64ch;margin:0}

/* ---------- pricing ---------- */
.plans{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.1rem;align-items:start}
@media(max-width:940px){.plans{grid-template-columns:minmax(0,1fr)}}
.plan{position:relative;display:flex;flex-direction:column;height:100%}
.plan.featured{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue), var(--shadow)}
.plan .tag{position:absolute;top:-11px;left:1.35rem;font-size:.66rem;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;background:var(--blue);color:#fff;padding:.22rem .55rem;border-radius:5px}
.plan h3{margin-bottom:.2rem}
.plan .price{font-size:2rem;font-weight:680;color:var(--navy);line-height:1.1;margin:.5rem 0 .1rem}
.plan .per{font-size:.82rem;color:var(--ink-3);margin-bottom:.9rem}
.plan .desc{font-size:.88rem;color:var(--ink-2);min-height:2.6em;margin-bottom:1rem}
.plan ul{list-style:none;padding:0;margin:0 0 1.4rem;display:flex;flex-direction:column;gap:.5rem}
.plan li{display:flex;gap:.55rem;font-size:.88rem;color:var(--ink-2);margin:0;line-height:1.45}
.plan li svg{width:15px;height:15px;flex:none;margin-top:.22rem;stroke:var(--blue);stroke-width:2.4;fill:none;stroke-linecap:round;stroke-linejoin:round}
.plan .btn{margin-top:auto;width:100%}

/* ---------- FAQ ---------- */
.faq{border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{
  list-style:none;cursor:pointer;padding:1rem 2rem 1rem 0;position:relative;
  color:var(--navy);font-weight:600;font-size:.97rem;
}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{
  content:"";position:absolute;right:.4rem;top:1.35rem;width:9px;height:9px;
  border-right:2px solid var(--ink-3);border-bottom:2px solid var(--ink-3);
  transform:rotate(45deg);transition:transform .15s ease;
}
.faq details[open] summary::after{transform:rotate(-135deg)}
.faq details p{margin:0 0 1rem;color:var(--ink-2);font-size:.92rem;max-width:72ch}

/* ---------- prose (legal + methodology) ---------- */
.prose h2{margin-top:2.4rem;padding-top:0}
.prose h3{margin-top:1.6rem;color:var(--navy)}
.prose p,.prose li{color:var(--ink-2)}
.prose .lead{font-size:1.04rem;color:var(--ink-2);max-width:64ch}
.prose ul{padding-left:1.15rem}
.toc{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.1rem 1.3rem;box-shadow:var(--shadow-sm)}
.toc ol{margin:0;padding-left:1.15rem;font-size:.9rem}
.toc li{margin:.3rem 0}

/* ---------- CTA band ---------- */
.cta{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1.2rem;
  background:linear-gradient(135deg,#14181B 0%,#25332C 100%);
  border:0;color:#DDE7F5;padding:1.6rem 1.8rem;border-radius:var(--radius);box-shadow:var(--shadow);
}
.cta h3{color:#fff;margin-bottom:.3rem}
.cta p{color:#B9CBE2;margin:0;font-size:.92rem}
.cta .btn-primary{background:#fff;color:var(--navy)}
.cta .btn-primary:hover{background:#DCEBE2;color:var(--navy)}

/* ---------- footer ---------- */
.site-foot{background:var(--surface);border-top:1px solid var(--line);margin-top:4rem;padding:2.8rem 0 2.2rem}
.site-foot .cols{display:grid;grid-template-columns:1.4fr repeat(4,minmax(0,1fr));gap:1.8rem}
@media(max-width:860px){.site-foot .cols{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.6rem}}
.site-foot h4{font-size:.73rem;font-weight:680;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-bottom:.7rem}
.site-foot a{display:block;color:var(--ink-2);font-size:.88rem;padding:.17rem 0;text-decoration:none}
.site-foot a:hover{color:var(--blue)}
.site-foot .about p{font-size:.85rem;color:var(--ink-3);margin:.6rem 0 0;max-width:34ch}
.foot-legal{margin-top:2.4rem;padding-top:1.4rem;border-top:1px solid var(--line-soft);
  font-size:.81rem;color:var(--ink-3);max-width:80ch}
.foot-legal a{display:inline}

/* footer brand must stay inline even though footer links are block */
.site-foot .brand{display:inline-flex;align-items:center;gap:.5rem}
.site-foot .brand .mark{color:var(--navy)}

/* hero split layout + sample receipt card */
.hero-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:2.6rem;align-items:center}
@media(max-width:980px){.hero-grid{grid-template-columns:minmax(0,1fr);gap:2rem}.hero-aside{display:none}}
.samp{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow-lg);overflow:hidden}
.samp .top{padding:1rem 1.15rem;border-bottom:1px solid var(--line-soft);background:var(--surface-2)}
.samp .top .nm{color:var(--navy);font-weight:640;font-size:1rem;margin:.2rem 0 0}
.samp .mid{padding:1.05rem 1.15rem;display:flex;align-items:baseline;gap:.5rem;
  border-bottom:1px solid var(--line-soft)}
.samp .mid .big{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:1.75rem;
  font-weight:660;color:var(--navy);letter-spacing:-.03em}
.samp .mid .u{font-size:.82rem;color:var(--ink-3)}
.samp dl{margin:0;padding:.9rem 1.15rem;display:grid;grid-template-columns:auto minmax(0,1fr);
  gap:.45rem .9rem;font-size:.82rem}
.samp dt{color:var(--ink-3);white-space:nowrap}
.samp dd{margin:0;color:var(--ink-2);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.samp .foot{padding:.85rem 1.15rem;border-top:1px solid var(--line-soft);display:flex;
  align-items:center;justify-content:space-between;gap:.75rem;background:var(--surface-2)}
.samp .foot span{font-size:.78rem;color:var(--ink-3)}
.tip strong{color:#fff;font-weight:680}
/* readable measure for long-form prose; tables and cards stay full width */
.prose > p,.prose > ul,.prose > ol,.prose > h2,.prose > h3,.prose > .lead{max-width:74ch}

/* ============================================================
   Round 2 components
   ============================================================ */

/* ---------- header: split nav ---------- */
.site-head .bar{gap:1rem}
.site-head .nav-main{display:flex;align-items:center;gap:.15rem;margin-left:1.25rem}
.site-head .nav-aux{margin-left:auto;display:flex;align-items:center;gap:.6rem}
.site-head .nav-main a{color:var(--ink-2);font-size:.9rem;font-weight:520;padding:.45rem .7rem;
  border-radius:var(--radius-xs);text-decoration:none}
.site-head .nav-main a:hover{color:var(--navy);background:var(--surface-2);text-decoration:none}
.site-head .nav-main a[aria-current="page"]{color:var(--navy);font-weight:620;background:var(--surface-2)}
.site-head .nav-signin{color:var(--ink-2);font-size:.9rem;font-weight:550;text-decoration:none;padding:.45rem .4rem}
.site-head .nav-signin:hover{color:var(--navy);text-decoration:none}
.site-head .nav-cta{background:var(--blue);color:#fff!important;font-weight:600;font-size:.89rem;
  padding:.5rem .95rem;border-radius:var(--radius-sm);text-decoration:none!important;
  box-shadow:0 1px 2px rgba(37,99,235,.25);white-space:nowrap}
.site-head .nav-cta:hover{background:var(--blue-600)}
@media(max-width:860px){
  .site-head .bar{height:auto;padding-top:.6rem;padding-bottom:.6rem;flex-wrap:wrap;row-gap:.5rem}
  .nav-main{order:3;width:100%;margin-left:0;overflow-x:auto;gap:.1rem}
  .nav-main a{white-space:nowrap;padding:.4rem .55rem;font-size:.85rem}
  .nav-aux{margin-left:auto}
}

/* ---------- numbered steps ---------- */
.steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.1rem;counter-reset:step}
@media(max-width:820px){.steps{grid-template-columns:minmax(0,1fr)}}
.step{position:relative;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius);padding:1.4rem 1.35rem;box-shadow:var(--shadow-sm)}
.step .no{display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:.78rem;font-weight:700;letter-spacing:.02em;
  color:var(--blue-700);background:var(--blue-wash);border:1px solid #D2E1FD;
  width:34px;height:26px;border-radius:5px;margin-bottom:.85rem}
.step h3{font-size:1.05rem;margin-bottom:.4rem}
.step p{font-size:.9rem;color:var(--ink-2);margin:0}

/* ---------- audience cards ---------- */
.aud{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}
@media(max-width:1000px){.aud{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.aud{grid-template-columns:minmax(0,1fr)}}
.aud .card{display:flex;flex-direction:column}
.aud .ic{width:34px;height:34px;border-radius:8px;background:var(--blue-wash);
  border:1px solid #D2E1FD;display:flex;align-items:center;justify-content:center;margin-bottom:.85rem}
.aud .ic svg{width:17px;height:17px;stroke:var(--blue-700);stroke-width:1.9;fill:none;
  stroke-linecap:round;stroke-linejoin:round}
.aud h3{font-size:1rem;margin-bottom:.35rem}
.aud p{font-size:.88rem;color:var(--ink-2);margin:0}

/* ---------- search layout ---------- */
.search-layout{display:grid;grid-template-columns:246px minmax(0,1fr);gap:2rem;align-items:start}
@media(max-width:940px){.search-layout{grid-template-columns:minmax(0,1fr);gap:1.2rem}}
.fside{position:sticky;top:78px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius);padding:1.1rem 1.15rem;box-shadow:var(--shadow-sm)}
@media(max-width:940px){.fside{position:static}}
.fside .fhead{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;
  padding-bottom:.8rem;margin-bottom:.9rem;border-bottom:1px solid var(--line-soft)}
.fside .fhead h2{font-size:.84rem;font-weight:680;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-3);margin:0}
.fclear{background:none;border:0;padding:0;font:inherit;font-size:.82rem;color:var(--blue);
  cursor:pointer;font-weight:550}
.fclear:hover{text-decoration:underline}
.fclear[disabled]{color:var(--ink-3);cursor:default;text-decoration:none}
.fgroup{margin-bottom:1.1rem}
.fgroup:last-child{margin-bottom:0}
.fgroup > h3{font-size:.78rem;font-weight:660;letter-spacing:.05em;text-transform:uppercase;
  color:var(--ink-3);margin:0 0 .55rem}
.fopt{display:flex;align-items:center;gap:.5rem;font-size:.87rem;color:var(--ink-2);
  padding:.22rem 0;cursor:pointer;line-height:1.35}
.fopt input{accent-color:var(--blue);width:15px;height:15px;flex:none;margin:0;cursor:pointer}
.fopt .c{margin-left:auto;font-size:.76rem;color:var(--ink-3);font-family:var(--mono)}
.fopt:hover{color:var(--navy)}
.fside select{width:100%}

.rhead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  gap:.75rem;margin-bottom:.9rem}
.rhead .rcount{font-size:.92rem;color:var(--ink-2)}
.rhead .rcount strong{color:var(--navy);font-weight:660}
.rsort{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--ink-3)}

/* ---------- results table ---------- */
.rtable{width:100%;border-collapse:separate;border-spacing:0;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm)}
.rtable thead th{position:static;background:var(--surface-2);cursor:default}
.rtable tbody tr{cursor:pointer}
.rtable tbody tr:hover{background:var(--blue-wash)}
.rtable tbody tr:focus-within{background:var(--blue-wash)}
.rtable td{padding:.7rem .85rem;vertical-align:middle}
.rtable th{padding:.6rem .85rem}
.rtable .it a{color:var(--navy);font-weight:600;text-decoration:none}
.rtable tbody tr:hover .it a{color:var(--blue-700)}
.rtable .sub{display:block;color:var(--ink-3);font-size:.76rem;font-weight:400;margin-top:.1rem}
.rtable .obs-cell{white-space:nowrap}
.depth{display:inline-block;width:38px;height:5px;border-radius:3px;background:var(--surface-3);
  margin-left:.45rem;vertical-align:middle;position:relative;overflow:hidden}
.depth i{position:absolute;left:0;top:0;bottom:0;background:var(--blue);border-radius:3px}
@media(max-width:720px){
  .rtable,.rtable tbody,.rtable tr,.rtable td{display:block;width:100%}
  .rtable thead{display:none}
  .rtable{border:0;background:transparent;box-shadow:none;overflow:visible}
  .rtable tbody tr{background:var(--surface);border:1px solid var(--line);
    border-radius:var(--radius);box-shadow:var(--shadow-sm);margin-bottom:.7rem;padding:.9rem 1rem}
  .rtable td{padding:.2rem 0;border:0;display:flex;justify-content:space-between;gap:1rem;
    align-items:baseline;text-align:right}
  .rtable td.it{display:block;text-align:left;margin-bottom:.5rem}
  .rtable td::before{content:attr(data-l);color:var(--ink-3);font-size:.76rem;
    font-weight:620;letter-spacing:.05em;text-transform:uppercase;text-align:left;flex:none}
  .rtable td.it::before{display:none}
}

/* ---------- tabs ---------- */
.tabs{display:flex;gap:.2rem;border-bottom:1px solid var(--line);margin-bottom:1.3rem;
  overflow-x:auto}
.tab{appearance:none;background:none;border:0;border-bottom:2px solid transparent;
  font:inherit;font-size:.93rem;font-weight:570;color:var(--ink-3);cursor:pointer;
  padding:.65rem .9rem;margin-bottom:-1px;white-space:nowrap;border-radius:var(--radius-xs) var(--radius-xs) 0 0}
.tab:hover{color:var(--navy);background:var(--surface-2)}
.tab[aria-selected="true"]{color:var(--blue-700);border-bottom-color:var(--blue);font-weight:640}
.tab .n{font-family:var(--mono);font-size:.76rem;color:var(--ink-3);margin-left:.35rem}
.tab[aria-selected="true"] .n{color:var(--blue-700)}
.tabpanel[hidden]{display:none}

/* ---------- sortable table headers ---------- */
th.sortable{cursor:pointer;user-select:none;white-space:nowrap}
th.sortable:hover{color:var(--navy)}
th.sortable .ar{opacity:0;margin-left:.25rem;font-size:.7rem}
th.sortable[aria-sort="ascending"] .ar,th.sortable[aria-sort="descending"] .ar{opacity:1;color:var(--blue)}
th.sortable[aria-sort="descending"] .ar{display:inline-block;transform:rotate(180deg)}

/* ---------- source drawer ---------- */
.drawer-scrim{position:fixed;inset:0;background:rgba(15,39,71,.38);opacity:0;pointer-events:none;
  transition:opacity .18s ease;z-index:80}
.drawer-scrim[data-open]{opacity:1;pointer-events:auto}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(440px,92vw);background:var(--surface);
  border-left:1px solid var(--line);box-shadow:-18px 0 48px -24px rgba(15,39,71,.4);
  transform:translateX(100%);transition:transform .22s cubic-bezier(.3,.8,.4,1);z-index:81;
  display:flex;flex-direction:column;overflow:hidden}
.drawer[data-open]{transform:none}
.drawer .dhead{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;
  padding:1.15rem 1.3rem;border-bottom:1px solid var(--line-soft);background:var(--surface-2)}
.drawer .dhead h3{margin:0;font-size:1.02rem}
.drawer .dhead .eyebrow{margin:0 0 .2rem}
.dclose{appearance:none;background:none;border:1px solid var(--line);border-radius:var(--radius-xs);
  width:30px;height:30px;flex:none;cursor:pointer;color:var(--ink-2);font-size:1.1rem;line-height:1;
  display:flex;align-items:center;justify-content:center}
.dclose:hover{background:var(--surface);color:var(--navy);border-color:#C3D2E6}
.drawer .dbody{padding:1.2rem 1.3rem;overflow-y:auto;flex:1}
.drawer dl{margin:0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:.6rem 1rem;font-size:.88rem}
.drawer dt{color:var(--ink-3);white-space:nowrap}
.drawer dd{margin:0;color:var(--ink-2);text-align:right;overflow-wrap:anywhere}
.drawer dd strong{color:var(--navy)}
.drawer .dfoot{padding:1.1rem 1.3rem;border-top:1px solid var(--line-soft);background:var(--surface-2)}
.drawer .dfoot .btn{width:100%}
.drawer .printed{margin-top:1.2rem;padding:.8rem .9rem;background:var(--surface-2);
  border:1px solid var(--line-soft);border-radius:var(--radius-sm);font-family:var(--mono);
  font-size:.82rem;color:var(--ink-2);overflow-wrap:anywhere}

/* ---------- histogram ---------- */
.hist{width:100%;height:auto;display:block;overflow:visible}
.hist .bar{fill:var(--blue);opacity:.82}
.hist .bar:hover{opacity:1}
.hist .bar.out{fill:var(--series-3);opacity:.75}
.hist .axis{stroke:var(--line);stroke-width:1}
.hist .tick{fill:var(--ink-3);font-size:11px;font-family:var(--sans)}
.hist .medline{stroke:var(--navy);stroke-width:2;stroke-dasharray:4 3}
.hist .medlab{fill:var(--navy);font-size:11px;font-weight:660;font-family:var(--mono)}
.legend{display:flex;flex-wrap:wrap;gap:1rem;margin-top:.9rem;font-size:.79rem;color:var(--ink-3)}
.legend span{display:inline-flex;align-items:center;gap:.4rem}
.legend i{width:10px;height:10px;border-radius:2px;display:inline-block}

/* ---------- comparison table ---------- */
.cmp{width:100%;border-collapse:separate;border-spacing:0;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm)}
.cmp th,.cmp td{padding:.72rem .9rem;border-bottom:1px solid var(--line-soft);font-size:.88rem}
.cmp thead th{background:var(--surface-2);color:var(--ink-3);font-size:.72rem;font-weight:680;
  letter-spacing:.07em;text-transform:uppercase;text-align:center;white-space:nowrap}
.cmp thead th:first-child{text-align:left}
.cmp tbody th{text-align:left;font-weight:550;color:var(--ink-2)}
.cmp td{text-align:center;color:var(--ink-2)}
.cmp tbody tr:last-child th,.cmp tbody tr:last-child td{border-bottom:0}
.cmp .yes{color:var(--blue);font-weight:700}
.cmp .no{color:var(--ink-3)}
.cmp .feat{background:#F7FAFF}
.cmp caption{caption-side:top;text-align:left;padding:0 0 .9rem;color:var(--ink-3);font-size:.85rem}

/* ---------- contact ---------- */
.contact-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:2.2rem;
  align-items:start}
@media(max-width:920px){.contact-grid{grid-template-columns:minmax(0,1fr);gap:1.6rem}}
.field{margin-bottom:1rem}
.field label{display:block;font-size:.83rem;font-weight:600;color:var(--navy);margin-bottom:.35rem}
.field input,.field select,.field textarea{
  width:100%;font:inherit;font-size:.92rem;color:var(--ink);background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius-sm);padding:.6rem .75rem;
  box-shadow:var(--shadow-sm);transition:border-color .12s, box-shadow .12s}
.field textarea{min-height:130px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:0;border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-ring)}
.field .hint{font-size:.78rem;color:var(--ink-3);margin:.3rem 0 0}
.emailbox{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;background:var(--blue-wash);
  border:1px solid #D6E4FD;border-radius:var(--radius);padding:1rem 1.15rem}
.emailbox a{font-weight:640;font-size:1.02rem}

/* ---------- legal layout ---------- */
.legal-grid{display:grid;grid-template-columns:216px minmax(0,1fr);gap:2.4rem;align-items:start}
@media(max-width:900px){.legal-grid{grid-template-columns:minmax(0,1fr);gap:1.4rem}}
.legal-nav{position:sticky;top:78px}
@media(max-width:900px){.legal-nav{position:static;border:1px solid var(--line);
  border-radius:var(--radius);padding:1rem 1.1rem;background:var(--surface)}}
.legal-nav h4{font-size:.73rem;font-weight:680;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-3);margin-bottom:.6rem}
.legal-nav a{display:block;font-size:.86rem;color:var(--ink-2);padding:.3rem 0 .3rem .7rem;
  border-left:2px solid var(--line-soft);text-decoration:none;line-height:1.4}
.legal-nav a:hover{color:var(--blue);border-left-color:var(--blue)}
.legal-nav .sep{margin-top:1.2rem;padding-top:1.2rem;border-top:1px solid var(--line-soft)}
.legal-body{max-width:800px}
.legal-body > *{max-width:100%}
.legal-body h2{scroll-margin-top:86px}
.updated{display:inline-flex;align-items:center;gap:.45rem;font-size:.82rem;color:var(--ink-3);
  background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:.3rem .75rem}

/* ---------- coverage ---------- */
.covbars{display:flex;flex-direction:column;gap:.75rem}
.covrow{display:grid;grid-template-columns:190px minmax(0,1fr) 92px;gap:.8rem;align-items:center;
  font-size:.87rem}
@media(max-width:620px){.covrow{grid-template-columns:130px minmax(0,1fr) 72px}}
.covrow .lab{color:var(--ink-2);font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.covrow .track{height:20px;background:var(--surface-2);border-radius:5px;overflow:hidden}
.covrow .fill{height:100%;background:var(--blue);border-radius:5px}
.covrow .fill.alt{background:var(--navy)}
.covrow .v{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--navy);
  font-weight:620}

/* select styling applies everywhere, not just inside .filters */
.rsort select,.fside select,.field select{
  font:inherit;font-size:.87rem;color:var(--ink-2);background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius-xs);padding:.45rem 2rem .45rem .7rem;
  appearance:none;box-shadow:var(--shadow-sm);cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5L6 8l3-3.5' fill='none' stroke='%236B7F99' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right .55rem center;background-size:12px;
}
.field select{font-size:.92rem;padding:.6rem 2rem .6rem .75rem;border-radius:var(--radius-sm)}
.rsort select:hover,.fside select:hover{border-color:#C3D2E6}

/* keep money columns on one line */
.rtable td.n,.rtable th.n{white-space:nowrap}
/* long / mis-parsed category names must not blow out the sidebar */
.fopt > span:first-of-type{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.fopt{min-width:0}

/* price distribution: chart + spread summary */
.distgrid{display:grid;grid-template-columns:minmax(0,1fr) 168px;gap:1.6rem;align-items:start;
  margin-top:.8rem}
@media(max-width:780px){.distgrid{grid-template-columns:minmax(0,1fr)}}
.spread{border-left:1px solid var(--line-soft);padding-left:1.3rem}
@media(max-width:780px){.spread{border-left:0;border-top:1px solid var(--line-soft);
  padding-left:0;padding-top:1rem}}
.spread dl{margin:.7rem 0 0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:.4rem .8rem;
  font-size:.85rem}
.spread dt{color:var(--ink-3)}
.spread dd{margin:0;text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;
  color:var(--navy);font-weight:600}

/* collapsible filter panel */
.fside details > summary{list-style:none;cursor:default}
.fside details > summary::-webkit-details-marker{display:none}
.fside .fhead{display:flex;align-items:center;justify-content:space-between;gap:.5rem;
  padding-bottom:.8rem;margin-bottom:.9rem;border-bottom:1px solid var(--line-soft)}
.fside .fclear{white-space:nowrap}
.fgroup-scroll{max-height:none}
@media(max-width:940px){
  .fside details > summary{cursor:pointer;position:relative;padding-right:1.6rem}
  .fside details > summary::after{content:"";position:absolute;right:.2rem;top:.35rem;width:9px;
    height:9px;border-right:2px solid var(--ink-3);border-bottom:2px solid var(--ink-3);
    transform:rotate(45deg);transition:transform .15s ease}
  .fside details[open] > summary::after{transform:rotate(-135deg);top:.6rem}
  .fside details:not([open]) > summary .fhead{margin-bottom:0;padding-bottom:0;border-bottom:0}
  .fgroup-scroll{max-height:220px;overflow-y:auto;padding-right:.3rem}
}

/* collapsed filter summary should not keep its divider */
.fside details:not([open]) > summary.fhead{margin-bottom:0;padding-bottom:0;border-bottom:0}
/* keep brand and the auth actions on one row on narrow phones */
@media(max-width:520px){
  .site-head .brand .badge{display:none}
  .site-head .bar{gap:.5rem}
  .nav-cta{padding:.45rem .8rem;font-size:.85rem}
}

/* coverage status pills */
.pill.st-active{background:#E4F4EC;border-color:#C6E7D6;color:#0F7A5A}
.pill.st-limited{background:#FFF6E5;border-color:#F3E1BC;color:#9A6206}
.pill.st-planned{background:var(--surface-2);border-color:var(--line);color:var(--ink-3)}

/* fourth data series: FDOT */
:root{--series-4:#0E7C86}
.pill.s-fdot{background:#E3F4F5;border-color:#C2E4E7;color:#0B626A}

/* ============================================================
   Round 3 — mockup redesign
   ============================================================ */
/* This block used to redefine --maxw, --gut and the semantic colours after the
   token block, quietly overriding them: every page came out 1280px wide with a
   28px gutter instead of the bundle's 1240/40.  Only the tokens the bundle does
   not define survive here. */
:root{
  --maxw-wide:1420px;
  --foot:#132038;
  --foot-2:#1b2c4a;
}
.wrap.wide{max-width:var(--maxw-wide)}
@media(min-width:1100px){
  h1{font-size:clamp(2.1rem,1.3rem+2.4vw,3.15rem);letter-spacing:-.032em;font-weight:700}
  h2{font-size:clamp(1.4rem,1.05rem+1vw,1.85rem);letter-spacing:-.024em;font-weight:680}
}
.accent{color:var(--blue)}

/* ---------- header (redesign) ---------- */
.site-head{background:#fff;backdrop-filter:none;-webkit-backdrop-filter:none}
.site-head .bar{max-width:var(--maxw-wide);height:68px;gap:1rem}
.site-head .brand .logo{width:28px;height:28px}
.site-head .brand .mark{font-size:1.16rem;letter-spacing:-.035em}
.site-head .brand .badge{
  font-size:.66rem;letter-spacing:.06em;border-radius:999px;padding:.2rem .55rem;margin-left:.15rem;
}
.site-head .nav-main{
  margin:0 auto;display:flex;align-items:center;gap:.4rem;align-self:stretch;
}
.site-head .nav-main > a,.navdrop > button{
  position:relative;display:inline-flex;align-items:center;gap:.3rem;
  font:inherit;font-size:.93rem;font-weight:530;color:var(--ink-2);
  background:none;border:0;cursor:pointer;padding:.5rem .8rem;border-radius:var(--radius-xs);
}
.site-head .nav-main > a:hover,.navdrop > button:hover{color:var(--navy);background:var(--surface-2);text-decoration:none}
.site-head .nav-main > a[aria-current="page"]{color:var(--blue);font-weight:640;background:none}
.site-head .nav-main > a[aria-current="page"]::after{
  content:"";position:absolute;left:.8rem;right:.8rem;bottom:-23px;height:2px;background:var(--blue);
}
.navdrop{position:relative;display:inline-flex}
.navdrop > button svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round;transition:transform .15s}
.navdrop:hover > button svg,.navdrop:focus-within > button svg{transform:rotate(180deg)}
.navdrop .menu{
  position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(-4px);
  min-width:230px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:.45rem;
  opacity:0;visibility:hidden;transition:opacity .13s,transform .13s,visibility .13s;z-index:60;
}
.navdrop:hover .menu,.navdrop:focus-within .menu{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
.navdrop .menu a{
  display:block;padding:.5rem .65rem;border-radius:var(--radius-xs);
  font-size:.89rem;font-weight:520;color:var(--ink-2);text-decoration:none;
}
.navdrop .menu a:hover{background:var(--surface-2);color:var(--navy)}
.navdrop .menu a small{display:block;font-size:.76rem;color:var(--ink-3);font-weight:450;margin-top:.1rem}
.site-head .nav-aux{margin-left:0;gap:.7rem}
.headsearch{position:relative;display:none}
@media(min-width:1180px){.headsearch{display:block}}
.headsearch input{
  width:270px;height:38px;padding:0 .8rem 0 2.2rem;font:inherit;font-size:.87rem;
  background:var(--surface-2);border:1px solid var(--line);border-radius:999px;color:var(--ink);
}
.headsearch input::placeholder{color:var(--ink-3)}
.headsearch input:focus{outline:none;background:#fff;border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-ring)}
.headsearch svg{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);
  width:15px;height:15px;fill:none;stroke:var(--ink-3);stroke-width:2;stroke-linecap:round}
.site-head .nav-cta{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1.05rem;border-radius:var(--radius-sm)}
.site-head .nav-cta svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:1000px){
  .nav-main{margin:0;order:3;width:100%;overflow-x:auto;gap:.1rem;padding-bottom:.15rem}
  .nav-main > a[aria-current="page"]::after{display:none}
  .navdrop .menu{left:0;transform:none}
  .navdrop:hover .menu,.navdrop:focus-within .menu{transform:none}
}

/* ---------- footer (dark) ---------- */
.site-foot{background:var(--foot);border-top:0;color:#AFC2DC;padding:3.2rem 0 2rem}
.site-foot .wrap{max-width:var(--maxw-wide)}
.site-foot .cols{grid-template-columns:1.6fr repeat(4,minmax(0,1fr));gap:2rem}
.site-foot h4{color:#fff;opacity:.62}
.site-foot a{color:#AFC2DC}
.site-foot a:hover{color:#fff}
.site-foot .brand .mark{color:#fff}
.site-foot .about p{color:#8FA6C5}
.foot-legal{border-top:1px solid rgba(255,255,255,.12);color:#7F97B8;max-width:92ch}
.foot-legal a{color:#AFC2DC;text-decoration:underline;text-underline-offset:2px}
.foot-legal a:hover{color:#fff}
.foot-legal{max-width:none}
.foot-legal > span{display:block;max-width:92ch}

/* ---------- hero (redesign) ---------- */
.hero-x{background:linear-gradient(180deg,#F2F6FD 0%,var(--bg) 62%);padding:3.4rem 0 3.6rem;
  border-bottom:1px solid var(--line-soft)}
.hero-x .hero-grid{display:grid;grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr);
  gap:3.2rem;align-items:start}
@media(max-width:1060px){.hero-x .hero-grid{grid-template-columns:minmax(0,1fr);gap:2.4rem}}
.kicker{font-size:.74rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink-3);margin:0 0 1rem}
.hero-copy h1{margin:0 0 1.1rem;max-width:14ch}
.hero-copy .lede{font-size:1.05rem;line-height:1.62;color:var(--ink-2);max-width:56ch;margin:0 0 1.7rem}
.sbox.xl{display:flex;align-items:center;gap:.5rem;background:#fff;border:1px solid var(--line);
  border-radius:12px;padding:.45rem .45rem .45rem 1rem;box-shadow:var(--shadow);max-width:680px}
.sbox.xl .ico{width:19px;height:19px;flex:none;fill:none;stroke:var(--ink-3);stroke-width:2;stroke-linecap:round}
.sbox.xl input{flex:1;min-width:0;border:0;background:none;font:inherit;font-size:.97rem;
  color:var(--ink);height:44px;outline:none}
.sbox.xl input::placeholder{color:var(--ink-3)}
.sbox.xl .btn{height:44px;padding:0 1.15rem;border-radius:9px;gap:.45rem;white-space:nowrap}
.sbox.xl .btn svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.2;
  stroke-linecap:round;stroke-linejoin:round}
.trythis{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;margin:1.05rem 0 0;
  font-size:.85rem;color:var(--ink-3)}
.trythis .chip{background:#fff;border:1px solid var(--line);border-radius:999px;
  padding:.3rem .75rem;font-size:.82rem;color:var(--ink-2);text-decoration:none;font-weight:520}
.trythis .chip:hover{border-color:var(--blue);color:var(--blue);text-decoration:none}
.tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem;margin-top:2.2rem;
  padding-top:1.7rem;border-top:1px solid var(--line)}
@media(max-width:760px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.2rem .4rem}}
.tile{display:flex;align-items:center;gap:.7rem;padding-right:.6rem;border-right:1px solid var(--line-soft)}
.tile:last-child{border-right:0}
@media(max-width:760px){.tile:nth-child(2n){border-right:0}}
.tile .ti svg{width:26px;height:26px;fill:none;stroke:var(--blue);stroke-width:1.5;
  stroke-linecap:round;stroke-linejoin:round;opacity:.9;display:block}
.tile .tv{display:block;font-size:1.28rem;font-weight:700;color:var(--navy);letter-spacing:-.02em;line-height:1.15}
.tile .tl{display:block;font-size:.78rem;color:var(--ink-3);margin-top:.1rem}

/* example-item card */
.exitem{background:#fff;border:1px solid var(--line);border-radius:14px;
  box-shadow:var(--shadow-lg);padding:1.35rem 1.45rem 1.1rem}
.ex-top{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.55rem}
.ex-top .eyebrow{margin:0}
.ex-top a{font-size:.83rem;font-weight:580;display:inline-flex;align-items:center;gap:.25rem}
.ex-top a svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.ex-name{font-size:1.24rem;margin:0 0 .3rem;letter-spacing:-.022em}
.ex-spec{font-size:.85rem;color:var(--ink-3);margin:0 0 1rem}
.ex-spec .sep{opacity:.5;margin:0 .1rem}
.ex-price{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.4rem}
.ex-price .big{font-size:2.25rem;font-weight:700;color:var(--navy);letter-spacing:-.035em;line-height:1}
.ex-price .u{font-size:1.02rem;color:var(--ink-3);margin-left:.35rem;font-weight:520}
.ex-cap{font-size:.8rem;color:var(--ink-3);margin:.45rem 0 0}
.verified{display:inline-flex;align-items:flex-start;gap:.45rem;background:var(--ok-wash);
  border:1px solid var(--ok-line);color:var(--ok);border-radius:9px;padding:.5rem .7rem;
  font-size:.78rem;font-weight:600;line-height:1.35;white-space:nowrap}
.verified svg{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round;margin-top:.05rem}
.ex-body{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1.2rem;align-items:center;
  padding:.9rem 0 .5rem;border-top:1px solid var(--line-soft);margin-top:.9rem}
@media(max-width:520px){.ex-body{grid-template-columns:minmax(0,1fr)}}
.minihist{width:100%;height:auto;display:block;overflow:visible}
.ex-tbl{border-collapse:collapse;font-size:.81rem;border-left:1px solid var(--line-soft);padding-left:1rem}
.ex-tbl th{text-align:left;font-weight:480;color:var(--ink-3);padding:.24rem 1.1rem .24rem 1rem;white-space:nowrap}
.ex-tbl td{text-align:right;font-weight:640;color:var(--navy);padding:.24rem 0;white-space:nowrap}
.ex-src{display:flex;align-items:center;gap:.7rem;background:var(--surface-2);
  border-radius:10px;padding:.7rem .85rem;margin-top:.4rem;text-decoration:none!important}
.ex-src:hover{background:var(--blue-wash)}
.ex-src > svg:first-child{width:20px;height:20px;flex:none;fill:none;stroke:var(--blue);stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round}
.ex-src span{flex:1;min-width:0}
.ex-src strong{display:block;font-size:.87rem;color:var(--navy);font-weight:620}
.ex-src small{display:block;font-size:.77rem;color:var(--ink-3);margin-top:.05rem;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ex-src > svg:last-child{width:15px;height:15px;flex:none;fill:none;stroke:var(--ink-3);stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round}

/* ---------- bands with a split heading ---------- */
.band{padding:3.2rem 0;border-bottom:1px solid var(--line-soft);background:var(--surface)}
.band.alt{background:var(--bg)}
.split-head{display:grid;grid-template-columns:minmax(0,.72fr) minmax(0,2.28fr);gap:2.6rem;align-items:start}
@media(max-width:940px){.split-head{grid-template-columns:minmax(0,1fr);gap:1.6rem}}
.split-head h2{margin:0;letter-spacing:-.028em}
.how{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0}
@media(max-width:840px){.how{grid-template-columns:minmax(0,1fr);gap:1.4rem}}
.how-step{display:flex;gap:.85rem;padding:0 1.6rem;border-left:1px solid var(--line-soft)}
.how-step:first-child{padding-left:0;border-left:0}
@media(max-width:840px){.how-step{padding:0;border-left:0}}
.how-step .no{flex:none;width:30px;height:30px;border-radius:50%;background:var(--blue);color:#fff;
  font-size:.85rem;font-weight:700;display:grid;place-items:center;margin-top:.05rem}
.how-step h3{font-size:1rem;margin:0 0 .3rem}
.how-step p{font-size:.88rem;color:var(--ink-2);margin:0}
.aud4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.9rem}
@media(max-width:1040px){.aud4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.aud4{grid-template-columns:minmax(0,1fr)}}
.audcard{position:relative;display:block;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);padding:1.1rem 1.1rem 1.9rem;text-decoration:none!important;
  box-shadow:var(--shadow-sm);transition:border-color .13s,box-shadow .13s,transform .13s}
.audcard:hover{border-color:#C6D8F8;box-shadow:var(--shadow);transform:translateY(-1px)}
.audcard .ic svg{width:22px;height:22px;fill:none;stroke:var(--blue);stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round;display:block;margin-bottom:.7rem}
.audcard h3{font-size:.99rem;margin:0 0 .35rem}
.audcard p{font-size:.85rem;color:var(--ink-2);margin:0}
.audcard .go{position:absolute;right:1rem;bottom:.9rem}
.audcard .go svg{width:15px;height:15px;fill:none;stroke:var(--ink-3);stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round;display:block}
.audcard:hover .go svg{stroke:var(--blue)}

/* ---------- trace band ---------- */
.trace{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr) minmax(0,1fr);
  gap:2.4rem;align-items:center}
@media(max-width:1100px){.trace{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.stack{display:none}}
@media(max-width:760px){.trace{grid-template-columns:minmax(0,1fr)}}
.trace-copy h2{margin:0 0 .9rem;letter-spacing:-.028em}
.trace-copy p{font-size:.93rem;max-width:44ch}
.trace-list{list-style:none;margin:0;padding:0;display:grid;gap:1.5rem}
.trace-list li{display:flex;gap:.85rem}
.trace-list svg{width:22px;height:22px;flex:none;fill:none;stroke:var(--blue);stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round;margin-top:.15rem}
.trace-list h3{font-size:.99rem;margin:0 0 .25rem}
.trace-list p{font-size:.86rem;color:var(--ink-2);margin:0}
.stack{position:relative;height:290px}
.sheet{position:absolute;background:#fff;border:1px solid var(--line);border-radius:6px;
  width:172px;padding:.7rem .75rem;box-shadow:var(--shadow-lg)}
.sheet b{display:block;font-size:.6rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  color:var(--ink-3);border-bottom:1px solid var(--line-soft);padding-bottom:.35rem;margin-bottom:.45rem}
.sheet .ln{display:grid;gap:4px}
.sheet .ln i{display:block;height:3px;border-radius:2px;background:var(--surface-3)}
.sheet.s3{top:6px;right:120px;transform:rotate(-7deg)}
.sheet.s2{top:26px;right:34px;transform:rotate(3deg)}
.sheet.s1{top:96px;right:110px;transform:rotate(-2deg)}
.stack-badge{position:absolute;left:0;bottom:12px;display:flex;align-items:center;gap:.6rem;
  background:#fff;border:1px solid var(--line);border-radius:10px;padding:.7rem .9rem;
  box-shadow:var(--shadow-lg)}
.stack-badge svg{width:24px;height:24px;fill:none;stroke:var(--blue);stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round}
.stack-badge .num{display:block;font-size:1.22rem;font-weight:700;color:var(--navy);line-height:1.1}
.stack-badge small{display:block;font-size:.72rem;color:var(--ink-3);line-height:1.3;margin-top:.1rem}

/* numbers: proportional sans with tabular figures, per the redesign */
.num{font-family:var(--sans);font-variant-numeric:tabular-nums;letter-spacing:-.012em;
  font-feature-settings:"tnum" 1}
.hero-x .hero-grid{grid-template-columns:minmax(0,1.16fr) minmax(0,.84fr)}
.hero-copy h1{max-width:19ch}
.tiles{align-items:start}
.tile .tl{line-height:1.3}
.tile .tv{font-size:1.18rem}
.tile .ti svg{width:23px;height:23px}
.tile{gap:.6rem}
.btn svg{width:15px;height:15px;flex:none;fill:none;stroke:currentColor;stroke-width:2.2;
  stroke-linecap:round;stroke-linejoin:round;display:inline-block;vertical-align:-2px}
.btn{display:inline-flex;align-items:center;gap:.45rem}
.audcard .ic svg,.trace-list svg{width:24px;height:24px;stroke-width:1.7}
.sheet.s3{right:150px}.sheet.s2{right:52px}.sheet.s1{right:118px}

/* ---------- search page (redesign) ---------- */
.shero{background:linear-gradient(180deg,#F2F6FD 0%,var(--bg) 100%);
  border-bottom:1px solid var(--line-soft);padding:2.6rem 0 2.2rem}
.shero-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);
  gap:2.4rem;align-items:center;margin-bottom:1.6rem}
@media(max-width:940px){.shero-grid{grid-template-columns:minmax(0,1fr);gap:1.4rem}}
.shero h1{margin:0 0 .5rem}
.shero .lede{font-size:1.02rem;color:var(--ink-2);margin:0;max-width:56ch}
.promo{display:flex;align-items:center;gap:1rem;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);padding:1.05rem 1.15rem;box-shadow:var(--shadow-sm)}
.promo > svg{width:28px;height:28px;flex:none;fill:none;stroke:var(--blue);stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
.promo h3{font-size:.97rem;margin:0 0 .25rem}
.promo p{font-size:.84rem;color:var(--ink-2);margin:0}
.promo .btn{flex:none;white-space:nowrap}
@media(max-width:560px){.promo{flex-wrap:wrap}}
.sbox.xl.wide{max-width:none}
.btn-dark{background:var(--navy);color:#fff;border:1px solid var(--navy)}
.btn-dark:hover{background:#17385F;color:#fff}
.shero .trythis{margin-top:.9rem}

/* sidebar */
.fside{width:268px}
.catgroup{max-height:none}
.catgroup .fopt.extra{display:none}
.catgroup.expanded .fopt.extra{display:flex}
.fmore{background:none;border:0;color:var(--blue);font:inherit;font-size:.83rem;font-weight:580;
  cursor:pointer;padding:.35rem 0 0}
.fmore:hover{text-decoration:underline}
.fopt .dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:.45rem;
  vertical-align:.02em}
.fhead .fclear-slot{margin-left:auto}
.fclear{background:none;border:0;color:var(--blue);font:inherit;font-size:.83rem;font-weight:580;cursor:pointer}
.fclear:disabled{color:var(--ink-3);cursor:default}
.fclear:not(:disabled):hover{text-decoration:underline}

/* results table */
.rtable.big th{font-size:.78rem;vertical-align:bottom}
.rtable.big .th-sub{display:block;font-size:.71rem;font-weight:450;color:var(--ink-3);
  text-transform:none;letter-spacing:0;margin-top:.1rem}
.rtable .pick{width:36px;padding-right:0}
.rtable .pick input{width:15px;height:15px;accent-color:var(--blue);cursor:pointer;margin:0}
.rtable .it a{font-weight:600}
.rtable .it .sub{display:block;font-size:.74rem;color:var(--ink-3);margin-top:.1rem}
.rtable .per{display:block;font-family:var(--sans);font-size:.73rem;font-weight:450;color:var(--ink-3)}
.rtable .tr-cell{width:76px}
.spark{width:64px;height:22px;display:block;overflow:visible}
.spark polyline{fill:none;stroke:var(--blue);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.nospark{color:var(--ink-3);font-size:.85rem}
.dpill{display:inline-block;font-size:.73rem;font-weight:640;padding:.2rem .55rem;border-radius:999px;
  white-space:nowrap;border:1px solid transparent}
.dpill.d-deep{background:var(--ok-wash);border-color:var(--ok-line);color:var(--ok)}
.dpill.d-mod{background:var(--blue-wash);border-color:#D2E1FD;color:var(--blue-700)}
.dpill.d-thin{background:var(--warn-wash);border-color:var(--warn-line);color:var(--warn)}
.dpill.d-vthin{background:#FDECE6;border-color:#F6D6C9;color:#9B3A17}
.dpill.d-single{background:var(--surface-2);border-color:var(--line);color:var(--ink-3)}

/* compare */
.cmptray{position:fixed;left:0;right:0;bottom:0;z-index:70;background:var(--navy);
  box-shadow:0 -6px 24px rgba(15,39,71,.22)}
.cmptray .wrap{display:flex;align-items:center;gap:.8rem;padding-top:.7rem;padding-bottom:.7rem}
.cmptray .ci svg{width:22px;height:22px;fill:none;stroke:#7FAAF5;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round;display:block}
.cmptray strong{color:#fff;font-size:.9rem;white-space:nowrap}
.cmptray .cdiv{width:1px;height:22px;background:rgba(255,255,255,.2)}
.cchips{display:flex;gap:.45rem;flex:1;min-width:0;overflow-x:auto}
.cchip{display:inline-flex;align-items:center;gap:.4rem;background:rgba(255,255,255,.1);
  border:1px solid rgba(255,255,255,.2);color:#DDE7F5;border-radius:7px;
  padding:.28rem .5rem .28rem .65rem;font-size:.82rem;white-space:nowrap}
.cchip button{background:none;border:0;color:#AFC2DC;font-size:1rem;line-height:1;cursor:pointer;padding:0 .1rem}
.cchip button:hover{color:#fff}
.btn-ghost{background:transparent;color:#DDE7F5;border:1px solid rgba(221,231,245,.35)}
.btn-ghost:hover{background:rgba(255,255,255,.1);color:#fff}
body.has-tray{padding-bottom:64px}
.cmp-panel{margin-bottom:1.2rem}
.cmp-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.8rem}
.cmp-head h2{margin:0;font-size:1.1rem}
.cmp-tbl{border-collapse:collapse;width:100%;font-size:.87rem}
.cmp-tbl th,.cmp-tbl td{text-align:left;padding:.55rem .8rem;border-bottom:1px solid var(--line-soft)}
.cmp-tbl thead th{font-size:.82rem;color:var(--navy);font-weight:660;vertical-align:bottom;
  border-bottom:1px solid var(--line)}
.cmp-tbl tbody th{color:var(--ink-3);font-weight:480;white-space:nowrap;width:1%}
.cmp-tbl td{color:var(--ink);font-variant-numeric:tabular-nums}
@media(max-width:940px){
  .fside{width:auto}
  .cmptray .cchips{display:none}
  .cmptray .cdiv{display:none}
}
.fopt .c{font-family:var(--sans);font-variant-numeric:tabular-nums}
.cmp-panel{scroll-margin-top:88px}
.cmptray .btn{white-space:nowrap;flex:none}
.rtable.big th,.rtable.big td{padding-left:.7rem;padding-right:.7rem}
.rtable.big .it{min-width:190px}
.rtable.big .it .sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}
.rtable.big thead th{text-transform:none;letter-spacing:0;font-size:.84rem;font-weight:620;color:var(--navy)}
.rtable.big .th-sub{font-size:.73rem}
.rtable.big th:last-child,.rtable.big td:last-child{padding-right:1rem}
.rtable.big th:nth-child(2),.rtable.big td:nth-child(2){padding-left:.2rem}

/* ---------- item page (redesign) ---------- */
.crumbrow{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.lastobs{font-size:.82rem;color:var(--ink-3)}
.lastobs strong{color:var(--ink-2);font-weight:600}
.titlerow{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;
  flex-wrap:wrap;margin:.4rem 0 .5rem}
.titlerow h1{margin:0 0 .5rem}
.itags{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;margin:0}
.itag{display:inline-block;background:var(--surface-2);border:1px solid var(--line);
  border-radius:999px;padding:.2rem .65rem;font-size:.78rem;color:var(--ink-2);font-weight:520}
.itags .sep{display:none}
.tacts{display:flex;gap:.5rem;flex-wrap:wrap}
.btn-sm{padding:.42rem .85rem;font-size:.85rem}
.statcards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.9rem}
@media(max-width:980px){.statcards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.statcards{grid-template-columns:minmax(0,1fr)}}
.scard{display:flex;gap:.8rem;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius);padding:1rem 1.1rem;box-shadow:var(--shadow-sm)}
.scard .si{flex:none;width:34px;height:34px;border-radius:9px;background:var(--blue-wash);
  display:grid;place-items:center}
.scard .si svg{width:18px;height:18px;fill:none;stroke:var(--blue);stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round;display:block}
.scard .k{font-size:.78rem;color:var(--ink-3);font-weight:520}
.scard .v{font-size:1.5rem;font-weight:700;color:var(--navy);letter-spacing:-.028em;line-height:1.2;
  margin:.1rem 0}
.scard .v small{font-size:.86rem;font-weight:500;color:var(--ink-3);letter-spacing:0}
.scard .v .dpill{font-size:.8rem;vertical-align:.12em}
.scard .s{font-size:.76rem;color:var(--ink-3)}
.dist-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:1rem;margin-top:1.1rem}
@media(max-width:1000px){.dist-grid{grid-template-columns:minmax(0,1fr)}}
.item-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:1.4rem;
  align-items:start;margin-top:2.2rem}
@media(max-width:1100px){.item-grid{grid-template-columns:minmax(0,1fr)}}
.about{position:sticky;top:88px}
.about-head{display:flex;align-items:center;gap:.55rem;margin-bottom:.5rem}
.about-head h2{font-size:1.02rem;margin:0}
.about-head svg{width:19px;height:19px;fill:none;stroke:var(--blue);stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
.about > p{font-size:.85rem;color:var(--ink-2)}
.about-tbl{width:100%;border-collapse:collapse;font-size:.84rem}
.about-tbl th{text-align:left;font-weight:480;color:var(--ink-3);padding:.4rem 0;
  border-top:1px solid var(--line-soft);white-space:nowrap;vertical-align:top}
.about-tbl td{text-align:right;color:var(--ink);font-weight:580;padding:.4rem 0;
  border-top:1px solid var(--line-soft);word-break:break-word}
.about-tbl tr:first-child th,.about-tbl tr:first-child td{border-top:0}
.obs-tools{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  flex-wrap:wrap;margin-bottom:.7rem}
.obs-tools h2{font-size:1.06rem;margin:0}
.obs-tools h2 .dim{font-weight:480}
.obs-actions{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.obs-find{position:relative;display:inline-block}
.obs-find svg{position:absolute;left:.7rem;top:50%;transform:translateY(-50%);width:15px;height:15px;
  fill:none;stroke:var(--ink-3);stroke-width:2;stroke-linecap:round}
.obs-find input{width:240px;height:36px;padding:0 .8rem 0 2.1rem;font:inherit;font-size:.86rem;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink)}
.obs-find input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-ring)}
@media(max-width:560px){.obs-find input{width:100%}.obs-find{display:block;width:100%}}
#obstable td:nth-child(7){max-width:150px}
#obstable td:nth-child(8){max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- coverage charts ---------- */
.vbars{display:grid;grid-template-columns:repeat(var(--vbn),minmax(0,1fr));gap:.5rem;
  align-items:end;height:calc(var(--vbh) + 44px);padding-top:.4rem}
.vb{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;min-width:0}
.vb .vv{font-size:.76rem;font-weight:660;color:var(--navy);margin-bottom:.3rem;
  font-variant-numeric:tabular-nums;white-space:nowrap}
.vb .vbar{width:100%;max-width:56px;background:var(--blue);border-radius:4px 4px 0 0;
  min-height:3px;display:block}
.vb:nth-child(even) .vbar{background:#4F86F0}
.vb .vl{font-size:.7rem;color:var(--ink-3);margin-top:.4rem;text-align:center;line-height:1.25;
  word-break:break-word}
.donut{display:flex;align-items:center;gap:1.4rem;flex-wrap:wrap}
.dring{position:relative;flex:none}
.dring svg{width:170px;height:170px;display:block}
.dcentre{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;
  justify-content:center;pointer-events:none}
.dcentre span{font-size:1.25rem;font-weight:700;color:var(--navy);line-height:1.1}
.dcentre small{font-size:.75rem;color:var(--ink-3)}
.dlegend{list-style:none;margin:0;padding:0;flex:1;min-width:190px;display:grid;gap:.42rem}
.dlegend li{display:flex;align-items:center;gap:.5rem;font-size:.83rem;color:var(--ink-2)}
.dlegend i{width:9px;height:9px;border-radius:50%;flex:none}
.dlegend span{flex:1;min-width:0}
.dlegend b{font-weight:640;color:var(--navy)}
.dlegend em{font-style:normal;color:var(--ink-3);width:38px;text-align:right}
.unit-tbl{width:100%;border-collapse:collapse;font-size:.85rem}
.unit-tbl th{text-align:left;font-size:.73rem;font-weight:680;letter-spacing:.07em;
  text-transform:uppercase;color:var(--ink-3);padding:.4rem .6rem;border-bottom:1px solid var(--line)}
.unit-tbl td{padding:.45rem .6rem;border-bottom:1px solid var(--line-soft);color:var(--ink-2)}
.unit-tbl .n{text-align:right;font-variant-numeric:tabular-nums}

/* ---------- coverage cards ---------- */
.cvh{font-size:1.06rem;margin:0 0 .3rem}
.cvs{font-size:.83rem;color:var(--ink-3);margin:0 0 1rem}
.cvbody{margin-top:.2rem}
.cvf{font-size:.78rem;color:var(--ink-3);margin:1rem 0 0}
.cov-scroll{max-height:330px;overflow:auto;margin:-.2rem -.3rem;padding:0 .3rem}
.cov-tbl{width:100%;border-collapse:collapse;font-size:.83rem}
.cov-tbl thead th{position:sticky;top:0;background:var(--surface);text-align:left;
  font-size:.7rem;font-weight:680;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);
  padding:.35rem .4rem;border-bottom:1px solid var(--line);z-index:1}
.cov-tbl td{padding:.45rem .4rem;border-bottom:1px solid var(--line-soft);vertical-align:top}
.cov-tbl .n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.cov-tbl .sub{display:block;font-size:.72rem;color:var(--ink-3);font-weight:450;margin-top:.05rem}
.cov-tbl .pill{font-size:.7rem;padding:.12rem .45rem}
.grid.g3 > .card{display:flex;flex-direction:column}
.grid.g3 > .card .cvbody{flex:1}
.vb .vl{white-space:nowrap;word-break:normal;font-size:.72rem}

/* ---------- methodology ---------- */
.procband{background:linear-gradient(180deg,#EEF4FE,#F7FAFF)}
.psteps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.7rem}
@media(max-width:1200px){.psteps{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.psteps{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:460px){.psteps{grid-template-columns:minmax(0,1fr)}}
.pstep{background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:1rem .95rem;box-shadow:var(--shadow-sm);position:relative}
.pstep .no{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;
  background:var(--blue);color:#fff;font-size:.78rem;font-weight:700;margin-bottom:.6rem}
.pstep h3{font-size:.95rem;margin:0 0 .3rem}
.pstep p{font-size:.82rem;color:var(--ink-2);margin:0}
.pipeline{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap}
.pstage{flex:1;min-width:190px}
.plab{font-size:.74rem;font-weight:680;letter-spacing:.07em;text-transform:uppercase;
  color:var(--ink-3);margin:0 0 .6rem;text-align:center}
.pdocs{position:relative;height:118px}
.pdoc{position:absolute;top:0;background:#fff;border:1px solid var(--line);border-radius:5px;
  width:98px;padding:.45rem .5rem;box-shadow:var(--shadow)}
.pdoc:nth-child(1){left:2%;transform:rotate(-6deg)}
.pdoc:nth-child(2){left:31%;transform:rotate(2deg);top:6px}
.pdoc:nth-child(3){left:60%;transform:rotate(-2deg);top:2px}
.pdoc b{display:block;font-size:.56rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  color:var(--ink-3);border-bottom:1px solid var(--line-soft);padding-bottom:.25rem;margin-bottom:.3rem}
.pdoc i{display:block;height:3px;border-radius:2px;background:var(--surface-3);margin-bottom:3px}
.parrow svg{width:22px;height:22px;fill:none;stroke:var(--blue);stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round;display:block}
@media(max-width:860px){.parrow{display:none}}
.ptbl{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.ptbl table{width:100%;border-collapse:collapse;font-size:.74rem}
.ptbl th{background:var(--surface-2);text-align:left;padding:.35rem .5rem;color:var(--ink-3);
  font-weight:620;font-size:.68rem;text-transform:uppercase;letter-spacing:.04em}
.ptbl td{padding:.35rem .5rem;border-top:1px solid var(--line-soft);color:var(--ink-2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}
.ptbl .n{text-align:right;font-variant-numeric:tabular-nums;color:var(--navy);font-weight:620}
.pchart{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:.7rem .8rem}
.pct{display:block;font-size:.72rem;color:var(--ink-3);margin-bottom:.5rem}
.pbars{display:flex;align-items:flex-end;gap:5px;height:76px}
.pbars span{flex:1;background:var(--blue);border-radius:3px 3px 0 0;opacity:.85}
.pbars span:last-child{opacity:1}
.quad .card{display:flex;flex-direction:column}
.quad .qi{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;
  background:var(--blue-wash);margin-bottom:.7rem}
.quad .qi svg{width:18px;height:18px;fill:none;stroke:var(--blue);stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round;display:block}
.quad h3{font-size:.98rem;margin:0 0 .4rem}
.quad p{font-size:.84rem;color:var(--ink-2)}
.ticks{list-style:none;margin:0 0 .9rem;padding:0;display:grid;gap:.32rem}
.ticks li{position:relative;padding-left:1.25rem;font-size:.83rem;color:var(--ink-2)}
.ticks li::before{content:"";position:absolute;left:0;top:.42em;width:8px;height:5px;
  border-left:2px solid var(--ok);border-bottom:2px solid var(--ok);transform:rotate(-45deg)}
.updbar{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius);padding:.85rem 1.1rem;font-size:.85rem;
  color:var(--ink-2)}
.updbar svg{width:20px;height:20px;fill:none;stroke:var(--blue);stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
.updbar strong{color:var(--navy)}
.updbar b{color:var(--navy);font-weight:640}
.updbar em{font-style:normal;color:var(--ink-3);margin-left:auto;font-size:.82rem}
.arw{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;
  stroke-linejoin:round;display:inline-block;vertical-align:-2px;flex:none}

/* ---------- pricing ---------- */
.pstats .tiles{margin-top:1.6rem;padding-top:1.4rem}
.verify-panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:1.4rem 1.5rem;box-shadow:var(--shadow-sm)}
.verify-panel h2{font-size:1.28rem;margin:0 0 .5rem;letter-spacing:-.024em}
.verify-panel p{font-size:.88rem;color:var(--ink-2);margin:0 0 .9rem}
.pricegrid{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(0,1fr);gap:1rem;align-items:start}
@media(max-width:1000px){.pricegrid{grid-template-columns:minmax(0,1fr)}}
.verifcard{position:relative;overflow:hidden}
.verifcard .eyebrow{margin-bottom:.4rem}
.vprice{margin:.9rem 0 1rem}
.vprice .num{font-size:2.1rem;font-weight:700;color:var(--navy);letter-spacing:-.035em}
.vprice small{font-size:.95rem;color:var(--ink-3);margin-left:.3rem}
.vdocs{position:absolute;right:-26px;bottom:-20px;width:150px;height:110px;opacity:.5;pointer-events:none}
.vsheet{position:absolute;right:26px;bottom:24px;width:110px;background:#fff;
  border:1px solid var(--line);border-radius:5px;padding:.5rem .55rem;box-shadow:var(--shadow);
  transform:rotate(-7deg)}
.vsheet b{display:block;font-size:.55rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  color:var(--ink-3);border-bottom:1px solid var(--line-soft);padding-bottom:.25rem;margin-bottom:.3rem}
.vsheet i{display:block;height:3px;border-radius:2px;background:var(--surface-3);margin-bottom:3px}
.vsheet.v2{right:6px;bottom:8px;height:78px;transform:rotate(5deg);z-index:-1}
.faq-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;
  flex-wrap:wrap;margin-bottom:1.1rem}
.faq-head h2{margin:0}
.faq-head a{font-size:.87rem;font-weight:560}
.faq2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;align-content:start}
@media(max-width:860px){.faq2{grid-template-columns:minmax(0,1fr)}}
.faq2 details{height:fit-content}
.verifcard > *{position:relative;z-index:1}
.vdocs{z-index:0;right:-34px;bottom:-30px}

/* ---------- contact ---------- */
.contact-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:1.4rem;
  align-items:start}
@media(max-width:940px){.contact-grid{grid-template-columns:minmax(0,1fr)}}
.emailbox{display:flex;align-items:flex-start;gap:.9rem;background:var(--blue-wash);
  border:1px solid #D2E1FD;border-radius:var(--radius);padding:1.1rem 1.2rem;margin-bottom:1.1rem}
.emailbox .eb-ic{flex:none;width:40px;height:40px;border-radius:10px;background:#fff;
  display:grid;place-items:center}
.emailbox .eb-ic svg{width:20px;height:20px;fill:none;stroke:var(--blue);stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round;display:block}
.emailbox a{font-size:1.16rem;font-weight:660;color:var(--navy);letter-spacing:-.02em}
.emailbox a:hover{color:var(--blue)}
.topics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem}
@media(max-width:600px){.topics{grid-template-columns:minmax(0,1fr)}}
.topic{position:relative;display:flex;gap:.7rem;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius);padding:.95rem 1.9rem .95rem 1rem;box-shadow:var(--shadow-sm)}
.topic .ti{flex:none;width:32px;height:32px;border-radius:9px;background:var(--blue-wash);
  display:grid;place-items:center}
.topic .ti svg{width:17px;height:17px;fill:none;stroke:var(--blue);stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round;display:block}
.topic h3{font-size:.92rem;margin:0 0 .2rem}
.topic p{font-size:.82rem;color:var(--ink-2);margin:0}
.topic > svg:last-child{position:absolute;right:.7rem;top:1.15rem;width:14px;height:14px;fill:none;
  stroke:var(--ink-3);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.faq-block{margin-top:1.4rem;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius);padding:1.2rem 1.3rem;box-shadow:var(--shadow-sm)}
.faq-block .faq-head h2{font-size:1.1rem}
.statstrip{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:1.2rem 1.4rem;box-shadow:var(--shadow-sm)}
.statstrip .tiles{margin:0;padding:0;border-top:0}
@media(max-width:1000px){
  /* the dropdown panel cannot be positioned sanely inside the scrolling nav row;
     these links remain available in the footer */
  .navdrop{display:none}
}
@media(max-width:1000px){.site-foot .cols{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.6rem}}
@media(max-width:560px){.site-foot .cols{grid-template-columns:minmax(0,1fr)}}
@media(max-width:1000px){
  /* Scoped: an unscoped .brand{order:1} here was reordering the LIVE header too,
     which is why the account button rendered to the left of the logo on a phone. */
  .site-head .bar{height:auto;padding-top:.55rem;padding-bottom:.55rem;flex-wrap:wrap;row-gap:.45rem}
  .site-head .nav-aux{margin-left:auto;order:2}
  .site-head .brand{order:1}
  .site-head .nav-main{order:3}
}

/* ---------- responsive re-assertions (must stay last) ---------- */
@media(max-width:1060px){
  .hero-x .hero-grid{grid-template-columns:minmax(0,1fr);gap:2rem}
  .hero-x .hero-aside{display:block}
  .hero-copy h1{max-width:none}
}
@media(max-width:940px){
  .shero-grid{grid-template-columns:minmax(0,1fr)}
  .split-head{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:760px){
  .tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.2rem .4rem}
  .trace{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:600px){
  .titlerow{gap:.8rem}
  .exitem{padding:1.1rem}
  .ex-price{flex-wrap:wrap}
  .band{padding:2.4rem 0}
  .shero{padding:2rem 0 1.8rem}
  .hero-x{padding:2.2rem 0 2.4rem}
}

/* ---------------------------------------------------------- gated sections */
/* Signed-out visitors see the item name, its category, the median and how many
   observations sit behind it. Everything below that is injected server side once a
   session cookie is present, so the locked markup is what the asset server holds. */
.lockpanel{
  display:flex;align-items:center;gap:1.1rem;flex-wrap:wrap;
  border:1px solid var(--line);border-radius:14px;background:var(--card);
  padding:1.15rem 1.25rem;box-shadow:var(--shadow-sm)
}
.lockpanel .lockmark{
  flex:0 0 auto;width:38px;height:38px;border-radius:10px;display:grid;place-items:center;
  background:#DCEBE2;color:var(--blue)
}
.lockpanel .lockmark svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7}
.lockpanel .lockbody{flex:1 1 17rem;min-width:0}
.lockpanel h3{font-size:1rem;margin:0;letter-spacing:-.01em}
.lockpanel p{margin:.22rem 0 0;color:var(--muted);font-size:.87rem;max-width:56ch}
.lockpanel .lockacts{display:flex;gap:.5rem;flex-wrap:wrap;flex:0 0 auto}
@media(max-width:560px){.lockpanel .lockacts{width:100%}.lockpanel .lockacts .btn{flex:1 1 auto}}
.lockcards{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.9rem;margin-bottom:1rem
}
@media(max-width:980px){.lockcards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.lockcards{grid-template-columns:minmax(0,1fr)}}
.lockcards .scard .v.locked{
  color:var(--muted);font-size:1.05rem;font-weight:600;letter-spacing:-.01em
}
.lockcards .scard .v.locked a{color:var(--blue);text-decoration:none}
.lockcards .scard .v.locked a:hover{text-decoration:underline}

/* the account strip in the header */
.acct{display:flex;align-items:center;gap:.5rem}
.acct .who{
  font-size:.82rem;color:var(--muted);max-width:16ch;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap
}
@media(max-width:860px){.acct .who{display:none}}

/* sign-in / sign-up */
.authwrap{max-width:26rem;margin:0 auto;padding:2.6rem 0 4rem}
.authcard{
  border:1px solid var(--line);border-radius:16px;background:var(--card);
  padding:1.6rem 1.5rem;box-shadow:var(--shadow-sm)
}
.authcard h1{font-size:1.4rem;margin:0 0 .3rem;letter-spacing:-.02em}
.authcard .sub{color:var(--muted);font-size:.9rem;margin:0 0 1.2rem}
.authcard label{display:block;font-size:.82rem;font-weight:600;margin:.85rem 0 .3rem}
.authcard input{
  width:100%;padding:.62rem .7rem;border:1px solid var(--line);border-radius:9px;
  font:inherit;font-size:.93rem;background:var(--bg);color:var(--ink)
}
.authcard input:focus{outline:2px solid var(--blue);outline-offset:1px;border-color:var(--blue)}
.authcard .btn{width:100%;margin-top:1.1rem;justify-content:center}
.authcard .hint{color:var(--muted);font-size:.78rem;margin:.3rem 0 0}
.authcard .swap{text-align:center;font-size:.86rem;margin:1.1rem 0 0;color:var(--muted)}
.authmsg{
  margin:.9rem 0 0;padding:.6rem .7rem;border-radius:9px;font-size:.85rem;
  border:1px solid #F3C7C2;background:#FDF2F1;color:#8E2E22
}
.authmsg.ok{border-color:#BFE3C9;background:#F1FAF3;color:#215C34}
.authmsg[hidden]{display:none}
.rangelock{
  color:var(--blue);text-decoration:none;font-weight:600;font-size:.84rem;white-space:nowrap
}
.rangelock:hover{text-decoration:underline}
.scopeline{
  margin:.55rem 0 0;font-size:.84rem;color:var(--muted);
  border-left:2px solid var(--line);padding-left:.7rem
}


/* ============================================================
   Direction C — Ledger.  The serif carries the item name and the
   price; everything else stays in the sans.  Tabular columns keep
   the mono, which is what actually lines digits up in a table.
   ============================================================ */
.stat .v{font-family:var(--serif);font-weight:600;letter-spacing:-.012em}
.samp .mid .big{font-family:var(--serif);font-weight:600;letter-spacing:-.015em}
.plan .price{font-family:var(--serif);font-weight:600}
.rtable .r .med{font-family:var(--serif);font-weight:600}
.seg .val{font-family:var(--serif);font-weight:600}
.covrow .v{font-family:var(--serif);font-weight:600}
.spread dd{font-family:var(--serif);font-weight:600}


/* ---------- design bundle components ---------- */
/* Hubstake — single stylesheet. Token names are fixed; values are ours. */


/* ---------- base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:400 1rem/1.5 var(--sans);-webkit-font-smoothing:antialiased}
a{color:var(--blue-600);text-decoration-thickness:1px;text-underline-offset:.2em}
a:hover{color:var(--blue-700)}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
h1,h2,h3{margin:0;color:var(--navy);font-weight:600;letter-spacing:-.01em;text-wrap:balance}
p{margin:0;text-wrap:pretty}
ul,ol{margin:0;padding:0}
mark{background:var(--blue-wash);color:inherit;border-radius:2px;padding:0 1px}
.mono{font-family:var(--mono)}
.num{font-variant-numeric:tabular-nums}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--gut)}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.label{font:500 .75rem/1.3 var(--sans);text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3)}
.fine{font-size:.8125rem;line-height:1.45;color:var(--ink-3)}

/* ---------- header / footer ---------- */
.site-header{background:var(--navy);border-bottom:1px solid var(--navy)}
.site-header .wrap{display:flex;align-items:center;gap:24px;min-height:60px}
.brand{display:flex;align-items:center;gap:10px;color:var(--on-accent);text-decoration:none;font-weight:600;font-size:1.375rem;letter-spacing:-.03em}
.brand:hover{color:var(--on-accent)}
.brand-mark{display:grid;place-items:center;width:28px;height:28px;border-radius:var(--radius-xs);background:var(--blue);color:var(--on-accent);font-size:.9375rem;font-weight:700}
.brand-mark::after{content:"H"}
/* The legacy sheet sets .field{margin-bottom:1rem} (line ~635) and the bundle's
   .field does not reset it, so the header search sat 16px above the optical
   centre of the logo and the account buttons.  Zero it here and centre the
   form itself so the field is vertically centred in the 60px bar. */
.header-search{flex:1;max-width:460px;display:flex;align-items:center;margin:0;align-self:center}
.header-search .field{margin:0;width:100%;border-color:rgba(255,255,255,.28);background:rgba(255,255,255,.06)}
.header-search .field input{color:var(--on-accent)}
.header-search .field input::placeholder{color:rgba(255,255,255,.55)}
.header-search .field .btn{background:transparent;border-left:1px solid rgba(255,255,255,.28);color:var(--on-accent)}
.header-search .field .btn:hover{background:rgba(255,255,255,.12)}
.nav{display:flex;align-items:center;gap:20px;margin-left:auto;font-size:.875rem}
.nav a:not(.btn){color:rgba(255,255,255,.78);text-decoration:none}
.nav a:not(.btn):hover{color:var(--on-accent)}
.account{display:flex;align-items:center;gap:8px}
.avatar{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--blue);color:var(--on-accent);font:600 .6875rem/1 var(--sans);letter-spacing:.02em}
.site-footer{border-top:1px solid var(--navy);margin-top:0;padding:24px 0 40px;background:var(--navy)}
.site-footer .wrap{display:flex;flex-wrap:wrap;gap:8px 24px;justify-content:space-between;font-size:.8125rem;color:rgba(255,255,255,.6)}
.site-footer nav{display:flex;gap:20px}
.site-footer a{color:rgba(255,255,255,.8);text-decoration:none}
.site-footer a:hover{color:var(--on-accent)}

/* ---------- controls ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font:500 .9375rem/1 var(--sans);text-decoration:none;white-space:nowrap;cursor:pointer}
.btn:hover{background:var(--surface-2);color:var(--ink)}
.btn-primary{background:var(--blue);border-color:var(--blue);color:var(--on-accent)}
.btn-primary:hover{background:var(--blue-600);border-color:var(--blue-600);color:var(--on-accent)}
.btn-sm{height:32px;padding:0 12px;font-size:.8125rem}
.btn-lg{height:48px;padding:0 22px;font-size:1rem}
.btn-block{width:100%}
.field{display:flex;align-items:stretch;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden}
.field:focus-within{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-ring)}
.field input{flex:1;min-width:0;height:36px;padding:0 12px;border:0;background:transparent;color:var(--ink);font:inherit;font-size:.9375rem;outline:none}
.field input::placeholder{color:var(--ink-3)}
.field .btn{height:auto;border:0;border-radius:0}
.field--sm .btn{padding:0 12px;font-size:.8125rem;background:var(--surface-2);border-left:1px solid var(--line)}
.field--lg input{height:48px;font-size:1.0625rem;padding:0 16px}
.field--xl{border:1.5px solid var(--navy);border-radius:var(--radius);box-shadow:var(--shadow)}
.field--xl input{height:68px;padding:0 22px;font-size:1.25rem}
.field--xl .btn{padding:0 28px;font-size:1.0625rem}
select{height:34px;padding:0 30px 0 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23454a54' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right 10px center;color:var(--ink);font:inherit;font-size:.875rem;-webkit-appearance:none;appearance:none}
.tag{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 8px;border:1px solid var(--line-soft);border-radius:var(--radius-xs);background:var(--surface-2);color:var(--ink-2);font:500 .75rem/1 var(--sans);white-space:nowrap;vertical-align:middle}
.tag-warn{background:var(--warn-wash);border-color:var(--warn-line);color:var(--warn)}
.tag-ls{background:var(--navy);border-color:var(--navy);color:var(--on-accent);font-family:var(--mono);letter-spacing:.04em}

/* ---------- homepage ---------- */
.home{padding:0}
.hero-photo{position:relative;overflow:hidden;padding:88px 0 64px}
.hero-slides{position:absolute;inset:0;z-index:0}
.hero-slide{position:absolute;inset:0;background-size:cover;background-position:center}
.hero-overlay{position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(13,20,32,.45),rgba(13,20,32,.9))}
.hero-scrim{position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(100deg,rgba(13,20,32,.78) 0%,rgba(13,20,32,.55) 32%,rgba(13,20,32,.15) 62%,transparent 80%)}
.hero-inner{position:relative;z-index:2}
.home-search{max-width:860px}
.home-search h1{color:#fff}
.home-search .lede{margin:12px 0 28px;max-width:58ch;color:rgba(255,255,255,.78);font-size:1.0625rem}
.home-scope{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:12px;font-size:.875rem;color:rgba(255,255,255,.72)}
.home-scope label{display:flex;align-items:center;gap:8px}
.home-scope select{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.32);color:#fff}
.field--xl{box-shadow:0 16px 34px rgba(0,0,0,.32);border-color:transparent}
.try{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:20px;font-size:.875rem;color:rgba(255,255,255,.6)}
.try a{display:inline-flex;align-items:center;height:30px;padding:0 12px;border:1px solid rgba(255,255,255,.3);border-radius:999px;background:rgba(255,255,255,.08);color:#fff;text-decoration:none}
.try a:hover{background:var(--blue);border-color:var(--blue);color:#fff}
.stats-band{background:var(--blue-700)}
.stats-band .coverage{border:0;margin:0 auto;padding:20px var(--gut)}
.stats-band .coverage div+div{border-left-color:rgba(255,255,255,.22)}
.stats-band .coverage dt{color:rgba(255,255,255,.7)}
.stats-band .coverage dd{color:#fff}
.content-white{background:var(--surface)}
.coverage-note{margin-top:16px}
.promise{display:flex;flex-wrap:wrap;gap:8px 28px;margin-top:28px;list-style:none;font-size:.875rem;color:var(--ink-2)}
.promise li{display:flex;align-items:center;gap:8px}
.promise li::before{content:"";width:6px;height:6px;background:var(--blue);border-radius:1px}
.home-search h1{font-size:clamp(1.75rem,3.4vw,2.4375rem);line-height:1.15;letter-spacing:-.02em;max-width:22ch}
.coverage{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.coverage div{padding:0 20px 0 0}
.coverage div+div{padding-left:20px;border-left:1px solid var(--line-soft)}
.coverage dt{font-size:.9375rem;color:var(--ink-3)}
.coverage dd{margin:4px 0 0;color:var(--blue-700);font-size:1.875rem;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.example{margin-top:56px;padding-bottom:56px}
.example h2,.example>header a{color:var(--navy)}
.example>header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:16px}
.example>header h2{font-size:1.25rem}
.example-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm)}
.example-card>div{padding:24px 28px}
.example-card>div+div{border-left:1px solid var(--line-soft);background:var(--blue-wash)}
.example-card h3{font-size:1.125rem;margin:6px 0 16px}
.anno{display:block;margin-bottom:4px}
.ex-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:16px 0 20px}
.ex-row dd{margin:2px 0 0;font-weight:500;font-variant-numeric:tabular-nums}
.ex-source p{color:var(--ink-2);font-size:.9375rem;margin-bottom:16px}
.ex-source dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 16px;margin:0 0 20px;font-size:.875rem}
.ex-source dt{color:var(--ink-3)}
.ex-source dd{margin:0;font-variant-numeric:tabular-nums}

/* ---------- search results ---------- */
.search-top{background:var(--surface);border-bottom:1px solid var(--line);padding:20px 0}
.search-top .field{max-width:760px}
.results-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:40px;padding-top:24px}
/* display:block is explicit because the retired search page left a
   `.filters{display:flex}` behind, which laid the Refine label beside the
   fieldsets instead of above them. */
.filters{display:block;position:sticky;top:16px;align-self:start}
.filters>.label{display:block;margin-bottom:16px;color:var(--navy)}
.filter-group{margin:0 0 16px;padding:0 0 16px;border:0;border-bottom:1px solid var(--line-soft)}
.filter-group legend{padding:0;margin-bottom:8px;font-size:.875rem;font-weight:600;color:var(--navy)}
.check{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:.875rem;cursor:pointer}
.check input{width:16px;height:16px;margin:0;accent-color:var(--blue)}
.check .count{margin-left:auto;color:var(--ink-3);font-size:.8125rem;font-variant-numeric:tabular-nums}
.check input:checked+span{font-weight:500}
.filter-find{margin-bottom:6px}
.filter-find input{height:32px;font-size:.8125rem}
.more{display:inline-block;margin-top:4px;font-size:.8125rem}
.more-details{margin-top:4px}
.more-details summary{cursor:pointer;list-style:none}
.more-details summary::-webkit-details-marker{display:none}
.more-details summary::marker{content:""}
.more-open{display:none}
.more-details[open] .more-open{display:inline}
.more-details[open] .more-closed{display:none}
.more-details .more-list{display:flex;flex-direction:column;margin-top:4px}
.results-bar{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px;margin-bottom:12px}
.results-count{font-size:.9375rem;color:var(--ink-2)}
.results-count strong{color:var(--navy);font-weight:600}
.sort{display:flex;align-items:center;gap:8px;margin-left:auto;font-size:.875rem;color:var(--ink-2)}
.chips{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px;font-size:.8125rem}
.chip{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 6px 0 10px;border:1px solid var(--blue-ring);border-radius:999px;background:var(--blue-wash);color:var(--blue-700);text-decoration:none}
.chip:hover{border-color:var(--blue);color:var(--blue-700)}
.chip b{font-weight:500}
.chip .x{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;font-size:.875rem;line-height:1}
.chip:hover .x{background:var(--blue);color:var(--on-accent)}
.result-table{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.result-head,.result{display:grid;grid-template-columns:minmax(0,1fr) 120px 56px 84px;gap:16px;align-items:center;padding:0 20px}
.result-head{height:36px;background:var(--surface-2);border-bottom:1px solid var(--line)}
.result-head span:nth-child(n+2),.result-price,.result-obs{text-align:right}
.result-list{list-style:none}
.result{position:relative;padding-top:14px;padding-bottom:14px}
.result+.result{border-top:1px solid var(--line-soft)}
.result:hover{background:var(--bg)}
.result-name{font-size:1rem;font-weight:500;line-height:1.35}
.result-name a{color:var(--navy);text-decoration:none}
.result-name a::after{content:"";position:absolute;inset:0}
.result:hover .result-name a{color:var(--blue-700);text-decoration:underline}
.result-meta{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:3px;font-size:.8125rem;color:var(--ink-3)}
.result-price{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.rp{font-size:1.0625rem;font-weight:600;color:var(--navy);font-variant-numeric:tabular-nums;line-height:1.2}
.rp small{font-size:.75rem;font-weight:400;color:var(--ink-2)}
.result-unit{font:500 .8125rem var(--mono);color:var(--ink-2)}
.result-obs{font-size:.875rem;color:var(--ink-2);font-variant-numeric:tabular-nums}
.result-obs b{color:var(--ink);font-weight:500}
.result-obs.is-thin b{color:var(--warn);font-weight:600}
.pager{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:16px;font-size:.875rem;color:var(--ink-2)}
.pager nav{display:flex;gap:6px}
.pager a,.pager span[aria-current]{display:grid;place-items:center;min-width:34px;height:34px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);text-decoration:none}
.pager span[aria-current]{background:var(--navy);border-color:var(--navy);color:var(--on-accent)}

/* ---------- zero-result search state ---------- */
.empty-state{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:48px 40px;text-align:left;max-width:640px}
.empty-state h2{font-size:1.25rem;margin-bottom:10px}
.empty-state>p{color:var(--ink-2);font-size:.9375rem;max-width:56ch}
.empty-try,.empty-cats{margin-top:24px}
.empty-try-links,.empty-cat-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.empty-try-links a,.empty-cat-grid a{display:inline-flex;align-items:center;height:32px;padding:0 14px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);text-decoration:none;font-size:.875rem}
.empty-try-links a:hover,.empty-cat-grid a:hover{border-color:var(--blue);color:var(--blue-700)}
.empty-state .fine{margin-top:28px;padding-top:20px;border-top:1px solid var(--line-soft)}

/* ---------- single-observation item ---------- */
.single-note{margin-top:12px;padding:12px 14px;border:1px solid var(--warn-line);border-radius:var(--radius-sm);background:var(--warn-wash);color:var(--ink);font-size:.875rem}
.single-note strong{color:var(--warn)}
.single-only{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;height:200px;border:1px dashed var(--line);border-radius:var(--radius-sm);text-align:center;padding:24px}
.single-only .figure{font-size:2.25rem}
.single-only p{max-width:36ch;color:var(--ink-2);font-size:.875rem}

/* ---------- LOW CONFIDENCE (state A) — lives on the number itself ---------- */
.thin{position:relative;display:inline-block;padding:0 .18em;border-bottom:2px dashed var(--warn);background:repeating-linear-gradient(135deg,var(--warn-wash) 0 5px,transparent 5px 10px);color:var(--navy)}
.thin .approx{margin-right:.06em;color:var(--warn);font-weight:500}
.thin-flag{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 8px;border:1px solid var(--warn-line);border-radius:var(--radius-xs);background:var(--warn-wash);color:var(--warn);font:600 .75rem/1 var(--sans);white-space:nowrap}
.thin-flag::before{content:"";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:8px solid currentColor}

/* ---------- item page ---------- */
.crumbs{display:flex;flex-wrap:wrap;gap:8px;padding:18px 0 0;font-size:.8125rem;color:var(--ink-3)}
.crumbs a{color:var(--ink-2)}
.crumbs span[aria-hidden]{color:var(--line)}
.item-head{padding:14px 0 24px}
.item-kicker{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;font-size:.8125rem;color:var(--ink-3)}
.item-head h1{font-size:clamp(1.5rem,2.7vw,2rem);line-height:1.2;letter-spacing:-.02em;max-width:30ch}
.item-meta{display:flex;flex-wrap:wrap;gap:6px 20px;margin-top:10px;font-size:.875rem;color:var(--ink-2)}
.item-meta b{font-weight:500;color:var(--ink)}
.item-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:20px;align-items:start}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:24px}
.panel-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 16px;margin-bottom:20px}
.panel-head h2{font-size:1rem}
.price-panel .price,.example-card .price,.single-only .price{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-top:8px}
.price .figure,.single-only .figure{color:var(--navy);font-size:3.0625rem;font-weight:600;line-height:1.05;letter-spacing:-.035em;font-variant-numeric:tabular-nums}
.price .per{font:500 1rem var(--mono);color:var(--ink-2)}
.price .thin-flag{align-self:center;margin-left:4px}
.stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 20px;margin:20px 0 0;padding-top:16px;border-top:1px solid var(--line-soft)}
.stats div{min-width:0}
.stats dt{font-size:.8125rem;color:var(--ink-3)}
.stats dd{margin:2px 0 0;font-size:1.0625rem;font-weight:500;color:var(--ink);font-variant-numeric:tabular-nums}
.stats dd small{font-size:.8125rem;font-weight:400;color:var(--ink-3)}
.stats .is-thin dd{color:var(--warn);font-weight:600}
.price-panel .fine{margin-top:18px}

/* range bar: --l/--m/--r are server-computed % positions */
.range{position:relative;height:58px;margin:22px 0 4px}
.range-track{position:absolute;left:0;right:0;top:15px;height:4px;border-radius:2px;background:var(--surface-3)}
.range-iqr{position:absolute;top:8px;left:var(--l);width:calc(var(--r) - var(--l));height:18px;border:1.5px solid var(--blue);border-radius:var(--radius-xs);background:var(--blue-wash)}
.range-med{position:absolute;top:2px;left:var(--m);width:3px;height:30px;margin-left:-1.5px;border-radius:1px;background:var(--navy)}
.range-lab{position:absolute;top:36px;transform:translateX(-50%);font-size:.8125rem;color:var(--ink-2);white-space:nowrap;font-variant-numeric:tabular-nums}
.range-lab b{font-weight:500;color:var(--ink-3);margin-right:4px;font-size:.75rem}
.range-lab.l{left:var(--l)} .range-lab.r{left:var(--r)}
.range.is-thin .range-iqr{border:1.5px dashed var(--warn);background:repeating-linear-gradient(135deg,var(--warn-wash) 0 5px,var(--surface) 5px 10px)}
.range-caption{font-size:.8125rem;color:var(--ink-3)}

/* thin explanation, attached directly under the figure */
.thin-why{margin-top:12px;padding:12px 14px;border:1px solid var(--warn-line);border-radius:var(--radius-sm);background:var(--warn-wash);color:var(--ink);font-size:.875rem}
.thin-why strong{color:var(--warn)}
.thin-why ul{list-style:none;display:grid;gap:4px;margin:8px 0 0}
.thin-why li{display:flex;justify-content:space-between;gap:12px;font-variant-numeric:tabular-nums}
.thin-why li b{color:var(--warn)}

/* histogram: each .bar gets --h */
.histo{position:relative;display:flex;align-items:flex-end;gap:2px;height:200px;margin-top:28px;border-bottom:1px solid var(--ink-3)}
.histo .bar{flex:1;height:var(--h);min-height:0;border-radius:2px 2px 0 0;background:var(--series-3)}
.histo .bar.in{background:var(--series-1)}
.histo .mark,.strip .mark{position:absolute;top:-22px;bottom:0;left:var(--x);border-left:1.5px dashed var(--series-2)}
.histo .mark span,.strip .mark span{position:absolute;top:0;left:6px;font-size:.75rem;font-weight:500;color:var(--navy);white-space:nowrap;font-variant-numeric:tabular-nums}
.histo .mark.q{border-left-color:var(--blue-700);border-left-style:dotted}
.histo .mark.q span{color:var(--blue-700);font-weight:400}
.histo .mark.q.l span{left:auto;right:6px}
.histo+.axis,.strip+.axis,figure .axis{position:relative;height:22px;margin-top:6px;font-size:.75rem;color:var(--ink-3);font-variant-numeric:tabular-nums}
figure .axis span{position:absolute;left:var(--x);transform:translateX(-50%)}
figure .axis span:first-child{transform:none}
figure .axis span:last-child{transform:translateX(-100%)}
.panel-head .legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:.8125rem;color:var(--ink-2);list-style:none}
.panel-head .legend li{display:flex;align-items:center;gap:6px}
.sw{width:10px;height:10px;border-radius:2px;background:var(--series-3)}
.sw.in{background:var(--series-1)}
.sw.pt{border-radius:50%;background:var(--navy)}
.sw.hatch{border:1px dashed var(--warn);background:var(--warn-wash)}

/* strip plot for thin items: every observation drawn individually */
.strip{position:relative;height:120px;margin-top:28px;border-bottom:1px solid var(--ink-3)}
.strip-iqr{position:absolute;top:20px;bottom:0;left:var(--l);width:calc(var(--r) - var(--l));border:1px dashed var(--warn);border-bottom:0;background:repeating-linear-gradient(135deg,var(--warn-wash) 0 5px,transparent 5px 10px)}
.strip .dot{position:absolute;left:var(--x);bottom:var(--y);width:14px;height:14px;margin-left:-7px;border:2px solid var(--surface);border-radius:50%;background:var(--navy);box-shadow:0 0 0 1px var(--navy)}
.strip .dot span{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);font-size:.6875rem;color:var(--ink-2);white-space:nowrap;font-variant-numeric:tabular-nums}
.strip .mark{top:0}

/* observations table */
.obs{margin-top:40px}
.obs-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px 24px;margin-bottom:14px}
.obs-head h2{font-size:1.25rem}
.obs-head p{margin-top:4px;color:var(--ink-2);font-size:.9375rem;max-width:62ch}
.obs-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.table-scroll{overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}
.obs-table{width:100%;min-width:680px;border-collapse:collapse;font-size:.875rem}
.obs-table caption{text-align:left}
.obs-table th{padding:10px 14px;background:var(--surface-2);border-bottom:1px solid var(--line);color:var(--ink-3);font:500 .75rem/1.25 var(--sans);text-transform:uppercase;letter-spacing:.05em;text-align:left;white-space:nowrap}
.obs-table td{padding:10px 14px;border-top:1px solid var(--line-soft);vertical-align:middle;font-variant-numeric:tabular-nums}
.obs-table tr:first-child td{border-top:0}
.obs-table tbody tr:hover td{background:var(--bg)}
.obs-table .r{text-align:right}
.obs-table .src-col{width:230px;padding-right:10px;position:sticky;right:0;background:var(--surface);box-shadow:-8px 0 8px -8px rgba(19,32,56,.1)}
.obs-table thead .src-col{background:var(--surface-2)}
.obs-table tbody tr:hover .src-col{background:var(--bg)}
.cell-sub{display:block;font-size:.75rem;color:var(--ink-3)}
.cell-price{font-size:.9375rem;font-weight:600;color:var(--navy)}
.delta{font-size:.8125rem}
.delta.up{color:var(--neg)} .delta.down{color:var(--pos)}
.contract{font:400 .8125rem var(--mono);color:var(--ink-2)}

/* THE SOURCE LINK — primary action on every row */
.src{display:flex;align-items:center;gap:10px;padding:6px 12px 6px 8px;border:1px solid var(--blue-ring);border-radius:var(--radius-sm);background:var(--blue-wash);color:var(--blue-700);text-decoration:none}
.src:hover{border-color:var(--blue);background:var(--blue);color:var(--on-accent)}
.src-doc{position:relative;flex:none;display:grid;place-items:end center;width:24px;height:30px;padding-bottom:3px;border:1.5px solid currentColor;border-radius:2px 7px 2px 2px;background:var(--surface);color:var(--blue-700);font:600 .5625rem/1 var(--mono)}
.src:hover .src-doc{color:var(--blue-700);border-color:var(--surface)}
.src-text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.src-title{font-size:.8125rem;font-weight:600;line-height:1.2}
.src-file{overflow:hidden;font:400 .6875rem/1.2 var(--mono);text-overflow:ellipsis;white-space:nowrap;opacity:.9}
.src-go{flex:none;font-size:1rem;line-height:1}
.table-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;font-size:.875rem;color:var(--ink-2)}

/* ---------- LUMP SUM (state B) ---------- */
.price-panel.is-ls{padding-top:0;overflow:hidden}
.ls-band{display:flex;align-items:center;gap:10px;margin:0 -24px 20px;padding:12px 24px;background:var(--navy);color:var(--on-accent);font-size:.875rem;font-weight:500}
.ls-band .tag-ls{background:var(--surface);color:var(--navy);border-color:var(--surface)}
.ls-note{margin-top:18px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-2);font-size:.875rem;color:var(--ink-2)}
.ls-note strong{color:var(--navy)}
.bands{width:100%;margin-top:24px;border-collapse:collapse;font-size:.875rem;font-variant-numeric:tabular-nums}
.bands caption{padding-bottom:8px;text-align:left;font-weight:600;color:var(--navy)}
.bands th{padding:6px 0;border-bottom:1px solid var(--line);color:var(--ink-3);font-size:.75rem;font-weight:500;text-align:left}
.bands td{padding:8px 0;border-bottom:1px solid var(--line-soft)}
.bands .r{text-align:right}

/* ---------- signed-out: "behind this price" ---------- */
.unlock h2{font-size:1.25rem}
.unlock>p{margin-top:6px;color:var(--ink-2);font-size:.9375rem}
.manifest{list-style:none;display:grid;gap:0;margin:20px 0;border-top:1px solid var(--line-soft)}
.manifest li{display:grid;grid-template-columns:112px minmax(0,1fr);gap:16px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line-soft)}
.manifest h3{font-size:.9375rem}
.manifest p{margin-top:2px;font-size:.8125rem;color:var(--ink-2)}
.manifest .pv{position:relative;height:44px;border-radius:var(--radius-xs);background:var(--surface-2)}
.manifest .pv-range::before{content:"";position:absolute;left:10px;right:10px;top:20px;height:3px;background:var(--surface-3)}
.pv-range::after{content:"";position:absolute;left:34%;width:28%;top:14px;height:14px;border:1.5px solid var(--blue);border-radius:2px;background:var(--blue-wash)}
.manifest .pv-histo{display:flex;align-items:flex-end;gap:2px;padding:6px 10px 0}
.pv-histo i{flex:1;height:var(--h);background:var(--series-3);border-radius:1px 1px 0 0}
.pv-histo i.in{background:var(--blue)}
.manifest .pv-rows{display:grid;gap:5px;align-content:center;padding:0 10px}
.pv-rows i{height:5px;border-radius:2px;background:var(--surface-3)}
.pv-rows i:nth-child(2){width:80%} .pv-rows i:nth-child(3){width:90%}
.manifest .pv-docs{display:flex;align-items:center;justify-content:center;gap:5px}
.pv-docs i{width:18px;height:24px;border:1.5px solid var(--blue);border-radius:1px 5px 1px 1px;background:var(--surface)}
.manifest li.key{margin:0 -12px;padding:14px 12px;border:1px solid var(--blue-ring);border-radius:var(--radius-sm);background:var(--blue-wash)}
.manifest li.key .pv{background:var(--surface)}
.unlock-cta{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px}
.unlock-cta span{font-size:.875rem;color:var(--ink-2)}
.unlock .fine{margin-top:12px}
.ghost{display:block;width:var(--w,70%);height:9px;border-radius:3px;background:var(--surface-3)}
.ghost.r{margin-left:auto}
.obs-table.is-ghost td{padding:14px}
.obs-table.is-ghost .src{pointer-events:none;border-style:dashed;background:var(--surface)}
.obs-table.is-ghost .src .ghost{background:var(--blue-ring)}
.ghost-fade td{opacity:.45}
.locked-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:16px;border-top:1px solid var(--line);background:var(--surface-2);font-size:.9375rem;color:var(--ink-2)}
.locked-foot b{color:var(--navy);font-weight:600}

/* ---------- responsive ---------- */
@media (max-width:960px){
  .item-grid{grid-template-columns:minmax(0,1fr)}
  .example-card{grid-template-columns:minmax(0,1fr)}
  .example-card>div+div{border-left:0;border-top:1px solid var(--line-soft)}
}
@media (max-width:1100px){
  .result-head,.result{grid-template-columns:minmax(0,1fr) auto}
  .result-price{align-items:flex-end}
  .result-unit,.result-obs{display:none}
  .result-head span:nth-child(2),.result-head span:nth-child(3),.result-head span:nth-child(4){display:none}
}
@media (max-width:860px){
  .results-layout{grid-template-columns:minmax(0,1fr);gap:20px}
  .filters{position:static;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0 24px}
  .filters>.label,.filters>.btn{grid-column:1/-1}
  .coverage{grid-template-columns:repeat(2,minmax(0,1fr))}
  .coverage div:nth-child(3){padding-left:0;border-left:0}
  .coverage div:nth-child(n+3){border-top:1px solid var(--line-soft)}
  .header-search{display:none}
}
@media (max-width:640px){
  .result-head{display:none}
  .result{grid-template-columns:minmax(0,1fr) auto;gap:6px 12px}
  .result-main{grid-column:1/-1}
  .result-price{flex-direction:row;align-items:center}
  .result-unit{display:none}
  .field--xl input{height:56px;font-size:1.0625rem;padding:0 16px}
  .field--xl .btn{padding:0 18px}
  .figure{font-size:2.4375rem}
  /* Pricing stays on a phone: someone deciding whether to pay should not have to
     reach the footer to find out what it costs.  Sign in folds away -- an
     existing customer knows where the account is, a prospective one does not
     know what it costs. */
  .site-header .nav a:not(.btn):not(.account):not(.nav-pricing){display:none}
  .site-head .nav a:not(.btn):not(.account){display:none}
  .manifest li{grid-template-columns:72px minmax(0,1fr)}
}

/* A component that sets display: overrides the browser default for [hidden].
   The header toggles account state with the attribute, so it has to win. */
[hidden]{display:none!important}

/* The gating sentinels wrap each panel; the grid must still see the panels. */
#g-cards,#g-dist{display:contents}

/* Hero.  One photo per pageview, chosen by the script on the homepage; this rule
   paints the first one so the band is never empty before the script runs. */
.hero-slide{
  background-color:#132038;
  background-image:url("/assets/img/hero-earthwork.webp");
  background-size:cover;background-position:center;
}

/* A table caption was overlapping the heading above it on the pricing page. */
table caption{caption-side:top;text-align:left;padding:0 0 10px;color:var(--ink-3);font-size:.8125rem;line-height:1.45}

/* 2. Coverage figures read as a row of headlines, so they centre. */
.stats-band .coverage{text-align:center}
.stats-band .coverage div{padding:0 20px}
.stats-band .coverage div+div{padding-left:20px}

/* With the coverage note gone, .example was the first child of .content-white and
   its top margin collapsed out of the white section, showing a strip of page grey
   under the stats band.  Pad instead of margin so the white starts immediately. */
.content-white .example{margin-top:0;padding-top:56px}

/* Search results bar: the "items with N+ winning bids" qualifier under the count. */
.tail-note{margin:.5rem 0 0;color:var(--ink-3);font-size:.8rem}

/* Sample depth beside the headline price, not only in the distribution card. */
.price-panel .pp-depth{display:flex;align-items:center;gap:.5rem;margin:.1rem 0 .35rem}
.price-panel .pp-depth small{color:var(--ink-3);font-size:.8rem;font-weight:500}
.price-panel .pp-mix{color:var(--warn);font-weight:600}

/* Paid panels on the item page, and their locked state. */
.pro-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:20px;margin:20px 0}
.panel-locked{border-style:dashed;background:var(--surface-2)}
.panel-locked .locked-why{color:var(--ink-3);font-size:.9rem;margin:.2rem 0 .9rem;max-width:52ch}
.seg-rows{list-style:none;margin:.4rem 0 0;padding:0}
.seg-rows li{display:grid;grid-template-columns:11rem 1fr 5.5rem 3rem;align-items:center;
  gap:.6rem;padding:.42rem 0;border-bottom:1px solid var(--line)}
.seg-rows li:last-child{border-bottom:0}
.seg-rows .sl{font-size:.86rem;color:var(--ink)}
.seg-rows .sb{position:relative;height:12px;background:var(--surface-2);border-radius:999px}
.seg-rows .sb i{position:absolute;top:0;height:12px;border-radius:999px;opacity:.55}
.seg-rows .sb b{position:absolute;top:-2px;width:2px;height:16px;background:var(--navy)}
.seg-rows .sv{text-align:right;font-size:.9rem;font-weight:620}
.seg-rows .sn{text-align:right;font-size:.8rem;color:var(--ink-3)}
.trend svg{width:100%;height:auto;display:block}
.trend circle{fill:var(--navy)}
.trend-axis{display:flex;justify-content:space-between;font-size:.78rem;color:var(--ink-3);
  margin-top:.3rem}
.trend-delta{margin-left:.35rem;font-weight:640}
.trend-delta.up{color:var(--warn)}
.trend-delta.down{color:var(--ok)}
.obs-actions{margin-left:auto}
.roadmap{margin:.6rem 0 0;padding-left:1.1rem;color:var(--ink-2)}
.roadmap li{margin:.3rem 0;font-size:.9rem}
@media (max-width:640px){
  .seg-rows li{grid-template-columns:8rem 1fr 4.6rem}
  .seg-rows .sn{display:none}
}


/* The stats band on a phone.  Two columns, everything centred, and the labels
   given a fixed two-line box so a label that wraps cannot push its number out of
   line with the one beside it -- which is what made the band look ragged. */
@media (max-width:640px){
  .stats-band .coverage{grid-template-columns:repeat(2,minmax(0,1fr));gap:0;padding:8px 10px}
  .stats-band .coverage div{padding:12px 6px;border-left:0;border-top:0;text-align:center}
  .stats-band .coverage div:nth-child(2n){border-left:1px solid rgba(255,255,255,.22)}
  .stats-band .coverage div:nth-child(n+3){border-top:1px solid rgba(255,255,255,.22)}
  .stats-band .coverage dt{display:flex;align-items:flex-end;justify-content:center;
    min-height:1.3em;line-height:1.25;font-size:.84rem;margin:0}
  .stats-band .coverage dd{font-size:1.5rem;margin-top:6px;line-height:1.1}
}

/* Pricing sits in the header now: someone deciding whether to pay should not have
   to reach the footer to find out what it costs. */
.site-header .nav .nav-pricing{font-weight:600;color:rgba(255,255,255,.92)}
.site-header .nav .nav-pricing:hover{color:#fff}
@media (max-width:560px){
  .site-header .wrap{gap:10px;min-height:54px}
  .site-header .nav{gap:10px;margin-left:auto;font-size:.82rem;white-space:nowrap}
  .site-header .nav .btn-sm{padding:.4rem .6rem;font-size:.78rem}
}
@media (max-width:380px){
  .site-header .brand{font-size:1rem}
  .site-header .nav{gap:8px;font-size:.78rem}
  .site-header .nav .btn-sm{padding:.36rem .5rem;font-size:.74rem}
}
