/* ==== Oarsman AI v3 design system (1 Nov 2026): "ocean of agents". Loaded last, on top of site/biz/store.css.
   Dark ocean, glass + gradient depth, Geist variable (self-hosted, font-display:optional), motion that respects
   prefers-reduced-motion. No animation ever sits over prices, buy buttons or checkout links. ==== */
@font-face{font-family:Geist;src:url(../fonts/geist-var-latin.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:optional}
:root{--bg:#03060d;--bg2:#060b18;--panel:rgba(13,19,38,.66);--panel2:rgba(19,27,52,.78);--line:rgba(128,150,214,.16);--line2:rgba(128,150,214,.28);
 --text:#eef1ff;--muted:#a6afd3;--teal:#2ef2c4;--blue:#6aa8ff;--violet:#9b8cff;--pink:#f0abfc;--amber:#fbbf24;--radius:18px;--glow:46,242,196;
 --font:Geist,Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--ease:cubic-bezier(.2,.8,.2,1)}
html{background:var(--bg);scroll-behavior:smooth;scroll-padding-top:84px}
body{font-family:var(--font);font-feature-settings:"kern","calt";background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;letter-spacing:-.006em;position:relative;min-height:100vh}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
 background:radial-gradient(1100px 620px at 85% -8%,rgba(106,168,255,.10),transparent 60%),radial-gradient(900px 600px at -10% 30%,rgba(46,242,196,.07),transparent 60%),radial-gradient(900px 700px at 60% 120%,rgba(155,140,255,.09),transparent 60%),
 linear-gradient(rgba(128,150,214,.035) 1px,transparent 1px) 0 0/64px 64px,linear-gradient(90deg,rgba(128,150,214,.035) 1px,transparent 1px) 0 0/64px 64px,var(--bg);
 -webkit-mask-image:linear-gradient(#000,#000 70%,rgba(0,0,0,.6));mask-image:linear-gradient(#000,#000 70%,rgba(0,0,0,.6))}
::selection{background:rgba(46,242,196,.35);color:#fff}
h1,h2,h3,.fh{letter-spacing:-.025em;font-weight:650}
h1{font-weight:700;letter-spacing:-.035em}
a{color:var(--teal);text-underline-offset:3px}a:hover{color:#8ffce3}
.wrap{max-width:1200px;padding:0 24px}
.muted{color:var(--muted)}
/* ---- header: floating glass bar + scroll progress ---- */
header.top{background:rgba(3,6,13,.62);backdrop-filter:blur(16px) saturate(150%);-webkit-backdrop-filter:blur(16px) saturate(150%);border-bottom:1px solid var(--line);z-index:30;view-transition-name:site-header}
header.top .wrap{height:64px}
.brand{font-weight:700;font-size:16px;letter-spacing:-.01em;min-height:44px}
.brand .mark{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,#3bf0cf,#6aa8ff 55%,#a48dff);box-shadow:0 0 0 1px rgba(255,255,255,.12) inset,0 6px 24px rgba(46,242,196,.28);color:#04080f}
.bnav{gap:2px}.bnav a{font-size:14px;font-weight:500;color:var(--muted);padding:0 12px;min-height:40px;display:inline-flex;align-items:center;border-radius:10px;transition:color .2s,background .2s}
.bnav a:hover,.bnav a[aria-current=page]{color:var(--text);background:rgba(128,150,214,.12)}
.bnav a.op-nav{color:var(--text);background:linear-gradient(var(--bg2),var(--bg2)) padding-box,linear-gradient(120deg,var(--teal),var(--violet)) border-box;border:1px solid transparent;margin-left:6px}
.bnav a.op-nav:hover{box-shadow:0 0 24px rgba(155,140,255,.25)}
.kbtn{border-radius:10px!important;border-color:var(--line2)!important;background:rgba(19,27,52,.55)!important}
@supports (animation-timeline:scroll()){header.top::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:linear-gradient(90deg,var(--teal),var(--blue),var(--violet));transform-origin:0 50%;transform:scaleX(0);animation:oa-prog linear both;animation-timeline:scroll(root)}}
@keyframes oa-prog{to{transform:scaleX(1)}}
.promo{background:linear-gradient(90deg,rgba(46,242,196,.10),rgba(106,168,255,.08),rgba(155,140,255,.10));border-bottom:1px solid var(--line);font-size:13.5px;color:#d9def6}
.promo-x{min-width:44px;min-height:44px}
/* ---- buttons ---- */
.btn{font-family:inherit;font-weight:600;letter-spacing:-.01em;min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:12px;border:1px solid var(--line2);background:rgba(19,27,52,.6);color:var(--text);backdrop-filter:blur(8px);text-decoration:none}
.btn:hover{border-color:rgba(46,242,196,.55);color:#fff;background:rgba(28,38,70,.75)}
.btn.primary{color:#03110d;border:0;background:linear-gradient(135deg,#5cf7d6 0%,#2ef2c4 45%,#4fd1ff 100%);box-shadow:0 1px 0 rgba(255,255,255,.35) inset,0 10px 30px -8px rgba(46,242,196,.55)}
.btn.primary:hover{color:#03110d;background:linear-gradient(135deg,#7dfae0 0%,#4ff5d0 45%,#74dcff 100%);box-shadow:0 1px 0 rgba(255,255,255,.4) inset,0 14px 40px -8px rgba(46,242,196,.7)}
.btn.lg{padding:0 24px;min-height:52px;font-size:16px;border-radius:14px}
/* ---- hero: poster image (LCP) + WebGL sea on top, text above both ---- */
.cosmos{min-height:clamp(560px,86vh,860px);display:grid;align-items:center;border-bottom:1px solid var(--line);
 background:radial-gradient(900px 480px at 50% -10%,rgba(106,168,255,.16),transparent 70%),radial-gradient(700px 420px at 85% 110%,rgba(155,140,255,.14),transparent 70%),#03060d}
.hero-bg{position:absolute;inset:0;z-index:0;display:block}.hero-bg img{width:100%;height:100%;object-fit:cover;object-position:70% 50%;display:block;transition:opacity 1.6s ease,transform 12s ease-out}
.cosmos.live .hero-bg img{opacity:.42}
.cosmos::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(60% 55% at 50% 42%,rgba(3,6,13,.62),rgba(3,6,13,.15) 70%,transparent),linear-gradient(180deg,rgba(3,6,13,.35),transparent 30%,transparent 70%,var(--bg))}
#cosmos-canvas{z-index:1;pointer-events:none;transition:opacity 1.6s ease}
.cosmos-in{z-index:2;padding:96px 24px 88px;will-change:auto}
.cosmos-in .eyebrow{display:inline-flex;align-items:center;gap:8px;background:rgba(10,18,32,.6);backdrop-filter:blur(10px);border-color:rgba(46,242,196,.35);color:#c9fff1;font-weight:600;letter-spacing:.02em;padding:6px 14px}
.cosmos-in .eyebrow::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 0 rgba(46,242,196,.6);animation:oa-ping 2.4s infinite}
@keyframes oa-ping{0%{box-shadow:0 0 0 0 rgba(46,242,196,.55)}80%,100%{box-shadow:0 0 0 10px rgba(46,242,196,0)}}
.cosmos-in h1{font-size:clamp(40px,7.2vw,84px);line-height:1;letter-spacing:-.045em;max-width:1000px;text-shadow:0 2px 40px rgba(3,6,13,.6)}
.cosmos-in .lead{color:#c3cbec;font-size:clamp(17px,2vw,21px);max-width:660px;text-shadow:0 1px 18px rgba(3,6,13,.8)}
.grad,.cosmos .grad{background-image:linear-gradient(90deg,#2ef2c4,#6aa8ff 35%,#a48dff 65%,#f0abfc 85%,#2ef2c4);background-size:300% auto}
.hsearch{background:rgba(8,13,28,.72);border:1px solid var(--line2);border-radius:16px;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 20px 60px -20px rgba(0,0,0,.8)}
.hsearch input{min-height:44px;font-size:16px}
.hsearch .btn.primary{color:var(--text);background:rgba(128,150,214,.16);box-shadow:none;border:1px solid var(--line2)}
.hsearch .btn.primary:hover{background:rgba(128,150,214,.26);color:#fff}
.cosmos-in .muted.small{color:#b6bfe3}
/* ---- sections ---- */
.sec{padding:88px 0;border-top:0;position:relative}
.sec h2,.sec>h2{font-size:clamp(28px,3.8vw,44px);line-height:1.08;margin:0 0 12px;font-weight:700}
.sec .sub{color:var(--muted);font-size:17px;max-width:680px;margin:0 0 32px}
.hero{padding:64px 0 24px}.hero h1{font-size:clamp(36px,5.4vw,60px);line-height:1.04;letter-spacing:-.04em}
.hero p.lead{color:var(--muted);font-size:clamp(17px,1.8vw,20px)}
.card,.steps li,.nums4 div,.faq details,.cta-band,.buybox,.tile,.acard,.pcard,.answer,.toc,.pbox{background:linear-gradient(180deg,rgba(22,30,58,.55),rgba(10,15,30,.55));border:1px solid var(--line);border-radius:var(--radius)}
.card{box-shadow:0 1px 0 rgba(255,255,255,.04) inset}
/* ---- agent cards with product art ---- */
.agrid{gap:20px}
.acard{padding:0;overflow:hidden;box-shadow:0 1px 0 rgba(255,255,255,.05) inset,0 20px 50px -30px rgba(0,0,0,.9)}
.acard>*:not(.cimg){margin-left:18px;margin-right:18px}.acard>div:first-of-type{margin-top:16px}
.acard .foot{margin-bottom:18px;padding-top:12px;border-top:1px solid var(--line)}
.cimg{display:block;position:relative;aspect-ratio:4/3;overflow:hidden;background:radial-gradient(60% 60% at 50% 45%,rgba(46,242,196,.12),transparent),#060b18;border-bottom:1px solid var(--line)}
.cimg img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .8s var(--ease),filter .6s}
.cimg::after{content:"";position:absolute;inset:auto 0 0 0;height:40%;background:linear-gradient(transparent,rgba(6,10,22,.75));pointer-events:none}
.acard:hover .cimg img{transform:scale(1.06);filter:saturate(1.15)}
.acard h2,.acard h3{font-size:19px;font-weight:650;letter-spacing:-.02em}
.acard .price{color:var(--text);font-size:18px;font-weight:700}
.acard .foot .btn{min-height:40px;padding:0 16px}
.badge{border-radius:999px;font-size:11.5px;letter-spacing:.01em;padding:3px 10px;backdrop-filter:blur(6px)}
.run{background:rgba(4,8,18,.7);border-color:var(--line)}
/* ---- category tiles with icons ---- */
.tiles{gap:16px}
.tile{padding:22px;display:flex;flex-direction:column;gap:6px;min-height:100%}
.tile .ico{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;margin-bottom:10px;color:var(--teal);background:linear-gradient(140deg,rgba(46,242,196,.18),rgba(155,140,255,.12));box-shadow:0 0 0 1px rgba(46,242,196,.25) inset,0 8px 24px -10px rgba(46,242,196,.6)}
.tile .ico svg{width:24px;height:24px}
.tile.dim .ico{color:var(--muted);background:rgba(128,150,214,.08);box-shadow:0 0 0 1px var(--line) inset}
.tile h3{font-size:18px;font-weight:650}.tile p{line-height:1.5}
.tile .n{margin-top:auto;padding-top:10px}
/* ---- steps, numbers, faq, cta ---- */
.steps li{padding:24px}.steps li::before{background:linear-gradient(135deg,var(--teal),var(--blue));box-shadow:0 6px 20px -6px rgba(46,242,196,.7)}
.nums4 div{padding:22px}.nums4 b{font-size:clamp(28px,3.4vw,40px);font-weight:700;letter-spacing:-.03em;background:linear-gradient(90deg,#fff,#b9c4ff);-webkit-background-clip:text;background-clip:text;color:transparent;font-variant-numeric:tabular-nums}
.faq details{padding:0;margin:0 0 10px;overflow:hidden}.faq summary{padding:16px 20px;min-height:44px;list-style:none;display:flex;justify-content:space-between;gap:16px;align-items:center}
.faq summary::-webkit-details-marker{display:none}.faq summary::after{content:"+";font-size:22px;color:var(--teal);transition:transform .3s var(--ease);flex:none}
.faq details[open] summary::after{transform:rotate(45deg)}.faq details p{padding:0 20px 18px;margin:0}
.cta-band{padding:56px 28px;background:radial-gradient(700px 300px at 50% 0,rgba(46,242,196,.16),transparent 70%),radial-gradient(600px 300px at 80% 100%,rgba(155,140,255,.14),transparent 70%),linear-gradient(180deg,rgba(22,30,58,.6),rgba(10,15,30,.6));border-radius:28px}
.cta-band h2{font-size:clamp(28px,3.6vw,42px)}
.cta-band .btn{margin:6px}
/* ---- agent page ---- */
.ahero{grid-template-columns:minmax(0,1.35fr) minmax(0,.85fr);gap:40px;padding:48px 0 28px}
.ahero h1{font-size:clamp(34px,5vw,58px);line-height:1.03;letter-spacing:-.04em}
.aart{margin:22px 0 0;border-radius:22px;overflow:hidden;border:1px solid var(--line);aspect-ratio:4/3;max-width:640px;background:#060b18;box-shadow:0 40px 80px -40px rgba(46,242,196,.35),0 0 0 1px rgba(255,255,255,.03) inset;position:relative}
.aart img{width:100%;height:100%;object-fit:cover;display:block}
.buybox{position:sticky;top:84px;padding:24px;border-radius:22px;background:linear-gradient(180deg,rgba(24,33,64,.8),rgba(10,15,30,.8)) padding-box,linear-gradient(160deg,rgba(46,242,196,.55),rgba(106,168,255,.2) 40%,rgba(155,140,255,.45)) border-box;border:1px solid transparent;box-shadow:0 30px 80px -30px rgba(0,0,0,.9),0 0 60px -20px rgba(46,242,196,.25)}
.buybox .stat{font-size:44px;font-weight:700;letter-spacing:-.03em}
.buybox .getit{min-height:56px;font-size:17px}
.facts{gap:18px}.facts .card{padding:24px}
.wfwrap{border-radius:var(--radius);background:linear-gradient(180deg,rgba(22,30,58,.45),rgba(10,15,30,.45));border:1px solid var(--line)}
.stickybar{background:rgba(5,9,20,.88)!important;backdrop-filter:blur(16px) saturate(150%)!important;border-top:1px solid var(--line2)!important}
.pill{border-radius:999px}
a.pill{display:inline-flex;align-items:center;min-height:32px}
/* ---- pricing + Ocean Pass ---- */
.plan{padding:24px}.plan .stat{font-size:36px;font-weight:700;letter-spacing:-.03em}
.plan-hl{background:linear-gradient(180deg,rgba(24,33,64,.8),rgba(10,15,30,.8)) padding-box,linear-gradient(160deg,var(--teal),rgba(106,168,255,.3) 45%,var(--violet)) border-box;border:1px solid transparent;box-shadow:0 30px 80px -30px rgba(46,242,196,.35)}
.opart{margin:-24px -24px 18px;aspect-ratio:16/9;overflow:hidden;border-radius:18px 18px 0 0;border-bottom:1px solid var(--line)}
.opart img{width:100%;height:100%;object-fit:cover;object-position:50% 45%;display:block}
/* ---- footer ---- */
footer{border-top:1px solid var(--line);background:linear-gradient(180deg,transparent,rgba(6,11,24,.9));padding:56px 0 40px;margin-top:40px}
.follow{border-bottom:1px solid var(--line)}
.fgrid a{display:flex;align-items:center;min-height:40px;padding:0}
/* ---- blog in the new system ---- */
.pcard{padding:20px 22px}.pbody{font-size:18px;line-height:1.75}.answer{border-left:3px solid var(--teal)}
.pfig img,.pthumb img{border-radius:16px}
/* ---- 404 ---- */
.nf{min-height:70vh;display:grid;place-items:center;text-align:center;padding:80px 0}
.nf h1{font-size:clamp(64px,14vw,160px);line-height:.9;margin:0 0 12px}
/* ---- reveal + view transitions ---- */
.js .rv{transform:translateY(22px) scale(.985);filter:blur(4px);transition:opacity .8s var(--ease),transform .8s var(--ease),filter .8s var(--ease)}
.js .rv.in{filter:none;transform:none}
@view-transition{navigation:auto}
::view-transition-old(root){animation:oa-out .22s ease both}::view-transition-new(root){animation:oa-in .32s var(--ease) both}
@keyframes oa-out{to{opacity:0;transform:translateY(-6px)}}@keyframes oa-in{from{opacity:0;transform:translateY(10px)}}
/* ---- mobile first tweaks ---- */
@media (max-width:860px){.ahero{grid-template-columns:minmax(0,1fr);gap:24px}.buybox{position:static}.sec{padding:64px 0}}
@media (max-width:640px){
 .wrap{padding:0 18px}
 header.top .wrap{flex-wrap:nowrap;height:auto;min-height:60px;padding-top:8px;padding-bottom:8px;flex-direction:column;align-items:stretch;gap:6px}
 .bnav{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;justify-content:flex-start;margin:0 -18px;padding:0 18px;mask-image:linear-gradient(90deg,#000 85%,transparent)}
 .bnav::-webkit-scrollbar{display:none}.bnav a{flex:none;min-height:44px;padding:0 12px}
 .cosmos{min-height:auto}.cosmos-in{padding:64px 18px 56px}.cosmos-in h1{font-size:clamp(38px,11vw,52px);letter-spacing:-.04em}
 .hero-bg img{object-position:72% 50%}
 .chip,.tchip{min-height:44px}.chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:4px}.chips::-webkit-scrollbar{display:none}.chip{flex:none}
 .sec{padding:52px 0}.sec .sub{font-size:16px}
 .buybox .stat{font-size:38px}
 .cta-band{padding:40px 18px;border-radius:22px}
}
@media (hover:none){.acard:hover .cimg img{transform:none}}
@media (prefers-reduced-motion:reduce){
 html{scroll-behavior:auto}.js .rv{filter:none;transform:none;transition:none}.cimg img,.hero-bg img{transition:none}.acard:hover .cimg img{transform:none}
 .cosmos-in .eyebrow::before{animation:none}header.top::after{display:none}
 @view-transition{navigation:none}::view-transition-old(root),::view-transition-new(root){animation:none}
}
/* coming-soon card action: no buy styling */
.acard .btn.soon{background:transparent;border:1px dashed rgba(255,255,255,.22);color:#c7d2e0;box-shadow:none}
.acard .btn.soon:hover{border-color:var(--teal,#2ef2c4);color:#fff}
/* tap targets >= 44px everywhere */
.acard .foot .btn,.acard .btn{min-height:44px}
.bnav a{min-height:44px;display:inline-flex;align-items:center}
.skip{min-height:44px;display:inline-flex;align-items:center}
.promo a{display:inline-flex;align-items:center;min-height:44px}
/* ==== Platform components (ds-*): reusable layouts for Factory's coming pages (docs, account, downloads, support).
   Markup helpers live in _build/store/components.py; reference in _build/store/DESIGN-SYSTEM.md. No behaviour here. ==== */
.ds-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px}
.ds-card>h2:first-child,.ds-card>h3:first-child{margin-top:0}
.ds-stack>*+*{margin-top:14px}.ds-row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.ds-kicker{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--teal);font-weight:600}
/* product hero: art + copy + buy box (same grid as agent pages) */
.ds-phero{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:32px;align-items:start;padding:28px 0}
.ds-phero .aart{margin:18px 0 0}
@media (max-width:900px){.ds-phero{grid-template-columns:1fr}}
/* docs: sidebar nav | prose | on-this-page */
.ds-docs{display:grid;grid-template-columns:240px minmax(0,1fr) 200px;gap:36px;padding:28px 0;align-items:start}
.ds-docs-nav,.ds-docs-toc{position:sticky;top:84px;font-size:14px}
.ds-docs-nav a,.ds-docs-toc a{display:flex;align-items:center;min-height:36px;padding:0 10px;border-radius:10px;color:var(--muted);text-decoration:none}
.ds-docs-nav a[aria-current=page]{background:rgba(46,242,196,.10);color:var(--text)}
.ds-docs-nav a:hover,.ds-docs-toc a:hover{color:var(--text)}
.ds-docs-nav h2,.ds-docs-toc h2{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:16px 10px 6px}
.ds-docs-body{min-width:0;max-width:760px}.ds-docs-body pre{overflow-x:auto}
.ds-docs-nav details>summary{display:none}
@media (max-width:1100px){.ds-docs{grid-template-columns:220px minmax(0,1fr)}.ds-docs-toc{display:none}}
@media (max-width:760px){.ds-docs{grid-template-columns:1fr;gap:16px}.ds-docs-nav{position:static}
 .ds-docs-nav details>summary{display:flex;align-items:center;min-height:44px;padding:0 14px;border:1px solid var(--line);border-radius:12px;cursor:pointer}
 .ds-docs-nav a{min-height:44px}}
/* callouts */
.ds-note{border:1px solid var(--line2);border-left:3px solid var(--teal);background:rgba(46,242,196,.06);border-radius:12px;padding:14px 16px}
.ds-note.warn{border-left-color:var(--amber);background:rgba(251,191,36,.07)}
/* account: tabs rail | panel */
.ds-account{display:grid;grid-template-columns:220px minmax(0,1fr);gap:28px;padding:28px 0;align-items:start}
.ds-tabs{display:flex;flex-direction:column;gap:4px;position:sticky;top:84px}
.ds-tabs a{display:flex;align-items:center;min-height:44px;padding:0 14px;border-radius:12px;color:var(--muted);text-decoration:none}
.ds-tabs a[aria-current=page]{background:var(--panel2);color:var(--text);box-shadow:inset 0 0 0 1px var(--line2)}
@media (max-width:760px){.ds-account{grid-template-columns:1fr}.ds-tabs{flex-direction:row;overflow-x:auto;position:static;scrollbar-width:none}.ds-tabs a{flex:none}}
/* tables: stack into labelled rows on phones (cells carry data-label) */
.ds-table-wrap{border:1px solid var(--line);border-radius:var(--radius);overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;background:var(--panel)}
.ds-table td,.ds-table th{overflow-wrap:anywhere;white-space:normal}.ds-table-md td,.ds-table-md th{min-width:9ch}
.ds-table{width:100%;border-collapse:collapse;font-size:14px}
.ds-table th{text-align:left;font-weight:600;color:var(--muted);font-size:12px;letter-spacing:.06em;text-transform:uppercase;padding:12px 16px;border-bottom:1px solid var(--line)}
.ds-table td{padding:14px 16px;border-bottom:1px solid var(--line);vertical-align:middle}
.ds-table tr:last-child td{border-bottom:0}.ds-table tbody tr:hover{background:rgba(255,255,255,.02)}
.ds-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:3px 10px;border-radius:99px;border:1px solid var(--line2)}
.ds-status::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.ds-status.ok{color:var(--teal)}.ds-status.wait{color:var(--amber)}.ds-status.off{color:var(--muted)}
@media (max-width:640px){.ds-table:not(.ds-table-md) thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
 .ds-table:not(.ds-table-md) tr{display:block;padding:10px 0;border-bottom:1px solid var(--line)}.ds-table:not(.ds-table-md) td{display:flex;justify-content:space-between;gap:12px;border:0;padding:6px 16px}.ds-table:not(.ds-table-md) td>*{min-width:0}
 .ds-table:not(.ds-table-md) td::before{content:attr(data-label);color:var(--muted);font-size:12px}}
/* forms */
.ds-form{display:grid;gap:16px;max-width:520px}
.ds-field{display:grid;gap:6px}.ds-field>label{font-weight:600;font-size:14px}
.ds-input,.ds-select,.ds-textarea{font:inherit;font-size:16px;color:var(--text);background:rgba(6,11,24,.7);border:1px solid var(--line2);border-radius:12px;min-height:44px;padding:10px 14px;width:100%;box-sizing:border-box}
.ds-textarea{min-height:120px;resize:vertical}
.ds-input:focus-visible,.ds-select:focus-visible,.ds-textarea:focus-visible{outline:2px solid var(--teal);outline-offset:2px;border-color:transparent}
.ds-help{font-size:13px;color:var(--muted)}.ds-error{font-size:13px;color:#fda4af}
.ds-field[aria-invalid=true] .ds-input,.ds-input[aria-invalid=true]{border-color:#fb7185}
.ds-check{display:flex;gap:10px;align-items:center;min-height:44px}.ds-check input{width:20px;height:20px;accent-color:var(--teal)}
/* support chat: launcher + panel shell (hidden until a script sets data-open). Sits above the mobile sticky buy bar, never over it. */
.ds-chat{position:fixed;right:18px;bottom:18px;z-index:40}
.ds-chat-launch{min-width:52px;min-height:52px;border-radius:99px;border:1px solid var(--line2);background:linear-gradient(135deg,rgba(46,242,196,.9),rgba(106,168,255,.9));color:#03060d;font-weight:700;display:inline-flex;align-items:center;gap:8px;padding:0 18px;cursor:pointer;box-shadow:0 10px 30px -10px rgba(var(--glow),.6)}
.ds-chat-panel{display:none;position:absolute;right:0;bottom:64px;width:min(380px,calc(100vw - 36px));height:min(560px,calc(100vh - 140px));flex-direction:column;background:rgba(6,11,24,.92);border:1px solid var(--line2);border-radius:20px;overflow:hidden;backdrop-filter:blur(14px);box-shadow:0 30px 80px -20px rgba(0,0,0,.7)}
.ds-chat[data-open] .ds-chat-panel{display:flex}
.ds-chat-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line)}
.ds-chat-log{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px}
.ds-msg{max-width:85%;padding:10px 14px;border-radius:16px;font-size:14px;line-height:1.5}
.ds-msg.bot{background:var(--panel2);border:1px solid var(--line);align-self:flex-start;border-bottom-left-radius:6px}
.ds-msg.me{background:rgba(46,242,196,.14);border:1px solid rgba(46,242,196,.3);align-self:flex-end;border-bottom-right-radius:6px}
.ds-chat-form{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line)}
.ds-chat-note{font-size:12px;color:var(--muted);padding:0 16px 10px}
@media (max-width:640px){.ds-chat{bottom:calc(18px + var(--stickybar-h,0px))}body:has(.stickybar) .ds-chat{--stickybar-h:76px}}
@media (prefers-reduced-motion:reduce){.ds-chat-panel{backdrop-filter:none}}
.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}
/* ---- Factory Phase 1 widgets (oa-support.js, oa-library.js ship unstyled; themed here with --oa-help-* vars) ---- */
:root{--oa-help-bg:var(--panel2);--oa-help-line:var(--line2);--oa-help-text:var(--text);--oa-help-muted:var(--muted);--oa-help-accent:var(--teal);--oa-help-radius:14px}
.oa-help{margin-top:12px;color:var(--oa-help-text)}
.oa-help-toggle,.oa-help-ask,.oa-help-close,.oa-lib-gumroad,.oa-lib-key button{font:inherit;font-weight:600;min-height:44px;min-width:44px;padding:0 18px;border-radius:12px;border:1px solid var(--oa-help-line);background:rgba(19,27,52,.6);color:var(--oa-help-text);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
.oa-help-ask,.oa-lib-gumroad{background:linear-gradient(120deg,var(--teal),var(--blue));color:#03060d;border:0}
.oa-help-toggle:focus-visible,.oa-help-ask:focus-visible,.oa-help-close:focus-visible,.oa-help-input:focus-visible,.oa-lib a:focus-visible{outline:2px solid var(--oa-help-accent);outline-offset:2px}
.oa-help-panel{margin-top:12px;padding:18px;border:1px solid var(--oa-help-line);border-radius:var(--oa-help-radius);background:var(--oa-help-bg);backdrop-filter:blur(10px)}
.oa-help-panel[hidden]{display:none}
.oa-help-heading{font-size:18px;margin:0 0 6px}.oa-help-intro,.oa-help-source,.oa-help-more-label{color:var(--oa-help-muted);font-size:14px}
.oa-help-row{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;margin:12px 0}
.oa-help-label{flex-basis:100%;font-size:14px;font-weight:600}
.oa-help-input,.oa-lib-key input{flex:1 1 200px;min-height:44px;padding:0 14px;border-radius:12px;border:1px solid var(--oa-help-line);background:rgba(3,6,13,.6);color:var(--oa-help-text);font:inherit;font-size:16px}
.oa-help-answer a,.oa-lib a:not(.oa-lib-gumroad){color:var(--teal);text-underline-offset:3px}
.oa-help-links{list-style:none;padding:0;margin:6px 0 0}.oa-help-links li a{display:inline-flex;align-items:center;min-height:44px}
.oa-lib section{margin:0 0 22px}.oa-lib h2{font-size:20px;margin:0 0 8px}.oa-lib-list{list-style:none;padding:0;margin:0}
.oa-lib-list li{padding:10px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.oa-lib-list li a{display:inline-flex;align-items:center;min-height:44px;font-weight:600}
.oa-lib-sha,code.sha{display:block;font-size:12px;color:var(--muted);overflow-wrap:anywhere;word-break:break-all}
.oa-lib-key label{display:block;font-weight:600;margin:10px 0 4px}
.cols3{columns:3 220px;column-gap:24px}.cols3 li{break-inside:avoid}.cols3 li a{display:inline-flex;align-items:center;min-height:44px;color:var(--text)}
.crumbs{font-size:14px;color:var(--muted);margin:0 0 8px}.crumbs a{color:var(--muted);display:inline-flex;align-items:center;min-height:44px}
ul.clean{list-style:none;padding:0}
.ds-docs-nav a{min-height:44px}
.ds-table a{display:inline-flex;align-items:center;min-height:44px}
.ds-docs{grid-template-areas:"nav body toc"}.ds-docs-nav{grid-area:nav}.ds-docs-body{grid-area:body}.ds-docs-toc{grid-area:toc}
@media (max-width:1100px){.ds-docs{grid-template-areas:"nav body"}}
@media (max-width:760px){.ds-docs{grid-template-areas:"body" "nav"}}
[data-oa-library]{min-height:100vh}/* widget fills in after load: keep the footer below the fold so nothing shifts (CLS) */
