/* Vendoscope design v2 — "Operator" (#315).
 *
 * Loaded after lens.css and only when the design version is v2
 * (<html data-design="v2">). Two jobs:
 *
 *   1. Re-skin: redefine the tokens lens.css and every page style already
 *      read (--paper, --ink, --accent, --r-card, --font-display…), so a
 *      page written for the classic design changes identity without
 *      changing markup.
 *   2. The v2 pages' own components, all prefixed d2-.
 *
 * Doctrine (the brandbook's, design/design.md): engineered, not decorated.
 * Border-first — a hairline does the work a card's shadow used to. Small
 * radii. One sans for words, one mono for every number. One blue, for
 * what can be pressed or followed. Rows, not cards: a list of findings is
 * a table an operator scans, not a stack of boxes to open.
 *
 * Light only. v2 has no dark theme (the founder's call, 2026-09-29): the
 * shell sets data-theme="light" on <html>, so the classic stylesheet's dark
 * rules never apply here whatever the system or the classic toggle says.
 *
 * Three kinds of statement never look alike:
 *   measured  — plain ink;
 *   estimated — mono, dotted underline, the word "est.";
 *   suggested — led by an arrow.
 */

/* ── tokens ─────────────────────────────────────────────────────────── */
:root[data-design="v2"] {
  color-scheme: light;
  --paper:#FFFFFF; --card:#FFFFFF; --card2:#F5F5F3; --line:#E4E4E1; --line2:#C8C8C4;
  --ink:#0D0D0D; --ink2:#33332F; --dim:#5C5C58;
  --accent:#2C56E3; --accent-ink:#1F42C4; --accent-wash:rgba(44,86,227,.07); --accent-line:rgba(44,86,227,.5); --on-accent:#FFFFFF;
  --good:#1F7A50; --good-wash:rgba(46,158,107,.10); --good-line:rgba(46,158,107,.5); --on-good:#FFFFFF;
  --warn:#8A5A00; --warn-wash:rgba(232,163,61,.14); --warn-line:rgba(232,163,61,.7); --on-warn:#0D0D0D;
  --crit:#C0303C; --crit-wash:rgba(215,67,79,.09); --crit-line:rgba(215,67,79,.5); --on-crit:#FFFFFF;
  --ask:#6A2FD0; --ask-wash:rgba(123,63,228,.08); --ask-line:rgba(123,63,228,.45);
  --shadow:none; --shadow-pop:0 16px 48px rgba(13,13,13,.18);
  --viz:var(--ink); --viz-wash:rgba(13,13,13,.06); --viz-recent:rgba(44,86,227,.06); --viz-grid:var(--line); --viz-hatch:rgba(13,13,13,.35);
  --bite-cost:#6E6E69; --on-bite-cost:#FFFFFF; --bite-pass:#D6D6D1; --on-bite-pass:#0D0D0D;
  --glow:0 0 0 1px var(--accent-line);
  --font-display:'Public Sans',-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --font-ui:'Public Sans',-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --font-mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  --t-xs:.75rem; --t-sm:.8125rem; --t-md:.9375rem; --t-lg:1.0625rem;
  --t-xl:clamp(1.3rem,2.4vw,1.6rem); --t-2xl:clamp(1.6rem,3.2vw,2.1rem); --t-num:clamp(1.4rem,3vw,1.9rem);
  --r-card:8px; --r-btn:4px; --r-chip:4px;
  --measure:72ch;
  --d2-rail:232px;
  --d2-gap:clamp(1rem,3vw,2.5rem);
  --d2-down:#AD5A5A;
}
/* ── base, for every page in v2 ─────────────────────────────────────── */
:root[data-design="v2"] :focus-visible { outline:2px solid var(--accent); outline-offset:2px; border-radius:2px; }
:root[data-design="v2"] body { font-family:var(--font-ui); font-size:15px; line-height:1.5; background:var(--paper); color:var(--ink);
}
:root[data-design="v2"] body.lens { font-size:15px; line-height:1.5; }
:root[data-design="v2"] body.lens h1,
:root[data-design="v2"] body.lens h2,
:root[data-design="v2"] body.lens h3 { font-family:var(--font-ui); letter-spacing:-.015em; }
:root[data-design="v2"] body:has(> .d2-rail) { padding-left:var(--d2-rail); }
.sr { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

/* ── the rail ───────────────────────────────────────────────────────── */
.d2-rail { position:fixed; z-index:40; inset:0 auto 0 0; width:var(--d2-rail); display:flex; flex-direction:column; gap:2px;
  padding:18px 12px 14px; background:var(--card2); border-right:1px solid var(--line); overflow-y:auto; font-size:14px; }
.d2-rail a, .d2-tabs a, .d2-bar a { text-decoration:none; }
.d2-brand { display:flex; align-items:center; gap:9px; padding:2px 8px 0; color:var(--ink) !important; }
.d2-brand i { width:24px; height:24px; border-radius:4px; background:var(--ink); color:var(--paper); font:700 13px/24px var(--font-mono); font-style:normal; text-align:center; flex:none; }
.d2-brand b { font-weight:650; font-size:15px; letter-spacing:-.01em; }
.d2-org { padding:2px 8px 12px 41px; color:var(--dim); font-size:12.5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.d2-set { display:grid; gap:1px; }
.d2-brand + .d2-set { margin-top:14px; }
.d2-l { display:flex; align-items:center; gap:10px; min-height:34px; padding:0 8px; border-radius:4px; color:var(--ink2) !important; font-weight:500;
  border:0; background:none; font-family:inherit; font-size:inherit; cursor:pointer; text-align:left; width:100%; box-sizing:border-box; }
.d2-l:hover { background:var(--line); color:var(--ink) !important; text-decoration:none !important; }
.d2-l.on { background:var(--ink); color:var(--paper) !important; }
.d2-l.on .d2-kbd { border-color:transparent; color:inherit; opacity:.7; }
.d2-ic { width:18px; height:18px; flex:none; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.d2-kbd { margin-left:auto; font:500 11px/1 var(--font-mono); color:var(--dim); border:1px solid var(--line2); border-radius:3px; padding:3px 5px; }
/* the groups under Findings: links, indented under the label they belong to */
.d2-cap { margin:16px 8px 4px; font:600 10.5px/1 var(--font-mono); letter-spacing:.09em; text-transform:uppercase; color:var(--dim); }
.d2-cap.sub { margin:12px 8px 2px 36px; letter-spacing:.06em; }
.d2-tools { margin-top:10px; }
.d2-tools > summary { list-style:none; }
.d2-tools > summary::-webkit-details-marker { display:none; }
.d2-tools > summary::after { content:"+"; margin-left:auto; font:500 14px/1 var(--font-mono); color:var(--dim); }
.d2-tools[open] > summary::after { content:"−"; }
.d2-tools > a.d2-l { padding-left:36px; min-height:30px; font-weight:450; font-size:13.5px; }
.d2-railfoot { margin-top:auto; padding-top:14px; display:grid; gap:6px; }
.d2-me { display:flex; align-items:center; gap:9px; padding:6px 8px; border-radius:4px; color:var(--ink2) !important; min-width:0; }
.d2-me:hover { background:var(--line); text-decoration:none !important; }
.d2-me img { width:24px; height:24px; border-radius:50%; object-fit:cover; border:1px solid var(--line2); flex:none; }
.d2-me span { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-size:13px; }
.d2-railrow { display:flex; flex-wrap:wrap; gap:4px 12px; padding:0 8px; font-size:12.5px; }
.d2-railrow a, .d2-railrow button { color:var(--dim) !important; background:none; border:0; padding:0; font:inherit; cursor:pointer; min-height:0; }
.d2-railrow a:hover, .d2-railrow button:hover { color:var(--ink) !important; text-decoration:underline; text-underline-offset:3px; background:none; box-shadow:none; }
.d2-bar, .d2-tabs, .d2-scrim { display:none; }

/* ── the page ───────────────────────────────────────────────────────── */
.d2-main { max-width:1080px; margin:0 auto; padding:26px var(--d2-gap) 120px; }
.d2-main a { color:var(--accent-ink); text-decoration:none; }
.d2-main a:hover { text-decoration:underline; text-underline-offset:3px; }
.d2-head { margin-bottom:18px; }
.d2-head.slim { display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 18px; margin-bottom:10px; }
.d2-eyebrow { margin:0; font:600 11px/1.4 var(--font-mono); letter-spacing:.08em; text-transform:uppercase; color:var(--dim); }
.d2-eyebrow span { font-weight:400; }
.d2-prov { margin:0; font-size:13px; color:var(--dim); }
.d2-prov b { color:var(--ink); font-weight:600; }
.d2-prov.demo b { background:var(--warn-wash); color:var(--warn); padding:1px 6px; border-radius:3px; }
.d2-prov.live b::before { content:""; display:inline-block; width:7px; height:7px; border-radius:50%; background:var(--good); margin-right:6px; vertical-align:1px; }
body.d2 .d2-main h1 { margin:6px 0 6px; font-size:var(--t-2xl); line-height:1.1; font-weight:650; text-wrap:balance; }
body.d2 .d2-main h1.d2-quiet { font-size:var(--t-2xl); }
body.d2 .d2-main h2 { margin:0; font-size:15px; line-height:1.3; font-weight:650; letter-spacing:-.005em; }
body.d2 .d2-main h3 { margin:0; font-size:13px; font-weight:650; }
.d2-lede { margin:0 0 8px; color:var(--ink2); max-width:var(--measure); }
.d2-dim { color:var(--dim); }
.d2-note { margin:0 0 14px; padding:9px 12px; border:1px solid var(--line2); border-radius:4px; font-size:13.5px; color:var(--ink2); }
.d2-note.warn { border-color:var(--warn-line); background:var(--warn-wash); }
.d2-adminonly { display:block; margin-top:4px; font:400 12px/1.4 var(--font-mono); color:var(--dim); }
.d2-wait, .d2-empty { margin:0; padding:10px 0; color:var(--dim); font-size:13.5px; }
.d2-cta { display:flex; gap:8px; margin:16px 0 0; }

/* section heading: a rule, the title, a way onward */
.d2-sec { display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin:34px 0 0; padding:10px 0 8px; border-top:1px solid var(--ink); }
.d2-all { font-size:13px; color:var(--dim); white-space:nowrap; }
a.d2-all { color:var(--accent-ink); }
a.d2-all::after { content:" →"; }

/* the headline */
.d2-hero { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:24px 48px; align-items:end; padding:6px 0 0; }
.d2-big { font:700 clamp(2.8rem,6.6vw,4.5rem)/1 var(--font-ui); letter-spacing:-.04em; font-variant-numeric:tabular-nums; }
.d2-per { font-size:clamp(1rem,1.8vw,1.25rem); font-weight:500; color:var(--ink2); letter-spacing:-.01em; white-space:nowrap; }
/* an estimate: the mono face and the word "est." beside it — never an
   underline, which is kept for what can be clicked (round 3) */
.d2-est { font-family:var(--font-mono); text-decoration:none; }
.d2-big.d2-est { font-family:var(--font-ui); }
.d2-meas { font-family:var(--font-mono); }
.d2-none { font-family:var(--font-mono); color:var(--dim); font-weight:400; }

/* the closed loop */
.d2-proof { display:grid; grid-template-columns:repeat(3,auto); gap:4px 26px; align-items:start; padding:0 0 4px; }
.d2-proof > div { display:grid; gap:1px; }
.d2-proof b { font:600 20px/1.15 var(--font-mono); letter-spacing:-.02em; }
.d2-proof span { font-size:12.5px; color:var(--dim); max-width:15ch; line-height:1.3; }
.d2-proofx { grid-column:1 / -1; }

/* ── three layers of an explanation ─────────────────────────────────── */
.d2-x { font-size:13.5px; }
.d2-x > summary { list-style:none; cursor:pointer; display:inline-flex; align-items:center; gap:6px; color:var(--dim); padding:3px 0; user-select:none; }
.d2-x > summary::-webkit-details-marker { display:none; }
.d2-x > summary::before { content:"+"; font:500 13px/1 var(--font-mono); width:14px; height:14px; display:inline-flex; align-items:center; justify-content:center;
  border:1px solid var(--line2); border-radius:3px; color:var(--ink2); }
.d2-x[open] > summary::before { content:"−"; }
.d2-x > summary:hover { color:var(--ink); }
.d2-x2 { margin:4px 0 6px 6px; padding:2px 0 2px 14px; border-left:2px solid var(--line2); max-width:var(--measure); color:var(--ink2); }
.d2-x2 p { margin:4px 0; }
.d2-x2 b { color:var(--ink); font-weight:600; }
.d2-x3 { margin-top:4px; }
.d2-x3 dl { margin:4px 0 4px 6px; padding:2px 0 2px 14px; border-left:2px solid var(--line); display:grid; gap:2px; }
.d2-x3 dt { margin-top:6px; font:600 10.5px/1.4 var(--font-mono); letter-spacing:.07em; text-transform:uppercase; color:var(--dim); }
.d2-x3 dd { margin:0; }
.d2-x3 dd span { display:block; font-family:var(--font-mono); font-size:12.5px; }

/* ── buttons ────────────────────────────────────────────────────────── */
:root[data-design="v2"] .d2-btn { all:unset; box-sizing:border-box; display:inline-flex; align-items:center; justify-content:center; min-height:30px; padding:0 11px;
  border:1px solid var(--line2); border-radius:var(--r-btn); background:var(--paper); color:var(--ink); font:500 13px/1 var(--font-ui); cursor:pointer; white-space:nowrap; }
:root[data-design="v2"] .d2-btn:hover { border-color:var(--ink); text-decoration:none; }
:root[data-design="v2"] .d2-btn:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
:root[data-design="v2"] .d2-btn.pri { background:var(--ink); border-color:var(--ink); color:var(--paper); font-weight:600; }
:root[data-design="v2"] .d2-btn.pri:hover { background:var(--ink2); border-color:var(--ink2); }
:root[data-design="v2"] .d2-link { all:unset; cursor:pointer; color:var(--accent-ink); font:inherit; font-size:13px; }
:root[data-design="v2"] .d2-link:hover { text-decoration:underline; text-underline-offset:3px; }
:root[data-design="v2"] .d2-link:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.htmx-request .d2-btn, .htmx-request.d2-f { opacity:.55; pointer-events:none; }

/* ── a finding ──────────────────────────────────────────────────────── */
.d2-list { border-bottom:1px solid var(--line); }
.d2-f { display:grid; grid-template-columns:minmax(0,1fr) 132px; gap:0 24px; padding:14px 0 12px; border-top:1px solid var(--line); scroll-margin-top:16px; }
.d2-list > .d2-f:first-child { border-top:0; }
.d2-f.ranked { grid-template-columns:34px minmax(0,1fr) 132px; }
.d2-f:target { background:var(--accent-wash); box-shadow:-12px 0 0 var(--accent-wash), 12px 0 0 var(--accent-wash); }
.d2-f-n { font:500 12px/1.7 var(--font-mono); color:var(--dim); }
.d2-f-head { display:flex; flex-wrap:wrap; align-items:center; gap:4px 9px; }
.d2-tag { font:500 10.5px/1 var(--font-mono); letter-spacing:.06em; text-transform:uppercase; color:var(--ink2); border:1px solid var(--line2); border-radius:3px; padding:3px 5px; white-space:nowrap; }
.d2-site { font-weight:650; font-size:15px; }
.d2-what { margin:5px 0 0; max-width:var(--measure); }
.d2-do { margin:3px 0 0; max-width:var(--measure); color:var(--ink2); display:grid; grid-template-columns:18px 1fr; }
.d2-arrow { font-family:var(--font-mono); color:var(--accent-ink); font-weight:600; }
.d2-until { margin:3px 0 0; font-size:13px; color:var(--dim); }
.d2-f-acts { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin:10px 0 4px; }
.d2-f-acts form { margin:0; display:inline-flex; }
.d2-f-links { display:inline-flex; flex-wrap:wrap; gap:4px 14px; margin-left:8px; font-size:13px; }
/* a row's links are links on sight (round 3): underlined, not only on hover */
.d2-f .d2-f-links a, .d2-src .d2-src-links a { text-decoration:underline; text-decoration-color:var(--accent-line); text-underline-offset:3px; }
.d2-f-money { text-align:right; display:grid; align-content:start; gap:1px; }
.d2-f-money b { font-size:19px; font-weight:600; letter-spacing:-.02em; line-height:1.3; }
.d2-f-money span { font-size:12px; color:var(--dim); }
.d2-legend { display:flex; flex-wrap:wrap; gap:4px 20px; margin:10px 0 0; font-size:12.5px; color:var(--dim); }
.d2-legend span { display:inline-flex; align-items:center; gap:7px; }
.d2-legend i { font-style:normal; display:inline-block; width:18px; text-align:center; font-family:var(--font-mono); color:var(--ink); }
.d2-legend i.e { width:auto; font-size:12px; color:var(--ink2); }
.d2-legend i.s { color:var(--accent-ink); font-weight:600; }

/* ── patterns ───────────────────────────────────────────────────────── */
/* Today: the patterns in one line, each a link to Findings */
.d2-patline { display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 18px; margin:14px 0 0; padding:10px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); font-size:14px; }
.d2-patline-h { font:600 10.5px/1.3 var(--font-mono); letter-spacing:.07em; text-transform:uppercase; color:var(--dim); }
.d2-patline-i { display:inline-flex; align-items:baseline; gap:6px; }
.d2-patline-i a { text-decoration:underline !important; text-decoration-color:var(--accent-line) !important; text-underline-offset:3px; }
.d2-patline-i b { font-size:13.5px; font-weight:600; }
.d2-patline .d2-all { margin-left:auto; }
.d2-pat-bar { display:block; height:6px; background:var(--card2); border-radius:1px; overflow:hidden; }
.d2-pat-bar i { display:block; height:100%; background:var(--ink); min-width:2px; }

/* ── ask ────────────────────────────────────────────────────────────── */
.d2-askform { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; margin:0; }
:root[data-design="v2"] .d2-askform input { all:unset; box-sizing:border-box; width:100%; min-height:44px; padding:0 14px; border:1px solid var(--ink); border-radius:4px;
  background:var(--paper); color:var(--ink); font:400 15px/1.2 var(--font-ui); }
:root[data-design="v2"] .d2-askform input::placeholder { color:var(--dim); }
:root[data-design="v2"] .d2-askform input:focus { outline:2px solid var(--ask); outline-offset:1px; border-color:var(--ask); }
:root[data-design="v2"] .d2-askform .d2-btn { min-height:44px; padding:0 20px; font-size:14px; background:var(--ask); border-color:var(--ask); color:#fff; }
.d2-prompts { display:flex; flex-wrap:wrap; gap:6px; margin:10px 0 0; }
:root[data-design="v2"] .d2-prompt { all:unset; box-sizing:border-box; cursor:pointer; min-height:30px; display:inline-flex; align-items:center; padding:0 10px; border:1px solid var(--ask-line);
  border-radius:4px; color:var(--ask); font:500 13px/1 var(--font-ui); background:transparent; }
:root[data-design="v2"] .d2-prompt:hover { background:var(--ask-wash); }
:root[data-design="v2"] .d2-prompt:focus-visible { outline:2px solid var(--ask); outline-offset:2px; }
.d2-asking { display:none; }
.d2-ask.htmx-request .d2-asking { display:block; }
.d2-ask.htmx-request .d2-asking::before { content:""; display:inline-block; width:8px; height:8px; margin-right:8px; border-radius:50%; background:var(--ask); animation:d2-pulse 1s ease-in-out infinite; }
@keyframes d2-pulse { 50% { opacity:.25; } }
.d2-askpage { max-width:820px; }

/* the dock */
.d2-dock { position:fixed; z-index:60; inset:0 0 0 auto; width:min(440px,100vw); display:flex; flex-direction:column; background:var(--card); border-left:1px solid var(--ink);
  box-shadow:var(--shadow-pop); }
.d2-dock[hidden] { display:none; }
.d2-dockhead { display:grid; grid-template-columns:auto 1fr auto auto; align-items:baseline; gap:4px 12px; padding:16px 18px 12px; border-bottom:1px solid var(--line); }
.d2-dockhead b { font-size:16px; font-weight:650; }
.d2-dockhead span { font-size:12.5px; color:var(--dim); }
.d2-dockhead a { font-size:12.5px; color:var(--accent-ink); text-decoration:none; }
.d2-dockhead button { all:unset; cursor:pointer; width:28px; height:28px; display:inline-flex; align-items:center; justify-content:center; border-radius:4px; color:var(--dim); }
.d2-dockhead button:hover { background:var(--card2); color:var(--ink); }
.d2-dockhead button:focus-visible { outline:2px solid var(--accent); }
.d2-dockbody { flex:1; min-height:0; overflow-y:auto; padding:4px 18px 86px; }
.d2-dock .d2-ask { display:flex; flex-direction:column; min-height:100%; }
.d2-dock .d2-qa { flex:1; align-content:start; }
.d2-dock .d2-askform { position:sticky; bottom:-86px; margin:0 -18px -86px; padding:12px 18px 74px; background:var(--card); border-top:1px solid var(--line); }

/* ── what moved revenue · where it is ───────────────────────────────── */
.d2-two { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(0,1fr); gap:0 40px; align-items:start; }
.d2-two > :only-child { grid-column:1 / -1; }
.d2-change-h { margin:12px 0 0; font-size:15px; }
.d2-change-h b { font-family:var(--font-mono); font-weight:600; }
.d2-delta { font-family:var(--font-mono); font-weight:600; margin-left:6px; white-space:nowrap; }
.d2-delta.down { color:var(--crit); }
.d2-delta.up { color:var(--good); }
/* the bridge: what fell and what rose underneath the net change */
.d2-bridge { display:grid; grid-template-columns:1fr 1fr; margin:14px 0 0; }
.d2-bridge-s { display:grid; grid-template-columns:auto 1fr; gap:3px 8px; align-items:baseline; padding:0 0 0 10px; border-left:1px solid var(--ink); }
.d2-bridge-s.down { padding:0 10px 0 0; border-left:0; text-align:right; grid-template-columns:1fr auto; }
.d2-bridge-bar { grid-column:1 / -1; display:flex; height:14px; }
.d2-bridge-s.down .d2-bridge-bar { justify-content:flex-end; }
.d2-bridge-bar i { display:block; height:100%; min-width:2px; }
.d2-bridge-s.down .d2-bridge-bar i { background:var(--crit); }
.d2-bridge-s.up .d2-bridge-bar i { background:var(--good); }
.d2-bridge-s b { font:600 15px/1.3 var(--font-mono); letter-spacing:-.01em; }
.d2-bridge-s.down b { color:var(--crit); grid-column:2; grid-row:2; }
.d2-bridge-s.down span:last-child { grid-column:1; grid-row:2; }
.d2-bridge-s.up b { color:var(--good); }
.d2-bridge-s span:last-child { font-size:12.5px; color:var(--dim); }
.d2-months { display:flex; align-items:flex-end; gap:4px; height:92px; margin:22px 0 0; padding:18px 0 20px; border-bottom:1px solid var(--line); box-sizing:border-box; }
.d2-mo { flex:1; height:100%; position:relative; display:flex; align-items:flex-end; min-width:0; }
.d2-mo i { display:block; width:100%; background:var(--line2); border-radius:1px 1px 0 0; min-height:2px; }
.d2-mo.focus i { background:var(--ink); }
.d2-mo.partial i { background:repeating-linear-gradient(135deg, var(--line2) 0 3px, transparent 3px 6px); }
.d2-mo span { position:absolute; left:0; right:0; bottom:-19px; text-align:center; font:400 10.5px/1 var(--font-mono); color:var(--dim); white-space:nowrap; overflow:hidden; }
.d2-mo.focus span { color:var(--ink); font-weight:600; }
.d2-mo em { position:absolute; left:50%; transform:translateX(-50%); top:-17px; font:600 10.5px/1 var(--font-mono); font-style:normal; white-space:nowrap; }
.d2-mvs { display:grid; grid-template-columns:1fr 1fr; gap:0 28px; margin:26px 0 8px; }
.d2-mv h3 { display:flex; justify-content:space-between; gap:8px; align-items:baseline; padding-bottom:6px; border-bottom:1px solid var(--line); }
.d2-mv h3 span { font:400 12px/1 var(--font-mono); color:var(--dim); }
.d2-mv ul { list-style:none; margin:0; padding:0; }
.d2-mv li { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:2px 10px; padding:8px 0; border-bottom:1px solid var(--line); }
.d2-mv-l { display:grid; min-width:0; }
.d2-mv .d2-site { font-size:13.5px; font-weight:600; color:var(--ink) !important; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.d2-mv-line { font:400 11.5px/1.4 var(--font-mono); color:var(--dim); }
.d2-mv li > b { font:600 13.5px/1.5 var(--font-mono); text-align:right; }
.d2-mv.down li > b { color:var(--crit); }
.d2-mv.up li > b { color:var(--good); }
.d2-mv-bar { grid-column:1 / -1; grid-row:3; height:3px; background:var(--card2); }
.d2-mv-bar i { display:block; height:100%; }
.d2-mv.down .d2-mv-bar i { background:var(--crit); }
.d2-mv.up .d2-mv-bar i { background:var(--good); }
.d2-mv-why { grid-column:1 / -1; font-size:12.5px; line-height:1.4; }
.d2-mv-why::before { content:"finding · "; font:500 10.5px/1 var(--font-mono); letter-spacing:.05em; text-transform:uppercase; color:var(--dim); }
.d2-map { height:340px; margin-top:12px; border:1px solid var(--line2); border-radius:4px; overflow:hidden; background:var(--card2); position:relative; z-index:0; }
.d2-map .d2-wait { padding:14px; }
.d2-map .leaflet-container { font:inherit; background:var(--card2); height:100%; }
.d2-map .leaflet-control-attribution { font-size:10px; background:var(--paper); color:var(--dim); }
:root[data-design="v2"] .d2-map .leaflet-tile-pane { filter:grayscale(1) contrast(.92) brightness(1.04); }
.d2-tip { font:500 12.5px/1.35 var(--font-ui); }
.d2-tip b { font-family:var(--font-mono); }
.d2-cap2 { margin:8px 0 0; font-size:12.5px; color:var(--dim); display:flex; flex-wrap:wrap; align-items:center; gap:4px 8px; }
.d2-cap2 .dot { display:inline-block; width:7px; height:7px; border-radius:50%; background:var(--line2); margin-left:10px; }
.d2-cap2 .dot:first-child { margin-left:0; }
.d2-cap2 .dot.big { width:13px; height:13px; background:var(--crit-wash); border:1.5px solid var(--crit); }

/* ── only you know · the figures ────────────────────────────────────── */
.d2-ques { padding:12px 0; border-bottom:1px solid var(--line); }
.d2-ques-t { margin:0; font-weight:600; max-width:var(--measure); }
.d2-ques-o { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin:9px 0 4px; }
.d2-ques-o form { margin:0; }
.d2-mark { font:500 12.5px/1 var(--font-mono); color:var(--good); }
.d2-fix { position:relative; }
.d2-fix > summary { list-style:none; }
.d2-fix > summary::-webkit-details-marker { display:none; }
.d2-fix[open] > summary { border-color:var(--ink); }
.d2-fix form { position:absolute; z-index:5; top:calc(100% + 6px); right:0; width:280px; display:grid; gap:8px; padding:12px; background:var(--card); border:1px solid var(--ink); border-radius:4px; box-shadow:var(--shadow-pop); }
.d2-ques .d2-fix form { right:auto; left:0; }
.d2-fix label { display:grid; gap:3px; font-size:12.5px; color:var(--dim); }
.d2-fix label span { font-size:11.5px; }
:root[data-design="v2"] .d2-fix input { all:unset; box-sizing:border-box; width:100%; min-height:34px; padding:0 9px; border:1px solid var(--line2); border-radius:4px; color:var(--ink); background:var(--paper); font:400 14px/1 var(--font-ui); }
:root[data-design="v2"] .d2-fix input:focus { border-color:var(--accent); outline:2px solid var(--accent-wash); }
.d2-facts { margin-top:34px; border-top:1px solid var(--ink); }
.d2-facts > details > summary { list-style:none; cursor:pointer; display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:4px 12px; padding:10px 0 8px; }
.d2-facts > details > summary::-webkit-details-marker { display:none; }
.d2-facts > details > summary h2::before { content:"+"; display:inline-block; width:18px; font-family:var(--font-mono); font-weight:500; color:var(--dim); }
.d2-facts > details[open] > summary h2::before { content:"−"; }
.d2-facts > details > summary span { font:400 12.5px/1 var(--font-mono); color:var(--dim); }
.d2-factlist { border-top:1px solid var(--line); }
.d2-fact { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.1fr) auto; gap:2px 20px; align-items:center; padding:9px 0; border-bottom:1px solid var(--line); }
.d2-fact-s { color:var(--ink2); }
.d2-fact-v b { font:600 15px/1.3 var(--font-mono); letter-spacing:-.01em; }
.d2-fact-v s { margin-left:8px; color:var(--dim); font:400 12.5px/1 var(--font-mono); }
.d2-fact-a { display:flex; align-items:center; gap:6px; justify-content:flex-end; }
.d2-fact-a form { margin:0; }
.d2-fact-x { grid-column:1 / -1; }

/* ── what more data would show ──────────────────────────────────────── */
.d2-next ul { list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:0 28px; }
.d2-next li a { display:grid; gap:2px; padding:12px 0; border-bottom:1px solid var(--line); color:var(--ink) !important; height:100%; box-sizing:border-box; }
.d2-next li a:hover { text-decoration:none !important; }
.d2-next li a:hover b { text-decoration:underline; text-underline-offset:3px; }
.d2-next b { font-weight:650; }
.d2-next b::after { content:" +"; font-family:var(--font-mono); color:var(--accent-ink); }
.d2-next span { font-size:13.5px; color:var(--ink2); }

/* ── findings ───────────────────────────────────────────────────────── */
:root[data-design="v2"] .d2-lanex { margin-left:auto; }
.d2-lanex[open] { flex-basis:100%; margin-left:0; }
/* The filter (d2Filter): two rows of one button — a lane, then a group of
   it — then the choice in words. Bordered = can be pressed; the chosen one
   is filled ink. Rows and hairlines, no box around the whole. */
.d2-filter { margin:20px 0 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.d2-frow { display:grid; grid-template-columns:64px minmax(0,1fr); align-items:start; padding:9px 0; }
.d2-frow + .d2-frow { border-top:1px solid var(--line); }
.d2-frow-h { font:600 10.5px/34px var(--font-mono); letter-spacing:.09em; text-transform:uppercase; color:var(--dim); }
.d2-frow-b { display:flex; flex-wrap:wrap; gap:6px; min-width:0; }
:root[data-design="v2"] .d2-fb { all:unset; box-sizing:border-box; cursor:pointer; display:inline-flex; align-items:baseline; gap:8px; min-height:34px; padding:0 12px; border:1px solid var(--line2); border-radius:4px; background:var(--paper); color:var(--ink2); font:500 13.5px/32px var(--font-ui); white-space:nowrap; flex:none; }
:root[data-design="v2"] .d2-fb b { font-weight:inherit; }
:root[data-design="v2"] .d2-fb span { font:400 12px/1 var(--font-mono); color:var(--dim); }
:root[data-design="v2"] .d2-fb:hover { border-color:var(--ink); color:var(--ink); }
:root[data-design="v2"] .d2-fb.on { background:var(--ink); border-color:var(--ink); color:var(--paper); }
:root[data-design="v2"] .d2-fb.on span { color:inherit; opacity:.75; }
:root[data-design="v2"] .d2-fb:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
:root[data-design="v2"] .d2-fb[hidden], :root[data-design="v2"] .d2-freset[hidden] { display:none; }
.d2-fstate { display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 14px; padding:9px 0; border-top:1px solid var(--line); font-size:13.5px; }
.d2-fstate p { margin:0; color:var(--ink2); }
.d2-fstate p b { color:var(--ink); font-weight:650; }
:root[data-design="v2"] .d2-freset { all:unset; cursor:pointer; color:var(--accent-ink); text-decoration:underline; text-decoration-color:var(--accent-line); text-underline-offset:3px; font:500 13.5px/22px var(--font-ui); }
:root[data-design="v2"] .d2-freset:hover { text-decoration-color:currentColor; }
:root[data-design="v2"] .d2-freset:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.d2-g { margin-top:30px; border-top:1px solid var(--ink); scroll-margin-top:12px; }
.d2-g-h { display:grid; grid-template-columns:minmax(0,1fr) 132px; gap:0 24px; padding:12px 0 4px; align-items:start; }
body.d2 .d2-main .d2-g-h h2 { font-size:18px; letter-spacing:-.015em; }
.d2-g-m { margin:2px 0 0; font-size:13px; color:var(--dim); }
.d2-lanetag { font:500 10.5px/1 var(--font-mono); letter-spacing:.06em; text-transform:uppercase; }
.d2-lanetag.act { color:var(--accent-ink); }
.d2-lanetag.look { color:var(--warn); }
.d2-lanetag.data { color:var(--ask); }
.d2-g-money { text-align:right; display:grid; gap:1px; }
.d2-g-money b { font-size:22px; font-weight:600; letter-spacing:-.025em; line-height:1.2; }
.d2-g-money span { font-size:12px; color:var(--dim); }
.d2-g-money .d2-pat-bar { margin-top:6px; }
.d2-move { margin:6px 0 4px; padding:9px 12px; background:var(--card2); border-radius:4px; max-width:none; display:grid; grid-template-columns:18px 1fr; color:var(--ink2); font-size:14px; }
.d2-move b { color:var(--ink); font-weight:650; grid-column:2; }
.d2-move .d2-arrow { grid-row:1 / span 2; }
.d2-g .d2-list { border-bottom:0; }
.d2-g .d2-list > .d2-f:first-child { border-top:0; }
.d2-more > summary, .d2-fold > summary { list-style:none; cursor:pointer; padding:9px 0; border-top:1px solid var(--line); color:var(--accent-ink); font-size:13.5px; font-weight:500; }
.d2-more > summary::-webkit-details-marker, .d2-fold > summary::-webkit-details-marker { display:none; }
.d2-more > summary::before, .d2-fold > summary::before { content:"+ "; font-family:var(--font-mono); }
.d2-more[open] > summary::before, .d2-fold[open] > summary::before { content:"− "; }
.d2-more .d2-list > .d2-f:first-child { border-top:1px solid var(--line); }
.d2-fold { margin-top:26px; border-top:1px solid var(--ink); }
.d2-fold > summary { border-top:0; color:var(--ink); font-weight:650; font-size:15px; }
/* set aside: the rows read as history — who and when, then the way back */
.d2-aside .d2-list { border-bottom:0; }
.d2-af .d2-what { color:var(--ink2); }
.d2-af-who { margin:4px 0 0; font-size:13px; color:var(--dim); }
.d2-af-who b { font-weight:600; color:var(--ink); }
.d2-af-by { color:var(--ink); }
.d2-af-gone { margin:6px 0 2px; font-size:13px; color:var(--dim); }
.d2-af .d2-f-acts { margin-top:8px; }
.d2-cleared { margin:0; padding:12px 0; color:var(--good); font-size:14px; }
.d2-g.d2-off { display:none; } /* left out by the filter (v2.js) */
.d2-foot { margin:30px 0 0; font-size:13.5px; color:var(--dim); }

/* ── classic pages inside the v2 shell ──────────────────────────────── */
/* Layout pages (body.board > .shell > aside.sb + .stage > .topbar, main,
   .ft): the rail is the navigation, so the old sidebar, header and footer
   go. The analyst board keeps its own menu as a second column — it is a
   different place with its own map, and only experts ever see it. */
:root[data-design="v2"]:not([data-d2-area="board"]) body.board .shell > aside.sb,
:root[data-design="v2"]:not([data-d2-area="board"]) body.board .topbar,
:root[data-design="v2"] body.board .ft,
:root[data-design="v2"] body.board aside.sb > a.logo,
:root[data-design="v2"] body.board .topbar > .logo.mh,
:root[data-design="v2"] body.board .topbar > .mnav,
:root[data-design="v2"] body.board .topbar > .theme,
:root[data-design="v2"] body.board .topbar > .pm { display:none !important; }
:root[data-design="v2"] body.board .stage { min-width:0; flex:1; }
:root[data-design="v2"] body.board main { padding-top:26px; }
:root[data-design="v2"] body.board h1 { font-family:var(--font-ui); letter-spacing:-.02em; }
:root[data-design="v2"] .demo-banner { border-radius:0; border-width:0 0 1px; font-size:13px; }
:root[data-design="v2"] main.lens-main { padding-top:26px; }
:root[data-design="v2"] .lens-foot { display:none; }
:root[data-design="v2"] body.mappage { height:100dvh; }

/* ── phone ──────────────────────────────────────────────────────────── */
@media (max-width:899px) {
  :root[data-design="v2"] body:has(> .d2-rail) { padding-left:0; padding-bottom:62px; }
  .d2-bar { display:flex; align-items:center; gap:12px; padding:10px 16px; border-bottom:1px solid var(--line); background:var(--paper); position:sticky; top:0; z-index:30; }
  .d2-bar .d2-brand { padding:0; }
  .d2-here { margin-left:auto; font:600 11px/1 var(--font-mono); letter-spacing:.08em; text-transform:uppercase; color:var(--dim); }
  .d2-tabs { display:grid; grid-template-columns:repeat(5,1fr); position:fixed; z-index:45; inset:auto 0 0 0; background:var(--paper); border-top:1px solid var(--ink); padding:4px 4px max(4px, env(safe-area-inset-bottom)); }
  .d2-tabs .d2-l { flex-direction:column; gap:2px; min-height:52px; justify-content:center; padding:0 2px; font-size:11px; font-weight:600; }
  .d2-tabs .d2-l.on { background:none; color:var(--accent-ink) !important; box-shadow:inset 0 2px 0 var(--accent); border-radius:0; }
  .d2-tabs .d2-kbd { display:none; }
  .d2-rail { transform:translateX(-102%); transition:transform .18s ease-out; width:min(300px,86vw); z-index:70; box-shadow:var(--shadow-pop); }
  :root[data-d2-drawer="open"] .d2-rail { transform:none; }
  :root[data-d2-drawer="open"] .d2-scrim { display:block; position:fixed; inset:0; z-index:65; background:rgba(0,0,0,.45); }
  .d2-scrim[hidden] { display:none; }
  .d2-main { padding:16px 16px 60px; }
  .d2-hero { grid-template-columns:1fr; gap:14px; }
  .d2-proof { grid-template-columns:repeat(3,1fr); gap:4px 14px; padding-top:12px; border-top:1px solid var(--line); }
  .d2-f, .d2-f.ranked { grid-template-columns:minmax(0,1fr); }
  .d2-f-n { display:none; }
  .d2-f-money { grid-row:1; text-align:left; display:flex; align-items:baseline; gap:8px; margin-bottom:4px; }
  .d2-f-links { margin-left:0; flex-basis:100%; padding-top:4px; }
  :root[data-design="v2"] .d2-btn { min-height:40px; padding:0 14px; }
  .d2-two, .d2-mvs { grid-template-columns:1fr; }
  .d2-mv + .d2-mv { margin-top:20px; }
  .d2-map { height:280px; }
  .d2-fact { grid-template-columns:minmax(0,1fr) auto; }
  .d2-fact-s { grid-column:1 / -1; font-size:13px; }
  .d2-fix form { position:static; width:auto; margin-top:8px; box-shadow:none; }
  .d2-fact-a { flex-wrap:wrap; }
  .d2-g-h { grid-template-columns:minmax(0,1fr) auto; }
  .d2-frow { grid-template-columns:minmax(0,1fr); gap:4px; }
  .d2-frow-h { line-height:1; }
  .d2-frow-b { flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none; padding:2px; margin:-2px; } /* the row scrolls, not the page */
  .d2-frow-b::-webkit-scrollbar { display:none; }
  .d2-g, .d2-f, .d2-aside { scroll-margin-top:58px; } /* under the sticky top bar */
  .d2-dock { width:100vw; border-left:0; }
  .d2-askform { grid-template-columns:1fr; }
  :root[data-design="v2"] .d2-askform input { font-size:16px; }
}
@media (prefers-reduced-motion: reduce) { .d2-rail { transition:none; } }
@media print { .d2-rail, .d2-tabs, .d2-bar, .d2-dock { display:none !important; } :root[data-design="v2"] body:has(> .d2-rail) { padding-left:0; } }

:root[data-design="v2"] .d2-askform input:disabled { border-color:var(--line2); background:var(--card2); cursor:not-allowed; }
:root[data-design="v2"] .d2-askform .d2-btn[disabled] { opacity:.45; cursor:not-allowed; }

/* the phone's "More" is a button among links: same face */
:root[data-design="v2"] .d2-tabs button.d2-l { border:0; background:none; border-radius:0; box-shadow:none; color:var(--ink2); font-family:inherit; }
@media (max-width:899px) { .dsw .dsw-k { display:none; } }

/* ── the analyst's answer: the classic formatter's cards, flattened ──── */
/* An answer is prose with figures, not a stack of boxes: a finding inside an
   answer is a titled paragraph with a rule at its side, a link is a link. */
:root[data-design="v2"] .d2-bub .ai-deep-link,
:root[data-design="v2"] .d2-bub .ai-action-btn { all:unset; cursor:pointer; color:var(--accent-ink); font-weight:500; }
:root[data-design="v2"] .d2-bub .ai-deep-link:hover,
:root[data-design="v2"] .d2-bub .ai-action-btn:hover { text-decoration:underline; text-underline-offset:3px; background:none; color:var(--accent-ink); }
:root[data-design="v2"] .d2-bub .ai-deep-link:focus-visible,
:root[data-design="v2"] .d2-bub .ai-action-btn:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
:root[data-design="v2"] .d2-bub .ai-arrow { font-family:var(--font-mono); font-size:.8em; }
:root[data-design="v2"] .d2-bub .ai-table-wrap { border:0; border-radius:0; overflow-x:auto; margin:8px 0; }
:root[data-design="v2"] .d2-bub .ai-table { font-size:13.5px; width:100%; }
:root[data-design="v2"] .d2-bub .ai-table th { background:none; font:600 10.5px/1.4 var(--font-mono); letter-spacing:.07em; text-transform:uppercase; color:var(--dim); border-bottom:1px solid var(--ink); }
:root[data-design="v2"] .d2-bub ul, :root[data-design="v2"] .d2-bub ol { margin:6px 0; padding-left:20px; }

/* ── sources ── */
/* (#318) /connections in v2: what feeds the account, what needs the
 * operator, what each next source would let us find. Rows separated by
 * hairlines. The provider setups are the classic components
 * (connections.templ), restyled here inside .d2-src-panel. */
.d2-srcs { border-bottom:1px solid var(--line); }
.d2-src { display:grid; grid-template-columns:112px minmax(0,1fr) 148px; gap:0 20px; padding:14px 0 12px; border-top:1px solid var(--line); scroll-margin-top:16px; }
.d2-srcs > .d2-src:first-child { border-top:0; }
.d2-src.offer { grid-template-columns:112px minmax(0,1fr); }
.d2-src:target { background:var(--accent-wash); box-shadow:-12px 0 0 var(--accent-wash), 12px 0 0 var(--accent-wash); }
.d2-src-body { min-width:0; }
.d2-src-head { display:flex; flex-wrap:wrap; align-items:center; gap:4px 12px; }
.d2-src-label { font-size:13px; color:var(--dim); overflow-wrap:anywhere; }
.d2-src .d2-do > span:last-child { min-width:0; }
.d2-src-go { margin-left:4px; }
.d2-src-links { margin:4px 0 0; font-size:13px; }
.d2-src-find { margin:6px 0 2px; max-width:var(--measure); color:var(--ink2); font-size:14px; }
.d2-src-find span { display:block; font:600 10.5px/1.6 var(--font-mono); letter-spacing:.07em; text-transform:uppercase; color:var(--dim); }
.d2-src-close { margin:4px 0 0; font-size:13.5px; font-weight:600; }
.d2-src-when { text-align:right; display:grid; align-content:start; gap:1px; }
.d2-src-when b { font:600 13.5px/1.5 var(--font-mono); letter-spacing:-.01em; white-space:nowrap; }
.d2-src-when span { font-size:12px; color:var(--dim); }
.d2-src .d2-f-acts { margin:10px 0 4px; }
.d2-srcs + .d2-more > summary { border-top:0; }
.d2-more .d2-srcs > .d2-src:first-child { border-top:1px solid var(--line); }
.d2-more + .d2-srcs.later { border-top:1px solid var(--line); }
#providers .d2-more > summary::before, #channels > summary::before { margin-right:6px; }

/* a state: the word, and a shape that repeats it */
.d2-st { display:inline-flex; align-items:center; gap:6px; font:500 10.5px/1.4 var(--font-mono); letter-spacing:.06em; text-transform:uppercase; color:var(--ink2); white-space:nowrap; }
.d2-st i { flex:none; box-sizing:border-box; width:9px; height:9px; border:1.5px solid currentColor; border-radius:50%; }
.d2-st.s-active { color:var(--good); }
.d2-st.s-active i, .d2-st.s-on i { background:currentColor; }
.d2-st.s-stale { color:var(--warn); }
.d2-st.s-stale i { background:linear-gradient(90deg, currentColor 50%, transparent 50%); }
.d2-st.s-wait, .d2-st.s-off { color:var(--dim); }
.d2-st.s-ask { color:var(--accent-ink); }
.d2-st.s-ask i { border-radius:0; }
.d2-st.s-error { color:var(--crit); }
.d2-st.s-error i { border-radius:0; background:currentColor; transform:rotate(45deg); }
.d2-st.s-off i { height:0; border-width:1.5px 0 0; border-radius:0; }

/* the fold with a connection's forms */
.d2-src-set { margin-top:8px; }
body.d2 .d2-main .d2-src-set > summary { list-style:none; cursor:pointer; display:inline-flex; align-items:center; gap:8px; min-height:30px; padding:0 11px;
  border:1px solid var(--line2); border-radius:var(--r-btn); background:var(--paper); color:var(--ink); font:500 13px/1 var(--font-ui); user-select:none; }
body.d2 .d2-main .d2-src-set > summary::-webkit-details-marker { display:none; }
body.d2 .d2-main .d2-src-set > summary::after { content:"+"; font:500 13px/1 var(--font-mono); opacity:.7; }
body.d2 .d2-main .d2-src-set[open] > summary::after { content:"−"; }
body.d2 .d2-main .d2-src-set > summary:hover,
body.d2 .d2-main .d2-src-set[open] > summary { border-color:var(--ink); }
body.d2 .d2-main .d2-src-set.pri > summary { background:var(--ink); border-color:var(--ink); color:var(--paper); font-weight:600; }
.d2-src-panel { margin:10px 0 4px 6px; padding:4px 0 4px 14px; border-left:2px solid var(--line2); display:grid; grid-template-columns:minmax(0,1fr); gap:14px;
  max-width:80ch; min-width:0; font-size:14px; line-height:1.5; color:var(--ink2); }
.d2-src-panel > * { min-width:0; }
.d2-src-panel form { margin:0; }
.d2-src-panel p { margin:6px 0; }
.d2-src-panel b { color:var(--ink); font-weight:600; }
.d2-src-panel .dim { color:var(--dim); }
.d2-src-panel .d2-src-note { margin:0; }
.d2-src-meta { display:grid; grid-template-columns:auto minmax(0,1fr); gap:2px 14px; margin:0; }
.d2-src-meta dt { font:600 10.5px/1.9 var(--font-mono); letter-spacing:.07em; text-transform:uppercase; color:var(--dim); }
.d2-src-meta dd { margin:0; font:400 12.5px/1.6 var(--font-mono); overflow-wrap:anywhere; }
.d2-src-meta dd.words { font-family:var(--font-ui); font-size:13px; }
.d2-src-remove { display:flex; flex-wrap:wrap; align-items:center; gap:6px 12px; padding-top:12px; border-top:1px solid var(--line); }

/* the classic setup components inside the fold */
.d2-src-panel .cx-key, .d2-src-panel .sp-ids { display:grid; grid-template-columns:minmax(0,1fr); justify-items:start; gap:6px; border:0; border-radius:0; padding:0; margin:0; }
.d2-src-panel .sp-ids { gap:12px; margin:8px 0 10px; }
.d2-src-panel .sp-field { display:grid; grid-template-columns:minmax(0,1fr); gap:4px; width:100%; }
.d2-src-panel label { font-size:12.5px; color:var(--dim); }
:root[data-design="v2"] .d2-src-panel input:not([type="hidden"]) { all:unset; box-sizing:border-box; width:100%; max-width:460px; min-height:36px; padding:0 9px;
  border:1px solid var(--line2); border-radius:4px; color:var(--ink); background:var(--paper); font:400 14px/1.2 var(--font-ui); }
:root[data-design="v2"] .d2-src-panel input:not([type="hidden"])::placeholder { color:var(--dim); }
:root[data-design="v2"] .d2-src-panel input:not([type="hidden"]):focus { border-color:var(--accent); outline:2px solid var(--accent-wash); }
:root[data-design="v2"] .d2-src-panel button:not(.d2-btn) { all:unset; box-sizing:border-box; display:inline-flex; align-items:center; justify-content:center; min-height:30px; padding:0 11px;
  border:1px solid var(--line2); border-radius:var(--r-btn); background:var(--paper); color:var(--ink); font:500 13px/1 var(--font-ui); cursor:pointer; white-space:nowrap; }
:root[data-design="v2"] .d2-src-panel button:not(.d2-btn):hover { border-color:var(--ink); }
:root[data-design="v2"] .d2-src-panel button:not(.d2-btn):focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.d2-src-panel .hint, .d2-src-panel .cx-reason { font-weight:400; font-size:12.5px; line-height:1.4; color:var(--dim); }
.d2-src-panel form > .hint { margin-left:8px; }
.d2-src-panel .cx-key > .hint, .d2-src-panel .sp-ids > .hint, .d2-src-remove > .hint { margin-left:0; }
.d2-src-panel .fp { font:500 12.5px/1.4 var(--font-mono); color:var(--ink); }
.d2-src-panel code { font:400 12.5px/1.4 var(--font-mono); overflow-wrap:anywhere; }
.d2-src-panel .sp-setup { max-width:100%; min-width:0; margin:0; }
.d2-src-panel .cx-status { display:inline-flex; align-items:center; gap:6px; padding:0; background:none; border-radius:0;
  font:500 10.5px/1.4 var(--font-mono); letter-spacing:.06em; text-transform:uppercase; color:var(--dim); white-space:nowrap; }
.d2-src-panel .cx-status::before { content:""; flex:none; box-sizing:border-box; width:9px; height:9px; border:1.5px solid currentColor; border-radius:50%; }
.d2-src-panel .cx-status.connected { color:var(--good); }
.d2-src-panel .cx-status.connected::before { background:currentColor; }
.d2-src-panel .cx-status.pending { color:var(--warn); }
.d2-src-panel .cx-status.pending::before { background:linear-gradient(90deg, currentColor 50%, transparent 50%); }
.d2-src-panel .cx-status.error { color:var(--crit); }
.d2-src-panel .cx-status.error::before { border-radius:0; background:currentColor; transform:rotate(45deg); }
.d2-src-panel .sp-check { display:block; width:100%; margin:4px 0 8px; border-collapse:collapse; font-size:13.5px; }
.d2-src-panel .sp-check tbody { display:block; }
.d2-src-panel .sp-check tr { display:grid; grid-template-columns:76px minmax(0,1fr) minmax(0,1.4fr); gap:2px 12px; padding:7px 0; border-top:1px solid var(--line); }
.d2-src-panel .sp-check td { display:block; padding:0; white-space:normal; min-width:0; }
.d2-src-panel .sp-msg { color:var(--dim); overflow-wrap:anywhere; }
.d2-src-panel .sp-guide { border:0; border-top:1px solid var(--line); border-radius:0; padding:0; font-size:13.5px; line-height:1.5; }
body.d2 .d2-main .d2-src-panel .sp-guide > summary { color:var(--ink); font-weight:600; font-size:13.5px; min-height:40px; }
body.d2 .d2-main .d2-src-panel .sp-guide > summary::before { content:"+"; width:16px; font-family:var(--font-mono); font-weight:500; color:var(--dim); }
body.d2 .d2-main .d2-src-panel .sp-guide[open] > summary::before { content:"−"; }
body.d2 .d2-main .d2-src-panel h3 { margin:14px 0 4px; font-size:13.5px; }
.d2-src-panel ol, .d2-src-panel ul { margin:4px 0; padding-left:20px; }
.d2-src-panel li { margin:4px 0; }
.d2-src-panel .nx-state { display:flex; flex-wrap:wrap; align-items:center; gap:4px 10px; margin:0 0 6px; font-size:13.5px; }
.d2-src-panel .nx-note { margin:6px 0 10px; padding:8px 12px; border:1px solid var(--warn-line); border-radius:4px; background:var(--warn-wash); font-size:13.5px; line-height:1.45; }
.d2-src-panel .nx-steps { font-size:13.5px; }
.d2-src-panel .nx-kv { font-size:13px; }
.d2-src-panel .nx-kv > span:first-child { min-width:0; flex:0 0 9rem; }
.d2-src-panel .nx-policy { margin:6px 0; padding:8px 10px; border:1px solid var(--line); border-radius:4px; background:var(--card2);
  font:400 12px/1.5 var(--font-mono); white-space:pre-wrap; overflow-wrap:anywhere; }

/* every channel, in detail */
.d2-fold > .d2-lede { font-size:14px; }
.d2-ch { border-top:1px solid var(--line); }
.d2-ch-r { display:grid; grid-template-columns:minmax(0,1.1fr) 124px minmax(0,1.2fr) minmax(0,1fr); gap:2px 20px; align-items:start; padding:9px 0; border-bottom:1px solid var(--line); font-size:13.5px; }
.d2-ch.mms .d2-ch-r { grid-template-columns:minmax(0,1.1fr) 124px minmax(0,2.2fr); }
.d2-ch-n { font-weight:600; min-width:0; overflow-wrap:anywhere; }
.d2-ch-k { color:var(--ink2); min-width:0; }
.d2-ch-d { font:400 12.5px/1.5 var(--font-mono); color:var(--dim); min-width:0; overflow-wrap:anywhere; }
.d2-ch-r > .d2-st { padding-top:3px; }
.d2-ch-sub { display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:4px 12px; margin:24px 0 4px; }
.d2-ch-sub span { font:400 12.5px/1.4 var(--font-mono); color:var(--dim); }

@media (max-width:899px) {
  .d2-src { grid-template-columns:minmax(0,1fr); }
  .d2-src-when { display:none; } /* the row's first line already says when */
  body.d2 .d2-main .d2-src-set > summary { min-height:40px; padding:0 14px; }
  .d2-src-panel { margin-left:0; padding-left:12px; }
  :root[data-design="v2"] .d2-src-panel input:not([type="hidden"]) { max-width:none; min-height:44px; font-size:16px; }
  :root[data-design="v2"] .d2-src-panel button:not(.d2-btn) { min-height:40px; padding:0 14px; }
  .d2-src-panel form > .hint { display:block; margin:4px 0 0; }
  .d2-src-panel .sp-check tr { grid-template-columns:76px minmax(0,1fr); }
  .d2-src-panel .sp-msg { grid-column:2; }
  .d2-ch-r, .d2-ch.mms .d2-ch-r { grid-template-columns:minmax(0,1fr) auto; }
  .d2-ch-k, .d2-ch-d { grid-column:1 / -1; }
}

/* One filled button per list: the first source to connect is the one we
   recommend; the rest are offers, not calls. */
:root[data-design="v2"] .d2-srcs > .d2-src.offer:not(:first-child) .d2-btn.pri { background:var(--paper); color:var(--ink); border-color:var(--line2); font-weight:500; }
:root[data-design="v2"] .d2-srcs > .d2-src.offer:not(:first-child) .d2-btn.pri:hover { border-color:var(--ink); }
/* a fold's marker and its words (the classic stylesheet makes summaries flex) */
.d2-more > summary::before, .d2-fold > summary::before { margin-right:6px; }

/* the provider's mark: a fixed slot at the start of every row and offer.
   A logo file is drawn as a mask in the ink, the way the marketing site's
   partner band draws it (one tone, a drawn box per mark set in
   handlers/d2_sources.go, d2Marks); a provider with no file is typeset in
   the same tone and height. One column of marks, one system. */
.d2-src-mark { display:flex; align-items:center; height:24px; margin-top:-1px; min-width:0; }
.d2-mark { display:block; flex:none; }
.d2-mark.logo { background-color:var(--ink);
  -webkit-mask-repeat:no-repeat; -webkit-mask-position:left center; -webkit-mask-size:contain;
  mask-repeat:no-repeat; mask-position:left center; mask-size:contain; }
.d2-mark.word { height:18px; font:700 15px/18px var(--font-ui); letter-spacing:-.025em; color:var(--ink); white-space:nowrap; }

/* how to connect: numbered, the numbers in mono */
.d2-src-how { margin:10px 0 4px; max-width:var(--measure); }
body.d2 .d2-main .d2-src-how h3 { margin:0 0 3px; font:600 10.5px/1.6 var(--font-mono); letter-spacing:.07em; text-transform:uppercase; color:var(--dim); }
.d2-src .d2-src-how ol { margin:0; padding:0; list-style:none; counter-reset:d2step; display:grid; gap:3px; }
.d2-src .d2-src-how li { margin:0; counter-increment:d2step; display:grid; grid-template-columns:20px minmax(0,1fr); font-size:14px; line-height:1.45; color:var(--ink2); }
.d2-src .d2-src-how li::before { content:counter(d2step); font:500 12px/1.75 var(--font-mono); color:var(--dim); }
.d2-src .d2-src-how li > span { min-width:0; overflow-wrap:anywhere; }
.d2-src .d2-src-how-note { margin:4px 0 0 20px; font-size:13px; line-height:1.45; color:var(--dim); }
.d2-src-panel .d2-src-how { margin:0; }

/* how we know: facts about this one source */
.d2-src-known dl { display:grid; grid-template-columns:auto minmax(0,1fr); gap:2px 14px; margin:2px 0; }
.d2-src-known dt { font:600 10.5px/1.9 var(--font-mono); letter-spacing:.07em; text-transform:uppercase; color:var(--dim); }
.d2-src-known dd { margin:0; font-size:13.5px; overflow-wrap:anywhere; }
.d2-src-known dd.num { font:400 12.5px/1.75 var(--font-mono); }

@media (max-width:899px) {
  .d2-src, .d2-src.offer { grid-template-columns:minmax(0,1fr); }
  .d2-src-mark { margin-bottom:6px; }
  .d2-src-known dl { grid-template-columns:minmax(0,1fr); gap:0; }
  .d2-src-known dd + dt { margin-top:4px; }
}

/* ── the trial line ─────────────────────────────────────────────────── */
.d2-trial { display:flex; flex-wrap:wrap; align-items:center; gap:6px 14px; margin:-6px 0 22px; padding:10px 0 12px;
  border-bottom:1px solid var(--line); font-size:13.5px; color:var(--ink2); }
.d2-trial-tag { font:600 10.5px/1 var(--font-mono); letter-spacing:.08em; text-transform:uppercase; color:var(--warn);
  background:var(--warn-wash); border:1px solid var(--warn-line); border-radius:3px; padding:4px 6px; }
.d2-trial-days { font-weight:600; color:var(--ink); }
.d2-trial-acts { display:inline-flex; flex-wrap:wrap; gap:6px; margin-left:auto; }
/* outside a v2 page's own <main> (pages drawn through lensTop): a full bar */
.d2-trial.bar { margin:0; padding:10px var(--d2-gap); background:var(--paper); flex:none; }
@media (max-width:899px) { .d2-trial-acts { margin-left:0; flex-basis:100%; } .d2-trial { margin-top:0; } }

/* ── the conversation: bubbles, as any chat draws them (#315 round 2) ─── */
.d2-qa { display:flex; flex-direction:column; gap:14px; margin:14px 0; }
.d2-turn { display:flex; flex-direction:column; gap:6px; }
.d2-bub { max-width:min(88%, 640px); padding:10px 14px; border-radius:18px; font-size:14.5px; line-height:1.5; overflow-wrap:anywhere; }
.d2-bub p { margin:4px 0; }
.d2-bub p:first-child { margin-top:0; }
.d2-bub p:last-child { margin-bottom:0; }
.d2-bub.me { align-self:flex-end; background:var(--ink); color:var(--paper); border-bottom-right-radius:6px; }
.d2-bub.them { align-self:flex-start; background:var(--card2); color:var(--ink); border-bottom-left-radius:6px; }
.d2-bub.them.warn { background:var(--warn-wash); box-shadow:inset 0 0 0 1px var(--warn-line); }
.d2-bub table { border-collapse:collapse; font-size:13.5px; margin:8px 0; }
.d2-bub th, .d2-bub td { border-bottom:1px solid var(--line2); padding:4px 12px 4px 0; text-align:left; white-space:normal; }
.d2-bub ul, .d2-bub ol { margin:6px 0; padding-left:20px; }
.d2-bub .d2-btn { margin-right:8px; }
.d2-when { align-self:flex-start; margin:0 0 0 14px; font:400 11px/1 var(--font-mono); color:var(--dim); }
.d2-turn .d2-bub.me + .d2-bub.them { margin-top:2px; }
.d2-ask.htmx-request .d2-qa::after { content:"…"; align-self:flex-start; padding:8px 16px; border-radius:18px; border-bottom-left-radius:6px; background:var(--card2); color:var(--dim); font:600 18px/1 var(--font-ui); letter-spacing:2px; }

/* ── what the data cannot show yet ─────────────────────────────────── */
.d2-gap { display:grid; gap:3px; padding:12px 0; border-bottom:1px solid var(--line); }
.d2-gaps ul, .d2-limits ul { list-style:none; margin:0; padding:0; }
.d2-gaps .d2-gap:first-child { padding-top:6px; }
.d2-gap-t { font-weight:650; font-size:15px; }
.d2-gap-m { color:var(--ink2); }
.d2-gap-fix { display:block; color:var(--ink); }
.d2-gap-fix a { margin-left:6px; white-space:nowrap; }
.d2-gap-then { color:var(--ink2); font-size:14px; }
.d2-gap-then b { color:var(--good); font-weight:650; }
.d2-limits { margin:4px 0 10px; padding:10px 14px; border:1px solid var(--line2); border-radius:12px; background:var(--card); font-size:14px; }
.d2-limits > summary { cursor:pointer; list-style:none; font-weight:650; display:flex; align-items:center; gap:8px; }
.d2-limits > summary::-webkit-details-marker { display:none; }
.d2-limits > summary::before { content:"+"; font:500 13px/1 var(--font-mono); width:14px; height:14px; display:inline-flex; align-items:center; justify-content:center; border:1px solid var(--line2); border-radius:3px; }
.d2-limits[open] > summary::before { content:"−"; }
.d2-limits > summary span { font:500 11px/1 var(--font-mono); color:var(--dim); border:1px solid var(--line2); border-radius:10px; padding:3px 7px; }
.d2-limits .d2-gap:last-child { border-bottom:0; padding-bottom:2px; }
.d2-limits.demo { background:var(--warn-wash); border-color:var(--warn-line); }
.d2-limits.demo p { margin:4px 0; }
.d2-limits.demo .d2-btn { margin-right:10px; }
.d2-nums { margin:4px 0; padding-left:18px; font-family:var(--font-mono); font-size:12.5px; }
.d2-nums li { margin:2px 0; }
/* inside a bubble an answer is prose: the formatter's finding cards lose
   their tag and their side rule, the headline runs into its sentence */
:root[data-design="v2"] .d2-bub .ai-finding-card { border:0; padding:0; margin:6px 0; background:none; }
:root[data-design="v2"] .d2-bub .ai-badge-pill { display:none; }
:root[data-design="v2"] .d2-bub .ai-card-head { display:inline; margin:0; }
:root[data-design="v2"] .d2-bub .ai-card-title { display:inline; font-size:inherit; }
:root[data-design="v2"] .d2-bub .ai-card-body { display:block; margin-top:2px; }
:root[data-design="v2"] .d2-bub .ai-card-actions { display:flex; padding-top:6px; }
.d2-limits > summary::after { content:"— and how to fix it"; font-weight:400; color:var(--dim); }
.d2-mapgap { margin:8px 0 0; padding:8px 10px; border-left:2px solid var(--warn-line); background:var(--warn-wash); font-size:13px; color:var(--ink2); }
.d2-mapgap b { color:var(--ink); font-weight:600; }
/* on a phone the mark stacks above the name: a typeset wordmark would only
   repeat it, so the slot keeps real logos and drops the wordmarks */
@media (max-width:899px) { .d2-src-mark:has(.d2-mark.word) { display:none; } }

/* ── the business in a line ─────────────────────────────────────────── */
/* one month for the whole row, named once; values full ink, labels ink2 —
   contrast on white: ink 19.4:1, ink2 12.7:1, good 5.3:1, crit 5.6:1 */
.d2-pulse { margin:4px 0 26px; padding:12px 0 6px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.d2-rd + .d2-pulse { margin-top:-20px; border-top:0; }
.d2-pulse-top { display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:6px 16px; margin:0 0 10px; }
.d2-pulse-h { margin:0; font-size:var(--t-sm); line-height:1.4; color:var(--ink2); }
.d2-pulse-h b { font-size:var(--t-md); font-weight:650; color:var(--ink); }
.d2-pulse-h b.d2-than { font-weight:500; }
/* the period chooser: plain selects in the button's frame, so it reads as
   a control and not as a pill */
.d2-period { display:flex; flex-wrap:wrap; align-items:center; gap:6px 8px; margin:0; font-size:13px; color:var(--ink2); }
.d2-period label { display:inline-flex; align-items:center; gap:6px; }
.d2-period select { box-sizing:border-box; min-height:30px; max-width:100%; padding:0 26px 0 9px; border:1px solid var(--line2); border-radius:var(--r-btn);
  background:var(--paper) 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='%23444' stroke-width='1.4'/%3E%3C/svg%3E") no-repeat right 9px center;
  color:var(--ink); font:500 13px/1 var(--font-ui); cursor:pointer; -webkit-appearance:none; appearance:none; }
.d2-period select:hover { border-color:var(--ink); }
.d2-period select:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.d2-sofar-vs { font-weight:500; }
@media (max-width:899px) { .d2-period select { min-height:40px; } }
@media (max-width:520px) { .d2-period, .d2-period label { width:100%; } .d2-period label select { flex:1; min-width:0; } .d2-period > select { width:100%; } }
.d2-stats { display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); gap:14px 24px; margin:0 0 8px; }
.d2-stat { min-width:0; }
.d2-stat dt { font:600 var(--t-sm)/1.3 var(--font-ui); color:var(--ink2); }
.d2-stat dd { margin:3px 0 0; color:var(--ink); }
.d2-stat-v { display:block; font:700 var(--t-num)/1.1 var(--font-mono); letter-spacing:-.03em; font-variant-numeric:tabular-nums; color:var(--ink); }
.d2-stat-v a { color:var(--ink) !important; text-decoration:underline !important; text-decoration-color:var(--line2) !important; text-decoration-thickness:1px !important; text-underline-offset:5px; }
.d2-stat-v a:hover { text-decoration-color:var(--ink) !important; }
.d2-stat-p { display:block; margin-top:3px; font:500 var(--t-sm)/1.35 var(--font-ui); color:var(--ink2); }
.d2-stat-d { display:block; margin-top:3px; font:600 var(--t-sm)/1.3 var(--font-mono); font-variant-numeric:tabular-nums; color:var(--ink2); }
.d2-stat-d.up { color:var(--good); }
.d2-stat-d.down { color:var(--d2-down); font-weight:500; } /* a calm red: a fall is said, not shouted (4.8:1 on white) */
.d2-figkey { display:flex; flex-wrap:wrap; gap:4px 18px; margin:10px 0 0; }
.d2-figkey .d2-stat-d { display:inline; margin:0; font-weight:500; font-size:var(--t-xs); }
.d2-stat-d i { font-style:normal; font-size:.85em; margin-right:3px; }
.d2-sofar { display:flex; flex-wrap:wrap; align-items:baseline; gap:2px 10px; margin:0 0 4px; padding:9px 0 2px; border-top:1px solid var(--line); font-size:var(--t-sm); color:var(--ink2); }
.d2-sofar-l { font-weight:600; }
.d2-sofar b { font:700 var(--t-lg)/1.2 var(--font-mono); font-variant-numeric:tabular-nums; color:var(--ink); }
.d2-sofar .d2-stat-d { display:inline; margin:0; }
/* The value takes its change's colour: green better, calm red worse, ink
   about the same. Up is better for every figure in the row. On white:
   --good 5.3:1, --d2-down 4.8:1, --ink 19.4:1 (AA at any size). */
.d2-stat.up .d2-stat-v, .d2-stat.up .d2-stat-v a, .d2-sofar.up b { color:var(--good) !important; }
.d2-stat.down .d2-stat-v, .d2-stat.down .d2-stat-v a, .d2-sofar.down b { color:var(--d2-down) !important; }
/* money at stake is a loss: the calm red, not black */
.d2-big.d2-loss { color:var(--d2-down); }
@media (max-width:899px) { .d2-stats { grid-template-columns:repeat(2, minmax(0,1fr)); } }
.d2-mapnote { margin:6px 0 0; font-size:12.5px; color:var(--dim); }


/* ── the data ladder (Today strip, Sources block) ───────────────────── */
.d2-rd { border-top:1px solid var(--line); border-bottom:1px solid var(--line); margin:0 0 20px; }
.d2-rd-sum { display:flex; flex-wrap:wrap; align-items:center; gap:6px 16px; padding:10px 0; font-size:13.5px; }
summary.d2-rd-sum { list-style:none; cursor:pointer; }
summary.d2-rd-sum::-webkit-details-marker { display:none; }
summary.d2-rd-sum:hover .d2-rd-open { text-decoration-color:var(--accent-ink); }
.d2-rd-open { margin-left:auto; color:var(--accent-ink); text-decoration:underline; text-decoration-color:var(--accent-line); text-underline-offset:3px; white-space:nowrap; }
.d2-rd-open::after { content:" ▾"; font-size:11px; }
.d2-rd[open] .d2-rd-open::after { content:" ▴"; }
.d2-rd-hide, .d2-rd[open] .d2-rd-show { display:none; }
.d2-rd[open] .d2-rd-hide { display:inline; }
.d2-rd-t { display:inline-flex; align-items:baseline; gap:8px; }
.d2-rd-t b { font-weight:650; }
.d2-rd-n { font-family:var(--font-mono); color:var(--ink2); }
.d2-rd-demo { font-size:12px; background:var(--warn-wash); color:var(--warn); padding:0 6px; border-radius:3px; }
.d2-rd-bar { display:inline-grid; grid-auto-flow:column; grid-auto-columns:1fr; gap:3px; flex:1 1 180px; max-width:360px; min-width:140px; }
.d2-rd-seg { display:block; height:6px; background:var(--line); border-radius:1px; overflow:hidden; box-sizing:border-box; }
.d2-rd-seg b { display:block; height:100%; background:var(--accent); }
.d2-rd-seg.done b { background:var(--ink); }
.d2-rd-seg.off { background:transparent; border:1px dashed var(--dim); }
.d2-rd-key { display:inline-flex; gap:10px; font:500 11.5px/1 var(--font-mono); color:var(--dim); white-space:nowrap; }
.d2-rd-key > span { display:inline-flex; align-items:center; gap:4px; }
.d2-rd-key .d2-rd-seg { width:14px; }
.d2-rd-next { color:var(--ink); }
.d2-rd.open .d2-rd-next, summary .d2-rd-next { font-weight:500; }
.d2-rd-note { margin:0 0 6px; font-size:13px; color:var(--ink2); }
.d2-rd-steps { list-style:none; margin:0; padding:0 0 4px; display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:0 28px; }
.d2-rd-step { display:grid; grid-template-columns:14px 1fr; gap:10px; padding:10px 0; border-top:1px solid var(--line); min-width:0; }
.d2-rd-mark { width:10px; height:10px; margin-top:5px; border:1.5px solid var(--ink); box-sizing:border-box; }
.d2-rd-step.done .d2-rd-mark { background:var(--ink); }
.d2-rd-step.part .d2-rd-mark { background:linear-gradient(90deg,var(--accent) 50%,transparent 50%); border-color:var(--accent); }
.d2-rd-step.off .d2-rd-mark { border-style:dashed; border-color:var(--dim); }
.d2-rd-body { min-width:0; }
.d2-rd-body p { margin:0; }
.d2-rd-h { display:flex; justify-content:space-between; gap:8px; }
.d2-rd-h b { font-weight:650; }
.d2-rd-w { font:500 12.5px/1.6 var(--font-mono); color:var(--dim); white-space:nowrap; }
.d2-rd-step.done .d2-rd-w { color:var(--ink); }
.d2-rd-step.part .d2-rd-w { color:var(--accent-ink); }
.d2-rd-have { font-size:13.5px; color:var(--ink); }
.d2-rd-opens { font-size:13.5px; color:var(--ink2); }
.d2-rd-fix { font-size:13.5px; color:var(--ink); margin-top:2px !important; }
.d2-rd-step .d2-x { margin-top:2px; }
.d2-rd-cheer { color:var(--good); font-weight:500; margin-right:6px; }
