  *{box-sizing:border-box}
  body{margin:0;background:var(--plane);color:var(--ink);font-family:var(--sans);line-height:1.5;-webkit-font-smoothing:antialiased;}
  .wrap{max-width:1060px;margin:0 auto;padding:clamp(20px,4vw,56px) clamp(16px,4vw,40px) 72px;}
  .eyebrow{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:600;}
  .masthead{border-bottom:1px solid var(--hairline);padding-bottom:26px;margin-bottom:30px;display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;}
  /* 18ch against a 34-character title forced "The Liquid Biopsy Patent Landscape" into a narrow
     column. The cap guards a runaway measure on a future title; it is not meant to be the wrap
     point. text-wrap:balance handles any wrap that remains. */
  h1{font-family:var(--serif);font-weight:600;font-size:clamp(30px,5vw,46px);line-height:1.04;margin:.28em 0 .18em;letter-spacing:-.01em;text-wrap:balance;max-width:36ch;}
  /* 66ch, not 58ch: still inside the 45-75ch readable measure, but it stops the lede breaking into
     three short lines against a wide empty right-hand side. Widening the heading is free; widening
     the READING LINE has a limit, and this stays under it. */
  .lede{color:var(--secondary);font-size:clamp(15px,1.6vw,17px);max-width:66ch;margin:0;}
  /* Sits under the footer as the page's colophon (moved from the masthead at Nate's request,
     2026-08-24, for a cleaner opening). Left-aligned and unwrapped: at full width the lines are
     short, and nowrap would overflow a phone. */
  .provenance{font-size:12px;color:var(--muted);text-align:left;line-height:1.7;font-variant-numeric:tabular-nums;margin-top:10px;}
  .provenance b{color:var(--secondary);font-weight:600;}
  .themebtn{margin-top:10px;background:var(--card);color:var(--secondary);border:1px solid var(--hairline);border-radius:7px;padding:6px 11px;font:inherit;font-size:12px;cursor:pointer;}
  .themebtn:hover{color:var(--ink);border-color:var(--axis);}
  .themebtn:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
  /* Labels hold ONE line (Nate, 2026-08-24): nowrap plus 11px, sized so the longest label
     ("Cover The Method Itself") fits the 180px-minimum tile. minmax stays 180 -- raising it
     to 200 made the five-tile row wrap 4+1 at ordinary window widths, which reads as
     asymmetry, the exact thing the request was against. */
  .hero{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:14px;}
  .tile{background:var(--card);border:1px solid var(--hairline);border-radius:14px;padding:20px 22px;}
  .tile .k{font-size:11px;color:var(--muted);font-weight:600;letter-spacing:.02em;margin-bottom:8px;white-space:nowrap;}
  /* Values sized up 2026-08-24 (Nate): the percent tiles sat small in tall cards; the value
     is the card's content, so let it fill. */
  .tile .v{font-size:clamp(30px,3.6vw,44px);font-weight:650;letter-spacing:-.02em;line-height:1;}
  .tile.lead{grid-column:span 1;}
  .tile.lead .v{font-size:clamp(38px,5.5vw,56px);color:var(--accent);}
  /* Display figures are set in the display face, with tabular lining figures so a
     column of numbers aligns. The site's claim is that every number traces to a source
     record; the numbers are the subject, so they get the typeface rather than being left
     in the interface sans. Revert = delete this rule. */
  .tile .v{font-family:var(--serif);font-variant-numeric:tabular-nums lining-nums;}
  .tile .u{font-size:12.5px;color:var(--secondary);margin-top:8px;line-height:1.35;}
  /* A NAME in a stat tile. The number styling (line-height:1, tight tracking, 20px inline
     override) shattered a 44-character assignee into six cramped lines (Nate, 2026-08-24).
     Same card, same padding -- only the text is set like text: smaller, breathing room
     between lines, and text-wrap:balance so the wrap points read as chosen, not accidental. */
  .tile .v.name{font-size:16px;line-height:1.35;letter-spacing:0;text-wrap:balance;}
  .callout{background:var(--warn-bg);border-radius:14px;padding:15px 20px;margin:20px 0 8px;font-size:13.5px;color:var(--ink);}
  .callout .lab{color:var(--warn);font-weight:700;font-size:11px;letter-spacing:.06em;text-transform:uppercase;}
  .section-head{margin:46px 2px 18px;}
  .section-head .eyebrow{color:var(--accent);}
  .section-head h2{font-family:var(--serif);font-weight:600;font-size:clamp(22px,3vw,28px);margin:.2em 0 .1em;letter-spacing:-.01em;}
  .section-head p{color:var(--secondary);font-size:14.5px;margin:0;max-width:74ch;}
  /* the China-only view is a deliberately-separate second landscape (not blended with US) */
  .cn-view{margin-top:64px;border-top:3px solid var(--accent);padding-top:10px;}
  .cn-view .cn-banner .eyebrow{color:var(--accent);}
  .card{background:var(--card);border:1px solid var(--hairline);border-radius:14px;padding:22px 24px 16px;margin-bottom:22px;}
  .card h3{font-family:var(--serif);font-weight:600;font-size:19px;margin:0 0 3px;letter-spacing:-.01em;}
  .card .sub{color:var(--secondary);font-size:13.5px;margin:0 0 16px;max-width:72ch;}
  .grid2{display:grid;grid-template-columns:1fr 1fr;gap:22px;}
  @media(max-width:780px){.grid2{grid-template-columns:1fr;}}

  /* responsive HTML bars -- constant text size regardless of card width */
  .bars{display:flex;flex-direction:column;gap:10px;margin:4px 0 6px;}
  .bar{display:grid;grid-template-columns:var(--lw,148px) 1fr;align-items:center;gap:14px;}
  .bar .bl{font-size:12.5px;color:var(--secondary);text-align:right;line-height:1.25;overflow-wrap:break-word;}
  .bar.clip .bl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .bar .bt{position:relative;height:18px;display:flex;align-items:center;}
  .bar .bf{height:18px;border-radius:5px;background:var(--accent);min-width:3px;transition:width .3s;}
  .bar .bv{font-size:12px;color:var(--secondary);font-weight:600;font-variant-numeric:tabular-nums;margin-left:9px;white-space:nowrap;}
  .bar.hoverable:hover .bf{filter:brightness(1.08);}
  .bars .sep{height:0;border-top:1px dashed var(--axis);margin:2px 0;}

  /* proportion bar (two-way split) */
  .prop{display:flex;height:34px;border-radius:9px;overflow:hidden;margin:8px 0 4px;}
  .prop .seg{display:flex;flex-direction:column;justify-content:center;padding:0 16px;color:#fff;min-width:60px;}
  .prop .seg .pk{font-size:12px;font-weight:600;opacity:.92;}
  .prop .seg .pv{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;}
  .prop-legend{display:flex;flex-wrap:wrap;gap:6px 20px;margin-top:11px;font-size:13px;
    color:var(--secondary);}
  .prop-legend .pl{display:inline-flex;align-items:center;gap:7px;}
  .prop-legend .pl i{width:10px;height:10px;border-radius:3px;flex:none;}
  .prop-legend .pl b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums;}
  .prop-note{font-size:12.5px;color:var(--muted);margin-top:8px;}

  .chart{position:relative;width:100%;}
  .chart svg{display:block;width:100%;height:auto;overflow:visible;}
  .chart svg text{font-family:var(--sans);}
  .legend{display:flex;flex-wrap:wrap;gap:10px 16px;margin:6px 2px 12px;}
  .lg{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--secondary);}
  .lg .kdot{width:10px;height:10px;border-radius:3px;flex:none;}
  .tip{position:absolute;pointer-events:none;background:var(--card);border:1px solid var(--hairline);border-radius:9px;padding:9px 11px;font-size:12.5px;box-shadow:0 6px 22px rgba(0,0,0,.13);min-width:150px;opacity:0;transition:opacity .09s;z-index:5;}
  .tip .ty{font-family:var(--serif);font-size:14px;font-weight:600;margin-bottom:6px;display:flex;justify-content:space-between;gap:12px;align-items:baseline;}
  .tip .ty .pf{font-family:var(--sans);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--warn);font-weight:700;}
  .tip .row{display:flex;align-items:center;gap:8px;padding:2px 0;}
  .tip .row .key{width:12px;height:3px;border-radius:2px;flex:none;}
  .tip .row .nm{color:var(--secondary);flex:1;} .tip .row .vl{font-weight:650;font-variant-numeric:tabular-nums;color:var(--ink);}
  .tip .tot{border-top:1px solid var(--hairline);margin-top:5px;padding-top:5px;font-weight:650;display:flex;justify-content:space-between;}

  /* heatmap */
  .heat{overflow-x:auto;}
  .heat table{border-collapse:separate;border-spacing:4px;font-variant-numeric:tabular-nums;}
  .heat th{font-size:12px;font-weight:600;color:var(--secondary);padding:4px 6px;text-align:center;}
  .heat th.rowh{text-align:right;white-space:nowrap;color:var(--secondary);font-weight:500;font-size:12.5px;}
  .heat td{width:74px;height:40px;text-align:center;border-radius:6px;font-size:12.5px;font-weight:600;}

  .geo-lead{display:flex;align-items:baseline;gap:12px;padding:6px 0 16px;border-bottom:1px solid var(--hairline);margin-bottom:16px;}
  .geo-lead .big{font-size:34px;font-weight:700;color:var(--accent);letter-spacing:-.02em;line-height:1;}
  .geo-lead .lab{font-size:13px;color:var(--secondary);}

  details{margin:8px 2px 2px;} summary{font-size:12.5px;color:var(--muted);cursor:pointer;padding:6px 0;}
  summary:hover{color:var(--secondary);} .tbl{overflow-x:auto;margin:6px 0 8px;}
  table.data{border-collapse:collapse;font-size:12.5px;font-variant-numeric:tabular-nums;width:100%;}
  table.data th,table.data td{text-align:right;padding:7px 10px;border-bottom:1px solid var(--hairline);white-space:nowrap;}
  table.data th:first-child,table.data td:first-child{text-align:left;}
  table.data thead th{color:var(--muted);font-weight:600;}
  td.t{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--secondary);}
  td.org{max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .method{background:var(--card);border:1px solid var(--hairline);border-radius:14px;padding:22px 24px;margin-top:34px;}
  .method h2{font-family:var(--serif);font-size:19px;margin:0 0 12px;}
  .method ul{margin:0;padding-left:18px;color:var(--secondary);font-size:13.5px;}
  .method li{margin-bottom:8px;} .method li:last-child{margin-bottom:0;} .method b{color:var(--ink);font-weight:600;}
  .flag{display:inline-block;background:var(--warn-bg);color:var(--warn);font-weight:700;font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:2px 6px;border-radius:5px;vertical-align:middle;}
  .wrap footer{margin-top:26px;color:var(--muted);font-size:12px;border-top:1px solid var(--hairline);padding-top:16px;line-height:1.7;}
  /* drill-down affordance (only when in-site: body.drillable) */
  body.drillable [data-drill]{cursor:pointer;}
  body.drillable .bar[data-drill]:hover .bl{color:var(--accent);}
  body.drillable svg [data-drill]{cursor:pointer;}
  body.drillable .heat td[data-drill]:hover{outline:2px solid var(--accent);outline-offset:-2px;}
  body.drillable .prop .seg[data-drill]:hover{filter:brightness(1.08);}
  body.drillable table.data tr[data-drill]:hover td{background:var(--accent-soft);}
  @media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;}}
