/* visibianhq.com: the company site of Visibian. Values and roles: _build/hq/DESIGN.md */

@font-face{font-family:'Inter Tight';font-weight:700;font-display:swap;src:url(../fonts/InterTight-700.woff2) format('woff2')}
@font-face{font-family:'Inter Tight';font-weight:600;font-display:swap;src:url(../fonts/InterTight-600.woff2) format('woff2')}
@font-face{font-family:'Inter';font-weight:400;font-display:swap;src:url(../fonts/Inter-400.woff2) format('woff2')}
@font-face{font-family:'Inter';font-weight:500;font-display:swap;src:url(../fonts/Inter-500.woff2) format('woff2')}
@font-face{font-family:'Inter';font-weight:600;font-display:swap;src:url(../fonts/Inter-600.woff2) format('woff2')}

:root{
  --bg:#F7F6FB; --surface:#FFFFFF;
  --ink:#14113A; --ink-2:#3E3960; --muted:#5F5A7E; --faint:#6B6690;
  --line:#E4E0F1; --line-soft:#EFECF7;
  --violet:#7C3AED; --violet-deep:#6D28D9; --iris:#A78BFA; --indigo:#4338CA; --deep:#221C5E; --veil:#EDE9FE;
  --ok:#15803D; --warn:#B45309; --err:#B91C1C;
  --display:'Inter Tight',Inter,-apple-system,'Segoe UI',sans-serif;
  --body:Inter,-apple-system,'Segoe UI',sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,'Liberation Mono',monospace;
  --t-meta:12.5px; --t-small:14px; --t-ui:15.5px; --t-body:18px; --t-h3:21px;
  --t-h2:clamp(28px,3.4vw,40px); --t-h1:clamp(38px,5.4vw,64px); --t-stand:clamp(18px,1.7vw,21px);
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px; --s7:48px; --s8:64px; --s9:96px; --s10:128px;
  --r:12px; --r-sm:8px; --pill:999px;
  --lift:0 2px 4px rgba(20,17,58,.06),0 16px 48px rgba(20,17,58,.12);
  --page:1200px; --read:720px; --wide:960px; --gutter:32px;
}
@media(max-width:640px){:root{--gutter:20px}}

*{margin:0;padding:0;box-sizing:border-box}
@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{font-family:var(--body);font-size:16px;line-height:1.6;color:var(--ink-2);background:var(--bg);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
::selection{background:var(--veil);color:var(--ink)}
img,svg{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
:focus-visible{outline:2px solid var(--violet);outline-offset:2px;border-radius:4px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:absolute;left:var(--s4);top:-60px;z-index:100;background:var(--ink);color:#fff;padding:10px 16px;border-radius:var(--r-sm)}
.skip:focus{top:var(--s4)}

.wrap{max-width:calc(var(--page) + 2*var(--gutter));margin:0 auto;padding:0 var(--gutter)}
.read{max-width:var(--read)}
.d{color:var(--violet)}
h1,h2,h3{font-family:var(--display);color:var(--ink);font-weight:700;letter-spacing:-.03em}
h1{font-size:var(--t-h1);line-height:1.04}
h2{font-size:var(--t-h2);line-height:1.12}
h3{font-size:var(--t-h3);line-height:1.3;letter-spacing:-.02em}
.meta{font-size:14.5px;font-weight:500;color:var(--faint);display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s4)}
.meta span:first-child{color:var(--violet);font-weight:600}
.meta .dot{display:none}
.stand{font-size:var(--t-stand);line-height:1.6;color:var(--muted);max-width:var(--read)}

/* ---------- header ---------- */
.top{position:sticky;top:0;z-index:50;background:rgba(247,246,251,.9);backdrop-filter:saturate(1.4) blur(12px);
  -webkit-backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid var(--line)}
.top-in{display:flex;align-items:center;gap:var(--s6);height:68px}
.brand{display:flex;align-items:center;gap:var(--s3);flex-shrink:0}
.brand img{height:24px;width:auto}
.brand span{font-size:13px;font-weight:600;color:var(--ink);border:1px solid var(--line);border-radius:var(--pill);padding:2px 9px}
.menu{display:flex;align-items:center;gap:var(--s5);list-style:none;margin-right:auto}
.menu a{font-size:var(--t-ui);font-weight:500;color:var(--ink-2);padding:var(--s2) 0;border-bottom:2px solid transparent}
.menu a:hover{color:var(--ink)}
.menu a[aria-current=page],.menu a.here{color:var(--ink);border-bottom-color:var(--ink)}
.top-cta{display:flex;align-items:center;gap:var(--s2)}
.burger{display:none;width:40px;height:40px;align-items:center;justify-content:center;border-radius:var(--r-sm)}
.burger span{display:block;width:20px;height:2px;background:var(--ink);position:relative}
.burger span::before,.burger span::after{content:'';position:absolute;left:0;width:20px;height:2px;background:var(--ink)}
.burger span::before{top:-6px}.burger span::after{top:6px}
@media(max-width:1080px){
  .menu{display:none;position:absolute;top:68px;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;
    background:var(--surface);border-bottom:1px solid var(--line);box-shadow:var(--lift);padding:var(--s2) var(--gutter) var(--s5)}
  .menu.open{display:flex}
  .menu a{display:block;padding:14px 0;border-bottom:1px solid var(--line-soft);font-size:17px}
  .menu a[aria-current=page],.menu a.here{border-bottom-color:var(--line-soft);color:var(--violet)}
  .burger{display:inline-flex}
  .top-in{justify-content:space-between}
}
@media(max-width:420px){.top-cta .btn-quiet-pill{display:none}}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:var(--s2);font-size:var(--t-ui);font-weight:600;letter-spacing:-.01em;
  padding:12px 22px;border-radius:var(--pill);border:1px solid transparent;transition:transform .15s ease,background .15s ease,border-color .15s ease;white-space:nowrap}
.btn:hover{transform:translateY(-1px)}
.btn:disabled,.btn[aria-disabled=true]{opacity:.45;pointer-events:none}
.btn-primary{background:var(--ink);color:#fff}
.btn-primary:hover{background:var(--deep)}
.btn-secondary{border-color:var(--line);color:var(--ink);background:var(--surface)}
.btn-secondary:hover{border-color:var(--ink)}
.btn-sm{padding:8px 16px;font-size:14px}
.quiet{display:inline-block;font-weight:600;color:var(--ink);font-size:var(--t-ui);text-decoration:underline;text-decoration-color:rgba(124,58,237,.45);text-decoration-thickness:2px;text-underline-offset:5px;transition:text-decoration-color .15s}
.quiet:hover{text-decoration-color:var(--violet)}
.btn-quiet-pill{border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:14px;font-weight:600;padding:8px 14px;border-radius:var(--pill)}
.btn-quiet-pill:hover{border-color:var(--ink)}

/* ---------- page head ---------- */
.head{padding:var(--s8) 0 var(--s7)}
.head .meta{margin-bottom:var(--s5)}
.head h1{max-width:960px;margin-bottom:var(--s5)}
.crumbs{font-size:var(--t-small);color:var(--faint);margin-bottom:var(--s4)}
.crumbs a{color:var(--muted);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}
.crumbs a:hover{color:var(--ink)}

/* ---------- sections ---------- */
.sec{padding:var(--s9) 0}
.sec.band{background:var(--surface)}
.sec:first-of-type{border-top:0}
.sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--s5);margin-bottom:var(--s6);flex-wrap:wrap}
.sec-head h2{max-width:720px}
.sec-head p{color:var(--muted);max-width:560px;margin-top:var(--s3)}
.label{font-family:var(--display);font-size:22px;font-weight:700;letter-spacing:-.02em;color:var(--ink);margin-bottom:var(--s5);display:flex;justify-content:space-between;align-items:baseline;gap:var(--s4);flex-wrap:wrap}
.label em{font-family:var(--body);font-style:normal;color:var(--faint);font-weight:500;font-size:14.5px;letter-spacing:0}

/* ---------- home ---------- */
.hero{padding:var(--s9) 0 var(--s8)}
.hero-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:var(--s8);align-items:end}
@media(max-width:900px){.hero-grid{grid-template-columns:1fr;gap:var(--s6)}}
.hero h1{margin:var(--s5) 0}
.hero-side{border-left:1px solid var(--line);padding-left:var(--s6)}
@media(max-width:900px){.hero-side{border-left:0;padding-left:0;border-top:1px solid var(--line);padding-top:var(--s5)}}
.hero-side li{list-style:none;padding:var(--s3) 0;border-bottom:1px solid var(--line-soft)}
.hero-side li:last-child{border-bottom:0}
.hero-side a{display:flex;justify-content:space-between;gap:var(--s4);font-weight:600;color:var(--ink)}
.hero-side a span{font-size:13.5px;color:var(--faint);font-weight:500}
.hero-side a:hover{color:var(--violet)}

/* chapters: the explainers as a numbered list with their drawings */
.chapters{display:grid;grid-template-columns:repeat(2,1fr);gap:0 var(--s7)}
@media(max-width:860px){.chapters{grid-template-columns:1fr}}
.chapter{display:grid;grid-template-columns:150px 1fr;gap:var(--s5);padding:var(--s4);border-radius:18px;align-items:start;transition:background .2s}
.chapter:hover{background:var(--surface)}
.chapter:hover h3{color:var(--violet)}
.chapter .art{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);aspect-ratio:16/10;overflow:hidden}
.chapter .art svg{width:100%;height:100%}
.chapter .num{font-size:13.5px;font-weight:600;color:var(--violet);margin-bottom:4px;display:block}
.chapter h3{margin-bottom:6px;transition:color .15s}
.chapter p{font-size:15px;color:var(--muted);line-height:1.55}
@media(max-width:480px){.chapter{grid-template-columns:96px 1fr;gap:var(--s4)}}

/* rows: the newsroom and any index */
.rows{border-top:1px solid var(--line)}
.row{display:grid;grid-template-columns:1fr 180px 120px;gap:var(--s5);padding:18px 0;border-bottom:1px solid var(--line-soft);align-items:baseline}
.row:hover .row-title{color:var(--violet)}
.row-title{font-weight:600;color:var(--ink);font-size:16.5px;transition:color .15s}
.row-desc{display:block;font-weight:400;color:var(--muted);font-size:15px;margin-top:4px}
.row-cat,.row-date{font-size:14px;color:var(--faint)}
.rows-head{display:grid;grid-template-columns:1fr 180px 120px;gap:var(--s5);padding:0 0 var(--s3);font-size:13.5px;font-weight:600;color:var(--faint)}
/* on a phone: the title across, then the category and the date on one line (grid items cannot sit inline) */
@media(max-width:720px){.row,.rows-head{grid-template-columns:auto minmax(0,1fr)}.rows-head{display:none}.row{column-gap:6px;row-gap:4px}.row-title{grid-column:1/-1}.row-cat::after{content:'\00B7';margin-left:6px}}
.tabs{display:flex;gap:var(--s2);flex-wrap:wrap;margin-bottom:var(--s5)}
.tab{font-size:14px;font-weight:600;color:var(--ink-2);border:1px solid var(--line);background:var(--surface);border-radius:var(--pill);padding:8px 16px}
.tab[aria-pressed=true]{background:var(--ink);color:#fff;border-color:var(--ink)}
.empty{border:1px dashed var(--line);border-radius:var(--r);padding:var(--s6);color:var(--muted);background:var(--surface)}

/* blocks: two or three columns of plain text under hairlines */
.cols{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s6)}
.cols.two{grid-template-columns:repeat(2,1fr)}
@media(max-width:900px){.cols,.cols.two{grid-template-columns:1fr}}
.col{padding-top:var(--s2)}
.col h3::before{content:'';display:block;width:28px;height:3px;border-radius:3px;background:var(--violet);margin-bottom:var(--s4)}
.col h3{font-size:19px;margin-bottom:var(--s2)}
.col p{color:var(--muted);font-size:15.5px}
.col .quiet{margin-top:var(--s3)}
.col ul{list-style:none;margin-top:var(--s2)}
.col li{padding:6px 0;border-bottom:1px solid var(--line-soft);font-size:15px}

/* ---------- article ---------- */
.article{padding-bottom:var(--s9)}
.prose{max-width:var(--read)}
.prose>*+*{margin-top:var(--s5)}
.prose p,.prose li{font-size:var(--t-body);line-height:1.7;color:var(--ink-2)}
.prose h2{font-size:clamp(26px,2.8vw,32px);margin-top:var(--s8);line-height:1.15}
.prose h3{margin-top:var(--s6)}
.prose ul,.prose ol{padding-left:1.2em}
.prose li+li{margin-top:var(--s2)}
.prose a{color:var(--violet);text-decoration:underline;text-decoration-color:rgba(124,58,237,.35);text-underline-offset:3px}
.prose a:hover{color:var(--violet-deep);text-decoration-color:currentColor}
.prose strong{color:var(--ink);font-weight:600}
.prose sup a{text-decoration:none;font-family:var(--mono);font-size:12px;padding:0 1px}
.prose code,.code{font-family:var(--mono);font-size:.86em;background:var(--veil);color:var(--ink);padding:1px 6px;border-radius:5px}
.short{background:var(--surface);border-radius:16px;padding:var(--s5) var(--s6);box-shadow:0 1px 2px rgba(20,17,58,.04),0 12px 40px rgba(20,17,58,.06)}
.short b{display:block;font-size:14px;color:var(--violet);font-weight:600;margin-bottom:var(--s2)}
.short p{font-size:17px}
.formula{font-family:var(--mono);font-size:15px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s4) var(--s5);color:var(--ink);overflow-x:auto}
.sources{max-width:var(--read);margin-top:var(--s8);padding-top:var(--s5);border-top:1px solid var(--line)}
.sources h2{font-size:20px;margin-bottom:var(--s4)}
.sources ol{padding-left:1.4em}
.sources li{font-size:var(--t-small);color:var(--muted);line-height:1.55;margin-bottom:var(--s2)}
.sources a{color:var(--ink-2);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:2px;word-break:break-word}
.next{max-width:var(--read);margin-top:var(--s7);display:flex;justify-content:space-between;gap:var(--s5);flex-wrap:wrap;padding-top:var(--s5);border-top:1px solid var(--line)}
.next a{display:block;max-width:48%}
.next small{display:block;font-size:13.5px;font-weight:500;color:var(--faint);margin-bottom:4px}
.next b{color:var(--ink);font-family:var(--display);font-size:19px}
.next a:hover b{color:var(--violet)}
.next .right{text-align:right;margin-left:auto}

/* ---------- figures and the interactive stages ---------- */
.fig{max-width:var(--wide);margin:var(--s7) 0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.fig-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s4);padding:var(--s4) var(--s5);border-bottom:1px solid var(--line-soft);flex-wrap:wrap}
.fig-head b{font-size:14px;color:var(--violet);font-weight:600}
.fig-head span{font-weight:600;color:var(--ink);font-size:15.5px;margin-right:auto}
.stage{padding:var(--s5)}
.fig figcaption{padding:var(--s4) var(--s5);border-top:1px solid var(--line-soft);font-size:var(--t-small);color:var(--muted);line-height:1.55}
.fig figcaption .src{display:block;margin-top:6px;color:var(--faint)}
.fig figcaption a{text-decoration:underline;text-underline-offset:2px}
.controls{display:flex;flex-wrap:wrap;gap:var(--s4) var(--s6);align-items:center;margin-bottom:var(--s5)}
.control{display:flex;flex-direction:column;gap:6px;min-width:220px;flex:1}
.control label{font-size:14px;font-weight:600;color:var(--ink);display:flex;justify-content:space-between}
.control output{font-family:var(--mono);font-weight:600;color:var(--violet)}
input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:28px;background:transparent;cursor:pointer}
input[type=range]::-webkit-slider-runnable-track{height:4px;background:var(--line);border-radius:4px}
input[type=range]::-moz-range-track{height:4px;background:var(--line);border-radius:4px}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:50%;background:var(--ink);border:3px solid #fff;box-shadow:0 0 0 1px var(--ink);margin-top:-8px}
input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--ink);border:3px solid #fff;box-shadow:0 0 0 1px var(--ink)}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:var(--pill);padding:3px;background:var(--bg)}
.seg button{font-size:13.5px;font-weight:600;padding:6px 12px;border-radius:var(--pill);color:var(--ink-2)}
.seg button[aria-pressed=true]{background:var(--ink);color:#fff}
.steps-nav{display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap}
.steps-nav .count{font-family:var(--mono);font-size:13px;color:var(--faint);min-width:60px;text-align:center}
.readout{font-size:15px;color:var(--ink-2);margin-top:var(--s4);min-height:48px}
.readout b{color:var(--ink)}

/* bar chart rows (temperature, pre-training guesses) */
.bars{display:grid;gap:6px}
.bar{display:grid;grid-template-columns:120px 1fr 64px;gap:var(--s3);align-items:center;font-size:14px}
.bar .tok{font-family:var(--mono);color:var(--ink);white-space:pre;overflow:hidden;text-overflow:ellipsis}
.bar .track{display:block;height:18px;background:var(--line-soft);border-radius:4px;overflow:hidden}
.bar .fill{display:block;height:100%;background:var(--ink);border-radius:4px;width:0;transition:width .35s ease}
.bar.in .fill{background:var(--ink)}
.bar.out .fill{background:var(--iris)}
.bar.hit .fill{background:var(--violet)}
.bar .val{font-family:var(--mono);color:var(--ink-2);text-align:right}
.bar.rest .tok{font-family:var(--body);color:var(--faint)}
.bar.rest .fill{background:var(--line)}
@media(max-width:520px){.bar{grid-template-columns:92px 1fr 56px}}
@media(prefers-reduced-motion:reduce){.bar .fill{transition:none}}
.legend{display:flex;gap:var(--s5);flex-wrap:wrap;font-size:13px;color:var(--muted);margin-top:var(--s4)}
.legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}

/* tokens */
.toks{display:flex;flex-wrap:wrap;gap:6px;font-family:var(--mono);font-size:15px}
.toks span{border:1px solid var(--line);background:var(--bg);border-radius:6px;padding:4px 7px;white-space:pre;color:var(--ink)}
.toks span:nth-child(4n+2){background:#F3F0FE}.toks span:nth-child(4n+3){background:#F7F6FB}.toks span:nth-child(4n){background:#EEF0FB}
.toks span.split{border-color:var(--violet);background:var(--veil)}
.tok-row{padding:var(--s4) 0;border-bottom:1px solid var(--line-soft)}
.tok-row:last-child{border-bottom:0}
.tok-row p{font-size:14px;color:var(--faint);margin-bottom:var(--s2)}
.tok-row p b{color:var(--ink);font-weight:600}

/* the vector map */
.vmap{display:grid;grid-template-columns:1.3fr 1fr;gap:var(--s5)}
@media(max-width:780px){.vmap{grid-template-columns:1fr}}
.vmap svg{width:100%;height:auto;background:var(--bg);border-radius:var(--r-sm);border:1px solid var(--line-soft)}
.vmap .pt{cursor:pointer}
.vmap .pt circle{transition:r .15s}
.vmap .pt:focus{outline:none}
.vmap .pt:focus circle,.vmap .pt.sel circle{stroke:var(--violet);stroke-width:3}
.near{list-style:none}
.near li{padding:var(--s3) 0;border-bottom:1px solid var(--line-soft);display:flex;justify-content:space-between;gap:var(--s3);font-size:15px}
.near li b{font-family:var(--mono);color:var(--ink)}
.picked{font-weight:600;color:var(--ink);margin-bottom:var(--s3);font-size:16px}

/* sequence diagram (tools) and loop (feedback) */
.seq{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s3);margin-bottom:var(--s4)}
.lane{text-align:center;font-weight:600;font-size:14px;color:var(--ink);padding:var(--s2);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg)}
.lane.on{border-color:var(--ink);background:var(--surface);box-shadow:0 0 0 3px var(--veil)}
.msg{font-family:var(--mono);font-size:13.5px;line-height:1.55;background:var(--deep);color:#E9E5FF;border-radius:var(--r-sm);padding:var(--s4);white-space:pre-wrap;overflow-x:auto;min-height:120px}
.msg .k{color:#C4B5FD}.msg .s{color:#FDE68A}
.step-title{font-weight:600;color:var(--ink);margin-bottom:var(--s2)}
.choice{display:grid;grid-template-columns:1fr 1fr;gap:var(--s4)}
@media(max-width:640px){.choice{grid-template-columns:1fr}}
.choice button{text-align:left;border:1px solid var(--line);border-radius:var(--r);padding:var(--s4);background:var(--bg);font-size:15px;line-height:1.55;color:var(--ink-2);transition:border-color .15s}
.choice button:hover{border-color:var(--ink)}
.choice button[aria-pressed=true]{border-color:var(--violet);background:var(--veil);color:var(--ink)}
.choice button b{display:block;font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:var(--faint);margin-bottom:6px}
.pipeline{display:grid;gap:var(--s3)}
.stagebox{border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s3) var(--s4);background:var(--bg);font-size:15px;transition:border-color .2s,background .2s}
.stagebox b{display:block;color:var(--ink)}
.stagebox.on{border-color:var(--ink);background:var(--surface)}
.stagebox small{color:var(--muted)}
.drawing{width:100%;height:auto}

/* ---------- press and media kit ---------- */
.kit{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s5)}
@media(max-width:860px){.kit{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.kit{grid-template-columns:1fr}}
.asset{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);overflow:hidden;display:flex;flex-direction:column}
.asset .pv{aspect-ratio:16/10;display:flex;align-items:center;justify-content:center;padding:var(--s6);border-bottom:1px solid var(--line-soft)}
.asset .pv.dark{background:var(--ink)}
.asset .pv img{max-height:72px;width:auto}
.asset .pv img.icon{max-height:96px}
.asset .info{padding:var(--s4);display:flex;flex-direction:column;gap:var(--s2);flex:1}
.asset .info b{color:var(--ink)}
.asset,.kit .asset{border-radius:18px}
.asset .info span{font-size:14px;color:var(--muted)}
.asset .dl{display:flex;gap:var(--s2);flex-wrap:wrap;margin-top:auto;padding-top:var(--s2)}
.swatches{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s3)}
@media(max-width:720px){.swatches{grid-template-columns:repeat(2,1fr)}}
.sw{border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;background:var(--surface)}
.sw i{display:block;height:72px}
.sw div{padding:var(--s3);font-size:13.5px}
.sw b{display:block;color:var(--ink)}
.sw code{font-family:var(--mono);color:var(--muted);font-size:12.5px}
.boiler{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:var(--s5)}
.boiler p{font-size:16.5px;line-height:1.65;color:var(--ink-2)}
.boiler .btn{margin-top:var(--s4)}
.facts{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;font-size:15.5px}
.facts th,.facts td{text-align:left;padding:14px 18px;border-bottom:1px solid var(--line-soft);vertical-align:top}
.facts th{width:34%;color:var(--ink);font-weight:600}
.facts tr:last-child th,.facts tr:last-child td{border-bottom:0}
.press-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:var(--s7)}
@media(max-width:900px){.press-grid{grid-template-columns:minmax(0,1fr);gap:var(--s6)}}
.contact-card{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);padding:var(--s5)}
.contact-card b{display:block;color:var(--ink);margin-bottom:4px}
.contact-card p{color:var(--muted);font-size:15px}
.status{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;padding:3px 10px;border-radius:var(--pill);background:#E8F5EC;color:var(--ok)}
.status.no{background:#FBEFE6;color:var(--warn)}
.status::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor}

/* ---------- footer ---------- */
.foot{border-top:1px solid var(--line);padding:var(--s8) 0 var(--s6);background:var(--surface);margin-top:var(--s8)}
.foot-grid{display:grid;grid-template-columns:1.4fr repeat(4,1fr);gap:var(--s6)}
@media(max-width:960px){.foot-grid{grid-template-columns:1fr 1fr}}
.foot img{height:22px;width:auto;margin-bottom:var(--s3)}
.foot p{font-size:var(--t-small);color:var(--muted);max-width:300px}
.foot h2{font-family:var(--body);font-size:14px;line-height:1.4;letter-spacing:0;color:var(--ink);font-weight:600;margin-bottom:var(--s3)}
.foot ul{list-style:none}
.foot li{padding:5px 0}
.foot li a{font-size:var(--t-small);color:var(--ink-2)}
.foot li a:hover{color:var(--violet)}
.foot-base{margin-top:var(--s7);padding-top:var(--s4);border-top:1px solid var(--line-soft);display:flex;justify-content:space-between;gap:var(--s4);flex-wrap:wrap;font-size:13px;color:var(--faint)}

/* ---------- scroll stories (How AI works only): a sticky 3D stage, step cards that scroll over it ---------- */
.story{position:relative;background:radial-gradient(120% 90% at 70% 40%,#221C5E 0%,#14113A 55%,#0F0C2E 100%);color:#EDE9FE;isolation:isolate}
.story-stage{position:sticky;top:0;height:100vh;height:100svh;width:100%;overflow:hidden}
.story-stage canvas{display:block;width:100%!important;height:100%!important;opacity:0;transition:opacity .8s ease}
.story.is-live .story-stage canvas{opacity:1}   /* the scene fades in once it is built; the page's text is there first */
/* a shade that rises from the side where the step text sits (the left on wide screens, the foot on phones), so the
   text reads on the scene without a box, and a light vignette; over the scene's own labels too (after them, at
   the same level) */
.story-shade{display:none}
.story-stage::after{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;background:
  linear-gradient(90deg,rgba(8,6,26,.86) 0%,rgba(8,6,26,.6) 26%,rgba(8,6,26,0) 46%),
  radial-gradient(70% 60% at 50% 50%,transparent 55%,rgba(15,12,46,.5) 100%)}
.story-tip{position:absolute;z-index:3;pointer-events:none;font-size:14px;font-weight:600;color:#14113A;background:#F7F6FB;border-radius:8px;padding:6px 10px;opacity:0;transition:opacity .15s;max-width:260px}
/* text in the scene: page text over the canvas, placed by the engine each frame (engine.js, syncText) */
.story-text{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden;contain:strict}
.story-label{position:absolute;left:0;top:0;white-space:nowrap;text-align:center;visibility:hidden;transform-origin:50% 50%;
  font-kerning:normal;-webkit-font-smoothing:antialiased;text-shadow:0 1px 10px rgba(8,6,30,.55)}
.story-label.is-num{font-variant-numeric:tabular-nums;letter-spacing:.01em}
/* a panel in the scene (a message, a search result, an answer) is a column of text with a hairline, no box */
.story-panel{position:absolute;left:0;top:0;visibility:hidden;transform-origin:50% 50%;box-sizing:border-box;padding:2px 0 2px 18px;
  font:500 var(--fs)/1.45 var(--body);color:#EDE9FE;border-left:1px solid rgba(237,233,254,.25);text-shadow:0 1px 14px rgba(8,6,26,.9);
  -webkit-font-smoothing:antialiased}
.story-panel .ttl{display:block;font-weight:500;font-size:.86em;color:rgba(237,233,254,.55);margin-bottom:.7em}
.story-panel:not(.is-code) .ln+.ln{margin-top:.5em}
.story-panel .body{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:var(--max);overflow:hidden}
.story-panel .ln{display:block}
.story-panel .todo{color:transparent}
.story-panel.is-code .body{font:500 .9em/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap}
.story-panel.is-hero{padding:0;border:0;text-align:center;font-weight:600;line-height:1.16;letter-spacing:-.012em;color:#fff;
  text-wrap:balance;text-shadow:0 2px 24px rgba(8,6,26,.6)}
.story-panel.is-hero .ln+.ln{margin-top:0}
.story-panel.is-hero .ln:last-child::after{content:"";display:inline-block;width:.07em;height:.92em;margin-left:.1em;vertical-align:-.1em;
  background:#8B5CF6;animation:hq-caret 1.1s ease-in-out infinite alternate}
@keyframes hq-caret{from{opacity:1}to{opacity:.12}}
@media(prefers-reduced-motion:reduce){.story-panel.is-hero .ln:last-child::after{animation:none}}
.story-panel .k{font-style:normal;color:#C4B5FD}
.story-panel .v{font-style:normal;color:#FDE68A}
.story-steps{position:relative;z-index:2;margin-top:-100vh;margin-top:-100svh;pointer-events:none}
.step{min-height:115vh;display:flex;align-items:center;padding:0 var(--gutter)}
.step:first-child{min-height:100vh}
.step:last-child{min-height:120vh}
/* each step's text is set on the scene itself, with no box (owner, 29 October 2026: the boxed cards and text bubbles
   read as machine-made); it lines up with the page's grid */
.step .card{pointer-events:auto;width:min(420px,100%);margin-left:max(0px,calc((100vw - var(--page)) / 2));
  transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}
/* the steps are page text and show at once; only when the scene is running do the steps not being read fade out */
.story.is-live .step .card{opacity:0;transform:translateY(24px)}
.story.is-live .step.on .card{opacity:1;transform:none}
/* a link or control reached with the keyboard shows with its card, wherever the scroll has left it (WCAG 2.4.7) */
.story.is-live .step:focus-within .card{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.story .step .card{transition:none!important;transform:none!important}}
/* a step's short name is the rail's; in the text only a count of a real sequence shows ("Step 2 of 6") */
.card .kicker{display:none}
.card .kicker.count{display:block;font-size:14px;font-weight:500;color:rgba(237,233,254,.55);margin-bottom:12px;font-variant-numeric:tabular-nums}
.card h2{color:#FFFFFF;font-size:clamp(32px,3.1vw,46px);line-height:1.04;letter-spacing:-.038em;font-weight:600;margin-bottom:18px;max-width:12em;text-wrap:balance}
.card p{color:rgba(237,233,254,.78);font-size:18px;line-height:1.6;max-width:31em;text-wrap:pretty}
.card p+p{margin-top:10px}
.card a{color:#FFFFFF;text-decoration:underline;text-decoration-color:rgba(167,139,250,.6);text-underline-offset:3px}
.card a:hover{text-decoration-color:#FFFFFF}
.card .read{margin-top:14px;padding-top:12px;border-top:1px solid rgba(237,233,254,.16);font-size:15px;color:rgba(237,233,254,.92);min-height:46px;font-variant-numeric:tabular-nums}
.card .read b{color:#FFFFFF}
.card .ctl{margin-top:16px}
.card .ctl label{display:flex;justify-content:space-between;font-size:14px;font-weight:600;color:#FFFFFF;margin-bottom:4px}
.card .ctl output{font-variant-numeric:tabular-nums;color:#D8CCFE}
.card input[type=range]::-webkit-slider-runnable-track{background:rgba(167,139,250,.3)}
.card input[type=range]::-moz-range-track{background:rgba(167,139,250,.3)}
.card input[type=range]::-webkit-slider-thumb{background:#FFFFFF;border-color:#7C3AED;box-shadow:0 0 0 1px #7C3AED}
.card input[type=range]::-moz-range-thumb{background:#FFFFFF;border-color:#7C3AED;box-shadow:0 0 0 1px #7C3AED}
/* the story's controls: one quiet segmented strip, the chosen option filled */
.card .row-btns{display:inline-flex;gap:2px;flex-wrap:wrap;margin-top:14px;padding:3px;border-radius:24px;box-shadow:inset 0 0 0 1px rgba(237,233,254,.2)}
.card .pill{font-size:14px;font-weight:500;color:rgba(237,233,254,.8);border:0;border-radius:999px;padding:9px 16px;background:none;transition:background .15s,color .15s}
.card .pill:hover{background:rgba(237,233,254,.08);color:#FFFFFF}
.card .pill[aria-pressed=true],.card .pill[aria-pressed=true]:hover{background:#F7F6FB;color:#14113A}
.card ul.links{list-style:none;margin-top:12px}
.card ul.links li{padding:8px 0;border-top:1px solid rgba(237,233,254,.14)}
.card ul.links a{text-decoration:none;font-weight:600}
.card ul.links a:hover{color:#D8CCFE}
/* the rail of steps: the current step named, the others as short marks whose names show on hover; any of
   them jumps to its step */
.story-rail{position:absolute;right:22px;top:50%;transform:translateY(-50%);z-index:3;list-style:none;display:flex;flex-direction:column;gap:0;align-items:flex-end}
.story-rail button{font:inherit;font-size:12.5px;color:transparent;background:none;border:0;padding:6px 0 6px 14px;display:flex;align-items:center;gap:10px;cursor:pointer;white-space:nowrap;transition:color .3s}
.story-rail button::after{content:'';width:14px;height:2px;border-radius:2px;background:rgba(207,200,242,.35);transition:width .3s,background .3s}
.story-rail:hover button{color:rgba(207,200,242,.72)}
.story-rail button:hover{color:#FFFFFF}
.story-rail button:hover::after{background:#FFFFFF}
.story-rail li.on button{color:#FFFFFF}
.story-rail li.on button::after{width:30px;background:#A78BFA}
.story-head{position:absolute;left:0;right:0;top:0;z-index:3;padding:28px var(--gutter);pointer-events:none}
.story-head .crumbs,.story-head .crumbs a{color:rgba(207,200,242,.75)}
/* phones: the scene has the upper part of the screen and each card is read in the lower part, compact
   enough to leave the scene clear; svh, so the browser's toolbars showing and hiding do not move the steps. A phone
   held sideways (a short landscape screen) keeps the wide layout, text left and scene right; a tablet held upright takes
   this one (engine.js narrowOf) */
@media(max-width:860px) and (min-height:501px),(max-width:1100px) and (orientation:portrait){
  /* the rail becomes a row of segments over the scene: how far along you are, and a tap jumps to a step */
  .story-rail{flex-direction:row;top:70px;left:var(--gutter);right:var(--gutter);transform:none;gap:5px;align-items:stretch}
  .story-rail li{flex:1}
  .story-rail button,.story-rail:hover button{width:100%;padding:12px 0;font-size:0;gap:0;color:transparent}
  .story-rail button::after,.story-rail li.on button::after{width:100%;height:3px}
  .story-rail li.done button::after{background:rgba(167,139,250,.75)}
  .step{align-items:flex-end;padding-bottom:3vh;padding-bottom:3svh;min-height:105vh;min-height:105svh}
  /* the shade rises to just above the text being read, so the scene keeps the space above it: an element moved by
     engine.js with a transform, starting --shade-lead above the text and dark by --shade-fade below its own top. (A
     gradient set from a CSS variable, as before, was not repainted by Safari's engine when the variable changed, and
     the scene stayed covered.) */
  .story-stage::after{display:none}
  /* under the scene's own labels (z-index 0), which engine.js dims instead: over them, Safari's engine sometimes left the
     scene covered once the page had scrolled */
  .story-shade{display:block;position:absolute;left:0;right:0;top:0;height:calc(100% + 140px);z-index:0;pointer-events:none;
    --shade-lead:120px;--shade-fade:106px;transform:translate3d(0,45vh,0);will-change:transform;
    background:linear-gradient(180deg,rgba(8,6,26,0) 0,rgba(8,6,26,.93) var(--shade-fade,106px),rgba(8,6,26,.96) 100%)}
  /* the stage is as tall as the screen with Safari's bars showing (svh); when they slide away the page shows below it, so
     the page behind a story is the shade's own dark there, and no lighter strip appears under the text */
  .story{background:#08061A}
  .step .card{margin-left:0;padding:0 2px}
  .card .kicker.count{font-size:13px;margin-bottom:6px}
  .card h2{font-size:27px;margin-bottom:10px}
  .card p{font-size:16px;line-height:1.55}
  /* room for two lines from the start, so a readout that grows a line as the reader draws or slides does not push the
     card, and the whole page, down mid-step */
  .card .read{font-size:14px;margin-top:10px;padding-top:10px;min-height:calc(3.1em + 11px)}
  .card .ctl{margin-top:10px}
  .card .row-btns{margin-top:10px}
}
/* phones with a short screen (between Safari's bars an iPhone shows about 550 to 700 pixels): the step text a size
   smaller and tighter, and the shade's soft edge shorter, so the scene above it keeps room (engine.js frameRoom fits
   the scene into what is left) */
@media(max-width:860px) and (max-height:700px) and (orientation:portrait){
  .step{padding-bottom:2svh}
  .story-shade{--shade-lead:70px;--shade-fade:60px}
  .card h2{font-size:23px;margin-bottom:8px}
  .card p{font-size:15px;line-height:1.48}
  .card .read{font-size:13px;margin-top:8px;padding-top:8px}
  .card .ctl,.card .row-btns{margin-top:8px}
}
/* the temperature story's real answers: in the card on phones and upright tablets (on wide screens they float in the scene) */
.card .samples{display:none}
@media(max-width:860px) and (min-height:501px),(max-width:1100px) and (orientation:portrait){
  .card .samples{display:block;margin-top:10px;padding-top:10px;border-top:1px solid rgba(237,233,254,.16)}
  .card .samples p{font-size:13px;font-weight:500;color:rgba(237,233,254,.55);margin-bottom:4px}
  .card .samples ul{list-style:none}
  .card .samples li{font-size:14px;line-height:1.45;color:#EDE9FE;padding:3px 0}
}
@media(max-width:860px) and (max-height:700px) and (orientation:portrait){
  .card .samples{margin-top:8px;padding-top:8px}
  .card .samples li{font-size:13px;line-height:1.4;padding:2px 0}
}
/* a phone held sideways (Safari shows about 750 by 340 of an iPhone): the wide layout, with the step text a size smaller
   and narrower, so a step fits the short screen and the scene keeps the room beside it; the line under the stage gives
   way (the article credits the photograph) */
@media(max-height:500px) and (orientation:landscape){
  .step .card{width:min(340px,46vw)}
  .card .kicker.count{font-size:12.5px;margin-bottom:6px}
  .card h2{font-size:24px;margin-bottom:8px}
  .card p{font-size:14.5px;line-height:1.45}
  .card p+p{margin-top:6px}
  .card .read{font-size:13px;margin-top:8px;padding-top:8px}
  .card .ctl,.card .row-btns{margin-top:8px}
  .story-note{display:none}
}
/* touch screens: every control at least 44px tall (Apple's 44pt; WCAG 2.2 2.5.5), the slider's thumb larger */
@media(pointer:coarse){
  .card .pill{min-height:44px;padding:10px 16px;font-size:15px}
  .card input[type=range]{height:44px}
  .card input[type=range]::-webkit-slider-thumb{width:28px;height:28px;margin-top:-12px}
  .card input[type=range]::-moz-range-thumb{width:28px;height:28px}
}
/* tablets held upright: the phone layout, with the step text at the size it has on wide screens, in a wider column */
@media(min-width:600px) and (max-width:1100px) and (orientation:portrait){
  .step .card{width:min(580px,100%)}
  .card .kicker.count{font-size:14px;margin-bottom:10px}
  .card h2{font-size:36px;margin-bottom:14px}
  .card p{font-size:18px;line-height:1.58}
  .card .read{font-size:15px;margin-top:14px;padding-top:12px}
  .card .ctl,.card .row-btns{margin-top:14px}
  .card .samples li{font-size:15px}
}
/* the narrowest phones (320 pixels: an iPhone SE or mini with Display Zoom, and the width WCAG's reflow asks for): the step
   text a size smaller again, so the scene keeps some room above it, and a strip's options on one line */
@media(max-width:359px) and (orientation:portrait){
  .card h2{font-size:21px}
  .card p{font-size:14px;line-height:1.42}
  .card .read{font-size:12.5px}
  .card .samples li{font-size:12.5px}
  .card .pill{padding:10px 9px;font-size:13.5px}
}
.story.no-webgl .story-stage{display:none}
.story.no-webgl .story-steps{margin-top:0}
.story.no-webgl .step{min-height:auto;padding:24px var(--gutter)}
.story.no-webgl .step .card{opacity:1;transform:none}
.story-after{background:var(--bg)}
/* the header over a story page: dark, so it sits on the stage */
.brand .wm-w{display:none}
.top.dark-top{background:rgba(17,14,48,.78);border-bottom-color:rgba(167,139,250,.14)}
.dark-top .brand .wm{display:none}.dark-top .brand .wm-w{display:block}
.dark-top .brand span{color:#EDE9FE;border-color:rgba(167,139,250,.35)}
.dark-top .menu a{color:#CFC8F2}
.dark-top .menu a:hover{color:#FFFFFF}
.dark-top .menu a.here,.dark-top .menu a[aria-current=page]{color:#FFFFFF;border-bottom-color:#A78BFA}
.dark-top .btn-quiet-pill{background:transparent;color:#FFFFFF;border-color:rgba(167,139,250,.4)}
.dark-top .burger span,.dark-top .burger span::before,.dark-top .burger span::after{background:#FFFFFF}
@media(max-width:1080px){.dark-top .menu{background:#14113A;border-bottom-color:rgba(167,139,250,.2)}.dark-top .menu a{border-bottom-color:rgba(167,139,250,.12)}}
body.has-story{background:#14113A}

/* ---------- photographs (hq/photos.py): the backdrop of a page's opening, never a picture dropped in ---------- */
.top{transition:background-color .35s ease,border-color .35s ease}
.photo-head{position:relative;isolation:isolate;overflow:hidden;color:#fff;display:flex;flex-direction:column;justify-content:flex-end;
  min-height:clamp(520px,72vh,760px);padding:calc(68px + var(--s9)) 0 var(--s9)}
.has-photo main>.photo-head:first-child{margin-top:-69px}
.photo-head>.wrap{width:100%}
.ph-img,.ph-img img{position:absolute;inset:0;width:100%;height:100%;z-index:-3}
.ph-img img{object-fit:cover;filter:saturate(.9) contrast(1.05)}
@media(prefers-reduced-motion:no-preference){
  .ph-img img{animation:ph-in 2.8s cubic-bezier(.16,.7,.2,1) both}
  @keyframes ph-in{from{opacity:0;transform:scale(1.09)}to{opacity:1;transform:none}}
  @supports(animation-timeline:view()){
    .ph-img{animation:ph-drift linear both;animation-timeline:view();animation-range:exit 0% exit 100%}
    @keyframes ph-drift{to{transform:translateY(16%) scale(1.06)}}
  }
}
/* grade the photo towards the brand: a colour wash, then shade where the words sit */
.ph-grade{position:absolute;inset:0;z-index:-2;background:linear-gradient(115deg,#4338CA 0%,#7C3AED 100%);mix-blend-mode:color;opacity:.3}
.ph-shade{position:absolute;inset:0;z-index:-1;background:
  linear-gradient(90deg,rgba(20,17,58,.9) 0%,rgba(20,17,58,.66) 36%,rgba(20,17,58,.12) 72%,rgba(20,17,58,0) 100%),
  linear-gradient(0deg,rgba(20,17,58,.82) 0%,rgba(20,17,58,0) 50%),
  linear-gradient(180deg,rgba(20,17,58,.55) 0%,rgba(20,17,58,0) 22%),
  radial-gradient(90% 70% at 90% 110%,rgba(124,58,237,.38),rgba(124,58,237,0) 62%)}
.photo-head h1{color:#fff;text-shadow:0 2px 30px rgba(20,17,58,.45)}
.photo-head .stand{color:#DCD6F7;max-width:44ch}
.photo-head .meta,.photo-head .meta span{color:#CFC8F2}
.photo-head .meta span:first-child{color:#C4B5FD}
.photo-head .crumbs,.photo-head .crumbs a{color:rgba(220,214,247,.8)}
.photo-head .d{color:#A78BFA}
.ph-note{position:absolute;right:var(--gutter);bottom:var(--s4);max-width:min(440px,46vw);margin:0;
  font-size:12px;line-height:1.45;color:rgba(220,214,247,.66);text-align:right}
.ph-note a{color:#EDE9FE;text-decoration:underline;text-underline-offset:2px}
.photo-head .hero-side{border-left-color:rgba(167,139,250,.28);background:rgba(20,17,58,.42);backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);border-radius:var(--r);padding:var(--s3) var(--s5);border:1px solid rgba(167,139,250,.22)}
.photo-head .hero-side li{border-bottom-color:rgba(167,139,250,.16)}
.photo-head .hero-side a{color:#fff}
.photo-head .hero-side a span{color:#CFC8F2}
.photo-head .hero-side a:hover{color:#C4B5FD}
/* the home page's opening (30 October 2026): our top finding and a two-bar chart in place of a box of links that repeated
   the menu, and a way to the product. On the photo, so light ink on dark glass. */
.hero-ctas{display:flex;flex-wrap:wrap;gap:var(--s3);margin-top:var(--s6)}
.btn-light{background:#FFFFFF;color:var(--ink)}
.btn-light:hover{background:#EDE9FE}
.btn-glass{color:#FFFFFF;border-color:rgba(196,181,253,.5);background:rgba(20,17,58,.35)}
.btn-glass:hover{border-color:#FFFFFF}
.hero-find{background:rgba(20,17,58,.52);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(167,139,250,.24);
  border-radius:var(--r);padding:var(--s5)}
.hf-kicker{margin:0 0 var(--s3);font-size:13px;font-weight:600;color:#C4B5FD}
.hf-big{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--s4);align-items:center;margin:0 0 var(--s5)}
.hf-big b{font-family:var(--display);font-size:clamp(56px,6vw,80px);line-height:.9;letter-spacing:-.04em;color:#FFFFFF}
.hf-big span{font-size:15px;line-height:1.5;color:#DCD6F7}
.hf-bars{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.hf-bars li{display:grid;grid-template-columns:minmax(0,1fr) 44px;column-gap:var(--s3);row-gap:5px;align-items:center}
.hf-l{grid-column:1/-1;font-size:13px;line-height:1.35;color:#CFC8F2}
.hf-t{display:block;height:14px;background:rgba(237,233,254,.14);border-radius:4px;overflow:hidden}
.hf-f{display:block;height:100%;width:calc(var(--v) * 100%);min-width:2px;background:#A78BFA;border-radius:0 4px 4px 0}
.hf-v{font-size:14px;font-weight:700;color:#FFFFFF;font-variant-numeric:tabular-nums;text-align:right}
.hf-links{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s5);margin:var(--s5) 0 0;font-size:14px;font-weight:600}
.hf-links a{color:#FFFFFF;text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(167,139,250,.7)}
.hf-links a:hover{color:#C4B5FD}
.sec-head p a.inline{color:var(--violet);font-weight:600;text-decoration:underline;text-underline-offset:3px}
.has-photo .top.dark-top{background:linear-gradient(180deg,rgba(17,14,48,.6),rgba(17,14,48,0));border-bottom-color:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}
@media(max-width:640px){
  .photo-head{min-height:min(88svh,680px);padding-bottom:calc(var(--s9) + var(--s5))}
  .ph-shade{background:linear-gradient(0deg,rgba(20,17,58,.94) 0%,rgba(20,17,58,.7) 45%,rgba(20,17,58,.12) 75%,rgba(20,17,58,.45) 100%)}
  .ph-note{left:var(--gutter);text-align:left;max-width:none}
}
/* the stories: the photo in the moving background, said in one line at the foot of the stage */
.story-note{position:absolute;left:var(--gutter);bottom:14px;z-index:2;max-width:min(520px,70vw);margin:0;font-size:11.5px;line-height:1.4;color:rgba(207,200,242,.5)}
@media(max-width:860px) and (min-height:501px),(max-width:1100px) and (orientation:portrait){.story-note{display:none}}
.bg-credit{max-width:var(--read);margin:var(--s5) 0 0;font-size:var(--t-small);color:var(--faint);line-height:1.55}
.bg-credit a{text-decoration:underline;text-underline-offset:2px}
/* the tokens story: try a brand name with GPT-2's tokenizer */
.tok-try{margin-top:14px;padding-top:14px;border-top:1px solid rgba(167,139,250,.18)}
.tok-try label{display:block;font-size:13.5px;font-weight:600;color:#C4B5FD;margin-bottom:8px}
.tok-in{display:flex;gap:8px}
.tok-in input{flex:1;min-width:0;font:inherit;font-size:15px;color:#fff;background:rgba(20,17,58,.6);border:1px solid rgba(167,139,250,.4);border-radius:999px;padding:8px 14px}
.tok-in input:focus-visible{outline:2px solid #A78BFA;outline-offset:2px}
.tok-row{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 8px}
.tok-chip{display:inline-flex;flex-direction:column;align-items:center;gap:2px;padding:6px 10px;border-radius:10px;background:rgba(124,58,237,.28);border:1px solid rgba(167,139,250,.5)}
.tok-chip b{color:#fff;font-weight:600;font-size:15px;white-space:pre}
.tok-chip i{font-style:normal;font-family:var(--mono);font-size:11.5px;color:#C4B5FD}
/* phones: the pieces show in the scene above (answer.js), so in the card they are for screen readers only, and the card
   grows by its one sentence when the reader splits a name, not by a row of pieces that pushed the page up */
@media(max-width:860px),(max-width:1100px) and (orientation:portrait){.tok-row{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}}

/* ranking deep dives (content_deepdive.py): named in Iris, named first in Violet, a number on every bar */
.dd-bars{display:grid;gap:8px}
.dd-bar{display:grid;grid-template-columns:170px 1fr 92px;gap:var(--s3);align-items:center;font-size:14px}
.dd-name{color:var(--ink);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dd-track{position:relative;display:block;height:18px;background:var(--line-soft);border-radius:4px;overflow:hidden}
.dd-named,.dd-first{position:absolute;left:0;border-radius:0 4px 4px 0}
.dd-named{top:0;bottom:0;background:var(--iris)}
.dd-first{top:5px;bottom:5px;background:var(--violet)}
.dd-bars .dd-bar:only-child .dd-first,.dd-track:not(:has(.dd-named)) .dd-first{top:0;bottom:0}
.dd-val{font-family:var(--mono);color:var(--ink-2);text-align:right;line-height:1.25}
.dd-val small{display:block;font-size:11.5px;color:var(--faint)}
.dd-heat td,.dd-heat th,.dd-lead td,.dd-lead th{padding:7px 10px;font-size:13.5px;text-align:left;white-space:nowrap}
.dd-heat td{font-family:var(--mono);text-align:right;border:2px solid var(--surface)}
.dd-lead th[scope=row]{white-space:normal;min-width:220px;font-weight:500;color:var(--ink-2)}
.dd-table{margin-top:var(--s4);font-size:14px}
.dd-table summary{cursor:pointer;color:var(--ink);font-weight:600}
.dd-cite{font-size:var(--t-small);color:var(--muted);margin-top:6px}
.dd-dl a{font-weight:600;text-decoration:underline;text-underline-offset:2px}
@media(max-width:520px){.dd-bar{grid-template-columns:110px 1fr 76px}}
.tbl{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:var(--s3)}
.tbl table{border-collapse:collapse;width:100%;font-size:14px}
.tbl th{font-weight:600;color:var(--ink);background:var(--bg)}
.tbl td,.tbl th{padding:7px 10px;border-bottom:1px solid var(--line-soft);text-align:left}
.prose .dd-wide{width:min(var(--wide),calc(100vw - 2 * var(--gutter)));max-width:none}
.prose blockquote{border-left:3px solid var(--iris);padding:2px 0 2px var(--s5);margin:var(--s5) 0 0}
.prose blockquote p{color:var(--ink);font-size:18px;line-height:1.6}
.prose blockquote .dd-cite{font-size:var(--t-small);color:var(--muted);margin-top:6px}
.dd-heat th[scope=row],.dd-lead th[scope=row]{position:sticky;left:0;background:var(--surface);z-index:1}
.dd-lic{font-size:var(--t-small);color:var(--muted)}
/* studies (content_study.py): the deep dives' bars, grouped by what a crawler does */
.sd-group{font-size:13px;font-weight:600;color:var(--muted);margin:var(--s5) 0 var(--s3)}
.sd-group:first-child{margin-top:0}
.sd-vs{font-family:var(--body);color:var(--faint);font-size:12px}
.sd-bots code{font-size:13px}
.sd-bots td,.sd-bots th{font-size:13.5px;vertical-align:top}
.dd-name small{display:block;font-size:11.5px;color:var(--faint);font-weight:400;line-height:1.3}
@media(max-width:520px){.sd-group+.dd-bars .dd-name{white-space:normal;overflow-wrap:anywhere}}
.sd-tech{margin:var(--s4) 0;font-size:15px}
.sd-tech summary{cursor:pointer;font-weight:600;color:var(--ink)}
/* the seven assistants (content_assistants.py) */
.as-glance th[scope=row]{position:sticky;left:0;background:var(--surface);z-index:1;white-space:nowrap}
.as-glance th[scope=row] a{text-decoration:underline;text-underline-offset:2px}
.as-glance td,.as-glance th{font-size:14px;vertical-align:top}
.as-maker{color:var(--muted)}
.as-facts{margin:var(--s4) 0 var(--s6)}
.as-facts dt{font-weight:600;color:var(--ink);margin-top:var(--s4)}
.as-facts dd{margin:4px 0 0}
.as-src{color:var(--muted);font-size:.92em}
.as-src a{text-decoration:underline;text-underline-offset:2px}
.prose .dd-cite{font-size:var(--t-small);color:var(--muted)}
@media(max-width:520px){.as-glance th[scope=row]{white-space:normal;min-width:96px}}
/* the assistants page: findings, where answers come from, the ads timeline, fact cards */
.as-found li{margin-bottom:var(--s3)}
.as-map{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s4)}
.as-group{border-top:3px solid var(--violet);padding-top:var(--s3)}
.as-group:nth-child(2),.as-group:nth-child(3){border-top-color:var(--iris)}
.as-group:nth-child(4){border-top-color:var(--line)}
.as-group-h{font-weight:600;color:var(--ink);font-size:15px;margin:0}
.as-group-note{font-size:13px;color:var(--muted);margin:4px 0 var(--s3);line-height:1.45}
.as-group ul{list-style:none;margin:0;padding:0;display:grid;gap:var(--s2)}
.as-group li a{font-weight:600;color:var(--ink);text-decoration:underline;text-underline-offset:2px}
.as-group li span{display:block;font-size:13px;color:var(--muted)}
@media(max-width:860px){.as-map{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.as-map{grid-template-columns:1fr}}
.as-kinds{display:flex;flex-wrap:wrap;gap:var(--s4);font-size:13px;color:var(--muted);margin-bottom:var(--s4)}
.as-k::before{content:"";display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:0}
.as-k-ads::before,.as-time .as-k-ads::before{background:var(--violet)}
.as-k-plan::before,.as-time .as-k-plan::before{background:var(--iris)}
.as-k-none::before,.as-time .as-k-none::before{background:var(--surface);box-shadow:inset 0 0 0 2px var(--faint)}
.as-time{list-style:none;margin:0;padding:0 0 0 18px;border-left:2px solid var(--line-soft)}
.as-time li{position:relative;padding:0 0 var(--s4) var(--s3)}
.as-time li::before{content:"";position:absolute;left:-25px;top:6px;width:12px;height:12px;border-radius:50%}
.as-time time{display:block;font-size:13px;font-weight:600;color:var(--muted)}
.as-time p{margin:2px 0 0;font-size:15px}
.as-facts{display:grid;grid-template-columns:190px 1fr;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);margin:var(--s3) 0 var(--s6);overflow:hidden}
.as-facts dt,.as-facts dd{margin:0;padding:var(--s3) var(--s4);border-top:1px solid var(--line-soft)}
.as-facts dt:first-of-type,.as-facts dt:first-of-type+dd{border-top:0}
.as-facts dt{font-weight:600;color:var(--ink);font-size:14px}
.as-facts dd{font-size:15px}
@media(max-width:620px){.as-facts{grid-template-columns:1fr}.as-facts dd{border-top:0;padding-top:0}}
.prose .as-group-h{font-size:15px;margin:0}
.prose .as-group-note{font-size:13px;line-height:1.45;margin:4px 0 var(--s3)}
.prose .as-time p{font-size:15px;margin:2px 0 0}
/* the assistants page, visual version: matrix, tags, lanes, tiles, cards */
.as-tag{display:inline-block;font-size:12.5px;font-weight:600;line-height:1.2;padding:5px 10px;border-radius:999px;background:var(--line-soft);color:var(--ink-2);white-space:nowrap}
.as-f-own{background:var(--violet);color:#fff}
.as-f-google{background:var(--veil);color:var(--violet-deep)}
.as-f-bing{background:var(--deep);color:#fff}
.as-f-web{background:var(--surface);color:var(--muted);box-shadow:inset 0 0 0 1.5px var(--line)}
.as-a-yes{background:var(--ink);color:#fff}
.as-a-test{background:var(--surface);color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--ink)}
.as-a-plan{background:var(--surface);color:var(--muted);box-shadow:inset 0 0 0 1.5px var(--faint)}
.as-a-none{background:var(--line-soft);color:var(--muted)}
.as-matrix{margin:var(--s6) 0}
.as-matrix ol{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);overflow:hidden}
.as-mhead,.as-matrix li{display:grid;grid-template-columns:1.2fr 1.1fr 1.2fr .9fr 1.4fr;gap:var(--s3);align-items:center}
.as-mhead{font-size:12.5px;font-weight:600;color:var(--muted);padding:0 var(--s4) var(--s2)}
.as-matrix li{padding:var(--s3) var(--s4);border-top:1px solid var(--line-soft)}
.as-matrix li:first-child{border-top:0}
.as-who{font-weight:700;color:var(--ink);font-size:16px;text-decoration:none}
.as-who small{display:block;font-weight:400;font-size:12.5px;color:var(--muted)}
.as-who:hover{text-decoration:underline}
.as-credit{font-size:14px;color:var(--ink-2)}
.as-shut{display:flex;align-items:center;gap:var(--s3)}
.as-meter{flex:1;height:10px;background:var(--line-soft);border-radius:5px;overflow:hidden}
.as-meter span{display:block;height:100%;background:var(--violet);border-radius:0 5px 5px 0}
.as-pct{font-size:14px;font-weight:600;color:var(--ink);min-width:92px;line-height:1.2}
.as-pct small{display:block;font-weight:400;font-size:12px;color:var(--muted)}
.as-none{color:var(--muted);font-weight:400}
@media(max-width:760px){.as-mhead{display:none}.as-matrix li{grid-template-columns:1fr 1fr;row-gap:var(--s2)}
  .as-who{grid-column:1/-1}.as-shut{grid-column:1/-1}}
.as-found{margin:var(--s5) 0}
.as-g-own .as-group-h{color:var(--violet)}
.as-group li a{display:inline-block;font-weight:700;font-size:16px;color:var(--ink);text-decoration:none;padding:6px 12px;border-radius:999px;background:var(--line-soft)}
.as-g-own li a{background:var(--violet);color:#fff}
.as-g-google li a{background:var(--veil);color:var(--violet-deep)}
.as-g-bing li a{background:var(--deep);color:#fff}
.as-g-web li a{background:var(--surface);box-shadow:inset 0 0 0 1.5px var(--line)}
.as-group li span{margin:4px 0 0 4px}
.as-lanes{margin:var(--s4) 0 var(--s3)}
.as-lane,.as-axis{display:grid;grid-template-columns:150px 1fr;align-items:center;gap:var(--s3)}
.as-lane{height:34px;border-top:1px solid var(--line-soft)}
.as-lane-name{font-size:14px;font-weight:600;color:var(--ink)}
.as-track{position:relative;height:100%}
.as-track::before{content:"";position:absolute;left:0;right:0;top:50%;border-top:2px solid var(--line-soft)}
.as-dot{position:absolute;top:50%;width:16px;height:16px;margin:-8px 0 0 -8px;border-radius:50%;cursor:help}
.as-dot.as-k-ads{background:var(--violet)}
.as-dot.as-k-plan{background:var(--iris)}
.as-dot.as-k-none{background:var(--surface);box-shadow:inset 0 0 0 3px var(--faint)}
.as-ticks{height:24px}
.as-ticks::before{display:none}
.as-tick{position:absolute;top:2px;transform:translateX(-50%);font-size:12.5px;color:var(--muted)}
.as-tick::before{content:"";position:absolute;left:50%;bottom:100%;height:238px;border-left:1px dashed var(--line)}
@media(max-width:620px){.as-lane,.as-axis{grid-template-columns:96px 1fr}.as-lane-name{font-size:12.5px}}
.as-do{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s4);margin:var(--s4) 0 var(--s6)}
.as-do>div{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:var(--s4)}
.prose .as-do p{font-size:14.5px;margin:0;line-height:1.5}
.prose .as-do .as-do-h{font-weight:700;color:var(--ink);font-size:16px;margin-bottom:var(--s2)}
@media(max-width:860px){.as-do{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.as-do{grid-template-columns:1fr}}
.as-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--s4);align-items:start;margin:var(--s4) 0 var(--s6)}
.as-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:var(--s4) var(--s5)}
.prose .as-card h3{margin:0;font-size:22px}
.prose .as-card .as-maker{font-size:14px;margin:2px 0 var(--s3)}
.as-tags{display:flex;flex-wrap:wrap;gap:6px}
.as-card details{margin-top:var(--s3)}
.as-card summary{cursor:pointer;font-weight:600;color:var(--violet);font-size:14.5px}
.as-card .as-facts{grid-template-columns:1fr;border:0;margin:var(--s3) 0 0;background:none}
.as-card .as-facts dt{padding:var(--s3) 0 0;border:0}
.as-card .as-facts dd{padding:2px 0 var(--s2);border:0;font-size:14.5px}
@media(max-width:760px){.as-cards{grid-template-columns:1fr}}
.as-matrix li .as-tag{justify-self:start}
/* the assistants page, interactive layer (assistants.js) */
.as-focus{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:var(--s5) 0 var(--s3)}
.as-focus[hidden]{display:none}
.as-focus span{font-size:13.5px;font-weight:600;color:var(--muted);margin-right:4px}
.as-focus button,.as-dest button{font:600 13.5px var(--body);color:var(--ink);background:var(--surface);border:1.5px solid var(--line);border-radius:999px;padding:7px 13px;min-height:36px;cursor:pointer}
.as-focus button[aria-pressed=true],.as-dest button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}
.as-focus .as-all{color:var(--muted);border-style:dashed}
.as-focus button:focus-visible,.as-dest button:focus-visible,.as-sort:focus-visible,.as-dot:focus-visible,.as-lane-name:focus-visible{outline:2px solid var(--violet);outline-offset:2px}
.as-page [data-a]{transition:opacity .2s}
.as-page .is-dim{opacity:.22}
@media(prefers-reduced-motion:reduce){.as-page [data-a],.as-wire{transition:none}}
.as-sort{all:unset;cursor:pointer;font-size:12.5px;font-weight:600;color:var(--muted)}
.as-sort[aria-pressed=true]{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.as-sort:hover{color:var(--ink)}
.as-flow{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:clamp(56px,12vw,170px);align-items:center}
.as-wires{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.as-wire{fill:none;stroke-width:2.5;transition:opacity .2s}
.as-wire.is-dim{opacity:.12}
.as-w-own{stroke:var(--violet)}.as-w-google{stroke:var(--iris)}.as-w-bing{stroke:var(--deep)}.as-w-web{stroke:var(--faint);stroke-dasharray:4 4}
.as-srcs,.as-dest{list-style:none;margin:0;padding:0;display:grid;gap:var(--s3)}
.as-srcs li{position:relative;z-index:1;background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--violet);border-radius:var(--r);padding:var(--s3) var(--s4)}
.as-srcs .as-s-google{border-left-color:var(--iris)}.as-srcs .as-s-bing{border-left-color:var(--deep)}.as-srcs .as-s-web{border-left-color:var(--faint)}
.as-srcs b{display:block;color:var(--ink);font-size:15px}
.prose .as-srcs span{display:block;font-size:13px;color:var(--muted);line-height:1.4;margin-top:2px}
.as-dest li{position:relative;z-index:1;display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px}
.prose .as-dest span{font-size:13px;color:var(--muted)}
.as-d-own button{border-color:var(--violet)}.as-d-google button{border-color:var(--iris)}.as-d-bing button{border-color:var(--deep)}
@media(max-width:620px){.as-flow{column-gap:34px}.as-srcs li{padding:var(--s2) var(--s3)}.prose .as-srcs span{display:none}
  .as-dest li{flex-direction:column;align-items:flex-start;gap:2px}}
button.as-dot{border:0;padding:0}
.as-dot[aria-pressed=true]{outline:3px solid var(--ink);outline-offset:2px}
.as-dot::after{content:"";position:absolute;inset:-12px}
button.as-lane-name{all:unset;cursor:pointer;font-size:14px;font-weight:600;color:var(--ink)}
button.as-lane-name[aria-pressed=true]{text-decoration:underline;text-underline-offset:3px}
@media(max-width:620px){button.as-lane-name{font-size:12.5px}}
.as-event{background:var(--bg);border:1px solid var(--line-soft);border-radius:var(--r);padding:var(--s3) var(--s4);margin:var(--s3) 0}
.as-event time{display:block;font-size:13px;font-weight:600;color:var(--muted)}
.prose .as-event p{margin:2px 0 0;font-size:15px}
/* the assistants page, high-end pass: dark opening with the source diagram, quiet matrix, dark ads band */
.as-hero{position:relative;overflow:hidden;color:#fff;padding:var(--s8) 0 var(--s7);
  background:radial-gradient(70% 90% at 85% 20%,rgba(124,58,237,.42),rgba(124,58,237,0) 60%),
             radial-gradient(60% 70% at 10% 100%,rgba(67,56,202,.35),rgba(67,56,202,0) 60%),linear-gradient(160deg,#221C5E 0%,#14113A 70%)}
.as-hero-in{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(32px,5vw,72px);align-items:center}
.as-hero h1{color:#fff;font-size:clamp(34px,4.2vw,56px);line-height:1.04;margin:0 0 var(--s5)}
.as-hero .stand{color:#DCD6F7;max-width:40ch}
.as-hero .meta,.as-hero .meta span{color:#CFC8F2}
.as-hero .meta span:first-child{color:#C4B5FD}
.as-hero .crumbs,.as-hero .crumbs a{color:rgba(220,214,247,.8)}
.as-flow-fig{margin:0}
.as-flow-fig figcaption{font-size:12.5px;color:rgba(220,214,247,.7);margin-top:var(--s4);line-height:1.5}
.as-hero .as-srcs li{background:rgba(255,255,255,.06);border:1px solid rgba(167,139,250,.22);border-left:4px solid var(--violet);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.as-hero .as-srcs .as-s-google{border-left-color:#C4B5FD}.as-hero .as-srcs .as-s-bing{border-left-color:#818CF8}.as-hero .as-srcs .as-s-web{border-left-color:rgba(220,214,247,.5)}
.as-hero .as-srcs b{color:#fff}
.as-hero .as-srcs span,.as-hero .as-dest span{color:rgba(220,214,247,.72);font-size:12.5px;line-height:1.4;display:block;margin-top:2px}
.as-hero .as-dest button{background:rgba(20,17,58,.55);color:#fff;border:1.5px solid rgba(167,139,250,.55);font-size:14px}
.as-hero .as-d-own button{border-color:#A78BFA}.as-hero .as-d-google button{border-color:#C4B5FD}.as-hero .as-d-bing button{border-color:#818CF8}.as-hero .as-d-web button{border-color:rgba(220,214,247,.45)}
.as-hero .as-dest button[aria-pressed=true]{background:#fff;color:var(--ink);border-color:#fff}
.as-hero .as-wire{stroke-width:2.2;filter:drop-shadow(0 0 6px rgba(167,139,250,.65))}
.as-hero .as-w-own{stroke:#A78BFA}.as-hero .as-w-google{stroke:#DDD6FE}.as-hero .as-w-bing{stroke:#818CF8}.as-hero .as-w-web{stroke:rgba(220,214,247,.55)}
.as-wire.as-draw{stroke-dasharray:1;stroke-dashoffset:1;animation:as-draw 1.1s cubic-bezier(.4,0,.2,1) forwards}
.as-wire.as-w-web.as-draw{stroke-dasharray:none;stroke-dashoffset:0;opacity:0;animation:as-fade .8s .6s forwards}
.as-dest li:nth-child(2) .as-wire{animation-delay:.08s}
@keyframes as-draw{to{stroke-dashoffset:0}}
@keyframes as-fade{to{opacity:1}}
@media(prefers-reduced-motion:reduce){.as-wire.as-draw{animation:none;stroke-dasharray:none;stroke-dashoffset:0;opacity:1}}
@media(max-width:900px){.as-hero-in{grid-template-columns:1fr}.as-hero{padding:var(--s7) 0 var(--s6)}}
.prose .as-intro{font-size:19px;color:var(--ink-2);margin-top:var(--s6)}
.as-focus{margin-top:var(--s5)}
/* matrix: quieter, bigger numbers */
.as-matrix ol{border:0;border-radius:0;background:none;border-top:2px solid var(--ink)}
.as-matrix li{padding:var(--s4) var(--s2);border-top:1px solid var(--line)}
.as-matrix li:first-child{border-top:0}
.as-who{font-family:var(--display);font-size:19px;letter-spacing:-.01em}
.as-key{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:500;color:var(--ink-2)}
.as-key i{width:10px;height:10px;border-radius:50%;flex:none;background:var(--faint)}
.as-key.as-f-own i{background:var(--violet)}.as-key.as-f-google i{background:var(--iris)}.as-key.as-f-bing i{background:var(--indigo)}
.as-key.as-f-web i{background:var(--surface);box-shadow:inset 0 0 0 2px var(--faint)}
.as-key.as-a-yes i{background:var(--ink)}.as-key.as-a-test i{background:var(--surface);box-shadow:inset 0 0 0 2.5px var(--ink)}
.as-key.as-a-plan i{background:var(--surface);box-shadow:inset 0 0 0 2px var(--faint)}.as-key.as-a-none i{background:var(--line)}
.as-matrix .as-key{background:none;box-shadow:none;padding:0}
.as-pct{font-family:var(--display);font-size:24px;font-weight:700;letter-spacing:-.02em;min-width:110px}
.as-pct small{font-family:var(--body);letter-spacing:0;font-weight:500}
.as-meter{height:8px}
/* the ads band */
.as-band{background:linear-gradient(180deg,#14113A 0%,#1B1650 100%);color:#fff;padding:var(--s8) 0;margin:var(--s7) 0}
.as-band h2{color:#fff;margin:0 0 var(--s3)}
.as-band .as-band-stand{color:#DCD6F7;max-width:62ch;margin:0 0 var(--s5)}
.as-band .as-kinds,.as-band .as-tick{color:rgba(220,214,247,.75)}
.as-band .as-lane{border-top-color:rgba(167,139,250,.16);height:44px}
.as-band button.as-lane-name{color:#fff;font-size:15px}
.as-band .as-track::before{border-top-color:rgba(167,139,250,.22)}
.as-band .as-tick::before{border-left-color:rgba(167,139,250,.2);height:308px}
.as-band .as-dot{width:18px;height:18px;margin:-9px 0 0 -9px}
.as-band .as-dot.as-k-ads{background:#A78BFA;box-shadow:0 0 0 4px rgba(167,139,250,.18),0 0 14px rgba(167,139,250,.7)}
.as-band .as-dot.as-k-plan{background:#DDD6FE}
.as-band .as-dot.as-k-none{background:#14113A;box-shadow:inset 0 0 0 3px rgba(220,214,247,.7)}
.as-band .as-k-ads::before{background:#A78BFA}.as-band .as-k-plan::before{background:#DDD6FE}.as-band .as-k-none::before{background:#14113A;box-shadow:inset 0 0 0 2px rgba(220,214,247,.7)}
.as-band .as-dot[aria-pressed=true]{outline-color:#fff}
.as-band .as-event{background:rgba(255,255,255,.06);border-color:rgba(167,139,250,.25)}
.as-band .as-event time{color:#C4B5FD}
.as-band .as-event p{color:#fff;font-size:16px;margin:2px 0 0}
.as-band .as-event a,.as-band .as-time a{color:#DDD6FE}
.as-band .as-src{color:rgba(220,214,247,.75)}
.as-band details summary{color:#fff}
.as-band .as-time{border-left-color:rgba(167,139,250,.25)}
.as-band .as-time time{color:#C4B5FD}
.as-band .as-time p{color:#E9E5FB}
.as-band .is-dim{opacity:.25}
@media(max-width:620px){.as-band .as-tick::before{height:308px}.as-band button.as-lane-name{font-size:13px}}
.as-pct.as-none{font-family:var(--body);font-size:14px;font-weight:400;letter-spacing:0;color:var(--muted)}
.prose .as-who,.prose .as-who small{text-decoration:none}
.prose .as-who{color:var(--ink)}
.prose .as-who:hover{color:var(--violet)}
.as-page .as-top{padding-bottom:0}
.as-page .as-top .prose>:last-child{margin-bottom:0}
.as-keys{list-style:none;margin:var(--s3) 0 0;padding:0;display:grid;gap:6px}
.as-keys .as-key{font-size:14px}
.as-key i.as-i-credit{background:var(--surface);box-shadow:inset 0 0 0 2px var(--violet);border-radius:3px}
.as-key i.as-i-shut{background:linear-gradient(90deg,var(--violet) 50%,var(--line-soft) 50%);border-radius:2px;width:14px;height:6px}
.as-card{border-top:4px solid var(--line)}
.as-card:has(.as-f-own){border-top-color:var(--violet)}.as-card:has(.as-f-google){border-top-color:var(--iris)}
.as-card:has(.as-f-bing){border-top-color:var(--indigo)}
.as-keys .as-key{background:none;box-shadow:none;padding:0;color:var(--ink-2);border-radius:0;white-space:normal}
.prose .as-keys li{margin:0}
/* the big-brands study (content_brands.py): the dot chart in the dark opening, the heat table, the company list */
.bb-hero-in{grid-template-columns:minmax(0,4fr) minmax(0,7fr)}
.bb-hero-fig{margin:0}
.bb-legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12.5px;color:rgba(220,214,247,.8);margin-bottom:var(--s4)}
.bb-key{display:inline-flex;align-items:center;gap:6px}
.bb-key i,.bb-dot{width:12px;height:12px;border-radius:50%;flex:none}
.bb-shut,.bb-key.bb-shut i{background:#A78BFA;box-shadow:0 0 8px rgba(167,139,250,.8)}
.bb-open,.bb-key.bb-open i{background:rgba(220,214,247,.28)}
.bb-all,.bb-key.bb-all i{background:#F0ABFC}
.bb-unread,.bb-key.bb-unread i{background:transparent;box-shadow:inset 0 0 0 1.5px rgba(220,214,247,.45)}
.bb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--s4) var(--s5)}
.bb-sector{font-size:12.5px;font-weight:600;color:#fff;margin:0 0 6px;display:flex;justify-content:space-between;gap:8px}
.bb-sector span{color:#C4B5FD;font-weight:500}
.bb-dots{display:flex;flex-wrap:wrap;gap:4px}
.bb-field .bb-dot{cursor:pointer;position:relative}
.bb-dot.is-on{outline:2px solid #fff;outline-offset:2px}
.bb-field:focus-visible{outline:2px solid #fff;outline-offset:10px;border-radius:8px}
.bb-pick{font-size:14px;color:#fff;margin:var(--s4) 0 0;min-height:1.5em}
.bb-hero-fig figcaption{font-size:12.5px;color:rgba(220,214,247,.7);margin-top:var(--s2)}
@media(max-width:900px){.bb-hero-in{grid-template-columns:1fr}}
@media(max-width:520px){.bb-grid{grid-template-columns:repeat(2,1fr);gap:var(--s3)}.bb-key i,.bb-dot{width:10px;height:10px}}
.bb-found{margin:var(--s6) 0}
.bb-heat th small,.bb-heat thead small{display:block;font-weight:400;font-size:11.5px;color:var(--muted)}
.bb-heat thead th{vertical-align:bottom;font-size:12.5px}
.bb-heat tbody th[scope=row]{font-weight:600;color:var(--ink);white-space:nowrap}
.bb-heat .bb-all th,.bb-heat .bb-all td{border-top:2px solid var(--ink)}
.bb-lookup{margin:var(--s4) 0 var(--s6)}
.bb-search{display:flex;align-items:center;gap:var(--s3);margin-bottom:var(--s3);flex-wrap:wrap}
.bb-search span{font-weight:600;color:var(--ink);font-size:15px}
.bb-search input{flex:1;min-width:220px;font:15px var(--body);padding:10px 14px;border:1.5px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink)}
.bb-search input:focus-visible{outline:2px solid var(--violet);outline-offset:2px}
.bb-scroll{max-height:520px;overflow:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);content-visibility:auto;contain-intrinsic-size:auto 520px}
.bb-table{font-size:13.5px}
.bb-table thead th{position:sticky;top:0;z-index:2;background:var(--bg);font-size:12.5px;white-space:nowrap}
.bb-table th[scope=row]{position:sticky;left:0;background:var(--surface);z-index:1;font-weight:600;color:var(--ink);min-width:170px}
.bb-table th[scope=row] small{display:block;font-weight:400;color:var(--muted);font-size:12px}
.bb-table td{white-space:nowrap}
.bb-m{display:inline-block;font-size:12px;font-weight:600;padding:2px 8px;border-radius:999px}
.bb-m-closed{background:var(--violet);color:#fff}
.bb-m-limited{background:var(--veil);color:var(--violet-deep)}
.bb-m-open{color:var(--muted);font-weight:500}
.bb-na{color:var(--faint)}
.bb-key{background:none!important;box-shadow:none!important}
.bb-dot.bb-shut,.bb-key.bb-shut i{background:#A78BFA;box-shadow:0 0 8px rgba(167,139,250,.8)}
.bb-dot.bb-open,.bb-key.bb-open i{background:rgba(220,214,247,.28);box-shadow:none}
.bb-dot.bb-all,.bb-key.bb-all i{background:#F0ABFC;box-shadow:none}
.bb-dot.bb-unread,.bb-key.bb-unread i{background:transparent;box-shadow:inset 0 0 0 1.5px rgba(220,214,247,.45)}
.bb-hero h1{font-size:clamp(32px,3.5vw,48px)}
.bb-heat td,.bb-heat th{padding:6px 7px;font-size:12.5px}
.bb-heat thead th span{display:block;white-space:nowrap}
.bb-heat tbody th[scope=row]{white-space:normal;min-width:140px}
.bb-table td.bb-na{color:var(--muted);font-style:italic}
/* the big-brands opening, high-end pass: the headline on top, then one wide field of 500 dots */
.bb-hero{padding:var(--s8) 0 var(--s7)}
.bb-hero-top{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:clamp(24px,5vw,72px);align-items:end;margin-bottom:var(--s7)}
.bb-hero h1{font-size:clamp(34px,4.4vw,60px);line-height:1.03;letter-spacing:-.025em;margin:0;max-width:17ch}
.bb-hero .stand{margin:0;font-size:clamp(17px,1.5vw,20px)}
.bb-hero-fig{position:relative}
.bb-legend{margin-bottom:var(--s5);font-size:13px}
.bb-field{display:flex;justify-content:space-between;align-items:flex-start;gap:clamp(10px,1.4vw,22px)}
.bb-sec{display:flex;flex-direction:column;gap:10px}
.bb-cells{display:grid;grid-auto-flow:column;grid-template-rows:repeat(10,13px);grid-auto-columns:13px;gap:7px}
.bb-sec-label{margin:0;font-size:12px;font-weight:600;color:#fff;line-height:1.3;max-width:120px}
.bb-sec-label span{display:block;font-weight:500;color:#C4B5FD}
.bb-cells .bb-dot{width:13px;height:13px}
.bb-sec{animation:bb-in .6s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--s) * 70ms)}
.bb-dot.bb-shut{animation:bb-glow 1.6s 1.2s ease-out 1}
@keyframes bb-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes bb-glow{0%{box-shadow:0 0 8px rgba(167,139,250,.8)}40%{box-shadow:0 0 0 6px rgba(167,139,250,.25),0 0 22px rgba(167,139,250,1)}100%{box-shadow:0 0 8px rgba(167,139,250,.8)}}
@media(prefers-reduced-motion:reduce){.bb-sec,.bb-dot.bb-shut{animation:none}}
.bb-dot:hover{transform:scale(1.35);transition:transform .12s}
.bb-tip{position:absolute;z-index:5;transform:translate(-50%,calc(-100% - 12px));background:#fff;color:var(--ink);border-radius:10px;
  padding:8px 12px;box-shadow:0 10px 30px rgba(10,8,40,.45);pointer-events:none;min-width:180px;max-width:240px;text-align:center}
.bb-tip b{display:block;font-size:14px}
.bb-tip span{display:block;font-size:12.5px;color:var(--muted)}
.bb-tip[hidden]{display:none}
.bb-pick{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.bb-hero-fig figcaption{margin-top:var(--s5)}
@media(max-width:1100px){.bb-cells{grid-template-rows:repeat(10,11px);grid-auto-columns:11px;gap:5px}.bb-cells .bb-dot{width:11px;height:11px}}
@media(max-width:900px){.bb-hero-top{grid-template-columns:1fr;gap:var(--s4)}
  .bb-field{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s5) var(--s4)}
  .bb-cells{grid-auto-flow:row;grid-template-rows:none;grid-template-columns:repeat(10,11px);grid-auto-rows:11px;gap:5px}}
/* below the opening: lighter heat table */
.bb-heat td{border:3px solid var(--surface);border-radius:8px}
.bb-heat thead th{background:none;border-bottom:1px solid var(--line)}
/* the glossary (content_glossary.py): a dark opening with the search, then cards by group */
.gl-hero{padding:var(--s8) 0 var(--s7)}
.gl-hero h1{font-size:clamp(34px,4.4vw,58px);line-height:1.04;letter-spacing:-.025em;margin:0 0 var(--s4);max-width:18ch}
.gl-hero .stand{max-width:52ch}
.gl-search{display:block;margin:var(--s6) 0 var(--s4);max-width:640px}
.gl-search span{display:block;font-size:13px;font-weight:600;color:#C4B5FD;margin-bottom:8px}
.gl-search input{width:100%;font:18px var(--body);padding:16px 22px;border-radius:999px;border:1.5px solid rgba(167,139,250,.45);
  background:rgba(255,255,255,.08);color:#fff;box-shadow:0 0 0 0 rgba(167,139,250,0);transition:box-shadow .2s,border-color .2s}
.gl-search input::placeholder{color:rgba(220,214,247,.6)}
.gl-search input:focus{outline:none;border-color:#C4B5FD;box-shadow:0 0 0 6px rgba(167,139,250,.22)}
.gl-chips{display:flex;flex-wrap:wrap;gap:8px}
.gl-chips button{font:600 14px var(--body);color:#fff;background:rgba(255,255,255,.06);border:1.5px solid rgba(167,139,250,.35);border-radius:999px;padding:8px 14px;min-height:40px;cursor:pointer}
.gl-chips button[aria-pressed=true]{background:#fff;color:var(--ink);border-color:#fff}
.gl-chips button:focus-visible{outline:2px solid #fff;outline-offset:2px}
.gl-count{color:rgba(220,214,247,.75);font-size:13.5px;margin:var(--s3) 0 0}
.gl-body{padding-top:var(--s6)}
.gl-group{margin-bottom:var(--s7)}
.gl-group h2{margin-bottom:var(--s4)}
.gl-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s4)}
.gl-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:var(--s4) var(--s5);scroll-margin-top:90px}
.gl-card:target{border-color:var(--violet);box-shadow:0 0 0 3px var(--veil)}
.gl-card h3{font-size:19px;margin:0 0 6px}
.gl-card h3 a{color:var(--ink);text-decoration:none}
.gl-card h3 a:hover{color:var(--violet)}
.gl-card>p{font-size:15.5px;line-height:1.55;color:var(--ink-2);margin:0}
.gl-card details{margin-top:var(--s3)}
.gl-card summary{cursor:pointer;font-size:14px;font-weight:600;color:var(--violet)}
.gl-card details p{font-size:14.5px;color:var(--ink-2);margin:8px 0 0;line-height:1.55}
.gl-card .gl-read{font-size:12.5px;font-weight:600;color:var(--muted);margin-top:var(--s3)}
.gl-links{list-style:none;margin:4px 0 0;padding:0;font-size:14px}
.gl-links a,.gl-src a{text-decoration:underline;text-underline-offset:2px}
.gl-card .gl-src{font-size:12.5px;color:var(--muted)}
.gl-none{color:var(--muted);font-size:16px}
@media(max-width:980px){.gl-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.gl-grid{grid-template-columns:1fr}}
/* the glossary, refined in the same direction: a finer search box, suggestions, marks, quieter cards */
.gl-hero h1{font-size:clamp(36px,4.6vw,62px);max-width:16ch}
.gl-search{max-width:680px}
.gl-box{position:relative;display:block}
.gl-icon{position:absolute;left:22px;top:50%;width:22px;height:22px;transform:translateY(-50%);fill:none;stroke:#C4B5FD;stroke-width:2;stroke-linecap:round;pointer-events:none}
.gl-search input{padding:18px 56px 18px 56px;font-size:19px;background:rgba(255,255,255,.07);
  box-shadow:0 20px 50px -20px rgba(124,58,237,.55),inset 0 1px 0 rgba(255,255,255,.06)}
.gl-search input:focus{box-shadow:0 0 0 6px rgba(167,139,250,.22),0 20px 50px -20px rgba(124,58,237,.8)}
.gl-kbd{position:absolute;right:18px;top:50%;transform:translateY(-50%);font:600 13px var(--mono);color:#C4B5FD;
  border:1px solid rgba(167,139,250,.45);border-radius:6px;padding:2px 8px}
@media(hover:none){.gl-kbd{display:none}}
.gl-search input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none;width:16px;height:16px;cursor:pointer;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 3l10 10M13 3L3 13' stroke='%23C4B5FD' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center/16px no-repeat}
@media(max-width:620px){.gl-kbd{display:none}.gl-search input{font-size:17px;padding:16px 20px 16px 52px}.gl-icon{left:20px}
  .gl-chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-right:calc(-1*var(--gutter));padding-right:var(--gutter)}
  .gl-chips::-webkit-scrollbar{display:none}.gl-chips button{flex:none}}
.gl-try{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 var(--s4);font-size:13.5px;color:rgba(220,214,247,.75)}
.gl-try span{margin-right:4px}
.gl-try button{font:500 13.5px var(--body);color:#fff;background:none;border:0;border-bottom:1px dashed rgba(220,214,247,.5);padding:2px 2px;cursor:pointer}
.gl-try button:hover,.gl-try button:focus-visible{color:#C4B5FD;border-bottom-color:#C4B5FD;outline:none}
.gl-group h2{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s1) var(--s3)}
.gl-n{font-family:var(--body);font-size:15px;font-weight:500;color:var(--muted);letter-spacing:0;white-space:nowrap}
.gl-card{border:1px solid var(--line);padding:var(--s5)}
.gl-card h3{font-family:var(--display);font-size:22px;letter-spacing:-.015em;margin:0 0 8px}
.gl-card mark{background:var(--veil);color:inherit;border-radius:3px;padding:0 1px;box-shadow:0 0 0 1px #DDD6FE}
.gl-card summary{list-style:none;display:inline-flex;align-items:center;gap:6px}
.gl-card summary::-webkit-details-marker{display:none}
.gl-card summary::after{content:"";width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .2s}
.gl-card details[open] summary::after{transform:rotate(45deg) translate(-2px,-2px)}
@media(prefers-reduced-motion:reduce){.gl-card summary::after{transition:none}}
.gl-card:target{border-color:var(--violet);box-shadow:0 0 0 4px var(--veil)}
/* who uses AI, in numbers (/research/ai-users/): one chart per product in the dark opening, then the freshness rows */
.au-hero h1{font-size:clamp(32px,3.3vw,46px);line-height:1.06}
.au-fig{margin:0;min-width:0}
.au-tabs{display:flex;flex-wrap:wrap;gap:6px}
.au-tabs button{font:600 13.5px var(--body);color:#fff;background:rgba(255,255,255,.06);border:1.5px solid rgba(167,139,250,.35);border-radius:999px;padding:7px 13px;min-height:38px;cursor:pointer}
.au-tabs button:hover{border-color:#C4B5FD}
.au-tabs button[aria-selected=true]{background:#fff;color:var(--ink);border-color:#fff}
.au-tabs button:focus-visible{outline:2px solid #fff;outline-offset:2px}
.au-plot{cursor:pointer;touch-action:pan-y}
.au-plot:focus-visible{outline:2px solid #fff;outline-offset:8px;border-radius:6px}
.au-big{margin:var(--s5) 0 2px;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}
.au-big b{font-family:var(--display);font-size:clamp(40px,4.4vw,58px);line-height:1;letter-spacing:-.025em;color:#fff;font-weight:700}
.au-big span{font-size:18px;color:#C4B5FD;font-weight:500}
.au-big small{flex-basis:100%;font-size:14px;font-weight:600;color:#C4B5FD;margin-bottom:-2px}
.au-by{font-size:13.5px;color:rgba(220,214,247,.72);margin:6px 0 var(--s5)}
.au-plot{position:relative;aspect-ratio:2/1;margin:0 6px 30px 46px}
.au-plot svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.au-grid line{stroke:rgba(220,214,247,.12);stroke-width:1;vector-effect:non-scaling-stroke}
.au-grid line:last-child{stroke:rgba(220,214,247,.32)}
.au-area{fill:rgba(167,139,250,.13)}
.au-line{fill:none;stroke:#A78BFA;stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 6px rgba(167,139,250,.55))}
.au-y{position:absolute;left:-10px;transform:translate(-100%,-50%);font-size:12px;color:rgba(220,214,247,.62);font-variant-numeric:tabular-nums;white-space:nowrap}
.au-x{position:absolute;top:100%;margin-top:9px;transform:translateX(-50%);font-size:12px;color:rgba(220,214,247,.62)}
.au-cross{position:absolute;top:0;bottom:0;width:1px;background:rgba(220,214,247,.3);pointer-events:none;transition:left .2s}
.au-pt{position:absolute;width:30px;height:30px;margin:-15px 0 0 -15px;border-radius:50%;pointer-events:none}
.au-pt::before{content:"";position:absolute;inset:10px;border-radius:50%;background:#A78BFA;box-shadow:0 0 0 2px #1D1853;transition:inset .15s,background .15s}
.au-pt.is-on::before{inset:8px;background:#fff;box-shadow:0 0 0 2px #1D1853,0 0 0 6px rgba(167,139,250,.45)}
.au-read{margin:var(--s3) 0 0;font-size:15px;color:#DCD6F7;min-height:3.2em}
.au-read b{color:#fff;font-weight:600}
.au-r-d{color:#C4B5FD;margin-left:6px}
.au-r-who{display:block;font-size:13.5px;color:rgba(220,214,247,.75);margin-top:2px}
.au-r-who a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.au-fig figcaption{font-size:12.5px;color:rgba(220,214,247,.66);margin-top:var(--s4);line-height:1.5}
@media(prefers-reduced-motion:reduce){.au-cross,.au-pt::before{transition:none}}
@media(max-width:620px){.au-tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-right:calc(-1*var(--gutter));padding-right:var(--gutter)}
  .au-tabs::-webkit-scrollbar{display:none}.au-tabs button{flex:none;min-height:44px}.au-plot{aspect-ratio:3/2;margin-left:40px}}
.au-fresh{list-style:none;margin:0;padding:0}
.au-fresh li,.au-f-axis{display:grid;grid-template-columns:170px minmax(0,1fr) 150px;gap:var(--s4);align-items:center}
.au-fresh li{padding:10px 0;border-top:1px solid var(--line-soft)}
.au-fresh li:first-child{border-top:0}
.au-f-name{font-weight:600;color:var(--ink);font-size:15px;line-height:1.25}
.au-f-name small,.au-f-when small{display:block;font-size:12.5px;font-weight:400;color:var(--muted)}
.au-f-track{position:relative;height:28px}
.au-fresh .au-f-track::before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:var(--line)}
.au-fresh .au-f-track::after{content:"";position:absolute;left:var(--today);top:-10px;bottom:-10px;width:1px;background:var(--ink);opacity:.3}
.au-f-track i{position:absolute;top:50%;width:13px;height:13px;margin:-6.5px 0 0 -6.5px;border-radius:50%;background:var(--violet);box-shadow:0 0 0 2px var(--surface)}
.au-f-when{text-align:right;font-size:14px;color:var(--ink);font-variant-numeric:tabular-nums}
.au-f-axis .au-f-track{height:22px}
.au-f-axis .au-f-track span{position:absolute;top:4px;transform:translateX(-50%);font-size:12px;color:var(--muted);white-space:nowrap}
.au-f-axis .au-f-track b{font-weight:400}
.au-table td:nth-child(4){white-space:nowrap}
@media(max-width:620px){.au-fresh li{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name when" "track track";gap:2px var(--s3)}
  .au-f-name{grid-area:name;font-size:14.5px}.au-f-when{grid-area:when;font-size:13px}.au-fresh .au-f-track{grid-area:track;height:22px}
  .au-f-axis{grid-template-columns:1fr}.au-f-axis>span:not(.au-f-track){display:none}.au-f-axis .au-f-track b,.au-f-axis .au-f-track span:nth-child(even){display:none}
  .au-table thead{display:none}.au-table,.au-table tbody{display:block}
  .au-table tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px var(--s3);padding:var(--s3) 0;border-top:1px solid var(--line)}
  .au-table th,.au-table td{display:block;padding:0;border:0}
  .au-table th{grid-column:1/-1;font-size:15px}
  .au-table td:nth-child(3){grid-column:1/-1;grid-row:3;font-size:13.5px;color:var(--muted)}
  .au-table td:nth-child(5){grid-column:1/-1;grid-row:4;font-size:13.5px}}
.au-table th small{display:block;font-weight:400;color:var(--muted);font-size:12.5px}
.au-table td b{color:var(--ink)}
.prose .au-note{font-size:14px;color:var(--muted);margin-top:var(--s3)}
.au-every h3{font-size:16px;margin:var(--s4) 0 var(--s2)}
.au-all{list-style:none;margin:0;padding:0}
.au-all li{padding:6px 0;border-top:1px solid var(--line-soft);font-size:14.5px}
.au-all time{display:inline-block;min-width:104px;font-weight:600;color:var(--ink)}
/* the AI search timeline (/research/ai-search-timeline/): a strip of every change in the dark opening, then the list */
.tl-hero h1{font-size:clamp(34px,4vw,54px);max-width:20ch}
.tl-hero .stand{max-width:58ch}
.tl-strip{margin:var(--s6) 0 0}
.tl-lane{display:grid;grid-template-columns:190px minmax(0,1fr);gap:var(--s4);align-items:center;min-height:40px;border-top:1px solid rgba(220,214,247,.1)}
.tl-lane:first-child{border-top:0}
.tl-lane-name{font-size:13.5px;font-weight:600;color:#DCD6F7}
.tl-lane-name small{margin-left:8px;font-weight:500;color:rgba(220,214,247,.6)}
.tl-track{position:relative;height:40px}
.tl-lanes .tl-lane:not(.tl-axis) .tl-track::before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:rgba(220,214,247,.18)}
.tl-strip{position:relative}
.tl-lanes .tl-lane:not(.tl-axis) .tl-track{cursor:pointer}
.tl-dot{position:absolute;top:50%;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;pointer-events:none}
.tl-dot::before{content:"";position:absolute;inset:7px;border-radius:50%;background:#A78BFA;box-shadow:0 0 0 2px #1D1853,0 0 10px rgba(167,139,250,.55);transition:transform .15s,opacity .2s}
.tl-dot.is-hot::before{transform:scale(1.35);background:#fff}
.tl-tip{position:absolute;transform:translate(-50%,calc(-100% - 12px));background:#fff;color:var(--ink);font-size:13px;font-weight:600;padding:6px 10px;border-radius:8px;white-space:nowrap;pointer-events:none;box-shadow:0 8px 24px rgba(8,6,30,.35);z-index:2}
.tl-dot.is-off::before{opacity:.16;box-shadow:none}
.tl-axis{border-top:1px solid rgba(220,214,247,.3);min-height:28px}
.tl-axis .tl-track{height:28px}
.tl-axis .tl-track span{position:absolute;top:6px;transform:translateX(-50%);font-size:12px;color:rgba(220,214,247,.62)}
.tl-strip figcaption{font-size:12.5px;color:rgba(220,214,247,.66);margin-top:var(--s3)}
.tl-filters{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s3);margin-top:var(--s6)}
.tl-kinds{display:flex;flex-wrap:wrap;gap:6px}
.tl-kinds button{font:600 13.5px var(--body);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:7px 12px;min-height:40px;cursor:pointer}
.tl-kinds button[aria-pressed=true]{background:var(--ink);color:#fff;border-color:var(--ink)}
.tl-kinds button:focus-visible,.tl-co select:focus-visible{outline:2px solid var(--violet);outline-offset:2px}
.tl-co{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--muted);margin-left:auto}
.tl-co select{font:500 13.5px var(--body);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:7px 10px;min-height:40px}
.prose .tl-count{font-size:14px;color:var(--muted);margin:var(--s3) 0 0}
.tl-year h2{font-size:clamp(34px,4vw,48px);letter-spacing:-.03em;margin:var(--s7) 0 var(--s3);color:var(--ink)}
.prose .tl-list{list-style:none;margin:0;padding:0;border-top:2px solid var(--ink)}
.tl-ev{display:grid;grid-template-columns:150px minmax(0,1fr);gap:var(--s5);padding:var(--s4) var(--s3);border-top:1px solid var(--line);scroll-margin-top:90px;border-radius:var(--r-sm)}
.tl-list .tl-ev:first-child{border-top:0}
.tl-ev[hidden],.tl-year[hidden]{display:none}
.tl-ev:target{background:var(--veil)}
.tl-ev time{font-size:14.5px;font-weight:600;color:var(--ink-2);font-variant-numeric:tabular-nums;padding-top:2px}
.prose .tl-tags{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0 0 4px;font-size:12.5px}
.tl-co-tag{font-weight:600;color:var(--ink);border:1px solid var(--line);border-radius:999px;padding:2px 9px;background:var(--surface)}
.tl-k{color:var(--muted)}
.tl-ev h3{font-family:var(--display);font-size:20px;letter-spacing:-.01em;margin:0 0 4px}
.prose .tl-ev p{margin:0;font-size:15.5px}
.prose .tl-none{color:var(--muted)}
@media(prefers-reduced-motion:reduce){.tl-dot::before{transition:none}}
@media(max-width:720px){.tl-lane{grid-template-columns:1fr;gap:0;min-height:0;padding-top:6px}.tl-lane-name{font-size:12.5px}
  .tl-axis{grid-template-columns:1fr}.tl-axis>span:first-child{display:none}
  .tl-co{margin-left:0}.tl-ev{grid-template-columns:1fr;gap:4px;padding:var(--s4) 0}
  .tl-kinds{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-right:calc(-1*var(--gutter));padding-right:var(--gutter);max-width:calc(100vw - var(--gutter))}
  .tl-kinds::-webkit-scrollbar{display:none}.tl-kinds button{flex:none;min-height:44px}}
/* a post's groups figure (make_hq.py groups_figure): how many in each group, large, then the names */
.pg-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr) minmax(0,1.25fr);gap:var(--s4)}
.pg-col{border:1px solid var(--line);border-radius:var(--r);padding:var(--s4);background:var(--bg)}
.pg-col.pg-planned{border-style:dashed;background:none}
.prose .pg-h{margin:0 0 var(--s3);font-size:13.5px;font-weight:600;color:var(--muted);line-height:1.3}
.pg-h b{display:block;font-family:var(--display);font-size:40px;line-height:1;letter-spacing:-.02em;color:var(--violet);margin-bottom:6px}
.pg-planned .pg-h b{color:var(--faint)}
.prose .pg-col ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.prose .pg-col li{margin:0;white-space:nowrap;font-size:13.5px;font-weight:600;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:3px 10px}
.pg-planned li{border-style:dashed}
@media(max-width:720px){.pg-cols{grid-template-columns:1fr}}
/* a post's steps figure (make_hq.py steps_figure): numbered steps side by side, stacked on phones */
.prose .ps-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:var(--s2);counter-reset:ps}
.prose .ps-steps li{margin:0;padding:var(--s3);border:1px solid var(--line);border-radius:var(--r);background:var(--bg);counter-increment:ps;font-size:14px;line-height:1.5;display:grid;grid-template-columns:24px minmax(0,1fr);column-gap:8px;row-gap:6px;align-content:start}
.ps-steps li::before{content:counter(ps);grid-row:1;grid-column:1;align-self:start;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--violet);color:#fff;font:700 12.5px/1 var(--body);font-variant-numeric:tabular-nums}
.ps-steps b{grid-row:1;grid-column:2;align-self:start;color:var(--ink);font-size:15px;line-height:24px}
.ps-steps span{grid-row:2;grid-column:1/-1;color:var(--ink-2)}
.ps-steps a{text-decoration:underline;text-underline-offset:2px}
@media(max-width:620px){.prose .ps-steps{grid-template-columns:1fr}.ps-steps span{grid-column:2}}
/* a post's bar chart (make_hq.py bars_figure): shares from one baseline, each value printed beside its bar */
.prose .pb-rows{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.prose .pb-rows li{margin:0;display:grid;grid-template-columns:minmax(0,210px) minmax(0,1fr) 60px;gap:var(--s3);align-items:center;font-size:14.5px;line-height:1.35}
.pb-l{color:var(--ink);font-weight:600}
.pb-t{display:block;height:20px;background:var(--line-soft);border-radius:4px;overflow:hidden}
.pb-f{display:block;height:100%;width:calc(var(--v) * 100%);min-width:2px;background:var(--violet);border-radius:0 4px 4px 0}
.pb-v{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums;text-align:right}
@media(max-width:560px){.prose .pb-rows li{grid-template-columns:minmax(0,1fr) 56px;row-gap:6px}.pb-t{grid-column:1/-1;grid-row:2}}
/* the AI crawler directory (/research/crawlers/): the robots.txt builder in the dark opening, the list by company, one page per crawler */
.cd-hero .as-hero-in{align-items:start}
.cd-hero .as-hero-in>*{min-width:0}
.cd-hero .as-hero-in:has(.cd-builder[hidden]){grid-template-columns:minmax(0,1fr)}
.cd-hero h1{font-size:clamp(32px,3.4vw,48px);line-height:1.06}
.cd-builder{background:rgba(255,255,255,.05);border:1px solid rgba(167,139,250,.28);border-radius:16px;padding:var(--s5);
  box-shadow:0 30px 60px -30px rgba(10,8,30,.7);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.cd-builder[hidden]{display:none}
.cd-b-title{font-family:var(--display);font-size:21px;font-weight:700;letter-spacing:-.015em;color:#fff;margin:0}
.cd-b-sub{font-size:14.5px;line-height:1.5;color:#DCD6F7;margin:6px 0 var(--s4)}
.cd-quick{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:var(--s3)}
.cd-quick button{font:600 13.5px var(--body);color:#fff;background:rgba(255,255,255,.06);border:1.5px solid rgba(167,139,250,.45);border-radius:999px;padding:6px 14px;min-height:36px}
.cd-quick button:hover{border-color:#C4B5FD}
.cd-quick button:focus-visible{outline:2px solid #fff;outline-offset:2px}
.cd-boxes fieldset{border:0;border-top:1px solid rgba(167,139,250,.18);padding:10px 0 12px;margin:0;min-width:0}
.cd-boxes legend{float:left;width:100%;padding:0;margin:0 0 8px;font-size:13px;font-weight:600;color:#C4B5FD}
.cd-picks{clear:both;display:flex;flex-wrap:wrap;gap:6px}
.cd-picks label{position:relative;display:inline-flex;cursor:pointer}
.cd-picks input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.cd-picks span{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;color:#fff;padding:6px 12px 6px 10px;min-height:34px;
  border:1.5px solid rgba(167,139,250,.32);border-radius:999px;background:rgba(20,17,58,.35);transition:background .15s,border-color .15s,color .15s}
.cd-picks span::before{content:"";flex:none;width:14px;height:14px;border-radius:4px;border:1.5px solid rgba(220,214,247,.6)}
.cd-picks label:hover span{border-color:#C4B5FD}
.cd-picks input:checked+span{background:#fff;color:var(--ink);border-color:#fff}
.cd-picks input:checked+span::before{border-color:var(--violet);background:var(--violet) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M3 7.2l2.6 2.6L11 4.4' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/12px no-repeat}
.cd-picks input:focus-visible+span{outline:2px solid #fff;outline-offset:2px}
.cd-out-box{margin-top:var(--s3)}
.cd-out-box pre{max-height:220px;overflow:auto}
.cd-b-warn{margin:var(--s3) 0 0;padding:2px 0 2px 12px;border-left:3px solid #C4B5FD;font-size:14px;line-height:1.5;color:#fff}
.cd-b-warn[hidden]{display:none}
.cd-b-note{margin:var(--s3) 0 0;font-size:13px;line-height:1.5;color:rgba(220,214,247,.72)}
/* a code block to copy, on a dark ground in both places */
.cd-code{background:#14113A;border:1px solid rgba(167,139,250,.28);border-radius:var(--r);overflow:hidden;min-width:0}
.cd-code-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);padding:8px 10px 8px 14px;border-bottom:1px solid rgba(167,139,250,.18)}
.cd-code-head span{font-size:13px;font-weight:600;color:#C4B5FD}
.cd-copy{font:600 13px var(--body);color:#fff;border:1.5px solid rgba(167,139,250,.5);border-radius:999px;padding:4px 14px;min-height:32px;min-width:72px}
.cd-copy:hover{border-color:#C4B5FD}
.cd-copy:disabled{opacity:.45;cursor:default}
.cd-copy:focus-visible{outline:2px solid #fff;outline-offset:2px}
.cd-code pre{margin:0;padding:12px 14px;overflow-x:auto}
.cd-code pre:focus-visible{outline:2px solid #C4B5FD;outline-offset:-2px}
.cd-code code,.prose .cd-code code{font:14px/1.6 var(--mono);color:#EDE9FE;background:none;padding:0;border-radius:0;white-space:pre}
/* the list by company */
.prose .cd-intro{margin-top:var(--s6)}
.prose .cd-key{font-size:15px;color:var(--muted)}
.cd-chips{display:flex;flex-wrap:wrap;gap:8px;margin:var(--s5) 0 var(--s4)}
.cd-chips button{font:600 13.5px var(--body);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:7px 14px;min-height:40px}
.cd-chips button[aria-pressed=true]{background:var(--ink);color:#fff;border-color:var(--ink)}
.prose .cd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(330px,100%),1fr));gap:var(--s4);width:min(var(--page),calc(100vw - 2 * var(--gutter)));max-width:none}
.cd-co{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:var(--s4) var(--s5) var(--s2)}
.prose .cd-co[hidden],.prose .cd-grid li[hidden]{display:none}
.prose .cd-co h2{font-size:19px;letter-spacing:-.01em;margin:0 0 var(--s2)}
.prose .cd-co ul{list-style:none;padding:0;margin:0}
.prose .cd-co li{margin:0;padding:10px 0;border-top:1px solid var(--line-soft);display:grid;grid-template-columns:minmax(0,1fr) 92px;gap:var(--s3);align-items:center}
.prose .cd-co li a{text-decoration:none;color:var(--ink);display:block;min-width:0}
.cd-co li a b{display:block;font-size:15.5px;font-weight:600;overflow-wrap:anywhere}
.cd-co li a:hover b{color:var(--violet)}
.cd-p{display:block;font-size:13px;color:var(--muted);margin-top:1px}
.cd-share{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px}
.cd-share .cd-track{height:6px;border-radius:3px}
.cd-share em{font-style:normal;font-size:13.5px;font-weight:600;color:var(--ink-2);font-variant-numeric:tabular-nums;min-width:30px;text-align:right}
.cd-track{position:relative;display:block;background:var(--line-soft);overflow:hidden}
.cd-track i{position:absolute;left:0;top:0;bottom:0;background:var(--violet);border-radius:inherit}
/* one crawler's page */
.cd-most{margin-top:var(--s6);max-width:440px}
.cd-most>p:first-child{font-size:13.5px;font-weight:600;color:#C4B5FD;margin:0 0 var(--s2)}
.cd-most ol{list-style:none;margin:0;padding:0}
.cd-most li+li{border-top:1px solid rgba(167,139,250,.16)}
.cd-most a{display:grid;grid-template-columns:150px minmax(0,1fr) 44px;gap:var(--s3);align-items:center;padding:9px 0;color:#fff}
.cd-most a:hover b{color:#C4B5FD}
.cd-most b{font-size:15.5px;font-weight:600}
.cd-most .cd-track{height:8px;border-radius:4px;background:rgba(255,255,255,.1)}
.cd-most .cd-track i{background:#A78BFA}
.cd-most em{font-style:normal;font-family:var(--display);font-size:20px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums}
.cd-most-note{font-size:12.5px;color:rgba(220,214,247,.7);margin:var(--s2) 0 0}
.cd-one-hero{padding:var(--s7) 0 var(--s6)}
.cd-one-hero h1{font-size:clamp(40px,5vw,64px);margin:var(--s2) 0 var(--s3)}
.cd-lead{font-size:clamp(18px,1.8vw,21px);line-height:1.55;color:#DCD6F7;max-width:44ch}
.cd-lead .as-src a{color:#C4B5FD;text-decoration:underline;text-underline-offset:2px}
.cd-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s4);margin:var(--s6) 0 0;border-top:1px solid rgba(167,139,250,.35);padding-top:var(--s4);max-width:var(--wide)}
.cd-facts dt{font-size:13px;font-weight:600;color:#C4B5FD}
.cd-facts dd{font-size:17px;font-weight:600;color:#fff;line-height:1.35;margin-top:2px}
.prose .cd-quote cite{display:block;font-style:normal;font-size:var(--t-small);color:var(--muted);margin-top:6px}
.cd-bar{display:grid;grid-template-columns:190px minmax(0,1fr) 96px;gap:var(--s3);align-items:center;font-size:14.5px}
.cd-bar+.cd-bar{margin-top:10px}
.cd-bar-name{color:var(--ink);font-weight:500}
.cd-bar .cd-track{height:18px;border-radius:4px}
.cd-bar .cd-track i{border-radius:0 4px 4px 0}
.cd-bar-val{text-align:right;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;line-height:1.25}
.cd-bar-val small{display:block;font-size:12px;font-weight:500;color:var(--faint)}
.cd-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s4);margin:var(--s4) 0}
.prose .cd-sib{list-style:none;padding:0}
.prose .cd-sib li{padding:var(--s3) 0;border-top:1px solid var(--line-soft);margin:0}
.prose .cd-sib li a{font-weight:600}
.prose .cd-sib li span{display:block;font-size:16px;color:var(--ink-2)}
@media(prefers-reduced-motion:reduce){.cd-picks span{transition:none}}
@media(max-width:720px){.cd-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.cd-pair{grid-template-columns:1fr}
  .cd-bar{grid-template-columns:1fr 84px;row-gap:4px}.cd-bar-name{grid-column:1/-1}
  .cd-chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-right:calc(-1*var(--gutter));padding-right:var(--gutter)}
  .cd-chips::-webkit-scrollbar{display:none}.cd-chips button{flex:none;min-height:44px}
  .cd-builder{padding:var(--s4)}}
/* the study's crawler table: each name opens its page in the directory */
.prose .sd-bots th a{text-decoration:underline;text-decoration-color:rgba(124,58,237,.35);text-underline-offset:4px}
.prose .sd-bots th a code{color:var(--violet)}
.prose .sd-bots th a:hover{text-decoration-color:currentColor}
/* three findings from our studies (content_company.py research_findings), on the home page and the research page */
.rf{list-style:none;margin:0 0 var(--s7);padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s4)}
.rf a{display:flex;flex-direction:column;height:100%;padding:var(--s5);background:var(--surface);border:1px solid var(--line);border-radius:var(--r);transition:border-color .15s}
.rf a:hover{border-color:var(--iris)}
.rf b{font-family:var(--display);font-size:clamp(44px,5vw,64px);line-height:1;letter-spacing:-.03em;color:var(--violet)}
.rf span{display:block;margin:var(--s3) 0 var(--s4);font-size:16px;line-height:1.5;color:var(--ink-2)}
.rf em{margin-top:auto;font-style:normal;font-size:14px;font-weight:600;color:var(--ink)}
.rf a:hover em{color:var(--violet)}
@media(prefers-reduced-motion:reduce){.rf a{transition:none}}
@media(max-width:820px){.rf{grid-template-columns:1fr}.rf a{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:var(--s4);align-items:baseline}
  .rf b{font-size:40px;grid-row:1/3}.rf span{margin:0 0 6px}.rf em{grid-column:2}}

/* how often AI assistants get answers wrong (/research/ai-accuracy/): a hundred squares in the dark opening, then the studies */
.ac-hero .as-hero-in{align-items:start}
.ac-hero .as-hero-in>*{min-width:0}
.ac-hero h1{font-size:clamp(32px,3.3vw,46px);line-height:1.06}
.ac-fig{margin:0}
.ac-views{display:grid;gap:8px;margin-bottom:var(--s4)}
.ac-row{display:flex;flex-wrap:wrap;gap:6px}
.ac-row button{font:600 13.5px var(--body);color:#fff;background:rgba(255,255,255,.06);border:1.5px solid rgba(167,139,250,.35);border-radius:999px;padding:6px 12px;min-height:36px}
.ac-row button b{font-weight:700;color:#C4B5FD;margin-left:2px}
.ac-row button:hover{border-color:#C4B5FD}
.ac-row button[aria-pressed=true]{background:#fff;color:var(--ink);border-color:#fff}
.ac-row button[aria-pressed=true] b{color:var(--violet)}
.ac-row button:focus-visible{outline:2px solid #fff;outline-offset:2px}
.ac-waffle{display:grid;grid-template-columns:repeat(10,1fr);gap:5px;max-width:420px}
.ac-waffle i{aspect-ratio:1;border-radius:4px;background:rgba(255,255,255,.08);border:1px solid rgba(167,139,250,.16);transition:background .3s,box-shadow .3s,border-color .3s}
.ac-waffle i.on{background:#A78BFA;border-color:#C4B5FD;box-shadow:0 0 12px rgba(167,139,250,.55)}
.ac-waffle i:nth-child(10n+1){transition-delay:0s}.ac-waffle i:nth-child(10n+5){transition-delay:.03s}.ac-waffle i:nth-child(10n+9){transition-delay:.06s}
.ac-read{margin:var(--s4) 0 0;color:#DCD6F7;font-size:16px;line-height:1.45;max-width:46ch}
.ac-read b{font-family:var(--display);font-size:40px;line-height:1;color:#fff;margin-right:6px;vertical-align:-4px}
.ac-fig figcaption{font-size:12.5px;color:rgba(220,214,247,.72);margin-top:var(--s3);line-height:1.5;max-width:52ch}
.ac-fig figcaption a{color:#C4B5FD;text-decoration:underline;text-underline-offset:2px}
@media(prefers-reduced-motion:reduce){.ac-waffle i{transition:none}}
/* the studies, newest first */
.prose .ac-studies{list-style:none;padding:0;margin:var(--s5) 0 0;border-top:2px solid var(--ink)}
.prose .ac-study{margin:0;padding:var(--s4) 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:200px minmax(0,1fr);gap:var(--s2) var(--s5);scroll-margin-top:90px}
.ac-s-head time{display:block;font-size:13.5px;font-weight:600;color:var(--violet)}
.ac-s-head span{display:block;font-size:14.5px;font-weight:600;color:var(--ink);line-height:1.4;margin-top:2px}
.prose .ac-s-big{margin:0;font-size:16.5px;line-height:1.5;color:var(--ink-2)}
.ac-s-big b{font-family:var(--display);font-size:30px;line-height:1;color:var(--ink);letter-spacing:-.02em;margin-right:4px}
.ac-study details{grid-column:2;margin-top:2px}
.ac-study summary{cursor:pointer;font-size:14px;font-weight:600;color:var(--violet)}
.prose .ac-study details p{font-size:15.5px;line-height:1.6;margin:8px 0 0}
.prose .ac-s-note{color:var(--muted)}
.prose .ac-s-src{font-size:14px;color:var(--muted)}
@media(max-width:720px){.prose .ac-study{grid-template-columns:1fr}.ac-study details{grid-column:1}.ac-waffle{gap:4px}}
.ac-lab{flex-basis:100%;font-size:12.5px;font-weight:600;color:#C4B5FD;margin-bottom:2px}

/* ---------- contact page (content_contact.py, assets/js/contact.js) ---------- */
.contact-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:var(--s7);align-items:start;padding-bottom:var(--s8)}
@media(max-width:900px){.contact-grid{grid-template-columns:1fr;gap:var(--s6)}}
.contact-side{display:grid;gap:var(--s4)}
.contact-side a{color:var(--violet-deep);font-weight:600;text-decoration:underline;text-decoration-color:rgba(124,58,237,.35);text-underline-offset:3px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s5) var(--s4)}
@media(max-width:640px){.form-grid{grid-template-columns:1fr}}
.field{display:flex;flex-direction:column;gap:var(--s2)}
.field.wide{grid-column:1/-1}
.field label{font-size:var(--t-small);font-weight:600;color:var(--ink)}
.field input,.field select,.field textarea{font:inherit;font-size:16px;color:var(--ink);background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-sm);padding:12px 14px;width:100%;transition:border-color .15s,box-shadow .15s}
.field textarea{min-height:180px;resize:vertical;line-height:1.6}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--violet);box-shadow:0 0 0 3px rgba(124,58,237,.16)}
.field input:user-invalid,.field textarea:user-invalid{border-color:var(--err)}
.field .err{font-size:13px;color:var(--err);min-height:1em}
.form-consent{display:flex;gap:var(--s3);align-items:flex-start;margin-top:var(--s5);font-size:15px;color:var(--ink-2);line-height:1.5;cursor:pointer}
.form-consent input{margin-top:3px;width:17px;height:17px;accent-color:var(--violet);flex-shrink:0}
.form-captcha{margin-top:var(--s4)}
.form-captcha:empty{display:none}
.form-actions{display:flex;align-items:center;gap:var(--s4);flex-wrap:wrap;margin-top:var(--s5)}
.form-status{font-size:var(--t-small);color:var(--muted);min-height:1.4em}
.form-status:empty{min-height:0}
.form-status.ok{color:var(--ok);font-weight:600}
.form-status.bad{color:var(--err)}
.form-status a{color:var(--violet-deep);font-weight:600;margin-left:6px}
.form-note{font-size:13.5px;color:var(--faint);margin-top:var(--s4)}
.form-note a{color:var(--muted);text-decoration:underline;text-underline-offset:2px}

/* "Ask AI about us" (_build/ask_ai.py): a row above the bottom bar, a round button for each assistant Visibian covers,
   each opening it with a question about Visibian; a name shows above a button on hover or focus */
.ask-ai{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px;margin:0 0 28px}
.foot .ask-ai-label{font-size:14px;font-weight:600;color:var(--ink);margin:0;max-width:none}
.ask-ai-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.ask-ai-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;
  border:1px solid var(--line);background:#fff;transition:border-color .18s ease,transform .18s ease,box-shadow .18s ease;-webkit-tap-highlight-color:transparent}
.ask-ai-btn svg{width:18px;height:18px;display:block}
.ask-ai-btn:hover,.ask-ai-btn:focus-visible{border-color:#C4B5FD;transform:translateY(-2px);box-shadow:0 8px 18px -10px rgba(20,17,58,.35)}
.ask-ai-btn:focus-visible{outline:2px solid #7C3AED;outline-offset:2px}
.ask-ai-btn:active{transform:translateY(0)}
.ask-ai-tip{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%,4px);white-space:nowrap;background:#14113A;color:#fff;
  font-size:12px;font-weight:600;line-height:1;padding:6px 8px;border-radius:6px;opacity:0;pointer-events:none;transition:opacity .15s ease,transform .15s ease}
.ask-ai-tip::after{content:"";position:absolute;top:100%;left:50%;margin-left:-4px;border:4px solid transparent;border-top-color:#14113A}
@media(hover:hover){.ask-ai-btn:hover .ask-ai-tip{opacity:1;transform:translate(-50%,0)}}
.ask-ai-btn:focus-visible .ask-ai-tip{opacity:1;transform:translate(-50%,0)}
@media(max-width:640px){.ask-ai{gap:10px}.ask-ai-label{flex-basis:100%}.ask-ai-row{gap:6px}}
@media(max-width:400px){.ask-ai-btn{width:38px;height:38px}.ask-ai-btn svg{width:17px;height:17px}}   /* seven still fit on one line at 360 px */
@media(prefers-reduced-motion:reduce){.ask-ai-btn,.ask-ai-tip{transition:none}.ask-ai-btn:hover,.ask-ai-btn:focus-visible{transform:none}}
.foot .ask-ai{margin:var(--s7) 0 0}
.foot .ask-ai + .foot-base{margin-top:var(--s5)}
