/* NEW2 Research pages (spec §15), Daily Network Brief, Observation desk (Watch) and the report document preview.
   Records surface: frost / paper with ink; indigo + amethyst series; Sora headings, Manrope body, JetBrains Mono data. */

/* ---------- shared: band, crumbs, cards ---------- */
.n2r, .n2b { font-family: var(--n2-sans); color: var(--n2-ink); font-variant-numeric: tabular-nums; }
.n2r *, .n2b * { box-sizing: border-box; min-width: 0; }
.n2r a, .n2b a { color: var(--n2-indigo-2); text-decoration: none; }
.n2r a:hover, .n2b a:hover { text-decoration: underline; text-underline-offset: 3px; }
.n2r-crumbs { display: flex; flex-wrap: wrap; gap: 6px; font-size: 13px; color: var(--n2-ink-3); margin-bottom: 14px; }
.n2r-crumbs a { color: var(--n2-ink-3); } .n2r-crumbs span[aria-current] { color: var(--n2-ink); font-weight: 600; } .n2r-crumbs i { font-style: normal; color: var(--n2-line-2); }
.n2r-band, .n2b-band { padding: 8px 0 26px; }
.n2r-bandrow, .n2b-bandrow { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; }
.n2r h1, .n2b h1 { font: 600 clamp(24px, 2.5vw, 33px)/1.14 var(--n2-display); letter-spacing: -.02em; margin: 0 0 12px; max-width: 860px; }
.n2r-lede, .n2b-lede { font-size: 15px; line-height: 1.55; color: var(--n2-ink-2); max-width: 820px; margin: 0; }
.n2r-actions, .n2b-actions { display: flex; flex-wrap: wrap; gap: 10px; flex: none; justify-content: flex-end; }
.n2r-kicker, .n2b-kicker { font: 700 11px/1.3 var(--n2-sans); letter-spacing: .1em; text-transform: uppercase; color: var(--n2-indigo); margin: 0 0 14px; }
.n2r-card, .n2b-card, .n2r-rcard { background: #fff; border: 1px solid var(--n2-line); border-radius: var(--n2-r); padding: 24px; }
.n2r-card + .n2r-card, .n2r-sec + .n2r-card, .n2r-grid2 + .n2r-card { margin-top: 20px; }
.n2r h2 { font: 600 20px/1.25 var(--n2-display); letter-spacing: -.01em; margin: 0 0 10px; }
.n2r h3 { font: 600 16px/1.3 var(--n2-display); margin: 22px 0 10px; }
.n2r p { line-height: 1.55; margin: 0 0 10px; }
.n2r-small, .n2b-small { font-size: 12.5px; line-height: 1.55; color: var(--n2-ink-3); }
.n2r-na { color: var(--n2-ink-3); font-size: 12px; }
.n2r-tag { display: inline-block; font: 600 11.5px/1 var(--n2-sans); padding: 4px 9px; border-radius: 999px; background: var(--n2-lilac-3); color: var(--n2-indigo-2); border: 1px solid var(--n2-lilac-2); vertical-align: middle; white-space: nowrap; }
.n2r-link { font-weight: 600; }
.n2r-sha { font-family: var(--n2-mono); font-size: 12px; color: var(--n2-ink-2); }
.n2r-copy { border: 1px solid var(--n2-line-2); background: #fff; color: var(--n2-indigo-2); font: 600 12px var(--n2-sans); padding: 4px 9px; border-radius: 7px; cursor: pointer; min-height: 28px; }
.n2r-copy:hover { border-color: var(--n2-indigo); }
.n2r-empty, .n2b-none { border: 1px dashed var(--n2-line-2); border-radius: 12px; padding: 22px 20px; display: grid; gap: 6px; color: var(--n2-ink-2); }
.n2r-empty b, .n2b-none b { font-size: 14px; color: var(--n2-ink); } .n2r-empty span, .n2b-none span { font-size: 12.5px; color: var(--n2-ink-3); }
.n2r-grid2 { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 20px; margin-top: 4px; }
.n2r-grid2 + .n2r-grid2 { margin-top: 20px; }
.n2r-aside { display: grid; gap: 20px; align-content: start; }
.n2r-sec { margin: 40px 0 20px; }
.n2r-sechead { margin-bottom: 18px; max-width: 820px; } .n2r-sechead h2 { font-size: 26px; } .n2r-sechead p { color: var(--n2-ink-2); }
.n2r-rowhead { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; }
.n2r-two { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-top: 10px; }
.n2r-tabs { display: inline-flex; padding: 3px; border-radius: 10px; background: var(--n2-paper-2); flex: none; }
.n2r-tabs a { font: 650 13px/1 var(--n2-sans); color: var(--n2-ink-2); padding: 8px 12px; border-radius: 8px; text-decoration: none; min-height: 32px; display: inline-flex; align-items: center; }
.n2r-tabs a[aria-current="true"] { background: #fff; color: var(--n2-indigo-2); box-shadow: 0 1px 2px rgba(20, 16, 40, .14); }
.n2r-foot { margin: 14px 0 0; font-weight: 600; }

/* latest research list */
.n2r-studies { list-style: none; margin: 0; padding: 0; }
.n2r-studies li { display: grid; grid-template-columns: 96px minmax(0, 1fr) auto; gap: 8px 18px; align-items: start; padding: 18px 0; border-top: 1px solid var(--n2-line); }
.n2r-studies li:first-child { border-top: 0; padding-top: 4px; }
.n2r-studies time { font: 500 12.5px/1.6 var(--n2-mono); color: var(--n2-ink-3); }
.n2r-studies h2 { font-size: 17px; margin: 0 0 6px; } .n2r-studies h2 a { color: var(--n2-ink); }
.n2r-studies p { font-size: 14px; color: var(--n2-ink-2); margin: 0 0 6px; }
.n2r-ds { font-size: 12.5px !important; color: var(--n2-ink-3) !important; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.n2r-ds a { font-family: var(--n2-mono); font-size: 12px; }
.n2r-studies .n2-btn { min-height: 40px; padding-inline: 14px; }

/* findings and coverage */
.n2r-findings { list-style: none; margin: 0; padding: 0; }
.n2r-findings li { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 12px; padding: 12px 0; border-top: 1px solid var(--n2-line); align-items: start; }
.n2r-findings li:first-child { border-top: 0; padding-top: 0; }
.n2r-findings b { font: 600 24px/1.1 var(--n2-display); letter-spacing: -.02em; }
.n2r-findings span { display: block; font-size: 13.5px; line-height: 1.45; color: var(--n2-ink-2); }
.n2r-findings small { display: block; margin-top: 3px; font: 500 11.5px/1.4 var(--n2-mono); color: var(--n2-ink-3); }
.n2r-cov { margin: 0; display: grid; }
.n2r-cov > div { padding: 10px 0; border-top: 1px solid var(--n2-line); } .n2r-cov > div:first-child { border-top: 0; padding-top: 0; }
.n2r-cov dt { font-weight: 700; font-size: 14px; margin-bottom: 2px; } .n2r-cov dd { margin: 0; font-size: 13px; line-height: 1.5; color: var(--n2-ink-2); }

/* research cards */
.n2r-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.n2r-live { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.n2r-rcard { display: flex; flex-direction: column; gap: 10px; }
.n2r-rcard + .n2r-rcard { margin-top: 20px; } .n2r-cards .n2r-rcard + .n2r-rcard, .n2r-live .n2r-rcard + .n2r-rcard { margin-top: 0; }
.n2r-q { font: 700 11px/1.3 var(--n2-sans); letter-spacing: .1em; text-transform: uppercase; color: var(--n2-indigo); margin: 0; }
.n2r-rcard h3 { font: 600 18px/1.35 var(--n2-display); letter-spacing: -.01em; margin: 0; }
.n2r-stats { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px 22px; }
.n2r-stats b { display: block; font: 600 20px/1.1 var(--n2-display); letter-spacing: -.02em; }
.n2r-stats span { font-size: 11.5px; color: var(--n2-ink-3); }
.n2r-meta { margin: 0; display: grid; gap: 6px; font-size: 12.5px; }
.n2r-meta > div { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 10px; }
.n2r-meta dt { color: var(--n2-ink-3); font-weight: 600; } .n2r-meta dd { margin: 0; color: var(--n2-ink-2); line-height: 1.45; }
.n2r-open { font-weight: 700; margin-top: auto; }

/* tiles */
.n2r-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(148px, 1fr)); gap: 12px; margin: 14px 0 6px; }
.n2r-tile { background: var(--n2-paper); border-radius: 12px; padding: 14px 14px 12px; display: grid; gap: 3px; align-content: start; }
.n2r-tile b { font: 600 22px/1.1 var(--n2-display); letter-spacing: -.02em; color: var(--n2-ink); }
.n2r-tile span { font-size: 12.5px; color: var(--n2-ink-2); line-height: 1.35; }
.n2r-tile small { font: 500 11px/1.4 var(--n2-mono); color: var(--n2-ink-3); }

/* charts */
.n2r-chart, .n2b-chart { margin: 8px 0 4px; }
.n2r-chart figure, .n2r-chart svg, .n2b-chart svg { display: block; width: 100%; height: auto; }
.n2r-scroll { overflow-x: auto; overscroll-behavior-x: contain; }
.n2r-chart svg text { font-family: var(--n2-mono); }
.n2r-chart .tick, .n2b-chart .tick { font-size: 11px; fill: var(--n2-ink-3); }
.n2r-chart .count, .n2b-chart .count { font-size: 10.5px; fill: var(--n2-ink-2); font-weight: 500; }
.n2r-chart .axis-t { font-family: var(--n2-sans); font-size: 11.5px; fill: var(--n2-ink-3); }
.n2r-chart .grid { stroke: var(--n2-line); stroke-width: 1; } .n2r-chart .axis, .n2r-chart .zero-axis { stroke: var(--n2-line-2); stroke-width: 1; }
.n2r-chart .bar.s1, .n2b-chart .bar, .n2r-chart .cell.v { fill: var(--n2-indigo); } .n2r-chart .bar.s2 { fill: var(--n2-amethyst); }
.n2r-chart .bar:hover, .n2r-chart .bar[data-active], .n2b-chart .bar:hover, .n2b-chart .bar[data-active] { fill: var(--n2-indigo-2); }
.n2r-chart .stub { stroke: var(--n2-line-2); stroke-width: 2.5; } .n2r-chart .count.s2 { fill: var(--n2-amethyst); }
.n2r-chart .line { fill: none; stroke: var(--n2-indigo); stroke-width: 1.2; }
.n2r-chart .pt { fill: var(--n2-indigo); fill-opacity: .45; } .n2r-chart .pt.slow { fill: var(--n2-bad); fill-opacity: 1; stroke: #fff; stroke-width: 1.5; }
.n2r-chart .pt:hover, .n2r-chart .pt[data-active] { fill-opacity: 1; r: 5; }
.n2r-chart .med { stroke: var(--n2-ok); stroke-dasharray: 5 4; stroke-width: 1.2; } .n2r-chart .thr { stroke: var(--n2-warn); stroke-dasharray: 3 4; stroke-width: 1.2; }
.n2r-chart .lbl { font-size: 11px; } .n2r-chart .lbl.med { fill: var(--n2-ok); } .n2r-chart .lbl.thr { fill: var(--n2-warn); }
.n2r-chart .dot { fill: var(--n2-indigo); fill-opacity: .72; } .n2r-chart .dot:hover, .n2r-chart .dot[data-active] { fill-opacity: 1; }
.n2r-chart .dot.rep { stroke: var(--n2-bad); stroke-width: 2.5; fill-opacity: .9; } .n2r-chart .dot.us { fill: var(--n2-ok); fill-opacity: 1; }
.n2r-chart .dot.zero { fill: none; stroke: var(--n2-ink-3); stroke-width: 1.5; }
.n2r-chart .exp { stroke: var(--n2-amethyst); stroke-dasharray: 6 5; stroke-width: 1.6; }
.n2r-chart .dlbl { font-size: 11px; fill: var(--n2-ink-2); }
.n2r-chart .cell.c { fill: none; stroke: var(--n2-indigo); stroke-width: 1.5; }
.n2r-chart [tabindex]:focus-visible, .n2b-chart [tabindex]:focus-visible { outline: 2px solid var(--n2-ink); outline-offset: 2px; }
.n2r-legend { list-style: none; margin: 10px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 16px; font-size: 12px; color: var(--n2-ink-2); }
.n2r-legend i { display: inline-block; width: 12px; height: 12px; border-radius: 3px; vertical-align: -2px; margin-right: 6px; background: var(--n2-indigo); }
.n2r-legend i.s2 { background: var(--n2-amethyst); } .n2r-legend i.stub { background: none; border-bottom: 3px solid var(--n2-line-2); height: 6px; border-radius: 0; }
.n2r-legend i.line { height: 3px; border-radius: 2px; } .n2r-legend i.slow { background: var(--n2-bad); border-radius: 50%; }
.n2r-legend i.med { background: none; border-top: 2px dashed var(--n2-ok); height: 2px; border-radius: 0; } .n2r-legend i.thr { background: none; border-top: 2px dashed var(--n2-warn); height: 2px; border-radius: 0; }
.n2r-legend i.dot { border-radius: 50%; } .n2r-legend i.rep { background: #fff; border: 2.5px solid var(--n2-bad); border-radius: 50%; } .n2r-legend i.us { background: var(--n2-ok); border-radius: 50%; }
.n2r-legend i.exp { background: none; border-top: 2px dashed var(--n2-amethyst); height: 2px; border-radius: 0; } .n2r-legend i.zero { background: none; border: 1.5px solid var(--n2-ink-3); border-radius: 50%; }
.n2r-readout, .n2b-readout { font: 500 12.5px/1.5 var(--n2-mono) !important; color: var(--n2-ink-2) !important; min-height: 1.5em; margin: 8px 0 0 !important; }

/* lanes */
.n2r-lanes { list-style: none; margin: 4px 0; padding: 0; display: grid; gap: 7px; }
.n2r-lanes li { display: grid; grid-template-columns: minmax(110px, 170px) minmax(0, 1fr) auto; gap: 12px; align-items: center; font-size: 13px; }
.n2r-lanes li span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.n2r-lanes .track { height: 10px; border-radius: 3px; background: var(--n2-paper-2); overflow: hidden; }
.n2r-lanes .track i { display: block; height: 100%; background: var(--n2-amethyst); border-radius: 3px; }
.n2r-lanes li.ok .track i { background: var(--n2-ok); } .n2r-lanes li.unk .track i { background: var(--n2-line-2); }
.n2r-lanes em { font: 500 12px/1 var(--n2-mono); font-style: normal; color: var(--n2-ink-2); white-space: nowrap; }

/* tables */
.n2r-tablewrap { overflow-x: auto; margin: 8px 0; }
.n2r-table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.n2r-table th { text-align: left; font: 700 11px/1.3 var(--n2-sans); letter-spacing: .08em; text-transform: uppercase; color: var(--n2-ink-3); padding: 8px 10px 8px 0; border-bottom: 1px solid var(--n2-line-2); }
.n2r-table td { padding: 9px 10px 9px 0; border-bottom: 1px solid var(--n2-line); vertical-align: top; }
.n2r-table .num { text-align: right; font-family: var(--n2-mono); font-size: 12.5px; white-space: nowrap; }
.n2r-table th.num { font-family: var(--n2-sans); }
.n2r-table code { font-size: 12px; } .n2r-table time { font-family: var(--n2-mono); font-size: 12px; white-space: nowrap; }

/* archive, reports */
.n2r-archive { list-style: none; margin: 0; padding: 0; }
.n2r-archive li { display: grid; grid-template-columns: 96px auto minmax(0, 1fr) auto; gap: 8px 14px; align-items: start; padding: 12px 0; border-top: 1px solid var(--n2-line); }
.n2r-archive li:first-child { border-top: 0; }
.n2r-archive time { font: 500 12.5px/1.6 var(--n2-mono); color: var(--n2-ink-3); }
.n2r-archive a { font-weight: 700; } .n2r-archive small { display: block; font-size: 12.5px; color: var(--n2-ink-3); margin-top: 2px; line-height: 1.5; }
.n2r-reports { list-style: none; margin: 0; padding: 0; }
.n2r-reports li { padding: 10px 0; border-top: 1px solid var(--n2-line); display: grid; gap: 2px; } .n2r-reports li:first-child { border-top: 0; padding-top: 0; }
.n2r-reports a { font-weight: 700; } .n2r-reports span { font-size: 12.5px; color: var(--n2-ink-3); }
.n2r-quote { margin: 8px 0; padding: 12px 16px; border-left: 3px solid var(--n2-lilac-2); background: var(--n2-paper); font: 500 12.5px/1.6 var(--n2-mono); white-space: pre-wrap; color: var(--n2-ink-2); border-radius: 0 10px 10px 0; }

/* ---------- Daily network brief ---------- */
.n2b-card + .n2b-card, .n2b-grid + .n2b-grid, .n2b-card + .n2b-grid, .n2b-grid + .n2b-card { margin-top: 20px; }
.n2b-tiles { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
.n2b-tiles li { background: var(--n2-paper); border-radius: 12px; padding: 12px 13px; display: grid; gap: 3px; align-content: start; }
.n2b-tiles li.none, .n2b-tiles li.failed { background: #fff; border: 1px dashed var(--n2-line-2); }
.n2b-tiles li.failed { border-color: color-mix(in srgb, var(--n2-bad) 45%, var(--n2-line-2)); }
.n2b-tiles b { font-size: 13.5px; } .n2b-tiles .mono { font: 500 11.5px/1.4 var(--n2-mono); color: var(--n2-ink-2); } .n2b-tiles small { font-size: 11.5px; line-height: 1.4; color: var(--n2-ink-3); }
.n2b-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); gap: 20px; }
.n2b-figs { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 12px 18px; margin-bottom: 14px; }
.n2b-figs b { display: block; font: 600 24px/1.1 var(--n2-display); letter-spacing: -.02em; } .n2b-figs span { font-size: 12.5px; color: var(--n2-ink-3); line-height: 1.4; }
.n2b-chart .bar.partial { fill-opacity: .5; }
.n2b-obs { margin: 0; }
.n2b-obs > div { padding: 11px 0; border-top: 1px solid var(--n2-line); } .n2b-obs > div:first-child { border-top: 0; padding-top: 0; }
.n2b-obs dt { font-weight: 700; font-size: 14px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.n2b-obs dd { margin: 4px 0 0; } .n2b-obs dd p { margin: 0 0 4px; font-size: 13.5px; line-height: 1.5; color: var(--n2-ink-2); }
.n2b-obs dd small, .n2b-changes small { display: block; font: 500 11.5px/1.5 var(--n2-mono); color: var(--n2-ink-3); }
.n2b-obs > div.no_observation dd p, .n2b-obs > div.failed dd p { color: var(--n2-ink-3); }
.n2b-state { font: 700 10.5px/1 var(--n2-sans); letter-spacing: .06em; text-transform: uppercase; padding: 4px 8px; border-radius: 6px; border: 1px dashed var(--n2-line-2); color: var(--n2-ink-3); }
.n2b-state.failed { border-color: var(--n2-bad); color: var(--n2-bad); }
.n2b-changes { list-style: none; margin: 0; padding: 0; }
.n2b-changes li { display: grid; grid-template-columns: 128px 14px minmax(0, 1fr); gap: 10px; align-items: start; padding: 10px 0; border-top: 1px solid var(--n2-line); }
.n2b-changes li:first-child { border-top: 0; padding-top: 0; }
.n2b-changes time { font: 500 12px/1.6 var(--n2-mono); color: var(--n2-ink-3); }
.n2b-changes i { width: 10px; height: 10px; border-radius: 50%; background: var(--n2-indigo); margin-top: 5px; }
.n2b-changes li.scheduled i { background: #fff; border: 2px solid var(--n2-indigo); }
.n2b-changes span { font-size: 13.5px; line-height: 1.5; }
.n2b-lim { margin: 0; } .n2b-lim > div { padding: 9px 0; border-top: 1px solid var(--n2-line); } .n2b-lim > div:first-child { border-top: 0; padding-top: 0; }
.n2b-lim dt { font-weight: 700; font-size: 14px; } .n2b-lim dd { margin: 2px 0 0; font-size: 13px; line-height: 1.5; color: var(--n2-ink-2); }
.n2b-foot { margin-top: 22px; padding-top: 14px; border-top: 1px solid var(--n2-line); font-size: 12.5px; color: var(--n2-ink-3); line-height: 1.7; }
.n2b-foot p { margin: 0 0 4px; } .n2b-foot code, .n2b-foot .mono { font-family: var(--n2-mono); font-size: 11.5px; }
.n2b-small { margin: 8px 0 0; }
/* compact mode: the brief inside the home sheet (~760 px, 358 px on phones) — single column, date + finding first */
.n2b-compact { display: grid; gap: 14px; }
.n2b-compact .n2b-card + .n2b-card, .n2b-compact .n2b-card + .n2b-grid { margin-top: 0; }
.n2b-chead { display: grid !important; grid-template-columns: minmax(0, 1fr) !important; gap: 6px; padding: 0 0 4px !important; margin: 0 !important; border: 0 !important; background: none !important; }
.n2b-chead > * { grid-column: 1 / -1; }
.n2b-date { margin: 0 !important; font: 500 12.5px/1.4 var(--n2-mono) !important; color: var(--n2-ink-3); }
.n2b-finding { font: 600 clamp(19px, 2.6vw, 24px)/1.22 var(--n2-display) !important; letter-spacing: -.02em; margin: 0 !important; max-width: none; }
.n2b-compact .n2b-lede { margin: 0 !important; max-width: none; }
.n2b-compact .n2b-lede { font-size: 13.5px; }
.n2b-compact .n2b-card { padding: 16px 16px 14px; }
.n2b-compact .n2b-kicker { margin-bottom: 10px; }
.n2b-compact .n2b-tiles { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; }
.n2b-compact .n2b-tiles li { padding: 10px 11px; }
.n2b-compact .n2b-figs { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 14px; margin-bottom: 10px; }
.n2b-compact .n2b-figs b { font-size: 22px; }
.n2b-compact .n2b-obs dd p, .n2b-compact .n2b-changes span { font-size: 13px; }
.n2b-compact .n2b-changes li { grid-template-columns: 112px 12px minmax(0, 1fr); }
.n2b-details { display: block; } .n2b-details summary { cursor: pointer; list-style: none; display: grid; gap: 4px; }
.n2b-details summary::-webkit-details-marker { display: none; } .n2b-details summary .n2b-kicker { margin: 0; }
.n2b-details summary::after { content: 'Show'; font: 700 12px var(--n2-sans); color: var(--n2-indigo-2); } .n2b-details[open] summary::after { content: 'Hide'; }
.n2b-details[open] .n2b-lim { margin-top: 10px; }
.n2b-compact .n2b-foot { margin-top: 2px; padding-top: 10px; }
@media (max-width: 480px) { .n2b-compact .n2b-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } .n2b-compact .n2b-changes li { grid-template-columns: 1fr; } .n2b-compact .n2b-changes i { display: none; } .n2b-compact .n2b-figs { grid-template-columns: 1fr 1fr; } }

/* ---------- Observation desk (Watch · level 1 of 5: this browser) ---------- */
.desk-root .o9-level { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 14px; align-items: start; padding: 14px 16px; border-radius: 12px; background: var(--n2-lilac-3); border: 1px solid var(--n2-lilac-2); margin: 12px 0; }
.desk-root .o9-level b { font: 600 22px/1 var(--n2-display); color: var(--n2-indigo-2); white-space: nowrap; }
.desk-root .o9-level p { margin: 0; font-size: 13.5px; line-height: 1.5; color: var(--n2-ink-2); }
.desk-root .o9-level ul { margin: 6px 0 0; padding-left: 18px; font-size: 12.5px; color: var(--n2-ink-3); line-height: 1.6; }
.desk-root .o9-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 12px; margin: 12px 0; }
.desk-root .o9-cardlet { border: 1px solid var(--n2-line); border-radius: 12px; padding: 14px; display: grid; gap: 6px; align-content: start; background: #fff; }
.desk-root .o9-cardlet b { font-size: 14px; } .desk-root .o9-cardlet code { font-size: 11.5px; overflow-wrap: anywhere; color: var(--n2-ink-2); }
.desk-root .o9-cardlet small { font-size: 12px; color: var(--n2-ink-3); line-height: 1.5; }
.desk-root .o9-cardlet .row { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 4px; }
.desk-root .o9-empty { border: 1px dashed var(--n2-line-2); border-radius: 12px; padding: 20px; display: grid; gap: 4px; }
.desk-root .o9-empty b { font-size: 14px; } .desk-root .o9-empty span { font-size: 12.5px; color: var(--n2-ink-3); line-height: 1.5; }
.desk-root .o9-metrics { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0; }
.desk-root .o9-metrics label { display: inline-flex !important; grid-template-columns: none; align-items: center; gap: 8px; border: 1px solid var(--n2-line-2); border-radius: 999px; padding: 6px 12px; font-size: 12.5px; color: var(--n2-ink-2); cursor: pointer; min-height: 36px; }
.desk-root .o9-metrics input[type=checkbox] { width: 16px !important; min-width: 0 !important; height: 16px !important; min-height: 0 !important; margin: 0; padding: 0; border: 0; accent-color: var(--n2-indigo); flex: none; }
.desk-root .o9-metrics label:has(input:checked) { border-color: var(--n2-indigo); background: var(--n2-lilac-3); color: var(--n2-indigo-2); }
.desk-root .o9-diff { list-style: none; margin: 10px 0; padding: 0; }
.desk-root .o9-diff li { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 12px; padding: 10px 0; border-top: 1px solid var(--n2-line); font-size: 13.5px; }
.desk-root .o9-diff li:first-child { border-top: 0; }
.desk-root .o9-diff time { font: 500 12px/1.6 var(--n2-mono); color: var(--n2-ink-3); }
.desk-root .o9-diff small { display: block; font-size: 12px; color: var(--n2-ink-3); }
.desk-root .o9-not { margin: 14px 0 0; padding: 12px 14px; border-radius: 12px; background: var(--n2-paper); font-size: 12.5px; color: var(--n2-ink-2); line-height: 1.6; }
.desk-root .o9-not b { display: block; margin-bottom: 2px; color: var(--n2-ink); }
.desk-root .o9-source-table table { width: 100%; border-collapse: collapse; font-size: 13px; }
.desk-root .o9-source-table th { text-align: left; font: 700 11px/1.3 var(--n2-sans); letter-spacing: .08em; text-transform: uppercase; color: var(--n2-ink-3); padding: 8px 10px 8px 0; border-bottom: 1px solid var(--n2-line-2); }
.desk-root .o9-source-table td { padding: 8px 10px 8px 0; border-bottom: 1px solid var(--n2-line); vertical-align: top; } .desk-root .o9-source-table small { display: block; color: var(--n2-ink-3); }
.desk-root .o9-daily-summary { grid-template-columns: 1fr !important; }
.desk-root .o9-desk-filters label, .desk-root .o9-watch label { display: grid; gap: 4px; font-size: 12.5px; color: var(--n2-ink-3); }
.desk-root .o9-desk-filters select, .desk-root .o9-desk-filters input, .desk-root .o9-watch select, .desk-root .o9-watch input:not([type=checkbox]) { min-height: 40px; border: 1px solid var(--n2-line-2); border-radius: 10px; padding: 0 10px; font: 500 14px var(--n2-sans); color: var(--n2-ink); background: #fff; }
.desk-root .p-button { min-height: 40px; }

/* ---------- Report document preview (portrait 1200 × 1600 page) ---------- */
.vx-report-canvas { background: var(--n2-paper-2, #ECE9F5) !important; padding: 18px; }
.vx-report-canvas svg { width: min(100%, 780px) !important; max-width: 100% !important; margin: 0 auto; box-shadow: 0 12px 32px -12px rgba(14, 16, 20, .35); }
.vx-report-canvas:after { display: none !important; }
.vx-report-canvas figcaption { text-align: center; }
@media print { .vx-report-canvas { padding: 0; background: #fff !important; } .vx-report-canvas svg { width: 100% !important; box-shadow: none; } }

/* ---------- responsive ---------- */
@media (max-width: 1100px) { .n2r-grid2 { grid-template-columns: 1fr; } }
@media (max-width: 900px) {
  .n2r-cards, .n2r-live, .n2b-grid, .n2r-two { grid-template-columns: 1fr; }
  .n2r-bandrow, .n2b-bandrow { flex-direction: column; align-items: stretch; } .n2r-actions, .n2b-actions { justify-content: flex-start; }
}
@media (max-width: 700px) {
  .n2r-card, .n2b-card, .n2r-rcard { padding: 18px 16px; }
  .n2r-scroll svg { min-width: 640px; } .n2r-chart.small .n2r-scroll svg, .n2r-chart.small svg { min-width: 0; }
  .n2r-studies li { grid-template-columns: 1fr; gap: 6px; } .n2r-studies .n2-btn { justify-self: start; }
  .n2r-archive li { grid-template-columns: 96px minmax(0, 1fr); } .n2r-archive li > div { grid-column: 1 / -1; } .n2r-archive li > .n2r-link { grid-column: 1 / -1; }
  .n2r-findings li { grid-template-columns: 76px minmax(0, 1fr); } .n2r-findings b { font-size: 20px; }
  .n2r-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } .n2b-figs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .n2b-changes li { grid-template-columns: 1fr; gap: 2px; } .n2b-changes i { display: none; }
  .n2r-lanes li { grid-template-columns: minmax(90px, 120px) minmax(0, 1fr) auto; }
  .n2r-meta > div { grid-template-columns: 1fr; gap: 2px; }
  .desk-root .o9-diff li { grid-template-columns: 1fr; gap: 2px; }
}
@media (prefers-reduced-motion: reduce) { .n2r *, .n2b * { transition: none !important; animation: none !important; } }

/* ---------- research landing: subline, findings rail, flagship study, compact study grid ---------- */
.n2r-sub { font: 500 13px/1.5 var(--n2-mono); color: var(--n2-ink-2); margin: 0 0 10px; }
.n2r-findrail { margin-bottom: 4px; }
.n2r-findings.rail { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 16px 28px; }
.n2r-findings.rail li { grid-template-columns: minmax(64px, auto) minmax(0, 1fr); border-top: 0; padding: 0; }
.n2r-flagship { margin-top: 30px; }
.n2r-flagship .n2r-sechead { max-width: 920px; }
.n2r-flagship .n2r-sechead h2 { font-size: clamp(24px, 2.6vw, 30px); }
.n2r-flagship h3:first-of-type { margin-top: 18px; }
.n2r-cap { margin: 6px 0 16px !important; font-family: var(--n2-mono) !important; font-size: 11.5px !important; line-height: 1.7 !important; }
.n2r-cap a { font-family: var(--n2-mono); }
.n2r-flagact { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.n2r-strip { margin: 10px 0 2px; }
.n2r-strip svg { display: block; max-width: 100%; height: auto; }
.n2r-chart .hb-miss { fill: var(--n2-bad); fill-opacity: .78; }
.n2r-chart .hb-miss:hover, .n2r-chart .hb-miss[data-active] { fill-opacity: 1; }
.n2r-chart .hb-res { fill: var(--n2-ok); fill-opacity: .85; }
.n2r-chart .hb-res:hover, .n2r-chart .hb-res[data-active] { fill-opacity: 1; }
.n2r-chart .medl { stroke: var(--n2-ink-2); stroke-width: 1.4; stroke-dasharray: 5 4; }
.n2r-chart .lbl.medt { fill: var(--n2-ink-2); font-size: 11px; }
.n2r-chart .rname { font-family: var(--n2-sans); font-size: 11.5px; fill: var(--n2-ink-2); }
.n2r-chart .sect { font: 700 11px var(--n2-sans); letter-spacing: .08em; text-transform: uppercase; fill: var(--n2-indigo); }
.n2r-legend i.hb-miss { background: var(--n2-bad); }
.n2r-legend i.hb-res { background: var(--n2-ok); }
.n2r-legend i.medl { background: none; border-top: 2px dashed var(--n2-ink-2); height: 2px; border-radius: 0; }
.n2r-studygrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.n2r-study { border: 1px solid var(--n2-line); border-radius: 12px; padding: 16px; display: flex; flex-direction: column; gap: 7px; background: #fff; }
.n2r-study header { display: flex; gap: 10px; align-items: center; }
.n2r-study time { font: 500 12px/1 var(--n2-mono); color: var(--n2-ink-3); }
.n2r-study h3 { margin: 0; font: 600 15.5px/1.3 var(--n2-display); } .n2r-study h3 a { color: var(--n2-ink); }
.n2r-study p { font-size: 13px; line-height: 1.5; color: var(--n2-ink-2); margin: 0; }
.n2r-study .n2r-ds { margin-top: 2px; }
.n2r-study .n2-btn { margin-top: auto; align-self: flex-start; min-height: 36px; padding-inline: 14px; }

/* ---------- Tools for operators (#/tools) ---------- */
.n2t-band .n2r-bandrow { align-items: center; }
.n2t-art { flex: none; width: clamp(120px, 14vw, 190px); height: auto; border-radius: 16px; }
.n2t-sec + .n2t-sec, .n2t-sec + .n2t-two { margin-top: 20px; }
.n2t-two { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 20px; margin-top: 20px; align-items: start; }
.n2t-sec h2 { font: 600 19px/1.35 var(--n2-display); letter-spacing: -.01em; margin: 0 0 12px; }
.n2t-kind { display: inline-block; font: 600 11px/1 var(--n2-mono); padding: 4px 8px; border-radius: 6px; background: var(--n2-paper-2); color: var(--n2-ink-2); white-space: nowrap; }
.n2t-eptable { min-width: 620px; } .n2t-snaptable { min-width: 680px; }
.n2t-eptable td.lat { min-width: 230px; }
.n2t-eptable td b, .n2t-snaptable td code { white-space: nowrap; }
.n2t-eptable code.muted, .n2t-snaptable code { color: var(--n2-ink-3); font-size: 11.5px; }
.n2t-lat { display: grid; gap: 4px; max-width: 340px; }
.n2t-lat b { font: 600 12.5px/1 var(--n2-mono); }
.n2t-lat i { display: block; height: 7px; border-radius: 3px; background: var(--n2-indigo); min-width: 2px; }
.n2t-lat i.warn { background: var(--n2-warn); } .n2t-lat i.bad { background: var(--n2-bad); width: 2px !important; }
.n2t-eptable tr[data-down] td b { color: var(--n2-ink-3); }
.n2t-eptable small.bad { display: block; margin-top: 3px; font: 500 11px/1.3 var(--n2-mono); color: var(--n2-bad); }
.n2r-table td.act { text-align: right; white-space: nowrap; }
.n2t-copy.is-done { border-color: var(--n2-ok); color: var(--n2-ok); }
.n2t-guides { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 4px 0 12px; }
.n2t-guide { border: 1px solid var(--n2-line); border-radius: 12px; padding: 14px; display: grid; gap: 5px; align-content: start; color: var(--n2-ink); background: var(--n2-paper); }
.n2t-guide:hover { border-color: var(--n2-indigo); text-decoration: none; }
.n2t-guide b { font-size: 14.5px; } .n2t-guide span { font-size: 12.5px; color: var(--n2-ink-2); line-height: 1.5; }
.n2t-guide small { font: 500 11px/1 var(--n2-mono); color: var(--n2-ink-3); }
.n2t-bot { display: flex; gap: 18px; align-items: center; justify-content: space-between; flex-wrap: wrap; }
.n2t-bot h2 { margin-bottom: 6px; }
.n2t-bot p { font-size: 13.5px; line-height: 1.55; color: var(--n2-ink-2); margin: 0; max-width: 560px; }
.n2t-foot { margin-top: 20px; }
@media (max-width: 900px) { .n2t-two { grid-template-columns: 1fr; } .n2t-art { order: -1; align-self: flex-start; } }
@media (max-width: 700px) {
  .n2r-studygrid { grid-template-columns: 1fr; }
  .n2r-findings.rail { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .n2r-findings.rail li { grid-template-columns: 1fr; gap: 4px; }
  .n2t-eptable td.lat { min-width: 170px; }
  .n2t-eptable { min-width: 520px; }
  .n2t-sec h2 { font-size: 17px; }
  .n2t-guides { grid-template-columns: 1fr; }
}

/* the NEW2 tools page owns #/tools: hide the vx4 legacy intro while it is mounted (same back-off the
   vx4 research enhancer performs for [data-n2x="research"], done from this layer's own stylesheet) */
#main:has([data-n2x="tools"]) .vx4-tools { display: none !important; }
