:root{color-scheme:light;--fg: #0a0a0a;--fg-2: #404040;--fg-3: #737373;--fg-4: #a3a3a3;--rule: #ebebeb;--rule-2: #f5f5f5;--bg: #ffffff;--code-bg: #f5f5f5;--card: #fcfbf9;--card-edge: rgba(28, 22, 12, .07);--card-highlight: rgba(255, 255, 255, .9);--card-shadow: 28, 22, 12;--control-track: #f3f2ef;--control-thumb: #ffffff}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--fg: #ededed;--fg-2: #a3a3a3;--fg-3: #737373;--fg-4: #525252;--rule: #1f1f1f;--rule-2: #141414;--bg: #0a0a0a;--code-bg: #141414;--card: #131312;--card-edge: rgba(255, 255, 255, .07);--card-highlight: rgba(255, 255, 255, .04);--card-shadow: 0, 0, 0;--control-track: #141413;--control-thumb: #262624}}:root[data-theme=dark]{color-scheme:dark;--fg: #ededed;--fg-2: #a3a3a3;--fg-3: #737373;--fg-4: #525252;--rule: #1f1f1f;--rule-2: #141414;--bg: #0a0a0a;--code-bg: #141414;--card: #131312;--card-edge: rgba(255, 255, 255, .07);--card-highlight: rgba(255, 255, 255, .04);--card-shadow: 0, 0, 0;--control-track: #141413;--control-thumb: #262624}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:Geist,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.65;color:var(--fg-2);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"ss01","cv11"}::selection{background:var(--fg);color:var(--bg)}a:focus-visible{outline:1px solid var(--fg);outline-offset:3px;border-radius:2px}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}main>*{animation:rise .6s cubic-bezier(.2,.6,.2,1) both}main>*:nth-child(1){animation-delay:0s}main>*:nth-child(2){animation-delay:.04s}main>*:nth-child(3){animation-delay:.08s}main>*:nth-child(4){animation-delay:.12s}main>*:nth-child(5){animation-delay:.16s}main>*:nth-child(6){animation-delay:.2s}main>*:nth-child(7){animation-delay:.24s}main>*:nth-child(n+8){animation-delay:.28s}@media(prefers-reduced-motion:reduce){main>*{animation:none}}.site-nav{position:fixed;top:16px;left:0;right:0;z-index:20;display:flex;justify-content:center;padding:0 16px;pointer-events:none}.site-nav-bar{position:relative;display:flex;align-items:center;gap:2px;padding:4px;border-radius:14px;background:color-mix(in srgb,var(--card) 78%,transparent);-webkit-backdrop-filter:blur(14px) saturate(1.4);backdrop-filter:blur(14px) saturate(1.4);box-shadow:0 0 0 1px var(--card-edge),inset 0 1px 0 var(--card-highlight),0 1px 1px rgba(var(--card-shadow),.02),0 4px 8px -2px rgba(var(--card-shadow),.04),0 12px 24px -10px rgba(var(--card-shadow),.08);pointer-events:auto}.site-nav ul{position:relative;z-index:1;display:flex;gap:2px;margin:0;padding:0;list-style:none}.site-nav ul a{position:relative;z-index:0;display:flex;align-items:center;height:32px;padding:0 13px;border-radius:10px;font-size:13.5px;font-weight:500;letter-spacing:-.005em;color:var(--fg-3);text-decoration:none;transition:color .2s ease}.site-nav ul a:hover,.site-nav ul a[aria-current=page]{color:var(--fg)}.nav-thumb{position:absolute;inset:0;z-index:-1;border-radius:inherit;background:var(--control-thumb);box-shadow:0 0 0 1px var(--card-edge),0 1px 2px rgba(var(--card-shadow),.06),0 3px 8px -3px rgba(var(--card-shadow),.1);view-transition-name:nav-thumb}.nav-hover{position:absolute;top:4px;left:0;height:32px;width:0;border-radius:10px;background:color-mix(in srgb,var(--fg) 6%,transparent);opacity:0;pointer-events:none;transition:transform .35s cubic-bezier(.3,.7,.2,1),width .35s cubic-bezier(.3,.7,.2,1),opacity .2s ease}.nav-hover.is-visible{opacity:1}.site-nav a:focus-visible{outline:1.5px solid var(--fg);outline-offset:1px}.site-nav-avatar{display:block;width:32px;height:32px;margin-right:4px;border-radius:10px;overflow:hidden;background:var(--rule);box-shadow:0 0 0 1px var(--card-edge);transition:transform .35s cubic-bezier(.2,.6,.2,1)}.site-nav-avatar:hover{transform:rotate(-4deg)}.site-nav-avatar img{display:block;width:100%;height:100%;object-fit:cover;border-radius:inherit}@view-transition{navigation:auto}.site-nav-bar{view-transition-name:site-nav}.site-nav-avatar{view-transition-name:nav-avatar}::view-transition-group(*){animation-duration:.45s;animation-timing-function:cubic-bezier(.3,.7,.2,1)}::view-transition-old(root),::view-transition-new(root){animation-duration:.25s}::view-transition-old(site-nav){display:none}::view-transition-new(site-nav){animation:none;height:100%}::view-transition-old(message-widget){display:none}::view-transition-new(message-widget){animation:none}@keyframes nav-avatar-in{0%{opacity:0;transform:scale(.5) rotate(-14deg)}}@keyframes nav-avatar-out{to{opacity:0;transform:scale(.5) rotate(-14deg)}}::view-transition-new(nav-avatar):only-child{animation:nav-avatar-in .5s cubic-bezier(.34,1.4,.5,1) both}::view-transition-old(nav-avatar):only-child{animation:nav-avatar-out .25s cubic-bezier(.4,0,1,1) both}@media(prefers-reduced-motion:reduce){@view-transition{navigation:none}.site-nav ul a,.site-nav-avatar,.nav-hover{transition:none}.site-nav-avatar:hover{transform:none}}.site-nav+.page-post,.site-nav+.topnav{padding-top:104px}@media(max-width:640px){.site-nav+.page-post,.site-nav+.topnav{padding-top:88px}}.page-index{max-width:580px;margin:0 auto;padding:96px 28px 64px}@media(max-width:640px){.page-index{padding:88px 24px 48px}}.avatar{--avatar-shadow: 0 0 0 1px var(--card-edge), 0 1px 1px rgba(var(--card-shadow), .03), 0 3px 6px -2px rgba(var(--card-shadow), .06), 0 10px 20px -8px rgba(var(--card-shadow), .1);--avatar-shadow-hover: 0 0 0 1px var(--card-edge), 0 1px 1px rgba(var(--card-shadow), .03), 0 6px 10px -3px rgba(var(--card-shadow), .08), 0 18px 30px -12px rgba(var(--card-shadow), .16);position:relative;flex:none;display:block;width:64px;height:64px;border-radius:16px;background:var(--rule);box-shadow:var(--avatar-shadow);transition:transform .35s cubic-bezier(.2,.6,.2,1),box-shadow .35s cubic-bezier(.2,.6,.2,1)}.avatar>.ring{display:block;width:100%;height:100%;border-radius:inherit;overflow:hidden}.avatar img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.6,.2,1)}.avatar:hover{transform:translateY(-2px) rotate(-2deg);box-shadow:var(--avatar-shadow-hover)}.avatar:hover img{transform:scale(1.06)}@media(prefers-reduced-motion:reduce){.avatar,.avatar img{transition:none}.avatar:hover{transform:none}}.avatar-hi{position:absolute;top:-20px;right:-24px;display:inline-flex;align-items:center;gap:4px;padding:3px 9px 3px 7px;border-radius:9999px 9999px 9999px 4px;background:var(--control-thumb);box-shadow:0 0 0 1px var(--card-edge),0 2px 4px rgba(var(--card-shadow),.06),0 6px 14px -4px rgba(var(--card-shadow),.14);font-size:12.5px;font-weight:500;color:var(--fg);white-space:nowrap;opacity:0;transform:translate(-6px,6px) scale(.7);transform-origin:bottom left;pointer-events:none;transition:opacity .2s ease,transform .4s cubic-bezier(.34,1.4,.5,1)}.avatar:hover .avatar-hi{opacity:1;transform:rotate(2deg)}.avatar-hi .wave{display:inline-block;transform-origin:70% 80%}.avatar:hover .wave{animation:wave .9s ease-in-out .15s}@keyframes wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(16deg)}40%,80%{transform:rotate(-8deg)}}@media(prefers-reduced-motion:reduce){.avatar-hi{transition:opacity .2s ease;transform:none}.avatar:hover .wave{animation:none}}.intro{display:flex;align-items:center;gap:18px;margin:0 0 32px}.intro-text{min-width:0}.intro h1{font-size:21px;font-weight:600;line-height:1.25;letter-spacing:-.015em;margin:0 0 3px}.intro .role{margin:0;font-size:14.5px;line-height:1.5}.intro .role a{color:inherit;text-decoration:underline;text-decoration-color:var(--fg-4);text-underline-offset:3px;text-decoration-thickness:1px;transition:color .2s ease,text-decoration-color .2s ease}.intro .role a:hover{color:var(--fg);text-decoration-color:var(--fg)}.intro .role .place{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.intro .role .place svg{flex:none}@media(max-width:520px){.intro .role .sep{display:none}.intro .role .place{display:flex;margin-top:1px}}h1{font-size:15px;font-weight:500;margin:0 0 4px;letter-spacing:-.005em;color:var(--fg)}.role{font-size:15px;color:var(--fg-3);margin:0 0 28px;font-weight:400}.role .sep{display:inline-block;width:2px;height:2px;border-radius:9999px;background:currentColor;vertical-align:middle;margin:0 8px;transform:translateY(-1px)}p{margin:0 0 18px;color:var(--fg-2);text-wrap:pretty}p strong{color:var(--fg);font-weight:500}ul.lately{list-style:none;margin:0 0 22px;padding:0}ul.lately li{color:var(--fg-2);position:relative;padding:2px 0 2px 18px}ul.lately li:before{content:"";position:absolute;left:2px;top:12px;width:4px;height:1px;background:var(--fg-3)}.notes{margin-top:72px;border-top:1px solid var(--rule);padding-top:28px}.notes-label{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--fg-3);font-weight:500;margin:0 0 20px}.note{display:grid;grid-template-columns:96px 1fr auto;gap:16px;padding:12px 0;border-bottom:1px solid var(--rule);align-items:baseline}.note:last-child{border-bottom:0}.note time{font-size:13px;color:var(--fg-3);font-variant-numeric:tabular-nums;white-space:nowrap}.note a.title{font-size:15px;color:var(--fg);font-weight:400;text-decoration:none;display:inline-flex;align-items:baseline;gap:0;transition:gap .2s ease}.note a.title:after{content:"→";color:var(--fg-3);opacity:0;transform:translate(-4px);transition:opacity .2s ease,transform .2s ease,color .2s ease;font-size:13px}.note a.title:hover{gap:8px}.note a.title:hover:after{opacity:1;transform:translate(0);color:var(--fg)}@media(max-width:520px){.note{grid-template-columns:80px 1fr auto;gap:12px}}.notes-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:0 0 20px}.notes-head .notes-label{margin:0}.view-toggle{--seg-w: 30px;--seg-h: 26px;position:relative;display:inline-flex;padding:3px;border-radius:11px;background:var(--control-track);box-shadow:inset 0 0 0 1px var(--card-edge)}.view-toggle[hidden]{display:none}.view-toggle:before{content:"";position:absolute;top:3px;left:3px;width:var(--seg-w);height:var(--seg-h);border-radius:8px;background:var(--control-thumb);box-shadow:0 0 0 1px var(--card-edge),0 1px 2px rgba(var(--card-shadow),.06),0 3px 8px -3px rgba(var(--card-shadow),.1);transition:transform .35s cubic-bezier(.3,.7,.2,1)}.view-toggle[data-active=list]:before{transform:translate(var(--seg-w))}.view-toggle button{position:relative;z-index:1;display:grid;place-items:center;width:var(--seg-w);height:var(--seg-h);padding:0;border:0;border-radius:8px;background:none;color:var(--fg-4);cursor:pointer;appearance:none;transition:color .2s ease}.view-toggle button:hover{color:var(--fg-2)}.view-toggle button[aria-pressed=true]{color:var(--fg)}.view-toggle button:active svg{transform:scale(.9)}.view-toggle svg{display:block;transition:transform .15s ease}.view-toggle button:focus-visible{outline:1.5px solid var(--fg);outline-offset:1px}@media(prefers-reduced-motion:reduce){.view-toggle:before,.view-toggle svg{transition:none}}.notes-feed[data-view=list] .note-image,.notes-feed[data-view=list] .note-desc{display:none}.notes-feed[data-view=list] .note-body{display:contents}.notes-feed[data-view=grid]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}.notes-feed.is-masonry{grid-auto-rows:4px;row-gap:0}.notes-feed[data-view=grid] .note{position:relative;display:block;padding:6px;background:var(--card);border:0;border-radius:16px;box-shadow:0 0 0 1px var(--card-edge),inset 0 1px 0 var(--card-highlight),0 1px 1px rgba(var(--card-shadow),.02),0 2px 4px -1px rgba(var(--card-shadow),.03),0 8px 16px -6px rgba(var(--card-shadow),.05),0 20px 32px -16px rgba(var(--card-shadow),.06);transition:transform .35s cubic-bezier(.2,.6,.2,1),box-shadow .35s cubic-bezier(.2,.6,.2,1)}.notes-feed[data-view=grid] .note:hover{transform:translateY(-2px);box-shadow:0 0 0 1px var(--card-edge),inset 0 1px 0 var(--card-highlight),0 1px 1px rgba(var(--card-shadow),.02),0 4px 8px -2px rgba(var(--card-shadow),.04),0 14px 24px -8px rgba(var(--card-shadow),.07),0 32px 48px -20px rgba(var(--card-shadow),.09)}.notes-feed[data-view=grid] .note:focus-within{outline:1.5px solid var(--fg);outline-offset:3px}.notes-feed[data-view=grid] .note a.title:focus-visible{outline:none}.note-image{display:block;width:100%;height:auto;aspect-ratio:16 / 10;object-fit:cover;border-radius:10px;box-shadow:0 0 0 1px var(--card-edge)}.notes-feed[data-view=grid] .note-body{display:flex;flex-direction:column;gap:6px;padding:14px 14px 16px}.notes-feed[data-view=grid] .note time{font-size:11px}.notes-feed[data-view=grid] .note a.title{display:block;font-weight:500;line-height:1.4;letter-spacing:-.005em;text-wrap:pretty}.notes-feed[data-view=grid] .note a.title:after{content:"";position:absolute;inset:0;border-radius:inherit;opacity:0;transform:none}.note-desc{margin:2px 0 0;font-size:13.5px;line-height:1.55;color:var(--fg-3);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}@media(max-width:520px){.notes-feed[data-view=grid]{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){.notes-feed[data-view=grid] .note{transition:none}.notes-feed[data-view=grid] .note:hover{transform:none}}.pin-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 8px 3px 7px;border-radius:9999px;background:var(--control-track);box-shadow:inset 0 0 0 1px var(--card-edge);font-size:11px;font-weight:500;line-height:1.2;letter-spacing:.04em;text-transform:uppercase;color:var(--fg-2);white-space:nowrap;align-self:center}.pin-badge svg{display:block;flex-shrink:0;transform:rotate(35deg);color:var(--fg)}.notes-feed[data-view=grid] .pin-badge{position:absolute;top:14px;right:14px;z-index:1;pointer-events:none;background:color-mix(in srgb,var(--control-thumb) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 0 0 1px var(--card-edge),0 2px 6px -2px rgba(var(--card-shadow),.12)}@media(max-width:520px){.notes-feed[data-view=list] .pin-label,.all-notes .pin-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.notes-feed[data-view=list] .pin-badge,.all-notes .pin-badge{padding:4px}}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.uses-intro{margin-bottom:28px}.uses-jump{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 8px}.uses-jump a{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 12px;border-radius:10px;background:var(--control-track);box-shadow:inset 0 0 0 1px var(--card-edge);font-size:13.5px;font-weight:500;color:var(--fg-2);text-decoration:none;transition:color .2s ease,background-color .2s ease,box-shadow .2s ease}.uses-jump a:hover{color:var(--fg);background:var(--control-thumb);box-shadow:0 0 0 1px var(--card-edge),0 1px 2px rgba(var(--card-shadow),.06),0 3px 8px -3px rgba(var(--card-shadow),.1)}.uses-jump-count{font-size:12px;color:var(--fg-4);font-variant-numeric:tabular-nums}.uses-category{margin-top:56px;scroll-margin-top:88px}.uses-category-title{font-size:20px;font-weight:600;letter-spacing:-.012em;color:var(--fg);margin:0;padding-bottom:12px;border-bottom:1px solid var(--rule)}.uses-section-title{font-size:12px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--fg-3);margin:28px 0 12px}.uses-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.uses-grid>li{display:flex}.use-card{position:relative;flex:1;display:flex;align-items:flex-start;gap:14px;padding:12px 14px 14px 12px;border-radius:16px;background:var(--card);box-shadow:0 0 0 1px var(--card-edge),inset 0 1px 0 var(--card-highlight),0 1px 1px rgba(var(--card-shadow),.02),0 2px 4px -1px rgba(var(--card-shadow),.03),0 8px 16px -8px rgba(var(--card-shadow),.05);color:inherit;text-decoration:none;transition:transform .35s cubic-bezier(.2,.6,.2,1),box-shadow .35s cubic-bezier(.2,.6,.2,1)}a.use-card:hover{transform:translateY(-2px);box-shadow:0 0 0 1px var(--card-edge),inset 0 1px 0 var(--card-highlight),0 1px 1px rgba(var(--card-shadow),.02),0 4px 8px -2px rgba(var(--card-shadow),.04),0 14px 24px -8px rgba(var(--card-shadow),.08)}a.use-card:focus-visible{outline:1.5px solid var(--fg);outline-offset:3px}.use-media{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:10px;overflow:hidden;background:var(--control-track);box-shadow:inset 0 0 0 1px var(--card-edge);color:var(--fg-2)}.use-media img{display:block;width:100%;height:100%;object-fit:cover}.use-monogram{font-size:16px;font-weight:600;color:var(--fg-3)}.use-body{min-width:0;display:flex;flex-direction:column;gap:1px;padding-top:2px}a.use-card .use-body{padding-right:18px}.use-name{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:14.5px;font-weight:500;line-height:1.4;color:var(--fg)}.use-detail{font-size:12.5px;line-height:1.45;color:var(--fg-3)}.use-note{margin-top:5px;font-size:13px;line-height:1.5;color:var(--fg-2);text-wrap:pretty}.use-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:9999px;background:var(--control-track);box-shadow:inset 0 0 0 1px var(--card-edge);font-size:10.5px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--fg-3)}.is-favourite .use-badge{color:var(--fg)}.is-favourite .use-badge svg{color:#e0a100;fill:#e0a100}.is-retired{opacity:.6}.is-retired .use-name{text-decoration:line-through;text-decoration-color:var(--fg-4)}.is-retired .use-badge{text-decoration:none}.use-arrow{position:absolute;top:12px;right:12px;color:var(--fg-4);transition:transform .25s cubic-bezier(.2,.6,.2,1),color .2s ease}.use-arrow svg{display:block}a.use-card:hover .use-arrow{color:var(--fg);transform:translate(2px,-2px)}@media(max-width:560px){.uses-grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){.use-card,.use-arrow{transition:none}a.use-card:hover,a.use-card:hover .use-arrow{transform:none}}.about-intro{margin-bottom:8px}.about-section{margin-top:56px}.about-section-title{font-size:20px;font-weight:600;letter-spacing:-.012em;color:var(--fg);margin:0 0 8px;padding-bottom:12px;border-bottom:1px solid var(--rule)}.cv-list{position:relative;list-style:none;margin:0;padding:0 0 0 26px}.cv-list:before{content:"";position:absolute;left:5px;top:26px;bottom:26px;width:1px;background:var(--rule)}.cv-row{position:relative;display:flex;justify-content:space-between;align-items:baseline;gap:4px 16px;flex-wrap:wrap;padding:14px 0;border-bottom:1px solid var(--rule)}.cv-row:last-child{border-bottom:0}.cv-row:before{content:"";position:absolute;left:-26px;top:21px;width:11px;height:11px;border-radius:9999px;background:var(--control-thumb);box-shadow:0 0 0 1px var(--card-edge),0 1px 2px rgba(var(--card-shadow),.1)}.cv-row.is-current:before{background:var(--fg);box-shadow:0 0 0 3px var(--bg),0 0 0 4px var(--card-edge)}.cv-row-main{display:flex;flex-direction:column;gap:1px;min-width:0}.cv-role{display:inline-flex;align-items:center;gap:8px;font-size:15.5px;font-weight:500;line-height:1.4;color:var(--fg)}.cv-company{font-size:14px;color:var(--fg-3)}.cv-dates{font-size:13px;color:var(--fg-3);font-variant-numeric:tabular-nums;white-space:nowrap}.cv-early-label{margin:28px 0 0;font-size:12px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--fg-4)}.cv-list.is-early:before{top:14px;bottom:auto;height:22px;width:0;background:none;border-left:1px dashed var(--rule)}.cv-list.is-early .cv-row:before{background:var(--bg);box-shadow:inset 0 0 0 1px var(--fg-4)}.cv-list.is-early .cv-role{color:var(--fg-2);font-weight:400}.cv-list.is-early .cv-company,.cv-list.is-early .cv-dates{color:var(--fg-4)}.luv-button{--luv-red: #e5484d;--luv: 0;position:relative;display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 9px 0 7px;border:0;border-radius:9999px;background:var(--control-track);box-shadow:inset 0 0 0 1px var(--card-edge);font:inherit;font-size:11.5px;font-weight:500;color:var(--fg-3);cursor:pointer;transition:color .2s ease,background-color .2s ease,box-shadow .2s ease}.luv-button[hidden]{display:none}.luv-button:hover{color:var(--fg);background:var(--control-thumb);box-shadow:0 0 0 1px var(--card-edge),0 1px 2px rgba(var(--card-shadow),.08)}.luv-button:focus-visible{outline:1.5px solid var(--fg);outline-offset:2px}.luv-button.is-full{color:var(--luv-red);cursor:default}.luv-button.is-full:hover{background:var(--control-track);box-shadow:inset 0 0 0 1px var(--card-edge)}.luv-heart{position:relative;display:grid;width:13px;height:13px;color:var(--luv-red)}.luv-heart svg{grid-area:1 / 1;display:block}.luv-fill{clip-path:inset(calc((1 - var(--luv)) * 100%) 0 0 0);transition:clip-path .35s cubic-bezier(.3,.7,.2,1)}.luv-plus{position:absolute;left:6px;top:-2px;font-size:11px;font-weight:600;color:var(--luv-red);opacity:0;pointer-events:none}.luv-button.is-popping .luv-heart{animation:luv-pop .45s cubic-bezier(.34,1.4,.5,1)}.luv-button.is-popping .luv-plus{animation:luv-float .7s ease-out}@keyframes luv-pop{0%{transform:scale(1)}40%{transform:scale(1.35)}to{transform:scale(1)}}@keyframes luv-float{0%{opacity:0;transform:translateY(0)}20%{opacity:1}to{opacity:0;transform:translateY(-14px)}}@media(prefers-reduced-motion:reduce){.luv-fill{transition:none}.luv-button.is-popping .luv-heart,.luv-button.is-popping .luv-plus{animation:none}}.cv-now{padding:1px 7px;border-radius:9999px;background:var(--control-track);box-shadow:inset 0 0 0 1px var(--card-edge);font-size:10.5px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--fg)}.home-projects{margin-top:72px;border-top:1px solid var(--rule);padding-top:28px}.home-projects+.notes{margin-top:56px}.projects-intro{margin:-16px 0 32px;font-size:16px;color:var(--fg-3)}.project-status{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.project-status-dot{width:6px;height:6px;border-radius:9999px;background:var(--fg-4)}.project-status.is-live .project-status-dot{background:#10b981}.project-status.is-in-progress .project-status-dot{background:#e0a100}.project-status-stage{color:var(--fg-4)}.project-cover{display:grid;place-items:center;overflow:hidden;border-radius:10px;box-shadow:inset 0 0 0 1px var(--card-edge);background:radial-gradient(circle at 1px 1px,color-mix(in srgb,var(--fg) 10%,transparent) 1px,transparent 0) 0 0 / 12px 12px,var(--control-track)}.project-cover.is-card{aspect-ratio:16 / 10}.project-cover.is-thumb{flex:none;width:44px;height:44px;background:var(--control-track)}.project-cover img{display:block;width:100%;height:100%;object-fit:cover}.project-cover-tile{display:grid;place-items:center;width:56px;height:56px;border-radius:14px;background:var(--control-thumb);color:var(--fg-2);box-shadow:0 0 0 1px var(--card-edge),0 2px 4px rgba(var(--card-shadow),.06),0 8px 18px -6px rgba(var(--card-shadow),.14)}.project-cover.is-thumb .project-cover-tile{width:100%;height:100%;border-radius:0;background:none;box-shadow:none}.project-cover-letter{font-size:20px;font-weight:600;color:var(--fg-3)}.project-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.project-grid>li{display:flex}.project-card{position:relative;flex:1;display:flex;flex-direction:column;padding:6px;border-radius:16px;background:var(--card);box-shadow:0 0 0 1px var(--card-edge),inset 0 1px 0 var(--card-highlight),0 1px 1px rgba(var(--card-shadow),.02),0 2px 4px -1px rgba(var(--card-shadow),.03),0 8px 16px -6px rgba(var(--card-shadow),.05),0 20px 32px -16px rgba(var(--card-shadow),.06);transition:transform .35s cubic-bezier(.2,.6,.2,1),box-shadow .35s cubic-bezier(.2,.6,.2,1)}.project-card:hover{transform:translateY(-2px);box-shadow:0 0 0 1px var(--card-edge),inset 0 1px 0 var(--card-highlight),0 1px 1px rgba(var(--card-shadow),.02),0 4px 8px -2px rgba(var(--card-shadow),.04),0 14px 24px -8px rgba(var(--card-shadow),.07),0 32px 48px -20px rgba(var(--card-shadow),.09)}.project-card:focus-within{outline:1.5px solid var(--fg);outline-offset:3px}.project-card-body{display:flex;flex-direction:column;gap:6px;flex:1;padding:14px 12px 12px}.project-card-meta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 12px;margin:0;font-size:12.5px;color:var(--fg-3);font-variant-numeric:tabular-nums}.project-card-title{margin:0;font-size:16px;font-weight:600;letter-spacing:-.01em;line-height:1.35}.project-card-title a{color:var(--fg);text-decoration:none}.project-card-title a:focus-visible{outline:none}.project-card-title a:after{content:"";position:absolute;inset:0;border-radius:inherit}.project-card-summary{margin:0;font-size:13.5px;line-height:1.55;color:var(--fg-2);text-wrap:pretty}.project-chips{display:flex;flex-wrap:wrap;gap:5px;margin:auto 0 0;padding:8px 0 0;list-style:none}.project-chips li{padding:2px 8px;border-radius:7px;background:var(--control-track);box-shadow:inset 0 0 0 1px var(--card-edge);font-size:12px;line-height:1.5;color:var(--fg-2)}.project-chips li.is-more{color:var(--fg-3)}.carousel-nav{display:flex;gap:6px}.carousel-nav[hidden]{display:none}.carousel-button{display:grid;place-items:center;width:30px;height:30px;padding:0;border:0;border-radius:9999px;background:var(--control-thumb);box-shadow:0 0 0 1px var(--card-edge),0 1px 2px rgba(var(--card-shadow),.06);color:var(--fg);cursor:pointer;transition:opacity .2s ease,transform .25s cubic-bezier(.2,.6,.2,1)}.carousel-button:hover:not(:disabled){transform:translateY(-1px)}.carousel-button:disabled{opacity:.35;cursor:default}.carousel-button:focus-visible{outline:1.5px solid var(--fg);outline-offset:2px}.carousel-button svg{display:block}.project-carousel{--home-column: calc(min(580px, 100vw) - 56px) ;--carousel-width: min(760px, 100vw - 32px);--carousel-gutter: max(8px, (var(--carousel-width) - var(--home-column)) / 2);width:var(--carousel-width);margin:-14px 0 -44px calc(50% - var(--carousel-width) / 2);padding:14px 16px 44px var(--carousel-gutter);overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding:0 16px 0 var(--carousel-gutter);overscroll-behavior-x:contain;scrollbar-width:none;mask-image:linear-gradient(to right,#000 calc(100% - 40px),transparent)}@media(max-width:640px){.project-carousel{--home-column: calc(min(580px, 100vw) - 48px) }}.project-carousel::-webkit-scrollbar{display:none}.project-carousel.is-scrolled{mask-image:linear-gradient(to right,transparent,#000 40px,#000 calc(100% - 40px),transparent)}.project-carousel.is-scrolled.is-end{mask-image:linear-gradient(to right,transparent,#000 40px)}.project-carousel:focus-visible{outline:1.5px solid var(--fg);outline-offset:-2px;border-radius:16px}.project-track{display:flex;gap:12px;width:max-content;margin:0;padding:0;list-style:none}.project-track>li{display:flex;width:248px;scroll-snap-align:start}.project-track>li:last-child{scroll-snap-align:end}.project-track .project-card-summary{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.home-projects .more-link{margin-top:20px}@media(prefers-reduced-motion:reduce){.carousel-button{transition:none}.carousel-button:hover:not(:disabled){transform:none}}.project-meta{display:flex;flex-wrap:wrap;gap:6px 14px}.page-project .post-title{margin-bottom:12px}.project-lead{margin:0 0 28px;font-size:18px;line-height:1.55;color:var(--fg-2);text-wrap:pretty}.project-hero{margin:0 0 20px;padding:6px;border-radius:16px;background:var(--card);box-shadow:0 0 0 1px var(--card-edge),inset 0 1px 0 var(--card-highlight),0 2px 4px -1px rgba(var(--card-shadow),.03),0 8px 16px -6px rgba(var(--card-shadow),.05),0 20px 32px -16px rgba(var(--card-shadow),.06)}.project-hero img{display:block;width:100%;height:auto;border-radius:10px}.project-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 24px;margin:0 0 40px;padding:18px 20px 20px;border-radius:16px;background:var(--card);box-shadow:0 0 0 1px var(--card-edge),inset 0 1px 0 var(--card-highlight),0 1px 1px rgba(var(--card-shadow),.02),0 2px 4px -1px rgba(var(--card-shadow),.03),0 8px 16px -6px rgba(var(--card-shadow),.05)}.project-facts>div{min-width:0}.project-facts .is-wide{grid-column:1 / -1}.project-facts dt{margin:0 0 4px;font-size:11.5px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--fg-3)}.project-facts dd{margin:0;font-size:14.5px;color:var(--fg)}.project-facts .project-chips{padding:0}.project-links{display:flex;flex-wrap:wrap;gap:8px}.project-link{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 11px 0 12px;border-radius:9px;background:var(--control-thumb);box-shadow:0 0 0 1px var(--card-edge),0 1px 2px rgba(var(--card-shadow),.05),0 3px 8px -4px rgba(var(--card-shadow),.1);font-size:13px;font-weight:500;color:var(--fg);text-decoration:none;transition:transform .25s cubic-bezier(.2,.6,.2,1),box-shadow .25s ease}.project-link svg{color:var(--fg-3)}.project-link:hover{transform:translateY(-1px);box-shadow:0 0 0 1px var(--card-edge),0 2px 4px rgba(var(--card-shadow),.06),0 6px 14px -6px rgba(var(--card-shadow),.14)}.project-link:focus-visible{outline:1.5px solid var(--fg);outline-offset:2px}.page-project .more-link{margin-top:48px}@media(max-width:560px){.project-grid{grid-template-columns:1fr}.project-lead{font-size:17px}}@media(prefers-reduced-motion:reduce){.project-card,.project-link{transition:none}.project-card:hover,.project-link:hover{transform:none}}.whw-demo,.sig-demo{--sig-width: min(1128px, 100vw - 48px);display:grid;grid-template-columns:minmax(0,440px) minmax(0,1fr);gap:28px;width:var(--sig-width);padding:16px;border-radius:16px;background:var(--card);box-shadow:0 0 0 1px var(--card-edge),inset 0 1px 0 var(--card-highlight),0 1px 1px rgba(var(--card-shadow),.02),0 2px 4px -1px rgba(var(--card-shadow),.03),0 8px 16px -6px rgba(var(--card-shadow),.05),0 20px 32px -16px rgba(var(--card-shadow),.06)}.prose figure.sig-demo,figure.sig-demo,.prose figure.whw-demo,figure.whw-demo{margin:40px 0 40px calc(50% - var(--sig-width) / 2)}.sig-demo [hidden]{display:none!important}.sig-stage{align-self:start}.sig-canvas{display:block;width:100%;height:auto;aspect-ratio:4 / 5;border-radius:8px;background:#a3400f;box-shadow:0 0 0 1px var(--card-edge),0 4px 12px -4px rgba(var(--card-shadow),.25)}.sig-controls{display:flex;flex-direction:column;gap:18px;min-width:0;padding:6px 8px 0 0;transition:opacity .2s ease}.sig-demo:not(.is-ready) .sig-controls{opacity:.5;pointer-events:none}.sig-field{display:flex;flex-direction:column;gap:6px}.sig-label{font-size:11.5px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--fg-3)}.sig-label-inline{font-size:13px;color:var(--fg-3);margin-right:2px}.sig-seg{display:flex;flex-wrap:wrap;gap:2px;width:fit-content;max-width:100%;padding:3px;border-radius:11px;background:var(--control-track);box-shadow:inset 0 0 0 1px var(--card-edge)}.sig-seg button{height:28px;padding:0 11px;border:0;border-radius:8px;background:none;font:inherit;font-size:13px;font-weight:500;color:var(--fg-3);cursor:pointer;transition:color .2s ease,background-color .2s ease,box-shadow .2s ease}.sig-seg button:hover{color:var(--fg)}.sig-seg button[aria-pressed=true]{color:var(--fg);background:var(--control-thumb);box-shadow:0 0 0 1px var(--card-edge),0 1px 2px rgba(var(--card-shadow),.06),0 3px 8px -3px rgba(var(--card-shadow),.1)}.sig-input{width:100%;resize:vertical;min-height:72px;padding:9px 11px;border:0;border-radius:10px;background:var(--control-track);box-shadow:inset 0 0 0 1px var(--card-edge);font:inherit;font-size:14px;line-height:1.45;color:var(--fg)}.sig-input:focus{outline:1.5px solid var(--fg);outline-offset:1px}.sig-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px}.sig-size{display:inline-flex;align-items:center;gap:6px}.sig-button{height:28px;min-width:36px;padding:0 8px;border:0;border-radius:8px;background:var(--control-thumb);box-shadow:0 0 0 1px var(--card-edge),0 1px 2px rgba(var(--card-shadow),.05);font:inherit;font-size:13px;font-weight:500;color:var(--fg);cursor:pointer}.sig-button:active{transform:translateY(1px)}.sig-range{width:100%;margin:4px 0 0;accent-color:var(--fg)}.sig-download{display:inline-flex;align-items:center;gap:7px;width:fit-content;height:34px;margin-top:auto;padding:0 13px;border:0;border-radius:10px;background:var(--fg);font:inherit;font-size:13.5px;font-weight:500;color:var(--bg);cursor:pointer;transition:transform .25s cubic-bezier(.2,.6,.2,1),opacity .2s ease}.sig-download:hover{transform:translateY(-1px)}.sig-seg button:focus-visible,.sig-button:focus-visible,.sig-download:focus-visible,.sig-range:focus-visible{outline:1.5px solid var(--fg);outline-offset:2px}.sig-caption,.sig-noscript{grid-column:1 / -1;margin:0;font-size:12.5px;line-height:1.5;color:var(--fg-3);text-align:center}@media(max-width:760px){.sig-demo{grid-template-columns:1fr;gap:20px;padding:14px}.sig-stage{max-width:360px;justify-self:center;width:100%}}@media(prefers-reduced-motion:reduce){.sig-download{transition:none}.sig-download:hover{transform:none}}.whw-demo{grid-template-columns:minmax(0,420px) minmax(0,1fr);--whw-easy: #10b981;--whw-moderate: #e0a100;--whw-tough: #f97316;--whw-brutal: #e5484d}.whw-demo [hidden]{display:none!important}.whw-map{align-self:start;min-width:0}.whw-svg{display:block;width:100%;height:auto;border-radius:10px;background:var(--control-track);box-shadow:0 0 0 1px var(--card-edge);touch-action:none;cursor:crosshair;user-select:none}.whw-base{filter:saturate(.7)}.whw-base.is-dark{display:none}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .whw-base.is-light{display:none}:root:not([data-theme=light]) .whw-base.is-dark{display:inline}}:root[data-theme=dark] .whw-base.is-light{display:none}:root[data-theme=dark] .whw-base.is-dark{display:inline}.whw-route{fill:none;stroke:var(--fg);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round;opacity:.45}.whw-leg{fill:none;stroke-width:4;stroke-linejoin:round;stroke-linecap:round}.whw-leg.is-easy{stroke:var(--whw-easy)}.whw-leg.is-moderate{stroke:var(--whw-moderate)}.whw-leg.is-tough{stroke:var(--whw-tough)}.whw-leg.is-brutal{stroke:var(--whw-brutal)}.whw-snapline{stroke:var(--fg);stroke-width:1.5;stroke-dasharray:3 3;display:none}.whw-stop circle{fill:var(--card);stroke:var(--fg-2);stroke-width:1.5}.whw-stop.is-selected circle,.whw-stop.is-endpoint circle{fill:var(--fg);stroke:var(--card);stroke-width:2}.whw-stop text{font-size:11.5px;font-weight:600;fill:var(--fg);stroke:var(--card);stroke-width:3.5px;stroke-linejoin:round;paint-order:stroke;pointer-events:none;display:none}.whw-stop.is-selected text,.whw-stop.is-endpoint text{display:inline}.whw-marker{fill:var(--fg);stroke:var(--card);stroke-width:3;filter:drop-shadow(0 2px 3px rgba(0,0,0,.3));pointer-events:none}.whw-credit{margin:8px 2px 0;font-size:11.5px;color:var(--fg-3)}.whw-credit a{color:inherit}.whw-panel{display:flex;flex-direction:column;gap:28px;min-width:0;padding:6px 8px 0 0}.whw-demo:not(.is-ready) [data-toggle],.whw-demo:not(.is-ready) [data-position]{pointer-events:none;opacity:.5}.whw-section{display:flex;flex-direction:column;gap:12px}.whw-section-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.whw-demo .whw-label{margin:0;font-size:11.5px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--fg-3)}.whw-hint{font-size:12.5px;color:var(--fg-3)}.whw-readout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0}.whw-readout>div{padding:10px 12px;border-radius:10px;background:var(--control-track);box-shadow:inset 0 0 0 1px var(--card-edge);min-width:0}.whw-readout dt{font-size:12px;color:var(--fg-3);margin:0 0 2px}.whw-readout dd{margin:0;font-size:15px;font-weight:500;color:var(--fg);font-variant-numeric:tabular-nums}.whw-offtrack{margin:0;padding:7px 11px;border-radius:9px;background:color-mix(in srgb,var(--whw-brutal) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--whw-brutal) 35%,transparent);font-size:13px;font-weight:500;color:var(--fg)}.whw-chips{display:flex;flex-wrap:wrap;gap:6px}.whw-chip{height:28px;padding:0 10px;border:0;border-radius:8px;background:var(--control-track);box-shadow:inset 0 0 0 1px var(--card-edge);font:inherit;font-size:12.5px;font-weight:500;color:var(--fg-3);cursor:pointer;transition:color .2s ease,background-color .2s ease,box-shadow .2s ease}.whw-chip:hover{color:var(--fg)}.whw-chip[aria-pressed=true]{color:var(--fg);background:var(--control-thumb);box-shadow:0 0 0 1px var(--card-edge),0 1px 2px rgba(var(--card-shadow),.06),0 3px 8px -3px rgba(var(--card-shadow),.1)}.whw-chip:focus-visible{outline:1.5px solid var(--fg);outline-offset:2px}.whw-demo .whw-legs-list{list-style:none;margin:0;padding:0}.whw-demo .whw-legs-list li{display:grid;grid-template-columns:52px minmax(0,1fr) auto 84px;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--rule);font-size:13.5px}.whw-legs-list li:last-child{border-bottom:0}.whw-day{font-size:12px;color:var(--fg-3);font-variant-numeric:tabular-nums}.whw-leg-name{color:var(--fg);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whw-leg-km{color:var(--fg-2);font-variant-numeric:tabular-nums;text-align:right}.whw-difficulty{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--fg-2);text-transform:capitalize}.whw-difficulty:before{content:"";width:8px;height:8px;border-radius:9999px;background:var(--whw-dot, var(--fg-4))}.whw-legs-list .is-easy{--whw-dot: var(--whw-easy)}.whw-legs-list .is-moderate{--whw-dot: var(--whw-moderate)}.whw-legs-list .is-tough{--whw-dot: var(--whw-tough)}.whw-legs-list .is-brutal{--whw-dot: var(--whw-brutal)}@media(max-width:760px){.whw-demo{grid-template-columns:1fr}.whw-map{max-width:420px;width:100%;justify-self:center}.whw-panel{padding:0}}@media(max-width:480px){.whw-demo .whw-legs-list li{grid-template-columns:44px minmax(0,1fr) auto 8px;gap:8px}.whw-difficulty{font-size:0;gap:0}}.msg{position:fixed;right:20px;bottom:20px;z-index:30;view-transition-name:message-widget}.msg-trigger{position:relative;display:grid;place-items:center;width:48px;height:48px;border-radius:9999px;background:var(--control-thumb);color:var(--fg);box-shadow:0 0 0 1px var(--card-edge),0 2px 4px rgba(var(--card-shadow),.06),0 10px 24px -8px rgba(var(--card-shadow),.22);cursor:pointer;text-decoration:none;transition:transform .3s cubic-bezier(.2,.6,.2,1),box-shadow .3s ease}.msg-trigger:hover{transform:translateY(-2px)}.msg-trigger:focus-visible{outline:1.5px solid var(--fg);outline-offset:3px}.msg-trigger svg{position:absolute;transition:opacity .2s ease,transform .3s cubic-bezier(.3,.7,.2,1)}.msg-icon-close{opacity:0;transform:rotate(-90deg) scale(.6)}.msg.is-open .msg-icon-open{opacity:0;transform:rotate(90deg) scale(.6)}.msg.is-open .msg-icon-close{opacity:1;transform:none}.msg-panel{position:absolute;right:0;bottom:60px;width:340px;padding:18px;border-radius:16px;background:var(--card);box-shadow:0 0 0 1px var(--card-edge),inset 0 1px 0 var(--card-highlight),0 2px 4px -1px rgba(var(--card-shadow),.04),0 12px 24px -8px rgba(var(--card-shadow),.12),0 28px 48px -20px rgba(var(--card-shadow),.18);transform-origin:bottom right;animation:msg-in .28s cubic-bezier(.34,1.2,.5,1)}.msg-panel[hidden]{display:none}@keyframes msg-in{0%{opacity:0;transform:translateY(8px) scale(.96)}}.msg-form{display:flex;flex-direction:column;gap:10px}.msg-head{margin-bottom:4px}.msg-title{margin:0 0 2px;font-size:15px;font-weight:600;color:var(--fg)}.msg-sub{margin:0;font-size:13px;line-height:1.5;color:var(--fg-3)}.msg-input{width:100%;padding:9px 11px;border:0;border-radius:10px;background:var(--control-track);box-shadow:inset 0 0 0 1px var(--card-edge);font:inherit;font-size:14px;line-height:1.45;color:var(--fg)}.msg-input::placeholder{color:var(--fg-4)}.msg-input:focus{outline:1.5px solid var(--fg);outline-offset:1px}.msg-textarea{resize:none;min-height:96px}.msg-trap{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.msg-turnstile:empty{display:none}.msg-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:2px}.msg-status{margin:0;font-size:12.5px;line-height:1.4;color:var(--fg-3)}.msg-status[data-kind=error]{color:#e5484d}.msg-status[data-kind=ok]{color:var(--fg)}.msg-send{flex:none;display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 14px;border:0;border-radius:10px;background:var(--fg);color:var(--bg);font:inherit;font-size:13.5px;font-weight:500;cursor:pointer;transition:transform .25s cubic-bezier(.2,.6,.2,1),opacity .2s ease}.msg-send:hover:not(:disabled){transform:translateY(-1px)}.msg-send:disabled{opacity:.5;cursor:default}.msg-send:focus-visible{outline:1.5px solid var(--fg);outline-offset:2px}@media(max-width:480px){.msg{right:16px;bottom:16px}.msg-panel{position:fixed;left:12px;right:12px;bottom:76px;width:auto}}@media(prefers-reduced-motion:reduce){.msg-panel{animation:none}.msg-trigger,.msg-trigger svg,.msg-send{transition:none}.msg-trigger:hover,.msg-send:hover:not(:disabled){transform:none}}.more-link{display:flex;width:fit-content;align-items:center;gap:8px;height:36px;margin:28px auto 0;padding:0 12px 0 16px;border-radius:10px;background:var(--control-thumb);box-shadow:0 0 0 1px var(--card-edge),0 1px 2px rgba(var(--card-shadow),.05),0 4px 10px -4px rgba(var(--card-shadow),.1);font-size:13.5px;font-weight:500;color:var(--fg);text-decoration:none;transition:transform .35s cubic-bezier(.2,.6,.2,1),box-shadow .35s cubic-bezier(.2,.6,.2,1)}.more-link:hover{transform:translateY(-1px);box-shadow:0 0 0 1px var(--card-edge),0 2px 4px rgba(var(--card-shadow),.06),0 8px 18px -6px rgba(var(--card-shadow),.14)}.more-link:focus-visible{outline:1.5px solid var(--fg);outline-offset:3px}.more-link-count{padding:1px 7px;border-radius:9999px;background:var(--control-track);box-shadow:inset 0 0 0 1px var(--card-edge);font-size:11.5px;color:var(--fg-3);font-variant-numeric:tabular-nums}.more-link-arrow{display:block;color:var(--fg-3);transition:transform .25s cubic-bezier(.2,.6,.2,1),color .2s ease}.more-link:hover .more-link-arrow{color:var(--fg);transform:translate(2px)}@media(prefers-reduced-motion:reduce){.more-link,.more-link-arrow{transition:none}.more-link:hover,.more-link:hover .more-link-arrow{transform:none}}.site-footer{max-width:620px;margin:0 auto;padding:0 28px 48px}.page-index+.site-footer{max-width:580px}.site-footer-inner{display:flex;justify-content:space-between;align-items:center;gap:16px;padding-top:20px;border-top:1px solid var(--rule);font-size:12.5px;color:var(--fg-3)}.site-footer-end{display:flex;align-items:center;gap:14px}.site-footer-social{display:flex;gap:2px;margin:0 0 0 -8px;padding:0;list-style:none}.site-footer-social a{display:grid;place-items:center;width:32px;height:32px;border-radius:10px;color:var(--fg-3);transition:color .2s ease,background-color .2s ease,transform .25s cubic-bezier(.2,.6,.2,1)}.site-footer-social a:hover{color:var(--fg);background:color-mix(in srgb,var(--fg) 6%,transparent);transform:translateY(-1px)}.site-footer-social a:focus-visible{outline:1.5px solid var(--fg);outline-offset:1px}.site-footer-social svg{display:block}@media(prefers-reduced-motion:reduce){.site-footer-social a{transition:none}.site-footer-social a:hover{transform:none}}@media(max-width:640px){.site-footer{padding:0 24px 40px}}.theme-switch{position:relative;flex:none;width:48px;height:26px;padding:0;border:0;border-radius:9999px;background:var(--control-track);box-shadow:inset 0 0 0 1px var(--card-edge),inset 0 1px 2px rgba(var(--card-shadow),.06);cursor:pointer;appearance:none;view-transition-name:theme-switch}.theme-switch-track{position:absolute;inset:0;display:flex;align-items:center;justify-content:space-between;padding:0 7px;color:var(--fg-4)}.theme-switch-track svg,.theme-switch-knob svg{display:block}.theme-switch-knob{position:absolute;top:3px;left:3px;display:grid;place-items:center;width:20px;height:20px;border-radius:9999px;background:var(--control-thumb);color:var(--fg);box-shadow:0 0 0 1px var(--card-edge),0 1px 2px rgba(var(--card-shadow),.1),0 3px 6px -2px rgba(var(--card-shadow),.14);transition:transform .4s cubic-bezier(.3,.7,.2,1)}.theme-switch-knob svg{grid-area:1 / 1;transition:opacity .25s ease,transform .4s cubic-bezier(.3,.7,.2,1)}.knob-moon{opacity:0;transform:rotate(-90deg) scale(.6)}.theme-switch[aria-checked=true] .theme-switch-knob{transform:translate(22px)}.theme-switch[aria-checked=true] .knob-sun{opacity:0;transform:rotate(90deg) scale(.6)}.theme-switch[aria-checked=true] .knob-moon{opacity:1;transform:none}.theme-switch:hover .theme-switch-knob{box-shadow:0 0 0 1px var(--card-edge),0 1px 2px rgba(var(--card-shadow),.12),0 4px 10px -2px rgba(var(--card-shadow),.2)}.theme-switch:active .theme-switch-knob{width:24px}.theme-switch[aria-checked=true]:active .theme-switch-knob{transform:translate(18px)}.theme-switch:focus-visible{outline:1.5px solid var(--fg);outline-offset:3px}::view-transition-old(theme-switch){display:none}::view-transition-new(theme-switch){animation:none}@media(prefers-reduced-motion:reduce){.theme-switch-knob,.theme-switch-knob svg{transition:none}}.tag-list{margin-top:8px}.tag-row{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:12px 0;border-bottom:1px solid var(--rule);text-decoration:none;transition:color .2s ease}.tag-row:last-child{border-bottom:0}.tag-name{font-size:15px;color:var(--fg);transition:color .2s ease}.tag-count{font-size:13px;color:var(--fg-3);font-variant-numeric:tabular-nums;flex-shrink:0}.tag-row:hover .tag-name{color:var(--fg-3)}.topnav{max-width:620px;margin:0 auto;padding:28px 28px 0}.back{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:var(--fg-3);text-decoration:none;transition:color .2s ease,gap .2s ease;padding:6px 0}.back .arrow{display:inline-block;transition:transform .2s ease}.back:hover{color:var(--fg)}.back:hover .arrow{transform:translate(-3px)}.page-post{max-width:620px;margin:0 auto;padding:32px 28px 64px;font-size:16px;line-height:1.7}@media(max-width:640px){.topnav{padding:20px 24px 0}.page-post{padding:24px 24px 48px;font-size:15.5px}}.post-meta{font-size:13px;letter-spacing:0;color:var(--fg-3);margin:0 0 14px;font-variant-numeric:tabular-nums;display:flex;gap:14px;align-items:center;flex-wrap:wrap}.post-meta .sep{width:2px;height:2px;border-radius:9999px;background:currentColor;display:inline-block}h1.post-title{font-size:30px;line-height:1.2;letter-spacing:-.018em;font-weight:600;color:var(--fg);margin:0 0 32px;text-wrap:balance}@media(max-width:640px){h1.post-title{font-size:26px}}.prose p{margin:0 0 22px;text-wrap:pretty}.prose strong{color:var(--fg);font-weight:500}.prose em{font-style:italic}.prose a{color:var(--fg);text-decoration:underline;text-decoration-color:var(--fg-4);text-underline-offset:3px;text-decoration-thickness:1px;transition:text-decoration-color .15s ease}.prose a:hover{text-decoration-color:var(--fg)}.prose h2{font-size:18px;font-weight:600;color:var(--fg);margin:44px 0 14px;letter-spacing:-.01em;line-height:1.35}.prose h3{font-size:16px;font-weight:600;color:var(--fg);margin:32px 0 10px;letter-spacing:-.005em}.prose ul,.prose ol{margin:0 0 22px;padding-left:22px}.prose ul{list-style:none;padding-left:0}.prose ul li{position:relative;padding:2px 0 2px 20px}.prose ul li:before{content:"";position:absolute;left:4px;top:14px;width:4px;height:1px;background:var(--fg-3)}.prose ol li{padding:2px 0}.prose li>p{margin:0 0 6px}.prose blockquote{margin:24px 0;padding:2px 0 2px 18px;border-left:1px solid var(--rule);color:var(--fg-3);font-style:normal}.prose blockquote p:last-child{margin-bottom:0}.prose hr{border:0;border-top:1px solid var(--rule);margin:40px 0}.prose :not(pre)>code{font-family:Geist Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.88em;background:var(--code-bg);color:var(--fg);padding:1px 6px;border-radius:4px;border:1px solid var(--rule);white-space:nowrap}.prose pre{font-family:Geist Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;line-height:1.65;background:var(--code-bg)!important;border:1px solid var(--rule);border-radius:8px;padding:20px;margin:0 0 28px;overflow-x:auto}.prose pre code{background:transparent!important;border:0;padding:0;font-size:inherit;color:inherit}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .astro-code,:root:not([data-theme=light]) .astro-code span{color:var(--shiki-dark)!important}}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important}.prose pre span{background:transparent!important}.prose img{display:block;max-width:100%;height:auto;border-radius:6px;border:1px solid var(--rule);margin:28px 0}.prose figure{margin:28px 0}.prose figcaption{font-size:12.5px;color:var(--fg-3);margin-top:10px;letter-spacing:0}.prose table{width:100%;border-collapse:collapse;font-size:14px;margin:0 0 24px}.prose th,.prose td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--rule)}.prose th{color:var(--fg-3);font-weight:500;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.lb-figure{margin:28px 0}.lb-trigger{display:block;width:100%;position:relative;border-radius:6px;overflow:hidden;background:transparent;border:0;padding:0;margin:0;cursor:zoom-in;appearance:none;-webkit-appearance:none;line-height:0;font-size:0}.lb-thumb{display:block;width:100%;height:auto;border:1px solid var(--rule);transition:opacity .2s ease}.lb-trigger:hover .lb-thumb{opacity:.88}.lb-figure .lb-thumb{margin:0}.lb-figcaption{margin-top:10px;font-size:12.5px;color:var(--fg-3);letter-spacing:0;text-align:center}.lb-figcaption cite{font-style:normal}.lb-figcaption cite a{color:var(--fg-3);text-decoration:underline;text-decoration-color:var(--fg-4);text-underline-offset:3px;text-decoration-thickness:1px;transition:color .15s ease}.lb-figcaption cite a:hover{color:var(--fg)}.lb-dialog{border:0;padding:0;background:transparent;max-width:100vw;max-height:100dvh;width:100vw;height:100dvh;outline:none}.lb-dialog[open]{display:flex;align-items:center;justify-content:center;animation:lb-fade .2s ease both}@keyframes lb-fade{0%{opacity:0}to{opacity:1}}.lb-dialog::backdrop{background:#0a0a0aeb;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.lb-close{position:fixed;top:20px;right:24px;background:transparent;border:0;color:#fff6;font-size:18px;line-height:1;cursor:pointer;padding:6px 8px;border-radius:4px;transition:color .15s ease;font-family:Geist,-apple-system,sans-serif}.lb-close:hover{color:#ffffffe6}.lb-media{display:flex;flex-direction:column;align-items:center;gap:16px;max-width:min(90vw,1200px);max-height:90dvh;margin:0;padding:0;animation:lb-img-in .25s cubic-bezier(.2,.6,.2,1) both}@keyframes lb-img-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.lb-img{display:block;max-width:100%;max-height:calc(90dvh - 56px);object-fit:contain;border-radius:4px}.lb-cap{font-size:12.5px;color:#fff6;letter-spacing:0;text-align:center;max-width:560px;margin:0;padding:0}.lb-cap cite{font-style:normal}.lb-cap cite a{color:#ffffff8c;text-decoration:underline;text-decoration-color:#fff3;text-underline-offset:3px;transition:color .15s ease}.lb-cap cite a:hover{color:#ffffffe6}.gallery-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:28px 0;align-items:start}figure.gallery-item{margin:0}.gallery-item .lb-trigger{border-radius:4px;aspect-ratio:1}.gallery-item .lb-thumb{width:100%;height:100%;object-fit:cover;margin:0}@media(max-width:480px){.gallery-grid{grid-template-columns:1fr}}@media(min-width:900px){figure.lb-figure,.gallery-grid{width:860px;margin-left:-148px}}.tweet-embed{margin:28px 0;display:flex;justify-content:center}.tweet-embed .twitter-tweet{margin:0!important}.post-upvote{margin-top:48px;display:flex;flex-direction:column;align-items:center;gap:10px}.upvote-prompt{font-size:12.5px;letter-spacing:0;color:var(--fg-3);margin:0}.bubbles-vote-btn{display:inline-flex!important;align-items:center!important;gap:7px!important;padding:6px 16px!important;border:1px solid var(--rule)!important;border-radius:9999px!important;background:transparent!important;font-family:inherit!important;font-size:13px!important;color:var(--fg-3)!important;text-decoration:none!important;transition:border-color .2s ease,color .2s ease!important;cursor:pointer!important}.bubbles-vote-btn:hover{border-color:var(--fg-3)!important;color:var(--fg)!important}.bubbles-vote-tri{font-size:9px!important;color:var(--fg-4)!important;transition:color .2s ease!important;line-height:1!important}.bubbles-vote-btn:hover .bubbles-vote-tri{color:#10b981!important}.bubbles-vote-num{font-variant-numeric:tabular-nums!important;font-weight:500!important}
