:root{--ink:#282640;--paper:#FEF9F1;--surface:#fff;--slate:#5C5A6E;--rule:#E6DFD3;--coral:#EA806E;--coral-text:#A8402E;--coral-soft:#FBE3DC;--serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Times New Roman",serif;--sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--ease:cubic-bezier(.22,1,.36,1);--shadow:0 1px 2px rgba(40,38,64,.08),0 8px 24px rgba(40,38,64,.08)}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:84px;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:18px/1.6 var(--sans);-webkit-font-smoothing:antialiased}
img,svg{max-width:100%;height:auto;display:block}
a{color:var(--coral-text);text-underline-offset:3px}
a:hover{color:var(--ink)}
:focus-visible{outline:3px solid var(--ink);outline-offset:2px;border-radius:4px}
.dark :focus-visible,.footer :focus-visible{outline-color:var(--paper)}
.skip{position:absolute;left:-999px;top:8px;background:var(--ink);color:var(--paper);padding:10px 16px;border-radius:8px;z-index:100}
.skip:focus{left:8px}
.wrap{max-width:1160px;margin:0 auto;padding:0 16px}
.prose{max-width:720px}
@media(min-width:700px){.wrap{padding:0 28px}}
h1,h2,h3{margin:0 0 .5em;line-height:1.15;font-weight:600}
h1,h2{font-family:var(--serif);letter-spacing:-.01em}
h1{font-size:clamp(2.4rem,6vw,3.7rem)}
h2{font-size:clamp(1.75rem,3.6vw,2.3rem)}
h3{font-size:1.25rem}
p{margin:0 0 1em}
.eyebrow{font-size:.8rem;text-transform:uppercase;letter-spacing:.09em;font-weight:700;color:var(--coral-text);margin:0 0 14px}
.dark .eyebrow{color:var(--coral)}
.lead{font-size:1.2rem;color:var(--slate);max-width:60ch}
.dark .lead{color:#d8d4e6}
/* header */
.header{position:sticky;top:0;z-index:50;background:var(--paper);border-bottom:1px solid transparent;transition:border-color .16s ease-out,box-shadow .16s ease-out}
.header.scrolled{border-color:var(--rule);box-shadow:0 4px 18px rgba(40,38,64,.06)}
.header .wrap{display:flex;align-items:center;gap:20px;height:68px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font-weight:700;font-size:1.2rem;margin-right:auto}
.brand img{width:38px;height:38px;border-radius:50%}
.nav{display:none;gap:6px;align-items:center}
.nav a.link{color:var(--ink);text-decoration:none;padding:10px 12px;border-radius:8px;font-size:1rem;font-weight:500}
.nav a.link:hover,.nav a.link[aria-current=page]{background:var(--coral-soft)}
.gh{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:8px;color:var(--ink)}
.gh:hover{background:var(--coral-soft);color:var(--ink)}
.menu-btn{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border:1px solid var(--ink);border-radius:8px;background:transparent;color:var(--ink);font:600 .95rem var(--sans);cursor:pointer}
.mobile{display:none;border-top:1px solid var(--rule);background:var(--paper);padding:6px 16px 20px;max-height:calc(100vh - 68px);max-height:calc(100dvh - 68px);overflow-y:auto;overscroll-behavior:contain;box-shadow:0 18px 30px rgba(40,38,64,.12)}
.mobile.open{display:block;animation:fade .2s ease-in-out}
.mobile>a{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:52px;color:var(--ink);text-decoration:none;font-weight:600;font-size:1.05rem;border-bottom:1px solid var(--rule)}
.mobile>a i{font-style:normal;color:var(--coral-text);font-size:1.4rem;line-height:1}
.mobile>a:active{background:var(--coral-soft)}
.mobile>a[aria-current=page]{color:var(--coral-text)}
.mobile>a.home{justify-content:flex-start;gap:10px;background:var(--coral-soft);margin:6px -16px 0;padding:0 16px;border-bottom:1px solid var(--rule)}
.mob-actions{display:grid;gap:10px;margin-top:16px}
.mob-actions .btn{width:100%;min-height:50px}
@media(max-width:1039px){.header .nav-cta{display:none}}
@media(min-width:1040px){.nav{display:flex}.menu-btn,.mobile{display:none!important}}
@keyframes fade{from{opacity:0}to{opacity:1}}
/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:0 22px;border-radius:8px;font:700 1rem var(--sans);text-decoration:none;border:2px solid transparent;cursor:pointer;transition:background .14s ease-out,color .14s ease-out,border-color .14s ease-out}
.btn .arr{transition:transform .14s ease-out}
.btn:hover .arr{transform:translateX(3px)}
.btn-primary{background:var(--coral);color:var(--ink)}
.btn-primary:hover{background:#f19585;color:var(--ink)}
.btn-ghost{border-color:var(--ink);color:var(--ink);background:transparent}
.btn-ghost:hover{background:var(--ink);color:var(--paper)}
.dark .btn-ghost{border-color:var(--paper);color:var(--paper)}
.dark .btn-ghost:hover{background:var(--paper);color:var(--ink)}
.btns{display:flex;flex-wrap:wrap;gap:12px;margin:26px 0 18px}
.header .btn{min-height:44px;padding:0 18px}
.textlink{font-weight:700;text-decoration:none;display:inline-flex;gap:6px}
.textlink:hover{text-decoration:underline}
/* sections */
section{padding:56px 0}
@media(min-width:800px){section{padding:92px 0}}
.dark{background:var(--ink);color:var(--paper)}
.dark h2,.dark h3{color:var(--paper)}
.dark a{color:var(--coral)}
.dark a.btn-primary,.dark a.btn-primary:hover{color:var(--ink)}
.dark a.textlink{color:var(--coral)}
.band{background:#fff;border-block:1px solid var(--rule)}
.grid{display:grid;gap:22px}
@media(min-width:760px){.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1120px){.g4.home{grid-template-columns:repeat(4,1fr)}}
.split{display:grid;gap:36px;align-items:center}
@media(min-width:900px){.split{grid-template-columns:1fr 1fr;gap:64px}.split.rev .split-a{order:2}}
/* hero */
.hero{padding:40px 0 56px;overflow:hidden}
.hero .split{align-items:center}
@media(min-width:900px){.hero{padding:72px 0 88px}.hero .split{grid-template-columns:1.02fr 1fr}}
.hero small{display:block;color:var(--slate);font-size:.95rem}
.hero-visual{position:relative;display:grid;gap:18px}
.frame{background:var(--surface);border:1px solid var(--rule);border-radius:10px;box-shadow:var(--shadow);overflow:hidden}
.frame .bar{display:flex;gap:6px;padding:9px 12px;border-bottom:1px solid var(--rule);background:#faf6ee}
.frame .bar i{width:9px;height:9px;border-radius:50%;background:#d9d2c4}
.frame img{width:100%;height:auto}
figure{margin:0}
figcaption{font-size:.9rem;color:var(--slate);margin-top:10px}
.hero-shot{position:relative}
.hero-shot .over{position:absolute;right:-6px;bottom:-34px;width:42%}
@media(max-width:899px){.hero-shot .over{display:none}}
.svg-hero{width:100%;max-width:560px;margin-inline:auto}
/* cards */
.card{position:relative;background:var(--surface);border:1px solid var(--rule);border-top:3px solid var(--ink);border-radius:10px;padding:24px;display:flex;flex-direction:column;transition:transform .18s ease-in-out,border-color .18s ease-in-out,box-shadow .18s ease-in-out}
.card:hover,.card:focus-within{transform:translateY(-3px);box-shadow:var(--shadow);border-top-color:var(--coral)}
.card p{color:var(--slate);flex:1}
.card .num{font-family:var(--serif);font-size:2rem;color:var(--coral-text);line-height:1;margin-bottom:10px}
.pill{display:inline-block;padding:3px 10px;border-radius:99px;background:var(--coral-soft);color:var(--ink);font-size:.82rem;font-weight:700}
.chips{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}
.chip{border:1px solid var(--rule);background:var(--surface);border-radius:99px;padding:6px 14px;font-weight:600;font-size:.95rem}
.dark .chip{background:transparent;border-color:#4a4768;color:var(--paper)}
.three{display:grid;gap:0;border-top:1px solid var(--rule)}
.three div{padding:18px 0;border-bottom:1px solid var(--rule);font-weight:700}
@media(min-width:760px){.three{grid-template-columns:repeat(3,1fr);border-top:0}.three div{padding:6px 22px 6px 0;border:0;border-left:3px solid var(--coral);padding-left:16px;margin-right:16px}}
/* callout */
.callout{border-left:4px solid var(--coral);background:#fff;padding:16px 20px;border-radius:0 10px 10px 0;margin:24px 0;border-top:1px solid var(--rule);border-right:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.callout b{display:block;font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px;color:var(--coral-text)}
.dark .callout{background:#322f4e;border-color:#4a4768;border-left-color:var(--coral)}
.dark .callout b{color:var(--coral)}
.checklist{list-style:none;padding:0;margin:0 0 1em}
.checklist li{padding:8px 0 8px 32px;position:relative;border-bottom:1px solid var(--rule)}
.dark .checklist li{border-color:#4a4768}
.checklist li::before{content:"";position:absolute;left:4px;top:15px;width:14px;height:8px;border-left:3px solid var(--coral);border-bottom:3px solid var(--coral);transform:rotate(-45deg)}
/* steps */
.steps{list-style:none;counter-reset:s;padding:0;margin:36px 0 0;display:grid;gap:26px;position:relative}
.steps li{counter-increment:s;position:relative;padding-left:64px}
.steps li::before{content:counter(s);position:absolute;left:0;top:-4px;font:600 2.6rem/1 var(--serif);color:var(--coral-text)}
.steps b{display:block;font-size:1.15rem}
.steps p{color:var(--slate);margin:4px 0 0}
@media(min-width:900px){.steps{grid-template-columns:repeat(4,1fr);gap:28px}.steps li{padding:56px 0 0}}
.connector{display:none}
@media(min-width:900px){.connector{display:block;position:absolute;left:0;right:0;top:20px;width:100%;height:20px;pointer-events:none}}
/* faq */
details{border-bottom:1px solid var(--rule);padding:4px 0}
summary{cursor:pointer;font-weight:700;padding:16px 36px 16px 0;list-style:none;position:relative;min-height:48px}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";position:absolute;right:6px;top:12px;font-size:1.5rem;color:var(--coral-text);transition:transform .2s}
details[open] summary::after{transform:rotate(45deg)}
details p{color:var(--slate);margin:0 0 16px;max-width:68ch}
/* gallery */
.gallery{display:grid;gap:22px}
@media(min-width:700px){.gallery{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1100px){.gallery{grid-template-columns:repeat(3,1fr)}}
.tile{display:block;width:100%;text-align:left;background:none;border:0;padding:0;cursor:zoom-in;font:inherit;color:inherit}
.tile .frame{transition:transform .18s ease-in-out,box-shadow .18s}
.tile:hover .frame{transform:translateY(-3px)}
.tile strong{display:block;margin-top:10px}
.tile span{color:var(--slate);font-size:.92rem}
dialog.lb{border:0;padding:0;background:transparent;max-width:min(1200px,96vw);width:100%;color:var(--paper)}
dialog.lb::backdrop{background:rgba(24,22,40,.88)}
dialog.lb[open]{animation:pop .16s ease-out}
@keyframes pop{from{opacity:0;transform:scale(.98)}to{opacity:1;transform:none}}
.lb-in{display:grid;gap:12px}
.lb-in img{width:100%;max-height:78vh;object-fit:contain;background:#fff;border-radius:10px}
.lb-bar{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.lb-bar .btn{min-height:44px;background:var(--paper);color:var(--ink)}
/* footer */
.footer{background:var(--ink);color:#d8d4e6;padding:56px 0 30px}
.footer a{color:var(--paper);text-decoration:none}
.footer a:hover{text-decoration:underline;color:var(--coral)}
.footer .cols{display:grid;gap:28px;grid-template-columns:repeat(2,1fr)}
@media(min-width:900px){.footer .cols{grid-template-columns:1.5fr repeat(4,1fr)}}
.footer h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.09em;color:var(--coral);margin-bottom:12px}
.footer ul{list-style:none;margin:0;padding:0}
.footer li{margin:0}
.footer li a{display:inline-block;padding:6px 0}
.footer .brand{color:var(--paper);margin-bottom:12px}
.footer .legal{border-top:1px solid #4a4768;margin-top:34px;padding-top:20px;font-size:.9rem;display:flex;flex-wrap:wrap;gap:6px 22px}
/* page head, article */
.pagehead{padding:56px 0 24px}
@media(min-width:800px){.pagehead{padding:84px 0 36px}}
.crumbs{font-size:.9rem;color:var(--slate);margin-bottom:18px}
.crumbs a{color:var(--slate)}
.article{padding:8px 0 70px}
.article h2{margin-top:1.8em}
.article h3{margin-top:1.4em}
.article ul,.article ol{padding-left:1.3em}
.article li{margin:.35em 0}
.meta{color:var(--slate);font-size:.95rem}
.short{background:#fff;border:1px solid var(--rule);border-radius:10px;padding:18px 22px;margin:22px 0}
.short b{color:var(--coral-text);display:block;font-size:.8rem;text-transform:uppercase;letter-spacing:.08em}
code{background:#f1ebdf;padding:1px 6px;border-radius:5px;font-size:.92em}
pre{background:var(--ink);color:#f4efe4;padding:18px;border-radius:10px;overflow:auto;font-size:.9rem;line-height:1.55;margin:0}
pre code{background:none;padding:0;color:inherit}
.codewrap{position:relative;margin:20px 0}
.copy{position:absolute;top:10px;right:10px;min-height:36px;padding:0 12px;border-radius:6px;border:1px solid #6a6790;background:#34315a;color:var(--paper);font:600 .85rem var(--sans);cursor:pointer}
.copy:hover{background:#403d6c}
table{border-collapse:collapse;width:100%;font-size:.97rem}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--rule);vertical-align:top}
th{font-size:.82rem;text-transform:uppercase;letter-spacing:.06em;color:var(--slate)}
.tablewrap{overflow-x:auto}
.postcard{display:flex;flex-direction:column;gap:6px}
.postcard h3 a{color:var(--ink);text-decoration:none}
.postcard h3 a:hover{color:var(--coral-text);text-decoration:underline}
.sticky-cta{position:fixed;left:12px;right:12px;bottom:12px;z-index:40;display:none}
.sticky-cta .btn{width:100%;box-shadow:var(--shadow)}
.sticky-cta.show{display:block}
@media(min-width:900px){.sticky-cta{display:none!important}}
.note{font-size:.9rem;color:var(--slate)}
.dark .note{color:#bdb8d6}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* illustration svgs */
.ill{width:100%;max-width:520px;margin-inline:auto}
.ill .ink{stroke:var(--ink)}
.dark .ill .ink{stroke:var(--paper)}
/* svg draw animation: final state is the default; the animation only runs when JS marks the page */
.d{stroke-dasharray:1;stroke-dashoffset:0}
html.js .anim .d{stroke-dashoffset:1}
html.js .anim.in .d,html.js .anim.play .d{animation:draw .6s var(--ease) forwards}
html.js .anim .d.l1{animation-delay:.25s}
html.js .anim .d.l2{animation-delay:.55s}
html.js .anim .d.l3{animation-delay:.85s}
@keyframes draw{to{stroke-dashoffset:0}}
.pop{transform-origin:center;transform-box:fill-box}
html.js .anim .pop{opacity:0;transform:scale(.85)}
html.js .anim.in .pop,html.js .anim.play .pop{animation:popin .24s ease-out forwards;animation-delay:1s}
html.js .anim .pop.l2{animation-delay:1.2s}
@keyframes popin{to{opacity:1;transform:none}}
html.js .anim .rise{opacity:0;transform:translateY(14px)}
html.js .anim.in .rise,html.js .anim.play .rise{animation:rise .5s var(--ease) forwards}
html.js .anim .rise.l1{animation-delay:.1s}
html.js .anim .rise.l2{animation-delay:.28s}
@keyframes rise{to{opacity:1;transform:none}}
/* reveal on scroll */
html.js .reveal{opacity:0;transform:translateY(12px)}
html.js .reveal.in{opacity:1;transform:none;transition:opacity .45s ease-out,transform .45s ease-out}
html.js .reveal.s1.in{transition-delay:.06s}html.js .reveal.s2.in{transition-delay:.12s}html.js .reveal.s3.in{transition-delay:.18s}
.hero-copy>*{animation:heroin .45s ease-out both}
.hero-copy>*:nth-child(2){animation-delay:.05s}.hero-copy>*:nth-child(3){animation-delay:.1s}.hero-copy>*:nth-child(4){animation-delay:.15s}.hero-copy>*:nth-child(5){animation-delay:.2s}
@keyframes heroin{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){
 *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
 html.js .anim .d{stroke-dashoffset:0}
 html.js .anim .pop,html.js .anim .rise,html.js .reveal{opacity:1;transform:none}
}
@media(forced-colors:active){.btn-primary{border-color:ButtonText}.card{border-color:CanvasText}.ill *{stroke:CanvasText}}
@media print{.header,.footer,.sticky-cta{display:none}}
/* ---- v2 additions ---- */
.trust{background:var(--ink);color:var(--paper)}
.trust ul{list-style:none;margin:0;padding:14px 0;display:flex;flex-wrap:wrap;gap:8px 28px;justify-content:center;font-weight:600;font-size:.95rem}
.trust li{display:flex;align-items:center;gap:8px}
.trust li::before{content:"";width:8px;height:8px;border-radius:2px;background:var(--coral);flex:none}
.cmdbar{display:flex;align-items:stretch;gap:0;border-radius:10px;overflow:hidden;background:var(--ink);color:#f4efe4;max-width:620px;margin:6px 0 12px;box-shadow:var(--shadow)}
.cmdbar code{background:none;color:inherit;padding:13px 14px;font-size:.84rem;flex:1;overflow-x:auto;white-space:nowrap;display:block}
.cmdbar .copy{position:static;border-radius:0;border:0;border-left:1px solid #4a4768;min-height:auto;padding:0 16px}
.cmdlabel{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:var(--slate);margin:20px 0 0}
.tabs [role=tablist]{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px}
.tabs [role=tab]{min-height:44px;padding:0 16px;border-radius:8px;border:1px solid var(--rule);background:#fff;color:var(--ink);font:600 .95rem var(--sans);cursor:pointer}
.tabs [role=tab][aria-selected=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.tabs [role=tabpanel][hidden]{display:none}
.tabs [role=tabpanel] .codewrap{margin:0 0 10px}
.tabs [role=tabpanel] pre{padding-right:90px}
.qs{display:grid;gap:30px}
.qs-step{display:grid;gap:12px}
.qs-step>div:first-child{display:flex;gap:14px;align-items:center}
.qs-step .n{flex:none;width:38px;height:38px;border-radius:50%;background:var(--coral);color:var(--ink);font-weight:800;display:flex;align-items:center;justify-content:center}
.qs-step h3{margin:0}
.qs-step .body{padding-left:52px}
@media(max-width:700px){.qs-step .body{padding-left:0}}
.cmp{width:100%;min-width:640px;background:#fff;border:1px solid var(--rule);border-radius:10px;overflow:hidden}
.cmp th,.cmp td{padding:12px 14px;border-bottom:1px solid var(--rule)}
.cmp thead th{background:var(--ink);color:var(--paper);font-size:.82rem}
.cmp tbody th{font-weight:600;color:var(--ink);font-size:.97rem;text-transform:none;letter-spacing:0}
.cmp td:nth-child(2){background:var(--coral-soft);font-weight:600}
.cmp caption{text-align:left;padding:0 0 10px;color:var(--slate);font-size:.9rem}
.arch{display:grid;gap:26px}
.arch-svg{width:100%;max-width:880px;margin-inline:auto}
.feat{display:grid;gap:0;border-top:1px solid var(--rule)}
@media(min-width:760px){.feat{grid-template-columns:repeat(3,1fr);gap:0 34px}}
.feat div{padding:16px 0;border-bottom:1px solid var(--rule)}
.feat b{display:block;margin-bottom:2px}
.feat span{color:var(--slate);font-size:.96rem}
.road{display:grid;gap:28px}
.ver{display:grid;gap:12px;padding:24px;background:#fff;border:1px solid var(--rule);border-left:4px solid var(--coral);border-radius:0 10px 10px 0}
.ver header{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:baseline}
.ver h3{margin:0}
.ver ul{margin:0;padding-left:1.2em;color:var(--slate)}
.ver li{margin:.3em 0}
.ver li b{color:var(--ink)}
.status{display:inline-block;padding:2px 10px;border-radius:99px;background:var(--ink);color:var(--paper);font-size:.78rem;font-weight:700;letter-spacing:.04em}
.statgrid{display:grid;gap:14px;grid-template-columns:repeat(2,1fr)}
@media(min-width:800px){.statgrid{grid-template-columns:repeat(4,1fr)}}
.stat{background:#fff;border:1px solid var(--rule);border-radius:10px;padding:16px}
.stat b{display:block;font:600 1.7rem var(--serif)}
.stat span{color:var(--slate);font-size:.9rem}
.made{display:flex;flex-wrap:wrap;gap:18px;align-items:center;justify-content:space-between}
.made p{margin:0;max-width:62ch}
.related{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0 0}
.related a{border:1px solid var(--rule);background:#fff;border-radius:99px;padding:6px 14px;font-weight:600;text-decoration:none;font-size:.95rem}
.related a:hover{border-color:var(--ink)}
.use{display:grid;gap:34px}
.usestep{display:grid;gap:22px;align-items:center}
@media(min-width:900px){.usestep{grid-template-columns:1fr 1fr;gap:56px}.usestep.flip>:first-child{order:2}}
.usestep .k{font:600 .85rem var(--sans);letter-spacing:.09em;text-transform:uppercase;color:var(--coral-text)}
.toc{background:#fff;border:1px solid var(--rule);border-radius:10px;padding:18px 22px;margin:8px 0 8px}
.toc ol{margin:6px 0 0;padding-left:1.2em;columns:2;column-gap:32px}
@media(max-width:700px){.toc ol{columns:1}}
@media(min-width:1100px){.steps.five{grid-template-columns:repeat(5,1fr)}}
@media(min-width:900px) and (max-width:1099px){.steps.five{grid-template-columns:repeat(3,1fr)}}
.grid>*,.split>*,.qs>*,.qs-step>*,.usestep>*,.arch>*,.made>*{min-width:0}
.qs-step,.qs{min-width:0;max-width:100%}
p code,li code,td code{overflow-wrap:anywhere}
.codewrap{max-width:100%}
.codewrap pre{padding-right:90px}
.cols2{display:grid;gap:40px;align-items:start}
@media(min-width:1000px){.cols2{grid-template-columns:minmax(0,1fr) 340px;gap:64px}.cols2>aside{position:sticky;top:92px}}
.kv td:first-child{white-space:nowrap}

.nav a.link.home{display:inline-flex;align-items:center;gap:6px}
.nav a.link[aria-current=page]{background:var(--coral-soft);font-weight:700}
html.menu-open,html.menu-open body{overflow:hidden}
@media(max-width:1039px){.header .wrap{gap:10px;height:64px}.brand{font-size:1.15rem}.menu-btn{min-width:84px;justify-content:center}}
@media(max-width:480px){h1{font-size:2.25rem}.btns .btn{width:100%}.cmdbar code{font-size:.78rem}.footer .cols{grid-template-columns:1fr 1fr}.footer .legal{flex-direction:column}.pagehead{padding-top:36px}}
@media(hover:none){.card:hover{transform:none;box-shadow:none}}

.oscard{gap:0}
.oscard .osbadge{align-self:flex-start;background:var(--ink);color:var(--paper);font-weight:700;font-size:.9rem;padding:5px 14px;border-radius:99px;margin-bottom:8px}
.oscard>p.note{flex:none;margin:4px 0 12px}
.osstep{display:grid;grid-template-columns:30px minmax(0,1fr);gap:10px;margin:0 0 14px}
.osstep .n{width:28px;height:28px;border-radius:50%;background:var(--coral);color:var(--ink);font-weight:800;font-size:.85rem;display:flex;align-items:center;justify-content:center;margin-top:1px}
.osstep b{display:block;margin-bottom:6px}
.osstep .codewrap{margin:0 0 6px}
.osstep .codewrap pre{padding:12px 74px 12px 12px;font-size:.8rem}
.osstep .copy{top:6px;right:6px;min-height:32px;padding:0 10px;font-size:.8rem}
.osstep p.note{color:var(--slate);flex:none;margin:4px 0}
.osstep .codewrap{display:flex;flex-direction:column}
.osstep .codewrap pre{padding:12px;white-space:pre-wrap;overflow-wrap:anywhere;border-radius:10px 10px 0 0}
.osstep .copy{position:static;width:100%;min-height:36px;border:0;border-top:1px solid #4a4768;border-radius:0 0 10px 10px;background:#34315a;font-size:.85rem}
.osstep .codewrap pre{order:1}
.osstep .copy{order:2}
.osstep .codewrap pre{font-size:.76rem}

/* v3: rounded command boxes, OS tabs */
.cmdbar{border-radius:16px;max-width:640px;margin:8px 0 8px}
.cmdbar code{padding:15px 16px}
.cmdbar .copy{padding:0 20px;font-weight:700}
.tabs.mini{max-width:640px}
.tabs.mini [role=tablist]{margin:0 0 4px;gap:8px}
.tabs.mini [role=tab]{min-height:40px;border-radius:99px;padding:0 16px;font-size:.9rem}
.tabs [role=tabpanel] .cmdbar{margin-top:6px}
.tabs [role=tabpanel] .cmdbar+p.note{margin:6px 0 0;max-width:640px}
.heronote{margin:6px 0 10px}
.heronote a{color:var(--slate)}
.oneline{background:var(--coral-soft);border-radius:14px;padding:14px;margin:6px 0 10px}
.oneline b{display:block;font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--coral-text);margin-bottom:6px}
.oneline .cmdbar{margin:0;flex-direction:column;border-radius:12px}
.oneline .cmdbar code{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.74rem;padding:12px}
.oneline .cmdbar .copy{width:100%;border-left:0;border-top:1px solid #4a4768;min-height:36px;padding:0}
.oneline p.note{margin:8px 0 0;font-size:.85rem}
.manual{margin:4px 0 12px;font-weight:600}
@media(max-width:480px){.cmdbar{flex-direction:column}.cmdbar code{white-space:pre-wrap;overflow-wrap:anywhere}.cmdbar .copy{border-left:0;border-top:1px solid #4a4768;min-height:42px}.tabs.mini [role=tab]{padding:0 12px}}
.codewrap pre,.cmdbar{border-radius:14px}
.cmdbar{max-width:700px}
.cmdbar code{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5;font-size:.82rem}
.tabs.mini{max-width:700px}
.tabs [role=tabpanel] .cmdbar+p.note{max-width:700px}
/* docs */
.doc{max-width:800px;min-width:0}
.doc h2{margin-top:1.9em;scroll-margin-top:90px}
.doc h3{margin-top:1.5em;scroll-margin-top:90px}
.doc ul,.doc ol{padding-left:1.3em}
.doc li{margin:.35em 0}
.doc figure{margin:22px 0}
.doc .codewrap{margin:16px 0}
.doc table{font-size:.93rem}
.doc .tablewrap{margin:16px 0}
.toc-side .toc{margin:0;max-height:calc(100vh - 130px);overflow:auto}
.toc-side .toc ol{columns:1;font-size:.93rem}
.toc-side .toc li{margin:.3em 0}
.toc-m{display:block;margin:0 0 18px}
.toc-m summary{padding:10px 0;min-height:44px}
.toc-m summary::after{top:8px}
.toc-m ol{columns:1}
.toc-side{display:none}
@media(min-width:1000px){.toc-side{display:block}.toc-m{display:none}}
.srcnote{margin-top:36px;border-top:1px solid var(--rule);padding-top:14px}
.licensebox{max-height:70vh;overflow:auto;border:1px solid var(--rule);border-radius:12px;background:#fff}
.licensebox pre{background:none;color:var(--ink);white-space:pre-wrap;font-size:.8rem;margin:0}

.toc-side .toc ol,.toc-m ol{list-style:none;padding-left:0}

/* v4: Runs-on tabs */
.ostabs{margin-top:28px}
.ostabs [role=tablist]{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-width:520px;margin:0 0 18px}
.ostabs [role=tab]{min-height:50px;border-radius:12px;font-size:1rem;font-weight:700;justify-content:center}
.ossub{font-weight:600;color:var(--slate);margin:0 0 14px}
.osgrid{display:grid;gap:22px;align-items:start}
@media(min-width:960px){.osgrid{grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:28px}}
.osone{background:var(--coral-soft);border-radius:16px;padding:22px}
.osone .cmdbar{max-width:none;margin:10px 0 8px}
.osone .cmdbar code{font-size:.84rem}
.osone .note{margin:6px 0 0}
.osbadge{display:inline-block;background:var(--ink);color:var(--paper);font-weight:700;font-size:.82rem;letter-spacing:.04em;padding:5px 14px;border-radius:99px}
.ossteps{background:#fff;border:1px solid var(--rule);border-radius:16px;padding:22px}
.ossteps h3{margin:0 0 14px}
.ossteps ol{list-style:none;margin:0;padding:0;display:grid;gap:18px}
.ostep{display:grid;grid-template-columns:32px minmax(0,1fr);gap:12px;align-items:start}
.ostep .n{width:30px;height:30px;border-radius:50%;background:var(--coral);color:var(--ink);font-weight:800;font-size:.9rem;display:flex;align-items:center;justify-content:center}
.ostep b{display:block;margin:3px 0 8px}
.ostep .cmdbar{max-width:none;margin:0}
.ostep .cmdbar code{font-size:.8rem;padding:12px 14px}
.ostep .cmdbar .copy{padding:0 16px}
.ostep p.note{margin:8px 0 0}
.osextra{margin-top:34px}
.osextra .codewrap{margin:0}
@media(max-width:560px){.osone,.ossteps{padding:16px;border-radius:14px}.ostep{grid-template-columns:28px minmax(0,1fr);gap:10px}.ostep .n{width:26px;height:26px;font-size:.8rem}.ostabs [role=tab]{min-height:46px;font-size:.95rem}}

/* v5: POS-style hero */
.hero2{padding:36px 0 64px;background:linear-gradient(180deg,#fffdf8 0,var(--paper) 100%)}
.hero-grid{display:grid;gap:44px;align-items:start}
@media(min-width:960px){.hero2{padding:64px 0 90px}.hero-grid{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:56px}}
.badges{list-style:none;display:flex;flex-wrap:wrap;gap:8px;padding:0;margin:0 0 22px}
.badges li{border:1px solid var(--rule);background:#fff;border-radius:99px;padding:6px 14px;font-weight:600;font-size:.88rem;color:var(--slate)}
.hero2 h1{font-size:clamp(2.7rem,6.4vw,4.5rem);line-height:1.03;letter-spacing:-.02em;margin-bottom:.45em}
.hero2 h1 .accent{display:block;color:var(--coral-text)}
.hero2 .lead{max-width:56ch}
.hero2 .btns{margin:24px 0 26px}
.hero2 .cmdlabel{margin:6px 0 10px}
.tabs.ptabs [role=tablist]{display:inline-flex;gap:2px;padding:4px;border:1px solid var(--rule);border-radius:99px;background:#fff;margin:0 0 12px}
.tabs.ptabs [role=tab]{min-height:38px;padding:0 18px;border:0;border-radius:99px;background:transparent;font-size:.92rem}
.tabs.ptabs [role=tab][aria-selected=true]{background:var(--ink);color:var(--paper)}
.cmdbox{display:flex;align-items:center;gap:12px;background:var(--ink);color:#f4efe4;border-radius:16px;padding:14px 14px 14px 18px;max-width:640px;box-shadow:var(--shadow)}
.cmdbox .prompt{color:var(--coral);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700;flex:none}
.cmdbox code{background:none;color:inherit;padding:0;flex:1;min-width:0;font-size:.84rem;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}
.cmdbox .copy.icon{position:static;flex:none;width:44px;height:44px;min-height:44px;padding:0;border-radius:50%;border:1px solid #5a577d;background:#34315a;color:var(--paper);display:flex;align-items:center;justify-content:center}
.cmdbox .copy.icon:hover{background:#403d6c}
.copy.icon .ok{display:none}
.copy.icon.done .ok{display:block;color:var(--coral)}
.copy.icon.done svg:not(.ok){display:none}
.hero2 .tabs [role=tabpanel] .note{max-width:640px;margin:10px 0 0}
.heronote{margin:12px 0 0;font-size:.9rem}
.hero-visual{position:relative}
.hero-visual .frame{box-shadow:0 18px 50px rgba(40,38,64,.16)}
.hero-float{margin:18px auto 0;max-width:380px;background:var(--paper);border:1px solid var(--rule);border-radius:20px;padding:10px;box-shadow:var(--shadow)}
.hero-float .svg-hero{max-width:none}
@media(min-width:1100px){.hero-float{position:absolute;left:-44px;bottom:-56px;width:290px;margin:0}}
.statsec{padding:0}
.statsrow{display:grid;grid-template-columns:repeat(2,1fr);padding:30px 0}
.statsrow div{text-align:center;padding:12px 8px}
.statsrow b{display:block;font:600 clamp(1.7rem,4vw,2.4rem)/1.1 var(--serif);color:var(--ink)}
.statsrow span{color:var(--slate);font-size:.92rem}
@media(min-width:800px){.statsrow{grid-template-columns:repeat(4,1fr)}.statsrow div+div{border-left:1px solid var(--rule)}}
@media(max-width:959px){.hero2 .hero-copy{text-align:center}.badges{justify-content:center}.hero2 .lead{margin-inline:auto}.hero2 .btns{justify-content:center}.tabs.ptabs [role=tablist]{display:inline-flex}.cmdbox{text-align:left;margin-inline:auto}.hero2 .tabs [role=tabpanel] .note,.heronote{margin-inline:auto;max-width:560px}}
@media(max-width:560px){.hero2{padding-top:28px}.badges li{font-size:.82rem;padding:5px 12px}.cmdbox{padding:12px;gap:10px}.cmdbox code{font-size:.78rem}.hero2 .btns .btn{width:100%}}
@media(max-width:560px){.hero2 .btns{display:grid;grid-template-columns:1fr 1fr;gap:10px}.hero2 .btns .btn:first-child{grid-column:1/-1}.hero2 .btns .btn{width:100%;padding:0 12px}}

/* projects */
.projgrid .card{height:100%}
.ptop{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:4px}
.ptop h3{margin:0}
.ptag{margin:0 0 8px;font-size:.82rem;text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:var(--coral-text)!important;flex:none!important}
.plinks{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:6px}
.plinks .alt{color:var(--slate)}

pre.plain{background:#fff;color:var(--ink);border:1px solid var(--rule);white-space:pre-wrap;font-size:.78rem;max-height:340px;overflow:auto}

.qsmini{margin:22px 0 28px;padding-left:22px;max-width:70ch}.qsmini li{margin:8px 0}.osdet{margin-top:18px}

/* spacing utilities */
.u002535{margin-top:12px}
.u01d763{padding-top:44px}
.u048228{padding-top:8px}
.u062d4a{margin-top:24px}
.u0e92fc{align-self:flex-start}
.u0f873e{margin-top:48px}
.u0f9ed7{margin:6px 0 0}
.u11f87e{margin-top:34px}
.u13076d{text-align:center}
.u343cb8{font-size:1.5rem}
.u3ae1f6{margin-top:20px}
.u47c857{margin-top:28px}
.u4a909e{margin-top:18px}
.u511cd1{padding-top:0}
.u73474d{padding-block:44px}
.u816a37{margin-top:30px}
.u9b54a3{justify-content:center}
.ua9bd0c{font-size:1.5rem;margin:0}
.ub2d526{padding-top:16px}
.ub89a77{margin-top:22px}
.uc071a8{margin-top:46px}
.uc451fd{position:relative}
.ud3a180{margin-top:36px}
.ue1d8a6{margin-top:44px}
.ue8c8ef{padding-top:20px}
.ufc364d{margin:26px 0}
