.vp-doc a[href$=\.png] img,.vp-doc a[href$=\.jpg] img,.vp-doc a[href$=\.jpeg] img,.vp-doc a[href$=\.webp] img,.vp-doc a[href$=\.gif] img,.vp-doc p>img{cursor:zoom-in}.ry-viewer{z-index:100;backdrop-filter:blur(6px);color:#fff;background:#080c16eb;position:fixed;inset:0}.ry-viewer[hidden]{display:none}.ry-viewer-stage{place-items:center;padding:64px 72px;display:grid;position:absolute;inset:0;overflow:hidden}.ry-viewer-img{user-select:none;touch-action:none;border-radius:10px;max-width:calc(100vw - 144px);max-height:calc(100vh - 136px);transition:transform .18s ease-out;box-shadow:0 30px 80px -20px #000000b3}.ry-viewer-bar{align-items:center;gap:10px;padding:12px 16px;display:flex;position:absolute;left:0;right:0}.ry-viewer-top{background:linear-gradient(#00000073,#0000);top:0}.ry-viewer-tools{background:linear-gradient(#0000,#00000073);justify-content:center;bottom:0}.ry-viewer-count{font-family:var(--font-mono);color:#ffffffb3;font-size:13px}.ry-viewer-caption{text-overflow:ellipsis;white-space:nowrap;color:#ffffffd9;flex:1;min-width:0;font-size:14px;overflow:hidden}.ry-viewer-btn{color:#fff;background:#ffffff1a;border-radius:999px;place-items:center;min-width:40px;height:40px;padding:0 12px;font-size:16px;text-decoration:none;transition:background .2s;display:inline-grid}.ry-viewer-btn[hidden]{display:none}.ry-viewer-btn:hover{background:#fff3}.ry-viewer-btn:focus-visible{outline-offset:2px;outline:2px solid #fff}.ry-viewer-link{font-size:13px}.ry-viewer-prev,.ry-viewer-next{width:48px;height:48px;margin-top:-24px;font-size:28px;line-height:1;position:absolute;top:50%}.ry-viewer-prev{left:14px}.ry-viewer-next{right:14px}@media (width<=640px){.ry-viewer-stage{padding:56px 8px 72px}.ry-viewer-img{max-width:calc(100vw - 16px);max-height:calc(100vh - 140px)}.ry-viewer-prev,.ry-viewer-next{display:none}}.ry-fab{z-index:30;color:#fff;background-image:linear-gradient(180deg, color-mix(in oklab, var(--brand) 78%, white), var(--brand));border-radius:999px;align-items:center;gap:6px;height:46px;padding:0 18px;font-size:14.5px;font-weight:700;transition:transform .2s,filter .2s;display:inline-flex;position:fixed;bottom:20px;right:20px;box-shadow:inset 0 1px #ffffff4d,0 12px 28px -10px #0b6ef0bf}.ry-fab:hover{filter:brightness(1.05);transform:translateY(-2px)}body:has(.ry-fab) [data-site-footer]{padding-bottom:66px}@media print{.ry-fab{display:none}}.ry-contact{border:1px solid var(--line);background:var(--elevated);width:min(26rem,100vw - 2rem);max-height:calc(100vh - 2rem);color:var(--ink);border-radius:24px;margin:auto;padding:22px 22px 20px;box-shadow:0 30px 80px -30px #0a122273}.ry-contact::backdrop{backdrop-filter:blur(4px);background:#0a12226b}@media (width<=639px){.ry-contact{width:100%;max-width:100%;padding-bottom:calc(20px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;margin:auto 0 0}}.ry-contact-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.ry-contact-kicker{color:var(--brand-ink);font-size:12px;font-weight:600}.ry-contact h2{margin-top:2px;font-size:20px;font-weight:800}.ry-contact-x{width:32px;height:32px;color:var(--muted);border-radius:999px;place-items:center;font-size:20px;line-height:1;display:grid}.ry-contact-x:hover{background:color-mix(in oklab, var(--ink) 6%, transparent);color:var(--ink)}.ry-contact-buy{background:color-mix(in oklab, var(--brand) 8%, transparent);border-radius:12px;margin-top:12px;padding:10px 12px;font-size:13.5px;line-height:1.7}.ry-contact-qrs{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px;display:grid}.ry-contact-qrs figure{text-align:center;margin:0}.ry-contact-qrs img{aspect-ratio:1;object-fit:contain;border:1px solid var(--line);background:#fff;border-radius:14px;width:100%;height:auto;padding:6px}.ry-contact-qrs figcaption{color:var(--muted);margin-top:6px;font-size:12.5px}.ry-contact-note{text-align:center;color:var(--muted);margin-top:10px;font-size:12px}.ry-contact-rows{border-top:1px solid var(--line);margin-top:14px}.ry-contact-rows li{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:10px 0;font-size:14px;display:flex}.ry-contact-rows span{width:4.5rem;color:var(--muted)}.ry-contact-rows strong{font-family:var(--font-mono,ui-monospace, monospace);flex:1}.ry-contact-act{border:1px solid var(--line);color:var(--ink);border-radius:999px;padding:4px 12px;font-size:12.5px}.ry-contact-act:hover{border-color:var(--brand);color:var(--brand-ink)}:where(.prose-content,.vp-doc) .vp-callout{border-left:4px solid var(--brand);background:var(--color-brand-soft);border-radius:.5rem;padding:.75rem 1rem}:where(.prose-content,.vp-doc) .vp-callout>*+*{margin-top:.6em}:where(.prose-content,.vp-doc) .vp-callout-title{font-weight:600}:where(.prose-content,.vp-doc) .vp-callout-warning{border-color:var(--accent);background:var(--color-accent-soft)}:where(.prose-content,.vp-doc) .vp-callout-danger{border-color:var(--danger);background:var(--color-danger-soft)}:where(.prose-content,.vp-doc) .vp-callout-info{border-color:var(--line-strong,var(--line));background:var(--surface)}:where(.prose-content,.vp-doc) details.vp-callout-details>summary{cursor:pointer;font-weight:600}:where(.prose-content,.vp-doc) svg.iconify{vertical-align:-.14em;display:inline-block}:where(.prose-content,.vp-doc) .imark{width:1.1em;height:1.1em}:where(.prose-content,.vp-doc) .imark-ok{color:#18794e}:where(.prose-content,.vp-doc) .imark-no{color:#b8272c}:where(.prose-content,.vp-doc) .imark-warn{color:#915930}:where(.prose-content,.vp-doc) .imark-ask{color:var(--brand)}:root.dark :where(.prose-content,.vp-doc) .imark-ok{color:#3dd68c}:root.dark :where(.prose-content,.vp-doc) .imark-no{color:#f66f81}:root.dark :where(.prose-content,.vp-doc) .imark-warn{color:#f9b44e}:where(.prose-content,.vp-doc) :where(pre,code){font-variant-ligatures:none}.code-line-numbers pre.astro-code>code{counter-reset:line;display:grid}.code-line-numbers pre.astro-code>code>.line:before{counter-increment:line;content:counter(line);text-align:right;width:2.25rem;color:var(--muted);opacity:.6;user-select:none;margin-right:1rem;display:inline-block}.vp-doc{color:color-mix(in oklab, var(--ink) 86%, var(--canvas));font-size:15.5px;line-height:1.85}.vp-doc>*+*{margin-top:1em}.vp-doc h1{letter-spacing:-.02em;color:var(--ink);font-size:clamp(1.75rem,1.2rem + 1.6vw,2.2rem);font-weight:900;line-height:1.2}.vp-doc h2{letter-spacing:-.01em;color:var(--ink);margin-top:3.25rem;scroll-margin-top:5rem;font-size:1.45rem;font-weight:800}.vp-doc h3{color:var(--ink);margin-top:2.1rem;scroll-margin-top:5rem;font-size:1.15rem;font-weight:700}.vp-doc h4{color:var(--ink);margin-top:1.5rem;scroll-margin-top:5rem;font-weight:600}.vp-doc.h2-num{counter-reset:ry-h2}.vp-doc.h2-num h2{align-items:center;gap:10px;display:flex}.vp-doc.h2-num h2:before{counter-increment:ry-h2;content:counter(ry-h2, decimal-leading-zero);font-family:var(--font-mono);color:var(--brand-ink);background:var(--color-brand-soft);border-radius:6px;flex:none;padding:1px 7px;font-size:12px;font-weight:500;line-height:1.6}.vp-doc strong{color:var(--ink)}.vp-doc a{color:var(--brand-ink);text-decoration:underline;text-decoration-color:color-mix(in oklab, var(--brand-ink) 30%, transparent);text-underline-offset:3px}.vp-doc a:hover{text-decoration-color:currentColor}.vp-doc :not(pre)>code{background:color-mix(in oklab, var(--brand) 9%, var(--elevated));color:color-mix(in oklab, var(--brand-ink) 85%, var(--ink));border:1px solid color-mix(in oklab, var(--brand) 16%, transparent);overflow-wrap:anywhere;border-radius:6px;padding:1px 6px;font-size:.86em}.vp-doc hr{background:var(--line);border:0;height:1px;margin:2.5rem 0}.vp-doc blockquote{border:1px solid var(--line);background:var(--elevated);color:var(--muted);border-radius:14px;padding:12px 18px}.vp-doc img{border-radius:14px}.vp-doc .tbl{border:1px solid var(--line);background:var(--elevated);border-radius:16px;overflow-x:auto;box-shadow:0 1px 2px #0b0d1408}.vp-doc .tbl table{border-collapse:collapse;width:100%;font-size:14px;line-height:1.6}.vp-doc .tbl th,.vp-doc .tbl td{border:0;border-top:1px solid var(--line);text-align:left;vertical-align:top;padding:11px 16px}.vp-doc .tbl th{background:color-mix(in oklab, var(--surface) 55%, var(--elevated));color:var(--ink);white-space:nowrap;border-top:0;font-weight:600}.vp-doc .tbl tbody tr:hover td{background:color-mix(in oklab, var(--brand) 3%, var(--elevated))}.vp-doc .tbl [align=center]{text-align:center}.vp-doc .tbl [align=right]{text-align:right}.vp-doc .vp-callout{border:1px solid color-mix(in oklab, var(--brand) 22%, transparent);background:color-mix(in oklab, var(--brand) 6%, var(--elevated));border-left-width:1px;border-radius:16px;padding:14px 18px;font-size:.95rem}.vp-doc .vp-callout-title{color:var(--ink);align-items:center;gap:10px;font-weight:700;display:flex}.vp-doc .vp-callout-title>svg.iconify{box-sizing:content-box;background:var(--brand);color:#fff;border-radius:9px;width:16px;height:16px;padding:6px}.vp-doc .vp-callout-warning{border-color:color-mix(in oklab, var(--accent) 28%, transparent);background:color-mix(in oklab, var(--accent) 7%, var(--elevated))}.vp-doc .vp-callout-warning .vp-callout-title>svg.iconify{background:#f59e0b}.vp-doc .vp-callout-danger{border-color:color-mix(in oklab, var(--danger) 25%, transparent);background:color-mix(in oklab, var(--danger) 6%, var(--elevated))}.vp-doc .vp-callout-danger .vp-callout-title>svg.iconify{background:#ef4444}.vp-doc .vp-callout-info,.vp-doc .vp-callout-details{border-color:var(--line);background:var(--elevated)}.vp-doc .vp-callout-info .vp-callout-title>svg.iconify{background:var(--ink);color:var(--canvas)}.vp-doc details.vp-callout-details>summary{color:var(--ink);font-weight:700}.vp-doc .idot{vertical-align:-.1em;width:.85em;height:.85em}.vp-doc .idot :where(path,circle){fill:currentColor;stroke:currentColor}.vp-doc .idot-red{color:#e5484d}.vp-doc .idot-yellow{color:#f5a623}.vp-doc .idot-green{color:#30a46c}.vp-doc .idot-orange{color:#f76808}.vp-doc .idot-blue{color:#3b82f6}.vp-doc .idot-purple{color:#8e4ec6}.code-line-numbers .vp-doc pre.astro-code>code>.line:before{width:2.75rem;padding-right:.75rem}.ry-sidebar a[aria-current=page]{background:var(--ink);color:var(--canvas);font-weight:600;box-shadow:0 8px 18px -10px #0b0d148c}
