:root{--navy:#1a2238;--cream:#faf6ef;--fire:#e8a33d;--bg:#fff;--bg-alt:#f4f5f7;--fg:#343a46;--fg-dim:#66707f;--fg-strong:#14192a;--accent:#1a2238;--accent-hover:#2e3a5c;--border:#e2e5ea;--border-strong:#c4c9d2;--sans:"Inter Variable", ui-sans-serif, system-ui, sans-serif;--mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--measure:66ch;color-scheme:light}:root[data-theme=dark]{--bg:#161c2e;--bg-alt:#1f2740;--fg:#c5cad6;--fg-dim:#8a92a6;--fg-strong:#f3f4f7;--accent:#c9d2ec;--accent-hover:#fff;--border:#2b3450;--border-strong:#3f4a6a;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.hero .tagline,.readme h1,.readme h2{font-variation-settings:"opsz" 32}:focus-visible{outline:2px solid var(--fire);outline-offset:3px;border-radius:2px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);border:2px solid var(--bg);border-radius:8px}::-webkit-scrollbar-track{background:0 0}body{background:var(--bg);color:var(--fg);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.65}::selection{background:color-mix(in srgb, var(--fire) 35%, transparent)}.topbar{z-index:20;background:var(--bg);border-bottom:1px solid var(--border);position:sticky;top:0}.topbar-in{align-items:center;gap:1.5rem;max-width:1040px;margin:0 auto;padding:.8rem 1.5rem;display:flex}.topnav{gap:1.6rem;margin-left:auto;font-size:14px;font-weight:500;display:flex}.topnav a{color:var(--fg);text-decoration:none}.topnav a:hover{color:var(--fg-strong)}.brand,.lockup{color:var(--fg-strong);letter-spacing:-.01em;align-items:baseline;gap:.42em;font-weight:600;line-height:1;text-decoration:none;display:inline-flex}.brand{font-size:18px}.brand .logo-mark,.lockup .logo-mark{width:auto;height:.98em}.logo-mark{color:currentColor;flex:none}.logo-mark .beacon{fill:var(--fire)}.readme .wm{color:var(--fg-strong);font-weight:600}#theme-toggle{border:1px solid var(--border);color:var(--fg-dim);font:inherit;cursor:pointer;background:0 0;border-radius:4px;padding:.3rem .45rem;font-size:14px;line-height:1}#theme-toggle:hover{color:var(--fg-strong);border-color:var(--border-strong)}.hero{background:var(--navy);color:#fff}.hero-in{max-width:1040px;margin:0 auto;padding:3.6rem 1.5rem 3.4rem}.hero .lockup{color:#fff;font-size:1.9rem}.hero .logo-mark{color:var(--cream)}.hero-status{letter-spacing:.1em;text-transform:uppercase;color:#faf6ef9e;margin:1.1rem 0 0;font-size:12px;font-weight:600}.hero .tagline{font-family:var(--sans);letter-spacing:-.02em;color:#fff;max-width:26ch;margin:1.4rem 0 1rem;font-size:2.75rem;font-weight:600;line-height:1.12}.hero-sub{color:#faf6efbd;max-width:58ch;margin:0 0 1.7rem;font-size:1.08rem;line-height:1.55}.hero-cta{flex-wrap:wrap;gap:.7rem;margin:0;display:flex}.hero-seal{color:#faf6ef9e;margin:1.6rem 0 0;font-size:13.5px}.btn{color:#fff;border:1px solid #ffffff80;border-radius:4px;align-items:center;padding:.6rem 1.1rem;font-size:14.5px;font-weight:500;text-decoration:none;transition:border-color .15s,background .15s,color .15s;display:inline-flex}.btn:hover{background:#ffffff14;border-color:#fff}.btn-primary{color:var(--navy);background:#fff;border-color:#fff}.btn-primary:hover{background:var(--cream);border-color:var(--cream);color:var(--navy)}:root[data-theme=dark] .hero{background:var(--cream);color:var(--navy)}:root[data-theme=dark] .hero .lockup,:root[data-theme=dark] .hero .tagline,:root[data-theme=dark] .hero .logo-mark{color:var(--navy)}:root[data-theme=dark] .hero-sub,:root[data-theme=dark] .hero-status,:root[data-theme=dark] .hero-seal{color:#1a2238b8}:root[data-theme=dark] .btn{color:var(--navy);border-color:#1a223873}:root[data-theme=dark] .btn:hover{border-color:var(--navy);background:#1a22380f}:root[data-theme=dark] .btn-primary{background:var(--navy);color:#fff;border-color:var(--navy)}:root[data-theme=dark] .btn-primary:hover{background:var(--accent-hover);color:var(--navy);border-color:var(--accent-hover)}.shell{grid-template-columns:220px minmax(0,1fr);gap:3.5rem;max-width:1040px;margin:0 auto;padding:2.8rem 1.5rem 3rem;display:grid}.toc{counter-reset:toc-part;align-self:start;font-size:13.5px;position:sticky;top:4.6rem}.toc-part{counter-increment:toc-part}.toc-part+.toc-part{margin-top:1.4rem}.toc-part-label{letter-spacing:.09em;text-transform:uppercase;color:var(--fg-dim);margin:0 0 .4rem;font-size:11.5px;font-weight:600}.toc-part-label:before{content:counter(toc-part);color:var(--fg-strong);margin-right:.6em}.toc ol{border-left:1px solid var(--border);margin:0;padding:0;list-style:none}.toc li a{color:var(--fg-dim);border-left:2px solid #0000;margin-left:-1px;padding:.24rem .85rem;text-decoration:none;display:block}.toc li a:hover{color:var(--fg-strong)}.toc li a[aria-current=true]{color:var(--accent);border-left-color:var(--accent);font-weight:500}.readme{counter-reset:part}.readme>:first-child{margin-top:0}.readme p,.readme ul,.readme ol,.readme blockquote,.readme table{max-width:var(--measure)}.readme p,.readme ul,.readme ol{margin:.9em 0}.readme>p:first-child{color:var(--fg-strong);font-size:1.22rem;line-height:1.5}.readme>p:first-child:before{content:"Overview";letter-spacing:.09em;text-transform:uppercase;color:var(--fg-dim);margin-bottom:1.1rem;font-size:11.5px;font-weight:600;display:block}.readme>ul:not(h1~*){border-top:1px solid var(--border);max-width:var(--measure);margin:1.6rem 0;padding:0;list-style:none}.readme>ul:not(h1~*)>li{border-bottom:1px solid var(--border);color:var(--fg-dim);margin:0;padding:.9rem 0}.readme>ul:not(h1~*)>li>strong{color:var(--fg-strong);margin-bottom:.15rem;font-size:1.02rem;font-weight:600;display:block}.readme>ul:not(h1~*)+p{color:var(--fg-strong)}.readme h1{color:var(--fg-strong);letter-spacing:-.02em;border-top:1px solid var(--border);counter-increment:part;margin:4.5rem 0 1.3rem;padding-top:2.4rem;scroll-margin-top:1.5rem;font-size:2.1rem;font-weight:600;line-height:1.15}.readme h1:before{content:counter(part);color:var(--fg-dim);margin-right:.55em;font-weight:500}.readme h1+h2{margin-top:1.4rem}.readme h2[id^=introduction]{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:0;padding:0;position:absolute;overflow:hidden}.readme ul,.readme ol{padding-left:1.5em}.readme li{margin:.3em 0}.readme li::marker{color:var(--fg-dim)}.readme pre{font-size:13px}.towers{border:1px solid var(--border);background:var(--bg-alt);max-width:var(--measure);color:var(--fg-strong);border-bottom:0;border-radius:4px 4px 0 0;margin:2rem 0 0;padding:1.4rem 1.5rem .1rem}.readme p.towers-text{border:1px solid var(--border);background:var(--bg-alt);border-top:0;border-radius:0 0 4px 4px;margin:0 0 1.6rem;padding:.9rem 1.5rem 1.3rem}.towers svg{width:250px;max-width:100%;height:78px;display:block;overflow:visible}.towers .babel{opacity:.38}.towers .sea{opacity:.45}.towers .fire{fill:var(--fire)}.towers .cap{font:600 9.5px var(--sans);letter-spacing:.12em;text-transform:uppercase;fill:var(--fg-dim)}.readme p:has(>strong:first-child):has(>br){border-top:1px solid var(--border);color:var(--fg-dim);grid-template-columns:max-content minmax(0,1fr);align-items:baseline;gap:0 2rem;margin:1.6rem 0;padding:0;display:grid}.readme p:has(>strong:first-child):has(>br)>br{display:none}.readme p:has(>strong:first-child):has(>br)>strong,.readme p:has(>strong:first-child):has(>br)>strong+*{border-bottom:1px solid var(--border);padding:.7rem 0}.readme p:has(>strong:first-child):has(>br)>strong{color:var(--fg-strong);font-size:1.02rem;font-weight:600;line-height:1.3}#the-project+p+ul{grid-template-columns:1fr 1fr;gap:.8rem;max-width:none;padding:0;list-style:none;display:grid}#the-project+p+ul>li{border:1px solid var(--border);background:var(--bg-alt);border-radius:4px;margin:0;padding:1rem 1.15rem 1.05rem;font-size:.95em}#the-project+p+ul>li>strong{margin-bottom:.3rem;font-size:1.02rem;font-weight:600;display:block}.readme h2{color:var(--fg-strong);letter-spacing:-.015em;margin:3rem 0 1rem;scroll-margin-top:1.5rem;font-size:1.45rem;font-weight:600;line-height:1.25}.readme h3{color:var(--fg-strong);margin:2rem 0 .7rem;font-size:1.1rem;font-weight:600}.readme strong{color:var(--fg-strong);font-weight:600}a{color:var(--accent);text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{color:var(--accent-hover);text-decoration-color:currentColor}code,pre,kbd,samp{font-family:var(--mono)}code{background:var(--bg-alt);border:1px solid var(--border);border-radius:3px;padding:.06em .32em;font-size:.86em}pre{border:1px solid var(--border);border-radius:4px;padding:.9rem 1.1rem;line-height:1.55;overflow-x:auto;background:var(--bg-alt)!important}pre code{font-size:inherit;background:0 0;border:0;padding:0}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important}.readme pre[data-language=txt]{border-color:#d0d7de;background:#fff!important}:root .readme pre[data-language=txt],:root .readme pre[data-language=txt] span{color:#24292e!important;font-style:normal!important;font-weight:400!important}blockquote{border-left:3px solid var(--accent);letter-spacing:-.012em;color:var(--fg-strong);margin:1.8em 0 .6em;padding:.15rem 0 .15rem 1.1rem;font-size:1.18rem;font-weight:600;line-height:1.35}blockquote p{margin:0}blockquote+p{color:var(--fg-dim);margin-top:0}table{border-collapse:collapse;width:100%;font-size:.9em;line-height:1.5}th,td{border:0;border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:.6rem}th{color:var(--fg-dim);text-transform:uppercase;letter-spacing:.08em;font-size:11.5px;font-weight:600}th strong{color:var(--fg-strong);font-weight:600}.site-foot{border-top:1px solid var(--border);color:var(--fg-dim);gap:.5rem;margin-top:5rem;padding-top:1.6rem;font-size:13.5px;display:grid}.foot-line{max-width:60ch;margin:0}.foot-links{flex-wrap:wrap;gap:1.2rem;margin-top:.3rem;display:flex}.site-foot a{color:var(--fg-dim);text-decoration:none}.site-foot a:hover{color:var(--fg-strong)}@media (width<=800px){.hero-in{padding:2.6rem 1.1rem 2.4rem}.hero .tagline{font-size:2.1rem}.shell{grid-template-columns:minmax(0,1fr);gap:1.8rem;padding:2rem 1.1rem 2.5rem}.toc{order:2;margin-top:2rem;position:static}.topnav{display:none}#the-project+p+ul,.readme p:has(>strong:first-child):has(>br){grid-template-columns:1fr}.readme p:has(>strong:first-child):has(>br)>strong{border-bottom:0;padding-bottom:0}.readme p:has(>strong:first-child):has(>br)>strong+*{padding-top:.15rem}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.footnotes{border-top:1px solid var(--border);color:var(--fg-dim);margin-top:3rem;padding-top:1rem;font-size:.85em}.footnotes p{margin:.2em 0}sup a[data-footnote-ref]{font-weight:600;text-decoration:none}@media print{.topbar,.toc,.hero-cta,.site-foot nav{display:none!important}.hero{color:#111;background:0 0}.hero .tagline,.hero .lockup{color:#111}.shell{padding:0;display:block}body{color:#111;background:#fff}.readme h2[id^=introduction]{clip:auto;width:auto;height:auto;position:static}a{color:inherit;text-decoration:underline}}
