/* irlpls: finder, card pages, compare and the documents. Same tokens, header and footer as the landing page
   (src/index.html): clean white, liquid glass, capsules. Colour only for meaning:
   green = evidenced, blue = claimed, hollow ring = not stated, red = ruled out. */
:root{
  --bg:#f6f8fb;--fg:#101418;--fg2:#3d4654;--fg3:#5b6574;--dot:#7a8494;--line:rgba(20,30,50,.09);--line2:rgba(20,30,50,.16);
  --live:#0a6e34;--pol:#1b5fd6;--bad:#b3261e;
  --card:#fff;--card2:#f1f4f8;--code:#f3f5f8;--track:#e3e8ef;
  --glass:rgba(255,255,255,.62);--edge:rgba(255,255,255,.9);--shadow:0 8px 30px rgba(20,30,50,.08);
  --r-sm:12px;--r-md:18px;--r-lg:24px;--hh:52px;--gut:16px;
  --head:"Inter Tight",Inter,-apple-system,system-ui,sans-serif;--sans:Inter,-apple-system,system-ui,sans-serif;--mono:ui-monospace,"SF Mono",Menlo,monospace;
}
*{box-sizing:border-box}
html{background:#eef2f8;color-scheme:light;-webkit-text-size-adjust:100%;text-size-adjust:100%}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{margin:0;min-height:100vh;background:linear-gradient(180deg,#fbfcfe 0,#eef2f8 100%) fixed;color:var(--fg);font:16px/1.5 var(--sans);-webkit-font-smoothing:antialiased}
body.lock{overflow:hidden}
a{color:inherit}button,select{font:inherit;color:inherit;-webkit-tap-highlight-color:transparent}
:focus-visible{outline:2px solid var(--pol);outline-offset:3px;border-radius:8px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.skip{position:absolute;left:12px;top:-60px;background:var(--fg);color:#fff;padding:10px 14px;border-radius:10px;z-index:99;font-weight:600;text-decoration:none}.skip:focus{top:10px}
.nojs{margin:4px 0 0;color:var(--fg2);font-size:15px}.nojs a{text-decoration:underline}
[hidden]{display:none!important}
.glass{background:var(--glass);border:1px solid var(--edge);box-shadow:var(--shadow),inset 0 1px 0 #fff;border-radius:var(--r-lg)}

/* header + footer: the landing page's, on every page. Sources · irlpls · For agents, the wordmark centred */
html{scroll-padding-top:68px}
.top{position:sticky;top:0;z-index:30;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;min-height:var(--hh);
  padding:env(safe-area-inset-top) max(var(--gut),calc((100% - 720px)/2 + var(--gut))) 0;background:#f8fafc;box-shadow:0 1px 0 var(--line);
  }
.top nav{display:contents;font-size:14px;color:var(--fg2)}
.top nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 8px;border-radius:10px;white-space:nowrap;text-decoration:none;color:var(--fg2)}
.top nav a:hover,.top nav a[aria-current=page]{color:var(--fg)}.top nav a[aria-current=page]{font-weight:600}
.top .nl{grid-column:1;justify-self:start;margin-left:-8px}.top .nr{grid-column:3;justify-self:end;margin-right:-8px}
.top .brand{grid-column:2;justify-self:center;font:700 19px var(--sans);letter-spacing:-.04em;color:var(--fg)}.brand i{font-style:normal;color:var(--fg3)}
.top.stuck{background:#f8fafc}
.site-foot{margin:56px 0 0;padding:24px max(var(--gut),calc((100% - 1100px)/2 + var(--gut))) max(24px,env(safe-area-inset-bottom));border-top:1px solid var(--line);background:rgba(255,255,255,.55);display:flex;flex-direction:column;gap:10px;font:400 13px/1.5 var(--sans);color:var(--fg3)}
.site-foot a{color:var(--fg2);text-decoration:none}
@media(hover:hover){.site-foot a:hover{color:var(--fg);text-decoration:underline;text-underline-offset:3px}}
.site-foot .ft{display:flex;flex-direction:column;gap:4px}
.site-foot .fd{margin:0;display:flex;flex-wrap:wrap;align-items:center;column-gap:14px}
.site-foot .fw{display:inline-flex;align-items:center;min-height:44px;font:700 16px var(--sans);letter-spacing:-.04em;color:var(--fg)}.site-foot .fw i{font-style:normal;color:var(--fg3)}
.site-foot .fl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:24px}
.site-foot .fl a{display:flex;align-items:center;min-height:44px;font-weight:500}
/* desktop: a full-width band, content to the site's widest column (1100px), the wordmark left and the links in columns right */
@media(min-width:760px){.site-foot{padding-top:32px;gap:14px}.site-foot .ft{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:48px;align-items:start}
  .site-foot .fd{flex-direction:column;align-items:flex-start}.site-foot .fl{grid-template-columns:repeat(4,max-content);column-gap:48px}}
.site-foot .fc{margin:0;font-size:12px;color:var(--fg3)}
.site-foot .fm{margin:0;padding-top:6px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;align-items:center;column-gap:18px;font-size:12px}
.site-foot .fm a{display:inline-flex;align-items:center;min-height:44px}

/* shared marks: a glyph in a circle + a word. Filled green = evidenced, filled blue = claimed, hollow ring = not stated */
.pf{display:inline-flex;align-items:center;gap:5px;font:500 13px/1.2 var(--sans);color:var(--fg3);white-space:nowrap}
.pf i,.mk i,.gua b i{font-style:normal;flex:none;width:16px;height:16px;border-radius:50%;display:grid;place-items:center;background:transparent;box-shadow:inset 0 0 0 1.5px var(--dot);color:var(--fg3)}
.pf i svg,.mk i svg,.gua b i svg{width:10px;height:10px}
.pf.evidenced{color:var(--live)}.pf.evidenced i,.mk.evidenced i,.gua .evidenced b i{background:var(--live);box-shadow:none;color:#fff}
.pf.claimed{color:var(--pol)}.pf.claimed i,.mk.claimed i,.gua .claimed b i{background:var(--pol);box-shadow:none;color:#fff}
.key{display:flex;flex-wrap:wrap;gap:4px 12px;margin:0}.key .pf{font-size:12px}
.empty{margin:0;padding:22px 16px;color:var(--fg2);font-size:15px}.empty a{text-decoration:underline;color:var(--pol)}
.linkish{appearance:none;background:var(--glass);border:1px solid var(--line2);border-radius:999px;min-height:44px;padding:0 16px;margin-left:6px;color:var(--fg);cursor:pointer;font:500 14px var(--sans)}
.linkish:hover{background:#fff}

/* finder */
.finder{max-width:720px;margin:0 auto;padding:8px var(--gut) 0}
.finder h1{margin:14px 0 4px}
/* the finder's title in the wordmark's colours (the owner, 2026-10-29) */
/* the best match, read like the landing's screen 3: one line of what you get, and the one next step */
.best{margin:0 0 12px;padding:12px 14px;border-radius:18px;background:var(--card);border:1px solid var(--line);box-shadow:0 2px 10px rgba(20,30,50,.05)}
.best .bk{margin:0;font:600 11.5px/1.3 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--fg3)}
.best .bn{margin:3px 0 0;font:600 16px/1.35 var(--sans);color:var(--fg)}
.best .bp{margin:2px 0 0;font:500 14px/1.4 var(--sans);color:var(--fg2)}
.best .ba{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.best .ba a,.best .ba button{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--line2);background:#fff;font:600 14px var(--sans);color:var(--fg);text-decoration:none;cursor:pointer}
.best .ba .go{background:var(--fg);border-color:var(--fg);color:#fff}
.best .ba button:disabled{opacity:.5;cursor:default}
/* the top match's live answer, inline (fetched by this browser: src/live.js) */
.blv:empty{display:none}
.blv{margin:10px 0 0;padding:10px 12px;border-radius:14px;background:#fff;border:1px solid var(--line)}
.blv p{margin:0}
.blv .lvs{font:500 14px/1.4 var(--sans);color:var(--fg3)}
.blv .lva,.blv .lvm{font:400 16px/1.45 var(--sans);color:var(--fg)}.blv .lva b,.blv .lvm b{font-weight:600}
.blv .lvi{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;margin:8px 0 0;border-radius:10px;background:var(--card2)}
.blv .lvsrc{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;margin-top:8px;font:500 12.5px/1.3 var(--sans);color:var(--fg2)}
.blv .via{margin-top:4px;font:500 12.5px/1.35 var(--sans);color:var(--fg3)}
.blv .linkish{min-height:44px}
/* the call an agent would make for the top match: method, URL, headers (key named), body; wrapped, never cut */
.best .bk2{margin-top:12px}
.call{margin:6px 0 0;padding:10px 12px;border-radius:12px;background:#f3f5f8;border:1px solid var(--line);font:500 12.5px/1.5 var(--mono,ui-monospace,Menlo,monospace);color:var(--fg);white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}
.best .cl{margin:8px 0 0;padding:0 0 0 18px;font:500 13px/1.45 var(--sans);color:var(--fg2)}
.best .cl b{font-weight:600;color:var(--fg);overflow-wrap:anywhere}.best .cl a,.best .bq a{color:var(--pol);overflow-wrap:anywhere}
.best .bq{margin:6px 0 0;font:500 13px/1.4 var(--sans);color:var(--fg3)}
/* what irlpls won't or can't do for this ask, above the matches */
.notes:empty{display:none}
.notes{margin:0 0 10px}
.notes .note{margin:0 2px 6px;font:400 14px/1.4 var(--sans);color:var(--fg2)}.notes .note b{color:var(--fg);font-weight:600}
.notes .note.stop b{color:#b3261e}
/* a card page's stage row: the card fields it is read from, one short paragraph each */
.stg-o .sd{flex-basis:100%;margin-top:4px}.stg-o .sd p{margin:2px 0 0;font:500 12.5px/1.45 var(--sans);color:var(--fg2);overflow-wrap:anywhere}
.stg-o .sd p b{font-weight:600;color:var(--fg)}.stg-o .sd .unk{color:var(--fg3)}.stg-o .sd .rule{color:var(--fg3);font-style:italic}.stg-o .sd a{color:var(--pol)}
.stg-o li.reported>b{color:var(--fg2)}
/* compare: one stage's level, a dot and its word */
.mk1{display:inline-flex;align-items:center;gap:6px;font:500 13px/1.25 var(--sans);color:var(--fg3)}
.mk1 i{flex:none;width:10px;height:10px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--dot)}
@media(max-width:599px){.mk1 .w{display:none}.mk1 i{width:12px;height:12px}th:first-child{width:92px}tbody.g th[scope=row]{text-transform:none;letter-spacing:0;font-size:12.5px}}  /* a phone: the dot, its word for screen readers; the key below says the words */
.mk1 i.e{background:var(--live);box-shadow:none}.mk1 i.c{background:var(--pol);box-shadow:none}.mk1 i.r{box-shadow:inset 0 0 0 1.5px var(--fg2)}
@media(forced-colors:active){.mk1 i{forced-color-adjust:none}}
.search{display:flex;align-items:center;gap:10px;background:var(--glass);border:1px solid var(--edge);box-shadow:var(--shadow),inset 0 1px 0 #fff;border-radius:999px;padding:0 4px 0 16px;min-height:52px;-webkit-backdrop-filter:blur(20px) saturate(1.6);backdrop-filter:blur(20px) saturate(1.6)}
.search:focus-within{box-shadow:var(--shadow),0 0 0 2px var(--pol)}
.search svg{flex:none;color:var(--fg3)}
.search input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:var(--fg);font:500 16px var(--sans);padding:14px 0}
.search input::placeholder{color:#6b7480}
.search input::-webkit-search-cancel-button{display:none}
.x{appearance:none;background:none;border:0;padding:0;cursor:pointer;width:44px;height:44px;display:grid;place-items:center;font-size:24px;line-height:1;color:var(--fg3);border-radius:50%}
.x:hover{background:var(--card2);color:var(--fg)}
/* sample asks: one quiet line of plain-text suggestions; scrolls sideways (with an edge fade) rather than wrap */
.examples{display:flex;align-items:center;margin:4px 0 0 16px;white-space:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;font:500 14px/1 var(--sans);color:var(--fg3)}
.examples::-webkit-scrollbar{display:none}
.examples.fade{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 36px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 36px),transparent)}
.examples>span{flex:none;margin-right:6px}
.examples i{flex:none;font-style:normal;padding:0 6px;color:var(--dot)}
.examples button{flex:none;appearance:none;min-height:44px;margin:0;padding:0 1px;border:0;background:none;font:inherit;color:var(--fg2);cursor:pointer;text-decoration:underline dotted rgba(61,70,84,.45);text-underline-offset:3px}
.examples button:hover,.examples button:focus-visible{color:var(--pol);text-decoration-color:currentColor}
.examples button:focus-visible{outline-offset:-2px}
.chips{display:flex;gap:6px;margin-top:10px}
.chips button{appearance:none;background:var(--glass);margin:0;cursor:pointer;min-height:44px;display:inline-flex;align-items:center;padding:0 16px;border-radius:999px;border:1px solid var(--edge);box-shadow:0 2px 10px rgba(20,30,50,.06),inset 0 1px 0 #fff;color:var(--fg2);font:500 14px var(--sans);white-space:nowrap}
.chips button:hover{color:var(--fg);background:#fff}
.chips button[aria-pressed=true]{color:#fff;background:var(--fg);border-color:var(--fg);box-shadow:none;font-weight:600}
.read{display:flex;flex-wrap:wrap;gap:4px 6px;margin:12px 0 0;font:500 12.5px var(--mono);color:var(--fg3)}
.read span:not(.sr)+span:before{content:"· ";color:var(--dot)}
/* the count is a plain sentence on its own line, left; the key sits under it, so neither reads as a column header */
.lhead{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin:16px 2px 10px}
.meta.count{font:500 15px var(--sans);color:var(--fg)}
.meta{margin:0;font:600 13px var(--sans);color:var(--fg2);display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.list{list-style:none;margin:0;padding:4px;border:1px solid var(--edge);border-radius:var(--r-lg);background:var(--glass);box-shadow:var(--shadow),inset 0 1px 0 #fff;overflow:hidden}
.list:empty{display:none}
.list li+li{border-top:1px solid var(--line)}
.row{display:grid;grid-template-columns:minmax(0,1fr);gap:6px 14px;align-items:center;padding:10px 12px;border-radius:18px;text-decoration:none;min-height:56px}
.row:focus-visible{outline-offset:-3px}.row:hover{background:rgba(255,255,255,.85)}
.nmr{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;min-width:0}
/* the fit verdict, in the landing's words (Good fit / Partial fit); the number is in its title */
.fit{font:600 12px var(--sans);color:var(--live);white-space:nowrap}.fit.w{color:var(--fg3)}
.row .main{min-width:0;display:flex;flex-direction:column;gap:2px}
.nm{font:600 16px/1.25 var(--head);letter-spacing:-.01em}
.sub{font:500 13px/1.35 var(--sans);color:var(--fg3)}
.proof{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;min-width:0;font:500 13px/1.3 var(--sans);color:var(--fg3)}
/* the landing's eight stage dots: green evidenced, blue claimed, an ink ring for a time only reported, a grey ring when not stated */
.dots{display:inline-flex;gap:3px;flex:none;vertical-align:middle}.dots i{width:9px;height:9px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--dot)}
.dots i.e{background:var(--live);box-shadow:none}.dots i.c{background:var(--pol);box-shadow:none}.dots i.r,.kd i.r{box-shadow:inset 0 0 0 1.5px var(--fg2)}
.kd{display:inline-flex;align-items:center;gap:5px;font:500 12px/1.2 var(--sans);color:var(--fg3);white-space:nowrap}.kd i{width:9px;height:9px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--dot)}
.kd i.e{background:var(--live);box-shadow:none}.kd i.c{background:var(--pol);box-shadow:none}
.stg-t{display:flex;align-items:center;gap:10px;margin:0 0 6px;font:600 15px var(--sans)}.stg-t .dots i{width:11px;height:11px}
.stg-l{margin:0 0 8px;font-size:14px;line-height:1.45;color:var(--fg2)}.stg-l a{color:var(--pol);font-weight:600}
.stg-o,details.dt ol.stg-o{list-style:none;margin:0;padding:0;display:grid;gap:6px}.stg-o li{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:0 10px;padding:8px 12px;border-radius:14px;border:1px solid var(--line);background:var(--card);min-width:0}
.stg-o span{font:600 14px var(--sans)}.stg-o b{font:500 13px var(--sans);color:var(--fg3)}.stg-o .claimed b{color:var(--pol)}.stg-o .evidenced b{color:var(--live)}
.stg-o small{flex-basis:100%;font:500 12px var(--sans);color:var(--fg3)}
@media(min-width:720px){
  .row{grid-template-columns:minmax(0,1fr) 250px}
  .proof{justify-content:flex-start}
}

/* sheet: opaque and full screen, a page of its own */
#sheet{position:fixed;inset:0;z-index:40;background:#f6f8fb;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.sheet-bar{position:sticky;top:0;z-index:2;background:#f8fafc;box-shadow:0 1px 0 var(--line);padding:max(4px,env(safe-area-inset-top)) 12px 4px max(8px,calc((100% - 720px)/2 + 8px))}
.sheet-x{appearance:none;background:none;border:0;cursor:pointer;display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 14px 0 8px;border-radius:999px;color:var(--fg2);font:500 15px var(--sans)}
.sheet-x:hover{background:var(--card2);color:var(--fg)}
.sheet-in{max-width:720px;margin:0 auto;padding:16px var(--gut) max(40px,env(safe-area-inset-bottom))}

/* capture card: a spec sheet */
.page{max-width:720px;margin:0 auto;padding:8px var(--gut) 0}.page .cardv{max-width:720px}
.cardv .ttl{margin:14px 0 0;font:700 clamp(28px,7vw,40px)/1.08 var(--head);letter-spacing:-.03em;text-wrap:balance;overflow-wrap:anywhere}
.lede{margin:8px 0 0;font-size:16px;line-height:1.45;color:var(--fg2);max-width:36em;text-wrap:pretty}
.fitb{margin:16px 0 0;padding:12px 14px;border-radius:var(--r-md);background:var(--glass);border:1px solid var(--edge);box-shadow:var(--shadow),inset 0 1px 0 #fff}
.fitn{display:flex;align-items:baseline;gap:10px;min-width:0}.fitn b{font:700 28px/1 var(--head);letter-spacing:-.02em}.fitn span{font-size:14px;color:var(--fg2);min-width:0;overflow-wrap:anywhere}
.fitb ul{margin:8px 0 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:4px 14px;font-size:13px;color:var(--fg2)}
.fitb li:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--bad);margin-right:7px;vertical-align:1px}
.cardv .spec{margin:18px 0 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:1px solid var(--edge);border-radius:var(--r-md);overflow:hidden;background:var(--glass);box-shadow:var(--shadow),inset 0 1px 0 #fff}
.cardv .spec>div{padding:10px 14px;border-bottom:1px solid var(--line);min-width:0}
.cardv .spec>div:nth-child(odd){border-right:1px solid var(--line)}.cardv .spec>div:nth-last-child(-n+2){border-bottom:0}
.cardv .spec dt,.api dt{font:600 11.5px var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--fg3)}
.cardv .spec dd{margin:2px 0 0;font:500 15px/1.35 var(--sans);overflow-wrap:anywhere}
@media(min-width:640px){.cardv .spec{grid-template-columns:repeat(3,minmax(0,1fr))}.cardv .spec>div{border-right:1px solid var(--line)}.cardv .spec>div:nth-child(3n){border-right:0}.cardv .spec>div:nth-child(odd){border-right:1px solid var(--line)}.cardv .spec>div:nth-child(3n){border-right:0}.cardv .spec>div:nth-last-child(-n+3){border-bottom:0}}
.cardv h2.sec{margin:26px 0 8px;font:600 12px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--fg3)}
.gua{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.gua li{display:flex;flex-direction:column;gap:4px;padding:9px 12px;border-radius:14px;border:1px solid var(--line);background:var(--card);min-width:0}
.gua span{font:600 14px var(--sans)}
.gua b{display:flex;align-items:center;gap:6px;font:500 13px var(--sans);color:var(--fg3)}
.gua .evidenced{border-color:rgba(10,110,52,.35)}.gua .evidenced b{color:var(--live)}
.gua .claimed{border-color:rgba(27,95,214,.35)}.gua .claimed b{color:var(--pol)}
@media(min-width:640px){.gua{grid-template-columns:repeat(4,minmax(0,1fr))}}
details.dt{margin-top:8px;border-radius:12px}
details.dt summary{cursor:pointer;min-height:44px;display:flex;align-items:center;gap:6px;font:500 14px var(--sans);color:var(--fg2);list-style:none}
details.dt summary::-webkit-details-marker{display:none}
details.dt summary:before{content:"";width:7px;height:7px;border:solid currentColor;border-width:0 1.6px 1.6px 0;transform:rotate(-45deg);margin:0 6px 0 2px;transition:transform .15s}
details.dt[open] summary:before{transform:rotate(45deg)}
details.dt summary:hover{color:var(--fg)}
details.dt ol{margin:4px 0 0;padding-left:20px;font-size:14px;color:var(--fg2)}
details.dt li{margin:0 0 10px}details.dt li>b{color:var(--fg)}
details.dt .stg-o li{margin:0}details.dt .stg-o li>b{color:var(--fg3)}details.dt .stg-o li.claimed>b{color:var(--pol)}details.dt .stg-o li.evidenced>b{color:var(--live)}
details.dt p{margin:3px 0 0;font-size:14px;color:var(--fg2);max-width:40em;text-wrap:pretty;overflow-wrap:anywhere}details.dt p b{color:var(--fg)}
details.dt .unk{color:var(--fg3)}details.dt a,.srcl a{text-decoration:underline;color:var(--pol)}
.srcl{overflow-wrap:anywhere;color:var(--fg2)}
.api{border:1px solid var(--edge);border-radius:var(--r-md);background:var(--glass);box-shadow:var(--shadow),inset 0 1px 0 #fff;overflow:hidden}
.api dl{margin:0;padding:6px 14px}
.api dl>div{display:grid;grid-template-columns:72px minmax(0,1fr);gap:10px;padding:5px 0;align-items:baseline}
.api dd{margin:0;font:500 13px/1.45 var(--mono);color:var(--fg);overflow-wrap:break-word}.api dd a{text-decoration:underline;color:var(--pol)}.api code{font:inherit}
.eps{list-style:none;margin:0;padding:8px 14px 10px;border-top:1px solid var(--line);background:var(--code);font:500 12.5px/1.5 var(--mono);color:var(--fg2)}
.eps li{padding:2px 0;overflow-wrap:break-word}.eps b{display:inline-block;min-width:44px;color:var(--pol);font-weight:600}.eps .more-ep{color:var(--fg3)}
.none-api{margin:0;font-size:14px;color:var(--fg3)}
.rdy{margin:0 0 10px;font-size:14px;color:var(--fg2)}
.foot{margin:22px 0 0;display:flex;flex-direction:column;gap:2px;font-size:13px;color:var(--fg3)}.foot .links{display:flex;gap:18px}.foot a{text-decoration:underline;color:var(--pol);padding:10px 0;display:inline-block}
.use{margin:10px 0 0;font-size:14px;color:var(--fg2);display:flex;flex-wrap:wrap;column-gap:6px}.use a{text-decoration:underline;color:var(--pol)}
.proof3{display:flex;flex-wrap:wrap;gap:6px 16px;margin:0}.proof3 .pf{font-size:14px}
details.dt .gua{margin:6px 0 12px}

/* compare */
.wide{max-width:1100px;margin:0 auto;padding:8px var(--gut) 0}.wide h1{margin:14px 0 14px;font:700 clamp(28px,7vw,40px)/1.05 var(--head);letter-spacing:-.03em}
.cmpbar{display:flex;flex-wrap:wrap;gap:6px}
.sel{display:inline-flex;align-items:center;gap:0;min-height:44px;padding:0 0 0 14px;border-radius:999px;border:1px solid var(--edge);background:var(--glass);font:500 14px var(--sans);white-space:nowrap}
.sel button{appearance:none;background:none;border:0;cursor:pointer;width:42px;height:42px;display:grid;place-items:center;border-radius:50%;color:var(--fg3)}.sel button:hover{color:var(--fg);background:var(--card2)}
.add{position:relative;display:inline-flex;max-width:100%;min-width:0}
.add select{appearance:none;-webkit-appearance:none;min-height:44px;width:auto;padding:0 18px;border-radius:999px;border:1px dashed var(--dot);background:var(--glass);color:var(--fg2);font:500 14px var(--sans);cursor:pointer;max-width:100%;text-overflow:ellipsis}
.add select:hover{color:var(--fg);background:#fff}
.wide .meta{margin:8px 2px 0}.wide .meta:empty{display:none}
.scroll{position:relative;overflow-x:auto;margin-top:14px;border:1px solid var(--edge);border-radius:var(--r-md);background:var(--card);box-shadow:var(--shadow)}
.scroll.is-empty{border:1px dashed var(--line2);background:none;box-shadow:none}
.cmpkey{margin:10px 2px 0}
.presets ul{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.presets a{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--edge);background:var(--glass);box-shadow:0 2px 10px rgba(20,30,50,.06),inset 0 1px 0 #fff;text-decoration:none;color:var(--fg2);font:500 14px var(--sans)}
.presets a:hover{color:var(--fg);background:#fff}
.more{display:block;margin:10px 0 0}.nf a{margin-left:4px}
table{border-collapse:collapse;width:100%}
table.n1{max-width:480px}
th:first-child{width:76px}
th,td{padding:9px 8px;text-align:left;vertical-align:top;font:500 13px/1.35 var(--sans);border-bottom:1px solid var(--line)}
th:first-child{padding-left:12px}
th{color:var(--fg3);font-weight:500}
tbody th[scope=row]{position:sticky;left:0;background:var(--card);z-index:1;font:600 11px/1.6 var(--sans);letter-spacing:.05em;text-transform:uppercase}
thead th{color:var(--fg);font:600 14px/1.25 var(--head);vertical-align:bottom;padding-right:0}
.ch{display:flex;flex-direction:column;align-items:flex-start}.ch a{padding-top:2px}.rm{margin:0 0 -8px -12px}
.rm{appearance:none;background:none;border:0;cursor:pointer;flex:none;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;color:var(--fg3)}.rm:hover{color:var(--fg);background:var(--card2)}
thead th a{text-decoration:none}thead th a:hover{text-decoration:underline}
thead th:first-child{position:sticky;left:0;background:var(--card);z-index:1}
tr:last-child td,tr:last-child th{border-bottom:0}
.sec th{position:static!important;font:600 11px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--fg3);background:var(--card2)!important}
.mk{display:inline-flex}.mk i{width:18px;height:18px}
@media(min-width:720px){th:first-child{width:130px}th,td{padding:11px 14px;font-size:14.5px}.mk i{width:20px;height:20px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* focus rings survive every reset; forced colours keep shapes */
button:focus-visible,a:focus-visible,summary:focus-visible,select:focus-visible{outline:2px solid var(--pol);outline-offset:3px}
.chips button:focus-visible{outline-offset:2px;border-radius:999px}.sheet-x:focus-visible{outline:2px solid var(--pol);outline-offset:-2px;border-radius:999px}.sheet-x.quiet:focus-visible{outline:none}
.dots i,.kd i{forced-color-adjust:none}
@media(forced-colors:active){.pf i,.mk i,.gua b i,.chips button,.search{border:1px solid ButtonText}}
@media(min-width:1800px){.wide{max-width:1280px}}

.lede-b{margin:0 0 14px;color:var(--fg2);font-size:15px;max-width:40em}

/* ---- long-form documents: the standard, the agent manual, changelog, governance ---- */
.spec-wrap{max-width:1100px;margin:0 auto;padding:8px var(--gut) 0;display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
.spec-head h1{margin:14px 0 6px}
.spec-head .aud{margin:0 0 4px}
.spec-head p{margin:0;color:var(--fg3);font:500 13px var(--sans)}
.toc{border:1px solid var(--edge);border-radius:var(--r-md);background:var(--glass);box-shadow:var(--shadow),inset 0 1px 0 #fff}
.toc summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;min-height:48px;padding:0 16px;font:600 14px var(--sans);color:var(--fg2)}
.toc summary::-webkit-details-marker{display:none}
.toc summary:after{content:"";width:8px;height:8px;border:solid var(--fg3);border-width:0 2px 2px 0;transform:rotate(45deg) translateY(-3px);transition:transform .15s}
.toc[open] summary:after{transform:rotate(-135deg) translateY(-2px)}
.toc ol{margin:0;padding:4px 8px 12px;list-style:none;counter-reset:none}
.toc a{display:block;padding:7px 10px;border-radius:10px;text-decoration:none;color:var(--fg2);font-size:14px;line-height:1.3}
.toc a:hover,.toc a.on{color:var(--fg);background:rgba(255,255,255,.9)}.toc a.on{font-weight:600}
.std{min-width:0;font-size:16px;line-height:1.6;color:var(--fg2)}
.std h2{margin:44px 0 12px;font:700 24px/1.2 var(--head);letter-spacing:-.02em;color:var(--fg);scroll-margin-top:16px}
.std h2:first-child{margin-top:8px}
.std h3{margin:28px 0 8px;font:600 17px/1.3 var(--head);color:var(--fg)}
.std p,.std li{text-wrap:pretty;overflow-wrap:break-word}
.std strong{color:var(--fg);font-weight:600}
.std ul,.std ol{padding-left:22px}.std li{margin:4px 0}
.std a{color:var(--pol);text-decoration:underline;text-decoration-color:rgba(27,95,214,.35);text-underline-offset:3px}
.std code{font:400 .86em var(--mono);color:var(--fg);background:var(--code);border:1px solid var(--line);border-radius:6px;padding:1px 5px;overflow-wrap:anywhere}
.std pre{margin:16px 0;padding:14px 16px;background:var(--code);border:1px solid var(--line);border-radius:var(--r-sm);overflow-x:auto;-webkit-overflow-scrolling:touch}
.std pre code{background:none;border:0;padding:0;font-size:13px;line-height:1.55;white-space:pre;overflow-wrap:normal;color:var(--fg)}
.tbl{margin:14px 0;border:1px solid var(--edge);border-radius:var(--r-sm);overflow:hidden;background:var(--card);box-shadow:0 2px 12px rgba(20,30,50,.05)}
.tbl table{width:100%;min-width:0;border-collapse:collapse;font-size:14.5px;line-height:1.5}
.tbl th{text-align:left;font:600 11.5px var(--sans);letter-spacing:.05em;text-transform:uppercase;color:var(--fg3);padding:10px 12px;border-bottom:1px solid var(--line2);background:var(--card2)}
.tbl td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top;overflow-wrap:anywhere}
.tbl tr:last-child td{border-bottom:0}
@media(min-width:720px){.tbl.c3 td:nth-child(2){width:8.5em}}
.tbl td:first-child{color:var(--fg);white-space:nowrap}
.tbl td:first-child code{white-space:nowrap}
@media(max-width:719px){
  .tbl thead{display:none}
  .tbl table,.tbl tbody,.tbl tr,.tbl td{display:block}
  .tbl tr{padding:10px 12px;border-bottom:1px solid var(--line)}.tbl tr:last-child{border-bottom:0}
  .tbl td{padding:2px 0;border:0}
  .tbl td:first-child{white-space:normal;font-weight:600;padding-bottom:4px}
  .tbl td:not(:first-child):before{content:attr(data-l);display:block;font:600 11px var(--sans);letter-spacing:.05em;text-transform:uppercase;color:var(--fg3);margin-top:4px}
  .tbl.c2 td:not(:first-child):before{display:none}
}
@media(min-width:960px){
  .spec-wrap{grid-template-columns:220px minmax(0,1fr);column-gap:48px;padding-top:16px}
  .spec-head{grid-column:2}
  .toc{grid-column:1;grid-row:1 / span 2;align-self:start;position:sticky;top:68px;max-height:calc(100vh - 84px);overflow:auto;border:0;background:none;box-shadow:none}
  .toc summary{pointer-events:none;padding:0 10px;min-height:32px;font:600 12px var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--fg3)}
  .toc summary:after{display:none}
  .toc ol{padding:0}
  .std{grid-column:2;max-width:760px}
}

/* the agent manual: a short note for the person, the long form for their agent */
.agents-head{display:grid;gap:12px;padding:6px 0 8px}
.agents-head .kick2{margin:0;font:600 12px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--fg3)}
.agents-head .note{margin:0;color:var(--fg2);font:400 16px/1.5 var(--sans);max-width:34em;text-wrap:pretty}
.handoff{display:flex;align-items:center;gap:10px;max-width:640px;padding:6px 6px 6px 16px;border:1px solid var(--edge);border-radius:var(--r-lg);background:var(--glass);box-shadow:var(--shadow),inset 0 1px 0 #fff}
.handoff code{flex:1;min-width:0;font:13px/1.45 var(--mono);color:var(--fg);overflow-wrap:anywhere}
.handoff button{flex:none;height:44px;padding:0 18px;border-radius:999px;border:0;background:var(--fg);color:#fff;font:600 14px var(--sans);cursor:pointer}
.agents-head .raw{margin:0;font:500 13px var(--sans);color:var(--fg3)}.agents-head .raw a{color:var(--pol);text-decoration:underline;text-underline-offset:3px;display:inline-block;padding:11px 0;min-height:44px}
.std .tbl{overflow-x:auto;-webkit-overflow-scrolling:touch}.std .tbl table{min-width:100%}.std td,.std th{overflow-wrap:normal;word-break:normal;hyphens:manual}.std td code,.std th code{white-space:nowrap;overflow-wrap:normal}
.rl{margin:8px 0 0;font-size:14px;color:var(--fg2)}.rl b{color:var(--fg)}

/* a count wraps whole ("1 of 8 stages claimed" / "· 0 evidenced"), never mid-phrase */
.nw{white-space:nowrap}

/* provider-published cards (build.py pub_badge / provider_sections / pub_strip; check.html preview). Ink, not green:
   green means evidenced. Grey when irlpls could not use the latest read. */
.pubb{display:inline-flex;align-items:center;gap:8px;max-width:100%;min-height:32px;padding:4px 12px;border-radius:999px;border:1px solid var(--line2);background:#fff;font-size:13px;line-height:1.35;color:var(--fg2);margin:10px 0 2px}
.pubb svg{flex:none;color:var(--fg)}.pubb b{color:var(--fg);font-weight:600}.pubb span{overflow-wrap:anywhere;min-width:0}
.pubb.old{background:var(--card2);color:var(--fg3);border-radius:var(--r-sm)}.pubb.old b{color:var(--fg2)}
.say{margin:0;padding:12px 14px;border-radius:var(--r-md);background:#fff;border:1px solid var(--line);font-size:15px;line-height:1.45}
.say p{margin:0}.say p+p{margin-top:6px;color:var(--fg2);font-size:14px}
.ranks{list-style:none;margin:0;padding:0;border-radius:var(--r-md);background:#fff;border:1px solid var(--line);overflow:hidden}
.ranks li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;min-height:48px;padding:8px 14px;font-size:15px}
.ranks li+li{border-top:1px solid var(--line)}
.ranks b{font:700 15px var(--sans);white-space:nowrap}.ranks b small{font-weight:500;color:var(--fg3);font-size:13px}
.ranks .no b{font-weight:500;color:var(--fg3)}
.up{margin:4px 0 0;font-size:14px;color:var(--fg2)}.up a{display:inline-flex;align-items:center;min-height:44px;color:var(--pol);text-decoration:underline;text-underline-offset:3px}
.chg{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.chg li{font-size:14px;color:var(--fg2);background:#fff;border:1px solid var(--line);border-radius:var(--r-sm);padding:8px 12px;overflow-wrap:anywhere}
.chg li b{color:var(--fg);font-weight:600}
.bdg{display:flex;flex-direction:column;gap:10px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:14px}
.bdg img{max-width:100%;height:auto}
.bdg code{font:12px/1.45 var(--mono);color:var(--fg3);overflow-wrap:anywhere;display:block}
.claim{margin:22px 0 0;font-size:14px;color:var(--fg2)}.claim a{display:inline-flex;align-items:center;min-height:44px;color:var(--pol);text-decoration:underline;text-underline-offset:3px}
.readfrom{margin:6px 0 0;font-size:12px;color:var(--fg3);overflow-wrap:anywhere}.readfrom code{font:12px var(--mono)}
.rl.ev[data-ok=false]{color:var(--bad)}
.pubs{margin:28px 0 16px;padding-top:16px;border-top:1px solid var(--line)}.pubs[hidden]{display:none}
.pubs h2{font:600 12px/1 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--fg3);margin:0 0 8px}
.pubrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 12px;align-items:center;padding:10px 12px;min-height:56px;text-decoration:none;border-radius:18px}
.pubrow .nm{font-weight:600}
.pubrow .sub{grid-column:1;font-size:13px;color:var(--fg3);overflow-wrap:anywhere}
.pubrow .when{grid-row:1/3;grid-column:2;font-size:13px;color:var(--fg2);text-align:right;white-space:nowrap}
.pubrow .when em{display:block;font-style:normal;color:var(--live);font-weight:600}
.pubs .pmore{margin:8px 0 0}.pubs .pmore summary{display:inline-flex;align-items:center;min-height:44px;font-size:14px;color:var(--fg2);cursor:pointer}
.plink{display:inline-flex;align-items:center;min-height:44px;margin:4px 0 0;font-size:14px;color:var(--fg2)}
.pmk{display:inline-flex;align-items:center;gap:4px;margin-left:6px;font:600 12px var(--sans);color:var(--fg2);vertical-align:1px;white-space:nowrap}
.site-foot .publ{color:var(--fg2);text-decoration:none;min-height:44px;display:inline-flex;align-items:center}
/* one title treatment (the owner, 2026-10-30): screen 1's headline style on every main title, from one rule set (src/style.css
   and the landing's own head carry the same text): Inter Tight 700 on one size scale, a key term in the headline's gradient,
   and its slow light sweep (data-t: the title's own text laid over it, clipped to the letters). Long documents (.hl-doc): the
   same family and scale in ink, no sweep. Reduced motion and ?still=1: static. */
.hl{position:relative;font:700 clamp(20px,calc((min(100vw,720px) - 32px)/13.3),40px)/1.12 var(--head);letter-spacing:-.025em;text-wrap:wrap}
.hl .k3,.hl .k4,.hl .k5{-webkit-background-clip:text;background-clip:text;color:transparent}
.hl .k3{background-image:linear-gradient(90deg,#0f766e,#0891b2)}.hl .k4{background-image:linear-gradient(90deg,#0891b2,#0284c7)}.hl .k5{background-image:linear-gradient(90deg,#059669,#0d9488)}
.hl[data-t]:after{content:attr(data-t);white-space:inherit;position:absolute;inset:0;pointer-events:none;color:transparent;-webkit-background-clip:text;background-clip:text;background-image:linear-gradient(100deg,rgba(255,255,255,0) 30%,rgba(255,255,255,.38) 50%,rgba(255,255,255,0) 70%);background-repeat:no-repeat;background-size:40% 100%;background-position:-70% 0;opacity:0}
@media(prefers-reduced-motion:no-preference){html:not(.still) .hl[data-t]:after{opacity:1;animation:shine 7s linear infinite}}
@keyframes shine{from{background-position:-70% 0}to{background-position:170% 0}}
@media(forced-colors:active){.hl .k3,.hl .k4,.hl .k5{color:CanvasText;background:none}}
.aud{margin:6px 0 0;font:500 15px/1.4 var(--sans);color:var(--fg2)}
/* docs.html: three doors as glass cards, then a few small links; the page fills the screen so the footer sits at its foot */
main.docs{max-width:1100px;margin:0 auto;padding:8px var(--gut) 0;min-height:calc(100svh - 300px)}main.docs h1{margin:14px 0 0}
.docs .doors{list-style:none;margin:18px 0 0;padding:0;display:grid;gap:12px}
@media(min-width:760px){.docs .doors{grid-template-columns:repeat(3,minmax(0,1fr))}}
.docs .door{position:relative;display:flex;flex-direction:column;gap:6px;height:100%;min-height:44px;padding:18px 44px 18px 18px;border-radius:20px;background:var(--glass,rgba(255,255,255,.62));border:1px solid rgba(255,255,255,.9);box-shadow:0 8px 30px rgba(20,30,50,.08),inset 0 1px 0 #fff;text-decoration:none;color:var(--fg)}
.docs .door b{font:700 19px/1.2 var(--head);letter-spacing:-.015em}
.docs .door span{font:400 15px/1.45 var(--sans);color:var(--fg2)}
.docs .door svg{position:absolute;right:16px;top:20px;color:var(--fg3)}
@media(hover:hover){.docs .door:hover{border-color:var(--line2,rgba(20,30,50,.16))}.docs .door:hover b{text-decoration:underline;text-underline-offset:3px}}
.docs .more{display:flex;flex-wrap:wrap;column-gap:22px;margin:18px 2px 0}
.docs .more a{display:inline-flex;align-items:center;min-height:44px;font:500 14px var(--sans);color:var(--pol);text-decoration:none}
@media(hover:hover){.docs .more a:hover{text-decoration:underline}}
/* the title's colours flow into the header's wordmark as the title scrolls away, and stay (irl blue, pls green; --bc 0 ink, 1 colour; src/bar.js sets it) */
.top .brand,.top .brand i{-webkit-background-clip:text;background-clip:text}.top .brand{background-image:linear-gradient(90deg,#2563eb,#06b6d4)}.top .brand i{background-image:linear-gradient(90deg,#10b981,#16a34a)}
.top .brand{color:rgba(16,20,24,calc(1 - var(--bc,0)))}.top .brand i{color:rgba(91,101,116,calc(1 - var(--bc,0)))}
/* on the pages (not the landing's screens): the whole title in the gradient */
.hl.all{background-image:linear-gradient(90deg,#2563eb,#0891b2 50%,#059669);-webkit-background-clip:text;background-clip:text;color:transparent}
@media(forced-colors:active){.hl.all{color:CanvasText;background:none}}
