@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-italic-BicUS2cM.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-italic-BfTTTDIL.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-italic-Py8at3oI.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist;src:url(/assets/22e7581be5797dc0.woff2) format("woff2");font-weight:100 900;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/9ed162b322c266e3.woff2) format("woff2");font-weight:100 900;font-display:swap}:root{color-scheme:dark;--bg: #0f0e0e;--ink: #fff;--muted: #8a8a8a;--muted-2: #b5b5b5;--line: #272727;--soft: #171717;--chip: #141414;--card: #111;--green: #22c55e;--font-sans: Geist, Arial, Helvetica, sans-serif;--font-display: "Fraunces Variable", Georgia, "Times New Roman", serif;--font-mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--text-2xs: .6875rem;--text-xs: .75rem;--text-sm: .8125rem;--text-md: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--text-display: clamp(1.75rem, 1.45rem + 1.1vw, 2.375rem);--text-section: clamp(1.625rem, 1.5rem + .45vw, 1.875rem);--text-quote: clamp(1.375rem, 1.1rem + 1.1vw, 1.875rem);--leading-tight: 1.12;--leading-snug: 1.25;--leading-body: 1.55;--leading-relaxed: 1.65;--leading-quote: 1.48;--tracking-display: -.03em;--tracking-tight: -.02em;--tracking-normal: 0;--tracking-role: .01em;--tracking-label: .08em;--tracking-caps: .12em;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--display-opsz: 72;--display-soft: 40;--display-settings: "opsz" var(--display-opsz), "SOFT" var(--display-soft), "WONK" 0}:root[data-theme=light]{color-scheme:light;--bg: #e8d9c0;--ink: #2b2118;--muted: #66543f;--muted-2: #493a2d;--line: #c8b392;--soft: #dfcbaa;--chip: #e1d0b5;--card: #ede0cc;--green: #58704f;--display-soft: 48}*{box-sizing:border-box}html{scroll-behavior:auto;background:var(--bg);scrollbar-gutter:stable;font-size:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;min-width:320px;min-height:100vh;background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-base);font-weight:var(--weight-regular);line-height:var(--leading-body);letter-spacing:var(--tracking-normal);font-kerning:normal;font-synthesis:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}.font-display,.profile-copy h1,.title-frame h2,.contact-title-frame>h2,.tech-frame h2,.activity-frame h2,.project-title-row h3,.contact-copy strong,.command-shortcut-head h2,.project-tooltip-copy strong,.quote-frame blockquote{font-family:var(--font-display);font-optical-sizing:auto;font-variation-settings:var(--display-settings);font-weight:var(--weight-regular)}button,a{color:inherit;font:inherit}button{border:0;background:none}a{text-decoration:none}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:where(a,button,input,textarea,[tabindex]):focus-visible{outline:2px solid color-mix(in srgb,var(--ink) 78%,transparent);outline-offset:3px}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:2}.theme-transition-wash{position:fixed;z-index:9999;width:2px;height:2px;border-radius:50%;pointer-events:none;will-change:transform,opacity}.site-shell{min-height:100vh;padding-top:49px;background-image:repeating-linear-gradient(0deg,transparent 0,transparent 47px,color-mix(in srgb,var(--line) 45%,transparent) 48px);background-size:100% 48px}.band{width:100%;border-bottom:1px dashed var(--line);background:var(--bg)}.frame{width:min(800px,100%);margin:0 auto;border-left:1px dashed var(--line);border-right:1px dashed var(--line);position:relative}.site-header{height:49px;position:fixed;z-index:50;top:0;left:0;width:100%;background:color-mix(in srgb,var(--bg) 94%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px dashed var(--line)}.header-frame{height:48px;display:flex;align-items:center;justify-content:space-between;padding:0 12px}.desktop-nav{display:flex;align-items:center;gap:20px;height:100%;font-size:var(--text-md);font-weight:var(--weight-medium);letter-spacing:.005em;color:var(--muted-2)}.desktop-nav>a{position:relative;padding:13px 0 11px}.desktop-nav>a:hover{color:var(--ink)}.nav-command-cluster{height:100%;display:flex;align-items:center;gap:8px}.command-trigger{height:28px;padding:0 7px;display:flex;align-items:center;gap:5px;border:1px solid var(--line);border-radius:6px;color:var(--muted-2);background:color-mix(in srgb,var(--bg) 90%,var(--ink) 3%);cursor:pointer;transition:border-color .18s ease,color .18s ease,transform .18s ease}.command-trigger:hover,.command-trigger:focus-visible{color:var(--ink);border-color:color-mix(in srgb,var(--ink) 32%,var(--line));transform:translateY(-1px);outline:none}.command-trigger svg{font-size:13px}.command-trigger span{font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:var(--weight-medium);line-height:1;letter-spacing:var(--tracking-label)}[cmdk-overlay]{position:fixed;z-index:150;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,#000 64%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:command-overlay-in .18s ease-out both}[cmdk-dialog]{position:fixed;z-index:151;top:17vh;left:50%;width:min(520px,calc(100vw - 32px));max-height:min(520px,70vh);overflow:hidden;border:1px solid color-mix(in srgb,var(--ink) 16%,var(--line));border-radius:12px;color:var(--ink);background:color-mix(in srgb,var(--bg) 96%,var(--ink) 4%);box-shadow:0 28px 90px #0000008c,0 0 0 1px #ffffff06 inset;transform:translate(-50%);animation:command-dialog-in .28s cubic-bezier(.22,1,.36,1) both}.command-input-row{height:56px;padding:0 16px;display:flex;align-items:center;gap:10px;border-bottom:1px dashed var(--line)}.command-input-row>svg{flex:0 0 auto;color:var(--muted-2);font-size:17px}[cmdk-input]{min-width:0;flex:1;border:0;outline:0;color:var(--ink);background:transparent;font-family:var(--font-sans);font-size:.9375rem;line-height:1.45}[cmdk-input]::placeholder{color:var(--muted)}.command-palette kbd{min-width:22px;height:20px;padding:0 5px;display:inline-grid;place-items:center;border:1px solid var(--line);border-radius:4px;color:var(--muted);background:var(--chip);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:var(--weight-medium);line-height:1;letter-spacing:.02em;box-shadow:0 1px color-mix(in srgb,var(--ink) 8%,transparent)}[cmdk-list]{max-height:340px;overflow-y:auto;padding:8px}[cmdk-empty]{padding:30px 12px;text-align:center;color:var(--muted);font-size:var(--text-sm)}[cmdk-group-heading]{padding:8px 9px 6px;color:var(--muted);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:var(--weight-semibold);line-height:1.3;letter-spacing:var(--tracking-caps);text-transform:uppercase}[cmdk-item]{min-height:42px;padding:0 10px;display:flex;align-items:center;gap:10px;border-radius:7px;color:var(--muted-2);cursor:pointer;font-size:var(--text-sm)}[cmdk-item]>svg:first-child{width:16px;height:16px;flex:0 0 auto}[cmdk-item]>span{flex:1}[cmdk-item][data-selected=true]{color:var(--ink);background:color-mix(in srgb,var(--ink) 7%,transparent)}[cmdk-item][data-selected=true]>svg:first-child{filter:drop-shadow(0 0 6px rgb(255 255 255 / .25))}[cmdk-separator]{height:1px;margin:7px 4px;background:var(--line)}.command-external{width:13px!important;height:13px!important;color:var(--muted)}.command-footer{height:38px;padding:0 13px;display:flex;align-items:center;justify-content:flex-end;gap:14px;border-top:1px dashed var(--line);color:var(--muted);font-size:var(--text-2xs);font-family:var(--font-mono);letter-spacing:.02em}.command-footer span{display:flex;align-items:center;gap:4px}.command-shortcut-panel{padding:0}.command-shortcut-head{min-height:76px;padding:16px 18px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px dashed var(--line)}.command-shortcut-head>div>span{color:var(--muted);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:var(--weight-semibold);line-height:1.3;letter-spacing:var(--tracking-caps);text-transform:uppercase}.command-shortcut-head h2{margin:3px 0 0;font-size:1.5rem;line-height:var(--leading-snug);letter-spacing:var(--tracking-tight)}.command-shortcut-head button{height:30px;padding:0 10px;border:1px solid var(--line);border-radius:6px;color:var(--muted-2);background:var(--chip);cursor:pointer;font-size:var(--text-2xs);font-weight:var(--weight-medium)}.command-shortcut-list{padding:10px}.command-shortcut-list>div{min-height:44px;padding:0 10px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-radius:7px;color:var(--muted-2);font-size:var(--text-sm)}.command-shortcut-list>div+div{border-top:1px solid color-mix(in srgb,var(--line) 70%,transparent)}.command-shortcut-list>div>span:last-child{display:flex;gap:4px}.command-toast{position:fixed;z-index:170;right:24px;bottom:24px;min-height:42px;padding:0 14px;display:flex;align-items:center;gap:9px;border:1px solid color-mix(in srgb,var(--ink) 18%,var(--line));border-radius:9px;color:var(--ink);background:color-mix(in srgb,var(--bg) 94%,var(--ink) 6%);box-shadow:0 16px 45px #00000057;font-size:var(--text-xs);font-weight:var(--weight-medium);animation:command-toast-in .28s cubic-bezier(.22,1,.36,1) both}.command-toast svg{color:var(--green)}@keyframes command-overlay-in{0%{opacity:0}}@keyframes command-dialog-in{0%{opacity:0;filter:blur(8px);transform:translate(-50%) translateY(-10px) scale(.975)}to{opacity:1;filter:blur(0);transform:translate(-50%) translateY(0) scale(1)}}@keyframes command-toast-in{0%{opacity:0;filter:blur(6px);transform:translateY(10px) scale(.96)}}.theme-button,.menu-button{width:36px;height:36px;display:grid;place-items:center;border-radius:6px;cursor:pointer;font-size:18px}.theme-button:hover,.menu-button:hover{background:color-mix(in srgb,var(--ink) 5%,transparent)}.theme-button-icon{display:grid;place-items:center;animation:theme-icon-in .55s cubic-bezier(.22,1,.36,1)}@keyframes theme-icon-in{0%{opacity:0;filter:blur(3px);transform:rotate(-70deg) scale(.55)}to{opacity:1;filter:blur(0);transform:rotate(0) scale(1)}}.mobile-actions,.mobile-menu{display:none}.banner-band{height:215px}.banner-frame{height:214px;padding:3px 9px}.banner{width:100%;height:208px;display:block;object-fit:cover;border-radius:12px}.profile-frame{padding:20px 24px;display:flex;align-items:center;gap:27px}.avatar-frame{width:120px;height:120px;border-radius:13px;background:#3a3a3a;padding:4px;flex:0 0 auto;box-shadow:0 1px 2px #0008;position:relative;isolation:isolate;cursor:pointer;transition:border-color .2s ease,box-shadow .24s ease}.avatar-frame:hover{box-shadow:0 8px 22px #00000038,0 0 0 1px color-mix(in srgb,var(--ink) 22%,transparent)}.avatar-frame:focus-visible{outline:2px solid color-mix(in srgb,var(--ink) 70%,transparent);outline-offset:3px}.avatar-image{width:100%;height:100%;object-fit:cover;border-radius:10px;display:block;position:relative;z-index:1}.avatar-image-previous{position:absolute;z-index:2;top:4px;right:4px;bottom:4px;left:4px;width:calc(100% - 8px);height:calc(100% - 8px);pointer-events:none;animation:avatar-crossfade-out .26s ease-out both}.avatar-image-current.is-entering{animation:avatar-crossfade-in .26s ease-out both}.profile-copy{min-width:0;align-self:center;position:relative;padding-top:1px}.profile-switch{width:20px;height:20px;padding:0;margin:0 0 6px -4px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;cursor:pointer}.profile-switch:hover,.profile-switch:focus-visible{background:color-mix(in srgb,var(--ink) 8%,transparent);transform:none}.half-moon{width:12px;height:12px;border-radius:50%;display:block;margin:0;background:linear-gradient(90deg,var(--ink) 50%,transparent 50%);border:1px solid var(--ink)}@keyframes avatar-crossfade-in{0%{opacity:0}to{opacity:1}}@keyframes avatar-crossfade-out{0%{opacity:1}to{opacity:0}}.profile-copy h1{position:relative;width:max-content;max-width:100%;margin:0;font-size:var(--text-display);line-height:var(--leading-tight);letter-spacing:var(--tracking-display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.role-line{min-height:1.5rem;margin:4px 0 0;color:var(--muted-2);font-family:var(--font-sans);font-size:.9375rem;font-weight:var(--weight-medium);line-height:1.45;letter-spacing:var(--tracking-role);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile-copy p{margin:3px 0 0;color:var(--muted);font-size:var(--text-sm);line-height:1.45;letter-spacing:.01em}.views{margin-left:auto;align-self:flex-start;padding-top:11px;display:flex;align-items:center;gap:5px;min-width:58px;justify-content:flex-end;color:var(--muted);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:1;letter-spacing:.02em;font-variant-numeric:tabular-nums}.profile-band+.title-band{margin-top:18px}.title-band{height:49px}.title-frame{height:48px;padding:5px 20px;display:flex;align-items:center;justify-content:space-between}.title-frame h2,.tech-frame h2,.activity-frame h2,.contact-title-frame>h2{margin:0;font-size:var(--text-section);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight)}.about-band{min-height:201px}.about-frame{min-height:200px;padding:18px 20px 17px}.about-frame ul{padding:0;margin:0;list-style:none;display:grid;gap:12px;max-width:62ch;font-size:var(--text-base);line-height:var(--leading-relaxed);color:color-mix(in srgb,var(--ink) 92%,transparent)}.about-frame li{position:relative;padding-left:17px}.about-frame li:before{content:"•";position:absolute;left:0;color:var(--muted)}.view-all{display:flex;align-items:center;gap:4px;color:var(--muted);font-size:var(--text-md);font-weight:var(--weight-medium);letter-spacing:.01em}.view-all:hover{color:var(--ink)}.title-band#projects .title-frame{padding-top:0;padding-bottom:0}.projects-band{border-bottom:0}.projects-grid{width:min(800px,100%);padding:7px 5px 18px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:20px;row-gap:20px;align-items:stretch}.project-card{min-width:0;min-height:0;padding:12px;border:1px dashed var(--line);background:var(--bg);display:flex;flex-direction:column;color:var(--ink);cursor:pointer;transition:border-color .18s cubic-bezier(.22,1,.36,1),background-color .18s cubic-bezier(.22,1,.36,1)}.project-card:hover,.project-card:focus-visible{border-color:color-mix(in srgb,var(--ink) 36%,var(--line));background:color-mix(in srgb,var(--soft) 34%,var(--bg))}.project-image-link{height:232px;position:relative;display:block;overflow:hidden;border-radius:6px;background:#171717}.project-card:nth-child(1) .project-image-link{background:linear-gradient(to right bottom,#fff,#38bdf8,#020618)}.project-card:nth-child(2) .project-image-link{background:linear-gradient(to right bottom,#fff,#fb7185,#020618)}.project-card:nth-child(3) .project-image-link{background:linear-gradient(to right bottom,#fff,#fb923c,#020618)}.project-card:nth-child(4) .project-image-link{background:linear-gradient(to right bottom,#fff,#4ade80,#020618)}.project-image-link picture{position:absolute;display:block;width:370px;right:-52px;bottom:-20px;border:5px solid #ffffff33;border-radius:12px;overflow:hidden;transition:right .2s,bottom .2s}.project-card:hover .project-image-link picture,.project-card:focus-visible .project-image-link picture{right:-40px;bottom:-12px}.project-image-link.icon-preview picture,.project-image-link.full-preview picture{top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0;border-radius:0}.project-card:hover .project-image-link.icon-preview picture,.project-card:hover .project-image-link.full-preview picture,.project-card:focus-visible .project-image-link.icon-preview picture,.project-card:focus-visible .project-image-link.full-preview picture{right:0;bottom:0}.project-image-link.icon-preview picture{display:grid;place-items:center;background:radial-gradient(circle at 50% 42%,#34363e 0,#121318 58%,#08090c)}.project-image-link.icon-preview img{width:154px;height:154px;object-fit:contain;filter:drop-shadow(0 18px 26px #0009)}.project-image-link.full-preview img{width:100%;height:100%;object-fit:cover;border-radius:0}.project-image-link.zura-showcase-preview img{object-position:center 58%}.project-image-link.website-showcase-preview img{object-position:center 55%}.project-card:nth-child(4) .project-image-link picture{bottom:-40px}.project-image-link img{width:360px;height:auto;object-fit:cover;border-radius:8px;display:block}.project-card:nth-child(3) .project-image-link img{margin-top:-4px}.project-title-row{display:flex;justify-content:space-between;gap:10px;margin-top:8px}.project-title-row h3{margin:0;font-size:var(--text-xl);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight);font-weight:var(--weight-medium);font-variation-settings:"opsz" 36,"SOFT" 35,"WONK" 0}.project-subtitle{margin:2px 0 0;color:var(--muted);font-size:var(--text-xs);line-height:1.4}.live{color:var(--muted-2);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:1.5;letter-spacing:.04em;white-space:nowrap}.live i{display:inline-block;width:6px;height:6px;background:var(--green);border-radius:50%;margin-right:5px;vertical-align:1px}.project-description{font-size:var(--text-md);line-height:1.5;color:var(--muted-2);margin:8px 0 0;max-width:42ch}.project-bottom{margin-top:12px;display:flex;justify-content:space-between;align-items:flex-end;gap:12px}.project-role{min-width:0;color:var(--muted);font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:1.4;letter-spacing:.01em}.project-destination{display:flex;align-items:center;gap:5px;color:var(--muted);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:var(--weight-semibold);line-height:1.5;letter-spacing:var(--tracking-label);white-space:nowrap}.project-destination svg{width:13px;height:13px}.project-tooltip-copy{max-width:248px;display:grid;gap:4px;text-align:left}.project-tooltip-copy strong{font-size:.9375rem;font-weight:var(--weight-medium);font-variation-settings:"opsz" 28,"SOFT" 30,"WONK" 0;line-height:1.3}.project-tooltip-copy span{color:color-mix(in srgb,var(--bg) 82%,transparent);font-size:var(--text-xs);line-height:1.4}.project-tooltip-copy em{margin-top:2px;font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:var(--weight-semibold);font-style:normal;line-height:1.3;letter-spacing:.04em}.tech-frame{padding:17px 20px 13px}.tech-heading{display:flex;align-items:center}.tech-groups{margin-top:12px;display:grid;gap:14px}.tech-group{display:grid;grid-template-columns:128px minmax(0,1fr);align-items:center;gap:12px}.tech-group h3{margin:0;color:var(--muted);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:var(--weight-semibold);line-height:1.35;letter-spacing:var(--tracking-caps);text-transform:uppercase}.tech-list{min-width:0;margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:7px}.tech-list li{height:28px;display:flex;align-items:center;gap:7px;padding:4px 9px;border:1px solid var(--line);border-radius:4px;background:var(--chip);color:var(--muted-2);font-size:var(--text-md);font-weight:var(--weight-medium);letter-spacing:.005em}.tech-list li svg{font-size:.9375rem}.activity-frame{padding:14px 20px}@media(max-width:640px){[cmdk-dialog]{top:12vh;max-height:min(560px,78vh)}.command-shortcut-head{padding:14px}.command-shortcut-head h2{font-size:1.375rem;line-height:var(--leading-snug)}.command-shortcut-head button{padding:0 8px}.command-toast{right:14px;bottom:14px;left:14px;justify-content:center}.site-shell{padding-top:49px;background-image:none}.frame{width:100%}.header-frame{padding:0 14px}.desktop-nav{display:none}.mobile-actions{display:flex;align-items:center}.mobile-divider{width:1px;height:28px;background:var(--line);margin:0 9px}.menu-button{font-size:21px;width:28px}.theme-button{width:36px}.mobile-menu{display:grid;position:absolute;z-index:60;right:16px;top:48px;width:111px;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--line);border-top:0;border-radius:0 0 8px 8px;padding:5px 0;box-shadow:0 12px 25px #0007}.mobile-menu a{padding:8px 17px;color:var(--muted-2);font-size:var(--text-sm);font-weight:var(--weight-medium)}.mobile-menu a:hover{color:var(--ink)}.banner-band{height:138px}.banner-frame{height:137px;padding:3px 16px}.banner{height:132px;border-radius:10px}.profile-frame{padding:22px 28px;gap:14px;overflow:hidden}.avatar-frame{width:104px;height:104px;border-radius:13px;padding:4px}.avatar-frame img{border-radius:9px}.half-moon{margin-bottom:7px}.profile-copy h1{font-size:clamp(1.5rem,5.6vw,1.875rem);line-height:var(--leading-tight);letter-spacing:-.025em}.role-line{font-size:clamp(.8125rem,3.2vw,.9375rem);line-height:1.4;min-height:1.35rem;height:auto;letter-spacing:var(--tracking-role)}.profile-copy p{font-size:var(--text-xs);line-height:1.4}.views{position:absolute;right:28px;top:16px;padding:0;font-size:var(--text-2xs)}.title-band{height:59px}.title-frame{height:58px;padding:9px 28px}.title-frame h2,.tech-frame h2,.activity-frame h2,.contact-title-frame>h2{font-size:var(--text-section);line-height:var(--leading-snug)}.about-frame{padding:61px 28px 46px}.about-frame ul{font-size:.9375rem;line-height:var(--leading-body);gap:14px}.about-frame li{padding-left:17px}.title-frame{padding-left:28px;padding-right:28px}.view-all{font-size:var(--text-sm)}.projects-grid{padding:12px 15px 18px;grid-template-columns:1fr}.project-card{min-height:0;padding:12px;margin:-.5px}.project-image-link img{height:auto;aspect-ratio:1.82/1;object-fit:cover}.project-title-row h3{font-size:1.1875rem}.project-description{font-size:var(--text-md);line-height:1.5;margin:8px 0 0;max-width:none}.tech-frame{padding:14px 28px}.tech-heading{display:block}.tech-groups{margin-top:10px;gap:12px}.tech-group{grid-template-columns:1fr;gap:6px}.tech-group h3{margin:0}.tech-list{gap:7px}.tech-list li{height:27px;font-size:var(--text-sm);padding:4px 8px}.activity-frame{padding:14px 28px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.theme-button-icon,.command-toast{animation:none!important}}@media(min-width:641px){.profile-band+.title-band{border-top:1px dashed var(--line)}.contact-title-band{margin-top:18px;border-top:1px dashed var(--line)}.contact-title-frame{padding:5px 20px}.contact-title-frame>h2{margin:0;font-size:var(--text-section);line-height:var(--leading-snug)}.contact-grid{border-top:0}.title-band#projects{margin-top:18px;border-top:1px dashed var(--line)}.title-band#projects .title-frame{padding:5px 20px}.projects-grid{padding-top:0}.tech-frame{padding-top:11px}.tech-heading{height:48px}.tech-groups{margin-top:12px}.tech-list{gap:8px}.tech-list li{gap:6px;padding:4px 12px 4px 8px}.tech-list li svg{font-size:13px}.activity-frame{padding-top:8px}.activity-frame>h2{height:48px;display:flex;align-items:center}.github-contributions-widget{margin-top:8px;padding:0}.github-contributions-calendar{width:739px;max-width:100%;margin:0 auto;padding-top:10px}.github-contributions-calendar svg{font-size:13px;line-height:19.5px}.github-contributions-footer{width:739px;max-width:100%;margin:8px auto 0;font-size:13px;line-height:19.5px}}.github-contributions-widget{width:100%;margin-top:14px;padding:0 8px;color:var(--ink);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.01em;font-variant-numeric:tabular-nums}.github-contributions-calendar{display:block;max-width:100%;overflow-x:auto;overflow-y:hidden;direction:rtl;scrollbar-width:none}.github-contributions-calendar::-webkit-scrollbar{display:none}.github-contributions-calendar svg{display:block;overflow:visible;direction:ltr}.github-month-labels{fill:currentColor}.github-level-0{fill:#1a1a1a;background:#1a1a1a}.github-level-1{fill:#525252;background:#525252}.github-level-2{fill:#8c8c8c;background:#8c8c8c}.github-level-3{fill:#a7a7a7;background:#a7a7a7}.github-level-4{fill:#ebebeb;background:#ebebeb}.github-contributions-calendar rect{transition:opacity .15s,stroke .15s}.github-contributions-calendar rect:hover{opacity:.82;stroke:var(--ink);stroke-width:1px}.github-contribution-tooltip{position:fixed;z-index:100;max-width:240px;transform:translate(-50%,calc(-100% - 3px)) scale(.88);transform-origin:50% 100%;opacity:0;filter:blur(5px);pointer-events:none;white-space:nowrap;padding:6px 9px;border:1px solid var(--line);border-radius:6px;background:color-mix(in srgb,var(--bg) 94%,var(--ink) 6%);color:var(--ink);box-shadow:0 8px 24px #00000059;font-family:var(--font-sans);font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:1.45;transition:opacity .14s ease,filter .18s ease,transform .22s cubic-bezier(.2,.9,.25,1.25);will-change:transform,opacity,filter}.github-contribution-tooltip.is-visible{transform:translate(-50%,calc(-100% - 8px)) scale(1);opacity:1;filter:blur(0)}:root[data-theme=light] .github-level-0{fill:#d9c5a4;background:#d9c5a4}:root[data-theme=light] .github-level-1{fill:#bea176;background:#bea176}:root[data-theme=light] .github-level-2{fill:#98764f;background:#98764f}:root[data-theme=light] .github-level-3{fill:#6e5138;background:#6e5138}:root[data-theme=light] .github-level-4{fill:#2b2118;background:#2b2118}.github-contributions-widget:not(:has(.github-contributions-calendar rect:hover)) .github-contribution-tooltip{transform:translate(-50%,calc(-100% - 3px)) scale(.88);opacity:0;filter:blur(5px)}.github-contribution-tooltip:after{content:"";position:absolute;left:50%;bottom:-5px;width:8px;height:8px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:inherit;transform:translate(-50%) rotate(45deg)}.github-contributions-footer{display:flex;justify-content:space-between;gap:16px;margin-top:8px;white-space:nowrap;color:var(--muted-2)}.github-contributions-footer a{color:var(--ink);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--ink) 30%,transparent);text-underline-offset:3px}.github-legend{display:flex;align-items:center;gap:3px}.github-legend i{display:inline-block;width:11px;height:11px;border-radius:2px}.github-contributions-fallback{height:140px;display:grid;place-items:center}.github-contributions-fallback i{width:20px;height:20px;border:2px solid var(--line);border-top-color:var(--ink);border-radius:50%;animation:github-spin .7s linear infinite}.github-contributions-error{display:grid;height:140px;place-items:center;color:var(--muted-2)}@keyframes github-spin{to{transform:rotate(360deg)}}.footer-grid-gap{height:18px;position:relative;border:0}.site-footer{position:relative}.site-footer:before{content:"";position:absolute;z-index:1;top:0;bottom:0;left:50%;width:800px;max-width:100%;border-left:1px dashed var(--line);border-right:1px dashed var(--line);transform:translate(-50%);pointer-events:none}.site-footer .band{border-bottom:0}.site-footer .frame{border-left:0;border-right:0}.site-footer .quote-band,.site-footer .footer-band{position:relative}.site-footer .footer-band:after,.site-footer>.footer-grid-gap:before,.site-footer>.footer-grid-gap:after{content:"";position:absolute;z-index:1;left:0;right:0;border-top:1px dashed var(--line);pointer-events:none}.quote-frame{padding:0 24px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center}.quote-icon{display:block;width:30px;height:30px;margin:0;color:var(--muted);transform:rotate(180deg)}.quote-frame blockquote{width:100%;max-width:36ch;margin:0 auto;padding:0 8px;font-style:italic;font-size:var(--text-quote);font-weight:var(--weight-regular);line-height:var(--leading-quote);letter-spacing:-.015em;font-variation-settings:"opsz" 48,"SOFT" 55,"WONK" 0;color:color-mix(in srgb,var(--ink) 82%,transparent)}.quote-author{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;margin-top:8px}.quote-author span{width:32px;height:1px;background:var(--line)}.quote-author cite{font-family:var(--font-mono);font-style:normal;font-size:var(--text-2xs);font-weight:var(--weight-semibold);line-height:1.35;letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--muted)}.footer-band{border-bottom:0}.footer-frame{padding:0 20px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center}.footer-frame>p,.footer-frame>span{margin:0;font-family:var(--font-sans);font-size:var(--text-md);line-height:1.45;color:var(--muted)}.footer-frame>p strong{font-weight:var(--weight-semibold);color:var(--muted-2)}.footer-built-line{display:flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap}.monster-can-icon{width:19px;height:40px;flex:0 0 auto;object-fit:contain;filter:drop-shadow(0 2px 5px rgb(0 0 0 / .18))}.footer-frame>span{display:block;margin-top:0}@media(max-width:640px){.banner-band{height:138px}.banner-frame{height:137px;padding-top:3px;padding-bottom:3px}.banner{height:132px}.profile-band+.title-band{margin-top:0}.about-frame{padding:39px 28px 33px}.about-frame ul{font-size:.9375rem;line-height:var(--leading-body);gap:12px}.contact-title-band{margin-top:17px;border-top:1px dashed var(--line)}.contact-title-frame{padding-top:8px}.contact-title-frame>h2{height:47px;margin:0;padding:0 28px;display:flex;align-items:center;font-size:var(--text-section);line-height:var(--leading-snug)}.contact-grid{border-top:0}.menu-button:focus{outline:none}.projects-grid{width:100%}.title-band#projects .title-frame{padding-top:9px;padding-bottom:9px}.github-contributions-widget{padding:0}.github-contributions-footer{font-size:var(--text-2xs)}.github-contributions-footer>span:first-child{display:none}.github-legend{margin-left:auto}.quote-frame{padding:0 20px}.quote-icon{width:30px;height:30px}.quote-frame blockquote{max-width:28ch;font-size:clamp(1.25rem,4.5vw,1.5rem);line-height:var(--leading-quote)}.quote-author{margin-top:14px}.footer-frame{padding:0 20px;text-align:center}.footer-frame>p{font-size:var(--text-md);line-height:1.45}.footer-built-line{gap:5px}.monster-can-icon{width:17px;height:36px}}@media(min-width:641px)and (max-width:820px){.projects-grid{width:100%;grid-template-columns:repeat(2,minmax(0,1fr));padding-left:5px;padding-right:5px}}.skip-link{position:fixed;z-index:10001;top:8px;left:8px;padding:10px 14px;border:1px solid var(--line);border-radius:7px;background:var(--bg);color:var(--ink);box-shadow:0 12px 32px #0000003d;transform:translateY(calc(-100% - 16px));transition:transform .18s cubic-bezier(.22,1,.36,1)}.skip-link:focus-visible{outline:2px solid var(--ink);outline-offset:2px;transform:translateY(0)}.quote-frame blockquote{color:color-mix(in srgb,var(--ink) 90%,var(--bg))}.quote-icon,.quote-author cite,.footer-frame>p,.footer-frame>span{color:var(--muted-2)}.contact-grid :is(a,button):focus-visible,.command-trigger:focus-visible,.theme-button:focus-visible,.menu-button:focus-visible,.profile-switch:focus-visible{outline:2px solid color-mix(in srgb,var(--ink) 82%,transparent);outline-offset:-3px}.contact-grid>:is(a,button),.mobile-menu a{-webkit-tap-highlight-color:transparent}.profile-band,.about-band,.contact-title-band,.contact-links-band,.title-band#projects,.tech-band,.activity-band,.quote-band,.footer-band,.profile-frame,.about-frame,.contact-title-frame,.contact-links-frame,.title-band#projects .title-frame,.tech-frame,.activity-frame,.quote-frame,.footer-frame{height:auto}.project-card{height:auto;min-height:0}.contact-grid .is-disabled{opacity:.68}@media(min-width:641px){.profile-band{min-height:161px}.profile-frame{min-height:160px}.about-band{min-height:201px}.about-frame{min-height:200px}.title-band#projects{min-height:49px}.title-band#projects .title-frame{min-height:48px}}@media(hover:none),(pointer:coarse){.theme-button,.menu-button,.command-trigger,.project-card{min-width:44px;min-height:44px}}@media(max-width:640px){.mobile-menu{background:var(--bg)}.mobile-menu a{min-height:44px;display:flex;align-items:center}.profile-band{min-height:151px}.profile-frame{min-height:150px;overflow:clip}.profile-copy{max-width:calc(100% - 118px);flex:1 1 auto}.profile-copy h1,.role-line{width:100%;max-width:100%}.role-line{font-size:clamp(.8125rem,3.2vw,.9375rem);letter-spacing:var(--tracking-role);text-overflow:ellipsis}.about-band{min-height:316px}.about-frame{min-height:315px}.title-band#projects{min-height:59px}.title-band#projects .title-frame{min-height:58px}.project-card{min-height:0}}.site-shell{background-image:none}.band,.frame,.profile-band+.title-band,.contact-title-band,.title-band#projects,.tech-band:before,.tech-band:after,.tech-frame:before,.tech-frame:after,.activity-band:before,.activity-frame:before,.activity-frame:after,.site-footer:before,.site-footer .footer-band:after,.site-footer>.footer-grid-gap:before,.site-footer>.footer-grid-gap:after{border-color:transparent}.site-header{border-bottom:1px solid color-mix(in srgb,var(--line) 62%,transparent)}.project-card{border-style:solid}.command-input-row,.command-shortcut-head{border-bottom-style:solid}.command-footer,.contact-grid{border-top-style:solid}.contact-grid a,.contact-grid button{border-right-style:solid}#top,#about,#projects,#github-activity,#contact{scroll-margin-top:68px}.mobile-menu a.active{color:var(--ink);background:color-mix(in srgb,var(--ink) 7%,transparent)}.mobile-command-trigger{display:none}.contact-title-band{margin-top:28px}.contact-title-frame{min-height:76px;padding:14px 20px 12px;display:flex;align-items:center}.contact-title-frame>h2{margin:0;font-size:var(--text-section);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight)}.contact-links-frame{padding:5px 5px 28px}.contact-grid{min-height:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;border:0}.contact-grid>.contact-card{min-width:0;min-height:86px;padding:14px;display:flex;align-items:center;gap:10px;border:1px dashed var(--line);border-radius:2px;color:var(--ink);background:var(--bg);box-shadow:none;transition:border-color .2s ease,background-color .2s ease}.contact-grid>a.contact-card:hover,.contact-grid>button.contact-card:hover{border-color:color-mix(in srgb,var(--ink) 30%,var(--line));background:color-mix(in srgb,var(--soft) 82%,transparent);transform:none}.contact-email{width:100%;text-align:left;cursor:pointer}.contact-grid>.contact-card.is-disabled{opacity:.58;cursor:default}.contact-grid>.contact-card.is-disabled:hover{transform:none}.contact-card .contact-icon{width:34px;height:34px;flex:0 0 34px;display:grid;place-items:center;border:1px dashed color-mix(in srgb,var(--ink) 18%,var(--line));border-radius:50%;color:var(--muted-2);background:transparent;font-size:15px;line-height:1}.contact-card .contact-icon svg{width:15px;height:15px;display:block}.contact-card.is-copied .contact-icon{color:var(--green)}.contact-copy{min-width:0;flex:1 1 auto;display:flex;align-items:center}.contact-copy small{display:none!important}.contact-copy strong{font-size:var(--text-base);font-weight:var(--weight-medium);font-variation-settings:"opsz" 36,"SOFT" 35,"WONK" 0;line-height:1.25;letter-spacing:-.01em;white-space:nowrap}.contact-card-primary{grid-column:auto}.contact-card-primary .contact-icon{width:34px;height:34px;flex-basis:34px;font-size:15px}.contact-card-primary .contact-copy strong{font-size:var(--text-base);font-weight:var(--weight-medium);font-variation-settings:"opsz" 36,"SOFT" 35,"WONK" 0;line-height:1.25;letter-spacing:-.01em}.contact-grid>.contact-card{min-height:72px}.contact-card .contact-arrow{display:block;flex:0 0 auto;margin-left:auto;color:var(--muted);font-size:13px}.contact-card:hover .contact-arrow,.contact-card:focus-visible .contact-arrow{color:var(--ink)}.contact-grid>.contact-email.is-copied{border-color:color-mix(in srgb,var(--green) 42%,var(--line));background:color-mix(in srgb,var(--green) 9%,var(--bg))}.contact-grid>.contact-email.is-copied .contact-arrow{color:var(--green)}@media(prefers-reduced-motion:no-preference){.motion-reveal:not(.is-visible) :is(.banner,.avatar-frame,.profile-copy,.views,.title-frame>*,.about-frame li,.project-card,.tech-heading,.tech-list li,.activity-frame>h2,.github-contributions-widget,.github-contributions-fallback,.github-contributions-error,.contact-title-frame>*,.contact-card,.quote-frame>*,.footer-frame>*){opacity:0}.site-shell.is-boot-complete .hero-motion.is-visible .banner{animation:hero-banner-arrive .78s cubic-bezier(.16,1,.3,1) 70ms backwards}.site-shell.is-boot-complete .hero-motion.is-visible .avatar-frame{animation:identity-portrait-arrive .68s cubic-bezier(.16,1,.3,1) .23s backwards}.site-shell.is-boot-complete .hero-motion.is-visible .profile-copy{animation:identity-copy-arrive .7s cubic-bezier(.16,1,.3,1) .33s backwards}.site-shell.is-boot-complete .hero-motion.is-visible .views{animation:identity-meta-arrive .58s cubic-bezier(.16,1,.3,1) .43s backwards}.title-band.motion-reveal.is-visible .title-frame>*{animation:editorial-title-arrive .64s cubic-bezier(.16,1,.3,1) backwards}.title-band.motion-reveal.is-visible .title-frame>:nth-child(2){animation-delay:95ms}.about-band.motion-reveal.is-visible .about-frame li{animation:about-line-arrive .62s cubic-bezier(.16,1,.3,1) backwards;animation-delay:calc(90ms + (var(--motion-index, 0) * 85ms))}.about-band.motion-reveal.is-visible .about-frame li:nth-child(2){--motion-index: 1}.about-band.motion-reveal.is-visible .about-frame li:nth-child(3){--motion-index: 2}.projects-band.motion-reveal.is-visible .project-card{--motion-x: -14px;animation:project-card-arrive .72s cubic-bezier(.16,1,.3,1) backwards;animation-delay:calc(90ms + (var(--motion-index) * .12s))}.projects-band.motion-reveal.is-visible .project-card:nth-child(2n){--motion-x: 14px}.projects-band.motion-reveal.is-visible .project-card picture{animation:project-preview-settle .78s cubic-bezier(.16,1,.3,1) backwards;animation-delay:calc(.18s + (var(--motion-index) * .12s))}.tech-band.motion-reveal.is-visible .tech-heading{animation:tech-heading-arrive .62s cubic-bezier(.16,1,.3,1) backwards}.tech-band.motion-reveal.is-visible .tech-list li{animation:tech-chip-arrive .5s cubic-bezier(.16,1,.3,1) backwards;animation-delay:calc(.1s + (var(--motion-index) * 50ms))}.activity-band.motion-reveal.is-visible .activity-frame>h2{animation:activity-heading-arrive .62s cubic-bezier(.16,1,.3,1) backwards}.activity-band.motion-reveal.is-visible :is(.github-contributions-widget,.github-contributions-fallback,.github-contributions-error){transform-origin:left center;animation:activity-calendar-arrive .76s cubic-bezier(.16,1,.3,1) .14s backwards}.contact-title-band.motion-reveal.is-visible .contact-title-frame>*{animation:contact-heading-arrive .6s cubic-bezier(.16,1,.3,1) backwards}.contact-title-band.motion-reveal.is-visible .contact-title-frame>:nth-child(2){animation-delay:95ms}.contact-links-band.motion-reveal.is-visible .contact-card{--motion-x: -10px;animation:contact-card-arrive .62s cubic-bezier(.16,1,.3,1) backwards}.contact-links-band.motion-reveal.is-visible .contact-card:nth-child(2n){--motion-x: 10px}.contact-links-band.motion-reveal.is-visible .contact-card:nth-child(2){animation-delay:80ms}.contact-links-band.motion-reveal.is-visible .contact-card:nth-child(3){animation-delay:.16s}.contact-links-band.motion-reveal.is-visible .contact-card:nth-child(4){animation-delay:.24s}.quote-band.motion-reveal.is-visible .quote-icon{animation:quote-mark-arrive .64s cubic-bezier(.16,1,.3,1) backwards}.quote-band.motion-reveal.is-visible blockquote{animation:quote-copy-arrive .7s cubic-bezier(.16,1,.3,1) .1s backwards}.quote-band.motion-reveal.is-visible .quote-author{animation:quote-author-arrive .58s cubic-bezier(.16,1,.3,1) .2s backwards}.footer-band.motion-reveal.is-visible .footer-frame>*{animation:footer-credit-arrive .6s cubic-bezier(.16,1,.3,1) backwards}.footer-band.motion-reveal.is-visible .footer-frame>:nth-child(2){animation-delay:.1s}}@keyframes hero-banner-arrive{0%{opacity:0;transform:translateY(8px) scale(1.018)}to{opacity:1;transform:none}}@keyframes identity-portrait-arrive{0%{opacity:0;transform:translate(-12px) scale(.965)}to{opacity:1;transform:none}}@keyframes identity-copy-arrive{0%{opacity:0;transform:translate(-9px)}to{opacity:1;transform:none}}@keyframes identity-meta-arrive{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:none}}@keyframes editorial-title-arrive{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes about-line-arrive{0%{opacity:0;transform:translate(-14px)}to{opacity:1;transform:none}}@keyframes project-card-arrive{0%{opacity:0;transform:translate(var(--motion-x)) translateY(8px)}to{opacity:1;transform:none}}@keyframes project-preview-settle{0%{opacity:.35;transform:scale(1.025) translateY(5px)}to{opacity:1;transform:none}}@keyframes tech-heading-arrive{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:none}}@keyframes tech-chip-arrive{0%{opacity:0;transform:translateY(7px) scale(.96)}to{opacity:1;transform:none}}@keyframes activity-heading-arrive{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:none}}@keyframes activity-calendar-arrive{0%{opacity:0;transform:translate(-12px) scaleX(.985)}to{opacity:1;transform:none}}@keyframes contact-heading-arrive{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes contact-card-arrive{0%{opacity:0;transform:translate(var(--motion-x))}to{opacity:1;transform:none}}@keyframes quote-mark-arrive{0%{opacity:0;transform:rotate(-9deg) scale(.84)}to{opacity:1;transform:none}}@keyframes quote-copy-arrive{0%{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}@keyframes quote-author-arrive{0%{opacity:0;transform:scaleX(.96)}to{opacity:1;transform:none}}@keyframes footer-credit-arrive{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}.quote-frame{gap:8px}.quote-icon{width:22px;height:22px}.quote-frame blockquote{max-width:36ch;font-size:var(--text-quote);line-height:var(--leading-quote)}.quote-author{margin-top:4px}.monster-can-icon{width:16px;height:30px;filter:drop-shadow(0 2px 4px rgb(0 0 0 / .16))}@media(min-width:641px){.contact-title-band,.contact-title-frame,.contact-links-band,.contact-links-frame,.contact-grid{min-height:0}}@media(max-width:640px){.mobile-actions{gap:3px}.mobile-command-trigger{min-width:58px;height:44px;padding:0 8px;display:flex;align-items:center;justify-content:center;gap:5px;border:1px solid var(--line);border-radius:7px;color:var(--muted-2);background:color-mix(in srgb,var(--bg) 90%,var(--ink) 3%);cursor:pointer}.mobile-command-trigger svg{width:14px;height:14px}.mobile-command-trigger span{font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:var(--weight-semibold);line-height:1;letter-spacing:var(--tracking-label)}.mobile-divider{margin:0 5px}.mobile-menu{width:132px}.contact-title-band{margin-top:20px;min-height:0}.contact-title-frame{min-height:84px;padding:14px 16px 12px;display:flex}.contact-title-frame>h2{height:auto;padding:0;font-size:31px;line-height:37px}.contact-links-band,.contact-links-frame,.contact-grid{min-height:0}.contact-links-frame{padding:5px 5px 22px}.contact-grid{grid-template-columns:1fr;gap:7px}.contact-grid>.contact-card{min-height:74px;padding:11px 12px;justify-content:flex-start;border:1px dashed var(--line)}.contact-card-primary{grid-column:auto;min-height:74px!important;padding:11px 12px!important}.contact-card .contact-icon{width:34px;height:34px}.contact-card .contact-arrow{display:block}.footer-grid-gap{height:8px}.quote-band,.quote-frame{min-height:184px}.quote-frame blockquote{max-width:330px;font-size:20px;line-height:30px}.quote-author{margin-top:8px}.footer-band,.footer-frame{min-height:82px}.footer-frame{padding:0 16px}.monster-can-icon{width:15px;height:28px}}@media(prefers-reduced-motion:reduce){html,*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important}[cmdk-overlay],[cmdk-dialog],.command-toast,.theme-button-icon,.avatar-image-current.is-entering,.avatar-image-previous,.github-contributions-fallback i{animation-duration:.18s!important}.command-trigger:hover,.contact-grid>a.contact-card:hover,.contact-grid>button.contact-card:hover{transform:none!important}}.site-shell{position:relative;padding-top:48px}.site-header{position:fixed;z-index:50;top:4px;left:0;width:100%;height:40px;border:0;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none;pointer-events:none}.header-frame{height:40px;padding:0 12px;justify-content:center}.desktop-nav,.mobile-actions,.mobile-menu{pointer-events:auto}.desktop-nav{height:36px;padding:3px 5px 3px 14px;gap:16px;border:1px solid color-mix(in srgb,var(--line) 84%,var(--ink) 16%);border-radius:11px;background:color-mix(in srgb,var(--bg) 86%,transparent);box-shadow:none;backdrop-filter:blur(14px) saturate(1.08);-webkit-backdrop-filter:blur(14px) saturate(1.08)}.desktop-nav>a{padding:8px 0 7px}.desktop-nav .theme-button{width:28px;height:28px;border-radius:7px}@media(max-width:640px){.site-shell{padding-top:48px}.site-header,.header-frame{height:38px}.site-header{top:5px}.mobile-actions{width:auto;min-height:38px;padding:0 8px;border:1px solid color-mix(in srgb,var(--line) 84%,var(--ink) 16%);border-radius:11px;background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:blur(14px) saturate(1.08);-webkit-backdrop-filter:blur(14px) saturate(1.08);justify-content:center}.mobile-menu{top:44px}}@media(prefers-reduced-motion:no-preference){.site-shell.is-boot-complete .desktop-nav,.site-shell.is-boot-complete .mobile-actions{transform-origin:top center;animation:navbar-shell-arrive .72s cubic-bezier(.16,1,.3,1) 80ms backwards}.site-shell.is-boot-complete .desktop-nav>a,.site-shell.is-boot-complete .desktop-nav>.nav-command-cluster,.site-shell.is-boot-complete .desktop-nav>.theme-button,.site-shell.is-boot-complete .mobile-actions>*{animation:navbar-control-arrive .58s cubic-bezier(.16,1,.3,1) backwards}.site-shell.is-boot-complete .desktop-nav>a:nth-child(1){animation-delay:.19s}.site-shell.is-boot-complete .desktop-nav>a:nth-child(2){animation-delay:.26s}.site-shell.is-boot-complete .desktop-nav>a:nth-child(3){animation-delay:.33s}.site-shell.is-boot-complete .desktop-nav>a:nth-child(4){animation-delay:.4s}.site-shell.is-boot-complete .desktop-nav>a:nth-child(5){animation-delay:.47s}.site-shell.is-boot-complete .desktop-nav>.nav-command-cluster{animation-delay:.54s}.site-shell.is-boot-complete .desktop-nav>.theme-button{animation-delay:.61s}.site-shell.is-boot-complete .mobile-actions>:nth-child(1){animation-delay:.19s}.site-shell.is-boot-complete .mobile-actions>:nth-child(2){animation-delay:.27s}.site-shell.is-boot-complete .mobile-actions>:nth-child(3){animation-delay:.35s}.site-shell.is-boot-complete .mobile-actions>:nth-child(4){animation-delay:.43s}}@keyframes navbar-shell-arrive{0%{opacity:0;transform:translateY(-9px) scale(.985)}to{opacity:1;transform:none}}@keyframes navbar-control-arrive{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.desktop-nav,.desktop-nav>*,.mobile-actions,.mobile-actions>*{animation:none!important}}.command-trigger{background:linear-gradient(135deg,color-mix(in srgb,var(--ink) 8%,transparent),transparent 42%),color-mix(in srgb,var(--bg) 62%,transparent);border-color:color-mix(in srgb,var(--ink) 30%,var(--line));backdrop-filter:blur(16px) saturate(1.22);-webkit-backdrop-filter:blur(16px) saturate(1.22);transition:border-color .18s ease,color .18s ease,background-color .18s ease}.command-trigger:hover,.command-trigger:focus-visible{transform:none;background:linear-gradient(135deg,color-mix(in srgb,var(--ink) 11%,transparent),transparent 46%),color-mix(in srgb,var(--bg) 68%,transparent)}.ui-tooltip-content{z-index:100;max-width:min(260px,calc(100vw - 24px));padding:6px 9px;border:1px solid color-mix(in srgb,var(--bg) 18%,transparent);border-radius:6px;background:var(--ink);color:var(--bg);box-shadow:0 4px 12px #00000029;font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:var(--weight-medium);line-height:1.25;text-align:center;text-wrap:balance;-webkit-user-select:none;user-select:none;transform-origin:var(--radix-tooltip-content-transform-origin);animation:ui-tooltip-in .12s cubic-bezier(.22,1,.36,1)}.ui-tooltip-arrow{fill:var(--ink)}@keyframes ui-tooltip-in{0%{opacity:0;transform:scale(.96)}}@media(prefers-reduced-motion:reduce){.ui-tooltip-content{animation:none}}:root{--section-gap: 24px}.profile-band+.title-band,.title-band#projects,.tech-band,.activity-band,.contact-title-band{margin-top:var(--section-gap)}.tech-band,.tech-frame,.activity-band,.activity-frame{min-height:0}.site-footer>.footer-grid-gap:first-child{height:56px}.contact-links-frame{padding-bottom:0}.quote-band,.quote-frame,.footer-band,.footer-frame{min-height:0}.quote-frame{padding-block:16px}.site-footer>.footer-grid-gap:nth-child(3){height:64px}.site-footer>.footer-grid-gap:nth-child(5){height:64px}@media(max-width:640px){:root{--section-gap: 20px}.profile-band+.title-band,.title-band#projects,.tech-band,.activity-band,.contact-title-band{margin-top:var(--section-gap)}.site-footer>.footer-grid-gap:first-child{height:32px}.quote-frame{padding-block:8px}.site-footer>.footer-grid-gap:nth-child(3){height:40px}.site-footer>.footer-grid-gap:nth-child(5){height:44px}}
