/* v102 (3 Oct 2026) — Ask v-next (_research/2026-10-ask-ai/01-study.md): the one answer anatomy (ui/answer.js), the follow-up pill, the ⌘J side
   panel, Discuss beside the editor without squeezing it, and the 390 px basics. Tokens only — the light and dark values come from v103-tokens.css. */

/* ---------- the answer: verdict line → claims with numbered sources → one artifact → Can't tell → one next action → sources ---------- */
.an{display:flex;flex-direction:column;gap:10px;min-width:0}
.an-lead{margin:0;font-size:var(--t-read);line-height:var(--lh-read);color:var(--fg);text-wrap:pretty}
.an-lead b{font-weight:var(--w-semibold)}
.an-claims{display:flex;flex-direction:column;gap:8px;font-size:var(--t-read);line-height:var(--lh-read);color:var(--fg)}
.an-claims p{margin:0}
.an-claims h4{margin:4px 0 -2px;font-size:var(--t-hl);line-height:var(--lh-hl);font-weight:var(--w-semibold);color:var(--fg)}
.an-claims ul,.an-claims ol{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px}
.an-claims ul{list-style:disc}.an-claims ol{list-style:decimal}
.an-claims li::marker{color:var(--fg-4)}
.an a.num{color:var(--link);font-weight:var(--w-medium);font-variant-numeric:tabular-nums;text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--link) 35%,transparent);text-underline-offset:3px}
.an b.num{font-variant-numeric:tabular-nums}
/* a numbered evidence chip — a real link to the record it comes from */
.an-ns{display:inline-flex;gap:3px;margin-left:5px;vertical-align:1px}
.an-n{display:inline-grid;place-items:center;min-width:17px;height:17px;padding:0 4px;border-radius:var(--r-full);background:var(--bg-4);font-size:11px;line-height:1;font-weight:var(--w-semibold);color:var(--fg-2);font-variant-numeric:tabular-nums;text-decoration:none;border:0;cursor:pointer}
.an-n:focus-visible{background:var(--accent-t);color:var(--accent)}@media (hover:hover){.an-n:hover{background:var(--accent-t);color:var(--accent)}}
/* the popover's parts (ui/why.js whyModel): the amount, then the sentence */
.an-pr{display:grid;grid-template-columns:minmax(52px,max-content) minmax(0,1fr);gap:10px;font-size:var(--t-body);line-height:var(--lh-body)}
.an-amt{font-weight:var(--w-semibold);font-variant-numeric:tabular-nums;color:var(--fg);white-space:nowrap}
.an-pr.is-rest .an-amt{color:var(--fg-3)}
.an-tag{margin-left:6px;font-size:var(--t-sh);color:var(--fg-3)}
/* one artifact */
.an-art{margin:2px 0 0;padding:12px 14px;border-radius:var(--r-12);background:var(--bg);border:1px solid var(--bd-tl);box-shadow:var(--sh-tiny);display:flex;flex-direction:column;gap:10px;min-width:0}
.an-art figcaption{display:flex;align-items:center;gap:7px;font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-2)}
.an-art figcaption svg{color:var(--fg-3);flex:none}
.an-chart{padding:0;background:none;border:0;box-shadow:none}
.an-tw{overflow-x:auto;margin:0 -2px}
.an-tbl table{width:100%;border-collapse:collapse;font-size:var(--t-body);line-height:var(--lh-body)}
.an-tbl th{text-align:left;font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-3);padding:0 10px 6px 0;border-bottom:1px solid var(--ln-2);white-space:nowrap}
.an-tbl td{padding:7px 10px 7px 0;border-bottom:1px solid var(--ln-2);vertical-align:top;color:var(--fg)}
.an-tbl tr:last-child td{border-bottom:0}
.an-tbl .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.an-tbl td.is-bad .an-ct{color:var(--c-red)}
.an-tbl td.is-good .an-ct{color:var(--c-green)}
.an-cl{display:flex;flex-direction:column;color:inherit;text-decoration:none}
@media (hover:hover){.an-cl:hover .an-ct{color:var(--link);text-decoration:underline;text-underline-offset:3px}}
.an-cs{font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3)}
.an-note{margin:0;font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3);display:inline-flex;align-items:center;gap:5px}
.an-more{align-self:flex-start;display:inline-flex;align-items:center;gap:5px;font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--link)}
@media (hover:hover){.an-more:hover{text-decoration:underline;text-underline-offset:3px}}
.an-bl{display:flex;flex-direction:column;gap:7px}
.an-br{display:grid;grid-template-columns:minmax(64px,max-content) minmax(0,1fr) max-content minmax(44px,max-content);gap:10px;align-items:center;font-size:var(--t-body);line-height:var(--lh-body)}
.an-bk{color:var(--fg-2)}
.an-bt{height:10px;border-radius:var(--r-full);background:var(--bg-3);overflow:hidden}
.an-bf{display:block;height:100%;border-radius:inherit;background:var(--c1,var(--accent))}
.an-bv{font-weight:var(--w-medium);font-variant-numeric:tabular-nums;color:var(--fg)}
.an-bd{font-size:var(--t-sh);color:var(--fg-3);font-variant-numeric:tabular-nums;text-align:right}
.an-dt{margin:0;padding:10px 12px;border-inline-start:3px solid var(--accent);border-radius:var(--r-8);background:var(--bg-2);font-size:var(--t-body);line-height:var(--lh-read);color:var(--fg);white-space:pre-wrap}
.an-facts{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.an-facts .chip{max-width:320px}
.an-fk{font-size:var(--t-sh);color:var(--fg-3);margin-right:2px}
.an-db{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.an-dl{margin:0;display:grid;grid-template-columns:max-content minmax(0,1fr);gap:4px 14px;font-size:var(--t-body);line-height:var(--lh-body)}
.an-dl dt{color:var(--fg-3)}.an-dl dd{margin:0;color:var(--fg)}
.an-ds{font-size:var(--t-body);line-height:var(--lh-body)}
.an-ds ul{margin:4px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:3px;color:var(--fg-2);font-size:var(--t-co);line-height:var(--lh-co)}
.an-cant{padding:8px 12px;border-radius:var(--r-8);background:var(--bg-3);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.an-cant b{color:var(--fg);font-weight:var(--w-semibold)}
.an-would{color:var(--fg-3)}
.an-next{display:flex}
.an-src{font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3)}
.an-src summary{display:inline-flex;align-items:center;gap:6px;cursor:pointer;list-style:none;padding:2px 0;color:var(--fg-3);font-weight:var(--w-medium)}
.an-src summary::-webkit-details-marker{display:none}
@media (hover:hover){.an-src summary:hover{color:var(--fg)}}
.an-src ol{margin:6px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:4px}
.an-src li{display:grid;grid-template-columns:20px max-content minmax(0,1fr);gap:8px;align-items:baseline}
.an-src li a,.an-src li .lk{color:var(--fg-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}
@media (hover:hover){.an-src li a:hover{color:var(--link)}}
.an-sn{display:inline-grid;place-items:center;min-width:17px;height:17px;border-radius:var(--r-full);background:var(--bg-4);font-size:11px;font-weight:var(--w-semibold);color:var(--fg-2)}
.an-sk{color:var(--fg-3)}
.an.is-compact{gap:8px}
.an.is-compact .an-lead,.an.is-compact .an-claims{font-size:var(--t-body);line-height:var(--lh-body)}
.an-ask{display:inline-flex;align-items:center;gap:6px;font-size:var(--t-sh);font-weight:var(--w-medium);color:var(--link)}
/* the data an answer read, in one line under it */
.ai-data{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3)}
.ai-data .bad{color:var(--warn-ink)}
/* the Ask builder's blocks (7 Oct): the three-part why, the stamp of the data an answer read, quoted content (a neutral edge — content, not Dottpace's words) */
.ai-three dd>div+div{margin-top:4px}
.ai-stamp svg{flex:none}
.ai-quotes .an-dt{border-inline-start-color:var(--ln)}

/* ---------- a follow-up keeps its subject — said, with ✕, never a silent re-scope (P1-4) ---------- */
.ask-follow{max-width:760px;width:100%;margin:0 auto 8px;display:flex;align-items:center;gap:6px;font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3)}
.ask-follow .chip{max-width:min(520px,70vw)}
.ai-new{font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3)}

/* ---------- ⌘J: Ask beside the page (P2-5) ---------- */
.ap{position:fixed;top:calc(var(--top-h,52px) + 8px);right:12px;bottom:12px;width:420px;max-width:calc(100vw - 24px);z-index:615;display:flex;flex-direction:column;border-radius:var(--r-card);background:var(--elev,var(--bg));border:1px solid var(--bd);box-shadow:var(--sh-high);overflow:hidden}
.ap-hd{display:flex;align-items:center;gap:8px;height:48px;padding:0 8px 0 14px;border-bottom:1px solid var(--ln-2);flex:none}
.ap-hd b{font-size:var(--t-hl);line-height:var(--lh-hl);font-weight:var(--w-semibold);white-space:nowrap}
.ap-hd .grow{flex:1}
.ap-sub{display:flex;align-items:center;gap:6px;padding:8px 14px;border-bottom:1px solid var(--ln-2);font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3);flex:none;min-width:0}
.ap-sub .chip{max-width:300px}
.ap-bd{flex:1;min-height:0;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:16px}
.ap-me{align-self:flex-end;max-width:86%;padding:8px 12px;border-radius:var(--r-12);background:var(--bg-3);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg);white-space:pre-wrap;overflow-wrap:anywhere}
.ap-ai{display:flex;flex-direction:column;gap:8px;min-width:0}
.ap-ai .an-lead,.ap-ai .an-claims{font-size:var(--t-body);line-height:var(--lh-body)}
.ap-do{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ap-intro{display:flex;flex-direction:column;gap:10px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.ap-intro .sug-chip{align-self:flex-start;height:auto;min-height:30px;padding:5px 12px;text-align:left;white-space:normal}
.ap-comp{flex:none;padding:10px;border-top:1px solid var(--ln-2);display:flex;align-items:flex-end;gap:8px}
.ap-comp textarea{flex:1;min-width:0;border:1px solid var(--bd);border-radius:var(--r-12);background:var(--bg);resize:none;outline:none;padding:8px 12px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg);min-height:38px;max-height:140px}
.ap-comp textarea:focus{border-color:var(--bd-3)}
/* Ask round 3 (a11y A2): in the ⌘J panel the ring sits on the question box itself — the form's own ring ran the panel's full width (v103-a11y.css) */
.ap .ap-comp:focus-within{outline:none}
.ap .ap-comp textarea:focus{border-color:var(--ring);outline:2px solid var(--ring);outline-offset:1px}
.ap-note{flex:none;padding:0 14px 10px;font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3)}

/* ---------- Discuss beside the editor never squeezes it (P1-8): wide screens keep the text column and fold the Guide into its bar beside the
   panel; at 1280 px and under the panel floats over the page ---------- */
@media (min-width:1181px){
  .edp.cs .dp-grid.has-dz{grid-template-columns:minmax(0,1fr);padding-right:452px}
  .edp.cs .dp-grid.has-dz .dp-main{padding-bottom:64px}
  .edp.cs .dp-grid.has-dz .dp-side{display:flex;position:fixed;top:auto;left:auto;right:472px;bottom:16px;z-index:40;width:min(420px,calc(100vw - 760px));max-height:none;overflow:visible;gap:10px}
  .edp.cs .dp-grid.has-dz .dp-side:not(.is-open) > :not(.cs-head){display:none}
  .edp.cs .dp-grid.has-dz .dp-side:not(.is-open) > .cs-head{height:48px;padding:0 8px 0 16px;justify-content:center;border-radius:var(--r-12);box-shadow:var(--sh-med)}
  .edp.cs .dp-grid.has-dz .dp-side:not(.is-open) > .cs-head > :not(.cs-top){display:none}
  .edp.cs .dp-grid.has-dz .dp-side.is-open{max-height:min(72vh,700px);overflow-y:auto;overflow-x:hidden;padding:10px;border-radius:var(--r-card);background:var(--canvas);box-shadow:var(--sh-high)}
  .edp.cs .dp-grid.has-dz .cs-sheet{display:inline-flex}
}
@media (min-width:1181px) and (max-width:1280px){
  .edp.cs .dp-grid.has-dz{padding-right:0}
  .edp.cs .dp-grid.has-dz .dp-side{right:16px;bottom:16px;width:min(380px,calc(100vw - 500px))}
  .chat-panel.dz{width:400px}
}
.dz .an{gap:6px}
.dz .an-lead,.dz .an-claims{font-size:var(--t-body);line-height:var(--lh-body)}
.dz-out{display:flex;flex-direction:column;gap:6px}
.dz-ask{align-self:flex-start}

/* ---------- 390 px (P1-9): one-line crumbs, three chart dates, chips that wrap rather than cut, the list buttons in the flow ---------- */
@media (max-width:600px){
  .topbar .crumbs{flex-wrap:nowrap;overflow:hidden;white-space:nowrap;min-width:0}
  .topbar .crumbs>*{white-space:nowrap;flex:none}
  .topbar .crumbs>:last-child{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;margin-right:0}
  .ai-chart .chart-x span:not(.first):not(.last){display:none}
  .ai-chart .chart-x span:not(.first):not(.last):nth-child(4){display:block}
  .ac-row{flex-wrap:wrap;overflow:visible;row-gap:6px}   /* round 1: the chips wrap — a long subject keeps the first line (cut with an ellipsis), the market, the period and Send go under it; sideways scrolling hid the market under Send */
  .ac-row .ac-chip{max-width:none;flex:0 1 auto}
  .ac-row .ac-chip span{overflow:visible;text-overflow:clip}
  .am-thread{padding:14px 14px 22px}
  .am-comp{padding:0 12px 10px}
  .ask .am-float{position:static;margin:8px 12px 0;align-self:flex-start}
  .ask-open{padding-top:12px}
  .sug-grid{grid-template-columns:minmax(0,1fr)}
  .ai-refs{grid-template-columns:minmax(0,1fr)}
  .an-br{grid-template-columns:minmax(52px,max-content) minmax(0,1fr) max-content}
  .an-bd{display:none}
  .ap{top:auto;left:8px;right:8px;bottom:8px;width:auto;height:min(78vh,640px)}
  .ask-follow .chip{max-width:70vw}
}

/* ---------- the job sheet (Repeat this question) ---------- */
.aj-dl{margin:0;display:grid;grid-template-columns:max-content minmax(0,1fr);gap:8px 16px;font-size:var(--t-body);line-height:var(--lh-body)}
.aj-dl dt{color:var(--fg-3)}
.aj-dl dd{margin:0;color:var(--fg)}

/* ---------- the Dashboard's "Why did this move?" popover in the one anatomy (ui/why.js whyPop) ---------- */
.wy-an{gap:8px}
.wy-an .an-lead,.wy-an .an-claims,.wy-an .an-pr{font-size:var(--t-body);line-height:var(--lh-body)}
.wy-an .an-claims{gap:6px}
.wy-an .an-pr.is-rules{color:var(--fg-3)}
.ai-plain-t{display:flex;flex-direction:column;gap:6px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.ai-plain-t p{margin:0}
.ai-plain-t ul,.ai-plain-t ol{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:4px}
.ai-plain-t ul{list-style:disc}.ai-plain-t ol{list-style:decimal}
.ai-chart figcaption b,.ai-chart figcaption .lbl{white-space:nowrap;flex:none}
/* C1: Send waits for a question — dimmed and still while the box is empty (aria-disabled keeps it focusable, its title says why) */
.cp-send[aria-disabled="true"]{opacity:.4;cursor:default}
@media (hover:hover){.cp-send[aria-disabled="true"]:hover{background:var(--inv)}}

/* ---------- P5v2 (Oct 8): what the verifiers saw ---------- */
/* "Answered … · newer data exists": the clock icon beside the first line, never alone on a line above it; "Ask again" under the words on a phone */
.ai-body .ai-old{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start}
.ai-body .ai-old > svg{margin-top:2px}
/* ⌘J beside the page: on a wide screen the page makes room for the panel instead of sliding under it (text was cut at its edge) */
@media (min-width:1280px){
  body:has(aside.ap) #scroll{padding-right:432px}
}
@media (max-width:600px){
  .ai-body .ai-old .lk{grid-column:2;justify-self:start;margin-left:0}
  /* the composer's subject, market and period chips sit on one row that scrolls sideways (they took about 300px of the screen) */
  .ac-row > :not(.grow){flex:none}
  .ac-row > .cp-send{position:static;flex:none;margin-left:auto}   /* round 1: Send at the row's end — nothing scrolls under it any more */
  #m-scope .mb-p,#m-ask-range .mb-l{display:none}   /* on a phone the chips say less ("Everything", the calendar) so the row fits; their names stay in aria-label */
  /* ⌘J on a phone: a full-width bottom sheet, the page dimmed behind it — no ragged gutters, nothing of the page around its edges */
  aside.ap{left:0;right:0;bottom:0;width:auto;max-width:none;height:min(82vh,680px);border-radius:var(--r-card) var(--r-card) 0 0;border-bottom:0;box-shadow:0 0 0 100vmax var(--scrim)}
}

/* ---------- P6 (Oct 8): one meta line (G12), the split's records and cause word (G11 · G14), a finding from a chat (G1) ---------- */
/* the subject, the market, the period and the data day on ONE line — each said once; the dots are drawn, not typed */
.ai-meta{gap:4px 8px}
.ai-meta-t{color:var(--fg-3);white-space:nowrap}
.ai-meta-t + .ai-meta-t::before,.ai-meta .chip + .ai-meta-t::before{content:"·";margin-right:8px;color:var(--fg-4)}
.ai-meta-tag{display:inline-flex;align-items:center;gap:2px}
.ai-meta .ai-ri{width:22px;height:22px}
.ai-meta-old{color:var(--fg-2)}
.ai-meta .lk{font-size:var(--t-sh)}
/* a row's cause word, once, as a chip; its records' numbers; "Look into this" closes the sized Not explained row */
.ai-three .ai-cw{vertical-align:1px}
.ai-three .an-ns{margin-left:6px}
.ai-three .ai-look{display:flex;width:max-content;margin:4px 0 0 -8px;min-height:28px}
/* the receipt under an answer once a finding is made from it */
.ai-made{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0;font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-2)}
.ai-made svg{flex:none;color:var(--pos)}
.ai-made a{color:var(--link);font-weight:var(--w-medium)}
.af-q{max-height:120px;overflow:auto;border-inline-start-color:var(--ln)}   /* the chat's claim is content to check — a neutral edge, as quotes are */
.af-title{resize:none;field-sizing:content;min-height:40px;padding-top:9px;padding-bottom:9px;line-height:var(--lh-body)}   /* the whole title shows, on a phone too */
/* in the 420 px ⌘J panel the split's rows stack too — a label column there left 2–4 words a line */
.ap .ai-three .an-dl{grid-template-columns:minmax(0,1fr);row-gap:2px}
.ap .ai-three .an-dl dt{margin-top:8px;font-size:var(--t-co);line-height:var(--lh-co)}
.ap .ai-three .an-dl dt:first-child{margin-top:0}
/* B6: on a phone the split's rows stack — the label a caption above its rows, never a narrow column that wraps 2–4 words a line */
@media (max-width:600px){
  .ai-three .an-dl{grid-template-columns:minmax(0,1fr);row-gap:2px}
  .ai-three .an-dl dt{margin-top:8px;font-size:var(--t-co);line-height:var(--lh-co)}
  .ai-three .an-dl dt:first-child{margin-top:0}
  .ai-meta-t{white-space:normal}
  .ai-meta .chip + .ai-meta-t::before{content:none}   /* the period starts its own line under the chips — never a stray dot at a line's start */
}

/* ---------- round 1 (Oct 8): phone fixes ---------- */
/* the period chip's short value ("28d") — shown on a phone, where the chip's full words are hidden */
.ac-short{display:none}
/* under a whole-site chart: the finding's own number, on its own pages */
.ai-chart-n{margin:6px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.ai-chart-n b{color:var(--fg-2);font-weight:var(--w-medium)}
.ai-chart-n a{color:var(--link);font-weight:var(--w-medium)}
/* the conversations on a phone (under 768px): a drawer over the thread with a scrim — the thread keeps its width */
@media (max-width:767px){
  .ask-list.is-drawer{position:fixed;left:0;top:var(--top-h,56px);bottom:0;z-index:600;width:min(320px,86vw);background:var(--elev,var(--bg));border-right:1px solid var(--bd);box-shadow:var(--sh-high)}
  .al-scrim{position:fixed;left:0;right:0;top:var(--top-h,56px);bottom:0;z-index:599;background:var(--scrim)}
}
@media (max-width:600px){
  /* the composer: a long subject is cut with an ellipsis and keeps the row's first line; the market, the period and Send wrap under it — nothing under Send */
  .ac-row > #m-scope{flex:0 1 auto;min-width:0;max-width:calc(100% - 34px)}
  #m-scope .mb-l{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  #m-ask-range .ac-short{display:inline}
  /* the failed answer: the button under its words, not beside them */
  .ai-fail{flex-wrap:wrap;align-items:flex-start}
  .ai-fail > div{flex:1 1 calc(100% - 44px);min-width:0}
  .ai-fail .btn{margin-left:44px}
  /* the preview banner: the icon beside the words, the link under them on the same left edge */
  .am-thread > .preview-line{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;column-gap:8px;row-gap:4px}
  .am-thread > .preview-line svg{margin-top:4px}
  .am-thread > .preview-line a{grid-column:2;margin-left:0;justify-self:start}
  /* the answer's meta line: a separator that would start a line is clipped off with it — never a "·" at a line's start */
  .ai-meta{overflow:clip;overflow-clip-margin:4px;column-gap:14px}   /* 4px: a focus ring inside still shows; the dot sits in the 14px gap */
  .ai-meta .ai-meta-t + .ai-meta-t::before{display:inline-block;width:10px;margin-left:-12px;margin-right:2px;text-align:center}
}
