@font-face{font-family:Sora;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/fonts/sora-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:Sora;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/fonts/sora-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"DM Sans";font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/dm-sans-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"DM Sans";font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/dm-sans-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"DM Sans";font-style:normal;font-weight:700;font-display:swap;src:url(/assets/fonts/dm-sans-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/ibm-plex-mono-latin-500-normal.woff2) format("woff2")}
:root{--bg:#100826;--bg2:#170C33;--panel:#ffffff0d;--line:#ffffff1f;--ink:#F3EFFC;--mute:#B5A9D6;--p:#7C4DEA;--p2:#A98BFF;--p3:#D4C7FF;--lav:#F6F3FC;--lavink:#1B1236;--lavmute:#5C5180}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:400 16.5px/1.65 "DM Sans",system-ui,sans-serif;-webkit-font-smoothing:antialiased}
a{color:inherit}h1,h2,h3{font-family:Sora,system-ui,sans-serif;margin:0;line-height:1.1;letter-spacing:-.02em}
:focus-visible{outline:2px solid var(--p2);outline-offset:3px;border-radius:4px}
.light :focus-visible,.art :focus-visible{outline-color:#5B34C4}
.sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.wrap{max-width:1180px;margin:0 auto;padding:0 24px}
.tag{font:500 12px/1 "IBM Plex Mono",monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--p3);display:inline-flex;gap:8px;align-items:center}
.tag::before{content:"";width:18px;height:2px;background:var(--p2)}
.btn{display:inline-flex;align-items:center;gap:8px;background:var(--p);color:#fff;text-decoration:none;font-weight:700;padding:14px 24px;border-radius:999px;border:0;cursor:pointer;font:700 15.5px "DM Sans",system-ui,sans-serif;transition:transform .15s,background .15s}
.btn:hover{background:#8F63F5;transform:translateY(-1px)}.btn.line{background:none;border:1px solid #ffffff40}.btn.line:hover{border-color:var(--p2);background:#ffffff0a}
.light .btn.line{border-color:#1B123644;color:var(--lavink)}.light .btn.line:hover{border-color:#5B34C4;background:#7C4DEA14}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:#fff;color:#000;padding:8px;z-index:99}
header.top{position:sticky;top:0;z-index:10;background:#100826e6;backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
header.top .wrap{display:flex;align-items:center;justify-content:space-between;height:68px;gap:16px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font:700 21px Sora,system-ui,sans-serif;letter-spacing:-.02em}
.brand svg{width:28px;height:28px}
.hr{display:flex;align-items:center;gap:12px}
.mnav{display:flex;align-items:center;gap:28px}.mnav a.l{text-decoration:none;color:var(--mute);font-size:14.5px;font-weight:500}.mnav a.l:hover{color:#fff}.mnav .btn{padding:10px 18px;font-size:14.5px}
.menu{display:none;position:relative}
.menu summary{list-style:none;cursor:pointer;width:44px;height:44px;display:grid;place-items:center;border-radius:12px;border:1px solid #ffffff2b}
.menu summary::-webkit-details-marker{display:none}
.bars,.bars::before,.bars::after{display:block;width:18px;height:2px;background:#fff;border-radius:2px}
.bars{position:relative}.bars::before,.bars::after{content:"";position:absolute;left:0}.bars::before{top:-6px}.bars::after{top:6px}
.menu .panel{position:absolute;right:0;top:54px;min-width:230px;background:#1b0f3a;border:1px solid #ffffff2b;border-radius:14px;padding:8px;display:grid;box-shadow:0 20px 60px #0009}
.menu .panel a{padding:12px 14px;text-decoration:none;border-radius:8px;font-weight:500}.menu .panel a:hover{background:#ffffff14}
.hero{position:relative;overflow:hidden;padding:84px 0 96px}
#bg{position:absolute;inset:0;width:100%;height:100%}
.hero::before,.phero::before{content:"";position:absolute;inset:-30%;background:radial-gradient(38% 38% at 20% 25%,#6A33E04d,transparent 70%),radial-gradient(34% 34% at 85% 70%,#A27BFF33,transparent 70%);animation:drift 20s ease-in-out infinite alternate}
@keyframes drift{to{transform:translate(5%,3%) scale(1.08)}}
.hero .wrap{position:relative;display:grid;grid-template-columns:1.1fr .9fr;gap:56px;align-items:center}
.hero h1{font-size:clamp(38px,5.2vw,66px);margin:20px 0 22px}
.roll{display:block;height:1.15em;overflow:hidden;color:var(--p2)}
.roll .rs{display:block;transition:transform .55s cubic-bezier(.7,0,.2,1)}
.roll .rl{display:block;height:1.15em;line-height:1.15em;white-space:nowrap}
.hero p.lead{color:var(--mute);font-size:19px;max-width:520px;margin:0 0 32px}
.row{display:flex;gap:12px;flex-wrap:wrap}
.card{background:#ffffff10;border:1px solid #ffffff2b;border-radius:18px;padding:26px;backdrop-filter:blur(14px);box-shadow:0 30px 80px #0006}
.card h2{font-size:21px;margin:10px 0 6px}.card>p{margin:0 0 18px;color:var(--mute);font-size:14.5px}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}
.chip{font:500 13.5px "DM Sans",system-ui,sans-serif;color:var(--ink);background:#ffffff0f;border:1px solid #ffffff2b;padding:8px 14px;border-radius:999px;cursor:pointer;transition:all .15s}
.chip:hover{border-color:var(--p2)}.chip[aria-pressed=true]{background:var(--p);border-color:var(--p);color:#fff}
.out h3{font:500 11.5px "IBM Plex Mono",monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--p3);margin:0 0 8px}
.out ul{margin:0 0 16px;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:6px}
.out li{background:#7C4DEA33;border:1px solid #A98BFF55;border-radius:6px;padding:4px 10px;font-size:13.5px}
.out ol{margin:0;padding-left:18px;color:#d9d0f2;font-size:14.5px}.out ol li{background:none;border:0;padding:2px 0;display:list-item}
.out p.more{margin:16px 0 0;font-size:14.5px}.out p.more a{color:var(--p3);font-weight:700;text-underline-offset:3px}.out p.more a:hover{color:#fff}
.out{min-height:230px;animation:fade .3s}@keyframes fade{from{opacity:0;transform:translateY(6px)}}
.ticker{border-block:1px solid var(--line);overflow:hidden;background:#ffffff06;padding:14px 0}
.ticker div{display:flex;gap:44px;width:max-content;animation:mq 38s linear infinite;font:500 13px "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}
.ticker span::after{content:"\25C6";color:var(--p2);margin-left:44px;font-size:9px}
@keyframes mq{to{transform:translateX(-50%)}}
section{padding:100px 0}
.sh{max-width:640px;margin-bottom:48px}.sh h2{font-size:clamp(30px,4vw,46px);margin:14px 0 14px}.sh p{margin:0;color:var(--mute);font-size:18px}
.light{background:var(--lav);color:var(--lavink)}.light .sh p{color:var(--lavmute)}.light .tag{color:#5B34C4}.light .tag::before{background:#5B34C4}
.layers{display:grid;gap:14px;max-width:880px}
.layer{display:grid;grid-template-columns:70px 1fr;gap:20px;align-items:start;background:#fff;border:1px solid #1B123622;border-radius:16px;padding:22px 26px;transition:transform .2s,box-shadow .2s,border-color .2s}
.layer:hover{transform:translateX(8px);box-shadow:0 14px 40px #4a2ab926;border-color:#7C4DEA}
.layer b{font:700 34px Sora,system-ui,sans-serif;color:#7C4DEA;line-height:1}.layer h3{font-size:21px;margin-bottom:6px}.layer p{margin:0;color:var(--lavmute);font-size:15.5px}
.layer:nth-child(2){margin-left:28px}.layer:nth-child(3){margin-left:56px}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.pc{display:flex;flex-direction:column;gap:8px;text-decoration:none;background:#ffffff0d;border:1px solid #ffffff22;border-radius:16px;padding:22px 24px;transition:transform .2s,border-color .2s,background .2s}
.pc:hover{transform:translateY(-3px);border-color:var(--p2);background:#ffffff14}
.cards .wide{grid-column:span 2}
.pc h3{font-size:19px;line-height:1.2}.pc span{color:var(--mute);font-size:15px}.pc i{font-style:normal;color:var(--p2);font-weight:700;margin-top:auto;padding-top:6px;font-size:14.5px}
.light .pc{background:#fff;border-color:#1B123622;color:var(--lavink)}.light .pc:hover{background:#fff;border-color:#7C4DEA;box-shadow:0 14px 40px #4a2ab926}.light .pc span{color:var(--lavmute)}.light .pc i{color:#5B34C4}
.split{display:grid;grid-template-columns:.8fr 1.2fr;gap:64px}
.sticky{position:sticky;top:110px;align-self:start}
.split h2{font-size:clamp(30px,4vw,46px);margin:14px 0}.split .sticky p{color:var(--mute);margin:0 0 24px}
.steps{border-left:2px solid #ffffff22;margin:0;padding:0;list-style:none}
.steps li{position:relative;padding:0 0 38px 34px}
.steps li::before{content:"";position:absolute;left:-8px;top:6px;width:14px;height:14px;border-radius:50%;background:var(--bg);border:2px solid var(--p2);transition:background .3s}
.steps li.on::before{background:var(--p2)}
.steps h3{font-size:22px;margin-bottom:6px}.steps p{margin:0;color:var(--mute)}
.cmp{width:100%;border-collapse:separate;border-spacing:0;background:#fff;border-radius:16px;overflow:hidden;border:1px solid #1B123622}
.cmp th,.cmp td{padding:18px 24px;text-align:left;vertical-align:top;border-bottom:1px solid #1B12361a;font-size:15.5px}
.cmp tr:last-child td{border-bottom:0}.cmp th{font:500 13px "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase;background:#EFE9FB;color:#4a2ab9}
.cmp td:first-child{font-weight:700;width:26%}.cmp td:last-child{background:#F8F5FF}
.faq{max-width:820px}.faq details{border-bottom:1px solid #ffffff1f;padding:22px 0}
.faq summary{font:600 19px Sora,system-ui,sans-serif;cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:20px}
.faq summary::-webkit-details-marker{display:none}.faq summary::after{content:"+";color:var(--p2);font-size:26px;line-height:1;transition:transform .2s}
.faq details[open] summary::after{transform:rotate(45deg)}.faq p{margin:12px 0 0;color:var(--mute)}.faq p a{color:var(--p3);text-underline-offset:3px}.faq p a:hover{color:#fff}
.cta{position:relative;overflow:hidden;background:linear-gradient(135deg,#3B1B9A,#6D3FDF);text-align:center;border-radius:28px;padding:72px 24px;margin:64px 24px 0}
.cta h2{font-size:clamp(32px,4.6vw,54px);max-width:18ch;margin:14px auto 16px}.cta p{max-width:520px;margin:0 auto 28px;color:#e6defc;font-size:18px}
.cta .btn{background:#fff;color:#2c1475}.cta .btn:hover{background:#f0e9ff}.cta .tag{color:#e6defc}.cta .tag::before{background:#e6defc}
.cta .alt{margin:24px auto 0;font-size:15.5px;max-width:none}.cta .alt a{color:#fff;font-weight:600;text-underline-offset:3px}.cta .alt a:hover{color:#f0e9ff}
footer{padding:56px 0 40px;color:var(--mute);font-size:13.5px}
.fgrid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:32px 48px}
footer p{margin:10px 0 0;max-width:420px}
.fh{font:500 11.5px "IBM Plex Mono",monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--p3);margin:0 0 12px}
footer ul{list-style:none;margin:0;padding:0;display:grid;gap:9px}
footer a{text-underline-offset:3px}footer a:hover{color:#fff}footer .contact a,footer .tl a{color:var(--p3)}
.fine{grid-column:1/-1;border-top:1px solid var(--line);padding-top:22px;margin-top:6px;font-size:12.5px}.fine p{margin:0 0 8px;max-width:none}
.rv{opacity:0;transform:translateY(18px);transition:opacity .6s,transform .6s}.rv.in{opacity:1;transform:none}
.phero{position:relative;overflow:hidden;padding:44px 0 60px;border-bottom:1px solid var(--line)}
.phero::before{inset:-40%}
.phero .wrap{position:relative}
.phero h1{font-size:clamp(32px,4.6vw,54px);margin:20px 0 18px;max-width:24ch}
.phero p.lead{color:var(--mute);font-size:19px;max-width:640px;margin:0 0 28px}
.crumbs ol{list-style:none;margin:0 0 22px;padding:0;display:flex;flex-wrap:wrap;gap:6px;font:500 13.5px "DM Sans",system-ui,sans-serif;color:var(--mute)}
.crumbs li+li::before{content:"/";margin-right:6px;color:#ffffff55}
.crumbs a{color:var(--p3);text-underline-offset:3px}.crumbs a:hover{color:#fff}
.art{padding:72px 0 88px}
.artgrid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:64px;align-items:start}
.prose{max-width:740px;color:#2a2147;font-size:17.5px;line-height:1.72}
.prose h2{font-size:clamp(25px,3vw,32px);margin:2.1em 0 .55em;color:var(--lavink);scroll-margin-top:92px}
.prose h2:first-child{margin-top:0}
.prose h3{font-size:20px;margin:1.6em 0 .4em;color:var(--lavink);scroll-margin-top:92px}
.prose p{margin:0 0 1.05em}
.prose a{color:#5B34C4;text-underline-offset:3px}.prose a:hover{color:#3B1B9A}
.prose ul,.prose ol{margin:0 0 1.2em;padding-left:1.25em}.prose li{margin:.4em 0}.prose li::marker{color:#7C4DEA}
.prose strong{color:var(--lavink)}
.prose ul.ck{list-style:none;padding-left:0}.prose ul.ck li{position:relative;padding-left:32px}
.prose ul.ck li::before{content:"\2713";position:absolute;left:0;top:.28em;width:21px;height:21px;border-radius:50%;background:#7C4DEA;color:#fff;font-size:12px;line-height:21px;text-align:center}
.prose .cmp{margin:1.4em 0 1.6em;font-size:16px}
.tw{overflow-x:auto}
.callout{background:#fff;border:1px solid #1B123622;border-left:4px solid #7C4DEA;border-radius:12px;padding:18px 22px;margin:1.7em 0}
.callout b{display:block;font:700 17px Sora,system-ui,sans-serif;margin-bottom:6px;color:var(--lavink)}.callout p{margin:0 0 .7em}.callout p:last-child{margin:0}
.src{font-size:14.5px;color:var(--lavmute);border-top:1px solid #1B123622;padding-top:18px;margin-top:2.4em}.src ul{margin:6px 0 0}.src b{color:var(--lavink)}
.updated{font-size:14px;color:var(--lavmute);margin:2em 0 0}
.side{position:sticky;top:92px;display:grid;gap:18px}
.toc{background:#fff;border:1px solid #1B123622;border-radius:16px;padding:20px 22px;color:var(--lavink)}
.toc summary{font:500 11.5px "IBM Plex Mono",monospace;letter-spacing:.1em;text-transform:uppercase;color:#5B34C4;cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:12px}
.toc summary::-webkit-details-marker{display:none}.toc summary::after{content:"+";font-size:20px;line-height:1}.toc details[open] summary::after{content:"\2212"}
.toc details[open] summary{margin-bottom:10px}
.toc ol{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.toc a{display:block;padding:6px 0;color:var(--lavink);text-decoration:none;font-size:15px;line-height:1.35}.toc a:hover{color:#5B34C4;text-decoration:underline}
.qcard{background:linear-gradient(135deg,#3B1B9A,#6D3FDF);color:#fff;border-radius:18px;padding:22px}
.qcard b{font:700 19px/1.2 Sora,system-ui,sans-serif;display:block;margin-bottom:8px}.qcard p{margin:0 0 16px;font-size:14.5px;color:#e6defc;line-height:1.55}
.qcard .btn{background:#fff;color:#2c1475;width:100%;justify-content:center}.qcard .btn:hover{background:#f0e9ff}
section.dark2{background:var(--bg2);padding:84px 0}
section.rel{padding:84px 0}
@media(max-width:900px){.hero .wrap,.split{grid-template-columns:1fr}.sticky{position:static}.mnav a.l{display:none}.menu{display:block}section{padding:68px 0}.layer:nth-child(n){margin-left:0}.cmp th,.cmp td{padding:14px}
.artgrid{grid-template-columns:1fr;gap:28px}.side{position:static;order:-1}.qcard{display:none}.toc ol{display:flex;flex-wrap:wrap;gap:8px}.toc a{border:1px solid #1B123633;border-radius:999px;padding:6px 12px;font-size:14px}.toc a:hover{text-decoration:none;border-color:#7C4DEA}
.cards{grid-template-columns:1fr 1fr}.fgrid{grid-template-columns:1fr 1fr}.art{padding:48px 0 64px}.phero{padding:32px 0 44px}section.dark2,section.rel{padding:60px 0}}
@media(max-width:560px){.cards{grid-template-columns:1fr}.cards .wide{grid-column:auto}.fgrid{grid-template-columns:1fr}.prose{font-size:17px}.hero{padding:56px 0 64px}.cta{margin:48px 12px 0;padding:56px 20px;border-radius:22px}.wrap{padding:0 20px}}
@media(max-width:560px){.cmp3 thead{display:none}.cmp3,.cmp3 tbody,.cmp3 tr,.cmp3 td{display:block;width:100%}
.cmp3 tr{padding:10px 0;border-bottom:1px solid #1B12361a}.cmp3 tr:last-child{border-bottom:0}
.cmp3 td{border:0;padding:6px 18px}.cmp3 td:first-child{width:100%;font-size:17px;padding-top:10px}
.cmp3 td[data-label]::before{content:attr(data-label);display:block;font:500 11px "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase;color:#4a2ab9;margin-bottom:3px}
.cmp3 td:last-child{margin-top:6px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}.rv{opacity:1;transform:none}}
