@charset "UTF-8";:root{--font-display: "Space Grotesk", "Inter", system-ui, sans-serif;--font-body: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--bg: #f6f8fa;--bg-2: #eef2f6;--surface: #ffffff;--surface-2: #f1f4f8;--line: rgba(15, 23, 42, .08);--line-strong: rgba(15, 23, 42, .16);--grid: rgba(15, 23, 42, .045);--text: #0f172a;--text-2: #334155;--muted: #5b6878;--lime: #84d13a;--cyan: #38bdf8;--violet: #a78bfa;--amber: #f5a623;--accent-lime: #2f7d0f;--accent-cyan: #0b74a3;--accent-violet: #5f43d1;--accent-amber: #a85206;--accent: var(--accent-lime);--accent-ink: #ffffff;--accent-soft: rgba(63, 150, 24, .11);--radius: 16px;--radius-xl: 24px;--header-h: 4.5rem;--space-section: clamp(3.5rem, 9vw, 7.5rem);--container: 76rem;--gutter: clamp(1rem, 4vw, 2rem);--ease: cubic-bezier(.2, .7, .2, 1);color-scheme:light}.accent-lime{--accent: var(--accent-lime);--accent-soft: rgba(63, 150, 24, .11)}.accent-cyan{--accent: var(--accent-cyan);--accent-soft: rgba(11, 116, 163, .1)}.accent-violet{--accent: var(--accent-violet);--accent-soft: rgba(95, 67, 209, .1)}.accent-amber{--accent: var(--accent-amber);--accent-soft: rgba(168, 82, 6, .1)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 1rem)}body{margin:0;min-height:100dvh;display:flex;flex-direction:column;font-family:var(--font-body);font-size:1.0625rem;line-height:1.65;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}app-root{display:contents}main{flex:1;outline:none}img,svg,video{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none}button{font:inherit}ul,ol{padding-left:1.2rem}p{margin:0 0 1rem}strong{font-weight:600}address{font-style:normal}::selection{background:var(--accent);color:var(--accent-ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}h1,h2,h3,h4{font-family:var(--font-display);font-weight:700;line-height:1.1;letter-spacing:-.02em;color:var(--text);margin:0 0 1rem;text-wrap:balance}h1{font-size:clamp(2.2rem,5.5vw,4.25rem)}h2{font-size:clamp(1.75rem,3.6vw,2.75rem)}@media(max-width:560px){h1,h2,h3{hyphens:auto;-webkit-hyphens:auto;overflow-wrap:break-word}}h3{font-size:clamp(1.2rem,2vw,1.5rem);line-height:1.25}h4{font-size:1.1rem;line-height:1.3}.lead{font-size:clamp(1.1rem,1.6vw,1.3rem);line-height:1.6;color:var(--text-2)}.kicker{display:inline-flex;align-items:center;gap:.5rem;margin:0 0 .75rem;font-family:var(--font-mono);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.kicker:before{content:"";width:1.5rem;height:1px;background:currentColor;opacity:.7}.muted{color:var(--muted)}.mono{font-family:var(--font-mono)}.container{width:min(100% - 2 * var(--gutter),var(--container));margin-inline:auto}.container-narrow{--container: 52rem}.section{padding-block:var(--space-section)}.section-tight{padding-block:calc(var(--space-section) * .6)}.section-alt{background:var(--bg-2);border-block:1px solid var(--line)}.section-head{max-width:44rem;margin-bottom:clamp(2rem,5vw,3.5rem)}.section-head h2{margin-bottom:.75rem}.section-head .lead{margin:0}.section-head.center{margin-inline:auto;text-align:center}.section-head.center .kicker{justify-content:center}.grid{display:grid;gap:1.25rem}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:1024px){.grid.cols-4,.grid.cols-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:1fr}}.card{position:relative;padding:clamp(1.4rem,3vw,2rem);border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);box-shadow:0 1px 2px #0f172a0a,0 8px 24px -16px #0f172a1f;transition:border-color .3s var(--ease),transform .3s var(--ease),box-shadow .3s var(--ease)}a.card:hover,.card.is-hover:hover{border-color:var(--line-strong);box-shadow:0 2px 4px #0f172a0d,0 18px 40px -18px #0f172a33;transform:translateY(-3px)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.85rem 1.4rem;border-radius:999px;border:1px solid transparent;font-weight:600;font-size:.98rem;line-height:1.2;cursor:pointer;white-space:nowrap;transition:transform .2s var(--ease),background .2s,border-color .2s,color .2s,box-shadow .2s}.btn:hover{transform:translateY(-2px)}.btn:active{transform:translateY(0)}.btn app-icon{width:1.1em;height:1.1em}.btn:disabled{opacity:.6;cursor:wait;transform:none}.btn-primary{background:var(--accent);color:var(--accent-ink);box-shadow:0 10px 28px -12px color-mix(in srgb,var(--accent) 55%,transparent)}.btn-primary:hover{box-shadow:0 14px 32px -12px color-mix(in srgb,var(--accent) 65%,transparent)}.btn-ghost{background:transparent;color:var(--text);border-color:var(--line-strong)}.btn-ghost:hover{background:var(--surface-2)}.btn-sm{padding:.6rem 1.1rem;font-size:.9rem}.btn-lg{padding:1.05rem 1.8rem;font-size:1.05rem}@media(max-width:560px){.btn:not(.btn-sm){width:100%;white-space:normal;text-align:center}}.check-list{list-style:none;margin:0;padding:0;display:grid;gap:.7rem}.check-list li{display:flex;gap:.7rem;align-items:flex-start;color:var(--text-2)}.check-list app-icon{flex:none;margin-top:.2rem;width:1.35rem;height:1.35rem;padding:.2rem;border-radius:50%;background:var(--accent-soft);color:var(--accent)}.tag-list{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:0;padding:0}.tag-list li{font-family:var(--font-mono);font-size:.8rem;padding:.35rem .7rem;border-radius:6px;border:1px solid var(--line);background:var(--surface);color:var(--text-2)}.step-list{list-style:none;margin:0;padding:0;display:grid;gap:1rem;counter-reset:step}.step-list li{position:relative;display:grid;grid-template-columns:3rem 1fr;gap:1.25rem;padding:1.4rem;border-radius:var(--radius);background:var(--surface);border:1px solid var(--line)}.step-list li:before{counter-increment:step;content:counter(step,decimal-leading-zero);font-family:var(--font-mono);font-size:1.2rem;font-weight:600;color:var(--accent);line-height:1.2}.step-list h3{font-size:1.15rem;margin:0 0 .35rem}.step-list p{margin:0;color:var(--muted)}.prose{max-width:70ch}.prose h2{font-size:1.6rem;margin-top:2.5rem}.prose h3{font-size:1.2rem;margin-top:1.75rem}.prose p,.prose li{color:var(--text-2)}.prose ul{margin:0 0 1.25rem}.prose li{margin-bottom:.4rem}.prose a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.skip-link{position:absolute;left:1rem;top:-100%;z-index:1000;padding:.75rem 1rem;border-radius:8px;background:var(--accent);color:var(--accent-ink);font-weight:600}.skip-link:focus{top:1rem}.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.reveal{opacity:0;transform:translateY(14px);transition:opacity .45s var(--ease),transform .45s var(--ease)}.reveal.is-visible{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition-duration:.01ms!important}}
