/* Shared Seryvon editorial shell */
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Manrope:wght@400;500;600;700;800&family=Space+Grotesk:wght@500;600;700&display=swap');
html{scroll-padding-top:90px}body{overflow-wrap:break-word}h3{font-family:'Space Grotesk',sans-serif;font-size:23px;line-height:1.3;margin-top:32px}section p,footer p{color:var(--muted)}a:focus-visible{outline:2px solid var(--a2);outline-offset:5px}pre{max-width:100%;overflow:auto;padding:24px;border:1px solid var(--border);border-radius:16px;background:var(--card);line-height:1.7}pre code{padding:0;background:transparent;white-space:pre}table{width:100%;border-collapse:collapse;margin:28px 0;font-size:15px}caption{text-align:left;color:var(--muted);padding-bottom:12px}th,td{text-align:left;padding:14px;border-bottom:1px solid var(--border);vertical-align:top}th{color:var(--text);background:var(--card)}td{color:var(--muted)}.notice{border-left:3px solid var(--a2);background:var(--card);padding:20px 24px;margin:28px 0;border-radius:0 12px 12px 0}.editorial-meta,main>p.editorial-meta{font-size:13px;color:var(--muted)}.resource-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:18px}.resource-grid section{padding:22px;border:1px solid var(--border);border-radius:18px;background:var(--card)}.resource-grid h3{margin-top:0}footer{margin-top:54px;padding-top:20px;border-top:1px solid var(--border);font-size:13px}.cta{display:inline-block;padding:12px 22px;background:var(--accent);border-radius:999px;color:#fff}@media(max-width:600px){th,td{padding:9px;font-size:13px}pre{padding:16px;font-size:13px}}
:root{--bg:#08090d;--bg2:#0f1118;--card:#14161f;--border:rgba(255,255,255,.1);--text:#f0f1f5;--muted:#9599a8;--accent:#2436ff;--a2:#6470ff}*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;background:radial-gradient(circle at 80% 0,rgba(36,54,255,.16),transparent 34rem),linear-gradient(180deg,var(--bg),var(--bg2));color:var(--text);font:16px/1.7 Manrope,system-ui,sans-serif}body:before{content:'';display:block;height:3px;background:var(--accent)}main{max-width:920px;margin:0 auto;padding:42px 24px 96px}main>p:first-child{font:12px 'IBM Plex Mono',monospace;letter-spacing:.08em;text-transform:uppercase}a{color:var(--text);text-decoration:none;border-bottom:1px solid rgba(100,112,255,.5)}a:hover{color:#fff;border-color:var(--a2)}main>p:first-child a{border:0;color:var(--a2)}h1,h2{font-family:'Space Grotesk',sans-serif;letter-spacing:-.035em;line-height:1.08}h1{font-size:clamp(42px,7vw,72px);max-width:800px;margin:28px 0 20px}h2{font-size:clamp(25px,4vw,38px);margin:58px 0 16px}main>p{max-width:740px;color:var(--muted);font-size:18px}ul,ol{max-width:740px;padding:24px 28px;background:var(--card);border:1px solid var(--border);border-radius:18px;color:var(--muted)}li{padding:5px 0}strong{color:var(--text)}code{font:500 .9em 'IBM Plex Mono',monospace;color:#aeb5ff;background:rgba(100,112,255,.12);padding:2px 6px;border-radius:5px}@media(max-width:600px){main{padding:28px 18px 70px}h1{font-size:42px}h2{margin-top:42px}main>p{font-size:16px}}
.editorial-header{position:sticky;top:0;z-index:20;background:rgba(8,9,13,.94);backdrop-filter:blur(18px);border-bottom:1px solid var(--border)}.editorial-nav{max-width:1240px;margin:auto;padding:13px 24px;display:flex;align-items:center;gap:22px}.editorial-brand{display:flex;align-items:center;gap:9px;border:0}.editorial-brand img{width:auto}.editorial-links{display:flex;gap:20px;flex:1;font:12px "IBM Plex Mono",monospace}.editorial-links a{border:0;color:var(--muted)}.editorial-cta{padding:10px 16px;border-radius:999px;background:var(--accent);color:#fff;border:0}.editorial-footer{max-width:1240px;margin:48px auto 0;padding:28px 24px;border-top:1px solid var(--border);display:flex;justify-content:space-between;color:var(--muted)}.editorial-footer a{color:var(--muted)}@media(max-width:800px){.editorial-links{gap:9px}.editorial-links a:nth-child(n+4){display:none}.editorial-nav{padding:11px 16px}.editorial-footer{margin-top:30px;flex-direction:column;gap:14px}}
.editorial-footer{max-width:none;margin:48px 0 0;padding:0 24px;border-top:1px solid var(--border);color:var(--muted);font-size:13px}.editorial-footer-inner{max-width:1240px;margin:0 auto;padding:28px 0;display:flex;justify-content:space-between;align-items:center;gap:20px}.editorial-footer-brand,.editorial-footer-links{display:flex;align-items:center;gap:16px}.editorial-footer-links a{border:0;color:var(--muted)}.editorial-footer-links a:hover{color:var(--text)}.editorial-footer .license{border:1px solid var(--border);border-radius:999px;padding:3px 10px;font:11px "IBM Plex Mono",monospace}@media(max-width:800px){.editorial-footer-inner{align-items:flex-start;flex-direction:column}.editorial-footer-brand,.editorial-footer-links{flex-wrap:wrap;gap:10px}}
.editorial-footer-inner{max-width:1240px!important;margin:0 auto!important;padding:28px 0!important;display:flex!important;align-items:center!important;justify-content:space-between!important;gap:16px!important}.editorial-footer-brand,.editorial-footer-copy,.editorial-footer-links{display:flex;align-items:center;gap:10px}.editorial-footer-copy{font-size:13.5px;color:var(--muted)}.editorial-footer-copy img{vertical-align:middle}.editorial-footer-links{gap:16px;font:11px "IBM Plex Mono",monospace;color:var(--muted)}.editorial-footer-links a{border:0;color:var(--muted)}.editorial-footer-links .license{border:1px solid var(--border);border-radius:999px;padding:3px 10px}@media(max-width:900px){.editorial-footer-inner{align-items:flex-start!important;flex-wrap:wrap!important}.editorial-footer-links{flex-wrap:wrap}}
.editorial-footer-inner{max-width:none!important;padding:28px 32px!important}.editorial-footer-links a[aria-label]{font-size:0;display:inline-flex;width:22px;height:22px;align-items:center;justify-content:center;border-radius:50%;background:rgba(149,153,168,.14)}.editorial-footer-links a[aria-label]::after{font:600 11px "IBM Plex Mono",monospace;color:var(--muted)}.editorial-footer-links a[aria-label="GitHub organization"]::after{content:"GH"}.editorial-footer-links a[aria-label="LinkedIn"]::after{content:"in"}.editorial-footer-links a[aria-label="DEV Community"]::after{content:"DEV";font-size:7px}.editorial-footer-links a[aria-label="Crunchbase"]::after{content:"C"}@media(max-width:800px){.editorial-footer-inner{padding:24px 16px!important}}
.editorial-footer-links a[aria-label]{font-size:inherit!important;width:auto!important;height:auto!important;background:none!important}.editorial-footer-links a[aria-label] svg{display:block;color:var(--muted)}.editorial-footer-links a[aria-label]:hover svg{color:var(--text)}.crunchbase-mark{display:inline-flex;width:22px;height:22px;align-items:center;justify-content:center;border-radius:50%;background:currentColor;color:var(--bg);font:700 13px Manrope,sans-serif}
.editorial-nav{justify-content:space-between}.editorial-links details{position:relative}.editorial-links details>div{position:absolute;top:calc(100% + 14px);left:-12px;min-width:180px;padding:8px;background:rgba(15,17,24,.98);border:1px solid var(--border);border-radius:12px;box-shadow:0 18px 45px rgba(0,0,0,.45);z-index:90}.editorial-links details a{display:block;padding:8px 10px}.editorial-links details a:hover{background:rgba(100,112,255,.12);border-radius:7px}.editorial-links span{color:var(--border2)}.editorial-github{display:inline-flex;align-items:center;gap:5px}.editorial-actions{display:flex;align-items:center;gap:11px}.editorial-lang{display:flex;gap:2px;border:1px solid var(--border);border-radius:999px;padding:3px}.editorial-lang button{border:0;border-radius:999px;padding:6px 11px;background:transparent;color:var(--muted);font:600 11px "IBM Plex Mono",monospace}.editorial-lang button:first-child{background:var(--accent);color:#fff}.editorial-cta{font:700 13px Manrope,system-ui,sans-serif}@media(max-width:1000px){.editorial-links{gap:10px}.editorial-links>a:nth-of-type(-n+2),.editorial-links>span{display:none}.editorial-actions .editorial-lang{display:none}}@media(max-width:700px){.editorial-links{display:none}.editorial-actions{margin-left:auto}}
.editorial-links summary{list-style:none;cursor:pointer}.editorial-links summary::-webkit-details-marker{display:none}.editorial-links summary:after{content:"⌄";margin-left:6px;color:var(--a2);font-size:11px}.editorial-lang button{font-family:"IBM Plex Mono",monospace;font-size:11px;font-weight:600;letter-spacing:.05em;padding:5px 10px;border:none;border-radius:999px;cursor:pointer;background:transparent;color:var(--muted)}.editorial-lang button:first-child{background:var(--accent);color:#fff}.editorial-lang button:hover{color:var(--text)}
.editorial-links{justify-content:flex-start}.editorial-links>span{margin:0}.editorial-actions{justify-content:flex-end}.editorial-nav{gap:16px;padding-left:32px;padding-right:32px}.editorial-brand{min-width:0}.editorial-links details>div a{font:12px/1.2 "IBM Plex Mono",monospace}.editorial-links summary{display:block;list-style:none}.editorial-links summary::marker{content:""}.editorial-links summary::-webkit-details-marker{display:none}.editorial-lang button{appearance:none;-webkit-appearance:none}
.homepage-shell .editorial-header{position:fixed;top:0;left:0;right:0}
.editorial-links a,.editorial-links summary,.editorial-cta{white-space:nowrap}.editorial-links details,.editorial-links>a{flex:none}.editorial-actions{flex:none}.editorial-brand{flex:none}@media (max-width:1300px) and (min-width:801px){.editorial-nav{gap:12px}.editorial-links{gap:14px}.editorial-actions{gap:8px}.editorial-lang button{padding-left:8px;padding-right:8px}.editorial-cta{padding-left:13px;padding-right:13px}}
.editorial-page{min-height:100vh;display:flex;flex-direction:column;padding-top:64px}.editorial-page>.wrap{flex:1;width:min(920px,100%);margin:0 auto;padding:56px 24px 80px}.editorial-page>.editorial-footer{flex:none}
html,body{margin:0!important;padding:0!important}.editorial-header{position:fixed!important;top:0!important;left:0!important;right:0!important;margin:0!important}.editorial-header + main{margin-top:64px}
.editorial-footer-inner{width:100%!important;max-width:1240px!important;box-sizing:border-box!important}
.editorial-lang-button{border:0;border-radius:999px;padding:5px 10px;color:var(--muted);font:600 11px "IBM Plex Mono",monospace;letter-spacing:.05em;text-decoration:none}.editorial-lang-button:first-child{background:var(--accent);color:#fff}.editorial-lang-button:hover{color:var(--text)}
.docker-screenshot{margin:32px 0 40px;padding:18px;border:1px solid var(--border);border-radius:18px;background:rgba(255,255,255,.02)}.docker-screenshot-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.docker-screenshot img{display:block;width:100%;height:auto;border:1px solid var(--border);border-radius:12px;background:#0b0d12}.docker-screenshot figcaption{margin:14px 4px 0;color:var(--muted);font-size:14px;line-height:1.5}@media(max-width:720px){.docker-screenshot-grid{grid-template-columns:1fr}}
