[data-has-hero]{--lp-border:color-mix(in srgb, var(--sl-color-gray-5) 72%, transparent);--lp-card:color-mix(in srgb, var(--sl-color-black) 55%, var(--sl-color-bg));--lp-grid-line:#94a3b812;--lp-glow:#0284c729;--lp-brand:#e04f4f;--lp-ok:#4ade80;--lp-term-bg:#0b1220;--lp-mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--lp-display:"IBM Plex Sans", var(--sl-font)}:root[data-theme=light] [data-has-hero],[data-theme=light] [data-has-hero]{--lp-grid-line:#0206170e;--lp-glow:#0284c71a;--lp-brand:#c00;--lp-ok:#15803d;--lp-card:var(--sl-color-black)}[data-has-hero]{--sl-content-width:74rem}[data-has-hero] .main-frame{position:relative}[data-has-hero] .main-frame:before{content:"";pointer-events:none;background-image:radial-gradient(52rem 30rem at 72% 4rem, var(--lp-glow), transparent 68%), linear-gradient(to right, var(--lp-grid-line) 1px, transparent 1px), linear-gradient(to bottom, var(--lp-grid-line) 1px, transparent 1px);background-size:100% 100%,42px 42px,42px 42px;height:52rem;position:absolute;inset:0 0 auto;mask-image:linear-gradient(#000 55%,#0000)}[data-has-hero] .hero{grid-template-columns:minmax(0,10fr) minmax(0,9fr);gap:3rem;padding-block:2.5rem 1.5rem}@media (width<=72rem){[data-has-hero] .hero{grid-template-columns:1fr;padding-block:1.5rem .5rem}[data-has-hero] .hero>.hero-html{order:2}}[data-has-hero] .hero>.sl-flex.stack{text-align:left;align-items:flex-start;gap:1.75rem}[data-has-hero] .hero .copy{align-items:flex-start;gap:1.25rem}[data-has-hero] .hero h1{font-family:var(--lp-display);letter-spacing:-.022em;max-width:21ch;font-size:clamp(2.1rem,4.6vw,3.4rem);font-weight:650;line-height:1.08;animation:.7s cubic-bezier(.2,.7,.2,1) both lp-rise}[data-has-hero] .hero h1:before{content:"SELF-HOSTED /// OPEN SOURCE /// APACHE-2.0";font-family:var(--lp-mono);letter-spacing:.14em;color:var(--sl-color-accent-high);margin-bottom:1.1rem;font-size:.72rem;font-weight:500;display:block}[data-has-hero] .hero .tagline{color:var(--sl-color-gray-2);max-width:52ch;font-size:clamp(1rem,1.4vw,1.125rem);line-height:1.65;animation:.7s cubic-bezier(.2,.7,.2,1) 80ms both lp-rise}[data-has-hero] .hero .tagline .lp-kicker{font-family:var(--lp-display);color:var(--sl-color-white);margin-bottom:.45rem;font-weight:600;display:block}[data-has-hero] .hero .tagline .lp-kicker em{color:var(--lp-brand);font-style:normal}[data-has-hero] .hero .actions{animation:.7s cubic-bezier(.2,.7,.2,1) .16s both lp-rise}[data-has-hero] .hero-html{justify-content:center;align-items:center;animation:.8s cubic-bezier(.2,.7,.2,1) .2s both lp-rise}.lp-term{border:1px solid var(--lp-border);background:var(--lp-term-bg);border-radius:.9rem;width:100%;max-width:34rem;overflow:hidden;box-shadow:inset 0 1px #ffffff0a,0 24px 60px -24px #020817b3}:root[data-theme=light] .lp-term{box-shadow:0 24px 60px -28px #02081759}.lp-term-bar{border-bottom:1px solid #94a3b81f;align-items:center;gap:.45rem;padding:.65rem .9rem;display:flex}.lp-dot{background:#94a3b847;border-radius:50%;width:.62rem;height:.62rem}.lp-term-bar .lp-dot:first-child{background:#c00}.lp-term-title{font-family:var(--lp-mono);letter-spacing:.08em;color:#64748b;margin-left:.4rem;font-size:.7rem}.lp-term-body{font-family:var(--lp-mono);padding:1rem 1.1rem 1.15rem;font-size:.78rem;line-height:1.5}.lp-term-body .tl{color:#94a3b8;white-space:nowrap;align-items:baseline;margin:0 0 .45rem;animation:.45s ease-out both lp-line;display:flex;overflow:hidden}.tl-1{animation-delay:.5s}.tl-2{animation-delay:1s}.tl-3{animation-delay:1.5s}.tl-4{animation-delay:2s}.tl-5{animation-delay:2.5s}.tl-6{animation-delay:3.1s}.lp-term-body .tl>span{min-width:0}.lp-term-body :is(.t-what,.t-done,.t-dim){text-overflow:ellipsis;overflow:hidden}.lp-term-body .t-dim{color:#64748b}.lp-term-body .t-bright{color:#e2e8f0;font-weight:500}.lp-term-body .t-arrow{color:#38bdf8;margin-right:.6em}.lp-term-body .t-verb{color:#e2e8f0;flex-shrink:0;width:4.5em}.lp-term-body .t-what{color:#94a3b8}.lp-term-body .t-fill{border-bottom:1px dotted #64748b73;flex:1;min-width:1.5em;margin:0 .6em;transform:translateY(-.28em)}.lp-term-body .t-ok{color:#4ade80}.lp-term-body .t-check{color:#4ade80;margin-right:.6em}.lp-term-body .t-done{color:#e2e8f0}.tl-6{margin-top:.65rem}.t-cursor{opacity:0;background:#38bdf8;width:.55em;height:1.05em;margin-left:.35em;animation:1.1s step-end 3.6s infinite lp-blink;display:inline-block;transform:translateY(.18em)}@keyframes lp-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes lp-line{0%{opacity:0;transform:translate(6px)}to{opacity:1;transform:translate(0)}}@keyframes lp-blink{0%,49%{opacity:1}50%,to{opacity:0}}@media (prefers-reduced-motion:reduce){[data-has-hero] .hero h1,[data-has-hero] .hero .tagline,[data-has-hero] .hero .actions,[data-has-hero] .hero-html,.lp-term-body .tl{animation:none}.t-cursor{opacity:1;animation:none}}.lp{flex-direction:column;gap:5.5rem;padding-block:3.5rem 2rem;display:flex}.lp-section>*+*{margin-top:0}.lp-eyebrow{font-family:var(--lp-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--sl-color-accent-high);margin:0 0 .6rem;font-size:.72rem;font-weight:500}.lp-eyebrow:before{content:"//";color:var(--lp-brand);margin-right:.6em}.lp .lp-h2{font-family:var(--lp-display);letter-spacing:-.018em;color:var(--sl-color-white);max-width:30ch;margin:0 0 2rem;font-size:clamp(1.6rem,3vw,2.2rem);font-weight:650;line-height:1.15}.lp .lp-h2 code{font-family:var(--lp-mono);background:color-mix(in srgb, var(--sl-color-accent-low) 55%, transparent);border-radius:.35em;padding:.08em .3em;font-size:.85em}.lp-strip{border-block:1px solid var(--lp-border);grid-template-columns:repeat(4,1fr);display:grid}.lp-strip-item{border-inline-start:1px solid var(--lp-border);flex-direction:column;gap:.3rem;padding:1.1rem 1.25rem;display:flex}.lp-strip-item:first-child{border-inline-start:none}.lp-strip-k{font-family:var(--lp-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--sl-color-gray-3);font-size:.68rem}.lp-strip-v{font-family:var(--lp-display);color:var(--sl-color-white);font-size:.92rem;font-weight:600}@media (width<=50rem){.lp-strip{grid-template-columns:1fr 1fr}.lp-strip-item:nth-child(3){border-inline-start:none}.lp-strip-item:nth-child(n+3){border-block-start:1px solid var(--lp-border)}}.lp-grid{grid-template-columns:repeat(3,1fr);gap:1rem;display:grid}.lp-card{border:1px solid var(--lp-border);background:var(--lp-card);color:inherit;border-radius:1rem;flex-direction:column;grid-column:span 1;gap:.65rem;padding:1.5rem 1.5rem 1.35rem;text-decoration:none;transition:border-color .2s,transform .2s,box-shadow .2s;display:flex}.lp-card-wide{grid-column:span 2}.lp-card-full{grid-column:1/-1;grid-template-rows:auto auto auto;grid-template-columns:auto 1fr;align-items:start;column-gap:1.25rem;display:grid}.lp-card-full .lp-icon{grid-row:1/-1;margin-top:.2rem}.lp-card-full p{max-width:68ch}.lp-card:hover{border-color:color-mix(in srgb, var(--sl-color-accent) 55%, var(--lp-border));transform:translateY(-3px);box-shadow:0 18px 40px -24px #0208178c}.lp-card h3{font-family:var(--lp-display);letter-spacing:-.01em;color:var(--sl-color-white);margin:0;font-size:1.08rem;font-weight:600}.lp-card p{color:var(--sl-color-gray-2);margin:0;font-size:.92rem;line-height:1.6}.lp-icon{border:1px solid var(--lp-border);background:color-mix(in srgb, var(--sl-color-accent-low) 35%, transparent);width:2.4rem;height:2.4rem;color:var(--sl-color-accent-high);border-radius:.65rem;justify-content:center;align-items:center;margin-bottom:.35rem;display:inline-flex}.lp-icon svg{width:1.25rem;height:1.25rem}.lp-more{font-family:var(--lp-mono);letter-spacing:.06em;color:var(--sl-color-accent-high);margin-top:auto;padding-top:.5rem;font-size:.74rem}.lp-more:after{content:" →";transition:transform .2s;display:inline-block}.lp-card:hover .lp-more:after{transform:translate(3px)}@media (width<=60rem){.lp-grid{grid-template-columns:1fr 1fr}.lp-card-wide{grid-column:span 2}}@media (width<=40rem){.lp-grid{grid-template-columns:1fr}.lp-card-wide{grid-column:span 1}.lp-card-full{flex-direction:column;display:flex}}.lp-steps{counter-reset:step;grid-template-columns:repeat(3,1fr);gap:2rem;margin:0;padding:0;list-style:none;display:grid}.lp-step{border-top:1px solid var(--lp-border);padding-top:1.1rem;position:relative}.lp-step-num{font-family:var(--lp-mono);letter-spacing:.1em;color:var(--lp-brand);background:var(--sl-color-bg);padding-right:.8rem;font-size:.78rem;font-weight:600;position:absolute;top:-.72rem;left:0}.lp-step h3{font-family:var(--lp-display);color:var(--sl-color-white);margin:0 0 .5rem;font-size:1.05rem;font-weight:600}.lp-step p{color:var(--sl-color-gray-2);margin:0;font-size:.92rem;line-height:1.6}.lp-step p code{font-family:var(--lp-mono);font-size:.85em}.lp-step-link{font-family:var(--lp-mono);color:var(--sl-color-accent-high);margin-top:.8rem;font-size:.78rem;text-decoration:none;display:inline-block}.lp-step-link:after{content:" →"}.lp-step-link:hover{text-decoration:underline}@media (width<=60rem){.lp-steps{grid-template-columns:1fr;gap:2.5rem}}.lp-snippet{border:1px solid var(--lp-border);background:var(--lp-term-bg);border-radius:.75rem;margin-top:1rem;position:relative;overflow:hidden}.lp-snippet pre{font-family:var(--lp-mono);color:#cbd5e1;background:0 0;margin:0;padding:1rem 4.5rem 1rem 1.1rem;font-size:.74rem;line-height:1.55;overflow-x:auto}.lp-copy{font-family:var(--lp-mono);letter-spacing:.06em;color:#94a3b8;cursor:pointer;background:#0f172ad9;border:1px solid #94a3b840;border-radius:.45rem;padding:.3rem .6rem;font-size:.68rem;transition:color .15s,border-color .15s;position:absolute;top:.55rem;right:.55rem}.lp-copy:hover{color:#e2e8f0;border-color:#94a3b880}.lp-copy.is-copied{color:#4ade80;border-color:#4ade8066}.lp-compare{grid-template-columns:repeat(3,1fr);align-items:stretch;gap:1rem;display:grid}.lp-tier{border:1px dashed var(--lp-border);border-radius:1rem;padding:1.5rem}.lp-tier h3{font-family:var(--lp-mono);letter-spacing:.04em;color:var(--sl-color-gray-2);margin:0 0 .6rem;font-size:.85rem;font-weight:600}.lp-tier p{color:var(--sl-color-gray-3);margin:0;font-size:.9rem;line-height:1.6}.lp-tier p code{font-family:var(--lp-mono);font-size:.85em}.lp-tier-hero{border-style:solid;border-color:color-mix(in srgb, var(--sl-color-accent) 55%, var(--lp-border));background:radial-gradient(20rem 12rem at 50% -4rem, var(--lp-glow), transparent 70%), var(--lp-card)}.lp-tier-hero h3{color:var(--sl-color-white);font-family:var(--lp-display);font-size:1.05rem}.lp-tier-hero p{color:var(--sl-color-gray-2)}.lp-tier-badge{font-family:var(--lp-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--sl-color-accent-high);border:1px solid color-mix(in srgb, var(--sl-color-accent) 45%, transparent);border-radius:999px;margin-bottom:.9rem;padding:.22rem .65rem;font-size:.65rem;display:inline-block}@media (width<=60rem){.lp-compare{grid-template-columns:1fr}.lp-tier-hero{order:-1}}.lp-compare-links{font-family:var(--lp-mono);color:var(--sl-color-gray-3);margin:1.4rem 0 0;font-size:.78rem}.lp-compare-links a{color:var(--sl-color-accent-high);text-decoration:none}.lp-compare-links a:hover{text-decoration:underline}.lp-cta{text-align:center;border:1px solid var(--lp-border);background:radial-gradient(36rem 18rem at 50% -6rem, var(--lp-glow), transparent 70%), var(--lp-card);border-radius:1.25rem;padding:4rem 1.5rem 4.25rem;position:relative;overflow:hidden}.lp-cta-mark{width:13rem;height:13rem;color:var(--lp-brand);opacity:.06;pointer-events:none;position:absolute;bottom:-2.25rem;right:-1.5rem}@media (width<=50rem){.lp-cta-mark{opacity:.05;width:8rem;height:8rem;bottom:-1.5rem;right:-1.25rem}}.lp-cta .lp-h2{margin:0 auto .9rem}.lp-cta p{max-width:46ch;color:var(--sl-color-gray-2);margin:0 auto;line-height:1.65}.lp-cta-actions{flex-wrap:wrap;justify-content:center;gap:.9rem;margin-top:1.9rem;display:flex}.lp-btn{font-family:var(--lp-display);border-radius:999px;align-items:center;gap:.5rem;padding:.7rem 1.35rem;font-size:.95rem;font-weight:600;text-decoration:none;transition:transform .15s,box-shadow .15s,background .15s;display:inline-flex}.lp-btn svg{width:1rem;height:1rem}.lp-btn-primary{background:var(--sl-color-accent);color:#fff;box-shadow:0 10px 24px -12px color-mix(in srgb, var(--sl-color-accent) 70%, transparent)}.lp-btn-primary:hover{box-shadow:0 14px 28px -12px color-mix(in srgb, var(--sl-color-accent) 80%, transparent);transform:translateY(-2px)}.lp-btn-ghost{border:1px solid var(--lp-border);color:var(--sl-color-white)}.lp-btn-ghost:hover{background:color-mix(in srgb, var(--sl-color-gray-6) 60%, transparent)}.lp-cta-sub{font-family:var(--lp-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--sl-color-gray-3);font-size:.72rem;margin-top:1.4rem!important}
