:root{--font-display:var(--font-instrument-serif), "Iowan Old Style", Georgia, serif;--home-ease-out:cubic-bezier(.2, .8, .2, 1);--home-ease-spring:cubic-bezier(.34, 1.4, .5, 1);--rule:var(--grid-line);--stitch-h:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='3'%3E%3Cpath d='M3.5 1.5h5' fill='none' stroke='%23888' stroke-opacity='.27' stroke-width='1' stroke-linecap='round'/%3E%3C/svg%3E");--stitch-v:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='3' height='12'%3E%3Cpath d='M1.5 3.5v5' fill='none' stroke='%23888' stroke-opacity='.27' stroke-width='1' stroke-linecap='round'/%3E%3C/svg%3E");--knot:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='9'%3E%3Ccircle cx='4.5' cy='4.5' r='3.3' fill='none' stroke='%23888' stroke-opacity='.2' stroke-width='.8'/%3E%3Ccircle cx='4.5' cy='4.5' r='1.5' fill='%23888' fill-opacity='.5'/%3E%3C/svg%3E");--live:#3fc168;--glass-tint:#ffffff42;--glass-tint-strong:#ffffff7a;--glass-edge:rgb(var(--ink-rgb) / 10%);--glass-rim:#ffffffe6;--glass-under:rgb(var(--ink-rgb) / 7%);--glass-glow:#ffffff4d;--glass-drop:rgb(var(--ink-rgb) / 16%);--glass-blur:blur(14px) saturate(180%);--liquid-sheen-top:#ffffff8c;--liquid-sheen-bottom:#ffffff29;--liquid-veil:6%;--liquid:linear-gradient(180deg, var(--liquid-sheen-top), transparent 46%, transparent 72%, var(--liquid-sheen-bottom)), linear-gradient(var(--glass-tint), var(--glass-tint)), rgb(var(--paper-rgb) / var(--liquid-veil));--liquid-blur:blur(9px) saturate(200%);--glass-shadow:inset 0 1px 0 var(--glass-rim), inset 0 -1px 0 var(--glass-under), inset 0 0 14px -4px var(--glass-glow), 0 10px 24px -14px var(--glass-drop)}@supports (color:lab(0% 0 0)){:root{--live:lab(69.6529% -51.4113 33.9912)}}:root[data-theme=dark]{--glass-tint:#ffffff0f;--glass-tint-strong:#ffffff1f;--glass-edge:#ffffff1c;--glass-rim:#ffffff47;--glass-under:#00000059;--glass-glow:#ffffff1a;--glass-drop:#000000b3;--glass-blur:blur(14px) saturate(180%) brightness(1.15);--liquid-sheen-top:#ffffff21;--liquid-sheen-bottom:#ffffff0d;--liquid-veil:8%;--liquid-blur:blur(9px) saturate(200%) brightness(1.25)}html.lenis,html.lenis body{height:auto}html.lenis{scroll-behavior:auto}html.lenis.lenis-scrolling iframe{pointer-events:none}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){animation:.62s cubic-bezier(.45,0,.15,1) both theme-reveal}@keyframes theme-reveal{0%{clip-path:circle(0 at var(--reveal-x,50%) var(--reveal-y,0))}to{clip-path:circle(var(--reveal-r,150vmax) at var(--reveal-x,50%) var(--reveal-y,0))}}.theme-toggle{transition:background-color .16s ease, color .16s ease, transform .16s var(--home-ease-out);position:fixed}.theme-toggle:active{transform:scale(.92)}.theme-toggle .theme-toggle__icon{transition:transform .42s var(--home-ease-spring), opacity .2s ease;display:block;position:absolute}:root[data-theme=dark] .theme-toggle .theme-toggle__icon--moon,:root:not([data-theme=dark]) .theme-toggle .theme-toggle__icon--sun{opacity:0;transform:rotate(-90deg)scale(.4)}:root[data-theme=dark] .theme-toggle .theme-toggle__icon--sun,:root:not([data-theme=dark]) .theme-toggle .theme-toggle__icon--moon{opacity:1;display:block;transform:none}.hover-track{position:relative}.hover-track__pill{z-index:0;background:rgb(var(--ink-rgb) / 6%);opacity:0;pointer-events:none;transition:transform .32s var(--home-ease-out), width .32s var(--home-ease-out), height .32s var(--home-ease-out), opacity .18s ease;position:absolute;top:0;left:0}.hover-track>:not(.hover-track__pill){z-index:1;position:relative}.home-section__head,.home-contact li,.home-pillars li,.home-post,.home-project,.home-cta,.event-entry,.talk-quote{background-image:var(--st-t,none), var(--st-b,none), var(--st-l,none), var(--st-r,none);background-position:0 0,0 100%,0 0,100% 0;background-repeat:repeat-x,repeat-x,repeat-y,repeat-y;background-size:12px 3px,12px 3px,3px 12px,3px 12px}.home-seam:after,.home-section__head:after{background-image:var(--knot), var(--knot);content:"";pointer-events:none;background-repeat:no-repeat;background-size:9px 9px;position:absolute;left:-4px;right:-4px}.home-seam:after{background-image:var(--knot), var(--knot), var(--knot), var(--knot);background-position:0 0,100% 0,0 100%,100% 100%;top:-3px;bottom:-3px}.home-section__head:after{background-position:0,100%;height:9px;bottom:-3px}.home-section__head{position:relative}.site-bar{z-index:10;pointer-events:none;justify-content:center;display:flex;position:fixed;top:0;left:0;right:0}.site-bar__inner{--notch:var(--liquid);--notch-blur:var(--liquid-blur);--notch-ink:var(--ink);--notch-ink-muted:var(--ink-muted);--notch-height:2.75rem;--notch-radius:20px;--ear:12px;max-width:calc(100vw - 2 * var(--ear) - .5rem);height:var(--notch-height);border-radius:0 0 var(--notch-radius) var(--notch-radius);box-shadow:0 12px 28px -14px var(--glass-drop);color:var(--notch-ink);isolation:isolate;pointer-events:auto;transform-origin:top;transition:padding .52s var(--home-ease-spring);align-items:center;gap:.25rem;padding-inline:1.1rem .5rem;display:flex;position:relative}.site-bar__glass{--e:var(--ear);--r:var(--notch-radius);z-index:-1;top:0;right:calc(var(--e) * -1);bottom:0;left:calc(var(--e) * -1);background:var(--notch);-webkit-backdrop-filter:var(--notch-blur);backdrop-filter:var(--notch-blur);box-shadow:inset 0 -1px 0 var(--glass-under);-webkit-mask-image:radial-gradient(circle at 0 var(--e), transparent calc(var(--e) - .5px), #000 calc(var(--e) + .5px)), radial-gradient(circle at 100% var(--e), transparent calc(var(--e) - .5px), #000 calc(var(--e) + .5px)), linear-gradient(#000, #000), linear-gradient(#000, #000), radial-gradient(circle at var(--r) 2px, #000 calc(var(--r) - .5px), transparent calc(var(--r) + .5px)), radial-gradient(circle at 2px 2px, #000 calc(var(--r) - .5px), transparent calc(var(--r) + .5px));mask-image:radial-gradient(circle at 0 var(--e), transparent calc(var(--e) - .5px), #000 calc(var(--e) + .5px)), radial-gradient(circle at 100% var(--e), transparent calc(var(--e) - .5px), #000 calc(var(--e) + .5px)), linear-gradient(#000, #000), linear-gradient(#000, #000), radial-gradient(circle at var(--r) 2px, #000 calc(var(--r) - .5px), transparent calc(var(--r) + .5px)), radial-gradient(circle at 2px 2px, #000 calc(var(--r) - .5px), transparent calc(var(--r) + .5px));-webkit-mask-position:0 0, 100% 0, var(--e) 0, calc(var(--e) + var(--r)) 100%, var(--e) 100%, calc(100% - var(--e)) 100%;mask-position:0 0, 100% 0, var(--e) 0, calc(var(--e) + var(--r)) 100%, var(--e) 100%, calc(100% - var(--e)) 100%;-webkit-mask-size:calc(2 * var(--e)) var(--e), calc(2 * var(--e)) var(--e), calc(100% - 2 * var(--e)) calc(100% - var(--r)), calc(100% - 2 * var(--e) - 2 * var(--r)) calc(var(--r) + 2px), calc(var(--r) + 2px) calc(var(--r) + 2px), calc(var(--r) + 2px) calc(var(--r) + 2px);mask-size:calc(2 * var(--e)) var(--e), calc(2 * var(--e)) var(--e), calc(100% - 2 * var(--e)) calc(100% - var(--r)), calc(100% - 2 * var(--e) - 2 * var(--r)) calc(var(--r) + 2px), calc(var(--r) + 2px) calc(var(--r) + 2px), calc(var(--r) + 2px) calc(var(--r) + 2px);pointer-events:none;position:absolute;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.site-bar__edge{border-radius:inherit;pointer-events:none;position:absolute;inset:0}.site-bar__edge:before,.site-bar__edge:after{width:calc(var(--ear) + 1px);height:var(--ear);content:"";position:absolute;top:0}.site-bar__edge:before{background:radial-gradient(circle at 0 100%, transparent calc(var(--ear) - .25px), var(--glass-edge) calc(var(--ear) + .25px), var(--glass-edge) calc(var(--ear) + .75px), transparent calc(var(--ear) + 1.25px));right:calc(100% - 1px)}.site-bar__edge:after{background:radial-gradient(circle at 100% 100%, transparent calc(var(--ear) - .25px), var(--glass-edge) calc(var(--ear) + .25px), var(--glass-edge) calc(var(--ear) + .75px), transparent calc(var(--ear) + 1.25px));left:calc(100% - 1px)}.site-bar__edge>span{border:1px solid var(--glass-edge);border-radius:inherit;-webkit-mask-image:linear-gradient(to bottom, transparent var(--ear), #000 var(--ear));mask-image:linear-gradient(to bottom, transparent var(--ear), #000 var(--ear));border-top:0;position:absolute;inset:0}.site-bar__mark{color:var(--notch-ink);font-family:var(--font-display);white-space:nowrap;transition:opacity .16s ease, margin .52s var(--home-ease-spring);margin-right:.9rem;font-size:1.5rem;line-height:1;text-decoration:none}.site-bar__mark:hover{opacity:.72}.site-bar__nav{letter-spacing:-.006em;white-space:nowrap;max-width:34rem;transition:max-width .52s var(--home-ease-spring), opacity .24s ease 80ms;align-items:center;gap:.1rem;font-size:.875rem;display:flex;overflow:hidden}.site-bar[data-compact] .site-bar__inner:not(:hover,:focus-within){padding-inline:1rem .4rem}.site-bar[data-compact] .site-bar__inner:not(:hover,:focus-within) .site-bar__nav{opacity:0;max-width:0;transition:max-width .52s var(--home-ease-spring), opacity .14s ease}.site-bar[data-compact] .site-bar__inner:not(:hover,:focus-within) .site-bar__mark{margin-right:.3rem}.site-bar__nav .hover-track__pill{background:rgb(var(--ink-rgb) / 10%);border-radius:.5rem}.site-bar__nav a{color:var(--notch-ink-muted);border-radius:.5rem;padding:.3rem .6rem;text-decoration:none;transition:color .16s}.site-bar__nav a:hover,.site-bar__nav a[aria-current=page]{color:var(--notch-ink)}.site-bar__nav a[aria-current=page]{font-weight:600}.site-bar__nav a[aria-current=page]:after{content:"";background:currentColor;border-radius:50%;width:3px;height:3px;margin-left:-1.5px;position:absolute;bottom:0;left:50%}.site-bar a:focus-visible{outline:2px solid var(--notch-ink);outline-offset:1px}.site-battery{color:var(--notch-ink-muted);cursor:default;flex:none;align-items:center;margin-inline:.5rem .25rem;animation:.4s both home-fade;display:inline-flex}.site-battery:focus-visible{outline:2px solid var(--notch-ink);outline-offset:3px;border-radius:.4rem}.site-battery svg{flex:none;width:1.9375rem;height:.9375rem;overflow:visible}.site-battery__shell{fill:none;stroke:currentColor;stroke-opacity:.55}.site-battery__cap{fill:currentColor;fill-opacity:.55}.site-battery__level{fill:var(--notch-ink)}.site-battery[data-state=low] .site-battery__level{fill:#e5484d}.site-battery__figure{fill:var(--notch-ink);font-family:var(--font-sans,inherit);font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-weight:700}.site-battery__figure--over{fill:var(--paper)}.site-battery[data-state=low] .site-battery__figure--over{fill:#fff}.theme-toggle.theme-toggle--bar{-webkit-backdrop-filter:none;backdrop-filter:none;width:2rem;height:2rem;box-shadow:none;color:var(--notch-ink-muted);background:0 0;border-radius:50%;flex:none;position:relative;top:auto;right:auto}.theme-toggle.theme-toggle--bar:hover{background:rgb(var(--ink-rgb) / 10%);color:var(--notch-ink)}.theme-toggle.theme-toggle--bar:focus-visible{outline:2px solid var(--notch-ink);outline-offset:1px}:root{--bubble:#fdfcf9;--bubble-edge:rgb(var(--ink-rgb) / 16%);--bubble-blur:none;--bubble-shadow:0 10px 24px -14px var(--glass-drop);--bubble-tip:.7rem}:root[data-theme=dark]{--bubble:#1e1e1e;--bubble-edge:#fff3}[data-slot=tooltip-content]{border:1px solid var(--bubble-edge);background:var(--bubble);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:var(--bubble-shadow);color:var(--ink);border-radius:.6rem;padding:.35rem .7rem;font-weight:500}[data-slot=tooltip-content] svg,.site-dock__label:after{width:var(--bubble-tip);height:var(--bubble-tip);border:1px solid var(--bubble-edge);background:var(--bubble);clip-path:polygon(calc(100% - 3.2px) 0,100% 0,100% 100%,0 100%,0 calc(100% - 3.2px));fill:#0000;border-top:0;border-left:0;border-radius:0 0 .18rem}[data-slot=tooltip-content] svg{translate:0 calc(1px - 50%)}.site-dock{display:none}.profile{--backdrop-opacity:.2}.profile--reading{--backdrop-opacity:.14}.profile .profile__shell{--gutter:1.25rem;--measure:46rem;background:rgb(var(--paper-rgb) / 90%);padding-top:3.75rem;padding-bottom:calc(2.5rem + env(safe-area-inset-bottom))}.profile .profile__shell:before,.profile .profile__shell:after{background:var(--stitch-v) repeat-y center top / 3px 12px;width:3px}.profile .profile__shell:before{left:-1px}.profile .profile__shell:after{right:-1px}.profile--reading .profile__shell{--gutter:3.25rem;--measure:42rem}.home-seam{height:1.25rem;margin-inline:calc(var(--gutter) * -1);position:relative}.home-seam:before{background:var(--stitch-h) repeat-x left top / 12px 3px, var(--stitch-h) repeat-x left bottom / 12px 3px, rgb(var(--ink-rgb) / 2.5%);content:"";width:100vw;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.home-banner{height:clamp(13rem,27vw,19rem);margin:0 calc(var(--gutter) * -1 + .5rem) .5rem;border:1px solid var(--ink-faint);background:var(--paper);isolation:isolate;border-top:0;border-radius:0 0 .55rem .55rem;position:relative;overflow:hidden}.profile.home .profile__shell{padding-top:0}.home-banner__art{z-index:-1;width:100%;height:100%;color:var(--ink);pointer-events:none;position:absolute;inset:0}.home-banner__art .banner-art__rows{fill:currentColor;font-family:var(--font-mono);white-space:pre;font-size:16px;font-weight:600}.home-banner__art .banner-art__rows text{animation:home-fade .32s ease calc(.12s + var(--r) * 18ms) backwards}.home-banner__art .banner-art__hand{animation-duration:5.5s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate;animation-delay:1.6s;animation-fill-mode:backwards}.home-banner__art .banner-art__hand--left{animation-name:reach-left}.home-banner__art .banner-art__hand--right{animation-name:reach-right}@keyframes reach-left{0%{transform:translate(-14px,6px)}to{transform:translate(38px,-8px)}}@keyframes reach-right{0%{transform:translate(14px,-6px)}to{transform:translate(-38px,8px)}}.home-banner__art .banner-art__band{animation:9s cubic-bezier(.4,0,.6,1) 1.4s infinite band-sweep}@keyframes band-sweep{0%{transform:translate(0)}70%,to{transform:translate(3500px)}}.home-banner__art .banner-art__mark{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:5.6px;transform-origin:32px 32px;animation:.9s .7s backwards home-fade,5.5s ease-in-out 1.6s infinite alternate mark-pulse}@keyframes mark-pulse{0%{transform:scale(.94)}to{transform:scale(1.08)}}.home-banner__chip{z-index:1;border:1px solid var(--ink-faint);background:var(--glass-surface);-webkit-backdrop-filter:blur(12px)saturate(150%);backdrop-filter:blur(12px)saturate(150%);color:var(--ink-muted);border-radius:999px;align-items:center;gap:.35rem;margin:0;padding:.3rem .6rem .3rem .45rem;font-size:.75rem;line-height:1.3;display:inline-flex;position:absolute;bottom:.6rem;left:.6rem}.home-banner__chip svg{width:.8rem;height:.8rem}.local-time{min-width:2.7em;color:var(--ink);font-variant-numeric:tabular-nums;opacity:0;transition:opacity .4s;display:inline-block}.local-time[data-ready]{opacity:1}.local-time__colon{animation:2s step-end infinite colon-blink}@keyframes colon-blink{50%{opacity:.25}}.home-id{grid-template-columns:auto 1fr auto;align-items:center;gap:.5rem 1.4rem;padding-block:1.25rem;display:grid}.home-id__avatar{border:1px solid var(--ink-faint);background:var(--code-surface);width:6.5rem;height:6.5rem;transform:perspective(40rem) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .5s var(--home-ease-out);will-change:transform;border-radius:1rem;padding:.25rem}.home-id__avatar[data-pointer]{transition-duration:.12s}.home-id .profile__avatar{width:100%;height:100%;display:block;position:relative;overflow:hidden}.home-id .profile__avatar img{width:100%;height:100%;display:block}.home-id .profile__avatar:after{border:1px solid var(--image-outline);content:"";pointer-events:none;position:absolute;inset:0}.home-id .profile__avatar,.home-id .profile__avatar img,.home-id .profile__avatar:after,.home-id .profile__avatar [data-slot=avatar-fallback]{border-radius:.75rem}.home-id__text{gap:.3rem;min-width:0;display:grid}.home-id h1{font-family:var(--font-display);letter-spacing:-.012em;margin:0;font-size:clamp(2.25rem,6vw,2.875rem);font-weight:400;line-height:1.02}.role-cycler{color:var(--ink-muted);letter-spacing:.004em;margin:0;font-size:1.0625rem;font-weight:500;line-height:1.35}.role-cycler__line{white-space:nowrap;display:inline-block}.role-cycler__letter{white-space:pre;display:inline-block}.role-cycler__line[data-entering] .role-cycler__letter{animation:letter-in .32s var(--home-ease-out) both;animation-delay:calc(var(--i) * 26ms)}.role-cycler__line[data-leaving] .role-cycler__letter{animation:.32s cubic-bezier(.5,0,.9,.4) both letter-out;animation-delay:calc(var(--i) * 26ms)}@keyframes letter-in{0%{filter:blur(3px);opacity:0;transform:translateY(.45em)}}@keyframes letter-out{to{filter:blur(3px);opacity:0;transform:translateY(-.45em)}}.home-pillars{margin:0 calc(var(--gutter) * -1);grid-template-columns:repeat(3,1fr);padding:0;list-style:none;display:grid}.home-pillars li+li{--st-l:var(--stitch-v)}.home-pillar{height:100%;padding:1.1rem var(--gutter) 1.15rem;color:var(--ink);isolation:isolate;flex-direction:column;text-decoration:none;display:flex;position:relative;overflow:hidden}.home-pillar:before{z-index:-1;background:radial-gradient(13rem circle at var(--mx,50%) var(--my,50%), rgb(var(--ink-rgb) / 9%), transparent 72%);content:"";opacity:0;transition:opacity .32s;position:absolute;inset:0}.home-pillar[data-pointer]:before,.home-pillar:focus-visible:before{opacity:1}.home-pillar:focus-visible{outline-offset:-3px}.home-pillar__track{color:var(--ink-muted);justify-content:space-between;align-items:center;font-size:.8125rem;line-height:1.4;transition:color .16s;display:flex}.home-pillar__track svg{opacity:.55;width:.95rem;height:.95rem;transition:transform .24s var(--home-ease-out), opacity .16s ease}.home-pillar:hover .home-pillar__track{color:var(--ink)}.home-pillar:hover .home-pillar__track svg{opacity:1;transform:translate(2px,-2px)}.home-pillar__title{font-family:var(--font-display);letter-spacing:-.008em;text-wrap:balance;margin-top:.55rem;font-size:1.5rem;line-height:1.12}.home-pillar__title[data-long]{font-size:1.1875rem;line-height:1.2}.home-pillar__body{color:var(--ink-muted);letter-spacing:-.012em;text-wrap:pretty;margin-top:.5rem;font-size:.9375rem;line-height:1.5}.home-pillar__specs{font-family:var(--font-mono);flex-wrap:wrap;gap:.3rem;margin-top:auto;padding-top:.95rem;font-size:.6875rem;line-height:1.5;display:flex}.home-pillar__specs span{border:1px solid var(--ink-faint);background:var(--code-surface);color:var(--ink-muted);border-radius:.35rem;padding:.1rem .4rem;transition:color .16s,border-color .16s}.home-pillar:hover .home-pillar__specs span{border-color:rgb(var(--ink-rgb) / 26%);color:var(--ink)}.home-section__head{margin-inline:calc(var(--gutter) * -1);padding:.5rem var(--gutter) .6rem;--st-b:var(--stitch-h);justify-content:space-between;align-items:baseline;gap:.2rem 1rem;display:flex}.home-section__head h2,.home-cta h2{font-family:var(--font-display);letter-spacing:-.008em;margin:0;font-size:1.9375rem;font-weight:400;line-height:1.15}.home-section__note{color:var(--ink-muted);text-align:right;margin:0;font-size:.8125rem;line-height:1.4}.home-section__more{color:var(--ink-muted);white-space:nowrap;align-items:center;gap:.25rem;font-size:.875rem;text-decoration:none;transition:color .16s;display:inline-flex}.home-section__more svg,.home-contact__arrow,.home-post__arrow{width:.95rem;height:.95rem;transition:transform .24s var(--home-ease-out);flex:none}.home-section__more:hover{color:var(--ink)}.home-section__more:hover svg{transform:translate(2px,-2px)}.home-prose{gap:.7rem;padding-block:1.25rem 1.5rem;display:grid}.home-prose p{color:var(--ink-muted);letter-spacing:-.014em;text-wrap:pretty;margin:0;font-size:1rem;line-height:1.58}.home-prose a,.home-footer .social-sentence a{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:rgb(var(--ink-rgb) / 26%);text-decoration-color:rgb(var(--ink-rgb) / 26%);text-underline-offset:.18em;transition:text-decoration-color .18s ease, text-underline-offset .18s var(--home-ease-out);text-decoration-thickness:1px}.home-prose a:hover,.home-footer .social-sentence a:hover{-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink);text-underline-offset:.3em}.profile a:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.home-contact{margin:0 calc(var(--gutter) * -1);padding:0;list-style:none;display:flex}.home-contact li{flex:auto}.home-contact li+li{--st-l:var(--stitch-v)}.home-contact a{height:100%;color:var(--ink);letter-spacing:-.012em;align-items:center;gap:.6rem;padding:.75rem .8rem;font-size:.9375rem;text-decoration:none;transition:background-color .2s;display:flex}.home-contact__tile{border:1px solid var(--ink-faint);background:var(--control-surface);width:2.25rem;height:2.25rem;transition:transform .26s var(--home-ease-spring), border-color .2s ease;border-radius:.55rem;flex:none;place-items:center;display:grid;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff0d}.home-contact__tile svg{width:1.05rem;height:1.05rem}.home-contact__tile:after{background:linear-gradient(90deg, transparent, rgb(var(--ink-rgb) / 22%), transparent);content:"";width:45%;position:absolute;inset:-20% auto -20% -60%;transform:skew(-20deg)}.home-contact__arrow{color:var(--ink-muted);transition:transform .24s var(--home-ease-out), color .16s ease;margin-left:auto}.home-contact a:hover{background:rgb(var(--ink-rgb) / 4%)}.home-contact a:hover .home-contact__tile{border-color:rgb(var(--ink-rgb) / 30%);transform:scale(1.06)rotate(-4deg)}.home-contact a:hover .home-contact__tile:after{transition:left .7s var(--home-ease-out);left:130%}.home-contact a:hover .home-contact__arrow{color:var(--ink);transform:translate(2px,-2px)}.home-contact a:active .home-contact__tile{transform:scale(.94)}.home-posts{margin-inline:calc(var(--gutter) * -1)}.home-post{padding:1rem var(--gutter);color:var(--ink);grid-template-columns:1fr auto;align-items:baseline;gap:.2rem .75rem;text-decoration:none;display:grid}.home-post+.home-post{--st-t:var(--stitch-h)}.home-post__title{letter-spacing:-.02em;transition:transform .28s var(--home-ease-out);font-size:1.0625rem;font-weight:500;line-height:1.35}.home-post__date{color:var(--ink-muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.8125rem}.home-post__description{color:var(--ink-muted);letter-spacing:-.012em;text-wrap:pretty;grid-column:1/2;font-size:.9375rem;line-height:1.5}.home-post__arrow{color:var(--ink-muted);opacity:0;transition:transform .28s var(--home-ease-out), opacity .2s ease;grid-area:2/2;place-self:end;transform:translate(-6px,6px)}.home-post:hover .home-post__title,.home-post:focus-visible .home-post__title{transform:translate(.25rem)}.home-post:hover .home-post__arrow,.home-post:focus-visible .home-post__arrow{color:var(--ink);opacity:1;transform:none}.home-post:focus-visible{outline-offset:-3px}.home-projects{margin:0 calc(var(--gutter) * -1);grid-template-columns:1fr 1fr;padding:0;list-style:none;display:grid}.home-project{min-height:10.5rem;padding:1.25rem var(--gutter) 1.1rem;--st-t:var(--stitch-h);flex-direction:column;display:flex;position:relative;overflow:hidden}.home-project:nth-child(-n+2){--st-t:none}.home-project:nth-child(odd){--st-r:var(--stitch-v)}.home-project:before{z-index:-1;background:radial-gradient(15rem circle at var(--mx,50%) var(--my,50%), rgb(var(--ink-rgb) / 9%), transparent 72%);content:"";opacity:0;transition:opacity .32s;position:absolute;inset:0}.home-project[data-pointer]:before,.home-project:focus-within:before{opacity:1}.home-project__top{justify-content:space-between;align-items:baseline;gap:.75rem;display:flex}.home-project h3{letter-spacing:-.03em;margin:0;font-size:1.1875rem;font-weight:600;line-height:1.3}.home-project h3 a{color:var(--ink);text-decoration:none}.home-project h3 a:after{content:"";position:absolute;inset:0}.home-project h3 a:focus-visible{outline:none}.home-project:has(h3 a:focus-visible){outline:2px solid var(--ink);outline-offset:-3px}.home-project__year{color:var(--ink-muted);font-variant-numeric:tabular-nums;font-size:.8125rem;transition:color .16s}.home-project:hover .home-project__year{color:var(--ink)}.home-project__description{color:var(--ink-muted);letter-spacing:-.012em;text-wrap:pretty;margin:.45rem 0 1.1rem;font-size:.9375rem;line-height:1.5}.home-project__foot{justify-content:space-between;align-items:center;gap:.75rem;margin-top:auto;display:flex}.home-project__stack{flex-wrap:wrap;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.home-project__stack li{border:1px solid var(--ink-faint);background:var(--code-surface);color:var(--ink-muted);border-radius:.4rem;padding:.12rem .5rem;font-size:.75rem;line-height:1.5;transition:color .16s,border-color .16s}.home-project:hover .home-project__stack li{border-color:rgb(var(--ink-rgb) / 26%);color:var(--ink)}.home-project__links{z-index:1;gap:.15rem;display:flex;position:relative}.home-project__links a{width:2rem;height:2rem;color:var(--ink-muted);transition:color .16s ease, background-color .16s ease, transform .24s var(--home-ease-spring);border-radius:.5rem;place-items:center;display:grid}.home-project__links svg{width:1.05rem;height:1.05rem}.home-project__links a:hover{background:rgb(var(--ink-rgb) / 9%);color:var(--ink);transform:translateY(-2px)}.home-project__links a:active{transform:scale(.9)}.media-cover{aspect-ratio:16/9;border:1px solid var(--ink-faint);background:var(--code-surface);border-radius:.65rem;margin-bottom:.95rem;position:relative;overflow:hidden}.media-cover img,.media-cover video{object-fit:cover;width:100%;height:100%;transition:transform .52s var(--home-ease-out);position:absolute;inset:0}.home-project:hover .media-cover img,.home-project:hover .media-cover video{transform:scale(1.03)}.media-cover__play{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;background:#0000008c;border-radius:50%;place-items:center;width:1.9rem;height:1.9rem;display:grid;position:absolute;bottom:.55rem;left:.55rem}.media-cover__play svg{fill:currentColor;width:.8rem;height:.8rem;translate:1px}.home-post.home-post--cover{grid-template-rows:auto 1fr;grid-template-columns:auto 1fr auto;column-gap:1rem}.home-post__cover{grid-area:1/1/span 2;align-self:start;width:8rem}.home-post__cover .media-cover{border-radius:.5rem;margin-bottom:0}.home-post:hover .media-cover img,.home-post:hover .media-cover video{transform:scale(1.04)}.home-post__cover .media-cover__play{width:1.4rem;height:1.4rem;bottom:.35rem;left:.35rem}.home-post__cover .media-cover__play svg{width:.6rem;height:.6rem}.home-post--cover .home-post__description{grid-column:2/3;align-self:start}.home-post--cover .home-post__arrow{grid-column:3}@media (max-width:40rem){.home-post.home-post--cover{column-gap:.8rem}.home-post__cover{width:5.5rem}.home-post--cover .home-post__description{grid-column:2/-1}}.media{margin-inline:calc(var(--gutter) * -1);display:grid}.post__date+.media{background:var(--stitch-h) repeat-x left top / 12px 3px;margin-top:1.75rem;padding-top:3px}.media__item{background:var(--stitch-h) repeat-x left bottom / 12px 3px;margin:0;padding-bottom:3px}.media__frame{background:var(--code-surface);width:100%;overflow:hidden}.media__fit{border:0;width:100%;height:auto;display:block}.media__fit--wide,.media__box{aspect-ratio:16/9}.media__box{width:100%;position:relative}.media__box img{object-fit:cover}.media__item figcaption{padding:.6rem var(--gutter);color:var(--ink-muted);letter-spacing:-.006em;font-size:.8125rem;line-height:1.45}.contrib{padding-block:1.25rem 1.1rem}.contrib__scroll{scrollbar-width:none;direction:rtl;overflow-x:auto;container-type:inline-size}.contrib__frame{--gap:3px;--cell:max(10px, calc((100cqw - (var(--weeks) - 1) * var(--gap)) / var(--weeks)));direction:ltr;width:max-content}.contrib__months{grid-template-columns:repeat(var(--weeks), var(--cell));column-gap:var(--gap);color:var(--ink-muted);margin-bottom:.4rem;font-size:.6875rem;line-height:1.3;display:grid}.contrib__months span{white-space:nowrap;grid-row:1}.contrib__grid{grid-template-rows:repeat(7, var(--cell));grid-auto-columns:var(--cell);gap:var(--gap);grid-auto-flow:column;margin:0;padding:0;list-style:none;display:grid}.contrib__day{background:rgb(var(--ink-rgb) / 7%);transition:transform .16s var(--home-ease-spring), outline-color .16s ease;outline-offset:1px;border-radius:2px;outline:1px solid #0000}.contrib__day[data-level="1"]{background:rgb(var(--ink-rgb) / 26%)}.contrib__day[data-level="2"]{background:rgb(var(--ink-rgb) / 46%)}.contrib__day[data-level="3"]{background:rgb(var(--ink-rgb) / 70%)}.contrib__day[data-level="4"]{background:var(--ink)}.contrib__grid .contrib__day:hover{z-index:1;outline-color:var(--ink);transform:scale(1.5)}.contrib__foot{color:var(--ink-muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.3rem 1rem;margin-top:.7rem;font-size:.8125rem;display:flex}.contrib__foot p{margin:0}.contrib__foot .star-count{color:var(--ink)}.contrib__legend{align-items:center;gap:3px;display:inline-flex}.contrib__legend .contrib__day{width:10px;height:10px}.contrib__legend .contrib__day:first-of-type{margin-left:.3rem}.contrib__legend .contrib__day:last-of-type{margin-right:.3rem}.home-cta{--st-b:var(--stitch-h);margin-inline:calc(var(--gutter) * -1);padding-inline:var(--gutter);text-align:center;justify-items:center;gap:.5rem;padding-block:2.75rem 3rem;display:grid}.home-cta h2{font-size:clamp(2.25rem,6vw,2.75rem)}.home-cta p{color:var(--ink-muted);letter-spacing:-.014em;margin:0;font-size:1rem}.home-cta__actions{flex-wrap:wrap;justify-content:center;gap:.6rem;margin-top:1rem;display:flex}.home-button{border:1px solid var(--ink-faint);background:var(--glass-surface);height:2.6rem;color:var(--ink);letter-spacing:-.012em;transform:translate(var(--tx,0px), var(--ty,0px));transition:transform .4s var(--home-ease-out), background-color .16s ease, border-color .16s ease, box-shadow .24s ease;border-radius:999px;align-items:center;gap:.5rem;padding-inline:1.15rem;font-size:.9375rem;font-weight:500;text-decoration:none;display:inline-flex}.home-button[data-pointer]{transition-duration:.12s,.16s,.16s,.24s}.home-button svg{width:1rem;height:1rem;transition:transform .32s var(--home-ease-spring)}.home-button:hover{border-color:rgb(var(--ink-rgb) / 30%);background:var(--glass-surface-hover)}.home-button:hover svg{transform:rotate(-10deg)scale(1.1)}.home-button:active{transform:translate(var(--tx,0px), var(--ty,0px)) scale(.96);transition-duration:80ms}.home-button--solid{border-color:var(--ink);background:var(--ink);color:var(--paper)}.home-button--solid:hover{border-color:var(--ink);background:var(--ink);box-shadow:0 6px 22px rgb(var(--ink-rgb) / 22%)}.home-footer{padding-block:1.5rem .5rem}:root{scroll-padding-top:7rem}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem 1.5rem;padding-block:2.25rem 1.5rem;display:flex}.page-head h1{font-family:var(--font-display);letter-spacing:-.012em;margin:0;font-size:clamp(2.5rem,7vw,3.25rem);font-weight:400;line-height:1.02}.page-head p{color:var(--ink-muted);letter-spacing:-.014em;margin:.55rem 0 0;font-size:1.0625rem;line-height:1.45}.page-empty{color:var(--ink-muted);letter-spacing:-.014em;margin:0;padding-block:1.5rem;font-size:1rem;line-height:1.58}.page-empty a{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:rgb(var(--ink-rgb) / 26%);text-decoration-color:rgb(var(--ink-rgb) / 26%);text-underline-offset:.18em;text-decoration-thickness:1px;transition:text-decoration-color .18s}.page-empty a:hover{-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}.event-entry{color:var(--ink);position:relative;overflow:hidden}.event-entry+.event-entry{--st-t:var(--stitch-h)}.event-entry:before{z-index:-1;background:radial-gradient(15rem circle at var(--mx,50%) var(--my,50%), rgb(var(--ink-rgb) / 9%), transparent 72%);content:"";opacity:0;transition:opacity .32s;position:absolute;inset:0}.event-entry[data-pointer]:before,.event-entry:focus-visible:before{opacity:1}.event-entry:focus-visible{outline-offset:-2px}.talk-quotes{margin:0 calc(var(--gutter) * -1);grid-template-columns:1fr 1fr;padding:0;list-style:none;display:grid}.talk-quote{padding:1.35rem var(--gutter) 1.2rem;--st-t:var(--stitch-h);display:flex;position:relative;overflow:hidden}.talk-quote:nth-child(-n+2){--st-t:none}.talk-quote:nth-child(odd){--st-r:var(--stitch-v)}.talk-quote:before{z-index:-1;background:radial-gradient(15rem circle at var(--mx,50%) var(--my,50%), rgb(var(--ink-rgb) / 9%), transparent 72%);content:"";opacity:0;transition:opacity .32s;position:absolute;inset:0}.talk-quote[data-pointer]:before{opacity:1}.talk-quote figure{flex-direction:column;flex:1;gap:1.1rem;margin:0;display:flex}.talk-quote blockquote{border:0;gap:.7rem;margin:0;padding:0;display:grid}.talk-quote blockquote:before{height:1.35rem;color:var(--ink-muted);content:"“";font-family:var(--font-display);font-size:3.25rem;line-height:1}.talk-quote blockquote p{color:var(--ink);letter-spacing:-.016em;text-wrap:pretty;margin:0;font-size:1rem;line-height:1.58}.talk-quote figcaption{justify-content:space-between;align-items:flex-end;gap:.75rem;margin-top:auto;font-size:.8125rem;line-height:1.45;display:flex}.talk-quote__who{gap:.1rem;min-width:0;display:grid}.talk-stars{flex:none;gap:.1rem;padding-bottom:.15rem;display:inline-flex}.talk-stars svg{width:.8125rem;height:.8125rem;color:var(--ink-faint)}.talk-stars svg[data-lit]{color:var(--ink);fill:currentColor}.talk-rating{font-variant-numeric:tabular-nums;align-items:center;gap:.35rem;display:inline-flex}.talk-rating svg{width:.875rem;height:.875rem;color:var(--ink);fill:currentColor}.talk-rating strong{color:var(--ink);font-weight:600}.talk-quote__name{color:var(--ink);letter-spacing:-.012em;font-size:.875rem;font-weight:500}.talk-quote__role,.talk-quote__talk{color:var(--ink-muted)}@media (max-width:700px){.talk-quotes{grid-template-columns:1fr}.talk-quote:nth-child(odd){--st-r:none}.talk-quote:nth-child(2){--st-t:var(--stitch-h)}}.post-foot{--foot-gutter:1.25rem;margin-top:clamp(3rem,8vw,4.5rem);margin-inline:calc(var(--foot-gutter) - var(--gutter))}.post-foot .home-seam{margin-inline:calc(var(--foot-gutter) * -1)}@media (max-width:700px){.post-foot{--foot-gutter:1rem}}.profile .post-nav{margin-bottom:1.75rem;padding-top:1.75rem}.profile .post-nav a{transition:color .16s ease, transform .24s var(--home-ease-out);display:inline-block}.profile .post-nav a:hover{transform:translate(-3px)}.profile .post__header h1{font-family:var(--font-display);letter-spacing:-.012em;margin-bottom:.75rem;font-size:clamp(2.125rem,6vw,2.875rem);font-weight:400;line-height:1.06}.post__lede{color:var(--ink-muted);letter-spacing:-.018em;text-wrap:pretty;margin:0 0 .8rem;font-size:1.0625rem;line-height:1.5}.post__lede+.post__date{display:block}.profile .post__lede{animation:home-rise .7s var(--home-ease-out) .2s both}:root{--font-hand:var(--font-caveat), "Bradley Hand", "Segoe Print", cursive}.post-banner{margin:1.75rem calc(var(--gutter) * -1) 0;padding:.9rem var(--gutter);background:var(--stitch-h) repeat-x left top / 12px 3px, var(--stitch-h) repeat-x left bottom / 12px 3px;color:var(--ink)}.post-banner svg{width:100%;height:auto;display:block;overflow:visible}.post-banner+.media{margin-top:0}.sketch text{fill:currentColor;font-family:var(--font-hand)}.sketch__title{font-size:54px;font-weight:700}.sketch__label{font-size:46px;font-weight:700}.sketch__note{opacity:.8;font-size:36px;font-weight:500}.sketch__word{opacity:.55;font-size:84px;font-weight:700}.sketch__line,.sketch__thick,.sketch__joint{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:3.5px}.sketch__line--dashed{stroke-dasharray:14 12;opacity:.7}.sketch__line--dotted{stroke-dasharray:1 12;stroke-width:6px}.sketch__thick{stroke-width:15px;opacity:.85}.sketch__joint{fill:var(--paper)}.profile .post__header dl{background:var(--stitch-h) repeat-x left top / 12px 3px;border-top:0}.profile .post__header dl>div{background:var(--stitch-h) repeat-x left bottom / 12px 3px;border-bottom:0}.profile .post-tools{--tool-height:2rem;border:1px solid var(--glass-edge);background:linear-gradient(var(--glass-tint), var(--glass-tint)), rgb(var(--paper-rgb) / 66%);width:fit-content;max-width:100%;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:inset 0 1px 0 var(--glass-rim), inset 0 -1px 0 var(--glass-under), 0 10px 24px -14px var(--glass-drop);margin-right:0;border-radius:999px;align-items:center;gap:.2rem;margin-inline:auto;padding:.2rem;top:3.35rem}.profile .post-tools :is(.post-toc,.ai-actions){flex:none}.profile .post-tools{transition:transform .52s var(--home-ease-spring), gap .52s var(--home-ease-spring), background-color .24s ease, border-color .24s ease, box-shadow .24s ease;grid-auto-columns:1fr;grid-auto-flow:column;display:grid}.profile .post-tools :is(.post-toc__button,.ai-actions__trigger){justify-content:center;width:100%}.post-tools__marker{height:0;display:block}@media (min-width:701px){html[data-notch-compact]:not(:has(.site-bar__inner:is(:hover,:focus-within))) .profile .post-tools[data-stuck]:has(>:nth-child(2)){transform:translateY(calc((2.75rem + .6rem) * -1 + (2.75rem - (var(--tool-height) + .4rem + 2px)) / 2));gap:calc(var(--notch-w,16rem) + 24px + 1rem);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none;background-color:#0000;background-image:none;border-color:#0000}html[data-notch-compact]:not(:has(.site-bar__inner:is(:hover,:focus-within))) .profile .post-tools[data-stuck]:has(>:nth-child(2)) :is(.post-toc__button,.ai-actions__trigger){border:1px solid var(--glass-edge);background:linear-gradient(var(--glass-tint), var(--glass-tint)), rgb(var(--paper-rgb) / 66%);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:inset 0 1px 0 var(--glass-rim), inset 0 -1px 0 var(--glass-under), 0 10px 24px -14px var(--glass-drop)}html[data-notch-compact]:not(:has(.site-bar__inner:is(:hover,:focus-within))) .profile .post-tools[data-stuck]:has(>:nth-child(2))>:not(:first-child):before{opacity:0}}@media (max-width:700px){html[data-notch-compact] .profile .post-tools[data-stuck]:has(>:nth-child(2)){transform:translateY(calc((2.75rem + .6rem) * -1 + (2.5rem - (var(--tool-height) + .4rem + 2px)) / 2));gap:calc(var(--notch-w,8rem) + 24px + 1rem);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none;background-color:#0000;background-image:none;border-color:#0000}html[data-notch-compact] .profile .post-tools[data-stuck]:has(>:nth-child(2)) :is(.post-toc__button,.ai-actions__trigger){width:var(--tool-height);border:1px solid var(--glass-edge);background:linear-gradient(var(--glass-tint), var(--glass-tint)), rgb(var(--paper-rgb) / 66%);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:inset 0 1px 0 var(--glass-rim), inset 0 -1px 0 var(--glass-under), 0 10px 24px -14px var(--glass-drop);color:var(--ink);justify-content:center;gap:0;padding:0}html[data-notch-compact] .profile .post-tools[data-stuck]:has(>:nth-child(2)) .tool-label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}html[data-notch-compact] .profile .post-tools[data-stuck]:has(>:nth-child(2)) :is(.post-toc__button,.ai-actions__trigger)>svg:last-child{display:none}html[data-notch-compact] .profile .post-tools[data-stuck]:has(>:nth-child(2))>:not(:first-child):before{opacity:0}}.profile .post-tools :is(.post-toc__button,.ai-actions__trigger){-webkit-backdrop-filter:none;backdrop-filter:none;width:auto;box-shadow:none;color:var(--ink-muted);background:0 0;border:0;border-radius:999px;gap:.4rem;padding-inline:.75rem .6rem;font-size:.8125rem;transition:background-color .16s,color .16s}.profile .post-tools :is(.post-toc__button,.ai-actions__trigger):hover{background:rgb(var(--ink-rgb) / 8%);color:var(--ink)}.profile .post-tools :is(.post-toc__button[aria-expanded=true],.ai-actions__trigger[data-state=open]){background:rgb(var(--ink-rgb) / 12%);color:var(--ink)}.profile .post-tools :is(.post-toc__button,.ai-actions__trigger):focus-visible{outline-offset:2px}.profile .post-tools>:not(:first-child):before{background:rgb(var(--ink-rgb) / 16%);content:"";width:1px;position:absolute;top:25%;bottom:25%;left:-.1rem}.profile .tool-label{letter-spacing:-.01em;text-transform:none;font-weight:500}.profile .post-toc__count{background:rgb(var(--ink-rgb) / 10%);text-align:center;border-radius:999px;min-width:1.15rem;margin-left:.1rem;padding:.05rem .35rem;font-size:.6875rem;line-height:1.4}.profile .post-tools :is(.post-toc__button,.ai-actions__trigger)>svg:last-child{opacity:.6;width:.7rem;height:.7rem;transition:transform .2s var(--home-ease-out);margin-left:0}.profile .post-toc__panel,.ai-actions__menu{border:1px solid var(--bubble-edge);background:var(--bubble);border-radius:.8rem;padding:.3rem;box-shadow:0 18px 44px -14px #00000073,0 2px 6px #0000001f}.profile .post-toc__panel{top:calc(var(--tool-height) + .55rem);width:max(100%,17rem);animation:menu-in .16s var(--home-ease-out);transform-origin:0 0;left:-.2rem}@keyframes menu-in{0%{opacity:0;transform:scale(.96)}}.profile .post-toc__list{padding:0}.profile .post-toc__list:before,.profile .post-toc__marker{display:none}.profile .post-toc__item{margin:0;padding:0;font-size:.8125rem}.profile .post-toc__item a{color:var(--ink);border-radius:.45rem;padding:.35rem .6rem .35rem 1.6rem;display:block;position:relative}.profile .post-toc__item[data-depth="3"] a{padding-left:2.35rem}.profile .post-toc__item[data-depth="4"] a{padding-left:3.1rem}.profile .post-toc__item a:hover{background:rgb(var(--ink-rgb) / 9%)}.profile .post-toc__item[data-active=true] a:before{content:"";border-bottom:1.5px solid;border-left:1.5px solid;width:.6rem;height:.32rem;position:absolute;top:50%;left:.6rem;transform:translateY(-70%)rotate(-45deg)}.ai-actions__menu [data-slot=dropdown-menu-item]{color:var(--ink);border-radius:.45rem;padding:.35rem .6rem}.ai-actions__menu [data-slot=dropdown-menu-item]:hover,.ai-actions__menu [data-slot=dropdown-menu-item][data-highlighted]{background:rgb(var(--ink-rgb) / 9%)}.ai-actions__menu [data-slot=dropdown-menu-separator]{background:rgb(var(--ink-rgb) / 12%);margin:.3rem .5rem}@media (max-width:700px){.profile .post-tools :is(.post-toc__button,.ai-actions__trigger){padding-inline:.65rem .5rem;font-size:.75rem}}.home-banner__chip,.home-id__avatar,.home-contact__tile,.home-button:not(.home-button--solid){border:1px solid var(--glass-edge);background-color:var(--glass-tint);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:var(--glass-shadow)}.home-pillar__specs span,.home-project__stack li{border:1px solid var(--glass-edge);background-color:var(--glass-tint);box-shadow:inset 0 1px 0 var(--glass-rim), inset 0 -1px 0 var(--glass-under)}.home-button:not(.home-button--solid):hover,.home-contact a:hover .home-contact__tile{border-color:var(--glass-edge);background-color:var(--glass-tint-strong)}@keyframes home-rise{0%{filter:blur(5px);opacity:0;transform:translateY(.75rem)}}@keyframes home-fade{0%{opacity:0}}@keyframes avatar-in{0%{opacity:0;transform:perspective(40rem)rotateY(-28deg)scale(.86)}}.site-bar{animation:notch-drop .62s var(--home-ease-out) 60ms backwards}@keyframes notch-drop{0%{top:-3.5rem}}.home-banner__art image{animation:.9s 80ms backwards home-fade}.home-id__avatar{animation:avatar-in .52s var(--home-ease-out) 80ms both}.home-id h1{animation:home-rise .7s var(--home-ease-out) .34s both}.home-id .role-cycler{animation:home-rise .7s var(--home-ease-out) .42s both}.page-head h1,.profile .post__header h1{animation:home-rise .7s var(--home-ease-out) .12s both}.page-head p{animation:home-rise .7s var(--home-ease-out) .22s both}.home-pillars li{animation:home-rise .7s var(--home-ease-out) both}.home-pillars li:first-child{animation-delay:.6s}.home-pillars li:nth-child(2){animation-delay:.68s}.home-pillars li:nth-child(3){animation-delay:.76s}.home-id~.home-section:first-of-type{animation:home-rise .7s var(--home-ease-out) .86s both}@supports (animation-timeline:view()){.home-section~.home-section>:not(.home-section__head),.home-cta>*{animation:linear both settle;animation-timeline:view();animation-range:entry entry 60%}@keyframes settle{0%{opacity:.2;transform:translateY(1rem)}}.contrib{view-timeline-name:--contrib}.contrib__grid .contrib__day{animation:linear both cell-in;animation-range:entry calc(var(--w,0) * 1.6%) cover calc(14% + var(--w,0) * 0.45%);animation-timeline:--contrib}@keyframes cell-in{0%{opacity:.15;transform:scale(.3)}}.home-footer .signature{animation:linear both sign;animation-timeline:view();animation-range:entry entry 90%}@keyframes sign{0%{clip-path:inset(-20% 100% -20% 0)}to{clip-path:inset(-20% -5% -20% 0)}}}@media (max-width:700px){.site-bar__inner,.site-bar[data-compact] .site-bar__inner:not(:hover,:focus-within){--notch-height:2.5rem;--notch-radius:18px;padding-inline:1rem;transition:none}.site-bar__mark,.site-bar[data-compact] .site-bar__inner:not(:hover,:focus-within) .site-bar__mark{margin-right:0;font-size:1.3125rem;transition:none}.site-bar__mark:hover{opacity:1}.site-bar__nav,.site-battery,.theme-toggle.theme-toggle--bar{display:none}.site-dock{z-index:10;bottom:max(.75rem, env(safe-area-inset-bottom));border:1px solid var(--glass-edge);box-shadow:var(--glass-shadow);touch-action:none;-webkit-user-select:none;user-select:none;animation:dock-rise .9s var(--home-ease-spring) .35s backwards;border-radius:1.4rem;align-items:center;gap:.45rem;padding:.5rem;display:flex;position:fixed;left:50%;translate:-50%}.site-dock:before{z-index:-1;border-radius:inherit;background:var(--liquid);-webkit-backdrop-filter:var(--liquid-blur);backdrop-filter:var(--liquid-blur);content:"";position:absolute;inset:0}@keyframes dock-rise{0%{transform:translateY(180%)scale(.9)}}.site-dock__item,.theme-toggle.theme-toggle--dock{--tile:clamp(2.2rem, calc((100vw - 5.6rem) / 7), 2.9rem);width:var(--tile);height:var(--tile);margin-inline:calc((var(--s,1) - 1) * var(--tile) / 2);border:1px solid var(--glass-edge);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:inset 0 1px 0 var(--glass-rim), inset 0 -1px 0 var(--glass-under), 0 4px 10px -6px var(--glass-drop);color:var(--ink-muted);transform:scale(calc(var(--s,1) * var(--press,1)));transform-origin:bottom;transition:transform .42s var(--home-ease-spring), margin .42s var(--home-ease-spring), color .16s ease;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:.85rem;flex:none;place-items:center;display:grid;position:relative;top:auto;right:auto}.site-dock__item:before,.theme-toggle.theme-toggle--dock:before{z-index:-1;border-radius:inherit;background:var(--liquid);-webkit-backdrop-filter:var(--liquid-blur);backdrop-filter:var(--liquid-blur);content:"";position:absolute;inset:0}.site-dock[data-live] .site-dock__item,.site-dock[data-live] .theme-toggle.theme-toggle--dock{transition:transform 90ms ease-out,margin 90ms ease-out,color .16s}.site-dock__item svg{width:1.25rem;height:1.25rem}.site-dock__item[aria-current=page]{color:var(--ink)}.site-dock__item[aria-current=page]:after{background:var(--ink-muted);content:"";border-radius:50%;width:3px;height:3px;margin-left:-1.5px;position:absolute;bottom:-.36rem;left:50%}.site-dock__label{border:1px solid var(--bubble-edge);background:var(--bubble);-webkit-backdrop-filter:var(--bubble-blur);backdrop-filter:var(--bubble-blur);box-shadow:var(--bubble-shadow);color:var(--ink);opacity:0;pointer-events:none;transform:translate(-50%, 4px) scale(calc(1 / var(--s,1)));transform-origin:bottom;transition:opacity .14s ease, transform .2s var(--home-ease-out);white-space:nowrap;border-radius:.6rem;padding:.35rem .7rem;font-size:.75rem;font-weight:500;line-height:1.2;position:absolute;bottom:calc(100% + .6rem);left:50%}.site-dock__label:after{margin:calc(var(--bubble-tip) / -2 + 1px) 0 0 calc(var(--bubble-tip) / -2);content:"";position:absolute;top:100%;left:50%;transform:rotate(45deg)}.site-dock__item[data-peak] .site-dock__label,.site-dock__item:focus-visible .site-dock__label{opacity:1;transform:translate(-50%, 0) scale(calc(1 / var(--s,1)))}@media (hover:hover){.site-dock__item:hover .site-dock__label{opacity:1;transform:translate(-50%, 0) scale(calc(1 / var(--s,1)))}}.site-dock__item:active,.theme-toggle.theme-toggle--dock:active{--press:.9;color:var(--ink)}.site-dock [data-hop]{animation:.62s cubic-bezier(.3,0,.3,1) dock-hop}@keyframes dock-hop{0%,to{translate:0}30%{translate:0 -1.05rem}58%{translate:0}76%{translate:0 -.3rem}}.site-dock__item:focus-visible,.theme-toggle.theme-toggle--dock:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.site-dock__divider{background:rgb(var(--ink-rgb) / 20%);width:1px;height:2.2rem;margin-inline:.1rem}.profile .profile__shell,.profile--reading .profile__shell{--gutter:1rem;padding-bottom:calc(6.5rem + env(safe-area-inset-bottom));padding-top:3.75rem}.home-id{grid-template-columns:auto 1fr;gap:.9rem 1rem}.home-id__avatar{border-radius:.85rem;width:4.75rem;height:4.75rem}.home-id .profile__avatar,.home-id .profile__avatar img,.home-id .profile__avatar:after{border-radius:.6rem}.role-cycler{font-size:.9375rem}.home-section__head h2{font-size:1.75rem}.home-seam:after,.home-section__head:after{display:none}.home-pillars{grid-template-columns:1fr}.home-pillars li+li{--st-t:var(--stitch-h);--st-l:none}.home-pillar__specs{padding-top:.8rem}.home-contact{grid-template-columns:1fr 1fr;display:grid}.home-contact li+li{--st-l:none}.home-contact li:nth-child(2n){--st-l:var(--stitch-v)}.home-contact li:nth-child(n+3){--st-t:var(--stitch-h)}.home-contact li:last-child:nth-child(odd){grid-column:1/-1}.home-post{grid-template-columns:1fr auto}.home-post__arrow{display:none}.home-post__description{grid-column:1/-1}.home-projects{grid-template-columns:1fr}.home-project{min-height:0}.home-project:nth-child(odd){--st-r:none}.home-project:nth-child(2){--st-t:var(--stitch-h)}}@media (prefers-reduced-motion:reduce){.profile *,.profile :before,.profile :after,.site-bar,.site-bar *,.site-dock,.site-dock *,.theme-toggle,.theme-toggle *{transition-duration:.01ms!important;animation:none!important}::view-transition-new(root){animation:none}}
