.copy{border:1px solid var(--line);background:var(--card);max-width:100%;font-family:var(--mono);color:var(--fg2);border-radius:10px;align-items:center;gap:12px;padding:8px 8px 8px 14px;font-size:13px;display:inline-flex}.copy code{white-space:nowrap;min-width:0;font-size:inherit;overflow-x:auto}.copy code:before{content:"$ ";color:var(--muted)}.copy button{font:inherit;border:1px solid var(--line2);background:var(--elev);color:var(--fg2);cursor:pointer;border-radius:6px;flex:none;padding:4px 9px;font-size:11.5px}.copy button:hover{color:var(--fg)}.downloads:where(.astro-45th3mgo){border-top:1px solid var(--line);text-align:left;margin-top:96px;padding-top:48px;scroll-margin-top:96px}h3:where(.astro-45th3mgo){letter-spacing:-.025em;font-size:24px;font-weight:600}.meta:where(.astro-45th3mgo){color:var(--muted);margin-top:6px;font-size:14px}.meta:where(.astro-45th3mgo) a:where(.astro-45th3mgo),.signing:where(.astro-45th3mgo) a:where(.astro-45th3mgo){text-decoration:underline;text-decoration-color:var(--line2);text-underline-offset:3px}.meta:where(.astro-45th3mgo) a:where(.astro-45th3mgo):hover,.signing:where(.astro-45th3mgo) a:where(.astro-45th3mgo):hover{color:var(--fg)}.dl-grid:where(.astro-45th3mgo){grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:16px;margin-top:32px;display:grid}section:where(.astro-45th3mgo){border:1px solid var(--line);background:var(--card);border-radius:16px;min-width:0;padding:20px}h4:where(.astro-45th3mgo){font-size:12px;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 12px;font-weight:500}ul:where(.astro-45th3mgo){grid-template-columns:minmax(0,1fr);gap:4px;margin:0;padding:0;list-style:none;display:grid}li:where(.astro-45th3mgo)>a:where(.astro-45th3mgo),li:where(.astro-45th3mgo).pkg{border-radius:8px;gap:2px;min-width:0;margin:0 -10px;padding:8px 10px;font-size:15px;display:grid}li:where(.astro-45th3mgo)>a:where(.astro-45th3mgo):hover{background:var(--elev)}li:where(.astro-45th3mgo) code:where(.astro-45th3mgo){color:var(--muted);overflow-wrap:anywhere;font-size:12px}li:where(.astro-45th3mgo).pkg{grid-template-columns:minmax(0,1fr);gap:8px}li:where(.astro-45th3mgo).pkg .copy{display:flex}.signing:where(.astro-45th3mgo){color:var(--muted);margin-top:20px;font-size:13.5px}.hero:where(.astro-d32ejlv2){text-align:center;padding-block:112px 56px;position:relative}.hero:where(.astro-d32ejlv2):before{content:"";z-index:-1;background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);background-position:top;background-size:56px 56px;position:absolute;inset:-120px 0 0;mask-image:radial-gradient(70% 60% at 50% 30%,#000,#0000)}.hero:where(.astro-d32ejlv2) h1:where(.astro-d32ejlv2){letter-spacing:-.045em;max-width:13ch;margin:0 auto;font-size:clamp(42px,6.6vw,76px);line-height:1.04}.lead:where(.astro-d32ejlv2){max-width:34em;color:var(--fg2);margin:22px auto 0;font-size:18.5px}.ctas:where(.astro-d32ejlv2){flex-wrap:wrap;justify-content:center;gap:10px;margin-top:34px;display:flex}.fine:where(.astro-d32ejlv2){color:var(--muted);margin-top:18px;font-size:13px}.fine:where(.astro-d32ejlv2) a:where(.astro-d32ejlv2){text-decoration:underline;text-decoration-color:var(--line2);text-underline-offset:3px}.fine:where(.astro-d32ejlv2) a:where(.astro-d32ejlv2):hover{color:var(--fg)}.shot-wrap:where(.astro-d32ejlv2){padding-bottom:24px;position:relative}.shot-wrap:where(.astro-d32ejlv2):before{content:"";background:var(--glow);filter:blur(80px);z-index:-1;border-radius:50%;height:60%;position:absolute;top:6%;left:10%;right:10%}.shot-wrap:where(.astro-d32ejlv2) .yaggui-shot{margin:0}.shot-wrap:where(.astro-d32ejlv2) .yaggui-shot .zoom{box-shadow:var(--shadow)}.proof:where(.astro-d32ejlv2){flex-wrap:wrap;justify-content:center;gap:10px;margin:0;padding:28px 0 0;list-style:none;display:flex}.proof:where(.astro-d32ejlv2) li:where(.astro-d32ejlv2){border:1px solid var(--line);background:var(--card);color:var(--fg2);border-radius:999px;align-items:baseline;gap:10px;padding:10px 18px;font-size:14px;display:inline-flex}.proof:where(.astro-d32ejlv2) b{color:var(--fg);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:15.5px;font-weight:600}.sec:where(.astro-d32ejlv2){padding-block:128px 0}.kicker:where(.astro-d32ejlv2){font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:16px;font-size:12px}.h2:where(.astro-d32ejlv2){letter-spacing:-.035em;max-width:20ch;font-size:clamp(30px,4vw,46px);line-height:1.1}.sub:where(.astro-d32ejlv2){color:var(--fg2);max-width:36em;margin-top:16px;font-size:17.5px}.center:where(.astro-d32ejlv2){text-align:center}.center:where(.astro-d32ejlv2) .h2:where(.astro-d32ejlv2),.center:where(.astro-d32ejlv2) .sub:where(.astro-d32ejlv2){margin-left:auto;margin-right:auto}.grid:where(.astro-d32ejlv2){grid-template-columns:repeat(6,minmax(0,1fr));gap:16px;margin-top:56px;display:grid}.card:where(.astro-d32ejlv2){border:1px solid var(--line);background:var(--card);border-radius:16px;align-content:start;gap:8px;min-width:0;padding:24px;display:grid}.card:where(.astro-d32ejlv2) h3:where(.astro-d32ejlv2){letter-spacing:-.015em;font-size:17px;font-weight:600}.card:where(.astro-d32ejlv2) p:where(.astro-d32ejlv2){color:var(--fg2);font-size:15px}.ic:where(.astro-d32ejlv2){border:1px solid var(--line);width:32px;height:32px;color:var(--fg2);border-radius:9px;place-items:center;margin-bottom:10px;display:grid}.ic:where(.astro-d32ejlv2) svg:where(.astro-d32ejlv2){width:16px;height:16px}.wide:where(.astro-d32ejlv2){grid-column:span 3}.third:where(.astro-d32ejlv2){grid-column:span 2}.vis:where(.astro-d32ejlv2){border:1px solid var(--line);background:var(--panel);aspect-ratio:16/9;border-radius:10px;margin:-8px -8px 18px;position:relative;overflow:hidden}.vis:where(.astro-d32ejlv2) .yaggui-shot,.vis:where(.astro-d32ejlv2) .zoom{height:100%;margin:0}.vis:where(.astro-d32ejlv2) img{object-fit:cover;object-position:60% 30%;border-radius:0;width:100%;height:100%}.rb:where(.astro-d32ejlv2){align-content:center;gap:6px;padding:18px;font-size:13px;display:grid;position:absolute;inset:0}.rb:where(.astro-d32ejlv2) div:where(.astro-d32ejlv2){border:1px solid var(--line);background:var(--bg);color:var(--fg2);border-radius:8px;grid-template-columns:52px 64px minmax(0,1fr);align-items:center;gap:10px;padding:8px 12px;display:grid}.rb:where(.astro-d32ejlv2) div:where(.astro-d32ejlv2).drag{border-color:var(--accent);box-shadow:0 10px 30px -12px color-mix(in srgb, var(--sunk) 90%, transparent);color:var(--fg);transform:translate(10px)rotate(-.6deg)}.rb:where(.astro-d32ejlv2) .v:where(.astro-d32ejlv2){font-family:var(--mono);text-align:center;border-radius:4px;padding:2px 0;font-size:11px}.rb:where(.astro-d32ejlv2) .v:where(.astro-d32ejlv2).p{color:var(--fg2);background:var(--elev)}.rb:where(.astro-d32ejlv2) .v:where(.astro-d32ejlv2).s{color:color-mix(in srgb, var(--l2) 60%, var(--fg));background:color-mix(in srgb, var(--l2) 14%, transparent)}.rb:where(.astro-d32ejlv2) .v:where(.astro-d32ejlv2).r{color:color-mix(in srgb, var(--l1) 60%, var(--fg));background:color-mix(in srgb, var(--l1) 14%, transparent)}.rb:where(.astro-d32ejlv2) .v:where(.astro-d32ejlv2).d{color:color-mix(in srgb, var(--del) 70%, var(--fg));background:color-mix(in srgb, var(--del) 14%, transparent)}.rb:where(.astro-d32ejlv2) .sha:where(.astro-d32ejlv2){font-family:var(--mono);color:var(--fg2);font-size:11.5px}.rb:where(.astro-d32ejlv2) .m:where(.astro-d32ejlv2){white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.split:where(.astro-d32ejlv2){grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:72px;display:grid}.checks:where(.astro-d32ejlv2){color:var(--fg2);gap:12px;margin:28px 0 0;padding:0;font-size:15.5px;list-style:none;display:grid}.checks:where(.astro-d32ejlv2) li:where(.astro-d32ejlv2){align-items:baseline;gap:12px;display:flex}.checks:where(.astro-d32ejlv2) li:where(.astro-d32ejlv2):before{content:"";border-left:1.5px solid var(--add);border-bottom:1.5px solid var(--add);flex:none;width:14px;height:8px;transform:rotate(-45deg)translateY(-3px)}.undo:where(.astro-d32ejlv2){border:1px solid var(--line);background:var(--card);border-radius:16px;padding:18px}.undo-bar:where(.astro-d32ejlv2){border-bottom:1px solid var(--line);color:var(--fg2);align-items:center;gap:8px;margin-bottom:8px;padding-bottom:14px;font-size:13px;display:flex}.pill:where(.astro-d32ejlv2){border:1px solid var(--line2);color:var(--fg);background:var(--elev);border-radius:8px;align-items:center;gap:6px;padding:6px 10px;display:inline-flex}.undo-row:where(.astro-d32ejlv2){color:var(--fg2);border-radius:8px;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 8px;font-size:14px;display:grid}.undo-row:where(.astro-d32ejlv2).on{background:var(--accent-soft);color:var(--fg)}.undo-row:where(.astro-d32ejlv2).gone{color:var(--muted)}.undo-row:where(.astro-d32ejlv2) i:where(.astro-d32ejlv2){background:var(--l0);border-radius:50%;justify-self:center;width:8px;height:8px}.undo-row:where(.astro-d32ejlv2) time:where(.astro-d32ejlv2){font-family:var(--mono);color:var(--fg2);font-size:11.5px}.toast:where(.astro-d32ejlv2){border:1px solid var(--line2);background:var(--elev);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;padding:11px 14px;font-size:13.5px;display:flex}.toast:where(.astro-d32ejlv2) span:where(.astro-d32ejlv2){color:var(--fg2)}.toast:where(.astro-d32ejlv2) b:where(.astro-d32ejlv2){color:var(--accent);font-weight:500}.term:where(.astro-d32ejlv2){border:1px solid var(--line);background:var(--sunk);font-family:var(--mono);border-radius:16px;font-size:12.5px;overflow:hidden}.term-top:where(.astro-d32ejlv2){border-bottom:1px solid var(--line);color:var(--fg2);align-items:center;gap:6px;padding:12px 14px;font-size:11.5px;display:flex}.term-top:where(.astro-d32ejlv2) i:where(.astro-d32ejlv2){background:var(--line2);border-radius:50%;width:10px;height:10px}.term-top:where(.astro-d32ejlv2) span:where(.astro-d32ejlv2){margin-left:8px}.term-body:where(.astro-d32ejlv2){padding:10px 0;overflow-x:auto}.term-row:where(.astro-d32ejlv2){white-space:nowrap;color:var(--fg);grid-template-columns:1fr auto auto;gap:18px;min-width:460px;padding:6px 16px;display:grid}.term-row:where(.astro-d32ejlv2) .ms:where(.astro-d32ejlv2){color:var(--fg2);text-align:right;font-variant-numeric:tabular-nums}.term-row:where(.astro-d32ejlv2) .ok:where(.astro-d32ejlv2){color:var(--add)}.term-row:where(.astro-d32ejlv2) .ko:where(.astro-d32ejlv2){color:var(--del)}.term-row:where(.astro-d32ejlv2) .g:where(.astro-d32ejlv2){color:var(--fg2)}.term-row:where(.astro-d32ejlv2).err{background:color-mix(in srgb, var(--del) 7%, transparent)}.themes:where(.astro-d32ejlv2){grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;margin-top:56px;display:grid}.themes:where(.astro-d32ejlv2) .yaggui-shot{margin:0}.themes:where(.astro-d32ejlv2) .yaggui-shot .zoom{box-shadow:var(--shadow)}.cap:where(.astro-d32ejlv2){color:var(--fg2);justify-content:space-between;gap:12px;margin-top:12px;font-size:14px;display:flex}.cap:where(.astro-d32ejlv2) b:where(.astro-d32ejlv2){color:var(--fg);font-weight:600}.faq:where(.astro-d32ejlv2){border-top:1px solid var(--line);text-align:left;max-width:760px;margin:48px auto 0}.faq:where(.astro-d32ejlv2) details:where(.astro-d32ejlv2){border-bottom:1px solid var(--line)}.faq:where(.astro-d32ejlv2) summary:where(.astro-d32ejlv2){cursor:pointer;justify-content:space-between;gap:16px;padding:20px 4px;font-size:16.5px;font-weight:500;list-style:none;display:flex}.faq:where(.astro-d32ejlv2) summary:where(.astro-d32ejlv2)::-webkit-details-marker{display:none}.faq:where(.astro-d32ejlv2) summary:where(.astro-d32ejlv2):after{content:"+";color:var(--muted);font-size:22px;font-weight:300;line-height:1;transition:transform .15s}.faq:where(.astro-d32ejlv2) details:where(.astro-d32ejlv2)[open] summary:where(.astro-d32ejlv2):after{transform:rotate(45deg)}.faq:where(.astro-d32ejlv2) details:where(.astro-d32ejlv2) p{color:var(--fg2);max-width:62ch;padding:0 4px 22px;font-size:15.5px}.final:where(.astro-d32ejlv2){text-align:center;padding-block:144px 120px}.final:where(.astro-d32ejlv2) h2:where(.astro-d32ejlv2){letter-spacing:-.045em;font-size:clamp(36px,5.4vw,64px);line-height:1.05}.final:where(.astro-d32ejlv2)>p:where(.astro-d32ejlv2){color:var(--fg2);max-width:32em;margin:18px auto 0;font-size:17.5px}.final:where(.astro-d32ejlv2) .copy{margin:26px auto 0}@keyframes up{0%{opacity:.25;transform:translateY(10px)}}.hero:where(.astro-d32ejlv2)>:where(.astro-d32ejlv2){animation:.7s cubic-bezier(.2,0,0,1) both up}.hero:where(.astro-d32ejlv2)>:where(.astro-d32ejlv2):nth-child(2){animation-delay:60ms}.hero:where(.astro-d32ejlv2)>:where(.astro-d32ejlv2):nth-child(3){animation-delay:.12s}.hero:where(.astro-d32ejlv2)>:where(.astro-d32ejlv2):nth-child(4){animation-delay:.18s}@media (width<=900px){.wide:where(.astro-d32ejlv2),.third:where(.astro-d32ejlv2){grid-column:span 6}.split:where(.astro-d32ejlv2),.themes:where(.astro-d32ejlv2){grid-template-columns:minmax(0,1fr);gap:40px}}@media (width<=640px){.hero:where(.astro-d32ejlv2){padding-block:64px 40px}.sec:where(.astro-d32ejlv2){padding-block:96px 0}}*{box-sizing:border-box}[hidden]{display:none!important}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--fg);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.6;overflow-x:hidden}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto;display:block}h1,h2,h3{text-wrap:balance;margin:0;font-weight:500}p{margin:0}code{font-family:var(--mono);font-size:.88em}kbd{font-family:var(--mono);border:1px solid var(--line2);background:var(--elev);min-width:1.75em;height:1.75em;color:var(--fg2);vertical-align:.1em;border-radius:5px;justify-content:center;align-items:center;padding:0 .45em;font-size:.75em;line-height:1;display:inline-flex}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.gut{padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px))}.wrap{max-width:1120px;margin:0 auto}.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}.nav-wrap{top:calc(env(safe-area-inset-top,0px) + 12px);z-index:40;padding-top:16px;position:sticky}.nav{border:1px solid var(--line);background:color-mix(in srgb, var(--bg) 78%, transparent);-webkit-backdrop-filter:blur(12px);border-radius:14px;align-items:center;gap:8px;padding:8px 8px 8px 16px;display:flex}.brand{letter-spacing:-.01em;align-items:center;gap:9px;font-size:15px;font-weight:600;display:flex}.nav .brand{margin-right:auto}.brand img{width:24px;height:24px}.nav-links{color:var(--fg2);gap:2px;font-size:14px;display:flex}.nav-links a{border-radius:8px;padding:6px 12px;transition:color .15s,background .15s}.nav-links a:hover{color:var(--fg);background:var(--card)}.nav-icon{border:1px solid var(--line);min-width:34px;height:34px;color:var(--fg2);font:inherit;cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:13px;display:inline-flex}.nav-icon:hover{color:var(--fg)}.nav-icon svg{width:15px;height:15px}.btn{background:var(--btn);height:44px;color:var(--btn-fg);cursor:pointer;white-space:nowrap;border:0;border-radius:10px;align-items:center;gap:8px;padding:0 20px;font-size:15px;font-weight:500;transition:opacity .15s;display:inline-flex}.btn:hover{opacity:.88}.btn svg{width:16px;height:16px}.btn.sm{border-radius:8px;height:34px;padding:0 14px;font-size:13.5px}.btn.ghost{color:var(--fg);box-shadow:inset 0 0 0 1px var(--line2);background:0 0}.btn.ghost:hover{background:var(--card);opacity:1}footer{border-top:1px solid var(--line)}.foot{color:var(--muted);flex-wrap:wrap;align-items:center;gap:12px 28px;padding-block:36px 48px;font-size:13.5px;display:flex}.foot .brand{color:var(--fg);margin-right:8px;font-size:14px}.foot nav{flex-wrap:wrap;gap:6px 22px;display:flex}.foot nav a:hover{color:var(--fg)}.foot .r{margin-left:auto}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}html{scroll-behavior:auto}}@media (width<=640px){.nav-links,.nav .github{display:none}.foot .r{margin-left:0}}
