/* Dottpace · Linear structure in Apple HIG colours. Every token (:root value) lives in v103-tokens.css, linked first. */
/* Apple accessibility appearances */
@media (prefers-reduced-transparency:reduce){.sb,.topbar,.chat-panel,.notif-pop{backdrop-filter:none;-webkit-backdrop-filter:none}}

/* ---------- base ---------- */
*,*::before,*::after{box-sizing:border-box}
html,body{height:100%}
html{-webkit-text-size-adjust:100%;color-scheme:light}
body{margin:0;font-family:var(--font);font-feature-settings:var(--fs);font-size:var(--t-body);color:var(--fg);background:var(--canvas);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;line-height:var(--lh-body);container-name:dp-app;transition:--age-sheet var(--dur-3) step-end,--age-drawer var(--dur-3) step-end,--tab-pl var(--dur-2) step-end,--tab-st var(--dur-2) step-end,--tab-vw var(--dur-2) step-end}   /* motion's memory: which sheet just opened, which tab was current (v110-motion.css §4–5) */
.ar,[lang=ar]{font-family:var(--font-ar)}
h1,h2,h3,h4,p,figure,dl,dd,ol,ul{margin:0}
b,strong{font-weight:var(--w-semibold)}
ol,ul{padding:0;list-style:none}
a{color:inherit;text-decoration:none}
button{font:inherit;font-feature-settings:inherit;letter-spacing:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;text-align:inherit}
input,select,textarea{font:inherit;color:inherit;letter-spacing:inherit}
img,svg{display:block;max-width:100%}
svg{flex:none}
:focus{outline:none}
:focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:var(--r-6)}
::selection{background:var(--sel)}
*{scrollbar-width:thin;scrollbar-color:var(--scroll) transparent}
::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:var(--scroll);border-radius:var(--r-full)}@media (hover:hover){::-webkit-scrollbar-thumb:hover{background:var(--scroll-h)}}::-webkit-scrollbar-track{background:transparent}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}   /* v103 (AX11, audit S12): a loop runs once */
.num,.tab,.c-v,.mini .mv,.i-c,.dp,.nav-i .ct,.chart-y,.chart-x,.tip-r b,.gr,.vd-cmp,.ip-meta,.c-sub,.i-d,.tl-row .tm,.np-row .tm,.cp-mh .tm{font-variant-numeric:tabular-nums}
.pos{color:var(--pos)}.neg{color:var(--neg)}.warn{color:var(--warn)}
.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.grow{flex:1;min-width:0}

/* ---------- app frame ---------- */
.app{display:grid;grid-template-columns:var(--sb-w) minmax(0,1fr);transition:grid-template-columns var(--dur-3) var(--ease-out);height:100vh;height:100dvh;overflow:hidden;background:var(--canvas)}
.app-full{min-height:100vh}
.main{display:flex;flex-direction:column;min-height:0;min-width:0;background:var(--canvas)}
.scroll{position:relative;flex:1;overflow-y:auto;overflow-x:hidden;min-height:0;container:pg / inline-size;scroll-padding-top:calc(var(--top-h) + 12px);scroll-padding-bottom:24px}   /* night fix (Oct 8, UX6-14): an absolute .sr-only inside stays in the scroll area — it never stretches the page so the frame shifts */

/* ---------- sidebar ---------- */
.sb{background:var(--glass);backdrop-filter:var(--glass-fx);-webkit-backdrop-filter:var(--glass-fx);border-right:1px solid var(--bd);display:flex;flex-direction:column;min-height:0;padding:8px 8px 8px}
.sb-top{display:flex;align-items:center;gap:2px;height:44px;padding:0;margin-bottom:8px}
.sb-toggle{margin-left:auto}
.sb-logo{width:32px;height:32px;border-radius:var(--r-8);display:grid;place-items:center;color:var(--on-fill);font-size:var(--t-hl);font-weight:var(--w-bold);margin:0 auto 10px;line-height:var(--lh-hl)}
.sb-ws{display:flex;align-items:center;gap:8px;height:32px;padding:0 6px 0 4px;border-radius:var(--r-8);min-width:0;flex:1;color:var(--fg);font-weight:var(--w-semibold);font-size:var(--t-hl);transition:var(--tr-ui);line-height:var(--lh-hl)}
@media (hover:hover){.sb-ws:hover{background:var(--hover)}}
.sb-ws .logo{width:22px;height:22px;border-radius:var(--r-6);display:grid;place-items:center;color:var(--on-fill);font-size:var(--t-sh);font-weight:var(--w-bold);flex:none;line-height:var(--lh-sh)}
.sb-ws .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sb-ws svg{color:var(--fg-4);flex:none}
.sb-ws .cv{display:grid;transform:rotate(90deg)}
.ib{width:32px;height:32px;border-radius:var(--r-8);display:grid;place-items:center;color:var(--fg-3);flex:none;transition:var(--tr-ui)}
@media (hover:hover){.ib:hover{background:var(--hover);color:var(--fg)}}
.sb-search{display:flex;align-items:center;gap:8px;height:31px;padding:0 10px;margin:0 0 10px;border-radius:var(--r-full);font-size:var(--t-body);width:100%;transition:var(--tr-ui);line-height:var(--lh-body);color:var(--fg-3);background:color-mix(in srgb,var(--elev) 45%,transparent);border:1px solid var(--bd);box-shadow:none}
@media (hover:hover){.sb-search:hover{border-color:var(--bd-3);color:var(--fg-3)}}
.sb-search svg{color:var(--fg-4)}
.sb-search .kbd{margin-left:auto;font-size:var(--t-sh);border:1px solid var(--bd);border-radius:var(--r-4);padding:0 5px;background:transparent;line-height:var(--lh-sh);height:16px;display:inline-flex;align-items:center;color:var(--fg-3)}
.sb-nav{flex:0 1 auto;overflow-y:auto;min-height:0;display:flex;flex-direction:column;gap:3px;padding-bottom:8px}
.nav-i{display:flex;align-items:center;gap:9px;height:32px;padding:0 9px;border-radius:var(--r-8);color:var(--fg-2);font-weight:var(--w-medium);font-size:var(--t-body);width:100%;transition:var(--tr-ui);position:relative;line-height:var(--lh-body);flex:none}
.nav-i svg{color:var(--fg-3);flex:none}
@media (hover:hover){.nav-i:hover{background:var(--hover);color:var(--fg)}}
/* D14 (7 Oct): selected = the selected fill, full ink AND an edge mark — never the hover tint alone */
.nav-i.is-on{background:var(--selected);color:var(--fg)}
.nav-i.is-on::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 2px 2px 0;background:var(--text-1)}
.nav-i.is-on svg{color:var(--fg)}
.nav-i .lb{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.nav-i .ct{margin-left:auto;font-size:var(--t-meta);font-variant-numeric:tabular-nums;font-weight:var(--w-regular);line-height:var(--lh-sh);color:var(--fg-3)}
.nav-i .ct.hot{font-weight:var(--w-medium);color:var(--fg-2)}
.nav-i.is-kid{padding-left:34px;font-weight:var(--w-regular);color:var(--fg-3);height:28px;font-size:var(--t-body);line-height:var(--lh-body)}
.nav-i.is-kid.is-on{color:var(--fg)}@media (hover:hover){.nav-i.is-kid:hover{color:var(--fg)}}
.nav-i .cv{margin-left:auto;color:var(--fg-4);transition:transform var(--dur-1) var(--ease-out)}
.nav-i.is-open .cv{transform:rotate(90deg)}
.nav-grp{display:flex;align-items:center;gap:6px;height:26px;padding:0 9px;margin-top:16px;border-radius:var(--r-8);color:var(--fg-3);font-size:var(--t-sh);font-weight:var(--w-medium);width:100%;line-height:var(--lh-sh)}
@media (hover:hover){.nav-grp:hover{color:var(--fg);background:var(--hover)}}
.nav-grp .cv{color:var(--fg-4);transition:transform var(--dur-1) var(--ease-out)}
.nav-grp.is-closed .cv{transform:rotate(-90deg)}
.nav-i.is-view svg{color:var(--fg-4)}
.sb-proj{margin-top:auto;padding-top:10px;border-top:1px solid var(--bd);display:flex;flex-direction:column;gap:2px}
.sb-proj .nav-i{height:32px;font-weight:var(--w-medium);color:var(--fg-2);font-size:var(--t-body);line-height:var(--lh-body)}
.sb-proj .nav-i svg{color:var(--fg-3)}
.sb-proj .nav-i.is-on{color:var(--fg)}@media (hover:hover){.sb-proj .nav-i:hover{color:var(--fg)}}
.sb-foot{margin-top:10px;border-top:1px solid var(--bd);padding-top:8px;display:flex;align-items:center;gap:6px}
.sb-user{display:flex;align-items:center;gap:9px;height:36px;padding:0 6px;border-radius:var(--r-8);flex:1;min-width:0;text-align:left}
@media (hover:hover){.sb-user:hover{background:var(--hover)}}
.sb-user .un{font-size:var(--t-body);font-weight:var(--w-medium);color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:var(--lh-body)}
.sb-user .ur{font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3)}
.av{display:inline-grid;place-items:center;border-radius:var(--r-full);color:var(--on-fill);font-weight:var(--w-semibold);flex:none;font-feature-settings:normal}

/* ---------- topbar ---------- */
.topbar{position:sticky;top:0;z-index:30;height:var(--top-h);display:flex;align-items:center;gap:8px;padding:0 24px 0 28px;border-bottom:1px solid var(--bd);flex:none;background:var(--glass);backdrop-filter:var(--glass-fx);-webkit-backdrop-filter:var(--glass-fx)}
.crumbs{display:flex;align-items:center;gap:8px;font-size:var(--t-body);color:var(--fg-3);min-width:0;line-height:var(--lh-body)}
.crumbs .sep{color:var(--fg-3)}
.crumbs .cur{color:var(--fg);font-weight:var(--w-semibold);font-size:var(--t-t3);line-height:var(--lh-t3);letter-spacing:var(--ls-t3)}
.tb-r{margin-left:auto;display:flex;align-items:center;gap:6px}
/* D10 (7 Oct): an action button is a rounded rectangle (8px) — 30px in a row or a card, 28 small, 34 in a page head (.pl-hd); icon 16 (14 small), gap 6.
   Secondary = a quiet fill and, in dark, the control edge; primary = the one blue per region; ghost = text until hovered. Hover never moves anything. */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--h-ctl);padding:0 12px;border-radius:var(--r-ctl);font-size:var(--t-body);font-weight:var(--w-medium);color:var(--fg);background:var(--bg-3);border:1px solid var(--btn-edge);white-space:nowrap;transition:var(--tr-ui);line-height:var(--lh-body)}
@media (hover:hover){.btn:hover{background:var(--bg-5)}.btn:not(.pri,.ghost,:disabled,[aria-disabled="true"]):hover{border-color:var(--line-ctl-h)}}   /* night fix (Oct 8, I1): the secondary button's hover shows its edge too — a fill step alone was invisible in light */
.btn:active{background:var(--selected)}
.btn svg{color:var(--fg-3);width:16px;height:16px}
.btn.pri{background:var(--brand);color:var(--brand-fg);border-color:transparent}
.btn.pri:active{background:var(--brand-h);border-color:var(--brand-h)}@media (hover:hover){.btn.pri:hover{background:var(--brand-h);border-color:var(--brand-h)}}   /* D02: white on #005fc7 = 5.9:1 */
.btn.pri svg{color:inherit}
/* night fix (Oct 8, UX6-05): a disabled control shows no hover and no press — each variant keeps its rest fill */
.btn:is(:disabled,[aria-disabled="true"]):is(:hover,:active){background:var(--bg-3);border-color:var(--btn-edge)}
.btn.pri:is(:disabled,[aria-disabled="true"]):is(:hover,:active){background:var(--brand);border-color:transparent}
.btn.ghost:is(:disabled,[aria-disabled="true"]):is(:hover,:active){background:transparent;border-color:transparent}
/* D10: ONE primary per region — in a list where every row offers the same decision, the first row (or the list's own "all" button) keeps the blue; the rest are secondary */
.la-queue .la-acts .btn.pri,.mn-gl > .mn-g ~ .mn-g .mn-g-b .btn.pri{background:var(--bg-3);color:var(--fg);border-color:var(--btn-edge)}
@media (hover:hover){.la-queue .la-acts .btn.pri:hover,.mn-gl > .mn-g ~ .mn-g .mn-g-b .btn.pri:hover{background:var(--bg-5);border-color:var(--btn-edge)}}
.la-queue .la-acts .btn.pri svg,.mn-gl > .mn-g ~ .mn-g .mn-g-b .btn.pri svg{color:var(--fg-3)}
.btn.ghost{background:transparent;border-color:transparent;box-shadow:none;color:var(--fg-2)}
@media (hover:hover){.btn.ghost:hover{background:var(--hover);color:var(--fg)}}
.btn.sm{height:var(--h-sm);padding:0 10px;font-size:var(--t-co);line-height:var(--lh-co)}
.btn.sm svg{width:14px;height:14px}
.btn.icon{width:var(--h-ctl);padding:0;justify-content:center}
.sel{position:relative}
.sel select{appearance:none;-webkit-appearance:none;height:var(--h-ctl);padding:0 24px 0 12px;border-radius:var(--r-ctl);font-size:var(--t-body);font-weight:var(--w-medium);color:var(--fg);background:var(--bg-3);border:1px solid transparent;cursor:pointer;line-height:var(--lh-body)}
@media (hover:hover){.sel select:hover{background:var(--bg-5)}}
.sel svg{position:absolute;right:7px;top:50%;transform:translateY(-50%);color:var(--fg-4);pointer-events:none}
.badge-dot{position:absolute;top:4px;right:5px;width:9px;height:9px;border-radius:50%;background:var(--c-red);border:2px solid var(--canvas)}
.tb-ic{position:relative;width:38px;height:38px;border-radius:var(--r-full);display:grid;place-items:center;color:var(--fg-2);background:var(--bg-4);flex:none;transition:var(--tr-ui)}
.tb-ic.is-on{background:var(--bg-3);color:var(--fg)}@media (hover:hover){.tb-ic:hover{background:var(--bg-3);color:var(--fg)}}
.tb-ic svg{width:19px;height:19px}
.tb-ic.sm{width:26px;height:26px;background:transparent;color:var(--fg-3)}
.tb-ic.sm svg{width:14px;height:14px}
@media (hover:hover){.tb-ic.sm:hover{background:var(--hover)}}
.topbar .tb-r{gap:10px}
.badge-n{position:absolute;top:-4px;right:-4px;min-width:12px;height:17px;padding:0 4px;border-radius:var(--r-full);background:var(--badge);color:var(--on-fill);font-size:var(--t-sh);font-weight:var(--w-bold);line-height:17px;text-align:center;border:2px solid var(--canvas);box-sizing:content-box;pointer-events:none}

/* ---------- page ---------- */
/* v106: the page fills the width beside the sidebar, left-aligned to it — one side padding (--page-x: 32 · 24 under 1280; v103-a11y.css: 16 · 12 on a narrow
   page); a cap only for very large screens. Pages meant to be read keep their own reading width inside it */
.page{padding:22px var(--page-x,32px) 80px;max-width:1920px;margin:0;display:flex;flex-direction:column;min-width:0}
.greet{font-size:var(--t-body);margin-bottom:8px;line-height:var(--lh-body);color:var(--fg-3)}
.lead{font-size:var(--t-t1);font-weight:var(--w-semibold);color:var(--fg);max-width:72ch;line-height:var(--lh-t1);letter-spacing:var(--ls-t1)}
.lead b{font-weight:var(--w-semibold)}
.props{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px;align-items:center}
.prop{display:inline-flex;align-items:center;gap:7px;height:var(--h-ctl);padding:0 12px 0 9px;border:1px solid var(--line-strong);border-radius:var(--r-ctl);background:var(--bg);box-shadow:none;font-size:var(--t-body);font-weight:var(--w-medium);color:var(--fg-2);white-space:nowrap;transition:var(--tr-ui);line-height:var(--lh-body)}
@media (hover:hover){a.prop:hover{background:var(--lvl-1);box-shadow:var(--sh-low);color:var(--fg)}}
.prop.dim{color:var(--fg-2);font-weight:var(--w-regular);background:var(--bg-3);border-color:transparent;box-shadow:none}
.prop.dim svg{color:var(--fg-4)}
.prop svg{flex:none;color:var(--fg-3)}
.flag{font-size:var(--t-co);line-height:var(--lh-co)}
.alert-line{display:flex;align-items:center;gap:8px;margin-top:12px;padding:8px 12px;border-radius:var(--r-12);background:color-mix(in srgb,var(--c-red) 8%,var(--bg));border:1px solid transparent;color:var(--fg-2);font-size:var(--t-body);line-height:var(--lh-body)}
.alert-line svg{color:var(--c-red)}
.alert-line a{font-weight:var(--w-medium);margin-left:auto;color:var(--link-tint)}

/* ---------- icons ---------- */
.prio,.stat,.hlth{flex:none;display:block;color:var(--fg-3)}
.ring{flex:none;display:block;color:var(--accent)}
/* every icon square is the same neutral tint, like the sidebar */
.isq,.c-ic,.sec-ic,.cp-src{width:24px;height:24px;border-radius:var(--r-full);display:grid;place-items:center;flex:none;background:var(--bg-4);color:var(--fg-2)}
.isq svg,.c-ic svg,.sec-ic svg,.cp-src svg{color:var(--fg-2)}
.sep{color:var(--fg-4)}

/* ---------- chips + labels ---------- */
.chip{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 9px;border-radius:var(--r-full);background:var(--bg-3);color:var(--fg-2);font-size:var(--t-meta);font-weight:var(--w-medium);white-space:nowrap;font-variant-numeric:tabular-nums;line-height:var(--lh-sh)}
.chip svg{color:var(--fg-3);flex:none}
.chip b{font-weight:var(--w-semibold);color:var(--fg)}
.chip .mt{font-weight:var(--w-regular);margin-left:-1px;color:var(--fg-2)}
.chip.sm{height:20px;font-size:var(--t-sh);padding:0 6px;gap:4px;line-height:var(--lh-sh)}
.chip.lv{color:var(--fg-2);font-weight:var(--w-medium)}
.chip.who{padding-left:3px}
.chip.stake{color:var(--fg);background:var(--st-orange-bg)}
.chip.stake svg{color:var(--c-orange)}
.chip.warn{color:var(--warn);background:var(--st-orange-bg)}
.chip.warn svg{color:var(--warn)}
.chip.bad{color:var(--neg);background:var(--st-red-bg)}
.chip.bad svg{color:var(--neg)}
.lbl{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 9px 0 8px;border:1px solid transparent;border-radius:var(--r-full);background:var(--bg-3);font-size:var(--t-meta);font-weight:var(--w-medium);color:var(--fg-2);white-space:nowrap;line-height:var(--lh-sh)}
.lbl .ld{width:8px;height:8px;border-radius:50%;background:var(--fg-4);flex:none}
.lbl.blue .ld{background:var(--c-blue)}.lbl.green .ld{background:var(--c-green)}.lbl.orange .ld{background:var(--c-orange)}.lbl.red .ld{background:var(--c-red)}
.lbl.gray .ld{background:var(--fg-4)}
.lbl.indigo .ld{background:var(--c-indigo)}.lbl.yellow .ld{background:var(--c-yellow)}.lbl.teal .ld{background:var(--c-teal)}
/* tinted labels: one tint per tone (Apple palette), text is the deep variant — used for impact (High/Medium/Low) and change types */
.lbl.tint{border-color:transparent;padding:0 9px;font-weight:var(--w-medium);justify-self:start}
.lbl.tint.red{background:var(--st-red-bg);color:var(--st-red-fg)}
.lbl.tint.orange{background:var(--st-orange-bg);color:var(--st-orange-fg)}
.lbl.tint.yellow{background:var(--st-yellow-bg);color:var(--st-yellow-fg)}
.lbl.tint.blue{background:var(--st-blue-bg);color:var(--st-blue-fg)}
.lbl.tint.green{background:var(--st-green-bg);color:var(--st-green-fg)}
.lbl.tint.indigo{background:var(--st-indigo-bg);color:var(--st-indigo-fg)}
.lbl.tint.teal{background:var(--st-teal-bg);color:var(--st-teal-fg)}
.lbl.tint.purple{background:var(--st-purple-bg);color:var(--st-purple-fg)}
.lbl.tint.gray{background:var(--st-gray-bg);color:var(--st-gray-fg)}
.lbl.solid-green{background:var(--st-green-bg);border-color:transparent;color:var(--pos)}
.lbl.solid-gray{background:var(--bg-3);border-color:var(--bd-2);color:var(--fg-2)}
.lbl.solid-red{background:var(--st-red-bg);border-color:transparent;color:var(--neg)}
.dp{display:inline-flex;align-items:center;gap:2px;height:20px;padding:0 7px 0 5px;border-radius:var(--r-full);font-size:var(--t-sh);font-weight:var(--w-medium);font-variant-numeric:tabular-nums;flex:none;line-height:var(--lh-sh)}
.dp svg{width:11px;height:11px}
.dp.up{color:var(--pos);background:var(--st-green-bg)}
.dp.down{color:var(--neg);background:var(--st-red-bg)}
.dp.down svg{transform:rotate(180deg)}
.dp.flat{background:var(--bg-3);padding:0 6px;color:var(--fg-2)}

/* ---------- signal cards ---------- */
.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:20px}
.card{display:flex;flex-direction:column;gap:6px;padding:16px 18px 14px;border:1px solid var(--bd-tl);border-radius:var(--r-card);background:var(--lvl-0);box-shadow:var(--sh-tiny);min-width:0;color:inherit;transition:var(--tr-ui)}
@media (hover:hover){.card:hover{box-shadow:var(--sh-low)}}   /* D14/D15: hover never moves anything — a quiet lift only */
.c-l{display:flex;align-items:center;gap:7px;font-size:var(--t-body);font-weight:var(--w-medium);color:var(--fg-2);min-width:0;line-height:var(--lh-body)}
.c-l>span:not(.c-ic):not(.dp){white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.c-l .dp{margin-left:auto}
.c-v{font-size:var(--t-lt);font-weight:var(--w-semibold);font-variant-numeric:tabular-nums;color:var(--fg);margin-top:4px;line-height:var(--lh-lt);letter-spacing:var(--ls-lt)}
.c-v i{font-style:normal;font-size:var(--t-sh);color:var(--fg-4);font-weight:var(--w-regular);margin-left:2px;line-height:var(--lh-sh);letter-spacing:0}
.c-v.cta{font-size:var(--t-body);color:var(--link);font-weight:var(--w-medium);margin-top:8px;line-height:var(--lh-body)}
.c-sub{font-size:var(--t-co);color:var(--fg-4);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:var(--lh-co)}
.c-spw{position:relative;height:48px;margin-top:8px;margin-right:4px}
.c-sp{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.c-dot{position:absolute;width:7px;height:7px;border-radius:50%;transform:translate(-50%,-50%);border:2px solid var(--lvl-0);box-sizing:content-box}
.mini{display:flex;flex-direction:column;gap:4px;padding:13px 18px 12px;border-right:1px solid var(--ln-2);min-width:0}
.mini:last-child{border-right:0}
.mini .ml{display:flex;align-items:center;gap:8px;font-size:var(--t-body);font-weight:var(--w-medium);color:var(--fg-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:var(--lh-body)}
.mini .ml svg{color:var(--warn);flex:none}
.mini .ml .dp{margin-left:auto}
.mini .mv{font-size:var(--t-t2);font-weight:var(--w-semibold);font-variant-numeric:tabular-nums;color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:var(--lh-t2);letter-spacing:var(--ls-t2)}
.mini .mv i{font-style:normal;font-size:var(--t-sh);color:var(--fg-4);font-weight:var(--w-regular);margin-left:2px;line-height:var(--lh-sh);letter-spacing:0}
.mini.stale .mv{font-size:var(--t-body);font-weight:var(--w-medium);color:var(--warn);white-space:normal;line-height:var(--lh-body)}

/* ---------- trend chart ---------- */
.ch-hd{display:flex;align-items:center;gap:9px;margin:0 0 14px;min-height:28px;padding-bottom:10px;border-bottom:1px solid var(--ln-2)}
.ch-hd h2{font-size:var(--t-hl);font-weight:var(--w-semibold);line-height:var(--lh-hl)}
.ch-hd .n{flex:1;font-size:var(--t-co);color:var(--fg-4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;line-height:var(--lh-co)}
.ch-hd .chart-legend{margin-left:auto;flex:none}
.ch-hd .more{font-size:var(--t-body);color:var(--fg-3);font-weight:var(--w-medium);display:inline-flex;align-items:center;gap:3px;padding:3px 6px;border-radius:var(--r-full);line-height:var(--lh-body)}
@media (hover:hover){.ch-hd .more:hover{background:var(--hover);color:var(--fg)}}
.chart{--ch:200px;display:flex;flex-direction:column;gap:8px;min-width:0;direction:ltr}
.chart-legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:var(--t-co);color:var(--fg-3);font-weight:var(--w-medium);line-height:var(--lh-co)}
.chart-legend span{display:inline-flex;align-items:center;gap:6px}
.sw{width:8px;height:8px;border-radius:var(--r-2);display:inline-block;flex:none}
.chart-body{display:grid;grid-template-columns:44px minmax(0,1fr);grid-template-rows:var(--ch) 20px;gap:0 10px}
.chart.has-right .chart-body{grid-template-columns:44px minmax(0,1fr) 36px}
.chart-y{position:relative;font-size:var(--t-sh);color:var(--fg-4);font-variant-numeric:tabular-nums;line-height:var(--lh-sh)}
.chart-y span{position:absolute;right:0;transform:translateY(-50%);white-space:nowrap}
.chart-y.right span{right:auto;left:0}
.chart-plot{position:relative;min-width:0;border-bottom:1px solid var(--ln-2)}
.chart-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.chart-svg .grid{stroke:var(--ln-2);stroke-width:1;stroke-dasharray:3 4;vector-effect:non-scaling-stroke}
.chart-svg .line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}   /* D12: the main line 2px, a comparison 1.75px and dashed */
.chart-svg .line.dashed{stroke-dasharray:5 4;stroke-width:1.75}
.chart-svg .annot{stroke:var(--fg-4);stroke-width:1;stroke-dasharray:3 3;vector-effect:non-scaling-stroke;opacity:.7}
.chart-x{position:relative;grid-column:2;font-size:var(--t-sh);color:var(--fg-4);white-space:nowrap;font-variant-numeric:tabular-nums;line-height:var(--lh-sh)}
.chart-x span{position:absolute;top:6px;transform:translateX(-50%)}
.chart-x span.first{transform:none}.chart-x span.last{transform:translateX(-100%)}
.ccol{position:absolute;top:0;bottom:0;transform:translateX(-50%)}
.ccol:hover::before{content:"";position:absolute;top:0;bottom:0;left:50%;border-left:1px solid var(--bd-3)}   /* v72: the hover line sits on the day, not half a day early */
.ccol .tip{display:none;position:absolute;top:8px;left:50%;transform:translateX(12px);background:var(--elev);border:1px solid var(--bd);color:var(--fg);padding:8px 10px;border-radius:var(--r-8);font-size:var(--t-co);white-space:nowrap;z-index:5;box-shadow:var(--sh-med);pointer-events:none;min-width:150px;line-height:var(--lh-co)}
.ccol:hover .tip{display:block}
.ccol:nth-last-child(-n+8) .tip{left:auto;right:50%;transform:translateX(-12px)}
.cols > .ccol:not(.is-bar):not(:only-child):first-child:not(:hover):not(.is-kf){clip-path:inset(-100vh -100vw -100vh 50%)}
.cols > .ccol:not(.is-bar):not(:only-child):last-child:not(:hover):not(.is-kf){clip-path:inset(-100vh calc(50% - 1px) -100vh -100vw)}
.cols > .ccol:not(.is-bar):first-child .tip{left:50%;right:auto;transform:translateX(12px)}
.tip-h{font-weight:var(--w-medium);margin-bottom:4px;color:var(--fg-3);font-size:var(--t-sh);line-height:var(--lh-sh)}
.tip-r{display:flex;align-items:center;gap:8px;padding:2px 0}
.tip-r span{color:var(--fg-2);flex:1;padding-right:12px}
.tip-r b{font-weight:var(--w-medium);font-variant-numeric:tabular-nums}
.tip-a{margin-top:6px;padding-top:6px;border-top:1px solid var(--bd);color:var(--fg-3);font-size:var(--t-sh);line-height:var(--lh-sh)}
.ad{width:7px;height:7px;border-radius:50%;background:var(--fg-4);flex:none}

.ev-key{display:inline-flex;align-items:center;gap:6px;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-3);white-space:nowrap;margin-right:6px}
.ev-key .ad{background:var(--c-orange)}
.end-dot{position:absolute;width:8px;height:8px;border-radius:50%;transform:translate(-50%,-50%);border:2px solid var(--bg);z-index:2}

/* ---------- sections ---------- */
.sec{margin-top:14px;display:flex;flex-direction:column;min-width:0;padding:14px 18px 10px}
.sec-hd{display:flex;align-items:center;gap:9px;min-height:28px;padding-bottom:10px;margin-bottom:4px;border-bottom:1px solid var(--ln-2)}
.sec-hd h2{font-size:var(--t-hl);font-weight:var(--w-semibold);color:var(--fg);overflow-wrap:break-word;text-wrap:balance;line-height:var(--lh-hl)}   /* v105 (no-cut): a card's title wraps, never "…" */

.sec-bd{flex:1}
.sec.is-decisions .sec-hd{margin-bottom:0}
.sec.is-sources .sec-bd{padding:10px 0 6px}
.sec .empty-line{padding:10px 0 12px}
.sec-hd .n{font-size:var(--t-co);color:var(--fg-4);font-variant-numeric:tabular-nums;font-weight:var(--w-regular);line-height:var(--lh-co)}
.sec-hd .more{margin-left:auto;font-size:var(--t-body);color:var(--fg-3);font-weight:var(--w-medium);display:inline-flex;align-items:center;gap:3px;padding:3px 6px;border-radius:var(--r-full);line-height:var(--lh-body)}
@media (hover:hover){.sec-hd .more:hover{background:var(--hover);color:var(--fg)}}
.empty-line{padding:14px 0;display:flex;align-items:center;gap:8px;font-size:var(--t-body);color:var(--fg-4);line-height:var(--lh-body)}
.panel{border:1px solid var(--bd-tl);border-radius:var(--r-card);background:var(--lvl-0);box-shadow:var(--sh-tiny);overflow:hidden}
.list{display:flex;flex-direction:column}

/* the one surface: decisions */
.dec-p{display:grid;align-self:start;margin-top:1px;width:74px}
.dec-t{font-size:var(--t-body);font-weight:var(--w-medium);color:var(--fg);display:flex;align-items:center;gap:8px;min-width:0;line-height:var(--lh-body)}
.dec-t a{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (hover:hover){.dec-t a:hover{text-decoration:underline;text-decoration-color:var(--fg-4);text-underline-offset:3px}}
.dec-why{font-size:var(--t-co);color:var(--fg-3);margin-top:3px;display:flex;gap:5px;align-items:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:var(--lh-co)}
.dec-why svg{color:var(--fg-4);flex:none}
.dec-why a{color:var(--fg-2);border-bottom:1px solid var(--bd-3);overflow:hidden;text-overflow:ellipsis}
@media (hover:hover){.dec-why a:hover{color:var(--fg);border-color:var(--fg-4)}}

/* issue rows */
.i-t{font-size:var(--t-body);font-weight:var(--w-medium);color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:var(--lh-body)}
.chip.mk{gap:5px;padding:0 8px 0 6px}
.i-c.none{color:var(--fg-2);font-weight:var(--w-medium)}
/* secondary desktop (≤ 1320): the evidence column folds away and the others tighten so the title keeps ~330px */
.i-c{text-align:right;font-variant-numeric:tabular-nums;font-size:var(--t-body);font-weight:var(--w-semibold);color:var(--fg);line-height:var(--lh-body)}
.i-c i{display:block;font-style:normal;font-size:var(--t-co);color:var(--fg-3);font-weight:var(--w-regular);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:var(--lh-co);letter-spacing:0}
.i-c.pos{color:var(--pos)}.i-c.neg{color:var(--neg)}
.i-d{font-size:var(--t-co);color:var(--fg-4);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;line-height:var(--lh-co)}
.unas{width:18px;height:18px;border-radius:50%;border:1px dashed var(--bd-3);display:grid;place-items:center;color:var(--fg-4)}

/* timeline */
.tl{display:flex;flex-direction:column}
.tl-row{display:grid;grid-template-columns:100px minmax(0,1fr) 56px;gap:10px;align-items:center;height:40px;padding:0 8px;margin:0 -8px;border-radius:var(--r-8);cursor:pointer;transition:var(--tr-ui)}
.tl-row .lbl{max-width:100%;overflow:hidden}
@media (hover:hover){.tl-row:hover{background:var(--hover-solid)}}
.tl-row .tx{font-size:var(--t-body);color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:var(--lh-body)}
.tl-row.unread .tx{font-weight:var(--w-medium)}
.tl-row .tm{font-size:var(--t-co);color:var(--fg-4);font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right;line-height:var(--lh-co)}

/* two columns */
.two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px;align-items:stretch}
.two .sec{margin-top:0}
.ip-t,.vd-t,.gn{font-size:var(--t-body);font-weight:var(--w-medium);color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:var(--lh-body)}
.ip-from{font-size:var(--t-co);color:var(--fg-3);margin-top:2px;display:flex;align-items:center;gap:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:var(--lh-co)}
.ip-from svg{color:var(--fg-4);flex:none}
.ip-meta,.vd-m,.gs,.vd-cmp{display:block;margin-top:3px;font-size:var(--t-co);color:var(--fg-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums;line-height:var(--lh-co)}
.ip-meta>*,.vd-m>*,.gs>*,.vd-cmp>*{display:inline;vertical-align:baseline}
.ip-meta .sep,.vd-m .sep,.gs .sep{margin:0 4px}
.gs .av,.vd-cmp svg{display:inline-grid;vertical-align:middle;margin-right:2px}
.ip-meta b,.gs b{color:var(--fg);font-weight:var(--w-semibold)}
.gs .good{color:var(--pos)}.gs .warn{color:var(--warn)}.gs .bad{color:var(--neg)}
.gs .av{margin-left:1px}
.ip-r,.gr{display:flex;align-items:center;gap:8px;flex:none;align-self:center}
.ip-r{width:112px;justify-content:flex-end}


.vd-cmp b{color:var(--fg);font-weight:var(--w-semibold)}
.vd-cmp .arrow{color:var(--fg-4);margin:0 4px}
.vd-r{display:flex;align-items:center;flex:none}
.gr{font-size:var(--t-co);color:var(--fg-3);font-variant-numeric:tabular-nums;white-space:nowrap;line-height:var(--lh-co)}
.gr b{color:var(--fg);font-weight:var(--w-semibold)}

/* sources */
.srcs{display:flex;flex-wrap:wrap;gap:6px}
.src{display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 12px 0 11px;border:1px solid transparent;border-radius:var(--r-full);background:var(--bg-3);font-size:var(--t-body);color:var(--fg-2);white-space:nowrap;transition:var(--tr-ui);line-height:var(--lh-body)}
@media (hover:hover){.src:hover{background:var(--bg-5)}}
.src .st{width:7px;height:7px;border-radius:50%;flex:none;background:var(--c-green)}
.src .st.off{background:var(--fg-4)}.src.off .nm{color:var(--fg-2)}
.src .st.warn{background:var(--c-orange)}.src .st.err{background:var(--c-red)}.src .st.sync{background:var(--c-blue)}
.src.warn{background:var(--st-orange-bg)}.src.warn .nm,.src.warn .nt{color:var(--warn-ink)}
.src.err{background:var(--st-red-bg)}.src.err .nm,.src.err .nt{color:var(--neg-ink)}
.src .nm{font-weight:var(--w-medium);color:var(--fg)}
.src .nt{max-width:240px;overflow:hidden;text-overflow:ellipsis;color:var(--fg-2)}
.src .nt:empty{display:none}

/* placeholder for pages not yet designed */
.next{padding:80px 32px;max-width:640px;margin:0 auto}
.next h1{font-size:var(--t-t2);font-weight:var(--w-semibold);line-height:var(--lh-t2);letter-spacing:var(--ls-t2)}
.next p{font-size:var(--t-body);color:var(--fg-3);margin-top:8px;line-height:var(--lh-body)}
.next .crumb{font-size:var(--t-co);color:var(--fg-4);margin-bottom:12px;font-weight:var(--w-medium);line-height:var(--lh-co)}

/* toast + palette */
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);display:flex;align-items:center;gap:8px;background:var(--inv);color:var(--inv-fg);font-size:var(--t-body);font-weight:var(--w-medium);padding:9px 16px;border-radius:var(--r-full);box-shadow:var(--sh-high);z-index:800;line-height:var(--lh-body)}
.toast .ic{color:var(--c-green)}
/* on Ask the composer owns the bottom edge: the toast sits above it */
body:has(.ask) .toast{bottom:156px}
.overlay{position:fixed;inset:0;display:flex;padding:12vh 16px 16px;background:var(--scrim);z-index:640;backdrop-filter:blur(2px)}
.palette{width:min(640px,100%);max-height:70vh;display:flex;flex-direction:column;background:var(--elev);border:1px solid var(--bd-tl);border-radius:var(--r-card);box-shadow:var(--sh-high);overflow:hidden}
.pal-in{display:flex;align-items:center;gap:10px;padding:0 16px;height:52px;border-bottom:1px solid var(--ln-2);flex:none}
.pal-in svg{color:var(--fg-4);flex:none}
.pal-in input{flex:1;border:0;background:none;font-size:var(--t-t3);outline:none;color:var(--fg);min-width:0;height:100%;padding:0;line-height:var(--lh-t3);letter-spacing:var(--ls-t3)}
.pal-in input::placeholder{color:var(--fg-4)}
.pal-x{width:28px;height:28px;border-radius:var(--r-full);display:grid;place-items:center;color:var(--fg-4);flex:none;transition:var(--tr-ui)}
@media (hover:hover){.pal-x:hover{background:var(--bg-3);color:var(--fg)}}
.pal-x svg{width:18px;height:18px}
.pal-list{overflow-y:auto;padding:6px;min-height:0}
.pal-grp{font-size:var(--t-sh);font-weight:var(--w-medium);color:var(--fg-4);padding:10px 10px 4px;line-height:var(--lh-sh)}
.pal-i{display:flex;align-items:center;gap:10px;width:100%;min-height:36px;padding:7px 10px;border-radius:var(--r-8);text-align:left;font-size:var(--t-body);color:var(--fg);transition:var(--tr-ui);line-height:var(--lh-body)}
.pal-i .pal-ic{width:22px;height:22px;display:grid;place-items:center;color:var(--fg-3);flex:none;border-radius:var(--r-full);background:var(--bg-3)}
.pal-i.is-active{background:var(--bg-4)}
.pal-i.is-active .pal-ic{background:var(--accent);color:var(--on-fill)}
.pal-i .pal-s{font-size:var(--t-body);color:var(--fg-3);font-weight:var(--w-regular);line-height:var(--lh-body)}
.pal-i .pal-k{margin-left:auto;font-size:var(--t-co);color:var(--fg-4);white-space:nowrap;line-height:var(--lh-co)}
/* P6 (X5): the go-to keys beside a page — quiet keycaps at the right end, before ↵; nothing on a touch screen */
.pal-i .pal-kb{margin-left:auto;display:inline-flex;gap:3px;flex:none}
.pal-i .pal-kb kbd{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 4px;border-radius:var(--r-4);background:var(--bg-3);box-shadow:inset 0 -1px 0 var(--ln-3);font-family:inherit;font-size:var(--t-sh);line-height:1;font-weight:var(--w-medium);color:var(--fg-2)}
.pal-i .pal-kb + .pal-k{margin-left:8px}
@media (hover:none){.pal-i .pal-kb{display:none}}
.pal-i .pal-t{min-width:0;overflow-wrap:break-word;text-wrap:pretty}   /* v105 (no-cut): a result's whole name — it wraps, never "…" */
.pal-ft{display:flex;gap:16px;padding:8px 16px;border-top:1px solid var(--ln-2);font-size:var(--t-co);color:var(--fg-4);flex:none;line-height:var(--lh-co)}
.pal-ft span{display:inline-flex;align-items:center;gap:4px}
@media (hover:none){.pal-ft{display:none}}   /* night fix (Oct 8): the key hints mean nothing on a touch screen */

/* ---------- property-row selects ---------- */
.prop.psel{cursor:pointer;padding-right:9px}
@media (hover:hover){.prop.psel:hover{background:var(--hover);color:var(--fg)}}

/* ---------- notifications popover ---------- */
.notif-pop{position:fixed;top:64px;right:16px;width:400px;max-height:calc(100vh - 80px);display:flex;flex-direction:column;box-shadow:var(--sh-high);z-index:620;background:var(--elev)}
.np-hd{display:flex;align-items:center;gap:8px;padding:12px 14px 10px;border-bottom:1px solid var(--ln-2)}
.np-hd h3{font-size:var(--t-hl);font-weight:var(--w-semibold);line-height:var(--lh-hl)}
.np-hd .n{font-size:var(--t-co);color:var(--fg-4);line-height:var(--lh-co)}
.np-hd .btn{margin-left:auto}
.np-bd{overflow-y:auto;padding:6px}
.np-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;padding:8px 8px;border-radius:var(--r-8);text-align:left;transition:var(--tr-ui)}
@media (hover:hover){.np-row:hover{background:var(--hover-solid)}}
.np-row .tx{font-size:var(--t-body);color:var(--fg);white-space:normal;line-height:var(--lh-body)}
.np-row.unread .tx{font-weight:var(--w-medium)}
.np-row .tm{display:flex;align-items:center;gap:6px;font-size:var(--t-sh);color:var(--fg-4);margin-top:2px;line-height:var(--lh-sh)}
.np-row .tm .sep{margin:0 4px}
.np-row .dot{width:7px;height:7px;border-radius:50%;background:var(--accent)}
.np-ft{padding:8px 10px;border-top:1px solid var(--ln-2);display:flex}
.np-ft .more{margin-left:auto;font-size:var(--t-body);color:var(--fg-3);font-weight:var(--w-medium);display:inline-flex;align-items:center;gap:3px;padding:3px 6px;border-radius:var(--r-full);line-height:var(--lh-body)}
@media (hover:hover){.np-ft .more:hover{background:var(--hover);color:var(--fg)}}

/* ---------- team chat panel ---------- */
.chat-panel{position:fixed;right:16px;bottom:16px;width:440px;height:600px;max-height:calc(100vh - 32px);display:flex;flex-direction:column;box-shadow:var(--sh-high);z-index:610;background:var(--elev)}
.chat-panel.is-max{width:760px;height:calc(100vh - 80px)}   /* night fixer (#56): maximized, it stays under the 56px top bar — no badge peeks over its corner */
.chat-panel.is-min{height:auto}
.cp-hd{display:flex;align-items:center;gap:8px;padding:10px 10px 10px 14px;border-bottom:1px solid var(--ln-2);flex:none}
.chat-panel.is-min .cp-hd{border-bottom:0}
.cp-hd.is-strip{cursor:pointer}
@media (hover:hover){.cp-hd.is-strip:hover{background:var(--hover)}}
.cp-hd>b{font-size:var(--t-hl);font-weight:var(--w-semibold);line-height:var(--lh-hl)}

.cp-mem{display:inline-flex;align-items:center;margin-left:4px}
.cp-mem .av{border:2px solid var(--bg);margin-left:-5px;box-sizing:content-box}
.cp-mem .av:first-child{margin-left:0}
.cp-mem .more-n{font-size:var(--t-sh);color:var(--fg-4);margin-left:4px;line-height:var(--lh-sh)}
.cp-tools{margin-left:auto;display:flex;gap:2px}
.cp-bd{flex:1;overflow-y:auto;padding:12px 14px 6px;display:flex;flex-direction:column;gap:14px;min-height:0}
.cp-m{display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;align-items:start}
.cp-m.is-mention{box-shadow:inset 2px 0 0 var(--c-orange);margin-left:-14px;padding-left:12px}
.cp-mh{display:flex;align-items:center;gap:8px;min-height:20px}
.cp-mh b{font-size:var(--t-body);font-weight:var(--w-medium);color:var(--fg);line-height:var(--lh-body)}
.cp-mh .tm{font-size:var(--t-sh);color:var(--fg-4);line-height:var(--lh-sh)}
.cp-tx{font-size:var(--t-body);color:var(--fg-2);margin-top:1px;white-space:pre-wrap;word-break:break-word;line-height:var(--lh-body)}
.cp-tx b{font-weight:var(--w-medium);color:var(--fg)}
.cp-tx b.me{color:var(--link)}
.cp-card{display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;margin-top:8px;padding:8px 10px;border:1px solid transparent;border-radius:var(--r-12);background:var(--bg-3);text-align:left;transition:var(--tr-ui)}
@media (hover:hover){.cp-card:hover{background:var(--bg-5)}}
.cp-card .k{font-size:var(--t-sh);color:var(--fg-4);font-weight:var(--w-medium);line-height:var(--lh-sh)}
.cp-card .t{font-size:var(--t-body);color:var(--fg);font-weight:var(--w-medium);overflow-wrap:break-word;text-wrap:pretty;line-height:var(--lh-body)}
.cp-re{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.cp-re .re{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 7px;border:1px solid var(--bd);border-radius:var(--r-full);background:var(--bg);font-size:var(--t-co);line-height:var(--lh-co)}
.cp-re .re span{font-size:var(--t-sh);color:var(--fg-3);font-variant-numeric:tabular-nums;line-height:var(--lh-sh)}
.cp-re .re.is-on{border-color:color-mix(in srgb,var(--accent) 40%,var(--bd));background:var(--accent-t)}
.cp-replies{margin-top:8px;padding-left:10px;border-left:2px solid var(--ln-2);display:flex;flex-direction:column;gap:8px}
.cp-reply{grid-template-columns:18px minmax(0,1fr);gap:8px}
.cp-reply .cp-mh b{font-size:var(--t-co);line-height:var(--lh-co)}
.cp-reply .cp-tx{font-size:var(--t-co);line-height:var(--lh-co)}
.cp-comp{flex:none;margin:6px 10px 10px;border:1px solid var(--bd);border-radius:var(--r-8);background:var(--bg);box-shadow:var(--sh-tiny);display:flex;flex-direction:column;transition:var(--tr-ui)}
.cp-comp:focus-within{border-color:var(--bd-3)}
.cp-comp textarea{border:0;background:none;resize:none;padding:10px 12px 4px;font-size:var(--t-body);color:var(--fg);min-height:38px;max-height:120px;outline:none;line-height:var(--lh-body)}
.cp-comp textarea::placeholder{color:var(--fg-4)}
.cp-row{display:flex;align-items:center;gap:4px;padding:4px 6px 6px 8px}
.cp-ch{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 7px 0 8px;border-radius:var(--r-full);font-size:var(--t-co);font-weight:var(--w-medium);color:var(--fg-3);cursor:pointer;line-height:var(--lh-co)}
@media (hover:hover){.cp-ch:hover{background:var(--hover);color:var(--fg)}}
.cp-send{width:26px;height:26px;border-radius:50%;background:var(--inv);color:var(--inv-fg);display:grid;place-items:center;transition:var(--tr-ui)}
@media (hover:hover){.cp-send:hover{background:var(--inv-h)}}

/* loading skeleton while a market switches */
.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:20px}
.metric,.page>.card{border:1px solid var(--bd-tl);border-radius:var(--r-card);background:var(--lvl-0);padding:16px 18px}
.skel-wrap{display:flex;flex-direction:column;gap:10px}
.loading-bar{position:fixed;top:0;left:0;height:2px;width:40%;background:var(--accent);z-index:900;animation:lb var(--dur-loop) linear infinite}
@keyframes lb{from{transform:translateX(-100%)}to{transform:translateX(350%)}}

/* ---------- popover menu (ui/menu.js) ---------- */
.menu-btn .mb-cv{display:grid;color:var(--fg-4);margin-left:1px;transition:transform var(--dur-1) var(--ease-out)}
.menu-btn.is-open .mb-cv{transform:rotate(180deg)}
.menu-btn.is-open{color:var(--fg)}
.prop.psel.menu-btn.is-open{background:var(--bg-5)}
.menu{position:fixed;z-index:700;display:flex;flex-direction:column;padding:4px;border-radius:var(--r-12);background:var(--elev);border:1px solid var(--bd);box-shadow:var(--sh-high);overflow:hidden}   /* it opens with a fade and a 4px slide (v110-motion.css · the overlay layer) */
.menu-h{font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-3);padding:6px 10px 4px 6px}   /* night fixer (#71): starts where its rows start (.menu-i 6px) */
.menu-i{display:flex;align-items:center;gap:8px;min-height:30px;padding:0 10px 0 6px;border-radius:var(--r-8);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg);text-align:left;white-space:nowrap;outline:none}
.menu-i:focus{background:var(--hover)}@media (hover:hover){.menu-i:hover{background:var(--hover)}}
.menu-i.is-on{font-weight:var(--w-medium)}
.menu-ck{width:16px;display:grid;place-items:center;color:var(--accent);flex:none}
.menu-ic{width:16px;display:grid;place-items:center;color:var(--fg-3);flex:none}
.menu-bd{display:flex;flex-direction:column;overflow-y:auto;min-height:0}
.menu.has-q{padding-top:0;overflow:hidden}
.menu-qw{display:flex;align-items:center;gap:8px;height:38px;padding:0 10px;margin:0 -4px 4px;border-bottom:1px solid var(--ln-2);color:var(--fg-4);flex:none}
.menu-q{flex:1;min-width:0;border:0;background:none;outline:none;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.menu-q::placeholder{color:var(--fg-4)}
.menu-i[hidden],.menu-h[hidden],.menu-none[hidden]{display:none}
.menu-none{padding:10px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.menu-i.is-danger{color:var(--neg)}
.menu-i.is-danger .menu-ic{color:var(--neg)}
.menu-l{overflow:hidden;text-overflow:ellipsis;max-width:340px;flex:1}
.mb-p{color:var(--fg-2);font-weight:var(--w-regular)}
.mb-l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:240px}
.menu-hint{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);margin-left:16px}
/* night fix (Oct 8, A9): on a phone a hint wraps under its label (aligned with it) instead of pushing the menu off the screen */
@media (max-width:600px){.menu-i{flex-wrap:wrap;flex-shrink:0;white-space:normal;padding-block:6px;row-gap:0}.menu-l{max-width:none;min-width:0}.menu-hint{order:9;flex-basis:100%;margin-left:0;padding-left:24px}.menu-i:has(> .menu-ck:not(.is-end)):has(> .menu-ic) .menu-hint{padding-left:48px}.menu-i:not(:has(> .menu-ck:not(.is-end),> .menu-ic)) .menu-hint{padding-left:0}.cg-alerts-pop .menu-i > .menu-hint.cg-lv{margin-left:0;padding-left:24px}}

/* ---------- tooltip (ui/tooltip.js) ---------- */
.tip-pop{position:fixed;left:0;top:0;z-index:950;max-width:320px;padding:5px 9px;border-radius:var(--r-8);background:var(--inv);color:var(--inv-fg);font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);box-shadow:var(--sh-med);pointer-events:none;opacity:0;visibility:hidden;translate:0 calc(var(--rise) / 3);transition:opacity var(--dur-1) var(--ease-out),translate var(--dur-1) var(--ease-out),visibility var(--dur-1);overflow-wrap:anywhere}
.tip-pop.is-on{opacity:1;visibility:visible;translate:none;pointer-events:auto}   /* night fix (Oct 8, WCAG 1.4.13): the pointer can rest on a shown tip */   /* I: it fades in 2px from below and out again (visibility waits for the fade) */
.tip-pop.is-lines{white-space:pre-line}   /* P6 (X13): a record preview — its name, then its number, date and stage on the next line */

/* ---------- empty states ---------- */
.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;padding:26px 16px 28px}
.empty-ic{display:grid;place-items:center;width:36px;height:36px;border-radius:var(--r-full);background:var(--bg-4);color:var(--fg-3);margin-bottom:6px}
.empty-t{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg)}
.empty-b{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);max-width:44ch;text-wrap:balance}
.empty-a{display:inline-flex;align-items:center;gap:3px;margin:8px 0 0;padding:3px 8px;border-radius:var(--r-full);font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--link)}
@media (hover:hover){.empty-a:hover{background:var(--hover)}}
.empty.is-inline{flex-direction:row;align-items:center;text-align:left;gap:12px;padding:12px 0 14px}
.empty.is-inline .empty-ic{width:30px;height:30px;margin:0;flex:none}
.empty.is-inline .empty-b{max-width:none}
.chart-empty{color:var(--fg-4);font-size:var(--t-body);border-radius:var(--r-12);line-height:var(--lh-body);display:grid;place-items:center;min-height:206px;height:auto;border:1px dashed var(--bd-3)}
.chart-empty .empty{padding:0}

/* ---------- new project ---------- */
.preview-line{display:flex;align-items:center;gap:8px;margin-bottom:16px;padding:8px 12px;border-radius:var(--r-12);background:var(--accent-t);color:var(--fg-2);font-size:var(--t-body);line-height:var(--lh-body)}
.preview-line svg{color:var(--accent);flex:none}
.preview-line b{color:var(--fg)}
.preview-line a{margin-left:auto;color:var(--link-tint,var(--link));font-weight:var(--w-medium);white-space:nowrap}
.st-t{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.st-t.is-done{color:var(--fg-3);font-weight:var(--w-regular)}
.st-b{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);margin-top:2px;overflow:hidden;text-overflow:ellipsis}
.st-n{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.st-n.ok{color:var(--pos)}
.c-v.pend{color:var(--fg-3)}
.c-spw.is-wait{border-radius:var(--r-8);background:repeating-linear-gradient(90deg,var(--bg-4) 0 6px,transparent 6px 12px);opacity:.7}

/* ---------- loading skeleton ---------- */
/* one shimmer for both skeletons (.sk — a page's own; .skel — ui/core.js skeleton()): a soft band, one slow sweep (I5); still under Reduce motion */
.sk,.skel{display:block;border-radius:var(--r-4);background:linear-gradient(90deg,var(--bg-3) 30%,var(--bg-4) 50%,var(--bg-3) 70%);background-size:300% 100%;animation:sk var(--dur-loop) linear infinite;max-width:100%}
.sk.pill{border-radius:var(--r-full)}.sk.dot{border-radius:var(--r-full);flex:none}
@keyframes sk{from{background-position:100% 0}to{background-position:-100% 0}}
.card.is-sk{gap:10px;pointer-events:none}
.card.is-sk:hover{transform:none;box-shadow:var(--sh-tiny)}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

/* ---------- keyboard ---------- */
.skip{position:fixed;left:12px;top:12px;translate:0 -72px;z-index:1000;padding:8px 14px;border-radius:var(--r-full);background:var(--inv);color:var(--inv-fg);font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);transition:translate var(--dur-1) var(--ease-out)}   /* home fixer: it moves by translate, never by top */
.skip:focus{translate:0 0}
.scroll:focus{outline:none}

/* ================= Ask Dottpace AI ================= */
.ask{display:grid;grid-template-columns:268px minmax(0,1fr);height:calc(100dvh - var(--top-h));min-height:0}
.ask.is-wide{grid-template-columns:minmax(0,1fr)}
/* night fix (Oct 8, E3): a billing banner on Ask sits above the two columns, inset like every page's, and the columns take the height that is left */
.ask-bw{display:flex;flex-direction:column;height:calc(100dvh - var(--top-h));min-height:0}
.ask-bw > .bill-bar{flex:none;margin:16px var(--page-x,32px) 0}
.ask-bw > .ask{flex:1 1 auto;height:auto;min-height:0}
/* conversation list — a column of the page, not a second app sidebar */
.ask-list{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--bd);padding:10px 8px 8px}
.al-hd{display:flex;align-items:center;gap:2px;height:32px;padding:0 0 0 8px;margin-bottom:8px}
.al-hd b{flex:1;font-size:var(--t-hl);line-height:var(--lh-hl);font-weight:var(--w-semibold)}
.al-q{display:flex;align-items:center;gap:7px;height:30px;padding:0 10px;margin:0 0 8px;border-radius:var(--r-full);background:var(--bg-3);color:var(--fg-3)}
.al-q input{flex:1;min-width:0;border:0;background:none;outline:none;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.al-q input::placeholder{color:var(--fg-3)}
.al-bd{flex:1;overflow-y:auto;min-height:0;display:flex;flex-direction:column;gap:2px}
.al-g{font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-3);padding:12px 8px 4px}
.al-g:first-child{padding-top:2px}
.al-i{display:flex;align-items:center;gap:2px;min-height:32px;border-radius:var(--r-8);padding:0 2px 0 8px;transition:var(--tr-ui)}
.al-i.is-on,.al-i:focus-within{background:var(--hover)}@media (hover:hover){.al-i:hover{background:var(--hover)}}
.al-i[hidden],.al-g[hidden],.al-none[hidden]{display:none}
.al-t{flex:1;min-width:0;display:flex;align-items:center;gap:6px;min-height:32px;padding:6px 0;box-sizing:border-box;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.al-t span{overflow-wrap:break-word;text-wrap:pretty}
.al-t svg{color:var(--fg-4);flex:none}
.al-i.is-on .al-t{color:var(--fg);font-weight:var(--w-medium)}
.al-more{width:26px;height:26px;border-radius:var(--r-full);display:grid;place-items:center;color:var(--fg-3);opacity:0;flex:none}
.al-i:hover .al-more,.al-i:focus-within .al-more,.al-more.is-open{opacity:1}
.al-more.is-open{background:var(--bg-5);color:var(--fg)}@media (hover:hover){.al-more:hover{background:var(--bg-5);color:var(--fg)}}
.al-i.is-edit{padding:0 4px;background:var(--bg-4)}
.al-i.is-edit input{flex:1;min-width:0;height:24px;padding:0 6px;border:1px solid var(--accent);border-radius:var(--r-6);background:var(--bg);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg);outline:none}
.al-empty,.al-none{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);padding:8px}
/* main column */
.ask-main{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0}
.am-thread{flex:1;overflow-y:auto;min-height:0;padding:22px 24px 28px;-webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 24px),transparent);mask-image:linear-gradient(to bottom,#000 calc(100% - 24px),transparent)}
.am-col{max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:22px}
/* messages */
.msg.me{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.bubble{max-width:82%;padding:9px 14px;border-radius:var(--r-card);background:var(--bg);box-shadow:var(--sh-tiny);border:1px solid var(--bd-tl);font-size:var(--t-read);line-height:var(--lh-read);color:var(--fg);white-space:pre-wrap;overflow-wrap:anywhere}
.me-about b{font-weight:var(--w-medium);color:var(--fg-2)}
.msg.ai{display:grid;grid-template-columns:28px minmax(0,1fr);gap:12px;align-items:start}
.ai-body{display:flex;flex-direction:column;gap:12px;min-width:0}
.ai-from{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3);min-height:28px}
.ai-from .chip{max-width:320px}
.ell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
@media (hover:hover){a.chip:hover{background:var(--bg-5);color:var(--fg)}}
.ai-text{font-size:var(--t-read);line-height:var(--lh-read);color:var(--fg);display:flex;flex-direction:column;gap:10px;overflow-wrap:anywhere}
.ai-text p{margin:0}
.ai-text h4,.ai-sig h4,.ai-plain h4{font-size:var(--t-hl);line-height:var(--lh-hl);font-weight:var(--w-semibold);color:var(--fg);margin:6px 0 -2px}
.ai-text ul,.ai-text ol,.ai-sig ul{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px}
.ai-text ul,.ai-sig ul{list-style:disc}.ai-text ol{list-style:decimal}
.ai-text li::marker,.ai-sig li::marker{color:var(--fg-4)}
.ai-text 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}
@media (hover:hover){.ai-text a.num:hover{text-decoration-color:var(--link)}}
.ai-text b.num{font-variant-numeric:tabular-nums}
.ai-sig h4{margin:0}
.ai-sig ul{font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.ai-refs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.obj .k{font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-3)}
.obj .t{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg);overflow-wrap:break-word;text-wrap:pretty}
.ai-plain{padding:12px 14px;border-radius:var(--r-12);background:var(--accent-t)}
.ai-plain h4{display:flex;align-items:center;gap:6px;margin:0 0 8px}
.ai-plain h4 svg{color:var(--accent)}
.ai-plain dl{margin:0;display:grid;grid-template-columns:minmax(90px,max-content) minmax(0,1fr);gap:8px 14px}
.ai-plain dt{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg)}
.ai-plain dd,.ai-plain p{margin:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.ai-src{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3)}
.ai-asof{margin-left:2px}
.ai-acts{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:-2px}
.ai-acts .btn.ghost{color:var(--fg-3);padding:0 9px;margin-left:-3px}
.ai-acts .btn.ghost[aria-pressed="true"]{color:var(--fg)}@media (hover:hover){.ai-acts .btn.ghost:hover{color:var(--fg)}}
.ai-acts .btn.pri{margin-right:6px}
.ai-next{display:flex;flex-wrap:wrap;gap:6px}
.sug-chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:var(--r-full);background:var(--bg);box-shadow:var(--sh-tiny);border:1px solid var(--bd-tl);font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg-2);transition:var(--tr-ui)}
@media (hover:hover){.sug-chip:hover{color:var(--fg);box-shadow:var(--sh-low)}}
.sug-chip svg{color:var(--fg-4)}
.dots{display:inline-flex;gap:5px;align-items:center;height:28px}
.dots i{width:6px;height:6px;border-radius:50%;background:var(--fg-4);animation:dots var(--dur-loop) ease-in-out infinite}
.dots i:nth-child(2){animation-delay:calc(var(--dur-loop) / 8)}.dots i:nth-child(3){animation-delay:calc(var(--dur-loop) / 4)}
@keyframes dots{0%,60%,100%{opacity:.3}30%{opacity:1}}   /* I6: the dots fade in turn — no bounce */
/* opening state */
.ask-open{display:flex;flex-direction:column;align-items:center;text-align:center;padding:6vh 0 8px}
/* .ask-hero (the sparkles circle on Ask's opening) — replaced by Dottpace's tile, identity v1.0 (styles/v119-identity.css .ask-hero-dp) */
.ask-open h1{font-size:var(--t-t1);line-height:var(--lh-t1);font-weight:var(--w-semibold);letter-spacing:var(--ls-t1);color:var(--fg);text-wrap:balance;max-width:24ch}
.ask-sub{font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-3);margin-top:8px;max-width:56ch;text-wrap:balance}
.ask-open h2{align-self:stretch;text-align:left;font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-3);margin:26px 0 8px;padding-left:2px}
.sug-grid{align-self:stretch;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr;gap:8px}   /* page notes: every starter card the same height */
.sug{display:grid;grid-template-columns:24px minmax(0,1fr) 16px;gap:10px;align-items:center;min-height:48px;padding:10px 12px;border-radius:var(--r-12);background:var(--bg);border:1px solid var(--bd-tl);box-shadow:var(--sh-tiny);text-align:left;transition:var(--tr-ui)}
@media (hover:hover){.sug:hover{box-shadow:var(--sh-low)}}
.sug-t{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg)}
.sug-go{color:var(--fg-4);display:grid}
@media (hover:hover){.sug:hover .sug-go{color:var(--fg-2)}}
/* composer */
.am-comp{flex:none;padding:0 24px 14px}
.ask-comp{max-width:760px;margin:0 auto;display:flex;flex-direction:column;border-radius:var(--r-card);background:var(--bg);border:1px solid var(--bd);box-shadow:var(--sh-low);transition:var(--tr-ui)}
.ask-comp:focus-within{border-color:var(--bd-3);box-shadow:var(--sh-med)}
.ask-comp textarea{border:0;background:none;resize:none;outline:none;padding:14px 16px 6px;font-size:var(--t-read);line-height:var(--lh-read);color:var(--fg);min-height:52px;max-height:180px}
.ask-comp textarea::placeholder{color:var(--fg-3)}
.ac-row{display:flex;align-items:center;gap:6px;padding:4px 8px 8px 10px;min-width:0}
/* Oct 7 review (D10): the composer's Ask about · Market · Period are dropdown buttons — 8px corners (--r-ctl), as everywhere else; 999px is for status */
.ac-chip{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 9px 0 10px;border-radius:var(--r-ctl);background:var(--bg-3);font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg);white-space:nowrap;min-width:0;transition:var(--tr-ui)}
.ac-chip.is-open{background:var(--bg-5)}@media (hover:hover){.ac-chip:hover{background:var(--bg-5)}}
.ac-chip>svg:first-child{color:var(--fg-3);flex:none}
.ac-x{width:22px;height:22px;border-radius:var(--r-full);display:grid;place-items:center;color:var(--fg-3);margin-left:-2px;flex:none}
@media (hover:hover){.ac-x:hover{background:var(--hover);color:var(--fg)}}
.cp-send:disabled{opacity:.4;cursor:default}
.ask-note{max-width:760px;margin:8px auto 0;text-align:center;font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3)}
.cp-att{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 10px 0}
.cp-att .chip{max-width:260px}
/* Ask — round 2: chart in the answer, feedback, approve on the card, old / failed / stopped answers, edit, repeating questions */
.am-float{position:absolute;top:10px;left:12px;z-index:2;display:flex;gap:2px;padding:3px;border-radius:var(--r-full);background:var(--glass);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);box-shadow:var(--sh-tiny)}
.am-thread>.preview-line{max-width:760px;margin:0 auto 18px}
.al-when{font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3);white-space:nowrap;flex:none;padding-right:4px}
.al-i:hover .al-when,.al-i:focus-within .al-when{display:none}
.lk{display:inline-flex;align-items:center;gap:4px;font:inherit;font-weight:var(--w-medium);color:var(--link-tint,var(--link));border-radius:var(--r-4)}
@media (hover:hover){.lk:hover{text-decoration:underline;text-underline-offset:2px}}
.lk svg{color:currentColor;opacity:.8}
.me-about{font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3);padding-right:6px;display:flex;align-items:center;gap:8px}
.me-edit{width:min(100%,560px);display:flex;flex-direction:column;border-radius:var(--r-card);background:var(--bg);border:1px solid var(--accent);box-shadow:var(--sh-low)}
.me-edit textarea{border:0;background:none;resize:none;outline:none;padding:10px 14px 4px;font-size:var(--t-read);line-height:var(--lh-read);color:var(--fg);min-height:56px;field-sizing:content;max-height:220px}
.me-edit-row{display:flex;justify-content:flex-end;gap:6px;padding:4px 8px 8px}
.obj{padding:9px 12px;border-radius:var(--r-12);background:var(--bg);border:1px solid var(--bd-tl);box-shadow:var(--sh-tiny);transition:var(--tr-ui);display:flex;align-items:center;gap:8px;grid-template-columns:none}
.obj-main{flex:1;min-width:0;display:grid;grid-template-columns:24px minmax(0,1fr);gap:10px;align-items:center;border-radius:var(--r-6)}
@media (hover:hover){.obj:has(a.obj-main:hover){box-shadow:var(--sh-low)}}
.obj .btn.pri.sm{flex:none}
.ai-chart{margin:0;padding:12px 14px 8px;border-radius:var(--r-12);background:var(--bg);border:1px solid var(--bd-tl);box-shadow:var(--sh-tiny)}
.ai-chart figcaption{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.ai-chart .ac-n{font-weight:var(--w-medium)}
.ai-chart figcaption b{font-size:var(--t-hl);line-height:var(--lh-hl);font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
.ai-old{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:7px 10px;border-radius:var(--r-8);background:var(--bg-3);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.ai-old svg{color:var(--fg-3);flex:none}
.ai-old .lk{margin-left:auto}
.ai-fail{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:var(--r-12);background:var(--bg);border:1px solid var(--bd-tl);box-shadow:var(--sh-tiny)}
.ai-fail b{display:block;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
.ai-fail p{margin:2px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.ai-fail .btn{flex:none}
.ai-stop{display:flex;align-items:center;gap:8px;min-height:28px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.ai-fb{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:28px;margin-top:-4px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.ai-fb>svg{color:var(--fg-3)}
.ai-fb .btn.ghost{color:var(--fg-3);padding:0 8px}
@media (hover:hover){.ai-fb .btn.ghost:hover{color:var(--fg)}}
.sug-chip.sm{height:26px;padding:0 10px;font-size:var(--t-co);line-height:var(--lh-co)}
.ai-acts .menu-btn .mb-cv{display:none}
.ai-body.is-streaming>:not(.ai-from):not(.ai-text){display:none}
.cp-send.is-stop svg{fill:currentColor}
.toast-act{margin-left:6px;padding:2px 10px;border-radius:var(--r-full);font:inherit;font-weight:var(--w-semibold);color:inherit;background:color-mix(in srgb,var(--inv-fg) 18%,transparent)}
@media (hover:hover){.toast-act:hover{background:color-mix(in srgb,var(--inv-fg) 28%,transparent)}}
@media (max-width:1320px){.ask{grid-template-columns:232px minmax(0,1fr)}.ai-refs{grid-template-columns:minmax(0,1fr)}}

/* ===================== Findings — list (queue) and one finding (the story in loop order) ===================== */
/* a count on the lit sidebar row sits on a darker fill */
.nav-i.is-on .ct{color:var(--fg-2)}
/* the loop at a glance */
.pipe-c{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 14px;border-radius:var(--r-12);text-align:left;transition:var(--tr-ui)}
@media (hover:hover){.pipe-c:hover{background:var(--hover-solid)}}
.pipe-c.is-on{background:var(--accent-t)}
.pipe-n{font-size:var(--t-t2);line-height:var(--lh-t2);font-weight:var(--w-semibold);letter-spacing:var(--ls-t2);color:var(--fg);font-variant-numeric:tabular-nums}
.pipe-c.is-zero .pipe-n{color:var(--fg-4)}
.pipe-l{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.pipe-c.is-on .pipe-l{color:var(--fg-2)}
/* filter bar */
.fp-q{display:inline-flex;align-items:center;gap:7px;height:28px;width:210px;padding:0 10px;border-radius:var(--r-full);background:var(--bg-3);color:var(--fg-3)}
.fp-q:focus-within{outline:2px solid var(--ring);outline-offset:2px}
.fp-q input{flex:1;min-width:0;border:0;background:none;outline:none;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.fp-q input::placeholder{color:var(--fg-3)}
.prop.is-set{background:var(--accent-t);color:var(--fg)}
.fp-clear{font-size:var(--t-co);line-height:var(--lh-co);margin-left:4px}
/* rows: [impact] [title + why · at stake] [area] [market] [change] [stage] [owner] [age] */
.f-list{display:flex;flex-direction:column}
.f-cols,.f-row{display:grid;gap:10px}
.f-cols{border-bottom:1px solid var(--ln-2);font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-3)}
.f-cols .r{text-align:right}
.f-row{border-bottom:1px solid var(--ln-2);border-radius:var(--r-8);cursor:pointer;transition:var(--tr-ui)}
@media (hover:hover){.f-row:hover{background:var(--hover-solid)}}
.f-row:last-child{border-bottom:0}
   /* v105 (no-cut): a row's name wraps whole */
.f-row.is-closed .f-t{color:var(--fg-2)}
.f-why{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.f-stake{flex:none;white-space:nowrap;font-weight:var(--w-medium);color:var(--fg-2)}
.f-stake::before{margin-right:6px;color:var(--fg-4);font-weight:var(--w-regular);content:none}
.f-col{min-width:0;display:flex;overflow:hidden}
.f-own{display:grid;place-items:center}
.f-age{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-4);font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}
.f-g svg{color:var(--fg-3)}
.f-g .n{font-weight:var(--w-regular);color:var(--fg-4);font-variant-numeric:tabular-nums}
.ch-row{display:grid;grid-template-columns:108px minmax(0,1.3fr) minmax(0,1fr) 24px 52px;gap:10px;align-items:center;padding:0 8px;margin:0 -8px;border-bottom:1px solid var(--ln-2);border-radius:var(--r-8);cursor:pointer;transition:var(--tr-ui)}
@media (hover:hover){.ch-row:hover{background:var(--hover-solid)}}
.ch-t{font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg);overflow-wrap:break-word;text-wrap:pretty}   /* v105 (no-cut): activity lines wrap */
.ch-f{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);overflow-wrap:break-word;text-wrap:pretty}
.nav-i.is-view.is-on svg{color:var(--fg-2)}
/* one finding */
.fd-nav{display:flex;align-items:center;gap:4px;min-height:32px;margin-bottom:6px}
.fd-back{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 10px 0 6px;margin-left:-6px;border-radius:var(--r-full);font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg-3)}
@media (hover:hover){.fd-back:hover{background:var(--hover);color:var(--fg)}}
.fd-pos{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);font-variant-numeric:tabular-nums;margin-right:6px}
.fd-grid{display:grid;grid-template-columns:minmax(0,1fr) 288px;gap:20px;align-items:start}
.fd-closed{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.fd-hd h1{font-size:var(--t-page);line-height:var(--lh-page);font-weight:var(--w-semibold);letter-spacing:var(--ls-page);color:var(--fg);text-wrap:balance;max-width:62ch}
.fd-acts .btn.ghost[aria-pressed="true"]{color:var(--fg)}
.fd-acts .menu-btn .mb-cv{display:none}
.loop{list-style:none;margin:0;padding:16px 20px 14px;display:flex;border-radius:var(--r-card);background:var(--bg);box-shadow:var(--sh-tiny);border:1px solid var(--bd-tl);container:lp / inline-size}
.loop li{position:relative;flex:1;min-width:0;padding-top:24px;display:flex;flex-direction:column;gap:1px}
.loop li:last-child{flex:0 0 auto}
.loop li::before{content:"";position:absolute;top:7px;left:20px;right:4px;height:2px;border-radius:var(--r-2);background:var(--ln)}
.loop li:last-child::before{display:none}
.loop li.is-done::before{background:var(--fg-4)}
.loop-d{position:absolute;top:0;left:0;width:16px;height:16px;border-radius:var(--r-full);display:grid;place-items:center;background:var(--bg);border:2px solid var(--ln);color:var(--inv-fg)}
.loop li.is-done .loop-d{background:var(--fg);border-color:var(--fg)}
.loop li.is-now .loop-d{border-color:var(--accent);box-shadow:inset 0 0 0 3px var(--bg),inset 0 0 0 8px var(--accent)}
.loop-l{font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-3);white-space:nowrap;padding-right:10px}
.loop li.is-done .loop-l{color:var(--fg-2)}
.loop li.is-now .loop-l{color:var(--fg);font-weight:var(--w-semibold)}
.loop-t{font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3);font-variant-numeric:tabular-nums;min-height:14px}
.fd-k{font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-3);white-space:nowrap}
.fd-p{margin:0;font-size:var(--t-read);line-height:var(--lh-read);color:var(--fg);max-width:74ch}
.fd-muted{margin:0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);max-width:80ch}
.fd-chg{display:flex;flex-direction:column;gap:2px}
.fd-num{display:flex;align-items:center;gap:10px;font-variant-numeric:tabular-nums}
.fd-num svg{color:var(--fg-4)}
.fd-before{font-size:var(--t-t2);line-height:var(--lh-t2);color:var(--fg-3)}
.fd-num b{font-size:var(--t-lt);line-height:var(--lh-lt);font-weight:var(--w-semibold);letter-spacing:var(--ls-lt);color:var(--fg)}
.fd-met{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.fd-chart{box-shadow:none;border-color:var(--ln-2)}
.fd-rel{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.fd-rel .fd-k{margin-right:4px}
.fd-causes{display:flex;flex-direction:column}
.fd-causes>.fd-k{margin-bottom:4px}
.cause-row{display:grid;grid-template-columns:132px minmax(0,1.1fr) minmax(0,1fr);gap:10px 16px;align-items:center;min-height:40px;padding:6px 0;border-bottom:1px solid var(--ln-2)}
.cause-row > .lbl{justify-self:start;max-width:100%;white-space:normal;height:auto;min-height:22px;padding-top:3px;padding-bottom:3px;line-height:var(--lh-sh)}   /* D08: the verdict word wraps in its own column — never over the cause */
.cause-row:last-child{border-bottom:0}
.cause-t{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg)}
.cause-w{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.fd-sure{display:flex;gap:10px;align-items:baseline;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.fd-tools{display:flex;gap:6px;margin:-4px 0 0 -9px}
.fd-tools .btn.ghost{color:var(--fg-3)}
.fd-tools .btn.ghost[aria-pressed="true"]{color:var(--fg)}@media (hover:hover){.fd-tools .btn.ghost:hover{color:var(--fg)}}
.fd-stake{display:flex;align-items:baseline;gap:10px}
.fd-stake b{font-size:var(--t-t2);line-height:var(--lh-t2);font-weight:var(--w-semibold);letter-spacing:var(--ls-t2);color:var(--fg);font-variant-numeric:tabular-nums}
.fd-stake span{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.fd-goal{display:grid;grid-template-columns:100px minmax(0,1fr) auto auto;gap:10px;align-items:center;min-height:40px;padding:0 8px;margin:0 -8px;border-radius:var(--r-8);cursor:pointer;transition:var(--tr-ui)}
@media (hover:hover){.fd-goal:hover{background:var(--hover-solid)}}
.fd-goal-n{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fd-goal-v{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.fd-steps{list-style:decimal;margin:0;padding-left:22px;display:flex;flex-direction:column;gap:6px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.fd-steps li::marker{color:var(--fg-4);font-variant-numeric:tabular-nums}
.fd-facts,.fd-res{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;padding:12px 14px;border-radius:var(--r-12);background:var(--bg-2)}
.fd-facts>div,.fd-res>div{display:flex;flex-direction:column;gap:3px;min-width:0}
.fd-facts b,.fd-res b{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
.ev-list{display:flex;flex-direction:column}
.ev-row{display:grid;grid-template-columns:100px minmax(0,1fr) auto 52px;gap:10px;align-items:center;min-height:42px;padding:6px 0;border-bottom:1px solid var(--ln-2)}
.ev-row:last-child{border-bottom:0}
.ev-c{font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.fd-tl{display:flex;flex-direction:column;gap:10px}
.tl-say{display:flex;gap:10px;align-items:flex-start}
.tl-h{display:flex;align-items:baseline;gap:8px;font-size:var(--t-co);line-height:var(--lh-co)}
.tl-h b{font-weight:var(--w-semibold);color:var(--fg)}
.tl-h span{color:var(--fg-3)}
.tl-say p{margin:2px 0 0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.tl-act{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:10px;align-items:center;min-height:22px}
.tl-dot{justify-self:center;width:6px;height:6px;border-radius:var(--r-full);background:var(--fg-4)}
.tl-x{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.tl-x b{font-weight:var(--w-medium);color:var(--fg)}
.fd-say{display:flex;align-items:flex-end;gap:10px;margin-top:4px;padding-top:12px;border-top:1px solid var(--ln-2)}
.fd-say textarea{flex:1;min-width:0;resize:none;outline:none;border:1px solid var(--bd);border-radius:var(--r-12);background:var(--bg);padding:6px 10px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg);field-sizing:content;max-height:120px}
.fd-say textarea:focus{border-color:var(--bd-3)}
.fd-say textarea::placeholder{color:var(--fg-3)}
.fd-fb{margin:0;padding:0 6px}
.fd-side dl{margin:0}
.fd-f dt{padding-top:1px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.fd-f:last-child{border-bottom:0}
.fd-f dd{margin:0;min-width:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.fd-own{display:inline-flex;align-items:center;gap:6px}
.fd-links{display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.fd-links .lk{font-size:var(--t-co);line-height:var(--lh-co);text-align:left}
@media (max-width:1320px){
  .fd-grid{grid-template-columns:minmax(0,1fr) 248px;gap:16px}
  /* Oct 7 review (D08): in the 248px side card the label sits over its value — a value beside an 84px label was 90–114px wide, 8 lines long */
  .fd-side .fd-f{grid-template-columns:minmax(0,1fr);row-gap:2px}
}

/* ===================== Actions — plan (queue), approvals (evidence packs), results (expected against observed) ===================== */
.a-cols{border-bottom:1px solid var(--ln-2);font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-3)}
.a-cols .r{text-align:right}
.a-row{border-bottom:1px solid var(--ln-2);border-radius:var(--r-8);cursor:pointer;transition:var(--tr-ui)}
@media (hover:hover){.a-row:hover{background:var(--hover-solid)}}
.a-row:last-child{border-bottom:0}
.a-row.is-closed .f-t{color:var(--fg-2)}
.pg{display:flex;align-items:center;gap:8px;min-width:0}
.pg-bar{flex:1;min-width:36px;height:4px;border-radius:var(--r-full);background:var(--bg-4);overflow:hidden}
.pg-bar i{display:block;height:100%;border-radius:var(--r-full);background:var(--c-blue)}
.pg-n{flex:none;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.pg.is-wide{flex:1;max-width:320px}
.a-due{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.a-due.is-late{color:var(--neg);font-weight:var(--w-medium)}
/* approvals */
.ap-card{display:flex;flex-direction:column;border-radius:var(--r-card);background:var(--bg);box-shadow:var(--sh-tiny);border:1px solid var(--bd-tl)}
.ap-card h3{margin:2px 0 0;font-size:var(--t-t2);line-height:var(--lh-t2);font-weight:var(--w-semibold);letter-spacing:var(--ls-t2);color:var(--fg)}
@media (hover:hover){.ap-card h3 a:hover{text-decoration:underline;text-underline-offset:3px}}
.ap-why{margin:0;font-size:var(--t-read);line-height:var(--lh-read);color:var(--fg-2);max-width:80ch}
.ap-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:16px;align-items:start;margin-top:2px}
.ap-col{display:flex;flex-direction:column;gap:8px;min-width:0}
.fd-facts.is-stack{grid-template-columns:repeat(2,minmax(0,1fr))}
.ap-from{display:flex;align-items:center;gap:6px;min-height:34px;padding:0 10px;border-radius:var(--r-12);background:var(--bg-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);min-width:0;transition:var(--tr-ui)}
@media (hover:hover){.ap-from:hover{background:var(--bg-3)}}
.ap-from b{font-weight:var(--w-medium);color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.ap-from svg{color:var(--fg-3);flex:none}
.ap-from>span{white-space:nowrap}
.ap-ev{margin-left:auto;padding-left:10px}
.ap-acts{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding-top:12px;border-top:1px solid var(--ln-2)}
.ap-acts .menu-btn .mb-cv,.fd-acts .btn .mb-cv{display:none}
/* results */
.rs-sum{grid-template-columns:repeat(5,minmax(0,1fr))}
.pipe-c.is-static{cursor:default}
@media (hover:hover){.pipe-c.is-static:hover{background:none}}
.r-row{display:grid;grid-template-columns:108px minmax(0,1fr) 128px 128px 190px 52px;gap:12px;align-items:center;padding:0 8px;margin:0 -8px;border-bottom:1px solid var(--ln-2);border-radius:var(--r-8);cursor:pointer;transition:var(--tr-ui);column-gap:28px;min-height:68px}
@media (hover:hover){.r-row:hover{background:var(--hover-solid)}}
.r-row:last-child{border-bottom:0}
.r-num{display:flex;flex-direction:column;gap:2px;min-width:0}
.r-num b{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums;white-space:normal;overflow-wrap:normal;text-wrap:balance}   /* a result wraps, never "…" */
.rs-note{max-width:none;margin-top:12px;padding-top:12px;border-top:1px solid var(--ln-2)}
/* one action */
.ap-state{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.ap-q{color:var(--fg)}
.tk-hd{display:flex;align-items:center;gap:14px}
.tk-list{display:flex;flex-direction:column}
.tk-row{position:relative;display:grid;grid-template-columns:18px minmax(0,1fr) 20px;gap:10px;align-items:center;min-height:38px;border-bottom:1px solid var(--ln-2);cursor:pointer}
.tk-row:last-child{border-bottom:0}
.tk-row input{position:absolute;opacity:0;pointer-events:none}
.tk-box{width:16px;height:16px;border-radius:var(--r-4);border:1.5px solid var(--bd-3);display:grid;place-items:center;color:var(--inv-fg);transition:var(--tr-ui)}
.tk-row.is-done .tk-box{background:var(--fg);border-color:var(--fg)}
.tk-row input:focus-visible+.tk-box{outline:2px solid var(--ring);outline-offset:2px}
.tk-row input:disabled~.tk-t{cursor:default}
.tk-t{font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.tk-row.is-done .tk-t{color:var(--fg-3);text-decoration:line-through;text-decoration-color:var(--fg-4)}
.tk-add{display:flex;align-items:center;gap:8px;min-height:34px;color:var(--fg-3)}
.tk-add input{flex:1;min-width:0;border:0;background:none;outline:none;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.tk-add input::placeholder{color:var(--fg-3)}
.chip.is-ok{color:var(--fg)}
.a-block{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:var(--r-12);background:var(--bg-2)}
.a-block b{display:block;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
.a-block p{margin:2px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.a-block .btn{flex:none}
.vd-big{display:flex;align-items:center;gap:10px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.vd-big .lbl{flex:none;height:26px;padding:0 12px;font-size:var(--t-body);font-weight:var(--w-semibold)}
.mt-row{display:grid;grid-template-columns:minmax(0,1fr) auto 64px;gap:12px;align-items:center;min-height:36px;border-bottom:1px solid var(--ln-2)}
.mt-row:last-child{border-bottom:0}
.mt-v{font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.mt-d{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums;text-align:right}
@media (max-width:1320px){
  .r-row{grid-template-columns:108px minmax(0,1fr) 110px 110px 150px 52px}
  .ap-grid{grid-template-columns:minmax(0,1fr)}
  .ap-note{display:none}
}
/* one plain sentence that says what the page is; the link from an action back to its finding */
.fd-for{display:inline-flex;align-items:center;gap:6px;max-width:100%;margin-bottom:10px;padding:0 10px 0 8px;height:26px;border-radius:var(--r-full);background:var(--bg-3);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);transition:var(--tr-ui)}
@media (hover:hover){.fd-for:hover{background:var(--bg-5)}}
.fd-for svg{color:var(--fg-3);flex:none}
.fd-for span{white-space:nowrap}
.fd-for b{font-weight:var(--w-medium);color:var(--fg);min-width:0;overflow-wrap:break-word;text-wrap:pretty}

/* ===================== Who does the work: prepared by Dottpace, two-way approval, Discuss with Dottpace ===================== */
.f-stake.is-dp{color:var(--link-tint,var(--link))}
.ap-from.is-dp b{color:var(--fg)}
.dp-av.sm{margin:0}
.dr-m{margin-top:3px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.chip.is-ok svg{color:var(--fg-3)}
.md{display:flex;flex-direction:column;gap:10px;font-size:var(--t-read);line-height:var(--lh-read);color:var(--fg)}
.md p{margin:0}
.md h4{margin:6px 0 -2px;font-size:var(--t-hl);line-height:var(--lh-hl);font-weight:var(--w-semibold);color:var(--fg)}
.md ul,.md ol{margin:0;padding-inline-start:22px;display:flex;flex-direction:column;gap:4px}
.md ul{list-style:disc}.md ol{list-style:decimal}
.md li::marker{color:var(--fg-4)}
.md pre{margin:0;padding:12px 14px;border-radius:var(--r-8);background:var(--bg-2);font-family:var(--mono,ui-monospace,SFMono-Regular,Menlo,monospace);font-size:var(--t-co);line-height:18px;color:var(--fg);overflow-x:auto;white-space:pre}
.md pre.ver-body{white-space:pre-wrap;overflow-wrap:break-word;max-height:50vh;overflow-y:auto}   /* v105 (no-cut): a version's whole body — it wraps and scrolls, never "…" after 900 characters */
.md table{width:100%;border-collapse:collapse;font-size:var(--t-body);line-height:var(--lh-body)}
.md th,.md td{padding:7px 10px;border-bottom:1px solid var(--ln-2);text-align:start;white-space:nowrap}
.md th{font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-3)}
.md tr:last-child td{border-bottom:0}
.dr-edit{display:flex;flex-direction:column;border-radius:var(--r-12);border:1px solid var(--accent);background:var(--bg)}
.dr-edit textarea{min-height:320px;resize:vertical;border:0;background:none;outline:none;padding:14px 16px;font-size:var(--t-body);line-height:20px;color:var(--fg);font-family:inherit}
.dr-who{display:flex;align-items:flex-start;gap:8px;padding:9px 12px;border-radius:var(--r-12);background:var(--accent-t);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.dr-who svg{flex:none;margin-top:1px;color:var(--fg-2)}
/* Discuss with Dottpace: the team-chat shape, one action's conversation */
.dz .cp-hd .dz-about{max-width:190px;margin-left:2px}
.dz-intro{display:flex;flex-direction:column;gap:10px;padding:4px 2px}
.dz-intro p{margin:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.dz-chips,.dz-gaps{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.dz-gaps{margin-top:6px;padding-top:12px;border-top:1px solid var(--ln-2)}
.dz-gaps .fd-k{flex-basis:100%}
.dz-gaps .sug-chip svg{color:var(--fg-3)}
.dz-m{display:flex;align-items:flex-start;gap:8px;margin-bottom:10px}
.dz-m .dp-av{margin-top:0}
.dz-m.is-me{justify-content:flex-end}
.dz-tx{max-width:86%;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg);overflow-wrap:anywhere}
.dz-m.is-me .dz-tx{padding:7px 11px;border-radius:var(--r-12);background:var(--bg-3)}
.dz-note{font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3)}
/* while the discussion is open the page makes room for it, so the prepared text is never covered (it starts on the right in Arabic) */
.fd-grid.has-dz{grid-template-columns:minmax(0,1fr);padding-right:436px}
.fd-grid.has-dz .fd-side{display:none}

/* the steps and the four facts share one surface: the story at a glance */
.story{border-radius:var(--r-card);background:var(--bg);box-shadow:var(--sh-tiny);border:1px solid var(--bd-tl)}
.glance{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--ln-2)}
.gl-c:first-child{border-left:0}
.gl-c b{font-size:var(--t-t3);line-height:var(--lh-t3);font-weight:var(--w-semibold);letter-spacing:var(--ls-t3);color:var(--fg);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-variant-numeric:tabular-nums}
.gl-c b.neg{color:var(--neg)}.gl-c b.pos{color:var(--pos)}

/* ===================== The editor: the prepared work as a full page ===================== */
.dp-ed{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.dp-pill{display:inline-flex;align-items:baseline;gap:2px;height:28px;padding:0 12px;border-radius:var(--r-full);background:var(--bg);box-shadow:var(--sh-tiny);font-variant-numeric:tabular-nums;line-height:28px}
.dp-pill b{font-size:var(--t-t3);font-weight:var(--w-semibold);color:var(--fg)}
.dp-pill span{font-size:var(--t-sh);color:var(--fg-3)}
.dp-grid.has-dz{grid-template-columns:minmax(0,1fr);padding-right:436px}
.dp-grid.has-dz .dp-side{display:none}
.dp-main{min-width:0;display:flex;flex-direction:column;border-radius:var(--r-card);background:var(--bg);box-shadow:var(--sh-tiny);border:1px solid var(--bd-tl)}
.dp-main>.dr-who{margin:14px 18px 0}
.dp-title{display:block;width:100%;resize:none;overflow:hidden;border:0;background:none;padding:26px 40px 6px;font-family:inherit;font-size:var(--t-lt);line-height:var(--lh-lt);font-weight:var(--w-semibold);letter-spacing:var(--ls-lt);color:var(--fg)}
.dp-tools{position:sticky;top:var(--top-h);z-index:3;display:flex;flex-wrap:wrap;row-gap:4px;align-items:center;gap:2px;margin:6px 0 0;padding:6px 32px;border-top:1px solid var(--ln-2);border-bottom:1px solid var(--ln-2);background:var(--bg)}
.dp-tools button,.sel-bar button{display:inline-grid;place-items:center;min-width:30px;height:30px;padding:0 6px;border-radius:var(--r-8);color:var(--fg-2);transition:var(--tr-ui)}
@media (hover:hover){.dp-tools button:hover:not(:disabled),.sel-bar button:hover{background:var(--hover);color:var(--fg)}}
.dp-tools button:disabled{opacity:.35;cursor:default}
.sel-sep{width:1px;height:18px;margin:0 6px;background:var(--ln)}
.dp-doc{min-height:420px;padding:22px 40px 40px;outline:none;max-width:none;overflow-wrap:break-word}   /* D06: a long word or link wraps inside the text */
.dp-doc h2{margin:14px 0 -2px;font-size:var(--t-t2);line-height:var(--lh-t2);font-weight:var(--w-semibold);letter-spacing:var(--ls-t2);color:var(--fg)}
.dp-doc h3,.md h3{margin:8px 0 -2px;font-size:var(--t-t3);line-height:var(--lh-t3);font-weight:var(--w-semibold);color:var(--fg)}
.md h2{margin:8px 0 -2px;font-size:var(--t-hl);line-height:var(--lh-hl);font-weight:var(--w-semibold);color:var(--fg)}
.dp-doc ::selection{background:var(--accent-t)}
.dp-doc[contenteditable="false"]{color:var(--fg-2)}
.dp-meta{display:flex;flex-direction:column;gap:12px;padding:18px 40px 26px;border-top:1px solid var(--ln-2)}
.dp-hd{display:flex;align-items:baseline;gap:8px}
.dp-hd b{font-size:var(--t-hl);line-height:var(--lh-hl);font-weight:var(--w-semibold);color:var(--fg)}
.dp-hd .n{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.mf{display:flex;flex-direction:column;gap:5px}
.mf-l{display:flex;justify-content:space-between;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-2)}
.mf-n{font-weight:var(--w-regular);color:var(--fg-3);font-variant-numeric:tabular-nums}
.mf-n.is-over{color:var(--neg);font-weight:var(--w-medium)}
.mf textarea{resize:none;border:1px solid var(--bd);border-radius:var(--r-12);background:var(--bg);padding:8px 12px;font-family:inherit;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.mf textarea:focus{border-color:var(--bd-3)}
.dp-card{padding:16px 18px;border-radius:var(--r-card);background:var(--bg);box-shadow:var(--sh-tiny);border:1px solid var(--bd-tl);display:flex;flex-direction:column;gap:10px}
.dp-score{display:flex;align-items:center;gap:16px}
.dp-score-t{min-width:0;display:flex;flex-direction:column;gap:6px}
.dp-k{font-size:var(--t-hl);line-height:var(--lh-hl);font-weight:var(--w-semibold);color:var(--fg)}
.dp-score-t p{margin:0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.dp-was{display:flex;align-items:center;gap:6px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.dp-was b{font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
.dp-dot{width:8px;height:8px;border-radius:var(--r-full);background:var(--fg-3)}
.sring-wrap{position:relative;flex:none}
.sring{display:block}
.sring-bg{fill:none;stroke:var(--bg-4);stroke-width:9}
.sring-fg{fill:none;stroke:var(--c-blue);stroke-width:9;stroke-linecap:round;transition:stroke-dasharray var(--dur-draw) var(--ease-out)}
.sring-was{fill:var(--fg-3);stroke:var(--bg);stroke-width:2.5}
.sring-n{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0}
.sring-n b{font-size:var(--t-lt);line-height:var(--lh-lt);font-weight:var(--w-semibold);letter-spacing:var(--ls-lt);color:var(--fg);font-variant-numeric:tabular-nums}
.sring-n span{font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3)}
.dp-topics{display:flex;flex-direction:column}
.tp-w{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);font-variant-numeric:tabular-nums;min-width:18px;text-align:right}
.tp-note{font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3);white-space:nowrap}
.dp-facts{margin:0;display:flex;flex-direction:column}
.dp-facts>div{display:grid;grid-template-columns:104px minmax(0,1fr);gap:8px;padding:7px 0;border-bottom:1px solid var(--ln-2)}
.dp-facts>div:last-child{border-bottom:0}
.dp-facts dt{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.dp-facts dd{margin:0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg)}
.dp-note{margin:0 4px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
/* the bar that appears over a selection */
.sel-bar{position:fixed;z-index:700;display:flex;gap:2px;padding:4px;border-radius:var(--r-12);background:var(--elev,var(--bg));box-shadow:var(--sh-high);border:1px solid var(--bd-tl)}
.sel-bar[hidden]{display:none}
.sel-bar .sel-ask{display:inline-flex;gap:6px;padding:0 10px;font-size:var(--t-body);font-weight:var(--w-medium);color:var(--fg);white-space:nowrap}
/* the quoted passage in the discussion */
.dz-q{margin:0 0 6px;padding:2px 0 2px 10px;border-inline-start:2px solid var(--ln);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.dz-quote{display:flex;align-items:flex-start;gap:6px;padding:8px 10px;border-radius:var(--r-8);background:var(--bg-3);margin-bottom:6px}
.dz-quote .dz-chips{margin-top:6px}
.dz-rep{display:flex;margin-top:8px}
@media (max-width:1320px){.dp-title,.dp-doc,.dp-meta{padding-left:28px;padding-right:28px}.dp-tools{padding:6px 20px}.dp-hint{display:none}}

/* ===================== Calmer lists and pages (2026-09-20) =====================
   Lists: six columns, one fixed gap, and every value starts exactly under its header — text left, the date right under a right-aligned
   header; rows are taller and align to their first line. Pages: more air, fewer labels and buttons, secondary sections fold away. */
.f-cols,.f-row{column-gap:28px;padding:0 8px;margin:0 -8px}
.a-cols,.a-row{display:grid;gap:10px;grid-template-columns:76px minmax(0,1fr) 148px 96px 164px 124px;column-gap:28px;padding:0 8px;margin:0 -8px}
.f-cols,.a-cols{height:34px;align-items:center}
.f-row,.a-row{align-items:start;min-height:0;padding-top:15px;padding-bottom:15px}
.f-cell{display:flex;align-items:center;min-height:22px;min-width:0}
.f-none{color:var(--fg-4);font-size:var(--t-body)}
.f-main{min-width:0;display:flex;flex-direction:column;gap:4px}
.f-t{font-size:var(--t-body);font-weight:var(--w-medium);color:var(--fg);overflow-wrap:break-word;text-wrap:pretty;line-height:22px}
.f-s{align-items:center;gap:6px;min-width:0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);display:block;white-space:normal;text-wrap:pretty}   /* v105 (no-cut): the row's second line wraps whole */
.r-row .f-s{display:block;-webkit-line-clamp:none;overflow:visible;text-wrap:pretty}   /* Results: the verdict line is the result — whole */
.f-where{font-weight:var(--w-medium);color:var(--fg-2)}
.f-where+.f-why::before,.f-why+.f-stake::before,.f-stake+.f-stake::before{content:"·";margin:0 7px;color:var(--fg-4);font-weight:var(--w-regular)}
.f-s .f-why,.f-s .f-stake{display:inline;white-space:normal;overflow:visible}
.f-chg{display:flex;flex-direction:column;gap:2px;min-width:0}
.f-chg b{font-size:var(--t-body);line-height:22px;font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
.f-chg.neg b{color:var(--neg)}.f-chg.pos b{color:var(--pos)}
.f-chg i{font-style:normal;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);overflow-wrap:break-word;text-wrap:pretty}
.f-who{gap:8px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.f-who span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.f-row .f-age{line-height:22px}
.a-row .pg,.a-row .a-due{min-height:22px;line-height:22px}
.f-g{display:flex;align-items:center;gap:8px;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-semibold);color:var(--fg-2);height:40px;margin-top:14px}
.f-cols+.f-g,.a-cols+.f-g{margin-top:6px}
.ch-row,.dc-row{column-gap:24px;min-height:46px;padding-block:6px}
.fp-panel{padding:18px 26px 18px}
.pipe{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;padding:6px;border-radius:var(--r-card);background:var(--bg);box-shadow:var(--sh-tiny);border:1px solid var(--bd-tl);margin-bottom:18px}
.fp-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:14px}
/* pages */
.fd-main{display:flex;flex-direction:column;min-width:0;gap:20px}
.fd-hd{padding:4px 4px 10px}
.fd-labels{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:14px}
.fd-sum{margin:8px 0 0;font-size:var(--t-read);line-height:var(--lh-read);color:var(--fg-2);max-width:74ch;margin-top:10px}
.fd-acts{display:flex;flex-wrap:wrap;align-items:center;margin-top:20px;gap:8px}
.fd-sec{padding:22px 26px 24px}
.fd-sec .sec-hd{padding-bottom:12px;margin-bottom:6px}
.fd-bd{display:flex;flex-direction:column;gap:18px;padding-top:12px}
.story .loop{border:0;box-shadow:none;background:none;border-radius:0;padding:20px 26px 16px}
.gl-c{display:flex;flex-direction:column;gap:3px;min-width:0;border-left:1px solid var(--ln-2);padding:16px 26px 18px}
.fd-side{position:sticky;top:calc(var(--top-h) + 16px);border-radius:var(--r-card);background:var(--bg);box-shadow:var(--sh-tiny);border:1px solid var(--bd-tl);padding:6px 20px}
.fd-f{display:grid;grid-template-columns:84px minmax(0,1fr);gap:8px;align-items:start;border-bottom:1px solid var(--ln-2);padding:11px 0}
.fd-sec.is-fold{padding:0}
.fd-sec.is-fold.is-open{padding-bottom:24px}
.fd-sec.is-fold.is-open>.fd-bd{padding:4px 26px 0}
.fold-hd{display:flex;align-items:center;gap:9px;width:100%;min-height:60px;padding:0 22px 0 26px;border-radius:var(--r-card);text-align:left;color:var(--fg-3);transition:var(--tr-ui)}
@media (hover:hover){.fold-hd:hover{background:var(--hover-solid)}}
.fold-hd h2{font-size:var(--t-hl);line-height:var(--lh-hl);font-weight:var(--w-semibold);color:var(--fg);white-space:nowrap}
.fold-s{flex:1;min-width:0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);overflow-wrap:break-word;text-wrap:pretty}
/* Oct 7 review (D13): at phone width every fold's header puts its summary under its title (Website's rule, v92-website.css, for all pages) —
   it was squeezed beside the title into an 83px column, 9 lines long */
@media (max-width:640px){
  .fold-hd{display:grid;grid-template-columns:auto minmax(0,1fr) auto;column-gap:9px;row-gap:2px;align-items:center;padding-top:12px;padding-bottom:12px}
  .fold-hd > .sec-ic{grid-column:1;grid-row:1}
  .fold-hd > h2{grid-column:2;grid-row:1;white-space:normal}
  .fold-hd > .fold-s{grid-column:2;grid-row:2}
  .fold-hd > svg{grid-column:3;grid-row:1}
}
.fd-sec.is-fold.is-open .fold-hd{border-radius:var(--r-card) var(--r-card) 0 0}
/* the prepared work as one calm card on the action page */
.doc-ic{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:var(--r-8);background:var(--bg-3);color:var(--fg-2)}
.doc-x{margin:10px 0 0;font-size:var(--t-body);line-height:20px;color:var(--fg-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sring-wrap.is-sm .sring-n b{font-size:var(--t-t2);line-height:var(--lh-t2);letter-spacing:var(--ls-t2)}
.doc-who{display:inline-flex;align-items:center;gap:6px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.doc-who svg{color:var(--fg-3)}
.ap-list{display:flex;flex-direction:column;margin-bottom:14px;gap:18px}
.ap-card{gap:14px;padding:22px 26px}
@media (max-width:1320px){
  .a-cols,.a-row{grid-template-columns:76px minmax(0,1fr) 124px 88px 156px 28px;column-gap:20px}
  .f-who span,.f-cols>span:nth-child(5),.a-cols>span:nth-child(6){font-size:0}
  .fd-sec{padding:20px 22px 22px}.fold-hd{padding-left:22px;padding-right:18px}.fd-sec.is-fold.is-open>.fd-bd{padding:4px 22px 0}   /* night fixer (#3): sides only — the phone rule keeps its 12px top and bottom */
}

/* 2026-09-20 — findings have no owner (Dottpace found them): five columns; and surfaces that must not sink in dark mode */
.f-cols,.f-row,.f-list.is-single .f-cols,.f-list.is-single .f-row{grid-template-columns:76px minmax(0,1fr) 140px 164px 80px}
.fd-gh{margin:0 -20px;padding:14px 20px 6px;font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-3);border-top:1px solid var(--ln-2)}
.fd-gh:first-child{border-top:0;padding-top:12px}
.fd-gh+.fd-f{border-top:0}
.fd-side .fd-f{border-bottom:0;border-top:1px solid var(--ln-2)}
.fd-side .fd-f:first-child{border-top:0}
.fd-sub{display:block;margin-top:2px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.fd-acts .btn[aria-pressed="true"]{background:var(--accent-t);color:var(--fg)}
/* a chip inside a raised panel or a card uses the fill, not the card colour (which would look sunken in dark) */
.dz .sug-chip,.ai-fb .sug-chip,.fd-fb .sug-chip,.dz-quote .sug-chip{background:var(--bg-3);box-shadow:none;border-color:transparent}
@media (hover:hover){.dz .sug-chip:hover,.ai-fb .sug-chip:hover{background:var(--bg-5)}}
@media (max-width:1320px){.f-cols,.f-row,.f-list.is-single .f-cols,.f-list.is-single .f-row{grid-template-columns:76px minmax(0,1fr) 128px 156px 72px;column-gap:20px}.f-cols>span:nth-child(5){font-size:inherit}}
.fd-f.is-wide{grid-template-columns:minmax(0,1fr)}
.fd-links>span:not(.cg-came-r):not(.fd-own){display:block}   /* night fixer (#4): the owner keeps its avatar gap */



/* ===== Website → Content: the library (v49) — same row rule as Findings and Actions, five columns ===== */
.c-cols,.c-row{display:grid;grid-template-columns:76px minmax(0,1fr) 196px 96px 104px;column-gap:28px;padding:0 8px;margin:0 -8px}
.c-cols{height:34px;align-items:center;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-3);border-bottom:1px solid var(--ln-2)}
.c-cols .is-r{text-align:right}
.c-row{align-items:start;padding-top:15px;padding-bottom:15px;border-bottom:1px solid var(--ln-2);border-radius:var(--r-8);cursor:pointer;transition:var(--tr-ui)}
@media (hover:hover){.c-row:hover{background:var(--hover-solid)}}
.f-list>.c-row:last-child{border-bottom:0}
.c-cols+.f-g{margin-top:6px}
.c-score{min-height:22px;display:flex;align-items:center;font-size:var(--t-body);line-height:22px;color:var(--fg-3);font-variant-numeric:tabular-nums}
.c-score b{font-weight:var(--w-semibold);color:var(--fg)}
.c-num{min-height:22px;line-height:22px;text-align:right;font-size:var(--t-body);color:var(--fg-2);font-variant-numeric:tabular-nums;white-space:nowrap}
@media (max-width:1320px){.c-cols,.c-row{grid-template-columns:64px minmax(0,1fr) 176px 80px 96px;column-gap:20px}}
/* the task only points at the work: its name, where it lives, its state — never the text itself */
.work-ref{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:var(--r-12);border:1px solid var(--ln-2);background:var(--bg)}
.work-ref .doc-ic{flex:none}
.work-ref .wr-t{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg);overflow-wrap:break-word;text-wrap:pretty}
.work-ref .wr-m{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);overflow-wrap:break-word;text-wrap:pretty}
.work-ref .grow{min-width:0}
.dp-task{display:inline-flex;align-items:center;gap:6px;max-width:340px;height:28px;padding:0 10px;border-radius:var(--r-full);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);background:var(--bg-3)}
@media (hover:hover){.dp-task:hover{background:var(--hover);color:var(--fg)}}
.dp-task span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* an element that is switched on later (after the first edit) must really be absent until then */
.edp [hidden]{display:none!important}
.c-row .f-t,.work-ref .wr-t{text-align:left}

/* ===== Content center, complete (v50): editor panels, highlight, intent step, what changes, titles, brand voice, new document ===== */
.seg>button{font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);white-space:nowrap;transition:var(--tr-ui)}
.sel-q{height:28px;padding:0 9px;border-radius:var(--r-8);font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-2);white-space:nowrap}
@media (hover:hover){.sel-q:hover{background:var(--bg-3);color:var(--fg)}}
.dp-hl[aria-pressed="true"]{background:var(--bg-4);color:var(--fg)}
.hl-note{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:12px 40px 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.hl-k{width:12px;height:12px;border-radius:var(--r-4);display:inline-block}
.hl-k.is-good{background:color-mix(in srgb,var(--c-green) 26%,var(--bg))}
.hl-k.is-weak{background:color-mix(in srgb,var(--c-orange) 30%,var(--bg));margin-left:8px}
.hl-n{margin-left:8px;color:var(--fg-3)}
.dp-doc [data-hl],.dp-doc [data-lit]{border-radius:var(--r-6);box-shadow:0 0 0 4px transparent;transition:var(--tr-ui)}
.dp-empty{margin:18px 40px 0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-3)}
.dp-words{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding-top:10px;border-top:1px solid var(--ln-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);font-variant-numeric:tabular-nums}
.dp-words b{font-weight:var(--w-semibold);color:var(--fg)}
.dp-rg{color:var(--fg-3)}
.dp-for{flex-direction:row;align-items:center;gap:12px}
.dp-for p{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.dp-for p b{font-weight:var(--w-semibold);color:var(--fg)}
.dp-for .grow{min-width:0}
/* panels: an index of what the side can show, and one panel open at a time */
.pn-i{display:grid;grid-template-columns:minmax(0,1fr) auto 14px;align-items:center;gap:10px;min-height:42px;padding:0 10px;border-radius:var(--r-8);text-align:left;color:var(--fg-3)}
@media (hover:hover){.pn-i:hover{background:var(--hover-solid)}}
.pn-m{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}
.pn-p,.pn-ex{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.pn-p b{font-weight:var(--w-semibold);color:var(--fg)}
.tc{border-bottom:1px solid var(--ln-2)}
.tc:last-child{border-bottom:0}
.tc-s{justify-content:center;min-width:34px;font-variant-numeric:tabular-nums}
.tc-w{font-size:var(--t-co);color:var(--fg-3);font-variant-numeric:tabular-nums}
.tc-n{color:var(--fg-3)!important}
.id-list{display:flex;flex-direction:column;gap:10px}
.id-row{display:flex;flex-direction:column;gap:5px;padding:10px 12px;border-radius:var(--r-12);background:var(--bg-2)}
.id-row p{font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.id-m{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.hd-tree{display:flex;flex-direction:column;gap:2px}
.hd-i.is-1 .hd-t{font-weight:var(--w-semibold);color:var(--fg)}
.hd-i.is-3{padding-inline-start:16px}
.hd-lv{font-size:var(--t-sh);color:var(--fg-3);font-variant-numeric:tabular-nums}
.rk-list{display:flex;flex-direction:column}
.rk,.vo-row{position:relative;display:flex;align-items:center;gap:10px;min-height:48px;cursor:pointer}
.rk{border-bottom:1px solid var(--ln-2)}
.rk:last-child{border-bottom:0}
.rk input,.vo-row input{position:absolute;opacity:0;pointer-events:none}
.rk input:checked+.tk-box,.vo-row input:checked+.tk-box{background:var(--fg);border-color:var(--fg)}
.rk input:focus-visible+.tk-box,.vo-row input:focus-visible+.tk-box{outline:2px solid var(--ring);outline-offset:2px}
.rk .tk-box,.vo-row .tk-box{flex:none}
.rk .grow{min-width:0}
.rk-t{font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}
.rk-m{font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3)}
.rk.is-off .rk-t{color:var(--fg-3);font-weight:var(--w-regular)}
.vo-row{min-height:32px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
/* what changes on your site */
.df{display:flex;flex-direction:column;gap:14px;padding:24px 40px 40px}
.df-sum{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;padding-bottom:14px;border-bottom:1px solid var(--ln-2)}
.df-sum b{font-size:var(--t-t3);line-height:var(--lh-t3);font-weight:var(--w-semibold);color:var(--fg)}
.df-sum span{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.df-line{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px 12px}
.df-line .fd-k{grid-column:1/-1}
.df-was,.df-now{padding:9px 12px;border-radius:var(--r-8);font-size:var(--t-body);line-height:var(--lh-body)}
.df-was{background:color-mix(in srgb,var(--c-red) 9%,var(--bg));color:var(--fg-2);text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--c-red) 55%,transparent)}
.df-now{background:var(--st-green-bg);color:var(--fg)}
.df-row{display:grid;grid-template-columns:64px minmax(0,1fr);gap:12px;align-items:start}
.df-k{padding-top:9px;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-3)}
.df-b{padding:8px 14px;border-radius:var(--r-8);max-width:none}
.df-b>*{margin:0!important}
.df-b.is-in{background:var(--st-green-bg)}
.df-b.is-out{background:color-mix(in srgb,var(--c-red) 9%,var(--bg));color:var(--fg-2);text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--c-red) 55%,transparent)}
.df-same{margin-left:76px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
/* who is it written for */
.st-panel,.nd{display:flex;flex-direction:column;gap:14px;padding:28px 32px 32px}
.st-h{font-size:var(--t-page);line-height:var(--lh-page);font-weight:var(--w-semibold);letter-spacing:var(--ls-page);color:var(--fg)}
.st-p{max-width:84ch;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.st-p b{font-weight:var(--w-semibold);color:var(--fg)}
.st-list{display:flex;flex-direction:column;gap:12px;margin-top:6px}
.st-card{display:flex;flex-direction:column;gap:14px;padding:18px 20px;border-radius:var(--r-12);border:1px solid var(--ln-2);background:var(--bg)}
.st-card.is-on{border-color:var(--bd-3)}
.st-hd .grow{min-width:0}
.st-hd h3{font-size:var(--t-hl);line-height:var(--lh-hl);font-weight:var(--w-semibold);color:var(--fg)}
.st-hd p{margin-top:2px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.st-share b{font-size:var(--t-t3);line-height:var(--lh-t3);font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
.st-share .pg-bar{grid-column:1/-1;margin-top:4px}
.st-share .pg-bar i{display:block;height:100%;border-radius:inherit;background:var(--fg)}
.st-tbl{display:flex;flex-direction:column}
.st-r.is-h{min-height:30px;border-top:0;font-weight:var(--w-medium);color:var(--fg-3)}
.st-r .is-r,.sn-cols .is-r{text-align:right}
.st-pg{min-width:0;display:flex;flex-direction:column}
.st-pg>span:first-child{color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}
.st-dom{font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3)}
/* titles and descriptions */
.sn-cols,.sn-row{display:grid;column-gap:28px;padding:0 8px;margin:0 -8px;grid-template-columns:minmax(0,1fr) minmax(0,.8fr) minmax(0,1.5fr) 132px}
.sn-cols{height:34px;align-items:center;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-3);border-bottom:1px solid var(--ln-2)}
.sn-row{align-items:start;padding-top:16px;padding-bottom:16px;border-bottom:1px solid var(--ln-2)}
.f-list>.sn-row:last-child{border-bottom:0}
.sn-pg .f-t{text-align:left}
.sn-new{display:flex;flex-direction:column;gap:4px}
.sn-new textarea,.vo-f textarea,.vo-f input[type=text],.nd input[type=text]{width:100%;resize:none;outline:none;border:1px solid var(--bd);border-radius:var(--r-12);background:var(--bg);padding:8px 12px;font-family:inherit;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.sn-new textarea:focus,.vo-f textarea:focus,.vo-f input[type=text]:focus,.nd input[type=text]:focus{border-color:var(--bd-3)}
.sn-new textarea:disabled{background:var(--bg-2);color:var(--fg-2)}
.sn-m{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.sn-m .is-over{color:var(--neg-ink)}
.sn-st{display:flex;flex-direction:column;align-items:flex-start;gap:6px}
/* brand voice and new document */
.vo{display:flex;flex-direction:column;gap:18px;padding:22px 28px 28px;max-width:860px}
.vo-src{display:flex;align-items:center;gap:8px;padding-bottom:16px;border-bottom:1px solid var(--ln-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.vo-f{display:grid;grid-template-columns:220px minmax(0,1fr);gap:8px 24px;align-items:start}
.vo-l{display:flex;flex-direction:column;gap:2px;padding-top:6px}
.vo-l b{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg)}
.vo-l span{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.vo-chips{display:flex;flex-wrap:wrap;gap:6px;padding-top:6px}
.vo-ex{display:flex;flex-direction:column}
.nd{max-width:760px}
.nd-form{display:flex;flex-direction:column;gap:18px;margin-top:8px}
.nd-sel{justify-self:start;max-width:100%}
.nd-acts{display:flex;align-items:center;gap:14px;padding-top:6px}
.dz-ctx{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 16px;border-bottom:1px solid var(--ln-2)}
@media (max-width:1320px){.dp-top .dp-ed{display:none}}
.dp-tools .dp-hl{width:auto;height:28px;padding:0 10px;display:inline-flex;flex-direction:row;align-items:center;gap:6px;border-radius:var(--r-full);font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium)}

/* ===== v51 — the editor, calm: three clusters on top, a score line, three tabs, one list ===== */
.dp-l,.dp-r{display:flex;align-items:center;gap:10px;min-width:0}
.dp-seg{margin:0}
.dp-grid{display:grid;align-items:start;grid-template-columns:minmax(0,1fr) 340px;gap:24px}
.dp-grid.is-solo{grid-template-columns:minmax(0,880px);justify-content:center}
.dp-side{position:sticky;top:calc(var(--top-h) + 16px);display:flex;flex-direction:column;max-height:calc(100dvh - var(--top-h) - 32px);overflow-y:auto;gap:12px}
.dp-head{flex-direction:row;align-items:center;gap:16px;padding:18px 20px}
.dp-head .grow{min-width:0;display:flex;flex-direction:column;gap:3px}
.dp-next{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
.dp-live{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.dp-tabs>button{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:28px;font-size:var(--t-body);line-height:var(--lh-body)}
.dp-tabs>button .n{font-size:var(--t-co);font-variant-numeric:tabular-nums;color:var(--fg-2)}
.dp-side>.dp-card{padding:18px 20px}
.dp-hint{white-space:nowrap;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.pn{display:flex;flex-direction:column;gap:14px}
.td-list{display:flex;flex-direction:column}
.td{border-bottom:1px solid var(--ln-2)}
.td:last-child{border-bottom:0}
.td-hd{display:flex;align-items:flex-start;gap:12px;width:100%;padding:12px 0;text-align:left}
.td:first-child .td-hd{padding-top:2px}
@media (hover:hover){button.td-hd:hover .td-t{color:var(--fg)}}
.td-hd .grow{min-width:0}
.td-t{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg)}
.td-y{margin-top:2px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);text-wrap:pretty}
.td.is-on .td-t{font-weight:var(--w-semibold)}
.td-bd{display:flex;flex-direction:column;gap:10px;padding:0 0 16px}
.td-bd p{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.td-bd .td-w{color:var(--fg-3)}
.td-acts{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding-top:2px}
.td-none{display:flex;align-items:flex-start;gap:10px;color:var(--fg-3)}
.td-none p{font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.dn-hd{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:32px;padding-top:12px;border-top:1px solid var(--ln-2);text-align:left;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-2)}
@media (hover:hover){.dn-hd:hover{color:var(--fg)}}
.dn-hd svg{color:var(--fg-3)}
.dn-i{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:32px;padding:0 8px;margin:0 -8px;border-radius:var(--r-8);text-align:left;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.dn-i.is-on{background:var(--bg-3);color:var(--fg)}@media (hover:hover){.dn-i:hover{background:var(--bg-3);color:var(--fg)}}
/* a switch */
.tg{position:relative;display:flex;align-items:center;gap:10px;padding-top:12px;border-top:1px solid var(--ln-2);cursor:pointer;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.tg input{position:absolute;opacity:0;pointer-events:none}
.tg > .tg-k{order:2;margin-left:auto}   /* v90 fix (SF12): the switch sits right of its words, as everywhere */
.tg input:checked+.tg-k{background:var(--accent)}   /* v90 fix (SF12): the app's one toggle — the accent, never iOS green (.tgl below) */
.tg input:checked+.tg-k::after{transform:translateX(12px)}
.tg input:focus-visible+.tg-k{outline:2px solid var(--ring);outline-offset:2px}
/* v90 fix (SF12, 3 Oct 2026): ONE toggle for the whole app — settings and integrations (.stg-tg-k), Content (.tg-k), Competitor Watch — 30 × 18
   with a 14px knob; on = the accent (never iOS green), off = a neutral track; it sits right of its words. Reduced motion: it doesn't slide. */
.tgl,.stg-tg-k,.tg-k{flex:none;position:relative;width:30px;height:18px;border-radius:var(--r-full);background:var(--bd-3);transition:var(--tr-ui)}
.tgl::after,.stg-tg-k::after,.tg-k::after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:var(--r-full);background:var(--on-fill);box-shadow:0 1px 2px var(--fixed-shade-22);transition:transform var(--dur-1) var(--ease-out)}
input:checked+.tgl,input:checked+.stg-tg-k,input:checked+.tg-k{background:var(--accent)}
input:checked+.tgl::after,input:checked+.stg-tg-k::after,input:checked+.tg-k::after{transform:translateX(12px)}
input:focus-visible+.tgl,input:focus-visible+.stg-tg-k,input:focus-visible+.tg-k{outline:2px solid var(--ring);outline-offset:2px}
input:disabled+.tgl,input:disabled+.stg-tg-k,input:disabled+.tg-k{opacity:.5}
@media (prefers-reduced-motion:reduce){.tgl,.stg-tg-k,.tg-k,.tgl::after,.stg-tg-k::after,.tg-k::after{transition:none}}
.reduce-motion .tgl,.reduce-motion .stg-tg-k,.reduce-motion .tg-k,.reduce-motion .tgl::after,.reduce-motion .stg-tg-k::after,.reduce-motion .tg-k::after{transition:none}
.pn .hl-note{margin:-4px 0 0;gap:6px}
/* how it looks in Google */
.gp{display:flex;flex-direction:column;gap:3px;padding:14px 16px;border-radius:var(--r-12);background:var(--bg-2)}
.gp-u{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gp-t{font-size:var(--t-t3);line-height:var(--lh-t3);font-weight:var(--w-medium);color:var(--fg);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gp-d{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.cw-for{display:flex;align-items:center;gap:12px;padding-bottom:14px;border-bottom:1px solid var(--ln-2)}
.cw-for p{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.cw-for p b{font-weight:var(--w-semibold);color:var(--fg)}
.rk-w{border-bottom:1px solid var(--ln-2)}
.rk-w:last-child{border-bottom:0}
.rk-row{display:flex;align-items:center;gap:8px}
.rk-row .rk{flex:1;min-width:0;border-bottom:0;min-height:52px}
.rk-w .hd-tree{padding:0 0 12px 26px}
.hd-i{display:grid;align-items:baseline;gap:8px;min-height:26px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);grid-template-columns:minmax(0,1fr) auto}
.st-more{align-self:flex-start}
.st-share{flex:none;grid-template-columns:auto 1fr;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);width:auto;display:flex;align-items:baseline;gap:6px}
.st-r{display:grid;column-gap:20px;align-items:center;min-height:44px;border-top:1px solid var(--ln-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);font-variant-numeric:tabular-nums;grid-template-columns:28px minmax(0,1fr) 80px 80px}
/* titles: a row is quiet until someone works on it */
.sn-ask{display:flex;align-items:center;gap:12px;min-height:30px}
.sn-pb{flex-direction:column;gap:2px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);display:block}
@media (max-width:1320px){.sn-cols,.sn-row{column-gap:20px;grid-template-columns:minmax(0,1fr) minmax(0,.8fr) minmax(0,1.4fr) 124px}.dp-grid{grid-template-columns:minmax(0,1fr) 320px;gap:20px}}
.sn-p{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg)}
.sn-now{overflow-wrap:anywhere;text-align:left;margin-top:3px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.lk-i{display:flex;align-items:baseline;gap:10px;min-height:30px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.lk-i .grow{min-width:0}
.lk-i b{font-weight:var(--w-medium);color:var(--fg)}
.lk.is-dim{color:var(--fg-3)}
@media (hover:hover){.lk.is-dim:hover{color:var(--fg)}}

/* ===== v52 — the change log: "it began after X" in a finding, markers on charts, the Changes tab ===== */
.fd-began{display:flex;align-items:flex-start;gap:14px;padding:14px 16px;border-radius:var(--r-12);background:var(--bg-2)}
.fd-began .fd-k{flex:none;padding-top:1px;white-space:nowrap}
.fd-began .grow{min-width:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.fd-began b{font-weight:var(--w-semibold);color:var(--fg)}
.fd-began p{margin-top:4px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.fd-src{flex:none;font-size:var(--t-co);line-height:var(--lh-body);color:var(--fg-3);white-space:nowrap}

.cl-row{display:grid;column-gap:28px;align-items:start;padding:15px 8px;margin:0 -8px;border-bottom:1px solid var(--ln-2);border-radius:var(--r-8);grid-template-columns:132px minmax(0,1fr) minmax(0,.62fr)}
.cl-row[role=button],.cl-row[tabindex]{cursor:pointer;transition:var(--tr-ui)}
@media (hover:hover){.cl-row[tabindex]:hover{background:var(--hover-solid)}}
.f-list>.cl-row:last-child{border-bottom:0}
.cl-led{display:flex;flex-direction:column;gap:2px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.cl-f{color:var(--fg);text-wrap:pretty}
.cl-row .f-age{text-align:right}

/* ===== v52 — Visibility → Search ===== */
.sm-m{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:14px 16px;border-radius:var(--r-12);border:1px solid var(--ln-2);text-align:left;transition:var(--tr-ui)}
@media (hover:hover){.sm-m:hover{background:var(--hover-solid)}}
.sm-m.is-on{border-color:var(--bd-3);background:var(--bg-2)}
.sm-m b{font-size:var(--t-t1);line-height:var(--lh-t1);font-weight:var(--w-semibold);letter-spacing:var(--ls-t1);color:var(--fg);font-variant-numeric:tabular-nums}
.sm-d{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.sm-two>.sec,.sm-chg{padding:20px 24px 22px}
.sm-two .sec-hd,.sm-chg .sec-hd,.sm-card .sec-hd{margin-bottom:14px}
.mv-row,.cg-row{display:flex;align-items:center;gap:12px;min-height:48px;padding:6px 8px;margin:0 -8px;border-bottom:1px solid var(--ln-2);border-radius:var(--r-8)}
@media (hover:hover){.mv-row:hover,.cg-row[tabindex]:hover{background:var(--hover-solid)}}
.cg-row[tabindex]{cursor:pointer}
.mv-row:last-child,.f-list>.cg-row:last-child{border-bottom:0}
.mv-row .grow,.cg-row .grow{min-width:0}
.mv-s{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cg-row>.lbl{flex:none}
.s-cols,.s-row{display:grid;grid-template-columns:minmax(0,1fr) 168px 88px 132px 220px;column-gap:28px;padding:0 8px;margin:0 -8px}
.s-cols.is-pg,.s-row.is-pg{grid-template-columns:minmax(0,1fr) 88px 104px 104px 220px}
.s-cols{height:34px;align-items:center;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-3);border-bottom:1px solid var(--ln-2)}
.s-cols .is-r{text-align:right}
.s-row{align-items:start;padding-top:14px;padding-bottom:14px;border-bottom:1px solid var(--ln-2);border-radius:var(--r-8);transition:var(--tr-ui)}
.s-row[tabindex]{cursor:pointer}
@media (hover:hover){.s-row[tabindex]:hover{background:var(--hover-solid)}}
.f-list>.s-row:last-child{border-bottom:0}
.s-row .f-t{text-align:left}
.s-pos{display:flex;align-items:baseline;gap:8px;min-height:22px;font-size:var(--t-co);line-height:22px;color:var(--fg-3)}
.s-pos b{min-width:22px;font-size:var(--t-body);font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
.s-f{min-height:22px;display:flex;align-items:center;min-width:0}
.s-f .chip{max-width:100%}
.s-f .ell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kw .story{margin-bottom:0}
.gl-s{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
@media (max-width:1320px){.s-cols,.s-row{grid-template-columns:minmax(0,1fr) 150px 72px 116px 170px;column-gap:20px}.s-cols.is-pg,.s-row.is-pg{grid-template-columns:minmax(0,1fr) 72px 96px 96px 170px}}

/* ===== v53 — the Dashboard as the product statement: what changed → why → impact → next; then actions, results, the numbers ===== */
.is-home .lead{max-width:60ch}
.is-home>.sec{margin-top:18px}
.is-home .sec.is-hero>.sec-bd{padding:0}
.hc-area,.hc-d{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.glance.is-counts{border-top:0;border-bottom:1px solid var(--ln-2);margin:0 -4px 6px}
.glance.is-counts .gl-c{cursor:pointer;padding:6px 20px 16px;border-radius:var(--r-8);transition:var(--tr-ui)}
@media (hover:hover){.glance.is-counts .gl-c:hover{background:var(--hover-solid)}}
.glance.is-counts .gl-c b{font-size:var(--t-t1);line-height:var(--lh-t1);letter-spacing:var(--ls-t1)}
.is-overview>.sec-bd{padding:4px 0 0}
a.mini{color:inherit;border-radius:var(--r-8);transition:var(--tr-ui)}
@media (hover:hover){a.mini:hover{background:var(--hover-solid)}}
.mini .ms{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mv.pend{color:var(--fg-3);font-weight:var(--w-regular)}
.src-line{display:inline-flex;align-items:center;gap:8px;margin:22px 2px 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
@media (hover:hover){.src-line:hover{color:var(--fg)}}
.src-line svg{color:var(--fg-4)}
/* a verdict or reading label can be long ("Close to the expected result"): the label column fits it instead of overlapping the title */
.vd-cmp .sep{margin:0 6px;color:var(--fg-4)}

/* ===== v54 — no iOS segmented controls (his rule, 2026-09-22: premium SaaS, not native iOS). Page tabs are text on a baseline with an
   underline on the selected one; small view switches are the same at a smaller size. ===== */
.fp-hd{display:flex;gap:6px;margin-bottom:14px;min-height:34px;align-items:flex-end}
.seg{display:inline-flex;gap:0;padding:0;border-radius:0;background:transparent;box-shadow:inset 0 -1px 0 var(--ln)}
.seg>button{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 2px;margin-right:16px;border-radius:0;color:var(--fg-3);box-shadow:none}
.seg>button:last-child{margin-right:0}
@media (hover:hover){.seg>button:hover{color:var(--fg);box-shadow:inset 0 -2px 0 var(--ln)}}
.seg>button.is-on{background:transparent;color:var(--fg);box-shadow:inset 0 -2px 0 var(--fg)}
.dp-tabs{grid-template-columns:repeat(3,auto);display:flex;justify-content:flex-start}
.dp-tabs>button{padding:0 2px;margin-right:18px}
.dp-tabs>button:last-child{margin-right:0}

/* ===== v55 — Visibility → Search in SaaS grammar: metric toggles over one chart, dense sortable tables, a positions bar ===== */
.sv-card{padding:18px 22px 20px}
.kp-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:auto;border:1px solid var(--ln-2);border-radius:var(--r-8);overflow:hidden;margin-bottom:16px}
.kp-strip.is-5{grid-template-columns:repeat(5,minmax(0,1fr))}
/* page notes (7 Oct): a KPI strip's labels, values and explanations sit on three shared rows (subgrid) — a label that wraps moves the whole row, never one value */

.kp{position:relative;display:grid;grid-row:span 4;grid-template-rows:subgrid;justify-items:start;align-content:start;row-gap:2px;min-width:0;padding:12px 16px 13px;border-left:1px solid var(--ln-2);text-align:left;transition:var(--tr-ui)}
.kp:first-child{border-left:0}
@media (hover:hover){button.kp:hover{background:var(--hover-solid)}}
.kp.is-on::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--kp)}
.kp-l{align-self:end;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.kp.is-on .kp-l{color:var(--fg-2)}
.kp-v{font-size:var(--t-num2);line-height:var(--lh-num2);font-weight:var(--w-semibold);letter-spacing:var(--ls-num2);color:var(--fg);font-variant-numeric:tabular-nums}
.kp-d,.kp-s{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);font-variant-numeric:tabular-nums}
.kp-d.pos{color:var(--pos)}.kp-d.neg{color:var(--neg)}
.sv-foot{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:10px}
.sv-cap{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.pd-bar{flex:1 1 200px;display:flex;gap:2px;height:8px;border-radius:var(--r-full);overflow:hidden}
.pd-bar i{display:block;min-width:4px;height:100%}
.pd-bar i.is-0,.pd-lg i.is-0{background:var(--fg)}
.pd-bar i.is-1,.pd-lg i.is-1{background:color-mix(in srgb,var(--fg) 62%,var(--bg))}
.pd-bar i.is-2,.pd-lg i.is-2{background:color-mix(in srgb,var(--fg) 38%,var(--bg))}
.pd-bar i.is-3,.pd-lg i.is-3{background:color-mix(in srgb,var(--fg) 22%,var(--bg))}
.pd-bar i.is-4,.pd-lg i.is-4{background:color-mix(in srgb,var(--fg) 11%,var(--bg))}
/* dense tables */
.tbl{display:flex;flex-direction:column;min-width:0}
.tbl-h,.tbl-r{display:grid;grid-template-columns:var(--tc);column-gap:16px;align-items:center;padding:0 8px;margin:0 -8px}
.tbl-h{height:32px;border-bottom:1px solid var(--ln);font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-3)}
.tbl-h .r,.tbl-h button.r{justify-content:flex-end;text-align:right}
.tbl-h button{display:inline-flex;align-items:center;gap:3px;min-width:0;color:inherit;font:inherit;white-space:nowrap;border-radius:var(--r-4)}
.tbl-h button.is-on{color:var(--fg)}@media (hover:hover){.tbl-h button:hover{color:var(--fg)}}
.tbl-r{min-height:40px;border-bottom:1px solid var(--ln-2);border-radius:var(--r-6);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2);transition:var(--tr-ui)}
.tbl-r[tabindex]{cursor:pointer}
@media (hover:hover){.tbl-r[tabindex]:hover{background:var(--hover)}}
.tbl>.tbl-r:last-child{border-bottom:0}
.tbl .num{text-align:right;color:var(--fg);font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl .num b{font-weight:var(--w-semibold)}
.tbl .k>:first-child,.tbl .u{overflow-wrap:break-word;text-wrap:pretty}   /* v105 (no-cut): a cell's name and its second line wrap — never "…" */
.tbl .k{align-items:center;gap:6px;min-width:0;color:var(--fg);font-weight:var(--w-medium);display:block;overflow-wrap:break-word}
.tbl .u{display:block;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.tbl .k2{display:flex;flex-direction:column;gap:1px;min-width:0;padding:6px 0}
.fl{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;margin-left:4px;border-radius:var(--r-4);color:var(--fg-3);vertical-align:-5px}
@media (hover:hover){.fl:hover{background:var(--bg-3);color:var(--fg)}}
.chg{color:var(--fg-3)}.chg.up{color:var(--pos)}.chg.down{color:var(--neg)}
.tbl.is-mini .tbl-r{min-height:36px}
.tbl.is-mini .tbl-h{height:28px}
.tbl.is-bare .tbl-h{border-bottom:0;height:0;overflow:hidden}
.tbl-r.is-me .k{font-weight:var(--w-semibold)}
.sv-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start;margin-top:20px}
.sv-tbl{padding:16px 22px 18px}
.sv-tbl .sec-hd{margin-bottom:8px}
.kw-links{margin-top:12px}
.kw .fd-hd{margin-bottom:16px}
.kw .sv-card{margin-top:0}
@media (max-width:1320px){.sv-two{gap:16px}.kp-strip.is-5{grid-template-columns:repeat(5,minmax(0,1fr))}.kp{padding:10px 12px 11px}}   /* D03: the value keeps its size — the tile's padding gives way */
.k-tag{display:inline-block;margin-left:6px;padding:0 6px;border-radius:var(--r-4);background:var(--bg-3);font-size:var(--t-sh);line-height:18px;font-weight:var(--w-medium);vertical-align:1px;color:var(--fg-2)}
.tbl .k,.tbl .u,.tbl .k2{text-align:left}

/* ===== v56 — Dashboard: overview first, three short change cards, decisions | results as short lists (his review, 2026-09-23) ===== */
.hm-t{margin:0;font-size:var(--t-page);line-height:var(--lh-page);font-weight:var(--w-semibold);letter-spacing:var(--ls-page);color:var(--fg)}
.hm-s{margin-top:4px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-3)}
.hm-s a{color:var(--fg);font-weight:var(--w-medium);border-bottom:1px solid var(--bd-3)}
@media (hover:hover){.hm-s a:hover{border-color:var(--fg-3)}}
.hm-tools{display:flex;align-items:center;gap:6px;flex:none}
.is-home>.alert-line{margin:0 0 16px}
.kp-v.is-pend{font-weight:var(--w-regular);color:var(--fg-3)}
.cc-area,.cc-d{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);white-space:nowrap}
.cc-n{font-size:var(--t-lt);line-height:var(--lh-lt);font-weight:var(--w-semibold);letter-spacing:var(--ls-lt);color:var(--fg);font-variant-numeric:tabular-nums}
.cc-n.neg{color:var(--neg)}.cc-n.pos{color:var(--pos)}
.cc-m{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.cc-sk{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);white-space:nowrap}
.qr-s{margin-top:3px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qr-s b{font-weight:var(--w-semibold);color:var(--fg)}
.qr-more{display:inline-flex;align-items:center;gap:3px;margin-top:10px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
@media (hover:hover){.qr-more:hover{color:var(--fg)}}
.kp-v i{font-style:normal;font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-regular);letter-spacing:0;color:var(--fg-3);margin-left:2px}

/* ===== v57 — Dashboard holds its shape for any count; "All" on the chart; decisions and results as full-width tables ===== */
/* 1, 2 or 3 cards always fill the row (auto-fit collapses empty tracks); a card that is wide lays itself out in one line */
.cc-in{display:flex;flex-direction:column;gap:10px;height:100%}
.cc-a,.cc-b{display:flex;flex-direction:column;gap:10px;min-width:0}
@container (min-width:640px){
  .cc-in{display:grid;grid-template-columns:minmax(220px,300px) minmax(0,1fr) auto;column-gap:36px;align-items:center}
  .cc-b{gap:6px}
}

/* ===== v58 (2026-09-23) — Findings and Actions as boards (he chose Style C). Classes: pl-* = the list-page kit, kb-* = the board ===== */
/* D04 (7 Oct) — ONE page head on every page: (1) the title row with the page's primary action at its end (.pl-hd-pri, ui/lboard.js moves it there);
   (2) the summary, 1–2 lines — a longer one folds behind "More" (lboard.js measures it); (3) the toolbar row — context, Ask, Share, the period,
   the market — that wraps in groups; (4) the tabs (.pl-bar). Never a toolbar beside a paragraph. v103-a11y.css stacks it under 760px of content. */
.pl-hd{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"main pri" "tools tools";column-gap:24px;align-items:start;margin:2px 0 16px}
.pl-hd > .grow{grid-area:main;min-width:0}
.pl-hd > .pl-hd-pri{grid-area:pri;display:flex;align-items:center;gap:8px;margin-top:-2px}
.pl-hd > :not(.grow):not(.pl-hd-pri){grid-area:tools;justify-self:start;max-width:100%;margin-top:12px}
.pl-hd > .hm-tools{flex-wrap:wrap;justify-content:flex-start;row-gap:8px}
.pl-t{margin:0;font-size:var(--t-page);line-height:var(--lh-page);font-weight:var(--w-semibold);letter-spacing:var(--ls-page);color:var(--fg)}
.pl-s{margin-top:4px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-3);max-width:110ch;overflow-wrap:break-word}   /* v106: a readable line on the full-width page */
.pl-s.is-clamp{overflow:hidden}
.pl-s-more{display:inline-flex;align-items:center;gap:4px;height:24px;margin-top:2px;padding:0 6px;margin-left:-6px;border-radius:var(--r-ctl);font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-2)}
@media (hover:hover){.pl-s-more:hover{background:var(--hover);color:var(--fg)}}
.pl-s-more[hidden]{display:none}
/* the head's controls are 34px (D10), text 14, icon 16 — the primary in the title row as well */
.pl-hd :is(.btn,.prop,.menu-btn){height:var(--h-head);font-size:var(--t-body);line-height:var(--lh-body)}
.pl-hd :is(.btn,.prop,.menu-btn) svg{width:16px;height:16px}
.pl-hd .ib{width:var(--h-head);height:var(--h-head)}
.pl-hd .hx-range{height:var(--h-head)}
/* tabs: larger text, an icon, a count, one full-width rule — never a capsule track */
.pl-tabs{display:flex;gap:28px;border-bottom:1px solid var(--ln);margin-bottom:16px}
.pl-tab{display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 2px;font-size:var(--t-t3);line-height:var(--lh-t3);font-weight:var(--w-medium);color:var(--fg-3);box-shadow:inset 0 -2px 0 transparent;transition:var(--tr-ui);white-space:nowrap}
.pl-tab svg{color:var(--fg-4)}
@media (hover:hover){.pl-tab:hover{color:var(--fg);box-shadow:inset 0 -2px 0 var(--ln)}}
.pl-tab.is-on{color:var(--fg);box-shadow:inset 0 -2px 0 var(--fg)}
.pl-tab.is-on svg{color:var(--fg)}
.pl-n{min-width:22px;height:20px;padding:0 7px;border-radius:var(--r-full);background:var(--bg-3);font-size:var(--t-meta);line-height:20px;font-weight:var(--w-medium);color:var(--fg-2);text-align:center;font-variant-numeric:tabular-nums}
.pl-tab.is-on .pl-n{background:var(--fg);color:var(--bg)}
/* one row: status chips on the left, search · filter · sort on the right */
.pl-status{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-bottom:16px}
.pl-chips{display:flex;flex-wrap:wrap;gap:6px}
.pl-chip{display:inline-flex;align-items:center;gap:8px;height:30px;padding:0 12px;border-radius:var(--r-full);border:1px solid var(--ln);background:var(--bg);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2);transition:var(--tr-ui)}
@media (hover:hover){.pl-chip:hover{border-color:var(--bd-3)}}
.pl-chip b{font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
.pl-chip.is-on{border-color:var(--fg);background:var(--fg);color:var(--bg)}
.pl-chip.is-on b{color:var(--bg)}
.pl-q{display:inline-flex;align-items:center;gap:8px;width:220px;height:30px;padding:0 12px;border-radius:var(--r-ctl);background:var(--bg-3);color:var(--fg-3);cursor:text}
.pl-q input{flex:1;min-width:0;height:100%;border:0;padding:0;background:none;outline:0;font:inherit;font-size:var(--t-body);color:var(--fg)}
.pl-q input::placeholder{color:var(--fg-2)}
.pl-q:focus-within{outline:2px solid var(--ring);outline-offset:2px}
.pl-on{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:-4px 0 14px}
.pl-tag{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:var(--r-full);background:var(--accent-t);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg)}
.pl-tag svg{color:var(--fg-2)}
@media (hover:hover){.pl-tag:hover svg:last-child{color:var(--fg)}}
.pl-on .lk{margin-left:4px;font-size:var(--t-co)}
/* the board: one column per step; columns stretch to the tallest, so 0, 1 or many cards never leave a hole */
.kb-board{display:grid;gap:14px;align-items:start}   /* v71: each column hugs its own cards — it never stretches to the tallest one */
/* D09 (design review, 7 Oct): a column is never narrower than 264px — when the page can't hold them all, the board scrolls sideways inside itself
   (snapping to a column; ui/lboard.js fades the cut edge as the hint). The page itself never scrolls sideways. */
.kb-board.is-4,.kb-board.is-5{overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;padding-bottom:4px}
.kb-board.is-4{grid-template-columns:repeat(4,minmax(264px,1fr))}
.kb-board.is-5{grid-template-columns:repeat(5,minmax(264px,1fr));gap:12px}
.kb-board.is-4 > .kb-col,.kb-board.is-5 > .kb-col{scroll-snap-align:start}
.kb-board.is-ovf-r{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 48px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 48px),transparent)}
.kb-board.is-ovf-l{-webkit-mask-image:linear-gradient(to right,transparent,#000 48px);mask-image:linear-gradient(to right,transparent,#000 48px)}
.kb-board.is-ovf-l.is-ovf-r{-webkit-mask-image:linear-gradient(to right,transparent,#000 48px,#000 calc(100% - 48px),transparent);mask-image:linear-gradient(to right,transparent,#000 48px,#000 calc(100% - 48px),transparent)}
.kb-col{display:flex;flex-direction:column;gap:8px;min-width:0;padding:6px;border-radius:var(--r-card)}
.kb-colh b{font-weight:var(--w-semibold);color:var(--fg)}
.kb-colh span{color:var(--fg-2);font-variant-numeric:tabular-nums}
.kb-card{position:relative;display:flex;flex-direction:column;gap:8px;padding:12px 14px;border-radius:var(--r-12);background:var(--bg);border:1px solid var(--bd-tl);box-shadow:var(--sh-tiny);color:inherit;transition:var(--tr-ui)}
/* Oct 7 review (D13): position:relative — the card holds its own .sr-only words (a hand-off's "Linear ACM-485 · Filed …"); with no positioned
   ancestor they widened the whole page past the board's scroller (848px at 390) */
@media (hover:hover){.kb-card:hover{border-color:var(--line-strong);box-shadow:var(--sh-low)}}   /* I1: --bd equalled the rest edge — the hover edge is the strong line */
.kb-hd,.kb-ft{display:flex;align-items:center;gap:6px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.kb-hd{flex-wrap:wrap;row-gap:4px}
.kb-ft{margin-top:auto;padding-top:2px}
.kb-ft > span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-t{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg);overflow-wrap:break-word;text-wrap:pretty}   /* v105 (no-cut): a card's name and its line wrap whole */
.kb-n b{flex:none;font-size:var(--t-t2);line-height:var(--lh-t2);font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
.kb-n b.neg{color:var(--neg)}.kb-n b.pos{color:var(--pos)}
.kb-n span{min-width:0;overflow:hidden;text-overflow:ellipsis}
.kb-w{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);text-wrap:pretty}
.kb-w .lbl{margin-right:4px}
.kb-due{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);white-space:nowrap}
.kb-due.is-late{color:var(--neg)}
.kb-pg{display:flex;align-items:center;gap:8px;font-size:var(--t-co);color:var(--fg-2);font-variant-numeric:tabular-nums;max-width:none;flex:0 1 120px;min-width:0}
.kb-pg .pg-bar{flex:1;min-width:24px}
.kb-empty{padding:18px 8px;text-align:center;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.kb-more{display:flex;align-items:center;justify-content:center;gap:4px;height:34px;border-radius:var(--r-12);font-size:var(--t-co);font-weight:var(--w-medium);color:var(--fg-2)}
@media (hover:hover){.kb-more:hover{background:var(--bg);color:var(--fg)}}
/* one column in focus (a chip was picked): the same cards, laid out across the width */
.kb-board.is-one{grid-template-columns:minmax(0,1fr)}
.kb-board.is-one .kb-col{display:grid;align-content:start;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.kb-board.is-one .kb-colh,.kb-board.is-one .kb-empty,.kb-board.is-one .kb-more{grid-column:1/-1}
@media (max-width:1320px){.kb-board.is-5{gap:10px}.kb-board.is-5 .kb-card{padding:11px 12px}.pl-q{width:180px}}
/* the tabs and the tab's tools share one rule */
.pl-bar{display:flex;align-items:center;gap:6px;border-bottom:1px solid var(--ln);margin-bottom:16px;flex-wrap:wrap;row-gap:8px}
.page > :is(section,.sec) + .pl-bar{margin-top:20px}   /* D04: tabs under a card keep their distance from it */
.pl-bar .pl-tabs{border-bottom:0;margin-bottom:0}
.pl-bar .prop{height:30px}
/* detail pages (v58): a blocked or rejected action says so above the steps */
.fd-main > .a-block{margin-bottom:14px}
.a-block.is-gray{background:var(--bg-3)}
.fd-acts .ap-note{margin-left:6px;color:var(--fg-2)}
@media (max-width:1320px){.fd-acts .ap-note{display:inline}}
.kb-pg > span:last-child{flex:none}

/* ===== v58b (2026-09-23) — after the review: one fact in one place, plain words, calmer approvals ===== */
/* the board's column title focuses that column (the chip row that repeated the titles is gone) */
button.kb-colh{width:100%;border-radius:var(--r-12);text-align:left;cursor:pointer;transition:var(--tr-ui)}
@media (hover:hover){button.kb-colh:hover{background:color-mix(in srgb,var(--fg) 5%,transparent)}}
.kb-colx{margin-left:auto;display:inline-flex;color:var(--fg-3);opacity:0;transition:opacity var(--dur-1) var(--ease-out)}
button.kb-colh:hover .kb-colx,button.kb-colh:focus-visible .kb-colx,.kb-board.is-one .kb-colx{opacity:1}
.kb-pgn{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
/* Explain terms: one switch in the top row; the words, in plain words, under the steps */
.fd-plain{margin-right:8px}
.fd-plain[aria-pressed="true"]{background:var(--accent-t);color:var(--fg)}
.fd-plainbox{margin-top:14px}
.fd-plainbox h4 svg{color:var(--fg-2)}
.fd-main > .story + .ai-plain + .fd-sec,.fd-main > .story + .fd-sec{margin-top:14px}
/* the approve button that asks who does the work shows its chevron — it opens a choice */
.menu-btn.is-choice .mb-cv{display:inline-flex!important}
/* approvals: a shorter pack */
.ap-lead{display:flex;align-items:center;gap:8px;margin:0 0 14px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.ap-lead svg{color:var(--fg-3)}
.ap-card .ap-why{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ap-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;padding:12px 16px;border-radius:var(--r-12);background:var(--bg-2)}
.ap-facts>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.ap-facts b{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
.ap-fs{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.ap-steps .ap-more{list-style:none;margin-left:-22px;color:var(--fg-2);font-size:var(--t-co)}
.ap-links{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:var(--t-co);line-height:var(--lh-co)}
.ap-links .lk{display:inline-flex;align-items:center;gap:6px;min-width:0;max-width:100%}
.ap-links .lk svg{color:var(--fg-3);flex:none}
.ap-card .ap-acts{padding-top:12px}
@media (max-width:1320px){.ap-facts{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* v58b details */
.ai-thumbs{display:inline-flex;align-items:center;gap:2px;margin-left:2px}
.ai-thumbs .ib{width:30px;height:30px}
.fd-acts > .btn.ghost:first-child{margin-left:-10px}
.fd-links .fd-own{display:inline-flex;gap:7px}
.ap-steps{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg);flex-direction:row}
.ap-steps .fd-k{margin-right:4px}
.ap-dot{color:var(--fg-3)}
.ap-links .lk bdi{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ===== v59 (2026-09-23) — Ask answers read as a chain; the Dashboard's chart moves to Business overview; card footers match the board ===== */
.ai-blk{display:flex;flex-direction:column;gap:8px}
.ai-h{margin:0;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-semibold);color:var(--fg-2)}
.ai-body > .ai-blk + .ai-blk{margin-top:2px}
.ai-sig.ai-blk ul{color:var(--fg)}

.ai-blk .ai-refs{grid-template-columns:minmax(0,1fr)}

/* ===== v60 (2026-09-23) — Visibility → Search, the full tool: Overview · Keywords · Pages · Research · Links, one search, one page ===== */
.sv .sv-card{margin-bottom:0}
.sv > .sv-card,.sv > .sv-two,.sv > .sv-blk,.sv > .sv-tbl,.kw > .sv-two,.kw > .sv-tbl{margin-top:20px}
.sv > .pl-status + .sec,.sv > .pl-on + .sec,.sv > .sv-rs-card + .pl-status{margin-top:0}
.sv-two.is-eq{align-items:stretch}
.sv-two.is-eq > .sec{display:flex;flex-direction:column}
/* chart notes */
.sv-note{display:flex;align-items:center;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid var(--ln-2)}
.sv-note input{height:32px;padding:0 10px;border-radius:var(--r-8);border:1px solid var(--ln);background:var(--bg);font:inherit;font-size:var(--t-body);color:var(--fg)}
.sv-note input[type="text"]{flex:1;min-width:0}
/* positions */
.pd-bar.is-lg{height:10px;margin:4px 0 12px}
.sv-pos{display:flex;flex-direction:column}
.sv-pos-r{display:flex;align-items:center;gap:10px;height:34px;padding:0 8px;margin:0 -8px;border-radius:var(--r-8);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2);text-align:left;transition:var(--tr-ui)}
@media (hover:hover){.sv-pos-r:hover{background:var(--hover-solid);color:var(--fg)}}
.sv-pos-r i{width:10px;height:10px;border-radius:var(--r-2);flex:none}
.sv-pos-r i.is-0{background:var(--fg)}.sv-pos-r i.is-1{background:color-mix(in srgb,var(--fg) 62%,var(--bg))}.sv-pos-r i.is-2{background:color-mix(in srgb,var(--fg) 38%,var(--bg))}.sv-pos-r i.is-3{background:color-mix(in srgb,var(--fg) 22%,var(--bg))}.sv-pos-r i.is-4{background:color-mix(in srgb,var(--fg) 11%,var(--bg))}
.sv-pos-r b{font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums;min-width:32px;text-align:right}
.sv-pos-r .chg{min-width:40px;text-align:right;font-size:var(--t-co);font-variant-numeric:tabular-nums}
.sv-tbl > .sv-cap:last-child,.sv-tbl > .sv-cap{margin-top:auto;padding-top:10px}
/* searches that name you */
.sv-split{display:flex;gap:2px;height:10px;border-radius:var(--r-full);overflow:hidden;margin:4px 0 14px}
.sv-split i:first-child{background:color-mix(in srgb,var(--fg) 38%,var(--bg))}.sv-split i:last-child{background:var(--c-blue)}
.sv-split-l{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.sv-split-l > div{display:flex;flex-direction:column;gap:2px}
.sv-split-l b{font-size:var(--t-t2);line-height:var(--lh-t2);font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
/* share of voice and simple bar lists */
.sv-sov{display:flex;flex-direction:column}
.sv-sov-r{display:grid;grid-template-columns:minmax(0,160px) minmax(0,1fr) 64px 48px;align-items:center;column-gap:14px;min-height:36px;border-bottom:1px solid var(--ln-2);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.sv-sov-r:last-child{border-bottom:0}
.sv-sov-r.is-me{color:var(--fg);font-weight:var(--w-semibold)}
@media (hover:hover){a.sv-sov-r.is-link:hover{background:var(--hover);border-radius:var(--r-6)}a.sv-sov-r.is-link:hover .sv-sov-n{color:var(--fg);text-decoration:underline;text-underline-offset:3px}}   /* I1: a link row fills like the rows beside it */
.sv-sov-n{overflow-wrap:break-word;text-wrap:pretty}
.sv-sov-b{height:8px;border-radius:var(--r-full);background:var(--bg-3);overflow:hidden}
.sv-sov-b i{display:block;height:100%;border-radius:var(--r-full);background:color-mix(in srgb,var(--fg) 38%,var(--bg))}
.sv-sov-r.is-me .sv-sov-b i{background:var(--c-blue)}
.sv-sov-r b{text-align:right;font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
.sv-sov-r .chg{text-align:right;font-size:var(--t-co);font-variant-numeric:tabular-nums}
/* what Google shows */
.sv-feat{display:flex;flex-direction:column}
.sv-feat-r{display:flex;align-items:center;gap:12px;min-height:36px;padding:0 8px;margin:0 -8px;border-bottom:1px solid var(--ln-2);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg);text-align:left;border-radius:var(--r-6)}
.sv-feat-r:last-child{border-bottom:0}
@media (hover:hover){button.sv-feat-r:hover{background:var(--hover-solid)}}
.sv-feat-r b{font-weight:var(--w-medium);color:var(--fg-2);min-width:76px;text-align:right}
.sv-feat-r svg{color:var(--fg-3)}
/* worth a look */
.sv-rule-n{font-size:var(--t-t1);line-height:var(--lh-t1);font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
.sv-rule-w{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
/* tables of the tool */
.chg.is-w{font-size:var(--t-co);font-weight:var(--w-medium)}
.sv-kw .tbl-r,.sv-pg .tbl-r,.sv-rsx .tbl-r,.sv-ln .tbl-r{min-height:52px}
.sv-trk{width:28px;height:28px;color:var(--fg-3)}
.sv-trk[aria-pressed="true"]{color:var(--fg)}
.sv-top{text-align:left}
.sv-foot.sv-cap{margin:10px 0 0}
.sv-kdw{font-size:var(--t-co);color:var(--fg-2);font-weight:var(--w-regular)}
.sv-act{display:flex;align-items:center;justify-content:flex-end;gap:4px}
.sv-grp{display:flex;align-items:baseline;gap:10px;padding:14px 0 6px;border-bottom:1px solid var(--ln);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.sv-grp b{font-size:var(--t-body);font-weight:var(--w-semibold);color:var(--fg)}
.tbl-r.is-lost .k,.tbl-r.is-lost .num{color:var(--fg-3)}
.sv-to{color:var(--fg-2)}@media (hover:hover){.sv-to:hover{color:var(--fg);text-decoration:underline;text-underline-offset:3px}}
/* research */
.sv-rs-card{margin-bottom:16px}
.sv-rs{display:flex;align-items:center;gap:8px}
.sv-rs-q{flex:1;min-width:0;display:flex;align-items:center;gap:10px;height:40px;padding:0 14px;border-radius:var(--r-12);border:1px solid var(--ln);background:var(--bg);color:var(--fg-3);cursor:text}
.sv-rs-q:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-t)}
.sv-rs-q input{flex:1;min-width:0;height:100%;border:0;padding:0;background:none;outline:0;font:inherit;font-size:var(--t-read);color:var(--fg)}
.sv-rs-q input::placeholder{color:var(--fg-2)}
.sv-rs .btn{height:40px}
.sv-rs-l{margin:10px 0 0}
/* one search / one page */
.kp-strip.is-6{grid-template-columns:repeat(6,minmax(0,1fr))}
.sv-for{margin:0 0 16px;align-self:flex-start}
.sv-for-a{color:var(--fg-2)}
.kw .fd-sum .lk{font-weight:var(--w-medium)}
@media (max-width:1320px){.sv-sov-r{grid-template-columns:minmax(0,130px) minmax(0,1fr) 60px 44px;column-gap:10px}}
.sv-tbl .pd-bar{flex:none}
.sv > .sv-card + .pl-status{margin-top:20px}
.sv .sv-foot .more{white-space:nowrap;display:inline-flex;align-items:center;gap:2px;flex:none}
/* v60b — the rest of Search: page plan, keyword gap, device and city, the audit, checks, groups, first ten results */
.sv-two.is-one{grid-template-columns:minmax(0,1fr)}
.sv-earn{margin-top:14px}
.sv-split-l .chg{font-size:var(--t-co);font-variant-numeric:tabular-nums}
.sv-audit{display:flex;align-items:flex-start;gap:16px;padding:14px 16px;margin:4px 0 12px;border-radius:var(--r-12);background:var(--bg-2)}
.sv-audit b{display:block;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
.sv-audit p{margin:4px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);max-width:92ch}
   /* v105 (no-cut): the why wraps whole (was a 2-line clamp) */
.sv-checks{display:flex;flex-direction:column}
.sv-chk{display:flex;align-items:center;gap:14px;min-height:56px;padding:8px 0;border-bottom:1px solid var(--ln-2)}
.sv-chk:last-child{border-bottom:0}
.sv-chk-s{flex:none;min-width:56px;height:22px;padding:0 8px;border-radius:var(--r-full);background:var(--accent-t);font-size:var(--t-co);line-height:22px;font-weight:var(--w-medium);color:var(--fg);text-align:center}
.sv-chk.is-ok .sv-chk-s{background:var(--bg-3);color:var(--fg-2)}
.sv-chk b{display:block;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg)}
.sv-chk.is-ok b{color:var(--fg-2);font-weight:var(--w-regular)}
.sv-chk p{margin:2px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.sv-grps{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:12px}
.sv-grps .fd-k{margin-right:4px}
.chip-x{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:2px;border-radius:var(--r-full);color:var(--fg-3)}
@media (hover:hover){.chip-x:hover{background:var(--bg-3);color:var(--fg)}}
.sv-grp-f{display:flex;align-items:center;gap:6px}
.sv-grp-f input{height:28px;width:240px;padding:0 10px;border-radius:var(--r-8);border:1px solid var(--ln);background:var(--bg);font:inherit;font-size:var(--t-body);color:var(--fg)}
.sv-serp .tbl-r{min-height:48px}
.kw > .sv-tbl.sv-serp-c,.kw > .sv-tbl{margin-top:20px}
.pl-status .prop{height:30px}

/* ===== v61 — SEO Search → Competitors: alerts, a competitor's page (why · what to do · battle · gaps · moves · pages) ===== */
.cp-lead{margin:0 0 10px;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg);text-wrap:pretty}
.cp-why{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:8px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.cp-todo,.cp-list{display:flex;flex-direction:column}
.cp-do,.cp-li{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--bd-tl)}
.cp-do:first-child,.cp-li:first-child{border-top:0;padding-top:2px}
.cp-do b,.cp-li b{display:block;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
.cp-do p,.cp-li p{margin:2px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.cp-do .btn{flex:none}
.cp-li-m{display:block;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.cp-li-d{display:block;font-size:var(--t-sh);line-height:18px;color:var(--fg-3);font-variant-numeric:tabular-nums}
.cp-more{margin-top:8px}
.cp .sv-two .sv-tbl .sv-cap,.cp .sv-tbl > .sv-cap{margin-top:10px}

/* ===== v62 — Visibility → Competitors: the section (story, tabs), a competitor, Content Intelligence (their page against yours) ===== */
.cps-lead{margin:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg);text-wrap:pretty}
.cps .sv-card + .fp-panel,.cps .pl-status + .fp-panel{margin-top:12px}
.cp-bt .tbl-r b,.cp .is-mini b{font-weight:var(--w-semibold);color:var(--fg)}
.cp-gp .sv-act,.cp .sv-act{display:flex;align-items:center;justify-content:flex-end;gap:6px}
.ci-status{margin:4px 0 0}
.ci-ol{display:flex;flex-direction:column}
.ci-h{display:flex;align-items:center;gap:8px;padding:7px 0;border-top:1px solid var(--bd-tl);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.ci-h:first-child{border-top:0;padding-top:0}
.ci-h.l1{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
.ci-h.l2{font-weight:var(--w-medium);color:var(--fg)}
.ci-h.l3{padding-left:16px}
.ci-h .k-tag{margin-left:auto}
.ci-cmp .ci-diff{color:var(--fg);font-weight:var(--w-medium)}
.cp.ci > .sv-card,.cp.ci > .sv-tbl{margin-top:20px}
.ci-qs{margin:6px 0 0;padding-left:18px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:24px;row-gap:4px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}

/* ===== v63 — the change ledger (who made it · how Dottpace knows · live / seen by Google · its verdict) ===== */
@media (max-width:1320px){.cl-row{column-gap:20px;grid-template-columns:124px minmax(0,1fr) minmax(0,.62fr)}}
/* Oct 7 review (D13 · D08): at phone width a change is a labelled row — who, then what changed, then what it did under its own small label
   (the column heads go); it was three columns of 124 / 96 / 60px, with "What it did" 14 lines long */
@media (max-width:600px){
  .cl-row,.cl-outside .cl-row{grid-template-columns:minmax(0,1fr);row-gap:8px}
  .cl-head,.cl-outside .cl-head{display:none}
  .cl-led:not(:empty)::before{content:"What it did";display:block;margin-bottom:2px;font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-3)}
  .cl-outside .cl-led:not(:empty)::before{content:"What it can move"}
}
.cl-tools{display:flex;gap:8px;align-items:center}
.cl-sum{margin:0 0 6px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.cl-v{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cl-after{font-size:var(--t-co);color:var(--fg-4)}
.cl-sub{color:var(--fg-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* v63 — how an approved fix reaches the site */
.ap-path{display:flex;align-items:center;gap:7px;margin:10px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.ap-path svg{color:var(--fg-4);flex:none}
/* v63 — one change: before → after, did it go live, what else happened at the same time */
.cg-ba{display:grid;grid-template-columns:minmax(0,1fr) 28px minmax(0,1fr);gap:12px;align-items:stretch}
.cg-b,.cg-a{display:flex;flex-direction:column;gap:6px;padding:12px 14px;border-radius:var(--r-12);background:var(--bg-2);min-width:0}
.cg-a{background:var(--bg-3)}
.cg-b p,.cg-a p{margin:0;font-size:var(--t-body,14px);line-height:1.45;color:var(--fg);overflow-wrap:anywhere}
.cg-b p{color:var(--fg-2)}
.cg-arr{display:flex;align-items:center;justify-content:center;color:var(--fg-4)}
.cg-line{display:flex;gap:10px;align-items:baseline;margin-top:10px}
.cg-steps{display:flex;flex-direction:column;gap:10px}
.cg-step{display:flex;gap:10px;align-items:flex-start}
.cg-step>div{display:flex;flex-direction:column;gap:2px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.cg-step b{color:var(--fg);font-weight:var(--w-medium)}
.cg-dot{flex:none;width:18px;height:18px;margin-top:1px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1.5px solid var(--fg-4);color:var(--bg)}
.cg-step.is-done .cg-dot{background:var(--c-green);border-color:var(--c-green)}
.cg-near{display:flex;align-items:center;gap:12px;padding:10px 8px;margin:0 -8px;border-bottom:1px solid var(--ln-2);border-radius:var(--r-8);font-size:var(--t-co);color:var(--fg)}
.cg-near:last-child{border-bottom:0}
.cg-near[tabindex]{cursor:pointer}
@media (hover:hover){.cg-near[tabindex]:hover{background:var(--hover-solid)}}

/* ===== v64 — Visibility → AI Search ===== */
.ai-rate{display:flex;flex-direction:column;align-items:flex-end;line-height:1.2}
.ai-rate small{font-size:var(--t-sh);color:var(--fg-4);font-weight:var(--w-regular)}
.ai-chain{display:flex;align-items:stretch;gap:6px;flex-wrap:wrap}
.ai-ch{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 0;padding:10px 12px;border-radius:var(--r-8);background:var(--bg-2)}
.ai-ch b{font-size:var(--t-t3,17px);font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
.ai-ch-ar{display:flex;align-items:center;color:var(--fg-4)}
.ai-cmp{display:flex;flex-direction:column;gap:8px}
.ai-cmp-r.is-you{color:var(--fg);font-weight:var(--w-medium)}
.ai-cmp-r b{text-align:right;font-variant-numeric:tabular-nums;color:var(--fg)}
.ai-cmp-r .chg{text-align:right}
.ai-bar{height:8px;border-radius:4px;background:var(--bg-3);overflow:hidden}
.ai-bar i{display:block;height:100%;border-radius:4px}
.ai-who{font-size:var(--t-co);color:var(--fg-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.ai-note{margin-top:10px}
.ai-added{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:var(--t-co);color:var(--fg-2)}
.ai-added svg{color:var(--c-green)}
.ai-bad{color:var(--neg)}
.ai-themes{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:14px}
.ai-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.ai-vis{display:flex;gap:28px;margin-bottom:12px}
.ai-vis div{display:flex;flex-direction:column;gap:2px}
.ai-vis b{font-size:var(--t-t2);font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
.ai-js,.ai-ad{display:flex;flex-direction:column;gap:3px;padding:10px 0;border-bottom:1px solid var(--ln-2)}
.ai-js:last-child,.ai-ad:last-child{border-bottom:0}
.ai-ans{margin:0 0 12px;font-size:var(--t-body,14px);line-height:1.6;color:var(--fg-2);max-width:80ch}
.ai-ans mark{background:color-mix(in srgb,var(--c-blue) 18%,transparent);color:var(--fg);border-radius:3px;padding:0 2px}
.ai-src-r,.ai-mv{display:flex;align-items:flex-start;gap:10px;padding:8px 0;border-bottom:1px solid var(--ln-2);font-size:var(--t-co);color:var(--fg)}
.ai-src-r:last-child,.ai-mv:last-child{border-bottom:0}
.ai-tiles{margin:14px 0 16px}
.ai-claim .u b{color:var(--fg);font-weight:var(--w-medium)}
.ai-list{display:flex;flex-direction:column}
.ai .pl-tab{white-space:nowrap}
.ai .sv-split-l{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.ai-cmp-r{display:grid;gap:12px;align-items:center;font-size:var(--t-co);color:var(--fg-2);grid-template-columns:minmax(0,150px) minmax(0,1fr) 64px 64px}
.ai-cmp-r b small{display:block;font-size:var(--t-sh);color:var(--fg-4);font-weight:var(--w-regular)}
.ai-vis div .sv-cap{display:block}
/* v65 · AI Search: suggested questions (signals with their source), the sampling plan and its history */
.ai-sig{display:flex;flex-direction:column;gap:3px;min-width:0;font-size:var(--t-co);line-height:var(--lh-co,1.4);color:var(--fg-2)}
.ai-sig b{font-weight:var(--w-medium);color:var(--fg)}
.ai-plan-l{margin:2px 0 12px;font-size:var(--t-body);color:var(--fg-2)}
.ai-plan .tbl-r.is-off{opacity:.55}
.ai-hist-h{margin-top:18px}
.ai-hist{display:grid;grid-template-columns:104px 110px minmax(0,1fr) auto;gap:12px;align-items:baseline;padding:9px 0;border-bottom:1px solid var(--ln-2);font-size:var(--t-co);color:var(--fg-2)}
.ai-hist:last-child{border-bottom:0}
.ai-hist b{color:var(--fg);font-weight:var(--w-medium)}
.ai-hist.is-now b::after{content:"now";margin-left:6px;padding:1px 6px;border-radius:999px;background:var(--bg-3);color:var(--fg-3);font-size:var(--t-sh);font-weight:var(--w-regular)}
/* v65 · Changes: released together, before / after without code */
.cl-rel{display:flex;align-items:center;gap:10px;margin:8px -8px 0;padding:10px 8px;border-radius:var(--r-8);background:var(--bg-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);margin-left:-8px;margin-right:-8px}
.cl-rel svg{color:var(--fg-3);flex:none}
.cl-rel b{color:var(--fg);font-weight:var(--w-medium)}
.cl-row.is-rel{padding-left:28px;background-image:linear-gradient(var(--ln-2),var(--ln-2));background-size:1.5px 100%;background-position:15px 0;background-repeat:no-repeat}
@media (hover:hover){.cl-row.is-rel[tabindex]:hover{background-color:var(--bg-2)}}
.cg-vis{display:flex;flex-direction:column;gap:12px;margin-top:16px}
.cg-vis-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;font-size:var(--t-co)}
.cg-vis-h b{color:var(--fg);font-weight:var(--w-medium)}
.cg-vis-2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
.cg-vis-2>div{display:flex;flex-direction:column;gap:6px;min-width:0}
.cg-phone{max-width:250px;display:flex;flex-direction:column;gap:6px;padding:10px;border:1px solid var(--ln-2);border-radius:18px;background:var(--bg)}
.cg-url{padding:0 4px 6px;border-bottom:1px solid var(--ln-2);font-size:var(--t-sh);color:var(--fg-4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cg-blk{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:30px;padding:6px 10px;border-radius:var(--r-8);background:var(--bg-2);font-size:12px;line-height:1.3;color:var(--fg-2)}
.cg-blk.is-big{min-height:72px;background:var(--bg-3)}
.cg-blk.is-new{background:var(--st-orange-bg);box-shadow:inset 0 0 0 1.5px var(--c-orange);color:var(--fg)}
.cg-blk.is-changed{box-shadow:inset 0 0 0 1.5px var(--c-orange);color:var(--fg)}
.cg-blk.is-late{opacity:.62;box-shadow:inset 0 0 0 1.5px var(--fg-4)}
.cg-blk i{flex:none;font-style:normal;font-size:var(--t-sh);color:var(--warn-ink);white-space:nowrap}   /* v103 (AX7, audit D5): the "changed" tag in ink (the orange fill was 2.23:1) */
.cg-blk.is-late i{color:var(--fg-3)}
.cg-serp{display:flex;flex-direction:column;gap:3px;padding:12px 14px;border:1px solid var(--ln-2);border-radius:var(--r-12);background:var(--bg)}
.cg-serp-u{font-size:12px;color:var(--fg-3)}
.cg-serp b{font-size:16px;line-height:1.35;font-weight:var(--w-regular);color:var(--info-ink)}   /* v105 (a11y): a result's blue title in the info ink — --c-blue read 3.5:1 on white */
.cg-serp p{margin:0;font-size:13px;line-height:1.45;color:var(--fg-2)}
.cg-ol{margin:0;padding:10px 14px 10px 34px;display:flex;flex-direction:column;gap:6px;border:1px solid var(--ln-2);border-radius:var(--r-12);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.cg-ol li.is-new{color:var(--fg)}
.cg-ol i{margin-inline-start:6px;font-style:normal;font-size:var(--t-sh);color:var(--pos-ink)}
.cg-diff{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.2fr);gap:8px 16px;padding-top:12px;border-top:1px solid var(--ln-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.cg-diff b{font-weight:var(--w-medium);color:var(--fg)}
/* v65 · Competitors: paid search (their ads) */
.cp-ad{display:flex;flex-direction:column;gap:3px;padding:10px 0;border-bottom:1px solid var(--ln-2)}
.cp-ad:last-child{border-bottom:0}
.cp-ad-h{display:flex;align-items:center;gap:8px;font-size:var(--t-co)}
.cp-ad-h b{color:var(--fg);font-weight:var(--w-medium)}
/* v65 · tabs that don't fit one line go under More */
.pl-tab.pl-more{background:none;border:0;cursor:pointer;font:inherit;font-size:var(--t-t3);font-weight:var(--w-medium);color:var(--fg-3)}
.pl-tab.pl-more .mb-cv svg{color:var(--fg-4)}
.cp-ads-g{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:28px}
.cp-ads-g .cp-ad:nth-last-child(-n+2):nth-child(odd),.cp-ads-g .cp-ad:last-child{border-bottom:0}
.ai-sug .tbl-r,.ai-plan .tbl-r{height:auto;min-height:48px;padding-top:9px;padding-bottom:9px}
.ais-src .k{display:flex;align-items:center;gap:8px}

/* ===== v67 Visibility → Local ===== */
.lc .kp.is-static{cursor:default}
.lc .tbl .num small{margin-left:4px;font-size:var(--t-sh);color:var(--fg-3);font-weight:var(--w-regular)}
.lc .tbl .num .chg{font-size:var(--t-co)}
.lc-due{color:var(--warn-ink)!important;font-weight:var(--w-semibold)}
.lc-rv-s{font-size:var(--t-sh);color:var(--fg-3);font-weight:var(--w-regular)}
/* the grid: one dot per check, the store in the middle */
.lc-gridwrap{display:grid;grid-template-columns:auto minmax(0,1fr);gap:24px;align-items:start}
.lc-grid{display:grid;grid-template-columns:repeat(var(--g),30px);grid-auto-rows:30px;gap:6px;padding:14px;border-radius:var(--r-12);background:radial-gradient(circle at 50% 50%,color-mix(in srgb,var(--c-blue) 9%,var(--bg-2)) 0,var(--bg-2) 72%)}
.lc-pt{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;font-size:11px;font-weight:var(--w-semibold);font-variant-numeric:tabular-nums;color:var(--on-fill);cursor:default}
.lc-pt.is-pack{background:var(--c-green);color:var(--fixed-ink)}   /* v103 (AX7, audit V1): dark ink on the fill — white was 2.2:1, #1d1d1f is ≥ 7:1 */
.lc-pt.is-near{background:var(--c-orange);color:var(--fixed-ink)}
.lc-pt.is-far{background:var(--fg-4);color:var(--bg)}
.lc-pt.is-out{background:var(--c-red);font-size:9px}
.lc-pt.is-home{box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--fg)}
.lc-gstats{display:flex;flex-direction:column;gap:14px;min-width:0}
.lc-gstats > div{display:flex;flex-direction:column;gap:2px}
.lc-gstats b{font-size:var(--t-t3);line-height:var(--lh-t3);font-weight:var(--w-semibold);font-variant-numeric:tabular-nums}
.lc-legend{flex-direction:column;gap:6px!important;padding-top:10px;border-top:1px solid var(--ln-2)}
.lc-legend span{display:flex;align-items:center;gap:8px;font-size:var(--t-co);color:var(--fg-2)}
.lc-legend i{width:10px;height:10px;border-radius:50%}
.lc-legend i.is-pack{background:var(--c-green)}.lc-legend i.is-near{background:var(--c-orange)}.lc-legend i.is-far{background:var(--fg-4)}.lc-legend i.is-out{background:var(--c-red)}
.lc-cell{justify-self:end;padding:2px 6px;margin:-2px -6px;border-radius:var(--r-6)}
@media (hover:hover){.lc-cell:hover{background:var(--bg-3)}}
/* checks × locations */
.lc-mx{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0;padding:2px 0;text-align:left}
button.lc-mx{border-radius:var(--r-6)}
@media (hover:hover){button.lc-mx:hover .lbl{filter:brightness(.96)}}
.lc-mx small{font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3);white-space:normal;text-wrap:pretty}
.lc-prof .tbl-r,.lc-list .tbl-r{align-items:start}
.lc-prof .k2 .u,.lc-list .k2 .u{white-space:normal}
/* reviews and the inline reply */
.lc-rvs{display:flex;flex-direction:column}
.lc-rv{display:flex;flex-direction:column;gap:6px;padding:12px 0;border-bottom:1px solid var(--ln-2)}
.lc-rv:first-child{padding-top:2px}
.lc-rv:last-child{border-bottom:0}
.lc-rv-h b{font-weight:var(--w-semibold);color:var(--fg)}
.lc-stars{color:var(--c-orange);letter-spacing:1px;font-size:12px}
.lc-rv-t{margin:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg);max-width:80ch}
.lc-rv-a{margin:0;padding:8px 12px;border-radius:var(--r-8);background:var(--bg-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);max-width:80ch}
.lc-rv-a b{color:var(--fg);font-weight:var(--w-medium)}
.lc-reply{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.lc-reply textarea{width:100%;max-width:80ch;resize:vertical;min-height:72px;padding:10px 12px;border:1px solid var(--ln);border-radius:var(--r-8);background:var(--bg);color:var(--fg);font:inherit;font-size:var(--t-body);line-height:var(--lh-body)}
.lc-reply-f{display:flex;align-items:center;gap:8px}
.lc-reply-f .sv-cap{margin:0}
.lc-p{margin:0 0 8px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg);max-width:80ch;text-wrap:pretty}
.lc .ai-mv .grow b{font-weight:var(--w-medium)}
@media (max-width:1320px){.lc-grid{grid-template-columns:repeat(var(--g),26px);grid-auto-rows:26px;gap:5px}.lc-pt{width:26px;height:26px;font-size:10px}.lc-gridwrap{gap:16px}}
.lc .pl-status .more{white-space:nowrap}
.lc > .pl-status + .sv-two{margin-top:0}
.lc .ai-cmp-r{grid-template-columns:minmax(0,1fr) minmax(0,.7fr) 72px 0}
.lc-low{color:var(--warn-ink)!important}
.lc .lc-rt .num small,.lc .lc-locs .num small{margin-left:5px}
.lc .pl-status > .more{display:inline-flex;align-items:center;gap:2px;flex:none}
.lc .ai-cmp + .sv-cap{margin-top:12px}
.lc .sv-cap a{color:var(--link)}   /* contrast fix (2026-10-03): --c-blue was 3.5:1 on white */
@media (hover:hover){.lc .sv-cap a:hover{text-decoration:underline}}

/* ===== v69 — rules from the ChatGPT review: approval check, done → live → measuring, the result receipt ===== */
.btn:disabled,.btn[disabled]{opacity:.45;cursor:not-allowed}
.lg-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:2px 0 12px}
.lg-s{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border-radius:var(--r-8);background:var(--bg-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.lg-s b{display:block;font-weight:var(--w-semibold);color:var(--fg-2)}
.lg-s.is-ok b{color:var(--fg)}
.lg-sub{display:block;color:var(--fg-3)}
.lg-i{flex:none;display:flex;align-items:center;justify-content:center;width:18px;height:18px;margin-top:1px;border-radius:50%;border:1.5px solid var(--ln);color:var(--on-fill)}
.lg-s.is-ok .lg-i{background:var(--c-green);border-color:var(--c-green)}
.lg-s.is-wait .lg-i{border-color:var(--c-blue)}
.lg-spin{width:8px;height:8px;border-radius:50%;background:var(--c-blue);animation:lg-p var(--dur-loop) ease-in-out infinite}
@keyframes lg-p{0%,100%{opacity:.3}50%{opacity:1}}
@media (prefers-reduced-motion:reduce){.lg-spin{animation:none}}
.fd-res.is-receipt{margin-top:10px;padding-top:10px;border-top:1px solid var(--ln-2)}

/* ===== v68 — numbered chart markers + the list of events under the chart (the review: tags on the plot were cut off and overlapped) ===== */
.annot-n{position:absolute;transform:translateX(-50%);display:inline-flex;white-space:nowrap;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 4px;border-radius:var(--r-full);border:1px solid var(--bd-2);background:var(--elev);box-shadow:var(--sh-tiny);font-size:var(--t-sh);line-height:1;font-weight:var(--w-semibold);color:var(--fg-2);font-variant-numeric:tabular-nums;z-index:2}
button.annot-n{cursor:pointer}@media (hover:hover){button.annot-n:hover{border-color:var(--bd-3);color:var(--fg)}}
.annot-n.is-cause{border-color:var(--c-orange);color:var(--warn-ink)}.annot-n.is-live{border-color:var(--c-green);color:var(--pos-ink)}.annot-n.is-start{border-color:var(--c-blue);color:var(--info-ink)}   /* v103 (AX7, audit V5): the ring in the fill, the number in ink */
.chart-ev{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:4px 16px}
.chart-ev li{min-width:0}
.ce-i{display:inline-flex;align-items:baseline;gap:6px;max-width:100%;padding:0;border:0;background:none;font:inherit;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);text-align:left}
button.ce-i{cursor:pointer}@media (hover:hover){button.ce-i:hover span{color:var(--fg);text-decoration:underline;text-underline-offset:2px}}
.ce-n{flex:none;display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;border-radius:var(--r-full);background:var(--bg-3);font-size:var(--t-sh);font-weight:var(--w-semibold);color:var(--fg-2);font-variant-numeric:tabular-nums}
/* Oct 7 review (D03): a chart's event numbers — on the chart and in its legend — are 12px, never 11 (the markers grow to 20px, the legend's to 18) */
.ce-i.is-cause .ce-n{background:color-mix(in srgb,var(--c-orange) 18%,var(--bg));color:var(--warn-ink)}.ce-i.is-live .ce-n{background:color-mix(in srgb,var(--c-green) 18%,var(--bg));color:var(--pos-ink)}   /* v103 (AX7, audit V5): was 1.9–2.0:1 */
/* the Changes builder (7 Oct): GENERAL events (Google's updates, holidays, other pages) are drawn dashed and quiet — secondary to the chart's own
   markers, still ≥ 3:1 on the card (--chart-quiet); a person's NOTE is a hollow marker, never a filled one; the general events' line in the list,
   the "All events" switch beside the legend, and a change's times (happened · detected · imported) as small tabular metadata */
.chart-svg .annot.is-general{stroke:var(--chart-quiet);stroke-dasharray:2 4;opacity:1}
.annot-n.is-general{border-style:dashed;border-color:var(--chart-quiet);background:var(--elev);box-shadow:none;color:var(--fg-3);font-weight:var(--w-medium)}
.ce-i.is-general .ce-n{background:transparent;box-shadow:inset 0 0 0 1px var(--chart-quiet);color:var(--fg-3)}
.ce-i.is-general{color:var(--fg-3)}
.annot-n.is-note{background:var(--bg);border:1.5px solid var(--fg-3);box-shadow:none;color:var(--fg-2)}
.ce-i.is-note .ce-n{background:transparent;box-shadow:inset 0 0 0 1.5px var(--fg-3);color:var(--fg-2)}
.chart-ev > .ce-gh{margin-top:6px;font-size:var(--t-meta);line-height:var(--lh-sh);color:var(--fg-3)}
.ch-mk-b.ch-all[aria-pressed="true"]{color:var(--fg);background:var(--selected)}
.cg-times{font-size:var(--t-meta);line-height:var(--lh-sh);color:var(--fg-3);font-variant-numeric:tabular-nums}

/* ===== v68 — findings (observed / may explain / uncertain), dashboard, local chain, editor lock ===== */
.fd-obs{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.fd-k2{margin-top:4px}
.fd-unsure{margin-top:12px;padding:10px 12px;border-radius:var(--r-8);background:var(--bg-2)}
.fd-unsure .fd-p{margin:4px 0 0}
.hm-tbl .k2 .k,.ap-card h3 a{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.lc-par-r{display:flex;gap:6px}
.lc-par-r .ai-ch{flex:1 1 0}
.lc-par-k{font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3);text-transform:none}
.lc-flow2{margin-top:10px;align-items:center}
.lc-flow2 > .lc-par-k{flex:none;width:112px}
.dr-who.is-lock,.dr-who.is-rev{display:flex;align-items:center;gap:10px}
.dr-who.is-rev{color:var(--warn-ink)}
.ev-parts{margin-top:14px}
.ev-tbl{margin-top:6px}

/* v68 (2026-09-28) — fixes from the ChatGPT review, search area. Merged into linear.css later. */
/* keep “(0–100)” in one piece when a tile label wraps (the keyword page's Ranking difficulty) */
.sv-nw{white-space:nowrap}

/* v68 (2026-09-28) — fixes from the ChatGPT review, aisearch area. Merged into linear.css later. */

/* plan bands behind AI Search charts: which sampling plan (and how many assistants) each stretch of the line comes from.
   The plot is isolated so the bands can sit under the line (z-index −1) without falling behind the panel. */
.ai-pbands{position:absolute;inset:0;pointer-events:none;z-index:-1}
.ai-pband{position:absolute;top:0;bottom:0;border-left:1px dashed var(--ln)}
.ai-pband:first-child{border-left:0}
.ai-pband.is-alt{background:color-mix(in srgb,var(--fg) 4%,transparent)}
/* the plan labels: a row under the dates, one bracket per plan (Oct 7 review, D03: 12px, not 11) */
.ai-pstrip{grid-column:2;grid-row:3;position:relative;height:22px;margin-top:6px}
.ai-pstrip span{position:absolute;top:0;height:100%;box-sizing:border-box;padding:3px 6px 0;border-top:1px solid var(--ln);border-left:1px solid var(--ln);font-size:var(--t-sh);line-height:16px;color:var(--fg-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ai-pstrip span:first-child{border-left:0;padding-left:0}
@media (max-width:600px){.ai-pstrip{height:38px}.ai-pstrip span{white-space:normal;text-overflow:clip}}   /* a narrow plan's label takes two lines, never "…" */

/* the ranges caption under a question's tiles */
.ai-rcap{margin:-6px 0 0}

/* the "Named among the first brands" header wraps onto two lines instead of being cut */
.ai-q .tbl-h{height:auto;min-height:32px;padding-top:4px;padding-bottom:4px}
.ai-q .tbl-h span{white-space:normal;line-height:1.25}

/* sources on a question page: how many of its answers cite each page */
.ai-src-n{flex:none;white-space:nowrap;font-variant-numeric:tabular-nums}

/* one question's sampled answers: two lines of text per answer, the full text and its pages when opened */
.ai-ansl .tbl-r{align-items:start;padding-top:10px;padding-bottom:10px}
.ai-ansl .tbl-r .k2{padding:0}
.ai-ansl .k2 .u{white-space:normal}
.ai-ansl .tbl-r > .k,.ai-ansl .tbl-r > .num{line-height:var(--lh-body)}
.ai-ansc{display:flex;flex-direction:column;gap:3px;min-width:0}
.ai-anst{margin:0;color:var(--fg);overflow-wrap:break-word;text-wrap:pretty}   /* v105 (no-cut): the answer reads whole in its row — opening the row adds its sources and how it was asked */
.ai-anst mark{background:color-mix(in srgb,var(--c-blue) 18%,transparent);color:var(--fg);border-radius:3px;padding:0 2px}
.ai-ansx{display:none;flex-direction:column;gap:6px;margin-top:6px}
.ai-ansx .ai-tags{margin-top:0}
.ai-ansr.is-open .ai-ansx{display:flex}
.ai-ansr.is-open .ai-ansc > .u{display:none}
.ai-more{margin-top:12px}

/* v68 (2026-09-28) — fixes from the ChatGPT review, competitors area. Merged into linear.css later. */

/* tables whose number columns were too wide for their numbers: the header may wrap to two lines, so a column is as wide as its values, not its words */
.cp-wrap .tbl-h{height:auto;min-height:32px;padding-top:6px;padding-bottom:6px;align-items:end}
.tbl.is-mini.cp-wrap .tbl-h{height:auto;min-height:28px;padding-top:4px;padding-bottom:4px}
.cp-wrap .tbl-h > span{white-space:normal;text-wrap:balance;min-width:0}

/* overview (#S11) and the same at Their pages / Search features: the name comes first — it may take two lines, never "Acme St…" at 1280 */
.cp-tbl .k2 .k,.cp-pg .k2 .k,.cp-feat .k2 .k{white-space:normal;overflow-wrap:break-word}
.cp-feat .tbl-r > .u:last-child{white-space:normal}
/* keyword battle: a competitor with no position ("—") sat at the left of its column, next to the number before it (.tbl .u is left-aligned) */
.cps .tbl .num.u,.cp .tbl .num.u{text-align:right}

/* content gap: a topic's name stays on one line when its line (with how you do in it) wraps; why a search fits your site is never cut */
.cp-gp .sv-grp b{flex:none}
.tbl .k2 .u.cp-fitu{white-space:normal}
/* a competitor's content gap card is half the page wide: the search may take two lines rather than be cut */
.cp-gapc .k2 .k,.cp-gapc .k2 .k > bdi{white-space:normal;overflow-wrap:break-word}

/* a recommendation's line on why it fits YOUR page, under what it is based on */
.cp-do p.cp-fit{color:var(--fg)}

/* ===== v70 — second ChatGPT review ===== */
.fd-solved{display:flex;align-items:center;gap:12px;margin:0 0 14px;padding:12px 14px;border-radius:var(--r-12);background:var(--st-green-bg);color:var(--fg)}
.fd-solved > svg{color:var(--c-green);flex:none}
.fd-solved p{margin:2px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.lc-fact{display:flex;align-items:center;gap:10px;max-width:80ch;padding:8px 10px;border-radius:var(--r-8);background:var(--st-orange-bg);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg)}
.lc-fact > svg{flex:none;color:var(--c-orange)}
.ev-w{color:var(--fg-3)}
/* v70 (#72): the editor's top bar — the decision buttons keep their full labels ("Set the minimum" is required to unblock the approval) */
.dp-top{flex-wrap:wrap;display:grid;align-items:center;gap:16px;min-height:34px;margin-bottom:18px;grid-template-columns:minmax(0,1fr) auto auto}
.dp-r{justify-content:flex-end;gap:6px;flex-wrap:wrap}
.dp-r > *{flex:none}
.dp-r .mb-l{max-width:none;overflow:visible;text-overflow:clip}

/* v70 (2026-09-28) — second ChatGPT review, aisearch area. Merged into linear.css later. */
/* Nothing in AI Search's tables is cut with "…" at 1280–1440: questions, claims, products, bot notes and name lists wrap instead */
.ai-q .k2 > .k,.ai-q .k2 > .k > bdi,.ai-sug .k2 > .k,.ai-sug .k2 > .k > bdi,.ai-says .k2 > .k,.ai-says .k2 > .k > bdi,.ai-shop .k2 > .k{white-space:normal;overflow-wrap:break-word}
.ai-says .k2 > .u,.ai-shop .k2 > .u,.ai-bots .k2 > .u,.ai-sug .k2 > .u{white-space:normal;overflow-wrap:anywhere}
.ai-q .ai-who,.ai-sug .ai-who,.ai-says .ai-who,.ai-shop .ai-who{white-space:normal}
/* Answers: the competitors an answer names, and its sites, wrap instead of ending in "…" */
.ai-ansc > .u{white-space:normal;overflow-wrap:anywhere}
.ai-rv{display:block;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}

/* v70 (2026-09-28) — second ChatGPT review, competitors area. Merged into linear.css later. */

/* nothing is cut in the Competitors tables (#56 "Why it matters", and the same at 1440 and 1280 on every tab, profile and page analysis):
   names, searches, reasons and ways in take a second line instead of ending in "…" */
.cps .tbl .k,.cps .tbl .u,.cps .tbl .k > :first-child,
.cp .tbl .k,.cp .tbl .u,.cp .tbl .k > :first-child{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:break-word;min-width:0}
.cps .tbl .u,.cp .tbl .u{text-wrap:pretty}
.cps .tbl-r .k2,.cp .tbl-r .k2{padding:6px 0}
.cps .tbl-r > .u,.cp .tbl-r > .u{padding:6px 0}

/* a card's title is never cut (the profile's half-width cards at 1280): the title and its link keep their width, the grey line next to it wraps */
.cps .sec-hd h2,.cp .sec-hd h2{flex:none;overflow:visible}
.cps .sec-hd .n,.cp .sec-hd .n{flex:0 1 auto;min-width:0}
.cps .sec-hd .more,.cp .sec-hd .more{flex:none}

/* content gap: one "On page one" cell — the leading competitor and its page, the others under it */
.cp-op .cp-op-l{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);overflow-wrap:break-word}

/* page analysis: why their page may rank above yours — the differences as a list, then what is NOT a reason */
.ci .cp-why + .sv-cap,.ci .ci-none + .sv-cap{margin-top:12px;padding-top:0}
.ci .sv-cap.ci-notr{margin-top:6px;padding-top:0}
.ci .cp-why + .sv-cap.ci-notr,.ci .ci-none + .sv-cap.ci-notr{margin-top:12px}
.ci-none{margin:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2);text-wrap:pretty}
.cp-lead.ci-lead{font-weight:var(--w-regular);color:var(--fg-2)}
.cp .ci-cmp + .sv-cap{margin-top:10px;padding-top:0}

/* v71 — Dashboard: what you approve (the manifest), shown under the row before the one click */
.hm-mf{margin:0 12px 10px;padding:12px 14px;border-radius:var(--r-12);background:var(--bg-2);display:flex;flex-direction:column;gap:10px}
.hm-mf-h{margin:0;display:flex;align-items:center;gap:6px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.hm-mf-h svg{flex:none;color:var(--fg-3)}
.hm-mf dl{margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:8px 20px}   /* night fix (Oct 8): a long fact never sits alone in a 230px column */
.hm-mf dl > div{min-width:0}
.hm-mf dt{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.hm-mf dd{margin:2px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg);overflow-wrap:anywhere}
.hm-mf-f{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.fd-solved .menu-btn,.fd-solved .btn{flex:none}

/* ===== v71 (29 Sep 2026) — review fixes, part A ===== */
/* single-select rows (ui/lboard.js statusChips) look like the page tabs: text, a quiet count, an underline under the one shown.
   No filled capsule — it read as an iOS segmented control. Multi-select filters keep the chip look. */
.pl-views{gap:4px 22px}
.pl-views .pl-chip{height:30px;padding:0 1px;gap:6px;border:0;border-radius:0;background:none;color:var(--fg-3);font-weight:var(--w-medium);box-shadow:inset 0 -2px 0 transparent;transition:var(--tr-ui)}
@media (hover:hover){.pl-views .pl-chip:hover{border-color:transparent;color:var(--fg);box-shadow:inset 0 -2px 0 var(--ln)}}
.pl-views .pl-chip b{font-weight:var(--w-medium);color:var(--fg-4)}
.pl-views .pl-chip.is-on{border-color:transparent;background:none;color:var(--fg);box-shadow:inset 0 -2px 0 var(--fg)}
.pl-views .pl-chip.is-on b{color:var(--fg-2)}

/* Dashboard "Needs your decision": the "Fixes: …" line wraps to two lines instead of being cut (#01, S09) */

/* a reading pill inside a result grid wraps inside its cell instead of running out of the card (#05 "Close to the expected result so far") */
.fd-res .lbl{align-self:flex-start;max-width:100%;height:auto;min-height:22px;padding-top:2px;padding-bottom:2px;white-space:normal;text-align:left}

/* a finding about a level ("24% cited in answers"): the number and what it is, on one line */
.fd-num .fd-lvl{color:var(--fg-3)}

/* ===== v71 (29 Sep 2026) — review fixes, part B ===== */
/* Local — review rows: a reply inside the location's profile work is a link to that work, not a second "Draft a reply"; a review that came in after
   the approval carries its own tag, so the row may wrap */
.lc-rv-h{display:flex;align-items:center;gap:10px;font-size:var(--t-co);flex-wrap:wrap;row-gap:4px}
.lc-inwork{display:inline-flex;align-items:center;gap:4px;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--link-tint,var(--link));border-radius:var(--r-4)}
@media (hover:hover){.lc-inwork:hover{text-decoration:underline;text-underline-offset:3px}}
.sv-cap .lc-inwork{display:inline;font-size:inherit;line-height:inherit}
.lc-rv-a .sv-cap .lc-inwork{font-weight:var(--w-regular)}
/* the work's state on a location page: one state word, then the plain sentence */
.lc-ws .lbl{margin-right:4px;vertical-align:1px}
/* calls to action in a card header; the text below starts at the card's left edge */
.lc-ask-t{margin:0;max-width:90ch;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
/* cut text: profile and listing cells show their whole note (up to three short lines), city names wrap instead of ending in "…" */
.lc-prof .lc-mx small{display:block;-webkit-line-clamp:unset;overflow:visible}
.lc-rt .tbl-r > .k{white-space:normal;overflow:visible;text-overflow:clip}
/* the six location tiles: a longer note wraps to two lines instead of being cut */
.lc-tiles .kp-s{white-space:normal}

/* ===== v71 (29 Sep 2026) — review fixes, part C ===== */
/* Results: seven columns — the minimum sits next to the expectation; titles and long readings wrap to two lines instead of being cut */
.r-row.is-7{column-gap:20px;padding-top:10px;padding-bottom:10px;grid-template-columns:128px minmax(0,1fr) 150px 88px 150px 140px 52px}
.r-row.is-7 .f-t{white-space:normal;display:block;overflow:visible;line-height:var(--lh-body);text-wrap:pretty}   /* the result's title shows whole */
.r-row.is-7 .r-num.is-wrap b{white-space:normal;display:block;overflow:visible}   /* "Made by …" shows whole (no clamp, never "…") */
.r-row.is-7>.lbl{white-space:normal;height:auto;min-height:22px;padding-top:2px;padding-bottom:2px;line-height:var(--lh-co)}
@media (max-width:1320px){.r-row.is-7{column-gap:14px}}

/* Recent decisions: the title wraps to two lines */
.dc-row{grid-template-columns:108px minmax(0,1.2fr) minmax(0,1fr) 24px 52px;height:auto;min-height:46px;padding-top:8px;padding-bottom:8px}
.dc-row .ch-t{white-space:normal}
/* Oct 7 review (D13): at phone width a decision row (Approvals' standing rules and recent decisions, Findings' activity) is a labelled row —
   its chip, who and when on the first line, the title under it, then its line — never the desktop's five columns ("Sa / fe / fix / es") */
@media (max-width:600px){
  .ch-row,.dc-row{grid-template-columns:minmax(0,1fr) auto auto;column-gap:8px;row-gap:4px;align-items:center;height:auto;min-height:0;padding-top:10px;padding-bottom:10px}
  .ch-row > .lbl{grid-column:1;grid-row:1;justify-self:start}
  .ch-row > .f-own{grid-column:2;grid-row:1}
  .ch-row > .f-age{grid-column:3;grid-row:1}
  .ch-row > .ch-t{grid-column:1 / -1;grid-row:2}
  .ch-row > .ch-f{grid-column:1 / -1;grid-row:3}
  .ch-row > .ch-f:empty{display:none}
}

/* Approvals and the action: "Tried before" — a past result on the same page or number, and what is different this time */
.ap-tried{display:flex;align-items:flex-start;gap:7px;margin:0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.ap-tried svg{flex:none;margin-top:2px;color:var(--fg-4)}
.ap-tried b{font-weight:var(--w-semibold);color:var(--fg)}
.ap-tried .lk{display:inline}
.ap-tried .ap-miss{color:var(--fg-3)}
.fd-tried{margin:10px 0 16px;max-width:80ch}

/* Result: what changed after the approval (another agency, another tool) */
.ev-int{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.ev-int-i{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border-radius:var(--r-12);background:var(--st-orange-bg);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.ev-int-i svg{flex:none;margin-top:1px;color:var(--c-orange)}
.ev-int-i b{font-weight:var(--w-semibold);color:var(--fg)}
.ev-int-i p{margin:2px 0 0}

/* Content: a long state word (a part live, a part pending) wraps inside its column */
.c-state .lbl{white-space:normal;height:auto;min-height:22px;padding-top:2px;padding-bottom:2px;line-height:var(--lh-co);max-width:100%}

/* Editor: the Check list — each check says its state on the right; nothing opens */
.ck-list .td-hd{align-items:flex-start}
.ck-list .td-hd .lbl{flex:none;margin-top:1px}
.ck-list+.td-list{margin-top:6px;padding-top:6px;border-top:1px solid var(--ln-2)}
.r-num .r-sub{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ev-ov{margin-top:8px;display:flex;align-items:flex-start;gap:6px}
.ev-ov svg{flex:none;margin-top:2px}
/* the parts table: what changes and how it is measured wrap instead of being cut */
.ev-tbl .tbl-r{padding-top:4px;padding-bottom:4px}
.ev-tbl .k2 .k,.ev-tbl .k2 .u{white-space:normal;overflow:visible;text-overflow:clip}

/* ===== v71 (29 Sep 2026) — review fixes, part D ===== */
/* AI Search → one question's answers (#37): the filters stay in view while the list scrolls */
.ai .pl-status.ai-stick{position:sticky;top:var(--top-h);z-index:4;margin:0 0 12px;padding:8px 0;background:var(--canvas)}

/* AI Search → Shopping: the products a finding is about, as one rate — a quiet line above the table, never a banner */
.ai-shopf{margin:4px 0 12px;align-self:flex-start}

/* Competitors → Moves (#57): the competitor's name is a text link in the line above the title, not a button */
.cp-li-d .cp-li-who{display:inline;font-size:inherit;line-height:inherit;font-weight:var(--w-medium);color:var(--fg-2)}
@media (hover:hover){.cp-li-d .cp-li-who:hover{color:var(--fg)}}

/* Competitors → a page not analyzed yet: the text on the left, the button on its right — .sec made it a centred column */

/* existing work in Content in place of "Write a page" (#55, #36) — the same button, a label that says what already exists */
.cp-wk{max-width:100%}

/* ===== v72 (29 Sep 2026) — sidebar top, the founder's order: Dottpace + hide on top, then the project and its switch ===== */
.sb-brand{display:flex;align-items:center;gap:8px;height:32px;padding:0 6px;border-radius:var(--r-8);flex:1;min-width:0;color:var(--fg);font-size:var(--t-t3);line-height:var(--lh-t3);font-weight:var(--w-semibold);letter-spacing:-.035em;transition:var(--tr-ui)}
@media (hover:hover){.sb-brand:hover{background:var(--hover)}}
.sb-mark{display:block}
.sb-pj{display:flex;align-items:center;gap:9px;width:100%;min-height:44px;padding:6px 8px;margin:0 0 10px;border-radius:var(--r-8);border:1px solid var(--bd);background:color-mix(in srgb,var(--bg-3) 40%,transparent);text-align:left;transition:var(--tr-ui)}
.sb-pj.is-open{border-color:var(--bd-3);background:var(--hover)}@media (hover:hover){.sb-pj:hover{border-color:var(--bd-3);background:var(--hover)}}
.sb-pj .logo{width:26px;height:26px;border-radius:var(--r-6);display:grid;place-items:center;color:var(--on-fill);font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-bold);flex:none}
.pj-t{display:flex;flex-direction:column;min-width:0;flex:1}
.pj-n{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pj-s{font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pj-cv{display:grid;color:var(--fg-4);flex:none}
/* v72: with the sidebar hidden, "Show sidebar" sits at the start of the top bar; the search field is lighter in both states */
.tb-sbt{flex:none;margin:0 2px 0 -8px;color:var(--fg-3)}
@media (hover:hover){.tb-sbt:hover{color:var(--fg)}}

/* ===== v72 (29 Sep 2026) — Dashboard review fixes ===== */
.chart.has-endl .chart-body{grid-template-columns:44px minmax(0,1fr) 128px}
.chart-endl{position:relative;grid-column:3;grid-row:1;min-width:0}
.chart-endl span{position:absolute;left:4px;right:0;transform:translateY(-50%);display:flex;align-items:center;gap:6px;font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
.chart-endl .sw{width:8px;height:2px;border-radius:1px;flex:none}
/* one meaning per colour: yellow = medium / being worked out (orange stays "waiting for you") — the pair is .lbl.tint.yellow above */
/* "All" tile: how the numbers moved, not a number of its own */
.kp-v.is-sum{font-size:var(--t-body);line-height:var(--lh-t2);font-weight:var(--w-semibold);color:var(--fg);white-space:nowrap}
/* cards: the title is the one link (stretched over the card), so Approve can sit in the card without nesting controls */
.is-home .hm-mf{margin:12px 0 0}
/* tables: the title is a link; notes and market tags */
.hm-note{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);margin-left:4px}
/* a failing source no number here depends on: said in the sources line, in red */
.src-line.is-bad,.src-line.is-bad svg{color:var(--neg)}
/* a hollow marker: something moved, its cause is still being checked */
.annot-n.is-open{background:transparent;border-style:dashed;color:var(--fg-3)}
.ce-i.is-open .ce-n{background:transparent;border:1px dashed var(--bd-3)}
/* one rhythm between the page's sections */
.is-home .src-line{margin-top:24px}

/* ===== v72 (29 Sep 2026) — Ask review fixes ===== */
.ai-plain p + dl{margin-top:10px}
/* what I'd do: the fix that waits, what it should change, how it is judged, what is at stake — approved only through the summary */
.ai-do{padding:12px 14px;border-radius:var(--r-12);border:1px solid var(--bd-tl);background:var(--bg);box-shadow:var(--sh-tiny)}
.ai-do-t{margin:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.ai-do-f{margin:0;display:grid;grid-template-columns:minmax(80px,max-content) minmax(0,1fr);gap:4px 14px}
.ai-do-f dt{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.ai-do-f dd{margin:0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.ai-do-b{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px}
.ai-do-n{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.ai-do .hm-mf{margin:4px 0 0}
/* a question the data can't answer */
.ai-miss{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:var(--r-12);background:var(--bg-3);color:var(--fg-2)}
.ai-miss>svg{flex:none;margin-top:3px;color:var(--fg-3)}
.ai-miss .ai-text p{margin:0}
.ai-ruled{margin:2px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.ai-ruled span{color:var(--fg-2);font-weight:var(--w-medium)}
.chip.is-vs{color:var(--fg-3)}
/* the opening: the subject's card, the basics in one line, recent conversations */
.ask-ctx{display:flex;align-items:flex-start;gap:10px;width:100%;max-width:760px;margin:4px auto 0;padding:12px 14px;border-radius:var(--r-12);border:1px solid var(--bd-tl);background:var(--bg);text-align:left}
.ask-ctx-k{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.ask-ctx-t{display:block;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg);text-decoration:none}
.ask-ctx-m{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:6px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.ask-basics{max-width:760px;margin:18px auto 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);text-align:left;width:100%}
.ask-basics .lk{font-size:inherit}
.ask-recent{width:100%;max-width:760px;margin:6px auto 0;text-align:left}
.ask-rl{display:flex;flex-direction:column;gap:2px}
.ask-rl-i{display:flex;align-items:center;gap:8px;min-height:32px;padding:4px 8px;border-radius:var(--r-8);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2);text-decoration:none}
@media (hover:hover){a.ask-rl-i:hover{background:var(--hover);color:var(--fg)}}
.ask-rl-i svg{flex:none;color:var(--fg-4)}
.ask-rl-i>span:nth-child(2){flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ask-rl-d{flex:none;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-4)}
.ask-kept{margin:10px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);display:flex;align-items:center;gap:6px}
/* the cause marker reads in the light theme too */
:root:not([data-theme="dark"]) .annot-n.is-cause{color:var(--warn-ink);border-color:color-mix(in srgb,var(--c-orange) 55%,var(--bd))}

/* ============ v73 — the first logo pass (Grid D, retired; then Cube D, retired 2026-10-14). The logo is identity v1.0's "dP" — see ui/brand.js ============
   (kept only for the avatar layout rules) */
.sb-mark,.dp-av,.av-dp{flex:none;user-select:none;-webkit-user-drag:none;filter:none}

/* ============ v73 — the all-pages review (Changes, Findings, Actions, SEO Search, AI Search, Local, Competitors) — merged from styles/v73-*.css ============ */
/* v73 (the all-pages review) — shared pieces. Merged into linear.css once the pages are done. */
.stake-line{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.stake-line .stake-k{color:var(--fg-4)}
.stake-line b{color:var(--fg-2);font-weight:var(--w-semibold)}
.stake-line .stake-none{color:var(--fg-3)}
.stake-line .stake-basis{margin-top:2px;color:var(--fg-4)}
/* the Content editor's approval summary sits under its top bar (founder decision 2) */
.dp-apv{margin:0 0 16px}

/* v73 — changes page fixes (the all-pages review). Merged into linear.css once the pages are done. */

/* item 15: a competitor has its own tone (purple) — no longer another agency's indigo — the pair is .lbl.tint.purple above */

/* item 6: the parts of the judged summary under the title are filters */
.cl-sumk{padding:0;border:0;background:none;font:inherit;color:var(--fg-2);cursor:pointer;text-decoration:underline;text-decoration-color:var(--ln-2);text-underline-offset:3px}
@media (hover:hover){.cl-sumk:hover{color:var(--fg);text-decoration-color:currentColor}}
.cl-sumk.is-on{color:var(--fg);font-weight:var(--w-medium);text-decoration-color:currentColor}

/* item 11: a tab whose changes are all filtered out shows 0, greyed */
.pl-views .pl-chip.is-zero{color:var(--fg-4)}
.pl-views .pl-chip.is-zero b{color:var(--fg-4);font-weight:var(--w-regular,400)}

/* item 7: the column heads — Made by · What changed · What it did */
.cl-head{display:grid;grid-template-columns:132px minmax(0,1fr) minmax(0,.62fr);column-gap:28px;padding:0 8px 8px;margin:0 -8px;border-bottom:1px solid var(--ln-2);font-size:var(--t-co);line-height:1.4;font-weight:var(--w-medium);color:var(--fg-4)}
@media (max-width:1320px){.cl-head{grid-template-columns:124px minmax(0,1fr) minmax(0,.62fr);column-gap:20px}}
.cl-led .cl-num{color:var(--fg-2)}
.cl-led .cl-st{color:var(--fg-3)}
.cl-led .cl-fl{color:var(--fg-2);text-wrap:pretty}
.cl-led .cl-fl .fd-k{color:var(--fg-3)}
.cl-led .cl-stake{margin-top:1px}

/* item 19: the meta line wraps — the date is never cut */
.cl-meta{margin-top:5px;font-size:var(--t-co);line-height:1.4;color:var(--fg-4);min-width:0;white-space:normal;overflow:visible;text-overflow:clip}
.cg-imp{display:inline-flex;align-items:center;height:18px;margin-right:6px;padding:0 6px;border-radius:var(--r-4,4px);background:var(--bg-3);color:var(--fg-3);font-weight:var(--w-medium);vertical-align:1px}

/* item 16: the fold is a text link, its chevron on the same line */
.cl-older{display:inline-flex;align-items:center;gap:4px;margin:12px 0 2px;padding:0;border:0;background:none;color:var(--fg-3);font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);text-align:left;cursor:pointer}
@media (hover:hover){.cl-older:hover{color:var(--fg)}}
.cl-older svg{display:inline-block;flex:none}
.cg-nearb{margin-top:12px}

/* item 22: Alerts — a menu of checkboxes, held open while you tick */
.cg-alerts{position:relative}
.cg-alerts .cg-alerts-pop{position:absolute;top:calc(100% + 6px);right:0;left:auto;min-width:340px;max-height:min(72vh,680px);overflow:auto}

/* one change */
.cg-golive{display:flex;flex-direction:column;gap:10px;margin-top:16px;padding-top:14px;border-top:1px solid var(--ln-2)}
.cg-eff{margin:12px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.cg-eff b{color:var(--fg);font-weight:var(--w-semibold)}
/* item 8: how the verdict was reached, as facts */
.cg-facts{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:6px 18px;margin:12px 0 4px;padding:12px 14px;border-radius:var(--r-12);background:var(--bg-2);font-size:var(--t-co);line-height:var(--lh-co)}
.cg-facts .fd-f{display:contents}
.cg-facts dt{color:var(--fg-3)}
.cg-facts dd{margin:0;color:var(--fg)}
/* item 13: What came of it — each link with its state word */
.cg-came{gap:8px}
.cg-came-r{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.cg-came-r .cl-stake{flex-basis:100%;padding-left:18px}
/* item 12: the header value of a change's chart — before → after, then its window */
.ai-chart figcaption .cg-head b{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold)}
.cg-head span{color:var(--fg-3)}
.cg-cap{margin:6px 0 0;font-size:var(--t-co)}
/* a Google rollout, or the days left out of every result, drawn over the plot */
.cg-band{position:absolute;top:0;bottom:0;background:color-mix(in srgb,var(--fg) 6%,transparent);border-inline:1px dashed var(--ln-2);pointer-events:none}
.cg-band span{position:absolute;bottom:4px;left:50%;transform:translateX(-50%);padding:0 6px;border-radius:var(--r-4,4px);background:var(--bg-2);font-size:11px;line-height:16px;color:var(--fg-3);white-space:nowrap}
.cg-band.is-gap{background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--fg) 12%,transparent) 0 3px,transparent 3px 6px)}

/* v73 — findings page fixes (the all-pages review). Merged into linear.css once the pages are done. */

/* ---------- the board (#11, #19) ---------- */
/* an empty column folds into a chip, so the board may have 1–3 columns: they share the width like the four did */
.fl-bd .kb-board.is-3{grid-template-columns:repeat(3,minmax(264px,1fr));overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;padding-bottom:4px}
.fl-bd .kb-board.is-2{grid-template-columns:repeat(2,minmax(264px,1fr));overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;padding-bottom:4px}
.fl-bd .kb-board.is-1{grid-template-columns:minmax(0,1fr)}
.fl-bd .kb-board.is-1 .kb-col{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));align-content:start}
.fl-bd .kb-board.is-1 .kb-colh,.fl-bd .kb-board.is-1 .kb-more{grid-column:1/-1}
/* the decisions column's count ("7 findings · 6 approvals") goes under the title when it doesn't fit — the title is never cut */
.fl-bd .kb-colh{flex-wrap:wrap;row-gap:0}
.fl-bd .kb-colh b{flex:none;overflow:visible}
.fl-zero{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:-4px 0 12px}
.fl-zero-c{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:var(--r-full);background:var(--bg-3);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.fl-zero-c b{font-weight:var(--w-semibold);font-variant-numeric:tabular-nums}
/* the metric under the big number may take two lines instead of being cut; the age never wraps ("2d / ago" at 1280) */
.kb-n{display:flex;gap:6px;min-width:0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);align-items:flex-start}
.kb-n span{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;padding-top:4px}
.kb-ft .kb-age{flex:none;white-space:nowrap}
/* what is at stake, who changed what, the shared fix — one quiet line each */
.kb-stake{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.kb-stake b{font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
.kb-after,.kb-same,.kb-stale{display:flex;align-items:flex-start;gap:6px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.kb-after svg,.kb-same svg,.kb-stale svg{flex:none;margin-top:2px}
.kb-after span,.kb-same span{min-width:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.kb-stale{color:var(--warn);font-weight:var(--w-medium)}
/* a short card for work under way */
.kb-card.is-compact{gap:6px;padding:10px 14px}
.kb-sub{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}

/* ---------- the finding (#1, #3, #7, #8, #10, #13) ---------- */
/* the fix, one line under the stepper; when it waits, the decision is right there */
.story .fd-fix{display:flex;align-items:center;gap:12px;margin:0 26px 18px;padding:12px 14px;border-radius:var(--r-12);background:var(--bg-2);border:1px solid var(--bd-tl)}
.story .fd-fix.is-wait{background:color-mix(in srgb,var(--c-orange) 7%,var(--bg))}
.fd-fix-k{flex:none;align-self:flex-start;margin-top:1px;font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-semibold);color:var(--fg-3);text-transform:uppercase;letter-spacing:.04em}
.fd-fix .grow{min-width:0}
.fd-fix-t{display:block;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
@media (hover:hover){.fd-fix-t:hover{text-decoration:underline}}
.fd-fix-s{margin-top:2px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.fd-stale{color:var(--warn);font-weight:var(--w-medium)}
.fd-fix .btn,.fd-fix .more{flex:none;white-space:nowrap}
.fd-fix .more,.fd .fd-sec .sec-bd>a.more{display:inline-flex;align-items:center;gap:3px;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--link-tint,var(--link))}
.fd .fd-sec .sec-bd>a.more{align-self:flex-start}
.story .hm-mf{margin:-8px 26px 18px}
/* closing asks about the waiting fix */
.fd-closeask{display:flex;align-items:flex-start;gap:10px;padding:14px 16px;border-radius:var(--r-12);background:var(--bg-2);border:1px solid var(--bd-tl)}
.fd-closeask b{display:block;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
.fd-closeask p{margin:4px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.fd-wd{display:flex;align-items:flex-start;gap:8px;margin-top:6px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);cursor:pointer}
.fd-wd input{margin-top:2px;flex:none;accent-color:var(--accent)}
.fd-closeask .btn{flex:none}
/* the number, what is at stake right under it */
.fd-num b.is-neg{color:var(--neg)}
.fd-stakeln{font-size:var(--t-body);line-height:var(--lh-body)}
.fd-stakeln .stake-basis{font-size:var(--t-co);line-height:var(--lh-co)}
/* the cited cause is a link to its page in the change log */
a.fd-cause-t{font-weight:var(--w-semibold);color:var(--fg);text-decoration:underline;text-decoration-color:var(--bd-2);text-underline-offset:3px}
@media (hover:hover){a.fd-cause-t:hover{text-decoration-color:currentColor}}
/* "Where": numbers on the chips; a page Google sends nobody to is plain text */
.fd-rel-n{color:var(--fg-3);font-variant-numeric:tabular-nums}
.fd-rel .chip.is-plain{background:transparent;box-shadow:inset 0 0 0 1px var(--bd-tl)}
/* what we observed — one list, each row with its source and a way to check it */
.fl-obs{gap:0}
.fl-obs>.fd-k{margin-bottom:4px}
.fl-ev{display:grid;grid-template-columns:92px minmax(0,1fr) auto 104px;gap:10px;align-items:center;min-height:38px;padding:5px 0;border-bottom:1px solid var(--ln-2)}
.fl-ev:last-child{border-bottom:0}
.fl-ev .lbl{justify-self:start}
.fl-ev-c{font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.fl-ev .fd-src{white-space:nowrap}
a.fl-ev-go{justify-self:end;display:inline-flex;align-items:center;gap:2px;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--link-tint,var(--link));white-space:nowrap}
/* nothing to explain yet: one line */
.fd-still{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:var(--r-12);background:var(--bg-2)}
.fd-still svg{flex:none;margin-top:3px;color:var(--fg-3)}
.fd-still b{display:block;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
.fd-still p{margin:2px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
/* the reading so far, under a result being measured */
.fd-read{margin:0;display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
/* a competitor's move: your searches where they came in */
.fl-aff{display:flex;flex-direction:column}
.fl-aff-h,.fl-aff-r{display:grid;grid-template-columns:minmax(0,1fr) 110px 180px;gap:12px;align-items:center}
.fl-aff-h{padding-bottom:6px;border-bottom:1px solid var(--ln-2);font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-3)}
.fl-aff-r{min-height:36px;border-bottom:1px solid var(--ln-2);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg);font-variant-numeric:tabular-nums}
.fl-aff-r:last-child{border-bottom:0}
.fl-aff .r{text-align:right}
.fl-aff-r .is-neg{color:var(--neg)}
.fl-aff-k{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fl-aff-k a{color:var(--fg)}
@media (hover:hover){.fl-aff-k a:hover{text-decoration:underline}}
@media (max-width:1320px){.fl-ev{grid-template-columns:84px minmax(0,1fr) auto}.fl-ev .fd-src{grid-column:2;grid-row:2;margin-top:-4px}.fl-ev>:last-child{grid-column:3;grid-row:1}}


/* v73 — actions page fixes (the all-pages review). Merged into linear.css once the pages are done. */

/* the subtitle's counts open what they count (#9) */
.pl-s .pl-sl{color:inherit;border-radius:var(--r-4)}
@media (hover:hover){.pl-s .pl-sl:hover{color:var(--fg);text-decoration:underline;text-underline-offset:3px}}
/* Board | Calendar — two toolbar buttons like Filter and Sort, never a segmented capsule (#18) */
.pl-vsw{display:flex;align-items:center}
/* a column title never wraps at 1280 (#24) */
.kb-colh b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.kb-colh span{white-space:nowrap}
.kb-hd .lbl.tint.orange{flex:none}

/* approval pack: At stake, the changes with who does each, who does it, the reason a button is disabled, a question (#1, #2, #5, #11, #14) */
.ap-card .stake-line.ap-stake{margin-top:-4px}
.ap-chg{display:flex;flex-direction:column;gap:6px}
.ap-chg ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column}
.ap-chg li{display:flex;align-items:center;gap:10px;min-height:30px;padding:4px 0;border-bottom:1px solid var(--ln-2);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.ap-chg li:last-child{border-bottom:0}
.ap-chg li .f-own{flex:none}
.ap-chg .ap-fs{margin:2px 0 0}
.sec .ap-chg{gap:0}
.who-pick{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;font-size:var(--t-body);line-height:var(--lh-body)}
.who-pick>.fd-k{flex-basis:100%}
.wp-o{display:inline-flex;align-items:center;gap:7px;min-height:28px;padding:2px 2px;border-radius:var(--r-6);color:var(--fg-2);text-align:left}
.wp-o svg{flex:none;color:var(--fg-3)}
.wp-o>span:not(.wp-s){font-weight:var(--w-medium);color:var(--fg-2)}
.wp-o.is-on>span:not(.wp-s){color:var(--fg)}
.wp-o .wp-s{color:var(--fg-3);font-size:var(--t-co);line-height:var(--lh-co)}
.wp-r{flex:none;width:14px;height:14px;border-radius:50%;border:1.5px solid var(--bd-3,var(--fg-4));background:var(--bg);box-sizing:border-box}
.wp-o.is-on .wp-r{border:4px solid var(--accent)}
@media (hover:hover){button.wp-o:hover>span:not(.wp-s){color:var(--fg)}}
.who-pick.is-one .wp-o{padding-left:0}
.fd-apw .who-pick{flex-direction:column;align-items:flex-start;gap:2px}
.fd-apw .who-pick>.fd-k{flex-basis:auto}
.fd-apw .wp-o{flex-wrap:wrap;row-gap:0}
.fd-apw .wp-o .wp-s{flex-basis:100%;padding-left:40px}
.mpe-chg{margin-top:2px;font-size:var(--t-co);line-height:var(--lh-co);align-self:flex-start}
.mpe-ed{display:flex;align-items:center;gap:6px;margin-top:6px;font-size:var(--t-body);color:var(--fg-2)}
.mpe-ed input{width:72px;height:28px;padding:0 8px;border:1px solid var(--bd);border-radius:var(--r-8);background:var(--bg);color:var(--fg);font:inherit;font-variant-numeric:tabular-nums}
.exp-ed{flex-wrap:wrap}   /* night C2 (Oct 8): the expected-result editor — the number's name, up or down, how much, the unit */
.mpe-ed input.exp-m{width:240px;max-width:100%}
.ap-cant,.ap-asked,.ap-live{display:flex;align-items:flex-start;gap:8px;margin:0;padding:8px 12px;border-radius:var(--r-12);background:var(--bg-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.ap-cant svg,.ap-asked svg,.ap-live svg{flex:none;margin-top:2px;color:var(--fg-3)}
.ap-cant{background:color-mix(in srgb,var(--c-orange) 9%,var(--bg))}
.ap-cant svg{color:var(--c-orange)}
.ap-cant .lk{display:inline;font-weight:var(--w-medium)}
.ap-asked b,.ap-live b{color:var(--fg);font-weight:var(--w-semibold)}
.ap-ask{display:flex;flex-direction:column;gap:8px;padding:12px 14px;border-radius:var(--r-12);background:var(--bg-2)}
.ap-ask textarea{width:100%;min-height:56px;padding:8px 10px;border:1px solid var(--bd);border-radius:var(--r-8);background:var(--bg);color:var(--fg);font:inherit;font-size:var(--t-body);line-height:var(--lh-body);resize:vertical;box-sizing:border-box}
.ap-ask-f{display:flex;justify-content:flex-end;gap:8px}
.fd-hd .ap-cant,.fd-hd .ap-asked,.fd-hd .ap-live,.fd-hd .ap-ask,.fd-hd .hm-mf{margin-top:12px}
.fd-hd .hm-mf{margin-left:0;margin-right:0}
.ap-card .hm-mf{margin:0}
/* the approval summary's last line and the stake's basis (#1, #2) */
.hm-mf-live{display:flex;align-items:flex-start;gap:7px;margin:0;padding-top:10px;border-top:1px solid var(--ln-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg)}
.hm-mf-live svg{flex:none;margin-top:2px;color:var(--fg-3)}
.hm-mf-s{display:block;margin-top:2px;color:var(--fg-3)}
.hm-mf .who-pick{padding-top:10px;border-top:1px solid var(--ln-2)}

/* the action page: the facts of a waiting fix under the title (#1); "Added by" without a finding (#15) */
.ap-facts.fd-apf{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:16px;row-gap:14px}
.fd-apf>div{min-width:0}
.fd-for.is-none{cursor:default}
@media (hover:hover){.fd-for.is-none:hover{background:var(--bg-3)}}
.fd-labels .lbl.tint.orange{margin-left:2px}
/* after a verdict: the decision (#12) */
.ap-after{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:10px 12px;border-radius:var(--r-12);background:var(--bg-2);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.ap-after b{color:var(--fg);font-weight:var(--w-semibold)}
.ap-after.is-set svg{flex:none;color:var(--c-green)}
/* "Reading so far" is a plain tinted label, not a two-line capsule (#34) */
.rd-plain{display:inline-block;align-self:flex-start;padding:2px 8px;border-radius:var(--r-6);background:var(--bg-3);font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg)}
.rd-plain.blue{background:var(--st-blue-bg);color:var(--st-blue-fg)}
.rd-plain.orange{background:var(--st-orange-bg);color:var(--st-orange-fg)}
.fd-res .ap-fs{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
/* Results: Expected and Effect wrap to two lines instead of being cut (#23) */

/* ---------- the calendar (#18, founder decision 6): calm, Linear-like — a month grid, a today mark, one-line chips, thin bars for spans ---------- */
/* Oct 8, second pass (the founder: "still broken"): filter chips above the grid; every week row the same height — 132px from 1280 wide, 112px
   below — and never taller: 3px · the day's header 22px · 2px · the span lane (≤ 2 bars of 18px, 20px apart) · chips of 20px, 1px apart · "+N more"
   18px · 3px (pages/lactions.js calendarView does the same sum to decide how many chips fit). Quiet windows and freezes: an icon in the day's header
   and a faint dashed top edge, or (their chip on) neutral hatched bars. The day's panel is a side sheet (.rs-sheet.cal-dsh). Under 600px of
   calendar the grid becomes a list (.cal-agl). The cell is not positioned: a bar sits in its first day's cell and is placed against the week row. */
.sec.cal{padding-bottom:14px;container:cal / inline-size}
.cal-hd{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px;margin-bottom:10px}
.cal-m{margin:0 4px;font-size:var(--t-t3);line-height:var(--lh-t3);font-weight:var(--w-semibold);color:var(--fg);min-width:132px;text-align:center}
/* the filter chips — a toggle each, with this month's count (St.ui().calShow) */
.cal-fl{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.cal-fc{display:inline-flex;align-items:center;gap:7px;height:28px;padding:0 10px 0 8px;border:0;border-radius:var(--r-ctl);background:none;box-shadow:inset 0 0 0 1px var(--ln);font:inherit;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-2);cursor:pointer;transition:var(--tr-ui)}
.cal-fc.is-on{background:var(--bg-4);color:var(--fg)}
@media (hover:hover){.cal-fc:hover{background:var(--bg-3);color:var(--fg)}}
.cal-fc-b{flex:none;display:inline-grid;place-items:center;width:14px;height:14px;border-radius:var(--r-4);box-shadow:inset 0 0 0 1.5px var(--line-ctl);color:var(--on-fill)}
.cal-fc.is-on .cal-fc-b{background:var(--brand);box-shadow:none}
.cal-fc-n{color:var(--fg-3);font-variant-numeric:tabular-nums}
/* the key */
.cal-lg-w{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 24px}
@media (max-width:640px){.cal-lg-w{grid-template-columns:minmax(0,1fr)}}
.cal-lg-g{display:flex;flex-direction:column;gap:6px;min-width:0}
.cal-lg-h{margin:0;font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-semibold);color:var(--fg-3)}
.cal-lg{display:grid;gap:6px;margin:0;padding:0;list-style:none;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.cal-lg>li{display:flex;align-items:center;gap:8px}
.cal-lg-f{grid-column:1/-1;display:block;margin:0;padding-top:10px;border-top:1px solid var(--ln-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);text-wrap:pretty}
.cal-lg-f>svg{display:inline-block;vertical-align:-1px}
.cal-dot{flex:none;width:7px;height:7px;border-radius:50%;background:var(--fg-4)}
.cal-dot.orange{background:var(--c-orange)}.cal-dot.red{background:var(--c-red)}.cal-dot.blue{background:var(--c-blue)}.cal-dot.teal{background:var(--c-teal)}.cal-dot.green{background:var(--c-green)}.cal-dot.gray{background:var(--fg-4)}.cal-dot.yellow{background:var(--c-yellow)}
/* the state icon: ink tones (≥ 3:1 as a mark, both themes); the verb beside it says the same thing in words */
.cal-ic{flex:none;display:inline-grid;place-items:center;width:14px;height:14px;color:var(--fg-3)}
.cal-ic.orange{color:var(--warn-ink)}.cal-ic.red{color:var(--neg-ink)}.cal-ic.blue{color:var(--info-ink)}.cal-ic.teal{color:var(--teal-ink)}.cal-ic.green{color:var(--pos-ink)}.cal-ic.indigo{color:var(--ind-ink)}.cal-ic.yellow{color:var(--yellow-ink)}
.cal-sw{flex:none;display:inline-grid;place-items:center;width:26px;height:14px;border-radius:var(--r-4);background:var(--st-gray-bg);color:var(--fg-2)}
.cal-sw.teal{background:var(--st-teal-bg);color:var(--st-teal-fg)}
.cal-sw.is-hatch{background-color:var(--bg-4);background-image:repeating-linear-gradient(135deg,var(--fill-3) 0 3px,transparent 3px 6px)}
/* the grid */
.cal-g{border:1px solid var(--ln);border-radius:var(--r-12)}   /* no overflow clip: a focus ring on a bar at the grid's edge stays whole — the corners are rounded on the cells instead */
.cal-wk:last-child>.cal-d:first-child{border-end-start-radius:calc(var(--r-12) - 1px)}
.cal-wk:last-child>.cal-d:nth-child(7){border-end-end-radius:calc(var(--r-12) - 1px)}
.cal-dow{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-bottom:1px solid var(--ln);border-start-start-radius:calc(var(--r-12) - 1px);border-start-end-radius:calc(var(--r-12) - 1px);background:var(--bg-2)}
.cal-dow span{padding:6px 10px;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-3)}
.cal-wk{position:relative;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));height:132px;border-bottom:1px solid var(--ln-2)}
@media (max-width:1279px){.cal-wk{height:112px}}
.cal-wk:last-child{border-bottom:0}
.cal-d{display:flex;flex-direction:column;align-items:stretch;gap:4px;min-width:0;min-height:0;padding:3px 4px;border-right:1px solid var(--ln-2)}   /* a row never grows: the chips that fit are counted in JS (the same sum), the rest is "+N more" — nothing to clip */
.cal-d:nth-child(7){border-right:0}
.cal-d.is-out{background-color:var(--bg-2)}
.cal-n{flex:none;display:flex;align-items:center;gap:6px;height:22px;margin-bottom:calc(1px + var(--lanes,0) * 20px);font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-2);font-variant-numeric:tabular-nums}
.cal-d.is-out .cal-n{color:var(--fg-3)}
.cal-nb{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 1px;border:0;border-radius:var(--r-6);background:none;font:inherit;color:inherit}
button.cal-nb{cursor:pointer;transition:var(--tr-ui)}
@media (hover:hover){button.cal-nb:hover{background:var(--bg-3);color:var(--fg)}}
.cal-nn{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 4px;border-radius:var(--r-full)}
.cal-d.is-today{box-shadow:inset 0 2px 0 var(--accent)}   /* the today line */
.cal-d.is-today .cal-nn{background:var(--brand);color:var(--on-fill)}   /* v103 (AX7, audit L5): #0071e3 under white, 4.7:1 */
.cal-tn{font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-semibold);color:var(--info-ink)}
/* a day inside a quiet window or a freeze (their chip off): a moon / snowflake at the header's end, a faint dashed top edge — no words in the grid */
.cal-qm{display:inline-flex;align-items:center;gap:3px;margin-inline-start:auto;padding:0 2px;color:var(--fg-3)}
.cal-d.has-q:not(.is-today){background-image:repeating-linear-gradient(135deg,var(--fill-2) 0 2px,transparent 2px 5px);background-size:100% 3px;background-repeat:no-repeat}
/* a chip: one line of 20px — the state's icon on a faint tint of its colour, the short verb, the short name cut with "…" */
.cal-ev{flex:none;display:flex;align-items:center;gap:5px;min-width:0;height:20px;padding:0 5px;border-radius:var(--r-4);font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-2);text-decoration:none;transition:var(--tr-ui)}
.cal-ev>.cal-ic{width:12px;height:12px}
.cal-ev.t-green{background:var(--st-green-bg)}.cal-ev.t-red{background:var(--st-red-bg)}.cal-ev.t-orange{background:var(--st-orange-bg)}.cal-ev.t-blue{background:var(--st-blue-bg)}.cal-ev.t-teal{background:var(--st-teal-bg)}.cal-ev.t-indigo{background:var(--st-indigo-bg)}.cal-ev.t-yellow{background:var(--st-yellow-bg)}
@media (hover:hover){.cal-ev:hover{background:var(--bg-3);color:var(--fg)}}
.cal-t{flex:1 1 auto;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.cal-w{font-weight:var(--w-semibold);color:var(--fg)}
.cal-ws{display:none}
@container cal (max-width:1240px){.cal-wl{display:none}.cal-ws{display:inline}}   /* "Waits for approval" → "Approval" where a day is narrow */
.cal-d.is-past .cal-w{color:var(--fg-2)}   /* a past day's chip: its verb steps back; the name stays --fg-2 (≥ 4.5:1 on every tint) */
.cal-more{flex:none;align-self:flex-start;height:20px;padding:0 5px;border:0;border-radius:var(--r-4);background:none;font:inherit;font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-2);cursor:pointer;transition:var(--tr-ui)}
@media (hover:hover){.cal-more:hover{background:var(--bg-3);color:var(--fg)}}
/* a span: one thin bar of 18px across its days with a short label; flat ends where it goes on from the week before or into the next */
.cal-bar{position:absolute;z-index:1;display:flex;align-items:center;gap:4px;height:18px;padding:0 6px;border-radius:var(--r-4);background:var(--st-gray-bg);color:var(--fg-2);font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);text-decoration:none;overflow:hidden;transition:var(--tr-ui)}
.cal-bar.teal{background:var(--st-teal-bg);color:var(--st-teal-fg)}
.cal-bar>svg{flex:none}
.cal-bar>span{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.cal-bar.is-cont{border-start-start-radius:0;border-end-start-radius:0}
.cal-bar.is-more{border-start-end-radius:0;border-end-end-radius:0}
.cal-bar.is-hatch{background-color:var(--bg-4);background-image:repeating-linear-gradient(135deg,var(--fill-1) 0 3px,transparent 3px 7px);color:var(--fg-2)}   /* quiet and frozen: neutral, hatched */
@media (hover:hover){.cal-bar:hover{color:var(--fg)}}
.cal-spm{position:absolute;z-index:1;right:3px;height:18px;min-width:24px;padding:0 5px;border:0;border-radius:var(--r-4);background:var(--bg-3);font:inherit;font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-semibold);color:var(--fg-2);cursor:pointer;transition:var(--tr-ui)}
@media (hover:hover){.cal-spm:hover{background:var(--bg-5);color:var(--fg)}}
/* the Key's popover */
.cal-pop{position:fixed;inset:auto;margin:0;max-height:min(640px,calc(100vh - 24px));overflow-y:auto;padding:12px 14px;border:1px solid var(--bd);border-radius:var(--r-12);background:var(--elev);color:var(--fg);box-shadow:var(--sh-high);transition:opacity var(--dur-2) var(--ease-out),translate var(--dur-2) var(--ease-out),display var(--dur-2) allow-discrete,overlay var(--dur-2) allow-discrete}
.cal-pop:not(:popover-open){opacity:0;translate:0 calc(var(--rise) * -1)}   /* I: the popover opens and closes (v110-motion.css §7 has where it starts) */
.cal-pop-d{margin:0 0 8px;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-semibold);color:var(--fg)}
.cal-none{margin:10px 2px 0}
/* the day's panel — a side sheet (ui/rulesheet.js's layer host, the "cal-day" layer) */
.rs-ov:has(> .cal-dsh){justify-content:flex-end;align-items:stretch;padding:0;background:var(--scrim-soft)}
.rs-sheet.cal-dsh{width:min(440px,100%);height:100%;max-height:none;border-radius:0;border-left:1px solid var(--bd);box-shadow:var(--sh-high);animation:dp-slide var(--dur-3) var(--ease-out)}
@media (prefers-reduced-motion:reduce){.rs-sheet.cal-dsh{animation:none}}
.cal-dsh .rs-bd{gap:0;padding-top:8px}
.cal-dp-g{display:flex;flex-direction:column;gap:2px;padding:12px 0 6px;border-top:1px solid var(--ln-3)}
.cal-dp-g:first-child{border-top:0;padding-top:2px}
.cal-dp-h{display:flex;align-items:center;gap:8px;margin:0 0 2px;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-semibold);color:var(--fg-2)}
.cal-dp-h>svg{flex:none;color:var(--fg-3)}
.cal-dp-n{color:var(--fg-3);font-weight:var(--w-medium);font-variant-numeric:tabular-nums}
.cal-dp-show{margin-inline-start:auto;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium)}
.cal-dp-l{display:grid;margin:0;padding:0;list-style:none}
.cal-dp-r{display:flex;align-items:flex-start;gap:10px;padding:6px 0}
.cal-dp-r>.cal-ic{margin-top:2px}
.cal-dp-b{display:flex;flex-direction:column;gap:1px;min-width:0;font-size:var(--t-body);line-height:var(--lh-body)}
.cal-dp-w{font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-semibold);color:var(--fg-3)}
.cal-dp-t{color:var(--fg);text-decoration:none;overflow-wrap:anywhere;text-wrap:pretty}
@media (hover:hover){.cal-dp-t:hover{text-decoration:underline}}
.cal-dp-pg{display:grid;gap:1px;margin:2px 0 0;padding:0;list-style:none;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);overflow-wrap:anywhere}
.cal-dp-pg.is-pairs{gap:6px;margin-top:4px}
.cal-dp-pg.is-pairs>li{padding-inline-start:8px;box-shadow:inset 2px 0 0 var(--ln)}
.cal-dp-rg{white-space:nowrap}
.cal-dp-s{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);font-variant-numeric:tabular-nums}
.cal-dp-none{margin:4px 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
/* the month as a list — shown instead of the grid when the calendar is under 600px wide (a phone) */
.cal-agl{display:none}
.cal-agl-days{display:grid;gap:16px;margin:0;padding:0;list-style:none}
.cal-agl-h{display:flex;align-items:center;gap:8px;margin:0 0 6px;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-semibold);color:var(--fg-2)}
.cal-agl-h>.cal-qm{margin-inline-start:0}
.cal-agl-l{margin:0;padding:0;list-style:none;border:1px solid var(--ln);border-radius:var(--r-12)}
.cal-agl-l>li+li{border-top:1px solid var(--ln-2)}
.cal-agr{display:flex;align-items:flex-start;gap:10px;min-height:44px;padding:12px;border-radius:calc(var(--r-12) - 1px);color:var(--fg);text-decoration:none;font-size:var(--t-body);line-height:var(--lh-body);transition:var(--tr-ui)}
.cal-agr>.cal-ic{margin-top:3px}
@media (hover:hover){.cal-agr:hover{background:var(--bg-3)}}
.cal-agr-b{display:flex;flex-direction:column;gap:2px;min-width:0}
.cal-agr-t{min-width:0;overflow-wrap:anywhere}   /* the list has room: every name whole */
.cal-agr-r{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);font-variant-numeric:tabular-nums}
.cal-agl-d.is-past .cal-agr{color:var(--fg-2)}
.cal-agl-none{margin:0;padding:12px;border:1px dashed var(--ln);border-radius:var(--r-12);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.cal-agl-ctx{margin-top:20px}
.cal-agl-past{margin-bottom:14px}
.cal-agl-past[open]{padding-bottom:6px;border-bottom:1px solid var(--ln-2)}
/* loop fix (N1): a "Same page" row in the list is one line of names and one of pages, each cut with "…" — the whole pairs are in the day's panel it opens */
.cal-agr.is-clash{width:100%;border:0;background:none;font:inherit;text-align:start;cursor:pointer}
.cal-agr-t.is-one,.cal-agr-r.is-one{display:block;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.cal-agr.is-clash .cal-agr-b{flex:1 1 auto;overflow:hidden}
.cal-agl-d,.cal-agl-l,.cal-agl-l>li,.cal-agr.is-clash{min-width:0}   /* a one-line row never widens the list past the card */
/* loop fix (N1): the month's quiet windows and freezes, said once above the grid when their chip is off */
.cal-qline{display:flex;align-items:flex-start;gap:6px;margin:-4px 0 10px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.cal-qline>svg{flex:none;margin-top:3px}
.cal-qline .lk{font-size:inherit}
/* loop fix (N1 · 1440 and below): where a day is narrow, the chip's coloured icon stands for its verb — the name gets the room (the verb stays in the
   chip's label and tooltip, and in the Key); a count ("3 actions") never breaks */
@container cal (max-width:1400px){.cal-ev .cal-t{white-space:nowrap}}   /* loop fix (round 1 · N calendar): the kind word stays at every desktop width — the name is what shortens */
/* loop fix (round 1 · A14 · C6 · WCAG 2.5.8): stacked chips sit 24px apart (20px + 4px), "+N more" is 20px; on a phone the filters, the month arrows and
   "Earlier in …" are 40px tall */
@media (max-width:599px){.cal-fc{min-height:40px}.cal-hd .ib{width:40px;height:40px}details.pt-more.cal-agl-past > summary{min-height:40px}}
@container cal (max-width:600px){
  .cal-g{display:none}
  .cal-agl{display:block}
  .cal.wk-in .cal-ag{display:none}
  .cal-m{min-width:0}
}
.fd-res>.is-full{grid-column:1/-1}
/* Results: room for Expected and Effect, which wrap instead of being cut (#4, #23) */
.r-row.is-7 .r-num.is-wrap .r-sub{white-space:normal}
@media (max-width:1320px){.r-row.is-7{grid-template-columns:112px minmax(0,1fr) 128px 76px 128px 116px 44px}}
/* at 1280 the column title, the card's first row and the toolbar stay on one line (#24) */
.kb-colh{display:flex;align-items:center;padding:8px 10px 4px;font-size:var(--t-body);line-height:var(--lh-body);min-width:0;position:relative;gap:6px}
.kb-colh .kb-colx{position:absolute;right:8px;top:50%;transform:translateY(-50%);opacity:0;transition:opacity var(--dur-1) var(--ease-out)}
.kb-colh:hover .kb-colx,.kb-colh:focus-visible .kb-colx{opacity:1}
@media (max-width:1320px){
  .kb-colh span:not(.kb-colx){font-size:var(--t-co)}
  .kb-card{padding-left:11px;padding-right:11px}
  .kb-hd{column-gap:4px}
  .kb-hd .kb-due{font-size:var(--t-sh);line-height:var(--lh-sh)}
}

/* v73 — search page fixes (the all-pages review). Merged into linear.css once the pages are done. */
/* item 18: a card title is never cut ("Estimated share of search clic…"); the short sub-line beside it wraps instead (as on Competitors) */
.sv .sec-hd h2{flex:none;overflow:visible}
.sv .sec-hd .n{flex:0 1 auto;min-width:0}
.sv .sec-hd .more{flex:none}
/* item 18: share changes carry "pts" ("+1.9 pts") — the change column fits it on one line */
.sv-sovc .sv-sov-r{grid-template-columns:minmax(0,160px) minmax(0,1fr) 56px 64px}
.sv-sovc .sv-sov-r .chg{white-space:nowrap}
@media (max-width:1320px){.sv-sovc .sv-sov-r{grid-template-columns:minmax(0,130px) minmax(0,1fr) 52px 60px}}

/* v73 — aisearch page fixes (the all-pages review). Merged into linear.css once the pages are done. */

/* the tiles on their own panel, right above "What would get you named more" */
.ai .ai-top{padding:14px 16px}
.ai .ai-top .kp-strip{margin-bottom:0}
.ai .kp-strip.is-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.ai .kp-v.is-sum{white-space:normal}

/* the loop: what would get you named more — one row per thing, state word first, where it lives on the right */
.ai-loop-l{display:flex;flex-direction:column}
.ai-loop-r{display:grid;grid-template-columns:150px minmax(0,1fr) auto 14px;align-items:center;column-gap:14px;min-height:44px;padding:7px 8px;margin:0 -8px;border-bottom:1px solid var(--ln-2);border-radius:var(--r-6);cursor:pointer;color:var(--fg-2)}
.ai-loop-r:last-child{border-bottom:0}
@media (hover:hover){.ai-loop-r:hover{background:var(--hover-solid)}}
.ai-loop-r > svg{color:var(--fg-4)}
.ai-loop-st{display:flex;align-items:center;min-width:0}
.ai-loop-st > svg{color:var(--fg-3);margin-left:4px}
.ai-loop-r .k2{display:flex;flex-direction:column;gap:1px;min-width:0}
.ai-loop-r .k{color:var(--fg);font-weight:var(--w-medium);font-size:var(--t-body);line-height:var(--lh-body)}
.ai-loop-r .u{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.ai-loop-a{display:flex;align-items:center;gap:8px;justify-content:flex-end;white-space:nowrap}
.ai-loop.is-quiet .sec-hd{border-bottom:0;padding-bottom:0;margin-bottom:0}

/* an all-zero chart is a sentence */
.ai-zero{display:flex;align-items:center;gap:10px;padding:26px 16px;margin:8px 0 2px;border-radius:var(--r-8);background:var(--bg-2);color:var(--fg-2);font-size:var(--t-body);line-height:var(--lh-body)}
.ai-zero svg{color:var(--fg-4);flex:none}

/* "How Dottpace measures" link at the end of the chart's one line */
.ai-mlink{display:inline-flex;align-items:center;gap:3px;font-size:var(--t-co);font-weight:var(--w-medium);color:var(--fg-3);white-space:nowrap}
@media (hover:hover){.ai-mlink:hover{color:var(--fg)}}
#ai-method{scroll-margin-top:72px}
#ai-method .sv-cap{margin:0 0 8px;max-width:110ch}

/* the chain: asked by Dottpace → measured in Google Analytics, two groups side by side, never one funnel */
.ai-chain2{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:14px 20px;align-items:start}
.ai-chain-g{display:flex;flex-direction:column;gap:8px;min-width:0}
.ai-chain-g.is-people{padding-left:20px;border-left:1px dashed var(--ln)}
.ai-chain-t{font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-3)}
.ai-chain2 .ai-chain{flex-wrap:nowrap;align-items:center}
.ai-chain2 .ai-ch{align-self:stretch}
.ai-arr{display:flex;align-items:center;color:var(--fg-4);flex:none}
.ai-chain-n{grid-column:1 / -1;margin:0}
@media (max-width:1320px){.ai-chain2{grid-template-columns:minmax(0,1fr)}.ai-chain-g.is-people{padding-left:0;border-left:0;padding-top:12px;border-top:1px dashed var(--ln)}}

/* competitors: full width, a rival's row opens it */
.ai .ai-cmp-r{grid-template-columns:minmax(0,180px) minmax(0,1fr) 88px 64px;padding:4px 8px;margin:0 -8px;border-radius:var(--r-6)}
.ai .ai-cmp-r.is-link{cursor:pointer}
@media (hover:hover){.ai .ai-cmp-r.is-link:hover{background:var(--hover-solid)}}

/* rows under a table that complete a total (Other AI sources, assistants not asked) */
.tbl-r.is-sub .k{color:var(--fg-2);font-weight:var(--w-regular)}

/* the header's thin-plan warning */
.ai-thin{color:var(--fg-2)}

/* a fall's "why" under a question's title */
.ai-why{display:flex;align-items:flex-start;gap:8px;margin:10px 0 0;padding:9px 12px;border-radius:var(--r-8);background:var(--bg-2);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2);max-width:96ch}
.ai-why > svg{color:var(--fg-3);flex:none;margin-top:3px}
.ai-why b{color:var(--fg);font-weight:var(--w-semibold)}
.ai-why .more{margin-left:auto;display:inline-flex;align-items:center;gap:3px;white-space:nowrap;font-weight:var(--w-medium);color:var(--link-tint,var(--link))}

/* one link per dead end (a claim, a price, a blocked bot) */
.ai-fix{display:inline-flex;align-items:center;gap:3px;margin-top:2px;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--link-tint,var(--link))}
@media (hover:hover){.ai-fix:hover{text-decoration:underline}}
.ai-means{color:var(--fg-2)}
.ai-means b{font-weight:var(--w-medium);color:var(--fg)}
.ai-means .ai-fix{margin-top:0}
.ai-mv .more{display:inline-flex;align-items:center;gap:3px;white-space:nowrap;font-size:var(--t-co);font-weight:var(--w-medium);color:var(--link-tint,var(--link))}

/* the first 14 days */
.ai-young-e{margin-top:12px}

/* a run that failed, on the answers page */
.ai-ansr.is-failed{cursor:default}
.ai-ansr.is-failed .ai-anst{color:var(--fg-3)}
.ai-ansr.is-failed .ai-anst b{color:var(--fg-2);font-weight:var(--w-medium)}

/* "What Dottpace asks" beside the Questions tools */
.ai-plink{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 8px;border-radius:var(--r-6);font-size:var(--t-body);font-weight:var(--w-medium);color:var(--fg-2);white-space:nowrap}
@media (hover:hover){.ai-plink:hover{background:var(--bg-3);color:var(--fg)}}
.ai-plink svg{color:var(--fg-3)}

/* "What changed in what Dottpace asks": the date and its "now" tag on one line */
.ai .ai-hist{grid-template-columns:140px 84px minmax(0,1fr) auto}
.ai .ai-hist b{white-space:nowrap}

/* v73 — local page fixes (the all-pages review). Merged into linear.css once the pages are done. */

/* story rows: one per flagged location, right under the tabs (review #7) */
.lc > .lc-stories{margin-top:20px;padding:4px 16px}
.lc-story{display:flex;align-items:flex-start;gap:10px;padding:11px 4px;border-bottom:1px solid var(--ln-2);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2);border-radius:var(--r-6)}
.lc-story:last-child{border-bottom:0}
@media (hover:hover){.lc-story:hover{background:var(--hover-solid)}}
.lc-story > svg{flex:none;margin-top:5px;color:var(--fg-3)}
.lc-story-i{flex:none;display:inline-flex;margin-top:3px;color:var(--c-red)}
.lc-story-t{flex:1;min-width:0;text-wrap:pretty}
.lc-story-t b{color:var(--fg);font-weight:var(--w-semibold)}
.lc-story-t .lbl{height:20px;vertical-align:1px}
.lc-story-j{color:var(--fg-3)}
.lc > .lc-first{margin-top:20px}
.sec.panel.lc-first{display:flex;align-items:flex-start;gap:10px;padding:14px 18px}
.lc-first > svg{flex:none;margin-top:2px;color:var(--fg-3)}
.lc-first p{margin:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.lc-first b{color:var(--fg);font-weight:var(--w-semibold)}
.lc-chart-wait{display:grid;place-items:center;height:160px;border:1px dashed var(--ln);border-radius:var(--r-8);font-size:var(--t-body);color:var(--fg-3)}

/* the location table: the Location column keeps ~180px at 1280; headers may take two lines (review #6) */
.lc-locs .tbl-h,.lc-locs .tbl-r{column-gap:12px}
.lc-locs .tbl-h{height:auto;min-height:32px;padding-top:6px;padding-bottom:6px;align-items:end}
.lc-locs .tbl-h span{white-space:normal;line-height:15px}
.lc-locs .k{display:flex;align-items:center;gap:2px;min-width:0}
.lc-mut{color:var(--fg-3)}
/* "Has a finding" — the flag says what it is (review #24) */
.lc-flag{display:inline-flex;align-items:center;gap:3px;margin-left:6px;padding:0 6px 0 4px;height:18px;border-radius:var(--r-4);font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-3);white-space:nowrap}
@media (hover:hover){.lc-flag:hover{background:var(--bg-3);color:var(--fg)}}
.lc-flag svg{color:var(--c-red)}
.lc-colflag{display:inline-flex;margin-left:4px;color:var(--c-red);vertical-align:-1px}

/* OK is a muted check, only problems get a chip (review #15) */
.lc-ok{display:inline-flex;align-items:center;color:var(--fg-3)}
.lc-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.lc-vis{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0}
.lc-rowact{margin-top:4px;align-self:flex-start;font-size:var(--t-co)}
.lc-prof .k2,.lc-list .k2{align-items:flex-start}

/* the grid on a muted map: streets, a main road, neighbourhoods, a 1-mile scale (review #17) */
.lc-map{position:relative;display:inline-block;padding:24px 16px;margin-bottom:22px;border-radius:var(--r-12);background:radial-gradient(circle at 50% 50%,color-mix(in srgb,var(--c-blue) 7%,var(--bg-2)) 0,var(--bg-2) 72%);border:1px solid var(--ln-2)}
.lc-map .lc-grid{position:relative;z-index:1;padding:0;background:none;border-radius:0}
.lc-streets{position:absolute;inset:0;width:100%;height:100%;border-radius:inherit}
.lc-streets line{vector-effect:non-scaling-stroke;fill:none}
.lc-streets .st{stroke:var(--ln-2);stroke-width:1}
.lc-streets .hw{stroke:var(--ln);stroke-width:4;opacity:.55}
.lc-areas span{position:absolute;z-index:1;font-size:10px;line-height:12px;color:var(--fg-3);white-space:nowrap;letter-spacing:.01em}
.lc-areas .a0{top:6px;left:12px}.lc-areas .a1{top:6px;right:12px}.lc-areas .a2{bottom:6px;left:12px}.lc-areas .a3{bottom:6px;right:12px}
.lc-scale{position:absolute;right:2px;bottom:-20px;display:flex;align-items:center;gap:6px;font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3)}
.lc-scale i{display:block;width:36px;height:5px;border:1px solid var(--fg-3);border-top:0}
button.lc-pt{border:0;padding:0;font:inherit;font-size:11px;font-weight:var(--w-semibold);cursor:pointer}
.lc-pt.is-sel{box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--c-blue)}
.lc-pt.is-home.is-sel{box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--c-blue)}
.lc-map.is-sm{padding:20px 12px}
.lc-map.is-sm .lc-grid{grid-template-columns:repeat(var(--g),24px);grid-auto-rows:24px;gap:5px}
.lc-map.is-sm .lc-pt{width:24px;height:24px;font-size:9.5px}
.lc-map.is-sm .lc-scale i{width:29px}
.lc-gcol{display:flex;flex-direction:column;align-items:flex-start;min-width:0}
.lc-stamp{margin:4px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.lc-top ol{margin:4px 0 0;padding-left:18px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);list-style:decimal}
.lc-top li.is-you{color:var(--fg);font-weight:var(--w-semibold)}
.lc-hint{margin:0}
.lc-rvon{padding-left:10px;border-left:3px solid var(--c-orange)}
.lc-rvon .lk{align-self:flex-start;font-size:var(--t-co)}
/* then and now, side by side */
.lc-cmp{display:grid;grid-template-columns:repeat(2,minmax(0,max-content));gap:32px}
.lc-cmp-h{display:flex;flex-direction:column;gap:2px;margin-bottom:8px}
.lc-cmp-h b{font-size:var(--t-body);font-weight:var(--w-semibold);color:var(--fg)}
.lc-cmp-n{margin:4px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.lc-cmp-n b{color:var(--fg);font-weight:var(--w-semibold)}
.lc-cmp-mid{display:flex;flex-direction:column;gap:6px;margin-top:16px;padding-top:12px;border-top:1px solid var(--ln-2)}
.lc-cmp-mid .sv-cap{margin:0}
/* who is in the pack: a rival row recolours the grid */
button.ai-cmp-r.lc-pr{width:calc(100% + 12px);margin:-4px -6px;padding:4px 6px;border:0;border-radius:var(--r-6);background:none;font:inherit;font-size:var(--t-co);text-align:left;color:var(--fg-2);cursor:pointer}
@media (hover:hover){button.ai-cmp-r.lc-pr:hover{background:var(--hover-solid)}}
button.ai-cmp-r.lc-pr.is-on{background:var(--st-orange-bg);color:var(--fg)}
.lc-other{color:var(--fg-3)}
.lc-cmpb[aria-pressed="true"]{background:var(--bg-3);color:var(--fg)}

/* reviews: one stat line, the approved replies collapsed into one row per location (review #8) */
.lc-stat{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);white-space:nowrap}
.lc-works{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.lc-workrow{display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:var(--r-8);background:var(--bg-2);border:1px solid var(--ln-2);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
@media (hover:hover){.lc-workrow:hover{color:var(--fg);background:var(--bg-3)}}
.lc-workrow > svg:first-child{color:var(--c-green)}
/* every unconfirmed promise, each with its way out; the confirm names the scope and the person (review #4, #10) */
.lc-facts{padding:10px 12px;border-radius:var(--r-8);background:var(--st-orange-bg);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg)}
.lc-facts-h{display:flex;align-items:flex-start;gap:8px}
.lc-facts-h > svg{flex:none;margin-top:2px;color:var(--c-orange)}
.lc-facts-h b{font-weight:var(--w-semibold)}
.lc-facts-l{list-style:none;margin:8px 0 0;padding:0 0 0 21px}
.lc-facts-l li{padding:8px 0;border-top:1px solid var(--ln-2)}
.lc-fact-q q{font-style:normal;color:var(--fg)}
.lc-fact-a{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px}
.lc-confirm{margin-top:8px;padding:10px 12px;border-radius:var(--r-8);background:var(--bg);border:1px solid var(--ln-2)}
.lc-confirm .sv-cap{margin:6px 0 0}
.lc-confirm-q{margin:4px 0 0;font-weight:var(--w-medium);color:var(--fg)}
.lc-scope{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px}
.lc-scope .sv-cap{margin:0}
.lc-sc{display:inline-flex;align-items:center;gap:6px;font-size:var(--t-co);color:var(--fg);cursor:pointer}
.lc-asked{display:inline-flex;align-items:center;gap:4px;margin-top:4px}
.lc-reply-f .sv-cap.is-blocked{color:var(--neg-ink);font-weight:var(--w-medium)}

/* from seen to visited: one line that says what to tag, in the owner's unit (review #12) */
.lc-tag{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin:10px 0 0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.lc-flow2 + .lc-tag{margin-top:14px}

/* what would move it: the state, the locked expectation, who does what (review #9) */
.lc .lc-ws{margin:8px 0 0}
.lc .lc-ws + .lc-ws{margin-top:4px}
.lc-more{margin-top:8px;font-size:var(--t-co)}

/* AI tab: rival names wrap, never cut (review #28) */
.lc-who{display:flex;flex-direction:column;gap:1px;min-width:0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);white-space:normal;overflow-wrap:anywhere}
.lc-ai .tbl-r{align-items:start}
.lc-ai .tbl-r > *{padding-top:6px;padding-bottom:6px}

/* the honest no-location page (decision 8) */
.lc-empty-acts{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px 16px;margin-top:12px}

/* light theme: orange numbers, stars and low ratings at ≥ 4.5:1 (review #18) — the numbers read --warn-ink; the stars take it in light */
:root[data-theme="light"] .lc-stars{color:var(--warn-ink)}

@media (max-width:1320px){
  .lc-scale i{width:31px}
  .lc-map.is-sm .lc-scale i{width:29px}
  .lc-cmp{gap:20px}
}
.lc-tag .more{display:inline-flex;align-items:center;gap:2px;white-space:nowrap}

/* the profile work page: fields as a diff, then the replies (review #30) */
.pf{display:flex;flex-direction:column;gap:14px;max-width:880px;padding:6px 20px 20px}
.pf-title{margin:0;font-size:var(--t-t2);line-height:var(--lh-t2);font-weight:var(--w-semibold);color:var(--fg)}
.pf-sub{margin:-8px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.pf-list{display:flex;flex-direction:column;gap:10px}
.pf-row{padding:12px 14px;border:1px solid var(--ln-2);border-radius:var(--r-8);background:var(--bg)}
.pf-h{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 6px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.pf-h b{font-weight:var(--w-semibold)}
.pf-fact{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.pf-why{flex-basis:100%;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.pf-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:10px}
.pf-k{display:block;margin-bottom:4px;font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-3)}
.pf-txt{margin:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2);white-space:pre-wrap}
.pf-was .pf-txt{color:var(--fg-3)}
.pf-ta{width:100%;resize:vertical;padding:8px 10px;border:1px solid var(--ln);border-radius:var(--r-6);background:var(--bg);color:var(--fg);font:inherit;font-size:var(--t-body);line-height:var(--lh-body)}
.pf-k2{margin:6px 0 4px;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
.pf-rp{display:flex;flex-direction:column}
.pf-r{display:flex;flex-direction:column;gap:4px;padding:10px 0;border-bottom:1px solid var(--ln-2)}
.pf-r:last-child{border-bottom:0}
.pf-rh{font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-semibold);color:var(--fg)}
.pf-note{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.pf-note ul{margin:4px 0;padding-left:18px}
.pf-note p{margin:4px 0}
.lc-empty-acts .more{display:inline-flex;align-items:center;gap:4px}

/* weekly bars for small counts (review #13) — the bar marks, scoped to Local (there is no charts stylesheet in this app) */
.lc .chart-bar .chart-plot > .bars{position:absolute;inset:0}
.lc .chart-bar .bar-g{position:absolute;top:0;bottom:0;display:flex;align-items:flex-end;justify-content:center;gap:3px;padding:0 4px}
.lc .chart-bar .bar-el{flex:0 1 44px;border-radius:4px 4px 0 0;min-height:2px;display:block;transition:opacity var(--dur-1) var(--ease-out)}
.lc .chart-bar .chart-plot:hover .bar-el{opacity:.55}
.lc .chart-bar .bar-g:hover .bar-el{opacity:1}
.lc .chart-bar .ccol.is-bar{transform:none}
.lc .chart-bar .ccol.is-bar:hover{background:var(--bg-tl);border-radius:6px 6px 0 0}
.lc .chart-x.bars span{transform:translateX(-50%)}
.lc-ai .k2 .k{white-space:normal;overflow:visible;text-overflow:clip}

/* v73 — competitors page fixes (the all-pages review). Merged into linear.css once the pages are done. */

/* one (i) "How this is counted" per card, in the card's header (#19) */
.cps .cp-hd-t,.cp .cp-hd-t{display:flex;align-items:center;gap:6px;margin-left:auto}
.cp-i:focus-visible{background:var(--bg-3);color:var(--fg-2)}@media (hover:hover){.cp-i:hover{background:var(--bg-3);color:var(--fg-2)}}

/* an empty card is one line (#16) */
.cp-one{padding-top:14px;padding-bottom:14px}
.cp-one .sec-hd{border-bottom:0;padding-bottom:0;margin-bottom:0;flex-wrap:wrap;row-gap:2px}
.cp-one .sec-hd .n{white-space:normal}

/* what passing them is worth (#7): the worth, its basis, "estimate" — inline, even inside a list row whose <b> is a block */
.cp-worth{margin-top:4px}
.cp-worth .stake-k{color:var(--fg-3)}
.cps .cp-do .stake-line b,.cps .cp-li .stake-line b,.cp .cp-do .stake-line b,.cp .cp-li .stake-line b,.cp-worth b{display:inline;font-size:inherit;line-height:inherit;font-weight:var(--w-semibold);color:var(--fg)}
.cp-do b .lbl,.cp-li b .lbl,.tbl-r .k .lbl{margin-left:6px;vertical-align:1px;font-weight:var(--w-medium)}
.cp-do .cp-li-d{margin-bottom:1px}
/* a two-line number cell: the value, then what it is made of */
.cp-wc{display:flex;flex-direction:column;align-items:flex-end;gap:1px}
.cp-wc b{font-weight:var(--w-semibold);color:var(--fg)}
.cp-sub,.cps .tbl .cp-sub,.cp .tbl .cp-sub{display:block;font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3);white-space:nowrap;overflow:visible;text-align:right}
/* "no change" and "tracked from today" sit right, like the numbers (#26) */
.cp-nc{display:inline;color:var(--fg-3);text-align:right;justify-self:end}
span.num.cp-nc{display:block}

/* the 90-day chart shades the 28 days the page covers (#13) */

/* the Overview's "Their changes" cards: the effect first, what it is in, the finding's state word */

/* Their changes (#10): one block per cause */
.cp-blks{display:flex;flex-direction:column}
.cp-blk{display:flex;flex-direction:column;gap:4px;padding:14px 0;border-top:1px solid var(--bd-tl);scroll-margin:80px}
.cp-blk:first-child{border-top:0;padding-top:2px}
.cp-blk-t{display:block;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
.cp-blk p{margin:0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);text-wrap:pretty}
.cp-eff b{font-weight:var(--w-semibold);color:var(--fg)}
.cp-pgs{display:flex;flex-direction:column;gap:4px;margin-top:6px}
@media (hover:hover){.cp-pgl:hover{background:var(--bg-3)}}
.cp-pgl .u{color:var(--fg-3)}
.cp-pgl .lk{margin-left:auto}
.cp-pg-more{align-self:flex-start;margin-top:2px;font-size:var(--t-co)}
.cp-blk-f{display:flex;align-items:center;gap:10px;margin-top:6px}
.cp-diffb{display:inline-flex;align-items:center;gap:4px;font-size:var(--t-co)}
.cp-diff ul{margin:4px 0 0;padding-left:16px;display:flex;flex-direction:column;gap:3px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.cp-diff li.is-new{color:var(--fg);font-weight:var(--w-medium)}
.cp-diff-r{grid-column:1 / -1;display:flex;flex-direction:column;gap:2px}

/* notes that belong to a card, and the page line on a competitor's page (#18) */
.cp-note{margin:10px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.cp-brings{margin:6px 0 0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.cp-sub-t{margin-top:16px}
.cp > .sv-tbl,.cp > .sv-card,.cp > .cp-one{margin-top:20px}

/* the profile's Missing table at 1280: the search never breaks mid-word — the button column gives way (#20) */
.cp-gapc .k2,.cp-gapc .k{min-width:0;overflow-wrap:normal;word-break:normal}
.cp-gapc .sv-act .btn{white-space:nowrap}
@media (max-width:1320px){.cp-gapc .sv-act .btn{max-width:100%;overflow:hidden;text-overflow:ellipsis}}

/* ============ v75 — the logo's layout. Since identity v1.0 (2026-10-14) the logo is the "dP" monogram (ui/brand.js); its tile and sizes live in
   styles/v119-identity.css. Cube D (kit v3) and its image pairs are retired. ============ */
.dp-av{margin-top:1px}
.av-dp{vertical-align:middle}

/* ===== v74 · agent (merged 2026-09-30) ===== */
/* v74 — agent (the market-scan build). Merged into linear.css when done.
   Website → Agent Readiness (pages/lagent.js). Page kit = Local / AI Search: .sv panels, .kp tiles, .tbl tables, .lbl.tint chips.
   Radii by role: panels 18 (kit) · inner boxes 12 · frames and small tiles 8 · rows 6 · chips capsule. Colours only from tokens, so both themes work. */

/* ---------- small pieces ---------- */
.ag .ag-ok{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;color:var(--fg-3)}
.ag .ag-mut{color:var(--fg-3)}
.ag .ag-wrap{white-space:normal;overflow-wrap:anywhere;min-width:0;padding:6px 0;font-size:var(--t-co);line-height:var(--lh-co)}
.ag .ag-in{color:var(--link-tint,var(--link));font-weight:var(--w-medium)}
@media (hover:hover){.ag .ag-in:hover{text-decoration:underline;text-underline-offset:2px}}
.ag .ag-partial{display:inline-flex;align-items:center;height:18px;padding:0 7px;margin-left:6px;border-radius:var(--r-full);background:var(--st-blue-bg);color:var(--st-blue-fg);font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-semibold);letter-spacing:.01em;vertical-align:1px;cursor:help;white-space:nowrap;flex:none}
.ag .ag-see{align-self:flex-start;margin-top:2px}
.ag .sec-hd .ag-partial{margin-left:auto}
.ag .sv-tbl{display:flex;flex-direction:column}
.ag .sv-tbl > .sv-cap + .sv-cap{margin-top:6px}

/* ---------- the change a fix makes (the work lives here) ---------- */
.ag .ag-change{display:flex;flex-direction:column;gap:6px;margin:0 0 12px;padding:10px 14px 12px;border-radius:var(--r-12);background:var(--bg-2);border:1px solid var(--ln-3)}
.ag .ag-change .tbl{margin-bottom:2px}
.ag .ag-chg .tbl-r{align-items:start}
.ag .ag-chg .k{white-space:normal;font-weight:var(--w-medium)}
.ag .ag-was{color:var(--fg-3);text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--fg-3) 55%,transparent)}
.ag .ag-now{color:var(--fg)}
.ag .ag-change .sv-cap{display:flex;align-items:flex-start;gap:5px}
.ag .ag-change .sv-cap svg{flex:none;margin-top:2px}
.ag .ag-noeff{color:var(--fg-2)}

/* ---------- Overview: the story row, readiness, what needs you ---------- */
.sv.ag > .ag-stories{margin-top:20px;padding:4px 14px}
.ag .ag-story{display:flex;align-items:flex-start;gap:10px;padding:11px 4px;border-bottom:1px solid var(--ln-2);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2);border-radius:var(--r-6)}
.ag .ag-story:last-child{border-bottom:0}
@media (hover:hover){.ag .ag-story:hover{background:var(--hover-solid)}}
.ag .ag-story > svg{flex:none;margin-top:4px;color:var(--fg-3)}
.ag .ag-story-i{flex:none;display:inline-flex;margin-top:3px;color:var(--c-red)}
.ag .ag-story-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;text-wrap:pretty}
.ag .ag-story-1{display:flex;flex-wrap:wrap;align-items:center;column-gap:8px;row-gap:2px}
.ag .ag-story-t b{color:var(--fg);font-weight:var(--w-semibold)}
.ag .ag-story-t .lbl{height:20px;vertical-align:1px}
.ag .ag-story-j{color:var(--fg-3);font-size:var(--t-co);line-height:var(--lh-co)}
.sv.ag > .ag-first{margin-top:20px;display:flex;flex-direction:row;align-items:flex-start;gap:10px;padding:14px 18px}
.ag .ag-first > svg{flex:none;margin-top:2px;color:var(--fg-3)}
.ag .ag-first p{margin:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.ag .ag-first b{color:var(--fg);font-weight:var(--w-semibold)}

.ag .ag-rd-list{display:flex;flex-direction:column}
.ag .ag-rd{display:grid;grid-template-columns:28px minmax(0,1fr) auto 14px;align-items:center;gap:12px;border-bottom:1px solid var(--ln-2);border-radius:var(--r-6);color:var(--fg-2);transition:var(--tr-ui)}
.ag .ag-rd:last-child{border-bottom:0}
@media (hover:hover){.ag .ag-rd:hover{background:var(--hover-solid)}}
.ag .ag-rd > svg{color:var(--fg-4)}
.ag .ag-rd-ic{display:grid;place-items:center;width:28px;height:28px;border-radius:var(--r-8);background:var(--bg-3);color:var(--fg-3)}
.ag .ag-rd-b{display:flex;flex-direction:column;gap:1px;min-width:0}
.ag .ag-rd-b b{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg)}
.ag .ag-rd-b span{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);text-wrap:pretty}
.ag .ag-rd-s{display:inline-flex;justify-content:flex-end}

.ag .ag-need-w{border-bottom:1px solid var(--ln-2)}
.ag .ag-need-w:last-child{border-bottom:0}
.ag .ag-need-s{padding-top:1px}
.ag .ag-need-b{display:flex;flex-direction:column;gap:3px;min-width:0}
.ag .ag-need-b > b{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg)}
.ag .ag-need-c{display:flex;justify-content:flex-end;align-items:center;padding-top:1px}
.ag .ag-need-w .hm-mf{margin:0 0 12px 84px}
.ag .ag-need-w > .ag-change{margin-left:84px}

/* the four lanes: tiles */
.ag .ag-kp{grid-template-columns:repeat(4,minmax(0,1fr))}
.ag .ag-brief .ag-kp{margin-bottom:2px}
.ag .ag-brief .sec-hd{margin-bottom:12px}
.ag .ag-kp .kp-l{display:flex;align-items:center;flex-wrap:wrap;row-gap:2px}
.ag .ag-kp .kp-v.is-pend{font-size:var(--t-t3);line-height:var(--lh-t2)}
.ag .ag-kp .ag-kp-note{color:var(--fg-2)}
.ag .ag-kp .ag-kp-note.is-bad{color:var(--neg-ink);font-weight:var(--w-medium)}
.ag .kp.is-static{cursor:default}

/* what changed outside */
.ag .ag-out{display:flex;flex-direction:column}
.ag .ag-out-r{display:grid;grid-template-columns:64px minmax(0,1fr);gap:12px;padding:10px 0;border-bottom:1px solid var(--ln-2)}
.ag .ag-out-r:last-child{border-bottom:0}
.ag .ag-out-d{font-size:var(--t-co);line-height:var(--lh-body);color:var(--fg-3);font-variant-numeric:tabular-nums}
.ag .ag-out-b{display:flex;flex-direction:column;gap:2px;min-width:0}
.ag .ag-out-b > b,.ag .ag-out-t{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg)}
.ag .ag-src{display:inline-flex;align-items:center;gap:3px;color:var(--fg-2)}
@media (hover:hover){.ag .ag-src:hover{color:var(--fg);text-decoration:underline;text-underline-offset:2px}}
.ag .ag-src svg{opacity:.7}

/* ---------- Visitors ---------- */
.ag .ag-wait{display:grid;place-items:center;height:200px;border-radius:var(--r-12);background:var(--bg-2);font-size:var(--t-body);color:var(--fg-3)}
.ag .ag-lanes .tbl-r{align-items:start}
.ag .ag-lanes .k2{padding:8px 0}
.ag .ag-lanes .k{display:block;white-space:normal}
.ag .ag-lanes .k .ag-partial{display:inline-flex;margin-left:0}
.ag .ag-lanes .u{white-space:normal;overflow:visible}
.ag .ag-est{padding:10px 12px;margin-top:10px;border-radius:var(--r-12);background:var(--bg-2)}
.ag .ag-est b{color:var(--fg);font-weight:var(--w-semibold)}
.ag .ag-split{display:flex;flex-direction:column;margin-bottom:6px}
.ag .ag-split-r{display:grid;grid-template-columns:22px minmax(150px,.9fr) 84px minmax(0,2fr);gap:12px;align-items:baseline;padding:9px 0;border-bottom:1px solid var(--ln-2);font-size:var(--t-co);line-height:var(--lh-co)}
.ag .ag-split-r:last-child{border-bottom:0}
.ag .ag-split-ic{display:inline-flex;color:var(--fg-3);transform:translateY(2px)}
.ag .ag-split-k{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg)}
.ag .ag-split-n{text-align:right;font-size:var(--t-body);font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
.ag .ag-split-w{color:var(--fg-3);text-wrap:pretty}
.ag .ag-pages{display:flex;flex-direction:column;gap:6px;margin-top:14px}
.ag .ag-acts{display:flex;flex-direction:column}
.ag .ag-act{display:grid;grid-template-columns:44px minmax(0,1fr) minmax(0,1.3fr);gap:12px;align-items:baseline;padding:8px 0;border-bottom:1px solid var(--ln-2);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.ag .ag-act:last-child{border-bottom:0}
.ag .ag-act b{text-align:right;font-weight:var(--w-semibold);font-variant-numeric:tabular-nums}

/* ---------- Access check: the agents table ---------- */
.ag .ag-bots .tbl-r{align-items:center}
.ag .ag-bots .tbl-r.is-bad{border-bottom-color:transparent}
.ag .ag-bots .k{display:flex;align-items:center;gap:6px}
.ag .ag-new{display:inline-flex;align-items:center;height:16px;padding:0 6px;border-radius:var(--r-full);background:var(--st-blue-bg);color:var(--link-tint,var(--link));font-size:10.5px;font-weight:var(--w-semibold);letter-spacing:.02em}
.ag .ag-means{grid-column:1/-1;display:flex;align-items:flex-start;gap:7px;margin:-4px 0 10px;padding:8px 12px;border-radius:var(--r-8);background:color-mix(in srgb,var(--c-red) 6%,var(--bg));font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
:root[data-theme="dark"] .ag .ag-means{background:var(--st-red-bg)}
.ag .ag-means > svg{flex:none;margin-top:1px;color:var(--c-red)}
.ag .ag-means b{color:var(--fg);font-weight:var(--w-semibold)}
.ag .ag-means .lbl{height:18px;vertical-align:1px}
.ag .ag-grp{display:block;padding:14px 0 6px;border-bottom:1px solid var(--ln-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.ag .ag-grp b{font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-semibold);color:var(--fg-2);text-transform:uppercase;letter-spacing:.04em}
.ag .ag-bots .tbl-h + .ag-grp{padding-top:10px}

/* the site checks */
.ag .ag-ck-w{border-bottom:1px solid var(--ln-2)}
.ag .ag-ck-s{display:flex;align-items:center;min-height:22px}
.ag .ag-ck-b{display:flex;flex-direction:column;gap:3px;min-width:0}
.ag .ag-ck-b > b{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg)}
.ag .ag-ck-c{display:flex;justify-content:flex-end;align-items:center;min-height:22px}
.ag .ag-ck-w .hm-mf{margin:0 0 12px 108px}
.ag .ag-ck-w > .ag-change{margin-left:108px}
.ag .ag-more{margin:10px 0 2px;font-size:var(--t-co);line-height:var(--lh-co);gap:5px}

/* ---------- Mystery shopper ---------- */
.ag .ag-task{margin:4px 0 12px;font-size:var(--t-t3);line-height:var(--lh-t3);font-weight:var(--w-semibold);letter-spacing:var(--ls-t3);color:var(--fg)}
.ag .ag-rules{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.ag .ag-rule{display:flex;align-items:flex-start;gap:9px;padding:10px 12px;border-radius:var(--r-12);background:var(--bg-2);border:1px solid var(--ln-3)}
.ag .ag-rule-ic{flex:none;display:grid;place-items:center;width:26px;height:26px;border-radius:var(--r-8);background:var(--bg-3);color:var(--fg-2)}
.ag .ag-rule-b{display:flex;flex-direction:column;gap:2px;min-width:0}
.ag .ag-rule-b b{font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-semibold);color:var(--fg)}
.ag .ag-steps{list-style:none;margin:6px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(136px,1fr));gap:12px}
.ag .ag-step{display:flex;flex-direction:column;gap:6px;min-width:0}
.ag .ag-step-t{font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg);text-wrap:pretty}
.ag .ag-step-s{display:inline-flex;align-items:center;gap:3px;font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3)}
.ag .ag-step.is-ok .ag-step-s{color:var(--pos)}
.ag .ag-step.is-stop .ag-step-s{color:var(--neg-ink);font-weight:var(--w-semibold)}
.ag .ag-step.is-skip .ag-step-t,.ag .ag-step.is-skip .ag-step-s{color:var(--fg-4)}
.ag .ag-step.is-skip .ag-fr{opacity:.45}
.ag .ag-step.is-run .ag-fr{opacity:.7}
/* a screenshot placeholder, drawn: a browser bar and the blocks of the page — never a real image */
.ag .ag-fr{position:relative;display:flex;flex-direction:column;aspect-ratio:4/3;border-radius:var(--r-8);border:1px solid var(--ln);background:var(--lvl-0);overflow:hidden}
.ag .ag-fr-bar{display:flex;align-items:center;gap:3px;height:14px;padding:0 6px;background:var(--bg-3);border-bottom:1px solid var(--ln-3)}
.ag .ag-fr-bar i{width:4px;height:4px;border-radius:50%;background:var(--fg-4);opacity:.6}
.ag .ag-fr-bar span{flex:1;height:5px;margin-left:5px;border-radius:var(--r-full);background:var(--lvl-0)}
.ag .ag-fr-bd{flex:1;display:flex;flex-direction:column;gap:5px;padding:7px 8px}
.ag .ag-fr-bd > div{border-radius:var(--r-2);background:var(--bg-3)}
.ag .ag-fr-bd > .f-hero{height:38%}
.ag .ag-fr-bd > .f-row{height:18%;border-radius:0;background:linear-gradient(90deg,var(--bg-3) 0 30%,transparent 30% 35%,var(--bg-3) 35% 65%,transparent 65% 70%,var(--bg-3) 70%)}
.ag .ag-fr-bd > .f-search{height:12%;width:70%}
.ag .ag-fr-bd > .f-grid{flex:1;background:repeating-linear-gradient(90deg,var(--bg-3) 0 30%,transparent 30% 35%)}
.ag .ag-fr-bd > .f-img{height:40%;width:55%}
.ag .ag-fr-bd > .f-lines{height:22%;background:repeating-linear-gradient(180deg,var(--bg-3) 0 4px,transparent 4px 8px)}
.ag .ag-fr-bd > .f-btn{height:12%;width:42%;background:color-mix(in srgb,var(--c-blue) 45%,var(--bg-3))}
.ag .ag-fr-bd > .f-drawer{flex:1;margin-left:40%;border-left:2px solid var(--ln)}
.ag .ag-fr-bd > .f-field{height:12%;border:1px solid var(--ln);background:transparent}
.ag .ag-fr-bd > .f-menu{flex:1;width:50%;margin-left:auto;background:repeating-linear-gradient(180deg,var(--bg-3) 0 5px,transparent 5px 10px)}
.ag .ag-fr-bd > .f-challenge,.ag .ag-fr-bd > .f-stop{flex:1;display:grid;place-items:center;background:transparent;color:var(--fg-3)}
.ag .ag-fr-bd > .f-challenge{border:1px dashed var(--ln)}
.ag .ag-fr.is-stop{border-color:var(--c-red);box-shadow:0 0 0 2px color-mix(in srgb,var(--c-red) 22%,transparent)}
.ag .ag-fr.is-stop.k-form .f-field:first-child{border-color:var(--c-red);background:var(--st-red-bg)}
.ag .ag-fr.is-stop.k-product .f-lines,.ag .ag-fr.is-stop.k-product-miss .f-lines,.ag .ag-fr.is-stop.k-menu .f-menu{outline:1.5px dashed var(--c-red);outline-offset:2px}
.ag .ag-fr.is-stop.k-cart .f-drawer{border-left-color:var(--c-red)}
.ag .ag-fr.is-stop .f-challenge{color:var(--c-red);border-color:var(--c-red)}
.ag .ag-fr.is-end .f-stop{color:var(--fg-2)}
.ag .ag-why{display:flex;flex-direction:column;gap:4px;margin-top:14px;padding:12px 14px;border-radius:var(--r-12);background:var(--bg-2);border:1px solid var(--ln-3)}
.ag .ag-why p{margin:0}
.ag .ag-why > p:first-child{font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.ag .ag-why b{color:var(--fg);font-weight:var(--w-semibold)}
.ag .ag-why .lbl{height:18px;vertical-align:1px}
.ag .ag-verdict{display:flex;align-items:flex-start;gap:8px;margin-top:12px;padding:10px 14px;border-radius:var(--r-12);background:color-mix(in srgb,var(--c-green) 9%,var(--bg));font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.ag .ag-verdict > svg{flex:none;margin-top:1px;color:var(--pos)}
.ag .ag-verdict b{color:var(--fg);font-weight:var(--w-semibold)}
.ag .ag-next,.ag .ag-rel{display:flex;align-items:flex-start;gap:5px;margin-top:10px}
.ag .ag-next svg,.ag .ag-rel svg{flex:none;margin-top:2px}
.ag .ag-runs .tbl-r{align-items:center}
.ag .ag-res{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:6px 0}
.ag .ag-again{font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3);white-space:nowrap}

/* ---------- Shopping in AI ---------- */
.ag .ag-frame{display:flex;align-items:flex-start;gap:8px;margin:2px 0 6px;padding:10px 14px;border-radius:var(--r-12);background:var(--accent-t);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.ag .ag-frame > svg{flex:none;margin-top:2px;color:var(--accent)}
.ag .ag-frame b{color:var(--fg);font-weight:var(--w-semibold)}
.ag .ag-shop-s{display:flex;flex-direction:column;padding-top:12px}
.ag .ag-shop-h{display:flex;align-items:center;gap:8px;padding-bottom:6px;border-bottom:1px solid var(--ln-2);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.ag .ag-shop-h b{font-weight:var(--w-semibold)}
.ag .ag-shop-n{display:grid;place-items:center;width:20px;height:20px;border-radius:var(--r-full);background:var(--bg-3);font-size:var(--t-sh);font-weight:var(--w-semibold);color:var(--fg-2);font-variant-numeric:tabular-nums}
.ag .ag-shop-r{display:grid;grid-template-columns:128px minmax(0,1fr) auto;gap:12px;align-items:start;padding:10px 0;border-bottom:1px solid var(--ln-2)}
.ag .ag-shop-s .ag-shop-r:last-child{border-bottom:0}
.ag .ag-shop-b{display:flex;flex-direction:column;gap:2px;min-width:0}
.ag .ag-shop-b > b{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg)}
.ag .ag-shop-b > span{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);text-wrap:pretty}

/* ---------- Your MCP server ---------- */
.ag .ag-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--fg);background:var(--bg-3);padding:1px 6px;border-radius:var(--r-4)}
.ag .ag-tools{margin-top:12px}
.ag .ag-tools .tbl-r{align-items:start}
.ag .ag-tools .tbl-r > span{padding-top:8px;padding-bottom:8px}
.ag .ag-lab{margin:2px 0 12px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.ag .ag-lab b{font-size:var(--t-t3);line-height:var(--lh-t3);font-weight:var(--w-semibold);color:var(--fg)}
.ag .ag-k2{margin-top:16px}
.ag .ai-cmp{margin-top:6px}
.ag .ai-cmp-r{grid-template-columns:minmax(0,300px) minmax(0,1fr) 48px 0}
.ag .ag-sub{font-size:var(--t-sh);color:var(--fg-4);font-weight:var(--w-regular)}

/* ---------- narrow screens ---------- */
@media (max-width:1100px){
  .ag .ag-rules{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ag .ag-kp{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ag .ag-kp .kp:nth-child(3){border-left:0}
  .ag .ag-kp .kp:nth-child(n+3){border-top:1px solid var(--ln-2)}
}
@media (max-width:760px){
  .ag .ag-need-c,.ag .ag-ck-c{justify-content:flex-start}
  .ag .ag-need-w .hm-mf,.ag .ag-ck-w .hm-mf,.ag .ag-need-w > .ag-change,.ag .ag-ck-w > .ag-change{margin-left:0}
  .ag .ag-shop-r{grid-template-columns:minmax(0,1fr)}
  .ag .ag-rules{grid-template-columns:minmax(0,1fr)}
  .ag .ag-split-r{grid-template-columns:22px minmax(0,1fr) 72px}
  .ag .ag-split-w{grid-column:2/-1}
}
.ag .ag-nowrap{white-space:nowrap}
/* fix round: the Visitors card says its scope in its own header */

/* ===== v74 · ledger (merged 2026-09-30) ===== */
/* v74 — ledger (the market scan, R2 + R4): outside changes, their sources, rollout bands and the verdict rules. Merged into linear.css when done. */

/* a rollout (or days left out) behind a chart's lines — lib/charts.js o.bands and the bands markers carry */
.chart-band{position:absolute;top:0;bottom:0;container-type:inline-size;background:color-mix(in srgb,var(--fg) 5%,transparent);border-inline:1px dashed var(--ln-2);pointer-events:none}
.chart-band span{position:absolute;bottom:4px;left:50%;transform:translateX(-50%);padding:0 6px;border-radius:var(--r-4,4px);background:var(--bg-2);font-size:var(--t-sh);line-height:16px;color:var(--fg-3);white-space:nowrap;z-index:1}
@container (max-width: 90px){.chart-band span{display:none}}
.chart-band.is-gap{background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--fg) 12%,transparent) 0 3px,transparent 3px 6px)}

/* "Source: <site>" — a quiet link, never a button */
.cg-src{display:inline-flex;align-items:center;gap:3px;color:var(--fg-3);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--fg-3) 45%,transparent);text-underline-offset:2px;pointer-events:auto}
@media (hover:hover){.cg-src:hover{color:var(--fg);text-decoration-color:currentColor}}
.cg-src svg{flex:none;opacity:.7}
.cg-srcl{white-space:nowrap}
.cg-srcn{color:var(--fg-4)}
.cl-meta .cg-src{color:inherit}
.cg-srcw{display:flex;flex-wrap:wrap;gap:4px 14px;min-width:0;font-size:var(--t-co);line-height:var(--lh-co)}
.cg-srcw .cg-src{color:var(--fg-2)}
.cg-srcw.is-col{flex-direction:column;gap:2px}
.cl-who0{display:block}

/* the From outside lane: one line that says where its rows come from */
.cg-outnote{display:flex;gap:8px;align-items:flex-start;margin:0 0 12px;padding:10px 12px;border-radius:var(--r-12);background:var(--bg-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);max-width:none}
.cg-outnote svg{flex:none;margin-top:2px;color:var(--fg-3)}
.cg-outnote b{color:var(--fg-2);font-weight:var(--w-semibold)}

/* an outside change on this site: the fact that makes it apply ("behind Cloudflare, on the free plan") */
.cg-onsite{display:flex;gap:8px;align-items:flex-start;margin:12px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.cg-onsite svg{flex:none;margin-top:2px;color:var(--c-blue)}
.cg-notin{margin:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}

/* which of your numbers it can move — two aligned columns, the number first */
.cg-moves{display:grid;grid-template-columns:minmax(160px,max-content) minmax(0,1fr);gap:0;margin:0}
.cg-mv{display:contents}
.cg-mv>b,.cg-mv>span{padding:9px 0;border-bottom:1px solid var(--ln-2);font-size:var(--t-co);line-height:var(--lh-co)}
.cg-mv:last-child>b,.cg-mv:last-child>span{border-bottom:0}
.cg-mv>b{color:var(--fg);font-weight:var(--w-medium)}
.cg-mv>span{color:var(--fg-2);padding-left:18px}
.cg-measure{margin:0 0 6px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.cg-measure b{color:var(--fg);font-weight:var(--w-semibold)}
.cg-moves+.fd-muted{margin-top:10px}

/* a verdict a Google update touched: the link with its rule word, then the sentence */
.cg-touch{display:flex;flex-direction:column;gap:3px}
.cg-touch>.fd-muted{padding-left:18px}

/* the verdict rules — the Results tab says them once; a result or a measuring block says which applied */
.vr-rules{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:0;margin:12px 0 0;padding:4px 14px;border-radius:var(--r-12);background:var(--bg-2);font-size:var(--t-co);line-height:var(--lh-co)}
.vr-rules>div{display:contents}
.vr-rules dt,.vr-rules dd{padding:8px 0;border-bottom:1px solid var(--ln-2)}
.vr-rules>div:last-child>dt,.vr-rules>div:last-child>dd{border-bottom:0}
.vr-rules dt{color:var(--fg-3);white-space:nowrap}
.vr-rules dd{margin:0;color:var(--fg-2);min-width:0;padding-left:18px}
.vr-rules dd b{color:var(--fg);font-weight:var(--w-semibold)}
.vr-rules dd.is-teal b{color:var(--c-teal)}
.vr-rules .cg-src{margin-left:4px}
.vr-hd{margin:14px 0 0;font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-3)}

/* Results → the rules strip (said once, above the results) */
.vr-strip{margin:0 0 14px}
.vr-strip summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);padding:2px 0}
.vr-strip summary::-webkit-details-marker{display:none}
.vr-strip summary svg{flex:none;color:var(--fg-3)}
.vr-strip summary b{color:var(--fg);font-weight:var(--w-semibold)}
.vr-strip summary .vr-chev{margin-left:auto;transition:transform var(--dur-2) var(--ease-out)}
.vr-strip[open] summary .vr-chev{transform:rotate(180deg)}
.vr-strip .vr-rules{margin-top:10px}
.vr-hd+.vr-rules{margin-top:4px}

/* a result row says which rule applied, under its line */
.vr-note{display:inline-flex;align-items:center;gap:5px;margin-top:3px;font-size:var(--t-co);line-height:1.4;color:var(--fg-3);min-width:0;max-width:100%}
.vr-note svg{flex:none}
.vr-note span{overflow-wrap:break-word}
.vr-note.is-teal{color:var(--c-teal)}

/* the expectation, adjusted for the results page — under "Expected" */

/* the calendar: outside changes are small gray markers, rollouts gray bands */
.cal-ev.is-outside .cal-w{color:var(--fg-3)}
.cal-q.out::after{background:var(--fg-4);opacity:.55}
.cal-sw.is-out{background:var(--fg-4);opacity:.55}
/* changes from before a chart's first point, listed under it (lib/charts.js o.before / a marker's before: true) */
.chart-before{margin:6px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.chart-before b{font-weight:var(--w-medium);color:var(--fg-2)}
/* v74 fix: the From outside lane — month headers, and a row's "what it can move" without a chip */
.cl-led .cl-num.is-plain{margin-top:0}
.cl-outside .cl-row,.cl-outside .cl-head{grid-template-columns:minmax(0,1fr) minmax(0,.55fr)}
.cl-outside .cl-row{padding-top:12px;padding-bottom:12px}
/* Results rows at six columns (design #13): the raw before → after lives in the Effect cell */
.r-row.is-7.is-6{grid-template-columns:128px minmax(0,1fr) 188px 88px 176px 52px}   /* D08: the "Expected · Made by" column reads in 3–4 lines, not 7 */
@media (max-width:1320px){.r-row.is-7.is-6{grid-template-columns:112px minmax(0,1fr) 168px 76px 150px 44px}}

@media (max-width: 720px){
  .cg-moves,.vr-rules{grid-template-columns:minmax(0,1fr)}
  .cg-mv>span,.vr-rules dd{padding-left:0}
  .cg-mv>b{border-bottom:0;padding-bottom:0}
  .vr-rules dt{border-bottom:0;padding-bottom:0;white-space:normal}
}

/* ===== v74 · findings (merged 2026-09-30) ===== */
/* v74 — findings (the market-scan build). Merged into linear.css when done. */

/* ---------- the Dashboard's message (R1) ---------- */
/* the trust line: once, under the line that says what waits for you — quiet, never a banner */
/* a new or empty project reads what Dottpace is, once, under the greeting */

/* an estimate says it is one: "(estimate)", quieter than the figure, the method on hover */
.stake-est{color:var(--fg-3);font-weight:var(--w-regular);cursor:help}

/* ---------- Findings: causes the owner understands (R3) ---------- */
/* the kind of cause, one plain chip — smaller than the impact chip, so a card keeps one loud label */
.fl-ck,.fl-ox{height:18px;padding:0 7px;font-size:var(--t-sh);line-height:18px;vertical-align:1px}
.fl-ox{gap:4px}
.fl-ox svg{flex:none}
/* v74 fix round (design #7): on a board card the cause chip sits in the top chip row, the same size as the others; no chip inside a text line */
.fd-labels .fl-ck,.fd-labels .fl-ox,.kb-hd .fl-ck{height:22px;padding:0 9px;font-size:var(--t-co);line-height:22px;vertical-align:0}
/* where an outside change was read, under its detail on the finding page */
.fd-began p.fl-oxsrc{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px;color:var(--fg-3)}
.fl-oxsrc .lk{display:inline-flex;align-items:center;gap:3px}
/* a change in how a number is counted reads calm: what it is, and that there is nothing to fix — no loop to walk */
.story .fl-calm{display:flex;align-items:flex-start;gap:12px;margin:18px 26px;padding:12px 14px;border-radius:var(--r-12);background:var(--bg-2);border:1px solid var(--bd-tl);color:var(--fg)}
.fl-calm>svg{flex:none;margin-top:2px;color:var(--c-blue)}
.fl-calm b{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold)}
.fl-calm p{margin:2px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
/* its one next step — a check, which needs no approval — and, once started, what Dottpace does with it */
.fl-calm .btn{margin-top:10px}
.fl-calm p.fl-chk{display:flex;align-items:flex-start;gap:6px;margin-top:10px;color:var(--fg-2)}
.fl-chk svg{flex:none;margin-top:2px;color:var(--c-green)}

/* v74 fix round (design #1): the evidence rows share one grid — a fixed source column that wraps, so every row lines up */
@media (min-width:1321px){.fl-ev{grid-template-columns:92px minmax(0,1fr) 220px 96px;align-items:start}.fl-ev>.lbl{margin-top:-1px}.fl-ev .fd-src{white-space:normal;padding-top:1px}}
/* v74 fix round (design #10): a tile's label takes the spare height, so every value and change line up, even when a label wraps at 1280 */

/* ===== v74 · aisearch (merged 2026-09-30) ===== */
/* v74 — aisearch (the market-scan build). Merged into linear.css when done. */

/* the method line under the headline numbers (R5): one quiet line, the "How Dottpace measures" link at its end */
.ai-mline{display:flex;align-items:center;gap:6px;margin:10px 2px 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);min-width:0}
.ai-mline > svg{flex:none;color:var(--fg-4)}
.ai-mline > span{min-width:0;max-width:120ch}
.ai-mline .ai-mlink{margin-left:auto;flex:none}
.ai-qtop{margin:14px 0 16px}
.ai-qtop .ai-tiles{margin:0}
.ai-qtop .ai-mline{margin-top:8px}

/* weekly points: a dot on every run */
.ai-dot{position:absolute;width:6px;height:6px;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 2px var(--bg);pointer-events:none;z-index:1}
.ai-one{justify-content:flex-start}
.ai-one > span{flex:1 1 auto;min-width:0}
.ai-one .more{flex:none;display:inline-flex;align-items:center;gap:3px;white-space:nowrap}

/* outside links and ledger links */
.ai-ext{display:inline-flex;align-items:center;gap:2px;color:var(--link-tint,var(--link));font-weight:var(--w-medium)}
@media (hover:hover){.ai-ext:hover{text-decoration:underline}}
.ai-ext svg{opacity:.7}
.u .ai-led,.sv-cap .ai-led{display:inline;font-size:inherit;line-height:inherit;font-weight:var(--w-medium);color:var(--link-tint,var(--link))}
.u .ai-led svg{display:none}
@media (hover:hover){.u .ai-led:hover{text-decoration:underline}}

/* Google's AI surfaces */
.ai-sf .tbl-r{align-items:start}
.ai-sf .tbl-r .k2 > .u{white-space:normal;overflow-wrap:anywhere}
.ai-sf .tbl-r.is-off > :not(:first-child),.ai-sf .tbl-r.is-off > :not(:first-child) .k{color:var(--fg-3)}   /* contrast fix (2026-10-03): was opacity .7 — fg-3 at 70% fell to 2.8:1 */
.ai-sf .tbl-r.is-off .ag-in{color:var(--link);font-weight:var(--w-medium)}
.ai-sf .ai-rate small{white-space:nowrap}
.ai-sf-h{margin-top:18px}
.ai-sf-h h3{font-size:var(--t-co);font-weight:var(--w-semibold);color:var(--fg);white-space:nowrap}
.ai-sfp .tbl-r{cursor:pointer}

/* what Dottpace asks: the method, said plainly, with its caveat */
.ai-how{margin:2px 0 14px;padding:12px 14px;border-radius:var(--r-8);background:var(--bg-2);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.ai-how b{color:var(--fg);font-weight:var(--w-semibold)}
.ai-how p{margin:0}
.ai-how .ai-how-c{display:flex;align-items:flex-start;gap:7px;margin-top:8px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.ai-how .ai-how-c svg{flex:none;margin-top:2px;color:var(--c-blue)}
.ai-plan .tbl-r.is-off .u{white-space:normal}

/* What AI says: where each claim comes from, and the fix at the source */
.ai-says .tbl-r{align-items:start}
.ai-says .ai-rate{white-space:nowrap}
.ai-csl{display:flex;flex-direction:column;gap:6px;margin-top:8px;padding:8px 10px;border-left:2px solid var(--ln);min-width:0}
.ai-csl > .fd-k{margin-bottom:-2px}
.ai-cs{display:grid;grid-template-columns:140px minmax(0,1fr);align-items:baseline;gap:2px 10px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);min-width:0}
.ai-cs-k{font-weight:var(--w-medium);color:var(--fg)}
.ai-cs-w{min-width:0;overflow-wrap:anywhere}
.ai-cs .ai-fix,.ai-cs .ai-fixw{grid-column:2}
.ai-cs + .ai-cs{margin-top:4px}
.ai-fixw{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0}
button.ai-fix{background:none;border:0;padding:0;cursor:pointer;font-family:inherit}
button.ai-fix[aria-expanded="true"] svg{transform:rotate(180deg)}
.ai-note-d{align-self:stretch;margin:0 0 4px;padding:10px 12px;border:1px solid var(--ln-2);border-radius:var(--r-8);background:var(--bg-2)}
.ai-note-d[hidden]{display:none}
.ai-note-t{margin:0 0 8px;font-size:var(--t-co);line-height:1.55;color:var(--fg);white-space:normal;overflow-wrap:anywhere;max-width:78ch}
.ai-note-a{display:flex;align-items:center;gap:10px}
.ai-note-a .sv-cap{white-space:normal}
.ai-claim .k .fl{margin-left:6px}
.ai-ok{display:flex;align-items:center;gap:8px;margin:6px 0 2px;font-size:var(--t-body);color:var(--fg-2)}
.ai-ok svg{color:var(--c-green)}

/* where people ask vs who sends visitors */
.ai-mix{display:flex;flex-direction:column;align-items:flex-end;gap:4px;font-variant-numeric:tabular-nums}
.ai-mbar{display:block;width:72px;height:4px;border-radius:2px;background:var(--bg-3);overflow:hidden}
.ai-mbar b{display:block;height:100%;border-radius:2px}
.ai-mixt .tbl-r{align-items:center}
.ai-srcs{margin-top:6px}

/* does a citation bring a visit? — the estimate */
.ai-est{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:12px 14px;border-radius:var(--r-8);background:var(--bg-2)}
.ai-est b{font-size:var(--t-t3,17px);font-weight:var(--w-semibold);color:var(--fg);line-height:1.35}
.ai-est .sv-cap{max-width:90ch}
.ai-est.is-off b{font-size:var(--t-body)}
.ai-est-l{margin-top:10px}
.ai-est-k{flex:none;width:210px;font-weight:var(--w-medium);color:var(--fg)}

/* the one link to every visitor lane (Agent Readiness) */
.sec.ai-lanes{display:flex;flex-direction:row;align-items:center;gap:12px;padding:14px 18px}
.ai-lanes > svg{flex:none;color:var(--fg-3)}
.ai-lanes .grow{display:flex;flex-direction:column;gap:2px;min-width:0}
.ai-lanes b{font-size:var(--t-body);font-weight:var(--w-semibold);color:var(--fg)}
.ai-lanes .more{flex:none;display:inline-flex;align-items:center;gap:3px;white-space:nowrap}
.sv > .ai-lanes{margin-top:20px}

@media (max-width:1320px){
  .ai-est-k{width:170px}
  .ai-mline{flex-wrap:wrap}
  .ai-mline .ai-mlink{margin-left:19px}
}
.ai-sf .ai-rate small span{display:block}
.ai-plan .tbl-r > .u{white-space:normal}
/* v74 fix: each week's 90% range as a band behind the line; events from before the first point listed under the chart */
.ai-band{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:hidden}

/* ===== v74 · local (merged 2026-09-30) ===== */
/* v74 — local (the market-scan build) · fix round: no new tag style, one status style, the reply parts share one width */

/* the two verdict lines side by side on a location's page: map-pack share (judged) · local AI answers (also watched) */
.lc-tiles .lc-pair{grid-column:span 2;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:subgrid;align-items:stretch;padding:12px 0 13px}
@media (max-width:1320px){.lc-tiles .lc-pair{padding:10px 0 11px}}
.lc-pair-i{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;padding:12px 16px 13px}
.lc-pair-i + .lc-pair-i{border-left:1px dashed var(--ln-2)}
@media (max-width:1320px){.lc-pair-i{padding:10px 12px 11px}}

/* the Overview's story rows: the story on the first line, how it is judged on the second, the state chip at the row's end */
.lc-story-l{display:block}
.lc-story-t .lc-story-j{display:block;margin-top:2px;font-size:var(--t-co);line-height:var(--lh-co)}
.lc-story.is-measure .lc-story-i{color:var(--c-blue)}
.lc-story-s{flex:none;margin-top:1px}

/* What AI says about your business */
.lc-factt .tbl-r{align-items:start}
.lc-factt .k2 .u{white-space:normal;overflow:visible}
.lc-factt .tbl-r > *{padding-top:8px;padding-bottom:8px}
.lc-factt .k{white-space:normal;overflow:visible}
.lc-says,.lc-right{display:block;color:var(--fg);font-weight:var(--w-medium);text-wrap:pretty}
.lc-fixc{display:flex;justify-content:flex-end;min-width:0}
.lc-fixin{display:flex;flex-direction:column;align-items:flex-end;gap:4px;min-width:0;text-align:right}
.lc-fixin .lc-inwork{white-space:normal}
.lc-fixbtn{white-space:nowrap}
.lc-allok{display:flex;align-items:center;gap:6px;margin:4px 0 8px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.lc-facts-here{margin-top:12px}
.lc-facts-here .ai-mv{align-items:flex-start}
.lc-facts-here .ai-mv > .lbl{flex:none}
.lc-facts-here .lc-fixin,.lc-facts-here .lc-fixbtn{flex:none}
.lc-ask-t + .tbl{margin-top:10px}

/* a location's "What would move it": the links to every profile check and every listing sit on the "+N more" line */
.lc-movel{display:flex;align-items:center;gap:16px;margin-top:8px}
.lc-movel .more{display:inline-flex;align-items:center;gap:3px;white-space:nowrap;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-3)}
@media (hover:hover){.lc-movel .more:hover{color:var(--fg)}}
.lc-movel .lc-more{margin:0}
.lc-fact-c{margin:4px 0 0}

/* the reply guard: three rules checked as you type; a broken one blocks Post. The textarea and every part under it share one width */
.lc .lc-reply textarea,.lc-rules,.lc-guard,.lc-facts,.lc-reply-f,.lc-law{max-width:720px}
.lc-rules{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;font-size:var(--t-co);line-height:var(--lh-co)}
.lc-rules .sv-cap{margin:0}
.lc-rule{display:inline-flex;align-items:center;gap:4px;color:var(--fg-2)}
.lc-rule.is-ok svg{color:var(--c-green)}
.lc-rule.is-no{color:var(--neg-ink);font-weight:var(--w-medium)}
.lc-why{font-size:var(--t-co)}
.lc-law{margin:0}
.lc-guard{padding:10px 12px;border-radius:var(--r-8);background:color-mix(in srgb,var(--c-red) 8%,var(--bg-2));font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg)}
.lc-guard-r + .lc-guard-r{margin-top:10px;padding-top:10px;border-top:1px solid var(--ln-2)}
.lc-guard q{display:block;margin:0 0 2px;color:var(--fg);font-style:italic}
.lc-guard p{margin:2px 0 0;color:var(--fg-2)}
.lc-guard > .sv-cap{margin-top:8px}

/* Listings: the groups, why the new ones matter now, and a place that closed */
.lc-grp{padding:14px 0 6px;border-bottom:1px solid var(--ln);font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-semibold);color:var(--fg-2)}
.lc-now{margin-top:12px;padding-top:12px;border-top:1px solid var(--ln-2)}
.lc-now ul{margin:6px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px;max-width:100ch}
.lc-now li{font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2);text-wrap:pretty}
.lc-now li b{color:var(--fg);font-weight:var(--w-semibold)}
.lc-now .sv-cap{margin:8px 0 0}
.lc-closed{align-items:start}
.lc-closed-c{grid-column:2 / -1;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;min-width:0;padding:8px 0}
.lc-closed-c .lc-mx small{display:block;-webkit-line-clamp:unset;overflow:visible}

/* the cell "Fix at the source" opened — marked calmly (blue = info) */
.lc-mx.is-hl{border-radius:var(--r-6);box-shadow:0 0 0 2px color-mix(in srgb,var(--c-blue) 55%,transparent);background:color-mix(in srgb,var(--c-blue) 7%,transparent);padding:4px 6px;margin:-4px -6px 2px}
.tbl-r.is-hl{background:color-mix(in srgb,var(--c-blue) 7%,transparent);box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--c-blue) 45%,transparent)}
.lc-hlh{color:var(--fg);box-shadow:inset 0 -2px 0 color-mix(in srgb,var(--c-blue) 70%,transparent)}

/* a finding about a measurement change is marked as information, not as an alarm */
.lc-flag.is-measure svg{color:var(--c-blue)}

/* ===== v74 · askplans (merged 2026-09-30) ===== */
/* v74 — askplans (the market-scan build). Merged into linear.css when done.
   Two parts: Workspace → Plans & billing (.pp-*) and the new blocks in Ask Dottpace AI (.ask-* / .ai-*). */

/* ============ Plans & billing ============ */
.pp{--pp-y:#7a5c00;--pp-o:#9a3f00}
:root[data-theme="dark"] .pp{--pp-y:#f5cf5a;--pp-o:#ffa85e}
.pp h2,.pp h3{margin:0}
.pp-panel,.pp-card,.pp-now{border:1px solid var(--bd-tl);border-radius:var(--r-card);background:var(--lvl-0);box-shadow:var(--sh-tiny)}
.pp-panel{padding:20px 24px 22px;margin-top:16px}
/* v74 fix round (design #23): section headers as everywhere else — icon + Headline on a rule, the line under it in the body */
.pp-ph{display:flex;align-items:center;gap:9px;min-height:28px;padding-bottom:10px;border-bottom:1px solid var(--ln-2)}
.pp-ph h2{font-size:var(--t-hl);line-height:var(--lh-hl);font-weight:var(--w-semibold);color:var(--fg)}
.pp-sub{margin:10px 0 0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-3)}

/* the line that says where this workspace stands */
.pp-now{display:flex;align-items:center;gap:10px;padding:11px 16px;margin-bottom:16px;border-radius:var(--r-12);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.pp-now>svg{color:var(--fg-3);flex:none}
.pp-now b{color:var(--fg);font-weight:var(--w-semibold)}
.pp-lk{display:inline-flex;align-items:center;gap:3px;flex:none;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--link-tint,var(--link));border-radius:var(--r-4)}
@media (hover:hover){.pp-lk:hover{text-decoration:underline;text-underline-offset:3px}}

/* the three plans: equal cards, the same limits in the same order, so they read as columns */
.pp-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
@media (min-width:1680px){.pp-cards{grid-template-columns:repeat(4,minmax(0,1fr))}}
/* Oct 11: the founder's plans — 1 site · 3 sites · 6 sites · Agencies; the open ones say "Talk to us", never a number */
.pp-price b.pp-open{font-size:var(--t-t2);line-height:var(--lh-t2);letter-spacing:var(--ls-t2)}
.pp-card.is-open .pp-price{flex-direction:column;gap:2px}
.pp-cta{display:inline-flex;align-items:center;gap:5px}
.pp-perr{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;margin:0 0 12px}
.pp-perr .pp-sub{margin:0}
.pp-off{margin-left:2px}
.pp-price .pp-was{flex-basis:100%;margin-top:-4px}
.pp-was s{color:var(--fg-4)}
.pp-cta-no{font-size:var(--t-co);color:var(--fg-3)}
.pp-qr.pp-qh{padding:8px 0 4px}
.pp-qr.pp-qh dt{font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-3)}
.pp-card{display:flex;flex-direction:column;padding:22px 22px 12px;min-width:0}
.pp-card.is-pick{border-color:color-mix(in srgb,var(--c-blue) 42%,var(--bd-tl));box-shadow:0 0 0 1px color-mix(in srgb,var(--c-blue) 22%,transparent),var(--sh-tiny)}
:root[data-theme="dark"] .pp-card.is-pick{border-color:color-mix(in srgb,var(--c-blue) 70%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--c-blue) 45%,transparent)}
.pp-nm{display:flex;align-items:center;gap:8px;min-height:22px}
.pp-nm h3{font-size:var(--t-t2);line-height:var(--lh-t2);font-weight:var(--w-semibold);letter-spacing:var(--ls-t2);color:var(--fg)}
.pp-fit{margin:6px 0 0;min-height:32px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.pp-price{display:flex;flex-wrap:wrap;align-items:baseline;gap:7px;margin-top:16px}
.pp-price b{font-size:var(--t-lt);line-height:var(--lh-lt);font-weight:var(--w-semibold);letter-spacing:var(--ls-lt);color:var(--fg);font-variant-numeric:tabular-nums}
.pp-price span{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.pp-here{margin:4px 0 12px;min-height:16px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.pp-q{margin:0;border-top:1px solid var(--ln-2)}
.pp-qr{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:12px;row-gap:1px;padding:9px 0;border-bottom:1px solid var(--ln-3)}
.pp-qr:last-child{border-bottom:0}
.pp-qr dt{display:flex;align-items:center;gap:7px;min-width:0;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg)}
.pp-qr dt svg{color:var(--fg-4);flex:none}
.pp-qr dd{display:contents;margin:0}
.pp-qr dd b{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.pp-qr dd span{grid-column:1/-1;padding-left:20px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}

/* every plan has every tool */
.pp-incg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 28px;margin-top:16px}
.pp-inci{display:flex;align-items:flex-start;gap:10px;min-width:0}
.pp-ic{width:28px;height:28px;border-radius:var(--r-8);display:grid;place-items:center;flex:none;background:var(--bg-4);color:var(--fg-2)}
.pp-inci b{display:block;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
.pp-inci p{margin:2px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}

/* agency */
.pp-ag{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:32px}
.pp-agf{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:9px}
.pp-agf li{display:flex;align-items:center;gap:9px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.pp-agf svg{color:var(--fg-3);flex:none}
.pp-agp{border-left:1px solid var(--ln-2);padding-left:28px;display:flex;flex-direction:column;justify-content:center}
.pp-agr{display:grid;grid-template-columns:72px auto minmax(0,1fr);align-items:baseline;column-gap:10px;padding:9px 0;border-bottom:1px solid var(--ln-3)}
.pp-agr>span:first-child{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg-2)}
.pp-agr b{font-size:var(--t-t2);line-height:var(--lh-t2);font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
.pp-per{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.pp-agn{margin:12px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.pp-agn .lk{font-size:inherit}

/* add-on packs: two equal columns of four */
.pp-packs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:40px;margin-top:10px}
.pp-pk{display:grid;grid-template-columns:minmax(0,1fr) auto;row-gap:1px;column-gap:12px;padding:10px 0;border-bottom:1px solid var(--ln-3)}
.pp-pkn{display:flex;align-items:center;gap:7px;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg)}
.pp-pkn svg{color:var(--fg-4);flex:none}
.pp-pka{grid-column:1;padding-left:20px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.pp-pkp{grid-column:2;grid-row:1/3;align-self:center;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg);white-space:nowrap;font-variant-numeric:tabular-nums}

/* trust lines, once per tab, at the end */
.pp-trust{display:flex;flex-wrap:wrap;gap:8px 26px;margin-top:18px;padding:4px 4px 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.pp-tr{display:inline-flex;align-items:center;gap:7px}
.pp-tr svg{color:var(--fg-3);flex:none}

/* ---- your plan and usage ---- */
.pp-cur{margin-top:0}
.pp-currow{display:flex;align-items:center;gap:20px}
/* v74 fix round: the cancel confirm, inline under the plan row — calm, no modal */
.pp-cx{display:flex;align-items:center;gap:16px;margin-top:16px;padding:14px 16px;border-radius:var(--r-12);border:1px solid var(--bd-tl);background:var(--bg-4)}
.pp-cx b{display:block;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
.pp-cx p{margin:2px 0 0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.pp-cxb{display:flex;align-items:center;gap:8px;flex:none}
.pp .btn.pp-danger{background:var(--st-red-bg);color:var(--neg-ink)}
@media (hover:hover){.pp .btn.pp-danger:hover{background:color-mix(in srgb,var(--c-red) 18%,var(--bg))}}
.pp-curl{flex:1;min-width:0}
.pp-k{display:block;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.pp-curn{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;margin-top:2px}
.pp-curn b{font-size:var(--t-t2);line-height:var(--lh-t2);font-weight:var(--w-semibold);color:var(--fg)}
.pp-curn span{font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-3)}
.pp-curb{margin:6px 0 0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.pp-curb b{color:var(--fg);font-weight:var(--w-semibold)}
.pp-curr{display:flex;align-items:center;gap:8px;flex:none}
.pp-tw{overflow-x:auto;margin:12px -6px 0;padding:0 6px}
.pp-ut{--pp-cols:minmax(200px,1.5fr) repeat(5,minmax(108px,1fr)) 30px;min-width:820px}
.pp-ur{display:grid;grid-template-columns:var(--pp-cols);column-gap:16px;align-items:start;padding:12px 0;border-bottom:1px solid var(--ln-3)}
.pp-ur:last-child{border-bottom:0}
.pp-ur.is-pool{border-top:1px solid var(--ln-2)}   /* Oct 14: the shared allowance, under the sites that share it */
.pp-ur.is-h{align-items:end;padding:6px 0 8px;border-bottom:1px solid var(--ln-2);font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-3)}
.pp-us0{display:flex;align-items:center;gap:10px;min-width:0}
.pp-logo{width:24px;height:24px;border-radius:var(--r-6);display:grid;place-items:center;flex:none;color:var(--on-fill);font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-bold)}
.pp-logo.is-pool{background:var(--bg-4);color:var(--fg-2)}
.pp-sn{min-width:0;display:flex;flex-direction:column}
.pp-sn b{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pp-sn span{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.pp-uc{display:flex;flex-direction:column;gap:5px;min-width:0}
.pp-uv{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.pp-uv b{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
.pp-uv.is-na{color:var(--fg-4)}
.pp-us{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.pp-us.t-yellow{color:var(--pp-y)}
.pp-us.t-orange{color:var(--pp-o)}
.pp-bar{display:block;width:100%;max-width:120px;height:4px;border-radius:var(--r-full);background:var(--bg-3);overflow:hidden}
.pp-bar.is-none{opacity:.5}
.pp-bar i{display:block;height:100%;border-radius:var(--r-full);background:var(--c-blue)}
.pp-bar.t-yellow i{background:var(--c-yellow)}
.pp-bar.t-orange i{background:var(--c-orange)}
.pp-ux{justify-self:end;align-self:center}
.pp-more{width:28px;height:28px;border-radius:var(--r-full);display:grid;place-items:center;color:var(--fg-3);background:transparent;border:0}
.pp-more.is-open{background:var(--bg-5);color:var(--fg)}@media (hover:hover){.pp-more:hover{background:var(--bg-5);color:var(--fg)}}
.pp-wsr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 40px;margin-top:6px;padding-top:14px;border-top:1px solid var(--ln-2)}
.pp-wsi{display:flex;flex-direction:column;gap:5px;min-width:0}
.pp-wsk{display:flex;align-items:center;gap:7px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-3)}
.pp-wsk svg{color:var(--fg-4);flex:none}
.pp-wsk b{font-weight:var(--w-semibold);color:var(--fg)}
.pp-empty{display:flex;align-items:center;gap:9px;margin-top:12px;padding:16px;border-radius:var(--r-12);background:var(--bg-4);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-3)}
.pp-limo{list-style:none;margin:10px 0 0;padding:0}
.pp-limo li{display:grid;grid-template-columns:110px minmax(0,1fr);gap:12px;padding:10px 0;border-bottom:1px solid var(--ln-3);font-size:var(--t-body);line-height:var(--lh-body)}
.pp-limo li:last-child{border-bottom:0;padding-bottom:0}
.pp-limo b{font-weight:var(--w-semibold);color:var(--fg)}
.pp-limo span{color:var(--fg-2)}

@media (max-width:1100px){
  .pp-fit{min-height:0}
  .pp-incg{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pp-ag{grid-template-columns:minmax(0,1fr);gap:18px}
  .pp-agp{border-left:0;padding-left:0;border-top:1px solid var(--ln-2);padding-top:6px}
}
@media (max-width:720px){
  .pp-panel{padding:18px}
  .pp-incg,.pp-packs,.pp-wsr,.pp-cards{grid-template-columns:minmax(0,1fr)}
  .pp-now,.pp-currow,.pp-cx{flex-wrap:wrap}
  .pp-limo li{grid-template-columns:minmax(0,1fr);gap:2px}
}

/* ============ Ask Dottpace AI — v74 blocks ============ */
/* sources of an outside change: each one a link, the change it belongs to after it */
.ai-links ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.ai-links li{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);min-width:0}
.ai-links a{display:inline-flex;align-items:center;gap:4px;color:var(--link-tint,var(--link));font-weight:var(--w-medium);border-radius:var(--r-4)}
@media (hover:hover){.ai-links a:hover{text-decoration:underline;text-underline-offset:3px}}
.ai-links a svg{flex:none;opacity:.8}
.ai-lk-of{color:var(--fg-3)}
/* under "What I'd do": the approval stays here */
.ai-do-here{display:flex;align-items:center;gap:6px;margin:8px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.ai-do-here svg{flex:none;color:var(--fg-4)}
/* v74 integration: an open agent finding noted under the AI crawlers counts */
.ai-openf{display:flex;align-items:center;gap:6px;margin:10px 0 0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.ai-openf svg{flex:none;color:var(--fg-3)}   /* v79: renamed from .ai-note, which other captions already use */

/* ===== v77 · mentions ===== */
/* Visibility → Mentions: tiles that open their list; ONE row grid for the spike, "worth your attention" and the loop (state · text · button ·
   chevron); the inbox in five columns; type as a plain word, tone as a neutral chip with a small dot (no state colours); coverage by name;
   one mention's page with the draft and its checks. Built on the SEO Search / AI Search / Local kit — no new colours, no capsule controls. */
.mn .mn-top{padding:14px 16px}
.mn .mn-top .kp-strip{margin-bottom:0}
.mn .kp-strip.is-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.mn-kp{cursor:pointer}
@media (hover:hover){.mn-kp:hover{background:var(--hover-solid)}}
.mn-kp .kp-s{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}

/* the one row grid: state (fixed) · text · button (fixed) · chevron — the text starts at the same x in every list */
.mn-gl{display:flex;flex-direction:column}
.mn-g{display:grid;grid-template-columns:150px minmax(0,1fr) 170px 14px;align-items:center;column-gap:14px;min-height:46px;padding:7px 8px;margin:0 -8px;border-bottom:1px solid var(--ln-2);border-radius:var(--r-6);cursor:pointer;color:var(--fg-2);transition:var(--tr-ui)}
.mn-g:last-child{border-bottom:0}
@media (hover:hover){.mn-g:hover{background:var(--hover-solid)}}
.mn-g > svg{color:var(--fg-4)}
.mn-g-st{display:flex;align-items:center;min-width:0}
.mn-g-b{display:flex;justify-content:flex-end;min-width:0}
.mn-g .k2{display:flex;flex-direction:column;gap:1px;min-width:0}
.mn-g .k{color:var(--fg);font-size:var(--t-body);line-height:var(--lh-body);white-space:normal;text-wrap:pretty}   /* a row title wraps, never "…" */
.mn-g .k b{font-weight:var(--w-semibold)}
.mn-att .mn-g .k2 > .k{font-weight:var(--w-medium)}   /* Oct 7 review (D03): "Worth your attention" row titles are 14/500, as Approvals', Reports' and the boards' */
.mn-g .u{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);white-space:normal;text-wrap:pretty}   /* wraps — never "…" (the founder's no-cuts rule) */
.mn-feed-d{font-size:var(--t-co);color:var(--fg-3);font-variant-numeric:tabular-nums}
.mn-spike .sv-foot,.mn-loop .sv-foot{margin-top:8px;align-items:center}
.mn-spike .sv-foot .more{display:inline-flex;align-items:center;gap:3px;white-space:nowrap;font-size:var(--t-co);font-weight:var(--w-medium);color:var(--fg-3)}
@media (hover:hover){.mn-spike .sv-foot .more:hover{color:var(--fg)}}

/* the weekly bars and the ledger's changes under them */
.mn .chart-bar .chart-plot > .bars{position:absolute;inset:0}
.mn .chart-bar .bar-g{position:absolute;top:0;bottom:0;display:flex;align-items:flex-end;justify-content:center;gap:3px;padding:0 4px}
.mn .chart-bar .bar-el{flex:0 1 44px;border-radius:4px 4px 0 0;min-height:2px;display:block;transition:opacity var(--dur-1) var(--ease-out)}
.mn .chart-bar .chart-plot:hover .bar-el{opacity:.55}
.mn .chart-bar .bar-g:hover .bar-el{opacity:1}
.mn .chart-bar .ccol.is-bar{transform:none}
.mn .chart-bar .ccol.is-bar:hover{background:var(--bg-tl);border-radius:6px 6px 0 0}
.mn .chart-x.bars span{transform:translateX(-50%)}
.mn-ev{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.mn-ev a{color:var(--fg-2)}
@media (hover:hover){.mn-ev a:hover{color:var(--fg);text-decoration:underline;text-underline-offset:2px}}
.mn-ev b{font-weight:var(--w-medium);color:var(--fg)}

/* type is a plain word; tone a neutral chip with a dot (its menu corrects it) */
.mn-type{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);font-weight:var(--w-medium)}
.menu-btn.mn-tone{height:22px;padding:0 6px 0 8px;gap:5px;cursor:pointer;max-width:100%;background:var(--bg-3);color:var(--fg-2);border-color:transparent}
.menu-btn.mn-tone::before{content:"";flex:none;width:7px;height:7px;border-radius:50%;background:var(--fg-4)}
.menu-btn.mn-tone.t-green::before{background:var(--c-green)}
.menu-btn.mn-tone.t-red::before{background:var(--c-red)}
.menu-btn.mn-tone.t-purple::before{background:var(--c-purple)}
.menu-btn.mn-tone.t-gray::before{background:transparent;box-shadow:inset 0 0 0 1.5px var(--fg-4)}
.menu-btn.mn-tone .mb-l{overflow:hidden;text-overflow:ellipsis}
.menu-btn.mn-tone .mb-cv{opacity:.5;color:currentColor;transition:opacity var(--dur-1) var(--ease-out)}
.menu-btn.mn-tone:hover .mb-cv,.menu-btn.mn-tone:focus-visible .mb-cv,.menu-btn.mn-tone.is-open .mb-cv{opacity:.9}
@media (hover:hover){.menu-btn.mn-tone:hover{background:var(--hover);color:var(--fg)}}
.mn-tby{margin-left:2px}
.mn-nav{margin-top:12px}
/* the Sources tab's paused mark: a dot, not a count */
.mn .pl-n:has(.mn-dot){background:transparent;padding:0;min-width:0}
.mn-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--c-red)}

/* the inbox */
.mn-filters .pl-chips{flex-wrap:wrap}
.mn-clear{font-size:var(--t-co);margin-left:4px}
.mn-noise-l{display:inline-flex;align-items:center;gap:6px;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-3);white-space:nowrap;border-radius:var(--r-4)}
@media (hover:hover){.mn-noise-l:hover{color:var(--fg)}}
.mn-tbl .tbl-r{min-height:52px}
.mn-tbl .tbl-h > span{white-space:nowrap}
.mn-tbl .mn-ex,.mn-noise .mn-ex{font-weight:var(--w-regular);color:var(--fg);white-space:normal;display:block;max-height:3lh;overflow:hidden;text-overflow:clip}   /* 3 lines, cut at a line's end — no "…" (was a 2-line clamp; the noise list was one line); longer → Show all */
.mn-tbl .mn-type{white-space:normal;display:block}
.mn-tbl .tbl-r.is-need .k2:first-child .k::before{content:"";display:inline-block;width:6px;height:6px;margin-right:6px;border-radius:50%;background:var(--c-orange);vertical-align:2px}
.mn-date{display:inline-flex;align-items:center;justify-content:flex-end;gap:6px}
.mn-new{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--c-blue)}
.mn-copies{display:flex;align-items:center;gap:6px;margin:0;padding:2px 0 9px;border-bottom:1px solid var(--ln-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.mn-copies svg{flex:none;color:var(--fg-4)}
.mn-all{display:inline-flex;align-items:center;gap:3px;margin:8px 0 0;align-self:flex-start}
.mn-work-h{display:flex;align-items:center;gap:8px;padding:2px 0 10px;margin-bottom:4px;border-bottom:1px solid var(--ln-2);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.mn-work-h svg{flex:none;color:var(--fg-3)}
.mn-work-h .more{display:inline-flex;align-items:center;gap:3px;white-space:nowrap;font-size:var(--t-co);font-weight:var(--w-medium);color:var(--fg-3)}
@media (hover:hover){.mn-work-h .more:hover{color:var(--fg)}}

/* competitors: left-anchored share bars with their numbers */
.mn-sov .tbl-h > span{white-space:nowrap}
.mn-sov .tbl-r > .k,.mn-news .tbl-r > .k{white-space:normal;overflow:visible;text-overflow:clip}   /* a brand name wraps at 900 — never "…" */
.mn-share{display:grid;grid-template-columns:44px auto 1fr;align-items:center;gap:8px;min-width:0}
.mn-share b{font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
.mn-share small{color:var(--fg-3);font-size:var(--t-sh);white-space:nowrap}
.mn-track{display:block;height:6px;border-radius:var(--r-full);background:var(--bg-3);overflow:hidden}
.mn-bar{display:block;height:100%;border-radius:var(--r-full);background:var(--fg-4)}
.mn-bar.is-you{background:var(--c-indigo)}

/* sources */
.mn-cov .tbl-r{align-items:start}
.mn-cov .tbl-r > .k,.mn-cov .tbl-r > .k2,.mn-cov .tbl-r > .num{padding:10px 0}
.mn-cov .tbl-r > span:not(.k):not(.k2):not(.num){padding:9px 0}
.mn-cov .tbl-r > .k{white-space:normal;overflow:visible}
.mn-cov .tbl-r > .num .btn{margin-top:-3px}
.tbl .k.mn-wrap,.mn-wrap{white-space:normal;overflow:visible;font-weight:var(--w-regular);color:var(--fg-2);text-wrap:pretty}
.mn-reddit .k .ai-ext{font-weight:var(--w-medium)}
.mn-reddit .u .ai-ext{font-weight:var(--w-regular)}
.mn-claim{display:flex;align-items:center;gap:6px;margin:10px 0 0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.mn-claim svg{flex:none;color:var(--fg-3)}
.mn-claim a{color:var(--link-tint,var(--link));font-weight:var(--w-medium)}
.mn-terms{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px 24px;margin:6px 0 10px}
.mn-terms .ai-tags{margin-top:6px}
.mn-excl{margin:2px 0 8px}
.mn-excl ul{margin:6px 0 0;padding:0 0 0 18px;list-style:disc;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.mn-excl li + li{margin-top:2px}
.mn-excl li::marker{color:var(--fg-4)}
.mn-bool{margin:0 0 8px;padding:12px 14px;border-radius:var(--r-8);background:var(--bg-2);font-family:var(--mono,ui-monospace,SFMono-Regular,Menlo,monospace);font-size:var(--t-co);line-height:1.6;color:var(--fg-2);white-space:pre-wrap;overflow-x:auto}
.mn-first{display:flex;flex-direction:row;align-items:flex-start;gap:10px;padding:14px 18px}
.mn-first > svg{flex:none;margin-top:2px;color:var(--fg-3)}
.mn-first p{margin:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.mn-first b{color:var(--fg);font-weight:var(--w-semibold)}
.sv-foot .sv-cap a{color:var(--link-tint,var(--link))}

/* one mention */
.mn-one .fd-hd h1{max-width:60ch}
.mn-one .sv-tbl > .btn,.mn-one .sv-tbl > .more{align-self:flex-start}
.mn-quote{padding:16px 20px 14px}
.mn-quote blockquote{margin:0;padding:2px 0 2px 14px;border-left:3px solid var(--ln);font-size:var(--t-read);line-height:var(--lh-read);color:var(--fg);max-width:80ch;text-wrap:pretty}
.mn-facts1{margin:10px 0 0 17px}
.mn-facts1 a{color:var(--link-tint,var(--link))}
.mn-wrongl{display:flex;align-items:flex-start;gap:8px;margin:0 0 12px;padding:9px 12px;border-radius:var(--r-8);background:color-mix(in srgb,var(--c-red) 8%,var(--bg-2));font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg);max-width:80ch}
.mn-wrongl > svg{flex:none;margin-top:3px;color:var(--c-red)}
.mn-wrongl b{font-weight:var(--w-semibold)}
.mn-ai-h{margin:6px 0 8px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2);max-width:80ch}
.mn-ai-h b{color:var(--fg);font-weight:var(--w-semibold)}
.mn-ai-by{margin-bottom:8px}
.mn-rels{display:flex;flex-direction:column}
.mn-rel{display:flex;align-items:center;gap:10px;min-height:40px;padding:6px 8px;margin:0 -8px;border-bottom:1px solid var(--ln-2);border-radius:var(--r-6);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.mn-rel:last-child{border-bottom:0}
@media (hover:hover){.mn-rel:hover{background:var(--hover-solid)}}
.mn-rel > svg{flex:none;color:var(--fg-3)}
.mn-rel > svg:last-child{color:var(--fg-4)}
.mn-rel .fd-k{min-width:96px}
.mn-reply{margin-top:6px}
.mn-reply textarea.mn-text,.mn-reply .lc-rules,.mn-reply .lc-guard,.mn-reply .lc-reply-f,.mn-warn,.mn-where,.mn-rules,.mn-foot,.mn-mailh,.mn-sent{max-width:760px}
.mn-reply textarea.mn-text{width:100%;resize:vertical;padding:10px 12px;border:1px solid var(--ln);border-radius:var(--r-8);background:var(--bg);color:var(--fg);font:inherit;font-size:var(--t-body);line-height:var(--lh-body)}
.mn-sent{margin:0;padding:10px 12px;border-radius:var(--r-8);background:var(--bg-2);font:inherit;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2);white-space:pre-wrap}
.mn-mailh{display:grid;grid-template-columns:64px minmax(0,1fr);gap:2px 10px;margin:0;font-size:var(--t-co);line-height:var(--lh-co)}
.mn-mailh dt{color:var(--fg-3)}
.mn-mailh dd{margin:0;color:var(--fg)}
.mn-ctl{flex-wrap:wrap;row-gap:6px}
.mn-reset{font-size:var(--t-co)}
.mn-foot.is-blocked{color:var(--neg)}
.lc-rule.is-warn{color:var(--warn)}
.lc-rule.is-warn svg{color:var(--c-orange)}
.mn-warn,.mn-where{display:flex;align-items:flex-start;gap:8px;margin:0;padding:9px 12px;border-radius:var(--r-8);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg)}
.mn-warn{background:var(--st-orange-bg)}
.mn-warn > svg{flex:none;margin-top:1px;color:var(--c-orange)}
.mn-where{background:var(--bg-2);color:var(--fg-2)}
.mn-where > svg{flex:none;margin-top:1px;color:var(--fg-3)}
.mn-where a{color:var(--link-tint,var(--link));font-weight:var(--w-medium)}
@media (hover:hover){.mn-where a:hover{text-decoration:underline;text-underline-offset:2px}}
.mn-rules,.mn-foot{margin:0}
/* last round (#9): the excerpt gets two lines and the room; a long outlet name wraps instead of being cut */
.mn-tbl .mn-ex.is-all,.mn-noise .mn-ex.is-all{max-height:none}
.mn-noise .tbl-r .k2 .k:not(.mn-ex),.mn-noise .tbl-r .k2 .u{white-space:normal;overflow:visible;text-overflow:clip}
.mn-more{align-self:flex-start;margin:1px 0 2px;font-size:var(--t-co)}
.mn-more[hidden]{display:none}
.mn-tbl .tbl-r.mn-row > .k2:first-child .k,.mn-tbl .tbl-r.mn-row > .k2:first-child .u{white-space:normal;overflow:visible;text-overflow:clip}
@media (max-width:900px){
  .mn-terms{grid-template-columns:minmax(0,1fr)}
  .mn-g{grid-template-columns:minmax(0,1fr) 14px}
  .mn-g .mn-g-st,.mn-g .mn-g-b{display:none}
}

/* ===== v78 · competitors ===== */
/* The Competitors fix round (CD1–CD16): the Overview's number strip (Mentions' tiles), the Mentions row grid for "Worth your attention", results and
   news, "Who took your clicks", tables of 6 columns or fewer at 1280, the radius tokens that exist, list bullets back, one card padding (22px) and one
   gap (20px), no state colours for kinds or formats. */
.cps > .sec.panel,.cp > .sec.panel{margin-top:20px}
.cps > .pl-status + .sec.panel{margin-top:12px}
.cps .fp-panel,.cp .fp-panel{padding-left:22px;padding-right:22px}
.cps .cp-top{padding:14px 16px}
.cps .cp-top .kp-strip{margin-bottom:0}
.cps .cp-top .kp-strip.is-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.cps .cp-top .mn-kp .kp-s{max-width:100%;text-wrap:pretty}
.mn-g.cp-g{grid-template-columns:150px minmax(0,1fr) 210px 14px}
.cp-g .mn-g-b .btn{max-width:100%;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-flex}
.cp-g .mn-g-b .btn > svg{flex:none}
.cps .cp-top .mn-kp .kp-v{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.mn-g.cp-g.is-static{cursor:default}
@media (hover:hover){.mn-g.cp-g.is-static:hover{background:transparent}}
.mn-g.cp-g .mn-g-b .k-tag{margin:0}
.cp-g .mn-g-st .mn-type{white-space:normal}
/* radius tokens that exist; the highlight is a neutral fill, never the accent (blue is a state colour) */
.cp-i{width:24px;height:24px;color:var(--fg-4);border-radius:var(--r-full)}
.cp-blk.is-hi{margin:0 -12px;padding-left:12px;padding-right:12px;border-radius:var(--r-8);background:var(--bg-3)}
.cp-pgl{display:flex;align-items:center;gap:10px;min-height:32px;padding:4px 10px;background:var(--bg-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg);text-decoration:none;border-radius:var(--r-8)}
.cp-diff{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 24px;margin-top:8px;padding:12px 14px;background:var(--bg-2);border-radius:var(--r-12)}
/* list bullets back (the global ul reset removed them) */
.cp-why,.ci-qs,.cp-diff ul{list-style:disc}
.cp-diff li::marker,.ci-qs li::marker,.cp-why li::marker{color:var(--fg-4)}
.ci .cp-why{margin:8px 0 0}
/* a number cell is never read as one phrase with the text after it: 16px before the next text cell */
.cps .tbl-r > .num + .u,.cps .tbl-r > .num + .k2,.cp .tbl-r > .num + .u,.cp .tbl-r > .num + .k2{padding-left:16px}
@media (max-width:1320px){.cps .cp-wrap .tbl-h,.cps .cp-wrap .tbl-r{column-gap:12px}}
/* an address stays on one line, cut with an ellipsis (the full one on hover) */
.tbl .k.cp-path{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cp-pg .k2 .k.cp-path{white-space:nowrap}
.tbl .cp-wrap1{white-space:normal;overflow:visible;text-overflow:clip}
.cp-lost .tbl-r{align-items:start;padding-top:8px;padding-bottom:8px}
.cp-lost .tbl-r > .num{padding-top:1px}
.cp-lost .k2 .k.cp-wrap1{font-weight:var(--w-regular);color:var(--fg)}
.cp-lost .k2:first-child .k{font-weight:var(--w-medium)}
/* "new this week" — a neutral tag */
.k-tag.cp-new{margin-left:6px;vertical-align:1px;white-space:nowrap}
.cp-li-d .k-tag.cp-new{margin-left:8px}
/* the ad: a neutral headline, the format a plain word */
.cp-ad-t{font-size:var(--t-body);line-height:1.4;color:var(--fg)}
.cp-ad-h .mn-type{margin-left:2px}
/* the profile: stacked pair, tile labels on two lines so every value sits on one line, calmer rows */
.cp-nums .kp-l{min-height:32px;display:flex;align-items:flex-end}
.tbl.is-mini.cp-wrap .tbl-r{min-height:48px}
.cp-alert{margin:8px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.cp-alert a{color:var(--link-tint,var(--link))}
.fd-acts .btn.is-on{background:var(--bg-3);color:var(--fg)}
.cp-mknote{margin:8px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.cp-mknote .lk{font-size:inherit}
.cp .cp-blk-f .lbl{flex:none}
/* Content Intelligence */
.ci .ci-qs{margin-top:8px}
.ci-side{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 28px}
.ci-side > div > .fd-k{display:block;margin-bottom:6px}
.ci-sidet{margin-top:16px}
.ci-sidet .sv-cap{margin-top:8px}
@media (max-width:900px){.ci-side{grid-template-columns:minmax(0,1fr)}.cps .cp-top .kp-strip{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:900px){.mn-g.cp-g{grid-template-columns:minmax(0,1fr) 14px}}
/* the lines are named where they end — room for a competitor's full name and share */
.cps .chart.has-endl .chart-body,.cp .chart.has-endl .chart-body{grid-template-columns:44px minmax(0,1fr) 168px}
.ci .cp-why + .cp-fit,.ci .ci-qs + .cp-fit{margin-top:10px}
.ci p.cp-fit{margin-bottom:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.ci-schema{display:flex;align-items:center;gap:12px;margin-top:10px}
.ci-schema .sv-cap{margin:0;flex:1}
/* verify #13: an update band's label sits at the top, clear of the lines */
.cps .chart-band span,.cp .chart-band span{bottom:auto;top:4px}

/* ===== v79 · AI assistants' logos (lib/ailogos.js) — a mark in front of every assistant's name ===== */
.ai-logo{display:inline-flex;align-items:center;justify-content:center;flex:none;vertical-align:-2px;line-height:1}
.ai-logo svg{width:100%;height:100%;display:block}
.ai-nm{display:inline-flex;align-items:center;gap:6px;min-width:0}
.ai-nm > span:last-child{min-width:0;overflow-wrap:break-word}

/* ===== v79 · seo search ===== (the SEO Search fix round, SD1–SD16 — scoped to .seo so Competitors, Mentions and AI Search keep their own look) */
.seo .sv-top{padding:14px 16px}
.seo .sv-top .kp-strip{margin-bottom:0}
.seo .sv-top .mn-kp .kp-s{white-space:normal;text-wrap:pretty}
.seo > .sv-top,.seo > .sv-att,.seo > .sv-one,.seo > .sv-young{margin-top:20px}
.seo > .pl-bar + .sv-top,.seo > .pl-bar + .sv-young{margin-top:16px}
.seo .sv-young{display:flex;align-items:flex-start;gap:10px;padding:14px 18px;flex-direction:row}
.seo .sv-young > svg{flex:none;margin-top:2px;color:var(--fg-3)}
.seo .sv-young p{margin:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.seo .sv-young b{color:var(--fg);font-weight:var(--w-medium)}
/* card headers line up in a pair, with or without a link (design #7) */
.seo .sv-tbl .sec-hd,.seo .sv-card > .sec-hd{min-height:30px;align-items:center}
.seo .sec-hd .more{margin:-4px 0}
.sv-hd-t{display:inline-flex;align-items:center;gap:10px}
.sv-i{width:24px;height:24px;border-radius:var(--r-6);color:var(--fg-4);flex:none}
.sv-i:focus-visible{background:var(--bg-3);color:var(--fg-2)}@media (hover:hover){.sv-i:hover{background:var(--bg-3);color:var(--fg-2)}}
.sv-one{padding-top:14px;padding-bottom:14px}
.sv-one .sec-hd{border-bottom:0;padding-bottom:0;margin-bottom:0;flex-wrap:wrap;row-gap:2px}
.sv-one .sec-hd .n{white-space:normal}
/* worth your attention: Mentions' row grid */
.sv-g.is-static{cursor:default}
@media (hover:hover){.sv-g.is-static:hover{background:none}}
/* the chart: line toggles as plain chips (the numbers are in the strip and under the chart — each fact once) */
.sv-lines{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 12px}
/* Oct 7 review (D10 · D14): a toggle button takes 8px corners; the line that is on carries the selected fill and a stronger edge — it was told
   apart only by its text colour (its edge was even weaker than the off ones') */
.sv-line{display:inline-flex;align-items:center;gap:7px;height:28px;padding:0 11px;border-radius:var(--r-ctl);border:1px solid var(--ln);background:var(--bg);font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-3)}
.sv-line i{width:10px;height:3px;border-radius:var(--r-2);background:var(--fg-4)}
.sv-line.is-on{color:var(--fg);background:var(--selected);border-color:var(--line-ctl-h)}
.sv-line.is-on i{background:var(--kp)}
@media (hover:hover){.sv-line:hover{color:var(--fg);background:var(--hover-solid)}}
/* why clicks changed (SD12) */
.sv-why{white-space:normal;text-wrap:pretty;margin-top:14px;padding-top:14px;border-top:1px solid var(--ln-2)}
.sv-why-h{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.sv-why-h b{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
.sv-why-g{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.sv-why-c{display:flex;flex-direction:column;gap:2px;padding:10px 14px;border-radius:var(--r-8);background:var(--bg-2);min-width:0}
.sv-why-c b{font-size:var(--t-t3,17px);line-height:1.3;font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
.sv-why-c b.up{color:var(--pos)}.sv-why-c b.down{color:var(--neg)}
.sv-why-l{margin:0 0 10px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.sv-whyc .sec-hd{margin-bottom:10px}
/* tables: a second number under a figure, the "Other pages" row, wrapped names (no cut search names) */
.sv-sub{display:block;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.sv-mv2 .tbl-r{min-height:48px}
.sv-other{color:var(--fg-3)}
.sv-other .k{color:var(--fg-2);font-weight:var(--w-regular)}
.sv-other .num{color:var(--fg-2)}
.seo .sv-like .k.sv-wrap{white-space:normal;overflow:visible;text-overflow:clip;padding:6px 0}
.seo .sv-kw .sv-trk{width:24px;height:24px;margin:0 4px 0 -4px;vertical-align:-7px;color:var(--fg-4)}
.seo .sv-kw .sv-trk[aria-pressed="true"]{color:var(--fg-2)}
.seo .sv-kw .k > bdi{overflow:visible}
.sv-cov{text-align:right}
.sv-why2{white-space:normal!important;text-wrap:pretty}
/* a bar list of three: the name gets the room the empty fourth cell had (design #9) */
.sv-sov.is-3 .sv-sov-r{grid-template-columns:minmax(0,240px) minmax(0,1fr) 72px}
.sv-sov-r.is-other{color:var(--fg-3)}
.sv-sov-r.is-other .sv-sov-b i{background:color-mix(in srgb,var(--fg) 18%,var(--bg))}
/* neutral colours where blue meant a state (design #8): the name-you split and the "To do" chip */
.sv-split.is-n i:first-child{background:color-mix(in srgb,var(--fg) 62%,var(--bg))}
.sv-split.is-n i:last-child{background:color-mix(in srgb,var(--fg) 22%,var(--bg))}
.seo .sv-chk-s{background:var(--bg-3);color:var(--fg)}
.seo .sv-chk.is-ok .sv-chk-s{background:transparent;color:var(--fg-3);box-shadow:inset 0 0 0 1px var(--ln)}
.seo .ce-i.is-cause .ce-n{background:var(--bg-3);color:var(--fg)}
/* the Research box is a search field: a capsule like every other (design #11) */
.seo .sv-rs-q{border-radius:var(--r-full)}
.seo .sv-rs .btn{border-radius:var(--r-full)}
/* a tile that opens another page (the AI report → AI Search) */
a.kp.is-link{text-decoration:none;cursor:pointer}
@media (hover:hover){a.kp.is-link:hover{background:var(--hover-solid)}}
.seo .kp-strip.is-5 .kp-s{white-space:normal}
.seo .sv-for{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.seo .sv-for a{color:var(--fg)}
@media (hover:hover){.seo .sv-for a:hover{text-decoration:underline;text-underline-offset:3px}}
@media (max-width:1320px){.sv-why-g{gap:10px}.sv-why-c{padding:9px 12px}}
@media (max-width:860px){.sv-why-g{grid-template-columns:minmax(0,1fr)}}
.seo .sv-mv2 .k,.seo .sv-mv2 .k2 > .u{white-space:normal;overflow:visible;text-overflow:clip}
.seo .sv-kw .k > .sv-trk{display:inline-flex;align-items:center;justify-content:center;overflow:visible;margin:0 0 0 2px;vertical-align:-6px;opacity:.75}
.seo .sv-foot .more{display:inline-flex;align-items:center;gap:2px;flex:none;white-space:nowrap}
.seo .sv-kw .tbl-r:hover .sv-trk,.seo .sv-kw .sv-trk[aria-pressed="true"]{opacity:1}

/* ===== v80 · ai search ===== (the AI Search fix round AD1–AD15 — pages/laisearch.js; scoped to .ai where it would touch other pages) */
/* AD1 — logos next to every assistant's name: 16px in two-line rows (gap 8, the sub-line under the name, not the logo), 14px in one-line rows,
   12px in small chips (gap 4); a not-sampled assistant keeps readable words — only its logo goes gray; menus show the mark in the icon slot */
.ai-k2 .ai-nm{gap:8px}
.ai-k2 > .u{padding-left:24px}
.ai-k2 .k.ai-k-pad,.ai-k-pad{padding-left:24px}
.ai-nms{display:inline-flex;flex-wrap:wrap;align-items:center;gap:3px 10px;min-width:0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.ai-nms .ai-nm > span:last-child{overflow:visible}
.ai-logo.is-off{filter:grayscale(1);opacity:.5}
.ai-nm.no-logo{padding-left:20px}
.ai-nm.ai-hd{gap:4px;justify-content:flex-end}
.chip.ai-chip .ai-nm{gap:4px}
.ai-nm-s{display:inline-flex;align-items:center;gap:0;flex-wrap:wrap}
.menu-ic .ai-logo{color:var(--fg)}
.menu-btn > .ai-logo{color:var(--fg)}
.ai .tbl-r .k .ai-nm,.ai .tbl-r .k2 .ai-nm{vertical-align:middle}
/* AD9 — since last Monday's run: one quiet line on top */
.sec.ai-since{display:flex;flex-direction:row;align-items:flex-start;gap:10px;padding:12px 16px}
.ai-since > svg{flex:none;margin-top:3px;color:var(--fg-3)}
.ai-since p{margin:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.ai-since b{color:var(--fg);font-weight:var(--w-semibold)}
.ai-since a{color:var(--fg);text-decoration:underline;text-decoration-color:var(--ln);text-underline-offset:3px}
@media (hover:hover){.ai-since a:hover{text-decoration-color:currentColor}}
.ai > .ai-since + .ai-top{margin-top:16px}
/* AD2 — the tiles: the change and the range verdict on two short lines */
.ai .ai-kps.is-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.ai .ai-kps.is-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.ai .ai-kps .kp-s{display:flex;flex-direction:column;white-space:normal}
.ai .ai-kps .kp-s > span{display:block}
.ai .ai-kps .kp-v.is-sum{font-size:var(--t-t3,17px);line-height:var(--lh-t2)}
.ai-kp-v::after{content:"";position:absolute;top:14px;right:14px;width:6px;height:6px;border-top:1.5px solid var(--fg-4);border-right:1.5px solid var(--fg-4);transform:rotate(45deg)}
/* the method link only once, pushed right and never wrapping (AD2) */
.ai .ai-mline .ai-mlink{white-space:nowrap}
/* AD2 — visits as their own zero-based bars under the rate */
.ai-vbars{margin-top:18px;padding-top:14px;border-top:1px solid var(--ln-2)}
.ai-vbars-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.ai-vbars-h b{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
.ai-chcap{margin-top:10px}
.ai .chart-ev + .sv-cap,.ai .chart-before + .sv-cap{margin-top:10px}
.ai .chart-plot{isolation:isolate;margin-right:6px}
/* AD14 — plan-change stretches are divider lines only; a rollout's label sits at the top of the plot */
.ai .ai-pband.is-alt{background:none}
.ai .chart-band span{bottom:auto;top:26px}
/* AD3 — worth your attention and the results: Mentions' grid */
.ai-att .mn-g-b .btn,.ai-res .mn-g-b .btn{white-space:nowrap}
.ai-att .mn-g .u,.ai-res .mn-g .u{white-space:normal;text-wrap:pretty}
.ai > .ai-att,.ai > .ai-res{margin-top:20px}
/* AD14 — against competitors: "about level" under a name whose range overlaps yours */
.ai-cmp-r .grow{display:flex;flex-direction:column;min-width:0}
small.ai-lvl{font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3);font-weight:var(--w-regular)}
/* B1 — the experiment strip */
.ai-exp-g{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--ln-2);border-radius:var(--r-8);overflow:hidden}
.ai-exp-g.is-5{grid-template-columns:repeat(5,minmax(0,1fr))}
.ai-exp-g.is-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.ai-exp-c{display:flex;flex-direction:column;gap:3px;min-width:0;padding:11px 14px 12px;border-left:1px solid var(--ln-2)}
.ai-exp-c:first-child{border-left:0}
.ai-exp-c > b{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
.ai-exp-c .sv-cap{margin:0}
.ai-exp-n{display:flex;flex-direction:column;gap:4px;margin-top:10px}
.ai-exp-n .sv-cap{margin:0}
.ai-exp-n a,.ai-ctest a{color:var(--fg);text-decoration:underline;text-decoration-color:var(--ln);text-underline-offset:3px}
.ai > .ai-exp{margin-top:20px}
/* B3 — what changed in these answers */
.ai-mv.ai-chg{align-items:baseline}
.ai-mv.ai-chg .mn-type{flex:none;width:64px}
.ai-mv.ai-chg .num{flex:none;min-width:56px;text-align:right}
.fd-bd > .more{display:inline-flex;align-items:center;gap:3px;margin-top:8px}
/* the question's last word keeps its finding flag */
.ai-lastw{white-space:nowrap}
.ai-q .tbl-r{height:auto;min-height:48px;padding-top:8px;padding-bottom:8px}
.ai-q .k2 .k{white-space:normal;overflow:visible;text-overflow:clip}
.ai-q .k2 .k .k-tag{margin-left:6px}
/* B7 — starter questions; the add-an-assistant row */
.ai > .ai-start{margin-top:16px}
.ai-start .mn-g{grid-template-columns:120px minmax(0,1fr) auto;cursor:default}
.ai-start .mn-g > span:last-child:empty{display:none}
@media (max-width:900px){.ai-start .mn-g{grid-template-columns:minmax(0,1fr) auto}.ai-start .mn-g .mn-g-b{display:flex}}   /* night fixer (#38): a phone keeps the question full width and its Track button */
.ai-addrow .u{white-space:normal}
/* B1 for a claim: the fix and how many answers it is counted on */
.ai-ctest{display:flex;align-items:flex-start;gap:6px;margin:8px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.ai-ctest svg{flex:none;margin-top:2px;color:var(--fg-3)}
.ai-says .ai-rate a{color:var(--fg);font-weight:var(--w-medium);text-decoration:underline;text-decoration-color:var(--ln);text-underline-offset:3px}
@media (hover:hover){.ai-says .ai-rate a:hover{text-decoration-color:currentColor}}
.ai-says .k .k-tag{margin-left:6px}
/* B4 — the shopping feed gate */
.ai-gate .tbl-r{height:auto;min-height:52px;align-items:start;padding-top:10px;padding-bottom:10px}
.ai-wrap{white-space:normal!important;overflow:visible!important;text-overflow:clip!important}
.ai-gate .k2 .ai-fix{margin-top:4px}
/* AD14 — bot access in words; "Estimate" a plain word */
.ai-acc{font-size:var(--t-co);color:var(--fg-2)}
.ai-acc.is-b{color:var(--fg);font-weight:var(--w-medium)}
.ai-est > .mn-type{margin-bottom:-2px}
.ai-led-l{margin-top:6px}
/* AD14 — not-sampled rows readable: no opacity on the words (design #10) */
.ai .ai-plan .tbl-r.is-off{opacity:1}
.ai .ai-plan .tbl-r.is-off .k{color:var(--fg-2)}
/* design #11 — the empty state's two ways in */
.ai-empty-a{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:12px}
/* AD14 — tone in neutral bars, a small dot on each label (Mentions' tone chip) */
.sv-split.ai-tone i:first-child{background:color-mix(in srgb,var(--fg) 58%,var(--bg))}
.sv-split.ai-tone i:nth-child(2){background:color-mix(in srgb,var(--fg) 26%,var(--bg))}
.sv-split.ai-tone i:last-child{background:color-mix(in srgb,var(--fg) 12%,var(--bg))}
.ai-dot-l{display:inline-flex;align-items:center;gap:6px}
.ai-dot-l::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--fg-4)}
.ai-dot-l.t-pos::before{background:var(--c-green)}
.ai-dot-l.t-neg::before{background:var(--c-red)}
.ai-dot-l.t-neu::before{background:transparent;box-shadow:inset 0 0 0 1.5px var(--fg-4)}
/* answers: your name apart from the others', a sign that a row opens, the answers that state a claim */
.ai-ans mark.is-you,.ai-anst mark.is-you{background:color-mix(in srgb,var(--c-blue) 22%,transparent);color:var(--fg);font-weight:var(--w-medium)}
.ai-ans mark:not(.is-you),.ai-anst mark:not(.is-you){background:color-mix(in srgb,var(--fg) 9%,transparent);color:var(--fg)}
.ai-open{display:inline-flex;align-items:center;gap:2px;color:var(--fg-4)}
.ai-ansr.is-open .ai-open svg{transform:rotate(180deg)}
.ai-ansr.is-hl{box-shadow:inset 3px 0 0 var(--fg-4)}
/* sources used for a question: the kind in a fixed column, so the addresses start at the same x (design P3) */
.ai-src-r > .mn-type{flex:none;width:96px}
/* a question's Local label links to Local */
a.lbl.ai-loc{text-decoration:none;cursor:pointer}
@media (hover:hover){a.lbl.ai-loc:hover{color:var(--fg)}}
.ai-eng-q .k .ai-nm{font-weight:var(--w-medium);color:var(--fg)}
@media (max-width:1320px){
  .ai-exp-g.is-5{grid-template-columns:repeat(3,minmax(0,1fr))}
  .ai-exp-g.is-5 .ai-exp-c:nth-child(4){border-left:0}
  .ai-exp-g.is-5 .ai-exp-c:nth-child(n+4){border-top:1px solid var(--ln-2)}
}
@media (max-width:900px){.ai .ai-kps.is-4,.ai-exp-g,.ai-exp-g.is-4,.ai-exp-g.is-3{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* v80 · ai search — the visits bars (Mentions' bar rules, scoped) and readable not-sampled rows */
.ai .chart-bar .chart-plot > .bars{position:absolute;inset:0}
.ai .chart-bar .bar-g{position:absolute;top:0;bottom:0;display:flex;align-items:flex-end;justify-content:center;gap:3px;padding:0 4px}
.ai .chart-bar .bar-el{flex:0 1 44px;border-radius:4px 4px 0 0;min-height:2px;display:block;transition:opacity var(--dur-1) var(--ease-out)}
.ai .chart-bar .chart-plot:hover .bar-el{opacity:.55}
.ai .chart-bar .bar-g:hover .bar-el{opacity:1}
.ai .chart-bar .ccol.is-bar{transform:none}
.ai .chart-bar .ccol.is-bar:hover{background:var(--bg-tl);border-radius:6px 6px 0 0}
.ai .chart-x.bars span{transform:translateX(-50%)}
.ai-eng .tbl-r.is-sub{height:auto;min-height:48px;padding-top:7px;padding-bottom:7px}
.ai-eng .tbl-r.is-sub .ai-k2 > .u{white-space:normal;overflow:visible}
.ai-nw{white-space:nowrap}
.ai-k-pad14{padding-left:20px}
.ai-led-l .ai-led{display:inline;font-size:inherit;line-height:inherit;font-weight:var(--w-medium);color:var(--link-tint,var(--link))}
.ai-led-l .ai-led svg{display:none}
.ai-gate .tbl-r .k2 .ai-led{display:inline}

/* ===== v81 · AI assistants' logos on the other pages (Local, Mentions, Changes, Agent Readiness, Ask) — AI Search's placement rule (v80 AD1):
   16px in two-line rows, 14px in one-line rows and lists, 12px in small chips; never in sentences, legends, tiles or bot tables ===== */
.lc-by{display:flex;margin-top:4px}
.lc-qlink{color:inherit;text-decoration:none}
@media (hover:hover){.lc-qlink:hover{text-decoration:underline;text-decoration-color:var(--ln);text-underline-offset:3px}}
.ai-cmp-r > .grow{min-width:0}
.ai-cmp-r > .grow > .ai-nm{max-width:100%;vertical-align:middle}
.cl-meta .cl-ais{display:inline-flex;vertical-align:top;font-size:inherit;line-height:inherit;color:var(--fg-2);gap:2px 10px}
/* a name with its logo inside a line of words keeps the words' baseline (the logo has none — centred on the line instead) */
.ag-split-w .ai-nm,.ag-act .ai-nm,.ag-ch .ai-nm{align-items:baseline}
.ag-split-w .ai-nm > .ai-logo,.ag-act .ai-nm > .ai-logo,.ag-ch .ai-nm > .ai-logo{align-self:center}
.ai-logo.ask-ai-lg{margin-right:6px;vertical-align:-3px}   /* v81: Ask — the logo before an assistant that leads a list row */
/* verify #9: the cause marker on an SEO Search chart is neutral (orange is "waiting for approval") */
.seo .annot-n.is-cause{color:var(--fg);border-color:var(--bd)}
:root:not([data-theme="dark"]) .seo .annot-n.is-cause{color:var(--fg);border-color:var(--bd)}
.seo .sv-other.is-grp .k{color:var(--fg);font-weight:var(--w-medium)}
.lc-who .lc-lvl{color:var(--fg-3)}   /* v81 (verify #6): a higher rate inside overlapping ranges — about level, not "named more often" */

/* ===== v82 · shell — removed 2 Oct 2026: the founder brought the v72–v81 sidebar and top bar back (the block is kept in _backups) ===== */

/* ===== v83 · topics ===== (Visibility → Topics — pages/ltopics.js; the SEO Search / Mentions kit: tiles that open their list, the shared row grid,
   ≤ 6-column tables with the rows outside the topics and the total last, a neutral move word — never a state colour, never a capsule control) */
.tx > .tx-top,.tx > .tx-att,.tx > .sv-one,.tx > .sv-tbl,.tx > .sv-card,.tx > .tx-young,.tx > .tx-edit,.tx > .tx-work,.tx > .fd-sec{margin-top:20px}
.tx-one > .fd-hd + .tx-top,.tx-one > .fd-hd + .tx-edit{margin-top:12px}
.tx .tx-top{padding:14px 16px}
.tx .tx-top .kp-strip{margin-bottom:0}
.tx .tx-top .kp-s{white-space:normal;text-wrap:pretty}
.tx .kp-strip.is-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.tx .kp-strip.is-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.tx .kp.is-static{cursor:default}
/* the move word: neutral, a quiet outline */
.tx-mv{display:inline-flex;align-items:center;height:22px;padding:0 8px;border:1px solid var(--ln);border-radius:var(--r-full);font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-2);white-space:nowrap;background:transparent}
.tx .fd-labels{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
/* the list: a number with its change under it; the outside rows quieter; the total last */
.tx-tbl .tbl-r{min-height:52px}
.tx-c{display:flex;flex-direction:column;align-items:flex-end;line-height:1.25;font-variant-numeric:tabular-nums}
.tx-c small{font-size:var(--t-sh);line-height:1.3;color:var(--fg-4);font-weight:var(--w-regular)}
.tx-c small .chg{font-size:var(--t-sh)}
.tx-na{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.tx-tbl .tx-out{min-height:48px}
.tx-tbl .tx-out .k{color:var(--fg-2)}
.tx-tbl .tbl-r.tx-total{border-top:1px solid var(--ln);border-bottom:0;margin-top:-1px}
.tx-total .k{font-weight:var(--w-semibold);color:var(--fg)}
.tx-total .num{color:var(--fg);font-weight:var(--w-semibold)}
.tx-tbl .k2 .u{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tx-pair{display:inline-flex;gap:6px}
/* day one */
.tx .tx-young{display:flex;flex-direction:row;align-items:flex-start;gap:10px;padding:14px 18px}
.tx .tx-young > svg{flex:none;margin-top:2px;color:var(--fg-3)}
.tx .tx-young p{margin:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.tx .tx-young b{color:var(--fg);font-weight:var(--w-medium)}
/* one topic */
.tx .sv-why{display:block!important;-webkit-line-clamp:unset;overflow:visible;white-space:normal}
.tx-lead{margin:0 0 10px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg);max-width:96ch;text-wrap:pretty}
.tx-pg{display:block;min-width:0;overflow-wrap:anywhere}
.tx-ks .tbl-r,.tx-pgs .tbl-r,.tx-ais .tbl-r{min-height:44px}
.tx-pgs .tbl-r.is-grp{cursor:default}
.tx-pgs .tbl-r.is-grp .k{color:var(--fg)}
.tx .k2 .u.tx-ai{display:flex;align-items:center;gap:10px;min-width:0}
.tx-logos{display:inline-flex;align-items:center;gap:4px;flex:none}
.tx-docs{margin-top:10px}
.tx-docs .lk,.tx .k2 .u .lk{color:var(--fg-2);text-decoration:underline;text-decoration-color:var(--ln);text-underline-offset:3px}
@media (hover:hover){.tx-docs .lk:hover,.tx .k2 .u .lk:hover{color:var(--fg);text-decoration-color:currentColor}}
.tx-gaps .sv-foot,.tx-swap .sv-foot{margin-top:10px;align-items:center}
.tx-turns{display:flex;flex-wrap:wrap;gap:4px 18px;margin:0 0 10px;padding:0;list-style:none;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.tx-turns b{font-weight:var(--w-medium);color:var(--fg)}
.tx-swap .mn-gl{margin-top:8px}
.tx-swap .hm-mf{margin-top:12px}
.tx-hist{margin:0;padding:0;list-style:none}
.tx-hist li{padding:9px 0;border-bottom:1px solid var(--ln-2);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.tx-hist li:last-child{border-bottom:0}
.tx-hist b{font-weight:var(--w-medium);color:var(--fg)}
.tx-hist .lk{margin-left:4px;color:var(--fg-3)}
/* edit topic */
.tx-edit{padding:16px 22px 18px}
.tx-edit .tx-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:8px 0}
.tx-edit .tx-row > .fd-k{width:52px;flex:none}
.tx-in{height:30px;width:300px;max-width:100%;padding:0 10px;border:1px solid var(--ln);border-radius:var(--r-8);background:var(--lvl-0);color:var(--fg);font:inherit;font-size:var(--t-body)}
@media (max-width:1320px){.tx-tbl .tbl-h,.tx-tbl .tbl-r{column-gap:14px}}
@media (max-width:900px){.tx .kp-strip{grid-template-columns:repeat(2,minmax(0,1fr))!important}.tx .kp-strip.is-5 > :nth-child(5){grid-column:1 / -1}}   /* night C6 (Oct 8): the Topics list no longer hides Page 1, AI answers and Moving under 900px — a narrow page shows each topic as a card with every column labelled (v103-a11y.css AX8) */
/* v83 fix round (FX1–FX24): rows that never cut their evidence, a button column that fits its words, rows outside the topics that can be moved,
   searches counted elsewhere quieter, the topic's suggested questions, the assistants fold, and the chart's marker numbers readable in light mode */
.tx-att .mn-g,.tx-gaps .mn-g,.tx-work .mn-g,.tx-swap .mn-g,.tx-sugg .mn-g{grid-template-columns:150px minmax(0,1fr) auto 14px}
.tx .mn-g.tx-nost{grid-template-columns:minmax(0,1fr) auto 14px}
.tx-att .mn-g .k,.tx-gaps .mn-g .k,.tx-work .mn-g .k,.tx-sugg .mn-g .k{white-space:normal;text-wrap:pretty}
.tx-att .mn-g .u,.tx-gaps .mn-g .u,.tx-work .mn-g .u,.tx-swap .mn-g .u,.tx-sugg .mn-g .u{white-space:normal;overflow:visible;text-overflow:clip;text-wrap:pretty}
.tx-tbl .tx-out .k2 .u{white-space:normal;overflow:visible;text-overflow:clip;text-wrap:pretty}
.tx-tbl .tx-out-act{grid-column:4 / -1;display:flex;justify-content:flex-end;align-items:center;min-width:0}
.tx-move{display:inline-flex}
.tx-ks .tbl-r.is-else .k,.tx-ks .tbl-r.is-else .num{color:var(--fg-3)}
.tx-ks .tbl-r.is-else .k2 .u{white-space:normal;overflow:visible;text-overflow:clip}
.tx-sugg{margin-top:10px}
.tx-done{display:inline-flex;align-items:center;gap:4px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);white-space:nowrap}
.tx .tbl-r .k.tx-eng{display:flex;align-items:center;gap:8px;min-width:0}
:root:not([data-theme="dark"]) .tx .annot-n{color:var(--fg)}
:root:not([data-theme="dark"]) .tx .annot-n.is-cause{color:var(--warn-ink)}
@media (max-width:1320px){.tx-att .mn-g,.tx-gaps .mn-g,.tx-work .mn-g,.tx-swap .mn-g,.tx-sugg .mn-g{grid-template-columns:130px minmax(0,1fr) auto 14px}}
@media (max-width:900px){.tx-att .mn-g,.tx-gaps .mn-g,.tx-work .mn-g,.tx-swap .mn-g,.tx-sugg .mn-g,.tx .mn-g.tx-nost{grid-template-columns:minmax(0,1fr) 14px}}

/* ===== v84 · health ===== (Website → Health — pages/lhealth.js; the Topics / Agent Readiness kit: a strip of counts by consequence, the shared row
   grid with a state column, neutral witness chips — never a state colour —, folds for tidy-ups and expected states, ≤ 6-column tables) */
.hx > .hx-top,.hx > .hx-list,.hx > .sv-one,.hx > .sv-tbl,.hx > .sv-card,.hx > .fd-sec,.hx > .hx-igf,.hx > div > .sv-one,.hx > .hm-mf{margin-top:20px}
.hx-one > .fd-hd + *{margin-top:12px}
.hx .hx-top{padding:14px 16px}
.hx .hx-top .kp-strip{margin-bottom:0}
.hx .hx-top .kp-s{white-space:normal;text-wrap:pretty}
.hx .kp-strip.is-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.hx .kp-strip.is-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.hx .kp.is-static{cursor:default}
.hx .ag-in{color:var(--link-tint,var(--link));font-weight:var(--w-medium)}
.hx .fd-labels{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
/* who saw it, and the group words: a quiet outline, never a state colour; "Came back" has its own dashed outline */
.hx-w{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 7px;border:1px solid var(--ln);border-radius:var(--r-full);font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-2);white-space:nowrap;background:transparent;vertical-align:1px}
.hx-w > svg{color:var(--fg-4)}
.hx-w.hx-back{border-style:dashed;color:var(--fg)}
.hx .fd-labels .hx-w{height:22px;padding:0 8px;font-size:var(--t-co);line-height:var(--lh-co)}
/* the rows: a state column wide enough for "Waiting for approval", the sub-line wraps (evidence is never cut) */
.hx-list .mn-g,.hx-fl .mn-g{grid-template-columns:150px minmax(0,1fr) auto 14px}
.hx-list .mn-g .k,.hx-fl .mn-g .k{white-space:normal;text-wrap:pretty}
.hx-list .mn-g .u,.hx-fl .mn-g .u{white-space:normal;overflow:visible;text-overflow:clip;text-wrap:pretty;line-height:20px}
.hx-list .mn-g .u .hx-w,.hx-fl .mn-g .u .hx-w{margin-left:1px}
.hx-list .mn-g.is-static,.hx-fl .mn-g.is-static{cursor:default}
@media (hover:hover){.hx-list .mn-g.is-static:hover,.hx-fl .mn-g.is-static:hover{background:transparent}}
.hx-fl{margin-top:2px}
.hx-pad{padding:10px 0 4px}
.hx-when{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.hx-chg-h{display:flex;align-items:center;gap:8px;padding:12px 0 6px}
.hx-chg-h:first-child{padding-top:4px}
/* around the site: three quiet lines */
.hx-around{padding:6px 22px}
.hx-ar{display:grid;align-items:center;column-gap:12px;min-height:46px;padding:7px 0;border-bottom:1px solid var(--ln-2);font-size:var(--t-body);line-height:var(--lh-body);grid-template-columns:20px 150px minmax(0,1fr) max-content}
.hx-ar:last-child{border-bottom:0}
.hx-ar-ic{display:flex;color:var(--fg-4)}
.hx-ar-k{font-weight:var(--w-semibold);color:var(--fg)}
.hx-ar-t{color:var(--fg-2);text-wrap:pretty}
/* speed: a value with Google's band word under it — the band in words, never a colour */
.hx-spd .tbl-r{min-height:52px}
.hx-spd .tbl-r.hx-cont{border-top:0}
.hx-spd .tbl-r .k2{display:flex;flex-direction:column;gap:1px;min-width:0}
.hx-spd .tbl-r .k{color:var(--fg);font-weight:var(--w-medium)}
.hx-spd .tbl-r .u{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);text-wrap:pretty}
.hx-spd .tbl-r .hx-iss{color:var(--fg-2)}
.hx-spd .tbl-r[role="link"]{cursor:pointer}
@media (hover:hover){.hx-spd .tbl-r[role="link"]:hover{background:var(--hover-solid)}}
.hx-sv{display:flex;flex-direction:column;line-height:1.25;font-variant-numeric:tabular-nums}
.hx-sv b{font-weight:var(--w-regular);color:var(--fg-2)}
.hx-sv small{font-size:var(--t-sh);line-height:1.3;color:var(--fg-4)}
.hx-sv.is-ni b,.hx-sv.is-poor b{font-weight:var(--w-semibold);color:var(--fg)}
.hx-sv.is-ni small,.hx-sv.is-poor small{color:var(--fg-2);font-weight:var(--w-medium)}
/* tables */
.hx-keys .tbl-r,.hx-pg .tbl-r,.hx-ev .tbl-r{min-height:44px;padding-top:6px;padding-bottom:6px}
.hx-keys .k,.hx-pg .k{color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.hx-pg .k2{display:flex;flex-direction:column;min-width:0}.hx-pg .k2 .u{font-size:var(--t-co);color:var(--fg-3);white-space:normal}
.hx-num{color:var(--link-tint,var(--link))}
@media (hover:hover){.hx-num:hover{text-decoration:underline}}
.hx-mut{color:var(--fg-3)}
.hx-wrap{white-space:normal;text-wrap:pretty;color:var(--fg-2)}
.hx-pr{min-width:0;white-space:normal;text-wrap:pretty;padding:2px 0}
.hx-pin{display:flex;justify-content:flex-end}
.hx .hx-top .ai-mline{flex-wrap:nowrap;align-items:flex-start}
.hx .hx-top .ai-mline > svg{margin-top:1px}
.hx-ar > a.more{white-space:nowrap;flex:none;display:inline-flex;align-items:center;gap:2px}
.hx-more{margin-top:8px}
/* one issue */
.hx-stake{margin:10px 0 0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2);max-width:80ch}
.hx-stake > svg{display:inline-block;vertical-align:-2px;color:var(--fg-4)}
.hx-stake b{font-weight:var(--w-semibold);color:var(--fg)}
.hx-p{margin:0;font-size:var(--t-body);line-height:20px;color:var(--fg-2);max-width:80ch;text-wrap:pretty}
.hx-p b{font-weight:var(--w-semibold);color:var(--fg)}
.hx-steps{margin:0;padding-left:20px;list-style:decimal;display:grid;gap:6px;font-size:var(--t-body);line-height:20px;color:var(--fg-2)}
/* the lifecycle: five steps in a row — done, now, next */
.hx-life{display:grid;gap:10px;margin:0;padding:0;list-style:none;grid-template-columns:repeat(var(--n,5),minmax(0,1fr))}
.hx-life li{position:relative;display:flex;flex-direction:column;gap:3px;padding-top:22px;min-width:0}
.hx-life li::before{content:"";position:absolute;left:18px;right:-10px;top:8px;height:2px;background:var(--ln-2)}
.hx-life li:last-child::before{display:none}
.hx-life li.is-done::before{background:var(--fg-4)}
.hx-dot{position:absolute;left:0;top:0;width:18px;height:18px;border-radius:50%;border:2px solid var(--ln);background:var(--lvl-0);display:flex;align-items:center;justify-content:center;color:var(--lvl-0)}
.hx-life li.is-done .hx-dot{background:var(--fg-3);border-color:var(--fg-3)}
.hx-life li.is-now .hx-dot{border-color:var(--fg);box-shadow:inset 0 0 0 3px var(--lvl-0),inset 0 0 0 9px var(--fg)}
.hx-life b{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg-3)}
.hx-life li.is-done b,.hx-life li.is-now b{color:var(--fg)}
.hx-life .sv-cap{text-wrap:pretty}
/* the three clocks */
.hx-clks{display:flex;flex-direction:column;border-top:1px solid var(--ln-2)}
.hx-clk{display:grid;grid-template-columns:190px minmax(0,1fr);column-gap:14px;padding:9px 0;border-bottom:1px solid var(--ln-2);font-size:var(--t-body);line-height:20px;color:var(--fg-2)}
.hx-clk:last-child{border-bottom:0}
.hx-clk-k{display:flex;align-items:center;gap:7px;font-weight:var(--w-medium);color:var(--fg)}
.hx-clk-k > svg{color:var(--fg-4);flex:none}
/* ignore — with a reason */
.hx-igf{padding:16px 22px 18px}
.hx-igr{display:flex;flex-wrap:wrap;gap:8px 18px;margin:8px 0 10px}
.hx-igo{display:inline-flex;align-items:center;gap:7px;font-size:var(--t-body);color:var(--fg-2);cursor:pointer}
.hx-igt{width:420px;margin-bottom:10px}
.hx-igb{display:flex;align-items:center;gap:8px}
@media (max-width:1320px){.hx-list .mn-g,.hx-fl .mn-g{grid-template-columns:130px minmax(0,1fr) auto 14px}.hx-ar{grid-template-columns:20px 130px minmax(0,1fr) max-content}}
@media (max-width:900px){.hx .kp-strip{grid-template-columns:repeat(2,minmax(0,1fr))!important}.hx .kp-strip.is-5 > :nth-child(5){grid-column:1 / -1}
  .hx-ar{grid-template-columns:20px minmax(0,1fr)}.hx-ar > :nth-child(3){grid-column:2}.hx-ar > :nth-child(4){grid-column:2}
  .hx-life{gap:12px}.hx-life li::before{display:none}.hx-life li{padding:0 0 0 28px}.hx-clk{grid-template-columns:1fr}}
/* v84 fix round (FIX.md HX1–HX22) */
.hx-start{display:block;margin-top:4px;color:var(--fg-2);text-wrap:pretty}
.hx-start b{font-weight:var(--w-semibold);color:var(--fg)}
.hx-range{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 6px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-3);white-space:nowrap;cursor:default}
.hx-range > svg{color:var(--fg-4)}
.hx .hx-top .ai-mline + .ai-mline{margin-top:4px}
/* HX19: rows inside a fold start where the cards' rows start (the fold's body is 8px deeper than a card's) */
.hx .is-fold .hx-fl{margin-left:-8px;margin-right:-8px}
/* the Key pages tab: grouped by page type, the shared fact said once in the group's line; the Page column wraps — nothing is cut */
.hx-keys .k{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
.hx-kg{display:block;padding:16px 0 7px;border-bottom:1px solid var(--ln);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.hx-kg:first-of-type{padding-top:10px}
.hx-kg b{font-weight:var(--w-semibold);color:var(--fg)}
.hx-kn{display:none}
.hx-idxl{display:flex;align-items:flex-start;gap:4px;margin:0 0 4px;color:var(--fg-3)}   /* night fixer (#83): the icon sits on the first line */
.hx-idxl > svg{color:var(--fg-4);flex:none;margin-top:3px}
/* HX4: the three clocks wherever the work is approved or followed — the approval summary and the action page */
.hx-clkb{display:flex;flex-direction:column;gap:5px;min-width:0}
.hx-clkb-r{display:grid;grid-template-columns:150px minmax(0,1fr);column-gap:10px;font-size:var(--t-body);line-height:20px;color:var(--fg-2);text-wrap:pretty}
.hx-clkb-k{display:inline-flex;align-items:flex-start;gap:6px;font-weight:var(--w-medium);color:var(--fg)}
.hx-clkb-k > svg{flex:none;margin-top:4px;color:var(--fg-4)}
.hm-mf dl > div:has(> dd > .hx-clkb){grid-column:1 / -1}
.hx-clkb.ap-clks{margin-top:14px;padding:10px 14px;border:1px solid var(--ln-2);border-radius:var(--r-12);max-width:860px}
@media (max-width:900px){.hx-clkb-r{grid-template-columns:1fr}}
/* HX4: the action page's stepper — a long state word ("Waiting for approval") wraps under its dot instead of running into the next step */
.loop li .loop-l{white-space:normal;text-wrap:balance}
/* speed: on a narrow window the metric's name rides with its value; the device rides with the group */
.hx-sv-m{display:none;font-style:normal}
.hx-spd .tbl-r .k.hx-rep{display:none}
.hx-dev-n{display:none}
@media (max-width:900px){
  /* HX13: nothing disappears — a row keeps its state and its button, stacked */
  .hx-list .mn-g,.hx-fl .mn-g{grid-template-columns:minmax(0,1fr) 14px;grid-template-areas:"st ch" "k ch" "b ch";row-gap:6px}
  .hx-list .mn-g > .mn-g-st,.hx-fl .mn-g > .mn-g-st{display:flex;grid-area:st}
  .hx-list .mn-g > .mn-g-st:empty,.hx-fl .mn-g > .mn-g-st:empty,.hx-list .mn-g > .mn-g-b:empty,.hx-fl .mn-g > .mn-g-b:empty{display:none}
  .hx-list .mn-g > .k2,.hx-fl .mn-g > .k2{grid-area:k}
  .hx-list .mn-g > .mn-g-b,.hx-fl .mn-g > .mn-g-b{display:flex;grid-area:b;justify-content:flex-start}
  .hx-list .mn-g > :last-child,.hx-fl .mn-g > :last-child{grid-area:ch}
  /* speed rows stack: group · device, then the three values with their band words */
  .hx-spd .tbl-h{display:none}
  .hx-spd .tbl-r{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:6px;padding-top:10px;padding-bottom:10px}
  .hx-spd .tbl-r > .k2{grid-column:1 / -1}
  .hx-spd .tbl-r > .hx-devc{display:none}
  .hx-spd .tbl-r .k.hx-rep{display:block}
  .hx-dev-n{display:inline}
  .hx-sv-m{display:block;font-size:var(--t-sh);line-height:1.3;color:var(--fg-3)}
  .hx-spd .tbl-r.hx-cont{border-top:0}
  /* key pages keep Page · Problems · Unpin; why it's key and its clicks ride under the page */
  .hx-keys .tbl-h,.hx-keys .tbl-r{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto}
  .hx-keys .tbl-h > :nth-child(2),.hx-keys .tbl-h > :nth-child(3),.hx-keys .tbl-r > .hx-kw,.hx-keys .tbl-r > .hx-kc{display:none}
  .hx-kn{display:block;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}}

/* ===== v85 · pages ===== (Website → Pages — pages/lpages.js; Health's kit: the types table that adds up to the sitemaps, ≤ 6 columns that wrap and
   never cut a name, neutral chips for types, reasons and kinds of change — never a state colour —, folds for the other addresses and tidy-ups,
   and a record in loop order. At ≤ 900 px a row stacks with each value's label; nothing disappears) */
.wx > .sv-tbl,.wx > .sv-one,.wx > .fd-sec,.wx > .wx-rev,.wx > .hm-mf{margin-top:20px}
.wx > .fd-nav + .sv-tbl,.wx > .fd-nav + .wx-rev{margin-top:4px}
.wx-one > .fd-hd + *{margin-top:12px}
.wx .ag-in{color:var(--link-tint,var(--link));font-weight:var(--w-medium)}
@media (hover:hover){.wx .ag-in:hover{text-decoration:underline}}
.wx .fd-labels{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
/* the neutral chip: a type, a reason a page is key, a kind of change */
.wx-c{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 7px;border:1px solid var(--ln);border-radius:var(--r-full);font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-2);white-space:nowrap;background:transparent;vertical-align:1px}
.wx-c > svg{color:var(--fg-4)}
.wx .fd-labels .wx-c{height:22px;padding:0 8px;font-size:var(--t-co);line-height:var(--lh-co)}
/* the tables: names and addresses wrap, numbers stay on one line */
.wx-tbl .tbl-r{min-height:48px;padding-top:7px;padding-bottom:7px;align-items:start}
.wx-tbl .tbl-h{align-items:end;padding-bottom:6px;height:auto;min-height:32px}
.wx-tbl .tbl-r > *{padding-top:2px}
.wx-tbl .k2{display:flex;flex-direction:column;gap:2px;min-width:0}
.wx-tbl .k{color:var(--fg);font-weight:var(--w-medium);white-space:normal;overflow-wrap:anywhere;text-wrap:pretty}
.wx-tbl .u{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);white-space:normal;overflow-wrap:anywhere;text-wrap:pretty}
.wx-tbl .u .wx-c{margin-left:2px}
.wx-tbl .tbl-r[role="link"]{cursor:pointer}
@media (hover:hover){.wx-tbl .tbl-r[role="link"]:hover{background:var(--hover-solid)}}
.wx-cl{min-width:0;font-size:var(--t-body);line-height:20px;color:var(--fg-2);text-wrap:pretty}
.wx-tbl .tbl-h > :nth-child(n+2),.wx-tbl .wx-cl{white-space:normal}
.wx-tbl .wx-cl .num,.wx-tbl .wx-clk{display:block;text-align:right;font-variant-numeric:tabular-nums}
.wx-pages .wx-cl:last-child .num{white-space:nowrap}
.wx-types .wx-cl:nth-child(2) .num{white-space:nowrap}
.wx-clk{color:var(--fg-2);font-size:var(--t-co);line-height:var(--lh-co)}
.wx-sub{display:block;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.wx-tot{border-bottom:0}
.wx-tot .k{font-weight:var(--w-semibold)}
.wx-edit{font:inherit;color:var(--link-tint,var(--link));background:none;border:0;padding:0;cursor:pointer}
@media (hover:hover){.wx-edit:hover{text-decoration:underline}}
/* rename a group */
.wx-ren{display:flex;flex-direction:column;gap:8px;margin:2px 0 10px;padding:12px 14px;border:1px solid var(--ln-2);border-radius:var(--r-12);background:var(--bg-2);max-width:560px}
.wx-ren label{display:flex;flex-direction:column;gap:5px;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-2)}
.wx-ren-b{display:flex;align-items:center;justify-content:flex-end;gap:8px}
/* the other addresses and the folders: a count, the words, its homes */
.wx-ol .mn-g,.wx-folders .mn-g{grid-template-columns:96px minmax(0,1fr) auto 14px}
.wx-on{display:block;font-variant-numeric:tabular-nums;color:var(--fg);font-weight:var(--w-medium);text-align:left}
.wx-ob{display:inline-flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.wx-folders{margin:6px 0 14px}
.wx-cl0{display:flex;align-items:flex-start;gap:6px;margin:0 0 8px;text-wrap:pretty}
.wx-cl0 > svg{flex:none;margin-top:3px;color:var(--fg-4)}
.wx-pad{padding:8px 0 6px}
.wx-empty .empty{padding:28px 0 18px}
/* review candidates: the gates with their evidence, the options in order, the risks once */
.wx-rev .sec-bd{display:flex;flex-direction:column;gap:12px;padding-top:6px}
.wx-gates{margin:0;padding:0;list-style:none;counter-reset:g;display:flex;flex-direction:column}
.wx-gates li{counter-increment:g;display:grid;grid-template-columns:24px minmax(0,1fr) minmax(140px,auto);column-gap:12px;align-items:start;padding:9px 0;border-bottom:1px solid var(--ln-2)}
.wx-gates li::before{content:counter(g);font-size:var(--t-co);line-height:20px;color:var(--fg-4);font-variant-numeric:tabular-nums}
.wx-gates li:last-child{border-bottom:0}
.wx-g-k{display:flex;flex-direction:column;gap:2px;min-width:0;font-size:var(--t-body);line-height:20px;color:var(--fg)}
.wx-g-k b{font-weight:var(--w-semibold)}
.wx-g-n{font-size:var(--t-co);line-height:20px;color:var(--fg-2);text-align:right;text-wrap:pretty}
.wx-gates li.is-all .wx-g-n{color:var(--fg-3)}
.wx-opts{margin:0;padding-left:20px;list-style:decimal;display:flex;flex-direction:column;gap:4px;font-size:var(--t-body);line-height:20px;color:var(--fg-2)}
.wx-opts b{font-weight:var(--w-semibold);color:var(--fg)}
.wx-opts li{display:list-item}
.wx-opts li::marker{color:var(--fg-4);font-variant-numeric:tabular-nums}
.wx-k{margin-top:4px}
.wx-risk{display:flex;align-items:flex-start;gap:6px;max-width:90ch}
.wx-risk > svg{flex:none;margin-top:3px;color:var(--fg-4)}
.wx-rev-b{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding-top:4px}
/* the record */
.wx-url{margin-top:2px;color:var(--fg-3);overflow-wrap:anywhere}
.wx-status{margin:6px 0 0;font-size:var(--t-body);line-height:20px;color:var(--fg-2);text-wrap:pretty}
.wx-own .mb-p{color:var(--fg-2)}   /* v85 fix (PX17): the "Owner:" prefix ≥ 4.5:1 */
.wx-facts{display:grid;grid-template-columns:150px minmax(0,1fr);column-gap:16px;margin:0}
.wx-f{display:contents}
.wx-f dt,.wx-f dd{padding:8px 0;border-bottom:1px solid var(--ln-2);font-size:var(--t-body);line-height:20px;margin:0}
.wx-f:last-child dt,.wx-f:last-child dd{border-bottom:0}
.wx-f dt{color:var(--fg-3);font-weight:var(--w-medium)}
.wx-f dd{color:var(--fg-2);min-width:0;overflow-wrap:anywhere;text-wrap:pretty}
.wx-sec .sec-bd > .sv-cap{margin-top:10px}
.wx-sec .sec-bd > .hx-p + .sv-cap{margin-top:6px}
/* the history: when · what changed (a neutral kind chip, before → after, who, where it applies) · its verdict */
.wx-hl{display:flex;flex-direction:column}
.wx-h{display:grid;grid-template-columns:132px minmax(0,1fr) auto;column-gap:14px;align-items:start;padding:10px 0;border-bottom:1px solid var(--ln-2)}
.wx-h:last-child{border-bottom:0}
.wx-h-d{font-size:var(--t-co);line-height:20px;color:var(--fg-3);font-variant-numeric:tabular-nums;text-wrap:pretty}
.wx-h-b{display:flex;flex-direction:column;gap:3px;min-width:0}
.wx-h-t{font-size:var(--t-body);line-height:20px;color:var(--fg);text-wrap:pretty}
.wx-h-t .wx-c{margin-right:2px}
.wx-h-ba{margin:0;font-size:var(--t-body);line-height:20px;color:var(--fg-2);overflow-wrap:anywhere;text-wrap:pretty}
.wx-h-b .sv-cap{margin:0}
.wx-h-v{padding-top:1px}
.wx-win{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:8px 0 0}
.wx-win > svg{color:var(--fg-4)}
.wx-vers{margin-top:12px;display:flex;flex-direction:column;gap:4px}
.wx-ctx{margin-top:6px}
.wx-ctx .mn-g{grid-template-columns:150px minmax(0,1fr) auto 14px}
@media (max-width:900px){
  /* nothing disappears: a row stacks — the name first, then each value under its own label */
  .wx-tbl .tbl-h{display:none}
  .wx-tbl .tbl-r{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:8px;padding-top:10px;padding-bottom:10px}
  .wx-tbl .tbl-r > .k2{grid-column:1 / -1}
  .wx-tbl .tbl-r > span:empty{display:none}
  .wx-cl::before{content:attr(data-l);display:block;font-size:var(--t-sh);line-height:1.3;color:var(--fg-4);font-weight:var(--w-medium)}
  .wx-tbl .wx-cl .num,.wx-tbl .wx-clk{text-align:left}
  .wx-ol .mn-g,.wx-folders .mn-g,.wx-ctx .mn-g{grid-template-columns:minmax(0,1fr) 14px;grid-template-areas:"st ch" "k ch" "b ch";row-gap:6px}
  .wx-ol .mn-g > .mn-g-st,.wx-folders .mn-g > .mn-g-st,.wx-ctx .mn-g > .mn-g-st{display:flex;grid-area:st}
  .wx-ol .mn-g > .k2,.wx-folders .mn-g > .k2,.wx-ctx .mn-g > .k2{grid-area:k}
  .wx-ol .mn-g > .mn-g-b,.wx-folders .mn-g > .mn-g-b,.wx-ctx .mn-g > .mn-g-b{display:flex;grid-area:b;justify-content:flex-start}
  .wx-ol .mn-g > :last-child,.wx-folders .mn-g > :last-child,.wx-ctx .mn-g > :last-child{grid-area:ch}
  .wx-facts{grid-template-columns:1fr}
  .wx-f dt{padding-bottom:0;border-bottom:0}
  .wx-f dd{padding-top:2px}
  .wx-h{grid-template-columns:minmax(0,1fr) auto;row-gap:4px}
  .wx-h-d{grid-column:1 / -1}
  .wx-gates li{grid-template-columns:24px minmax(0,1fr)}
  .wx-g-n{grid-column:2;text-align:left}}
/* v85 · pages — a live document's address in Content's library opens its page's record */
.c-row a.c-goes{color:inherit;text-decoration:underline;text-decoration-color:var(--ln);text-underline-offset:2px}
@media (hover:hover){.c-row a.c-goes:hover{color:var(--link-tint,var(--link));text-decoration-color:currentColor}}
/* v85 · pages — SEO Search's page record: one line back to the page's record on Website → Pages */
.sv-rec{margin:6px 0 0}
.sv-rec .more{display:inline-flex}
.seo .sec.panel > .sv-rec{padding:0 0 14px;text-align:center}
/* v85 · pages — the views and the search share one rule; when they don't fit, the search moves under the views (nothing is cut) */
.wx .pl-bar{flex-wrap:wrap;row-gap:0}
.wx .pl-bar .pl-tabs{flex:0 1 auto;min-width:0}
.wx .pl-bar .pl-tab.pl-more{flex:none}
@media (max-width:1100px){.wx .pl-bar > .grow{display:none}.wx .pl-bar > .pl-q{order:5;margin:6px 0 10px}}
/* v85 fix round (PX13, PX14, PX17) — the search sits in the header's tools; the type rows' clicks: the number on line 1, what it covers as a caption;
   the record's sections share ONE label column (150 + 16 px, like Health's); the review card has the type card's padding; at ≤ 900 px a page row
   is its name and one meta line */
.wx .hm-tools{flex-wrap:wrap;justify-content:flex-end;row-gap:8px}
.wx .hm-tools .pl-q{width:220px}
.wx-tbl .wx-cl .wx-clk1{display:block;text-align:right;color:var(--fg);font-variant-numeric:tabular-nums;white-space:nowrap}
.wx-tbl .wx-cl .wx-clk{display:block;margin-top:1px;text-align:right;color:var(--fg-3);font-size:var(--t-co);line-height:var(--lh-co)}
.wx-shared{margin:10px 0 0}
.wx-note{display:flex;align-items:flex-start;flex-wrap:wrap;gap:4px;margin:10px 0 0;text-wrap:pretty}
.wx-note > svg{flex:none;margin-top:3px;color:var(--fg-4)}
.wx-rev.sec{padding:16px 22px 18px}
.wx-judged{display:flex;flex-direction:column;gap:4px;font-size:var(--t-body);line-height:20px;color:var(--fg-2)}
.wx-judged > b{font-weight:var(--w-semibold);color:var(--fg)}
.wx-judged ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:3px;list-style:disc}
.wx-judged ul li::marker{color:var(--fg-4)}
.wx-judged .hx-p{margin:2px 0 0}
.wx-h-k{color:var(--fg-3)}
@media (min-width:901px){.wx-rev .wx-gates li{grid-template-columns:24px minmax(0,1fr) minmax(140px,300px)}}
@media (min-width:901px){
  .wx-h{grid-template-columns:150px minmax(0,1fr) auto;column-gap:16px}
  .wx-one .fd-sec .mn-g,.wx-one .wx-sec .mn-g{grid-template-columns:150px minmax(0,1fr) auto 14px;column-gap:16px}}
@media (max-width:900px){
  .wx .hm-tools .pl-q{width:100%}
  .wx-tbl .wx-cl .wx-clk1,.wx-tbl .wx-cl .wx-clk{text-align:left}
  .wx-pages .tbl-r{display:flex!important;flex-wrap:wrap;align-items:baseline;row-gap:2px;padding-top:8px;padding-bottom:8px}
  .wx-pages .tbl-r > .k2{flex:1 0 100%;margin-bottom:2px}
  .wx-pages .tbl-r > .wx-cl{display:inline;padding-top:0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
  .wx-pages .tbl-r > .wx-cl *{display:inline!important;text-align:left!important;font-size:inherit;line-height:inherit}
  .wx-pages .wx-cl::before{content:" · ";display:inline;font-size:inherit;line-height:inherit;color:var(--fg-4);white-space:pre}
  .wx-pages .wx-cl[data-l="Issues"]::before,.wx-pages .wx-cl[data-l="Last changed"]::before,.wx-pages .wx-cl[data-l="Google clicks"]::before{content:" · " attr(data-l) " "}
  .wx-pages .tbl-r > .k2 + .wx-cl::before{content:none}
  .wx-pages .tbl-r > .wx-cl .wx-sub::before{content:", "}
  .wx-pages .tbl-r > .wx-cl .wx-sub:first-child::before{content:none}}
/* v85 fix (PX17): the kit's empty-state button reaches 4.5:1 in dark on every page that uses it — only its blue changes, to the theme's link tint */
:root[data-theme="dark"] .btn.empty-a{color:var(--link-tint)}

/* ===== v86 · content ===== (Website → Content — pages/lcontent.js and the editor pages/ldraft.js: one "What to do next" list in the shared row
   grid, a Documents table of ≤ 6 columns that wraps and never cuts a title, neutral chips for reasons and freshness — never a state colour —,
   coverage as parts and a band (never 100 as the goal), facts to check, provenance on a switch, and folds for Did it work? and Versions.
   At ≤ 900 px rows stack, the editor's top bar wraps and the side renders under the text; nothing disappears) */
.cn > .sv-tbl,.cn > .sv-one,.cn > .fd-sec,.cn > .cn-next,.cn > .hm-mf{margin-top:20px}
.cn .ag-in{color:var(--link-tint,var(--link));font-weight:var(--w-medium)}
@media (hover:hover){.cn .ag-in:hover{text-decoration:underline}}
/* the neutral chip: a reason, freshness, a kind of fact */
.cn-c{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 7px;border:1px solid var(--ln);border-radius:var(--r-full);font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-2);white-space:nowrap;background:transparent;vertical-align:1px}
.cn-c > svg{color:var(--fg-4)}
.dp-l > .cn-c{height:22px;padding:0 9px;font-size:var(--t-co);line-height:var(--lh-co)}
/* What to do next — the shared row grid; titles and reasons wrap */
.cn-next .mn-g,.cn .fd-sec .mn-g{grid-template-columns:150px minmax(0,1fr) auto 14px}   /* v86 fix (CX16): the kit's columns, as Health and Topics */
.cn-next .mn-g .k,.cn .fd-sec .mn-g .k{white-space:normal;text-wrap:pretty}
.cn-next .mn-g .u,.cn .fd-sec .mn-g .u{white-space:normal;overflow:visible;text-overflow:clip;text-wrap:pretty;line-height:20px}
.cn-next .mn-g .u b{font-weight:var(--w-medium);color:var(--fg-2)}
.cn-next .mn-g.is-static,.cn .fd-sec .mn-g.is-static{cursor:default}
@media (hover:hover){.cn-next .mn-g.is-static:hover,.cn .fd-sec .mn-g.is-static:hover{background:transparent}}
.cn-next .mn-g-st,.cn .fd-sec .mn-g-st{flex-wrap:wrap}
.cn-next .hm-mf{margin:4px 0 10px}
.cn-more{margin:10px 0 0}
.cn-pair{display:inline-flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.cn-cap{display:flex;align-items:flex-start;gap:4px;margin:0 0 10px;text-wrap:pretty}
.cn-cap > svg{flex:none;margin-top:3px;color:var(--fg-4)}
.cn-foot{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px}
.cn-pad{padding:6px 0 4px}
/* the Documents table: titles and addresses wrap, numbers stay on one line */
.cn-docs .tbl-r,.cn-arch .tbl-r{min-height:52px;padding-top:7px;padding-bottom:7px;align-items:start}
.cn-docs .tbl-h,.cn-arch .tbl-h{align-items:end;padding-bottom:6px;height:auto;min-height:32px}
.cn-docs .tbl-r > *{padding-top:2px}
.cn-docs .k2,.cn-arch .k2{display:flex;flex-direction:column;gap:2px;min-width:0}
.cn-docs .k,.cn-arch .k{color:var(--fg);font-weight:var(--w-medium);white-space:normal;overflow-wrap:anywhere;text-wrap:pretty}
.cn-docs .u,.cn-arch .u{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);text-wrap:pretty}
.cn-docs .tbl-r[role="link"]{cursor:pointer}
@media (hover:hover){.cn-docs .tbl-r[role="link"]:hover{background:var(--hover-solid)}}
.cn-docs a.c-goes{color:inherit;text-decoration:underline;text-decoration-color:var(--ln);text-underline-offset:2px}
@media (hover:hover){.cn-docs a.c-goes:hover{color:var(--link-tint,var(--link));text-decoration-color:currentColor}}
.cn-cl{min-width:0;font-size:var(--t-body);line-height:20px;color:var(--fg-2)}
.cn-docs .num{white-space:nowrap;text-align:right;font-variant-numeric:tabular-nums}
.cn-st,.cn-res{display:inline-flex;align-items:center;flex-wrap:wrap;gap:4px 6px}
.cn-in,.cn-rw{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.cn-upd{font-variant-numeric:tabular-nums}
.cn-bar{flex-wrap:wrap;row-gap:8px;margin-bottom:6px}
.cn-arch .tbl-r{min-height:46px}
.cn-arch .num{white-space:nowrap;text-align:right}
/* titles and descriptions */
.sn-g{margin-top:4px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);text-wrap:pretty}
.cn-titles .sn-pg .f-t{white-space:normal;overflow:visible;text-overflow:clip}
/* brand voice */
.cn-voice .vo{padding:16px 0 4px;max-width:880px}
.cn-voice .vo-src{flex-wrap:wrap;row-gap:8px}
.vo-rules{display:flex;flex-direction:column;gap:6px}
.vo-rules input,.cn-voice .vo-f > input{height:32px;padding:0 10px;border:1px solid var(--ln);border-radius:var(--r-8);background:var(--lvl-0);color:var(--fg);font:inherit;font-size:var(--t-body)}
.vo-conf{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:8px 10px;border:1px solid var(--ln);border-radius:var(--r-8);background:var(--bg-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);max-width:640px}
/* new document */
.nd-hit{display:flex;flex-direction:column;gap:10px;padding:12px 14px;border:1px solid var(--ln);border-radius:var(--r-12);background:var(--bg-2);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.nd-hit p{margin:0;text-wrap:pretty}
.nd-hit b{color:var(--fg);font-weight:var(--w-medium)}
.nd-hit .vo-f{grid-template-columns:180px minmax(0,1fr)}
.nd-hit textarea{width:100%;padding:8px 10px;border:1px solid var(--ln);border-radius:var(--r-8);background:var(--lvl-0);color:var(--fg);font:inherit}
.nd-note{display:flex;align-items:flex-start;gap:6px;margin:0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
/* ---- the editor ---- */
.edp .cn-ex{margin:14px 18px 0}
.edp .cn-ex b{font-weight:var(--w-semibold);color:var(--fg)}
.cn-since{margin:14px 18px 0;padding:12px 16px;box-shadow:none;border:1px solid var(--ln-2);background:var(--bg-2)}
.cn-since-hd{display:flex;align-items:center;gap:6px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg)}
.cn-since-hd > svg{color:var(--fg-3)}
.cn-since-hd b{font-weight:var(--w-semibold)}
.cn-since-hd span{color:var(--fg-3)}
.cn-since ul{margin:8px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:4px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.cn-since li b{font-weight:var(--w-medium);color:var(--fg)}
/* coverage: the parts, then the number on a band — never a dial to 100 */
.cv .dp-k{display:flex;align-items:center;gap:6px}
.cv .dp-k .sv-i{width:20px;height:20px}
.cv-bar{position:relative;height:8px;margin-top:10px;border-radius:var(--r-full);background:var(--bg-3,var(--ln-2));overflow:visible}
.cv-band{position:absolute;top:0;bottom:0;border-radius:var(--r-full);background:color-mix(in srgb,var(--c-green) 28%,transparent)}
.cv-top{position:absolute;top:2px;bottom:2px;border-radius:var(--r-full);background:color-mix(in srgb,var(--fg-3) 45%,transparent)}
.cv-you{position:absolute;top:-3px;width:3px;height:14px;margin-left:-1px;border-radius:2px;background:var(--fg)}
/* facts to check */
.fc{display:flex;flex-direction:column;gap:8px;margin:0 0 12px;padding:10px 12px;border:1px solid var(--ln);border-radius:var(--r-12);background:var(--bg-2)}
.fc-hd{display:flex;flex-direction:column;gap:1px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.fc-hd b{font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg);font-weight:var(--w-semibold)}
.fc-i{display:flex;flex-direction:column;gap:4px;padding-top:8px;border-top:1px solid var(--ln-2)}
.fc-t{font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg);text-wrap:pretty}
.fc-y{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);text-wrap:pretty}
.fc-b{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.fc-s{display:flex;align-items:center;gap:4px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.fc-i.is-done .fc-t{color:var(--fg-2)}
.fc-ed{display:flex;flex-wrap:wrap;gap:6px}
.fc-ed input{flex:1 1 160px;min-width:0;height:30px;padding:0 8px;border:1px solid var(--ln);border-radius:var(--r-8);background:var(--lvl-0);color:var(--fg);font:inherit;font-size:var(--t-co)}
/* checks and the AI-answers checklist — words, never a colour that means a state */
.cn-ck{flex:none;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-3);white-space:nowrap}
.cn-ck.is-ok{color:var(--fg-2)}
.cn-ck.is-bad{color:var(--fg)}
.ai5-i{display:flex;align-items:flex-start;gap:8px;padding:6px 2px;border-bottom:1px solid var(--ln-2)}
.ai5-i:last-child{border-bottom:0}
.ai5-i > svg{flex:none;margin-top:3px;color:var(--fg-4)}
.ai5-i.is-ok > svg{color:var(--fg-2)}
.ai5-i.is-ok .td-t{color:var(--fg-2)}
/* provenance — who wrote each part, on a switch */
.dp-prov{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border:1px solid var(--ln);border-radius:var(--r-8);background:transparent;color:var(--fg-2);font:inherit;font-size:var(--t-co);cursor:pointer;white-space:nowrap}
.dp-prov[aria-pressed="true"]{background:var(--bg-2);color:var(--fg);border-color:var(--fg-4)}
.dp-doc [data-prov]{position:relative;padding-left:12px;border-left:2px solid var(--ln)}
.dp-doc [data-prov]::after{content:"";display:block}
.dp-doc [data-prov="dp"]{border-left:2px solid var(--fg-3)}   /* v86 fix (CX18): neutral marks — the words say who */
.dp-doc [data-prov="you"]{border-left:3px dotted var(--fg-2)}
.dp-doc [data-prov="orig"]{border-left:2px dashed var(--ln)}
/* did it work? · versions */
.dw-bd,.vs-bd{display:flex;flex-direction:column;gap:8px;padding-bottom:4px}
.dw-dl{display:flex;flex-direction:column;gap:6px;margin:0}
.dw-dl div{display:grid;gap:8px;grid-template-columns:96px minmax(0,1fr)}
.dw-dl dt{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.dw-dl dd{margin:0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);text-wrap:pretty}
.dw-m{display:flex;align-items:flex-start;gap:6px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.vs-i{display:flex;align-items:flex-start;gap:8px;padding:6px 0;border-bottom:1px solid var(--ln-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.vs-i b{color:var(--fg);font-weight:var(--w-medium)}
.cn-sel{height:28px;max-width:100%;padding:0 6px;border:1px solid var(--ln);border-radius:var(--r-8);background:var(--lvl-0);color:var(--fg);font:inherit;font-size:var(--t-co)}
/* what changes: the size of the edit and the date choice */
.df-date{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin:4px 0 14px;padding:10px 12px;border:1px solid var(--ln-2);border-radius:var(--r-12);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.df-date b{color:var(--fg);font-weight:var(--w-medium)}
.df-date .td-y{flex-basis:100%}
.cn-gcl{display:flex;align-items:center;flex-wrap:wrap;gap:4px}
.dp-foot{padding:0 4px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
@media (max-width:1320px){.cn-next .mn-g,.cn .fd-sec .mn-g{grid-template-columns:130px minmax(0,1fr) auto 14px}}
@media (max-width:900px){
  /* nothing disappears: the rows stack — state, then the words, then the button */
  .cn-next .mn-g,.cn .fd-sec .mn-g{grid-template-columns:minmax(0,1fr) 14px;grid-template-areas:"st ch" "k ch" "b ch";row-gap:6px}
  .cn-next .mn-g > .mn-g-st,.cn .fd-sec .mn-g > .mn-g-st{display:flex;grid-area:st}
  .cn-next .mn-g > .mn-g-st:empty,.cn .fd-sec .mn-g > .mn-g-st:empty,.cn-next .mn-g > .mn-g-b:empty,.cn .fd-sec .mn-g > .mn-g-b:empty{display:none}
  .cn-next .mn-g > .k2,.cn .fd-sec .mn-g > .k2{grid-area:k}
  .cn-next .mn-g > .mn-g-b,.cn .fd-sec .mn-g > .mn-g-b{display:flex;grid-area:b;justify-content:flex-start}
  .cn-next .mn-g > :last-child,.cn .fd-sec .mn-g > :last-child{grid-area:ch}
  .cn-docs .tbl-h,.cn-arch .tbl-h{display:none}
  .cn-docs .tbl-r,.cn-arch .tbl-r{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:8px;padding-top:10px;padding-bottom:10px}
  .cn-docs .tbl-r > .k2,.cn-arch .tbl-r > .k2{grid-column:1 / -1}
  .cn-cl::before,.cn-docs .num::before,.cn-arch .num::before{content:attr(data-l);display:block;font-size:var(--t-sh);line-height:1.3;color:var(--fg-3);font-weight:var(--w-medium)}
  .cn-docs .num,.cn-arch .num{text-align:left}
  .nd-hit .vo-f{grid-template-columns:1fr}
  /* the editor: the top bar wraps, the side renders under the text */
  .edp .dp-grid,.edp .dp-grid.has-dz{grid-template-columns:minmax(0,1fr);padding-right:0}
  .edp .dp-side{position:static;max-height:none;overflow:visible}
  .edp .dp-grid.has-dz .dp-side{display:flex}}
.cn-docs .k > :first-child,.cn-arch .k > :first-child,.cn-docs .u,.cn-arch .u{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
/* the side's tab content shares the class name .pn with the v82 shell's sliding panel — undo the panel's width, colour and edge here */
.dp-side .pn,.app.pn-closed .dp-side .pn,.app.v82 .dp-side .pn{position:static;inset:auto;z-index:auto;box-shadow:none;flex:1 1 auto;width:auto;min-height:0;overflow:visible;background:transparent;border-right:0;visibility:visible;animation:none}
.dp-tools .dp-prov{display:inline-flex;align-items:center;gap:6px;width:auto;min-width:0;height:28px;padding:0 10px;border:1px solid var(--ln);white-space:nowrap;flex:none}
.dp-tools .dp-prov[aria-pressed="true"]{background:var(--bg-2);color:var(--fg);border-color:var(--fg-4)}
/* the editor's tables wrap their words instead of running past the text column (nothing cut) */
.dp-doc.md td,.dp-doc.md th,.df-b.md td,.df-b.md th{white-space:normal;overflow-wrap:break-word;word-break:normal}
.dp-doc.md td:not(:first-child),.dp-doc.md th:not(:first-child){min-width:4.5em}
.dp-doc.md table td:first-child,.dp-doc.md table th:first-child{min-width:7em}
.cn-vn{display:block;flex-basis:100%;text-wrap:pretty}
/* the tabs and "New document" share one rule; when they don't fit, the button moves under the tabs (nothing is cut) */
.cn .pl-bar{flex-wrap:wrap;row-gap:6px}
.cn .pl-bar .pl-tabs{flex:0 1 auto;min-width:0;flex-wrap:wrap}
@media (max-width:1100px){.cn .pl-bar > .grow{display:none}.cn .pl-bar > .btn{margin:4px 0 8px}}

/* ===== v86 fix · content (CX1–CX20, 2026-10-02) ===== one stake per row, Your facts, the refresh card, facts to check in words, provenance in words,
   one label grid in "Did it work?", the editor's links and H2, nothing hidden or clamped at 1280 / 900 */
.cn-sk.is-none{color:var(--fg-3)}
.hm-tools > .btn.sm{white-space:nowrap}
/* the fold's rows start where the list's rows start (no extra inset) */
.cn .fd-sec.is-fold.is-open > .fd-bd{padding-left:18px;padding-right:18px}
/* Your facts (Brand voice and facts) */
.yf-list{display:flex;flex-direction:column;gap:6px;min-width:0}
.yf-r{display:flex;align-items:center;gap:6px;min-width:0}
.yf-r > input{flex:1 1 auto;min-width:0;height:32px;padding:0 10px;border:1px solid var(--ln);border-radius:var(--r-8);background:var(--lvl-0);color:var(--fg);font:inherit;font-size:var(--t-body)}
.yf-add{align-self:flex-start}
.yf-conf{margin:4px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);text-wrap:pretty}
/* Brand voice: one field radius */
.cn-voice .vo-f textarea,.cn-voice .vo-f input[type=text]{border-radius:var(--r-8)}
/* New document: the approval promise stays visible at every width */
.nd-acts .ap-note{display:inline;margin-left:6px}
@media (max-width:1320px){.nd-acts .ap-note{display:inline}}
/* the editor: links look like links; H2 above H3; the AI-answers checklist is never cut */
.edp .ag-in{color:var(--link-tint,var(--link));font-weight:var(--w-medium)}
@media (hover:hover){.edp .ag-in:hover{text-decoration:underline}}
.dp-doc.md h2{margin:14px 0 -2px;font-size:var(--t-t2);line-height:var(--lh-t2);letter-spacing:var(--ls-t2)}
/* facts to check: the value in bold; a warning before Remove takes more than its clause */
.fc-t b{font-weight:var(--w-semibold)}
.fc-in{color:var(--fg-3)}
.fc-warn{display:flex;flex-direction:column;gap:6px;padding:8px 10px;border:1px solid var(--ln);border-radius:var(--r-8);background:var(--lvl-0);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
/* the refresh Dottpace prepared */
.cn-rf{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin-top:10px;padding-top:10px;border-top:1px solid var(--ln-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.cn-rf b{color:var(--fg);font-weight:var(--w-semibold)}
/* who wrote what — a legend above the text and the label on hover / where the caret is */
.pv-leg{display:flex;flex-wrap:wrap;gap:6px 16px;margin:2px 0 8px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.pv-leg[hidden]{display:none}
.pv-k{display:inline-flex;align-items:center;gap:6px}
.pv-k i{display:inline-block;width:3px;height:14px;border-left:2px solid var(--fg-3)}
.pv-k.is-you i{border-left:3px dotted var(--fg-2)}
.pv-k.is-orig i{border-left:2px dashed var(--ln)}
.dp-doc [data-prov]:hover::before,.dp-doc [data-prov][data-at]::before{content:attr(data-prov-l);position:absolute;left:12px;top:-15px;padding:0 4px;border-radius:var(--r-4,4px);background:var(--bg);font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-2);pointer-events:none;z-index:1}
/* Did it work? and Versions: the same card as the side's cards, one border, one label grid */
.dw,.vs{display:flex;flex-direction:column;gap:6px;padding:4px 20px 12px;border-radius:var(--r-card);background:var(--bg);box-shadow:var(--sh-tiny);border:1px solid var(--bd-tl)}
.dw > .dn-hd,.vs > .dn-hd{border-top:0;padding-top:8px}
.dw-dl dd .cn-c{margin-right:4px}
/* the reason Approve waits sits next to it at 900 */
.dp-why{flex:1 1 100%;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);text-align:right}   /* night fix (Oct 8): the blocker of a dimmed Approve is said on the screen, on desktop too */
@media (max-width:900px){
  .dp-why{display:block;flex:1 1 100%;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
  .yf-r{flex-wrap:wrap}}
/* a reason chip longer than the kit's state column wraps inside it — it never runs into the title */
.cn-next .mn-g-st .cn-c,.cn .fd-sec .mn-g-st .cn-c{max-width:100%;height:auto;min-height:20px;padding:2px 7px;white-space:normal;line-height:16px}
.yf-x{flex:none;width:30px;padding:0;justify-content:center;color:var(--fg-2)}
.yf-x > svg{width:14px;height:14px;flex:none}
/* the Titles tab: nothing cut — the page's address, its clicks and the tag now are read in full at every width */
.cn-titles .sn-pg .f-s,.cn-titles .sn-now,.cn-titles .sn-g{display:block;-webkit-line-clamp:unset;overflow:visible;white-space:normal;overflow-wrap:anywhere}
.cn-titles .sn-pg .f-s > span{display:inline;white-space:normal}
/* check rows can't open, so their reason is never cut */
.edp .ck-list .td-y{display:block;-webkit-line-clamp:unset;overflow:visible}
/* the editor's top bar: the state, the two views and the actions never overlap — when they don't fit on one line the actions move under, right-aligned */
.edp .dp-top{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}
.edp .dp-top > .dp-l{flex:0 0 auto;min-width:0}
.edp .dp-top > .dp-r{flex:1 1 auto;justify-content:flex-end;flex-wrap:wrap}
@media (max-width:900px){.edp .dp-top > .dp-l{flex-wrap:wrap;flex:1 1 100%}.edp .dp-top > .dp-r{justify-content:flex-start}}

/* ===== v87 · experience ===== (Website → Experience — pages/lexperience.js; Health's kit (.hx-*) for the head, the row grid, the clocks and the
   lifecycle: the coverage line, the funnel with what each step keeps of the one before, field and split tables, the comparisons through the
   sample-size gate, examples that are never counts. Quiet outline chips only — never a state colour) */
.ex .ex-cov{padding:10px 16px 12px}
.ex .ex-cov .ai-mline{align-items:flex-start;flex-wrap:nowrap;margin-top:4px}
.ex .ex-cov .ai-mline:first-child{margin-top:0}
.ex .ex-cov .ai-mline > svg{margin-top:1px}
.ex-key .tbl{margin-top:2px}
.ex-fn .tbl-r{min-height:44px;padding-top:6px;padding-bottom:6px}
.ex-fn .tbl-r .k2{display:flex;flex-direction:column;gap:1px;min-width:0}
.ex-fn .tbl-r .k{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;color:var(--fg);font-weight:var(--w-medium);min-width:0;text-wrap:pretty}
.ex-fn .tbl-r .u{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);white-space:normal;text-wrap:pretty}
.ex-fn .tbl-r.is-out .k,.ex-fn .tbl-r.is-out .ex-n{font-weight:var(--w-semibold)}
.ex-fn .num{font-variant-numeric:tabular-nums}
.ex-n{color:var(--fg)}
.ex-pg{font-size:var(--t-co);line-height:var(--lh-co)}
a.hx-w.ex-xs{height:18px;padding:0 6px;font-size:var(--t-sh);line-height:16px;cursor:pointer;text-decoration:none}
@media (hover:hover){a.hx-w.ex-xs:hover{border-color:var(--fg-4);color:var(--fg)}}
/* what a step keeps of the one before: a thin neutral bar and the share */
.ex-keep{display:grid;grid-template-columns:minmax(36px,120px) auto;align-items:center;column-gap:8px;font-variant-numeric:tabular-nums;color:var(--fg-2)}
.ex-keep > i{display:block;height:6px;border-radius:var(--r-full);background:var(--ln-2);overflow:hidden}
.ex-keep > i > b{display:block;height:100%;border-radius:var(--r-full);background:var(--fg-4)}
/* XF19: tables in one card are 28 px apart with a rule between them; a sub-table's heading reads as a heading, not a row */
.ex-blk{margin-top:28px;padding-top:18px;border-top:1px solid var(--ln-2)}
.ex-h3{display:flex;align-items:center;flex-wrap:wrap;gap:2px 6px;margin:0 0 10px;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg);text-wrap:pretty}
.ex-h3 > span{font-weight:var(--w-regular);color:var(--fg-3)}
.ex-note{display:block;margin:10px 0 0;text-wrap:pretty}
.ex-note > svg{vertical-align:-2px;color:var(--fg-4)}
.ex-gapn{color:var(--fg-2)}
.ex .sv-cap.ex-gapn{display:flex;align-items:flex-start;gap:6px}
.ex .sv-cap.ex-gapn > .ex-ic{margin-top:2px}
.ex-also{margin:8px 0 0;font-size:var(--t-body);line-height:20px;color:var(--fg-2);text-wrap:pretty}
.ex-also b{font-weight:var(--w-medium);color:var(--fg)}
.ex-lnk{border:0;background:none;padding:0;font:inherit;color:var(--link-tint,var(--link));font-weight:var(--w-medium);cursor:pointer}
@media (hover:hover){.ex-lnk:hover{text-decoration:underline}}
.ex-gw{white-space:normal;text-wrap:pretty;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.ex-cmp{margin:10px 0 0;font-size:var(--t-body);line-height:20px;color:var(--fg-2);text-wrap:pretty}
.ex-cmp b{font-weight:var(--w-medium);color:var(--fg)}
.ex-chart{margin-top:12px}
.ex-fb{display:flex;flex-direction:column;gap:8px}
.ex-fb .mn-g{margin-top:4px}
/* one stuck point: the comparisons, each through the gate */
/* XF19: one grid, no rule of its own on top (the card header's rule is the only one) */
.ex-cmps{display:flex;flex-direction:column}
.ex-cmpr{display:grid;grid-template-columns:minmax(150px,.8fr) minmax(0,2fr);column-gap:16px;padding:10px 0;border-bottom:1px solid var(--ln-2);font-size:var(--t-body);line-height:20px}
.ex-cmpr:first-child{padding-top:2px}
.ex-cmpk{font-weight:var(--w-medium);color:var(--fg);text-wrap:pretty}
.ex-cmpv{color:var(--fg-2);text-wrap:pretty}
.ex-ml{margin:0;padding-left:18px;list-style:disc;display:grid;gap:6px;font-size:var(--t-body);line-height:20px;color:var(--fg-2)}
.ex-ml > li::marker{color:var(--fg-4)}
.ex-oth{margin:0}
.ex-ai{display:flex;align-items:flex-start;gap:6px;margin:10px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);max-width:80ch}
.ex-ai > svg{flex:none;margin-top:2px;color:var(--fg-4)}
.ex-seen{display:flex;align-items:flex-start;gap:6px;margin-top:8px}
.ex-seen > svg{flex:none;margin-top:4px;color:var(--fg-4)}
.ex-clips .mn-g{grid-template-columns:150px minmax(0,1fr) 0 0}
.ex-clips .mn-g .k{white-space:normal}
.ex-basis{color:var(--fg-3)}
.ex-ga,.ex-inwin{display:flex;align-items:flex-start;gap:6px;margin:6px 0 0;color:var(--fg-2);text-wrap:pretty}
.ex-ic{display:inline-flex;flex:none;margin-top:3px;color:var(--fg-4)}
.ex-one .hx-sec .hx-clks{margin-top:0}
.ex-one .hx-sec .hx-life{margin-top:0}
.ex-around .hx-ar > a.more{white-space:nowrap}
.ex-wk{margin-top:10px}
@media (max-width:1320px){.ex-fn .tbl-h,.ex-fn .tbl-r{column-gap:12px}.ex-clips .mn-g{grid-template-columns:130px minmax(0,1fr) 0 0}}
@media (max-width:900px){
  .ex-cmpr{grid-template-columns:1fr;row-gap:2px}
  .ex-keep{grid-template-columns:minmax(24px,60px) auto}
  .ex-sp.is-5 .tbl-h{display:none}
  .ex-sp.is-5 .tbl-r{grid-template-columns:minmax(0,1fr) auto auto auto;row-gap:4px}
  .ex-sp.is-5 .tbl-r > :last-child{grid-column:1 / -1}
  /* XF20: with the header hidden, each number says what it is — "937 checkouts · 371 ordered · 40%" */
  .ex-sp.is-5 .tbl-r > .ex-c[data-l]::after{content:" " attr(data-l);color:var(--fg-3)}
  .ex-sp.is-5 .tbl-r > .ex-c + .ex-c::before{content:"· ";color:var(--fg-4)}
  .ex-sp.is-5 .tbl-r > .ex-c{text-align:left}
  .ex-clips .mn-g{grid-template-columns:minmax(0,1fr)}}
.ex-blk.is-bare,.ex-blk:first-child{margin-top:0;padding-top:0;border-top:0}
/* a fold's summary wraps here — its one fact is never cut */
.ex .is-fold .fold-hd{padding-top:10px;padding-bottom:10px}
.ex .is-fold .fold-hd > h2{flex:none}
.ex .fold-s{white-space:normal;overflow:visible;text-overflow:clip;text-wrap:pretty}
.ex .hx-p a.more{display:inline-flex;align-items:center;gap:2px;white-space:nowrap}
/* ---- v87 fix round (FIX.md XF1, XF16, XF19–XF22): the section's one card system — the same values as styles/v92-website.css W8, which leaves
   Experience (.hx.ex) to this block: 22 px inside every card, so the leading icons and row text start at card + 23, the titles at card + 56, and
   every rule (the header's and each row's) starts at card + 15. The head: the tools share the title's line, the sentence runs under both. ---- */
.hx.ex > .sec.panel:not(.fd-sec):not(.hx-top){padding-left:22px;padding-right:22px}
.hx.ex > .sec.panel.mn-att{padding-top:16px;padding-bottom:12px}
.hx.ex > .fd-sec:not(.is-fold){padding:20px 22px 22px}
.hx.ex > .fd-sec.is-fold > .fold-hd{padding:0 18px 0 22px}
.hx.ex > .fd-sec.is-fold.is-open > .fd-bd{padding:4px 22px 0}
.hx.ex .is-fold .hx-fl{margin-left:0;margin-right:0}
.hx.ex .sec.panel > .sec-hd{margin-left:-8px;margin-right:-8px;padding-left:8px;padding-right:8px}
.hx.ex > .sec.panel.pt-card.sv-one{padding-top:14px;padding-bottom:14px}
/* XF16: a head sentence never leaves one word alone on its last line */
.ex .pl-s .ex-hs{text-wrap:balance}
.ex-one .fd-hd h1,.ex-one .fd-sum{text-wrap:pretty}
/* XF1: the coverage in one line, its (i) beside it */
.ex-covl{display:flex;align-items:flex-start;gap:6px;margin:14px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);text-wrap:pretty}
.ex-covl > svg{flex:none;margin-top:2px;color:var(--fg-4)}
.ex-covl > span{text-wrap:balance}
.ex-covl > .ib{flex:none;margin:-3px 0 -3px -2px}
.hx.ex > .ex-covl + .sec{margin-top:14px}
/* XF10: another market's stuck points, one line under the rows */
.ex-away{display:flex;align-items:flex-start;gap:6px;margin:10px 0 2px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.ex-away > svg{flex:none;margin-top:2px;color:var(--fg-4)}
.sv-one .ex-away{margin-top:6px}
/* the bar column's words (the field table's last row, a signup group read later) */
.ex-of{font-size:var(--t-co);line-height:var(--lh-co);white-space:normal;text-wrap:pretty}
/* XF22: the stuck step's row stands out; a chart's caption sits 8 px under its axis labels */
.ex-fn .tbl-r.is-hi{background:var(--bg-2);box-shadow:inset 2px 0 0 var(--fg-4)}
.ex .sv-cap.ex-ccap{display:block;margin-top:8px;padding-top:0}
.ex-chart.is-first{margin-top:0}
/* XF19 · "How the fix is judged": one 16 px gap between blocks, one measure for the words */
.ex-judged .fd-bd{display:flex;flex-direction:column;gap:16px}
.ex-judged .fd-bd > :is(p, ul){max-width:96ch;margin:0}
/* XF23: searches that found nothing — the search, how many, what it could open */
.ex-none .tbl-r .k{font-weight:var(--w-regular)}
.ex-act{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);white-space:normal}
.ex-fb > .ex-blk{margin-top:20px}
.ex .hx-p > .ib,.ex .ex-h3 > .ib{display:inline-flex;vertical-align:-3px;margin-left:2px}
/* XF16: a "›" more-link and a date range never break */
.ex a.more,.ex .hx-ar > a.more{white-space:nowrap}
.ex .sv-cap > a.more,.ex .ex-note > a.more{display:inline-flex;align-items:center;gap:2px;vertical-align:bottom;font-weight:var(--w-medium);color:var(--link-tint,var(--link))}
@media (max-width:900px){
  .ex .fd-sec .sec-hd.pt-hd > .n{padding-left:33px}}

/* ===== v88 · growth ===== (Growth → Traffic, Conversion and Goals — pages/lgrowth.js; Health's and Experience's kits (.hx-*, .ex-*) for the head,
   the row grid, the clocks and the pointers. Here: the tiles' provenance word, the coverage line, "What changed" in three blocks, dense tables that
   stack at 900 px with each value under its own label, the goal sheet. The page's root class is .grw (.gr is an old helper of its own); chips are
   quiet outlines — never a state colour; every number tabular) */
.grw .gr-top .kp-strip{margin-bottom:6px}
.grw .gr-top .ai-mline > svg{flex:none;margin-top:1px}
.grw .gr-top .ai-mline > span{text-wrap:pretty}
.grw .kp-s{white-space:normal;text-wrap:pretty}
.gr-pv{display:inline-flex;align-items:center;height:16px;padding:0 5px;border:1px solid var(--ln);border-radius:var(--r-4);font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-3);white-space:nowrap;cursor:help;vertical-align:1px}
@media (hover:hover){.gr-pv:hover{color:var(--fg-2);border-color:var(--fg-4)}}
.gr-chart{margin-top:6px}
.gr-chart .sv-cap{display:block;margin-top:8px}
/* "What changed": the arithmetic · the ledger around it · what was tested */
.gr-blk{margin-top:16px;padding-top:14px;border-top:1px solid var(--ln-2)}
.gr-chg .gr-blk:first-of-type,.gr-blk.is-first{margin-top:4px;padding-top:0;border-top:0}
.gr-h3{display:flex;align-items:center;flex-wrap:wrap;gap:4px 6px;margin:0 0 8px;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
.gr-h3 > svg{flex:none;color:var(--fg-4)}
.gr-h3s{font-weight:var(--w-regular);color:var(--fg-3)}
.gr-parts li{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:6px 0;border-bottom:1px solid var(--ln-2);font-size:var(--t-body);line-height:20px;color:var(--fg-2)}
.gr-parts li.is-tot{grid-column:1 / -1;border-bottom:0;color:var(--fg);font-weight:var(--w-semibold)}
.gr-n{font-variant-numeric:tabular-nums;color:var(--fg);font-weight:var(--w-medium);white-space:nowrap}
.gr-parts li.is-tot .gr-n{font-weight:var(--w-semibold)}
.gr-arith .sv-cap{display:block;margin-top:8px;text-wrap:pretty}
.gr-none{color:var(--fg-3)}
.gr-chg .mn-gl{margin-top:0}
/* tables: names wrap, numbers line up, calm words are grey */
.gr-tbl .tbl-r{min-height:48px;padding-top:7px;padding-bottom:7px}
.gr-tbl .tbl-r .k2{display:flex;flex-direction:column;gap:2px;min-width:0}
.gr-tbl .tbl-r .k{white-space:normal;overflow:visible;text-overflow:clip;text-wrap:pretty}
.gr-tbl .tbl-r .u{white-space:normal;overflow:visible;text-overflow:clip;text-wrap:pretty;line-height:18px}
.gr-c{font-variant-numeric:tabular-nums;color:var(--fg);min-width:0}
.gr-tbl .num.gr-c{text-align:right}
.gr-mv{text-align:right;white-space:normal;text-wrap:pretty;font-size:var(--t-body);line-height:18px}
.gr-mv.is-calm,.gr-c.is-calm{color:var(--fg-3);font-size:var(--t-co);line-height:var(--lh-co)}
.gr-gate{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);white-space:normal;text-wrap:pretty}
.gr-tbl .gr-tot .k,.gr-tbl .gr-tot .gr-c{font-weight:var(--w-semibold);color:var(--fg)}
.gr-tbl .gr-unseen .k{color:var(--fg-2)}
.gr-ptr{display:inline-flex;align-items:center;gap:1px;color:var(--link-tint,var(--link));font-weight:var(--w-medium);white-space:nowrap;text-decoration:none}
@media (hover:hover){.gr-ptr:hover{text-decoration:underline}}
.gr-ptr > svg{flex:none}
a.k.gr-lk{color:var(--fg);text-decoration:none}
@media (hover:hover){a.k.gr-lk:hover{text-decoration:underline}}
.gr-cap{display:block;margin-top:8px;text-wrap:pretty}
.gr-url{display:block;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);overflow-wrap:anywhere}
.gr-parts-l{margin-top:8px}
.gr-around .hx-ar > a.more{white-space:nowrap}
.gr-cmp{cursor:help}
/* goals: the status in words (a quiet chip), the sheet */
.hx-w.gr-st{color:var(--fg)}
.gr-starters .mn-g,.grw .is-fold .mn-g{cursor:default}
@media (hover:hover){.gr-starters .mn-g:hover,.grw .is-fold .mn-g:hover{background:transparent}}
.gr-sheet{padding:16px 20px 16px;margin-top:16px}
.gr-sheet .sec-hd{margin-bottom:6px}
.gr-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 18px;margin-top:8px}
.gr-f{display:flex;flex-direction:column;gap:5px;min-width:0}
.gr-form > .gr-f:first-child{grid-column:span 2}
.gr-fl{font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-2)}
.gr-fh{font-size:var(--t-sh);line-height:1.3;color:var(--fg-3)}
.gr-in,.gr-sel{height:32px;width:100%;min-width:0;padding:0 10px;border:1px solid var(--ln);border-radius:var(--r-8);background:var(--lvl-0,var(--bg));color:var(--fg);font:inherit;font-size:var(--t-body)}
.gr-ro{display:flex;align-items:center;min-height:32px;font-size:var(--t-body);line-height:20px;color:var(--fg-2);text-wrap:pretty}
.gr-warn,.gr-err{display:flex;align-items:flex-start;gap:6px;margin:12px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);text-wrap:pretty}
.gr-warn > svg{flex:none;margin-top:1px;color:var(--fg-4)}
.gr-err{color:var(--neg)}
.gr-sheet .hm-mf-f{display:flex;align-items:center;gap:8px;margin-top:16px}
.gr-one .hx-sec .chart{margin-top:4px}
.gr-one .hx-p + .sv-cap,.gr-one .sv-cap + .sv-cap{display:block;margin-top:6px}
@media (max-width:1320px){.grw .kp-strip.is-6 .kp{padding-left:12px;padding-right:12px}}
@media (max-width:900px){
  /* nothing is cut: a row stacks — the name first, then each value under its own label */
  .gr-tbl .tbl-h{display:none}
  .gr-tbl .tbl-r > .k2{grid-column:1 / -1}
  .gr-tbl .gr-c::before{content:attr(data-l);display:block;font-size:var(--t-sh);line-height:1.3;color:var(--fg-4);font-weight:var(--w-medium)}
  .gr-tbl .num.gr-c,.gr-tbl .gr-mv{text-align:left}
  .grw .kp-strip.is-6,.grw .kp-strip.is-5{grid-template-columns:repeat(3,minmax(0,1fr))}
  .grw .kp-strip.is-6 > .kp:nth-child(4),.grw .kp-strip.is-5 > .kp:nth-child(4){border-left:0}
  .grw .kp-strip.is-6 > .kp:nth-child(n+4),.grw .kp-strip.is-5 > .kp:nth-child(n+4){border-top:1px solid var(--ln-2)}
  .gr-form{grid-template-columns:repeat(2,minmax(0,1fr))}
  }

/* ===== v88 · growth (G2) ===== (Growth → Revenue and Products by type, their records, the retention work — pages/lgrowth2.js. Everything else is
   G1's block above and Health's / Experience's kits: the page root is the same .grw (plus .gr2). Here: a small second line under a number in a
   table cell, the second arithmetic list ("the same change, by customer"), a tool's claim beside the number, the stock chip, the one-tap outcome
   marks (never hidden at 900 px), the band on the work page. Chips are quiet outlines — never a state colour; numbers tabular) */
.gr-sub{display:block;margin-top:1px;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-regular);color:var(--fg-3);white-space:normal;text-wrap:pretty}
.gr-tbl .num.gr-c .gr-sub{text-align:right}
.gr-parts2 li{color:var(--fg-2)}
.gr-calm{color:var(--fg-4)}
.gr-st2 .lbl{text-wrap:pretty}
.gr-act{display:flex;justify-content:flex-end;min-width:0}
.gr-claim{margin-top:14px;padding-top:12px;border-top:1px solid var(--ln-2)}
.gr-claim .hx-p{margin:0;text-wrap:pretty}
.gr-claim .hx-p + .gr-pv{margin-top:6px}
.hx-w.gr-stock{height:18px;padding:0 6px;font-size:var(--t-sh);line-height:16px;font-weight:var(--w-regular);color:var(--fg-3);font-variant-numeric:tabular-nums}
.gr-tbl .tbl-r .u .hx-w.gr-stock{vertical-align:0}
/* bar charts (the offers, an article's two numbers) — the same bars Local, Mentions and AI Search scope to their own pages */
.grw .chart-bar .chart-plot > .bars{position:absolute;inset:0}
.grw .chart-bar .bar-g{position:absolute;top:0;bottom:0;display:flex;align-items:flex-end;justify-content:center;gap:3px;padding:0 4px}
.grw .chart-bar .bar-el{flex:0 1 44px;border-radius:4px 4px 0 0;min-height:2px;display:block;transition:opacity var(--dur-1) var(--ease-out)}
.grw .chart-bar .chart-plot:hover .bar-el{opacity:.55}
.grw .chart-bar .bar-g:hover .bar-el{opacity:1}
.grw .chart-bar .ccol.is-bar{transform:none}
.grw .chart-bar .ccol.is-bar:hover{background:var(--bg-tl);border-radius:6px 6px 0 0}
/* the one-tap outcome marks: four quiet buttons, never a coloured verdict — v88 fix (GF19): the kit's 150/130 columns, like every other list */
.gr-mk .mn-g{cursor:default}
@media (hover:hover){.gr-mk .mn-g:hover{background:transparent}}
.gr-mkb{display:inline-flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px}
.gr-mkb .btn.sm{height:26px;padding:0 9px}
/* the retention work page: what Growth judges the work on, above the editor — v88 fix (GF14): the cards' 22 px */
.gr-band{padding:16px 22px 18px;margin:0 0 14px}
.gr-band .sec-hd{margin-bottom:4px}
.gr-band > .sec-hd{margin-left:-8px;margin-right:-8px;padding-left:8px;padding-right:8px}   /* its rule at card + 15, like every card's */
.gr-band .hx-p{margin:6px 0 0;text-wrap:pretty}
.gr-band .hx-clkb.gr-clk{margin-top:10px;padding-top:10px;border-top:1px solid var(--ln-2)}
.gr-band .gr-ptr{margin-left:2px}
@media (max-width:900px){
  .gr-tbl .num.gr-c .gr-sub{text-align:left}
  .gr-mk .mn-g{grid-template-columns:minmax(0,1fr);row-gap:6px}
  .gr-mk .mn-g .mn-g-st,.gr-mk .mn-g .mn-g-b{display:flex}
  .gr-mk .mn-g .mn-g-b{justify-content:flex-start}
  .gr-mkb{justify-content:flex-start}
  .gr-band .hx-clkb-r{grid-template-columns:minmax(0,1fr)}}

/* ===== v88 fix · growth (GF14–GF26, 2026-10-03) — still Growth's own block; ui/meters.js's counters follow at its end =====
   One card system (kitCard: icon + title at card + 56, 22 px), the tabs right above their table, the 150/130 rows, the table gutters, the legend
   with line samples, markers under tooltips, and the counters — rings for goals, bars for time, meters for samples (the premium-design study 01) */
/* the head tools: Ask · Share · the period with its comparison · the market (ui/ptools headTools) */
.gr-per{display:inline-flex;align-items:center;gap:4px}
.gr-gtools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.gr-gtools > .hm-tools{margin:0}
/* GF18: the tabs sit right above the table they switch — 24 px from the card above, 12 px to the table */
.grw > .gr-tabs{margin-top:24px}
.grw > .gr-tabs .pl-bar{margin:0}
.grw > .gr-tabs + .sec{margin-top:12px}
/* GF23: a link's chevron never sits alone on a line */
.grw a.more,.grw .gr-ptr{display:inline-flex;align-items:center;gap:2px;white-space:nowrap;vertical-align:bottom}
/* "What changed": 2 ledger rows and "N more"; what was tested folds to its count */
.gr-more{display:inline-flex;align-items:center;gap:4px;margin:6px 0 0;padding:4px 0;font:inherit;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--link-tint,var(--link));background:none;border:0;cursor:pointer}
@media (hover:hover){.gr-more:hover{text-decoration:underline}}
button.gr-h3.gr-tg{width:100%;margin:0;padding:2px 0;background:none;border:0;font:inherit;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg);text-align:left;cursor:pointer;flex-wrap:nowrap}
.gr-tg > .grow{flex:1}
.gr-tg > svg:last-child{color:var(--fg-3)}
.gr-tfold .mn-gl{margin-top:8px}
/* GF25: the arithmetic — labels never wrap beside their numbers; two parts never leave an empty third column */
.gr-parts{list-style:none;margin:0;padding:0;display:grid;column-gap:28px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.gr-parts.is-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.gr-parts li > span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gr-subh{font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-3);margin:14px 0 2px}
/* GF20: a 24–32 px gutter where a right-aligned number meets left-aligned words (16 px column gap + 12) */
.gr-tbl.g2 :is(.tbl-h,.tbl-r) > :nth-child(2),.gr-tbl.g3 :is(.tbl-h,.tbl-r) > :nth-child(3),.gr-tbl.g4 :is(.tbl-h,.tbl-r) > :nth-child(4),.gr-tbl.g5 :is(.tbl-h,.tbl-r) > :nth-child(5),.gr-tbl.g6 :is(.tbl-h,.tbl-r) > :nth-child(6){padding-left:12px}
/* GF20: headers in at most two lines; numbers right, words left — "—" where its column's words start */
.gr-tbl .tbl-h{height:auto;min-height:32px;padding-top:6px;padding-bottom:6px;align-items:end}
.gr-tbl .tbl-h > *{line-height:16px;text-wrap:balance}
.gr-tbl .gr-c:not(.num){text-align:left}
/* GF20: a state never wraps ("Waiting for approval" on one line) */
.gr-st2 .lbl,.gr-tbl .lbl{white-space:nowrap}
/* GF24: the legend draws each line as it is — solid or dashed, in its own colour; markers never cover a tooltip */
.gr-lgd{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.gr-lgd > span{display:inline-flex;align-items:center;gap:7px}
.gr-lsw{display:inline-block;width:18px;height:0;border-top:2px solid var(--c);border-radius:1px}
.gr-lsw.is-dash{border-top-style:dashed}
.grw .ccol:hover{z-index:6}
.grw .chart .annot-n{z-index:3}
/* GF19 · GF26: the goals list — the ring in the state column, the words, the countdown and Open on the right */
.gr-goals .mn-g{min-height:76px;padding-top:10px;padding-bottom:10px}
.gr-goals .mn-g .mn-g-st,.gr-starters .mn-g .mn-g-st{display:flex;align-items:center}
.gr-goals .mn-g .u{white-space:normal;line-height:20px}
.gr-stw{font-weight:var(--w-semibold);color:var(--fg)}
.gr-gb{display:inline-flex;align-items:center;gap:10px}
.m-cd.gr-next{margin-right:4px}
/* the goal record: the big ring beside the title; the answer (behind, by how much) up here */
.gr-ghd{display:grid;grid-template-columns:120px minmax(0,1fr);column-gap:24px;align-items:start}
.gr-ghd-r{padding-top:4px}
.gr-ghd-t{min-width:0}
.gr-ghd .fd-labels{flex-wrap:wrap}
.gr-pace{margin:8px 0 0;font-size:var(--t-body);line-height:20px;color:var(--fg-2);text-wrap:pretty}
.gr-pace b{font-weight:var(--w-semibold);color:var(--fg)}
.gr-pace.is-behind b{color:var(--warn)}
.gr-ghd .hx-stake .ib{display:inline-flex;vertical-align:-3px;margin-left:4px}
/* what drives the gap: the change right-aligned in its own column, tabular */
.gr-drive .mn-g .mn-g-b{justify-content:flex-end;min-width:96px;text-align:right}
.gr-dv{color:var(--fg);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:var(--t-body);line-height:20px;font-weight:var(--w-semibold)}
/* the first days, the work page's clock, the history before a first-year number */
.gr-young{color:var(--fg-2);display:flex;flex-direction:column;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid var(--ln-2)}
.gr-young .m-clock{max-width:420px}
.gr-yclk{margin-top:12px}.gr-yclk .m-clock{max-width:420px}
.sec.panel.gr-yclk{padding:16px 22px}
.gr-ltv{margin-top:14px;padding-top:12px;border-top:1px solid var(--ln-2);display:grid;gap:8px}.gr-ltv .m-clock{max-width:360px}
.gr-bclk{margin-top:12px;max-width:520px}
.sec.panel.gr-meter{padding:14px 22px}
.gr-gate .m-meter.is-inline{margin:0}
@media (max-width:900px){
  .gr-ghd{grid-template-columns:minmax(0,1fr);row-gap:12px}
  .gr-gb{gap:8px;flex-wrap:wrap}
  .gr-tbl .tbl-r{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:8px;padding-top:10px;padding-bottom:10px;align-items:start}
  .gr-tbl :is(.tbl-h,.tbl-r) > :nth-child(n){padding-left:0}
  .gr-parts.is-2{grid-template-columns:minmax(0,1fr)}
  .gr-parts li > span{white-space:normal}}

/* ===== v88 fix · ui/meters.js — rings for goals, bars for time, meters for samples (the premium-design study 01 §4; the premium pass refines it) =====
   Every colour is a token, so light and dark flip together; nothing loops; the ring draws once (600 ms, no bounce), reduced motion → at once */
.m-ring{position:relative;display:inline-grid;place-items:center;flex:none;vertical-align:middle}
.m-ring > .m-svg{position:absolute;inset:0;transform:rotate(-90deg);overflow:visible}
.m-ring .m-t{stroke:var(--m-track)}
.m-ring.is-stale .m-t{stroke-dasharray:2 3}
.m-ring .m-s{stroke:var(--m-short)}
.m-ring .m-f{stroke:var(--m-fill);stroke-dasharray:var(--p) 100}
.m-ring.is-done .m-f{stroke:var(--m-done)}
.m-ring.is-stale .m-f{stroke:var(--fg-4)}
.m-ring .m-halo{stroke:var(--m-halo)}
.m-ring .m-tick{stroke:var(--m-tick)}
.m-ring.m-draw:not(.m-run) .m-f{stroke-dasharray:0 100}
.m-ring.m-draw:not(.m-run) :is(.m-s,.m-tick,.m-halo){opacity:0}
.m-ring.m-run .m-f{animation:m-draw var(--dur-draw) var(--m-ease) both}
.m-ring.m-run :is(.m-s,.m-tick,.m-halo){animation:m-fade var(--dur-2) linear calc(var(--dur-draw) * .75) both}
@keyframes m-draw{from{stroke-dasharray:0 100}}
@keyframes m-fade{from{opacity:0}}
@media (prefers-reduced-motion:reduce){.m-ring.m-draw:not(.m-run) .m-f{stroke-dasharray:var(--p) 100}.m-ring.m-draw:not(.m-run) :is(.m-s,.m-tick,.m-halo){opacity:1}.m-ring.m-run :is(.m-f,.m-s,.m-tick,.m-halo){animation:none}}
.m-ring > .m-c{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;line-height:1;color:var(--fg)}
.m-ring .m-n{font-size:13px;font-weight:var(--w-semibold);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.m-ring.m-l .m-n{font-size:22px;line-height:28px;letter-spacing:-.02em}
.m-ring .m-cap{margin-top:2px;font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-regular);color:var(--fg-3)}
.m-ring.is-below .m-n{color:var(--neg);font-size:12px}
.m-ring.m-l.is-below .m-n{font-size:18px}
.m-ring.is-done .m-c{color:var(--m-done)}
/* the countdown chip: from dates, in days — soon and late are said in words too */
.m-cd{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 9px 0 7px;border-radius:var(--r-full);background:var(--bg-4);color:var(--fg-2);font-size:var(--t-co);line-height:16px;font-weight:var(--w-medium);font-variant-numeric:tabular-nums;white-space:nowrap}
.m-cd > svg{flex:none;color:var(--fg-3)}
.m-cd.is-soon{background:var(--st-orange-bg);color:var(--warn)}.m-cd.is-soon > svg{color:var(--warn)}
.m-cd.is-late{background:var(--st-red-bg);color:var(--neg)}.m-cd.is-late > svg{color:var(--neg)}
/* the measuring clock: one segment a day up to 14, else a bar with a notch every 7 days */
.m-clock{display:grid;gap:6px;min-width:0}
.m-clock .m-ch{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.m-clock .m-ch b{font-size:var(--t-body);line-height:20px;font-weight:var(--w-medium);color:var(--fg);font-variant-numeric:tabular-nums}
.m-segs{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));gap:2px}
.m-segs > i{display:block;height:6px;border-radius:2px;background:var(--m-track)}
.m-segs > i.on{background:var(--m-meas)}
.m-segs > i.now{background:linear-gradient(90deg,var(--m-meas) 45%,var(--m-track) 45%);box-shadow:inset 0 0 0 1px var(--m-meas)}
.m-segs.is-wait > i{background:transparent;box-shadow:inset 0 0 0 1px var(--m-track)}
.m-bar{position:relative;display:block;height:6px;border-radius:var(--r-full);background:var(--m-track);overflow:hidden}
.m-bar.is-wait{background:transparent;box-shadow:inset 0 0 0 1px var(--m-track)}
.m-bar > .m-bf{position:absolute;left:0;top:0;bottom:0;display:block;border-radius:inherit;background:var(--m-meas)}
.m-bar > .m-nt{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;display:block;background:var(--bg)}
.m-bar.is-mini{display:inline-block;width:60px;height:4px;vertical-align:middle}
.m-clock .m-cf{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);font-variant-numeric:tabular-nums}
.m-clock .m-cf > span{display:inline-flex;align-items:center;gap:4px}
.m-clock.is-compact{display:inline-flex;align-items:center;gap:8px;margin-top:4px}
.m-clock.is-compact .m-ch{font-size:var(--t-co);color:var(--fg-2);font-variant-numeric:tabular-nums}
/* the sample meter: how much of what's needed to tell — never a confidence */
.m-meter{display:grid;gap:6px;min-width:0}
.m-meter .m-mt{font-size:var(--t-body);line-height:20px;font-weight:var(--w-medium);color:var(--fg);font-variant-numeric:tabular-nums}
.m-smp > .m-bf{background:var(--m-sample)}
.m-meter.is-inline{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}
.m-meter.is-inline .m-bar{width:56px;height:4px;flex:none}
.m-meter.is-inline .m-mt{font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-regular);color:var(--fg-2)}

/* ----- v99 · growth round 2 (2026-10-03, still Growth's own v88 block) — _research/2026-10-growth/04-deep-pass.md §5 -----
   Since you last looked · the counting changes to come · the tie-out · today so far · the store's events on every chart · a day broken down ·
   the goals' second line (basis, forecast range, work) and their edits · past due now · estimated cohort cells · the one digest sheet (lib/digest.js).
   Chips stay quiet outlines (no state colour); every colour is a token, so light and dark flip together; nothing loops */
.gr-since .mn-gl{margin-top:2px}
.gr-since .mn-g .mn-g-st{display:flex;align-items:center}
.gr-mvc{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border:1px solid var(--ln);border-radius:var(--r-full);font-size:var(--t-co);line-height:16px;font-weight:var(--w-medium);color:var(--fg);font-variant-numeric:tabular-nums;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.gr-mvc > svg{flex:none;color:var(--fg-3)}
.gr-cnt{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:var(--r-full);background:var(--bg-4);color:var(--fg-2);font-size:var(--t-co);line-height:16px;font-weight:var(--w-medium);font-variant-numeric:tabular-nums;white-space:nowrap}
.gr-since-none{margin:6px 0 2px;text-wrap:pretty}
.gr-coming{margin-top:6px;padding-top:6px;border-top:1px solid var(--ln-2)}
.gr-coming .mn-g{border-bottom:0}
.gr-coming .m-cd{max-width:100%}
.gr-since-al{display:flex;align-items:flex-start;gap:6px;margin:10px 0 0;padding-top:10px;border-top:1px solid var(--ln-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);text-wrap:pretty}
.gr-since-al > svg{flex:none;margin-top:2px;color:var(--fg-4)}
.gr-since-al .gr-ptr{margin-left:2px}
/* the tie-out under the headline: one line, the reasons fold */
.gr-tie{margin-top:6px}
.gr-tie-l{align-items:flex-start}
.gr-tie .gr-tie-b{margin:0 0 0 4px;padding:0;vertical-align:baseline}
.gr-tie-m{margin:4px 0 0 19px;padding:0;list-style:none;display:grid;gap:4px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);text-wrap:pretty}
.gr-tie-m li::before{content:"·";margin-right:6px;color:var(--fg-4)}
/* today so far: a still dot (live, never pulsing) */
.gr-today{align-items:flex-start}
.gr-live{flex:none;width:7px;height:7px;margin:5px 3px 0 3px;border-radius:50%;background:var(--pos)}
.gr-today .gr-pv{margin-left:6px}
/* the store's events on a chart: a marker of their own */
.annot-n.is-store{border-color:var(--c-indigo);color:var(--ind-ink)}   /* v103 (AX7, audit V5): ink, not the fill (4.09:1) */
.ce-i.is-store .ce-n{background:color-mix(in srgb,var(--c-indigo) 16%,var(--bg));color:var(--ind-ink)}
/* a chart whose days open a breakdown */
.grw .gr-pickable .chart-plot > .cols > .ccol.gr-pick{cursor:pointer}
.gr-day{margin-top:14px;padding:14px 16px 12px;border:1px solid var(--ln);border-radius:var(--r-12);background:var(--bg-2);outline:none}
.gr-day:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.gr-day-hd{display:flex;align-items:flex-start;gap:6px}
.gr-day-hd > .grow{flex:1 1 0}
.gr-day-t{margin:0;font-size:var(--t-body);line-height:20px;color:var(--fg-2);text-wrap:pretty;padding-top:3px}
.gr-day-t b{color:var(--fg);font-weight:var(--w-semibold);margin-right:2px}
.gr-day .ib[disabled]{opacity:.35;cursor:default}
.gr-dds{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:4px 28px;margin-top:10px}
.gr-dd h4,.gr-dled h4{margin:0 0 4px;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-semibold);color:var(--fg-2)}
.gr-dd h4 span,.gr-dled h4 span{font-weight:var(--w-regular);color:var(--fg-4)}
.gr-dl{grid-template-columns:minmax(0,1fr)!important}
.gr-dl li{padding:4px 0;font-size:var(--t-co);line-height:18px}
.gr-dled{margin-top:12px;padding-top:10px;border-top:1px solid var(--ln-2)}
.gr-dled .mn-g{min-height:38px}
.gr-day .sv-cap{display:block;margin-top:8px}
.gr-day-b{display:flex;justify-content:flex-end;margin-top:8px}
/* the goals' second line: the basis, the forecast range against the target, the work — and the edits */
.gr-gl2{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin-top:4px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.hx-w.gr-basis{height:20px;padding:0 7px;font-size:var(--t-sh);line-height:18px;font-weight:var(--w-medium);color:var(--fg-2)}
.gr-was{color:var(--fg-3)}
.gr-wk{display:flex;align-items:flex-start;gap:6px;margin:6px 0 0;font-size:var(--t-body);line-height:20px;color:var(--fg-2);text-wrap:pretty}
.gr-wk > svg{flex:none;margin-top:3px;color:var(--fg-4)}
.gr-wk b{color:var(--fg);font-weight:var(--w-semibold)}
.gr-hist{margin:0;padding:0;list-style:none;display:grid;gap:4px}
.gr-hist li{display:flex;gap:10px;align-items:baseline;text-wrap:pretty}
.gr-hist .hx-when{flex:none;min-width:48px}
/* RANGES ARE FOR ESTIMATES (ui/meters.js rangeStrip): a quiet band, the target's tick, today's dot */
.m-rt{position:relative;display:block;width:100%;height:4px;border-radius:var(--r-full);background:var(--m-track)}
.m-rb{position:absolute;top:-2px;height:8px;border-radius:var(--r-full);background:color-mix(in srgb,var(--c-orange) 34%,transparent);display:block}
.m-rk{position:absolute;top:-4px;width:2px;height:12px;margin-left:-1px;border-radius:1px;background:var(--fg);display:block}
.m-rd{position:absolute;top:-2px;width:8px;height:8px;margin-left:-4px;border-radius:50%;background:var(--m-fill);box-shadow:0 0 0 2px var(--bg);display:block}
/* past due now (SaaS) */
.gr-pd-n{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px;margin:2px 0 6px;color:var(--fg-2);font-size:var(--t-body);line-height:20px}
.gr-pd .mn-g .m-cd{max-width:100%;overflow:hidden;text-overflow:ellipsis}
/* an estimated cohort cell: striped, said "Estimated" */
.gr-c.gr-est{color:var(--fg-2);background:repeating-linear-gradient(135deg,transparent 0 5px,color-mix(in srgb,var(--fg-4) 16%,transparent) 5px 6px);border-radius:var(--r-4);padding:2px 6px;margin:-2px -6px;cursor:help}
.gr-c.gr-est .gr-sub{color:var(--fg-3)}
.hx-w.gr-stock.is-out{margin-left:4px;color:var(--fg-2)}
/* Changes › Alerts: the menu got longer — it scrolls inside the window */
/* the one digest sheet (lib/digest.js): an email or a Slack message, mounted on <body> */
.dg-scrim{position:fixed;inset:0;z-index:960;display:grid;place-items:center;padding:24px 16px;background:var(--scrim);animation:dp-fade var(--dur-2) var(--ease-out)}
.dg-sheet{width:min(680px,100%);max-height:calc(100vh - 48px);overflow:auto;display:flex;flex-direction:column;gap:12px;padding:18px 22px;border-radius:var(--r-card);background:var(--lvl-0,var(--bg));border:1px solid var(--bd-tl,var(--ln));box-shadow:var(--sh-high);outline:none;color:var(--fg);animation:dp-rise var(--dur-3) var(--ease-out)}
.dg-hd{display:flex;align-items:center;gap:9px}
.dg-hd h2{margin:0;font-size:var(--t-t3);line-height:var(--lh-t3);font-weight:var(--w-semibold);color:var(--fg)}
.dg-hd > .grow,.dg-bar > .grow,.dg-b > .grow{flex:1 1 0}
.dg-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dg-tabs{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--ln);border-radius:var(--r-8)}
.dg-tab{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 10px;border:0;border-radius:var(--r-6,6px);background:transparent;color:var(--fg-2);font:inherit;font-size:var(--t-co);font-weight:var(--w-medium);cursor:pointer}
.dg-tab.is-on{background:var(--bg-4);color:var(--fg)}
.dg-when{display:inline-flex;align-items:center;gap:5px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);font-variant-numeric:tabular-nums}
.dg-mail,.dg-slack{border:1px solid var(--ln-2);border-radius:var(--r-12);overflow:hidden;background:var(--bg-2)}
.dg-mail-h{display:grid;grid-template-columns:64px minmax(0,1fr);gap:4px 10px;margin:0;padding:12px 16px;border-bottom:1px solid var(--ln-2);font-size:var(--t-co);line-height:var(--lh-co)}
.dg-mail-h dt{color:var(--fg-3)}
.dg-mail-h dd{margin:0;color:var(--fg-2);min-width:0;text-wrap:pretty}
.dg-mail-h dd b{color:var(--fg);font-weight:var(--w-semibold)}
.dg-mail-b{padding:14px 16px 16px;display:flex;flex-direction:column;gap:10px;background:var(--lvl-0,var(--bg));font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.dg-intro{margin:0;color:var(--fg-2);text-wrap:pretty}
.dg-s h3{margin:4px 0 4px;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-semibold);letter-spacing:.02em;text-transform:uppercase;color:var(--fg-3)}
.dg-s h3 span{text-transform:none;letter-spacing:0;font-weight:var(--w-regular)}
.dg-l{margin:0;padding:0;list-style:none;display:flex;flex-direction:column}
.dg-i{display:grid;grid-template-columns:72px minmax(0,1fr);gap:10px;padding:8px 0;border-top:1px solid var(--ln-3,var(--ln-2))}
.dg-l > .dg-i:first-child{border-top:0;padding-top:2px}
.dg-k{font-size:var(--t-co);line-height:var(--lh-body);color:var(--fg-3);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.dg-i b{display:block;font-weight:var(--w-semibold);color:var(--fg);text-wrap:pretty}
.dg-tag{display:inline-block;margin-left:6px;padding:0 6px;border:1px solid var(--ln);border-radius:var(--r-4);font-size:var(--t-sh);line-height:16px;font-weight:var(--w-medium);color:var(--fg-3);vertical-align:1px}
.dg-i p,.dg-e,.dg-n{margin:2px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);text-wrap:pretty}
.dg-f{margin:6px 0 0;padding-top:10px;border-top:1px solid var(--ln-3,var(--ln-2));font-size:var(--t-sh,12px);line-height:var(--lh-sh,16px);color:var(--fg-3);text-wrap:pretty}
.dg-sl-hd{display:flex;align-items:center;gap:6px;padding:10px 14px;border-bottom:1px solid var(--ln-2);font-size:var(--t-co);color:var(--fg-3)}
.dg-sl-hd b{color:var(--fg)}
.dg-sl-m{display:grid;grid-template-columns:36px minmax(0,1fr);gap:10px;padding:14px;background:var(--lvl-0,var(--bg))}
.dg-sl-av{display:grid;place-items:center;width:36px;height:36px;border-radius:var(--r-8);background:var(--fg);color:var(--bg);font-weight:var(--w-semibold)}
.dg-sl-c{min-width:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.dg-sl-c p{margin:0 0 4px;text-wrap:pretty}
.dg-sl-n{display:flex;align-items:center;gap:6px}
.dg-sl-n b{color:var(--fg)}
.dg-sl-n span{padding:0 4px;border-radius:3px;background:var(--bg-4);font-size:10px;line-height:14px;color:var(--fg-3)}
.dg-sl-t b{color:var(--fg)}
.dg-sl-s{margin-top:8px}
.dg-sl-s ul{margin:2px 0 0;padding-left:18px}
.dg-sl-s li{margin:2px 0;text-wrap:pretty}
.dg-sl-s code{font-size:11px;padding:0 4px;border-radius:3px;background:var(--bg-4);color:var(--fg-2)}
.dg-sl-s2{display:block;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.dg-note{display:flex;gap:6px;align-items:flex-start;margin:0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.dg-note svg{flex:none;margin-top:2px}
.dg-b{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
@media (max-width:900px){
  .gr-dds{grid-template-columns:minmax(0,1fr)}
  .gr-since .mn-g,.gr-coming .mn-g,.gr-pd .mn-g{grid-template-columns:minmax(0,1fr);row-gap:6px}
  .gr-since .mn-g > svg,.gr-pd .mn-g > svg{display:none}
  .gr-since .mn-g .mn-g-b,.gr-coming .mn-g .mn-g-b{justify-content:flex-start}
  .dg-i{grid-template-columns:minmax(0,1fr);gap:2px}
  .dg-mail-h{grid-template-columns:56px minmax(0,1fr)}}
.gr-since .mn-g .u,.gr-coming .mn-g .u,.gr-pd .mn-g .u{white-space:normal;overflow:visible;text-overflow:clip;text-wrap:pretty;line-height:18px}
.gr-since .mn-g .k,.gr-pd .mn-g .k{white-space:normal;text-wrap:pretty}

/* ===== v104 · growth loop 3 (2026-10-03 — _reviews/2026-10-03-growth-loop3/FIX.md GL1–GL8), still Growth's own block =====
   A held goal (a source behind): the dashed ring keeps no "short of the pace" arc, a quiet outlined chip waits for the source · what the goals need this
   week · the forecast band striped and neutral with a flag for the target (P2-2) · one card system: block rules at +15, captions at +23 (P2-4, P3-3) */
.m-ring.is-stale .m-s{display:none}
.m-ring.is-stale .m-tick,.m-ring.is-stale .m-halo{opacity:.45}
.m-cd.gr-whole,.m-cd.gr-proj{background:transparent;box-shadow:inset 0 0 0 1px var(--ln);color:var(--fg-2)}
.m-cd.gr-proj{white-space:normal;height:auto;min-height:22px;padding-top:2px;padding-bottom:2px;text-wrap:pretty}
/* GL4: RANGES ARE FOR ESTIMATES — striped and neutral; the target is a flag (pole + pennant), never a plain tick */
.m-rb.is-est{background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--fg-3) 42%,transparent) 0 2px,color-mix(in srgb,var(--fg-4) 16%,transparent) 2px 5px);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--fg-4) 40%,transparent)}
.m-rk.m-flag{top:-7px;height:15px;width:2px;margin-left:-1px;border-radius:1px;background:var(--fg)}
.m-rk.m-flag::after{content:"";position:absolute;left:2px;top:0;width:0;height:0;border-left:7px solid var(--fg);border-top:3.5px solid transparent;border-bottom:3.5px solid transparent}
.m-range{display:inline-flex;align-items:center;width:96px;height:14px;flex:none;vertical-align:middle;overflow:visible;padding-top:4px}
/* GL8 #6: what the goals need this week — one quiet line under the card's head */
.gr-wkn{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin:0 -8px;padding:10px 8px 12px;border-bottom:1px solid var(--ln-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.gr-wkn-k{display:inline-flex;align-items:center;gap:6px;font-weight:var(--w-semibold);color:var(--fg)}
.gr-wkn-k > svg{flex:none;color:var(--fg-4)}
.gr-wkn-i{display:inline-flex;align-items:baseline;gap:4px;min-width:0}
.gr-wkn-i b{font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
.gr-wkn-i.is-held{align-items:center;color:var(--fg-3)}
.gr-wkn-i.is-held > svg{flex:none;color:var(--fg-4)}
/* GL5 (P2-4): a block's rule inside a card starts at card + 15 like the header's and the tables' — the same trick as the card header */
.grw .gr-blk,.grw .gr-since-al,.grw .gr-coming,.grw .gr-claim,.grw .gr-young,.grw .gr-ltv{margin-left:-8px;margin-right:-8px;padding-left:8px;padding-right:8px}
.grw .gr-top > .kp-strip{margin-left:-8px;margin-right:-8px}
/* P3-3: every caption under the tiles at card + 23 (the .ai-mline's own 2 px inset goes) */
.grw .gr-top .ai-mline{align-items:flex-start;flex-wrap:nowrap;margin-top:6px;margin-left:0;margin-right:0}
/* GL2: Growth's standing rules — a row with its next run; the sheet's email list and its groups */
.gr-rclk{display:block;margin-top:6px}
.gr-rules .mn-g .mn-g-st,.gr-pd .mn-g .mn-g-st{display:flex;align-items:center}
.gr-rs-l{margin:0;padding-left:18px;display:grid;gap:4px;font-size:var(--t-body);line-height:20px;color:var(--fg-2);text-wrap:pretty}
.gr-rs-l b{color:var(--fg);font-weight:var(--w-semibold)}
.gr-rs-b{margin:8px 0 0;padding:0;list-style:none;display:grid;gap:6px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.gr-rs-b b{color:var(--fg-2);font-weight:var(--w-medium)}
/* GL3: the thin usual-range band under a tile's value — the range a quiet bar around "no change" (the centre tick), the move a dot; outside it, the dot is
   ringed — never a red or green: the words say above or below */
.gr-ub{position:relative;display:block;width:100%;max-width:132px;height:6px;margin:6px 0 4px;border-radius:var(--r-full);background:var(--m-track)}
.gr-ub-r{position:absolute;top:0;bottom:0;display:block;border-radius:var(--r-full);background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--fg-3) 40%,transparent) 0 2px,color-mix(in srgb,var(--fg-4) 14%,transparent) 2px 5px)}
.gr-ub-z{position:absolute;top:-2px;bottom:-2px;width:1px;margin-left:-.5px;display:block;background:var(--fg-4)}
.gr-ub-d{position:absolute;top:-1px;width:8px;height:8px;margin-left:-4px;border-radius:50%;display:block;background:var(--fg-2);box-shadow:0 0 0 2px var(--bg)}
.gr-ub-d.is-out{background:var(--fg);box-shadow:0 0 0 2px var(--bg),0 0 0 3px var(--fg)}
/* P3-5: a goal chart that doesn't start at 0 says so */
.grw .sec-bd p.sv-cap.gr-brk-cap{display:flex;align-items:center;gap:4px;margin-top:6px}
.gr-brk-cap > svg{flex:none;color:var(--fg-4)}
.gr-lsw.is-band{width:14px;height:8px;border:0;border-radius:2px;background:var(--fill-2,var(--bg-4))}
/* GL6 · P2-8: the (i) beside "Direct + Maps" in the arithmetic */
.gr-grp{display:inline-flex;vertical-align:-3px;margin-left:4px}
.gr-grp .ib{width:18px;height:18px}
/* GL8 #4: today's recorded events, each with the goal it moved */
.gr-ev{margin:6px 0 0 19px;padding:0;list-style:none;display:grid;gap:6px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.gr-ev li{display:grid;grid-template-columns:64px minmax(0,1fr);gap:8px;align-items:baseline}
.gr-ev-t{display:flex;flex-direction:column;gap:2px;min-width:0;text-wrap:pretty}
.gr-ev-g{display:inline-flex;align-items:center;gap:4px;color:var(--fg-3)}
.gr-ev-g > svg{flex:none;color:var(--fg-4)}
/* GL8 #7: a tile whose source is behind — greyed and hatched, "In your data" (its words say to which day it is whole); never a red */
.grw .kp.is-held{background:repeating-linear-gradient(135deg,transparent 0 6px,color-mix(in srgb,var(--fg-4) 9%,transparent) 6px 7px)}
.grw .kp.is-held .kp-v{color:var(--fg-2)}
/* GL5 (P3-9): one card top padding on every Growth page — 16 px, records too */
.grw.gr-one > .sec.panel.fd-sec:not(.is-fold){padding-top:16px}
/* GL8 #13: the pinned definitions — each with its source and the day it was checked */
.gr-defs .hx-clk .gr-sub{margin-top:2px}
/* P3-8: Growth's work page shows the covered list whole — no clamp with "…" */
.gr-work .td-y.cs-done-l{display:block;-webkit-line-clamp:unset;overflow:visible}
/* P3-2: the past-due figure on the type scale — 22 px (--t-t1), never 24 */
.gr-pd-v{font-weight:var(--w-semibold);letter-spacing:-.01em;color:var(--fg);font-variant-numeric:tabular-nums;font-size:var(--t-t1);line-height:var(--lh-t1,28px)}
/* P5v2 (Oct 8) — what the verifiers saw on Growth: room between the blocks of a fold, the AI summary's icon beside its words, a subhead for each
   list in the retention fold, one-line card headers under 1600px, the definitions' buttons off the text above, the copy and "Opens in" sheets */
.gr-more-d > h3.gr-h3{margin-top:16px}
.gr-more-d > p.sv-cap{margin-top:6px}
.gr-aisum{margin-top:8px}
.gr-defs{margin-top:10px}
.gr-mapact{margin-top:12px}
.gr-sum-s{display:none}
@media (max-width:1599px){.gr-sum-l{display:none}.gr-sum-s{display:inline}}
.gr-open-dl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:6px 16px;margin:0;font-size:var(--t-body);line-height:var(--lh-body)}
.gr-open-dl dt{color:var(--fg-3)}
.gr-open-dl dd{margin:0;color:var(--fg);min-width:0;overflow-wrap:anywhere}
.gr-copyta{font-family:var(--mono);font-size:var(--t-co);line-height:20px;resize:vertical;min-height:180px}

/* ===== D05 (design review, 7 Oct) — the shared "Show details" fold: a page shows its result and its decision first; source, method and caveats
   sit in <details class="pt-more"><summary>Show details</summary>…</details> (the essential warning stays outside it) ===== */
details.pt-more > summary{display:inline-flex;align-items:center;gap:4px;min-height:24px;padding:0 6px;margin:0 -6px;border-radius:var(--r-ctl);cursor:pointer;list-style:none;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-medium);color:var(--fg-2)}
details.pt-more > summary::-webkit-details-marker{display:none}
@media (hover:hover){details.pt-more > summary:hover{color:var(--fg);background:var(--hover)}}
details.pt-more > summary::after{content:"";width:6px;height:6px;margin-left:2px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform var(--dur-1) var(--ease-out)}
details.pt-more[open] > summary::after{transform:translateY(1px) rotate(-135deg)}
details.pt-more[open] > summary{margin-bottom:6px}

/* ======================================================================  night fix — shared r1 (Oct 8)  ======================================================================
   Layout fixes found by the night's visual reviews; each says the finding it answers. Phone rules first (≤ 600 / ≤ 760 px), then wider screens. */
/* B6: the Alerts popover hangs from the trigger's LEFT edge on a phone (its trigger sits on the left there) and fits the screen */
@media (max-width:560px){.cg-alerts .cg-alerts-pop{right:auto;left:0;min-width:0;width:calc(100vw - 48px)}}
/* I · shell: the bell's panel and the team chat fit a phone (8px each side) — never 400/440px from the right edge */
@media (max-width:760px){
  .notif-pop{left:8px;right:8px;width:auto;max-height:calc(100dvh - 80px)}
  .chat-panel,.chat-panel.is-max{left:8px;right:8px;width:auto;bottom:8px;height:calc(100dvh - 72px);max-height:none}
  .cp-hd .ib,.cp-comp .ib{min-width:40px;min-height:40px}
}
/* the chat composer's approval hint: its (i) beside the sentence, lined up with the textarea's text */
.cp-comp .sv-cap{display:flex;align-items:flex-start;gap:6px;margin:0;padding:0 12px 6px}
.cp-comp .sv-cap > svg{flex:none;margin-top:2px}
/* phone: text never squeezed into a narrow column beside a button, a chip or a label (MOB-1) */
@media (max-width:600px){
  .work-ref{flex-wrap:wrap}
  .work-ref .grow{flex:1 1 0;min-width:180px}
  .work-ref > .btn{flex:1 1 100%;margin-left:0}
  .cause-row{grid-template-columns:minmax(0,1fr);row-gap:4px}
  .cause-row > :last-child{color:var(--fg-3)}
  .fd-began{flex-direction:column;gap:4px}
  .fl-ev{grid-template-columns:auto minmax(0,1fr) auto;row-gap:4px}
  .fl-ev > .lbl{grid-column:1;grid-row:1}
  .fl-ev > .fd-src{grid-column:2;grid-row:1;min-width:0;white-space:normal}
  .fl-ev > .fl-ev-go{grid-column:3;grid-row:1}
  .fl-ev > .fl-ev-c{grid-column:1 / -1;grid-row:2}
  .lg-steps{grid-template-columns:minmax(0,1fr)}
  .vd-big{flex-direction:column;align-items:flex-start;gap:8px}
  .cg-ba{grid-template-columns:minmax(0,1fr)}
  .cg-ba > :nth-child(2){justify-self:center;transform:rotate(90deg)}
  .cg-ba code{overflow-wrap:anywhere}
  .cl-card .cl-head,.page .cl-head{display:none}
  .cl-tools{justify-content:flex-start;flex-wrap:wrap}
  .preview-line{flex-wrap:wrap}
  .preview-line > span{flex:1 1 calc(100% - 22px);min-width:0}   /* shared fixer r1: the eye and the text share the first row; the link sits under the text */
  .preview-line > a{flex-basis:100%;margin-left:22px}
  .lc-story{flex-wrap:wrap}
  .lc-story .lc-story-s{order:3;margin-left:26px}
  .dr-who.is-lock{flex-wrap:wrap}
  .dr-who.is-lock > .grow{flex-basis:100%}
}
/* the Content › Titles and descriptions table is one card per page on a phone: page → what is wrong → state, the two buttons on one row */
@media (max-width:640px){
  .sn-cols{display:none}
  .sn-row{grid-template-columns:minmax(0,1fr);row-gap:8px}
  .sn-row .num{white-space:nowrap}
}
/* Competitors › a page: each reason's text takes the width, its button goes under it; the questions are one column */
@container pg (max-width:760px){
  .cp-do{flex-wrap:wrap}
  .cp-do > .grow{flex:1 1 100%}
  .ci-qs{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:760px){.cp-do{flex-wrap:wrap}.cp-do > .grow{flex:1 1 100%}.ci-qs{grid-template-columns:minmax(0,1fr)}}
/* C6 · MOB-8: on a phone a Visibility row keeps its state chip (Waiting for approval, Worked…) — on its own line above the row */
@media (max-width:900px){
  .mn-g.sv-g > .mn-g-st{display:flex;grid-column:1 / -1}
  .mn-g.sv-g > .mn-g-st:empty{display:none}
}
/* Local › a location: the first tile pair lines up with the four other tiles (each half spans the strip's subgrid rows, label at their foot) */
.lc-tiles .lc-pair-i{display:grid;grid-row:span 4;grid-template-rows:subgrid;justify-items:start;align-content:start;row-gap:2px;padding-top:0;padding-bottom:0}   /* the pair's own padding is the tiles' — a subgrid adds an item's padding to the rows */
.lc-tiles .lc-pair-i > .kp-l{align-self:end}
/* N2 · phone: with the pair on its own row, the even tiles start a row — no edge on their left; the odd ones get it */
@media (max-width:600px),(pointer:coarse){
  .kp-strip.lc-tiles > .kp:nth-child(even){border-left:0}
  .kp-strip.lc-tiles > .kp:nth-child(odd):not(:first-child){border-left:1px solid var(--ln-2)}
  .kp-strip.lc-tiles > .kp:nth-child(-n+3):not(:first-child){border-top:1px solid var(--ln-2)}
  .kp-strip.lc-tiles > .kp:last-child:nth-child(odd){grid-column:auto}
  .kp-strip.lc-tiles > .kp:last-child:nth-child(even){grid-column:1 / -1}
}
/* the Approve flow: "Who does it" keeps its distance from the evidence line above it */
.ap-evd + .who-pick,.ap-tried + .who-pick{margin-top:12px}
/* Results: "Smallest it can tell" wraps in its column instead of running into the next label */
.r-row .r-num > .fd-k{white-space:normal;text-wrap:balance}
/* Finding › What may explain it: a long chip at 1920 gets the room of its words (up to 220px), never a 3-line oval */
@media (min-width:601px){.cause-row{grid-template-columns:minmax(132px,max-content) minmax(0,1.1fr) minmax(0,1fr)}.cause-row > .lbl{max-width:220px}}
/* Actions › Plan at a laptop width: the five columns fit (216px each) — nothing hides past the edge */
@media (max-width:1480px){.kb-board.is-5{grid-template-columns:repeat(5,minmax(216px,1fr))}}
/* the approval sheet's facts: a long fact (the stake, the evidence) never sits alone in a 230px column beside an empty row */
/* Health › Speed on a phone: the metric's name once — the cell's own label, not the stacked card's too */
@container pg (max-width:760px){.tbl-r > .hx-sv[data-label]::before{content:none}}
/* Local chart: an end label is never cut — its column fits the widest label on a phone */
@media (max-width:600px){.chart-endl{min-width:max-content}.chart-endl span{overflow:visible;text-overflow:clip}}
/* Send feedback (night fix Oct 8, FB-1…FB-3): the one-line why, the opt-out of the page details, a hidden context row stays hidden */
.sf-intro{margin:0 0 12px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.sf-ctx .sf-ci[hidden],.sf-ctx .sf-ci-none[hidden]{display:none}
.sf-ci-none{margin:0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.sf-noctx{display:flex;align-items:center;gap:8px;margin-top:2px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);cursor:pointer}
.sf-noctx input{flex:none;width:14px;height:14px;margin:0;accent-color:var(--accent)}
/* the workspace tile keeps its edge in dark (its #0F172A fill is the sidebar's colour) */
.app.v89 .sb-wsw .logo,.app.v89 .tb-tile{box-shadow:inset 0 0 0 1px var(--line-strong)}
/* a tab row that scrolls sideways fades where more tabs are (main.js tabRows marks it) */
:is(.pl-tabs,.gr-tabs).is-ovf-r{mask-image:linear-gradient(to right,#000 calc(100% - 32px),transparent)}
:is(.pl-tabs,.gr-tabs).is-ovf-l{mask-image:linear-gradient(to right,transparent,#000 32px)}
:is(.pl-tabs,.gr-tabs).is-ovf-l.is-ovf-r{mask-image:linear-gradient(to right,transparent,#000 32px,#000 calc(100% - 32px),transparent)}
/* P6 (X9): Ask's "How I got this" — the Sources fold's look, right under it; each step wraps whole, never cut */
.an-src + .an-src.an-how{margin-top:-4px}
.an-src.an-how li{grid-template-columns:20px minmax(0,1fr)}
.an-src.an-how .an-hw{color:var(--fg-2);text-wrap:pretty;overflow-wrap:break-word}
/* P6 (X14): the data systems an answer read, under its records in the one Sources fold */
.an-src .an-sys{margin:6px 0 0;display:flex;flex-wrap:wrap;gap:2px 8px;color:var(--fg-2)}
/* P6: a source that opens a panel (What Dottpace knows) reads like the links beside it — the same weight, cut with "…" only where the list is narrow (its title has the whole name) */
.an-src li button.lk.an-sl{font-weight:var(--w-regular);color:var(--fg-2);min-width:0;max-width:100%}
.an-src li .an-sl > span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* P6: an evidence chip stays 17px to the eye, with a 25px target around it (WCAG 2.5.8) */
:is(a,button).an-n{position:relative}
:is(a,button).an-n::after{content:"";position:absolute;inset:-4px;border-radius:var(--r-full)}
/* ===== night shared fixer (Oct 8) ===== */
/* #5: a phone board shows one column at a time, the next one peeking at the edge — never two cut columns over an empty half */
@media (max-width:640px){.kb-board.is-5,.kb-board.is-4{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:calc(100% - 28px)}}
/* #6 · #16: on a phone a one-choice row (Results' verdicts, Changes' lanes) is one line that scrolls sideways and fades where more are (main.js tabRows) */
@media (max-width:640px){
  .pl-views,.cl-bar .pl-views{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none;min-width:0;max-width:100%}
  .pl-views::-webkit-scrollbar{display:none}
  .pl-views > .pl-chip{flex:none;scroll-snap-align:start}
  .pl-views.is-ovf-r{mask-image:linear-gradient(to right,#000 calc(100% - 32px),transparent)}
  .pl-views.is-ovf-l{mask-image:linear-gradient(to right,transparent,#000 32px)}
  .pl-views.is-ovf-l.is-ovf-r{mask-image:linear-gradient(to right,transparent,#000 32px,#000 calc(100% - 32px),transparent)}
}
/* #18: a result fact's label wraps inside its box ("Smallest change this window can tell" is wider than a narrow column) */
.fd-res .fd-k{white-space:normal;text-wrap:pretty}
/* #19 · #28: Findings › Closed — the State column fits the longest close words, the Change column gives its metric room on a wide screen */
@media (min-width:1440px){.f-list:has(> .f-row.is-closed) > :is(.f-cols,.f-row){grid-template-columns:76px minmax(0,1fr) minmax(140px,240px) 224px 80px}}
.f-row.is-closed > .f-cell .lbl{max-width:100%;height:auto;min-height:22px;padding-top:2px;padding-bottom:2px;white-space:normal;text-align:left}   /* below 1440 the words wrap inside the chip — never past the cell */
/* #41: a link inside the shopping gate card and the "already judged" line reads as a link; that line's icon sits inline at its start */
.ai-gate .ag-in,.aig-lead .ag-in{color:var(--link-tint,var(--link));font-weight:var(--w-medium)}
@media (hover:hover){.ai-gate .ag-in:hover,.aig-lead .ag-in:hover{text-decoration:underline;text-underline-offset:2px}}
.aig-lead > svg:first-child{display:inline-block;vertical-align:-2px;margin-right:2px;color:var(--fg-3)}
/* #42: on a phone a "What would move it" row puts its label and link on one line and the sentence full width under them — never a 100px column */
@media (max-width:600px){.ai-mv:not(.ai-chg){flex-wrap:wrap;row-gap:4px}.ai-mv:not(.ai-chg) > .grow{flex-basis:100%;order:2}.ai-mv:not(.ai-chg) > .more{margin-left:auto}}
/* #60: the screen-reader live region never adds height after #root — the frame doesn't shift 1px when a sheet takes focus */
#a11y-live{position:fixed;top:0;left:0}
/* low items, night fixer: #12 a warning icon sits on the first line of a long message · #15 a long maker fits on a wide screen · #21 a Findings source line keeps its icon inline ·
   #25 the side panel grows on a wide screen · #43 the tile's chevron has room · #74 "What was tested" stays whole on a phone · #83 the index icon sits on line 1 ·
   #9 Results' meta columns on a wide screen */
@media (max-width:600px){.alert-line{align-items:flex-start}.alert-line > svg{flex:none;margin-top:3px}}
@media (min-width:1600px){.cl-row,.cl-head{grid-template-columns:172px minmax(0,1fr) minmax(0,.62fr)}}
.fi-page .ai-mline{flex-wrap:nowrap;align-items:flex-start}.fi-page .ai-mline > svg{flex:none;margin-top:2px}
@media (min-width:1680px){.fd-grid{grid-template-columns:minmax(0,1fr) clamp(288px,20vw,360px)}}
.ai-kp-v .kp-l{padding-right:18px}
@media (max-width:600px){button.gr-h3.gr-tg{flex-wrap:wrap}button.gr-h3.gr-tg > span:first-of-type{flex:none;white-space:nowrap}}
@media (min-width:1600px){.r-row.is-7.is-6{grid-template-columns:128px minmax(0,1fr) 260px 120px 200px 52px}}
.hs-help + .hs-sh-k{margin-top:18px}   /* #67: "What's new" starts its own block under the Help links */
/* ===== closing round L (Oct 9): the lows deferred from the Oct 8 final audit — _research/2026-10-09-25-lows.md ===== */
/* #8: a Results row on a phone — an empty Minimum / Effect (pages/lactions.js marks the cell .is-none) is one short line, the two side by side;
   the row's divider stays straight (no corner radius where nothing hovers) */
@container pg (max-width:760px){
  .r-row{border-radius:0}
  .r-row > .r-num.is-none,.r-row > .r-num.is-wrap.is-none{grid-column:auto;flex-direction:row;align-items:baseline;gap:6px}
}
/* #22: one column's count is a phrase → every count sits under its title (ui/lboard.js .has-sub), so the first cards start on one line */
.kb-board.has-sub .kb-colh{flex-wrap:wrap;row-gap:0}
.kb-board.has-sub .kb-colh > span:not(.kb-colx){flex-basis:100%}
/* #23: a board card's head — importance, kind and the clock on line 1; a cause or came-back chip goes under them, so cards side by side keep one shape */
.kb-card .kb-hd > :is(.fl-ck,.fl-ox){order:9}
.kb-card .kb-hd > .kb-d{margin-left:auto}
/* #24: Why it happened — the observed rows and the cause rows share one chip column (132px, .cause-row's), and an empty link column takes no room */
@media (min-width:601px) and (max-width:1320px){.fd-obs .fl-ev{grid-template-columns:132px minmax(0,1fr) auto;column-gap:16px}}
@media (min-width:1321px){.fd-obs .fl-ev{grid-template-columns:132px minmax(0,1fr) 220px auto;column-gap:16px}}
/* #26: a finding's action row on a phone — Share and More show their icons (the names stay for screen readers), so More never sits alone on a line */
@media (max-width:600px){.fd-acts > :is(#fd-share,#fd-more) :is(.mb-l,.mb-cv){display:none}.fd-acts > :is(#fd-share,#fd-more){padding-inline:10px}}
/* #75: a column title after a number column moves with its cells (the 16px they take above) */
.cps .tbl-h > .r + span:not(.r):not(:empty),.cp .tbl-h > .r + span:not(.r):not(:empty){padding-left:16px}
/* #84: the page's head sentence never leaves one word alone on its last line */
.pl-hd .pl-s{text-wrap:pretty}
