@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap');
:root{color-scheme:dark;--bg:#080b12;--panel:#101624;--panel2:#151d2d;--line:#2b3547;--text:#f3f7ff;--muted:#a8b5c8;--cyan:#63e6e2;--blue:#8ca8ff;--pink:#f39fc2;--amber:#f5c66d;--width:1180px;font-family:'DM Sans',system-ui,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(circle at 80% 3%,#15223a 0,transparent 30%),radial-gradient(circle at 12% 27%,#181732 0,transparent 28%),var(--bg);color:var(--text);line-height:1.65}a{color:inherit;text-decoration:none}button{font:inherit}::selection{background:var(--cyan);color:#08111b}.wrap{width:min(calc(100% - 40px),var(--width));margin:auto}.topbar{position:sticky;top:0;z-index:30;border-bottom:1px solid #ffffff18;background:#080b12df;backdrop-filter:blur(18px)}.nav{display:flex;align-items:center;justify-content:space-between;min-height:72px;gap:20px}.brand{display:inline-flex;align-items:center;gap:12px;font-family:'Space Grotesk',sans-serif;font-size:1.28rem;font-weight:700;letter-spacing:-.06em}.mark{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:linear-gradient(140deg,var(--cyan),var(--blue));color:#07131c;font-size:1.5rem}.navlinks{display:flex;align-items:center;gap:30px;font-size:.92rem;color:var(--muted)}.navlinks a:hover,.footer a:hover,.side a:hover{color:var(--cyan)}.navlinks .github{border:1px solid var(--line);padding:8px 14px;border-radius:9px;color:var(--text)}.menu{display:none;background:transparent;color:var(--text);border:1px solid var(--line);border-radius:9px;padding:6px 10px}.eyebrow,.kicker{font-family:'JetBrains Mono',monospace;text-transform:uppercase;letter-spacing:.15em;color:var(--cyan);font-size:.74rem;font-weight:600}.hero{padding:112px 0 94px;position:relative;overflow:hidden}.hero:after{content:'';position:absolute;z-index:-1;right:-120px;top:-40px;width:580px;height:580px;border:1px solid #6386b328;border-radius:50%;box-shadow:0 0 0 70px #6386b30b,0 0 0 140px #6386b308}.hero-grid{display:grid;grid-template-columns:1.08fr .92fr;gap:65px;align-items:center}.hero h1,h1,h2,h3{font-family:'Space Grotesk',sans-serif;letter-spacing:-.045em;line-height:1.12}.hero h1{font-size:clamp(3.4rem,7vw,6.4rem);margin:18px 0 24px}.gradient{background:linear-gradient(100deg,var(--cyan),var(--blue) 55%,var(--pink));background-clip:text;color:transparent}.hero p{color:var(--muted);font-size:clamp(1.05rem,1.8vw,1.3rem);max-width:590px;line-height:1.7}.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;border-radius:11px;padding:12px 18px;font-weight:700;transition:transform .2s,border-color .2s,background .2s}.btn:hover,.card:hover{transform:translateY(-3px)}.btn.primary{background:var(--cyan);color:#07131c}.btn.secondary{border:1px solid var(--line);background:#101624a8}.btn.secondary:hover{border-color:var(--cyan)}.version{font-family:'JetBrains Mono',monospace;color:var(--muted);font-size:.78rem;margin-top:26px}.terminal{border:1px solid #3a4a63;background:#0b1120;border-radius:17px;overflow:hidden;box-shadow:0 35px 90px #0008,0 0 80px #63e6e20a}.term-top{display:flex;align-items:center;gap:7px;padding:14px 17px;background:#151e2d;border-bottom:1px solid var(--line);font:500 .73rem 'JetBrains Mono',monospace;color:var(--muted)}.dot{width:8px;height:8px;border-radius:50%;background:#ed827f}.dot:nth-child(2){background:var(--amber)}.dot:nth-child(3){background:#7fd8b4}.term-title{margin-left:auto}.code{position:relative;padding:24px;overflow:auto;font: .88rem/1.85 'JetBrains Mono',monospace;white-space:pre;color:#d9e9f4}.code .comment{color:#75879b}.code .cmd{color:var(--cyan)}.code .accent{color:var(--amber)}.copy{position:absolute;top:12px;right:12px;border:1px solid var(--line);border-radius:7px;background:#1b2535;color:var(--muted);padding:5px 9px;font: .72rem 'JetBrains Mono',monospace;cursor:pointer}.copy:hover{color:var(--cyan);border-color:var(--cyan)}.section{padding:88px 0}.section.alt{background:#0c111bc7;border-block:1px solid #ffffff0a}.section-head{max-width:680px;margin-bottom:35px}.section h2{font-size:clamp(2.2rem,4.5vw,3.7rem);margin:8px 0 14px}.section-head p,.lede{color:var(--muted);font-size:1.08rem}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.card{min-height:215px;display:flex;flex-direction:column;padding:27px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(145deg,#172031,#0e1522);transition:transform .2s,border-color .2s}.card:hover{border-color:#63e6e277}.card .num{font:600 .76rem 'JetBrains Mono',monospace;color:var(--cyan)}.card h3{font-size:1.45rem;margin:17px 0 8px}.card p{color:var(--muted);margin:0}.card .arrow{margin-top:auto;padding-top:22px;color:var(--cyan)}.flow{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.flow>div{border-top:2px solid var(--cyan);padding:22px 15px;background:#111927}.flow strong{display:block;font-family:'Space Grotesk',sans-serif;font-size:1.13rem}.flow span{color:var(--muted);font-size:.9rem}.notice{border:1px solid #f5c66d50;border-left:3px solid var(--amber);background:#f5c66d0b;border-radius:8px;padding:18px 22px;color:#ebd5aa}.footer{border-top:1px solid var(--line);padding:42px 0;color:var(--muted);font-size:.9rem}.footgrid{display:flex;justify-content:space-between;gap:30px;flex-wrap:wrap}.footer a{margin-right:18px}.doc-shell{display:grid;grid-template-columns:240px minmax(0,1fr);gap:70px;padding:56px 0 100px}.side{position:sticky;top:100px;align-self:start;display:grid;gap:4px;font-size:.91rem}.side .group{margin:19px 0 8px;color:#6f839d;text-transform:uppercase;letter-spacing:.13em;font:600 .71rem 'JetBrains Mono',monospace}.side a{padding:8px 12px;border-radius:8px;color:var(--muted)}.side a.current{background:#1b2b38;color:var(--cyan)}.article{max-width:790px;min-width:0}.article h1{font-size:clamp(2.7rem,5vw,4.3rem);margin:10px 0 22px}.article h2{font-size:2rem;margin:55px 0 16px}.article h3{font-size:1.3rem;margin:32px 0 10px}.article p,.article li{color:#c1cee0;font-size:1.02rem}.article a:not(.btn){color:var(--cyan);text-decoration:underline;text-decoration-color:#63e6e266;text-underline-offset:3px}.article ul,.article ol{padding-left:25px}.article li{margin:9px 0}.article code:not(pre code){font:.89em 'JetBrains Mono',monospace;color:var(--cyan);background:#1a2735;padding:2px 5px;border-radius:4px}.article pre{position:relative;overflow:auto;border:1px solid var(--line);border-radius:12px;background:#0b1120;padding:24px;color:#d9e9f4;font:.85rem/1.75 'JetBrains Mono',monospace}.table-wrap{overflow:auto}.article table{border-collapse:collapse;width:100%;min-width:590px}.article th,.article td{border-bottom:1px solid var(--line);padding:15px;text-align:left;vertical-align:top}.article th{color:var(--text)}.article td{color:var(--muted)}.callout{padding:20px 24px;background:#12212c;border-left:3px solid var(--cyan);border-radius:8px}.article .callout p{margin:0}.next{margin-top:60px;border:1px solid var(--line);border-radius:12px;padding:23px;display:flex;justify-content:space-between;align-items:center}.next:hover{border-color:var(--cyan)}@media(max-width:900px){.hero-grid{grid-template-columns:1fr}.hero{padding:70px 0}.grid{grid-template-columns:repeat(2,1fr)}.flow{grid-template-columns:repeat(2,1fr)}.doc-shell{gap:30px;grid-template-columns:185px minmax(0,1fr)}}@media(max-width:650px){.wrap{width:min(calc(100% - 30px),var(--width))}.nav{min-height:64px}.menu{display:block}.navlinks{display:none;position:absolute;left:0;right:0;top:64px;padding:18px;background:#0e1522;border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;gap:10px}.navlinks.open{display:flex}.navlinks a{padding:8px}.hero h1{font-size:3.3rem}.grid,.flow,.doc-shell{grid-template-columns:1fr}.side{position:static;display:flex;flex-wrap:wrap;gap:3px;border-bottom:1px solid var(--line);padding-bottom:16px}.side .group{display:none}.side a{font-size:.84rem}.section{padding:65px 0}.card{min-height:180px}}

/* Documentation index and search */
.side .doc-nav{display:grid;gap:4px;margin-top:12px}.search-label{display:block;margin:18px 0 8px;color:var(--muted);font:600 .72rem 'JetBrains Mono',monospace;text-transform:uppercase;letter-spacing:.12em}.doc-search{width:100%;border:1px solid var(--line);border-radius:9px;background:#0e1725;color:var(--text);padding:11px 12px;font:inherit;outline:none}.doc-search:focus{border-color:var(--cyan);box-shadow:0 0 0 3px #63e6e21a}.search-results{display:none;border:1px solid var(--line);border-radius:9px;background:#111d2d;margin-top:8px;padding:6px;max-height:320px;overflow:auto}.search-results:not(:empty){display:grid}.search-results a{padding:9px;border-radius:6px;line-height:1.35}.search-results a:hover{background:#1b2b38}.search-results strong{display:block;color:var(--text);font-size:.86rem}.search-results small{display:block;color:var(--muted);font-size:.73rem}.article .grid{grid-template-columns:repeat(2,minmax(0,1fr));margin:20px 0 38px}.article .grid .card{min-height:180px}.article h1{scroll-margin-top:100px}.article h2,.article h3{scroll-margin-top:100px}.article blockquote{border-left:3px solid var(--cyan);margin:25px 0;padding:1px 20px;background:#63e6e20a}.article blockquote p{margin:12px 0}.article pre code{font:inherit}.article pre{white-space:pre;tab-size:4}.article table code{word-break:normal}@media(max-width:650px){.side .doc-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.side .doc-nav .group{grid-column:1/-1;display:block;margin:14px 0 2px}.search-label,.doc-search,.search-results{width:100%}.article .grid{grid-template-columns:1fr}}

@media(min-width:651px){.side{max-height:calc(100vh - 120px);overflow-y:auto;scrollbar-color:#52677a transparent;scrollbar-width:thin}}

.doc-nav-toggle{display:none}.article a.card,.article a.card *{text-decoration:none!important}@media(max-width:650px){.doc-nav-toggle{display:flex;width:100%;justify-content:space-between;align-items:center;border:1px solid var(--line);border-radius:9px;background:#111d2d;color:var(--text);padding:10px 12px;margin-top:8px;cursor:pointer}.side .doc-nav{display:none}.side .doc-nav.open{display:grid}}

.article img{display:block;max-width:100%;height:auto;margin:24px 0 28px;border-radius:14px}.home-diagram{display:block;width:100%;height:auto;margin-top:32px;border-radius:14px}a:focus-visible,button:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}

.journeys{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;margin:25px 0 50px}.journeys>a{display:flex;flex-direction:column;gap:10px;border:1px solid var(--line);border-radius:14px;padding:26px;background:linear-gradient(140deg,#132335,#111827);text-decoration:none!important}.journeys>a:hover{border-color:var(--cyan)}.journeys .num{color:var(--cyan);font:600 .74rem JetBrains Mono,monospace;letter-spacing:.1em}.journeys strong{font:700 1.45rem Space Grotesk,sans-serif;color:var(--text)}.journeys span{color:var(--muted)}.journeys em{color:var(--cyan);font-style:normal;margin-top:8px}@media(max-width:650px){.journeys{grid-template-columns:1fr}}

.article :not(pre)>code{overflow-wrap:anywhere;word-break:break-word}

@media(max-width:650px){.article p:has(>img){max-width:100%;overflow-x:auto;border-radius:14px}.article p:has(>img)::before{content:"Scroll to explore diagram →";display:block;padding:7px 10px;color:var(--muted);font-size:.78rem}.article p:has(>img) img{width:760px;max-width:none;margin:0 0 8px}.home-diagram-scroll{overflow-x:auto}.home-diagram{width:760px;max-width:none}}

.page-outline{margin:22px 0 28px;padding:14px 18px;border:1px solid var(--line);border-radius:12px;background:#101c2b}.page-outline summary{cursor:pointer;color:var(--cyan);font-weight:600}.page-outline ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 18px;margin:14px 0 3px!important;padding-left:20px!important}.page-outline li{font-size:.88rem!important;margin:3px 0!important}.article .page-outline a{overflow-wrap:anywhere}.journeys>a:nth-child(3){grid-column:1/-1}@media(max-width:650px){.page-outline ul{grid-template-columns:1fr}}
