:root{--accent:#6366f1;--accent-alt:#22d3ee}:root{color-scheme:light dark;--bg-solid:#f4f5fb;--surface:rgba(255, 255, 255, 0.7);--surface-hover:rgba(255, 255, 255, 0.92);--surface-occluding:rgba(255, 255, 255, 0.7);--surface-occluding-hover:rgba(255, 255, 255, 0.92);--surface-badge:#ffffff;--surface-solid:#fbfcfe;--border:rgba(15, 23, 42, 0.08);--border-strong:rgba(15, 23, 42, 0.14);--line:#767b89;--text:#0d1220;--muted:#5b6478;--accent-ink:color-mix(in srgb, var(--accent) 70%, var(--text));--accent-ink-occluding:color-mix(in srgb, var(--accent) 70%, var(--text));--rim:0 0 0 0 transparent;--shadow-sm:0 1px 2px rgba(15, 23, 42, 0.04), 0 4px 16px rgba(15, 23, 42, 0.05);--shadow-lg:0 2px 4px rgba(15, 23, 42, 0.04), 0 18px 40px rgba(15, 23, 42, 0.1);--blob-opacity:0.4;--grain-opacity:0.035;--brand:var(--accent);--accent-line:color-mix(in oklab, var(--accent) 42%, var(--line));--radius-sm:12px;--radius:18px;--radius-lg:24px;--radius-pill:999px;--shell:34rem;--glass:blur(16px) saturate(160%);--ease:cubic-bezier(0.22, 1, 0.36, 1);--step-micro:0.575rem;--step-xs:0.68rem;--step-sm:0.79rem;--step-md:0.95rem;--step-lg:1.15rem;--step-title:clamp(1.45rem, 4.6vw, 1.85rem);--space-1:0.25rem;--space-2:0.375rem;--space-3:0.55rem;--space-4:0.8rem;--space-5:1.15rem;--space-6:1.6rem;--space-7:2.3rem}:root[data-theme=light]{color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg-solid:#05060c;--surface:rgba(255, 255, 255, 0.045);--surface-hover:rgba(255, 255, 255, 0.08);--surface-occluding:rgba(17, 18, 24, 0.82);--surface-occluding-hover:rgba(24, 26, 34, 0.82);--surface-badge:#111218;--surface-solid:#0f1016;--border:rgba(255, 255, 255, 0.08);--border-strong:rgba(255, 255, 255, 0.16);--line:#727680;--text:#e9ebf4;--muted:#8d95aa;--accent-ink:color-mix(in srgb, var(--accent) 38%, #fff);--accent-ink-occluding:color-mix(in srgb, var(--accent) 70%, var(--text));--rim:inset 0 1px 0 rgba(255, 255, 255, 0.06);--shadow-sm:0 1px 2px rgba(0, 0, 0, 0.4);--shadow-lg:0 2px 6px rgba(0, 0, 0, 0.4), 0 22px 50px rgba(0, 0, 0, 0.5);--blob-opacity:0.4;--grain-opacity:0.05}}:root[data-theme=dark]{color-scheme:dark;--bg-solid:#05060c;--surface:rgba(255, 255, 255, 0.045);--surface-hover:rgba(255, 255, 255, 0.08);--surface-occluding:rgba(17, 18, 24, 0.82);--surface-occluding-hover:rgba(24, 26, 34, 0.82);--surface-badge:#111218;--surface-solid:#0f1016;--border:rgba(255, 255, 255, 0.08);--border-strong:rgba(255, 255, 255, 0.16);--line:#727680;--text:#e9ebf4;--muted:#8d95aa;--accent-ink:color-mix(in srgb, var(--accent) 38%, #fff);--accent-ink-occluding:color-mix(in srgb, var(--accent) 70%, var(--text));--rim:inset 0 1px 0 rgba(255, 255, 255, 0.06);--shadow-sm:0 1px 2px rgba(0, 0, 0, 0.4);--shadow-lg:0 2px 6px rgba(0, 0, 0, 0.4), 0 22px 50px rgba(0, 0, 0, 0.5);--blob-opacity:0.4;--grain-opacity:0.05}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scrollbar-gutter:stable}body{margin:0;min-height:100svh;display:flex;flex-direction:column;background:var(--bg-solid);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,segoe ui,Roboto,helvetica neue,Arial,sans-serif;font-size:16px;line-height:1.65;letter-spacing:.01em;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:background-color .35s var(--ease),color .35s var(--ease)}a{color:inherit;text-decoration:none}p{margin:0}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--radius-sm)}.skip{position:fixed;top:.6rem;left:.6rem;z-index:30;padding:.5rem .9rem;border-radius:var(--radius-sm);background:var(--surface-solid);border:1px solid var(--border-strong);box-shadow:var(--shadow-lg);color:var(--text);font-size:.82rem;transform:translateY(-200%);transition:transform .2s var(--ease)}.skip:focus-visible{transform:none}.profile,.card,.link,.support__extra,.theme-toggle,.toast{background:var(--surface)}.profile,.card,.link,.support__extra,.theme-toggle,.toast{border:1px solid var(--border)}.profile,.card,.link,.sponsor,.support__extra,.theme-toggle{box-shadow:var(--shadow-sm)}.shell--archive .card,.shell--archive .link-shell,.shell--archive .link{box-shadow:var(--rim),var(--shadow-sm)}.theme-toggle,.toast{backdrop-filter:var(--glass);-webkit-backdrop-filter:var(--glass)}.aurora{position:fixed;inset:0;z-index:-2;overflow:hidden;pointer-events:none;animation:neon 38s ease-in-out infinite alternate}@keyframes neon{0%{filter:hue-rotate(-52deg)saturate(1.05)}50%{filter:hue-rotate(14deg)saturate(1.45)}100%{filter:hue-rotate(78deg)saturate(1.2)}}.aurora__blob{position:absolute;border-radius:50%;filter:blur(72px);opacity:var(--blob-opacity);transition:opacity .5s var(--ease);will-change:transform}.aurora__blob--1{width:46vmax;height:46vmax;top:-16vmax;left:-12vmax;background:radial-gradient(circle at 30% 30%,var(--accent),transparent 68%);animation:drift-a 34s ease-in-out infinite,glow 9s ease-in-out infinite alternate;--glow-to:0.6}.aurora__blob--2{width:40vmax;height:40vmax;top:24vmax;right:-16vmax;background:radial-gradient(circle at 60% 40%,var(--accent-alt),transparent 68%);animation:drift-b 41s ease-in-out infinite,glow 13s ease-in-out infinite alternate;--glow-to:1.4}.aurora__blob--3{width:34vmax;height:34vmax;bottom:-14vmax;left:22vmax;background:radial-gradient(circle at 50% 50%,#f472b6,transparent 68%);animation:drift-c 47s ease-in-out infinite,glow 17s ease-in-out infinite alternate;--glow-to:0.65}@keyframes drift-a{0%,100%{transform:translate3d(0,0,0)scale(1)}25%{transform:translate3d(26vmax,6vmax,0)scale(1.14)}50%{transform:translate3d(32vmax,26vmax,0)scale(.92)}75%{transform:translate3d(8vmax,20vmax,0)scale(1.08)}}@keyframes drift-b{0%,100%{transform:translate3d(0,0,0)scale(1)}25%{transform:translate3d(-12vmax,18vmax,0)scale(1.18)}50%{transform:translate3d(-30vmax,2vmax,0)scale(.94)}75%{transform:translate3d(-14vmax,-16vmax,0)scale(1.1)}}@keyframes drift-c{0%,100%{transform:translate3d(0,0,0)scale(1)}25%{transform:translate3d(18vmax,-14vmax,0)scale(1.22)}50%{transform:translate3d(-4vmax,-28vmax,0)scale(.96)}75%{transform:translate3d(-22vmax,-10vmax,0)scale(1.12)}}@keyframes glow{to{opacity:calc(var(--blob-opacity) * var(--glow-to))}}.grain{position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:var(--grain-opacity);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.shell{width:min(100% - 2.25rem,var(--shell));margin-inline:auto;padding-block:clamp(3rem,9vh,5.5rem)3rem;display:flex;flex-direction:column;gap:.7rem}.shell--wide{--shell:54rem}.shell--read{--shell:44rem}.shell--prose{--shell:38rem}.shell--archive{--surface:var(--surface-occluding);--surface-hover:var(--surface-occluding-hover);--accent-ink:var(--accent-ink-occluding);gap:var(--space-5)}.crumbs{display:flex;align-items:center;justify-content:space-between;gap:.7rem;padding:.35rem .7rem;border-radius:var(--radius);background:var(--surface)}.crumbs__list{display:flex;flex-wrap:wrap;align-items:center;gap:.15rem;margin:0;padding:0;list-style:none}.crumbs__item,.site-nav__link{font-size:.575rem;font-weight:650;letter-spacing:.09em;text-transform:uppercase}.crumbs__item{display:flex;align-items:center;gap:.15rem;color:var(--text)}.crumbs__item a,.site-nav__link{text-decoration-color:transparent;text-underline-offset:3px;transition:text-decoration-color .25s var(--ease)}.crumbs__item a:hover,.site-nav__link:hover{text-decoration:underline;text-decoration-color:initial}.crumbs__sep{flex:none;width:11px;height:11px;color:var(--muted)}.site-nav{display:flex;align-items:center;gap:.7rem}.site-nav__link{color:var(--muted);transition:color .25s var(--ease),text-decoration-color .25s var(--ease)}.site-nav__link:hover,.site-nav__link[aria-current]{color:var(--text)}.profile{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.35rem;margin-bottom:1.1rem;padding:2rem 1.6rem 0;border-radius:var(--radius-lg);overflow:hidden}.avatar{position:relative;width:112px;height:112px;margin-bottom:1.1rem;border-radius:50%;display:grid;place-items:center;background:linear-gradient(var(--surface),var(--surface))var(--bg-solid);z-index:0;box-shadow:var(--shadow-lg)}.avatar::before{content:'';position:absolute;inset:-3px;border-radius:50%;background:conic-gradient(from 180deg,var(--accent),var(--accent-alt),#f472b6,var(--accent));z-index:-1;animation:spin 9s linear infinite}.avatar::after{content:'';position:absolute;inset:-3px;border-radius:50%;filter:blur(14px);opacity:.5;z-index:-2;background:conic-gradient(from 180deg,var(--accent),var(--accent-alt),#f472b6,var(--accent))}@keyframes spin{to{transform:rotate(1turn)}}.avatar__img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block;border:4px solid var(--bg-solid)}.avatar__initials{font-size:2.1rem;font-weight:650;letter-spacing:.02em;background:linear-gradient(135deg,var(--accent),var(--accent-alt));-webkit-background-clip:text;background-clip:text;color:transparent}.profile__name{margin:0;font-size:clamp(1.6rem,5.5vw,2rem);font-weight:680;letter-spacing:-.02em;line-height:1.25}.profile__meta{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:.45rem;font-size:.9rem;color:var(--muted)}.profile__handle{color:var(--accent);font-weight:560}.profile__dot{opacity:.5}.roles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-self:stretch;margin:1.7rem -1.6rem 0;padding:0;list-style:none;border-top:1px solid var(--border)}.role,.link__badge,.badge,.chip,.tag{font-size:var(--step-micro);font-weight:650;letter-spacing:.08em;text-transform:uppercase;line-height:1;white-space:nowrap}.role{display:grid;place-items:center;padding:.62rem .5rem;color:var(--accent-ink);text-align:center;border-top:1px solid var(--border);border-left:1px solid var(--border);white-space:normal;line-height:1.3}.role:nth-child(-n+3){border-top:0}.role:nth-child(3n+1){border-left:0}.profile__bio{margin-top:.6rem;max-width:30rem;font-size:.95rem;color:var(--muted);text-wrap:pretty}.profile__bio p{margin:0}.profile__bio a{color:var(--text);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 55%,transparent);text-decoration-thickness:1px;text-underline-offset:3px;transition:color .25s var(--ease),text-decoration-color .25s var(--ease)}.profile__bio a:hover{color:var(--accent);text-decoration-color:var(--accent)}.sites{display:grid;align-self:stretch;width:auto;margin:1.15rem -1.6rem 0;border-top:1px solid var(--border)}.sites+.roles{margin-top:-.35rem}.site{position:relative;isolation:isolate;display:grid;grid-template-columns:auto minmax(0,1fr)auto;align-items:center;column-gap:.7rem;padding:.62rem 1.6rem;text-align:left;transition:background-color .3s var(--ease)}.site+.site{border-top:1px solid var(--border)}.site::before{content:'';position:absolute;inset:0 auto 0 0;width:2px;background:var(--brand);opacity:.45;transition:opacity .3s var(--ease)}.site::after{content:'';position:absolute;inset:0;z-index:-1;opacity:.55;background:linear-gradient( 100deg,color-mix(in srgb,var(--brand) 11%,transparent),transparent 52% );transition:opacity .35s var(--ease)}.site:hover,.site:focus-visible,.site:active{background-color:var(--surface-hover)}.site:hover::before,.site:focus-visible::before,.site:hover::after,.site:focus-visible::after{opacity:1}.site:focus-visible{outline-offset:-4px;border-radius:0}.site__icon{display:grid;place-items:center;width:30px;height:30px;border-radius:10px;color:var(--brand);background:color-mix(in srgb,var(--brand) 13%,var(--surface-badge));transition:transform .35s var(--ease),background-color .3s var(--ease)}.site:hover .site__icon,.site:focus-visible .site__icon{transform:scale(1.06)rotate(-3deg);background:color-mix(in srgb,var(--brand) 20%,var(--surface-badge))}.site__icon .icon{width:16px;height:16px}.site__body{display:flex;flex-direction:column;min-width:0}.site__head{display:flex;align-items:baseline;gap:.45rem;min-width:0}.site__title{font-size:.9rem;font-weight:620;letter-spacing:-.005em;line-height:1.3;text-decoration:underline;text-decoration-color:transparent;text-decoration-thickness:1px;text-underline-offset:3px;transition:text-decoration-color .3s var(--ease)}.site:hover .site__title,.site:focus-visible .site__title{text-decoration-color:color-mix(in srgb,var(--brand) 60%,transparent)}.site__badge{font-size:.575rem;font-weight:650;letter-spacing:.09em;text-transform:uppercase;line-height:1;white-space:nowrap;color:color-mix(in srgb,var(--brand) 70%,var(--text))}.site__subtitle{font-size:.68rem;color:var(--muted);line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.site__arrow{width:13px;height:13px;color:var(--muted);opacity:.45;transition:transform .3s var(--ease),opacity .3s var(--ease),color .3s var(--ease)}.site:hover .site__arrow,.site:focus-visible .site__arrow{opacity:1;transform:translate(1px,-1px);color:var(--brand)}@media(max-width:30rem){.site{column-gap:.62rem}.site__icon{width:28px;height:28px;border-radius:9px}}.profile__location{display:inline-flex;align-items:center;gap:.26rem}.profile__location svg{width:14px;height:14px;opacity:.8}.group{display:flex;flex-direction:column;gap:.7rem}.group__label{display:flex;align-items:center;gap:.7rem;margin:1.15rem 0 0;font-size:var(--step-micro);font-weight:650;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}.group:first-of-type .group__label{margin-top:.15rem}.group__label::after{content:'';flex:1;height:1px;background:var(--border)}.links{display:flex;flex-direction:column;gap:.7rem}.link-shell{position:relative}.link{position:relative;display:flex;align-items:center;gap:.9rem;padding:.85rem 1rem;border-radius:var(--radius);overflow:hidden;isolation:isolate;transition:transform .3s var(--ease),box-shadow .3s var(--ease),border-color .3s var(--ease),background-color .3s var(--ease)}.link::before{content:'';position:absolute;inset:0;z-index:-1;opacity:0;background:linear-gradient( 100deg,color-mix(in srgb,var(--brand) 16%,transparent),transparent 62% );transition:opacity .35s var(--ease)}.link::after{content:'';position:absolute;inset:0;z-index:-1;opacity:0;background:radial-gradient( 16rem circle at var(--mx,50%) var(--my,50%),color-mix(in srgb,var(--brand) 22%,transparent),transparent 70% );transition:opacity .35s var(--ease)}.link:hover::after{opacity:1}.link:hover,.link:focus-visible{transform:translateY(-2px);border-color:color-mix(in srgb,var(--brand) 35%,var(--border-strong));background:var(--surface-hover);box-shadow:var(--shadow-lg),0 10px 30px color-mix(in srgb,var(--brand) 22%,transparent)}.link:hover::before,.link:focus-visible::before{opacity:1}.link:active{transform:translateY(0)scale(.995)}.link__icon{flex:none;width:42px;height:42px;display:grid;place-items:center;border-radius:13px;color:var(--brand);background:color-mix(in srgb,var(--brand) 13%,var(--surface-badge));transition:transform .35s var(--ease),background-color .3s var(--ease)}.link:hover .link__icon{transform:scale(1.06)rotate(-3deg);background:color-mix(in srgb,var(--brand) 20%,var(--surface-badge))}.icon{width:21px;height:21px;display:block}.icon--monogram{display:grid;place-items:center;font-size:.62rem;font-weight:700;line-height:1;letter-spacing:.02em;color:var(--brand)}.link__body,.sponsor__body{display:flex;flex-direction:column;min-width:0;gap:.05rem}.link__title,.sponsor__title{font-weight:580;font-size:.98rem;letter-spacing:-.005em}.link__badge{display:inline-flex;align-items:center;border-radius:999px;margin-left:.45rem;padding:.2rem .5rem;background:color-mix(in srgb,var(--brand) 13%,var(--surface-badge));color:var(--brand);vertical-align:2px;transition:color .3s var(--ease),background-color .3s var(--ease)}.link:hover .link__badge{background:color-mix(in srgb,var(--brand) 20%,var(--surface-badge))}.link__subtitle,.sponsor__subtitle{font-size:.79rem;color:var(--muted);line-height:1.45;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link__arrow,.sponsor__arrow{width:17px;height:17px;margin-left:auto;flex:none;transition:transform .3s var(--ease),opacity .3s var(--ease),color .3s var(--ease)}.link__arrow{color:var(--muted);opacity:.5}.link:hover .link__arrow{opacity:1;transform:translate(2px,-2px);color:var(--brand)}.support{display:flex;align-items:stretch;gap:.55rem}.sponsor{position:relative;flex:1;min-width:0;display:flex;align-items:center;gap:.9rem;padding:.85rem 1rem;border:1px solid transparent;border-radius:var(--radius);background:linear-gradient(var(--surface-solid),var(--surface-solid))padding-box,linear-gradient(100deg,var(--brand),#a855f7 55%,var(--accent-alt))border-box;isolation:isolate;transition:transform .3s var(--ease),box-shadow .3s var(--ease)}.sponsor::after{content:'';position:absolute;inset:0;border-radius:inherit;z-index:-1;opacity:.5;background:radial-gradient( 16rem circle at var(--mx,50%) var(--my,50%),color-mix(in srgb,var(--brand) 20%,transparent),transparent 70% ),linear-gradient( 100deg,color-mix(in srgb,var(--brand) 14%,transparent),transparent 60% );transition:opacity .35s var(--ease)}.sponsor:hover,.sponsor:focus-visible{transform:translateY(-2px);box-shadow:var(--shadow-lg),0 12px 34px color-mix(in srgb,var(--brand) 26%,transparent)}.sponsor:hover::after,.sponsor:focus-visible::after{opacity:1}.sponsor:active{transform:translateY(0)scale(.995)}.sponsor__icon{flex:none;width:42px;height:42px;display:grid;place-items:center;border-radius:13px;color:var(--brand);background:color-mix(in srgb,var(--brand) 13%,var(--surface-badge))}.sponsor:hover .sponsor__icon{animation:beat 1s var(--ease)infinite}@keyframes beat{0%,55%,100%{transform:scale(1)}20%{transform:scale(1.16)}38%{transform:scale(1.04)}}.sponsor__title{font-weight:600}.sponsor__arrow{color:var(--brand);opacity:.6}.sponsor:hover .sponsor__arrow{opacity:1;transform:translate(2px,-2px)}.support__extra{flex:none;width:56px;display:grid;place-items:center;border-radius:var(--radius);color:var(--muted);transition:transform .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease),box-shadow .3s var(--ease)}.support__extra:hover,.support__extra:focus-visible{transform:translateY(-2px);color:var(--brand);border-color:color-mix(in srgb,var(--brand) 40%,var(--border-strong));box-shadow:var(--shadow-lg),0 10px 26px color-mix(in srgb,var(--brand) 22%,transparent)}.support__extra:active{transform:translateY(0)scale(.97)}.link--has-copy{padding-right:3.4rem}.link__copy{position:absolute;right:.7rem;top:50%;translate:0 -50%;z-index:2;display:grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid transparent;border-radius:10px;background:0 0;color:var(--muted);cursor:pointer;transition:color .25s var(--ease),border-color .25s var(--ease),background-color .25s var(--ease),transform .2s var(--ease)}.link__copy svg{width:16px;height:16px}.link__copy:hover{color:var(--brand);border-color:var(--border-strong);background:var(--surface-hover)}.link__copy:active{transform:translate(0,-50%)scale(.9)}.link__copy.is-copied{color:#10b981;border-color:color-mix(in srgb,#10b981 40%,transparent)}.card{border-radius:var(--radius-lg);overflow:hidden}.shell--archive .site{grid-template-columns:minmax(0,1fr)auto}.shell--archive .site__head{flex-wrap:wrap}.work-row .site__subtitle{white-space:normal;overflow:visible;text-overflow:clip}.record{display:flex;flex-direction:column;gap:var(--space-5)}.shell--archive .site__title{text-wrap:pretty;font-size:var(--step-md)}.site--claim .site__title{font-weight:430;letter-spacing:0}.page-head{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-6)var(--space-6)var(--space-5)}.page-head__title{margin:0;font-size:var(--step-title);font-weight:680;letter-spacing:-.02em;line-height:1.25;text-wrap:balance}.page-head__lede{font-size:var(--step-lg);color:var(--muted);line-height:1.45;text-wrap:pretty}.page-head__text{font-size:var(--step-md);color:var(--text);text-wrap:pretty}.page-head__badges{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)var(--space-4);margin-top:var(--space-1)}.page-head__axes{margin-top:var(--space-1);font-size:var(--step-sm);line-height:1.7;color:var(--muted)}.page-head__axes a{color:var(--text);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 55%,transparent);text-decoration-thickness:1px;text-underline-offset:3px;transition:text-decoration-color .25s var(--ease)}.page-head__axes a:hover{text-decoration-color:initial}.page-head__axes .chip__count{margin-left:.3em}.rail{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-4);margin:0;padding:var(--space-5)var(--space-6)var(--space-2);font-size:var(--step-lg);font-weight:640;letter-spacing:-.01em;line-height:1.3;color:var(--text);scroll-margin-top:var(--space-6)}.rail a{text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 80%,transparent);text-decoration-thickness:1.5px;text-underline-offset:4px;transition:text-decoration-color .25s var(--ease)}.rail a:hover{text-decoration-color:initial}.rail::after{content:'';order:1;flex:1;height:1px;margin-bottom:-1px;background:var(--border-strong)}.rail__meta{order:2;font-size:var(--step-micro);font-weight:650;letter-spacing:.09em;text-transform:uppercase;line-height:1;white-space:nowrap;color:var(--muted)}.card__body{padding:var(--space-1)var(--space-6)var(--space-4)}.note{padding:var(--space-1)var(--space-6)var(--space-4);font-size:var(--step-md);color:var(--text);text-wrap:pretty}.badge{display:inline-flex;align-items:center;gap:.3rem;white-space:normal;color:var(--muted)}.chip{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1)var(--space-3);border-radius:var(--radius-pill);border:1px solid var(--line);background-color:var(--surface-solid);color:var(--text);transition:border-color .25s var(--ease),color .25s var(--ease),background-color .25s var(--ease)}.chip,.tag{min-height:calc(13px + 2 * var(--space-1) + 2px)}.chip:hover{border-color:var(--accent-line)}.chip--top,.tag--top{font-size:var(--step-xs)}.chip[aria-pressed=true]{border-color:var(--accent);color:var(--accent-ink);background-image:linear-gradient( color-mix(in srgb,var(--accent) 16%,transparent),color-mix(in srgb,var(--accent) 16%,transparent) )}.chip__count{color:color-mix(in srgb,var(--muted) 70%,var(--text));font-variant-numeric:tabular-nums}.chip__arrow{flex:none;width:11px;height:11px;opacity:.6}.chips{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin:0;padding:0;list-style:none}.tag{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1)var(--space-3);border-radius:var(--radius-pill);border:1px solid transparent;background-color:transparent;background-image:linear-gradient( color-mix(in srgb,var(--brand) 13%,transparent),color-mix(in srgb,var(--brand) 13%,transparent) );color:var(--text);transition:border-color .25s var(--ease),color .3s var(--ease),background-color .3s var(--ease)}.tag>.icon{color:var(--brand)}a.tag{border-color:var(--line);background-color:var(--surface-solid)}a.tag:hover{border-color:var(--accent-line)}.meta,.meta__value{margin:0}.meta__row{position:relative;display:grid;grid-template-columns:8.5rem minmax(0,1fr);align-items:baseline;column-gap:var(--space-4);padding:var(--space-3)var(--space-6)}.meta__row+.meta__row{border-top:1px solid var(--border)}.meta__key{font-size:var(--step-micro);font-weight:650;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}.meta__value{font-size:var(--step-md);color:var(--text);overflow-wrap:anywhere}.meta__value a{text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 55%,transparent);text-decoration-thickness:1px;text-underline-offset:3px}.meta__row--copy{padding-right:3.4rem}.linkbuttons{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:var(--space-3);padding:var(--space-1)var(--space-6)var(--space-4)}.link--sm{padding:var(--space-3)var(--space-4);gap:var(--space-3)}.link--sm .link__title{font-size:var(--step-md);overflow-wrap:anywhere;max-inline-size:100%}.link--sm .link__subtitle{font-size:var(--step-xs);white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}.link--sm .link__arrow{width:15px;height:15px}.prevnext{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.prevnext .link{padding:var(--space-4);gap:var(--space-3)}.prevnext .link__body{flex:auto}.prevnext__label{display:block;font-size:var(--step-micro);font-weight:650;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}.prevnext__title{font-size:var(--step-md);font-weight:580;letter-spacing:-.005em;overflow-wrap:anywhere}.prevnext--next{text-align:right}.prevnext__arrow{flex:none;width:17px;height:17px;color:var(--muted);opacity:.5;transition:transform .3s var(--ease),opacity .3s var(--ease),color .3s var(--ease)}.link:hover .prevnext__arrow{opacity:1;color:var(--brand)}.prevnext--prev .link:hover .prevnext__arrow{transform:translateX(-2px)}.prevnext--next .link:hover .prevnext__arrow{transform:translateX(2px)}.icon--sm{width:13px;height:13px}.icon--sm.icon--monogram{font-size:.48rem}.copy{font-size:var(--step-md);color:var(--text);text-wrap:pretty}.copy>*{margin:0}.copy>*+*{margin-top:var(--space-5)}.copy h2,.copy h3{font-size:var(--step-lg);font-weight:640;letter-spacing:-.01em;line-height:1.3;margin-top:var(--space-7);scroll-margin-top:var(--space-6)}.copy h2+*,.copy h3+*{margin-top:var(--space-4)}.copy>:first-child{margin-top:0}.copy code{font-family:ui-monospace,SFMono-Regular,sf mono,Menlo,Consolas,liberation mono,monospace;font-size:.92em;overflow-wrap:anywhere}.copy ul,.copy ol{padding-left:var(--space-5)}.copy li+li{margin-top:var(--space-2)}.contents{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin:0;padding:0;list-style:none;counter-reset:contents}.contents .chip{counter-increment:contents;white-space:normal;text-align:left}.contents .chip::before{content:counter(contents);color:var(--muted);font-variant-numeric:tabular-nums}.copy a{text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 55%,transparent);text-decoration-thickness:1px;text-underline-offset:3px;overflow-wrap:anywhere}.copy a:hover{text-decoration-color:initial}body:has(.shell--read) .aurora,body:has(.shell--read) .aurora__blob,body:has(.shell--prose) .aurora,body:has(.shell--prose) .aurora__blob{animation:none}.footer{margin-top:auto;padding:2rem 1.1rem 1.2rem;background:linear-gradient( to bottom,transparent 0,var(--surface-occluding) 1.5rem,var(--surface-occluding) 100% );opacity:1;text-align:center;font-size:.76rem;color:var(--muted)}.footer__links{display:flex;flex-wrap:wrap;justify-content:center;gap:.8rem;margin-top:.1rem;font-size:.575rem;font-weight:650;letter-spacing:.09em;text-transform:uppercase;color:var(--text)}.footer__links a{text-decoration-color:transparent;text-underline-offset:3px;transition:text-decoration-color .25s var(--ease)}.footer__links a:hover{text-decoration:underline;text-decoration-color:initial}.theme-toggle{position:fixed;top:max(1rem,env(safe-area-inset-top));right:max(1rem,env(safe-area-inset-right));z-index:10;width:40px;height:40px;display:grid;place-items:center;padding:0;border-radius:12px;color:var(--text);cursor:pointer;transition:color .25s var(--ease),transform .25s var(--ease),border-color .25s var(--ease)}.theme-toggle:hover{color:var(--text);transform:translateY(-1px);border-color:var(--border-strong)}.theme-toggle__icon{grid-area:1/1;width:18px;height:18px;opacity:0;transform:rotate(-70deg)scale(.6);transition:opacity .3s var(--ease),transform .4s var(--ease)}:root:not([data-theme]) .theme-toggle__icon--auto,:root[data-theme=light] .theme-toggle__icon--sun,:root[data-theme=dark] .theme-toggle__icon--moon{opacity:1;transform:none}.toast{--surface:var(--surface-occluding);--surface-hover:var(--surface-occluding-hover);position:fixed;left:50%;bottom:1.5rem;z-index:20;translate:-50% 0;padding:.5rem .95rem;border-radius:999px;background:var(--surface-hover);box-shadow:var(--shadow-lg);font-size:.82rem;opacity:0;transform:translateY(10px);pointer-events:none;transition:opacity .3s var(--ease),transform .3s var(--ease)}.toast.is-visible{opacity:1;transform:translateY(0)}.reveal{opacity:0;transform:translateY(14px);animation:reveal .7s var(--ease)forwards;animation-delay:60ms}.reveal[data-i='1']{animation-delay:125ms}.reveal[data-i='2']{animation-delay:190ms}.reveal[data-i='3']{animation-delay:255ms}.reveal[data-i='4']{animation-delay:320ms}.reveal[data-i='5']{animation-delay:385ms}.reveal[data-i='6']{animation-delay:450ms}.reveal[data-i='7']{animation-delay:515ms}.reveal[data-i='8']{animation-delay:580ms}.reveal[data-i='9']{animation-delay:645ms}.reveal[data-i='10']{animation-delay:710ms}.reveal[data-i='11']{animation-delay:775ms}.reveal[data-i='12']{animation-delay:840ms}.reveal[data-i='13']{animation-delay:905ms}.reveal[data-i='14']{animation-delay:970ms}.reveal[data-i='15']{animation-delay:1035ms}.reveal[data-i='16']{animation-delay:1100ms}.reveal[data-i='17']{animation-delay:1165ms}.reveal[data-i='18']{animation-delay:1230ms}.reveal[data-i='19']{animation-delay:1295ms}.reveal[data-i='20']{animation-delay:1360ms}.reveal[data-i='21']{animation-delay:1425ms}.reveal[data-i='22']{animation-delay:1490ms}.reveal[data-i='23']{animation-delay:1555ms}.reveal[data-i='24']{animation-delay:1620ms}@keyframes reveal{to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}}@media(max-width:30rem){.crumbs{padding-inline-end:3.5rem}.roles{grid-template-columns:repeat(2,minmax(0,1fr))}.role:nth-child(-n+3){border-top:1px solid var(--border)}.role:nth-child(3n+1){border-left:1px solid var(--border)}.role:nth-child(-n+2){border-top:0}.role:nth-child(2n+1){border-left:0}.link,.sponsor{padding:.75rem .85rem;gap:.75rem}.link__icon,.sponsor__icon{width:38px;height:38px;border-radius:12px}.support__extra{width:48px}.page-head,.rail,.card__body,.note,.linkbuttons,.meta__row,.shell--archive .site{padding-inline:var(--space-5)}.meta__row{grid-template-columns:minmax(0,1fr);row-gap:.1rem}.prevnext{grid-template-columns:minmax(0,1fr)}.prevnext--next{text-align:left}}@media(max-height:700px){.profile{padding-top:1.35rem}.avatar{width:88px;height:88px;margin-bottom:.8rem}.avatar__initials{font-size:1.65rem}.profile__bio{margin-top:0}.sites{margin-top:.4rem}}.notfound{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.5rem;padding:3rem 1.6rem 3.4rem;border-radius:var(--radius-lg)}.notfound__code{font-size:3.4rem;font-weight:700;letter-spacing:-.03em;line-height:1;background:linear-gradient(135deg,var(--accent),var(--accent-alt));-webkit-background-clip:text;background-clip:text;color:transparent}.notfound__title{margin:.6rem 0 0;font-size:1.35rem;font-weight:640;letter-spacing:-.02em}.notfound__text{max-width:24rem;font-size:.92rem;color:var(--muted);text-wrap:pretty}.notfound__home{display:inline-flex;align-items:center;gap:.4rem;margin-top:1.4rem;padding:.6rem 1.1rem .6rem .9rem;border:1px solid var(--border);border-radius:999px;background:var(--surface);font-size:.88rem;font-weight:560;transition:transform .3s var(--ease),border-color .3s var(--ease),background-color .3s var(--ease)}.notfound__home:hover{transform:translateY(-2px);border-color:var(--border-strong);background:var(--surface-hover)}.notfound__home svg{width:16px;height:16px;color:var(--accent)}.b-algolia{--brand:light-dark(#003DFF,#2D69FF)}.b-android{--brand:light-dark(#008F4E,#3DDC84)}.b-android-studio{--brand:light-dark(#008F4E,#3DDC84)}.b-atproto-protocol{--brand:light-dark(#007AEF,#1185FE)}.b-aws-api-gateway{--brand:light-dark(#B56B00,#FF9900)}.b-aws-bedrock{--brand:light-dark(#B56B00,#FF9900)}.b-aws-cloudformation{--brand:light-dark(#B56B00,#FF9900)}.b-aws-cloudfront{--brand:light-dark(#B56B00,#FF9900)}.b-aws-codebuild{--brand:light-dark(#B56B00,#FF9900)}.b-aws-codecommit{--brand:light-dark(#B56B00,#FF9900)}.b-aws-codedeploy{--brand:light-dark(#B56B00,#FF9900)}.b-aws-codepipeline{--brand:light-dark(#B56B00,#FF9900)}.b-aws-cognito{--brand:light-dark(#B56B00,#FF9900)}.b-aws-dynamodb{--brand:light-dark(#B56B00,#FF9900)}.b-aws-ec2{--brand:light-dark(#B56B00,#FF9900)}.b-aws-eventbridge{--brand:light-dark(#B56B00,#FF9900)}.b-aws-glue{--brand:light-dark(#B56B00,#FF9900)}.b-aws-lambda{--brand:light-dark(#B56B00,#FF9900)}.b-aws-lightsail{--brand:light-dark(#B56B00,#FF9900)}.b-aws-route53{--brand:light-dark(#B56B00,#FF9900)}.b-aws-s3{--brand:light-dark(#B56B00,#FF9900)}.b-bluesky-api{--brand:light-dark(#007AEF,#1185FE)}.b-bootstrap{--brand:light-dark(#7952B3,#8861C3)}.b-chartjs{--brand:light-dark(#DC4268,#FF6384)}.b-claude-code{--brand:light-dark(#C26243,#D97757)}.b-dart{--brand:light-dark(#0175C2,#0C79C6)}.b-dataspider{--brand:light-dark(#5B5BA8,#6C6EBC)}.b-docker{--brand:light-dark(#0081D4,#2496ED)}.b-docusaurus{--brand:light-dark(#009035,#3ECC5F)}.b-eclipse{--brand:light-dark(#2C2255,#766FA9)}.b-f-revocrm{--brand:light-dark(#2E7D57,#35845D)}.b-flutter{--brand:light-dark(#02569B,#3279C1)}.b-git{--brand:light-dark(#E83326,#F03C2E)}.b-github{--brand:light-dark(#181717,#777575)}.b-github-actions{--brand:light-dark(#057AF0,#2088FF)}.b-hibernate{--brand:light-dark(#59666C,#6A787E)}.b-html-css{--brand:light-dark(#DC481E,#E34F26)}.b-hulft{--brand:light-dark(#1F6F8B,#327E9B)}.b-javascript{--brand:light-dark(#8D7E00,#F7DF1E)}.b-jenkins{--brand:light-dark(#D24939,#D24939)}.b-jira{--brand:light-dark(#0052CC,#2670EC)}.b-kotlin{--brand:light-dark(#7F52FF,#7F52FF)}.b-mongodb{--brand:light-dark(#338F35,#47A248)}.b-nasa-apod{--brand:light-dark(#E03C31,#E03C31)}.b-netlify{--brand:light-dark(#008C81,#00C7B7)}.b-nextjs{--brand:light-dark(#000000,#767676)}.b-nodejs{--brand:light-dark(#4C8C3B,#5FA04E)}.b-power-bi{--brand:light-dark(#A37500,#B8860B)}.b-python{--brand:light-dark(#3776AB,#3C7AB0)}.b-react{--brand:light-dark(#0088A4,#61DAFB)}.b-redmine{--brand:light-dark(#B32024,#CE3D3B)}.b-sap-s4hana{--brand:light-dark(#0083C8,#0FAAFF)}.b-sass{--brand:light-dark(#C05B8E,#CC6699)}.b-spring-boot{--brand:light-dark(#498D0A,#6DB33F)}.b-spring-framework{--brand:light-dark(#498D0A,#6DB33F)}.b-sql{--brand:light-dark(#4C6274,#62798B)}.b-sqlite{--brand:light-dark(#003B57,#497C9B)}.b-tailwind{--brand:light-dark(#0089A1,#06B6D4)}.b-twitter-api-v2{--brand:light-dark(#000000,#767676)}.b-typescript{--brand:light-dark(#3178C6,#3178C6)}.b-vite{--brand:light-dark(#9135FF,#9440FF)}.b-webfocus{--brand:light-dark(#A63D40,#BC5152)}.b-wireshark{--brand:light-dark(#1679A7,#1E7EAC)}.b-wordpress{--brand:light-dark(#21759B,#2C7EA4)}.s-behance{--brand:light-dark(#1769FF,#1769FF)}.s-blog{--brand:light-dark(#C07A00,#F59E0B)}.s-bluesky{--brand:light-dark(#1185FE,#1185FE)}.s-buymeacoffee{--brand:light-dark(#9F8900,#FFDD00)}.s-calendar{--brand:light-dark(#F43F5E,#F43F5E)}.s-dart{--brand:light-dark(#0175C2,#0175C2)}.s-dev{--brand:light-dark(#0A0A0A,#686868)}.s-discord{--brand:light-dark(#5865F2,#5865F2)}.s-docs{--brand:light-dark(#8B5CF6,#8B5CF6)}.s-dribbble{--brand:light-dark(#EA4C89,#EA4C89)}.s-facebook{--brand:light-dark(#0866FF,#0866FF)}.s-figma{--brand:light-dark(#F24E1E,#F24E1E)}.s-github{--brand:light-dark(#181717,#696868)}.s-githubsponsors{--brand:light-dark(#E848A8,#EA4AAA)}.s-gitlab{--brand:light-dark(#E95B02,#FC6D26)}.s-hatenabookmark{--brand:light-dark(#0093C8,#00A4DE)}.s-instagram{--brand:light-dark(#FF0069,#FF0069)}.s-kofi{--brand:light-dark(#EE5420,#FF6433)}.s-line{--brand:light-dark(#009F00,#00C300)}.s-link{--brand:light-dark(#64748B,#64748B)}.s-linkedin{--brand:light-dark(#0A66C2,#0B67C3)}.s-mail{--brand:light-dark(#6366F1,#6366F1)}.s-mastodon{--brand:light-dark(#6364FF,#6364FF)}.s-medium{--brand:light-dark(#000000,#686868)}.s-note{--brand:light-dark(#000000,#686868)}.s-npm{--brand:light-dark(#CB3837,#CB3837)}.s-patreon{--brand:light-dark(#000000,#686868)}.s-pixiv{--brand:light-dark(#008CEB,#0096FA)}.s-portfolio{--brand:light-dark(#009A8B,#14B8A6)}.s-qiita{--brand:light-dark(#429D00,#55C500)}.s-reddit{--brand:light-dark(#FA4400,#FF4500)}.s-rss{--brand:light-dark(#BF7B00,#FFA500)}.s-signal{--brand:light-dark(#3B45FD,#3F4DFF)}.s-soundcloud{--brand:light-dark(#F25000,#FF5500)}.s-speakerdeck{--brand:light-dark(#009287,#009287)}.s-spotify{--brand:light-dark(#009E42,#1ED760)}.s-stackoverflow{--brand:light-dark(#D96A00,#F58025)}.s-steam{--brand:light-dark(#000000,#686868)}.s-substack{--brand:light-dark(#EB5900,#FF6719)}.s-telegram{--brand:light-dark(#0092CE,#26A5E4)}.s-threads{--brand:light-dark(#000000,#686868)}.s-twitch{--brand:light-dark(#9146FF,#9146FF)}.s-wantedly{--brand:light-dark(#0096B0,#21BDDB)}.s-website{--brand:light-dark(#0091CF,#0EA5E9)}.s-x{--brand:light-dark(#000000,#686868)}.s-youtube{--brand:light-dark(#FF0000,#FF0000)}.s-zenn{--brand:light-dark(#1A8EE3,#3EA8FF)}@supports not (color:light-dark(#000,#fff)){.b-algolia,.b-android,.b-android-studio,.b-atproto-protocol,.b-aws-api-gateway,.b-aws-bedrock,.b-aws-cloudformation,.b-aws-cloudfront,.b-aws-codebuild,.b-aws-codecommit,.b-aws-codedeploy,.b-aws-codepipeline,.b-aws-cognito,.b-aws-dynamodb,.b-aws-ec2,.b-aws-eventbridge,.b-aws-glue,.b-aws-lambda,.b-aws-lightsail,.b-aws-route53,.b-aws-s3,.b-bluesky-api,.b-bootstrap,.b-chartjs,.b-claude-code,.b-dart,.b-dataspider,.b-docker,.b-docusaurus,.b-eclipse,.b-f-revocrm,.b-flutter,.b-git,.b-github,.b-github-actions,.b-hibernate,.b-html-css,.b-hulft,.b-javascript,.b-jenkins,.b-jira,.b-kotlin,.b-mongodb,.b-nasa-apod,.b-netlify,.b-nextjs,.b-nodejs,.b-power-bi,.b-python,.b-react,.b-redmine,.b-sap-s4hana,.b-sass,.b-spring-boot,.b-spring-framework,.b-sql,.b-sqlite,.b-tailwind,.b-twitter-api-v2,.b-typescript,.b-vite,.b-webfocus,.b-wireshark,.b-wordpress,.s-behance,.s-blog,.s-bluesky,.s-buymeacoffee,.s-calendar,.s-dart,.s-dev,.s-discord,.s-docs,.s-dribbble,.s-facebook,.s-figma,.s-github,.s-githubsponsors,.s-gitlab,.s-hatenabookmark,.s-instagram,.s-kofi,.s-line,.s-link,.s-linkedin,.s-mail,.s-mastodon,.s-medium,.s-note,.s-npm,.s-patreon,.s-pixiv,.s-portfolio,.s-qiita,.s-reddit,.s-rss,.s-signal,.s-soundcloud,.s-speakerdeck,.s-spotify,.s-stackoverflow,.s-steam,.s-substack,.s-telegram,.s-threads,.s-twitch,.s-wantedly,.s-website,.s-x,.s-youtube,.s-zenn{--brand:var(--accent)}}.badge--active{color:light-dark(#166534,#4ade80)}.badge--archived{color:light-dark(#854d0e,#fbbf24)}.badge--discontinued{color:light-dark(#475569,#cbd5e1)}.badge--maintenance{color:light-dark(#3f6212,#a3e635)}.badge--superseded{color:light-dark(#9d174d,#f472b6)}.badge--client{color:light-dark(#9a3412,#fdba74)}.badge--collaborative{color:light-dark(#86198f,#f0abfc)}.badge--commercial{color:light-dark(#115e59,#5eead4)}.badge--oss{color:light-dark(#155e75,#22d3ee)}.badge--personal{color:light-dark(#4338ca,#a5b4fc)}